mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-27 18:42:19 +00:00
= Giant Spiders = - Nurses spin webs which impede progress, bundle items and mobs up in cocoons, lay eggs to create spiderlings - Nurses are slow and weak, but their bite has a chance to paralyse the victim - Spiderlings skitter about and eventually grow into giant spiders. - Spiderlings will ventcrawl, so they can spread over the station pretty fast. - Hunters are fast, have decent health and the most effective poison - Guards are medium speed but the health and direct damage - The poison of hunters and guards can cause hallucinations if they bite you = Farm animals = - Cows can be milked or butchered for a large supply of meat. Sadists can also tip them over (with intent_help). - Goats can also be milked, but have a nasty temperament. - Chicks grow up to be chickens, who lay eggs and continue the cycle. But where did it start? (they're very noisy). - All three are orderable via QM. My changes: - Added a spider infestation event. - Optimized code with spiders and simple_animals. - Made a /hostile/retaliate type which will only fight back when hurt. Based on Cael's code. - Added some farm animals on the map. - Changed events, added a setup() proc which can let you setup variables or the event. Made the event only kill itself when it has called, announce(), start() and end(). - Brainrot will only need alkysine as a cure. - Communication blackout will always be silent. - Changed some admin buttons to use the new event system. - Added a forceEvent proc which you can use when you enable debug verbs. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5525 316c924e-a436-60f5-8080-3fe189b3f50e
83 lines
2.4 KiB
Plaintext
83 lines
2.4 KiB
Plaintext
/datum/event //NOTE: Times are measured in master controller ticks!
|
|
var/startWhen = 0 //When in the lifetime to call start().
|
|
var/announceWhen = 0 //When in the lifetime to call announce().
|
|
var/endWhen = 0 //When in the lifetime the event should end.
|
|
var/oneShot = 0 //If true, then the event removes itself from the list of potential events on creation.
|
|
|
|
var/activeFor = 0 //How long the event has existed. You don't need to change this.
|
|
|
|
//Called first before processing.
|
|
//Allows you to setup your event, such as randomly
|
|
//setting the startWhen and or announceWhen variables.
|
|
//Only called once.
|
|
/datum/event/proc/setup()
|
|
return
|
|
|
|
//Called when the tick is equal to the startWhen variable.
|
|
//Allows you to start before announcing or vice versa.
|
|
//Only called once.
|
|
/datum/event/proc/start()
|
|
return
|
|
|
|
//Called when the tick is equal to the announceWhen variable.
|
|
//Allows you to announce before starting or vice versa.
|
|
//Only called once.
|
|
/datum/event/proc/announce()
|
|
return
|
|
|
|
//Called on or after the tick counter is equal to startWhen.
|
|
//You can include code related to your event or add your own
|
|
//time stamped events.
|
|
//Called more than once.
|
|
/datum/event/proc/tick()
|
|
return
|
|
|
|
//Called on or after the tick is equal or more than endWhen
|
|
//You can include code related to the event ending.
|
|
//Do not place spawn() in here, instead use tick() to check for
|
|
//the activeFor variable.
|
|
//For example: if(activeFor == myOwnVariable + 30) doStuff()
|
|
//Only called once.
|
|
/datum/event/proc/end()
|
|
return
|
|
|
|
|
|
|
|
//Do not override this proc, instead use the appropiate procs.
|
|
//This proc will handle the calls to the appropiate procs.
|
|
/datum/event/proc/process()
|
|
|
|
if(activeFor > startWhen && activeFor < endWhen)
|
|
tick()
|
|
|
|
if(activeFor == startWhen)
|
|
start()
|
|
|
|
if(activeFor == announceWhen)
|
|
announce()
|
|
|
|
if(activeFor == endWhen)
|
|
end()
|
|
|
|
// Everything is done, let's clean up.
|
|
if(activeFor >= endWhen && activeFor >= announceWhen && activeFor >= startWhen)
|
|
kill()
|
|
|
|
activeFor++
|
|
|
|
|
|
//Garbage collects the event by removing it from the global events list,
|
|
//which should be the only place it's referenced.
|
|
//Called when start(), announce() and end() has all been called.
|
|
/datum/event/proc/kill()
|
|
events.Remove(src)
|
|
|
|
|
|
//Adds the event to the global events list, and removes it from the list
|
|
//of potential events.
|
|
/datum/event/New()
|
|
setup()
|
|
events.Add(src)
|
|
if(oneShot)
|
|
potentialRandomEvents.Remove(type)
|
|
..() |