diff --git a/code/game/machinery/hydroponics.dm b/code/game/machinery/hydroponics.dm
index 788dce4a553..f2c0abb759e 100644
--- a/code/game/machinery/hydroponics.dm
+++ b/code/game/machinery/hydroponics.dm
@@ -892,17 +892,24 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(ckey && config.revival_pod_plants)
ghost = find_dead_player("[ckey]")
if(ismob(ghost))
- if(istype(mind,/datum/mind))
- if(!mind.current || mind.current == DEAD)
- make_podman = 1
+ if(istype(ghost,/mob/dead/observer))
+ var/mob/dead/observer/O = ghost
+ if(istype(mind,/datum/mind))
+ if(O.can_reenter_corpse)
+ make_podman = 1
+ else
+ make_podman = 1
+
if(make_podman) //all conditions met!
var/mob/living/carbon/human/podman = new /mob/living/carbon/human(parent.loc)
if(realName)
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
// -- Mode/mind specific stuff goes here. TODO! Broken :( Should be merged into mob/living/Login
switch(ticker.mode.name)
if ("revolution")
diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm
index a17cb6280c4..876d3769a98 100644
--- a/code/game/mecha/equipment/tools/tools.dm
+++ b/code/game/mecha/equipment/tools/tools.dm
@@ -747,6 +747,8 @@
var/charge = 0
if(pow_chan)
charge = 1000 //making magic
+ else
+ return chassis.dyngetcharge()
return charge
proc/get_power_channel(var/area/A)
diff --git a/code/game/objects/items/weapons/table_rack_parts.dm b/code/game/objects/items/weapons/table_rack_parts.dm
index f811db2f78a..042efc84203 100644
--- a/code/game/objects/items/weapons/table_rack_parts.dm
+++ b/code/game/objects/items/weapons/table_rack_parts.dm
@@ -14,7 +14,7 @@
/obj/item/weapon/table_parts/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/weapon/wrench))
- new /obj/item/stack/sheet/metal( src.loc )
+ new /obj/item/stack/sheet/metal( user.loc )
//SN src = null
del(src)
if (istype(W, /obj/item/stack/rods))
@@ -38,8 +38,8 @@
*/
/obj/item/weapon/table_parts/reinforced/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/wrench))
- new /obj/item/stack/sheet/metal( src.loc )
- new /obj/item/stack/rods( src.loc )
+ new /obj/item/stack/sheet/metal( user.loc )
+ new /obj/item/stack/rods( user.loc )
del(src)
/obj/item/weapon/table_parts/reinforced/attack_self(mob/user as mob)
@@ -53,7 +53,7 @@
*/
/obj/item/weapon/table_parts/wood/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/wrench))
- new /obj/item/stack/sheet/wood( src.loc )
+ new /obj/item/stack/sheet/wood( user.loc )
del(src)
/obj/item/weapon/table_parts/wood/attack_self(mob/user as mob)
@@ -68,7 +68,7 @@
/obj/item/weapon/rack_parts/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
if (istype(W, /obj/item/weapon/wrench))
- new /obj/item/stack/sheet/metal( src.loc )
+ new /obj/item/stack/sheet/metal( user.loc )
del(src)
return
return
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index 524522ac922..5fed0411c38 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -141,9 +141,12 @@
/obj/machinery/shower/attack_hand(mob/M as mob)
on = !on
update_icon()
- if(on && M.loc == loc)
- wash(M)
- check_heat(M)
+ if(on)
+ if (M.loc == loc)
+ wash(M)
+ check_heat(M)
+ for (var/atom/movable/G in src.loc)
+ G.clean_blood()
/obj/machinery/shower/attackby(obj/item/I as obj, mob/user as mob)
if(I.type == /obj/item/device/analyzer)
@@ -207,11 +210,32 @@
M.r_hand.clean_blood()
if(M.l_hand)
M.l_hand.clean_blood()
- if(M.wear_mask)
- if(M.wear_mask.clean_blood())
- M.update_inv_wear_mask(0)
+ if(M.back)
+ if(M.back.clean_blood())
+ M.update_inv_back(0)
if(ishuman(M))
var/mob/living/carbon/human/H = M
+ var/washgloves = 1
+ var/washshoes = 1
+ var/washmask = 1
+ var/washears = 1
+ var/washglasses = 1
+
+ if(H.wear_suit)
+ washgloves = !(H.wear_suit.flags_inv & HIDEGLOVES)
+ washshoes = !(H.wear_suit.flags_inv & HIDESHOES)
+
+ if(H.head)
+ washmask = !(H.head.flags_inv & HIDEMASK)
+ washglasses = !(H.head.flags_inv & HIDEEYES)
+ washears = !(H.head.flags_inv & HIDEEARS)
+
+ if(H.wear_mask)
+ if (washears)
+ washears = !(H.wear_mask.flags_inv & HIDEEARS)
+ if (washglasses)
+ washglasses = !(H.wear_mask.flags_inv & HIDEEYES)
+
if(H.head)
if(H.head.clean_blood())
H.update_inv_head(0)
@@ -221,11 +245,30 @@
else if(H.w_uniform)
if(H.w_uniform.clean_blood())
H.update_inv_w_uniform(0)
- if(H.shoes)
+ if(H.gloves && washgloves)
+ if(H.gloves.clean_blood())
+ H.update_inv_gloves(0)
+ if(H.shoes && washshoes)
if(H.shoes.clean_blood())
H.update_inv_shoes(0)
-
- O.clean_blood()
+ if(H.wear_mask && washmask)
+ if(H.wear_mask.clean_blood())
+ H.update_inv_wear_mask(0)
+ if(H.glasses && washglasses)
+ if(H.glasses.clean_blood())
+ H.update_inv_glasses(0)
+ if(H.ears && washears)
+ if(H.ears.clean_blood())
+ H.update_inv_ears(0)
+ if(H.belt)
+ if(H.belt.clean_blood())
+ H.update_inv_belt(0)
+ else
+ if(M.wear_mask) //if the mob is not human, it cleans the mask without asking for bitflags
+ if(M.wear_mask.clean_blood())
+ M.update_inv_wear_mask(0)
+ else
+ O.clean_blood()
if(isturf(loc))
var/turf/tile = loc
diff --git a/code/modules/mob/living/simple_animal/life.dm b/code/modules/mob/living/simple_animal/life.dm
index ccb00315d95..0a1085afb70 100644
--- a/code/modules/mob/living/simple_animal/life.dm
+++ b/code/modules/mob/living/simple_animal/life.dm
@@ -29,8 +29,8 @@
var/harm_intent_damage = 3
//Temperature effect
- var/minbodytemp = 270
- var/maxbodytemp = 370
+ var/minbodytemp = 250
+ var/maxbodytemp = 350
var/heat_damage_per_tick = 3 //amount of damage applied if animal's body temperature is higher than maxbodytemp
var/cold_damage_per_tick = 2 //same as heat_damage_per_tick, only if the bodytemperature it's lower than minbodytemp
@@ -135,7 +135,7 @@
if(isturf(A))
var/turf/T = A
var/areatemp = T.temperature
- if( abs(areatemp - bodytemperature) > 50 )
+ if( abs(areatemp - bodytemperature) > 40 )
var/diff = areatemp - bodytemperature
diff = diff / 5
//world << "changed from [bodytemperature] by [diff] to [bodytemperature + diff]"
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index c35b3227c76..3dbaa88e685 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -23,7 +23,7 @@
if(istype(A, /obj/effect/proc_holder/spell))
return
- if(istype(A, /obj/structure/reagent_dispensers)) //this block copypasted from reagent_containers/glass, for lack of a better solution
+ if(istype(A, /obj/structure/reagent_dispensers) && get_dist(src,A) <= 1) //this block copypasted from reagent_containers/glass, for lack of a better solution
if(!A.reagents.total_volume && A.reagents)
user << "\The [A] is empty."
return
@@ -128,7 +128,7 @@
if(istype(A, /obj/effect/proc_holder/spell))
return
- if(istype(A, /obj/structure/reagent_dispensers)) //this block copypasted from reagent_containers/glass, for lack of a better solution
+ if(istype(A, /obj/structure/reagent_dispensers) && get_dist(src,A) <= 1) //this block copypasted from reagent_containers/glass, for lack of a better solution
if(!A.reagents.total_volume && A.reagents)
user << "\The [A] is empty."
return