Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions baystation12.dme
Original file line number Diff line number Diff line change
Expand Up @@ -904,6 +904,7 @@
#include "code\modules\clothing\masks\boxing.dm"
#include "code\modules\clothing\masks\breath.dm"
#include "code\modules\clothing\masks\gasmask.dm"
#include "code\modules\clothing\masks\hailer.dm"
#include "code\modules\clothing\masks\miscellaneous.dm"
#include "code\modules\clothing\masks\voice.dm"
#include "code\modules\clothing\shoes\colour.dm"
Expand Down
38 changes: 37 additions & 1 deletion code/game/objects/items/weapons/storage/backpack.dm
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@
return
*/
..()

//Please don't clutter the parent storage item with stupid hacks.
can_be_inserted(obj/item/W as obj, stop_messages = 0)
if(istype(W, /obj/item/weapon/storage/backpack/holding))
Expand Down Expand Up @@ -121,23 +121,31 @@
name = "medical backpack"
desc = "It's a backpack especially designed for use in a sterile environment."
icon_state = "medicalpack"
storage_slots = 10
max_storage_space = 36
item_state_slots = null

/obj/item/weapon/storage/backpack/security
name = "security backpack"
desc = "It's a very robust backpack."
icon_state = "securitypack"
storage_slots = 10
max_storage_space = 36
item_state_slots = null

/obj/item/weapon/storage/backpack/captain
name = "captain's backpack"
desc = "It's a special backpack made exclusively for Nanotrasen officers."
icon_state = "captainpack"
storage_slots = 14
max_storage_space = 46
item_state_slots = null

/obj/item/weapon/storage/backpack/industrial
name = "industrial backpack"
desc = "It's a tough backpack for the daily grind of station life."
storage_slots = 14
max_storage_space = 46
icon_state = "engiepack"
item_state_slots = null

Expand All @@ -155,16 +163,22 @@
name = "geneticist backpack"
desc = "It's a backpack fitted with slots for diskettes and other workplace tools."
icon_state = "genpack"
storage_slots = 10
max_storage_space = 36

/obj/item/weapon/storage/backpack/virology
name = "sterile backpack"
desc = "It's a sterile backpack able to withstand different pathogens from entering its fabric."
icon_state = "viropack"
storage_slots = 10
max_storage_space = 36

/obj/item/weapon/storage/backpack/chemistry
name = "chemistry backpack"
desc = "It's an orange backpack which was designed to hold beakers, pill bottles and bottles."
icon_state = "chempack"
storage_slots = 10
max_storage_space = 36

/*
* Satchel Types
Expand All @@ -189,6 +203,8 @@
name = "industrial satchel"
desc = "A tough satchel with extra pockets."
icon_state = "satchel-eng"
storage_slots = 14
max_storage_space = 46
item_state_slots = list(
slot_l_hand_str = "engiepack",
slot_r_hand_str = "engiepack",
Expand All @@ -198,6 +214,8 @@
name = "medical satchel"
desc = "A sterile satchel used in medical departments."
icon_state = "satchel-med"
storage_slots = 10
max_storage_space = 36
item_state_slots = list(
slot_l_hand_str = "medicalpack",
slot_r_hand_str = "medicalpack",
Expand All @@ -207,16 +225,22 @@
name = "virologist satchel"
desc = "A sterile satchel with virologist colours."
icon_state = "satchel-vir"
storage_slots = 10
max_storage_space = 36

/obj/item/weapon/storage/backpack/satchel_chem
name = "chemist satchel"
desc = "A sterile satchel with chemist colours."
icon_state = "satchel-chem"
storage_slots = 10
max_storage_space = 36

/obj/item/weapon/storage/backpack/satchel_gen
name = "geneticist satchel"
desc = "A sterile satchel with geneticist colours."
icon_state = "satchel-gen"
storage_slots = 10
max_storage_space = 36

/obj/item/weapon/storage/backpack/satchel_tox
name = "scientist satchel"
Expand All @@ -227,6 +251,8 @@
name = "security satchel"
desc = "A robust satchel for security related needs."
icon_state = "satchel-sec"
storage_slots = 10
max_storage_space = 36
item_state_slots = list(
slot_l_hand_str = "securitypack",
slot_r_hand_str = "securitypack",
Expand All @@ -241,6 +267,8 @@
name = "captain's satchel"
desc = "An exclusive satchel for Nanotrasen officers."
icon_state = "satchel-cap"
storage_slots = 14
max_storage_space = 46
item_state_slots = list(
slot_l_hand_str = "satchel-cap",
slot_r_hand_str = "satchel-cap",
Expand All @@ -260,21 +288,29 @@
/obj/item/weapon/storage/backpack/ert/commander
name = "emergency response team commander backpack"
desc = "A spacious backpack with lots of pockets, worn by the commander of a Nanotrasen Emergency Response Team."
storage_slots = 14
max_storage_space = 46

//Security
/obj/item/weapon/storage/backpack/ert/security
name = "emergency response team security backpack"
desc = "A spacious backpack with lots of pockets, worn by security members of a Nanotrasen Emergency Response Team."
icon_state = "ert_security"
storage_slots = 10
max_storage_space = 36

//Engineering
/obj/item/weapon/storage/backpack/ert/engineer
name = "emergency response team engineer backpack"
desc = "A spacious backpack with lots of pockets, worn by engineering members of a Nanotrasen Emergency Response Team."
icon_state = "ert_engineering"
storage_slots = 14
max_storage_space = 46

//Medical
/obj/item/weapon/storage/backpack/ert/medical
name = "emergency response team medical backpack"
desc = "A spacious backpack with lots of pockets, worn by medical members of a Nanotrasen Emergency Response Team."
icon_state = "ert_medical"
storage_slots = 10
max_storage_space = 36
125 changes: 125 additions & 0 deletions code/modules/clothing/masks/hailer.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
/obj/item/clothing/mask/hailer
name = "Hailer mask"
desc = "A Security mask with integrated 'Compli-o-nator 3000' device, plays over a dozen pre-recorded compliance phrases designed to get scumbags to stand still whilst you taze them. Do not tamper with the device."
action_button_name = "HALT!"
icon_state = "officermask"
icon_action_button = "action_blank"
flags = MASKCOVERSMOUTH
w_class = 2
gas_transfer_coefficient = 0.90
var/cooldown = 0
var/aggressiveness = 1

/obj/item/clothing/mask/hailer/warden
icon_state = "wardenmask"

/obj/item/clothing/mask/hailer/hos
icon_state = "hosmask"

/obj/item/clothing/mask/hailer/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/screwdriver))
switch(aggressiveness)
if(1)
user << "\blue You set the restrictor to the middle position."
aggressiveness = 2
if(2)
user << "\blue You set the restrictor to the last position."
aggressiveness = 3
if(3)
user << "\blue You set the restrictor to the first position."
aggressiveness = 1
if(4)
user << "\red You adjust the restrictor but nothing happens, probably because its broken."
else if(istype(W, /obj/item/weapon/wirecutters))
if(aggressiveness != 4)
user << "\red You broke it!"
aggressiveness = 4
else
..()

/obj/item/clothing/mask/hailer/attack_self()
halt()

/obj/item/clothing/mask/hailer/verb/halt()
set category = null
set name = "HALT"
set src in usr
if(!istype(usr, /mob/living)) return
if(usr.stat) return
if(usr:wear_mask != src)
usr << "\red The mask must be worn to use this feature!"
return

var/phrase = 0 //selects which phrase to use
var/phrase_text = null


if(cooldown < world.time - 35) // A cooldown, to stop people being jerks
switch(aggressiveness) // checks if the user has unlocked the restricted phrases
if(1)
phrase = rand(1,5) // set the upper limit as the phrase above the first 'bad cop' phrase, the mask will only play 'nice' phrases
if(2)
phrase = rand(6,11) // default setting, set upper limit to last 'bad cop' phrase. Mask will play good cop and bad cop phrases
if(3)
phrase = rand(12,18) // user has unlocked all phrases, set upper limit to last phrase. The mask will play all phrases
if(4)
phrase = rand(1,18) // user has broke the restrictor, it will now only play shitcurity phrases

switch(phrase) //sets the properties of the chosen phrase
if(1) // good cop
phrase_text = "HALT! HALT! HALT! HALT!"
playsound(src.loc, 'sound/voice/complionator/halt.ogg', 100, 0, 4)
if(2)
phrase_text = "Stop in the name of the Law."
playsound(src.loc, 'sound/voice/complionator/bobby.ogg', 100, 0, 4)
if(3)
phrase_text = "Compliance is in your best interest."
playsound(src.loc, 'sound/voice/complionator/compliance.ogg', 100, 0, 4)
if(4)
phrase_text = "Prepare for justice!"
playsound(src.loc, 'sound/voice/complionator/justice.ogg', 100, 0, 4)
if(5)
phrase_text = "Running will only increase your sentence."
playsound(src.loc, 'sound/voice/complionator/running.ogg', 100, 0, 4)
if(6) // bad cop
phrase_text = "Don't move, Creep!"
playsound(src.loc, 'sound/voice/complionator/dontmove.ogg', 100, 0, 4)
if(7)
phrase_text = "Down on the floor, Creep!"
playsound(src.loc, 'sound/voice/complionator/floor.ogg', 100, 0, 4)
if(8)
phrase_text = "Dead or alive you're coming with me."
playsound(src.loc, 'sound/voice/complionator/robocop.ogg', 100, 0, 4)
if(9)
phrase_text = "God made today for the crooks we could not catch yesterday."
playsound(src.loc, 'sound/voice/complionator/god.ogg', 100, 0, 4)
if(10)
phrase_text = "Freeze, Scum Bag!"
playsound(src.loc, 'sound/voice/complionator/freeze.ogg', 100, 0, 4)
if(11)
phrase_text = "Stop right there, criminal scum!"
playsound(src.loc, 'sound/voice/complionator/imperial.ogg', 100, 0, 4)
if(12) // LA-PD
phrase_text = "Stop or I'll bash you."
playsound(src.loc, 'sound/voice/complionator/bash.ogg', 100, 0, 4)
if(13)
phrase_text = "Go ahead, make my day."
playsound(src.loc, 'sound/voice/complionator/harry.ogg', 100, 0, 4)
if(14)
phrase_text = "Stop breaking the law, ass hole."
playsound(src.loc, 'sound/voice/complionator/asshole.ogg', 100, 0, 4)
if(15)
phrase_text = "You have the right to shut the fuck up."
playsound(src.loc, 'sound/voice/complionator/stfu.ogg', 100, 0, 4)
if(16)
phrase_text = "Shut up crime!"
playsound(src.loc, 'sound/voice/complionator/shutup.ogg', 100, 0, 4)
if(17)
phrase_text = "Face the wrath of the golden bolt."
playsound(src.loc, 'sound/voice/complionator/super.ogg', 100, 0, 4)
if(18)
phrase_text = "I am, the LAW!"
playsound(src.loc, 'sound/voice/complionator/dredd.ogg', 100, 0, 4)

usr.visible_message("[usr.name]'s Hailer Mask: <font color='red' size='3'><b>[phrase_text]</b></font>")
cooldown = world.time
Binary file modified icons/obj/clothing/masks.dmi
Binary file not shown.
Binary file added sound/voice/complionator/asshole.ogg
Binary file not shown.
Binary file added sound/voice/complionator/bash.ogg
Binary file not shown.
Binary file added sound/voice/complionator/bobby.ogg
Binary file not shown.
Binary file added sound/voice/complionator/compliance.ogg
Binary file not shown.
Binary file added sound/voice/complionator/dontmove.ogg
Binary file not shown.
Binary file added sound/voice/complionator/dredd.ogg
Binary file not shown.
Binary file added sound/voice/complionator/floor.ogg
Binary file not shown.
Binary file added sound/voice/complionator/freeze.ogg
Binary file not shown.
Binary file added sound/voice/complionator/god.ogg
Binary file not shown.
Binary file added sound/voice/complionator/halt.ogg
Binary file not shown.
Binary file added sound/voice/complionator/harry.ogg
Binary file not shown.
Binary file added sound/voice/complionator/imperial.ogg
Binary file not shown.
Binary file added sound/voice/complionator/justice.ogg
Binary file not shown.
Binary file added sound/voice/complionator/robocop.ogg
Binary file not shown.
Binary file added sound/voice/complionator/running.ogg
Binary file not shown.
Binary file added sound/voice/complionator/shutup.ogg
Binary file not shown.
Binary file added sound/voice/complionator/stfu.ogg
Binary file not shown.
Binary file added sound/voice/complionator/super.ogg
Binary file not shown.