mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-19 12:05:59 +01:00
Refactors admin event setup (again) (#73801)
## About The Pull Request Requested by @tralezab Admin event setups now use a list rather than a single setup. This means common functionality list setting position and picking an option from a list can be applied to events that have multiple customizable factors rather than needing to making entirely overridden subtypes for every event. Adds a few new subtypes of event_admin_setup: - input_number for setting a number value. An example can be found in the heart attack event. - set_location for causing an event to occur in a specific location. An example can be found in the stray cargo pod event. - question, yes no question that returns true/false. An example of its usage can be found in immovable rod - candidate_check, a more niche subtype used to block events that do not function unless theres a specific number of valid candidates. An example of its usage can be found in the disease events. While doing the refactor I also implemented some simple extra options for some of the refactored events. Classic Disease now has an option for admins to roll **any** disease rather than just the "safe" ones. And shuttle catastrophe now allows admins to select which shuttle is used. ## Why It's Good For The Game Cuts back on duplicate lines of code a lot, should make adding more customization to events slightly easier. Also more admin customization. ## Changelog 🆑 refactor: Admin event setup's have been refactored to use lists. fix: When admins customize the pirate event all options will be available rather than just options that have not been randomly rolled. fix: The stray meteor event no longer runtimes when customized by admins. admin: Admins can now select the shuttle brought in by the shuttle catastrophe event. admin: Admins can now randomize the disease outbreak classic event to roll any disease type, including transformation diseases so have fun with that. /🆑
This commit is contained in:
@@ -66,7 +66,7 @@
|
||||
"description" = event_control.description,
|
||||
"type" = event_control.type,
|
||||
"category" = event_control.category,
|
||||
"has_customization" = !isnull(event_control.admin_setup),
|
||||
"has_customization" = !!length(event_control.admin_setup),
|
||||
))
|
||||
data["categories"] = categories
|
||||
data["events"] = events
|
||||
@@ -89,8 +89,10 @@
|
||||
var/datum/round_event_control/event = locate(event_to_run_type) in SSevents.control
|
||||
if(!event)
|
||||
return
|
||||
if(event.admin_setup && event.admin_setup.prompt_admins() == ADMIN_CANCEL_EVENT)
|
||||
return
|
||||
if(length(event.admin_setup))
|
||||
for(var/datum/event_admin_setup/admin_setup_datum in event.admin_setup)
|
||||
if(admin_setup_datum.prompt_admins() == ADMIN_CANCEL_EVENT)
|
||||
return
|
||||
var/always_announce_chance = 100
|
||||
var/no_announce_chance = 0
|
||||
event.runEvent(announce_chance_override = announce_event ? always_announce_chance : no_announce_chance, admin_forced = TRUE)
|
||||
|
||||
Reference in New Issue
Block a user