mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
MOB SWARM
This commit is contained in:
@@ -743,6 +743,7 @@ var/global/floorIsLava = 0
|
|||||||
<A href='?src=\ref[src];secretsfun=spacevines'>Spawn Space-Vines</A><BR>
|
<A href='?src=\ref[src];secretsfun=spacevines'>Spawn Space-Vines</A><BR>
|
||||||
<A href='?src=\ref[src];secretsfun=comms_blackout'>Trigger a communication blackout</A><BR>
|
<A href='?src=\ref[src];secretsfun=comms_blackout'>Trigger a communication blackout</A><BR>
|
||||||
<A href='?src=\ref[src];secretsfun=pda_spam'>Trigger a wave of PDA spams</A><BR>
|
<A href='?src=\ref[src];secretsfun=pda_spam'>Trigger a wave of PDA spams</A><BR>
|
||||||
|
<A href='?src=\ref[src];secretsfun=mobswarm'>Trigger mobs of your choice appearing out of thin air</A><BR>
|
||||||
<BR>
|
<BR>
|
||||||
<B>Fun Secrets</B><BR>
|
<B>Fun Secrets</B><BR>
|
||||||
<BR>
|
<BR>
|
||||||
|
|||||||
@@ -2877,6 +2877,15 @@
|
|||||||
new /turf/unsimulated/wall/supermatter(get_turf(usr))
|
new /turf/unsimulated/wall/supermatter(get_turf(usr))
|
||||||
SetUniversalState(/datum/universal_state/supermatter_cascade)
|
SetUniversalState(/datum/universal_state/supermatter_cascade)
|
||||||
message_admins("[key_name_admin(usr)] has managed to destroy the universe with a supermatter cascade. Good job, [key_name_admin(usr)]")
|
message_admins("[key_name_admin(usr)] has managed to destroy the universe with a supermatter cascade. Good job, [key_name_admin(usr)]")
|
||||||
|
if("mobswarm")
|
||||||
|
feedback_inc("admin_secrets_fun_used",1)
|
||||||
|
feedback_add_details("admin_secrets_fun_used","CS")
|
||||||
|
var/choice = input("Are you sure you want to fill the station with a bunch of unnecessary mobs?") in list("Of course!", "No, I hate timespace anomalies involving fun")
|
||||||
|
if(choice == "Of course!")
|
||||||
|
var/amt = input("How many would you like to spawn?", 10) as num
|
||||||
|
var/mobtype = input("What mob would you like?", /mob/living/simple_animal/corgi) in list(typesof(/mob/living))
|
||||||
|
message_admins("[key_name_admin(usr)] triggered a mob swarm.")
|
||||||
|
new /datum/event/mob_swarm(mobtype, amt)
|
||||||
if("spawnadminbus")
|
if("spawnadminbus")
|
||||||
feedback_inc("admin_secrets_fun_used",1)
|
feedback_inc("admin_secrets_fun_used",1)
|
||||||
feedback_add_details("admin_secrets_fun_used","AB")
|
feedback_add_details("admin_secrets_fun_used","AB")
|
||||||
|
|||||||
48
code/modules/events/mob_swarm.dm
Normal file
48
code/modules/events/mob_swarm.dm
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
/datum/event/mob_swarm
|
||||||
|
announceWhen = 2
|
||||||
|
endWhen = 10
|
||||||
|
var/mob_to_spawn = /mob/living/simple_animal/corgi
|
||||||
|
var/area/target_area = /area/shuttle/arrival/station
|
||||||
|
var/mobs_to_spawn = 10
|
||||||
|
var/list/area/possible_locations = list(/area/science/xenobiology,
|
||||||
|
/area/crew_quarters/bar,
|
||||||
|
/area/bridge,
|
||||||
|
/area/supply/storage,
|
||||||
|
/area/crew_quarters/hop,
|
||||||
|
/area/chapel/main,
|
||||||
|
/area/medical/cmo,
|
||||||
|
/area/crew_quarters/theatre)
|
||||||
|
|
||||||
|
/datum/event/mob_swarm/New(var/mob = /mob/living/simple_animal/corgi, var/amount = 10)
|
||||||
|
mob_to_spawn = mob
|
||||||
|
mobs_to_spawn = round(amount)
|
||||||
|
. = ..()
|
||||||
|
|
||||||
|
/datum/event/mob_swarm/setup()
|
||||||
|
while(possible_locations.len)
|
||||||
|
var/area/possible_spawn_area = pick(possible_locations)
|
||||||
|
if(possible_spawn_area.x) // If we're on the map
|
||||||
|
target_area = possible_spawn_area
|
||||||
|
break
|
||||||
|
else
|
||||||
|
possible_locations.Remove(possible_spawn_area)
|
||||||
|
|
||||||
|
/datum/event/mob_swarm/start()
|
||||||
|
var/list/turfs = list()
|
||||||
|
for(var/turf/T in target_area)
|
||||||
|
if(T.density)
|
||||||
|
continue
|
||||||
|
turfs.Add(T)
|
||||||
|
|
||||||
|
for(var/n = 0, n < mobs_to_spawn, n++)
|
||||||
|
var/turf/targetTurf = pick(turfs)
|
||||||
|
if(!targetTurf) // If all else goes wrong for SOME REASON
|
||||||
|
targetTurf = get_turf(pick(target_area.contents)) // Areas contain more than turfs
|
||||||
|
var/mob/mobber = new mob_to_spawn(targetTurf)
|
||||||
|
var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread()
|
||||||
|
sparks.set_up(3,0,targetTurf)
|
||||||
|
sparks.start()
|
||||||
|
|
||||||
|
|
||||||
|
/datum/event/mob_swarm/announce()
|
||||||
|
command_alert("Due to timespace anomalies of unknown origin, the statio is now host to several [mob_to_spawn]\s more than there were a moment ago.")
|
||||||
@@ -1054,6 +1054,7 @@
|
|||||||
#include "code\modules\events\carp_migration.dm"
|
#include "code\modules\events\carp_migration.dm"
|
||||||
#include "code\modules\events\comms_blackout.dm"
|
#include "code\modules\events\comms_blackout.dm"
|
||||||
#include "code\modules\events\communications_blackout.dm"
|
#include "code\modules\events\communications_blackout.dm"
|
||||||
|
#include "code\modules\events\mob_swarm.dm"
|
||||||
#include "code\modules\events\disease_outbreak.dm"
|
#include "code\modules\events\disease_outbreak.dm"
|
||||||
#include "code\modules\events\electrical_storm.dm"
|
#include "code\modules\events\electrical_storm.dm"
|
||||||
#include "code\modules\events\event.dm"
|
#include "code\modules\events\event.dm"
|
||||||
|
|||||||
Reference in New Issue
Block a user