Adds the Odyssey gamemode. (#18972)

https://forums.aurorastation.org/topic/20198-mission-briefing-auroras-gamemode-revolution

To-do:

- [x] Finish storyteller verbs.
- [x] Storyteller landmarks.
- [x] Proper storyteller spawning. Right now the gamemode system is
happy with just picking one storyteller and no actors.
- [x] Antagonist whitelists code.
- [x] Adding the Storyteller whitelist.
- [x] Mission map loading code.
- [x] Map in a bunch of missions.
- [ ] Storyteller adminhelps.

---------

Co-authored-by: Matt Atlas <liermattia@gmail.com>
Co-authored-by: DreamySkrell <>
This commit is contained in:
Matt Atlas
2024-11-26 20:18:43 +00:00
committed by GitHub
co-authored by Matt Atlas DreamySkrell <>
parent e1f5de6298
commit 1da20ad33f
194 changed files with 242505 additions and 1904 deletions
+41 -1
View File
@@ -1243,7 +1243,7 @@ var/global/enabled_spooking = 0
//Returns 1 to let the dragdrop code know we are trapping this event
//Returns 0 if we don't plan to trap the event
/datum/admins/proc/cmd_ghost_drag(var/mob/abstract/observer/frommob, var/mob/living/tomob)
/datum/admins/proc/cmd_ghost_drag(var/mob/abstract/ghost/observer/frommob, var/mob/living/tomob)
if(!istype(frommob))
return //Extra sanity check to make sure only observers are shoved into things
@@ -1386,3 +1386,43 @@ var/global/enabled_spooking = 0
/atom/proc/Admin_Coordinates_Readable(area_name, admin_jump_ref)
var/turf/T = get_turf(src)
return T ? "[area_name ? "[get_area_name(T, TRUE)] " : " "]([T.x],[T.y],[T.z])[admin_jump_ref ? " [ADMIN_JMP(T)]" : ""]" : "nonexistent location"
/**
* Used to manually set an Odyssey for the Odyssey gamemode.
*/
/datum/admins/proc/set_odyssey()
set name = "Set Odyssey Type"
set category = "Special Verbs"
if(!check_rights(R_ADMIN))
return
if(!SSticker.mode || !istype(SSticker.mode, /datum/game_mode/odyssey))
to_chat(usr, SPAN_WARNING("The gamemode either does not exist, or is not Odyssey."))
return
if(SSticker.current_state != GAME_STATE_SETTING_UP)
to_chat(usr, SPAN_WARNING("You need to use this verb while the game is still setting up!"))
return
var/list/singleton/scenario/all_scenarios = GET_SINGLETON_SUBTYPE_LIST(/singleton/scenario)
var/list/possible_scenarios = list()
for(var/singleton/scenario/S in all_scenarios)
possible_scenarios[S.name] = S
var/singleton/scenario/chosen_scenario
var/situation_name = tgui_input_list(usr, "Choose an Odyssey.", "Set Odyssey", possible_scenarios)
chosen_scenario = possible_scenarios[situation_name]
if(!chosen_scenario)
return
if(!(SSatlas.current_sector.name in chosen_scenario.sector_whitelist))
if(tgui_alert(usr, "This Odyssey is not appropriate for the current sector. Continue?", "Set Odyssey", list("Yes", "No")) != "Yes")
return
SSodyssey.scenario = chosen_scenario
log_and_message_admins("has manually set the Odyssey to [chosen_scenario.name]", usr)
feedback_add_details("admin_verb","SEST") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!