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 all 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
22,950 changes: 13,979 additions & 8,971 deletions _maps/map_files/generic/CentCom.dmm

Large diffs are not rendered by default.

21 changes: 11 additions & 10 deletions code/__DEFINES/DNA.dm
Original file line number Diff line number Diff line change
Expand Up @@ -80,24 +80,25 @@
#define SKINTONES 12
#define ANIME 13
#define MUTCOLORS_SECONDARY 14
#define SPECIES_FUR 15

/// Use this if you want to change the race's color without the player being able to pick their own color. AKA special color shifting
#define DYNCOLORS 15
#define AGENDER 16
#define DYNCOLORS 16
#define AGENDER 17
/// Do not draw eyes or eyeless overlay
#define NOEYESPRITES 17
#define NOEYESPRITES 18
///If we have a limb-specific overlay sprite
#define HAS_MARKINGS 18
#define HAS_MARKINGS 19
/// Do not draw blood overlay
#define NOBLOODOVERLAY 19
#define NOBLOODOVERLAY 20
///No augments, for monkeys in specific because they will turn into fucking freakazoids https://cdn.discordapp.com/attachments/326831214667235328/791313258912153640/102707682-fa7cad80-4294-11eb-8f13-8c689468aeb0.png
#define NOAUGMENTS 20
#define NOAUGMENTS 21
///will be assigned a universal vampire themed last name shared by their department. this is preferenced!
#define BLOOD_CLANS 21
#define BLOOD_CLANS 22

#define REVIVESBYHEALING 22
#define NOHUSK 23
#define NOMOUTH 24
#define REVIVESBYHEALING 23
#define NOHUSK 24
#define NOMOUTH 25

//organ slots
#define ORGAN_SLOT_ADAMANTINE_RESONATOR "adamantine_resonator"
Expand Down
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.08

#define TRACK_FAIL_POINT_PENALTY_MULTIPLIER 0.75

#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
2 changes: 2 additions & 0 deletions code/__HELPERS/roundend.dm
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,8 @@ 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()
SSgamemode.store_roundend_data() // store data on roundend for next round

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
3 changes: 3 additions & 0 deletions code/controllers/subsystem/processing/station.dm
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,9 @@ PROCESSING_SUBSYSTEM_DEF(station)
for(var/iterator in 1 to amount)
var/datum/station_trait/trait_type = pick_weight(selectable_traits_by_types[trait_sign]) //Rolls from the table for the specific trait type
selectable_traits_by_types[trait_sign] -= trait_type
if(istype(trait_type, /datum/station_trait/late_arrivals) && SSmapping.config.map_name == "Oshan Station")
amount++
continue
setup_trait(trait_type)

///Creates a given trait of a specific type, while also removing any blacklisted ones from the future pool.
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
8 changes: 7 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,8 @@ SUBSYSTEM_DEF(ticker)

/datum/controller/subsystem/ticker/proc/PostSetup()
set waitfor = FALSE
SSgamemode.storyteller.process(STORYTELLER_WAIT_TIME * 0.1) // we want this asap
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
23 changes: 23 additions & 0 deletions code/datums/components/food/edible.dm
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ Behavior that's still missing from this component that original food items had t
var/list/tastes
///The buffs these foods give when eaten
var/food_buffs
///how many bites we can get
var/total_bites = 0
var/current_mask

/datum/component/edible/Initialize(
list/initial_reagents,
Expand Down Expand Up @@ -74,6 +77,7 @@ Behavior that's still missing from this component that original food items had t
src.tastes = string_assoc_list(tastes)
src.check_liked = check_liked


setup_initial_reagents(initial_reagents)

/datum/component/edible/RegisterWithParent()
Expand Down Expand Up @@ -214,6 +218,8 @@ Behavior that's still missing from this component that original food items had t
else
owner.reagents.add_reagent(rid, amount)

total_bites = round(owner.reagents.total_volume / bite_consumption)

/datum/component/edible/proc/examine(datum/source, mob/user, list/examine_list)
SIGNAL_HANDLER

Expand Down Expand Up @@ -443,6 +449,14 @@ Behavior that's still missing from this component that original food items had t
var/fraction = min(bite_consumption / owner.reagents.total_volume, 1)
owner.reagents.trans_to(eater, bite_consumption, transfered_by = feeder, methods = INGEST)
bitecount++
var/desired_mask = (total_bites / bitecount)
desired_mask = round(desired_mask)
desired_mask = max(1,desired_mask)
desired_mask = min(desired_mask, 4)

if(desired_mask != current_mask)
current_mask = desired_mask
parent.add_filter("bite", 0, alpha_mask_filter(icon=icon('goon/icons/obj/food.dmi', "eating[desired_mask]")))
checkLiked(fraction, eater)
if(!owner.reagents.total_volume)
On_Consume(eater, feeder)
Expand Down Expand Up @@ -570,6 +584,15 @@ Behavior that's still missing from this component that original food items had t
if(bitecount == 0 || prob(50))
L.manual_emote("nibbles away at \the [parent].")
bitecount++
var/desired_mask = (total_bites / bitecount)
desired_mask = round(desired_mask)
desired_mask = max(1,desired_mask)
desired_mask = min(desired_mask, 4)

if(desired_mask != current_mask)
current_mask = desired_mask
src.add_filter("bite", 0, alpha_mask_filter(icon=icon('goon/icons/obj/food.dmi', "eating[desired_mask]")))

. = COMPONENT_CANCEL_ATTACK_CHAIN
L.taste(owner.reagents) // why should carbons get all the fun?
if(bitecount >= 5)
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: 0 additions & 1 deletion code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,6 @@
cost = 7
minimum_round_time = 70 MINUTES
requirements = REQUIREMENTS_VERY_HIGH_THREAT_NEEDED
ruleset_lazy_templates = list(LAZY_TEMPLATE_KEY_NUKIEBASE)
flags = HIGH_IMPACT_RULESET

var/list/operative_cap = list(2,2,3,3,4,5,5,5,5,5)
Expand Down
1 change: 0 additions & 1 deletion code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm
Original file line number Diff line number Diff line change
Expand Up @@ -450,7 +450,6 @@
requirements = list(90,90,90,80,60,40,30,20,10,10)
flags = HIGH_IMPACT_RULESET
antag_cap = list("denominator" = 18, "offset" = 1)
ruleset_lazy_templates = list(LAZY_TEMPLATE_KEY_NUKIEBASE)
var/required_role = ROLE_NUCLEAR_OPERATIVE
var/datum/team/nuclear/nuke_team

Expand Down
1 change: 1 addition & 0 deletions code/modules/admin/admin_verbs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ GLOBAL_LIST_INIT(admin_verbs_fun, list(
/client/proc/drop_dynex_bomb,
/client/proc/flip_ghost_spawn,
/client/proc/forceEvent,
/client/proc/forceGamemode,
/client/proc/generate_bulk_code, //monkestation addition
/client/proc/generate_code, //monkestation addition
/client/proc/mass_add_metacoins, //monkestation addition
Expand Down
3 changes: 2 additions & 1 deletion code/modules/admin/force_event.dm
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
///Allows an admin to force an event
/*
/client/proc/forceEvent()
set name = "Trigger Event"
set category = "Admin.Events"
Expand All @@ -15,7 +16,7 @@

var/datum/force_event/ui = new(usr)
ui.ui_interact(usr)

*/
/// Force Event Panel
/datum/force_event

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
13 changes: 2 additions & 11 deletions code/modules/antagonists/nukeop/nukeop.dm
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,6 @@

/// Actually moves our nukie to where they should be
/datum/antagonist/nukeop/proc/move_to_spawnpoint()
// Ensure that the nukiebase is loaded, and wait for it if required
SSmapping.lazy_load_template(LAZY_TEMPLATE_KEY_NUKIEBASE)
var/turf/destination = get_spawnpoint()
owner.current.forceMove(destination)
if(!owner.current.onSyndieBase())
Expand Down Expand Up @@ -530,13 +528,6 @@
/// Returns whether or not syndicate operatives escaped.
/proc/is_infiltrator_docked_at_syndiebase()
var/obj/docking_port/mobile/infiltrator/infiltrator_port = SSshuttle.getShuttle("syndicate")
var/obj/docking_port/stationary/transit/infiltrator_dock = locate() in infiltrator_port.loc

var/datum/lazy_template/nukie_base/nukie_template = GLOB.lazy_templates[LAZY_TEMPLATE_KEY_NUKIEBASE]
if(!nukie_template)
return FALSE // if its not even loaded, cant be docked

for(var/datum/turf_reservation/loaded_area as anything in nukie_template.reservations)
var/infiltrator_turf = get_turf(infiltrator_port)
if(infiltrator_turf in loaded_area.reserved_turfs)
return TRUE
return FALSE
return infiltrator_port && (is_centcom_level(infiltrator_port.z) || infiltrator_dock)
2 changes: 0 additions & 2 deletions code/modules/antagonists/nukeop/outfits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,6 @@
if(visualsOnly)
return

// We don't require the nukiebase be loaded to function, but lets go ahead and kick off loading just in case
INVOKE_ASYNC(SSmapping, TYPE_PROC_REF(/datum/controller/subsystem/mapping, lazy_load_template), LAZY_TEMPLATE_KEY_NUKIEBASE)
var/obj/item/radio/radio = nukie.ears
radio.set_frequency(FREQ_SYNDICATE)
radio.freqlock = RADIO_FREQENCY_LOCKED
Expand Down
8 changes: 3 additions & 5 deletions code/modules/antagonists/pirate/pirate_event.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,9 @@
description = "The crew will either pay up, or face a pirate assault."
admin_setup = list(/datum/event_admin_setup/listed_options/pirates)
map_flags = EVENT_SPACE_ONLY

/datum/round_event_control/pirates/preRunEvent()
if (!SSmapping.is_planetary())
return EVENT_CANT_RUN
return ..()
track = EVENT_TRACK_MAJOR
tags = list(TAG_COMBAT, TAG_COMMUNAL)
checks_antag_cap = TRUE

/datum/round_event/pirates
///admin chosen pirate team
Expand Down
3 changes: 0 additions & 3 deletions code/modules/antagonists/wizard/wizard.dm
Original file line number Diff line number Diff line change
Expand Up @@ -115,9 +115,6 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key)
RegisterSignal(ritual, COMSIG_GRAND_RITUAL_FINAL_COMPLETE, PROC_REF(on_ritual_complete))

/datum/antagonist/wizard/proc/send_to_lair()
// And now we ensure that its loaded
SSmapping.lazy_load_template(LAZY_TEMPLATE_KEY_WIZARDDEN)

if(!owner.current)
return
if(!GLOB.wizardstart.len)
Expand Down
2 changes: 1 addition & 1 deletion code/modules/bitrunning/event.dm
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
ROLE_CYBER_POLICE,
)

/datum/round_event_control/bitrunning_glitch/can_spawn_event(players_amt, allow_magic = FALSE)
/datum/round_event_control/bitrunning_glitch/can_spawn_event(players_amt, allow_magic = FALSE, fake_check = FALSE)
. = ..()
if(!.)
return .
Expand Down
Loading
Loading