diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index b053c5176c..0aaeba8e39 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -807,6 +807,11 @@ }, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/fitness/pool) +"abU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/landmark/xmastree, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/bar) "abV" = ( /obj/effect/turf_decal/stripes/corner, /turf/open/floor/plasteel/white, @@ -824,6 +829,13 @@ "abY" = ( /turf/open/floor/plasteel/white, /area/ai_monitored/turret_protected/ai) +"abZ" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/flora/ausbushes/sparsegrass, +/obj/effect/landmark/xmastree, +/turf/open/floor/grass, +/area/hydroponics/garden/monastery) "acc" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -47489,12 +47501,6 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) -"cgj" = ( -/obj/structure/flora/ausbushes/ywflowers, -/obj/structure/flora/ausbushes/ppflowers, -/obj/structure/flora/ausbushes/sparsegrass, -/turf/open/floor/grass, -/area/hydroponics/garden/monastery) "cgk" = ( /obj/structure/flora/ausbushes/ywflowers, /obj/structure/flora/ausbushes/sparsegrass, @@ -79792,7 +79798,7 @@ cuE cgK cgJ cgH -cgj +abZ cvj bWV cfn @@ -94890,7 +94896,7 @@ aYg aZd beB bbq -beB +abU bdx beB bft @@ -110827,7 +110833,7 @@ bcQ aaa aaa aaa -abN +bBW aaa aEj aEj @@ -111084,7 +111090,7 @@ bcQ aaa aaa aaa -aaa +cFB aaa aEl bnl diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index dad2a38afd..7bb124fe0f 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -115,7 +115,7 @@ #define MAX_HIGH_PRESSURE_DAMAGE 16 // CITADEL CHANGES Max to 16, low to 8. #define LOW_PRESSURE_DAMAGE 8 //The amount of damage someone takes when in a low pressure area (The pressure threshold is so low that it doesn't make sense to do any calculations, so it just applies this flat value). -#define COLD_SLOWDOWN_FACTOR 20 //Humans are slowed by the difference between bodytemp and BODYTEMP_COLD_DAMAGE_LIMIT divided by this +#define COLD_SLOWDOWN_FACTOR 35 //Humans are slowed by the difference between bodytemp and BODYTEMP_COLD_DAMAGE_LIMIT divided by this //PIPES //Atmos pipe limits diff --git a/code/datums/components/tackle.dm b/code/datums/components/tackle.dm index a5f9271f4b..c69df4f5e3 100644 --- a/code/datums/components/tackle.dm +++ b/code/datums/components/tackle.dm @@ -89,6 +89,11 @@ to_chat(user, "You can't tackle while tased!") return + var/left_paralysis = HAS_TRAIT(user, TRAIT_PARALYSIS_L_ARM) + var/right_paralysis = HAS_TRAIT(user, TRAIT_PARALYSIS_R_ARM) + if(left_paralysis && right_paralysis) + to_chat(user, "You can't tackle without the use of your arms!") + user.face_atom(A) var/list/modifiers = params2list(params) @@ -280,6 +285,10 @@ attack_mod -= 2 if(HAS_TRAIT(sacker, TRAIT_GIANT)) attack_mod += 2 + var/left_paralysis = HAS_TRAIT(sacker, TRAIT_PARALYSIS_L_ARM) + var/right_paralysis = HAS_TRAIT(sacker, TRAIT_PARALYSIS_R_ARM) + if(left_paralysis || right_paralysis) + attack_mod -= 2 if(ishuman(target)) var/mob/living/carbon/human/S = sacker diff --git a/code/datums/diseases/advance/symptoms/flesh_eating.dm b/code/datums/diseases/advance/symptoms/flesh_eating.dm index 44030b0417..b5b55c1e14 100644 --- a/code/datums/diseases/advance/symptoms/flesh_eating.dm +++ b/code/datums/diseases/advance/symptoms/flesh_eating.dm @@ -31,9 +31,8 @@ Bonus var/bleed = FALSE var/pain = FALSE threshold_desc = list( - "Resistance 9" = "Doubles the intensity of the immolation effect, but reduces the frequency of all of this symptom's effects.", - "Stage Speed 8" = "Increases explosion radius and explosion damage to the host when the host is wet.", - "Transmission 8" = "Additionally synthesizes chlorine trifluoride and napalm inside the host. More chemicals are synthesized if the resistance 9 threshold has been met." + "Resistance 7" = "Erodes the host's skin, causing them to bleed profusely.", + "Transmission 8" = "Eat's away at the host's musclemass, causing increased fatigue." ) /datum/symptom/flesh_eating/Start(datum/disease/advance/A) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 2fc853500d..c19f23ed2a 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -263,18 +263,18 @@ /datum/symptom/heal/coma/CanHeal(datum/disease/advance/A) var/mob/living/M = A.affected_mob + if(M.getBruteLoss() + M.getFireLoss() >= 70 && !active_coma) + to_chat(M, "You feel yourself slip into a regenerative coma...") + active_coma = TRUE + addtimer(CALLBACK(src, .proc/coma, M), 60) if(HAS_TRAIT(M, TRAIT_DEATHCOMA)) return power - else if(M.IsUnconscious() || M.stat == UNCONSCIOUS) - return power * 0.9 else if(M.stat == SOFT_CRIT) return power * 0.5 else if(M.IsSleeping()) return power * 0.25 - else if(M.getBruteLoss() + M.getFireLoss() >= 70 && !active_coma) - to_chat(M, "You feel yourself slip into a regenerative coma...") - active_coma = TRUE - addtimer(CALLBACK(src, .proc/coma, M), 60) + else if(M.IsUnconscious() || M.stat == UNCONSCIOUS) + return power * 0.9 /datum/symptom/heal/coma/proc/coma(mob/living/M) if(deathgasp) diff --git a/code/datums/elements/flavor_text.dm b/code/datums/elements/flavor_text.dm index ae139104f0..6217665157 100644 --- a/code/datums/elements/flavor_text.dm +++ b/code/datums/elements/flavor_text.dm @@ -13,6 +13,8 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code var/save_key /// Do not attempt to render a preview on examine. If this is on, it will display as \[flavor_name\] var/examine_no_preview = FALSE + /// Examine FULLY views. Overrides examine_no_preview + var/examine_full_view = FALSE /datum/element/flavor_text/Attach(datum/target, text = "", _name = "Flavor Text", _addendum, _max_len = MAX_FLAVOR_LEN, _always_show = FALSE, _edit = TRUE, _save_key, _examine_no_preview = FALSE) . = ..() @@ -37,7 +39,7 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code if(can_edit && ismob(target)) //but only mobs receive the proc/verb for the time being var/mob/M = target LAZYOR(GLOB.mobs_with_editable_flavor_text[M], src) - M.verbs |= /mob/proc/manage_flavor_tests + add_verb(M, /mob/proc/manage_flavor_tests) if(save_key && ishuman(target)) RegisterSignal(target, COMSIG_HUMAN_PREFS_COPIED_TO, .proc/update_prefs_flavor_text) @@ -71,6 +73,9 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code examine_list += "\[[flavor_name]\]" return var/msg = replacetext(text, "\n", " ") + if(examine_full_view) + examine_list += "[msg]" + return if(length_char(msg) <= 40) examine_list += "[msg]" else @@ -113,6 +118,21 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code var/datum/element/flavor_text/F = choices[chosen] F.set_flavor(src) +/mob/proc/set_pose() + set name = "Set Pose" + set desc = "Sets your temporary flavor text" + set category = "IC" + + var/list/L = GLOB.mobs_with_editable_flavor_text[src] + var/datum/element/flavor_text/carbon/temporary/T + for(var/i in L) + if(istype(i, /datum/element/flavor_text/carbon/temporary)) + T = i + if(!T) + to_chat(src, "Your mob type does not support temporary flavor text.") + return + T.set_flavor(src) + /datum/element/flavor_text/proc/set_flavor(mob/user) if(!(user in texts_by_atom)) return FALSE @@ -135,7 +155,7 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code var/static/list/i_dont_even_know_who_you_are = typecacheof(list(/datum/antagonist/abductor, /datum/antagonist/ert, /datum/antagonist/nukeop, /datum/antagonist/wizard)) -/datum/element/flavor_text/carbon/Attach(datum/target, text = "", _name = "Flavor Text", _addendum, _max_len = MAX_FLAVOR_LEN, _always_show = FALSE, _edit = TRUE, _save_key = "flavor_text", _examine_no_preview = FALSE) +/datum/element/flavor_text/carbon/Attach(datum/target, text = "", _name = "Flavor Text", _addendum, _max_len = MAX_FLAVOR_LEN, _always_show = FALSE, _edit = TRUE, _save_key, _examine_no_preview = FALSE) if(!iscarbon(target)) return ELEMENT_INCOMPATIBLE . = ..() @@ -167,3 +187,19 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code texts_by_atom[user] = "" if(user.dna) user.dna.features[save_key] = "" + +/datum/element/flavor_text/carbon/temporary + examine_full_view = TRUE + max_len = 1024 + +/datum/element/flavor_text/carbon/temporary/Attach(datum/target, text, _name, _addendum, _max_len, _always_show, _edit, _save_key, _examine_no_preview) + . = ..() + if(. & ELEMENT_INCOMPATIBLE) + return + if(ismob(target)) + add_verb(target, /mob/proc/set_pose) + +/datum/element/flavor_Text/carbon/temporary/Detach(datum/source, force) + . = ..() + if(ismob(source)) + remove_verb(source, /mob/proc/set_pose) diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index ef3979d822..f4a53d5c72 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -438,12 +438,19 @@ return else linked_alert.icon_state = "fleshmend" - owner.adjustBruteLoss(-10, FALSE) - owner.adjustFireLoss(-5, FALSE) owner.adjustOxyLoss(-10) if(!iscarbon(owner)) + owner.adjustBruteLoss(-10, FALSE) + owner.adjustFireLoss(-5, FALSE) return var/mob/living/carbon/C = owner + var/list/damaged_parts = C.get_damaged_bodyparts(TRUE,TRUE, status = list(BODYPART_ORGANIC, BODYPART_HYBRID, BODYPART_NANITES)) + if(damaged_parts.len) + for(var/obj/item/bodypart/part in damaged_parts) + part.heal_damage(10/damaged_parts.len, 5/damaged_parts.len, only_organic = FALSE, updating_health = FALSE) + C.updatehealth() + C.update_damage_overlays() + QDEL_LIST(C.all_scars) /obj/screen/alert/status_effect/fleshmend @@ -599,7 +606,7 @@ //Heal brain damage and toxyloss, alongside trauma owner.adjustOrganLoss(ORGAN_SLOT_BRAIN, -8) - owner.adjustToxLoss(-6, forced = TRUE) + owner.adjustToxLoss(-6, forced = TRUE, toxins_type = TOX_OMNI) M.cure_trauma_type(resilience = TRAUMA_RESILIENCE_BASIC) //Purges 50 rads per tick if(owner.radiation > 0) diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index fe27cc2baf..3cbf4b3cd2 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -137,12 +137,18 @@ GLOBAL_LIST_EMPTY(family_heirlooms) var/lums = T.get_lumcount() if(lums <= 0.2) if(quirk_holder.m_intent == MOVE_INTENT_RUN) - to_chat(quirk_holder, "Easy, easy, take it slow... you're in the dark...") - quirk_holder.toggle_move_intent() + addtimer(CALLBACK(src, .proc/recheck),2) //0.2 seconds of being in the dark SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "nyctophobia", /datum/mood_event/nyctophobia) else SEND_SIGNAL(quirk_holder, COMSIG_CLEAR_MOOD_EVENT, "nyctophobia") +/datum/quirk/nyctophobia/proc/recheck() + var/turf/T = get_turf(quirk_holder) + var/lums = T.get_lumcount() + if(lums <= 0.2) //check again, did they remain in the dark for 0.2 seconds? + to_chat(quirk_holder, "Easy, easy, take it slow... you're in the dark...") + quirk_holder.toggle_move_intent() + /datum/quirk/lightless name = "Light Sensitivity" desc = "Bright lights irritate you. Your eyes start to water, your skin feels itchy against the photon radiation, and your hair gets dry and frizzy. Maybe it's a medical condition. If only Nanotrasen was more considerate of your needs..." diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 4c9ea06620..296b46bf85 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -377,10 +377,3 @@ hitsound = 'sound/weapons/taserhit.ogg' w_class = WEIGHT_CLASS_SMALL breakouttime = 60 - -/obj/item/restraints/legcuffs/bola/energy/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) - if(iscarbon(hit_atom)) - var/obj/item/restraints/legcuffs/beartrap/B = new /obj/item/restraints/legcuffs/beartrap/energy/cyborg(get_turf(hit_atom)) - B.Crossed(hit_atom) - qdel(src) - ..() diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm index 9bc20565a6..3588b7be63 100644 --- a/code/game/objects/items/plushes.dm +++ b/code/game/objects/items/plushes.dm @@ -33,6 +33,8 @@ //--end of love :'(-- var/snowflake_id //if we set from a config snowflake plushie. + /// wrapper, do not use, read only + var/__ADMIN_SET_TO_ID var/can_random_spawn = TRUE //if this is FALSE, don't spawn this for random plushies. /obj/item/toy/plush/random_snowflake/Initialize(mapload, set_snowflake_id) @@ -112,10 +114,21 @@ return ..() +/obj/item/toy/plush/vv_get_var(var_name) + if(var_name == NAMEOF(src, __ADMIN_SET_TO_ID)) + return debug_variable("__ADMIN: SET SNOWFLAKE ID", snowflake_id, 0, src) + return ..() + +/obj/item/toy/plush/vv_edit_var(var_name, var_value) + if(var_name == NAMEOF(src, __ADMIN_SET_TO_ID)) + return set_snowflake_from_config(var_value) + return ..() + /obj/item/toy/plush/proc/set_snowflake_from_config(id) var/list/configlist = CONFIG_GET(keyed_list/snowflake_plushies) var/list/jsonlist = configlist[id] - ASSERT(jsonlist) + if(!jsonlist) + return FALSE jsonlist = json_decode(jsonlist) if(jsonlist["inherit_from"]) var/path = text2path(jsonlist["inherit_from"]) @@ -151,6 +164,7 @@ var/datum/component/squeak/S = GetComponent(/datum/component/squeak) S?.override_squeak_sounds = squeak_override snowflake_id = id + return TRUE /obj/item/toy/plush/handle_atom_del(atom/A) if(A == grenade) diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index c8eb96005c..92b222aed7 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -23,14 +23,15 @@ resistance_flags = FIRE_PROOF var/self_fueling = FALSE //Do we refill ourselves or not - var/nextrefueltick = 0 // How long it takes before we get a new fuel unit + var/nextrefueltick = 0 //When is the next tick we refuel? + var/refueling_interval = 10 //Every how many processing ticks does this refuel? (1 = every processing tick) custom_materials = list(/datum/material/iron=70, /datum/material/glass=30) var/welding = 0 //Whether or not the welding tool is off(0), on(1) or currently welding(2) var/status = TRUE //Whether the welder is secured or unsecured (able to attach rods to it to make a flamethrower) var/max_fuel = 20 //The max amount of fuel the welder can hold var/change_icons = 1 - var/can_off_process = 0 + var/can_off_process = FALSE var/light_intensity = 2 //how powerful the emitted light is when used. var/progress_flash_divisor = 10 var/burned_fuel_for = 0 //when fuel was last removed @@ -66,6 +67,14 @@ . += "[initial(icon_state)]-on" /obj/item/weldingtool/process() + //This handles refueling. Its looking at how much fuel the tool has and comparing that to how much it holds + //This then looks if the refuel tick has come based on world time. + //Then looks if we refuel ourselves or not. + + if(self_fueling && get_fuel() < max_fuel && nextrefueltick <= world.time) + nextrefueltick = world.time + refueling_interval + reagents.add_reagent(/datum/reagent/fuel, 1) + switch(welding) if(0) force = 3 @@ -86,14 +95,6 @@ //This is to start fires. process() is only called if the welder is on. open_flame() - //This handles refueling. Its looking at how much fuel the tool has and comparing that to how much it holds - //This then looks if the refuel tick has come based on world time. - //Then looks if we refuel ourselves or not. - - if(get_fuel() < max_fuel && nextrefueltick < world.time && self_fueling) - nextrefueltick = world.time + 10 - reagents.add_reagent(/datum/reagent/fuel, 1) - /obj/item/weldingtool/suicide_act(mob/user) user.visible_message("[user] welds [user.p_their()] every orifice closed! It looks like [user.p_theyre()] trying to commit suicide!") return (FIRELOSS) @@ -367,7 +368,7 @@ custom_materials = list(/datum/material/iron=70, /datum/material/glass=120) change_icons = 0 self_fueling = TRUE - can_off_process = 1 + can_off_process = TRUE light_intensity = 1 toolspeed = 0.5 @@ -375,6 +376,7 @@ name = "brass welding tool" desc = "A brass welder that seems to constantly refuel itself. It is faintly warm to the touch." resistance_flags = FIRE_PROOF | ACID_PROOF + refueling_interval = 5 icon_state = "clockwelder" item_state = "brasswelder" @@ -384,16 +386,20 @@ icon = 'icons/obj/abductor.dmi' icon_state = "welder" self_fueling = TRUE + can_off_process = TRUE + refueling_interval = 1 toolspeed = 0.1 light_intensity = 0 change_icons = 0 /obj/item/weldingtool/advanced name = "advanced welding tool" - desc = "A modern welding tool combined with an alien welding tool, it never runs out of fuel and works almost as fast." + desc = "A modern welding tool combined with an alien welding tool, it almost never runs out of fuel and works nearly as fast." icon = 'icons/obj/advancedtools.dmi' icon_state = "welder" self_fueling = TRUE + can_off_process = TRUE + refueling_interval = 2 toolspeed = 0.2 light_intensity = 0 change_icons = 0 diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 46eb82342a..52082637a3 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -446,8 +446,11 @@ var/mob/living/L = O if(!issilicon(L)) L.DefaultCombatKnockdown(40) - O.forceMove(T) - close() + if(istype(src, /obj/structure/closet/supplypod/extractionpod)) + O.forceMove(src) + else + O.forceMove(T) + close() else O.forceMove(T) return 1 diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index b150d4930e..765c88842e 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -163,6 +163,8 @@ while (pulling != null) var/next_pulling = pulling.pulling + if(next_pulling == pulling) + break // no loops var/turf/T = get_step(puller.loc, turn(puller.dir, 180)) pulling.can_be_z_moved = FALSE diff --git a/code/modules/admin/view_variables/topic.dm b/code/modules/admin/view_variables/topic.dm index af412a6caa..d7e893ec03 100644 --- a/code/modules/admin/view_variables/topic.dm +++ b/code/modules/admin/view_variables/topic.dm @@ -98,7 +98,7 @@ L.adjustFireLoss(amount) newamt = L.getFireLoss() if("toxin") - L.adjustToxLoss(amount, toxins_type = TOX_OMNI) + L.adjustToxLoss(amount, toxins_type = TOX_OMNI, forced = TRUE) newamt = L.getToxLoss() if("oxygen") L.adjustOxyLoss(amount) diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm index 4117fc2b36..3e358cd795 100644 --- a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm +++ b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm @@ -120,9 +120,14 @@ if(bruteheal + fireheal + toxinheal > 0) // Just a check? Don't heal/spend, and return. if(mult == 0) return TRUE + // We have damage. Let's heal (one time) - C.adjustBruteLoss(-bruteheal * mult, forced = TRUE)// Heal BRUTE / BURN in random portions throughout the body. - C.adjustFireLoss(-fireheal * mult, forced = TRUE) + var/list/damaged_parts = C.get_damaged_bodyparts(TRUE,TRUE, status = list(BODYPART_ORGANIC, BODYPART_HYBRID, BODYPART_NANITES)) + if(damaged_parts.len) + for(var/obj/item/bodypart/part in damaged_parts) // Heal BRUTE / BURN equally distibuted over all damaged bodyparts. + part.heal_damage((bruteheal * mult)/damaged_parts.len, (fireheal * mult)/damaged_parts.len, only_organic = FALSE, updating_health = FALSE) + C.updatehealth() + C.update_damage_overlays() C.adjustToxLoss(-toxinheal * mult * 2, forced = TRUE) //Toxin healing because vamps arent immune //C.heal_overall_damage(bruteheal * mult, fireheal * mult) // REMOVED: We need to FORCE this, because otherwise, vamps won't heal EVER. Swapped to above. AddBloodVolume((bruteheal * -0.5 + fireheal * -1 + toxinheal * -0.2) / mult * costMult) // Costs blood to heal @@ -276,7 +281,7 @@ /datum/antagonist/bloodsucker/proc/FinalDeath() //Dont bother if we are already supposed to be dead if(FinalDeath) - return + return FinalDeath = TRUE //We are now supposed to die. Lets not spam it. if(!iscarbon(owner.current)) //Check for non carbons. owner.current.gib() diff --git a/code/modules/antagonists/eldritch_cult/eldritch_antag.dm b/code/modules/antagonists/eldritch_cult/eldritch_antag.dm index 25602c8588..d54f008108 100644 --- a/code/modules/antagonists/eldritch_cult/eldritch_antag.dm +++ b/code/modules/antagonists/eldritch_cult/eldritch_antag.dm @@ -98,7 +98,7 @@ var/pck = pick("assasinate","protect") switch(pck) if("assasinate") - var/datum/objective/assassinate/A = new + var/datum/objective/assassinate/once/A = new A.owner = owner var/list/owners = A.get_owners() A.find_target(owners,protection) diff --git a/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm b/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm index f5c54dd7bf..9d65396c63 100644 --- a/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm +++ b/code/modules/antagonists/eldritch_cult/knowledge/rust_lore.dm @@ -69,7 +69,7 @@ var/mob/living/living_user = user living_user.adjustBruteLoss(-3, FALSE) living_user.adjustFireLoss(-3, FALSE) - living_user.adjustToxLoss(-3, FALSE) + living_user.adjustToxLoss(-3, FALSE, TRUE) living_user.adjustOxyLoss(-1, FALSE) living_user.adjustStaminaLoss(-6) diff --git a/code/modules/cargo/supplypod.dm b/code/modules/cargo/supplypod.dm index 6169c4d3f0..efac62c930 100644 --- a/code/modules/cargo/supplypod.dm +++ b/code/modules/cargo/supplypod.dm @@ -74,7 +74,6 @@ bluespace = TRUE explosionSize = list(0,0,1,2) landingDelay = 25 //Longer than others - reverseOptionList = list("Mobs"=TRUE,"Objects"=FALSE,"Anchored"=FALSE,"Underfloor"=FALSE,"Wallmounted"=FALSE,"Floors"=FALSE,"Walls"=FALSE) /obj/structure/closet/supplypod/centcompod style = STYLE_CENTCOM diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index f9f587ae5b..af55c6b9d7 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -20,6 +20,7 @@ body_parts_covered = ARMS cold_protection = ARMS strip_delay = 300 //you can't just yank them off + obj_flags = UNIQUE_RENAME /// did you ever get around to wearing these or no var/wornonce = FALSE ///Extra damage through the punch. diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 12829ed0e7..40ad6dddd1 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -873,9 +873,9 @@ /obj/item/clothing/head/helmet/space/hardsuit/lavaknight name = "cydonian helmet" desc = "A helmet designed with both form and function in mind, it protects the user against physical trauma and hazardous conditions while also having polychromic light strips." - icon_state = "knight_cydonia" + icon_state = "hardsuit0-knight_cydonia" item_state = "knight_yellow" - hardsuit_type = null + hardsuit_type = "knight_cydonia" max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | LAVA_PROOF heat_protection = HEAD diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index dd46d7a5bb..2ffe85b6c4 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -256,7 +256,7 @@ Contains: helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/alert armor = list("melee" = 70, "bullet" = 55, "laser" = 50, "energy" = 50, "bomb" = 65, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100, "wound" = 50) resistance_flags = FIRE_PROOF | ACID_PROOF - mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC //ERT Security /obj/item/clothing/head/helmet/space/hardsuit/ert/alert/sec diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index 9b816a9f90..64ab4791d3 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -133,12 +133,12 @@ return TRUE /datum/job/proc/GetAntagRep() - . = CONFIG_GET(keyed_list/antag_rep)[lowertext(title)] + . = CONFIG_GET(keyed_list/antag_rep)[ckey(title)] if(. == null) return antag_rep /datum/job/proc/GetThreat() - . = CONFIG_GET(keyed_list/job_threat)[lowertext(title)] + . = CONFIG_GET(keyed_list/job_threat)[ckey(title)] if(. == null) return threat diff --git a/code/modules/mob/dead/observer/respawn.dm b/code/modules/mob/dead/observer/respawn.dm index f966051ed3..94ebf42a2a 100644 --- a/code/modules/mob/dead/observer/respawn.dm +++ b/code/modules/mob/dead/observer/respawn.dm @@ -155,16 +155,18 @@ penalize = client.prefs.respawn_restrictions_active client.prefs.respawn_restrictions_active = penalize - to_chat(src, "You have been respawned to the lobby. \ + message_admins("[key_name_admin(src)] was respawned to lobby [penalize? "with" : "without"] restrictions.") + log_game("[key_name(src)] was respawned to lobby [penalize? "with" : "without"] restrictions.") + var/mob/dead/new_player/N = transfer_to_lobby() + + to_chat(N, "You have been respawned to the lobby. \ Remember to take heed of rules regarding round knowledge - notably, that ALL past lives are forgotten. \ Any character you join as has NO knowledge of round events unless specified otherwise by an admin.") - message_admins("[key_name_admin(src)] was respawned to lobby [penalize? "with" : "without"] restrictions.") - log_game("[key_name(src)] was respawned to lobby [penalize? "with" : "without"] restrictions.") - transfer_to_lobby() - /** * Actual proc that removes us and puts us back on lobby + * + * Returns the new mob. */ /mob/dead/observer/proc/transfer_to_lobby() if(!client) // if no one's in us we can just be deleted @@ -179,3 +181,4 @@ var/mob/dead/new_player/M = new /mob/dead/new_player M.ckey = ckey + return M diff --git a/code/modules/mob/living/carbon/death.dm b/code/modules/mob/living/carbon/death.dm index c3e849efa6..ee2f945b65 100644 --- a/code/modules/mob/living/carbon/death.dm +++ b/code/modules/mob/living/carbon/death.dm @@ -5,7 +5,7 @@ silent = FALSE losebreath = 0 - if(!gibbed) + if(!gibbed && !HAS_TRAIT(src, TRAIT_DEATHCOMA)) emote("deathgasp") . = ..() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 3aa26de5cf..03816555b3 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -43,7 +43,7 @@ AddComponent(/datum/component/mood) AddComponent(/datum/component/combat_mode) AddElement(/datum/element/flavor_text/carbon, _name = "Flavor Text", _save_key = "flavor_text") - AddElement(/datum/element/flavor_text, "", "Temporary Flavor Text", "This should be used only for things pertaining to the current round!") + AddElement(/datum/element/flavor_text/carbon/temporary, "", "Set Pose (Temporary Flavor Text)", "This should be used only for things pertaining to the current round!", _save_key = null) AddElement(/datum/element/flavor_text, _name = "OOC Notes", _addendum = "Put information on ERP/vore/lewd-related preferences here. THIS SHOULD NOT CONTAIN REGULAR FLAVORTEXT!!", _always_show = TRUE, _save_key = "ooc_notes", _examine_no_preview = TRUE) /mob/living/carbon/human/Destroy() diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 2e8641b43e..341aa6a30f 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -14,7 +14,7 @@ blocks_emissive = EMISSIVE_BLOCK_UNIQUE block_parry_data = /datum/block_parry_data/unarmed/human - default_block_parry_data = /datum/block_parry_data/unarmed/pugilist + default_block_parry_data = /datum/block_parry_data/unarmed/human //Hair colour and style var/hair_color = "000" diff --git a/code/modules/mob/living/carbon/human/innate_abilities/blobform.dm b/code/modules/mob/living/carbon/human/innate_abilities/blobform.dm index 5d2693915d..ed3c7e21d4 100644 --- a/code/modules/mob/living/carbon/human/innate_abilities/blobform.dm +++ b/code/modules/mob/living/carbon/human/innate_abilities/blobform.dm @@ -62,7 +62,6 @@ H.add_movespeed_modifier(/datum/movespeed_modifier/slime_puddle) - H.layer -= 1 //go one layer down so people go over you ENABLE_BITFIELD(H.pass_flags, PASSMOB) //this actually lets people pass over you squeak = H.AddComponent(/datum/component/squeak, custom_sounds = list('sound/effects/blobattack.ogg')) //blorble noise when people step on you @@ -103,7 +102,6 @@ REMOVE_TRAIT(H, TRAIT_HUMAN_NO_RENDER, SLIMEPUDDLE_TRAIT) H.update_disabled_bodyparts(silent = TRUE) H.remove_movespeed_modifier(/datum/movespeed_modifier/slime_puddle) - H.layer += 1 //go one layer back above! DISABLE_BITFIELD(H.pass_flags, PASSMOB) is_puddle = FALSE if(squeak) diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm index 471bd9939e..658d7e5874 100644 --- a/code/modules/mob/say_vr.dm +++ b/code/modules/mob/say_vr.dm @@ -86,15 +86,6 @@ proc/get_top_level_mob(var/mob/S) else if(!params) var/subtle_emote = stripped_multiline_input_or_reflect(user, "Choose an emote to display.", "Subtler" , null, MAX_MESSAGE_LEN) if(subtle_emote && !check_invalid(user, subtle_emote)) - var/type = input("Is this a visible or hearable emote?") as null|anything in list("Visible", "Hearable") - switch(type) - if("Visible") - emote_type = EMOTE_VISIBLE - if("Hearable") - emote_type = EMOTE_AUDIBLE - else - alert("Unable to use this emote, must be either hearable or visible.") - return message = subtle_emote else return FALSE @@ -111,6 +102,80 @@ proc/get_top_level_mob(var/mob/S) user.visible_message(message = message, self_message = message, vision_distance = 1, ignored_mobs = GLOB.dead_mob_list, omni = TRUE) +///////////////// SUBTLE 3: DARE DICE + +/datum/emote/living/subtler_table + key = "subtler_table" + key_third_person = "subtler_table" + message = null + mob_type_blacklist_typecache = list(/mob/living/brain) + +/datum/emote/living/subtler_table/proc/check_invalid(mob/user, input) + if(stop_bad_mime.Find(input, 1, 1)) + to_chat(user, "Invalid emote.") + return TRUE + return FALSE + +/datum/emote/living/subtler_table/run_emote(mob/user, params, type_override = null) + if(!locate(/obj/structure/table) in range(user, 1)) + to_chat(user, "There are no tables around you.") + return FALSE + if(jobban_isbanned(user, "emote")) + to_chat(user, "You cannot send subtle emotes (banned).") + return FALSE + else if(user.client && user.client.prefs.muted & MUTE_IC) + to_chat(user, "You cannot send IC messages (muted).") + return FALSE + else if(!params) + var/subtle_emote = stripped_multiline_input_or_reflect(user, "Choose an emote to display.", "Subtler" , null, MAX_MESSAGE_LEN) + if(subtle_emote && !check_invalid(user, subtle_emote)) + message = subtle_emote + else + return FALSE + else + message = params + if(type_override) + emote_type = type_override + . = TRUE + if(!can_run_emote(user)) + return FALSE + + user.log_message("[message] (TABLE-WRAPPING)", LOG_SUBTLER) + message = "[user] [user.say_emphasis(message)]" + + var/list/show_to = list() + var/list/processing = list() + var/safety = 25 + for(var/obj/structure/table/T in range(user, 1)) + processing |= T + for(var/i in processing) + var/obj/structure/table/T = i + if(safety-- <= 0) + to_chat(user, "Table scan aborted early, some people might have not received the message (max 25)") + break + if(get_dist(T, user) > 7) + continue // nah + processing |= T + for(var/mob/living/M in range(T, 1)) // no ghosts/cameramobs + show_to |= M + var/obj/structure/table/other + other = locate() in get_step(T, NORTH) + if(other) + processing |= other + other = locate() in get_step(T, SOUTH) + if(other) + processing |= other + other = locate() in get_step(T, WEST) + if(other) + processing |= other + other = locate() in get_step(T, EAST) + if(other) + processing |= other + + for(var/i in show_to) + var/mob/M = i + M.show_message(message) + ///////////////// VERB CODE /mob/living/verb/subtle() set name = "Subtle" @@ -128,3 +193,12 @@ proc/get_top_level_mob(var/mob/S) to_chat(usr, "Speech is currently admin-disabled.") return usr.emote("subtler") + +///////////////// VERB CODE 3 +/mob/living/verb/subtler_table() + set name = "Subtler Around Table" + set category = "IC" + if(GLOB.say_disabled) //This is dumb but it's here because heehoo copypaste, who the FUCK uses this to identify lag? + to_chat(usr, "Speech is currently admin-disabled.") + return + usr.emote("subtler_table") diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index ca2c259bb5..762e9fe39c 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -1082,11 +1082,12 @@ if("lockdown") var/celluse = rand(20,35) celluse = celluse /100 + if(!cell.use(cell.maxcharge*celluse)) + return for (var/obj/machinery/door/D in GLOB.airlocks) if (get_area(D) == area) INVOKE_ASYNC(D,/obj/machinery/door.proc/hostile_lockdown,usr, FALSE) addtimer(CALLBACK(D,/obj/machinery/door.proc/disable_lockdown, FALSE), 30 SECONDS) - cell.charge -= cell.maxcharge*celluse var/obj/item/implant/hijack/H = usr.getImplant(/obj/item/implant/hijack) H.stealthcooldown = world.time + 3 MINUTES if("occupy") diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index a4daeb6a33..a0509fbd41 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -86,6 +86,8 @@ // recharge the cell /obj/item/stock_parts/cell/proc/give(amount) + if(amount < 0) + return if(rigged && amount > 0) explode() return 0 diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index fd442bb7a6..fb9e6ff6c6 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -100,6 +100,10 @@ var/impact_light_intensity = 3 var/impact_light_range = 2 var/impact_light_color_override + // Normal lighting effects + var/fired_light_intensity = 1 + var/fired_light_range = 0 + var/fired_light_color = rgb(255, 255, 255) //Homing var/homing = FALSE @@ -506,6 +510,7 @@ transform = M trajectory_ignore_forcemove = TRUE forceMove(starting) + set_light(fired_light_range, fired_light_intensity, fired_light_color) trajectory_ignore_forcemove = FALSE if(isnull(pixel_increment_amount)) pixel_increment_amount = SSprojectiles.global_pixel_increment_amount diff --git a/code/modules/projectiles/projectile/bullets/ferromagnetic.dm b/code/modules/projectiles/projectile/bullets/ferromagnetic.dm index 78deff601f..03482e2a9d 100644 --- a/code/modules/projectiles/projectile/bullets/ferromagnetic.dm +++ b/code/modules/projectiles/projectile/bullets/ferromagnetic.dm @@ -2,22 +2,22 @@ icon_state = "magjectile" damage = 20 armour_penetration = 20 - light_range = 3 + fired_light_range = 3 pixels_per_second = TILES_TO_PIXELS(16.667) range = 35 - light_color = LIGHT_COLOR_RED + fired_light_color = LIGHT_COLOR_RED /obj/item/projectile/bullet/magnetic/disabler icon_state = "magjectile-nl" //nl stands for non-lethal damage = 2 armour_penetration = 10 stamina = 20 - light_color = LIGHT_COLOR_BLUE + fired_light_color = LIGHT_COLOR_BLUE /obj/item/projectile/bullet/magnetic/weak damage = 15 armour_penetration = 10 - light_range = 2 + fired_light_range = 2 range = 25 /obj/item/projectile/bullet/magnetic/weak/disabler @@ -30,8 +30,8 @@ stamina = 10 movement_type = FLYING | UNSTOPPABLE range = 6 - light_range = 1 - light_color = LIGHT_COLOR_RED + fired_light_range = 1 + fired_light_color = LIGHT_COLOR_RED /obj/item/projectile/bullet/incendiary/mag_inferno icon_state = "magjectile-large" @@ -40,8 +40,8 @@ movement_type = FLYING | UNSTOPPABLE range = 20 pixels_per_second = TILES_TO_PIXELS(12.5) - light_range = 4 - light_color = LIGHT_COLOR_RED + fired_light_range = 4 + fired_light_color = LIGHT_COLOR_RED /obj/item/projectile/bullet/incendiary/mag_inferno/on_hit(atom/target, blocked = FALSE) ..() diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index 44b6e85f47..0b44c33926 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -171,11 +171,13 @@ /datum/reagent/drug/methamphetamine/on_mob_metabolize(mob/living/L) ..() - L.ignore_slowdown(type) + ADD_TRAIT(L, TRAIT_IGNOREDAMAGESLOWDOWN, type) + L.update_movespeed() ADD_TRAIT(L, TRAIT_TASED_RESISTANCE, type) /datum/reagent/drug/methamphetamine/on_mob_end_metabolize(mob/living/L) - L.unignore_slowdown(type) + REMOVE_TRAIT(L, TRAIT_IGNOREDAMAGESLOWDOWN, type) + L.update_movespeed() REMOVE_TRAIT(L, TRAIT_TASED_RESISTANCE, type) ..() diff --git a/code/modules/spells/spell_types/summonitem.dm b/code/modules/spells/spell_types/summonitem.dm index 2f3ed64655..91d75855a1 100644 --- a/code/modules/spells/spell_types/summonitem.dm +++ b/code/modules/spells/spell_types/summonitem.dm @@ -81,6 +81,12 @@ var/obj/machinery/portable_atmospherics/P = item_to_retrieve.loc P.disconnect() P.update_icon() + else if(istype(item_to_retrieve.loc, /obj/machinery/disposal) || istype(item_to_retrieve.loc, /obj/structure/disposalpipe)) //If it's in disposals, only recall the item. + break + else if(istype(item_to_retrieve.loc, /obj/machinery/nuclearbomb)) //I feel like yandev + break //Just to be sure. + + item_to_retrieve = item_to_retrieve.loc diff --git a/html/changelogs/AutoChangeLog-pr-13838.yml b/html/changelogs/AutoChangeLog-pr-13838.yml new file mode 100644 index 0000000000..deff5913b3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13838.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - bugfix: "things in DEATHCOMA do not deathgasp on death" diff --git a/html/changelogs/AutoChangeLog-pr-13846.yml b/html/changelogs/AutoChangeLog-pr-13846.yml new file mode 100644 index 0000000000..68e013acf0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13846.yml @@ -0,0 +1,4 @@ +author: "DeltaFire15" +delete-after: True +changes: + - balance: "Fleshmend, Anatomic Panacea and bloodsucker healing now work for Synths / IPCs." diff --git a/html/changelogs/AutoChangeLog-pr-13850.yml b/html/changelogs/AutoChangeLog-pr-13850.yml new file mode 100644 index 0000000000..64c47ade40 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13850.yml @@ -0,0 +1,5 @@ +author: "DeltaFire15" +delete-after: True +changes: + - bugfix: "Self-fueling weldingtools recharge fuel properly again." + - bugfix: "Brass welders now actually recharge faster than experimental ones." diff --git a/html/changelogs/AutoChangeLog-pr-13869.yml b/html/changelogs/AutoChangeLog-pr-13869.yml new file mode 100644 index 0000000000..5d4ca4817c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13869.yml @@ -0,0 +1,6 @@ +author: "timothyteakettle" +delete-after: True +changes: + - tweak: "slime puddles are no longer layered down one layer" + - tweak: "you cannot tackle with two paralysed arms" + - tweak: "tackling with a single paralysed arm lowers your tackle roll by 2" diff --git a/html/changelogs/AutoChangeLog-pr-13870.yml b/html/changelogs/AutoChangeLog-pr-13870.yml new file mode 100644 index 0000000000..820c524224 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13870.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - bugfix: "Magrifle ammo no longer glows." diff --git a/html/changelogs/AutoChangeLog-pr-13873.yml b/html/changelogs/AutoChangeLog-pr-13873.yml new file mode 100644 index 0000000000..320a5b69a4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13873.yml @@ -0,0 +1,4 @@ +author: "BlueWildrose" +delete-after: True +changes: + - tweak: "Nyctophobia quirk now has some light lag compensation." diff --git a/html/changelogs/AutoChangeLog-pr-13881.yml b/html/changelogs/AutoChangeLog-pr-13881.yml new file mode 100644 index 0000000000..0ad2d3afc8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13881.yml @@ -0,0 +1,4 @@ +author: "BlueWildrose" +delete-after: True +changes: + - rscadd: "PubbyStation now has two Christmas Tree spawners." diff --git a/html/changelogs/AutoChangeLog-pr-13882.yml b/html/changelogs/AutoChangeLog-pr-13882.yml new file mode 100644 index 0000000000..fe545bdc23 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13882.yml @@ -0,0 +1,4 @@ +author: "ERP mains" +delete-after: True +changes: + - rscadd: "Subtler Around Table is now a verb" diff --git a/html/changelogs/AutoChangeLog-pr-13883.yml b/html/changelogs/AutoChangeLog-pr-13883.yml new file mode 100644 index 0000000000..884adafffe --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13883.yml @@ -0,0 +1,5 @@ +author: "silicons" +delete-after: True +changes: + - rscadd: "set-pose has been added" + - tweak: "temporary flavor text renamed to set pose, fully visible in examine" diff --git a/html/changelogs/AutoChangeLog-pr-13887.yml b/html/changelogs/AutoChangeLog-pr-13887.yml new file mode 100644 index 0000000000..83069a4e64 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13887.yml @@ -0,0 +1,4 @@ +author: "HeroWithYay" +delete-after: True +changes: + - bugfix: "Changed description of Necrotizing Fasciitis symptom." diff --git a/html/changelogs/AutoChangeLog-pr-13893.yml b/html/changelogs/AutoChangeLog-pr-13893.yml new file mode 100644 index 0000000000..9eb7a3f79d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13893.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - tweak: "Meth and changeling adrenals no longer ignore all slowdowns, rather damage slowdowns." diff --git a/html/changelogs/AutoChangeLog-pr-13894.yml b/html/changelogs/AutoChangeLog-pr-13894.yml new file mode 100644 index 0000000000..31e1e66328 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13894.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - tweak: "temperature slowdown divisor nerfed to 35 from 20." diff --git a/html/changelogs/AutoChangeLog-pr-13896.yml b/html/changelogs/AutoChangeLog-pr-13896.yml new file mode 100644 index 0000000000..f733efa09d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13896.yml @@ -0,0 +1,6 @@ +author: "Sonic121x" +delete-after: True +changes: + - rscadd: "alarm ert hardsuit sprite for naga and canine" + - tweak: "adjust the naga ert hardsuit to cover the hand" + - bugfix: "cydonia hardsuit helmet" diff --git a/html/changelogs/AutoChangeLog-pr-13897.yml b/html/changelogs/AutoChangeLog-pr-13897.yml new file mode 100644 index 0000000000..05637b0908 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13897.yml @@ -0,0 +1,5 @@ +author: "keronshb" +delete-after: True +changes: + - bugfix: "Allows Energy Bola to be caught" + - balance: "This also allows them to be dropped/picked up." diff --git a/html/changelogs/AutoChangeLog-pr-13898.yml b/html/changelogs/AutoChangeLog-pr-13898.yml new file mode 100644 index 0000000000..cb4e0fd52d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13898.yml @@ -0,0 +1,5 @@ +author: "Putnam3145" +delete-after: True +changes: + - balance: "Regen coma now puts into a coma even from crit or while unconscious." + - bugfix: "Regen coma now properly weakens while asleep." diff --git a/html/changelogs/AutoChangeLog-pr-13904.yml b/html/changelogs/AutoChangeLog-pr-13904.yml new file mode 100644 index 0000000000..90f7d77e17 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13904.yml @@ -0,0 +1,4 @@ +author: "DeltaFire15" +delete-after: True +changes: + - tweak: "Instant summons can no longer do wacky stuff with disposals (and nukes)." diff --git a/html/statbrowser.html b/html/statbrowser.html index e7d49ceebc..1cb089a189 100644 --- a/html/statbrowser.html +++ b/html/statbrowser.html @@ -912,7 +912,7 @@ function draw_sdql2(){ var td2 = document.createElement("td"); if(part[2]) { var a = document.createElement("a"); - a.href = "?src=" + part[2] + ";statpanel_item_click=1"; + a.href = "?src=" + "_statpanel_" + ";statpanel_item_target=" + part[2] + ";statpanel_item_click=1"; a[textContentKey] = part[1]; td2.appendChild(a); } else { @@ -943,7 +943,7 @@ function draw_tickets() { td2.appendChild(a); } else if(part[3]){ var a = document.createElement("a"); - a.href = "?src=" + part[3] + ";statpanel_item_click=1"; + a.href = "?src=_statpanel_" + ";statpanel_item_target=" + part[3] + ";statpanel_item_click=1"; a[textContentKey] = part[1]; td2.appendChild(a); } else { diff --git a/icons/mob/clothing/head.dmi b/icons/mob/clothing/head.dmi index 889888ef0a..62d6644311 100644 Binary files a/icons/mob/clothing/head.dmi and b/icons/mob/clothing/head.dmi differ diff --git a/icons/mob/clothing/head_muzzled.dmi b/icons/mob/clothing/head_muzzled.dmi index 62c1ebea0a..0c72221833 100644 Binary files a/icons/mob/clothing/head_muzzled.dmi and b/icons/mob/clothing/head_muzzled.dmi differ diff --git a/icons/mob/clothing/taur_canine.dmi b/icons/mob/clothing/taur_canine.dmi index 24cf51d2e5..6155a274f2 100644 Binary files a/icons/mob/clothing/taur_canine.dmi and b/icons/mob/clothing/taur_canine.dmi differ diff --git a/icons/mob/clothing/taur_naga.dmi b/icons/mob/clothing/taur_naga.dmi index d178ba4a1c..3525333fb3 100644 Binary files a/icons/mob/clothing/taur_naga.dmi and b/icons/mob/clothing/taur_naga.dmi differ