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:
+
+ - Allows using replica pods to clone people without bodies.
+ - Speeds up replica pod cloning by adjusting the starting production.
+ - Replica pods will now only create plantmen.
+ - Mixing blood in a beaker or taking it from a suicide victim will render the blood sample useless for replica pod cloning.
+
+
GunHog updated:
+
+ - 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.
+ - 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!
+ - 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.
+ - {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.
+ - 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 updated:
+
+ - 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 updated:
+
+ - Security/Medical HUDs are now more responsive and less laggy.
+
+
+
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