Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Storytellers #461

Merged
merged 87 commits into from
Oct 24, 2023
Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
5fa23b7
need run_event from upstream
dwasint Oct 15, 2023
20d1da3
Update gamemode_subsystem.dm
dwasint Oct 15, 2023
b8e5496
start of it all
dwasint Oct 15, 2023
98e1a4b
tons of stuff
dwasint Oct 15, 2023
0ac3fb7
coolshit
dwasint Oct 15, 2023
0ddc266
was fixed
dwasint Oct 15, 2023
41f4455
Update malf.dm
dwasint Oct 15, 2023
8765139
start of ghosts adds warrior
dwasint Oct 15, 2023
af5c38a
blood cult and nuke op
dwasint Oct 15, 2023
7226eca
Update nuclear_operative.dm
dwasint Oct 15, 2023
850723d
whoops forgot to enable event system for admins
dwasint Oct 15, 2023
2b806a6
whoopsie 2
dwasint Oct 15, 2023
7e66c35
forgot to add handlers to actually buy events using the event menu
dwasint Oct 15, 2023
6979fe6
more stuff
dwasint Oct 15, 2023
b08518e
Update gamemode_subsystem.dm
dwasint Oct 15, 2023
33302a1
Update gamemode_subsystem.dm
dwasint Oct 15, 2023
ce7b4db
makes gamemode panel easier to understand slightly
dwasint Oct 15, 2023
99348e6
changes to make stuff work better
dwasint Oct 15, 2023
3ef8fd2
fixes nukies and bloodcult
dwasint Oct 15, 2023
6d86b75
roundstart fixes
dwasint Oct 15, 2023
59931f6
Update _storyteller.dm
dwasint Oct 15, 2023
9cc1cf0
there we go jester is fucked
dwasint Oct 15, 2023
6c20d64
Update bloodcult.dm
dwasint Oct 15, 2023
2162170
buffs to spawning
dwasint Oct 16, 2023
3344851
fixes
dwasint Oct 16, 2023
b5291a6
adds previous round weighting to events, so that we aren't as likely …
dwasint Oct 16, 2023
cd1cca8
adds clock cult and clown ops to roundstart
dwasint Oct 16, 2023
d8dfb43
misc balancing
dwasint Oct 16, 2023
694e975
this is called a pro gamer move fellas
dwasint Oct 16, 2023
16189e0
Update ticker.dm
dwasint Oct 16, 2023
b22a76c
maybe fixes slasher
dwasint Oct 16, 2023
e3bd11a
Update _storyteller.dm
dwasint Oct 16, 2023
c7af0f9
Update _storyteller.dm
dwasint Oct 16, 2023
81ad7be
tags galore also adds more info to the gamemode panel
dwasint Oct 16, 2023
bd1efe2
:(
dwasint Oct 16, 2023
f0a90d2
oopsie poopsie
dwasint Oct 16, 2023
ad055e1
Update scheduled_events.dm
dwasint Oct 16, 2023
e5e9295
Update gamemode_subsystem.dm
dwasint Oct 16, 2023
a134d83
should fix the error sprite issue
dwasint Oct 16, 2023
5a49353
whoops
dwasint Oct 16, 2023
52e067f
Update seeds.dm
dwasint Oct 16, 2023
d19c0c0
Update seeds.dm
dwasint Oct 16, 2023
c3d8044
fixes non station mobs becoming antag from antag roles
dwasint Oct 17, 2023
31594b2
Update gamemode_subsystem.dm
dwasint Oct 17, 2023
0542616
first ghost role done god have mercy on my soul
dwasint Oct 17, 2023
9faaf60
fixes
dwasint Oct 18, 2023
60100e2
sets points to a flat 0 incase of issue
dwasint Oct 19, 2023
503cee2
antag events tagged. new tab to see failures
dwasint Oct 20, 2023
3f76797
fixes events failing to account for space
dwasint Oct 20, 2023
f6d6c53
Update master.dm
dwasint Oct 20, 2023
ee40b4c
Update master.dm
dwasint Oct 20, 2023
15c47ce
Update master.dm
dwasint Oct 20, 2023
06114cc
Update master.dm
dwasint Oct 20, 2023
aef0b28
okay no lazy loading of roundstart rulesets IG
dwasint Oct 20, 2023
87b10b0
Merge branch 'master' into storytellers
dwasint Oct 21, 2023
1f20d4b
Update CentCom.dmm
dwasint Oct 21, 2023
9041d1a
portal storm change, antagonist count checker
dwasint Oct 21, 2023
dd54705
Update gamemode_subsystem.dm
dwasint Oct 21, 2023
3cbc275
converts glob antag check to mob_list special role check to reduce fa…
dwasint Oct 21, 2023
e8b3a7f
Update portal_storm.dm
dwasint Oct 21, 2023
29475a8
fixes nukiebase
dwasint Oct 21, 2023
a81ec4b
Update gamemode_subsystem.dm
dwasint Oct 21, 2023
2bbd809
Update nukeop.dm
dwasint Oct 21, 2023
9bf2603
Update dynamic_rulesets_midround.dm
dwasint Oct 21, 2023
c80f53d
roundstart heretics
dwasint Oct 21, 2023
9d13f60
fixes admin forced events
dwasint Oct 22, 2023
42b22fa
forgot to add setup flag to events fixes pirate event
dwasint Oct 22, 2023
a03a753
this is now fixed
dwasint Oct 22, 2023
476f3e2
Update breath.dm
dwasint Oct 22, 2023
98190db
Update gamemode_subsystem.dm
dwasint Oct 22, 2023
54228ee
Update gamemode_subsystem.dm
dwasint Oct 22, 2023
970b855
Merge branch 'master' into storytellers
dwasint Oct 22, 2023
2c898df
pushes check_enemies back to parent of events so that we can have cer…
dwasint Oct 22, 2023
68ba3fd
addss bloodsuckers, fixes linters
dwasint Oct 22, 2023
3d45ba3
Update bloodsuckers.dm
dwasint Oct 22, 2023
ce0b380
better picked_event handling
dwasint Oct 22, 2023
ce47a76
Update _storyteller.dm
dwasint Oct 23, 2023
f1c48df
rewrites simian fur coloring into a species trait similar to etherals…
dwasint Oct 23, 2023
4d7faf0
Update _storyteller.dm
dwasint Oct 23, 2023
8db51a3
Update _storyteller.dm
dwasint Oct 23, 2023
f7ea7e1
fixes gondola
dwasint Oct 23, 2023
953a567
Update bureaucratic_error.dm
dwasint Oct 23, 2023
9e75c96
causes late_arrivals to reroll on oshan
dwasint Oct 23, 2023
a9c6ec4
adds midround nukies, and obsessed to storytellers
dwasint Oct 23, 2023
8d21713
Update nuclear_operative_ghost.dm
dwasint Oct 23, 2023
e1165ed
makes some major events only trigger once ever and some other trigger…
dwasint Oct 24, 2023
f4cd434
Update screenshot_humanoids__datum_species_simian.png
dwasint Oct 24, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 95 additions & 0 deletions code/__DEFINES/~monkestation/storytellers.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@

//Could be bitflags, but that would require a good amount of translations, which eh, either way works for me
/// When the event is combat oriented (spawning monsters, inherently hostile antags)
#define TAG_COMBAT "combat"
/// When the event is spooky (broken lights, some antags)
#define TAG_SPOOKY "spooky"
/// When the event is destructive in a decent capacity (meteors, blob)
#define TAG_DESTRUCTIVE "destructive"
/// When the event impacts most of the crewmembers in some capacity (comms blackout)
#define TAG_COMMUNAL "communal"
/// When the event targets a person for something (appendix, heart attack)
#define TAG_TARGETED "targeted"
/// When the event is positive and helps the crew, in some capacity (Shuttle Loan, Supply Pod)
#define TAG_POSITIVE "positive"
/// When one of the crewmembers becomes an antagonist
#define TAG_CREW_ANTAG "crew_antag"
/// When the antagonist event is focused around team cooperation.
#define TAG_TEAM_ANTAG "team_antag"
/// When one of the non-crewmember players becomes an antagonist
#define TAG_OUTSIDER_ANTAG "away_antag"
/// When the event impacts the overmap
#define TAG_OVERMAP "overmap"
/// When the event requires the station to be in space (meteors, carp)
#define TAG_SPACE "space"
/// When the event requires the station to be on planetary.
#define TAG_PLANETARY "planetary"

#define EVENT_TRACK_MUNDANE "Mundane"
#define EVENT_TRACK_MODERATE "Moderate"
#define EVENT_TRACK_MAJOR "Major"
#define EVENT_TRACK_ROLESET "Roleset"
#define EVENT_TRACK_OBJECTIVES "Objectives"

#define ALL_EVENTS "All"
#define UNCATEGORIZED_EVENTS "Uncategorized"

#define STORYTELLER_WAIT_TIME 5 SECONDS

#define EVENT_POINT_GAINED_PER_SECOND 0.05

#define TRACK_FAIL_POINT_PENALTY_MULTIPLIER 0.5

#define GAMEMODE_PANEL_MAIN "Main"
#define GAMEMODE_PANEL_VARIABLES "Variables"

#define MUNDANE_POINT_THRESHOLD 40
#define MODERATE_POINT_THRESHOLD 70
#define MAJOR_POINT_THRESHOLD 130
#define ROLESET_POINT_THRESHOLD 150
#define OBJECTIVES_POINT_THRESHOLD 170

#define MUNDANE_MIN_POP 4
#define MODERATE_MIN_POP 6
#define MAJOR_MIN_POP 20
#define ROLESET_MIN_POP 25
#define OBJECTIVES_MIN_POP 20

/// Defines for how much pop do we need to stop applying a pop scalling penalty to event frequency.
#define MUNDANE_POP_SCALE_THRESHOLD 25
#define MODERATE_POP_SCALE_THRESHOLD 32
#define MAJOR_POP_SCALE_THRESHOLD 45
#define ROLESET_POP_SCALE_THRESHOLD 45
#define OBJECTIVES_POP_SCALE_THRESHOLD 45

/// The maximum penalty coming from pop scalling, when we're at the most minimum point, easing into 0 as we reach the SCALE_THRESHOLD. This is treated as a percentage.
#define MUNDANE_POP_SCALE_PENALTY 35
#define MODERATE_POP_SCALE_PENALTY 35
#define MAJOR_POP_SCALE_PENALTY 35
#define ROLESET_POP_SCALE_PENALTY 35
#define OBJECTIVES_POP_SCALE_PENALTY 35

#define STORYTELLER_VOTE "storyteller"

#define EVENT_TRACKS list(EVENT_TRACK_MUNDANE, EVENT_TRACK_MODERATE, EVENT_TRACK_MAJOR, EVENT_TRACK_ROLESET, EVENT_TRACK_OBJECTIVES)
#define EVENT_PANEL_TRACKS list(EVENT_TRACK_MUNDANE, EVENT_TRACK_MODERATE, EVENT_TRACK_MAJOR, EVENT_TRACK_ROLESET, EVENT_TRACK_OBJECTIVES, UNCATEGORIZED_EVENTS, ALL_EVENTS)

/// Defines for the antag cap to prevent midround injections.
#define ANTAG_CAP_FLAT 2
#define ANTAG_CAP_DENOMINATOR 9

///Below are defines for roundstart point pool. The GAIN ones are multiplied by ready population
#define ROUNDSTART_MUNDANE_BASE 20
#define ROUNDSTART_MUNDANE_GAIN 0.5

#define ROUNDSTART_MODERATE_BASE 35
#define ROUNDSTART_MODERATE_GAIN 1.2

#define ROUNDSTART_MAJOR_BASE 40
#define ROUNDSTART_MAJOR_GAIN 2

#define ROUNDSTART_ROLESET_BASE 60
#define ROUNDSTART_ROLESET_GAIN 4

#define ROUNDSTART_OBJECTIVES_BASE 40
#define ROUNDSTART_OBJECTIVES_GAIN 2
1 change: 1 addition & 0 deletions code/__HELPERS/roundend.dm
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,7 @@ GLOBAL_LIST_INIT(round_end_images, world.file2list("data/image_urls.txt"))

//Set news report and mode result
mode.set_round_result()
SSgamemode.round_end_report()

to_chat(world, span_infoplain(span_big(span_bold("<BR><BR><BR>The round has ended."))))
log_game("The round has ended.")
Expand Down
2 changes: 2 additions & 0 deletions code/controllers/master.dm
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,8 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
if(sleep_offline_after_initializations && CONFIG_GET(flag/resume_after_initializations))
world.sleep_offline = FALSE
initializations_finished_with_no_players_logged_in = initialized_tod < REALTIMEOFDAY - 10
/// run votes
SSvote.initiate_vote(/datum/vote/storyteller, "pick round storyteller", forced = TRUE) // idk where else to run this lol

/**
* Initialize a given subsystem and handle the results.
Expand Down
1 change: 1 addition & 0 deletions code/controllers/subsystem/statpanel.dm
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ SUBSYSTEM_DEF(statpanels)
global_data = list(
"Map: [SSmapping.config?.map_name || "Loading..."]",
cached ? "Next Map: [cached.map_name]" : null,
"Storyteller: [SSgamemode.storyteller ? SSgamemode.storyteller.name : "N/A"]", //monkestation addition
"Round ID: [GLOB.round_id ? GLOB.round_id : "NULL"]",
"Server Time: [time2text(world.timeofday, "YYYY-MM-DD hh:mm:ss")]",
"Round Time: [ROUND_TIME()]",
Expand Down
7 changes: 6 additions & 1 deletion code/controllers/subsystem/ticker.dm
Original file line number Diff line number Diff line change
Expand Up @@ -225,10 +225,14 @@ SUBSYSTEM_DEF(ticker)
var/init_start = world.timeofday

mode = new /datum/game_mode/dynamic

SSgamemode.init_storyteller() //monkestation addition
CHECK_TICK
//Configure mode and assign player to special mode stuff
var/can_continue = 0
//monkestation addition start
can_continue = SSgamemode.pre_setup()
CHECK_TICK
//monkestation addition end
can_continue = src.mode.pre_setup() //Choose antagonists
CHECK_TICK
can_continue = can_continue && SSjob.DivideOccupations() //Distribute jobs
Expand Down Expand Up @@ -295,6 +299,7 @@ SUBSYSTEM_DEF(ticker)

/datum/controller/subsystem/ticker/proc/PostSetup()
set waitfor = FALSE
SSgamemode.storyteller.round_started = TRUE
mode.post_setup()
GLOB.start_state = new /datum/station_state()
GLOB.start_state.count()
Expand Down
4 changes: 4 additions & 0 deletions code/controllers/subsystem/vote.dm
Original file line number Diff line number Diff line change
Expand Up @@ -285,12 +285,16 @@ SUBSYSTEM_DEF(vote)
"message" = vote.message,
)

if(vote.has_desc)
vote_data += list("desc" = vote.return_desc(vote_name))

if(vote == current_vote)
var/list/choices = list()
for(var/key in current_vote.choices)
choices += list(list(
"name" = key,
"votes" = current_vote.choices[key],
"desc" = current_vote.return_desc(key)
))

data["currentVote"] = list(
Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/dynamic/dynamic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
var/waittime_h = 1800

/// Maximum amount of threat allowed to generate.
var/max_threat_level = 50
var/max_threat_level = 0 //disables dynamic threat PLEASE DONT LET ME MERGE THIS
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok sure, DO NOT MERGE THIS


/// The extra chance multiplier that a heavy impact midround ruleset will run next time.
/// For example, if this is set to 50, then the next heavy roll will be about 50% more likely to happen.
Expand Down
1 change: 1 addition & 0 deletions code/modules/admin/topic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@
if(!check_rights(R_ADMIN))
return
SSticker.mode.admin_panel()
SSgamemode.admin_panel(usr) //monkestation addition

else if(href_list["call_shuttle"])
if(!check_rights(R_ADMIN))
Expand Down
78 changes: 77 additions & 1 deletion code/modules/events/_event.dm
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,21 @@
/// Flags dictating whether this event should be run on certain kinds of map
var/map_flags = NONE

//monkestation vars starts
var/roundstart = FALSE
var/cost = 1
var/reoccurence_penalty_multiplier = 0.75
var/shared_occurence_type
var/track = EVENT_TRACK_MODERATE
/// Last calculated weight that the storyteller assigned this event
var/calculated_weight = 0
var/tags = list() /// Tags of the event
/// List of the shared occurence types.
var/static/list/shared_occurences = list()
/// Whether a roundstart event can happen post roundstart. Very important for events which override job assignments.
var/can_run_post_roundstart = TRUE
//monkestation vars end

/datum/round_event_control/New()
if(config && !wizardevent) // Magic is unaffected by configs
earliest_start = CEILING(earliest_start * CONFIG_GET(number/events_min_time_mul), 1)
Expand Down Expand Up @@ -73,6 +88,8 @@
// Admin-created events override this.
/datum/round_event_control/proc/can_spawn_event(players_amt, allow_magic = FALSE)
SHOULD_CALL_PARENT(TRUE)
if(roundstart && world.time-SSticker.round_start_time >= 2 MINUTES)
return FALSE
if(occurrences >= max_occurrences)
return FALSE
if(earliest_start >= world.time-SSticker.round_start_time)
Expand Down Expand Up @@ -106,7 +123,8 @@
// We sleep HERE, in pre-event setup (because there's no sense doing it in runEvent() since the event is already running!) for the given amount of time to make an admin has enough time to cancel an event un-fitting of the present round.
if(alert_observers)
message_admins("Random Event triggering in [DisplayTimeText(RANDOM_EVENT_ADMIN_INTERVENTION_TIME)]: [name]. (<a href='?src=[REF(src)];cancel=1'>CANCEL</a>)")
sleep(RANDOM_EVENT_ADMIN_INTERVENTION_TIME)
if(!roundstart)
sleep(RANDOM_EVENT_ADMIN_INTERVENTION_TIME)
var/players_amt = get_active_player_count(alive_check = TRUE, afk_check = TRUE, human_check = TRUE)
if(!can_spawn_event(players_amt))
message_admins("Second pre-condition check for [name] failed, skipping...")
Expand Down Expand Up @@ -203,8 +221,12 @@ Runs the event
var/fakeable = TRUE
/// Whether a admin wants this event to be cancelled
var/cancel_event = FALSE
//monkestation vars starts
///canceled on oshan
var/oshan_blocked = FALSE
/// Whether the event called its start() yet or not.
var/has_started = FALSE
//monkestation vars end

//Called first before processing.
//Allows you to setup your event, such as randomly
Expand All @@ -228,6 +250,60 @@ Runs the event
SHOULD_CALL_PARENT(FALSE)
return

//monkestation addition starts - STORYTELLERS
/// This section of event processing is in a proc because roundstart events may get their start invoked.
/datum/round_event/proc/try_start()
if(has_started)
return
has_started = TRUE
processing = FALSE
start()
processing = TRUE

/datum/round_event_control/roundstart
roundstart = TRUE
earliest_start = 0

///Adds an occurence. Has to use the setter to properly handle shared occurences
/datum/round_event_control/proc/add_occurence()
if(shared_occurence_type)
if(!shared_occurences[shared_occurence_type])
shared_occurences[shared_occurence_type] = 0
shared_occurences[shared_occurence_type]++
occurrences++

///Subtracts an occurence. Has to use the setter to properly handle shared occurences
/datum/round_event_control/proc/subtract_occurence()
if(shared_occurence_type)
if(!shared_occurences[shared_occurence_type])
shared_occurences[shared_occurence_type] = 0
shared_occurences[shared_occurence_type]--
occurrences--

///Gets occurences. Has to use the getter to properly handle shared occurences
/datum/round_event_control/proc/get_occurences()
if(shared_occurence_type)
if(!shared_occurences[shared_occurence_type])
shared_occurences[shared_occurence_type] = 0
return shared_occurences[shared_occurence_type]
return occurrences

/// Prints the action buttons for this event.
/datum/round_event_control/proc/get_href_actions()
if(SSticker.HasRoundStarted())
if(roundstart)
if(!can_run_post_roundstart)
return "<a class='linkOff'>Fire</a> <a class='linkOff'>Schedule</a>"
return "<a href='?src=[REF(src)];action=fire'>Fire</a> <a href='?src=[REF(src)];action=schedule'>Schedule</a>"
else
return "<a href='?src=[REF(src)];action=fire'>Fire</a> <a href='?src=[REF(src)];action=schedule'>Schedule</a> <a href='?src=[REF(src)];action=force_next'>Force Next</a>"
else
if(roundstart)
return "<a href='?src=[REF(src)];action=schedule'>Add Roundstart</a> <a href='?src=[REF(src)];action=force_next'>Force Roundstart</a>"
else
return "<a class='linkOff'>Fire</a> <a class='linkOff'>Schedule</a> <a class='linkOff'>Force Next</a>"
//monkestation addition ends - STORYTELLERS

//Called after something followable has been spawned by an event
//Provides ghosts a follow link to an atom if possible
//Only called once.
Expand Down
2 changes: 2 additions & 0 deletions code/modules/events/aurora_caelus.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
earliest_start = 5 MINUTES
category = EVENT_CATEGORY_FRIENDLY
description = "A colourful display can be seen through select windows. And the kitchen."
track = EVENT_TRACK_MUNDANE
tags = list(TAG_COMMUNAL, TAG_POSITIVE, TAG_SPACE)

/datum/round_event_control/aurora_caelus/can_spawn_event(players, allow_magic = FALSE)
if(!SSmapping.empty_space)
Expand Down
2 changes: 2 additions & 0 deletions code/modules/events/brain_trauma.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
description = "A crewmember gains a random trauma."
min_wizard_trigger_potency = 2
max_wizard_trigger_potency = 6
track = EVENT_TRACK_MUNDANE
tags = list(TAG_TARGETED)

/datum/round_event/brain_trauma
fakeable = FALSE
Expand Down
2 changes: 2 additions & 0 deletions code/modules/events/brand_intelligence.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
min_wizard_trigger_potency = 2
max_wizard_trigger_potency = 6
admin_setup = list(/datum/event_admin_setup/listed_options/brand_intelligence)
track = EVENT_TRACK_MODERATE
tags = list(TAG_DESTRUCTIVE, TAG_COMMUNAL)

/datum/round_event/brand_intelligence
announce_when = 21
Expand Down
2 changes: 2 additions & 0 deletions code/modules/events/bureaucratic_error.dm
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
weight = 5
category = EVENT_CATEGORY_BUREAUCRATIC
description = "Randomly opens and closes job slots, along with changing the overflow role."
track = EVENT_TRACK_MAJOR // if you've ever dealt with 10 mimes you understand why.
tags = list(TAG_COMMUNAL)

/datum/round_event/bureaucratic_error
announce_when = 1
Expand Down
2 changes: 2 additions & 0 deletions code/modules/events/camerafailure.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
alert_observers = FALSE
category = EVENT_CATEGORY_ENGINEERING
description = "Turns off a random amount of cameras."
track = EVENT_TRACK_MUNDANE
tags = list(TAG_COMMUNAL, TAG_SPOOKY)

/datum/round_event/camera_failure
fakeable = FALSE
Expand Down
2 changes: 2 additions & 0 deletions code/modules/events/carp_migration.dm
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
min_wizard_trigger_potency = 0
max_wizard_trigger_potency = 3
admin_setup = list(/datum/event_admin_setup/carp_migration)
track = EVENT_TRACK_MODERATE
tags = list(TAG_COMMUNAL)

/datum/round_event_control/carp_migration/New()
. = ..()
Expand Down
2 changes: 2 additions & 0 deletions code/modules/events/communications_blackout.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
description = "Heavily emps all telecommunication machines, blocking all communication for a while."
min_wizard_trigger_potency = 0
max_wizard_trigger_potency = 3
track = EVENT_TRACK_MODERATE
tags = list(TAG_COMMUNAL, TAG_SPOOKY)

/datum/round_event/communications_blackout
announce_when = 1
Expand Down
2 changes: 2 additions & 0 deletions code/modules/events/creep_awakening.dm
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
min_players = 20
category = EVENT_CATEGORY_HEALTH
description = "A random crewmember becomes obsessed with another."
track = EVENT_TRACK_MODERATE
tags = list(TAG_CREW_ANTAG, TAG_TARGETED)

/datum/round_event/obsessed
fakeable = FALSE
Expand Down
2 changes: 2 additions & 0 deletions code/modules/events/disease_outbreak.dm
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@
admin_setup = list(/datum/event_admin_setup/minimum_candidate_requirement/disease_outbreak, /datum/event_admin_setup/listed_options/disease_outbreak)
///Disease recipient candidates
var/list/disease_candidates = list()
track = EVENT_TRACK_MUNDANE
tags = list(TAG_TARGETED)

/datum/round_event_control/disease_outbreak/can_spawn_event(players_amt, allow_magic = FALSE)
. = ..()
Expand Down
2 changes: 2 additions & 0 deletions code/modules/events/dust.dm
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
category = EVENT_CATEGORY_SPACE
description = "A single space dust is hurled at the station."
map_flags = EVENT_SPACE_ONLY
track = EVENT_TRACK_MUNDANE
tags = list(TAG_DESTRUCTIVE, TAG_SPACE)

/datum/round_event/space_dust
start_when = 1
Expand Down
2 changes: 2 additions & 0 deletions code/modules/events/electrical_storm.dm
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
description = "Destroys all lights in a large area."
min_wizard_trigger_potency = 0
max_wizard_trigger_potency = 4
track = EVENT_TRACK_MUNDANE
tags = list(TAG_SPOOKY)

/datum/round_event/electrical_storm
var/lightsoutAmount = 1
Expand Down
Loading
Loading