mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-24 21:48:39 +01:00
fixes broken marked one spin attack and proc and removes crusher from arena (#17060)
* sleep check death * They called me a madman * Bob Joga never changes * Why did Bob space code like this * Two Popeyes biscuits no drink * golden code review Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com> * code doc gaming * woo * proc doc * berk Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
This commit is contained in:
co-authored by
GoldenAlpharex
parent
a61b486f38
commit
fcfbe52d77
@@ -85,7 +85,6 @@
|
||||
"cN" = (
|
||||
/obj/structure/stone_tile/slab,
|
||||
/obj/effect/gibspawner/human,
|
||||
/obj/item/kinetic_crusher,
|
||||
/turf/open/lava/smooth/lava_land_surface{
|
||||
slowdown = 0
|
||||
},
|
||||
|
||||
+67
-27
@@ -84,7 +84,7 @@
|
||||
break
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/Found(atom/A)
|
||||
//We only attac when pissed off
|
||||
//We only attack when pissed off
|
||||
if(!anger_timer_id)
|
||||
return FALSE
|
||||
return ..()
|
||||
@@ -94,7 +94,8 @@
|
||||
return list()
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/examine() //is it really any secret what this does
|
||||
/// Adds the text descriptor of what phase the Marked One is in, or tells you he's a corpse if he's dead as fuck
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/examine()
|
||||
if(stat >= DEAD)
|
||||
. = ..()
|
||||
. += span_boldwarning("Unearthly energies bind the body to it's place of defeat. You cannot move it.")
|
||||
@@ -102,7 +103,8 @@
|
||||
. = ..()
|
||||
. += span_boldwarning("They are currently in Phase [phase].")
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/adjustHealth(amount, updating_health, forced) //gets him mad at you if you're a species he's not racist towards, only once he takes damage
|
||||
/// Gets him mad at you if you're a species he's not racist towards, and provides the 25% chance to block attacks in the first phase
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/adjustHealth(amount, updating_health, forced)
|
||||
get_angry()
|
||||
if(spinning)
|
||||
visible_message(span_danger("[src] brushes off all incoming attacks with his spinning blade!"))
|
||||
@@ -126,7 +128,8 @@
|
||||
if(. && prob(5 * phase))
|
||||
INVOKE_ASYNC(src, .proc/teleport, target)
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/Move(atom/newloc, dir, step_x, step_y) //chasms are for sissies
|
||||
/// As the marked one is only theoretically capable of ignoring gravity, this makes him not walk on chasms, and prevents him from moving if spinning or stunned. It also figures out if he hits a wall while charging!
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/Move(atom/newloc, dir, step_x, step_y)
|
||||
if(spinning || stunned)
|
||||
return FALSE
|
||||
if(ischasm(newloc))
|
||||
@@ -174,7 +177,8 @@
|
||||
if(chargetiles >= chargerange)
|
||||
INVOKE_ASYNC(src, .proc/discharge)
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/Bump(atom/A) //used for charge-induced ass-tappage
|
||||
/// Fucks up the day of whoever he walks into, so long as he's charging and the mob is alive. If he walks into a wall, he gets stunned instead!
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/Bump(atom/A)
|
||||
. = ..()
|
||||
if(!charging)
|
||||
return
|
||||
@@ -186,21 +190,24 @@
|
||||
discharge()
|
||||
else if(istype(A, /turf/closed))
|
||||
visible_message(span_danger("[src] crashes headfirst into [A]!"))
|
||||
discharge(1.33)
|
||||
discharge(1.5)
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/proc/get_angry() //GET MAD! I DON'T WANT YOUR DAMN LEMONS WHAT THE HELL AM I SUPPOSED TO DO WITH THESE
|
||||
/// Makes the Marked One unhappy and more befitting of his "hostile" subtype status.
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/proc/get_angry()
|
||||
if(stat >= DEAD)
|
||||
return
|
||||
if(anger_timer_id)
|
||||
deltimer(anger_timer_id)
|
||||
anger_timer_id = addtimer(CALLBACK(src, .proc/get_calm), MARKED_ONE_ANGER_DURATION, TIMER_STOPPABLE)
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/proc/get_calm() //I'M THE MAN THAT'S GONNA BURN YOUR HOUSE DOWN! With the lemons!
|
||||
/// Makes the Marked One a sleepy boy that don't wanna hurt nobody. He starts like this and progresses to his hostile state after seeing an ash walker or being punched in the noggin.
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/proc/get_calm()
|
||||
if(anger_timer_id)
|
||||
deltimer(anger_timer_id)
|
||||
anger_timer_id = null
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/proc/introduction(mob/living/target) //monologue.txt
|
||||
/// Proc that makes the Marked One spout a morally grey/absurdly racist one-liner dependong on who his target is
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/proc/introduction(mob/living/target)
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/human_target = target
|
||||
var/datum/species/targetspecies = human_target.dna.species
|
||||
@@ -242,10 +249,11 @@
|
||||
GiveTarget(target)
|
||||
else
|
||||
//simplemobs beware
|
||||
say("FRESH MEAT!")
|
||||
say("It's berserkin' time!")
|
||||
introduced |= WEAKREF(target)
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/proc/update_phase() //this checks against his current health and updates his phase accordingly
|
||||
/// Checks against the Marked One's current health and updates his phase accordingly. Uses variable shitcode to make sure his phase updates only ever happen *once*
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/proc/update_phase()
|
||||
var/healthpercentage = 100 * (health/maxHealth)
|
||||
if(src.stat >= DEAD)
|
||||
return
|
||||
@@ -288,7 +296,8 @@
|
||||
if(charging)
|
||||
move_to_delay = move_to_delay_charge
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/proc/spinattack() //SPEEEEN
|
||||
/// Proc name speaks for itself. Vinesauce Joel
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/proc/spinattack()
|
||||
var/turf/our_turf = get_turf(src)
|
||||
if(!istype(our_turf))
|
||||
return
|
||||
@@ -309,7 +318,7 @@
|
||||
spinning = TRUE
|
||||
for(var/turf/targeted as anything in spinningturfs)
|
||||
dir = get_dir(src, targeted)
|
||||
var/obj/effect/temp_visual/small_smoke/halfsecond/smonk = new /obj/effect/temp_visual/small_smoke/halfsecond(targeted)
|
||||
var/obj/effect/temp_visual/small_smoke/smonk = new /obj/effect/temp_visual/small_smoke(targeted)
|
||||
QDEL_IN(smonk, 0.5 SECONDS)
|
||||
for(var/mob/living/slapped in targeted)
|
||||
if(!faction_check(faction, slapped.faction) && !(slapped in hit_things))
|
||||
@@ -322,16 +331,13 @@
|
||||
hit_things |= slapped
|
||||
if(!spinning)
|
||||
break
|
||||
addtimer(CALLBACK(src, .proc/animate_speen), 0.5 SECONDS)
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/proc/animate_speen()
|
||||
sleep(0.75) //addtimer(CALLBACK(src, .proc/convince_zonespace_to_let_me_use_sleeps), 2 WEEKS)
|
||||
animate(src, color = initial(color), 3)
|
||||
addtimer(CALLBACK(src, .proc/stop_speen), 0.5 SECONDS)
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/proc/stop_speen()
|
||||
sleep(3)
|
||||
spinning = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/proc/charge(atom/target, range = 1) //the marked one's charge has an instant travel time, but takes a moment to power-up, allowing you to get behind cover to stun him
|
||||
/// The Marked One's charge has an instant travel time, but takes a moment to power-up, allowing you to get behind cover to stun him if he hits a wall. Only ever called when a phase change occurs, as it hardstuns if it lands
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/proc/charge(atom/target, range = 1)
|
||||
face_atom(target)
|
||||
visible_message(span_userdanger("[src] lifts his arm, and prepares to charge!"))
|
||||
animate(src, color = "#ff6666", 3)
|
||||
@@ -341,7 +347,8 @@
|
||||
charging = TRUE
|
||||
update_phase()
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/proc/discharge(modifier = 1) //discharge is a proc that occurs when the marked one charges into a solid turf on his way to your ass, causing a stun
|
||||
/// Discharge damages the Marked One and stuns him when he slams into a wall whilst charging
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/proc/discharge(modifier = 1)
|
||||
stunned = TRUE
|
||||
charging = FALSE
|
||||
minimum_distance = initial(minimum_distance)
|
||||
@@ -351,7 +358,8 @@
|
||||
sleep(CEILING(MARKED_ONE_STUN_DURATION * modifier, 1))
|
||||
stunned = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/proc/teleport(atom/target) //teleport is a proc that makes him teleport
|
||||
/// Teleport makes him teleport. woah.
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/proc/teleport(atom/target)
|
||||
var/turf/targeted = get_step(target, target.dir)
|
||||
new /obj/effect/temp_visual/small_smoke/halfsecond(get_turf(src))
|
||||
SLEEP_CHECK_DEATH(4, src)
|
||||
@@ -369,20 +377,52 @@
|
||||
new /obj/effect/temp_visual/small_smoke/halfsecond(targeted)
|
||||
forceMove(targeted)
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/proc/bone_knife_throw(atom/target) //bone_knife_throw is a proc that throws bone knives
|
||||
/// Bone Knife Throw makes him throw bone knives. woah.
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/proc/bone_knife_throw(atom/target)
|
||||
var/obj/item/knife/combat/bone/boned = new /obj/item/knife/combat/bone(get_turf(src))
|
||||
boned.throwforce = 35
|
||||
playsound(src, 'sound/weapons/bolathrow.ogg', 60, 0)
|
||||
boned.throw_at(target, 7, 3, thrower = src)
|
||||
QDEL_IN(boned, 3 SECONDS)
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/proc/swordslam() //this kills the crab
|
||||
wendigo_slam(src, 5, 1 SECONDS, 8)
|
||||
/// Effectively just a copied and pasted version of the wendigo ground slam. Used to create radiating shockwaves that force quick thinking and repositioning, and must be defined here because *someone* un-globaled the shit out of this proc
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/proc/ground_pound(range, delay, throw_range)
|
||||
var/turf/origin = get_turf(src)
|
||||
if(!origin)
|
||||
return
|
||||
var/list/all_turfs = RANGE_TURFS(range, origin)
|
||||
for(var/sound_range = 0 to range)
|
||||
playsound(origin,'sound/effects/bamf.ogg', 600, TRUE, 10)
|
||||
for(var/turf/stomp_turf in all_turfs)
|
||||
if(get_dist(origin, stomp_turf) > sound_range)
|
||||
continue
|
||||
|
||||
new /obj/effect/temp_visual/small_smoke/halfsecond(stomp_turf)
|
||||
for(var/mob/living/target in stomp_turf)
|
||||
if(target == src || target.throwing)
|
||||
continue
|
||||
|
||||
to_chat(target, span_userdanger("[src]'s ground slam shockwave sends you flying!"))
|
||||
var/turf/thrownat = get_ranged_target_turf_direct(src, target, throw_range, rand(-10, 10))
|
||||
target.throw_at(thrownat, 8, 2, null, TRUE, force = MOVE_FORCE_OVERPOWERING, gentle = TRUE)
|
||||
target.apply_damage(20, BRUTE, wound_bonus=CANT_WOUND)
|
||||
|
||||
shake_camera(target, 2, 1)
|
||||
|
||||
all_turfs -= stomp_turf
|
||||
|
||||
sleep(delay)
|
||||
|
||||
/// Large radius but slow-to-move radiating ground slam
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/proc/swordslam()
|
||||
ground_pound(5, 1 SECONDS, 8)
|
||||
|
||||
/// Sort range slam with faster shockwave travel
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/proc/stomp()
|
||||
wendigo_slam(src, 2, 0.5 SECONDS, 3)
|
||||
ground_pound(2, 0.5 SECONDS, 3)
|
||||
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/OpenFire() //used to actually decide what attacks he does. abandon all hope ye who enter here
|
||||
/// Used to determine what attacks the Marked One actually uses. This works by making him a ranged mob without a projectile. Shitcode? Maybe! But it woooorks.
|
||||
/mob/living/simple_animal/hostile/megafauna/gladiator/OpenFire()
|
||||
if(!COOLDOWN_FINISHED(src, ranged_cooldown))
|
||||
return FALSE
|
||||
if(spinning || stunned || charging)
|
||||
|
||||
Reference in New Issue
Block a user