diff --git a/code/datums/components/antags/changeling/changeling.dm b/code/datums/components/antags/changeling/changeling.dm index 0a1096e9e1..113b76d7d7 100644 --- a/code/datums/components/antags/changeling/changeling.dm +++ b/code/datums/components/antags/changeling/changeling.dm @@ -68,6 +68,9 @@ GLOBAL_LIST_EMPTY_TYPED(powerinstances, /datum/power/changeling) var/datum/mind/our_mind = M if(our_mind.current) changeling = (our_mind.current.GetComponent(/datum/component/antag/changeling)) //Check to see if the mob we are currently inhabiting is a changeling. + if(!changeling) + if(our_mind.antag_holder.changeling) //Check our mind's antag holder. + changeling = our_mind.antag_holder.changeling else //Fed it a mob and we failed if(M.mind) changeling = M.mind.antag_holder.changeling //Check our mind's antag holder. diff --git a/code/datums/diseases/advance/symptoms/fever.dm b/code/datums/diseases/advance/symptoms/fever.dm index 57554fefe3..4809abe888 100644 --- a/code/datums/diseases/advance/symptoms/fever.dm +++ b/code/datums/diseases/advance/symptoms/fever.dm @@ -65,7 +65,7 @@ Bonus if(!unsafe || A.stage < 4) to_chat(M, span_warning(pick("You feel hot.", "You feel like you're burning."))) else - to_chat(M, span_userdanger(pick("You feel too hot", "You feel like your blod is boiling."))) + to_chat(M, span_userdanger(pick("You feel too hot", "You feel like your blood is boiling."))) set_body_temp(A.affected_mob, A) /datum/symptom/fever/proc/set_body_temp(mob/living/M, datum/disease/advance/A) diff --git a/code/game/objects/effects/decals/Cleanable/fuel.dm b/code/game/objects/effects/decals/Cleanable/fuel.dm index 1ca8062112..e424c05aa7 100644 --- a/code/game/objects/effects/decals/Cleanable/fuel.dm +++ b/code/game/objects/effects/decals/Cleanable/fuel.dm @@ -21,10 +21,8 @@ //Be absorbed by any other liquid fuel in the tile. for(var/obj/effect/decal/cleanable/liquid_fuel/other in loc) if(other != src) - other.amount += src.amount - other.Spread() - has_spread = 1 - break + amount += other.amount + qdel(other) . = ..() if(!has_spread) diff --git a/code/game/objects/items/devices/personal_shield_generator_vr.dm b/code/game/objects/items/devices/personal_shield_generator_vr.dm index c5ac714dea..5b16cf910c 100644 --- a/code/game/objects/items/devices/personal_shield_generator_vr.dm +++ b/code/game/objects/items/devices/personal_shield_generator_vr.dm @@ -126,6 +126,9 @@ s.set_up(5, 1, src) s.start() shield_active = 0 + if(isliving(loc)) + var/mob/living/our_user = loc + our_user.remove_modifiers_of_type(/datum/modifier/shield_projection) if(bcell.charge_delay) //It WILL blow up soon. Downside of self-charging cells. to_chat(src.loc, span_critical("Your shield generator sparks and suddenly goes down! A warning message pops up on screen: \ 'WARNING, INTERNAL CELL MELTDOWN IMMINENT. TIME TILL EXPLOSION: [bcell.charge_delay/10] SECONDS. DISCARD UNIT IMMEDIATELY!'")) diff --git a/code/game/objects/items/devices/scanners/sleevemate.dm b/code/game/objects/items/devices/scanners/sleevemate.dm index 86d061f161..1f719725fa 100644 --- a/code/game/objects/items/devices/scanners/sleevemate.dm +++ b/code/game/objects/items/devices/scanners/sleevemate.dm @@ -72,6 +72,10 @@ GLOBAL_DATUM(sleevemate_mob, /mob/living/carbon/human/dummy/mannequin) M.ooc_notes_maybes = ooc_notes_maybes M.ooc_notes_style = ooc_notes_style M.soulcatcher_pref_flags = soulcatcher_pref_flags + if(ishuman(M)) //Has to be done here since making someone a changeling requires an active mind. + var/mob/living/carbon/human/ling_test = M + if(ling_test.changeling_locked) + M.make_changeling() SEND_GLOBAL_SIGNAL(COMSIG_GLOB_RESLEEVED_MIND, M, stored_mind) clear_mind() diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 716ae1761a..bc1e581464 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -166,8 +166,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM . += "[src] is nearly burnt out!" /obj/item/clothing/mask/smokable/proc/light(flavor_text = "[usr] lights the [name].") - if(!src.lit) - src.lit = 1 + if(!lit) + lit = TRUE playsound(src, 'sound/items/cigs_lighters/cig_light.ogg', 75, 1, -1) damtype = BURN if(reagents.get_reagent_amount(REAGENT_ID_PHORON)) // the phoron explodes when exposed to fire @@ -189,6 +189,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM update_icon() set_light(2, 0.25, "#E38F46") START_PROCESSING(SSobj, src) + return ITEM_INTERACT_SUCCESS /obj/item/clothing/mask/smokable/proc/die(nomessage = 0) var/turf/T = get_turf(src) @@ -302,14 +303,13 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(nicotine_amt) reagents.add_reagent(REAGENT_ID_NICOTINE, nicotine_amt) -/obj/item/clothing/mask/smokable/cigarette/attackby(obj/item/W as obj, mob/user as mob) +/obj/item/clothing/mask/smokable/cigarette/attackby(obj/item/W, mob/user) ..() if(istype(W, /obj/item/melee/energy/sword)) var/obj/item/melee/energy/sword/S = W if(S.active) - light(span_warning("[user] swings their [W], barely missing their nose. They light their [name] in the process.")) - + return light(span_warning("[user] swings their [W], barely missing their nose. They light their [name] in the process.")) return /obj/item/clothing/mask/smokable/cigarette/afterattack(obj/item/reagent_containers/glass/glass, mob/user as mob, proximity) @@ -668,22 +668,17 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/flame/lighter/attack(mob/living/M, mob/living/user, target_zone, attack_modifier) if(lit == 1) - M.ignite_mob() - add_attack_logs(user,M,"Lit on fire with [src]") - return ITEM_INTERACT_SUCCESS + if((user.a_intent == I_HURT || user.a_intent == I_HELP && prob(25)) && M.ignite_mob()) + add_attack_logs(user,M,"Lit on fire with [src]") + return ITEM_INTERACT_SUCCESS if(istype(M.wear_mask, /obj/item/clothing/mask/smokable/cigarette) && user.zone_sel.selecting == O_MOUTH && lit) var/obj/item/clothing/mask/smokable/cigarette/cig = M.wear_mask if(M == user) - cig.attackby(src, user) - return ITEM_INTERACT_SUCCESS + return cig.attackby(src, user) else - if(istype(src, /obj/item/flame/lighter/zippo)) - cig.light(span_notice(span_rose("[user] whips the [name] out and holds it for [M]."))) - else - cig.light(span_notice("[user] holds the [name] out for [M], and lights the [cig.name].")) - return ITEM_INTERACT_SUCCESS + return cig.light(display_offer_text(M, user, cig.name)) else ..() @@ -693,6 +688,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM location.hotspot_expose(700, 5) return +/obj/item/flame/lighter/proc/display_offer_text(mob/living/target, mob/living/user, cig_name) + return (span_notice("[user] holds the [name] out for [target], and lights the [cig_name].")) + ///////// //ZIPPO// ///////// @@ -738,6 +736,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM STOP_PROCESSING(SSobj, src) return +/obj/item/flame/lighter/zippo/display_offer_text(mob/living/target, mob/living/user, cig_name) + return (span_notice(span_rose("[user] whips the [name] out and holds it for [target], igniting the [cig_name]."))) + //Here we add Zippo skins. /obj/item/flame/lighter/zippo/black @@ -813,6 +814,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM ///Special supermatter var used for attack_self chain logic. var/special_supermatter = FALSE +/obj/item/flame/lighter/supermatter/display_offer_text(mob/living/target, mob/living/user, cig_name) + return (span_notice(span_crimson("[user] whips the [name] out and holds it for [target], turning the tip of the [cig_name] to ash and lighting it!"))) + /obj/item/flame/lighter/supermatter/syndismzippo name = "Phoron Supermatter Zippo" // Syndicate SM Lighter desc = "State of the Art Supermatter Lighter." @@ -882,26 +886,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM STOP_PROCESSING(SSobj, src) return ITEM_INTERACT_SUCCESS - -/obj/item/flame/lighter/supermatter/attack(mob/living/M, mob/living/user, target_zone, attack_modifier) - if(lit == 1) - M.ignite_mob() - add_attack_logs(user,M,"Lit on fire with [src]") - return ITEM_INTERACT_SUCCESS - - if(istype(M.wear_mask, /obj/item/clothing/mask/smokable/cigarette) && user.zone_sel.selecting == O_MOUTH && lit) - var/obj/item/clothing/mask/smokable/cigarette/cig = M.wear_mask - if(M == user) - cig.attackby(src, user) - else - if(istype(src, /obj/item/flame/lighter/supermatter)) - cig.light(span_notice(span_rose("[user] whips the [name] out and holds it for [M]."))) - else - cig.light(span_notice("[user] holds the [name] out for [M], and lights the [cig.name].")) - return ITEM_INTERACT_SUCCESS - else - ..() - /obj/item/flame/lighter/supermatter/process() var/turf/location = get_turf(src) if(location) @@ -955,27 +939,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM STOP_PROCESSING(SSobj, src) return ITEM_INTERACT_SUCCESS - -/obj/item/flame/lighter/supermatter/syndismzippo/attack(mob/living/M, mob/living/user, target_zone, attack_modifier) - if(lit == 1) - M.ignite_mob() - add_attack_logs(user,M,"Lit on fire with [src]") - return ITEM_INTERACT_SUCCESS - - if(istype(M.wear_mask, /obj/item/clothing/mask/smokable/cigarette) && user.zone_sel.selecting == O_MOUTH && lit) - var/obj/item/clothing/mask/smokable/cigarette/cig = M.wear_mask - if(M == user) - cig.attackby(src, user) - return ITEM_INTERACT_SUCCESS - else - if(istype(src, /obj/item/flame/lighter/supermatter/syndismzippo)) - cig.light(span_notice(span_rose("[user] whips the [name] out and holds it for [M]."))) - else - cig.light(span_notice("[user] holds the [name] out for [M], and lights the [cig.name].")) - return ITEM_INTERACT_SUCCESS - else - ..() - /obj/item/flame/lighter/process() var/turf/location = get_turf(src) if(location) @@ -1130,23 +1093,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM STOP_PROCESSING(SSobj, src) return ITEM_INTERACT_SUCCESS -/obj/item/flame/lighter/supermatter/expsmzippo/attack(mob/living/M, mob/living/user, target_zone, attack_modifier) - if (lit == 1) - M.ignite_mob() - add_attack_logs(user, M, "Lit on fire with [src]") - - if (istype(M.wear_mask, /obj/item/clothing/mask/smokable/cigarette) && user.zone_sel.selecting == O_MOUTH && lit) - var/obj/item/clothing/mask/smokable/cigarette/cig = M.wear_mask - if (M == user) - cig.attackby(src, user) - else - if (istype(src, /obj/item/flame/lighter/supermatter/expsmzippo)) - cig.light(span_notice(span_rose("[user] whips the [name] out and holds it for [M]."))) - else - cig.light(span_notice("[user] holds the [name] out for [M], and lights the [cig.name].")) - else - ..() - /obj/item/flame/lighter/supermatter/expsmzippo/process() var/turf/location = get_turf(src) if (location) diff --git a/code/game/turfs/simulated/wall_attacks.dm b/code/game/turfs/simulated/wall_attacks.dm index 5837cfc55d..e94da8231d 100644 --- a/code/game/turfs/simulated/wall_attacks.dm +++ b/code/game/turfs/simulated/wall_attacks.dm @@ -99,7 +99,8 @@ try_touch(user, rotting) /turf/simulated/wall/attack_hand(mob/user) - + if(!Adjacent(user)) + return radiate() add_fingerprint(user) user.setClickCooldown(user.get_attack_speed()) diff --git a/code/game/turfs/simulated/wall_types.dm b/code/game/turfs/simulated/wall_types.dm index 2e90eb578d..abe8861127 100644 --- a/code/game/turfs/simulated/wall_types.dm +++ b/code/game/turfs/simulated/wall_types.dm @@ -1,59 +1,59 @@ /turf/simulated/wall/r_wall icon_state = "rgeneric" rad_insulation = RAD_HEAVY_INSULATION -/turf/simulated/wall/r_wall/Initialize(mapload) +/turf/simulated/wall/r_wall/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_PLASTEEL,MAT_PLASTEEL) //3strong /turf/simulated/wall/shull icon_state = "hull-steel" -/turf/simulated/wall/shull/Initialize(mapload) //Spaaaace ship. +/turf/simulated/wall/shull/Initialize(mapload, materialtype, rmaterialtype, girdertype) //Spaaaace ship. . = ..(mapload, MAT_STEELHULL, null, MAT_STEELHULL) /turf/simulated/wall/rshull icon_state = "hull-r_steel" rad_insulation = RAD_HEAVY_INSULATION -/turf/simulated/wall/rshull/Initialize(mapload) +/turf/simulated/wall/rshull/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_STEELHULL, MAT_STEELHULL, MAT_STEELHULL) /turf/simulated/wall/pshull icon_state = "hull-plasteel" rad_insulation = RAD_HEAVY_INSULATION -/turf/simulated/wall/pshull/Initialize(mapload) //Spaaaace-er ship. +/turf/simulated/wall/pshull/Initialize(mapload, materialtype, rmaterialtype, girdertype) //Spaaaace-er ship. . = ..(mapload, MAT_PLASTEELHULL, null, MAT_PLASTEELHULL) /turf/simulated/wall/rpshull icon_state = "hull-r_plasteel" -/turf/simulated/wall/rpshull/Initialize(mapload) +/turf/simulated/wall/rpshull/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_PLASTEELHULL, MAT_PLASTEELHULL, MAT_PLASTEELHULL) /turf/simulated/wall/dshull icon_state = "hull-durasteel" rad_insulation = RAD_HEAVY_INSULATION -/turf/simulated/wall/dshull/Initialize(mapload) //Spaaaace-est ship. +/turf/simulated/wall/dshull/Initialize(mapload, materialtype, rmaterialtype, girdertype) //Spaaaace-est ship. . = ..(mapload, MAT_DURASTEELHULL, null, MAT_DURASTEELHULL) /turf/simulated/wall/rdshull icon_state = "hull-r_durasteel" rad_insulation = RAD_EXTREME_INSULATION -/turf/simulated/wall/rdshull/Initialize(mapload) +/turf/simulated/wall/rdshull/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_DURASTEELHULL, MAT_DURASTEELHULL, MAT_DURASTEELHULL) /turf/simulated/wall/thull icon_state = "hull-titanium" rad_insulation = RAD_HEAVY_INSULATION -/turf/simulated/wall/thull/Initialize(mapload) +/turf/simulated/wall/thull/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_TITANIUMHULL, null, MAT_TITANIUMHULL) /turf/simulated/wall/rthull icon_state = "hull-r_titanium" rad_insulation = RAD_EXTREME_INSULATION -/turf/simulated/wall/rthull/Initialize(mapload) +/turf/simulated/wall/rthull/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_TITANIUMHULL, MAT_TITANIUMHULL, MAT_TITANIUMHULL) /turf/simulated/wall/cult icon_state = "cult" -/turf/simulated/wall/cult/Initialize(mapload) +/turf/simulated/wall/cult/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_CULT,MAT_CULT2,MAT_CULT) /turf/unsimulated/wall/cult name = "cult wall" @@ -61,115 +61,115 @@ icon = 'icons/turf/wall_masks.dmi' icon_state = "cult" -/turf/simulated/wall/iron/Initialize(mapload) +/turf/simulated/wall/iron/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_IRON) -/turf/simulated/wall/uranium/Initialize(mapload) +/turf/simulated/wall/uranium/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_URANIUM) -/turf/simulated/wall/diamond/Initialize(mapload) +/turf/simulated/wall/diamond/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_DIAMOND) -/turf/simulated/wall/gold/Initialize(mapload) +/turf/simulated/wall/gold/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_GOLD) -/turf/simulated/wall/silver/Initialize(mapload) +/turf/simulated/wall/silver/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_SILVER) /turf/simulated/wall/lead rad_insulation = RAD_EXTREME_INSULATION -/turf/simulated/wall/lead/Initialize(mapload) +/turf/simulated/wall/lead/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_LEAD) /turf/simulated/wall/r_lead rad_insulation = RAD_EXTREME_INSULATION -/turf/simulated/wall/r_lead/Initialize(mapload) +/turf/simulated/wall/r_lead/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_LEAD, MAT_LEAD) -/turf/simulated/wall/phoron/Initialize(mapload) +/turf/simulated/wall/phoron/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_PHORON) -/turf/simulated/wall/sandstone/Initialize(mapload) +/turf/simulated/wall/sandstone/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_SANDSTONE) -/turf/simulated/wall/ironphoron/Initialize(mapload) +/turf/simulated/wall/ironphoron/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_IRON,MAT_PHORON) -/turf/simulated/wall/golddiamond/Initialize(mapload) +/turf/simulated/wall/golddiamond/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_GOLD,MAT_DIAMOND) -/turf/simulated/wall/silvergold/Initialize(mapload) +/turf/simulated/wall/silvergold/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_SILVER,MAT_GOLD) -/turf/simulated/wall/sandstonediamond/Initialize(mapload) +/turf/simulated/wall/sandstonediamond/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_SANDSTONE,MAT_DIAMOND) -/turf/simulated/wall/snowbrick/Initialize(mapload) +/turf/simulated/wall/snowbrick/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_SNOWBRICK) -/turf/simulated/wall/resin/Initialize(mapload) +/turf/simulated/wall/resin/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_RESIN,null,MAT_RESIN) /turf/simulated/wall/concrete icon_state = "brick" rad_insulation = RAD_HEAVY_INSULATION -/turf/simulated/wall/concrete/Initialize(mapload) +/turf/simulated/wall/concrete/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_CONCRETE) //3strong /turf/simulated/wall/r_concrete rad_insulation = RAD_HEAVY_INSULATION icon_state = "rbrick" -/turf/simulated/wall/r_concrete/Initialize(mapload) +/turf/simulated/wall/r_concrete/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_CONCRETE,MAT_PLASTEELREBAR) //3strong // Kind of wondering if this is going to bite me in the butt. -/turf/simulated/wall/skipjack/Initialize(mapload) +/turf/simulated/wall/skipjack/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_ALIENALLOY) /turf/simulated/wall/skipjack/attackby() return -/turf/simulated/wall/titanium/Initialize(mapload) +/turf/simulated/wall/titanium/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_TITANIUM) /turf/simulated/wall/durasteel rad_insulation = RAD_HEAVY_INSULATION -/turf/simulated/wall/durasteel/Initialize(mapload) +/turf/simulated/wall/durasteel/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_DURASTEEL, MAT_DURASTEEL) // CHOMPAdd Start -/turf/simulated/wall/durasteel/blueserg/Initialize(mapload) +/turf/simulated/wall/durasteel/blueserg/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_DURASTEEL, MAT_DURASTEEL) /turf/simulated/wall/durasteel/blueserg/attackby(obj/item/I, mob/user) return // CHOMPAdd ENd -/turf/simulated/wall/wood/Initialize(mapload) +/turf/simulated/wall/wood/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_WOOD) -/turf/simulated/wall/hardwood/Initialize(mapload) +/turf/simulated/wall/hardwood/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_HARDWOOD) -/turf/simulated/wall/sifwood/Initialize(mapload) +/turf/simulated/wall/sifwood/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_SIFWOOD) // CHOMPEdit Start -/turf/simulated/wall/rsifwood/Initialize(mapload) +/turf/simulated/wall/rsifwood/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_SIFWOOD, MAT_SIFWOOD, MAT_SIFWOOD) // CHOMPEdit End -/turf/simulated/wall/birchwood/Initialize(mapload) +/turf/simulated/wall/birchwood/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_BIRCHWOOD) -/turf/simulated/wall/pinewood/Initialize(mapload) +/turf/simulated/wall/pinewood/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_PINEWOOD) -/turf/simulated/wall/oakwood/Initialize(mapload) +/turf/simulated/wall/oakwood/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_OAKWOOD) -/turf/simulated/wall/acaciawood/Initialize(mapload) +/turf/simulated/wall/acaciawood/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_ACACIAWOOD) -/turf/simulated/wall/redwood/Initialize(mapload) +/turf/simulated/wall/redwood/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_REDWOOD) -/turf/simulated/wall/log/Initialize(mapload) +/turf/simulated/wall/log/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_LOG) -/turf/simulated/wall/log_sif/Initialize(mapload) +/turf/simulated/wall/log_sif/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_SIFLOG) /turf/unsimulated/wall/ice @@ -477,7 +477,7 @@ /turf/simulated/wall/eris/r_wall icon_state = "rgeneric" -/turf/simulated/wall/eris/r_wall/Initialize(mapload) +/turf/simulated/wall/eris/r_wall/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_PLASTEEL,MAT_PLASTEEL) // Bay walls @@ -525,7 +525,7 @@ /turf/simulated/wall/bay/r_wall icon_state = "rgeneric" -/turf/simulated/wall/bay/r_wall/Initialize(mapload) +/turf/simulated/wall/bay/r_wall/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_PLASTEEL,MAT_PLASTEEL) /turf/simulated/wall/tgmc @@ -621,22 +621,23 @@ icon_state = "rwall0" wall_base_state = "rwall" wall_blend_category = "rwall" -/turf/simulated/wall/tgmc/rwall/Initialize(mapload) +/turf/simulated/wall/tgmc/rwall/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_PLASTEEL,MAT_PLASTEEL) /turf/simulated/wall/tgmc/gray icon_state = "gray0" wall_base_state = "gray" wall_blend_category = "gray" -/turf/simulated/wall/tgmc/gwall/Initialize(mapload) +/turf/simulated/wall/tgmc/gwall/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_PLASTEEL,MAT_PLASTEEL) /turf/simulated/wall/tgmc/darkwall icon_state = "darkwall0" wall_base_state = "darkwall" wall_blend_category = "darkwall" -/turf/simulated/wall/tgmc/darkwall/Initialize(mapload) +/turf/simulated/wall/tgmc/darkwall/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_PLASTEEL,MAT_PLASTEEL) + /turf/simulated/wall/tgmc/darkwall/deco0 icon_state = "darkwall_deco0" force_icon = "_deco0" @@ -658,14 +659,14 @@ icon_state = "white0" wall_base_state = "white" wall_blend_category = "white" -/turf/simulated/wall/tgmc/whitewall/Initialize(mapload) +/turf/simulated/wall/tgmc/whitewall/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_STEEL,MAT_PLASTIC) /turf/simulated/wall/tgmc/durawall icon_state = "darkband0" wall_base_state = "darkband" wall_blend_category = "darkband" -/turf/simulated/wall/tgmc/durawall/Initialize(mapload) +/turf/simulated/wall/tgmc/durawall/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_DURASTEEL,MAT_DURASTEEL) /turf/simulated/wall/tgmc/durawall/deco0 icon_state = "darkband_deco0" @@ -684,14 +685,14 @@ icon_state = "whiteband0" wall_base_state = "whiteband" wall_blend_category = "whiteband" -/turf/simulated/wall/tgmc/sanitary/Initialize(mapload) +/turf/simulated/wall/tgmc/sanitary/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_PLASTEEL,MAT_PLASTEEL) /turf/simulated/wall/tgmc/chigusa icon_state = "chigusa0" wall_base_state = "chigusa" wall_blend_category = "chigusa" -/turf/simulated/wall/tgmc/chigusa/Initialize(mapload) +/turf/simulated/wall/tgmc/chigusa/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_CHITIN,MAT_CHITIN) /turf/simulated/wall/tgmc/chigusa/deco0 icon_state = "chigusa_deco0" @@ -707,28 +708,28 @@ icon_state = "redstripe0" wall_base_state = "redstripe" wall_blend_category = "redstripe" -/turf/simulated/wall/tgmc/redstripe/Initialize(mapload) +/turf/simulated/wall/tgmc/redstripe/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_PLASTEELHULL,MAT_PLASTEELHULL) /turf/simulated/wall/tgmc/redstripe_r icon_state = "redstriper0" wall_base_state = "redstriper" wall_blend_category = "redstriper" -/turf/simulated/wall/tgmc/redstripe_r/Initialize(mapload) +/turf/simulated/wall/tgmc/redstripe_r/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_DURASTEELHULL,MAT_DURASTEELHULL) /turf/simulated/wall/tgmc/plain_redstripe icon_state = "predstripe0" wall_base_state = "predstripe" wall_blend_category = "predstripe" -/turf/simulated/wall/tgmc/plain_redstripe/Initialize(mapload) +/turf/simulated/wall/tgmc/plain_redstripe/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_PLASTEEL,MAT_PLASTEEL) /turf/simulated/wall/tgmc/plain_redstripe_r icon_state = "predstriper0" wall_base_state = "predstriper" wall_blend_category = "predstriper" -/turf/simulated/wall/tgmc/plain_redstripe_r/Initialize(mapload) +/turf/simulated/wall/tgmc/plain_redstripe_r/Initialize(mapload, materialtype, rmaterialtype, girdertype) . = ..(mapload, MAT_DURASTEEL,MAT_DURASTEEL) #define WINDOW_GLASS 0x1 diff --git a/code/modules/materials/materials/_materials.dm b/code/modules/materials/materials/_materials.dm index 69c3cafe05..27335205b2 100644 --- a/code/modules/materials/materials/_materials.dm +++ b/code/modules/materials/materials/_materials.dm @@ -223,7 +223,6 @@ GLOBAL_LIST_INIT(name_to_material, populate_material_list()) var/conductivity = null // How conductive the material is. Iron acts as the baseline, at 10. var/list/composite_material // If set, object matter var will be a list containing these values. var/luminescence - var/radiation_resistance = 0 // Radiation resistance, which is added on top of a material's weight for blocking radiation. Needed to make lead special without superrobust weapons. var/supply_conversion_value // Supply points per sheet that this material sells for. var/can_sharpen = TRUE // Is this material compatible with a sharpening kit? diff --git a/code/modules/materials/materials/gems.dm b/code/modules/materials/materials/gems.dm index 9d2f46d27c..10209678b6 100644 --- a/code/modules/materials/materials/gems.dm +++ b/code/modules/materials/materials/gems.dm @@ -109,7 +109,6 @@ conductive = 0 conductivity = 5 reflectivity = 0.5 - radiation_resistance = 20 spatial_instability = 30 sheet_singular_name = "gem" sheet_plural_name = "gems" @@ -132,7 +131,6 @@ negation = 15 conductivity = 60 reflectivity = 0.3 - radiation_resistance = 5 sheet_singular_name = "sheet" sheet_plural_name = "sheets" supply_conversion_value = 8 @@ -156,7 +154,6 @@ negation = 25 explosion_resistance = 85 reflectivity = 0.2 - radiation_resistance = 10 supply_conversion_value = 13 icon_base = "stone" table_icon_base = "stone" @@ -178,7 +175,6 @@ negation = 35 explosion_resistance = 20 reflectivity = 1 - radiation_resistance = 100 supply_conversion_value = 15 icon_base = "stone" table_icon_base = "stone" @@ -240,7 +236,6 @@ explosion_resistance = 13 negation = 12 spatial_instability = 18 - radiation_resistance = 18 supply_conversion_value = 12 can_sharpen = TRUE diff --git a/code/modules/materials/materials/metals/metals.dm b/code/modules/materials/materials/metals/metals.dm index e24c60630f..74c0d51657 100644 --- a/code/modules/materials/materials/metals/metals.dm +++ b/code/modules/materials/materials/metals/metals.dm @@ -58,7 +58,6 @@ conductivity = 10 sheet_singular_name = "ingot" sheet_plural_name = "ingots" - radiation_resistance = 25 // Lead is Special and so gets to block more radiation than it normally would with just weight, totalling in 48 protection. supply_conversion_value = 0.5 /datum/material/gold @@ -156,7 +155,6 @@ protectiveness = 15 conductivity = 18 melting_point = T0C+3600 - radiation_resistance = 15 supply_conversion_value = 0.5 /datum/material/bronze diff --git a/code/modules/materials/materials/organic/resin.dm b/code/modules/materials/materials/organic/resin.dm index 1f9e03c66f..d3b077efbe 100644 --- a/code/modules/materials/materials/organic/resin.dm +++ b/code/modules/materials/materials/organic/resin.dm @@ -13,7 +13,6 @@ sheet_plural_name = "blobs" conductive = 0 explosion_resistance = 60 - radiation_resistance = 10 stack_type = /obj/item/stack/material/resin supply_conversion_value = 2 diff --git a/code/modules/materials/materials/plastic.dm b/code/modules/materials/materials/plastic.dm index 0919e4e7fc..843adddb34 100644 --- a/code/modules/materials/materials/plastic.dm +++ b/code/modules/materials/materials/plastic.dm @@ -72,7 +72,6 @@ melting_point = T0C+232 //temperature at which cardboard walls would be destroyed door_icon_base = "wood" destruction_desc = "crumples" - radiation_resistance = 1 pass_stack_colors = TRUE supply_conversion_value = 0.05 diff --git a/code/modules/materials/materials/snow.dm b/code/modules/materials/materials/snow.dm index adbac02657..0343390b5c 100644 --- a/code/modules/materials/materials/snow.dm +++ b/code/modules/materials/materials/snow.dm @@ -13,7 +13,6 @@ destruction_desc = "crumples" sheet_singular_name = "pile" sheet_plural_name = "pile" //Just a bigger pile - radiation_resistance = 1 supply_conversion_value = 0 /datum/material/snow/generate_recipes() @@ -41,7 +40,6 @@ destruction_desc = "crumbles" sheet_singular_name = "brick" sheet_plural_name = "bricks" - radiation_resistance = 1 supply_conversion_value = 0 /datum/material/snowbrick/generate_recipes() diff --git a/code/modules/mob/_modifiers/modifiers_vr.dm b/code/modules/mob/_modifiers/modifiers_vr.dm index bd6361225f..93d5ffc388 100644 --- a/code/modules/mob/_modifiers/modifiers_vr.dm +++ b/code/modules/mob/_modifiers/modifiers_vr.dm @@ -160,8 +160,13 @@ /datum/modifier/shield_projection/tick() //When the shield generator runs out of charge, it'll remove this naturally. if(holder.stat == DEAD) expire(silent = TRUE) //If you're dead the generator stops protecting you but keeps running. + return if(!shield_generator || !shield_generator.slot_check()) //No shield to begin with/shield is not on them any longer. expire(silent = FALSE) + return + if(QDELETED(energy_source) || !energy_source.charge) + expire(silent = FALSE) + return var/shield_efficiency = (energy_source.charge/energy_source.maxcharge) //1 = complete resistance. 0 = no resistance. Must be adjusted for subtypes! if(!isnull(effective_damage_resistance)) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 6e873c4443..64853af218 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -295,8 +295,9 @@ M.adjust_fire_stacks(-1) if(M.on_fire) src.ignite_mob() - M.resting = 0 //Hoist yourself up up off the ground. No para/stunned/weakened removal. - update_canmove() + M.resting = !M.resting + M.AdjustWeakened(-3) + M.update_canmove() else if(istype(hugger)) hugger.species.hug(hugger,src) else diff --git a/code/modules/organs/pain.dm b/code/modules/organs/pain.dm index bf48ee4991..e2df335ced 100644 --- a/code/modules/organs/pain.dm +++ b/code/modules/organs/pain.dm @@ -45,7 +45,7 @@ last_pain_message = message to_chat(src,message) next_pain_time = world.time + clamp((200 - power) SECONDS, 100 SECONDS, 3 MINUTES) - multilimb_pain_time = clamp(world.time + (200 - power) SECONDS, 100 SECONDS, 3 MINUTES) + multilimb_pain_time = world.time + clamp((200 - power) SECONDS, 100 SECONDS, 3 MINUTES) if(prob(power / 10) && !isbelly(loc)) // No pain noises inside bellies. emote("pain") @@ -68,9 +68,9 @@ if(dam > maxdam && (maxdam == 0 || prob(70)) ) damaged_organ = E maxdam = dam - if(ishuman(src)) //VOREStation Edit Start + if(ishuman(src)) var/mob/living/carbon/human/H = src - maxdam *= H.species.trauma_mod //VOREStation edit end + maxdam *= H.species.trauma_mod if(damaged_organ && chem_effects[CE_PAINKILLER] < maxdam) if(maxdam > 10 && paralysis) AdjustParalysis(-round(maxdam/10)) @@ -92,7 +92,7 @@ // Damage to internal organs hurts a lot. for(var/obj/item/organ/I in internal_organs) if((I.status & ORGAN_DEAD) || I.robotic >= ORGAN_ROBOT) continue - if(I.damage > 2) if(prob(2)) + if(I.is_bruised() && prob(2)) var/obj/item/organ/external/parent = get_organ(I.parent_organ) src.custom_pain("You feel a sharp pain in your [parent.name]", 50) diff --git a/code/modules/reagents/reagents/other_vr.dm b/code/modules/reagents/reagents/other_vr.dm index 0e5812c256..703917afec 100644 --- a/code/modules/reagents/reagents/other_vr.dm +++ b/code/modules/reagents/reagents/other_vr.dm @@ -87,8 +87,10 @@ lowertemp.react() T.assume_air(lowertemp) qdel(hotspot) + for(var/obj/effect/decal/cleanable/liquid_fuel/fuel_source in T) //Foam cleans up fuel sources. + qdel(fuel_source) - if (environment && environment.temperature > min_temperature) // Abstracted as steam or something + if(environment?.temperature > min_temperature) // Abstracted as steam or something var/removed_heat = between(0, volume * 19000, -environment.get_thermal_energy_change(min_temperature)) environment.add_thermal_energy(-removed_heat) if(prob(5)) diff --git a/code/modules/resleeving/infocore_records.dm b/code/modules/resleeving/infocore_records.dm index b6845a07f0..6e16b5e554 100644 --- a/code/modules/resleeving/infocore_records.dm +++ b/code/modules/resleeving/infocore_records.dm @@ -365,6 +365,7 @@ H.resize(sizemult, FALSE) H.appearance_flags = aflags H.weight = weight + H.changeling_locked = changeling_locked if(speciesname) H.custom_species = speciesname diff --git a/code/modules/resleeving/machines.dm b/code/modules/resleeving/machines.dm index 853df5bf9c..984b3a3ebc 100644 --- a/code/modules/resleeving/machines.dm +++ b/code/modules/resleeving/machines.dm @@ -514,6 +514,9 @@ if(occupant.mind.antag_holder) occupant.mind.antag_holder.apply_antags(occupant) + if(occupant.changeling_locked || occupant.mind.antag_holder.changeling) + occupant.make_changeling() + if(original_occupant) occupant = original_occupant diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index b3f121acd0..8993f23bf0 100644 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ diff --git a/modular_chomp/code/datums/crafting/items.dm b/modular_chomp/code/datums/crafting/items.dm index bc6babc2bd..2461214f60 100644 --- a/modular_chomp/code/datums/crafting/items.dm +++ b/modular_chomp/code/datums/crafting/items.dm @@ -60,7 +60,6 @@ icon_reinf = "reinf_mesh" integrity = 250 weight = 10 - radiation_resistance = 25 //less then lead because it's lighter then lead. protectiveness = 30 conductive = 0 opacity = 0.25