Files
Krysonism c8516dae39 Increases spider tox vuln, increase bugkiller damage and lets flyswatter bane all basic bugs. (The author was deadened by spiders.) (#93730)
## About The Pull Request

This PR makes the flyswatter a bonus damage a bug bane restricted to
basic mobs(Since moths and fly people have their own snowflake
handling.)

The result of this is that the 24 extra damage flyswatters cause against
giant spiders now applies to more mobs like:

* flesh spiders
* mega arachnids

It also buffs the damage per unit caused by bugkillers from 0.4 to 1 and
the max damage per application is also increased.

Giant spiders now have a tox mod of 3 and flesh spiders have a tox mod
of 4.

## Why It's Good For The Game

I hate flesh spiders, the main thing I dislike about them, other than
them being incredibly OP and stacked statwise, is that they are not
spiders at all and none of the anti-spider tech even works on them, not
even a little bit!

They killed me recently, chasing me into the janitors closet while is
was desperately swatting it with a flyswatter, to no effect

If they are going to have such a heavy spider themeing, you'd at least
except the flyswatter to work on them. intuitively it should, and it is
such a niche interaction, most players probably thinks, like me, the
bonus damage applies to bugs in genereral.

I also decided to check out pest spray and see if that does something. 

Currently a pest spray blast does 2(!) damage per application to any
bug.

A total joke even against a normal giant spider, let alone a 90 health
rapidly regenerating flesh spider.

I suspect it has been heavily hugboxed to prevent players from using the
sandbox to kill moths with pest killer foam, so I opted to mainly
increase the tox mod of the basics in question rather than increasing
the main bugkiller damage.

A normal little pest killer blast will still be pretty bad, but if you
can find ways to apply a lot of reagent, pest killer can now maybe be
effective against giant spider and flesh spiders.

## Changelog

🆑
balance: fly swatter now has bonus damage against all basic bugs.
balance: bug killer reagents now do slightly more damage. 
balance: spiders and flesh spiders have greatly increased tox
vulnerability.
/🆑
2025-11-11 11:17:04 -05:00

92 lines
3.1 KiB
Plaintext

/// Simple element to be applied to reagents
/// When those reagents are exposed to mobs with the bug biotype, causes toxins damage
/// If this delivers the killing blow on a non-humanoid mob, it applies a special status effect that does a funny animation
/datum/element/bugkiller_reagent
/datum/element/bugkiller_reagent/Attach(datum/target)
. = ..()
if(!istype(target, /datum/reagent))
return
RegisterSignal(target, COMSIG_REAGENT_EXPOSE_MOB, PROC_REF(on_expose))
/datum/element/bugkiller_reagent/Detach(datum/source, ...)
. = ..()
UnregisterSignal(source, COMSIG_REAGENT_EXPOSE_MOB)
/datum/element/bugkiller_reagent/proc/on_expose(
datum/reagent/source,
mob/living/exposed_mob,
methods = TOUCH,
reac_volume,
show_message = TRUE,
touch_protection = 0,
)
SIGNAL_HANDLER
if(exposed_mob.stat == DEAD)
return
if(!(exposed_mob.mob_biotypes & MOB_BUG))
return
// capping damage so splashing a beaker on a moth is not an instant crit
var/damage = min(round(reac_volume * (1 - touch_protection), 0.1), 20)
if(damage < 1)
return
if(!(exposed_mob.mob_biotypes & MOB_HUMANOID) && exposed_mob.health <= damage)
// no-ops if they are already in the process of dying
exposed_mob.apply_status_effect(/datum/status_effect/bugkiller_death)
return
if(exposed_mob.apply_damage(damage, TOX) && damage >= 6)
// yes i know it's not burn damage. the burning is on the inside.
to_chat(exposed_mob, span_danger("You feel a burning sensation."))
/// If bugkiller delivers a lethal dosage, applies this effect which does a funny animation THEN kills 'em
/// Also makes it so simplemobs / basicmobs no longer delete when they die (if they do)
/datum/status_effect/bugkiller_death
id = "bugkiller_death"
alert_type = /atom/movable/screen/alert/status_effect/bugkiller_death
/// How many times the spasm loops
var/spasm_loops = 0
/datum/status_effect/bugkiller_death/on_creation(mob/living/new_other, duration = 4 SECONDS)
src.duration = duration
src.spasm_loops = ROUND_UP(duration / 0.8) // one spasm ~= 0.8 deciseconds (yes deciseconds)
return ..()
/datum/status_effect/bugkiller_death/on_apply()
if(owner.stat == DEAD)
return FALSE
playsound(owner, 'sound/mobs/humanoids/human/scream/malescream_1.ogg', 25, TRUE, extrarange = SILENCED_SOUND_EXTRARANGE, frequency = 5)
to_chat(owner, span_userdanger("The world begins to go dark..."))
owner.spasm_animation(spasm_loops)
owner.adjust_eye_blur(duration)
return TRUE
/datum/status_effect/bugkiller_death/on_remove()
if(owner.stat == DEAD || QDELETED(owner))
return
ADD_TRAIT(owner, TRAIT_BUGKILLER_DEATH, REF(src))
if(isbasicmob(owner))
var/mob/living/basic/basic_owner = owner
basic_owner.basic_mob_flags &= ~DEL_ON_DEATH
basic_owner.basic_mob_flags |= FLIP_ON_DEATH
if(isanimal(owner))
var/mob/living/simple_animal/simple_owner = owner
simple_owner.del_on_death = FALSE
simple_owner.flip_on_death = TRUE
owner.investigate_log("died to being sprayed with bugkiller.", INVESTIGATE_DEATHS)
owner.death()
/atom/movable/screen/alert/status_effect/bugkiller_death
name = "Overwhelming Toxicity"
desc = "Don't go into the light!"
use_user_hud_icon = TRUE
overlay_state = "paralysis"