Action Button Update

- Refactors action button backend
   - Action buttons are no longer checked on Life(), items are responsible
     for adding/removing/updating them.
   - Item action buttons are no longer a static action_button_name define,
     items define actions_types, which is a list of paths.
   - Items can now have multiple action buttons.
     - This is handled by new arguments to ui_action_click, the first
       parameter is the user, the second is the path of the action datum
       that was invoked.
 - Refactored how internals function
   - You may now directly switch internals without breaking anything.
   - The internals icon has been updated to be more consistent.
 - Added action buttons for jetpacks
 - Added action buttons for oxygen tanks
 - Uses-based implants now qdel() themselves when they run out of uses.
   This is somewhat a buff to traitor implants, but it's such a minor
   change. The actual reasoning is so that the action buttons are properly
   removed.
 - Fixed a bug with the "Boo" spell which resulted in IsAvailable failing
   for certain ghosts.
 - You can now shift-click on movable HUD elements to reset them to the
   proper position (thank fucking christ)
This commit is contained in:
Tigercat2000
2016-07-18 13:15:26 -07:00
parent 00558bd109
commit 56a09db739
97 changed files with 1230 additions and 1022 deletions

View File

@@ -16,11 +16,11 @@
name = "Slime management console"
desc = "A computer used for remotely handling slimes."
networks = list("SS13")
off_action = new/datum/action/camera_off/xenobio
var/datum/action/slime_place/slime_place_action = new
var/datum/action/slime_pick_up/slime_up_action = new
var/datum/action/feed_slime/feed_slime_action = new
var/datum/action/monkey_recycle/monkey_recycle_action = new
off_action = new /datum/action/innate/camera_off/xenobio
var/datum/action/innate/slime_place/slime_place_action = new
var/datum/action/innate/slime_pick_up/slime_up_action = new
var/datum/action/innate/feed_slime/feed_slime_action = new
var/datum/action/innate/monkey_recycle/monkey_recycle_action = new
var/list/stored_slimes = list()
var/max_slimes = 5
@@ -62,7 +62,7 @@
return
return ..()
/datum/action/camera_off/xenobio/Activate()
/datum/action/innate/camera_off/xenobio/Activate()
if(!target || !ishuman(target))
return
var/mob/living/carbon/C = target
@@ -88,12 +88,11 @@
src.Remove(C)
/datum/action/slime_place
/datum/action/innate/slime_place
name = "Place Slimes"
action_type = AB_INNATE
button_icon_state = "slime_down"
/datum/action/slime_place/Activate()
/datum/action/innate/slime_place/Activate()
if(!target || !ishuman(owner))
return
var/mob/living/carbon/human/C = owner
@@ -106,12 +105,11 @@
S.visible_message("[S] warps in!")
X.stored_slimes -= S
/datum/action/slime_pick_up
/datum/action/innate/slime_pick_up
name = "Pick up Slime"
action_type = AB_INNATE
button_icon_state = "slime_up"
/datum/action/slime_pick_up/Activate()
/datum/action/innate/slime_pick_up/Activate()
if(!target || !ishuman(owner))
return
var/mob/living/carbon/human/C = owner
@@ -131,12 +129,11 @@
X.stored_slimes += S
/datum/action/feed_slime
/datum/action/innate/feed_slime
name = "Feed Slimes"
action_type = AB_INNATE
button_icon_state = "monkey_down"
/datum/action/feed_slime/Activate()
/datum/action/innate/feed_slime/Activate()
if(!target || !ishuman(owner))
return
var/mob/living/carbon/human/C = owner
@@ -151,12 +148,11 @@
to_chat(owner, "[X] now has [X.monkeys] monkeys left.")
/datum/action/monkey_recycle
/datum/action/innate/monkey_recycle
name = "Recycle Monkeys"
action_type = AB_INNATE
button_icon_state = "monkey_up"
/datum/action/monkey_recycle/Activate()
/datum/action/innate/monkey_recycle/Activate()
if(!target || !ishuman(owner))
return
var/mob/living/carbon/human/C = owner