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