diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index a205133b73b..1e63acb8d7a 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -442,17 +442,33 @@ src.used = TRUE + + + + +///Bosses + + + + +//Dragon + /obj/structure/closet/crate/necropolis/dragon name = "dragon chest" /obj/structure/closet/crate/necropolis/dragon/New() ..() - var/loot = rand(1,2) + var/loot = rand(1,4) switch(loot) if(1) new /obj/item/weapon/melee/ghost_sword(src) if(2) new /obj/item/weapon/lava_staff(src) + if(3) + new /obj/item/weapon/spellbook/oneuse/fireball(src) + new /obj/item/weapon/gun/magic/wand/fireball(src) + if(4) + new /obj/item/weapon/dragons_blood(src) /obj/item/weapon/melee/ghost_sword name = "spectral blade" @@ -549,7 +565,7 @@ return var/mob/living/carbon/human/H = user - var/random = rand(1,3) + var/random = rand(1,4) switch(random) if(1) @@ -561,6 +577,9 @@ user << "You don't feel so good..." message_admins("[key_name_admin(user)](FLW) has started transforming into a dragon via dragon's blood.") H.ForceContractDisease(new /datum/disease/transformation/dragon(0)) + if(4) + user << "You feel like you could walk straight through lava now." + H.weather_immunities |= "lava" playsound(user.loc,'sound/items/drink.ogg', rand(10,50), 1) qdel(src) @@ -578,7 +597,7 @@ stage2 = list("Your skin feels scaley.") stage3 = list("You have an overwhelming urge to terrorize some peasants.", "Your teeth feel sharper.") stage4 = list("Your blood burns.") - stage5 = list("You're a fucking dragon.") + stage5 = list("You're a fucking dragon. However, any previous allegiances you held still apply. It'd be incredibly rude to eat your still human friends for no reason.") new_form = /mob/living/simple_animal/hostile/megafauna/dragon/lesser @@ -620,3 +639,74 @@ O.ChangeTurf(turf_type) playsound(get_turf(src),'sound/magic/Fireball.ogg', 200, 1) timer = world.time + cooldown + +///Bubblegum + +/obj/item/mayhem + name = "mayhem in a bottle" + desc = "A magically infused bottle of blood, the scent of which will drive anyone nearby into a murderous frenzy." + icon = 'icons/obj/wizard.dmi' + icon_state = "vial" + +/obj/item/mayhem/attack_self(mob/user) + for(var/mob/living/carbon/human/H in range(7,user)) + spawn() + var/obj/effect/mine/pickup/bloodbath/B = new(H) + B.mineEffect(H) + user << "You shatter the bottle!" + playsound(user.loc, 'sound/effects/Glassbr1.ogg', 100, 1) + qdel(src) + +/obj/structure/closet/crate/necropolis/bubblegum + name = "bubblegum chest" + +/obj/structure/closet/crate/necropolis/bubblegum/New() + ..() + var/loot = rand(1,3) + switch(loot) + if(1) + new /obj/item/weapon/antag_spawner/slaughter_demon(src) + if(2) + new /obj/item/mayhem(src) + if(3) + new /obj/item/blood_contract(src) + +/obj/item/blood_contract + name = "blood contract" + icon = 'icons/obj/wizard.dmi' + icon_state = "scroll2" + color = "#FF0000" + desc = "Mark your target for death. " + var/used = FALSE + +/obj/item/blood_contract/attack_self(mob/user) + if(used) + return + used = TRUE + var/choice = input(user,"Who do you want dead?","Pick Reinforcement") as null|anything in player_list + + if(!(isliving(choice))) + user << "[choice] is already dead!" + used = FALSE + else + + var/mob/living/L = choice + + message_admins("[L] has been marked for death!") + + var/datum/objective/survive/survive = new + survive.owner = L.mind + L.mind.objectives += survive + L << "You've been marked for death! Don't let the demons get you!" + L.color = "#FF0000" + spawn() + var/obj/effect/mine/pickup/bloodbath/B = new(L) + B.mineEffect(L) + + for(var/mob/living/carbon/human/H in player_list) + if(H == L) + continue + H << "You have an overwhelming desire to kill [L]. They have been marked red! Go kill them!" + H.equip_to_slot_or_del(new /obj/item/weapon/kitchen/knife/butcher(H), slot_l_hand) + + qdel(src) \ No newline at end of file diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 5e8c8e956ef..d09d0d61306 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -263,7 +263,7 @@ /turf/open/floor/plating/asteroid/airless/cave/volcanic mob_spawn_list = list(/mob/living/simple_animal/hostile/asteroid/goldgrub = 10, /mob/living/simple_animal/hostile/asteroid/goliath/beast = 50, /mob/living/simple_animal/hostile/asteroid/basilisk/watcher = 40, /mob/living/simple_animal/hostile/asteroid/hivelord/legion = 30, - /mob/living/simple_animal/hostile/spawner/lavaland = 2, /mob/living/simple_animal/hostile/spawner/lavaland/goliath = 3, /mob/living/simple_animal/hostile/spawner/lavaland/legion = 3, /mob/living/simple_animal/hostile/megafauna/dragon = 2) + /mob/living/simple_animal/hostile/spawner/lavaland = 2, /mob/living/simple_animal/hostile/spawner/lavaland/goliath = 3, /mob/living/simple_animal/hostile/spawner/lavaland/legion = 3, /mob/living/simple_animal/hostile/megafauna/dragon = 1, /mob/living/simple_animal/hostile/megafauna/bubblegum = 0.5, /mob/living/simple_animal/hostile/megafauna/bubblegum = 0.5) turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface initial_gas_mix = "o2=14;n2=23;TEMP=300" diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm new file mode 100644 index 00000000000..c54539d599d --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm @@ -0,0 +1,167 @@ +/mob/living/simple_animal/hostile/megafauna/bubblegum + name = "bubblegum" + desc = "In what passes for a heirarchy among slaughter demons, this one is king." + health = 2500 + maxHealth = 2500 + attacktext = "rends" + attack_sound = 'sound/magic/demon_attack1.ogg' + icon_state = "bubblegum" + icon_living = "bubblegum" + icon_dead = "" + friendly = "stares down" + icon = 'icons/mob/lavaland/96x96megafauna.dmi' + faction = list("mining") + weather_immunities = list("lava","ash") + speak_emote = list("gurgles") + armour_penetration = 40 + melee_damage_lower = 30 + melee_damage_upper = 30 + speed = 1 + move_to_delay = 10 + ranged = 1 + flying = 1 + mob_size = MOB_SIZE_LARGE + pixel_x = -32 + del_on_death = 1 + aggro_vision_range = 18 + idle_vision_range = 5 + loot = list(/obj/structure/closet/crate/necropolis/dragon) + var/charging = 0 + deathmessage = "sinks into a pool of blood, fleeing the battle. You've won, for now... " + death_sound = 'sound/magic/enter_blood.ogg' + +/obj/item/device/gps/internal/bubblegum + icon_state = null + gpstag = "Bloody Signal" + desc = "You're not quite sure how a signal can be bloody." + invisibility = 100 + +/mob/living/simple_animal/hostile/megafauna/bubblegum/Life() + ..() +/* if(!charging) + blood_warp()*/ + move_to_delay = Clamp(round((health/maxHealth) * 10), 5, 10) + +/mob/living/simple_animal/hostile/megafauna/bubblegum/OpenFire() + var/anger_modifier = Clamp(((maxHealth - health)/50),0,20) + ranged_cooldown = world.time + ranged_cooldown_time + + if(!charging) + blood_warp() + + if(prob(25)) + blood_spray() + + else if(prob(5+anger_modifier/2)) + slaughterlings() + else + if(health > maxHealth/2 && !client && !charging) + charge() + else + charge() + sleep(10) + charge() + sleep(10) + charge() + + +/mob/living/simple_animal/hostile/megafauna/bubblegum/New() + ..() + for(var/mob/living/simple_animal/hostile/megafauna/bubblegum/B in mob_list) + if(B != src) + qdel(src) //There can be only one + break + var/obj/effect/proc_holder/spell/bloodcrawl/bloodspell = new + AddSpell(bloodspell) + if(istype(loc, /obj/effect/dummy/slaughter)) + bloodspell.phased = 1 + new/obj/item/device/gps/internal/bubblegum(src) + +/mob/living/simple_animal/hostile/megafauna/bubblegum/AttackingTarget() + if(charging) + return + ..() + +/mob/living/simple_animal/hostile/megafauna/bubblegum/Move() + if(!stat) + playsound(src.loc, 'sound/effects/meteorimpact.ogg', 200, 1) + if(charging) + PoolOrNew(/obj/effect/overlay/temp/decoy, list(loc,src)) + for(var/turf/T in range(src, 1)) + T.singularity_pull(src, 7) + . = ..() + +/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/charge() + var/turf/T = get_step_away(target, src) + charging = 1 + new/obj/effect/overlay/temp/dragon_swoop(T) + sleep(5) + throw_at(T, 7, 1, src, 0) + charging = 0 + + +/mob/living/simple_animal/hostile/megafauna/bubblegum/Bump(atom/A) + if(charging) + if(istype(A, /turf) || istype(A, /obj) && A.density) + A.ex_act(2) + ..() + +/mob/living/simple_animal/hostile/megafauna/bubblegum/throw_impact(atom/A) + if(!charging) + return ..() + + else if(A) + if(isliving(A)) + var/mob/living/L = A + L.visible_message("[src] slams into [L]!", "[src] slams into you!") + L.apply_damage(40, BRUTE) + playsound(get_turf(L), 'sound/effects/meteorimpact.ogg', 100, 1) + shake_camera(L, 4, 3) + shake_camera(src, 2, 3) + var/throwtarget = get_edge_target_turf(src, get_dir(src, get_step_away(L, src))) + L.throw_at_fast(throwtarget) + + charging = 0 + + +/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/blood_warp() +// if(blood_warp_cooldown > world.time) +// return + var/found_bloodpool = FALSE + for(var/obj/effect/decal/cleanable/blood/nearby in view(src,2)) + found_bloodpool = TRUE + if(found_bloodpool) + for(var/obj/effect/decal/cleanable/blood/H in view(target,2)) + visible_message("[src] sinks into the blood...") + playsound(get_turf(src), 'sound/magic/enter_blood.ogg', 100, 1, -1) + forceMove(get_turf(H)) + playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, 1, -1) + visible_message("And springs back out!") + break + + +/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/blood_spray() + visible_message("[src] sprays a stream of gore!") + spawn(0) + var/turf/E = get_edge_target_turf(src, src.dir) + var/range = 10 + for(var/turf/open/J in getline(src,E)) + if(!range) + break + playsound(J,'sound/effects/splat.ogg', 100, 1, -1) + new /obj/effect/decal/cleanable/blood(J) + range-- + sleep(1) + +/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/slaughterlings() + visible_message("[src] summons a shoal of slaughterlings!") + for(var/obj/effect/decal/cleanable/blood/H in range(src, 10)) + if(prob(25)) + new /mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/slaughter(H.loc) + +/mob/living/simple_animal/hostile/asteroid/hivelordbrood/blood/slaughter + name = "slaughterling" + desc = "Though not yet strong enough to create a true physical form, it's nonetheless determined to murder you." + faction = list("mining") + weather_immunities = list("lava","ash") + diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm new file mode 100644 index 00000000000..4ee22aa136f --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -0,0 +1,367 @@ +/mob/living/simple_animal/hostile/megafauna/colossus + name = "colossus" + desc = "A monstrous creature protected by heavy shielding." + health = 2500 + maxHealth = 2500 + attacktext = "judges" + attack_sound = 'sound/magic/clockwork/ratvar_attack.ogg' + icon_state = "eva" + icon_living = "eva" + icon_dead = "dragon_dead" + friendly = "stares down" + icon = 'icons/mob/lavaland/96x96megafauna.dmi' + faction = list("mining") + weather_immunities = list("lava","ash") + speak_emote = list("roars") + luminosity = 3 + armour_penetration = 40 + melee_damage_lower = 40 + melee_damage_upper = 40 + speed = 1 + move_to_delay = 10 + ranged = 1 + flying = 1 + mob_size = MOB_SIZE_LARGE + pixel_x = -32 + aggro_vision_range = 18 + idle_vision_range = 5 + del_on_death = 1 + loot = list(/obj/machinery/smartfridge/black_box) + butcher_results = list(/obj/item/weapon/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/animalhide/ashdrake = 10, /obj/item/stack/sheet/bone = 30) + + deathmessage = "disintegrates, leaving a glowing core." + death_sound = 'sound/magic/demon_dies.ogg' + damage_coeff = list(BRUTE = 1, BURN = 0.5, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) + var/anger_modifier = 0 + var/obj/item/device/gps/internal + +/mob/living/simple_animal/hostile/megafauna/colossus/OpenFire() + anger_modifier = Clamp(((maxHealth - health)/50),0,20) + ranged_cooldown = world.time + 120 + + if(prob(20+anger_modifier)) //Major attack + telegraph() + + if(health < maxHealth/3) + double_spiral() + else + visible_message("\"Judgement.\"") + if(prob(50)) + spiral_shoot() + else + spiral_shoot(1) + + else if(prob(20)) + ranged_cooldown = world.time + 30 + random_shots() + else + if(prob(70)) + ranged_cooldown = world.time + 20 + blast() + else + ranged_cooldown = world.time + 40 + diagonals() + sleep(10) + cardinals() + sleep(10) + diagonals() + sleep(10) + cardinals() + + +/mob/living/simple_animal/hostile/megafauna/colossus/New() + ..() + internal = new/obj/item/device/gps/internal/colossus(src) + +/mob/living/simple_animal/hostile/megafauna/colossus/Destroy() + qdel(internal) + . = ..() + +/obj/effect/overlay/temp/at_shield + name = "anti-toolbox field" + desc = "A shimmering forcefield protecting the colossus." + icon = 'icons/effects/effects.dmi' + icon_state = "at_shield2" + layer = FLY_LAYER + luminosity = 2 + duration = 80 + var/target + +/obj/effect/overlay/temp/at_shield/New() + ..() + spawn() + orbit(target, 0, FALSE, 0, 0, FALSE, TRUE) + +/mob/living/simple_animal/hostile/megafauna/colossus/bullet_act(obj/item/projectile/P) + if(!stat) + var/obj/effect/overlay/temp/at_shield/AT = new(src.loc) + AT.target = src + var/random_x = rand(-32, 32) + AT.pixel_x += random_x + + var/random_y = rand(0, 72) + AT.pixel_y += random_y + ..() + + +/mob/living/simple_animal/hostile/megafauna/colossus/proc/double_spiral() + visible_message("\"Die\"") + + sleep(10) + spawn() + spiral_shoot() + spawn() + spiral_shoot(1) + +/mob/living/simple_animal/hostile/megafauna/colossus/proc/spiral_shoot(negative = 0) + spawn() + var/counter = 1 + var/turf/marker + for(var/i in 1 to 80) + switch(counter) + if(1) + marker = locate(x,y - 2,z) + if(2) + marker = locate(x - 1,y - 2,z) + if(3) + marker = locate(x - 2, y - 2,z) + if(4) + marker = locate(x - 2,y - 1,z) + if(5) + marker = locate (x -2 ,y,z) + if(6) + marker = locate(x - 2, y+1,z) + if(7) + marker = locate(x - 2, y + 2, z) + if(8) + marker = locate(x - 1, y + 2,z) + if(9) + marker = locate(x, y + 2,z) + if(10) + marker = locate(x + 1, y+2,z) + if(11) + marker = locate(x+ 2, y + 2,z) + if(12) + marker = locate(x+2,y+1,z) + if(13) + marker = locate(x+2,y,z) + if(14) + marker = locate(x+2, y - 1, z) + if(15) + marker = locate(x+2, y - 2, z) + if(16) + marker = locate(x+1, y -2, z) + + if(negative) + counter-- + else + counter++ + if(counter > 16) + counter = 0 + if(counter < 0) + counter = 16 + shoot_projectile(marker) + sleep(1) + +/mob/living/simple_animal/hostile/megafauna/colossus/proc/shoot_projectile(turf/marker) + var/turf/startloc = get_turf(src) + var/obj/item/projectile/P = new /obj/item/projectile/colossus(startloc) + playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 100, 1) + P.current = startloc + P.starting = startloc + P.firer = src + P.yo = marker.y - startloc.y + P.xo = marker.x - startloc.x + P.original = marker + P.fire() + +/mob/living/simple_animal/hostile/megafauna/colossus/proc/random_shots() + for(var/turf/turf in range(12,get_turf(src))) + if(prob(5)) + shoot_projectile(turf) + +/mob/living/simple_animal/hostile/megafauna/colossus/proc/blast() + spawn() + for(var/turf/turf in range(1, target)) + shoot_projectile(turf) + +/mob/living/simple_animal/hostile/megafauna/colossus/proc/diagonals() + var/turf/T = locate(x + 2, y + 2, z) + shoot_projectile(T) + T = locate(x + 2, y -2, z) + shoot_projectile(T) + T = locate(x - 2, y + 2, z) + shoot_projectile(T) + T = locate(x - 2, y - 2, z) + shoot_projectile(T) + +/mob/living/simple_animal/hostile/megafauna/colossus/proc/cardinals() + var/list/attack_dirs = list(NORTH,EAST,SOUTH,WEST) + for(var/d in attack_dirs) + var/turf/E = get_edge_target_turf(src, d) + shoot_projectile(E) + +/mob/living/simple_animal/hostile/megafauna/colossus/proc/telegraph() + for(var/mob/M in range(10,src)) + if(M.client) + M.client.color = rgb(200, 0, 0) + spawn(1) + M.client.color = initial(M.client.color) + shake_camera(M, 4, 3) + playsound(get_turf(src),'sound/magic/clockwork/narsie_attack.ogg', 200, 1) + + +/mob/living/simple_animal/hostile/megafauna/colossus/proc/seeking_laser() + visible_message("\"You can't run.\"") + var/obj/effect/overlay/temp/seeking_beam/B = new(get_turf(src)) + B.target = target + B.firer = src + +/obj/effect/overlay/temp/seeking_beam + name = "disintegration ball" + desc = "Get out of the way!" + icon = 'icons/effects/effects.dmi' + icon_state = "shield-cult" + density = 1 + luminosity = 1 + var/target + var/firer + duration = 100 + +/obj/effect/overlay/temp/seeking_beam/New() + ..() + spawn() + while(loc) + step_towards(src, target) + sleep(1) + +/obj/effect/overlay/temp/seeking_beam/process() + step_towards(src, target) + +/obj/effect/overlay/temp/seeking_beam/Crossed(AM as mob|obj) + ..() + collision(AM) + +/obj/effect/overlay/temp/seeking_beam/Bumped(AM as mob|obj) + ..() + collision(AM) + +/obj/effect/overlay/temp/seeking_beam/Bump(AM as mob|obj) + ..() + collision(AM) + +/obj/effect/overlay/temp/seeking_beam/proc/collision(AM as mob|obj) + if(AM == firer) + return + if(isliving(AM)) + var/mob/living/M = AM + visible_message("[M] is disintegrated by the disintegration ball!") + M.dust() + else if(istype(AM, /obj/item)) + var/obj/item/I = AM + I.burn() + +/obj/item/projectile/colossus + name ="death bolt" + icon_state= "chronobolt" + damage = 25 + armour_penetration = 100 + speed = 2 + eyeblur = 0 + damage_type = BRUTE + pass_flags = PASSTABLE + +/obj/item/projectile/colossus/on_hit(atom/target, blocked = 0) + . = ..() + if(istype(target,/turf/)||istype(target,/obj/structure/)) + target.ex_act(2) + + +/obj/item/device/gps/internal/colossus + icon_state = null + gpstag = "Angelic Signal" + desc = "Get in the fucking robot." + invisibility = 100 + + + +//Black Box + +/obj/machinery/smartfridge/black_box + name = "black box" + desc = "A completely indestructible chunk of crystal, rumoured to predate the start of this universe. It looks like you could store things inside it." + icon = 'icons/obj/lavaland/artefacts.dmi' + icon_on = "blackbox" + icon_off = "blackbox" + luminosity = 8 + max_n_of_items = 10 + pixel_y = -4 + use_power = 0 + var/duplicate = FALSE + var/memory_saved = FALSE + var/list/stored_items = list() + +/obj/machinery/smartfridge/black_box/accept_check(obj/item/O) + if(istype(O, /obj/item)) + return 1 + return 0 + +/obj/machinery/smartfridge/black_box/New() + ..() + for(var/obj/machinery/smartfridge/black_box/B in machines) + if(B != src) + duplicate = 1 + qdel(src) + ReadMemory() + +/obj/machinery/smartfridge/black_box/process() + ..() + if(ticker.current_state == GAME_STATE_FINISHED && !memory_saved) + WriteMemory() + +/obj/machinery/smartfridge/black_box/proc/WriteMemory() + var/savefile/S = new /savefile("data/npc_saves/Blackbox.sav") + stored_items = list() + for(var/obj/I in component_parts) + qdel(I) + for(var/obj/O in contents) + stored_items += O.type + S["stored_items"] << stored_items + memory_saved = TRUE + +/obj/machinery/smartfridge/black_box/proc/ReadMemory() + var/savefile/S = new /savefile("data/npc_saves/Blackbox.sav") + S["stored_items"] >> stored_items + + if(isnull(stored_items)) + stored_items = list() + + for(var/item in stored_items) + new item(src) + + +/obj/machinery/smartfridge/black_box/Destroy() + if(duplicate) + return ..() + else + return QDEL_HINT_LETMELIVE + + +//No taking it apart + +/obj/machinery/smartfridge/black_box/default_deconstruction_screwdriver() + return + +/obj/machinery/smartfridge/black_box/exchange_parts() + return + + +/obj/machinery/smartfridge/black_box/default_pry_open() + return + + +/obj/machinery/smartfridge/black_box/default_unfasten_wrench() + return + +/obj/machinery/smartfridge/black_box/default_deconstruction_crowbar() + return \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm index 6033303c1bd..cf826039d38 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm @@ -59,7 +59,7 @@ src.visible_message( "[src] devours [L]!", "You feast on [L], restoring your health!") - adjustBruteLoss(-L.maxHealth) + adjustBruteLoss(-L.maxHealth/2) L.gib() /mob/living/simple_animal/hostile/megafauna/dragon/Process_Spacemove(movement_dir = 0) @@ -224,8 +224,8 @@ /mob/living/simple_animal/hostile/megafauna/dragon/lesser name = "lesser ash drake" - maxHealth = 750 - health = 750 + maxHealth = 300 + health = 300 melee_damage_upper = 30 melee_damage_lower = 30 damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) diff --git a/icons/mob/lavaland/96x96megafauna.dmi b/icons/mob/lavaland/96x96megafauna.dmi new file mode 100644 index 00000000000..fab005c7167 Binary files /dev/null and b/icons/mob/lavaland/96x96megafauna.dmi differ diff --git a/icons/obj/lavaland/artefacts.dmi b/icons/obj/lavaland/artefacts.dmi index ca306698982..93bd2aa1b23 100644 Binary files a/icons/obj/lavaland/artefacts.dmi and b/icons/obj/lavaland/artefacts.dmi differ diff --git a/tgstation.dme b/tgstation.dme index a1062f3055f..d1c142e42e7 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1456,6 +1456,8 @@ #include "code\modules\mob\living\simple_animal\hostile\tree.dm" #include "code\modules\mob\living\simple_animal\hostile\venus_human_trap.dm" #include "code\modules\mob\living\simple_animal\hostile\wizard.dm" +#include "code\modules\mob\living\simple_animal\hostile\megafauna\bubblegum.dm" +#include "code\modules\mob\living\simple_animal\hostile\megafauna\colossus.dm" #include "code\modules\mob\living\simple_animal\hostile\megafauna\dragon.dm" #include "code\modules\mob\living\simple_animal\hostile\megafauna\legion.dm" #include "code\modules\mob\living\simple_animal\hostile\megafauna\megafauna.dm"