mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-13 11:43:31 +00:00
Merge pull request #10816 from PsiOmegaDelta/150818-RealFunny
Rig AI fixes.
This commit is contained in:
@@ -23,7 +23,7 @@
|
|||||||
usr << "Your module is not installed in a hardsuit."
|
usr << "Your module is not installed in a hardsuit."
|
||||||
return
|
return
|
||||||
|
|
||||||
module.holder.ui_interact(usr)
|
module.holder.ui_interact(usr, nano_state = contained_state)
|
||||||
|
|
||||||
/obj/item/rig_module/ai_container
|
/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_card // Reference to the MMI, posibrain, intellicard or pAI card previously holding the AI.
|
||||||
var/obj/item/ai_verbs/verb_holder
|
var/obj/item/ai_verbs/verb_holder
|
||||||
|
|
||||||
|
/mob
|
||||||
|
var/get_rig_stats = 0
|
||||||
|
|
||||||
/obj/item/rig_module/ai_container/process()
|
/obj/item/rig_module/ai_container/process()
|
||||||
if(integrated_ai && loc)
|
if(integrated_ai)
|
||||||
integrated_ai.SetupStat(loc.get_rig())
|
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()
|
/obj/item/rig_module/ai_container/proc/update_verb_holder()
|
||||||
if(!verb_holder)
|
if(!verb_holder)
|
||||||
@@ -158,7 +172,10 @@
|
|||||||
if(integrated_ai)
|
if(integrated_ai)
|
||||||
integrated_ai.ghostize()
|
integrated_ai.ghostize()
|
||||||
qdel(integrated_ai)
|
qdel(integrated_ai)
|
||||||
if(ai_card) qdel(ai_card)
|
integrated_ai = null
|
||||||
|
if(ai_card)
|
||||||
|
qdel(ai_card)
|
||||||
|
ai_card = null
|
||||||
else if(user)
|
else if(user)
|
||||||
user.put_in_hands(ai_card)
|
user.put_in_hands(ai_card)
|
||||||
else
|
else
|
||||||
@@ -168,7 +185,6 @@
|
|||||||
update_verb_holder()
|
update_verb_holder()
|
||||||
|
|
||||||
/obj/item/rig_module/ai_container/proc/integrate_ai(var/obj/item/ai,var/mob/user)
|
/obj/item/rig_module/ai_container/proc/integrate_ai(var/obj/item/ai,var/mob/user)
|
||||||
|
|
||||||
if(!ai) return
|
if(!ai) return
|
||||||
|
|
||||||
// The ONLY THING all the different AI systems have in common is that they all store the mob inside an item.
|
// The ONLY THING all the different AI systems have in common is that they all store the mob inside an item.
|
||||||
|
|||||||
@@ -227,21 +227,21 @@
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
/mob/living/carbon/human/Stat()
|
/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
|
var/obj/item/weapon/rig/R = back
|
||||||
SetupStat(R)
|
SetupStat(R)
|
||||||
|
|
||||||
/mob/proc/SetupStat(var/obj/item/weapon/rig/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"
|
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/obj/item/rig_module/module in R.installed_modules)
|
||||||
{
|
{
|
||||||
for(var/stat_rig_module/SRM in module.stat_modules)
|
for(var/stat_rig_module/SRM in module.stat_modules)
|
||||||
if(SRM.CanUse())
|
if(SRM.CanUse())
|
||||||
statpanel("Hardsuit Modules",SRM.module.interface_name,SRM)
|
stat(SRM.module.interface_name,SRM)
|
||||||
}
|
}
|
||||||
|
|
||||||
/stat_rig_module
|
/stat_rig_module
|
||||||
|
|||||||
@@ -383,8 +383,7 @@
|
|||||||
cell.use(cost*10)
|
cell.use(cost*10)
|
||||||
return 1
|
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)
|
if(!user)
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -454,7 +453,7 @@
|
|||||||
|
|
||||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if (!ui)
|
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.set_initial_data(data)
|
||||||
ui.open()
|
ui.open()
|
||||||
ui.set_auto_update(1)
|
ui.set_auto_update(1)
|
||||||
@@ -766,6 +765,7 @@
|
|||||||
return 0
|
return 0
|
||||||
wearer.Move(null,dir)*/
|
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()
|
/atom/proc/get_rig()
|
||||||
if(loc)
|
if(loc)
|
||||||
return loc.get_rig()
|
return loc.get_rig()
|
||||||
|
|||||||
Reference in New Issue
Block a user