Merge pull request #17018 from KorPhaeron/megafauna

Megafauna
This commit is contained in:
Cheridan
2016-04-29 20:27:21 -05:00
19 changed files with 537 additions and 17 deletions
+1
View File
@@ -316,6 +316,7 @@ var/list/bloody_footprints_cache = list()
#define SENTIENCE_ARTIFICIAL 2
#define SENTIENCE_OTHER 3
#define SENTIENCE_MINEBOT 4
#define SENTIENCE_BOSS 5
//Fire stuff, for burn_state
#define LAVA_PROOF -2
@@ -18,7 +18,7 @@
status_flags = CANPUSH
attack_sound = 'sound/magic/demon_attack1.ogg'
var/feast_sound = 'sound/magic/Demon_consume.ogg'
var/death_sound = 'sound/magic/demon_dies.ogg'
death_sound = 'sound/magic/demon_dies.ogg'
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
minbodytemp = 0
maxbodytemp = INFINITY
@@ -60,10 +60,6 @@
else
speed = 0
/mob/living/simple_animal/slaughter/death()
playsound(get_turf(src),death_sound, 200, 1)
..()
/obj/effect/decal/cleanable/blood/innards
icon = 'icons/obj/surgery.dmi'
name = "pile of viscera"
+4
View File
@@ -861,6 +861,7 @@
throw_range = 5
var/loaded = 1
var/malfunctioning = 0
var/revive_type = SENTIENCE_ORGANIC //So you can't revive boss monsters or robots with it
origin_tech = "biotech=4"
/obj/item/weapon/lazarus_injector/afterattack(atom/target, mob/user, proximity_flag)
@@ -869,6 +870,9 @@
if(istype(target, /mob/living) && proximity_flag)
if(istype(target, /mob/living/simple_animal))
var/mob/living/simple_animal/M = target
if(M.sentience_type != revive_type)
user << "<span class='info'>[src] does not work on this sort of creature.</span>"
return
if(M.stat == DEAD)
M.faction = list("neutral")
M.revive(full_heal = 1, admin_revive = 1)
+1 -1
View File
@@ -255,7 +255,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/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)
turf_type = /turf/open/floor/plating/asteroid/basalt/lava_land_surface
initial_gas_mix = "o2=14;n2=23;TEMP=300"
@@ -31,6 +31,8 @@
see_invisible = SEE_INVISIBLE_MINIMUM
unique_name = 1
gold_core_spawnable = 0
death_sound = 'sound/voice/hiss6.ogg'
deathmessage = "lets out a waning guttural screech, green blood bubbling from its maw..."
/mob/living/simple_animal/hostile/alien/drone
name = "alien drone"
@@ -140,11 +142,6 @@
damage = 30
icon_state = "toxin"
/mob/living/simple_animal/hostile/alien/death(gibbed)
..(gibbed)
visible_message("[src] lets out a waning guttural screech, green blood bubbling from its maw...")
playsound(src, 'sound/voice/hiss6.ogg', 100, 1)
/mob/living/simple_animal/hostile/alien/handle_temperature_damage()
if(bodytemperature < minbodytemp)
adjustBruteLoss(2)
@@ -0,0 +1,323 @@
/mob/living/simple_animal/hostile/megafauna/dragon
name = "ash drake"
desc = "Guardians of the necropolis."
health = 2500
maxHealth = 2500
attacktext = "chomps"
attack_sound = 'sound/magic/demon_attack1.ogg'
icon_state = "dragon"
icon_living = "dragon"
icon_dead = "dragon_dead"
friendly = "stares down"
icon = 'icons/mob/lavaland/dragon.dmi'
faction = list("mining")
speak_emote = list("roars")
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 = -16
aggro_vision_range = 18
idle_vision_range = 5
loot = list(/obj/structure/closet/crate/necropolis/dragon)
butcher_results = list(/obj/item/weapon/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/animalhide/goliath_hide = 8, /obj/item/stack/sheet/bone = 30)
var/anger_modifier = 0
var/obj/item/device/gps/internal
var/swooping = 0
deathmessage = "collapes into a pile of bones, it's flesh sloughing away."
death_sound = 'sound/magic/demon_dies.ogg'
damage_coeff = list(BRUTE = 1, BURN = 0.5, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1)
/mob/living/simple_animal/hostile/megafauna/dragon/New()
..()
internal = new/obj/item/device/gps/internal/dragon(src)
/mob/living/simple_animal/hostile/megafauna/dragon/AttackingTarget()
if(swooping)
return
else
..()
/mob/living/simple_animal/hostile/megafauna/dragon/Process_Spacemove(movement_dir = 0)
return 1
/obj/effect/overlay/temp/fireball
icon = 'icons/obj/projectiles.dmi'
icon_state = "fireball"
name = "fireball"
desc = "Get out of the way!"
layer = 6
dir = SOUTH
pixel_z = 500
anchored = 1
/obj/effect/overlay/temp/target
icon = 'icons/mob/actions.dmi'
icon_state = "sniper_zoom"
layer = MOB_LAYER - 0.1
anchored = 1
luminosity = 2
/obj/effect/overlay/temp/target/ex_act()
return
/obj/effect/overlay/temp/target/New()
..()
spawn()
var/turf/T = get_turf(src)
playsound(get_turf(src),'sound/magic/Fireball.ogg', 200, 1)
var/obj/effect/overlay/temp/fireball/F = new(src.loc)
animate(F, pixel_z = 0, time = 12)
sleep(12)
explosion(T, 0, 0, 1, 0, 1, 0)
qdel(F)
qdel(src)
/mob/living/simple_animal/hostile/megafauna/dragon/OpenFire()
anger_modifier = Clamp(((maxHealth - health)/50),0,20)
ranged_cooldown = world.time + ranged_cooldown_time
if(prob(15 + anger_modifier))
if(health < maxHealth/2 && !client)
swoop_attack(1)
else
fire_rain()
else if(prob(10+anger_modifier) && !client)
if(health > maxHealth/2)
swoop_attack()
else
swoop_attack()
swoop_attack()
swoop_attack()
else
fire_walls()
/mob/living/simple_animal/hostile/megafauna/dragon/proc/fire_rain()
visible_message("<span class='danger'>Fire rains from the sky!</span>")
for(var/turf/turf in range(12,get_turf(src)))
if(prob(10))
new /obj/effect/overlay/temp/target(turf)
/mob/living/simple_animal/hostile/megafauna/dragon/proc/fire_walls()
var/list/attack_dirs = list(NORTH,EAST,SOUTH,WEST)
if(prob(50))
attack_dirs = list(NORTH,WEST,SOUTH,EAST)
playsound(get_turf(src),'sound/magic/Fireball.ogg', 200, 1)
spawn(0)
for(var/d in attack_dirs)
var/turf/E = get_edge_target_turf(src, d)
var/range = 10
for(var/turf/open/J in getline(src,E))
if(!range)
break
range--
PoolOrNew(/obj/effect/hotspot,J)
J.hotspot_expose(700,50,1)
/mob/living/simple_animal/hostile/megafauna/dragon/proc/swoop_attack(fire_rain = 0)
if(stat)
return
var/mob/living/swoop_target = target
stop_automated_movement = TRUE
swooping = 1
icon_state = "swoop"
visible_message("<span class='danger'>[src] swoops up high!</span>")
if(prob(50))
animate(src, pixel_x = 500, pixel_z = 500, time = 10)
else
animate(src, pixel_x = -500, pixel_z = 500, time = 10)
sleep(30)
var/turf/tturf
if(fire_rain)
fire_rain()
icon_state = "dragon"
if(swoop_target)
tturf = get_turf(swoop_target)
else
tturf = get_turf(src)
src.loc = tturf
animate(src, pixel_x = 0, pixel_z = 0, time = 10)
sleep(10)
playsound(src, 'sound/effects/meteorimpact.ogg', 200, 1)
for(var/mob/living/L in range(1,tturf))
if(L.stat)
visible_message("<span class='danger'>[src] slams down on [L], crushing them!</span>")
L.gib()
else
var/throwtarget = get_edge_target_turf(src, get_dir(src, get_step_away(L, src)))
L.adjustBruteLoss(75)
L.throw_at_fast(throwtarget)
visible_message("<span class='danger'>[L] is thrown clear of [src]!</span>")
for(var/mob/M in range(7,src))
shake_camera(M, 15, 1)
stop_automated_movement = FALSE
swooping = 0
density = 1
/obj/item/device/gps/internal/dragon
icon_state = null
gpstag = "Fiery Signal"
desc = "Here there be dragons."
invisibility = 100
//The part you've all been waiting for: Loot
/obj/item/weapon/melee/ghost_sword
name = "spectral blade"
desc = "A rusted and dulled blade. It doesn't look like it'd do much damage. It glows weakly."
icon_state = "cultblade"
item_state = "cultblade"
flags = CONDUCT
sharpness = IS_SHARP
w_class = 4
force = 1
throwforce = 1
hitsound = 'sound/effects/ghost2.ogg'
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "rended")
var/summon_cooldown = 0
/obj/item/weapon/melee/ghost_sword/attack_self(mob/user)
if(summon_cooldown > world.time)
return
notify_ghosts("[user] is raising their [src], calling for your help!", source = user)
summon_cooldown = world.time + 600
/obj/item/weapon/melee/ghost_sword/proc/ghost_check(mob/user)
var/ghost_counter = 0
for(var/mob/dead/observer/G in dead_mob_list)
if(G.orbiting == user)
ghost_counter++
G.invisibility = 0
spawn(30)
G.invisibility = initial(G.invisibility)
return ghost_counter
/obj/item/weapon/melee/ghost_sword/attack(mob/living/target, mob/living/carbon/human/user)
force = 0
var/ghost_counter = ghost_check(user)
force = Clamp((ghost_counter * 4), 0, 75)
user.visible_message("<span class='danger'>[user] strikes with the force of [ghost_counter] vengeful spirits!</span>")
..()
/obj/item/weapon/melee/ghost_sword/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type)
var/ghost_counter = ghost_check(owner)
final_block_chance += Clamp((ghost_counter * 5), 0, 75)
owner.visible_message("<span class='danger'>[owner] is protected by a ring of [ghost_counter] ghosts!</span>")
return ..()
/mob/living/simple_animal/hostile/megafauna/dragon/lesser
name = "lesser ash drake"
maxHealth = 500
health = 500
melee_damage_upper = 30
melee_damage_lower = 30
damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1)
loot = list()
//Blood
/obj/item/weapon/dragons_blood
name = "bottle of dragons blood"
desc = "You're not actually going to drink this, are you?"
icon = 'icons/obj/wizard.dmi'
icon_state = "vial"
/obj/item/weapon/dragons_blood/attack_self(mob/living/carbon/human/user)
if(!istype(user))
return
var/mob/living/carbon/human/H = user
var/random = rand(1,5)
switch(random)
if(1)
user << "<span class='danger'>The blood sears your insides! What the hell were you thinking?</span>"
user.reagents.add_reagent("hellwater", 50)
if(2)
user << "<span class='danger'>Other than tasting terrible, nothing really happens.</span>"
if(3)
user << "<span class='danger'>Your flesh begins to melt! Miraculously, you seem fine otherwise.</span>"
H.set_species(/datum/species/skeleton)
if(4)
user << "<span class='danger'>The blood mixes with your own, filling your veins with a pulsing fire.</span>"
H.dna.species.coldmod = 0
if(5)
user << "<span class='danger'>You don't feel so good...</span>"
H.ForceContractDisease(new /datum/disease/transformation/dragon(0))
playsound(user.loc,'sound/items/drink.ogg', rand(10,50), 1)
qdel(src)
/datum/disease/transformation/dragon
name = "dragon transformation"
cure_text = "nothing"
cures = list("adminordrazine")
agent = "dragon's blood"
desc = "What do dragons have to do with Space Station 13?"
stage_prob = 20
severity = BIOHAZARD
visibility_flags = 0
stage1 = list("Your bones ache.")
stage2 = list("Your skin feels scaley.")
stage3 = list("<span class='danger'>You have an overwhelming urge to terrorize some peasants.</span>", "<span class='danger'>Your teeth feel sharper.</span>")
stage4 = list("<span class='danger'>Your blood burns.</span>")
stage5 = list("<span class='danger'>You're a fucking dragon.</span>")
new_form = /mob/living/simple_animal/hostile/megafauna/dragon/lesser
//Lava Staff
/obj/item/weapon/lava_staff
name = "staff of lava"
desc = "The ability to fill the emergency shuttle with lava. What more could you want out of life?"
icon_state = "staffofstorms"
item_state = "staffofstorms"
icon = 'icons/obj/guns/magic.dmi'
slot_flags = SLOT_BACK
item_state = "staffofstorms"
w_class = 4
force = 25
damtype = BURN
hitsound = 'sound/weapons/sear.ogg'
var/lava_cooldown = 0
/obj/item/weapon/lava_staff/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
..()
if(lava_cooldown > world.time)
return
if(target && istype(target, /turf/open))
var/turf/open/O = target
user.visible_message("<span class='danger'>[user] turns \the [O] into lava!</span>")
O.ChangeTurf(/turf/open/floor/plating/lava/smooth)
playsound(get_turf(src),'sound/magic/Fireball.ogg', 200, 1)
lava_cooldown = world.time + 200
/obj/structure/closet/crate/necropolis/dragon
name = "dragon chest"
/obj/structure/closet/crate/necropolis/dragon/New()
..()
var/loot = rand(1,4)
switch(loot)
if(1)
for(var/i in 1 to 10)
new /obj/item/weapon/ore/diamond(src)
new /obj/item/weapon/ore/gold(src)
if(2)
new /obj/item/weapon/melee/ghost_sword(src)
if(3)
new /obj/item/weapon/dragons_blood(src)
if(4)
new /obj/item/weapon/lava_staff(src)
@@ -0,0 +1,140 @@
/mob/living/simple_animal/hostile/megafauna/legion
name = "legion"
health = 800
maxHealth = 800
icon_state = "legion"
icon_living = "legion"
desc = "One of many."
icon = 'icons/mob/lavaland/legion.dmi'
attacktext = "chomps"
attack_sound = 'sound/magic/demon_attack1.ogg'
faction = list("mining")
speak_emote = list("echoes")
armour_penetration = 50
melee_damage_lower = 25
melee_damage_upper = 25
speed = 2
ranged = 1
flying = 1
del_on_death = 1
retreat_distance = 5
minimum_distance = 5
ranged_cooldown_time = 20
var/size = 10
var/charging = 0
pixel_y = -90
pixel_x = -75
loot = list(/obj/item/stack/sheet/bone = 3)
vision_range = 13
aggro_vision_range = 18
idle_vision_range = 13
/mob/living/simple_animal/hostile/megafauna/legion/New()
..()
new/obj/item/device/gps/internal/legion(src)
/mob/living/simple_animal/hostile/megafauna/legion/OpenFire(the_target)
if(world.time >= ranged_cooldown && !charging)
if(prob(75))
var/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/A = new(src.loc)
A.GiveTarget(target)
A.friends = friends
A.faction = faction
ranged_cooldown = world.time + ranged_cooldown_time
else
visible_message("<span class='danger'>[src] charges!</span>")
SpinAnimation(speed = 20, loops = 5)
ranged = 0
retreat_distance = 0
minimum_distance = 0
speed = 0
charging = 1
spawn(50)
ranged = 1
retreat_distance = 5
minimum_distance = 5
speed = 2
charging = 0
/mob/living/simple_animal/hostile/megafauna/legion/death()
if(size > 2)
for(var/i in 1 to 2)
var/mob/living/simple_animal/hostile/megafauna/legion/L = new(src.loc)
L.health = src.maxHealth * 0.6
L.maxHealth = L.health
L.size = size - 2
var/size_multiplier = L.size * 0.08
L.resize = size_multiplier
L.pixel_y = L.pixel_y * size_multiplier
L.pixel_x = L.pixel_x * size_multiplier
L.update_transform()
visible_message("<span class='danger'>[src] splits!</span>")
qdel(src)
else
var/last_legion = TRUE
for(var/mob/living/simple_animal/hostile/megafauna/legion/other in mob_list)
if(other != src)
last_legion = FALSE
break
if(last_legion)
src.loot = list(/obj/item/weapon/staff_of_storms)
else if(prob(5))
src.loot = list(/obj/structure/closet/crate/necropolis/tendril)
..()
/mob/living/simple_animal/hostile/megafauna/legion/Process_Spacemove(movement_dir = 0)
return 1
/obj/item/device/gps/internal/legion
icon_state = null
gpstag = "Echoing Signal"
desc = "The message repeats."
invisibility = 100
//Loot
/obj/item/weapon/staff_of_storms
name = "staff of storms"
desc = "An ancient staff retrieved from the remains of Legion. The wind stirs as you move it."
icon_state = "staffofstorms"
item_state = "staffofstorms"
icon = 'icons/obj/guns/magic.dmi'
slot_flags = SLOT_BACK
item_state = "staffofstorms"
w_class = 4
force = 25
damtype = BURN
hitsound = 'sound/weapons/sear.ogg'
var/obj/machinery/lavaland_controller/linked_machine
var/storm_cooldown = 0
/obj/item/weapon/staff_of_storms/attack_self(mob/user)
if(storm_cooldown > world.time)
user << "The staff is still recharging."
return
if(!linked_machine || linked_machine.z != user.z)
for(var/obj/machinery/lavaland_controller/controller in machines)
if(controller.z == user.z)
linked_machine = controller
break
if(linked_machine && linked_machine.ongoing_weather)
if(linked_machine.ongoing_weather.stage == WIND_DOWN_STAGE || linked_machine.ongoing_weather.stage == END_STAGE)
user << "The storm is already ending. It would be a waste to use the staff now."
return
linked_machine.ongoing_weather.duration = 0
user << "<span class='danger'><B>With an appropriately dramatic flourish, you dispell the storm.</B>"
playsound(get_turf(src),'sound/magic/Staff_Change.ogg', 200, 1)
storm_cooldown = world.time + 600
else if (linked_machine && !linked_machine.ongoing_weather)
user << "<span class='danger'><B>You lift the staff towards the heavens, calling down a terrible storm.</B>"
linked_machine.weather_cooldown = 0
playsound(get_turf(src),'sound/magic/Staff_Change.ogg', 200, 1)
storm_cooldown = world.time + 600
else
user << "You can't seem to control the weather here."
@@ -0,0 +1,33 @@
/mob/living/simple_animal/hostile/megafauna
name = "boss of this gym"
desc = "Attack the weak point for massive damage."
health = 1000
maxHealth = 1000
sentience_type = SENTIENCE_BOSS
environment_smash = 4
robust_searching = 1
stat_attack = 1
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
minbodytemp = 0
maxbodytemp = INFINITY
layer = 6 //Looks weird with them slipping under mineral walls and cameras and shit otherwise
/mob/living/simple_animal/hostile/megafauna/death(gibbed)
if(health > 0)
return
else
feedback_set_details("megafauna_kills","[initial(name)]")
..()
/mob/living/simple_animal/hostile/megafauna/gib()
if(health > 0)
return
else
..()
/mob/living/simple_animal/hostile/megafauna/dust()
if(health > 0)
return
else
..()
@@ -713,6 +713,7 @@
del_on_death = 1
stat_attack = 1
robust_searching = 1
layer = 6.1
/mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/Life()
if(isturf(src.loc))
@@ -72,6 +72,7 @@
var/list/loot = list() //list of things spawned at mob's loc when it dies
var/del_on_death = 0 //causes mob to be deleted on death, useful for mobs that spawn lootable corpses
var/deathmessage = ""
var/death_sound = null //The sound played on death
var/allow_movement_on_non_turfs = FALSE
@@ -391,6 +392,8 @@
if(loot.len)
for(var/i in loot)
new i(loc)
if(death_sound)
playsound(get_turf(src),death_sound, 200, 1)
if(deathmessage && !gibbed)
visible_message("<span class='danger'>[deathmessage]</span>")
else if(!del_on_death)
+24 -6
View File
@@ -9,6 +9,23 @@
bound_height = 96
burn_state = LAVA_PROOF
luminosity = 1
var/boss = FALSE
/obj/structure/lavaland_door/attack_hand(mob/user)
if(boss)
return
for(var/mob/living/simple_animal/hostile/megafauna/legion/L in mob_list)
return
var/safety = alert(user, "Are you sure you want to do this? You and everyone else on lavaland will likely die.", "Knock on the door?", "Proceed", "Abort")
if(safety == "Abort" || !in_range(src, user) || !src || boss || user.incapacitated())
return
boss = TRUE
user << "You knock on the door."
playsound(user.loc, 'sound/effects/shieldbash.ogg', 50, 1)
visible_message("<span class='danger'>Legion emerges from the Necropolis!</span>")
message_admins("[key_name_admin(user)] has summoned Legion.")
log_game("[key_name(user)] summoned Legion.")
new /mob/living/simple_animal/hostile/megafauna/legion(get_step(src.loc, SOUTH))
/obj/structure/lavaland_door/singularity_pull()
return 0
@@ -21,23 +38,21 @@
desc = "Controls the weather."
icon = 'icons/obj/machines/telecomms.dmi'
icon_state = "processor"
var/ongoing_weather = FALSE
var/datum/weather/ongoing_weather = FALSE
var/weather_cooldown = 0
/obj/machinery/lavaland_controller/process()
if(ongoing_weather || weather_cooldown > world.time)
return
ongoing_weather = TRUE
weather_cooldown = world.time + rand(3500, 6500)
var/datum/weather/ash_storm/LAVA = new /datum/weather/ash_storm
ongoing_weather = LAVA
LAVA.weather_start_up()
ongoing_weather = FALSE
ongoing_weather = null
/obj/machinery/lavaland_controller/Destroy()
return QDEL_HINT_LETMELIVE
//lavaland_surface_seed_vault.dmm
//Seed Vault
@@ -189,7 +204,10 @@
if(H.stat)
visible_message("<span class='warning'>Tendrils reach out from \the [src.name] pulling [H] in! Blood seeps over the eggs as [H] is devoured.</span>")
playsound(get_turf(src),'sound/magic/Demon_consume.ogg', 100, 1)
meat_counter ++
if(istype(H,/mob/living/simple_animal/hostile/megafauna/dragon))
meat_counter += 20
else
meat_counter ++
H.gib()
/mob/living/simple_animal/hostile/spawner/ash_walker/spawn_mob()
+1
View File
@@ -101,6 +101,7 @@ var/list/GPS_list = list()
/obj/item/device/gps/internal
icon_state = null
flags = ABSTRACT
gpstag = "Eerie Signal"
desc = "Report to a coder immediately."
invisibility = 100
Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 110 KiB

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

+3
View File
@@ -1417,6 +1417,9 @@
#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\zombie.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"
#include "code\modules\mob\living\simple_animal\hostile\retaliate\bat.dm"
#include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm"
#include "code\modules\mob\living\simple_animal\hostile\retaliate\retaliate.dm"