mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
Merge pull request #8853 from PsiOmegaDelta/ModuleStat
Adds Hardsuit Module tab.
This commit is contained in:
@@ -46,6 +46,10 @@
|
||||
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
|
||||
|
||||
/obj/item/rig_module/ai_container/process()
|
||||
if(integrated_ai && loc)
|
||||
integrated_ai.SetupStat(loc.get_rig())
|
||||
|
||||
/obj/item/rig_module/ai_container/proc/update_verb_holder()
|
||||
if(!verb_holder)
|
||||
verb_holder = new(src)
|
||||
|
||||
@@ -52,6 +52,8 @@
|
||||
var/activate_string = "Activate"
|
||||
var/deactivate_string = "Deactivate"
|
||||
|
||||
var/list/stat_rig_module/stat_modules = new()
|
||||
|
||||
/obj/item/rig_module/examine()
|
||||
..()
|
||||
switch(damage)
|
||||
@@ -126,7 +128,11 @@
|
||||
|
||||
charges = processed_charges
|
||||
|
||||
..()
|
||||
stat_modules += new/stat_rig_module/activate(src)
|
||||
stat_modules += new/stat_rig_module/deactivate(src)
|
||||
stat_modules += new/stat_rig_module/engage(src)
|
||||
stat_modules += new/stat_rig_module/select(src)
|
||||
stat_modules += new/stat_rig_module/charge(src)
|
||||
|
||||
// Called when the module is installed into a suit.
|
||||
/obj/item/rig_module/proc/installed(var/obj/item/weapon/rig/new_holder)
|
||||
@@ -218,4 +224,111 @@
|
||||
// Called by holder rigsuit attackby()
|
||||
// Checks if an item is usable with this module and handles it if it is
|
||||
/obj/item/rig_module/proc/accepts_item(var/obj/item/input_device)
|
||||
return 0
|
||||
return 0
|
||||
|
||||
/mob/living/carbon/human/Stat()
|
||||
..()
|
||||
|
||||
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(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)
|
||||
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_rig_module
|
||||
parent_type = /atom/movable
|
||||
var/module_mode = ""
|
||||
var/obj/item/rig_module/module
|
||||
|
||||
/stat_rig_module/New(var/obj/item/rig_module/module)
|
||||
..()
|
||||
src.module = module
|
||||
|
||||
/stat_rig_module/proc/AddHref(var/list/href_list)
|
||||
return
|
||||
|
||||
/stat_rig_module/proc/CanUse()
|
||||
return 0
|
||||
|
||||
/stat_rig_module/Click()
|
||||
..()
|
||||
if(CanUse())
|
||||
var/list/href_list = list(
|
||||
"interact_module" = module.holder.installed_modules.Find(module),
|
||||
"module_mode" = module_mode
|
||||
)
|
||||
AddHref(href_list)
|
||||
module.holder.Topic(usr, href_list)
|
||||
|
||||
/stat_rig_module/activate/New(var/obj/item/rig_module/module)
|
||||
..()
|
||||
name = module.activate_string
|
||||
if(module.active_power_cost)
|
||||
name += " ([module.active_power_cost*10]A)"
|
||||
module_mode = "activate"
|
||||
|
||||
/stat_rig_module/activate/CanUse()
|
||||
return module.toggleable && !module.active
|
||||
|
||||
/stat_rig_module/deactivate/New(var/obj/item/rig_module/module)
|
||||
..()
|
||||
name = module.deactivate_string
|
||||
// Show cost despite being 0, if it means changing from an active cost.
|
||||
if(module.active_power_cost || module.passive_power_cost)
|
||||
name += " ([module.passive_power_cost*10]P)"
|
||||
|
||||
module_mode = "deactivate"
|
||||
|
||||
/stat_rig_module/deactivate/CanUse()
|
||||
return module.toggleable && module.active
|
||||
|
||||
/stat_rig_module/engage/New(var/obj/item/rig_module/module)
|
||||
..()
|
||||
name = module.engage_string
|
||||
if(module.use_power_cost)
|
||||
name += " ([module.use_power_cost*10]E)"
|
||||
module_mode = "engage"
|
||||
|
||||
/stat_rig_module/engage/CanUse()
|
||||
return module.usable
|
||||
|
||||
/stat_rig_module/select/New()
|
||||
..()
|
||||
name = "Select"
|
||||
module_mode = "select"
|
||||
|
||||
/stat_rig_module/select/CanUse()
|
||||
if(module.selectable)
|
||||
name = module.holder.selected_module == module ? "Selected" : "Select"
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/stat_rig_module/charge/New()
|
||||
..()
|
||||
name = "Change Charge"
|
||||
module_mode = "select_charge_type"
|
||||
|
||||
/stat_rig_module/charge/AddHref(var/list/href_list)
|
||||
var/charge_index = module.charges.Find(module.charge_selected)
|
||||
if(!charge_index)
|
||||
charge_index = 0
|
||||
else
|
||||
charge_index = charge_index == module.charges.len ? 1 : charge_index+1
|
||||
|
||||
href_list["charge_type"] = module.charges[charge_index]
|
||||
|
||||
/stat_rig_module/charge/CanUse()
|
||||
if(module.charges && module.charges.len)
|
||||
var/datum/rig_charge/charge = module.charges[module.charge_selected]
|
||||
name = "[charge.display_name] ([charge.charges]C) - Change"
|
||||
return 1
|
||||
return 0
|
||||
|
||||
@@ -776,6 +776,14 @@
|
||||
return 0
|
||||
wearer.Move(null,dir)*/
|
||||
|
||||
/atom/proc/get_rig()
|
||||
if(loc)
|
||||
return loc.get_rig()
|
||||
return null
|
||||
|
||||
/obj/item/weapon/rig/get_rig()
|
||||
return src
|
||||
|
||||
#undef ONLY_DEPLOY
|
||||
#undef ONLY_RETRACT
|
||||
#undef SEAL_DELAY
|
||||
|
||||
@@ -35,7 +35,6 @@
|
||||
|
||||
var/locked = 0
|
||||
var/mob/living/carbon/brain/brainmob = null//The current occupant.
|
||||
var/mob/living/silicon/robot = null//Appears unused.
|
||||
var/obj/mecha = null//This does not appear to be used outside of reference in mecha.dm.
|
||||
|
||||
attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
|
||||
Reference in New Issue
Block a user