diff --git a/modular_sand/code/modules/mining/equipment/regenerative_core.dm b/modular_sand/code/modules/mining/equipment/regenerative_core.dm
index d4a54cf89b..4d508dd6c1 100644
--- a/modular_sand/code/modules/mining/equipment/regenerative_core.dm
+++ b/modular_sand/code/modules/mining/equipment/regenerative_core.dm
@@ -2,16 +2,6 @@
if(proximity_flag)
if(ishuman(target))
apply_healing_core(target, user)
- else if(istype(target, /mob/living/simple_animal/hostile/megafauna/bubblegum))
- new /mob/living/simple_animal/hostile/megafauna/bubblegum/hard(target.loc)
- visible_message("[user] turned [target] into an enraged [target]!")
- qdel(target)
- qdel(src)
- else if(istype(target, /mob/living/simple_animal/hostile/megafauna/dragon))
- new /mob/living/simple_animal/hostile/megafauna/dragon/hard(target.loc)
- visible_message("[user] turned [target] into an enraged [target]!")
- qdel(target)
- qdel(src)
/obj/item/organ/regenerative_core/attack_self(mob/user)
if(iscarbon(user))
diff --git a/modular_sand/code/modules/mining/lavaland/necropolis_chests.dm b/modular_sand/code/modules/mining/lavaland/necropolis_chests.dm
index 4208b46cd8..8a3b3cc1de 100644
--- a/modular_sand/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/modular_sand/code/modules/mining/lavaland/necropolis_chests.dm
@@ -71,26 +71,16 @@
new /obj/item/clothing/head/helmet/space/hostile_environment(src)
new /obj/item/borg/upgrade/modkit/shotgun(src)
new /obj/item/gun/magic/staff/spellblade(src)
+ new /obj/item/crucible(src)
+ new /obj/item/gun/ballistic/revolver/doublebarrel/super(src)
+ new /obj/item/clothing/suit/space/hardsuit/deathsquad/praetor(src)
+ new /obj/item/borg/upgrade/modkit/shotgun(src)
/obj/structure/closet/crate/necropolis/bubblegum/crusher/PopulateContents()
new /obj/item/clothing/suit/space/hostile_environment(src)
new /obj/item/clothing/head/helmet/space/hostile_environment(src)
new /obj/item/crusher_trophy/demon_claws(src)
new /obj/item/gun/magic/staff/spellblade(src)
-
-/mob/living/simple_animal/hostile/megafauna/bubblegum/hard
- name = "enraged bubblegum chest"
-
-/obj/structure/closet/crate/necropolis/bubblegum/hard/PopulateContents()
- new /obj/item/crucible(src)
- new /obj/item/gun/ballistic/revolver/doublebarrel/super(src)
- new /obj/item/clothing/suit/space/hardsuit/deathsquad/praetor(src)
- new /obj/item/borg/upgrade/modkit/shotgun(src)
-
-/obj/structure/closet/crate/necropolis/bubblegum/hard/crusher
- name = "enraged bloody bubblegum chest"
-
-/obj/structure/closet/crate/necropolis/bubblegum/hard/crusher/PopulateContents()
new /obj/item/crucible(src)
new /obj/item/gun/ballistic/revolver/doublebarrel/super(src)
new /obj/item/clothing/suit/space/hardsuit/deathsquad/praetor(src)
diff --git a/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/drakehard.dm b/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/drakehard.dm
deleted file mode 100644
index ca9768d5c7..0000000000
--- a/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/drakehard.dm
+++ /dev/null
@@ -1,509 +0,0 @@
-/*
-ASH DRAKE
-Ash drakes spawn randomly wherever a lavaland creature is able to spawn. They are the draconic guardians of the Necropolis.
-It acts as a melee creature, chasing down and attacking its target while also using different attacks to augment its power that increase as it takes damage.
-Whenever possible, the drake will breathe fire directly at it's target, igniting and heavily damaging anything caught in the blast.
-It also often causes lava to pool from the ground around you - many nearby turfs will temporarily turn into lava, dealing damage to anything on the turfs.
-The drake also utilizes its wings to fly into the sky, flying after its target and attempting to slam down on them. Anything near when it slams down takes huge damage.
- - Sometimes it will chain these swooping attacks over and over, making swiftness a necessity.
- - Sometimes, it will encase its target in an arena of lava
-When an ash drake dies, it leaves behind a chest that can contain four things:
- 1. A spectral blade that allows its wielder to call ghosts to it, enhancing its power
- 2. A lava staff that allows its wielder to create lava
- 3. A spellbook and wand of fireballs
- 4. A bottle of dragon's blood with several effects, including turning its imbiber into a drake themselves.
-When butchered, they leave behind diamonds, sinew, bone, and ash drake hide. Ash drake hide can be used to create a hooded cloak that protects its wearer from ash storms.
-Difficulty: Medium
-*/
-/mob/living/simple_animal/hostile/megafauna/dragon/hard
- name = "enraged ash drake"
- desc = "Ultra-guardian of the necropolis."
- health = 2500
- maxHealth = 2500
- armour_penetration = 40
- melee_damage_lower = 40
- melee_damage_upper = 40
- speed = 5
- move_to_delay = 4
- ranged = TRUE
- pixel_x = -16
- crusher_loot = list(/obj/structure/closet/crate/necropolis/dragon/hard/crusher)
- loot = list(/obj/structure/closet/crate/necropolis/dragon/hard)
- butcher_results = list(/obj/item/stack/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/bone = 30)
- guaranteed_butcher_results = list(/obj/item/stack/sheet/animalhide/ashdrake = 10)
- swooping = NONE
- var/player_cooldown = 0
- deathmessage = "collapses into a pile of bones, its flesh sloughing away."
- deathsound = 'sound/magic/demon_dies.ogg'
-
-/obj/item/gps/internal/dragon/hard
- icon_state = null
- gpstag = "Enraged Fiery Signal"
- desc = "Here there be 'bad' dragons."
- invisibility = 100
-
-/mob/living/simple_animal/hostile/megafauna/dragon/hard/Initialize()
- ..()
- internal = new/obj/item/gps/internal/dragon/hard(src)
-
-/mob/living/simple_animal/hostile/megafauna/dragon/hard/OpenFire()
- if(swooping)
- return
-
- anger_modifier = clamp(((maxHealth - health)/50),0,20)
- ranged_cooldown = world.time + ranged_cooldown_time
-
- if(prob(25 + anger_modifier))
- lava_swoop()
- else if(prob(15 + anger_modifier))
- if(prob(75))
- swooop_attack()
- else
- triple_swooop()
- else if(prob(5 + anger_modifier))
- triple_lava_swoop()
- else if(prob(10+anger_modifier))
- shoot_fire_attack()
- else
- if(prob(50))
- fire_cone()
- else
- if(prob(75))
- fire_rain()
- else
- fire_cone()
- fire_rain()
-
-/mob/living/simple_animal/hostile/megafauna/dragon/hard/proc/shoot_fire_attack()
- if(health < maxHealth*0.5)
- mass_fire()
- else
- fire_cone()
-
-/mob/living/simple_animal/hostile/megafauna/dragon/hard/fire_rain()
- if(!target)
- return
- target.visible_message("Fire rains from the sky!")
- for(var/turf/turf in range(9,get_turf(target)))
- if(prob(11))
- new /obj/effect/temp_visual/target/hard(turf)
-
-/mob/living/simple_animal/hostile/megafauna/dragon/hard/proc/lava_pools(amount, delay = 0.8)
- if(!target)
- return
- target.visible_message("Lava starts to pool up around you!")
-
- while(amount > 0)
- if(QDELETED(target))
- break
- var/turf/TT = get_turf(target)
- var/turf/T = pick(RANGE_TURFS(1,TT))
- new /obj/effect/temp_visual/lava_warning/hard(T, 60) // longer reset time for the lava
- amount--
- sleep(delay)
-
-/mob/living/simple_animal/hostile/megafauna/dragon/hard/proc/lava_swoop(amount = 30)
- if(health < maxHealth * 0.5)
- return swooop_attack(lava_arena = TRUE, swoop_cooldown = 60)
- INVOKE_ASYNC(src, .proc/lava_pools, amount)
- swooop_attack(FALSE, target, 1000) // longer cooldown until it gets reset below
- sleep(0)
- fire_cone()
- if(health < maxHealth*0.66)
- sleep(10)
- fire_cone()
- sleep(10)
- fire_cone()
- SetRecoveryTime(20)
-
-/mob/living/simple_animal/hostile/megafauna/dragon/hard/proc/triple_lava_swoop(amount = 45)
- lava_swoop()
- sleep(2)
- lava_swoop()
- sleep(2)
- lava_swoop()
-
-/mob/living/simple_animal/hostile/megafauna/dragon/hard/proc/mass_fire(spiral_count = 12, range = 15, times = 3)
- sleep(0)
- for(var/i = 1 to times)
- SetRecoveryTime(50)
- playsound(get_turf(src),'sound/magic/fireball.ogg', 200, TRUE)
- var/increment = 360 / spiral_count
- for(var/j = 1 to spiral_count)
- var/list/turfs = line_target(j * increment + i * increment / 2, range, src)
- INVOKE_ASYNC(src, .proc/fire_line, turfs)
- sleep(25)
- SetRecoveryTime(30)
-
-/mob/living/simple_animal/hostile/megafauna/dragon/hard/proc/lava_arena()
- if(!target)
- return
- target.visible_message("[src] encases you in an arena of fire!")
- var/amount = 3
- var/turf/center = get_turf(target)
- var/list/walled = RANGE_TURFS(3, center) - RANGE_TURFS(2, center)
- var/list/drakewalls = list()
- for(var/turf/T in walled)
- drakewalls += new /obj/effect/temp_visual/drakewall(T) // no people with lava immunity can just run away from the attack for free
- var/list/indestructible_turfs = list()
- for(var/turf/T in RANGE_TURFS(2, center))
- if(istype(T, /turf/open/indestructible))
- continue
- if(!istype(T, /turf/closed/indestructible))
- T.ChangeTurf(/turf/open/floor/plating/asteroid/basalt/lava_land_surface, flags = CHANGETURF_INHERIT_AIR)
- else
- indestructible_turfs += T
- sleep(10) // give them a bit of time to realize what attack is actually happening
-
- var/list/turfs = RANGE_TURFS(2, center)
- while(amount > 0)
- var/list/empty = indestructible_turfs.Copy() // can't place safe turfs on turfs that weren't changed to be open
- var/any_attack = 0
- for(var/turf/T in turfs)
- for(var/mob/living/L in T.contents)
- if(L.client)
- empty += pick(((RANGE_TURFS(2, L) - RANGE_TURFS(1, L)) & turfs) - empty) // picks a turf within 2 of the creature not outside or in the shield
- any_attack = 1
- for(var/obj/mecha/M in T.contents)
- empty += pick(((RANGE_TURFS(2, M) - RANGE_TURFS(1, M)) & turfs) - empty)
- any_attack = 1
- if(!any_attack)
- for(var/obj/effect/temp_visual/drakewall/D in drakewalls)
- qdel(D)
- return 0 // nothing to attack in the arena time for enraged attack if we still have a target
- for(var/turf/T in turfs)
- if(!(T in empty))
- new /obj/effect/temp_visual/lava_warning/hard(T)
- else if(!istype(T, /turf/closed/indestructible))
- new /obj/effect/temp_visual/lava_safe(T)
- amount--
- sleep(24)
- return 1 // attack finished completely
-
-/mob/living/simple_animal/hostile/megafauna/dragon/hard/proc/arena_escape_enrage() // you ran somehow / teleported away from my arena attack now i'm mad fucker
- sleep(0)
- SetRecoveryTime(80)
- visible_message("[src] starts to glow vibrantly as its wounds close up!")
- adjustBruteLoss(-250) // yeah you're gonna pay for that, don't run nerd
- add_atom_colour(rgb(255, 255, 0), TEMPORARY_COLOUR_PRIORITY)
- move_to_delay = move_to_delay / 2
- light_range = 10
- sleep(10) // run.
- mass_fire(20, 15, 3)
- move_to_delay = initial(move_to_delay)
- remove_atom_colour(TEMPORARY_COLOUR_PRIORITY)
- light_range = initial(light_range)
-
-/mob/living/simple_animal/hostile/megafauna/dragon/hard/proc/fire_cone(atom/at = target, meteors = TRUE)
- playsound(get_turf(src),'sound/magic/fireball.ogg', 200, TRUE)
- sleep(0)
- if(prob(50) && meteors)
- INVOKE_ASYNC(src, .proc/fire_rain)
- var/range = 15
- var/list/turfs = list()
- turfs = line_target(-40, range, at)
- INVOKE_ASYNC(src, .proc/fire_line, turfs)
- turfs = line_target(0, range, at)
- INVOKE_ASYNC(src, .proc/fire_line, turfs)
- turfs = line_target(40, range, at)
- INVOKE_ASYNC(src, .proc/fire_line, turfs)
-
-/mob/living/simple_animal/hostile/megafauna/dragon/hard/proc/line_target(offset, range, atom/at = target)
- if(!at)
- return
- var/angle = ATAN2(at.x - src.x, at.y - src.y) + offset
- var/turf/T = get_turf(src)
- for(var/i in 1 to range)
- var/turf/check = locate(src.x + cos(angle) * i, src.y + sin(angle) * i, src.z)
- if(!check)
- break
- T = check
- return (getline(src, T) - get_turf(src))
-
-/mob/living/simple_animal/hostile/megafauna/dragon/hard/proc/fire_line(var/list/turfs)
- sleep(0)
- dragon_fire_line(src, turfs)
-
-/mob/living/simple_animal/hostile/megafauna/dragon/hard/proc/swooop_attack(lava_arena = FALSE, atom/movable/manual_target, swoop_cooldown = 30)
- if(stat || swooping)
- return
- if(manual_target)
- target = manual_target
- if(!target)
- return
- stop_automated_movement = TRUE
- swooping |= SWOOP_DAMAGEABLE
- density = FALSE
- icon_state = "shadow"
- visible_message("[src] swoops up high!")
-
- var/negative
- var/initial_x = x
- if(target.x < initial_x) //if the target's x is lower than ours, swoop to the left
- negative = TRUE
- else if(target.x > initial_x)
- negative = FALSE
- else if(target.x == initial_x) //if their x is the same, pick a direction
- negative = prob(50)
- var/obj/effect/temp_visual/dragon_flight/hard/F = new /obj/effect/temp_visual/dragon_flight/hard(loc, negative)
-
- negative = !negative //invert it for the swoop down later
-
- var/oldtransform = transform
- alpha = 255
- animate(src, alpha = 204, transform = matrix()*0.9, time = 3, easing = BOUNCE_EASING)
- for(var/i in 1 to 3)
- sleep(1)
- if(QDELETED(src) || stat == DEAD) //we got hit and died, rip us
- qdel(F)
- if(stat == DEAD)
- swooping &= ~SWOOP_DAMAGEABLE
- animate(src, alpha = 255, transform = oldtransform, time = 0, flags = ANIMATION_END_NOW) //reset immediately
- return
- animate(src, alpha = 100, transform = matrix()*0.7, time = 7)
- swooping |= SWOOP_INVULNERABLE
- mouse_opacity = MOUSE_OPACITY_TRANSPARENT
- sleep(7)
-
- while(target && loc != get_turf(target))
- forceMove(get_step(src, get_dir(src, target)))
- sleep(0.5)
-
- // Ash drake flies onto its target and rains fire down upon them
- var/descentTime = 10
- var/lava_success = TRUE
- if(lava_arena)
- lava_success = lava_arena()
-
-
- //ensure swoop direction continuity.
- if(negative)
- if(ISINRANGE(x, initial_x + 1, initial_x + DRAKE_SWOOP_DIRECTION_CHANGE_RANGE))
- negative = FALSE
- else
- if(ISINRANGE(x, initial_x - DRAKE_SWOOP_DIRECTION_CHANGE_RANGE, initial_x - 1))
- negative = TRUE
- new /obj/effect/temp_visual/dragon_flight/hard/end(loc, negative)
- new /obj/effect/temp_visual/dragon_swoop/hard(loc)
- animate(src, alpha = 255, transform = oldtransform, descentTime)
- sleep(descentTime)
- swooping &= ~SWOOP_INVULNERABLE
- mouse_opacity = initial(mouse_opacity)
- icon_state = "dragon"
- playsound(loc, 'sound/effects/meteorimpact.ogg', 200, TRUE)
- for(var/mob/living/L in orange(1, src))
- if(L.stat)
- visible_message("[src] slams down on [L], crushing [L.p_them()]!")
- L.gib()
- else
- L.adjustBruteLoss(75)
- if(L && !QDELETED(L)) // Some mobs are deleted on death
- var/throw_dir = get_dir(src, L)
- if(L.loc == loc)
- throw_dir = pick(GLOB.alldirs)
- var/throwtarget = get_edge_target_turf(src, throw_dir)
- L.throw_at(throwtarget, 3)
- visible_message("[L] is thrown clear of [src]!")
- for(var/obj/mecha/M in orange(1, src))
- M.take_damage(75, BRUTE, "melee", 1)
-
- for(var/mob/M in range(7, src))
- shake_camera(M, 15, 1)
-
- density = TRUE
- sleep(1)
- swooping &= ~SWOOP_DAMAGEABLE
- SetRecoveryTime(swoop_cooldown)
- if(!lava_success)
- arena_escape_enrage()
-
-/mob/living/simple_animal/hostile/megafauna/dragon/hard/proc/triple_swooop(lava_arena = FALSE, atom/movable/manual_target, swoop_cooldown = 4)
- swooop_attack(lava_arena, manual_target, swoop_cooldown)
- sleep(15)
- swooop_attack(lava_arena, manual_target, swoop_cooldown)
- sleep(15)
- swooop_attack(lava_arena, manual_target, swoop_cooldown)
-
-/mob/living/simple_animal/hostile/megafauna/dragon/hard/ex_act(severity, target)
- if(severity == EXPLODE_LIGHT)
- return
- ..()
-
-/mob/living/simple_animal/hostile/megafauna/dragon/hard/adjustHealth(amount, updating_health = TRUE, forced = FALSE)
- if(!forced && (swooping & SWOOP_INVULNERABLE))
- return FALSE
- return ..()
-
-/mob/living/simple_animal/hostile/megafauna/dragon/hard/visible_message(message, self_message, blind_message, vision_distance = DEFAULT_MESSAGE_RANGE, list/ignored_mobs, mob/target, target_message, omni, runechat_popup, rune_msg) //SKYRAT EDIT
- if(swooping & SWOOP_INVULNERABLE) //to suppress attack messages without overriding every single proc that could send a message saying we got hit
- return
- return ..()
-
-/mob/living/simple_animal/hostile/megafauna/dragon/hard/AttackingTarget()
- if(!swooping)
- return ..()
-
-/mob/living/simple_animal/hostile/megafauna/dragon/hard/DestroySurroundings()
- if(!swooping)
- ..()
-
-/mob/living/simple_animal/hostile/megafauna/dragon/hard/Move()
- if(!swooping)
- ..()
-
-/mob/living/simple_animal/hostile/megafauna/dragon/hard/Goto(target, delay, minimum_distance)
- if(!swooping)
- ..()
-
-/obj/effect/temp_visual/lava_warning/hard
- icon_state = "lavastaff_warn"
- layer = BELOW_MOB_LAYER
- light_range = 2
- duration = 13
-
-/obj/effect/temp_visual/lava_warning/hard/ex_act()
- return
-
-/obj/effect/temp_visual/lava_warning/hard/Initialize(mapload, reset_time = 10)
- . = ..()
- INVOKE_ASYNC(src, .proc/fall, reset_time)
- src.alpha = 63.75
- animate(src, alpha = 255, time = duration)
-
-/obj/effect/temp_visual/lava_warning/hard/fall(var/reset_time)
- var/turf/T = get_turf(src)
- playsound(T,'sound/magic/fleshtostone.ogg', 80, TRUE)
- sleep(duration)
- playsound(T,'sound/magic/fireball.ogg', 200, TRUE)
-
- for(var/mob/living/L in T.contents)
- if(istype(L, /mob/living/simple_animal/hostile/megafauna/dragon))
- continue
- L.adjustFireLoss(10)
- to_chat(L, "You fall directly into the pool of lava!")
-
- // deals damage to mechs
- for(var/obj/mecha/M in T.contents)
- M.take_damage(45, BRUTE, "melee", 1)
-
- // changes turf to lava temporarily
- if(!istype(T, /turf/closed) && !istype(T, /turf/open/lava))
- var/lava_turf = /turf/open/lava/smooth
- var/reset_turf = T.type
- T.ChangeTurf(lava_turf, flags = CHANGETURF_INHERIT_AIR)
- addtimer(CALLBACK(T, /turf.proc/ChangeTurf, reset_turf, null, CHANGETURF_INHERIT_AIR), reset_time, TIMER_OVERRIDE|TIMER_UNIQUE)
-
-/obj/effect/temp_visual/drakewall
- desc = "An ash drakes true flame."
- name = "Fire Barrier"
- icon = 'icons/effects/fire.dmi'
- icon_state = "1"
- anchored = TRUE
- opacity = 0
- density = TRUE
- CanAtmosPass = ATMOS_PASS_DENSITY
- duration = 82
- color = COLOR_DARK_ORANGE
-
-/obj/effect/temp_visual/lava_safe
- icon = 'icons/obj/hand_of_god_structures.dmi'
- icon_state = "trap-earth"
- layer = BELOW_MOB_LAYER
- light_range = 2
- duration = 13
-
-/obj/effect/temp_visual/dragon_swoop/hard
- name = "certain death"
- desc = "Don't just stand there, move!"
- icon = 'icons/effects/96x96.dmi'
- icon_state = "landing"
- layer = BELOW_MOB_LAYER
- pixel_x = -32
- pixel_y = -32
- color = "#FF0000"
- duration = 10
-
-/obj/effect/temp_visual/dragon_flight/hard
- icon = 'icons/mob/lavaland/64x64megafauna.dmi'
- icon_state = "dragon"
- layer = ABOVE_ALL_MOB_LAYER
- pixel_x = -16
- duration = 10
- randomdir = FALSE
-
-/obj/effect/temp_visual/dragon_flight/hard/Initialize(mapload, negative)
- . = ..()
- INVOKE_ASYNC(src, .proc/flight, negative)
-
-/obj/effect/temp_visual/dragon_flight/hard/flight(negative)
- if(negative)
- animate(src, pixel_x = -DRAKE_SWOOP_HEIGHT*0.1, pixel_z = DRAKE_SWOOP_HEIGHT*0.15, time = 3, easing = BOUNCE_EASING)
- else
- animate(src, pixel_x = DRAKE_SWOOP_HEIGHT*0.1, pixel_z = DRAKE_SWOOP_HEIGHT*0.15, time = 3, easing = BOUNCE_EASING)
- sleep(3)
- icon_state = "swoop"
- if(negative)
- animate(src, pixel_x = -DRAKE_SWOOP_HEIGHT, pixel_z = DRAKE_SWOOP_HEIGHT, time = 7)
- else
- animate(src, pixel_x = DRAKE_SWOOP_HEIGHT, pixel_z = DRAKE_SWOOP_HEIGHT, time = 7)
-
-/obj/effect/temp_visual/dragon_flight/end
- pixel_x = DRAKE_SWOOP_HEIGHT
- pixel_z = DRAKE_SWOOP_HEIGHT
- duration = 10
-
-/obj/effect/temp_visual/dragon_flight/hard/end/flight(negative)
- if(negative)
- pixel_x = -DRAKE_SWOOP_HEIGHT
- animate(src, pixel_x = -16, pixel_z = 0, time = 5)
- else
- animate(src, pixel_x = -16, pixel_z = 0, time = 5)
-
-/obj/effect/temp_visual/fireball/hard
- icon = 'icons/obj/wizard.dmi'
- icon_state = "fireball"
- name = "fireball"
- desc = "Get out of the way!"
- layer = FLY_LAYER
- randomdir = FALSE
- duration = 9
- pixel_z = 270
-
-/obj/effect/temp_visual/fireball/hard/Initialize()
- . = ..()
- animate(src, pixel_z = 0, time = duration)
-
-/obj/effect/temp_visual/target/hard
- icon = 'icons/mob/actions/actions_items.dmi'
- icon_state = "sniper_zoom"
- layer = BELOW_MOB_LAYER
- light_range = 2
- duration = 9
-
-/obj/effect/temp_visual/target/hard/ex_act()
- return
-
-/obj/effect/temp_visual/target/hard/Initialize(mapload, list/flame_hit)
- . = ..()
- INVOKE_ASYNC(src, .proc/fall, flame_hit)
-
-/obj/effect/temp_visual/target/hard/fall(list/flame_hit)
- var/turf/T = get_turf(src)
- playsound(T,'sound/magic/fleshtostone.ogg', 80, TRUE)
- new /obj/effect/temp_visual/fireball/hard(T)
- sleep(duration)
- if(ismineralturf(T))
- var/turf/closed/mineral/M = T
- M.gets_drilled()
- playsound(T, "explosion", 80, TRUE)
- new /obj/effect/hotspot(T)
- T.hotspot_expose(700, 50, 1)
- for(var/mob/living/L in T.contents)
- if(istype(L, /mob/living/simple_animal/hostile/megafauna/dragon))
- continue
- if(islist(flame_hit) && !flame_hit[L])
- L.adjustFireLoss(40)
- to_chat(L, "You're hit by the drake's fire breath!")
- flame_hit[L] = TRUE
- else
- L.adjustFireLoss(10) //if we've already hit them, do way less damage
diff --git a/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/glaurung.dm b/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/glaurung.dm
index e4af106c22..5a7ef8a404 100644
--- a/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/glaurung.dm
+++ b/modular_sand/code/modules/mob/living/simple_animal/hostile/megafauna/glaurung.dm
@@ -64,23 +64,6 @@ Difficulty: Medium
. = ..()
internal = new/obj/item/gps/internal/glaurung(src)
-
-/mob/living/simple_animal/hostile/megafauna/dragon/glaurung/proc/line_target(offset, range, atom/at = target)
- if(!at)
- return
- var/angle = ATAN2(at.x - src.x, at.y - src.y) + offset
- var/turf/T = get_turf(src)
- for(var/i in 1 to range)
- var/turf/check = locate(src.x + cos(angle) * i, src.y + sin(angle) * i, src.z)
- if(!check)
- break
- T = check
- return (getline(src, T) - get_turf(src))
-
-/mob/living/simple_animal/hostile/megafauna/dragon/glaurung/proc/fire_line(var/list/turfs)
- sleep(0)
- dragon_fire_line(src, turfs)
-
/mob/living/simple_animal/hostile/megafauna/dragon/glaurung/proc/fire_stream(var/atom/at = target)
playsound(get_turf(src),'sound/magic/fireball.ogg', 200, TRUE)
sleep(0)
@@ -95,10 +78,7 @@ Difficulty: Medium
ranged_cooldown = world.time + ranged_cooldown_time
fire_stream()
-/mob/living/simple_animal/hostile/megafauna/dragon/glaurung/triple_swoop()
- return null
-
-/mob/living/simple_animal/hostile/megafauna/dragon/glaurung/swoop_attack(fire_rain, atom/movable/manual_target, swoop_duration = 40)
+/mob/living/simple_animal/hostile/megafauna/dragon/glaurung/swoop_attack(lava_arena, atom/movable/manual_target, swoop_duration = 40)
return null
/mob/living/simple_animal/hostile/megafauna/dragon/glaurung/AltClickOn(atom/movable/A)
diff --git a/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/drakeling.dm b/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/drakeling.dm
index 1eea19cbf5..6eab91e32f 100644
--- a/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/drakeling.dm
+++ b/modular_sand/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/drakeling.dm
@@ -164,25 +164,3 @@
INVOKE_ASYNC(src, .proc/fall, reset_time)
src.alpha = 63.75
animate(src, alpha = 255, time = duration)
-
-/obj/effect/temp_visual/lava_warning/proc/fall(var/reset_time)
- var/turf/T = get_turf(src)
- playsound(T,'sound/magic/fleshtostone.ogg', 80, TRUE)
- sleep(duration)
- playsound(T,'sound/magic/fireball.ogg', 200, TRUE)
- for(var/mob/living/L in T.contents)
- if(istype(L, /mob/living/simple_animal/hostile/asteroid/elite/drakeling))
- continue
- L.adjustFireLoss(10)
- to_chat(L, "You fall directly into the pool of lava!")
-
- // deals damage to mechs
- for(var/obj/mecha/M in T.contents)
- M.take_damage(45, BRUTE, "melee", 1)
-
- // changes turf to lava temporarily
- if(!istype(T, /turf/closed) && !istype(T, /turf/open/lava))
- var/lava_turf = /turf/open/lava/smooth
- var/reset_turf = T.type
- T.ChangeTurf(lava_turf, flags = CHANGETURF_INHERIT_AIR)
- addtimer(CALLBACK(T, /turf.proc/ChangeTurf, reset_turf, null, CHANGETURF_INHERIT_AIR), reset_time, TIMER_OVERRIDE|TIMER_UNIQUE)
diff --git a/tgstation.dme b/tgstation.dme
index 34751d2714..d56e381d37 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -3912,7 +3912,6 @@
#include "modular_sand\code\modules\mob\living\simple_animal\hostile\megafauna\colossus.dm"
#include "modular_sand\code\modules\mob\living\simple_animal\hostile\megafauna\demonic_frost_miner.dm"
#include "modular_sand\code\modules\mob\living\simple_animal\hostile\megafauna\drake.dm"
-#include "modular_sand\code\modules\mob\living\simple_animal\hostile\megafauna\drakehard.dm"
#include "modular_sand\code\modules\mob\living\simple_animal\hostile\megafauna\gladiator.dm"
#include "modular_sand\code\modules\mob\living\simple_animal\hostile\megafauna\glaurung.dm"
#include "modular_sand\code\modules\mob\living\simple_animal\hostile\megafauna\hierophant.dm"