diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index 953b8b1f00..71c394a404 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -378,3 +378,11 @@ /obj/item/circuitboard/computer/apc_control, /obj/item/circuitboard/computer/robotics ) + +/obj/effect/spawner/lootdrop/keg + name = "random keg spawner" + lootcount = 1 + loot = list(/obj/structure/reagent_dispensers/keg/mead = 5, + /obj/structure/reagent_dispensers/keg/aphro = 2, + /obj/structure/reagent_dispensers/keg/aphro/strong = 2, + /obj/structure/reagent_dispensers/keg/gargle = 1) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 2bf039218b..78dde8d206 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -10,6 +10,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/item_state = null var/lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' var/righthand_file = 'icons/mob/inhands/items_righthand.dmi' + var/list/alternate_screams = list() //REEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE //Dimensions of the icon file used when this item is worn, eg: hats.dmi //eg: 32x32 sprite, 64x64 sprite, etc. diff --git a/modular_citadel/code/game/objects/items/balls.dm b/code/game/objects/items/balls.dm similarity index 99% rename from modular_citadel/code/game/objects/items/balls.dm rename to code/game/objects/items/balls.dm index 79552bff6d..59b47bacbd 100644 --- a/modular_citadel/code/game/objects/items/balls.dm +++ b/code/game/objects/items/balls.dm @@ -89,4 +89,4 @@ resistance_flags = ACID_PROOF /datum/action/item_action/squeeze - name = "Squeak!" \ No newline at end of file + name = "Squeak!" diff --git a/modular_citadel/code/game/objects/items/boombox.dm b/code/game/objects/items/boombox.dm similarity index 100% rename from modular_citadel/code/game/objects/items/boombox.dm rename to code/game/objects/items/boombox.dm diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index 6aee67f2ee..d5cf6daabb 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -144,3 +144,80 @@ Code: user << browse(dat, "window=radio") onclose(user, "radio") return + +/obj/item/electropack/shockcollar + name = "shock collar" + desc = "A reinforced metal collar. It seems to have some form of wiring near the front. Strange.." + icon = 'modular_citadel/icons/obj/clothing/cit_neck.dmi' + alternate_worn_icon = 'modular_citadel/icons/mob/citadel/neck.dmi' + icon_state = "shockcollar" + item_state = "shockcollar" + body_parts_covered = NECK + slot_flags = ITEM_SLOT_NECK | ITEM_SLOT_DENYPOCKET //no more pocket shockers + w_class = WEIGHT_CLASS_SMALL + strip_delay = 60 + equip_delay_other = 60 + materials = list(MAT_METAL=5000, MAT_GLASS=2000) + + var/tagname = null + +/datum/design/electropack/shockcollar + name = "Shockcollar" + id = "shockcollar" + build_type = AUTOLATHE + build_path = /obj/item/electropack/shockcollar + materials = list(MAT_METAL=5000, MAT_GLASS=2000) + category = list("hacked", "Misc") + +/obj/item/electropack/shockcollar/attack_hand(mob/user) + if(loc == user && user.get_item_by_slot(SLOT_NECK)) + to_chat(user, "The collar is fastened tight! You'll need help taking this off!") + return + return ..() + +/obj/item/electropack/shockcollar/receive_signal(datum/signal/signal) + if(!signal || signal.data["code"] != code) + return + + if(isliving(loc) && on) + if(shock_cooldown == TRUE) + return + shock_cooldown = TRUE + addtimer(VARSET_CALLBACK(src, shock_cooldown, FALSE), 100) + var/mob/living/L = loc + step(L, pick(GLOB.cardinals)) + + to_chat(L, "You feel a sharp shock from the collar!") + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread + s.set_up(3, 1, L) + s.start() + + L.Knockdown(100) + + if(master) + master.receive_signal() + return + +/obj/item/electropack/shockcollar/attackby(obj/item/W, mob/user, params) //moves it here because on_click is being bad + if(istype(W, /obj/item/pen)) + var/t = input(user, "Would you like to change the name on the tag?", "Name your new pet", tagname ? tagname : "Spot") as null|text + if(t) + tagname = copytext(sanitize(t), 1, MAX_NAME_LEN) + name = "[initial(name)] - [tagname]" + else + return ..() + +/obj/item/electropack/shockcollar/ui_interact(mob/user) //on_click calls this + var/dat = {" + +Frequency/Code for shock collar:
+Frequency: +[format_frequency(src.frequency)] +Set
+Code: +[src.code] +Set
+
"} + user << browse(dat, "window=radio") + onclose(user, "radio") + return diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm index cc009b5fc2..e26b9dd845 100644 --- a/code/game/objects/items/devices/radio/encryptionkey.dm +++ b/code/game/objects/items/devices/radio/encryptionkey.dm @@ -92,7 +92,13 @@ /obj/item/encryptionkey/heads/hop name = "\proper the head of personnel's encryption key" icon_state = "hop_cypherkey" - channels = list(RADIO_CHANNEL_SUPPLY = 1, RADIO_CHANNEL_SERVICE = 1, RADIO_CHANNEL_COMMAND = 1) + channels = list(RADIO_CHANNEL_SERVICE = 1, RADIO_CHANNEL_COMMAND = 1) + +/obj/item/encryptionkey/heads/qm + name = "\proper the quartermaster's encryption key" + desc = "An encryption key for a radio headset. Channels are as follows: :u - supply, :c - command." + icon_state = "hop_cypherkey" + channels = list(RADIO_CHANNEL_SUPPLY = 1, RADIO_CHANNEL_COMMAND = 1) /obj/item/encryptionkey/headset_cargo name = "supply radio encryption key" diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 13cd30561a..8c6666085e 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -206,6 +206,12 @@ GLOBAL_LIST_INIT(channel_tokens, list( icon_state = "com_headset" keyslot = new /obj/item/encryptionkey/heads/hop +/obj/item/radio/headset/heads/qm + name = "\proper the quartermaster's headset" + desc = "The headset of the king (or queen) of paperwork." + icon_state = "com_headset" + keyslot = new /obj/item/encryptionkey/heads/qm + /obj/item/radio/headset/headset_cargo name = "supply radio headset" desc = "A headset used by the QM and his slaves." diff --git a/code/game/objects/items/grenades/grenade.dm b/code/game/objects/items/grenades/grenade.dm index 4f3dab803d..033ea9e791 100644 --- a/code/game/objects/items/grenades/grenade.dm +++ b/code/game/objects/items/grenades/grenade.dm @@ -122,3 +122,6 @@ owner.visible_message("[attack_text] hits [owner]'s [src], setting it off! What a shot!") prime() return TRUE //It hit the grenade, not them + +/obj/item/proc/grenade_prime_react(obj/item/grenade/nade) + return diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm index 3ae0a4bd17..f34fc6a9a3 100644 --- a/code/game/objects/items/stunbaton.dm +++ b/code/game/objects/items/stunbaton.dm @@ -223,6 +223,46 @@ if(!iscyborg(loc)) deductcharge(1000 / severity, TRUE, FALSE) +/obj/item/melee/baton/stunsword + name = "stunsword" + desc = "not actually sharp, this sword is functionally identical to a stunbaton" + icon = 'modular_citadel/icons/obj/stunsword.dmi' + icon_state = "stunsword" + item_state = "sword" + lefthand_file = 'modular_citadel/icons/mob/inhands/stunsword_left.dmi' + righthand_file = 'modular_citadel/icons/mob/inhands/stunsword_right.dmi' + +/obj/item/melee/baton/stunsword/get_belt_overlay() + if(istype(loc, /obj/item/storage/belt/sabre)) + return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "stunsword") + return ..() + +/obj/item/melee/baton/stunsword/get_worn_belt_overlay(icon_file) + return mutable_appearance(icon_file, "-stunsword") + +/obj/item/ssword_kit + name = "stunsword kit" + desc = "a modkit for making a stunbaton into a stunsword" + icon = 'icons/obj/vending_restock.dmi' + icon_state = "refill_donksoft" + var/product = /obj/item/melee/baton/stunsword //what it makes + var/list/fromitem = list(/obj/item/melee/baton, /obj/item/melee/baton/loaded) //what it needs + afterattack(obj/O, mob/user as mob) + if(istype(O, product)) + to_chat(user,"[O] is already modified!") + else if(O.type in fromitem) //makes sure O is the right thing + var/obj/item/melee/baton/B = O + if(!B.cell) //checks for a powercell in the baton. If there isn't one, continue. If there is, warn the user to take it out + new product(usr.loc) //spawns the product + user.visible_message("[user] modifies [O]!","You modify the [O]!") + qdel(O) //Gets rid of the baton + qdel(src) //gets rid of the kit + + else + to_chat(user,"Remove the powercell first!") //We make this check because the stunsword starts without a battery. + else + to_chat(user, " You can't modify [O] with this kit!") + //Makeshift stun baton. Replacement for stun gloves. /obj/item/melee/baton/cattleprod name = "stunprod" @@ -249,5 +289,6 @@ sparkler?.activate() . = ..() + #undef STUNBATON_CHARGE_LENIENCY #undef STUNBATON_DEPLETION_RATE diff --git a/code/game/world.dm b/code/game/world.dm index 5e7629fbb4..df0eba70cd 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -34,10 +34,12 @@ GLOBAL_LIST(topic_status_cache) #endif load_admins() + load_mentors() LoadVerbs(/datum/verbs/menu) if(CONFIG_GET(flag/usewhitelist)) load_whitelist() LoadBans() + initialize_global_loadout_items() reload_custom_roundstart_items_list()//Cit change - loads donator items. Remind me to remove when I port over bay's loadout system GLOB.timezoneOffset = text2num(time2text(0,"hh")) * 36000 @@ -49,8 +51,6 @@ GLOBAL_LIST(topic_status_cache) if(NO_INIT_PARAMETER in params) return - cit_initialize() - Master.Initialize(10, FALSE, TRUE) if(TEST_RUN_PARAMETER in params) diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 07014c8a0a..696ff1346c 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -178,6 +178,7 @@ icon_state = "xenos" item_state = "xenos_helm" desc = "A helmet made out of chitinous alien hide." + alternate_screams = list('sound/voice/hiss6.ogg') flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT /obj/item/clothing/head/fedora @@ -421,4 +422,4 @@ name = "security cowboy hat" desc = "A security cowboy hat, perfect for any true lawman" icon_state = "cowboyhat_sec" - item_state= "cowboyhat_sec" \ No newline at end of file + item_state= "cowboyhat_sec" diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 1000decc87..bb2014db5c 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -86,6 +86,7 @@ desc = "Perfect for winter in Siberia, da?" icon_state = "ushankadown" item_state = "ushankadown" + alternate_screams = list('sound/voice/human/cyka1.ogg', 'sound/voice/human/cheekibreeki.ogg') flags_inv = HIDEEARS|HIDEHAIR var/earflaps = 1 cold_protection = HEAD @@ -164,6 +165,7 @@ icon_state = "cardborg_h" item_state = "cardborg_h" flags_cover = HEADCOVERSEYES + alternate_screams = list('modular_citadel/sound/voice/scream_silicon.ogg') flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT dog_fashion = /datum/dog_fashion/head/cardborg diff --git a/modular_citadel/code/game/objects/effects/spawner/spawners.dm b/modular_citadel/code/game/objects/effects/spawner/spawners.dm deleted file mode 100644 index b6fbeef4c9..0000000000 --- a/modular_citadel/code/game/objects/effects/spawner/spawners.dm +++ /dev/null @@ -1,7 +0,0 @@ -/obj/effect/spawner/lootdrop/keg - name = "random keg spawner" - lootcount = 1 - loot = list(/obj/structure/reagent_dispensers/keg/mead = 5, - /obj/structure/reagent_dispensers/keg/aphro = 2, - /obj/structure/reagent_dispensers/keg/aphro/strong = 2, - /obj/structure/reagent_dispensers/keg/gargle = 1) \ No newline at end of file diff --git a/modular_citadel/code/game/objects/items.dm b/modular_citadel/code/game/objects/items.dm deleted file mode 100644 index dba460414e..0000000000 --- a/modular_citadel/code/game/objects/items.dm +++ /dev/null @@ -1,15 +0,0 @@ -/obj/item - var/list/alternate_screams = list() //REEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE - -// lazy for screaming. -/obj/item/clothing/head/xenos - alternate_screams = list('sound/voice/hiss6.ogg') - -/obj/item/clothing/head/cardborg - alternate_screams = list('modular_citadel/sound/voice/scream_silicon.ogg') - -/obj/item/clothing/head/ushanka - alternate_screams = list('sound/voice/human/cyka1.ogg', 'sound/voice/human/cheekibreeki.ogg') - -/obj/item/proc/grenade_prime_react(obj/item/grenade/nade) - return \ No newline at end of file diff --git a/modular_citadel/code/game/objects/items/devices/radio/encryptionkey.dm b/modular_citadel/code/game/objects/items/devices/radio/encryptionkey.dm deleted file mode 100644 index 5e3d7318cf..0000000000 --- a/modular_citadel/code/game/objects/items/devices/radio/encryptionkey.dm +++ /dev/null @@ -1,10 +0,0 @@ -/obj/item/encryptionkey/heads/qm - name = "\proper the quartermaster's encryption key" - desc = "An encryption key for a radio headset. Channels are as follows: :u - supply, :c - command." - icon_state = "hop_cypherkey" - channels = list("Supply" = 1, "Command" = 1) - -/obj/item/encryptionkey/heads/hop - desc = "An encryption key for a radio headset. Channels are as follows: :v - service, :c - command." - channels = list("Service" = 1, "Command" = 1) - diff --git a/modular_citadel/code/game/objects/items/devices/radio/headset.dm b/modular_citadel/code/game/objects/items/devices/radio/headset.dm deleted file mode 100644 index 3d1b36f645..0000000000 --- a/modular_citadel/code/game/objects/items/devices/radio/headset.dm +++ /dev/null @@ -1,10 +0,0 @@ -/obj/item/radio/headset/heads/qm - name = "\proper the quartermaster's headset" - desc = "The headset of the king (or queen) of paperwork.\nChannels are as follows: :u - supply, :c - command." - icon_state = "com_headset" - keyslot = new /obj/item/encryptionkey/heads/qm - -/obj/item/radio/headset/heads/hop - desc = "The headset of the guy who will one day be captain.\nChannels are as follows: :v - service, :c - command." - keyslot = new /obj/item/encryptionkey/heads/hop - diff --git a/modular_citadel/code/game/objects/items/devices/radio/shockcollar.dm b/modular_citadel/code/game/objects/items/devices/radio/shockcollar.dm deleted file mode 100644 index 94bf1ba30a..0000000000 --- a/modular_citadel/code/game/objects/items/devices/radio/shockcollar.dm +++ /dev/null @@ -1,77 +0,0 @@ -/obj/item/electropack/shockcollar - name = "shock collar" - desc = "A reinforced metal collar. It seems to have some form of wiring near the front. Strange.." - icon = 'modular_citadel/icons/obj/clothing/cit_neck.dmi' - alternate_worn_icon = 'modular_citadel/icons/mob/citadel/neck.dmi' - icon_state = "shockcollar" - item_state = "shockcollar" - body_parts_covered = NECK - slot_flags = ITEM_SLOT_NECK | ITEM_SLOT_DENYPOCKET //no more pocket shockers - w_class = WEIGHT_CLASS_SMALL - strip_delay = 60 - equip_delay_other = 60 - materials = list(MAT_METAL=5000, MAT_GLASS=2000) - - var/tagname = null - -/datum/design/electropack/shockcollar - name = "Shockcollar" - id = "shockcollar" - build_type = AUTOLATHE - build_path = /obj/item/electropack/shockcollar - materials = list(MAT_METAL=5000, MAT_GLASS=2000) - category = list("hacked", "Misc") - -/obj/item/electropack/shockcollar/attack_hand(mob/user) - if(loc == user && user.get_item_by_slot(SLOT_NECK)) - to_chat(user, "The collar is fastened tight! You'll need help taking this off!") - return - return ..() - -/obj/item/electropack/shockcollar/receive_signal(datum/signal/signal) - if(!signal || signal.data["code"] != code) - return - - if(isliving(loc) && on) - if(shock_cooldown == TRUE) - return - shock_cooldown = TRUE - addtimer(VARSET_CALLBACK(src, shock_cooldown, FALSE), 100) - var/mob/living/L = loc - step(L, pick(GLOB.cardinals)) - - to_chat(L, "You feel a sharp shock from the collar!") - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(3, 1, L) - s.start() - - L.Knockdown(100) - - if(master) - master.receive_signal() - return - -/obj/item/electropack/shockcollar/attackby(obj/item/W, mob/user, params) //moves it here because on_click is being bad - if(istype(W, /obj/item/pen)) - var/t = input(user, "Would you like to change the name on the tag?", "Name your new pet", tagname ? tagname : "Spot") as null|text - if(t) - tagname = copytext(sanitize(t), 1, MAX_NAME_LEN) - name = "[initial(name)] - [tagname]" - else - return ..() - -/obj/item/electropack/shockcollar/ui_interact(mob/user) //on_click calls this - var/dat = {" - -Frequency/Code for shock collar:
-Frequency: -[format_frequency(src.frequency)] -Set
- -Code: -[src.code] -Set
-
"} - user << browse(dat, "window=radio") - onclose(user, "radio") - return diff --git a/modular_citadel/code/game/objects/items/stunsword.dm b/modular_citadel/code/game/objects/items/stunsword.dm deleted file mode 100644 index 7a5398f7d2..0000000000 --- a/modular_citadel/code/game/objects/items/stunsword.dm +++ /dev/null @@ -1,41 +0,0 @@ -/obj/item/melee/baton/stunsword - name = "stunsword" - desc = "not actually sharp, this sword is functionally identical to a stunbaton" - icon = 'modular_citadel/icons/obj/stunsword.dmi' - icon_state = "stunsword" - item_state = "sword" - lefthand_file = 'modular_citadel/icons/mob/inhands/stunsword_left.dmi' - righthand_file = 'modular_citadel/icons/mob/inhands/stunsword_right.dmi' - -/obj/item/melee/baton/stunsword/get_belt_overlay() - if(istype(loc, /obj/item/storage/belt/sabre)) - return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "stunsword") - return ..() - -/obj/item/melee/baton/stunsword/get_worn_belt_overlay(icon_file) - return mutable_appearance(icon_file, "-stunsword") - -/obj/item/ssword_kit - name = "stunsword kit" - desc = "a modkit for making a stunbaton into a stunsword" - icon = 'icons/obj/vending_restock.dmi' - icon_state = "refill_donksoft" - var/product = /obj/item/melee/baton/stunsword //what it makes - var/list/fromitem = list(/obj/item/melee/baton, /obj/item/melee/baton/loaded) //what it needs - afterattack(obj/O, mob/user as mob) - if(istype(O, product)) - to_chat(user,"[O] is already modified!") - else if(O.type in fromitem) //makes sure O is the right thing - var/obj/item/melee/baton/B = O - if(!B.cell) //checks for a powercell in the baton. If there isn't one, continue. If there is, warn the user to take it out - new product(usr.loc) //spawns the product - user.visible_message("[user] modifies [O]!","You modify the [O]!") - qdel(O) //Gets rid of the baton - qdel(src) //gets rid of the kit - - else - to_chat(user,"Remove the powercell first!") //We make this check because the stunsword starts without a battery. - else - to_chat(user, " You can't modify [O] with this kit!") - - diff --git a/modular_citadel/code/init.dm b/modular_citadel/code/init.dm deleted file mode 100644 index a85c3a249c..0000000000 --- a/modular_citadel/code/init.dm +++ /dev/null @@ -1,5 +0,0 @@ -//init file stolen from hippie - -/proc/cit_initialize() - load_mentors() - initialize_global_loadout_items() diff --git a/tgstation.dme b/tgstation.dme index 671ac0059e..c52912196b 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -835,9 +835,11 @@ #include "code\game\objects\items\AI_modules.dm" #include "code\game\objects\items\airlock_painter.dm" #include "code\game\objects\items\apc_frame.dm" +#include "code\game\objects\items\balls.dm" #include "code\game\objects\items\blueprints.dm" #include "code\game\objects\items\body_egg.dm" #include "code\game\objects\items\bodybag.dm" +#include "code\game\objects\items\boombox.dm" #include "code\game\objects\items\candle.dm" #include "code\game\objects\items\cardboard_cutouts.dm" #include "code\game\objects\items\cards_ids.dm" @@ -3073,7 +3075,6 @@ #include "interface\interface.dm" #include "interface\menu.dm" #include "interface\stylesheet.dm" -#include "modular_citadel\code\init.dm" #include "modular_citadel\code\__HELPERS\list2list.dm" #include "modular_citadel\code\__HELPERS\lists.dm" #include "modular_citadel\code\__HELPERS\mobs.dm" @@ -3088,15 +3089,7 @@ #include "modular_citadel\code\datums\status_effects\debuffs.dm" #include "modular_citadel\code\game\machinery\wishgranter.dm" #include "modular_citadel\code\game\objects\cit_screenshake.dm" -#include "modular_citadel\code\game\objects\items.dm" -#include "modular_citadel\code\game\objects\effects\spawner\spawners.dm" #include "modular_citadel\code\game\objects\effects\temporary_visuals\souldeath.dm" -#include "modular_citadel\code\game\objects\items\balls.dm" -#include "modular_citadel\code\game\objects\items\boombox.dm" -#include "modular_citadel\code\game\objects\items\stunsword.dm" -#include "modular_citadel\code\game\objects\items\devices\radio\encryptionkey.dm" -#include "modular_citadel\code\game\objects\items\devices\radio\headset.dm" -#include "modular_citadel\code\game\objects\items\devices\radio\shockcollar.dm" #include "modular_citadel\code\modules\admin\admin.dm" #include "modular_citadel\code\modules\admin\chat_commands.dm" #include "modular_citadel\code\modules\admin\holder2.dm"