From 90f14d28539c607a5bb20f0e1123ecac0b266994 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Mon, 26 Jun 2023 01:50:18 +0000 Subject: [PATCH 1/3] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3705.yml | 4 ---- html/changelogs/AutoChangeLog-pr-3706.yml | 4 ---- html/changelogs/AutoChangeLog-pr-3707.yml | 4 ---- html/changelogs/AutoChangeLog-pr-3708.yml | 4 ---- html/changelogs/archive/2023-06.yml | 9 +++++++++ 5 files changed, 9 insertions(+), 16 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3705.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3706.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3707.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3708.yml diff --git a/html/changelogs/AutoChangeLog-pr-3705.yml b/html/changelogs/AutoChangeLog-pr-3705.yml deleted file mode 100644 index 5389f0af6869..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3705.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Drathek" -delete-after: True -changes: - - bugfix: "Fixed the yank object verb not testing who is actually performing the action has a free hand" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3706.yml b/html/changelogs/AutoChangeLog-pr-3706.yml deleted file mode 100644 index a63485dfdb6b..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3706.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Drathek" -delete-after: True -changes: - - rscadd: "Player facehugging gets 2nd dibs on the burst (the original marine gets first dibs still)" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3707.yml b/html/changelogs/AutoChangeLog-pr-3707.yml deleted file mode 100644 index 2dc44cc870d0..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3707.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "blackdragonTOW" -delete-after: True -changes: - - spellcheck: "multiple typos and grammar changes in the round start tooltips." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3708.yml b/html/changelogs/AutoChangeLog-pr-3708.yml deleted file mode 100644 index 7e921388ec05..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3708.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Drathek" -delete-after: True -changes: - - bugfix: "Fix a possibility of banished larva refunding double the larva" \ No newline at end of file diff --git a/html/changelogs/archive/2023-06.yml b/html/changelogs/archive/2023-06.yml index fafefe4203db..df1b3b34b455 100644 --- a/html/changelogs/archive/2023-06.yml +++ b/html/changelogs/archive/2023-06.yml @@ -347,3 +347,12 @@ Segrain: - bugfix: Hive core now always correctly absorbs hive's dead larvas. - bugfix: Preview dummy in character setup once again can be rotated. +2023-06-26: + Drathek: + - bugfix: Fixed the yank object verb not testing who is actually performing the + action has a free hand + - rscadd: Player facehugging gets 2nd dibs on the burst (the original marine gets + first dibs still) + - bugfix: Fix a possibility of banished larva refunding double the larva + blackdragonTOW: + - spellcheck: multiple typos and grammar changes in the round start tooltips. From 93fbc5fffa882c162aff66f0cd271969eb438671 Mon Sep 17 00:00:00 2001 From: Drathek <76988376+Drulikar@users.noreply.github.com> Date: Sun, 25 Jun 2023 19:17:31 -0700 Subject: [PATCH 2/3] Revive Fixes for Boiler: IFF Gas and Cause Data (#3577) # About the pull request This PR revives #3222 since it was basically fully complete except for a few lingering cause data issues and didn't yet address boiler gibbing gas. See linked PR or changelog for more details. See Testing Photographs and Procedure for some screenshots. The core change in this PR is that obj/effect/particle_effect/smoke/xeno_burn/Initialize now looks at the faction of the xeno that caused the smoke in the cause_data (resolve_mob would also work except for boiler gibbing smoke) to determine what faction the new smoke should be. # Explain why it's good for the game Boilers are basically unusable currently if they aren't the normal hive. The IFF fixes to the gas allow this boiler to not hurt their own hive with their abilities. # Testing Photographs and Procedure
Screenshots & Videos Some cause data examples: ![image](https://github.com/cmss13-devs/cmss13/assets/76988376/2fdfc83a-2cb6-4d78-90b5-c9609c644efd) IFF'd acid gas: ![image](https://github.com/cmss13-devs/cmss13/assets/76988376/e832d767-b8c2-4337-9557-1d89aa0ffe2f) ![image](https://github.com/cmss13-devs/cmss13/assets/76988376/687815f2-b6fd-4e10-9f3f-fd8d951e1424) Boiler gibbing gas is now IFF'd too: ![image](https://github.com/cmss13-devs/cmss13/assets/76988376/2b9cc8cb-278c-47ea-b1b3-825d086eadc2) ![image](https://github.com/cmss13-devs/cmss13/assets/76988376/1152fa9a-04fb-4788-a923-a077ba572844)
# Changelog :cl: TeDGamer Drathek fix: Boilers from other hives generate proper colored IFFed gas fix: Fixes some death causes with boiler acid gas (for bombard, shroud, and gibbing), neurotoxin gas/stabs, acid shotgun, and xeno spits balance: Neurotoxin stops processing only in dead mobs /:cl: --------- Co-authored-by: TeDGamer Co-authored-by: harryob --- code/datums/effects/neurotoxin.dm | 8 ++--- .../effects/effect_system/chemsmoke.dm | 3 +- .../objects/effects/effect_system/smoke.dm | 16 +++++----- .../abilities/boiler/boiler_powers.dm | 31 +++++++++---------- .../xenomorph/abilities/general_powers.dm | 10 +++--- .../mob/living/carbon/xenomorph/death.dm | 6 ++-- code/modules/projectiles/ammo_datums.dm | 7 +++-- 7 files changed, 41 insertions(+), 40 deletions(-) diff --git a/code/datums/effects/neurotoxin.dm b/code/datums/effects/neurotoxin.dm index 0405c87bec8b..836fccf49ca3 100644 --- a/code/datums/effects/neurotoxin.dm +++ b/code/datums/effects/neurotoxin.dm @@ -21,9 +21,8 @@ /// Stamina damage per tick. Major balance number. var/stam_dam = 7 -/datum/effects/neurotoxin/New(atom/thing) - ..(thing) - cause_data = create_cause_data("neurotoxic gas") +/datum/effects/neurotoxin/New(atom/thing, mob/from = null) + ..(thing, from, effect_name) /datum/effects/neurotoxin/validate_atom(atom/thing) if(isxeno(thing) || isobj(thing)) @@ -36,9 +35,10 @@ var/mob/living/carbon/affected_mob = affected_atom if(!.) return FALSE - if(affected_mob.stat) + if(affected_mob.stat == DEAD) return // General effects + affected_mob.last_damage_data = cause_data affected_mob.apply_stamina_damage(stam_dam) affected_mob.make_dizzy(12) diff --git a/code/game/objects/effects/effect_system/chemsmoke.dm b/code/game/objects/effects/effect_system/chemsmoke.dm index 8ecdb2c07db9..c2323c32c934 100644 --- a/code/game/objects/effects/effect_system/chemsmoke.dm +++ b/code/game/objects/effects/effect_system/chemsmoke.dm @@ -40,7 +40,8 @@ // Culls the selected turfs to a (roughly) circle shape, then calls smokeFlow() to make // sure the smoke can actually path to the turfs. This culls any turfs it can't reach. //------------------------------------------ -/datum/effect_system/smoke_spread/chem/set_up(datum/reagents/carry = null, n = 10, c = 0, loca, direct) +/datum/effect_system/smoke_spread/chem/set_up(datum/reagents/carry = null, n = 10, c = 0, loca, direct, datum/cause_data/new_cause_data) + cause_data = istype(new_cause_data) ? new_cause_data : cause_data range = n * 0.3 cardinals = c carry.copy_to(chemholder, carry.total_volume) diff --git a/code/game/objects/effects/effect_system/smoke.dm b/code/game/objects/effects/effect_system/smoke.dm index a02069087412..9f7a9c8143c7 100644 --- a/code/game/objects/effects/effect_system/smoke.dm +++ b/code/game/objects/effects/effect_system/smoke.dm @@ -283,14 +283,14 @@ var/gas_damage = 20 /obj/effect/particle_effect/smoke/xeno_burn/Initialize(mapload, amount, datum/cause_data/cause_data) - var/mob/living/carbon/xenomorph/xeno = cause_data?.resolve_mob() - if (istype(xeno) && xeno.hivenumber) - hivenumber = xeno.hivenumber - - set_hive_data(src, hivenumber) - - . = ..() + if(istype(cause_data)) + var/datum/ui_state/hive_state/cause_data_hive_state = GLOB.hive_state[cause_data.faction] + var/new_hive_number = cause_data_hive_state?.hivenumber + if(new_hive_number) + hivenumber = new_hive_number + set_hive_data(src, new_hive_number) + return ..() /obj/effect/particle_effect/smoke/xeno_burn/apply_smoke_effect(turf/T) ..() @@ -387,7 +387,7 @@ if(!issynth(moob)) var/datum/effects/neurotoxin/neuro_effect = locate() in moob.effects_list if(!neuro_effect) - neuro_effect = new /datum/effects/neurotoxin(moob) + neuro_effect = new(moob, cause_data.resolve_mob()) neuro_effect.strength = effect_amt neuro_effect.duration += neuro_dose if(moob.coughedtime != 1 && !moob.stat) //Coughing/gasping diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/boiler/boiler_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/boiler/boiler_powers.dm index e745e8940063..dff6c82efbf8 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/boiler/boiler_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/boiler/boiler_powers.dm @@ -139,7 +139,8 @@ spicy_gas = new /datum/effect_system/smoke_spread/xeno_weaken else CRASH("Globber has unknown ammo [xeno.ammo]! Oh no!") - spicy_gas.set_up(1, 0, get_turf(xeno), null, 6) + var/datum/cause_data/cause_data = create_cause_data("acid shroud gas", owner) + spicy_gas.set_up(1, 0, get_turf(xeno), null, 6, new_cause_data = cause_data) spicy_gas.start() to_chat(xeno, SPAN_XENOHIGHDANGER("You dump your acid through your pores, creating a shroud of gas!")) for (var/action_type in action_types_to_cd) @@ -166,9 +167,9 @@ if(!actually_moving) return - var/obj/effect/particle_effect/smoke/S = new /obj/effect/particle_effect/smoke/xeno_burn(get_turf(mover), 1, create_cause_data(initial(mover.caste_type), mover)) - S.time_to_live = 3 - S.spread_speed = 1000000 + var/obj/effect/particle_effect/smoke/xeno_burn/smoke_effect = new(get_turf(mover), 1, create_cause_data("dumped acid gas", mover)) + smoke_effect.time_to_live = 3 + smoke_effect.spread_speed = 1000000 /datum/action/xeno_action/onclick/dump_acid/remove_from() remove_speed_buff() @@ -283,27 +284,25 @@ apply_cooldown() return ..() -/datum/action/xeno_action/activable/acid_shotgun/use_ability(atom/A) - var/mob/living/carbon/xenomorph/X = owner - if (!istype(X)) +/datum/action/xeno_action/activable/acid_shotgun/use_ability(atom/target) + var/mob/living/carbon/xenomorph/xeno = owner + if (!istype(xeno)) return if (!action_cooldown_check()) return - if(!A || A.layer >= FLY_LAYER || !isturf(X.loc) || !X.check_state()) + if(!target || target.layer >= FLY_LAYER || !isturf(xeno.loc) || !xeno.check_state()) return - X.visible_message(SPAN_XENOWARNING("The [X] fires a blast of acid at [A]!"), SPAN_XENOWARNING("You fire a blast of acid at [A]!")) - - var/turf/target = locate(A.x, A.y, A.z) - var/obj/item/projectile/P = new /obj/item/projectile(X.loc, create_cause_data(initial(X.caste_type), X)) + xeno.visible_message(SPAN_XENOWARNING("The [xeno] fires a blast of acid at [target]!"), SPAN_XENOWARNING("You fire a blast of acid at [target]!")) + var/turf/target_turf = locate(target.x, target.y, target.z) + var/obj/item/projectile/proj = new(xeno.loc, create_cause_data("acid shotgun", xeno)) var/datum/ammo/ammoDatum = new ammo_type() - P.generate_bullet(ammoDatum) - - P.fire_at(target, X, X, ammoDatum.max_range, ammoDatum.shell_speed) + proj.generate_bullet(ammoDatum) + proj.fire_at(target_turf, xeno, xeno, ammoDatum.max_range, ammoDatum.shell_speed) apply_cooldown() return ..() @@ -347,7 +346,7 @@ else if(stabbing_xeno.ammo == GLOB.ammo_list[/datum/ammo/xeno/boiler_gas]) var/datum/effects/neurotoxin/neuro_effect = locate() in carbon_target.effects_list if(!neuro_effect) - neuro_effect = new /datum/effects/neurotoxin(carbon_target) + neuro_effect = new(carbon_target, owner) neuro_effect.duration += 16 to_chat(carbon_target,SPAN_HIGHDANGER("You are injected with something from [stabbing_xeno]'s tailstab!")) else diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm index dd9051ab0279..692fa31c72e7 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm @@ -760,12 +760,12 @@ SPAN_XENOWARNING("You spit a [xeno.ammo.name] at [atom]!") ) playsound(xeno.loc, sound_to_play, 25, 1) + var/obj/item/projectile/proj = new (current_turf, create_cause_data(xeno.ammo.name, xeno)) + proj.generate_bullet(xeno.ammo) + proj.permutated += xeno + proj.def_zone = xeno.get_limbzone_target() + proj.fire_at(spit_target, xeno, xeno, xeno.ammo.max_range, xeno.ammo.shell_speed) - var/obj/item/projectile/Proj = new (current_turf, create_cause_data(initial(xeno.caste_type), xeno)) - Proj.generate_bullet(xeno.ammo) - Proj.permutated += xeno - Proj.def_zone = xeno.get_limbzone_target() - Proj.fire_at(spit_target, xeno, xeno, xeno.ammo.max_range, xeno.ammo.shell_speed) spitting = FALSE SEND_SIGNAL(xeno, COMSIG_XENO_POST_SPIT) diff --git a/code/modules/mob/living/carbon/xenomorph/death.dm b/code/modules/mob/living/carbon/xenomorph/death.dm index f3534318f673..182d3d965832 100644 --- a/code/modules/mob/living/carbon/xenomorph/death.dm +++ b/code/modules/mob/living/carbon/xenomorph/death.dm @@ -138,10 +138,10 @@ switch(caste.caste_type) //This will need to be changed later, when we have proper xeno pathing. Might do it on caste or something. if(XENO_CASTE_BOILER) - var/mob/living/carbon/xenomorph/boiler/B = src + var/mob/living/carbon/xenomorph/boiler/src_boiler = src visible_message(SPAN_DANGER("[src] begins to bulge grotesquely, and explodes in a cloud of corrosive gas!")) - B.smoke.set_up(2, 0, get_turf(src)) - B.smoke.start() + src_boiler.smoke.set_up(2, 0, get_turf(src), new_cause_data = src_boiler.smoke.cause_data) + src_boiler.smoke.start() remains.icon_state = "gibbed-a-corpse" if(XENO_CASTE_RUNNER) remains.icon_state = "gibbed-a-corpse-runner" diff --git a/code/modules/projectiles/ammo_datums.dm b/code/modules/projectiles/ammo_datums.dm index 05a4256efb49..d8b158485501 100644 --- a/code/modules/projectiles/ammo_datums.dm +++ b/code/modules/projectiles/ammo_datums.dm @@ -2740,7 +2740,7 @@ return var/datum/effects/neurotoxin/neuro_effect = locate() in moob.effects_list if(!neuro_effect) - neuro_effect = new /datum/effects/neurotoxin(moob) + neuro_effect = new /datum/effects/neurotoxin(moob, proj.firer) neuro_effect.duration += 5 moob.apply_effect(3, DAZE) to_chat(moob, SPAN_HIGHDANGER("Neurotoxic liquid spreads all over you and immediately soaks into your pores and orifices! Oh fuck!")) // Fucked up but have a chance to escape rather than being game-ended @@ -2763,9 +2763,10 @@ /datum/ammo/xeno/boiler_gas/proc/drop_nade(turf/turf, obj/item/projectile/proj) var/lifetime_mult = 1.0 + var/datum/cause_data if(isboiler(proj.firer)) - smoke_system.cause_data = proj.weapon_cause_data - smoke_system.set_up(smokerange, 0, turf) + cause_data = proj.weapon_cause_data + smoke_system.set_up(smokerange, 0, turf, new_cause_data = cause_data) smoke_system.lifetime = 12 * lifetime_mult smoke_system.start() turf.visible_message(SPAN_DANGER("A glob of acid lands with a splat and explodes into noxious fumes!")) From b18014ae1a3f1e6d4535fdb72f82d04f07784ac1 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 26 Jun 2023 03:25:42 +0100 Subject: [PATCH 3/3] Automatic changelog for PR #3577 [ci skip] --- html/changelogs/AutoChangeLog-pr-3577.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3577.yml diff --git a/html/changelogs/AutoChangeLog-pr-3577.yml b/html/changelogs/AutoChangeLog-pr-3577.yml new file mode 100644 index 000000000000..759df8eb0357 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3577.yml @@ -0,0 +1,6 @@ +author: "TeDGamer Drathek" +delete-after: True +changes: + - bugfix: "Boilers from other hives generate proper colored IFFed gas" + - bugfix: "Fixes some death causes with boiler acid gas (for bombard, shroud, and gibbing), neurotoxin gas/stabs, acid shotgun, and xeno spits" + - balance: "Neurotoxin stops processing only in dead mobs" \ No newline at end of file