mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
Dynamic 2021 & Ghost Pool Protection (#11139)
* Please let this work Good luck to myself, Xoxeyos * This shit is fucking abhorrent Admin.dm, rust_g, game.dm, mobs.dm, pai.dm, dynamic folder, holy_weapons.dm, admin_verbs.dm, topic.dm, ghost_pool_protection, antag_datum.dm, CTF.dm, corpse.dm, _event.dm, living/brain/posibrain.dm, giant_spider.dm, dynamic.json * Why is this here? * Update dynamic_rulesets_roundstart.dm * Merges Dynamic 2021 final fixes * Will this work? * Maybe this might work. * This was suggested as a change. * Fixes bad bugs * Easy enough. * Update ghost_pool_protection.dm * Update ghost_pool_protection.dm * Update dynamic.dm * Update dynamic.dm * Update dynamic_rulesets_latejoin.dm * Update dynamic_rulesets_latejoin.dm * Update dynamic.dm * Update dynamic_rulesets_roundstart.dm * I can put in sound_enviroment when I figure out what it is * Update mob_defines.dm * Update mob_defines.dm * Update mob_defines.dm * Security and Command personnel rolled infiltrator again * Update dynamic.dm * Ports over https://github.com/tgstation/tgstation/pull/58644 - No more mass infiltrations? This is an attempt to keep infiltrators from spawning in nonstop. * Update ruleset_picking.dm * Update dynamic_rulesets_latejoin.dm * Update dynamic_rulesets_roundstart.dm * Update dynamic_rulesets_roundstart.dm * weight configurement * weight configurement * Update dynamic_rulesets_roundstart.dm * Update dynamic_rulesets_latejoin.dm * Update dynamic_rulesets_roundstart.dm * Update dynamic_rulesets.dm * Update dynamic.dm * Update dynamic_rulesets_latejoin.dm * Update dynamic_rulesets_roundstart.dm * Update dynamic_rulesets_roundstart.dm * Update dynamic_rulesets.dm * Update new_player.dm * Update dynamic_rulesets_roundstart.dm * Update dynamic_rulesets_midround.dm * Update dynamic_rulesets_latejoin.dm * Update dynamic_rulesets_midround.dm * Update dynamic_rulesets_roundstart.dm * Update dynamic_rulesets_roundstart.dm * Update dynamic_rulesets_latejoin.dm * Update dynamic_rulesets_roundstart.dm * Adds from logging from https://github.com/tgstation/tgstation/pull/58451/ * Finishes up adding https://github.com/tgstation/tgstation/pull/58451/ * Update dynamic_rulesets_midround.dm * Update dynamic_rulesets_midround.dm Co-authored-by: Redmoogle <dakotamew@gmail.com> Co-authored-by: Jamie D <993128+JamieD1@users.noreply.github.com>
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
//this datum is used by the events controller to dictate how it selects events
|
||||
#define RANDOM_EVENT_ADMIN_INTERVENTION_TIME 10
|
||||
|
||||
//this singleton datum is used by the events controller to dictate how it selects events
|
||||
/datum/round_event_control
|
||||
var/name //The human-readable name of the event
|
||||
var/typepath //The typepath of the event datum /datum/round_event
|
||||
@@ -27,6 +29,9 @@
|
||||
|
||||
var/triggering //admin cancellation
|
||||
|
||||
/// Whether or not dynamic should hijack this event
|
||||
var/dynamic_should_hijack = FALSE
|
||||
|
||||
/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)
|
||||
@@ -52,17 +57,26 @@
|
||||
return FALSE
|
||||
if(holidayID && (!SSevents.holidays || !SSevents.holidays[holidayID]))
|
||||
return FALSE
|
||||
return TRUE
|
||||
if(ispath(typepath, /datum/round_event/ghost_role) && GHOSTROLE_MIDROUND_EVENT)
|
||||
return FALSE
|
||||
|
||||
var/datum/game_mode/dynamic/dynamic = SSticker.mode
|
||||
if(istype(dynamic) && dynamic_should_hijack && dynamic.random_event_hijacked != HIJACKED_NOTHING)
|
||||
return FALSE
|
||||
|
||||
. = TRUE
|
||||
|
||||
/datum/round_event_control/proc/preRunEvent()
|
||||
if(!ispath(typepath, /datum/round_event))
|
||||
return EVENT_CANT_RUN
|
||||
|
||||
if(SEND_GLOBAL_SIGNAL(COMSIG_GLOB_PRE_RANDOM_EVENT, src) & CANCEL_PRE_RANDOM_EVENT)
|
||||
return EVENT_INTERRUPTED
|
||||
|
||||
triggering = TRUE
|
||||
if (alert_observers)
|
||||
//Yogs start -- 20 seconds instead of 10
|
||||
message_admins("<span class='bold'><font color = red>Random Event triggering in 20 seconds: [name] (<a href='?src=[REF(src)];cancel=1'>CANCEL</a>)</font color></span>")
|
||||
sleep(20 SECONDS)
|
||||
if(alert_observers)
|
||||
message_admins("Random Event triggering in [RANDOM_EVENT_ADMIN_INTERVENTION_TIME] seconds: [name] (<a href='?src=[REF(src)];cancel=1'>CANCEL</a>)")
|
||||
sleep(RANDOM_EVENT_ADMIN_INTERVENTION_TIME SECONDS)
|
||||
//Yogs end
|
||||
var/gamemode = SSticker.mode.config_tag
|
||||
var/players_amt = get_active_player_count(alive_check = TRUE, afk_check = TRUE, human_check = TRUE)
|
||||
@@ -96,7 +110,7 @@
|
||||
testing("[time2text(world.time, "hh:mm:ss")] [E.type]")
|
||||
if(random)
|
||||
log_game("Random Event triggering: [name] ([typepath])")
|
||||
if (alert_observers)
|
||||
if(alert_observers)
|
||||
deadchat_broadcast(" has just been[random ? " randomly" : ""] triggered!", "<b>[name]</b>") //STOP ASSUMING IT'S BADMINS!
|
||||
return E
|
||||
|
||||
@@ -137,7 +151,7 @@
|
||||
//Only called once.
|
||||
/datum/round_event/proc/announce_to_ghosts(atom/atom_of_interest)
|
||||
if(control.alert_observers)
|
||||
if (atom_of_interest)
|
||||
if(atom_of_interest)
|
||||
//Yogs start -- Makes this a bit more specific
|
||||
var/typeofthing = "object"
|
||||
if(iscarbon(atom_of_interest))
|
||||
@@ -222,3 +236,5 @@
|
||||
processing = my_processing
|
||||
SSevents.running += src
|
||||
return ..()
|
||||
|
||||
#undef RANDOM_EVENT_ADMIN_INTERVENTION_TIME
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
|
||||
min_players = 10
|
||||
|
||||
dynamic_should_hijack = TRUE
|
||||
|
||||
/datum/round_event_control/alien_infestation/canSpawnEvent()
|
||||
. = ..()
|
||||
if(!.)
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
min_players = 25
|
||||
|
||||
dynamic_should_hijack = TRUE
|
||||
|
||||
gamemode_blacklist = list("blob") //Just in case a blob survives that long
|
||||
|
||||
/datum/round_event/ghost_role/blob
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
max_occurrences = 1
|
||||
min_players = 30
|
||||
earliest_start = 45 MINUTES
|
||||
dynamic_should_hijack = TRUE
|
||||
|
||||
/datum/round_event/ghost_role/nightmare
|
||||
minimum_required = 1
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
typepath = /datum/round_event/ghost_role/operative
|
||||
weight = 0 //Admin only
|
||||
max_occurrences = 1
|
||||
dynamic_should_hijack = TRUE
|
||||
|
||||
/datum/round_event/ghost_role/operative
|
||||
minimum_required = 1
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
max_occurrences = 1
|
||||
min_players = 10
|
||||
earliest_start = 30 MINUTES
|
||||
dynamic_should_hijack = TRUE
|
||||
gamemode_blacklist = list("nuclear")
|
||||
|
||||
/datum/round_event_control/pirates/preRunEvent()
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
weight = 8
|
||||
earliest_start = 70 MINUTES
|
||||
min_players = 30
|
||||
dynamic_should_hijack = TRUE
|
||||
|
||||
/datum/round_event/ghost_role/space_dragon
|
||||
minimum_required = 1
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
weight = 5
|
||||
max_occurrences = 1
|
||||
min_players = 15
|
||||
dynamic_should_hijack = TRUE
|
||||
|
||||
/datum/round_event/spider_infestation
|
||||
announceWhen = 400
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
max_occurrences = 1 //Only once okay fam
|
||||
earliest_start = 30 MINUTES
|
||||
min_players = 15
|
||||
dynamic_should_hijack = TRUE
|
||||
|
||||
/datum/round_event/spawn_swarmer/announce(fake)
|
||||
priority_announce("Our long-range sensors have detected that your station's defenses have been breached by some sort of alien device. We suggest searching for and destroying it as soon as possible.", "[command_name()] High-Priority Update")
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
max_occurrences = 1
|
||||
min_players = 20
|
||||
weight = 4
|
||||
dynamic_should_hijack = TRUE
|
||||
/datum/round_event/ghost_role/zombie
|
||||
minimum_required = 1
|
||||
role_name = "zombie"
|
||||
|
||||
Reference in New Issue
Block a user