diff --git a/code/modules/clothing/spacesuits/rig/modules/computer.dm b/code/modules/clothing/spacesuits/rig/modules/computer.dm index b035678e749..975f6dfc7c6 100644 --- a/code/modules/clothing/spacesuits/rig/modules/computer.dm +++ b/code/modules/clothing/spacesuits/rig/modules/computer.dm @@ -23,7 +23,7 @@ usr << "Your module is not installed in a hardsuit." return - module.holder.ui_interact(usr) + module.holder.ui_interact(usr, nano_state = contained_state) /obj/item/rig_module/ai_container @@ -46,9 +46,23 @@ var/obj/item/ai_card // Reference to the MMI, posibrain, intellicard or pAI card previously holding the AI. var/obj/item/ai_verbs/verb_holder +/mob + var/get_rig_stats = 0 + /obj/item/rig_module/ai_container/process() - if(integrated_ai && loc) - integrated_ai.SetupStat(loc.get_rig()) + if(integrated_ai) + var/obj/item/weapon/rig/rig = get_rig() + if(rig && rig.ai_override_enabled) + integrated_ai.get_rig_stats = 1 + else + integrated_ai.get_rig_stats = 0 + +/mob/living/Stat() + . = ..() + if(. && get_rig_stats) + var/obj/item/weapon/rig/rig = get_rig() + if(rig) + SetupStat(rig) /obj/item/rig_module/ai_container/proc/update_verb_holder() if(!verb_holder) @@ -158,7 +172,10 @@ if(integrated_ai) integrated_ai.ghostize() qdel(integrated_ai) - if(ai_card) qdel(ai_card) + integrated_ai = null + if(ai_card) + qdel(ai_card) + ai_card = null else if(user) user.put_in_hands(ai_card) else @@ -168,7 +185,6 @@ update_verb_holder() /obj/item/rig_module/ai_container/proc/integrate_ai(var/obj/item/ai,var/mob/user) - if(!ai) return // The ONLY THING all the different AI systems have in common is that they all store the mob inside an item. diff --git a/code/modules/clothing/spacesuits/rig/modules/modules.dm b/code/modules/clothing/spacesuits/rig/modules/modules.dm index 81af43d9f4a..c33064b41c9 100644 --- a/code/modules/clothing/spacesuits/rig/modules/modules.dm +++ b/code/modules/clothing/spacesuits/rig/modules/modules.dm @@ -227,21 +227,21 @@ return 0 /mob/living/carbon/human/Stat() - ..() + . = ..() - if(istype(back,/obj/item/weapon/rig)) + if(. && istype(back,/obj/item/weapon/rig)) var/obj/item/weapon/rig/R = back SetupStat(R) /mob/proc/SetupStat(var/obj/item/weapon/rig/R) - if(src == usr && R && !R.canremove && R.installed_modules.len && statpanel("Hardsuit Modules")) + if(R && !R.canremove && R.installed_modules.len && statpanel("Hardsuit Modules")) var/cell_status = R.cell ? "[R.cell.charge]/[R.cell.maxcharge]" : "ERROR" - statpanel("Hardsuit Modules", "Suit charge", cell_status) + stat("Suit charge", cell_status) for(var/obj/item/rig_module/module in R.installed_modules) { for(var/stat_rig_module/SRM in module.stat_modules) if(SRM.CanUse()) - statpanel("Hardsuit Modules",SRM.module.interface_name,SRM) + stat(SRM.module.interface_name,SRM) } /stat_rig_module diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index c09f7d382d8..5d6b894cd5c 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -383,8 +383,7 @@ cell.use(cost*10) return 1 -/obj/item/weapon/rig/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) - +/obj/item/weapon/rig/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/nano_state = inventory_state) if(!user) return @@ -454,7 +453,7 @@ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) - ui = new(user, src, ui_key, ((src.loc != user) ? ai_interface_path : interface_path), interface_title, 480, 550, data["ai"] ? contained_state : inventory_state) + ui = new(user, src, ui_key, ((src.loc != user) ? ai_interface_path : interface_path), interface_title, 480, 550, state = nano_state) ui.set_initial_data(data) ui.open() ui.set_auto_update(1) @@ -766,6 +765,7 @@ return 0 wearer.Move(null,dir)*/ +// This returns the rig if you are contained inside one, but not if you are wearing it /atom/proc/get_rig() if(loc) return loc.get_rig()