mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-11 08:06:33 +01:00
c8516dae39
## 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. /🆑
92 lines
3.1 KiB
Plaintext
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"
|