diff --git a/_maps/map_files/MetaStation/MetaStation.v39k.dmm b/_maps/map_files/MetaStation/MetaStation.v39k.dmm index dafd439b70c..bbb5ef8c41f 100644 --- a/_maps/map_files/MetaStation/MetaStation.v39k.dmm +++ b/_maps/map_files/MetaStation/MetaStation.v39k.dmm @@ -1400,7 +1400,7 @@ "aAV" = (/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aAW" = (/obj/structure/mirror{pixel_x = 28},/obj/machinery/shower{tag = "icon-shower (WEST)"; icon_state = "shower"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet{name = "\improper Restrooms"}) "aAX" = (/obj/machinery/washing_machine,/turf/simulated/floor/plasteel{icon_state = "barber"},/area/crew_quarters/sleep) -"aAY" = (/obj/structure/table,/obj/item/clothing/under/suit_jacket/female{pixel_x = 3; pixel_y = 1},/obj/item/clothing/under/suit_jacket/really_black{pixel_x = -2; pixel_y = 0},/obj/machinery/light/small{dir = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 28},/obj/item/clothing/tie/waistcoat,/obj/item/clothing/suit/lawyer/blackjacket,/obj/item/clothing/under/suit_jacket/red,/obj/item/clothing/tie/black,/obj/item/clothing/under/lawyer/blacksuit,/turf/simulated/floor/plasteel{icon_state = "barber"},/area/crew_quarters/sleep) +"aAY" = (/obj/structure/table,/obj/item/clothing/under/suit_jacket/female{pixel_x = 3; pixel_y = 1},/obj/item/clothing/under/suit_jacket/really_black{pixel_x = -2; pixel_y = 0},/obj/machinery/light/small{dir = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 28},/obj/item/clothing/tie/waistcoat,/obj/item/clothing/suit/toggle/lawyer/black,/obj/item/clothing/under/suit_jacket/red,/obj/item/clothing/tie/black,/obj/item/clothing/under/lawyer/blacksuit,/turf/simulated/floor/plasteel{icon_state = "barber"},/area/crew_quarters/sleep) "aAZ" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/crew_quarters/sleep) "aBa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/junction{dir = 4; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep) "aBb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/turf/simulated/floor/plasteel{dir = 2; icon_state = "neutralcorner"},/area/crew_quarters/sleep) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 0ba92809470..c3d906c7742 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -9,7 +9,7 @@ /atom/movable/attackby(obj/item/W, mob/living/user) user.do_attack_animation(src) if(W && !(W.flags&NOBLUDGEON)) - visible_message("[src] has been hit by [user] with [W].") + visible_message("[user] has hit [src] with [W].") /mob/living/attackby(obj/item/I, mob/user) user.changeNext_move(CLICK_CD_MELEE) @@ -23,18 +23,21 @@ if(istype(location, /turf/simulated)) location.add_blood_floor(src) - var/showname = "." - if(user) - showname = " by [user]!" - user.do_attack_animation(src) - if(!(user in viewers(src, null))) - showname = "." + var/message_verb = "" if(I.attack_verb && I.attack_verb.len) - src.visible_message("[src] has been [pick(I.attack_verb)] with [I][showname]", - "[src] has been [pick(I.attack_verb)] with [I][showname]") + message_verb = "[pick(I.attack_verb)]" else if(I.force) - src.visible_message("[src] has been attacked with [I][showname]", - "[src] has been attacked with [I][showname]") + message_verb = "attacked" + + var/attack_message = "[src] has been [message_verb] with [I]." + if(user) + user.do_attack_animation(src) + if(user in viewers(src, null)) + attack_message = "[user] has [message_verb] [src] with [I]!" + if(message_verb) + visible_message("[attack_message]", + "[attack_message]") + // Proximity_flag is 1 if this afterattack was called on something adjacent, in your square, or on your person. // Click parameters is the params string from byond Click() code, see that documentation. diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index a558dfbd084..0501caf3db1 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -132,7 +132,7 @@ var/sandbox_autoclose = 0 // close the sandbox panel after spawning an item, potentially reducing griff var/default_laws = 0 //Controls what laws the AI spawns with. - var/silicon_max_law_amount = 0 + var/silicon_max_law_amount = 12 /datum/configuration/New() var/list/L = typesof(/datum/game_mode) - /datum/game_mode diff --git a/code/controllers/supply_shuttle.dm b/code/controllers/supply_shuttle.dm index 4a3a7ebbd41..7e14801c5e3 100644 --- a/code/controllers/supply_shuttle.dm +++ b/code/controllers/supply_shuttle.dm @@ -45,7 +45,7 @@ var/global/datum/controller/supply_shuttle/supply_shuttle return 0 return ..() -/obj/structure/plasticflaps/ex_act(severity, specialty) +/obj/structure/plasticflaps/ex_act(severity, target) ..() switch(severity) if (1) diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 8d5738c6bb6..0f99e025e8c 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -959,10 +959,8 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, /obj/item/weapon/storage/book/bible/booze, /obj/item/weapon/storage/book/bible/booze, - /obj/item/clothing/suit/chaplain_hoodie, - /obj/item/clothing/head/chaplain_hood, - /obj/item/clothing/suit/chaplain_hoodie, - /obj/item/clothing/head/chaplain_hood) + /obj/item/clothing/suit/toggle/chaplain_hoodie, + /obj/item/clothing/suit/toggle/chaplain_hoodie) cost = 40 // it costs so much because the Space Church is ran by Space Jews containername = "religious supplies crate" @@ -1147,11 +1145,11 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/clothing/under/assistantformal, /obj/item/clothing/under/assistantformal, /obj/item/clothing/under/lawyer/bluesuit, - /obj/item/clothing/suit/lawyer/bluejacket, + /obj/item/clothing/suit/toggle/lawyer, /obj/item/clothing/under/lawyer/purpsuit, - /obj/item/clothing/suit/lawyer/purpjacket, + /obj/item/clothing/suit/toggle/lawyer/purple, /obj/item/clothing/under/lawyer/blacksuit, - /obj/item/clothing/suit/lawyer/blackjacket, + /obj/item/clothing/suit/toggle/lawyer/black, /obj/item/clothing/tie/waistcoat, /obj/item/clothing/tie/blue, /obj/item/clothing/tie/red, diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 2409ef32b57..e5ec1e07753 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -232,8 +232,12 @@ its easier to just keep the beam vertical. /atom/proc/relaymove() return -/atom/proc/ex_act(severity, specialty) - contents_explosion(src, severity, specialty) +/atom/proc/contents_explosion(severity, target) + for(var/atom/A in contents) + A.ex_act(severity, target) + +/atom/proc/ex_act(severity, target) + contents_explosion(severity, target) /atom/proc/blob_act() return diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index ce290d754f1..357bdd7c195 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -126,7 +126,7 @@ A.blob_act() return 1 -/obj/effect/blob/ex_act(severity, specialty) +/obj/effect/blob/ex_act(severity, target) ..() var/damage = 150 health -= ((damage/brute_resist) - (severity * 5)) @@ -154,7 +154,7 @@ user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src) playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1) - src.visible_message("The [src.name] has been attacked with \the [W][(user ? " by [user]" : "")]!") + visible_message("[user] has attacked the [src.name] with \the [W]!") var/damage = 0 switch(W.damtype) if("fire") @@ -172,7 +172,7 @@ M.changeNext_move(CLICK_CD_MELEE) M.do_attack_animation(src) playsound(src.loc, 'sound/effects/attackblob.ogg', 50, 1) - src.visible_message("The [src.name] has been attacked by \the [M]!") + visible_message("\The [M] has attacked the [src.name]!") var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) if(!damage) // Avoid divide by zero errors return diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 0d5dfc22397..0741a7c099c 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -149,7 +149,7 @@ var/bomb_set if ((M.client && M.machine == src)) src.attack_hand(M) -/obj/machinery/nuclearbomb/ex_act(severity, specialty) +/obj/machinery/nuclearbomb/ex_act(severity, target) return /obj/machinery/nuclearbomb/blob_act() diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index 701acf7fe5d..c476753d82b 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -350,10 +350,10 @@ Lawyer if(lawyers%2 != 0) H.equip_to_slot_or_del(new /obj/item/clothing/under/lawyer/bluesuit(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/lawyer/bluejacket(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/lawyer(H), slot_wear_suit) else H.equip_to_slot_or_del(new /obj/item/clothing/under/lawyer/purpsuit(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/lawyer/purpjacket(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/lawyer/purple(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/weapon/storage/briefcase(H), slot_l_hand) diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index dab1d3def8b..3557547362b 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -30,7 +30,7 @@ Chief Medical Officer /datum/job/cmo/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chief_medical_officer(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/brown(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat/cmo(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/labcoat/cmo(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/regular(H), slot_l_hand) H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store) @@ -63,7 +63,7 @@ Medical Doctor /datum/job/doctor/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/white(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/labcoat(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/regular(H), slot_l_hand) H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store) @@ -90,7 +90,7 @@ Chemist /datum/job/chemist/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chemist(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/white(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat/chemist(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/labcoat/chemist(H), slot_wear_suit) /* Geneticist @@ -115,7 +115,7 @@ Geneticist /datum/job/geneticist/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/geneticist(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/white(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat/genetics(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/labcoat/genetics(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store) /* @@ -144,6 +144,6 @@ Virologist H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/virologist(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(H), slot_wear_mask) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/white(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat/virologist(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/labcoat/virologist(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store) diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index c0975987618..90633512de7 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -32,7 +32,7 @@ Research Director /datum/job/rd/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/brown(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/research_director(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/labcoat(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/weapon/clipboard(H), slot_l_hand) H.equip_to_slot_or_del(new /obj/item/device/laser_pointer(H), slot_l_store) @@ -63,7 +63,7 @@ Scientist /datum/job/scientist/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/scientist(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/white(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat/science(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/labcoat/science(H), slot_wear_suit) /* Roboticist @@ -88,5 +88,5 @@ Roboticist /datum/job/roboticist/equip_items(var/mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/roboticist(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/labcoat(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/weapon/storage/toolbox/mechanical(H), slot_l_hand) \ No newline at end of file diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 4881f8a2658..ec015bcc70b 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -84,7 +84,7 @@ default_deconstruction_crowbar(I) -/obj/machinery/sleeper/ex_act(severity, specialty) +/obj/machinery/sleeper/ex_act(severity, target) go_out() ..() diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index b21f8e75145..7e787e9e0b4 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -204,7 +204,7 @@ update_flag healthcheck() ..() -/obj/machinery/portable_atmospherics/canister/ex_act(severity, specialty) +/obj/machinery/portable_atmospherics/canister/ex_act(severity, target) switch(severity) if(1.0) if(destroyed || prob(30)) diff --git a/code/game/machinery/bots/bots.dm b/code/game/machinery/bots/bots.dm index 6bd8d4f84a4..dd69b258e8b 100644 --- a/code/game/machinery/bots/bots.dm +++ b/code/game/machinery/bots/bots.dm @@ -293,7 +293,7 @@ healthcheck() return -/obj/machinery/bot/ex_act(severity, specialty) +/obj/machinery/bot/ex_act(severity, target) switch(severity) if(1.0) explode() diff --git a/code/game/machinery/bots/ed209bot.dm b/code/game/machinery/bots/ed209bot.dm index b9a2e1b766b..b5de2fb95a7 100644 --- a/code/game/machinery/bots/ed209bot.dm +++ b/code/game/machinery/bots/ed209bot.dm @@ -267,8 +267,8 @@ Auto Patrol[]"}, if(declare_arrests) var/area/location = get_area(src) speak("[arrest_type ? "Detaining" : "Arresting"] level [threatlevel] scumbag [target] in [location].", radio_frequency) - target.visible_message("[target] has been stunned by [src]!",\ - "[target] has been stunned by [src]!") + target.visible_message("[src] has stunned [target]!",\ + "[src] has stunned [target]!") mode = BOT_PREP_ARREST anchored = 1 diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index 98f9c7525c6..baedf1cd06a 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -77,6 +77,9 @@ var/global/mulebot_count = 0 suffix = "#[mulebot_count]" name = "\improper Mulebot ([suffix])" +obj/machinery/bot/mulebot/bot_reset() + ..() + reached_target = 0 // attack by item @@ -515,10 +518,9 @@ var/global/mulebot_count = 0 if(num_steps) process_bot() num_steps-- - spawn(0) - for(var/i=num_steps,i>0,i--) - sleep(2) - process_bot() + for(var/i=num_steps,i>0,i--) + sleep(2) + process_bot() if(refresh) updateDialog() @@ -531,8 +533,8 @@ var/global/mulebot_count = 0 return if(BOT_LOADING) // loading/unloading return - if(BOT_DELIVER,BOT_GO_HOME,BOT_BLOCKED) // navigating to deliver,home, or blocked + if(BOT_DELIVER,BOT_GO_HOME,BOT_BLOCKED) // navigating to deliver,home, or blocked if(loc == target) // reached target at_target() return @@ -842,7 +844,8 @@ var/global/mulebot_count = 0 else loaddir = 0 icon_state = "mulebot[(wires.MobAvoid() != null)]" - calc_path() + if(destination) // No need to calculate a path if you do not have a destination set! + calc_path() updateDialog() //Detects and stores current active delivery beacons. diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm index dc04bb2fdb9..51f7faec68e 100644 --- a/code/game/machinery/bots/secbot.dm +++ b/code/game/machinery/bots/secbot.dm @@ -230,8 +230,8 @@ Auto Patrol: []"}, if(declare_arrests) var/area/location = get_area(src) speak("[arrest_type ? "Detaining" : "Arresting"] level [threatlevel] scumbag [target] in [location].", radio_frequency) - target.visible_message("[target] has been stunned by [src]!",\ - "[target] has been stunned by [src]!") + target.visible_message("[src] has stunned [target]!",\ + "[src] has stunned [target]!") mode = BOT_PREP_ARREST anchored = 1 diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 28c7bf2c642..22d472812f9 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -93,7 +93,7 @@ ..() -/obj/machinery/camera/ex_act(severity, specialty) +/obj/machinery/camera/ex_act(severity, target) if(src.invuln) return else @@ -221,7 +221,7 @@ spark_system.start() playsound(loc, 'sound/weapons/blade1.ogg', 50, 1) playsound(loc, "sparks", 50, 1) - visible_message("The camera has been sliced apart by [] with an energy blade!") + visible_message("[user] has sliced the camera apart with an energy blade!") qdel(src) else if(istype(W, /obj/item/device/laser_pointer)) var/obj/item/device/laser_pointer/L = W diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 3bfa6a11256..49be85f3763 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -347,7 +347,7 @@ if(prob(100/(severity*efficiency))) malfunction() ..() -/obj/machinery/clonepod/ex_act(severity, specialty) +/obj/machinery/clonepod/ex_act(severity, target) ..() if(!gc_destroyed) go_out() diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index f851aaa7981..85c2f651c45 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -146,7 +146,7 @@ ..() -/obj/machinery/computer/HolodeckControl/ex_act(severity, specialty) +/obj/machinery/computer/HolodeckControl/ex_act(severity, target) emergencyShutdown() ..() diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index 3529f9ce314..bdd1c99ea3e 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -31,7 +31,10 @@ ..() -/obj/machinery/computer/ex_act(severity, specialty) +/obj/machinery/computer/ex_act(severity, target) + if(target == src) + qdel(src) + return switch(severity) if(1.0) qdel(src) diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 3989ee35d2c..ea4de4872e4 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -91,7 +91,7 @@ for reference: qdel(src) ..() -/obj/structure/barricade/wooden/ex_act(severity, specialty) +/obj/structure/barricade/wooden/ex_act(severity, target) switch(severity) if(1.0) visible_message("The barricade is blown apart!") @@ -210,7 +210,7 @@ for reference: src.explode() ..() -/obj/machinery/deployable/barrier/ex_act(severity, specialty) +/obj/machinery/deployable/barrier/ex_act(severity, target) switch(severity) if(1.0) src.explode() diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index cea529f563e..916b49e5956 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -898,7 +898,7 @@ About the new airlock wires panel: if( !istype(src, /obj/machinery/door/airlock) || !user || !W || !W.isOn() || !user.loc ) return playsound(loc, 'sound/items/Welder2.ogg', 50, 1) welded = !welded - user.visible_message("[src] has been [welded? "welded shut":"unwelded"] by [user.name].", \ + user.visible_message("[user.name] has [welded? "welded shut":"unwelded"] [src].", \ "You've [welded ? "welded the airlock shut":"unwelded the airlock"].") update_icon() return diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index d994c0aba9e..9c785f30260 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -169,7 +169,7 @@ ..() -/obj/machinery/door/ex_act(severity, specialty) +/obj/machinery/door/ex_act(severity, target) if(severity == 3) if(prob(80)) var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 05caa8ff585..6e57407c657 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -162,7 +162,7 @@ qdel(src) return -/obj/machinery/door/window/ex_act(severity, specialty) +/obj/machinery/door/window/ex_act(severity, target) switch(severity) if(1.0) qdel(src) @@ -201,7 +201,7 @@ if(M.damtype == "brute") playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) M.occupant_message("You hit [src].") - visible_message("[src] has been hit by [M.name].") + visible_message("[M.name] has hit [src].") take_damage(M.force) return @@ -350,7 +350,7 @@ return var/aforce = I.force playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) - visible_message("\The [src] has been hit by [user] with [I].") + visible_message("[user] has hit \the [src] with [I].") if(I.damtype == BURN || I.damtype == BRUTE) take_damage(aforce) return diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index bb2cab0a197..3599732cc6b 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -162,7 +162,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ stat |= ~NOPOWER //Destruction procs. -/obj/machinery/hologram/ex_act(severity, specialty) +/obj/machinery/hologram/ex_act(severity, target) switch(severity) if(1.0) qdel(src) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index f933cb9366e..f63ea425196 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -220,7 +220,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co src.update_icon() -/obj/machinery/newscaster/ex_act(severity, specialty) +/obj/machinery/newscaster/ex_act(severity, target) switch(severity) if(1.0) qdel(src) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 42c627dbd0d..53ac5016921 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -370,7 +370,7 @@ ..() -/obj/machinery/porta_turret/ex_act(severity, specialty) +/obj/machinery/porta_turret/ex_act(severity, target) if(severity >= 3) //turret dies if an explosion touches it! qdel(src) else diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index aabb4e0dc20..62c7846c807 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -66,7 +66,7 @@ open_machine() ..(severity) -/obj/machinery/recharge_station/ex_act(severity, specialty) +/obj/machinery/recharge_station/ex_act(severity, target) if(occupier) open_machine() ..() diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index 87c62079b33..eeaf3f54eef 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -64,7 +64,7 @@ opacity = 1 spawn(20) if(src) opacity = 0 -/obj/machinery/shield/ex_act(severity, specialty) +/obj/machinery/shield/ex_act(severity, target) switch(severity) if(1.0) if (prob(75)) @@ -181,7 +181,7 @@ update_icon() return -/obj/machinery/shieldgen/ex_act(severity, specialty) +/obj/machinery/shieldgen/ex_act(severity, target) switch(severity) if(1.0) src.health -= 75 @@ -567,7 +567,7 @@ return -/obj/machinery/shieldwall/ex_act(severity, specialty) +/obj/machinery/shieldwall/ex_act(severity, target) if(needs_power) var/obj/machinery/shieldwallgen/G switch(severity) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 47782404352..230235b347b 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -124,7 +124,7 @@ dump_everything() update_icon() -/obj/machinery/suit_storage_unit/ex_act(severity, specialty) +/obj/machinery/suit_storage_unit/ex_act(severity, target) switch(severity) if(1.0) if(prob(50)) diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 7459017d183..9b04e98a683 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -180,7 +180,7 @@ origin_tech = "syndicate=6;combat=5" var/adminlog = null -/obj/item/weapon/bombcore/ex_act(severity, specialty) //Little boom can chain a big boom +/obj/item/weapon/bombcore/ex_act(severity, target) //Little boom can chain a big boom src.detonate() /obj/item/weapon/bombcore/proc/detonate() diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index 3cb48b9984e..4552cf988d9 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -291,7 +291,7 @@ power_change() ..() -/obj/machinery/turret/ex_act(severity, specialty) +/obj/machinery/turret/ex_act(severity, target) if(severity < 3) src.die() @@ -361,7 +361,7 @@ ..() take_damage(0) //check your health -/obj/machinery/gun_turret/ex_act(severity, specialty) +/obj/machinery/gun_turret/ex_act(severity, target) switch(severity) if(1) die() diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 71536af209e..101b96903b3 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -77,7 +77,7 @@ for(var/obj/item/weapon/vending_refill/VR in component_parts) refill_inventory(VR, product_records) -/obj/machinery/vending/ex_act(severity, specialty) +/obj/machinery/vending/ex_act(severity, target) ..() if(!gc_destroyed) if(prob(25)) @@ -765,7 +765,7 @@ vend_reply = "Thank you for using AutoDrobe!" products = list(/obj/item/clothing/suit/chickensuit = 1,/obj/item/clothing/head/chicken = 1,/obj/item/clothing/under/gladiator = 1, /obj/item/clothing/head/helmet/gladiator = 1,/obj/item/clothing/under/gimmick/rank/captain/suit = 1,/obj/item/clothing/head/flatcap = 1, - /obj/item/clothing/suit/labcoat/mad = 1,/obj/item/clothing/glasses/gglasses = 1,/obj/item/clothing/shoes/jackboots = 1, + /obj/item/clothing/suit/toggle/labcoat/mad = 1,/obj/item/clothing/glasses/gglasses = 1,/obj/item/clothing/shoes/jackboots = 1, /obj/item/clothing/under/schoolgirl = 1,/obj/item/clothing/head/kitty = 1,/obj/item/clothing/under/blackskirt = 1,/obj/item/clothing/head/beret = 1, /obj/item/clothing/tie/waistcoat = 1,/obj/item/clothing/under/suit_jacket = 1,/obj/item/clothing/head/that =1,/obj/item/clothing/under/kilt = 1,/obj/item/clothing/head/beret = 1,/obj/item/clothing/tie/waistcoat = 1, /obj/item/clothing/glasses/monocle =1,/obj/item/clothing/head/bowler = 1,/obj/item/weapon/cane = 1,/obj/item/clothing/under/sl_suit = 1, @@ -851,7 +851,7 @@ icon_state = "robotics" icon_deny = "robotics-deny" req_access_txt = "29" - products = list(/obj/item/clothing/suit/labcoat = 4,/obj/item/clothing/under/rank/roboticist = 4,/obj/item/stack/cable_coil = 4,/obj/item/device/flash/handheld = 4, + products = list(/obj/item/clothing/suit/toggle/labcoat = 4,/obj/item/clothing/under/rank/roboticist = 4,/obj/item/stack/cable_coil = 4,/obj/item/device/flash/handheld = 4, /obj/item/weapon/stock_parts/cell/high = 12, /obj/item/device/assembly/prox_sensor = 3,/obj/item/device/assembly/signaler = 3,/obj/item/device/healthanalyzer = 3, /obj/item/weapon/scalpel = 2,/obj/item/weapon/circular_saw = 2,/obj/item/weapon/tank/anesthetic = 2,/obj/item/clothing/mask/breath/medical = 5, /obj/item/weapon/screwdriver = 5,/obj/item/weapon/crowbar = 5) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 02fe27be028..6bd0982060b 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -321,7 +321,7 @@ obj/mecha/proc/can_use(mob/user) else return M.occupant_message("You hit [src].") - visible_message("[src] has been hit by [M.name].") + visible_message("[M.name] has hit [src].") take_damage(M.force, damtype) add_logs(M.occupant, src, "attacked", object=M, addition="(INTENT: [uppertext(M.occupant.a_intent)]) (DAMTYPE: [uppertext(M.damtype)])") return @@ -607,7 +607,7 @@ obj/mecha/proc/can_use(mob/user) Proj.on_hit(src) return -/obj/mecha/ex_act(severity, specialty) +/obj/mecha/ex_act(severity, target) src.log_message("Affected by explosion of severity: [severity].",1) if(prob(src.deflect_chance)) severity++ diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm index 0b0979c96d3..55f7dd17261 100644 --- a/code/game/objects/effects/aliens.dm +++ b/code/game/objects/effects/aliens.dm @@ -79,7 +79,7 @@ healthcheck() -/obj/structure/alien/resin/ex_act(severity, specialty) +/obj/structure/alien/resin/ex_act(severity, target) switch(severity) if(1.0) health -= 150 @@ -211,16 +211,16 @@ new /obj/structure/alien/weeds(T, linked_node) -/obj/structure/alien/weeds/ex_act(severity, specialty) +/obj/structure/alien/weeds/ex_act(severity, target) qdel(src) /obj/structure/alien/weeds/attackby(obj/item/I, mob/user) user.changeNext_move(CLICK_CD_MELEE) if(I.attack_verb.len) - visible_message("[src] has been [pick(I.attack_verb)] with [I] by [user].") + visible_message("[user] has [pick(I.attack_verb)] [src] with [I]!") else - visible_message("[src] has been attacked with [I] by [user]!") + visible_message("[user] has attacked [src] with [I]!") var/damage = I.force / 4.0 if(istype(I, /obj/item/weapon/weldingtool)) @@ -373,9 +373,9 @@ /obj/structure/alien/egg/attackby(obj/item/I, mob/user) if(I.attack_verb.len) - visible_message("[src] has been [pick(I.attack_verb)] with [I] by [user].") + visible_message("[user] has [pick(I.attack_verb)] [src] with [I]!") else - visible_message("[src] has been attacked with [I] by [user]!") + visible_message("[user] has attacked [src] with [I]!") var/damage = I.force / 4 if(istype(I, /obj/item/weapon/weldingtool)) diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index 521d5d0387b..f3817b101fc 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -58,7 +58,7 @@ icon_state = "gibbl5" random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") -/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, specialty) +/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target) return /obj/effect/decal/cleanable/blood/gibs/remove_ex_blood() diff --git a/code/game/objects/effects/decals/contraband.dm b/code/game/objects/effects/decals/contraband.dm index 742bbb1df1d..78f994770d8 100644 --- a/code/game/objects/effects/decals/contraband.dm +++ b/code/game/objects/effects/decals/contraband.dm @@ -314,7 +314,7 @@ obj/structure/sign/poster/attackby(obj/item/I, mob/user) var/temp_loc = user.loc switch(alert("Do I want to rip the poster from the wall?","You think...","Yes","No")) if("Yes") - if(user.loc != temp_loc) + if( user.loc != temp_loc || ruined ) return visible_message("[user] rips [src] in a single, decisive motion!" ) playsound(src.loc, 'sound/items/poster_ripped.ogg', 100, 1) diff --git a/code/game/objects/effects/decals/decal.dm b/code/game/objects/effects/decals/decal.dm index 73cfb8fa566..b9ffd568347 100644 --- a/code/game/objects/effects/decals/decal.dm +++ b/code/game/objects/effects/decals/decal.dm @@ -2,5 +2,5 @@ name = "decal" icon = 'icons/effects/effects.dmi' -/obj/effect/decal/ex_act(severity, specialty) +/obj/effect/decal/ex_act(severity, target) qdel(src) \ No newline at end of file diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index c31a54f6662..3dd5fdf823c 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -944,7 +944,7 @@ steam.start() -- spawns the effect icon_state = "ironfoam" -/obj/structure/foamedmetal/ex_act(severity, specialty) +/obj/structure/foamedmetal/ex_act(severity, target) qdel(src) /obj/structure/foamedmetal/blob_act() diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm index 36fb5897365..f2ff3511e2c 100644 --- a/code/game/objects/effects/glowshroom.dm +++ b/code/game/objects/effects/glowshroom.dm @@ -117,7 +117,7 @@ endurance -= W.force CheckEndurance() -/obj/effect/glowshroom/ex_act(severity, specialty) +/obj/effect/glowshroom/ex_act(severity, target) switch(severity) if(1.0) qdel(src) diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index ff65e9a4ecd..2af201bdcca 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -111,7 +111,7 @@ /obj/effect/landmark/costume/madscientist/New() new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc) new /obj/item/clothing/head/flatcap(src.loc) - new /obj/item/clothing/suit/labcoat/mad(src.loc) + new /obj/item/clothing/suit/toggle/labcoat/mad(src.loc) new /obj/item/clothing/glasses/gglasses(src.loc) qdel(src) diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index 14f54676cab..d7102b10cf4 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -8,7 +8,7 @@ var/health = 15 //similar to weeds, but only barfed out by nurses manually -/obj/effect/spider/ex_act(severity, specialty) +/obj/effect/spider/ex_act(severity, target) switch(severity) if(1.0) qdel(src) @@ -22,9 +22,9 @@ /obj/effect/spider/attackby(var/obj/item/weapon/W, var/mob/user) if(W.attack_verb.len) - visible_message("\The [src] has been [pick(W.attack_verb)] with \the [W][(user ? " by [user]" : "")]!") + visible_message("[user] has [pick(W.attack_verb)] \the [src] with \the [W]!") else - visible_message("\The [src] has been attacked with \the [W][(user ? " by [user]" : "")]!") + visible_message("[user] has attacked \the [src] with \the [W]!") var/damage = W.force / 4.0 diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index 7ce8a2bdb6a..571002155a4 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -6,11 +6,6 @@ if(dx>=dy) return dx + (0.5*dy) //The longest side add half the shortest side approximates the hypotenuse else return dy + (0.5*dx) -/proc/contents_explosion(var/atom/A, severity, specialty) - for(var/atom/B in A.contents) - B.ex_act(severity, specialty) - - proc/trange(var/Dist=0,var/turf/Center=null)//alternative to range (ONLY processes turfs and thus less intensive) if(Center==null) return @@ -111,7 +106,7 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa //------- TURF FIRES ------- if(T) - if(flame_dist && prob(40) && !istype(T, /turf/space)) + if(flame_dist && prob(40) && !istype(T, /turf/space) && !T.density) new/obj/effect/hotspot(T) //Mostly for ambience! if(dist > 0) T.ex_act(dist) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 6329d782411..df3c30675bd 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -42,6 +42,9 @@ var/list/attack_verb = list() //Used in attackby() to say how something was attacked "[x] has been [z.attack_verb] by [y] with [z]" var/list/species_exception = list() // even if a species cannot put items in a certain slot, if the species id is in the item's exception list, it will be able to wear that item + var/suittoggled = 0 + var/hooded = 0 + /obj/item/device icon = 'icons/obj/device.dmi' @@ -54,6 +57,12 @@ /obj/item/blob_act() qdel(src) +/obj/item/ex_act(severity, target) + if(severity == 1 || target == src) + qdel(src) + if(!gc_destroyed) + contents_explosion(severity, target) + //user: The mob that is suiciding //damagetype: The type of damage the item will inflict on the user //BRUTELOSS = 1 @@ -313,7 +322,7 @@ M.adjustBruteLoss(10) */ if(M != user) - M.visible_message("[M] has been stabbed in the eye with [src] by [user]!", \ + M.visible_message("[user] has stabbed [M] in the eye with [src]!", \ "[user] stabs you in the eye with [src]!") else user.visible_message( \ diff --git a/code/game/objects/items/latexballoon.dm b/code/game/objects/items/latexballoon.dm index 7623d007026..3b10f1fb0bb 100644 --- a/code/game/objects/items/latexballoon.dm +++ b/code/game/objects/items/latexballoon.dm @@ -33,7 +33,7 @@ user.update_inv_l_hand() loc.assume_air(air_contents) -/obj/item/latexballon/ex_act(severity, specialty) +/obj/item/latexballon/ex_act(severity, target) burst() switch(severity) if (1) diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 17e2190d6f6..74ee638df91 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -32,7 +32,7 @@ if (user) if (M != user) user.visible_message( \ - "[M] has been applied with [src] by [user].", \ + "[user] has applied [src] on [M].", \ "You apply \the [src] to [M]." \ ) else diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm index a94d9527cd2..d1d30653cac 100644 --- a/code/game/objects/items/weapons/AI_modules.dm +++ b/code/game/objects/items/weapons/AI_modules.dm @@ -28,12 +28,13 @@ AI MODULES user << "ERROR: No laws found on board." return + //Handle the lawcap if(reciever.laws) var/tot_laws = 0 - tot_laws += reciever.laws.inherent.len - tot_laws += reciever.laws.supplied.len - tot_laws += reciever.laws.ion.len - tot_laws += laws.len + for(var/lawlist in list(reciever.laws.inherent,reciever.laws.supplied,reciever.laws.ion,laws)) + for(var/mylaw in lawlist) + if(mylaw != "") + tot_laws++ if(tot_laws > config.silicon_max_law_amount && !bypass_law_amt_check)//allows certain boards to avoid this check, eg: reset user << "Not enough memory allocated to [reciever]'s law processor to handle this amount of laws." message_admins("[key_name_admin(user)] tried to upload laws to [key_name_admin(reciever)] that would exceed the law cap.") diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index bfab4fd6c63..d21ad9f84ec 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -272,7 +272,8 @@ else if(user.a_intent == "harm" && !defib.safety) busy = 1 - H.visible_message("[M.name] has been touched with [src] by [user]!") + H.visible_message("[user] has touched [H.name] with [src]!", \ + "[user] has touched [H.name] with [src]!") H.adjustStaminaLoss(50) H.Weaken(5) H.updatehealth() //forces health update before next life tick diff --git a/code/game/objects/items/weapons/dice.dm b/code/game/objects/items/weapons/dice.dm index ae100f0aa9b..cde71edd6fe 100644 --- a/code/game/objects/items/weapons/dice.dm +++ b/code/game/objects/items/weapons/dice.dm @@ -5,9 +5,11 @@ icon_state = "d6" w_class = 1 var/sides = 6 + var/result = null /obj/item/weapon/dice/New() - icon_state = "[initial(icon_state)][rand(1, sides)]" + result = rand(1, sides) + update_icon() /obj/item/weapon/dice/d2 name = "d2" @@ -60,13 +62,13 @@ diceroll(user) /obj/item/weapon/dice/proc/diceroll(mob/user as mob) - var/result = rand(1, sides) + result = rand(1, sides) var/comment = "" if(sides == 20 && result == 20) comment = "Nat 20!" else if(sides == 20 && result == 1) comment = "Ouch, bad luck." - icon_state = "[initial(icon_state)][result]" + update_icon() if(initial(icon_state) == "d00") result = (result - 1)*10 if(user != null) //Dice was rolled in someone's hand @@ -80,4 +82,8 @@ if(istype(H) && !H.shoes) H << "You step on the D4!" H.apply_damage(4,BRUTE,(pick("l_leg", "r_leg"))) - H.Weaken(3) \ No newline at end of file + H.Weaken(3) + +/obj/item/weapon/dice/update_icon() + overlays.Cut() + overlays += "[src.icon_state][src.result]" \ No newline at end of file diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index 58379753d20..2ff4fc4e0e4 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -87,7 +87,7 @@ /obj/item/weapon/c4/proc/explode(var/turf/location) - location.ex_act(2, isturf(target) ? 1 : 2) + location.ex_act(2, target) explosion(location,0,0,3) if(target) target.overlays -= image_overlay diff --git a/code/game/objects/items/weapons/implants/implantchair.dm b/code/game/objects/items/weapons/implants/implantchair.dm index ced385ba06e..5cca21dc9fe 100644 --- a/code/game/objects/items/weapons/implants/implantchair.dm +++ b/code/game/objects/items/weapons/implants/implantchair.dm @@ -130,7 +130,7 @@ for(var/obj/item/weapon/implant/loyalty/imp in implant_list) if(!imp) continue if(istype(imp, /obj/item/weapon/implant/loyalty)) - M.visible_message("[M] has been implanted by the [src.name].") + M.visible_message("[M] has been implanted by the [src.name].") if(imp.implanted(M)) imp.loc = M diff --git a/code/game/objects/items/weapons/implants/implanter.dm b/code/game/objects/items/weapons/implants/implanter.dm index 2311672e056..e8ebdd6d7dc 100644 --- a/code/game/objects/items/weapons/implants/implanter.dm +++ b/code/game/objects/items/weapons/implants/implanter.dm @@ -25,7 +25,7 @@ var/turf/T = get_turf(M) if(T && (M == user || do_after(user, 50))) if(user && M && (get_turf(M) == T) && src && imp) - M.visible_message("[M] has been implanted by [user].") + M.visible_message("[user] has implanted [M].") add_logs(user, M, "implanted", object="[name]") user << "You implanted the implant into [M]." if(imp.implanted(M)) diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm index 66f46b0c758..0fbfa179960 100644 --- a/code/game/objects/items/weapons/melee/misc.dm +++ b/code/game/objects/items/weapons/melee/misc.dm @@ -53,14 +53,14 @@ M.stuttering = 7 M.Stun(7) M.Weaken(7) - M.visible_message("[M] has been beaten with [src] by [user]!", \ - "[M] has been beaten with [src] by [user]!") + M.visible_message("[user] has beaten [M] with [src]!", \ + "[user] has beaten [M] with [src]!") else playsound(loc, 'sound/effects/woodhit.ogg', 50, 1, -1) M.Stun(7) M.Weaken(7) - M.visible_message("[M] has been stunned with [src] by [user]!", \ - "[M] has been stunned with [src] by [user]!") + M.visible_message("[user] has stunned [M] with [src]!", \ + "[user] has stunned [M] with [src]!") if(ishuman(M)) var/mob/living/carbon/human/H = M @@ -127,7 +127,8 @@ target.Weaken(3) add_logs(user, target, "stunned", object="telescopic baton") src.add_fingerprint(user) - target.visible_message("[target] has been knocked down with \the [src] by [user]!") + target.visible_message("[user] has knocked down [target] with \the [src]!", \ + "[user] has knocked down [target] with \the [src]!") if(!iscarbon(user)) target.LAssailant = null else diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm index 30e44e3425b..10e38838953 100644 --- a/code/game/objects/items/weapons/storage/lockbox.dm +++ b/code/game/objects/items/weapons/storage/lockbox.dm @@ -46,12 +46,11 @@ spark_system.start() playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1) playsound(src.loc, "sparks", 50, 1) - for(var/mob/O in viewers(user, 3)) - O.show_message(text("\The [src] has been sliced open by [] with an energy blade!", user), 1, text("You hear metal being sliced and sparks flying."), 2) + visible_message("[user] has sliced open \the [src] with an energy blade!", "You hear metal being sliced and sparks flying.") return else for(var/mob/O in viewers(user, 3)) - O.show_message(text("\The [src] has been broken by [] with an electromagnetic card!", user), 1, text("You hear a faint electrical spark."), 2) + O.show_message("[user] has broken \the [src] with an electromagnetic card!", 1, "You hear a faint electrical spark.", 2) return if(!locked) ..() diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 43303d136bc..7ce4e7b6e37 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -81,8 +81,7 @@ new /obj/item/weapon/melee/energy/sword/saber(src) new /obj/item/weapon/melee/energy/sword/saber(src) new /obj/item/weapon/dnainjector/telemut/darkbundle(src) - new /obj/item/clothing/head/chaplain_hood(src) - new /obj/item/clothing/suit/chaplain_hoodie(src) + new /obj/item/clothing/suit/toggle/chaplain_hoodie(src) new /obj/item/weapon/card/id/syndicate(src) return diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index c51cbf3c21c..c21bb64f252 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -121,8 +121,8 @@ user.do_attack_animation(L) baton_stun(L, user) else - L.visible_message("[L] has been prodded with [src] by [user]. Luckily it was off.", \ - "You've been prodded with [src] by [user]. Luckily it was off") + L.visible_message("[user] has prodded [L] with [src]. Luckily it was off.", \ + "[user] has prodded you with [src]. Luckily it was off") return else ..() @@ -138,8 +138,8 @@ L.Weaken(stunforce) L.apply_effect(STUTTER, stunforce) - L.visible_message("[L] has been stunned with [src] by [user]!", \ - "You've been stunned with [src] by [user]!") + L.visible_message("[user] has stunned [L] with [src]!", \ + "[user] has stunned you with [src]!") playsound(loc, 'sound/weapons/Egloves.ogg', 50, 1, -1) if(isrobot(loc)) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 23c4a390bbd..d11c0081de1 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -123,17 +123,12 @@ /obj/proc/hide(h) return -/obj/ex_act(severity, specialty) - var/survivability = specialty * 15 - switch(severity) - if(1) +/obj/ex_act(severity, target) + if(severity == 1 || target == src) + qdel(src) + else if(severity == 2) + if(prob(50)) qdel(src) - if(2) - if(prob(50 + survivability)) - qdel(src) - if(3) - if(prob(25 + survivability)) - qdel(src) if(!gc_destroyed) ..() diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 9d6b1269e9f..eadb7c6d32d 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -13,6 +13,6 @@ /obj/structure/mech_melee_attack(obj/mecha/M) if(M.damtype == "brute") M.occupant_message("You hit [src].") - visible_message("[src] has been hit by [M.name].") + visible_message("[M.name] has hit [src].") return 1 return 0 diff --git a/code/game/objects/structures/OpTable.dm b/code/game/objects/structures/OpTable.dm index e186ed03c5c..1efdde80ab6 100644 --- a/code/game/objects/structures/OpTable.dm +++ b/code/game/objects/structures/OpTable.dm @@ -37,7 +37,7 @@ var/mob/M = G.affecting M.resting = 1 M.loc = loc - visible_message("[M] has been laid on [src] by [user].") + visible_message("[user] has laid [M] on [src].") patient = M check_patient() qdel(W) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index e498f4fab23..b84816abf0a 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -127,7 +127,8 @@ return src.open() // this should probably use dump_contents() -/obj/structure/closet/ex_act(severity, specialty) +/obj/structure/closet/ex_act(severity, target) + contents_explosion(severity, target) open() ..() @@ -176,7 +177,7 @@ return playsound(loc, 'sound/items/Welder2.ogg', 50, 1) new /obj/item/stack/sheet/metal(src.loc) - visible_message("\The [src] has been cut apart by [user] with \the [WT].", "You hear welding.") + visible_message("[user] has cut \the [src] apart with \the [WT].", "You hear welding.") qdel(src) return @@ -198,9 +199,9 @@ return playsound(loc, 'sound/items/welder.ogg', 50, 1) welded = !welded - user << "You [welded ? "welded the [src] shut":"unwelded the [src]"]" + user << "You [welded ? "welded [src] shut":"unwelded [src]"]." update_icon() - user.visible_message("[src] has been [welded? "welded shut":"unwelded"] by [user.name].") + user.visible_message("[user.name] has [welded ? "welded [src] shut":"unwelded [src]"].") return else if(!place(user, W)) src.attack_hand(user) diff --git a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm index 787e5233572..4dc425417ea 100644 --- a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm +++ b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm @@ -101,7 +101,7 @@ spawn(10) update_icon() -/obj/structure/closet/fireaxecabinet/ex_act(severity, specialty) +/obj/structure/closet/fireaxecabinet/ex_act(severity, target) switch(severity) if(1.0) qdel(src) diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index d0110306a8c..d3ffa71fe14 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -95,10 +95,10 @@ new /obj/item/clothing/under/lawyer/black(src) new /obj/item/clothing/under/lawyer/red(src) new /obj/item/clothing/under/lawyer/bluesuit(src) - new /obj/item/clothing/suit/lawyer/bluejacket(src) + new /obj/item/clothing/suit/toggle/lawyer(src) new /obj/item/clothing/under/lawyer/purpsuit(src) - new /obj/item/clothing/suit/lawyer/purpjacket(src) + new /obj/item/clothing/suit/toggle/lawyer/purple(src) new /obj/item/clothing/under/lawyer/blacksuit(src) - new /obj/item/clothing/suit/lawyer/blackjacket(src) + new /obj/item/clothing/suit/toggle/lawyer/black(src) new /obj/item/clothing/shoes/laceup(src) new /obj/item/clothing/shoes/laceup(src) \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm index 92c70696bbb..26cff767227 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm @@ -16,6 +16,7 @@ new /obj/item/clothing/gloves/fingerless(src) new /obj/item/clothing/head/soft(src) // new /obj/item/weapon/cartridge/quartermaster(src) + new /obj/item/clothing/suit/toggle/wintercoat/cargo(src) return /obj/structure/closet/secure_closet/quartermaster @@ -40,4 +41,5 @@ new /obj/item/clothing/mask/gas(src) new /obj/item/clothing/glasses/meson(src) new /obj/item/clothing/head/soft(src) + new /obj/item/clothing/suit/toggle/wintercoat/cargo(src) return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index 4bf72b3a233..439fb0a86ff 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -30,6 +30,7 @@ new /obj/item/clothing/mask/gas(src) new /obj/item/device/multitool(src) new /obj/item/device/flash/handheld(src) + new /obj/item/clothing/suit/toggle/wintercoat/engineering(src) return /obj/structure/closet/secure_closet/engineering_electrical @@ -108,6 +109,7 @@ new /obj/item/clothing/suit/hazardvest(src) new /obj/item/clothing/mask/gas(src) new /obj/item/clothing/glasses/meson(src) + new /obj/item/clothing/suit/toggle/wintercoat/engineering(src) return /obj/structure/closet/secure_closet/atmospherics @@ -131,4 +133,5 @@ new /obj/item/weapon/watertank/atmos(src) new /obj/item/clothing/suit/fire/atmos(src) new /obj/item/clothing/head/hardhat/atmos(src) + new /obj/item/clothing/suit/toggle/wintercoat/engineering/atmos(src) return \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm index 003e1215ed0..1bab5824b52 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm @@ -23,4 +23,5 @@ new /obj/item/clothing/head/greenbandana(src) new /obj/item/weapon/minihoe(src) new /obj/item/weapon/hatchet(src) + new /obj/item/clothing/suit/toggle/wintercoat/hydro(src) return \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index 3e66282ca21..0d8cab77ecc 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -66,13 +66,14 @@ else new /obj/item/weapon/storage/backpack/satchel_med(src) new /obj/item/clothing/under/rank/medical(src) - new /obj/item/clothing/suit/labcoat(src) + new /obj/item/clothing/suit/toggle/labcoat(src) new /obj/item/clothing/shoes/sneakers/white(src) new /obj/item/device/radio/headset/headset_med(src) new /obj/item/clothing/gloves/latex(src) new /obj/item/weapon/defibrillator/loaded(src) new /obj/item/weapon/storage/belt/medical(src) new /obj/item/clothing/glasses/hud/health(src) + new /obj/item/clothing/suit/toggle/wintercoat/medical(src) return @@ -95,7 +96,7 @@ new /obj/item/weapon/storage/backpack/satchel_med(src) new /obj/item/clothing/suit/bio_suit/cmo(src) new /obj/item/clothing/head/bio_hood/cmo(src) - new /obj/item/clothing/suit/labcoat/cmo(src) + new /obj/item/clothing/suit/toggle/labcoat/cmo(src) new /obj/item/clothing/under/rank/chief_medical_officer(src) new /obj/item/clothing/shoes/sneakers/brown (src) new /obj/item/weapon/cartridge/cmo(src) @@ -104,6 +105,7 @@ new /obj/item/weapon/defibrillator/loaded(src) new /obj/item/weapon/storage/belt/medical(src) new /obj/item/device/flash/handheld(src) + new /obj/item/clothing/suit/toggle/wintercoat/medical(src) new /obj/item/weapon/reagent_containers/hypospray/CMO(src) return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm index 1c56b4c27e4..2e8db2032be 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm @@ -51,6 +51,8 @@ contents = list() new /obj/item/weapon/storage/backpack/satchel/withwallet( src ) new /obj/item/device/radio/headset( src ) + new /obj/item/clothing/suit/toggle/wintercoat(src) + new /obj/item/clothing/head/santa(src) return /obj/structure/closet/secure_closet/personal/attackby(obj/item/W as obj, mob/user as mob) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm index 10abcb64efe..4146accd389 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm @@ -11,12 +11,13 @@ /obj/structure/closet/secure_closet/scientist/New() ..() new /obj/item/clothing/under/rank/scientist(src) - new /obj/item/clothing/suit/labcoat/science(src) + new /obj/item/clothing/suit/toggle/labcoat/science(src) new /obj/item/clothing/shoes/sneakers/white(src) // new /obj/item/weapon/cartridge/signal/toxins(src) new /obj/item/device/radio/headset/headset_sci(src) new /obj/item/weapon/tank/air(src) new /obj/item/clothing/mask/gas(src) + new /obj/item/clothing/suit/toggle/wintercoat/science(src) return @@ -35,7 +36,7 @@ ..() new /obj/item/clothing/suit/bio_suit/scientist(src) new /obj/item/clothing/head/bio_hood/scientist(src) - new /obj/item/clothing/suit/labcoat(src) + new /obj/item/clothing/suit/toggle/labcoat(src) new /obj/item/clothing/under/rank/research_director(src) new /obj/item/clothing/under/rank/research_director/alt(src) new /obj/item/clothing/under/rank/research_director/turtleneck(src) @@ -48,4 +49,5 @@ new /obj/item/clothing/suit/armor/reactive(src) new /obj/item/device/flash/handheld(src) new /obj/item/device/laser_pointer(src) + new /obj/item/clothing/suit/toggle/wintercoat/science(src) return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index 5b25d80bc0e..68bcbe41c49 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -46,7 +46,7 @@ add_fingerprint(user) for(var/mob/O in viewers(user, 3)) if((O.client && !( O.blinded ))) - O << "The locker has been [locked ? null : "un"]locked by [user]." + O << "[user] has [locked ? null : "un"]locked the locker." if(src.locked) src.icon_state = src.icon_locked else @@ -77,11 +77,10 @@ spark_system.start() playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1) playsound(src.loc, "sparks", 50, 1) - for(var/mob/O in viewers(user, 3)) - O.show_message("The locker has been sliced open by [user] with an energy blade!", 1, "You hear metal being sliced and sparks flying.", 2) + visible_message("[user] has sliced the locker open with an energy blade!", "You hear metal being sliced and sparks flying.") else for(var/mob/O in viewers(user, 3)) - O.show_message("The locker has been broken by [user] with an electromagnetic card!", 1, "You hear a faint electrical spark.", 2) + O.show_message("[user] has broken the locker with an electromagnetic card!", 1, "You hear a faint electrical spark.", 2) else ..(W, user) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 22a9f1e18a1..7ea96c0dc20 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -23,6 +23,8 @@ new /obj/item/clothing/shoes/sneakers/brown(src) new /obj/item/device/radio/headset/heads/captain/alt(src) new /obj/item/clothing/gloves/captain(src) + new /obj/item/clothing/suit/toggle/wintercoat/captain(src) + new /obj/item/clothing/head/santa(src) new /obj/item/weapon/gun/energy/gun(src) return @@ -50,6 +52,8 @@ new /obj/item/device/flash/handheld(src) new /obj/item/clothing/glasses/sunglasses(src) new /obj/item/weapon/mining_voucher(src) + new /obj/item/clothing/suit/toggle/wintercoat/cargo(src) + new /obj/item/clothing/head/hardhat/reindeer() return @@ -82,6 +86,7 @@ new /obj/item/weapon/melee/baton/loaded(src) new /obj/item/weapon/gun/energy/gun(src) new /obj/item/weapon/storage/belt/security(src) + new /obj/item/clothing/suit/toggle/wintercoat/security(src) return @@ -112,6 +117,7 @@ new /obj/item/weapon/melee/baton/loaded(src) new /obj/item/weapon/gun/energy/taser(src) new /obj/item/weapon/storage/belt/security(src) + new /obj/item/clothing/suit/toggle/wintercoat/security(src) return @@ -138,6 +144,7 @@ new /obj/item/weapon/gun/energy/taser(src) new /obj/item/weapon/storage/belt/security(src) new /obj/item/clothing/glasses/hud/security/sunglasses(src) + new /obj/item/clothing/suit/toggle/wintercoat/security(src) return @@ -206,6 +213,7 @@ new /obj/item/device/radio/headset/headset_sec/alt(src) new /obj/item/device/detective_scanner(src) new /obj/item/clothing/suit/armor/vest/det_suit(src) + new /obj/item/clothing/suit/toggle/wintercoat(src) new /obj/item/ammo_box/c38(src) new /obj/item/ammo_box/c38(src) new /obj/item/weapon/gun/projectile/revolver/detective(src) diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index 9083dea39a1..e5726239a9c 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -21,8 +21,6 @@ /obj/structure/closet/wardrobe/red/New() new /obj/item/weapon/storage/backpack/security(src) - new /obj/item/weapon/storage/backpack/security(src) - new /obj/item/weapon/storage/backpack/satchel_sec(src) new /obj/item/weapon/storage/backpack/satchel_sec(src) new /obj/item/clothing/under/rank/security(src) new /obj/item/clothing/under/rank/security(src) @@ -36,6 +34,9 @@ new /obj/item/clothing/head/beret/sec(src) new /obj/item/clothing/head/beret/sec(src) new /obj/item/clothing/head/beret/sec(src) + new /obj/item/clothing/head/santa(src) + new /obj/item/clothing/head/santa(src) + new /obj/item/clothing/head/santa(src) return /obj/structure/closet/wardrobe/pink @@ -86,8 +87,7 @@ new /obj/item/clothing/shoes/sneakers/black(src) new /obj/item/clothing/suit/nun(src) new /obj/item/clothing/head/nun_hood(src) - new /obj/item/clothing/suit/chaplain_hoodie(src) - new /obj/item/clothing/head/chaplain_hood(src) + new /obj/item/clothing/suit/toggle/chaplain_hoodie(src) new /obj/item/clothing/suit/holidaypriest(src) new /obj/item/weapon/storage/backpack/cultpack (src) new /obj/item/weapon/storage/fancy/candle_box(src) @@ -195,9 +195,9 @@ /obj/structure/closet/wardrobe/white/medical/New() new /obj/item/clothing/under/rank/nursesuit (src) new /obj/item/clothing/head/nursehat (src) - new /obj/item/clothing/suit/labcoat/emt(src) - new /obj/item/clothing/suit/labcoat/emt(src) - new /obj/item/clothing/suit/labcoat/emt(src) + new /obj/item/clothing/suit/toggle/labcoat/emt(src) + new /obj/item/clothing/suit/toggle/labcoat/emt(src) + new /obj/item/clothing/suit/toggle/labcoat/emt(src) new /obj/item/clothing/under/rank/medical/blue(src) new /obj/item/clothing/under/rank/medical/green(src) new /obj/item/clothing/under/rank/medical/purple(src) @@ -232,9 +232,9 @@ new /obj/item/clothing/under/rank/scientist(src) new /obj/item/clothing/under/rank/scientist(src) new /obj/item/clothing/under/rank/scientist(src) - new /obj/item/clothing/suit/labcoat(src) - new /obj/item/clothing/suit/labcoat(src) - new /obj/item/clothing/suit/labcoat(src) + new /obj/item/clothing/suit/toggle/labcoat(src) + new /obj/item/clothing/suit/toggle/labcoat(src) + new /obj/item/clothing/suit/toggle/labcoat(src) new /obj/item/clothing/shoes/sneakers/white(src) new /obj/item/clothing/shoes/sneakers/white(src) new /obj/item/clothing/shoes/sneakers/white(src) @@ -249,14 +249,15 @@ /obj/structure/closet/wardrobe/robotics_black/New() new /obj/item/clothing/under/rank/roboticist(src) new /obj/item/clothing/under/rank/roboticist(src) - new /obj/item/clothing/suit/labcoat(src) - new /obj/item/clothing/suit/labcoat(src) + new /obj/item/clothing/suit/toggle/labcoat(src) + new /obj/item/clothing/suit/toggle/labcoat(src) new /obj/item/clothing/shoes/sneakers/black(src) new /obj/item/clothing/shoes/sneakers/black(src) new /obj/item/clothing/gloves/fingerless(src) new /obj/item/clothing/gloves/fingerless(src) new /obj/item/clothing/head/soft/black(src) new /obj/item/clothing/head/soft/black(src) + new /obj/item/clothing/suit/toggle/wintercoat/science(src) return @@ -270,8 +271,9 @@ new /obj/item/clothing/under/rank/chemist(src) new /obj/item/clothing/shoes/sneakers/white(src) new /obj/item/clothing/shoes/sneakers/white(src) - new /obj/item/clothing/suit/labcoat/chemist(src) - new /obj/item/clothing/suit/labcoat/chemist(src) + new /obj/item/clothing/suit/toggle/labcoat/chemist(src) + new /obj/item/clothing/suit/toggle/labcoat/chemist(src) + new /obj/item/clothing/suit/toggle/wintercoat/medical(src) return @@ -285,8 +287,9 @@ new /obj/item/clothing/under/rank/geneticist(src) new /obj/item/clothing/shoes/sneakers/white(src) new /obj/item/clothing/shoes/sneakers/white(src) - new /obj/item/clothing/suit/labcoat/genetics(src) - new /obj/item/clothing/suit/labcoat/genetics(src) + new /obj/item/clothing/suit/toggle/labcoat/genetics(src) + new /obj/item/clothing/suit/toggle/labcoat/genetics(src) + new /obj/item/clothing/suit/toggle/wintercoat/medical(src) return @@ -300,10 +303,11 @@ new /obj/item/clothing/under/rank/virologist(src) new /obj/item/clothing/shoes/sneakers/white(src) new /obj/item/clothing/shoes/sneakers/white(src) - new /obj/item/clothing/suit/labcoat/virologist(src) - new /obj/item/clothing/suit/labcoat/virologist(src) + new /obj/item/clothing/suit/toggle/labcoat/virologist(src) + new /obj/item/clothing/suit/toggle/labcoat/virologist(src) new /obj/item/clothing/mask/surgical(src) new /obj/item/clothing/mask/surgical(src) + new /obj/item/clothing/suit/toggle/wintercoat/medical(src) return @@ -326,6 +330,10 @@ new /obj/item/clothing/under/assistantformal(src) if(prob(40)) new /obj/item/clothing/under/assistantformal(src) + if(prob(50)) + new /obj/item/clothing/suit/toggle/wintercoat(src) + new /obj/item/clothing/shoes/winterboots(src) + new /obj/item/clothing/head/santa(src) return @@ -335,9 +343,9 @@ icon_closed = "mixed" /obj/structure/closet/wardrobe/mixed/New() - if(prob(25)) + if(prob(40)) new /obj/item/clothing/suit/jacket(src) - if(prob(25)) + if(prob(40)) new /obj/item/clothing/suit/jacket(src) new /obj/item/clothing/under/color/white(src) new /obj/item/clothing/under/color/blue(src) @@ -348,4 +356,8 @@ new /obj/item/clothing/shoes/sneakers/black(src) new /obj/item/clothing/shoes/sneakers/brown(src) new /obj/item/clothing/shoes/sneakers/white(src) + if(prob(50)) + new /obj/item/clothing/suit/toggle/wintercoat(src) + new /obj/item/clothing/shoes/winterboots(src) + new /obj/item/clothing/head/santa(src) return diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 453260d5e1b..893750a15aa 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -10,7 +10,7 @@ var/occupied = 1 var/destroyed = 0 -/obj/structure/displaycase/ex_act(severity, specialty) +/obj/structure/displaycase/ex_act(severity, target) switch(severity) if (1) new /obj/item/weapon/shard( src.loc ) diff --git a/code/game/objects/structures/extinguisher.dm b/code/game/objects/structures/extinguisher.dm index 10cdc963a66..b2874a23bc9 100644 --- a/code/game/objects/structures/extinguisher.dm +++ b/code/game/objects/structures/extinguisher.dm @@ -9,7 +9,7 @@ var/opened = 0 -/obj/structure/extinguisher_cabinet/ex_act(severity, specialty) +/obj/structure/extinguisher_cabinet/ex_act(severity, target) switch(severity) if(1.0) qdel(src) diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index e7cd91aaa60..2e53e182a6b 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -89,7 +89,8 @@ anchored = 1 /obj/structure/flora/ausbushes/New() - icon_state = "firstbush_[rand(1, 4)]" + if(icon_state == "firstbush_1") + icon_state = "firstbush_[rand(1, 4)]" ..() /obj/structure/flora/ausbushes/reedbush diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 46e9cd35496..1db34a848e9 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -198,7 +198,7 @@ qdel(src) -/obj/structure/girder/ex_act(severity, specialty) +/obj/structure/girder/ex_act(severity, target) switch(severity) if(1.0) qdel(src) @@ -229,7 +229,7 @@ state = 2 girderpasschance = 0 -/obj/structure/girder/reinforced/ex_act(severity, specialty) +/obj/structure/girder/reinforced/ex_act(severity, target) switch(severity) if(1.0) qdel(src) @@ -285,7 +285,7 @@ qdel(src) -/obj/structure/cultgirder/ex_act(severity, specialty) +/obj/structure/cultgirder/ex_act(severity, target) switch(severity) if(1.0) qdel(src) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index d7b4bcba24d..52a5905a7dd 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -16,7 +16,7 @@ stored = new/obj/item/stack/rods(src) stored.amount = 2 -/obj/structure/grille/ex_act(severity, specialty) +/obj/structure/grille/ex_act(severity, target) qdel(src) /obj/structure/grille/blob_act() diff --git a/code/game/objects/structures/lamarr_cage.dm b/code/game/objects/structures/lamarr_cage.dm index acba01c197e..eed83352412 100644 --- a/code/game/objects/structures/lamarr_cage.dm +++ b/code/game/objects/structures/lamarr_cage.dm @@ -10,7 +10,7 @@ var/occupied = 1 var/destroyed = 0 -/obj/structure/lamarr/ex_act(severity, specialty) +/obj/structure/lamarr/ex_act(severity, target) switch(severity) if (1) new /obj/item/weapon/shard( src.loc ) diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index d2bc62a39ea..d953775363d 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -38,7 +38,7 @@ qdel(src) return -/obj/structure/lattice/ex_act(severity, specialty) +/obj/structure/lattice/ex_act(severity, target) switch(severity) if(1.0) qdel(src) diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index 37ae9ca2a84..8acbe878808 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -165,7 +165,7 @@ FLOOR SAFES obj/structure/safe/blob_act() return -obj/structure/safe/ex_act(severity, specialty) +obj/structure/safe/ex_act(severity, target) return diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index 87a97897862..8a1591531a0 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -5,7 +5,7 @@ density = 0 layer = 3.5 -/obj/structure/sign/ex_act(severity, specialty) +/obj/structure/sign/ex_act(severity, target) qdel(src) /obj/structure/sign/blob_act() diff --git a/code/game/objects/structures/stool_bed_chair_nest/stools.dm b/code/game/objects/structures/stool_bed_chair_nest/stools.dm index 1877e3b3b07..01c86ee14a5 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/stools.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/stools.dm @@ -6,7 +6,7 @@ anchored = 1.0 pressure_resistance = 15 -/obj/structure/stool/ex_act(severity, specialty) +/obj/structure/stool/ex_act(severity, target) switch(severity) if(1.0) qdel(src) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index f6ecde8cd8d..3b7ab8924b7 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -180,21 +180,11 @@ else dir = 2 -/obj/structure/table/ex_act(severity, specialty) - switch(severity) - if(1.0) - qdel(src) - return - if(2.0) - if (prob(50)) - qdel(src) - return - if(3.0) - if (prob(25)) - src.density = 0 - else - return - +/obj/structure/table/ex_act(severity, target) + ..() + if(severity == 3) + if(prob(25)) + density = 0 /obj/structure/table/blob_act() if(prob(75)) @@ -257,17 +247,20 @@ if(get_dist(src, user) < 2) var/obj/item/weapon/grab/G = I if(G.affecting.buckled) - user << "[G.affecting] is buckled to [G.affecting.buckled]!" - return + user << "[G.affecting] is buckled to [G.affecting.buckled]!" + return 0 if(G.state < GRAB_AGGRESSIVE) - user << "You need a better grip to do that!" - return + user << "You need a better grip to do that!" + return 0 if(!G.confirm()) - return + return 0 G.affecting.loc = src.loc G.affecting.Weaken(5) G.affecting.visible_message("[G.assailant] pushes [G.affecting] onto [src].", \ "[G.assailant] pushes [G.affecting] onto [src].") + add_logs(G.assailant, G.affecting, "pushed") + qdel(I) + return 1 qdel(I) /obj/structure/table/attackby(obj/item/I, mob/user) @@ -373,15 +366,21 @@ /obj/structure/table/proc/climb_table(mob/user) src.add_fingerprint(user) user.visible_message("[user] starts climbing onto [src].", \ - "[user] starts climbing onto [src].") - if(do_mob(user, user, 20)) - user.pass_flags += PASSTABLE - step(user,get_dir(user,src.loc)) - user.pass_flags -= PASSTABLE - user.visible_message("[user] climbs onto [src].", \ - "[user] climbs onto [src].") - add_logs(user, src, "climbed onto") - user.Stun(2) + "You start climbing onto [src].") + var/climb_time = 20 + if(user.restrained()) //Table climbing takes twice as long when restrained. + climb_time *= 2 + if(do_mob(user, user, climb_time)) + if(src.loc) //Checking if table has been destroyed + user.pass_flags += PASSTABLE + step(user,get_dir(user,src.loc)) + user.pass_flags -= PASSTABLE + user.visible_message("[user] climbs onto [src].", \ + "You climb onto [src].") + add_logs(user, src, "climbed onto") + user.Stun(2) + return 1 + return 0 /* @@ -394,37 +393,17 @@ buildstack = /obj/item/stack/sheet/glass /obj/structure/table/glass/tablepush(obj/item/I, mob/user) - if(get_dist(src, user) < 2) - var/obj/item/weapon/grab/G = I - if(G.affecting.buckled) - user << "[G.affecting] is buckled to [G.affecting.buckled]!" - return - if(G.state < GRAB_AGGRESSIVE) - user << "You need a better grip to do that!" - return - if(!G.confirm()) - return - G.affecting.loc = src.loc - G.affecting.Weaken(5) - G.affecting.visible_message("[G.assailant] smashes [G.affecting] into [src].", \ - "[G.assailant] smashes [G.affecting] into [src].") + if(..()) + visible_message("[src] breaks!") playsound(src.loc, "shatter", 50, 1) new frame(src.loc) new /obj/item/weapon/shard(src.loc) qdel(src) - qdel(I) + /obj/structure/table/glass/climb_table(mob/user) - src.add_fingerprint(user) - user.visible_message("[user] starts climbing onto [src].", \ - "[user] starts climbing onto [src].") - if(do_mob(user, user, 20)) - user.pass_flags += PASSTABLE - step(user,get_dir(user,src.loc)) - user.pass_flags -= PASSTABLE - user.visible_message("[user] climbs onto [src], and it breaks!.", \ - "[user] climbs onto [src], and it breaks!.") - add_logs(user, src, "climbed onto") + if(..()) + visible_message("[src] breaks!") playsound(src.loc, "shatter", 50, 1) new frame(src.loc) new /obj/item/weapon/shard(src.loc) @@ -510,7 +489,7 @@ throwpass = 1 //You can throw objects over this, despite it's density. var/health = 5 -/obj/structure/rack/ex_act(severity, specialty) +/obj/structure/rack/ex_act(severity, target) switch(severity) if(1.0) qdel(src) diff --git a/code/game/objects/structures/transit_tubes/transit_tube.dm b/code/game/objects/structures/transit_tubes/transit_tube.dm index d269915b63c..12bfc62e84d 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube.dm @@ -25,7 +25,7 @@ return !density // When destroyed by explosions, properly handle contents. -obj/structure/transit_tube/ex_act(severity, specialty) +obj/structure/transit_tube/ex_act(severity, target) if(3 - severity >= 0) var/oldloc = loc ..(severity + 1) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 6dfc31397f9..d748bdd960d 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -53,7 +53,7 @@ return -/obj/structure/window/ex_act(severity, specialty) +/obj/structure/window/ex_act(severity, target) switch(severity) if(1.0) qdel(src) @@ -104,7 +104,7 @@ var/obj/item/I = AM tforce = I.throwforce - if(reinf) + if(reinf) tforce *= 0.25 playsound(loc, 'sound/effects/Glasshit.ogg', 100, 1) @@ -164,12 +164,12 @@ update_nearby_icons() /obj/structure/window/attack_animal(mob/living/user as mob) - if(!isanimal(user)) + if(!isanimal(user)) return var/mob/living/simple_animal/M = user M.do_attack_animation(src) - if(M.melee_damage_upper <= 0) + if(M.melee_damage_upper <= 0) return attack_generic(M, M.melee_damage_upper) @@ -177,7 +177,7 @@ /obj/structure/window/attack_slime(mob/living/carbon/slime/user as mob) user.do_attack_animation(src) - if(!user.is_adult) + if(!user.is_adult) return attack_generic(user, rand(10, 15)) @@ -196,11 +196,11 @@ user << (anchored ? "You begin to unscrew the frame from the floor." : "You begin to screw the frame to the floor.") else if(!reinf) user << (anchored ? "You begin to unscrew the window from the floor." : "You begin to screw the window to the floor.") - + if(do_after(user, 40)) if(reinf && (state == 1 || state == 2)) //If state was unfastened, fasten it, else do the reverse - state = (state == 1 ? 2 : 1) + state = (state == 1 ? 2 : 1) user << (state == 1 ? "You have unfastened the window from the frame." : "You have fastened the window to the frame.") else if(reinf && state == 0) anchored = !anchored @@ -216,7 +216,7 @@ playsound(loc, 'sound/items/Crowbar.ogg', 75, 1) if(do_after(user, 40)) //If state was out of frame, put into frame, else do the reverse - state = (state == 0 ? 1 : 0) + state = (state == 0 ? 1 : 0) user << (state == 1 ? "You have pried the window into the frame." : "You have pried the window out of the frame.") else if(istype(I, /obj/item/weapon/weldingtool)) @@ -472,4 +472,4 @@ dir = 5 maxhealth = 100 shuttlew = 1 - fulltile = 1 + fulltile = 1 diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index 33c7d68b6c8..9e641352434 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -42,12 +42,12 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3"," if(floor_tile) builtin_tile = new floor_tile -/turf/simulated/floor/ex_act(severity, specialty) +/turf/simulated/floor/ex_act(severity, target) ..() - if(specialty == 2) - return - if(specialty == 1) + if(target == src) src.ChangeTurf(/turf/space) + if(target != null) + ex_act(3) return switch(severity) if(1.0) diff --git a/code/game/turfs/simulated/floor/misc_floor.dm b/code/game/turfs/simulated/floor/misc_floor.dm index 0f34cdffffe..4a808d7be61 100644 --- a/code/game/turfs/simulated/floor/misc_floor.dm +++ b/code/game/turfs/simulated/floor/misc_floor.dm @@ -64,8 +64,8 @@ name = "Beach" icon = 'icons/misc/beach.dmi' -/turf/simulated/floor/beach/ex_act(severity, specialty) - contents_explosion(src, severity) +/turf/simulated/floor/beach/ex_act(severity, target) + contents_explosion(severity, target) /turf/simulated/floor/beach/sand name = "Sand" @@ -90,8 +90,8 @@ icon = 'icons/turf/snow.dmi' icon_state = "snow" -/turf/simulated/floor/plating/snow/ex_act(severity, specialty) - contents_explosion(src, severity) +/turf/simulated/floor/plating/snow/ex_act(severity, target) + contents_explosion(severity, target) /turf/simulated/floor/noslip name = "high-traction floor" diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 0ea09fc2316..3b40db1a39c 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -47,11 +47,10 @@ builtin_sheet.loc = src new /obj/item/stack/sheet/metal(src) -/turf/simulated/wall/ex_act(severity, specialty) - if(specialty) +/turf/simulated/wall/ex_act(severity, target) + if(target == src) dismantle_wall(1,1) return - switch(severity) if(1.0) //SN src = null @@ -78,7 +77,7 @@ if(M.damtype == "brute") playsound(src, 'sound/weapons/punch4.ogg', 50, 1) M.occupant_message("You hit [src].") - visible_message("[src] has been hit by [M.name].") + visible_message("[M.name] has hit [src]!") if(prob(5) && M.force > 20) dismantle_wall(1) M.occupant_message("You smash through the wall.") diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 45c9d58f099..59024f59a11 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -745,10 +745,9 @@ var/global/list/g_fancy_list_of_types = null M.equip_to_slot_or_del(new /obj/item/clothing/shoes/clown_shoes(M), slot_shoes) M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves) M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(M), slot_wear_mask) - M.equip_to_slot_or_del(new /obj/item/clothing/head/chaplain_hood(M), slot_head) M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/chaplain_hoodie(M), slot_wear_suit) + M.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/chaplain_hoodie(M), slot_wear_suit) M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(M), slot_l_store) M.equip_to_slot_or_del(new /obj/item/weapon/bikehorn(M), slot_r_store) diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 9cbdfec2763..5636219f233 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -174,7 +174,7 @@ name = "Doctor" corpseradio = /obj/item/device/radio/headset/headset_med corpseuniform = /obj/item/clothing/under/rank/medical - corpsesuit = /obj/item/clothing/suit/labcoat + corpsesuit = /obj/item/clothing/suit/toggle/labcoat corpseback = /obj/item/weapon/storage/backpack/medic corpsepocket1 = /obj/item/device/flashlight/pen corpseshoes = /obj/item/clothing/shoes/sneakers/black @@ -216,7 +216,7 @@ name = "Scientist" corpseradio = /obj/item/device/radio/headset/headset_sci corpseuniform = /obj/item/clothing/under/rank/scientist - corpsesuit = /obj/item/clothing/suit/labcoat/science + corpsesuit = /obj/item/clothing/suit/toggle/labcoat/science corpseback = /obj/item/weapon/storage/backpack corpseshoes = /obj/item/clothing/shoes/sneakers/white corpseid = 1 diff --git a/code/modules/awaymissions/maploader/reader.dm b/code/modules/awaymissions/maploader/reader.dm index f461e2c0f09..7ef70f87ae2 100644 --- a/code/modules/awaymissions/maploader/reader.dm +++ b/code/modules/awaymissions/maploader/reader.dm @@ -324,8 +324,8 @@ placed.underlays += turfs_underlays //atom creation method that preloads variables before creation -/atom/New(atom/loc, dmm_suite/preloader/_dmm_preloader = null) - if(_dmm_preloader) +/atom/New(atom/loc, dmm_suite/preloader/_dmm_preloader) + if(istype(_dmm_preloader, /dmm_suite/preloader)) _dmm_preloader.load(src) . = ..() diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 8a375df36e7..3c54a472e40 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -141,6 +141,7 @@ BLIND // can't see anything armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) slot_flags = SLOT_OCLOTHING var/blood_overlay_type = "suit" + var/togglename = null //Spacesuit //Note: Everything in modules/clothing/spacesuits should have the entire suit grouped together. diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index 3e2ee6b572f..fc0d2172662 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -57,4 +57,6 @@ item_color = null //So they don't wash. transfer_prints = TRUE strip_delay = 40 - put_on_delay = 20 \ No newline at end of file + put_on_delay = 20 + cold_protection = HANDS + min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT \ No newline at end of file diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index 1e24a45c2d8..1a25b642c24 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -33,13 +33,6 @@ desc = "The symbol of true bureaucratic micromanagement." armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0) -//Chaplain -/obj/item/clothing/head/chaplain_hood - name = "chaplain's hood" - desc = "It's hood that covers the head. It keeps you warm during the space winters." - icon_state = "chaplain_hood" - flags = HEADCOVERSEYES|BLOCKHAIR - //Chaplain /obj/item/clothing/head/nun_hood name = "nun hood" diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 36d14821d9c..27cf5c25d6e 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -202,3 +202,11 @@ throw_range = 5 w_class = 2.0 attack_verb = list("warned", "cautioned", "smashed") + +/obj/item/clothing/head/santa + name = "santa hat" + desc = "On the first day of christmas my employer gave to me!" + icon_state = "santahatnorm" + item_state = "that" + cold_protection = HEAD + min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT \ No newline at end of file diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index d16ac285b99..752e0bb3bd7 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -91,15 +91,20 @@ icon_state = "ushankadown" item_state = "ushankadown" flags_inv = HIDEEARS + var/earflaps = 1 + cold_protection = HEAD + min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT /obj/item/clothing/head/ushanka/attack_self(mob/user as mob) - if(src.icon_state == "ushankadown") + if(earflaps) src.icon_state = "ushankaup" src.item_state = "ushankaup" + earflaps = 0 user << "You raise the ear flaps on the ushanka." else src.icon_state = "ushankadown" src.item_state = "ushankadown" + earflaps = 1 user << "You lower the ear flaps on the ushanka." /* diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 8fecd4c9431..a6e76d0c5c1 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -28,10 +28,6 @@ permeability_coefficient = 0.01 flags = NOSLIP armor = list(melee = 80, bullet = 60, laser = 50, energy = 50, bomb = 50, bio = 30, rad = 30) - cold_protection = FEET - min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT - heat_protection = FEET - max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT /obj/item/clothing/shoes/space_ninja name = "ninja shoes" @@ -95,13 +91,22 @@ strip_delay = 50 put_on_delay = 50 +/obj/item/clothing/shoes/winterboots + name = "winter boots" + desc = "Boots lined with 'synthetic' animal fur." + icon_state = "winterboots" + item_state = "winterboots" + cold_protection = FEET|LEGS + min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT + heat_protection = FEET|LEGS + max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT + /obj/item/clothing/shoes/cult - name = "boots" + name = "cultist boots" desc = "A pair of boots worn by the followers of Nar-Sie." icon_state = "cult" item_state = "cult" item_color = "cult" - cold_protection = FEET min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT heat_protection = FEET diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 2d891f0d80b..8343d2aca31 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -5,7 +5,6 @@ icon_state = "hardsuit0-engineering" item_state = "eng_helm" armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75) - allowed = list(/obj/item/device/flashlight) var/brightness_on = 4 //luminosity when on var/on = 0 item_color = "engineering" //Determines used sprites: hardsuit[on]-[color] and hardsuit[on]-[color]2 (lying down sprite) diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 037ab3952c4..de919a9be17 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -27,6 +27,8 @@ item_state = "deathsquad" armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100) strip_delay = 130 + max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT + unacidable = 1 /obj/item/clothing/suit/space/deathsquad name = "deathsquad suit" @@ -37,6 +39,8 @@ armor = list(melee = 80, bullet = 80, laser = 50,energy = 50, bomb = 100, bio = 100, rad = 100) slowdown = 1 strip_delay = 130 + max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT + unacidable = 1 /obj/item/clothing/head/helmet/space/deathsquad/beret name = "officer's beret" diff --git a/code/modules/clothing/spacesuits/ninja.dm b/code/modules/clothing/spacesuits/ninja.dm index 37ba6a5a688..5aa48fa2b6f 100644 --- a/code/modules/clothing/spacesuits/ninja.dm +++ b/code/modules/clothing/spacesuits/ninja.dm @@ -6,6 +6,7 @@ allowed = list(/obj/item/weapon/stock_parts/cell) armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 25) strip_delay = 12 + unacidable = 1 /obj/item/clothing/suit/space/space_ninja @@ -15,6 +16,7 @@ item_state = "s-ninja_suit" allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/stock_parts/cell) slowdown = 0 + unacidable = 1 armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) strip_delay = 12 diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index 941897b6cef..869d47d6856 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -7,6 +7,7 @@ flags = HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR|THICKMATERIAL armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES + unacidable = 1 /obj/item/clothing/suit/bio_suit name = "bio suit" @@ -24,6 +25,7 @@ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT strip_delay = 70 put_on_delay = 70 + unacidable = 1 //Standard biosuit, orange stripe /obj/item/clothing/head/bio_hood/general diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 3fe024e44e8..802c072fe6f 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -23,13 +23,17 @@ allowed = list(/obj/item/weapon/disk, /obj/item/weapon/stamp, /obj/item/weapon/reagent_containers/food/drinks/flask, /obj/item/weapon/melee, /obj/item/weapon/storage/lockbox/medal, /obj/item/device/flash/handheld, /obj/item/weapon/storage/box/matches, /obj/item/weapon/lighter, /obj/item/clothing/mask/cigarette, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/tank/emergency_oxygen) //Chaplain -/obj/item/clothing/suit/chaplain_hoodie +/obj/item/clothing/suit/toggle/chaplain_hoodie name = "chaplain hoodie" desc = "This suit says to you 'hush'!" icon_state = "chaplain_hoodie" item_state = "chaplain_hoodie" body_parts_covered = CHEST|GROIN|LEGS|ARMS allowed = list(/obj/item/weapon/storage/book/bible, /obj/item/weapon/nullrod, /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, /obj/item/weapon/storage/fancy/candle_box, /obj/item/candle, /obj/item/weapon/tank/emergency_oxygen) + hooded = 1 + suittoggled = 0 + action_button_name = "Toggle Hoodie" + togglename = "hood" //Chaplain /obj/item/clothing/suit/nun @@ -90,29 +94,45 @@ allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/device/t_scanner,) //Lawyer -/obj/item/clothing/suit/lawyer/bluejacket +/obj/item/clothing/suit/toggle/lawyer name = "blue suit jacket" desc = "A snappy dress jacket." - icon_state = "suitjacket_blue_open" - item_state = "suitjacket_blue_open" + icon_state = "suitjacket_blue" + item_state = "suitjacket_blue" blood_overlay_type = "coat" body_parts_covered = CHEST|ARMS + action_button_name = "Toggle Suit Buttons" + togglename = "buttons" -/obj/item/clothing/suit/lawyer/purpjacket +/obj/item/clothing/suit/toggle/lawyer/purple name = "purple suit jacket" desc = "A foppish dress jacket." icon_state = "suitjacket_purp" item_state = "suitjacket_purp" - blood_overlay_type = "coat" - body_parts_covered = CHEST|ARMS -/obj/item/clothing/suit/lawyer/blackjacket +/obj/item/clothing/suit/toggle/lawyer/black name = "black suit jacket" desc = "A professional suit jacket." icon_state = "suitjacket_black" item_state = "ro_suit" - blood_overlay_type = "coat" - body_parts_covered = CHEST|ARMS + +//Toggle exosuits for different aesthetic styles (hoodies, suit jacket buttons, etc) + +/obj/item/clothing/suit/toggle/attack_self() + set src in usr + + if(!can_use(usr)) + return 0 + + usr << "You toggle [src]'s [togglename]." + if(src.suittoggled) + src.icon_state = "[initial(icon_state)]" + src.suittoggled = 0 + else if(!src.suittoggled) + src.icon_state = "[initial(icon_state)]_t" + src.suittoggled = 1 + usr.update_inv_wear_suit() + //Mime /obj/item/clothing/suit/suspenders diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index 076dc6cc927..0b339fc5e7b 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -1,4 +1,4 @@ -/obj/item/clothing/suit/labcoat +/obj/item/clothing/suit/toggle/labcoat name = "labcoat" desc = "A suit that protects against minor chemical spills." icon_state = "labcoat" @@ -8,54 +8,43 @@ allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper,/obj/item/weapon/melee/telebaton) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0) var/open = 0 + action_button_name = "Toggle Labcoat Buttons" + togglename = "buttons" -/obj/item/clothing/suit/labcoat/verb/toggle() - set name = "Toggle Labcoat Buttons" - set category = "Object" - set src in usr - - if(!can_use(usr)) - return 0 - - open = !open - icon_state = "[initial(icon_state)][open ? "_open":""]" - usr << "You [open ? "unbutton":"button up"] the labcoat" - usr.update_inv_wear_suit() - -/obj/item/clothing/suit/labcoat/cmo +/obj/item/clothing/suit/toggle/labcoat/cmo name = "chief medical officer's labcoat" desc = "Bluer than the standard model." icon_state = "labcoat_cmo" item_state = "labcoat_cmo" -/obj/item/clothing/suit/labcoat/emt +/obj/item/clothing/suit/toggle/labcoat/emt name = "EMT's jacket" desc = "A dark blue jacket with reflective strips for emergency medical technicians." icon_state = "labcoat_emt" item_state = "labcoat_cmo" -/obj/item/clothing/suit/labcoat/mad +/obj/item/clothing/suit/toggle/labcoat/mad name = "\improper The Mad's labcoat" desc = "It makes you look capable of konking someone on the noggin and shooting them into space." icon_state = "labgreen" item_state = "labgreen" -/obj/item/clothing/suit/labcoat/genetics +/obj/item/clothing/suit/toggle/labcoat/genetics name = "geneticist labcoat" desc = "A suit that protects against minor chemical spills. Has a blue stripe on the shoulder." icon_state = "labcoat_gen" -/obj/item/clothing/suit/labcoat/chemist +/obj/item/clothing/suit/toggle/labcoat/chemist name = "chemist labcoat" desc = "A suit that protects against minor chemical spills. Has an orange stripe on the shoulder." icon_state = "labcoat_chem" -/obj/item/clothing/suit/labcoat/virologist +/obj/item/clothing/suit/toggle/labcoat/virologist name = "virologist labcoat" desc = "A suit that protects against minor chemical spills. Offers slightly more protection against biohazards than the standard model. Has a green stripe on the shoulder." icon_state = "labcoat_vir" -/obj/item/clothing/suit/labcoat/science +/obj/item/clothing/suit/toggle/labcoat/science name = "scientist labcoat" desc = "A suit that protects against minor chemical spills. Has a purple stripe on the shoulder." icon_state = "labcoat_tox" diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index a1a80dd4f75..cd67552393a 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -216,38 +216,84 @@ icon_state = "bomberjacket" item_state = "johnny" allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/toy,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter) + body_parts_covered = CHEST|GROIN|ARMS + cold_protection = CHEST|GROIN|ARMS + min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT /obj/item/clothing/suit/jacket/leather name = "leather jacket" desc = "Pompadour not included." icon_state = "leatherjacket" -//Blue suit jacket toggle -/obj/item/clothing/suit/suit/verb/toggle() - set name = "Toggle Jacket Buttons" - set category = "Object" - set src in usr - - if(!can_use(usr)) - return 0 - - if(src.icon_state == "suitjacket_blue_open") //no god no - src.icon_state = "suitjacket_blue" - src.item_state = "suitjacket_blue" - usr << "You button up the suit jacket." - else if(src.icon_state == "suitjacket_blue") - src.icon_state = "suitjacket_blue_open" - src.item_state = "suitjacket_blue_open" - usr << "You unbutton the suit jacket." - else - usr << "You button-up some imaginary buttons on your [src]." - return - usr.update_inv_wear_suit() - /obj/item/clothing/suit/xenos name = "xenos suit" desc = "A suit made out of chitinous alien hide." icon_state = "xenos" item_state = "xenos_helm" body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT \ No newline at end of file + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT + +// WINTER COATS + +/obj/item/clothing/suit/toggle/wintercoat + name = "winter coat" + desc = "A heavy jacket made from 'synthetic' animal furs." + icon_state = "coatwinter" + item_state = "labcoat" + body_parts_covered = CHEST|GROIN|ARMS|HEAD + cold_protection = CHEST|GROIN|ARMS|HEAD + min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/toy,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter) + hooded = 1 + action_button_name = "Toggle Winter Hood" + togglename = "hood" + +/obj/item/clothing/suit/toggle/wintercoat/captain + name = "captain's winter coat" + icon_state = "coatcaptain" + armor = list(melee = 50, bullet = 30, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0) + allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/device/flashlight/seclite,/obj/item/weapon/melee/telebaton) + +/obj/item/clothing/suit/toggle/wintercoat/security + name = "security winter coat" + icon_state = "coatsecurity" + armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0) + allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/device/flashlight/seclite,/obj/item/weapon/melee/telebaton) + +/obj/item/clothing/suit/toggle/wintercoat/medical + name = "medical winter coat" + icon_state = "coatmedical" + allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper,/obj/item/weapon/melee/telebaton) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0) + +/obj/item/clothing/suit/toggle/wintercoat/science + name = "science winter coat" + icon_state = "coatscience" + allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper,/obj/item/weapon/melee/telebaton) + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0) + +/obj/item/clothing/suit/toggle/wintercoat/engineering + name = "engineering winter coat" + icon_state = "coatengineer" + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 20) + allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/device/t_scanner, /obj/item/weapon/rcd) + +/obj/item/clothing/suit/toggle/wintercoat/engineering/atmos + name = "atmospherics winter coat" + icon_state = "coatatmos" + +/obj/item/clothing/suit/toggle/wintercoat/hydro + name = "hydroponics winter coat" + icon_state = "coathydro" + allowed = list(/obj/item/weapon/reagent_containers/spray/plantbgone,/obj/item/device/analyzer/plant_analyzer,/obj/item/seeds,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/minihoe,/obj/item/weapon/reagent_containers/spray/pestspray,/obj/item/weapon/hatchet,/obj/item/weapon/storage/bag/plants) + +/obj/item/clothing/suit/toggle/wintercoat/cargo + name = "cargo winter coat" + icon_state = "coatcargo" + +/obj/item/clothing/suit/toggle/wintercoat/miner + name = "mining winter coat" + icon_state = "coatminer" + allowed = list(/obj/item/weapon/pickaxe,/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/toy,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/lighter) + armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) \ No newline at end of file diff --git a/code/modules/detectivework/footprints_and_rag.dm b/code/modules/detectivework/footprints_and_rag.dm index 779a9800be2..098f7bfea7c 100644 --- a/code/modules/detectivework/footprints_and_rag.dm +++ b/code/modules/detectivework/footprints_and_rag.dm @@ -41,7 +41,7 @@ /obj/item/weapon/reagent_containers/glass/rag/attack(atom/target as obj|turf|area, mob/user as mob , flag) if(ismob(target) && target.reagents && reagents.total_volume) - user.visible_message("\The [target] has been smothered with \the [src] by \the [user]!", "You smother \the [target] with \the [src]!", "You hear some struggling and muffled cries of surprise") + user.visible_message("[user] has smothered \the [target] with \the [src]!", "You smother \the [target] with \the [src]!", "You hear some struggling and muffled cries of surprise") src.reagents.reaction(target, TOUCH) src.reagents.clear_reagents() return diff --git a/code/modules/events/ninja.dm b/code/modules/events/ninja.dm index a64a8861cb1..961a2d771d9 100644 --- a/code/modules/events/ninja.dm +++ b/code/modules/events/ninja.dm @@ -2680,7 +2680,7 @@ It is possible to destroy the net by the occupant or someone else. healthcheck() ..() -/obj/effect/energy_net/ex_act(severity, specialty) +/obj/effect/energy_net/ex_act(severity, target) switch(severity) if(1.0) health-=50 diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index c2bc53dc00c..b3d6d06fba4 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -500,7 +500,7 @@ */ -/obj/effect/spacevine/ex_act(severity, specialty) +/obj/effect/spacevine/ex_act(severity, target) switch(severity) if(1.0) Destroy() diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 312635711ff..f20b06ebcb6 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -248,7 +248,7 @@ proc/check_panel(mob/M) /obj/effect/fake_attacker/attackby(var/obj/item/weapon/P as obj, mob/user as mob) step_away(src,my_target,2) my_target.visible_message("[my_target] flails around wildly.", \ - "[src] has been attacked by [my_target] ") + "[my_target] has attacked [src]!") src.health -= P.force @@ -305,7 +305,7 @@ proc/check_panel(mob/M) if(prob(15)) if(weapon_name) my_target << sound(pick('sound/weapons/genhit1.ogg', 'sound/weapons/genhit2.ogg', 'sound/weapons/genhit3.ogg')) - my_target.show_message("[my_target] has been attacked with [weapon_name] by [src.name]!", 1) + my_target.show_message("[src.name] has attacked [my_target] with [weapon_name]!", 1) my_target.staminaloss += 30 if(prob(20)) my_target.eye_blurry += 3 if(prob(33)) diff --git a/code/modules/food&drinks/drinks/drinks/bottle.dm b/code/modules/food&drinks/drinks/drinks/bottle.dm index 06f0707f6af..b5ef66b0700 100644 --- a/code/modules/food&drinks/drinks/drinks/bottle.dm +++ b/code/modules/food&drinks/drinks/drinks/bottle.dm @@ -80,21 +80,20 @@ target.apply_damage(force, BRUTE, affecting, armor_block) // You are going to knock someone out for longer if they are not wearing a helmet. + var/head_attack_message = "" if(affecting == "head" && istype(target, /mob/living/carbon/)) - - //Display an attack message. - for(var/mob/O in viewers(user, null)) - if(target != user) O.show_message(text("[target] has been hit over the head with a bottle of [src.name], by [user]!"), 1) - else O.show_message(text("[target] hits himself with a bottle of [src.name] on the head!"), 1) + head_attack_message = " on the head" //Weaken the target for the duration that we calculated and divide it by 5. if(armor_duration) target.apply_effect(min(armor_duration, 10) , WEAKEN) // Never weaken more than a flash! + //Display an attack message. + if(target != user) + target.visible_message("[user] has hit [target][head_attack_message] with a bottle of [src.name]!", \ + "[user] has hit [target][head_attack_message] with a bottle of [src.name]!") else - //Default attack message and don't weaken the target. - for(var/mob/O in viewers(user, null)) - if(target != user) O.show_message(text("[target] has been attacked with a bottle of [src.name], by [user]!"), 1) - else O.show_message(text("[target] has attacked himself with a bottle of [src.name]!"), 1) + user.visible_message("[target] hits himself with a bottle of [src.name][head_attack_message]!", \ + "[target] hits himself with a bottle of [src.name][head_attack_message]!") //Attack logs add_logs(user, target, "attacked", object="bottle") diff --git a/code/modules/food&drinks/drinks/drinks/drinkingglass.dm b/code/modules/food&drinks/drinks/drinks/drinkingglass.dm index 294118333ec..6fb536af8db 100644 --- a/code/modules/food&drinks/drinks/drinks/drinkingglass.dm +++ b/code/modules/food&drinks/drinks/drinks/drinkingglass.dm @@ -153,7 +153,7 @@ if("gargleblaster") icon_state = "gargleblasterglass" name = "Pan-Galactic Gargle Blaster" - desc = "Does... does this mean that Arthur and Ford are on the station? Oh joy." + desc = "Like having your brain smashed out by a slice of lemon wrapped around a large gold brick." if("bravebull") icon_state = "bravebullglass" name = "Brave Bull" diff --git a/code/modules/food&drinks/food/condiment.dm b/code/modules/food&drinks/food/condiment.dm index 7ef596d303a..fc56ece94a4 100644 --- a/code/modules/food&drinks/food/condiment.dm +++ b/code/modules/food&drinks/food/condiment.dm @@ -20,7 +20,7 @@ "enzyme" = list("enzyme", "universal enzyme bottle", "Used in cooking various dishes"), "soysauce" = list("soysauce", "soy sauce bottle", "A salty soy-based flavoring"), "frostoil" = list("coldsauce", "coldsauce bottle", "Leaves the tongue numb in it's passage"), - "sodiumchloride" = list("saltshaker", "salt shaker", "Salt. From space oceans, presumably"), + "sodiumchloride" = list("saltshakersmall", "salt shaker", "Salt. From space oceans, presumably"), "blackpepper" = list("pepermillsmall", "pepper mill", "Often used to flavor food or make people sneeze"), "cornoil" = list("oliveoil", "corn oil bottle", "A delicious oil used in cooking. Made from corn"), "sugar" = list("emptycondiment", "sugar bottle", "Tasty spacey sugar!")) diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 44eb996e807..3ab6a0b24eb 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -793,17 +793,16 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) /obj/item/seeds/replicapod/harvest(mob/user = usr) //now that one is fun -- Urist var/obj/machinery/hydroponics/parent = loc var/make_podman = 0 - var/mob/ghost if(ckey && config.revival_pod_plants) - ghost = find_dead_player("[ckey]") - if(ismob(ghost)) - if(istype(ghost,/mob/dead/observer)) - var/mob/dead/observer/O = ghost - if(istype(mind,/datum/mind)) + for(var/mob/M in player_list) + if(M.ckey == ckey && M.stat == 2 && !M.suiciding) + if(istype(M, /mob/dead/observer)) + var/mob/dead/observer/O = M if(O.can_reenter_corpse) make_podman = 1 - else + break make_podman = 1 + break if(make_podman) //all conditions met! var/mob/living/carbon/human/podman = new /mob/living/carbon/human(parent.loc) @@ -811,14 +810,10 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) podman.real_name = realName else podman.real_name = "Pod Person [rand(0,999)]" - var/oldactive = mind.active - mind.active = 1 mind.transfer_to(podman) - mind.active = oldactive - podman.gender = ghost.gender - //dna stuff - hardset_dna(podman, ui, se, null, null, null, !prob(potency) ? /datum/species/plant/pod : null, "#59CE00") //makes sure podman has dna and sets the dna's ui/se/mutantrace/real_name etc variables - + podman.ckey = ckey + podman.gender = blood_gender + hardset_dna(podman,null,null,podman.real_name,blood_type,/datum/species/plant/pod,"#59CE00")//Discard SE's and UI's, podman cloning is inaccurate, and always make them a podman podman.set_cloned_appearance() else //else, one packet of seeds. maybe two diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 1f34b8fd6d9..1b5ead39644 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -69,46 +69,35 @@ lifespan = 50 endurance = 8 maturation = 10 - production = 10 + production = 1 yield = 1 //seeds if there isn't a dna inside oneharvest = 1 potency = 30 plant_type = 0 growthstages = 6 - var/ui = null //for storing the guy - var/se = null var/ckey = null var/realName = null var/datum/mind/mind = null - gender = MALE + var/blood_gender = null + var/blood_type = null /obj/item/seeds/replicapod/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W,/obj/item/weapon/reagent_containers)) + if(istype(W,/obj/item/weapon/reagent_containers/syringe)) if(ckey == null) - user << "You inject the contents of the syringe into the seeds." - - for(var/datum/reagent/blood/bloodSample in W:reagents.reagent_list) - var/mob/living/carbon/human/source = bloodSample.data["donor"] //hacky, since it gets the CURRENT condition of the mob, not how it was when the blood sample was taken - if(!istype(source)) - continue - //ui = bloodSample.data["blood_dna"] doesn't work for whatever reason - ui = source.dna.uni_identity - se = source.dna.struc_enzymes - if(source.ckey) - ckey = source.ckey - else if(source.mind) - ckey = ckey(source.mind.key) - realName = source.real_name - gender = source.gender - - if(!isnull(source.mind)) - mind = source.mind - - W:reagents.clear_reagents() + for(var/datum/reagent/blood/bloodSample in W.reagents.reagent_list) + if(bloodSample.data["mind"] && bloodSample.data["cloneable"] == 1) + mind = bloodSample.data["mind"] + ckey = bloodSample.data["ckey"] + realName = bloodSample.data["real_name"] + blood_gender = bloodSample.data["gender"] + blood_type = bloodSample.data["blood_type"] + W.reagents.clear_reagents() + user << "You inject the contents of the syringe into the seeds." + else + user << "The seeds reject the sample!" else - user << "There is already a genetic sample in these seeds." - else - return ..() + user << "The seeds already contain a genetic sample." + ..() /obj/item/seeds/grapeseed diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index e4f8c6be33e..4fff75a6bac 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -105,7 +105,7 @@ update_icon() -/obj/structure/bookcase/ex_act(severity, specialty) +/obj/structure/bookcase/ex_act(severity, target) ..() if(!gc_destroyed) for(var/obj/item/weapon/book/b in contents) diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index 52908779bc4..3748818c031 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -192,7 +192,7 @@ updateUsrDialog() return -/obj/machinery/mineral/ore_redemption/ex_act(severity, specialty) +/obj/machinery/mineral/ore_redemption/ex_act(severity, target) var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() @@ -357,7 +357,7 @@ new /obj/item/device/t_scanner/adv_mining_scanner(src.loc) qdel(voucher) -/obj/machinery/mineral/equipment_vendor/ex_act(severity, specialty) +/obj/machinery/mineral/equipment_vendor/ex_act(severity, target) var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 265172faf29..92e6a091471 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -18,7 +18,7 @@ var/scan_state = null //Holder for the image we display when we're pinged by a mining scanner var/hidden = 1 -/turf/simulated/mineral/ex_act(severity, specialty) +/turf/simulated/mineral/ex_act(severity, target) ..() switch(severity) if(3.0) @@ -494,8 +494,8 @@ /turf/simulated/floor/plating/asteroid/burn_tile() return -/turf/simulated/floor/plating/asteroid/ex_act(severity, specialty) - contents_explosion(src, severity, specialty) +/turf/simulated/floor/plating/asteroid/ex_act(severity, target) + contents_explosion(severity, target) switch(severity) if(3.0) return diff --git a/code/modules/mining/satchel_ore_boxdm.dm b/code/modules/mining/satchel_ore_boxdm.dm index 1b8394cbce1..c8311e58f8d 100644 --- a/code/modules/mining/satchel_ore_boxdm.dm +++ b/code/modules/mining/satchel_ore_boxdm.dm @@ -83,6 +83,6 @@ src.updateUsrDialog() return -obj/structure/ore_box/ex_act(severity, specialty) +obj/structure/ore_box/ex_act(severity, target) if(prob(100 / severity) && severity < 3) qdel(src) //nothing but ores can get inside unless its a bug and ores just return nothing on ex_act, not point in calling it on them \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index c8c8be9e829..587114bd587 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -26,7 +26,7 @@ if(l_store) l_store.emp_act(severity) ..() -/mob/living/carbon/alien/humanoid/ex_act(severity, specialty) +/mob/living/carbon/alien/humanoid/ex_act(severity, target) ..() var/shielded = 0 diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index ebb39cc84cf..7288651a2cc 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -34,7 +34,7 @@ ..(amount) -/mob/living/carbon/alien/larva/ex_act(severity, specialty) +/mob/living/carbon/alien/larva/ex_act(severity, target) ..() var/b_loss = null diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index e291877b51c..038aedc7952 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -80,9 +80,7 @@ stat("Energy Charge", round(wear_suit:cell:charge/100)) -/mob/living/carbon/human/ex_act(severity, specialty) - ..() - +/mob/living/carbon/human/ex_act(severity, ex_target) var/shielded = 0 var/b_loss = null var/f_loss = null @@ -142,6 +140,7 @@ update |= temp.take_damage(b_loss * 0.05, f_loss * 0.05) if(update) update_damage_overlays(0) + ..() /mob/living/carbon/human/blob_act() if(stat == 2) return diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 80ccb14492d..7594938f076 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -138,11 +138,11 @@ emp_act return 0 if(I.attack_verb && I.attack_verb.len) - visible_message("[src] has been [pick(I.attack_verb)] in the [hit_area] with [I] by [user]!", \ - "[src] has been [pick(I.attack_verb)] in the [hit_area] with [I] by [user]!") + visible_message("[user] has [pick(I.attack_verb)] [src] in the [hit_area] with [I]!", \ + "[user] has [pick(I.attack_verb)] [src] in the [hit_area] with [I]!") else if(I.force) - visible_message("[src] has been attacked in the [hit_area] with [I] by [user]!", \ - "[src] has been attacked in the [hit_area] with [I] by [user]!") + visible_message("[user] has attacked [src] in the [hit_area] with [I]!", \ + "[user] has attacked [src] in the [hit_area] with [I]!") else return 0 @@ -442,8 +442,8 @@ emp_act updatehealth() M.occupant_message("You hit [src].") - visible_message("[src] has been hit by [M.name].", \ - "[src] has been hit by [M.name].") + visible_message("[M.name] has hit [src]!", \ + "[M.name] has hit [src]!") add_logs(M.occupant, src, "attacked", object=M, addition="(INTENT: [uppertext(M.occupant.a_intent)]) (DAMTYPE: [uppertext(M.damtype)])") else diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 3d26f84da37..c819f219dcf 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -133,6 +133,12 @@ if(!H.getorgan(/obj/item/organ/brain)) standing += image("icon"='icons/mob/human_face.dmi', "icon_state" = "debrained_s", "layer" = -HAIR_LAYER) + if((H.wear_suit) && (H.wear_suit.hooded) && (H.wear_suit.suittoggled == 1)) + if(standing.len) + H.overlays_standing[HAIR_LAYER] = standing + H.apply_overlay(HAIR_LAYER) + return + else if(H.hair_style && HAIR in specflags) S = hair_styles_list[H.hair_style] if(S) @@ -158,7 +164,6 @@ H.overlays_standing[HAIR_LAYER] = standing H.apply_overlay(HAIR_LAYER) - return /datum/species/proc/handle_body(var/mob/living/carbon/human/H) @@ -811,11 +816,11 @@ return 0 if(I.attack_verb && I.attack_verb.len) - H.visible_message("[H] has been [pick(I.attack_verb)] in the [hit_area] with [I] by [user]!", \ - "[H] has been [pick(I.attack_verb)] in the [hit_area] with [I] by [user]!") + H.visible_message("[user] has [pick(I.attack_verb)] [H] in the [hit_area] with [I]!", \ + "[user] has [pick(I.attack_verb)] [H] in the [hit_area] with [I]!") else if(I.force) - H.visible_message("[H] has been attacked in the [hit_area] with [I] by [user]!", \ - "[H] has been attacked in the [hit_area] with [I] by [user]!") + H.visible_message("[user] has attacked [H] in the [hit_area] with [I]!", \ + "[user] has attacked [H] in the [hit_area] with [I]!") else return 0 @@ -896,23 +901,20 @@ if(istype(location, /turf/simulated)) location.add_blood_floor(H) - var/showname = "." - if(user) - showname = " by [user]!" - if(user != src) - user.do_attack_animation(H) - if(!(user in viewers(I, null))) - showname = "." - + var/message_verb = "" if(I.attack_verb && I.attack_verb.len) - H.visible_message("[H] has been [pick(I.attack_verb)] with [I][showname]", - "[H] has been [pick(I.attack_verb)] with [I][showname]") + message_verb = "[pick(I.attack_verb)]" else if(I.force) - H.visible_message("[H] has been attacked with [I][showname]", - "[H] has been attacked with [I][showname]") - if(!showname && user) - if(user.client) - user << "You attack [H] with [I]. " + message_verb = "attacked" + + var/attack_message = "[H] has been [message_verb] with [I]." + if(user) + user.do_attack_animation(src) + if(user in viewers(src, null)) + attack_message = "[user] has [message_verb] [H] with [I]!" + if(message_verb) + H.visible_message("[attack_message]", + "[attack_message]") return diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 388891c2187..8c35bd78298 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -149,6 +149,9 @@ Please contact me on #coderbus IRC. ~Carnie x if( (HUSK in mutations) || (head && (head.flags & BLOCKHAIR)) || (wear_mask && (wear_mask.flags & BLOCKHAIR)) ) return + if((wear_suit) && (wear_suit.hooded) && (wear_suit.suittoggled == 1)) + return + if(dna) dna.species.handle_hair(src) @@ -458,6 +461,7 @@ Please contact me on #coderbus IRC. ~Carnie x var/obj/item/clothing/suit/S = wear_suit standing.overlays += image("icon"='icons/effects/blood.dmi', "icon_state"="[S.blood_overlay_type]blood") + src.update_hair() apply_overlay(SUIT_LAYER) diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index efdb9d872a3..cdef1652274 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -194,7 +194,7 @@ /mob/living/carbon/monkey/var/co2overloadtime = null /mob/living/carbon/monkey/var/temperature_resistance = T0C+75 -/mob/living/carbon/monkey/ex_act(severity, specialty) +/mob/living/carbon/monkey/ex_act(severity, target) ..() switch(severity) if(1.0) diff --git a/code/modules/mob/living/carbon/slime/say.dm b/code/modules/mob/living/carbon/slime/say.dm index 0ede0e1d1bf..b7049020653 100644 --- a/code/modules/mob/living/carbon/slime/say.dm +++ b/code/modules/mob/living/carbon/slime/say.dm @@ -15,6 +15,6 @@ if(speaker != src && !radio_freq) if (speaker in Friends) speech_buffer = list() - speech_buffer += speaker.name + speech_buffer += speaker speech_buffer += lowertext(html_decode(message)) ..() diff --git a/code/modules/mob/living/carbon/slime/slime.dm b/code/modules/mob/living/carbon/slime/slime.dm index 86cc557e814..4a9d4291d3d 100644 --- a/code/modules/mob/living/carbon/slime/slime.dm +++ b/code/modules/mob/living/carbon/slime/slime.dm @@ -158,7 +158,7 @@ powerlevel = 0 // oh no, the power! ..() -/mob/living/carbon/slime/ex_act(severity, specialty) +/mob/living/carbon/slime/ex_act(severity, target) ..() var/b_loss = null diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 7d9357582f6..f9d4fe588e5 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -134,7 +134,7 @@ /mob/living/proc/InCritical() return (src.health < 0 && src.health > -95.0 && stat == UNCONSCIOUS) -/mob/living/ex_act(severity, specialty) +/mob/living/ex_act(severity, target) ..() if(client && !blinded) flick("flash", src.flash) @@ -428,8 +428,11 @@ return /mob/living/Move(atom/newloc, direct) - if (buckled && buckled.loc != newloc && !buckled.anchored) - return buckled.Move(newloc, direct) + if (buckled && buckled.loc != newloc) + if (!buckled.anchored) + return buckled.Move(newloc, direct) + else + return 0 if (restrained()) stop_pulling() @@ -471,8 +474,7 @@ if (prob(75)) var/obj/item/weapon/grab/G = pick(M.grabbed_by) if (istype(G, /obj/item/weapon/grab)) - for(var/mob/O in viewers(M, null)) - O.show_message(text("[] has been pulled from []'s grip by []", G.affecting, G.assailant, src), 1) + visible_message("[src] has pulled [G.affecting] from [G.assailant]'s grip.") qdel(G) else ok = 0 diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 87e9a0741c4..54898ef7638 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -87,8 +87,8 @@ proc/vol_by_throwforce_and_or_w_class(var/obj/item/I) return updatehealth() M.occupant_message("You hit [src].") - visible_message("[src] has been hit by [M.name].", \ - "[src] has been hit by [M.name].") + visible_message("[M.name] has hit [src]!", \ + "[M.name] has hit [src]!") add_logs(M.occupant, src, "attacked", object=M, addition="(INTENT: [uppertext(M.occupant.a_intent)]) (DAMTYPE: [uppertext(M.damtype)])") else step_away(src,M) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 89361266a4a..e43bbd5476f 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -312,7 +312,7 @@ var/list/ai_list = list() ai_call_shuttle() ..() -/mob/living/silicon/ai/ex_act(severity, specialty) +/mob/living/silicon/ai/ex_act(severity, target) ..() switch(severity) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 53d4fec79f6..a73ecc80042 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -136,7 +136,7 @@ if(3) src << "You feel an electric surge run through your circuitry and become acutely aware at how lucky you are that you can still feel at all." -/mob/living/silicon/pai/ex_act(severity, specialty) +/mob/living/silicon/pai/ex_act(severity, target) ..() switch(severity) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 04b0549377e..526602766c5 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -323,9 +323,7 @@ return 0 -/mob/living/silicon/robot/ex_act(severity, specialty) - ..() - +/mob/living/silicon/robot/ex_act(severity, target) switch(severity) if(1.0) gib() diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 597eda3fc5a..94754bbd387 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -18,6 +18,9 @@ var/med_hud = DATA_HUD_MEDICAL_ADVANCED //Determines the med hud to use var/sec_hud = DATA_HUD_SECURITY_ADVANCED //Determines the sec hud to use +/mob/living/silicon/contents_explosion(severity, target) + return + /mob/living/silicon/proc/cancelAlarm() return diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index 9d39a19cc07..7de2c6ff8c8 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -99,7 +99,7 @@ visible_message("The [src.name]'s stare chills [L.name] to the bone!") return -/mob/living/simple_animal/hostile/asteroid/basilisk/ex_act(severity, specialty) +/mob/living/simple_animal/hostile/asteroid/basilisk/ex_act(severity, target) switch(severity) if(1.0) gib() diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index de4d1fd2b3b..1919d88db64 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -64,7 +64,7 @@ if (O.damtype == STAMINA) damage = 0 health -= damage - visible_message("[src] has been attacked with [O] by [user]!") + visible_message("[user] has attacked [src] with [O]!") else visible_message("[src] blocks [O] with its shield!") playsound(loc, O.hitsound, 25, 1, -1) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index b295ffa078e..47804ba4eae 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -357,8 +357,8 @@ damage = O.force if (O.damtype == STAMINA) damage = 0 - visible_message("[src] has been [O.attack_verb.len ? "[pick(O.attack_verb)]": "attacked"] with [O] by [user]!",\ - "[src] has been attacked with [O] by [user]!") + visible_message("[user] has [O.attack_verb.len ? "[pick(O.attack_verb)]": "attacked"] [src] with [O]!",\ + "[user] has [O.attack_verb.len ? "[pick(O.attack_verb)]": "attacked"] you with [O]!") else visible_message("[O] bounces harmlessly off of [src].",\ "[O] bounces harmlessly off of [src].") @@ -398,7 +398,7 @@ Die() -/mob/living/simple_animal/ex_act(severity, specialty) +/mob/living/simple_animal/ex_act(severity, target) ..() switch (severity) if (1.0) diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index c03a32a8118..901fa258ca8 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -144,7 +144,7 @@ if(LAWYER) clothes_s = new /icon('icons/mob/uniform.dmi', "bluesuit_s") clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/suit.dmi', "suitjacket_blue_open"), ICON_OVERLAY) + clothes_s.Blend(new /icon('icons/mob/suit.dmi', "suitjacket_blue"), ICON_OVERLAY) clothes_s.Blend(new /icon('icons/mob/items_lefthand.dmi', "briefcase"), ICON_OVERLAY) if(backbag == 2) clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY) diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index b4cda2bbbb0..eb63063a421 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -269,7 +269,7 @@ copy = null updateUsrDialog() -/obj/machinery/photocopier/ex_act(severity, specialty) +/obj/machinery/photocopier/ex_act(severity, target) switch(severity) if(1.0) qdel(src) diff --git a/code/modules/power/antimatter/containment_jar.dm b/code/modules/power/antimatter/containment_jar.dm index 82258e1dac5..4dbb76755b4 100644 --- a/code/modules/power/antimatter/containment_jar.dm +++ b/code/modules/power/antimatter/containment_jar.dm @@ -15,7 +15,7 @@ var/stability = 100//TODO: add all the stability things to this so its not very safe if you keep hitting in on things -/obj/item/weapon/am_containment/ex_act(severity, specialty) +/obj/item/weapon/am_containment/ex_act(severity, target) switch(severity) if(1.0) explosion(get_turf(src), 1, 2, 3, 5)//Should likely be larger but this works fine for now I guess diff --git a/code/modules/power/antimatter/control.dm b/code/modules/power/antimatter/control.dm index 0c4831fda0c..b0c74c5aca3 100644 --- a/code/modules/power/antimatter/control.dm +++ b/code/modules/power/antimatter/control.dm @@ -112,7 +112,7 @@ return -/obj/machinery/power/am_control_unit/ex_act(severity, specialty) +/obj/machinery/power/am_control_unit/ex_act(severity, target) stability -= (80 - (severity * 20)) check_stability() return diff --git a/code/modules/power/antimatter/shielding.dm b/code/modules/power/antimatter/shielding.dm index be52c6ea443..0cec896235e 100644 --- a/code/modules/power/antimatter/shielding.dm +++ b/code/modules/power/antimatter/shielding.dm @@ -100,7 +100,7 @@ proc/cardinalrange(var/center) return -/obj/machinery/am_shielding/ex_act(severity, specialty) +/obj/machinery/am_shielding/ex_act(severity, target) stability -= (80 - (severity * 20)) check_stability() return diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 5adebd7b81f..d51b7dd813b 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -548,12 +548,12 @@ if (emagged || malfhack || (stat & BROKEN) || opened==2) new /obj/item/stack/sheet/metal(loc) user.visible_message(\ - "[src] has been cut apart by [user.name] with the weldingtool.",\ + "[user.name] has cut [src] apart with [W].",\ "You disassembled the broken APC frame.") else new /obj/item/apc_frame(loc) user.visible_message(\ - "[src] has been cut from the wall by [user.name] with the weldingtool.",\ + "[user.name] has cut [src] from the wall with [W].",\ "You cut the APC frame from the wall.") qdel(src) return @@ -588,7 +588,7 @@ && W.w_class >= 3.0 \ && prob(20) ) opened = 2 - user.visible_message("The APC cover was knocked down with the [W.name] by [user.name]!", \ + user.visible_message("[user.name] has knocked down the APC cover with the [W.name]!", \ "You knock down the APC cover with your [W.name]!", \ "You hear bang") update_icon() @@ -600,7 +600,7 @@ istype(W, /obj/item/weapon/wirecutters) || istype(W, /obj/item/device/assembly/signaler))) return src.attack_hand(user) user.do_attack_animation(src) - user.visible_message("The [src.name] has been hit with the [W.name] by [user.name]!", \ + user.visible_message("[user.name] has hit the [src.name] with the [W.name]!", \ "You hit the [src.name] with your [W.name]!", \ "You hear bang") @@ -1183,7 +1183,7 @@ obj/machinery/power/apc/proc/autoset(var/val, var/on) environ = 3 ..() -/obj/machinery/power/apc/ex_act(severity, specialty) +/obj/machinery/power/apc/ex_act(severity, target) ..() if(!gc_destroyed) switch(severity) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index d5445e52532..6b9753df305 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -174,7 +174,7 @@ By design, d1 is the smallest direction and d2 is the highest return 0 //explosion handling -/obj/structure/cable/ex_act(severity, specialty) +/obj/structure/cable/ex_act(severity, target) ..() if(!gc_destroyed) switch(severity) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 2d884754143..31b13bf9ed9 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -118,7 +118,7 @@ reliability -= 10 / severity ..() -/obj/item/weapon/stock_parts/cell/ex_act(severity, specialty) +/obj/item/weapon/stock_parts/cell/ex_act(severity, target) ..() if(!gc_destroyed) switch(severity) diff --git a/code/modules/power/engine.dm b/code/modules/power/engine.dm index 696d2bbd63a..d5874f7311a 100644 --- a/code/modules/power/engine.dm +++ b/code/modules/power/engine.dm @@ -4,8 +4,8 @@ /turf/simulated/floor/engine/attack_hand(var/mob/user as mob) user.Move_Pulled(src) -/turf/simulated/floor/engine/ex_act(severity, specialty) - contents_explosion(src, severity, specialty) +/turf/simulated/floor/engine/ex_act(severity, target) + contents_explosion(severity, target) switch(severity) if(1) ChangeTurf(/turf/space) diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 026279d3c00..c4147f0307a 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -28,7 +28,7 @@ var/const/GRAV_NEEDS_WRENCH = 3 unacidable = 1 var/sprite_number = 0 -/obj/machinery/gravity_generator/ex_act(severity, specialty) +/obj/machinery/gravity_generator/ex_act(severity, target) if(severity == 1) // Very sturdy. set_broken() diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 1e4dd2f0e7d..dd9af7e4a73 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -572,7 +572,7 @@ // explosion effect // destroy the whole light fixture or just shatter it -/obj/machinery/light/ex_act(severity, specialty) +/obj/machinery/light/ex_act(severity, target) ..() if(!gc_destroyed) switch(severity) diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index d39b4adebb7..2d4ede128b5 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -106,7 +106,7 @@ var/global/list/rad_collectors = list() return 1 -/obj/machinery/power/rad_collector/ex_act(severity, specialty) +/obj/machinery/power/rad_collector/ex_act(severity, target) switch(severity) if(2, 3) eject() diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index 6f864bfdbec..377670faa43 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -33,7 +33,7 @@ return 0 -/obj/machinery/field/containment/ex_act(severity, specialty) +/obj/machinery/field/containment/ex_act(severity, target) return 0 diff --git a/code/modules/power/singularity/particle_accelerator/particle.dm b/code/modules/power/singularity/particle_accelerator/particle.dm index 756d5a83858..7d41c552c37 100644 --- a/code/modules/power/singularity/particle_accelerator/particle.dm +++ b/code/modules/power/singularity/particle_accelerator/particle.dm @@ -49,7 +49,7 @@ return -/obj/effect/accelerated_particle/ex_act(severity, specialty) +/obj/effect/accelerated_particle/ex_act(severity, target) loc = null return diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 4f082bd3920..60a9f5f1cd9 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -59,7 +59,7 @@ /obj/machinery/singularity/blob_act(severity) return -/obj/machinery/singularity/ex_act(severity, specialty) +/obj/machinery/singularity/ex_act(severity, target) switch(severity) if(1.0) if(current_size <= STAGE_TWO) diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index 079447a3a9c..062f28cb028 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -147,7 +147,7 @@ var/list/solars_list = list() return -/obj/machinery/power/solar/ex_act(severity, specialty) +/obj/machinery/power/solar/ex_act(severity, target) ..() if(!gc_destroyed) switch(severity) @@ -513,7 +513,7 @@ var/list/solars_list = list() update_icon() -/obj/machinery/power/solar_control/ex_act(severity, specialty) +/obj/machinery/power/solar_control/ex_act(severity, target) ..() if(!gc_destroyed) switch(severity) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index a145d9e6f2a..a66edfd891d 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -51,7 +51,7 @@ recharge() dispensable_reagents = sortList(dispensable_reagents) -/obj/machinery/chem_dispenser/ex_act(severity, specialty) +/obj/machinery/chem_dispenser/ex_act(severity, target) if(severity < 3) ..() @@ -254,7 +254,7 @@ create_reagents(100) overlays += "waitlight" -/obj/machinery/chem_master/ex_act(severity, specialty) +/obj/machinery/chem_master/ex_act(severity, target) if(severity < 3) ..() diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index d4ecf61715e..4a278afbdbe 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -83,7 +83,7 @@ datum/reagent/proc/on_update(var/atom/A) return datum/reagent/blood - data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null) + data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null) name = "Blood" id = "blood" reagent_state = LIQUID @@ -109,7 +109,7 @@ datum/reagent/blood/on_new(var/list/data) datum/reagent/blood/on_merge(var/list/data) if(src.data && data) - + src.data["cloneable"] = 0 //On mix, consider the genetic sampling unviable for pod cloning, or else we won't know who's even getting cloned, etc if(src.data["viruses"] || data["viruses"]) var/list/mix1 = src.data["viruses"] diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index ca1af24a7bd..92c325faedf 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -43,8 +43,8 @@ if(ismob(target) && target.reagents && reagents.total_volume) var/mob/M = target var/R - target.visible_message("[target] has been splashed with something by [user]!", \ - "[target] has been splashed with something by [user]!") + target.visible_message("[user] has splashed [target] with something!", \ + "[user] has splashed [target] with something!") if(reagents) for(var/datum/reagent/A in reagents.reagent_list) R += A.id + " (" diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 52b027c2533..3e08174bdaa 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -110,7 +110,14 @@ temp_chem += R.name temp_chem[R.name] = R.volume B.data["trace_chem"] = list2params(temp_chem) - + if(T.mind) + B.data["mind"] = T.mind + if(T.ckey) + B.data["ckey"] = T.ckey + if(!T.suiciding) + B.data["cloneable"] = 1 + B.data["gender"] = T.gender + B.data["real_name"] = T.real_name reagents.reagent_list += B reagents.update_total() on_reagent_change() diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index b023db294d2..20caf94ffc0 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -10,7 +10,7 @@ var/amount_per_transfer_from_this = 10 var/possible_transfer_amounts = list(10,25,50,100) -/obj/structure/reagent_dispensers/ex_act(severity, specialty) +/obj/structure/reagent_dispensers/ex_act(severity, target) switch(severity) if(1.0) qdel(src) @@ -60,7 +60,7 @@ ..() reagents.add_reagent("water",1000) -/obj/structure/reagent_dispensers/watertank/ex_act(severity, specialty) +/obj/structure/reagent_dispensers/watertank/ex_act(severity, target) switch(severity) if(1.0) qdel(src) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index c64905ab810..36fdf7de1ec 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -156,8 +156,8 @@ user.visible_message("[user] climbs into [src].", \ "[user] climbs into [src].") else - target.visible_message("[target] has been placed in [src] by [user].", \ - "[target] has been placed in [src] by [user].") + target.visible_message("[user] has placed [target] in [src].", \ + "[user] has placed [target] in [src].") add_logs(user, target, "stuffed", addition="into [src]") update() @@ -794,12 +794,12 @@ // pipe affected by explosion -/obj/structure/disposalpipe/ex_act(severity, specialty) +/obj/structure/disposalpipe/ex_act(severity, target) //pass on ex_act to our contents before calling it on ourself var/obj/structure/disposalholder/H = locate() in src if(H) - contents_explosion(H, severity) + H.contents_explosion(severity, target) switch(severity) if(1.0) diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index b4f29e0529f..bd65c48c68d 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -80,7 +80,7 @@ ..() -/obj/machinery/r_n_d/server/ex_act(severity, specialty) +/obj/machinery/r_n_d/server/ex_act(severity, target) griefProtection() ..() diff --git a/code/modules/telesci/bscrystal.dm b/code/modules/telesci/bscrystal.dm index 4cbb4573dc5..9249d0c9ccd 100644 --- a/code/modules/telesci/bscrystal.dm +++ b/code/modules/telesci/bscrystal.dm @@ -9,15 +9,19 @@ origin_tech = "bluespace=4;materials=3" var/blink_range = 8 // The teleport range when crushed/thrown at someone. + /obj/item/bluespace_crystal/New() ..() pixel_x = rand(-5, 5) pixel_y = rand(-5, 5) + /obj/item/bluespace_crystal/attack_self(var/mob/user) + user.visible_message("[user] crushes [src]!") + new /obj/effect/effect/sparks(src.loc) + playsound(src.loc, "sparks", 50, 1) blink_mob(user) user.drop_item() - user.visible_message("[user] crushes the [src]!") qdel(src) /obj/item/bluespace_crystal/proc/blink_mob(var/mob/living/L) @@ -25,6 +29,9 @@ /obj/item/bluespace_crystal/throw_impact(atom/hit_atom) ..() + visible_message("[src] fizzles and disappears upon impact!") + new /obj/effect/effect/sparks(src.loc) + playsound(src.loc, "sparks", 50, 1) if(isliving(hit_atom)) blink_mob(hit_atom) qdel(src) diff --git a/html/changelog.html b/html/changelog.html index f2194dce259..229b1cbba16 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,33 @@ --> +
+

08 December 2014

+

Ergovisavi updated:

+ +

GunHog updated:

+ +

Paprika updated:

+ +

Tkdrg updated:

+ +
+

10 November 2014

Menshin updated:

diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index b42e39b6a17..fcf61ab1831 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -2099,3 +2099,44 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. with the target's name on it when escaping. - tweak: Changelings can absorb someone even if they have that DNA in storage already. - bugfix: Fixes hivemind being lost when readapting evolutions. +2014-12-08: + Ergovisavi: + - rscadd: Allows using replica pods to clone people without bodies. + - tweak: Speeds up replica pod cloning by adjusting the starting production. + - tweak: Replica pods will now only create plantmen. + - tweak: ' Mixing blood in a beaker or taking it from a suicide victim will render + the blood sample useless for replica pod cloning.' + GunHog: + - rscadd: Our top Nanotrasen scientists have provided improved specifications for + the Rapid Part Exchange Device (RPED)! The RPED can now contain up to 50 machine + components, and will display identical items in groups when using its inventory + interface. + - rscadd: Note that power cells, being somewhat bulkier, will take up more space + inside the device. In addition, the RPED's firmware has also been updated to + assist in new machine construction! Simply have the required components inside + the RPED, apply it to an unfinished machine with its circuit board installed, + and watch as the device does the work! + - rscadd: Nanotrasen has updated station bound Artificial Intelligence unit design + specifications to include an integrated subspace radio transmitter. The transmitter + is programmed with all standard department channels, along with the inclusion + of its private channel. It is accessed using :o in its interface. + - rscadd: '{INCOMING CLASSIFIED SYNDICATE TRANSMISSION} Greetings, agents! Today, + we are happy to announce that we have successfully reverse engineered the new + subspace radio found in Nanotrasen''s newest AI build plans. We have included + our encryption data into these transmitters. ' + - rscadd: Should you be deployed with one of our agent AIs, it may be wise of you + to purchase a syndicate encryption key in order to contact it securely. Remember, + as with other agents, a Syndicate AI is unlikely to be of the same Syndicate + corporation as you, and you both may actually have conflicting mission parameters! + Your channel, as always, is accessed using :t. + Paprika: + - tweak: Changed the way flashbang protection works. Currently, only security helmets + (and their derivatives like swat and riot), and some hardsuit helmets have flashbang + protection. Ear items like earmuffs and 'bowman' headsets (alternative, larger + headsets) have flashbang protection as well, so you're able to go hatless as + security. The Head of security, warden, and detective's hat do NOT have flashbang + protection, but their earpieces do, from the 'noise' part of the flashbang. + The flashbang blind still works as before, with only sunglasses/hardsuit helmets + protecting you. + Tkdrg: + - tweak: Security/Medical HUDs are now more responsive and less laggy. diff --git a/html/changelogs/Gun-Hog-Updates.yml b/html/changelogs/Gun-Hog-Updates.yml deleted file mode 100644 index 6fbc78564b3..00000000000 --- a/html/changelogs/Gun-Hog-Updates.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: GunHog -delete-after: True -changes: - - rscadd: "Our top Nanotrasen scientists have provided improved specifications for the Rapid Part Exchange Device (RPED)! The RPED can now contain up to 50 machine components, and will display identical items in groups when using its inventory interface." - - rscadd: "Note that power cells, being somewhat bulkier, will take up more space inside the device. In addition, the RPED's firmware has also been updated to assist in new machine construction! Simply have the required components inside the RPED, apply it to an unfinished machine with its circuit board installed, and watch as the device does the work!" - - rscadd: "Nanotrasen has updated station bound Artificial Intelligence unit design specifications to include an integrated subspace radio transmitter. The transmitter is programmed with all standard department channels, along with the inclusion of its private channel. It is accessed using :o in its interface." - - rscadd: "{INCOMING CLASSIFIED SYNDICATE TRANSMISSION} Greetings, agents! Today, we are happy to announce that we have successfully reverse engineered the new subspace radio found in Nanotrasen's newest AI build plans. We have included our encryption data into these transmitters. " - - rscadd: "Should you be deployed with one of our agent AIs, it may be wise of you to purchase a syndicate encryption key in order to contact it securely. Remember, as with other agents, a Syndicate AI is unlikely to be of the same Syndicate corporation as you, and you both may actually have conflicting mission parameters! Your channel, as always, is accessed using :t." diff --git a/html/changelogs/Paprka-Flashbangredux.yml b/html/changelogs/Paprka-Flashbangredux.yml deleted file mode 100644 index e5fac4c3c1b..00000000000 --- a/html/changelogs/Paprka-Flashbangredux.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Paprika -delete-after: True -changes: - - tweak: "Changed the way flashbang protection works. Currently, only security helmets (and their derivatives like swat and riot), and some hardsuit helmets have flashbang protection. Ear items like earmuffs and 'bowman' headsets (alternative, larger headsets) have flashbang protection as well, so you're able to go hatless as security. The Head of security, warden, and detective's hat do NOT have flashbang protection, but their earpieces do, from the 'noise' part of the flashbang. The flashbang blind still works as before, with only sunglasses/hardsuit helmets protecting you." \ No newline at end of file diff --git a/html/changelogs/Paprka-coatscoats.yml b/html/changelogs/Paprka-coatscoats.yml new file mode 100644 index 00000000000..243f353e93d --- /dev/null +++ b/html/changelogs/Paprka-coatscoats.yml @@ -0,0 +1,4 @@ +author: Paprika +delete-after: True +changes: + - rscadd: "Added winter coats and winter boots! Bundle up for space xmas! They are available in most wardrobe and job lockers, and come with special features depending on the flavor!" \ No newline at end of file diff --git a/html/changelogs/Tkdrg-HUDs.yml b/html/changelogs/Tkdrg-HUDs.yml deleted file mode 100644 index 192dba145fb..00000000000 --- a/html/changelogs/Tkdrg-HUDs.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: Tkdrg -delete-after: True - -changes: - - tweak: Security/Medical HUDs are now more responsive and less laggy. diff --git a/icons/mob/feet.dmi b/icons/mob/feet.dmi index 1298b4e3bfe..da1c71022d3 100644 Binary files a/icons/mob/feet.dmi and b/icons/mob/feet.dmi differ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 360862e3031..27c769a0207 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index 48d58fda6e7..16d9e3e706b 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 439540b1b54..2539574c18f 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi index b5156c4ffab..725367cf135 100644 Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 3d97f79f124..e537d98f50a 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/dice.dmi b/icons/obj/dice.dmi index 7801e542c3d..0c9cd35a6b2 100644 Binary files a/icons/obj/dice.dmi and b/icons/obj/dice.dmi differ