mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
Merge pull request #6022 from CHOMPStation2/upstream-merge-14747
[MIRROR] More space creature events
This commit is contained in:
@@ -147,6 +147,9 @@
|
||||
hostile = FALSE
|
||||
retaliate = TRUE
|
||||
|
||||
/datum/ai_holder/simple_mob/retaliate/chill
|
||||
base_wander_delay = 8
|
||||
|
||||
// Simple mobs that retaliate and support others in their faction who get attacked.
|
||||
/datum/ai_holder/simple_mob/retaliate/cooperative
|
||||
cooperative = TRUE
|
||||
|
||||
102
code/modules/events/gnat_migration.dm
Normal file
102
code/modules/events/gnat_migration.dm
Normal file
@@ -0,0 +1,102 @@
|
||||
/datum/event/gnat_migration
|
||||
startWhen = 0 // Start immediately
|
||||
announceWhen = 45 // Adjusted by setup
|
||||
endWhen = 75 // Adjusted by setup
|
||||
var/gnat_cap = 10
|
||||
var/list/spawned_gnat = list()
|
||||
|
||||
/datum/event/gnat_migration/setup()
|
||||
announceWhen = rand(30, 60) // 1 to 2 minutes
|
||||
endWhen += severity * 25
|
||||
gnat_cap = 8 + 4 ** severity // No more than this many at once regardless of waves. (12, 16, ??)
|
||||
|
||||
/datum/event/gnat_migration/start()
|
||||
affecting_z -= global.using_map.sealed_levels // Space levels only please!
|
||||
..()
|
||||
|
||||
/datum/event/gnat_migration/announce()
|
||||
var/announcement = ""
|
||||
if(severity == EVENT_LEVEL_MAJOR)
|
||||
announcement = "Massive migration of unknown biological entities has been detected near [location_name()], please stand-by."
|
||||
else
|
||||
announcement = "Unknown biological [spawned_gnat.len == 1 ? "entity has" : "entities have"] been detected near [location_name()], please stand-by."
|
||||
command_announcement.Announce(announcement, "Lifesign Alert")
|
||||
|
||||
/datum/event/gnat_migration/tick()
|
||||
if(activeFor % 5 != 0)
|
||||
return // Only process every 10 seconds.
|
||||
if(count_spawned_gnats() < gnat_cap)
|
||||
spawn_fish(rand(3, 3 + severity * 2) - 1, 1, severity + 2)
|
||||
|
||||
/datum/event/gnat_migration/proc/spawn_fish(var/num_groups, var/group_size_min, var/group_size_max, var/dir)
|
||||
if(isnull(dir))
|
||||
dir = (victim && prob(80)) ? victim.fore_dir : pick(GLOB.cardinal)
|
||||
|
||||
// Check if any landmarks exist!
|
||||
var/list/spawn_locations = list()
|
||||
for(var/obj/effect/landmark/C in landmarks_list)
|
||||
if(C.name == "gnatspawn" && (C.z in affecting_z))
|
||||
spawn_locations.Add(C.loc)
|
||||
if(spawn_locations.len) // Okay we've got landmarks, lets use those!
|
||||
shuffle_inplace(spawn_locations)
|
||||
num_groups = min(num_groups, spawn_locations.len)
|
||||
for (var/i = 1, i <= num_groups, i++)
|
||||
var/group_size = rand(group_size_min, group_size_max)
|
||||
for (var/j = 0, j < group_size, j++)
|
||||
spawn_one_gnat(spawn_locations[i])
|
||||
return
|
||||
|
||||
// Okay we did *not* have any landmarks, so lets do our best!
|
||||
var/i = 1
|
||||
while (i <= num_groups)
|
||||
var/Z = pick(affecting_z)
|
||||
var/group_size = rand(group_size_min, group_size_max)
|
||||
var/turf/map_center = locate(round(world.maxx/2), round(world.maxy/2), Z)
|
||||
var/turf/group_center = pick_random_edge_turf(dir, Z, TRANSITIONEDGE + 2)
|
||||
var/list/turfs = getcircle(group_center, 2)
|
||||
for (var/j = 0, j < group_size, j++)
|
||||
var/mob/living/simple_mob/animal/M = spawn_one_gnat(turfs[(i % turfs.len) + 1])
|
||||
// Ray trace towards middle of the map to find where they can stop just outside of structure/ship.
|
||||
var/turf/target
|
||||
for(var/turf/T in getline(get_turf(M), map_center))
|
||||
if(!T.is_space())
|
||||
break;
|
||||
target = T
|
||||
if(target)
|
||||
M.ai_holder?.give_destination(target) // Ask gnat to swim towards the middle of the map
|
||||
i++
|
||||
|
||||
// Spawn a single gnat at given location.
|
||||
/datum/event/gnat_migration/proc/spawn_one_gnat(var/loc)
|
||||
var/mob/living/simple_mob/animal/M = new /mob/living/simple_mob/animal/space/gnat(loc)
|
||||
GLOB.destroyed_event.register(M, src, .proc/on_gnat_destruction)
|
||||
spawned_gnat.Add(M)
|
||||
return M
|
||||
|
||||
// Counts living gnat spawned by this event.
|
||||
/datum/event/gnat_migration/proc/count_spawned_gnats()
|
||||
. = 0
|
||||
for(var/mob/living/simple_mob/animal/M as anything in spawned_gnat)
|
||||
if(!QDELETED(M) && M.stat != DEAD)
|
||||
. += 1
|
||||
|
||||
// If gnat is bomphed, remove it from the list.
|
||||
/datum/event/gnat_migration/proc/on_gnat_destruction(var/mob/M)
|
||||
spawned_gnat -= M
|
||||
GLOB.destroyed_event.unregister(M, src, .proc/on_gnat_destruction)
|
||||
|
||||
/datum/event/gnat_migration/end()
|
||||
. = ..()
|
||||
// Clean up gnat that died in space for some reason.
|
||||
spawn(0)
|
||||
for(var/mob/living/simple_mob/SM in spawned_gnat)
|
||||
if(SM.stat == DEAD)
|
||||
var/turf/T = get_turf(SM)
|
||||
if(istype(T, /turf/space))
|
||||
if(prob(75))
|
||||
qdel(SM)
|
||||
CHECK_TICK
|
||||
|
||||
// Overmap version
|
||||
/datum/event/gnat_migration/overmap/announce()
|
||||
return
|
||||
102
code/modules/events/ray_migration.dm
Normal file
102
code/modules/events/ray_migration.dm
Normal file
@@ -0,0 +1,102 @@
|
||||
/datum/event/ray_migration
|
||||
startWhen = 0 // Start immediately
|
||||
announceWhen = 45 // Adjusted by setup
|
||||
endWhen = 75 // Adjusted by setup
|
||||
var/ray_cap = 10
|
||||
var/list/spawned_ray = list()
|
||||
|
||||
/datum/event/ray_migration/setup()
|
||||
announceWhen = rand(30, 60) // 1 to 2 minutes
|
||||
endWhen += severity * 25
|
||||
ray_cap = 1 + 1 ** severity // No more than this many at once regardless of waves. (2, 3, ?)
|
||||
|
||||
/datum/event/ray_migration/start()
|
||||
affecting_z -= global.using_map.sealed_levels // Space levels only please!
|
||||
..()
|
||||
|
||||
/datum/event/ray_migration/announce()
|
||||
var/announcement = ""
|
||||
if(severity == EVENT_LEVEL_MAJOR)
|
||||
announcement = "Massive migration of unknown biological entities has been detected near [location_name()], please stand-by."
|
||||
else
|
||||
announcement = "Unknown biological [spawned_ray.len == 1 ? "entity has" : "entities have"] been detected near [location_name()], please stand-by."
|
||||
command_announcement.Announce(announcement, "Lifesign Alert")
|
||||
|
||||
/datum/event/ray_migration/tick()
|
||||
if(activeFor % 5 != 0)
|
||||
return // Only process every 10 seconds.
|
||||
if(count_spawned_rays() < ray_cap)
|
||||
spawn_fish(rand(3, 3 + severity * 2) - 1, 1, severity + 2)
|
||||
|
||||
/datum/event/ray_migration/proc/spawn_fish(var/num_groups, var/group_size_min, var/group_size_max, var/dir)
|
||||
if(isnull(dir))
|
||||
dir = (victim && prob(80)) ? victim.fore_dir : pick(GLOB.cardinal)
|
||||
|
||||
// Check if any landmarks exist!
|
||||
var/list/spawn_locations = list()
|
||||
for(var/obj/effect/landmark/C in landmarks_list)
|
||||
if(C.name == "carpspawn" && (C.z in affecting_z))
|
||||
spawn_locations.Add(C.loc)
|
||||
if(spawn_locations.len) // Okay we've got landmarks, lets use those!
|
||||
shuffle_inplace(spawn_locations)
|
||||
num_groups = min(num_groups, spawn_locations.len)
|
||||
for (var/i = 1, i <= num_groups, i++)
|
||||
var/group_size = rand(group_size_min, group_size_max)
|
||||
for (var/j = 0, j < group_size, j++)
|
||||
spawn_one_ray(spawn_locations[i])
|
||||
return
|
||||
|
||||
// Okay we did *not* have any landmarks, so lets do our best!
|
||||
var/i = 1
|
||||
while (i <= num_groups)
|
||||
var/Z = pick(affecting_z)
|
||||
var/group_size = rand(group_size_min, group_size_max)
|
||||
var/turf/map_center = locate(round(world.maxx/2), round(world.maxy/2), Z)
|
||||
var/turf/group_center = pick_random_edge_turf(dir, Z, TRANSITIONEDGE + 2)
|
||||
var/list/turfs = getcircle(group_center, 2)
|
||||
for (var/j = 0, j < group_size, j++)
|
||||
var/mob/living/simple_mob/animal/M = spawn_one_ray(turfs[(i % turfs.len) + 1])
|
||||
// Ray trace towards middle of the map to find where they can stop just outside of structure/ship.
|
||||
var/turf/target
|
||||
for(var/turf/T in getline(get_turf(M), map_center))
|
||||
if(!T.is_space())
|
||||
break;
|
||||
target = T
|
||||
if(target)
|
||||
M.ai_holder?.give_destination(target) // Ask ray to swim towards the middle of the map
|
||||
i++
|
||||
|
||||
// Spawn a single ray at given location.
|
||||
/datum/event/ray_migration/proc/spawn_one_ray(var/loc)
|
||||
var/mob/living/simple_mob/animal/M = new /mob/living/simple_mob/animal/space/ray(loc)
|
||||
GLOB.destroyed_event.register(M, src, .proc/on_ray_destruction)
|
||||
spawned_ray.Add(M)
|
||||
return M
|
||||
|
||||
// Counts living ray spawned by this event.
|
||||
/datum/event/ray_migration/proc/count_spawned_rays()
|
||||
. = 0
|
||||
for(var/mob/living/simple_mob/animal/M as anything in spawned_ray)
|
||||
if(!QDELETED(M) && M.stat != DEAD)
|
||||
. += 1
|
||||
|
||||
// If ray is bomphed, remove it from the list.
|
||||
/datum/event/ray_migration/proc/on_ray_destruction(var/mob/M)
|
||||
spawned_ray -= M
|
||||
GLOB.destroyed_event.unregister(M, src, .proc/on_ray_destruction)
|
||||
|
||||
/datum/event/ray_migration/end()
|
||||
. = ..()
|
||||
// Clean up ray that died in space for some reason.
|
||||
spawn(0)
|
||||
for(var/mob/living/simple_mob/SM in spawned_ray)
|
||||
if(SM.stat == DEAD)
|
||||
var/turf/T = get_turf(SM)
|
||||
if(istype(T, /turf/space))
|
||||
if(prob(75))
|
||||
qdel(SM)
|
||||
CHECK_TICK
|
||||
|
||||
// Overmap version
|
||||
/datum/event/ray_migration/overmap/announce()
|
||||
return
|
||||
102
code/modules/events/shark_migration.dm
Normal file
102
code/modules/events/shark_migration.dm
Normal file
@@ -0,0 +1,102 @@
|
||||
/datum/event/shark_migration
|
||||
startWhen = 0 // Start immediately
|
||||
announceWhen = 45 // Adjusted by setup
|
||||
endWhen = 75 // Adjusted by setup
|
||||
var/shark_cap = 10
|
||||
var/list/spawned_shark = list()
|
||||
|
||||
/datum/event/shark_migration/setup()
|
||||
announceWhen = rand(30, 60) // 1 to 2 minutes
|
||||
endWhen += severity * 25
|
||||
shark_cap = 1 + 1 ** severity // No more than this many at once regardless of waves. (2, 3, ?)
|
||||
|
||||
/datum/event/shark_migration/start()
|
||||
affecting_z -= global.using_map.sealed_levels // Space levels only please!
|
||||
..()
|
||||
|
||||
/datum/event/shark_migration/announce()
|
||||
var/announcement = ""
|
||||
if(severity == EVENT_LEVEL_MAJOR)
|
||||
announcement = "Massive migration of unknown biological entities has been detected near [location_name()], please stand-by."
|
||||
else
|
||||
announcement = "Unknown biological [spawned_shark.len == 1 ? "entity has" : "entities have"] been detected near [location_name()], please stand-by."
|
||||
command_announcement.Announce(announcement, "Lifesign Alert")
|
||||
|
||||
/datum/event/shark_migration/tick()
|
||||
if(activeFor % 5 != 0)
|
||||
return // Only process every 10 seconds.
|
||||
if(count_spawned_sharks() < shark_cap)
|
||||
spawn_fish(rand(3, 3 + severity * 2) - 1, 1, severity + 2)
|
||||
|
||||
/datum/event/shark_migration/proc/spawn_fish(var/num_groups, var/group_size_min, var/group_size_max, var/dir)
|
||||
if(isnull(dir))
|
||||
dir = (victim && prob(80)) ? victim.fore_dir : pick(GLOB.cardinal)
|
||||
|
||||
// Check if any landmarks exist!
|
||||
var/list/spawn_locations = list()
|
||||
for(var/obj/effect/landmark/C in landmarks_list)
|
||||
if(C.name == "carpspawn" && (C.z in affecting_z))
|
||||
spawn_locations.Add(C.loc)
|
||||
if(spawn_locations.len) // Okay we've got landmarks, lets use those!
|
||||
shuffle_inplace(spawn_locations)
|
||||
num_groups = min(num_groups, spawn_locations.len)
|
||||
for (var/i = 1, i <= num_groups, i++)
|
||||
var/group_size = rand(group_size_min, group_size_max)
|
||||
for (var/j = 0, j < group_size, j++)
|
||||
spawn_one_shark(spawn_locations[i])
|
||||
return
|
||||
|
||||
// Okay we did *not* have any landmarks, so lets do our best!
|
||||
var/i = 1
|
||||
while (i <= num_groups)
|
||||
var/Z = pick(affecting_z)
|
||||
var/group_size = rand(group_size_min, group_size_max)
|
||||
var/turf/map_center = locate(round(world.maxx/2), round(world.maxy/2), Z)
|
||||
var/turf/group_center = pick_random_edge_turf(dir, Z, TRANSITIONEDGE + 2)
|
||||
var/list/turfs = getcircle(group_center, 2)
|
||||
for (var/j = 0, j < group_size, j++)
|
||||
var/mob/living/simple_mob/animal/M = spawn_one_shark(turfs[(i % turfs.len) + 1])
|
||||
// Ray trace towards middle of the map to find where they can stop just outside of structure/ship.
|
||||
var/turf/target
|
||||
for(var/turf/T in getline(get_turf(M), map_center))
|
||||
if(!T.is_space())
|
||||
break;
|
||||
target = T
|
||||
if(target)
|
||||
M.ai_holder?.give_destination(target) // Ask shark to swim towards the middle of the map
|
||||
i++
|
||||
|
||||
// Spawn a single shark at given location.
|
||||
/datum/event/shark_migration/proc/spawn_one_shark(var/loc)
|
||||
var/mob/living/simple_mob/animal/M = new /mob/living/simple_mob/animal/space/shark/event(loc)
|
||||
GLOB.destroyed_event.register(M, src, .proc/on_shark_destruction)
|
||||
spawned_shark.Add(M)
|
||||
return M
|
||||
|
||||
// Counts living shark spawned by this event.
|
||||
/datum/event/shark_migration/proc/count_spawned_sharks()
|
||||
. = 0
|
||||
for(var/mob/living/simple_mob/animal/M as anything in spawned_shark)
|
||||
if(!QDELETED(M) && M.stat != DEAD)
|
||||
. += 1
|
||||
|
||||
// If shark is bomphed, remove it from the list.
|
||||
/datum/event/shark_migration/proc/on_shark_destruction(var/mob/M)
|
||||
spawned_shark -= M
|
||||
GLOB.destroyed_event.unregister(M, src, .proc/on_shark_destruction)
|
||||
|
||||
/datum/event/shark_migration/end()
|
||||
. = ..()
|
||||
// Clean up shark that died in space for some reason.
|
||||
spawn(0)
|
||||
for(var/mob/living/simple_mob/SM in spawned_shark)
|
||||
if(SM.stat == DEAD)
|
||||
var/turf/T = get_turf(SM)
|
||||
if(istype(T, /turf/space))
|
||||
if(prob(75))
|
||||
qdel(SM)
|
||||
CHECK_TICK
|
||||
|
||||
// Overmap version
|
||||
/datum/event/shark_migration/overmap/announce()
|
||||
return
|
||||
@@ -916,6 +916,18 @@
|
||||
filling_color = "#2c2cff"
|
||||
color = "#2c2cff"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/carpmeat/ray
|
||||
desc = "A fillet of space ray meat."
|
||||
toxin_type = "stoxin"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/carpmeat/gnat
|
||||
desc = "A paltry sample of space-gnat meat. It looks pretty stringy and unpleasant, honestly."
|
||||
toxin_amount = 1
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/carpmeat/shark
|
||||
desc = "A fillet of space shark meat. It looks rather tough and chewy."
|
||||
toxin_amount = 5
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/crab_legs
|
||||
name = "steamed crab legs"
|
||||
desc = "Crab legs steamed and buttered to perfection. One day when the boss gets hungry..."
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
// Space carp show up as a random event to wreck hapless people in space or near windows.
|
||||
// They generally fit the archetype of 'fast but fragile'.
|
||||
// This is compensated by being in groups (usually).
|
||||
|
||||
/datum/category_item/catalogue/fauna/gnat
|
||||
name = "Voidborne Fauna - Space Gnat"
|
||||
desc = "Stellar explorers once thought the greatest nuisance was the space carp. \
|
||||
<br><br>\
|
||||
Regrettably, they were wrong.\
|
||||
<br><br>\
|
||||
The so-called 'space gnat' is a populous and highly irritating but largely harmless threat \
|
||||
mostly known for how much of a nuisance it poses by flying into various intakes and other \
|
||||
sensitive or delicate starship components. Their small, spherical bodies are very fragile \
|
||||
and possess four stubby wings that serve no apparent purpose, but which the gnats flap furiously \
|
||||
all the same, perhaps in anger at the cruelties of life and the universe.\
|
||||
<br><br>\
|
||||
Indeed, what kind of god could create such a misbegotten creature? Certainly not a benevolent one."
|
||||
value = CATALOGUER_REWARD_EASY
|
||||
|
||||
/mob/living/simple_mob/animal/space/gnat
|
||||
name = "space gnat"
|
||||
desc = "A small, wretched interstellar pest. Whilst little danger by themselves, they can be a problem in large numbers."
|
||||
catalogue_data = list(/datum/category_item/catalogue/fauna/gnat)
|
||||
icon = 'icons/mob/mobs_monsters/animal.dmi'
|
||||
icon_state = "gnat"
|
||||
icon_living = "gnat"
|
||||
icon_dead = "gnat_dead"
|
||||
|
||||
faction = "gnat"
|
||||
maxHealth = 5
|
||||
health = 5
|
||||
movement_cooldown = 0
|
||||
hovering = TRUE
|
||||
|
||||
response_help = "baps the"
|
||||
response_disarm = "gently pushes aside the"
|
||||
response_harm = "hits the"
|
||||
|
||||
melee_damage_lower = 2
|
||||
melee_damage_upper = 3 //they do very little damage but attack fairly fast, like organic viscerators
|
||||
base_attack_cooldown = 10 // Bitey bitey!
|
||||
attack_sharp = TRUE
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
attacktext = list("nibbled")
|
||||
|
||||
organ_names = /decl/mob_organ_names/fish
|
||||
|
||||
meat_amount = 1
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/gnat
|
||||
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive/jellyfish
|
||||
mob_bump_flag = 0
|
||||
|
||||
organ_names = /decl/mob_organ_names/space_gnat
|
||||
|
||||
/decl/mob_organ_names/space_gnat
|
||||
hit_zones = list("cephalothorax", "stubby winglets", "flailing tail")
|
||||
@@ -0,0 +1,78 @@
|
||||
// Space carp show up as a random event to wreck hapless people in space or near windows.
|
||||
// They generally fit the archetype of 'fast but fragile'.
|
||||
// This is compensated by being in groups (usually).
|
||||
|
||||
/datum/category_item/catalogue/fauna/ray
|
||||
name = "Voidborne Fauna - Space Ray"
|
||||
desc = "Believed to be a distant relative of the more numerous 'space carp' \
|
||||
the 'space ray' is a somewhat horrifying-looking creature with a maw of sharp fangs \
|
||||
and several vicious-looking bony protrusions.\
|
||||
<br><br>\
|
||||
In truth, however, they are largely harmless creatures, being content to drift \
|
||||
upon the solar winds. They seem to feed off a mix of interstellar gases, solar radiation, \
|
||||
space dust, and occasionally other detritus. There are no known cases of unprovoked attacks. \
|
||||
More baffling is their ability to fly within gravity fields, as they do not seem to move about \
|
||||
in the same way that carp do, instead seeming to drift on invisible field currents. \
|
||||
<br><br>\
|
||||
Scientists have found several shared genetic markers between both the 'ray' and 'carp', \
|
||||
but at this time have little direct evidence of any relationship between these species. \
|
||||
There are many competing theories, and few of them can agree on anything but the broadest \
|
||||
strokes. Oh, and that their tissues contain considerable amounts of soporifics. That too. \
|
||||
<br><br>\
|
||||
What scientists can agree on, however, is that whilst the 'space ray' may look nasty \
|
||||
they're generally little threat. Astroxenobiologists have noted that the two species do \
|
||||
seem to get along quite poorly, and that the rays are quite capable of dispatching their \
|
||||
supposed cousins, even when outnumbered."
|
||||
value = CATALOGUER_REWARD_EASY
|
||||
|
||||
/mob/living/simple_mob/animal/space/ray
|
||||
name = "space ray"
|
||||
desc = "A horrifying-looking but ultimately misunderstood creature that poses little actual threat."
|
||||
catalogue_data = list(/datum/category_item/catalogue/fauna/ray)
|
||||
icon = 'icons/mob/mobs_monsters/animal.dmi'
|
||||
icon_state = "ray"
|
||||
icon_living = "ray"
|
||||
icon_dead = "ray_dead"
|
||||
icon_rest = "ray_rest"
|
||||
icon_gib = "ray_gib"
|
||||
|
||||
faction = "ray"
|
||||
maxHealth = 125
|
||||
health = 125
|
||||
movement_cooldown = 0 // Carp go fast
|
||||
hovering = TRUE
|
||||
|
||||
response_help = "strokes the"
|
||||
response_disarm = "gently pushes aside the"
|
||||
response_harm = "hits the"
|
||||
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 10 //minor damage variance, since they should only be fighting carp
|
||||
base_attack_cooldown = 18 // A bit slower than carp
|
||||
attack_sharp = TRUE
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
attacktext = list("lanced","bitten","impaled","gored")
|
||||
|
||||
organ_names = /decl/mob_organ_names/fish
|
||||
|
||||
meat_amount = 5
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/ray
|
||||
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/retaliate/chill
|
||||
mob_bump_flag = 0
|
||||
|
||||
say_list_type = /datum/say_list/space_ray
|
||||
|
||||
var/knockdown_chance = 66
|
||||
|
||||
/mob/living/simple_mob/animal/space/ray/apply_melee_effects(var/atom/A)
|
||||
if(isliving(A))
|
||||
var/mob/living/L = A
|
||||
if(prob(knockdown_chance))
|
||||
L.Weaken(4)
|
||||
L.visible_message(span("danger", "\The [src] buffets \the [L]!"))
|
||||
src.ai_holder.remove_target()
|
||||
L.visible_message(span("notice", "\The [src] seems to lose interest in \the [L]..."))
|
||||
|
||||
/datum/say_list/space_ray
|
||||
emote_see = list("swoops","dives","drifts on a solar current","glides elegantly through the void","briefly tumbles")
|
||||
@@ -0,0 +1,56 @@
|
||||
// Space carp show up as a random event to wreck hapless people in space or near windows.
|
||||
// They generally fit the archetype of 'fast but fragile'.
|
||||
// This is compensated by being in groups (usually).
|
||||
|
||||
/datum/category_item/catalogue/fauna/shark
|
||||
name = "Voidborne Fauna - Space Shark"
|
||||
desc = "The space carp's bigger, highly territorial kin, space sharks are bigger, meaner, \
|
||||
and generally bad news to be around for extended periods. If you see one, hope that it's \
|
||||
the only one around, because if it isn't then that means it's probably a parent with their pups. "
|
||||
value = CATALOGUER_REWARD_HARD
|
||||
|
||||
/mob/living/simple_mob/animal/space/shark
|
||||
name = "space shark"
|
||||
desc = "A regal and imposing interstellar creature, and one that poses a serious threat to the ill-prepared."
|
||||
catalogue_data = list(/datum/category_item/catalogue/fauna/shark)
|
||||
icon = 'icons/mob/mobs_monsters/animal.dmi'
|
||||
icon_state = "shark"
|
||||
icon_living = "shark"
|
||||
icon_dead = "shark_dead"
|
||||
icon_rest = "shark_rest"
|
||||
|
||||
faction = "spaceshark"
|
||||
maxHealth = 125
|
||||
health = 125
|
||||
movement_cooldown = 0
|
||||
hovering = TRUE
|
||||
|
||||
response_help = "strokes the"
|
||||
response_disarm = "casually rotates the"
|
||||
response_harm = "hits the"
|
||||
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 30 //don't mess with these critters!
|
||||
base_attack_cooldown = 22 // Quite slow, given their power
|
||||
attack_sharp = TRUE
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
attacktext = list("lanced","bitten","impaled","gored")
|
||||
|
||||
organ_names = /decl/mob_organ_names/fish
|
||||
|
||||
meat_amount = 10
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/carpmeat/shark
|
||||
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee
|
||||
|
||||
var/knockdown_chance = 10 //slightly reduced their knockdown prob compared to carp given their greater power
|
||||
|
||||
/mob/living/simple_mob/animal/space/shark/apply_melee_effects(var/atom/A)
|
||||
if(isliving(A))
|
||||
var/mob/living/L = A
|
||||
if(prob(knockdown_chance))
|
||||
L.Weaken(3)
|
||||
L.visible_message(span("danger", "\The [src] knocks down \the [L]!"))
|
||||
|
||||
/mob/living/simple_mob/animal/space/shark/event
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/event
|
||||
BIN
icons/mob/mobs_monsters/animal.dmi
Normal file
BIN
icons/mob/mobs_monsters/animal.dmi
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
@@ -41,7 +41,7 @@
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lore News", /datum/event/lore_news, 400),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Vermin Infestation",/datum/event/infestation, 50, list(ASSIGNMENT_JANITOR = 25), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Wallrot", /datum/event/wallrot, 0, list(ASSIGNMENT_ENGINEER = 30), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Passing Wildlife", /datum/event/roaming_wildlife, 40, list(ASSIGNMENT_SECURITY = 20), min_jobs = list(ASSIGNMENT_SECURITY = 1))
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Passing Wildlife", /datum/event/roaming_wildlife, 40, list(ASSIGNMENT_SECURITY = 20), min_jobs = list(ASSIGNMENT_SECURITY = 1)),
|
||||
)
|
||||
add_disabled_events(list(
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Ian Storm", /datum/event/ianstorm, 1, list(), 1),
|
||||
@@ -49,6 +49,9 @@
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Aurora Caelus", /datum/event/aurora_caelus, 2, list(), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 0, 0, 50, min_jobs = list(ASSIGNMENT_ENGINEER = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Stray Ray", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Stray Shark", /datum/event/shark_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Gnat Mob", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
|
||||
))
|
||||
|
||||
/datum/event_container/moderate/New()
|
||||
@@ -67,7 +70,7 @@
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Drone Pod Drop", /datum/event/drone_pod_drop, 40, list(ASSIGNMENT_SCIENTIST = 40), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Morph Spawn", /datum/event/morph_spawn, 75, list(ASSIGNMENT_ANY = 5), 0),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Maintenance Predator", /datum/event/maintenance_predator, 100, list(ASSIGNMENT_ANY = 5), 0),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Roaming Wildlife", /datum/event/roaming_wildlife, 20, list(ASSIGNMENT_SECURITY = 20, ASSIGNMENT_MEDICAL = 5), min_jobs = list(ASSIGNMENT_SECURITY = 2))
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Roaming Wildlife", /datum/event/roaming_wildlife, 20, list(ASSIGNMENT_SECURITY = 20, ASSIGNMENT_MEDICAL = 5), min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
)
|
||||
add_disabled_events(list(
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 30), 1),
|
||||
@@ -81,6 +84,9 @@
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 30), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Rogue Drones", /datum/event/rogue_drone, 0, list(ASSIGNMENT_SECURITY = 20), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Stray Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Shark Pack", /datum/event/shark_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gnat Swarm", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
))
|
||||
|
||||
/datum/event_container/major/New()
|
||||
@@ -89,7 +95,7 @@
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Atmos Leak", /datum/event/atmos_leak, 20, list(ASSIGNMENT_ENGINEER = 25), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 10, list(ASSIGNMENT_ENGINEER = 3, ASSIGNMENT_GARDENER = 3, ASSIGNMENT_SCIENTIST = 3), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station, 0, list(ASSIGNMENT_ENGINEER = 5, ASSIGNMENT_MEDICAL = 5, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_SCIENTIST = 5), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Amassing Wildlife", /datum/event/roaming_wildlife, 0, list(ASSIGNMENT_SECURITY = 10, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3))
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Amassing Wildlife", /datum/event/roaming_wildlife, 0, list(ASSIGNMENT_SECURITY = 10, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
|
||||
)
|
||||
add_disabled_events(list(
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Strike", /datum/event/meteor_strike, 10, list(ASSIGNMENT_ENGINEER = 15), 1),
|
||||
@@ -98,6 +104,9 @@
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 10, list(ASSIGNMENT_SECURITY = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Stray Rays", /datum/event/ray_migration, 20, list(ASSIGNMENT_SECURITY = 20, ASSIGNMENT_MEDICAL = 5), min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Shark Pack", /datum/event/shark_migration, 20, list(ASSIGNMENT_SECURITY = 20, ASSIGNMENT_MEDICAL = 5), min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gnat Swarm", /datum/event/gnat_migration, 20, list(ASSIGNMENT_SECURITY = 20, ASSIGNMENT_MEDICAL = 5), min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
))
|
||||
|
||||
#undef ASSIGNMENT_ANY
|
||||
|
||||
@@ -37,6 +37,8 @@
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 0, 0, 50, min_jobs = list(ASSIGNMENT_ENGINEER = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Economic News", /datum/event/economic_event, 300),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Stray Ray", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Gnat Cloud", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Hacker", /datum/event/money_hacker, 0, list(ASSIGNMENT_ANY = 4), 1, 10, 25),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Lotto", /datum/event/money_lotto, 0, list(ASSIGNMENT_ANY = 1), 1, 5, 15),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Shipping Error", /datum/event/shipping_error , 30, list(ASSIGNMENT_ANY = 2), 0),
|
||||
@@ -84,6 +86,9 @@
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Morph Spawn", /datum/event/morph_spawn, 75, list(ASSIGNMENT_ANY = 5), 0),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Maintenance Predator", /datum/event/maintenance_predator, 100, list(ASSIGNMENT_ANY = 5), 0),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Shark Pack", /datum/event/shark_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gnat Swarm", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
)
|
||||
add_disabled_events(list(
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 30), 1),
|
||||
@@ -102,6 +107,9 @@
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 10, list(ASSIGNMENT_SECURITY = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station, 0, list(ASSIGNMENT_ENGINEER = 5, ASSIGNMENT_MEDICAL = 5, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_SCIENTIST = 5), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Shark Pack", /datum/event/shark_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gnat Swarm", /datum/event/gnat_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
)
|
||||
add_disabled_events(list(
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Strike", /datum/event/meteor_strike, 10, list(ASSIGNMENT_ENGINEER = 15), 1),
|
||||
|
||||
@@ -37,6 +37,8 @@
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 0, 0, 50, min_jobs = list(ASSIGNMENT_ENGINEER = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Economic News", /datum/event/economic_event, 300),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Stray Ray", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Gnat Cloud", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Hacker", /datum/event/money_hacker, 0, list(ASSIGNMENT_ANY = 4), 1, 10, 25),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Lotto", /datum/event/money_lotto, 0, list(ASSIGNMENT_ANY = 1), 1, 5, 15),
|
||||
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Shipping Error", /datum/event/shipping_error , 30, list(ASSIGNMENT_ANY = 2), 0),
|
||||
@@ -84,6 +86,9 @@
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Morph Spawn", /datum/event/morph_spawn, 75, list(ASSIGNMENT_ANY = 5), 0),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Maintenance Predator", /datum/event/maintenance_predator, 100, list(ASSIGNMENT_ANY = 5), 0),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Shark Pack", /datum/event/shark_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gnat Swarm", /datum/event/gnat_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
)
|
||||
add_disabled_events(list(
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 30), 1),
|
||||
@@ -102,6 +107,9 @@
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 10, list(ASSIGNMENT_SECURITY = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station, 0, list(ASSIGNMENT_ENGINEER = 5, ASSIGNMENT_MEDICAL = 5, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_SCIENTIST = 5), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gliding Rays", /datum/event/ray_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Shark Pack", /datum/event/shark_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Gnat Swarm", /datum/event/gnat_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)),
|
||||
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Strike", /datum/event/meteor_strike, 10, list(ASSIGNMENT_ENGINEER = 15), 1),
|
||||
)
|
||||
add_disabled_events(list(
|
||||
|
||||
@@ -2373,6 +2373,7 @@
|
||||
#include "code\modules\events\event_container_vr.dm"
|
||||
#include "code\modules\events\event_dynamic.dm"
|
||||
#include "code\modules\events\event_manager.dm"
|
||||
#include "code\modules\events\gnat_migration.dm"
|
||||
#include "code\modules\events\gravity.dm"
|
||||
#include "code\modules\events\grid_check.dm"
|
||||
#include "code\modules\events\grubinfestation_vr.dm"
|
||||
@@ -2392,8 +2393,10 @@
|
||||
#include "code\modules\events\prison_break.dm"
|
||||
#include "code\modules\events\radiation_storm.dm"
|
||||
#include "code\modules\events\random_antagonist.dm"
|
||||
#include "code\modules\events\ray_migration.dm"
|
||||
#include "code\modules\events\roaming_wildlife.dm"
|
||||
#include "code\modules\events\rogue_drones.dm"
|
||||
#include "code\modules\events\shark_migration.dm"
|
||||
#include "code\modules\events\shipping_error.dm"
|
||||
#include "code\modules\events\solar_storm.dm"
|
||||
#include "code\modules\events\space_ninja.dm"
|
||||
@@ -3282,10 +3285,13 @@
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\space\carp.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\space\carp_vr.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\space\gaslamp_vr.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\space\gnat.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\space\goose.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\space\goose_ch.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\space\goose_vr.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\space\mouse_army_ch.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\space\ray.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\space\shark.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\space\snake_vr.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\space\space.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\space\space_vr.dm"
|
||||
|
||||
Reference in New Issue
Block a user