refactor action buttons (#29416)

* refactor action buttons

* fix cult spell charge overlay

* lewc review

* update for a/mhelp buttons and xenobio organs

* update for minebot

* properly create button each time

* directly add/remove unavail overlay for reasons

* lewc review
This commit is contained in:
warriorstar-orion
2025-07-28 15:13:28 -04:00
committed by GitHub
parent f9016e65ff
commit 56f4960ed4
115 changed files with 815 additions and 584 deletions
@@ -13,7 +13,7 @@
given_action.Grant(src)
/datum/action/innate/admin
button_overlay_icon = 'icons/mob/actions/actions_admin.dmi'
button_icon = 'icons/mob/actions/actions_admin.dmi'
var/rights_required = R_ADMIN
/datum/action/innate/admin/Trigger()
@@ -29,11 +29,12 @@
/datum/action/innate/admin/ticket
name = "Adminhelps"
desc = "There are 0 open tickets."
button_overlay_icon_state = "adminhelp"
button_icon_state = "adminhelp"
var/mutable_appearance/button_text
var/ticket_amt = 0
/datum/action/innate/admin/ticket/New(Target)
button_overlay_icon_state = "nohelp"
button_icon_state = "nohelp"
. = ..()
register_ticket_signals()
@@ -48,24 +49,26 @@
ticket_amt = _ticket_amt
desc = "There are [ticket_amt] open tickets."
if(ticket_amt > 0)
button_overlay_icon_state = initial(button_overlay_icon_state)
button_icon_state = initial(button_icon_state)
else
button_overlay_icon_state = "nohelp"
UpdateButtons()
button_icon_state = "nohelp"
build_all_button_icons(force = TRUE)
/datum/action/innate/admin/ticket/UpdateButton(atom/movable/screen/movable/action_button/button, status_only, force)
/datum/action/innate/admin/ticket/apply_button_overlay(atom/movable/screen/movable/action_button/button, force)
. = ..()
if(ticket_amt <= 0)
return
var/image/maptext_holder = image('icons/effects/effects.dmi', icon_state = "nothing")
maptext_holder.plane = FLOAT_PLANE + 1.1
maptext_holder.maptext = "<span class='maptext'>[ticket_amt]</span>"
maptext_holder.maptext_x = 2
button.add_overlay(maptext_holder)
// TODO: We need a generic way to handle button text for actions bc this is atrocious
// Yes cutting and adding the overlay each time is required
button.cut_overlay(button_text)
button_text = mutable_appearance('icons/effects/effects.dmi', icon_state = "nothing")
button_text.appearance_flags = RESET_COLOR | RESET_ALPHA
button_text.plane = FLOAT_PLANE + 1
button_text.maptext_x = 2
button_text.maptext = ticket_amt > 0 ? "<span class='maptext'>[ticket_amt]</span>" : ""
button.add_overlay(button_text)
/datum/action/innate/admin/ticket/mentor
name = "Mentorhelps"
button_overlay_icon_state = "mentorhelp"
button_icon_state = "mentorhelp"
rights_required = R_MENTOR|R_ADMIN
/datum/action/innate/admin/ticket/mentor/register_ticket_signals()
@@ -1,10 +1,10 @@
/datum/action/innate/minedrone
check_flags = AB_CHECK_CONSCIOUS
button_background_icon_state = "bg_default"
background_icon_state = "bg_default"
/datum/action/innate/minedrone/toggle_light
name = "Toggle Light"
button_overlay_icon_state = "mech_lights_off"
button_icon_state = "mech_lights_off"
/datum/action/innate/minedrone/toggle_light/Activate()
var/mob/living/basic/mining_drone/user = owner
@@ -18,7 +18,7 @@
/datum/action/innate/minedrone/toggle_meson_vision
name = "Toggle Meson Vision"
button_overlay_icon_state = "meson"
button_icon_state = "meson"
/datum/action/innate/minedrone/toggle_meson_vision/Activate()
var/mob/living/user = owner
@@ -41,7 +41,7 @@
/datum/action/innate/minedrone/dump_ore
name = "Dump Ore"
button_overlay_icon_state = "mech_eject"
button_icon_state = "mech_eject"
/datum/action/innate/minedrone/dump_ore/Activate()
var/mob/living/basic/mining_drone/user = owner
+4 -4
View File
@@ -79,7 +79,7 @@
alien = 0
if(radio_action)
radio_action.UpdateButtons()
radio_action.build_all_button_icons()
SSblackbox.record_feedback("amount", "mmis_filled", 1)
else
to_chat(user, "<span class='warning'>You can't drop [B]!</span>")
@@ -178,7 +178,7 @@
/obj/item/mmi/proc/become_occupied(new_icon)
icon_state = new_icon
if(radio)
radio_action.UpdateButtons()
radio_action.build_all_button_icons()
/obj/item/mmi/examine(mob/user)
. = ..()
@@ -212,8 +212,8 @@
return ..()
/datum/action/generic/configure_mmi_radio/apply_button_overlay(atom/movable/screen/movable/action_button/current_button)
button_overlay_icon = mmi.icon
button_overlay_icon_state = mmi.icon_state
button_icon = mmi.icon
button_icon_state = mmi.icon_state
..()
/obj/item/mmi/emp_act(severity)
@@ -213,7 +213,7 @@ Des: Removes all infected images from the alien.
and carry the owner just to make sure*/
/mob/living/carbon/proc/update_plasma_display(mob/owner)
for(var/datum/action/spell_action/action in actions)
action.UpdateButtons()
action.build_all_button_icons()
if(!hud_used || !isalien(owner)) //clientless aliens or non aliens
return
hud_used.alien_plasma_display.maptext = "<div align='center' valign='middle' style='position:relative; top:0px; left:6px'> <font face='Small Fonts' color='magenta'>[get_plasma()]</font></div>"
@@ -155,7 +155,7 @@
name = "Ignite"
desc = "Set yourself aflame, bringing yourself closer to exploding!"
check_flags = AB_CHECK_CONSCIOUS
button_overlay_icon_state = "sacredflame"
button_icon_state = "sacredflame"
/datum/action/innate/golem_ignite/Activate()
if(ishuman(owner))
@@ -504,6 +504,7 @@
/datum/action/innate/unstable_teleport
name = "Unstable Teleport"
check_flags = AB_CHECK_CONSCIOUS
button_icon_state = "blink"
var/activated = FALSE // To prevent spamming
var/cooldown = 150
var/last_teleport = 0
@@ -545,9 +546,9 @@
H.unbuckle(force = TRUE)
do_teleport(H, picked)
last_teleport = world.time
UpdateButtons() //action icon looks unavailable
build_all_button_icons() //action icon looks unavailable
sleep(cooldown + 5)
UpdateButtons() //action icon looks available again
build_all_button_icons() //action icon looks available again
/datum/unarmed_attack/golem/bluespace
attack_verb = "bluespace punch"
@@ -138,7 +138,7 @@
/datum/action/innate/change_monitor
name = "Change Monitor"
check_flags = AB_CHECK_CONSCIOUS
button_overlay_icon_state = "scan_mode"
button_icon_state = "scan_mode"
/datum/action/innate/change_monitor/Activate()
var/mob/living/carbon/human/H = owner
@@ -157,8 +157,8 @@
name = "Cocoon"
desc = "Restore your wings and antennae, and heal some damage. If your cocoon is broken externally you will take heavy damage!"
check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUNNED|AB_CHECK_CONSCIOUS|AB_CHECK_TURF
button_overlay_icon = 'icons/effects/effects.dmi'
button_overlay_icon_state = "cocoon1"
button_icon = 'icons/effects/effects.dmi'
button_icon_state = "cocoon1"
/datum/action/innate/cocoon/Activate()
var/mob/living/carbon/human/moth/H = owner
@@ -113,8 +113,8 @@
/datum/action/innate/slimecolor
name = "Toggle Recolor"
check_flags = AB_CHECK_CONSCIOUS
button_overlay_icon = 'icons/effects/effects.dmi'
button_overlay_icon_state = "greenglow"
button_icon = 'icons/effects/effects.dmi'
button_icon_state = "greenglow"
/datum/action/innate/slimecolor/Activate()
var/mob/living/carbon/human/H = owner
@@ -129,8 +129,8 @@
/datum/action/innate/regrow
name = "Regrow limbs"
check_flags = AB_CHECK_CONSCIOUS
button_overlay_icon = 'icons/effects/effects.dmi'
button_overlay_icon_state = "greenglow"
button_icon = 'icons/effects/effects.dmi'
button_icon_state = "greenglow"
/datum/action/innate/regrow/Activate()
var/mob/living/carbon/human/H = owner
@@ -79,8 +79,8 @@
/datum/action/innate/unathi_ignite
name = "Ignite"
desc = "A fire forms in your mouth, fierce enough to... light a cigarette. Requires you to drink welding fuel beforehand."
button_overlay_icon = 'icons/obj/cigarettes.dmi'
button_overlay_icon_state = "match_unathi"
button_icon = 'icons/obj/cigarettes.dmi'
button_icon_state = "match_unathi"
var/cooldown = 0
var/cooldown_duration = 20 SECONDS
var/welding_fuel_used = 3 //one sip, with less strict timing
@@ -1,7 +1,7 @@
/datum/action/innate/robot_sight
var/sight_mode = null
button_overlay_icon = 'icons/obj/decals.dmi'
button_overlay_icon_state = "securearea"
button_icon = 'icons/obj/decals.dmi'
button_icon_state = "securearea"
/datum/action/innate/robot_sight/Activate()
var/mob/living/silicon/robot/R = owner
@@ -22,19 +22,19 @@
/datum/action/innate/robot_sight/thermal
name = "Thermal Vision"
sight_mode = BORGTHERM
button_overlay_icon = 'icons/obj/clothing/glasses.dmi'
button_overlay_icon_state = "thermal"
button_icon = 'icons/obj/clothing/glasses.dmi'
button_icon_state = "thermal"
// ayylmao
/datum/action/innate/robot_sight/thermal/alien
button_overlay_icon = 'icons/mob/alien.dmi'
button_overlay_icon_state = "borg-extra-vision"
button_icon = 'icons/mob/alien.dmi'
button_icon_state = "borg-extra-vision"
/datum/action/innate/robot_sight/meson
name = "Meson Vision"
sight_mode = BORGMESON
button_overlay_icon = 'icons/obj/clothing/glasses.dmi'
button_overlay_icon_state = "meson"
button_icon = 'icons/obj/clothing/glasses.dmi'
button_icon_state = "meson"
#define MODE_NONE ""
#define MODE_MESON "meson"
@@ -46,8 +46,8 @@
/datum/action/innate/robot_sight/engineering_scanner
name = "Engineering Scanner Vision"
sight_mode = BORGMESON
button_overlay_icon = 'icons/obj/clothing/glasses.dmi'
button_overlay_icon_state = "trayson-meson"
button_icon = 'icons/obj/clothing/glasses.dmi'
button_icon_state = "trayson-meson"
var/list/mode_list = list(MODE_NONE = MODE_MESON, MODE_MESON = MODE_TRAY, MODE_TRAY = MODE_RAD, MODE_RAD = MODE_PRESSURE, MODE_PRESSURE = MODE_NONE)
var/mode = MODE_NONE
@@ -55,7 +55,7 @@
var/mob/living/silicon/robot/R = owner
mode = mode_list[mode]
to_chat(owner, "<span class='notice'>You turn your enhanced optics [mode ? "to [mode] mode." : "off."]</span>")
button_overlay_icon_state = "trayson-[mode]"
button_icon_state = "trayson-[mode]"
if(mode == MODE_MESON)
R.sight_mode |= sight_mode
@@ -95,8 +95,8 @@
/datum/action/innate/robot_magpulse
name = "Magnetic pulse"
button_overlay_icon = 'icons/obj/clothing/shoes.dmi'
button_overlay_icon_state = "magboots0"
button_icon = 'icons/obj/clothing/shoes.dmi'
button_icon_state = "magboots0"
var/slowdown_active = 2 // Same as magboots
/datum/action/innate/robot_magpulse/Activate()
@@ -104,7 +104,7 @@
to_chat(owner, "You turn your magboots on.")
var/mob/living/silicon/robot/robot = owner
robot.speed += slowdown_active
button_overlay_icon_state = "magboots1"
button_icon_state = "magboots1"
active = TRUE
/datum/action/innate/robot_magpulse/Deactivate()
@@ -112,12 +112,12 @@
to_chat(owner, "You turn your magboots off.")
var/mob/living/silicon/robot/robot = owner
robot.speed -= slowdown_active
button_overlay_icon_state = initial(button_overlay_icon_state)
button_icon_state = initial(button_icon_state)
active = FALSE
/datum/action/innate/robot_override_lock
name = "Override lockdown"
button_overlay_icon_state = "unlock_self"
button_icon_state = "unlock_self"
/datum/action/innate/robot_override_lock/Activate()
to_chat(owner, "<span class='danger'>HARDWARE_OVERRIDE_SYNDICATE: Lockdown lifted. Connection to NT systems severed.</span>")
@@ -57,8 +57,8 @@
/datum/action/innate/diona/merge
name = "Merge with gestalt"
button_overlay_icon = 'icons/mob/human_races/r_diona.dmi'
button_overlay_icon_state = "preview"
button_icon = 'icons/mob/human_races/r_diona.dmi'
button_icon_state = "preview"
/datum/action/innate/diona/merge/Activate()
var/mob/living/simple_animal/diona/user = owner
@@ -66,8 +66,8 @@
/datum/action/innate/diona/evolve
name = "Evolve"
button_overlay_icon = 'icons/obj/cloning.dmi'
button_overlay_icon_state = "pod_cloning"
button_icon = 'icons/obj/cloning.dmi'
button_icon_state = "pod_cloning"
/datum/action/innate/diona/evolve/Activate()
var/mob/living/simple_animal/diona/user = owner
@@ -75,8 +75,8 @@
/datum/action/innate/diona/steal_blood
name = "Steal blood"
button_overlay_icon = 'icons/goonstation/objects/iv.dmi'
button_overlay_icon_state = "bloodbag"
button_icon = 'icons/goonstation/objects/iv.dmi'
button_icon_state = "bloodbag"
/datum/action/innate/diona/steal_blood/Activate()
var/mob/living/simple_animal/diona/user = owner
@@ -132,8 +132,8 @@
/datum/action/innate/nian_caterpillar_emerge
name = "Evolve"
desc = "Weave a cocoon around yourself to evolve into a greater form. The worme."
button_overlay_icon = 'icons/effects/effects.dmi'
button_overlay_icon_state = "cocoon1"
button_icon = 'icons/effects/effects.dmi'
button_icon_state = "cocoon1"
/datum/action/innate/nian_caterpillar_emerge/proc/emerge(obj/structure/moth_cocoon/C)
for(var/mob/living/carbon/human/H in C)
@@ -4,7 +4,7 @@
var/layer_to_change_from = MOB_LAYER
var/layer_to_change_to = TURF_LAYER + 0.2
check_flags = AB_CHECK_CONSCIOUS
button_overlay_icon_state = "mouse_gray_sleep"
button_icon_state = "mouse_gray_sleep"
/datum/action/innate/hide/Activate()
var/mob/living/simple_animal/simplemob = owner
@@ -23,9 +23,9 @@
/datum/action/innate/hide/alien_larva_hide
desc = "Allows to hide beneath tables or certain items. Toggled on or off."
button_background_icon_state = "bg_alien"
button_overlay_icon_state = "alien_hide"
background_icon_state = "bg_alien"
button_icon_state = "alien_hide"
layer_to_change_to = ABOVE_NORMAL_TURF_LAYER
/datum/action/innate/hide/drone_hide
button_overlay_icon_state = "repairbot"
button_icon_state = "repairbot"
@@ -163,8 +163,8 @@
/datum/action/innate/web_giant_spider
name = "Lay Web"
button_overlay_icon = 'icons/effects/effects.dmi'
button_overlay_icon_state = "stickyweb1"
button_icon = 'icons/effects/effects.dmi'
button_icon_state = "stickyweb1"
/datum/action/innate/web_giant_spider/Activate()
var/mob/living/simple_animal/hostile/poison/giant_spider/user = owner
@@ -172,8 +172,8 @@
/datum/action/innate/wrap_giant_spider
name = "Wrap"
button_overlay_icon = 'icons/effects/effects.dmi'
button_overlay_icon_state = "cocoon_large1"
button_icon = 'icons/effects/effects.dmi'
button_icon_state = "cocoon_large1"
/datum/action/innate/wrap_giant_spider/Activate()
var/mob/living/simple_animal/hostile/poison/giant_spider/nurse/user = owner
@@ -181,8 +181,8 @@
/datum/action/innate/lay_eggs_giant_spider
name = "Lay Eggs"
button_overlay_icon = 'icons/effects/effects.dmi'
button_overlay_icon_state = "eggs"
button_icon = 'icons/effects/effects.dmi'
button_icon_state = "eggs"
/datum/action/innate/lay_eggs_giant_spider/Activate()
var/mob/living/simple_animal/hostile/poison/giant_spider/nurse/user = owner
@@ -56,8 +56,8 @@
/datum/action/innate/gorilla_toggle
name = "Toggle Stand"
desc = "Toggles between crawling and standing up."
button_overlay_icon = 'icons/mob/actions/actions_animal.dmi'
button_overlay_icon_state = "gorilla_toggle"
button_icon = 'icons/mob/actions/actions_animal.dmi'
button_icon_state = "gorilla_toggle"
check_flags = AB_CHECK_CONSCIOUS
/datum/action/innate/gorilla_toggle/Activate()
@@ -73,22 +73,22 @@ Difficulty: Medium
/datum/action/innate/megafauna_attack/dash
name = "Dash To Target"
button_overlay_icon = 'icons/mob/actions/actions.dmi'
button_overlay_icon_state = "sniper_zoom"
button_icon = 'icons/mob/actions/actions.dmi'
button_icon_state = "sniper_zoom"
chosen_message = "<span class='colossus'>You are now dashing to your target.</span>"
chosen_attack_num = 1
/datum/action/innate/megafauna_attack/kinetic_accelerator
name = "Fire Kinetic Accelerator"
button_overlay_icon = 'icons/obj/guns/energy.dmi'
button_overlay_icon_state = "kineticgun"
button_icon = 'icons/obj/guns/energy.dmi'
button_icon_state = "kineticgun"
chosen_message = "<span class='colossus'>You are now shooting your kinetic accelerator.</span>"
chosen_attack_num = 2
/datum/action/innate/megafauna_attack/transform_weapon
name = "Transform Weapon"
button_overlay_icon = 'icons/obj/lavaland/artefacts.dmi'
button_overlay_icon_state = "cleaving_saw"
button_icon = 'icons/obj/lavaland/artefacts.dmi'
button_icon_state = "cleaving_saw"
chosen_message = "<span class='colossus'>You are now transforming your weapon.</span>"
chosen_attack_num = 3
@@ -97,29 +97,29 @@ Difficulty: Hard
/datum/action/innate/megafauna_attack/triple_charge
name = "Triple Charge"
button_overlay_icon = 'icons/mob/actions/actions.dmi'
button_overlay_icon_state = "sniper_zoom"
button_icon = 'icons/mob/actions/actions.dmi'
button_icon_state = "sniper_zoom"
chosen_message = "<span class='colossus'>You are now triple charging at the target you click on.</span>"
chosen_attack_num = 1
/datum/action/innate/megafauna_attack/hallucination_charge
name = "Hallucination Charge"
button_overlay_icon = 'icons/effects/bubblegum.dmi'
button_overlay_icon_state = "smack ya one"
button_icon = 'icons/effects/bubblegum.dmi'
button_icon_state = "smack ya one"
chosen_message = "<span class='colossus'>You are now charging with hallucinations at the target you click on.</span>"
chosen_attack_num = 2
/datum/action/innate/megafauna_attack/hallucination_surround
name = "Surround Target"
button_overlay_icon = 'icons/turf/walls/wall.dmi'
button_overlay_icon_state = "wall-0"
button_icon = 'icons/turf/walls/wall.dmi'
button_icon_state = "wall-0"
chosen_message = "<span class='colossus'>You are now surrounding the target you click on with hallucinations.</span>"
chosen_attack_num = 3
/datum/action/innate/megafauna_attack/blood_warp
name = "Blood Warp"
button_overlay_icon = 'icons/effects/blood.dmi'
button_overlay_icon_state = "floor1"
button_icon = 'icons/effects/blood.dmi'
button_icon_state = "floor1"
chosen_message = "<span class='colossus'>You are now warping to blood around your clicked position.</span>"
chosen_attack_num = 4
@@ -80,29 +80,29 @@ Difficulty: Very Hard
/datum/action/innate/megafauna_attack/spiral_attack
name = "Spiral Shots"
button_overlay_icon = 'icons/mob/actions/actions.dmi'
button_overlay_icon_state = "sniper_zoom"
button_icon = 'icons/mob/actions/actions.dmi'
button_icon_state = "sniper_zoom"
chosen_message = "<span class='colossus'>You are now firing in a spiral.</span>"
chosen_attack_num = 1
/datum/action/innate/megafauna_attack/aoe_attack
name = "All Directions"
button_overlay_icon = 'icons/effects/effects.dmi'
button_overlay_icon_state = "at_shield2"
button_icon = 'icons/effects/effects.dmi'
button_icon_state = "at_shield2"
chosen_message = "<span class='colossus'>You are now firing in all directions.</span>"
chosen_attack_num = 2
/datum/action/innate/megafauna_attack/shotgun
name = "Shotgun Fire"
button_overlay_icon = 'icons/obj/guns/projectile.dmi'
button_overlay_icon_state = "shotgun"
button_icon = 'icons/obj/guns/projectile.dmi'
button_icon_state = "shotgun"
chosen_message = "<span class='colossus'>You are now firing shotgun shots where you aim.</span>"
chosen_attack_num = 3
/datum/action/innate/megafauna_attack/alternating_cardinals
name = "Alternating Shots"
button_overlay_icon = 'icons/obj/guns/projectile.dmi'
button_overlay_icon_state = "pistol"
button_icon = 'icons/obj/guns/projectile.dmi'
button_icon_state = "pistol"
chosen_message = "<span class='colossus'>You are now firing in alternating cardinal directions.</span>"
chosen_attack_num = 4
@@ -73,29 +73,29 @@ Difficulty: Medium
/datum/action/innate/megafauna_attack/fire_cone
name = "Fire Cone"
button_overlay_icon = 'icons/obj/wizard.dmi'
button_overlay_icon_state = "fireball"
button_icon = 'icons/obj/wizard.dmi'
button_icon_state = "fireball"
chosen_message = "<span class='colossus'>You are now shooting fire at your target.</span>"
chosen_attack_num = 1
/datum/action/innate/megafauna_attack/fire_cone_meteors
name = "Fire Cone With Meteors"
button_overlay_icon = 'icons/mob/actions/actions.dmi'
button_overlay_icon_state = "sniper_zoom"
button_icon = 'icons/mob/actions/actions.dmi'
button_icon_state = "sniper_zoom"
chosen_message = "<span class='colossus'>You are now shooting fire at your target and raining fire around you.</span>"
chosen_attack_num = 2
/datum/action/innate/megafauna_attack/mass_fire
name = "Mass Fire Attack"
button_overlay_icon = 'icons/effects/fire.dmi'
button_overlay_icon_state = "1"
button_icon = 'icons/effects/fire.dmi'
button_icon_state = "1"
chosen_message = "<span class='colossus'>You are now shooting mass fire at your target.</span>"
chosen_attack_num = 3
/datum/action/innate/megafauna_attack/lava_swoop
name = "Lava Swoop"
button_overlay_icon = 'icons/effects/effects.dmi'
button_overlay_icon_state = "lavastaff_warn"
button_icon = 'icons/effects/effects.dmi'
button_icon_state = "lavastaff_warn"
chosen_message = "<span class='colossus'>You are now swooping and raining lava at your target.</span>"
chosen_attack_num = 4
@@ -92,29 +92,29 @@ Difficulty: Hard
/datum/action/innate/megafauna_attack/blink
name = "Blink To Target"
button_overlay_icon = 'icons/mob/actions/actions.dmi'
button_overlay_icon_state = "sniper_zoom"
button_icon = 'icons/mob/actions/actions.dmi'
button_icon_state = "sniper_zoom"
chosen_message = "<span class='colossus'>You are now blinking to your target.</span>"
chosen_attack_num = 1
/datum/action/innate/megafauna_attack/chaser_swarm
name = "Chaser Swarm"
button_overlay_icon = 'icons/effects/effects.dmi'
button_overlay_icon_state = "hierophant_squares_indefinite"
button_icon = 'icons/effects/effects.dmi'
button_icon_state = "hierophant_squares_indefinite"
chosen_message = "<span class='colossus'>You are firing a chaser swarm at your target.</span>"
chosen_attack_num = 2
/datum/action/innate/megafauna_attack/cross_blasts
name = "Cross Blasts"
button_overlay_icon = 'icons/effects/effects.dmi'
button_overlay_icon_state = "hierophant_blast_indefinite"
button_icon = 'icons/effects/effects.dmi'
button_icon_state = "hierophant_blast_indefinite"
chosen_message = "<span class='colossus'>You are now firing cross blasts at your target.</span>"
chosen_attack_num = 3
/datum/action/innate/megafauna_attack/blink_spam
name = "Blink Chase"
button_overlay_icon = 'icons/obj/lavaland/artefacts.dmi'
button_overlay_icon_state = "hierophant_club_ready_beacon"
button_icon = 'icons/obj/lavaland/artefacts.dmi'
button_icon_state = "hierophant_club_ready_beacon"
chosen_message = "<span class='colossus'>You are now repeatedly blinking at your target.</span>"
chosen_attack_num = 4
@@ -216,8 +216,8 @@
/datum/action/innate/megafauna_attack
name = "Megafauna Attack"
button_overlay_icon = 'icons/mob/actions/actions_animal.dmi'
button_overlay_icon_state = ""
button_icon = 'icons/mob/actions/actions_animal.dmi'
button_icon_state = ""
var/mob/living/simple_animal/hostile/megafauna/M
var/chosen_message
var/chosen_attack_num = 0
@@ -102,15 +102,15 @@ While using this makes the system rely on OnFire, it still gives options for tim
/datum/action/innate/elite_attack
name = "Elite Attack"
button_overlay_icon = 'icons/mob/actions/actions_elites.dmi'
button_overlay_icon_state = ""
button_background_icon_state = "bg_default"
button_icon = 'icons/mob/actions/actions_elites.dmi'
button_icon_state = ""
background_icon_state = "bg_default"
///The displayed message into chat when this attack is selected
var/chosen_message
///The internal attack ID for the elite's OpenFire() proc to use
var/chosen_attack_num = 0
/datum/action/innate/elite_attack/CreateButton()
/datum/action/innate/elite_attack/create_button()
var/atom/movable/screen/movable/action_button/button = ..()
button.maptext = ""
button.maptext_x = 8
@@ -124,11 +124,11 @@ While using this makes the system rely on OnFire, it still gives options for tim
STOP_PROCESSING(SSfastprocess, src)
qdel(src)
return
UpdateButtons()
build_all_button_icons()
/datum/action/innate/elite_attack/UpdateButton(atom/movable/screen/movable/action_button/button, status_only = FALSE, force = FALSE)
/datum/action/innate/elite_attack/build_button_icon(atom/movable/screen/movable/action_button/button, update_flags, force)
. = ..()
if(status_only)
if(update_flags & UPDATE_BUTTON_STATUS)
return
var/mob/living/simple_animal/hostile/asteroid/elite/elite_owner = owner
var/timeleft = max(elite_owner.ranged_cooldown - world.time, 0)
@@ -52,25 +52,25 @@
/datum/action/innate/elite_attack/tentacle_patch
name = "Tentacle Patch"
button_overlay_icon_state = "tentacle_patch"
button_icon_state = "tentacle_patch"
chosen_message = "<span class='boldwarning'>You are now attacking with a patch of tentacles.</span>"
chosen_attack_num = TENTACLE_PATCH
/datum/action/innate/elite_attack/spawn_children
name = "Spawn Children"
button_overlay_icon_state = "spawn_children"
button_icon_state = "spawn_children"
chosen_message = "<span class='boldwarning'>You will spawn two children at your location to assist you in combat. You can have up to 8.</span>"
chosen_attack_num = SPAWN_CHILDREN
/datum/action/innate/elite_attack/rage
name = "Rage"
button_overlay_icon_state = "rage"
button_icon_state = "rage"
chosen_message = "<span class='boldwarning'>You will temporarily increase your movement speed.</span>"
chosen_attack_num = RAGE
/datum/action/innate/elite_attack/call_children
name = "Call Children"
button_overlay_icon_state = "call_children"
button_icon_state = "call_children"
chosen_message = "<span class='boldwarning'>You will summon your children to your location.</span>"
chosen_attack_num = CALL_CHILDREN
@@ -74,25 +74,25 @@
/datum/action/innate/elite_attack/herald_trishot
name = "Triple Shot"
button_overlay_icon_state = "herald_trishot"
button_icon_state = "herald_trishot"
chosen_message = "<span class='boldwarning'>You are now firing three shots in your chosen direction.</span>"
chosen_attack_num = HERALD_TRISHOT
/datum/action/innate/elite_attack/herald_directionalshot
name = "Circular Shot"
button_overlay_icon_state = "herald_directionalshot"
button_icon_state = "herald_directionalshot"
chosen_message = "<span class='boldwarning'>You are firing projectiles in all directions.</span>"
chosen_attack_num = HERALD_DIRECTIONALSHOT
/datum/action/innate/elite_attack/herald_teleshot
name = "Teleport Shot"
button_overlay_icon_state = "herald_teleshot"
button_icon_state = "herald_teleshot"
chosen_message = "<span class='boldwarning'>You will now fire a shot which teleports you where it lands.</span>"
chosen_attack_num = HERALD_TELESHOT
/datum/action/innate/elite_attack/herald_mirror
name = "Summon Mirror"
button_overlay_icon_state = "herald_mirror"
button_icon_state = "herald_mirror"
chosen_message = "<span class='boldwarning'>You will spawn a mirror which duplicates your attacks.</span>"
chosen_attack_num = HERALD_MIRROR
@@ -55,25 +55,25 @@
/datum/action/innate/elite_attack/legionnaire_charge
name = "Legionnaire Charge"
button_overlay_icon_state = "legionnaire_charge"
button_icon_state = "legionnaire_charge"
chosen_message = "<span class='boldwarning'>You will attempt to grab your opponent and throw them.</span>"
chosen_attack_num = LEGIONNAIRE_CHARGE
/datum/action/innate/elite_attack/head_detach
name = "Release Head"
button_overlay_icon_state = "head_detach"
button_icon_state = "head_detach"
chosen_message = "<span class='boldwarning'>You will now detach your head or kill it if it is already released.</span>"
chosen_attack_num = HEAD_DETACH
/datum/action/innate/elite_attack/bonfire_teleport
name = "Bonfire Teleport"
button_overlay_icon_state = "bonfire_teleport"
button_icon_state = "bonfire_teleport"
chosen_message = "<span class='boldwarning'>You will leave a bonfire. Second use will let you swap positions with it indefintiely. Using this move on the same tile as your active bonfire removes it.</span>"
chosen_attack_num = BONFIRE_TELEPORT
/datum/action/innate/elite_attack/spew_smoke
name = "Spew Smoke"
button_overlay_icon_state = "spew_smoke"
button_icon_state = "spew_smoke"
chosen_message = "<span class='boldwarning'>Your head will spew smoke in an area, wherever it may be.</span>"
chosen_attack_num = SPEW_SMOKE
@@ -56,25 +56,25 @@
/datum/action/innate/elite_attack/chaser_burst
name = "Chaser Burst"
button_overlay_icon_state = "singular_shot"
button_icon_state = "singular_shot"
chosen_message = "<span class='boldwarning'>You fire a chaser after all mobs in view.</span>"
chosen_attack_num = CHASER_BURST
/datum/action/innate/elite_attack/magic_box
name = "Magic Box"
button_overlay_icon_state = "magic_box"
button_icon_state = "magic_box"
chosen_message = "<span class='boldwarning'>You are now attacking with a box of magic squares.</span>"
chosen_attack_num = MAGIC_BOX
/datum/action/innate/elite_attack/pandora_teleport
name = "Line Teleport"
button_overlay_icon_state = "pandora_teleport"
button_icon_state = "pandora_teleport"
chosen_message = "<span class='boldwarning'>You will now teleport to your target.</span>"
chosen_attack_num = PANDORA_TELEPORT
/datum/action/innate/elite_attack/aoe_squares
name = "AOE Blast"
button_overlay_icon_state = "aoe_squares"
button_icon_state = "aoe_squares"
chosen_message = "<span class='boldwarning'>Your attacks will spawn an AOE blast at your target location.</span>"
chosen_attack_num = AOE_SQUARES
@@ -2,8 +2,8 @@
/datum/action/innate/terrorspider/web
name = "Web"
button_overlay_icon = 'icons/effects/effects.dmi'
button_overlay_icon_state = "stickyweb1"
button_icon = 'icons/effects/effects.dmi'
button_icon_state = "stickyweb1"
/datum/action/innate/terrorspider/web/Activate()
var/mob/living/simple_animal/hostile/poison/terror_spider/user = owner
@@ -11,8 +11,8 @@
/datum/action/innate/terrorspider/wrap
name = "Wrap"
button_overlay_icon = 'icons/effects/effects.dmi'
button_overlay_icon_state = "cocoon_large1"
button_icon = 'icons/effects/effects.dmi'
button_icon_state = "cocoon_large1"
/datum/action/innate/terrorspider/wrap/Activate()
var/mob/living/simple_animal/hostile/poison/terror_spider/user = owner
@@ -23,8 +23,8 @@
/datum/action/innate/terrorspider/greeneggs
name = "Lay Green Eggs"
button_overlay_icon = 'icons/effects/effects.dmi'
button_overlay_icon_state = "eggs"
button_icon = 'icons/effects/effects.dmi'
button_icon_state = "eggs"
/datum/action/innate/terrorspider/greeneggs/Activate()
var/mob/living/simple_animal/hostile/poison/terror_spider/green/user = owner
@@ -35,8 +35,8 @@
/datum/action/innate/terrorspider/ventsmash
name = "Smash Welded Vent"
button_overlay_icon = 'icons/atmos/vent_pump.dmi'
button_overlay_icon_state = "map_vent"
button_icon = 'icons/atmos/vent_pump.dmi'
button_icon_state = "map_vent"
/datum/action/innate/terrorspider/ventsmash/Activate()
var/mob/living/simple_animal/hostile/poison/terror_spider/user = owner
@@ -44,8 +44,8 @@
/datum/action/innate/terrorspider/remoteview
name = "Remote View"
button_overlay_icon = 'icons/obj/eyes.dmi'
button_overlay_icon_state = "heye"
button_icon = 'icons/obj/eyes.dmi'
button_icon_state = "heye"
/datum/action/innate/terrorspider/remoteview/Activate()
var/mob/living/simple_animal/hostile/poison/terror_spider/user = owner
@@ -56,7 +56,7 @@
/datum/action/innate/terrorspider/mother/royaljelly
name = "Lay Royal Jelly"
button_overlay_icon_state = "spiderjelly"
button_icon_state = "spiderjelly"
/datum/action/innate/terrorspider/mother/royaljelly/Activate()
var/mob/living/simple_animal/hostile/poison/terror_spider/mother/user = owner
@@ -64,8 +64,8 @@
/datum/action/innate/terrorspider/mother/gatherspiderlings
name = "Gather Spiderlings"
button_overlay_icon = 'icons/effects/effects.dmi'
button_overlay_icon_state = "spiderling"
button_icon = 'icons/effects/effects.dmi'
button_icon_state = "spiderling"
/datum/action/innate/terrorspider/mother/gatherspiderlings/Activate()
var/mob/living/simple_animal/hostile/poison/terror_spider/mother/user = owner
@@ -73,8 +73,8 @@
/datum/action/innate/terrorspider/mother/incubateeggs
name = "Incubate Eggs"
button_overlay_icon = 'icons/effects/effects.dmi'
button_overlay_icon_state = "eggs"
button_icon = 'icons/effects/effects.dmi'
button_icon_state = "eggs"
/datum/action/innate/terrorspider/mother/incubateeggs/Activate()
var/mob/living/simple_animal/hostile/poison/terror_spider/mother/user = owner
@@ -84,8 +84,8 @@
/datum/action/innate/terrorspider/queen/queennest
name = "Nest"
button_overlay_icon = 'icons/mob/terrorspider.dmi'
button_overlay_icon_state = "terror_queen"
button_icon = 'icons/mob/terrorspider.dmi'
button_icon_state = "terror_queen"
/datum/action/innate/terrorspider/queen/queennest/Activate()
var/mob/living/simple_animal/hostile/poison/terror_spider/queen/user = owner
@@ -93,7 +93,7 @@
/datum/action/innate/terrorspider/queen/queensense
name = "Hive Sense"
button_overlay_icon_state = "mindswap"
button_icon_state = "mindswap"
/datum/action/innate/terrorspider/queen/queensense/Activate()
var/mob/living/simple_animal/hostile/poison/terror_spider/queen/user = owner
@@ -101,8 +101,8 @@
/datum/action/innate/terrorspider/queen/queeneggs
name = "Lay Queen Eggs"
button_overlay_icon = 'icons/effects/effects.dmi'
button_overlay_icon_state = "eggs"
button_icon = 'icons/effects/effects.dmi'
button_icon_state = "eggs"
/datum/action/innate/terrorspider/queen/queeneggs/Activate()
var/mob/living/simple_animal/hostile/poison/terror_spider/queen/user = owner
@@ -113,8 +113,8 @@
/datum/action/innate/terrorspider/queen/empress/empresserase
name = "Empress Erase Brood"
button_overlay_icon = 'icons/effects/blood.dmi'
button_overlay_icon_state = "mgibbl1"
button_icon = 'icons/effects/blood.dmi'
button_icon_state = "mgibbl1"
/datum/action/innate/terrorspider/queen/empress/empresserase/Activate()
var/mob/living/simple_animal/hostile/poison/terror_spider/queen/empress/user = owner
@@ -122,8 +122,8 @@
/datum/action/innate/terrorspider/queen/empress/empresslings
name = "Empresss Spiderlings"
button_overlay_icon = 'icons/effects/effects.dmi'
button_overlay_icon_state = "spiderling"
button_icon = 'icons/effects/effects.dmi'
button_icon_state = "spiderling"
/datum/action/innate/terrorspider/queen/empress/empresslings/Activate()
var/mob/living/simple_animal/hostile/poison/terror_spider/queen/empress/user = owner
@@ -44,7 +44,7 @@
/mob/living/simple_animal/hostile/poison/terror_spider/queen/empress/NestMode()
..()
queeneggs_action.name = "Empress Eggs"
queeneggs_action.UpdateButtons()
queeneggs_action.build_all_button_icons()
/mob/living/simple_animal/hostile/poison/terror_spider/queen/empress/LayQueenEggs()
var/eggtype = tgui_input_list(src, "What kind of eggs?", "Egg laying", list(TS_DESC_QUEEN, TS_DESC_MOTHER, TS_DESC_PRINCE, TS_DESC_PRINCESS, TS_DESC_RED, TS_DESC_GRAY, TS_DESC_GREEN, TS_DESC_BLACK, TS_DESC_PURPLE, TS_DESC_WHITE, TS_DESC_BROWN))
@@ -7,8 +7,8 @@
/datum/action/innate/slime
check_flags = AB_CHECK_CONSCIOUS
button_overlay_icon = 'icons/mob/actions/actions_slime.dmi'
button_background_icon_state = "bg_alien"
button_icon = 'icons/mob/actions/actions_slime.dmi'
background_icon_state = "bg_alien"
var/needs_growth = NO_GROWTH_NEEDED
/datum/action/innate/slime/IsAvailable()
@@ -42,7 +42,7 @@
/datum/action/innate/slime/feed
name = "Feed"
button_overlay_icon_state = "slimeeat"
button_icon_state = "slimeeat"
/datum/action/innate/slime/feed/Activate()
@@ -144,7 +144,7 @@
/datum/action/innate/slime/evolve
name = "Evolve"
button_overlay_icon_state = "slimegrow"
button_icon_state = "slimegrow"
needs_growth = GROWTH_NEEDED
/datum/action/innate/slime/evolve/Activate()
@@ -205,7 +205,7 @@
/datum/action/innate/slime/reproduce
name = "Reproduce"
button_overlay_icon_state = "slimesplit"
button_icon_state = "slimesplit"
needs_growth = GROWTH_NEEDED
/datum/action/innate/slime/reproduce/Activate()
+1 -1
View File
@@ -82,7 +82,7 @@
if(mind)
for(var/S in mind.spell_list)
var/datum/spell/spell = S
spell.UpdateButtons()
spell.build_all_button_icons()
return TRUE