/datum/action/item_action/mod background_icon_state = "bg_tech_blue" icon_icon = 'icons/mob/actions/actions_mod.dmi' check_flags = AB_CHECK_CONSCIOUS /// Whether this action is intended for the AI. Stuff breaks a lot if this is done differently. var/ai_action = FALSE /datum/action/item_action/mod/New(Target) ..() if(!istype(Target, /obj/item/mod/control)) qdel(src) return if(ai_action) background_icon_state = "bg_tech" /datum/action/item_action/mod/Grant(mob/user) var/obj/item/mod/control/mod = target if(ai_action && user != mod.ai) return else if(!ai_action && user == mod.ai) return return ..() /datum/action/item_action/mod/Remove(mob/user) var/obj/item/mod/control/mod = target if(ai_action && user != mod.ai) return else if(!ai_action && user == mod.ai) return return ..() /datum/action/item_action/mod/Trigger(trigger_flags) if(!IsAvailable()) return FALSE var/obj/item/mod/control/mod = target if(mod.malfunctioning && prob(75)) mod.balloon_alert(usr, "button malfunctions!") return FALSE return TRUE /datum/action/item_action/mod/deploy name = "Deploy MODsuit" desc = "LMB: Deploy/Undeploy part. RMB: Deploy/Undeploy full suit." button_icon_state = "deploy" /datum/action/item_action/mod/deploy/Trigger(trigger_flags) . = ..() if(!.) return var/obj/item/mod/control/mod = target if(trigger_flags & TRIGGER_SECONDARY_ACTION) mod.quick_deploy(usr) else mod.choose_deploy(usr) /datum/action/item_action/mod/deploy/ai ai_action = TRUE /datum/action/item_action/mod/activate name = "Activate MODsuit" desc = "LMB: Activate/Deactivate suit with prompt. RMB: Activate/Deactivate suit skipping prompt." button_icon_state = "activate" /// First time clicking this will set it to TRUE, second time will activate it. var/ready = FALSE /datum/action/item_action/mod/activate/Trigger(trigger_flags) . = ..() if(!.) return if(!(trigger_flags & TRIGGER_SECONDARY_ACTION) && !ready) ready = TRUE button_icon_state = "activate-ready" UpdateButtonIcon() addtimer(CALLBACK(src, PROC_REF(reset_ready)), 3 SECONDS) return var/obj/item/mod/control/mod = target reset_ready() mod.toggle_activate(usr) /// Resets the state requiring to be doubleclicked again. /datum/action/item_action/mod/activate/proc/reset_ready() ready = FALSE button_icon_state = initial(button_icon_state) UpdateButtonIcon() /datum/action/item_action/mod/activate/ai ai_action = TRUE /datum/action/item_action/mod/module name = "Toggle Module" desc = "Toggle a MODsuit module." button_icon_state = "module" /datum/action/item_action/mod/module/Trigger(trigger_flags) . = ..() if(!.) return var/obj/item/mod/control/mod = target mod.quick_module(usr) /datum/action/item_action/mod/module/ai ai_action = TRUE /datum/action/item_action/mod/panel name = "MODsuit Panel" desc = "Open the MODsuit's panel." button_icon_state = "panel" /datum/action/item_action/mod/panel/Trigger(trigger_flags) . = ..() if(!.) return var/obj/item/mod/control/mod = target mod.ui_interact(usr) /datum/action/item_action/mod/panel/ai ai_action = TRUE