mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-30 02:52:30 +00:00
## About The Pull Request tweaks some stats of The Thing as a boss to make it slightly more bearable to fight specially for people with higher ping. more specifically increasing some of the telegraphs' time and reducing some wound chances, also halved the charge's knockdown time (1s to 0.5s) also (i think) fixed an issue where the spike walls that the thing summons destroy items on the floor (sucks ass to have your pkcrusher destroyed) ## Why It's Good For The Game the thing is one of if not the most fun megafauna added so far, as it's the first basic mob boss, but it's a bit hard to keep up with specially if you're a high ping player, the boss itself is also not in a depressurized enviroment so i think it's justified to make it a bit easier to dodge since some of the healing items miners have only work in low pressure ## Changelog 🆑 balance: nerfed Icebox's "The Thing" boss fix: fixed "The Thing" 's spike walls destroying items on the floor when summoned /🆑
131 lines
4.3 KiB
Plaintext
131 lines
4.3 KiB
Plaintext
/obj/structure/thing_boss_spike
|
|
name = "blades"
|
|
desc = "A sharp flurry of blades that have erupted from the ground."
|
|
icon_state = "thingspike"
|
|
density = FALSE //so ai considers it
|
|
anchored = TRUE
|
|
max_integrity = 1 // 1 hit
|
|
/// time before we fall apart
|
|
var/expiry_time = 10 SECONDS
|
|
|
|
/obj/structure/thing_boss_spike/Initialize(mapload)
|
|
. = ..()
|
|
var/turf/our_turf = get_turf(src)
|
|
#ifndef UNIT_TESTS //just in case
|
|
new /obj/effect/temp_visual/mook_dust(loc)
|
|
#endif
|
|
var/hit_someone = FALSE
|
|
for(var/atom/movable/potential_target as anything in our_turf)
|
|
if (ismegafauna(potential_target) || potential_target == src)
|
|
continue
|
|
var/mob/living/living_victim = potential_target
|
|
if(isliving(living_victim))
|
|
hit_someone = TRUE
|
|
living_victim.apply_damage(40, damagetype = BRUTE, sharpness = SHARP_POINTY, wound_bonus = -10)
|
|
else if(potential_target.uses_integrity && !(potential_target.resistance_flags & INDESTRUCTIBLE) && initial(potential_target.density) && !HAS_TRAIT(potential_target, TRAIT_UNDERFLOOR))
|
|
potential_target.take_damage(100, BRUTE)
|
|
if (hit_someone)
|
|
expiry_time /= 2
|
|
playsound(src, 'sound/items/weapons/slice.ogg', vol = 50, vary = TRUE, pressure_affected = FALSE)
|
|
else
|
|
playsound(src, 'sound/misc/splort.ogg', vol = 25, vary = TRUE, pressure_affected = FALSE)
|
|
|
|
QDEL_IN(src, expiry_time)
|
|
|
|
/obj/structure/thing_boss_spike/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
|
if(damage_amount)
|
|
playsound(src, 'sound/effects/blob/blobattack.ogg', 50, TRUE)
|
|
else
|
|
playsound(src, 'sound/items/weapons/tap.ogg', 50, TRUE)
|
|
|
|
/obj/structure/thing_boss_spike/CanAllowThrough(atom/movable/mover, border_dir)
|
|
. = ..()
|
|
if(!istype(mover, /mob/living/basic/boss/thing))
|
|
return FALSE
|
|
|
|
/obj/structure/thing_boss_spike/CanAStarPass(to_dir, datum/can_pass_info/pass_info)
|
|
if(!istype(pass_info.requester_ref?.resolve(), /mob/living/basic/boss/thing))
|
|
return FALSE
|
|
return ..()
|
|
|
|
/obj/effect/temp_visual/telegraphing/exclamation
|
|
icon = 'icons/mob/telegraphing/telegraph.dmi'
|
|
icon_state = "exclamation"
|
|
duration = 1 SECONDS
|
|
|
|
/obj/effect/temp_visual/telegraphing/exclamation/Initialize(mapload, duration)
|
|
if(!isnull(duration))
|
|
src.duration = duration
|
|
return ..()
|
|
|
|
/obj/effect/temp_visual/telegraphing/exclamation/animated
|
|
alpha = 0
|
|
|
|
/obj/effect/temp_visual/telegraphing/exclamation/animated/Initialize(mapload)
|
|
. = ..()
|
|
transform = matrix()*2
|
|
animate(src, alpha = 255, transform = matrix(), time = duration/3)
|
|
|
|
/obj/effect/temp_visual/telegraphing/big
|
|
icon = 'icons/mob/telegraphing/telegraph_96x96.dmi'
|
|
icon_state = "target_largebox"
|
|
pixel_x = -32
|
|
pixel_y = -32
|
|
color = COLOR_RED
|
|
duration = 2 SECONDS
|
|
|
|
/obj/effect/temp_visual/incoming_thing_acid
|
|
icon = 'icons/obj/weapons/guns/projectiles.dmi'
|
|
icon_state = "toxin"
|
|
name = "acid"
|
|
desc = "Get out of the way!"
|
|
layer = FLY_LAYER
|
|
plane = ABOVE_GAME_PLANE
|
|
randomdir = FALSE
|
|
duration = 0.9 SECONDS
|
|
pixel_z = 270
|
|
|
|
/obj/effect/temp_visual/incoming_thing_acid/Initialize(mapload)
|
|
. = ..()
|
|
animate(src, pixel_z = 0, time = duration)
|
|
addtimer(CALLBACK(src, PROC_REF(make_acid)), 0.85 SECONDS)
|
|
|
|
/obj/effect/temp_visual/incoming_thing_acid/proc/make_acid()
|
|
for(var/turf/open/open in RANGE_TURFS(1, loc))
|
|
new /obj/effect/thing_acid(open)
|
|
|
|
/obj/effect/thing_acid
|
|
name = "stomach acid"
|
|
icon = 'icons/effects/acid.dmi'
|
|
icon_state = "default"
|
|
layer = BELOW_MOB_LAYER
|
|
plane = GAME_PLANE
|
|
anchored = TRUE
|
|
/// how long does the acid exist for
|
|
var/duration_time = 5 SECONDS
|
|
|
|
/obj/effect/thing_acid/Initialize(mapload)
|
|
. = ..()
|
|
var/static/list/loc_connections = list(
|
|
COMSIG_ATOM_ENTERED = PROC_REF(on_entered),
|
|
)
|
|
AddElement(/datum/element/connect_loc, loc_connections)
|
|
QDEL_IN(src, duration_time)
|
|
|
|
/obj/effect/thing_acid/proc/on_entered(datum/source, mob/living/victim)
|
|
SIGNAL_HANDLER
|
|
if(!istype(victim) || ismegafauna(victim))
|
|
return
|
|
for(var/zone in list(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG))
|
|
var/blocked = victim.run_armor_check(zone, ACID)
|
|
victim.apply_damage(25, BURN, def_zone = zone, blocked = blocked)
|
|
to_chat(victim, span_userdanger("You are burnt by the acid!"))
|
|
playsound(victim, 'sound/effects/wounds/sizzle1.ogg', vol = 50, vary = TRUE)
|
|
qdel(src)
|
|
|
|
/obj/item/keycard/thing_boss
|
|
name = "Storage Room 2 Keycard"
|
|
desc = "A fancy keycard for storage room 2."
|
|
color = COLOR_PALE_GREEN
|
|
puzzle_id = "thingbosslootroom"
|