diff --git a/baystation12.dme b/baystation12.dme index 331cce94f9b89..3a966c40374b4 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -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" diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index f9a236e20c0ac..10b0a93237773 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -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)) @@ -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 @@ -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 @@ -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", @@ -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", @@ -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" @@ -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", @@ -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", @@ -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 diff --git a/code/modules/clothing/masks/hailer.dm b/code/modules/clothing/masks/hailer.dm new file mode 100644 index 0000000000000..aa39d961e8d6e --- /dev/null +++ b/code/modules/clothing/masks/hailer.dm @@ -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: [phrase_text]") + cooldown = world.time diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi index 8fd9c00e7236b..c8ff03f587235 100644 Binary files a/icons/obj/clothing/masks.dmi and b/icons/obj/clothing/masks.dmi differ diff --git a/sound/voice/complionator/asshole.ogg b/sound/voice/complionator/asshole.ogg new file mode 100644 index 0000000000000..9ee40942c4674 Binary files /dev/null and b/sound/voice/complionator/asshole.ogg differ diff --git a/sound/voice/complionator/bash.ogg b/sound/voice/complionator/bash.ogg new file mode 100644 index 0000000000000..e79a2cd1e1213 Binary files /dev/null and b/sound/voice/complionator/bash.ogg differ diff --git a/sound/voice/complionator/bobby.ogg b/sound/voice/complionator/bobby.ogg new file mode 100644 index 0000000000000..4bc8f8df94d78 Binary files /dev/null and b/sound/voice/complionator/bobby.ogg differ diff --git a/sound/voice/complionator/compliance.ogg b/sound/voice/complionator/compliance.ogg new file mode 100644 index 0000000000000..fcfb608202928 Binary files /dev/null and b/sound/voice/complionator/compliance.ogg differ diff --git a/sound/voice/complionator/dontmove.ogg b/sound/voice/complionator/dontmove.ogg new file mode 100644 index 0000000000000..09cefea9d6e3b Binary files /dev/null and b/sound/voice/complionator/dontmove.ogg differ diff --git a/sound/voice/complionator/dredd.ogg b/sound/voice/complionator/dredd.ogg new file mode 100644 index 0000000000000..ab434dbfde733 Binary files /dev/null and b/sound/voice/complionator/dredd.ogg differ diff --git a/sound/voice/complionator/floor.ogg b/sound/voice/complionator/floor.ogg new file mode 100644 index 0000000000000..996dd0f54ac04 Binary files /dev/null and b/sound/voice/complionator/floor.ogg differ diff --git a/sound/voice/complionator/freeze.ogg b/sound/voice/complionator/freeze.ogg new file mode 100644 index 0000000000000..d4224be8392b6 Binary files /dev/null and b/sound/voice/complionator/freeze.ogg differ diff --git a/sound/voice/complionator/god.ogg b/sound/voice/complionator/god.ogg new file mode 100644 index 0000000000000..8e1a54d268fad Binary files /dev/null and b/sound/voice/complionator/god.ogg differ diff --git a/sound/voice/complionator/halt.ogg b/sound/voice/complionator/halt.ogg new file mode 100644 index 0000000000000..81563b928f010 Binary files /dev/null and b/sound/voice/complionator/halt.ogg differ diff --git a/sound/voice/complionator/harry.ogg b/sound/voice/complionator/harry.ogg new file mode 100644 index 0000000000000..eae132675e563 Binary files /dev/null and b/sound/voice/complionator/harry.ogg differ diff --git a/sound/voice/complionator/imperial.ogg b/sound/voice/complionator/imperial.ogg new file mode 100644 index 0000000000000..903cf1197c7f4 Binary files /dev/null and b/sound/voice/complionator/imperial.ogg differ diff --git a/sound/voice/complionator/justice.ogg b/sound/voice/complionator/justice.ogg new file mode 100644 index 0000000000000..2aef43b1504a2 Binary files /dev/null and b/sound/voice/complionator/justice.ogg differ diff --git a/sound/voice/complionator/robocop.ogg b/sound/voice/complionator/robocop.ogg new file mode 100644 index 0000000000000..4dec421ed0ab3 Binary files /dev/null and b/sound/voice/complionator/robocop.ogg differ diff --git a/sound/voice/complionator/running.ogg b/sound/voice/complionator/running.ogg new file mode 100644 index 0000000000000..3711ce6ccfeb6 Binary files /dev/null and b/sound/voice/complionator/running.ogg differ diff --git a/sound/voice/complionator/shutup.ogg b/sound/voice/complionator/shutup.ogg new file mode 100644 index 0000000000000..ecd2b02015280 Binary files /dev/null and b/sound/voice/complionator/shutup.ogg differ diff --git a/sound/voice/complionator/stfu.ogg b/sound/voice/complionator/stfu.ogg new file mode 100644 index 0000000000000..9c3fcf675bbe3 Binary files /dev/null and b/sound/voice/complionator/stfu.ogg differ diff --git a/sound/voice/complionator/super.ogg b/sound/voice/complionator/super.ogg new file mode 100644 index 0000000000000..8bae406dea6e3 Binary files /dev/null and b/sound/voice/complionator/super.ogg differ