mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-08-23 05:06:50 +01:00
Porting flying robots from Bay. [IDB IGNORE] (#8885)
* 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.
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
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
|
||||
Reference in New Issue
Block a user