mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-16 13:12:22 +00:00
* Semiport of Allow_Spacemove from Bay. * Porting flying robots from Bay. * Converting platforms to an alt title of Robot. * Converting existing modules to new proc flow. * Cleaning up jetpack code for robots. * Making flyers and platforms buildable. * Debugging/refining robots port. * Reverting some unneeded spacemove changes. * Refining/debugging bots. * Removing Bay subtypes, adding flying subtypes of existing modules. * Icon rework for flying robots. * Working commit for flying borgs PR.
63 lines
2.6 KiB
Plaintext
63 lines
2.6 KiB
Plaintext
SUBSYSTEM_DEF(robots)
|
|
name = "Robots"
|
|
init_order = INIT_ORDER_MISC_EARLY
|
|
flags = SS_NO_FIRE
|
|
|
|
var/list/modules_by_category = list()
|
|
var/list/crisis_modules_by_category = list()
|
|
var/list/upgrade_modules_by_category = list()
|
|
var/list/all_module_names = list()
|
|
|
|
var/list/mob_types_by_title = list(
|
|
"cyborg, flying" = /mob/living/silicon/robot/flying,
|
|
"robot, flying" = /mob/living/silicon/robot/flying,
|
|
"drone, flying" = /mob/living/silicon/robot/flying,
|
|
"drone, platform" = /mob/living/silicon/robot/platform
|
|
)
|
|
|
|
var/list/mmi_types_by_title = list(
|
|
"robot" = /obj/item/mmi/digital/posibrain,
|
|
"robot, flying" = /obj/item/mmi/digital/posibrain,
|
|
"drone" = /obj/item/mmi/digital/robot,
|
|
"drone, flying" = /obj/item/mmi/digital/robot,
|
|
"drone, platform" = /obj/item/mmi/digital/robot
|
|
)
|
|
|
|
/datum/controller/subsystem/robots/Initialize(start_uptime)
|
|
|
|
for(var/module_type in subtypesof(/obj/item/robot_module))
|
|
var/obj/item/robot_module/module = module_type
|
|
if(initial(module.unavailable_by_default))
|
|
continue
|
|
var/module_category = initial(module.module_category)
|
|
var/module_name = initial(module.display_name)
|
|
if(module_name && module_category)
|
|
if(initial(module.upgrade_locked))
|
|
LAZYINITLIST(upgrade_modules_by_category[module_category])
|
|
LAZYSET(upgrade_modules_by_category[module_category], module_name, module)
|
|
else if(initial(module.crisis_locked))
|
|
LAZYINITLIST(crisis_modules_by_category[module_category])
|
|
LAZYSET(crisis_modules_by_category[module_category], module_name, module)
|
|
else
|
|
LAZYINITLIST(modules_by_category[module_category])
|
|
LAZYSET(modules_by_category[module_category], module_name, module)
|
|
all_module_names |= module_name
|
|
all_module_names = sortTim(all_module_names, /proc/cmp_text_asc)
|
|
|
|
/datum/controller/subsystem/robots/proc/get_available_modules(module_category, crisis_mode, include_override)
|
|
. = list()
|
|
if(modules_by_category[module_category])
|
|
. += modules_by_category[module_category]
|
|
if(crisis_mode && crisis_modules_by_category[module_category])
|
|
. |= crisis_modules_by_category[module_category]
|
|
if(include_override && upgrade_modules_by_category[module_category])
|
|
var/list/modules = upgrade_modules_by_category[module_category]
|
|
if(modules[include_override])
|
|
.[include_override] = modules[include_override]
|
|
|
|
/datum/controller/subsystem/robots/proc/get_mmi_type_by_title(check_title)
|
|
. = mmi_types_by_title[lowertext(trim(check_title))] || /obj/item/mmi
|
|
|
|
/datum/controller/subsystem/robots/proc/get_mob_type_by_title(check_title)
|
|
. = mob_types_by_title[lowertext(trim(check_title))] || /mob/living/silicon/robot
|