mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-21 13:05:36 +01:00
Most actions cannot be used while incapacitated (#73513)
## About The Pull Request Fixes #39775 The `TRAIT_INCAPACITATED` trait is intended to block you from acting but does not inherently block actions. Actions only check for "conscious", "has available hands", "immobile", or "lying down". Most actions still _can't_ be used while incapacitated. This is because most actions are spells, most spells have invocations, and you can't talk while you are incapacitated. This is silly. I have resolved this by adding a new flag which blocks actions while incapacitated. This is somewhat redundant with "conscious" because most sources of that also make you incapacitated but not _always_, you might want the specificity. I have tried to be discerning about where this flag is applied, it is not in all cases (for instance you can still swallow implanted pills while incapacitated and such), but it's not only possible but I can't really avoid implementing this without it being a balance change in _some_ cases, Actions this effects are things such as: Xenomorph Tail Sweep, Lesser Magic Missile (cult constucts), Heretic Shadow Cloak, the Smoke spell in general, Conjuring (but not firing) Infinite Guns, Mime spells Times when these actions will no longer be available but were previously are such times as when the mob is: Stamina Crit, Stunned, Paralysis, and Time Stopped. ## Why It's Good For The Game The incapacitated trait is applied by effects which should block acting but still permits several actions which logically would be prevented. This fortunately hasn't come up too often due to the high ratio of actions with invocations, but it feels bad to stun someone and then have them still able to perform an action they logically wouldn't be able to take while stunned. This is especially egregious in the case of Time Stop (the only way to stun a lot of the mobs effected by this) but that's a rare pick on a rare antagonist and would also rarely be used on these mobs, so a bit of an edge case. ## Changelog 🆑 fix: Many spell-like abilities which could be stunned, paralysed, or frozen in time now cannot be. /🆑
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
overlay_icon_state = "bg_demon_border"
|
||||
|
||||
buttontooltipstyle = "cult"
|
||||
check_flags = AB_CHECK_HANDS_BLOCKED|AB_CHECK_IMMOBILE|AB_CHECK_CONSCIOUS
|
||||
check_flags = AB_CHECK_INCAPACITATED|AB_CHECK_HANDS_BLOCKED|AB_CHECK_IMMOBILE|AB_CHECK_CONSCIOUS
|
||||
ranged_mousepointer = 'icons/effects/mouse_pointers/cult_target.dmi'
|
||||
|
||||
/datum/action/innate/cult/IsAvailable(feedback = FALSE)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
overlay_icon_state = "bg_heretic_border"
|
||||
button_icon_state = "shield"
|
||||
ranged_mousepointer = 'icons/effects/mouse_pointers/throw_target.dmi'
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_HANDS_BLOCKED
|
||||
check_flags = AB_CHECK_INCAPACITATED|AB_CHECK_CONSCIOUS|AB_CHECK_HANDS_BLOCKED
|
||||
|
||||
school = SCHOOL_FORBIDDEN
|
||||
cooldown_time = 5 SECONDS
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
name = "Grand Ritual"
|
||||
desc = "Provides direction to a nexus of power, then draws a rune in that location for completing the Grand Ritual. \
|
||||
The ritual process will take longer each time it is completed."
|
||||
check_flags = AB_CHECK_CONSCIOUS | AB_CHECK_HANDS_BLOCKED
|
||||
check_flags = AB_CHECK_CONSCIOUS | AB_CHECK_INCAPACITATED | AB_CHECK_HANDS_BLOCKED
|
||||
background_icon_state = "bg_spell"
|
||||
button_icon = 'icons/mob/actions/actions_cult.dmi'
|
||||
button_icon_state = "draw"
|
||||
|
||||
@@ -137,7 +137,7 @@
|
||||
|
||||
/datum/action/item_action/chameleon/change
|
||||
name = "Chameleon Change"
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_HANDS_BLOCKED
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_INCAPACITATED|AB_CHECK_HANDS_BLOCKED
|
||||
var/list/chameleon_blacklist = list() //This is a typecache
|
||||
var/list/chameleon_list = list()
|
||||
var/chameleon_type = null
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
button_icon_state = "lay_eggs"
|
||||
background_icon_state = "bg_alien"
|
||||
overlay_icon_state = "bg_alien_border"
|
||||
check_flags = AB_CHECK_CONSCIOUS
|
||||
check_flags = AB_CHECK_CONSCIOUS | AB_CHECK_INCAPACITATED
|
||||
///How long it takes for a broodmother to lay eggs.
|
||||
var/egg_lay_time = 12 SECONDS
|
||||
///The type of egg we create
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
button_icon_state = "lay_web"
|
||||
background_icon_state = "bg_alien"
|
||||
overlay_icon_state = "bg_alien_border"
|
||||
check_flags = AB_CHECK_CONSCIOUS
|
||||
check_flags = AB_CHECK_CONSCIOUS | AB_CHECK_INCAPACITATED
|
||||
cooldown_time = 0 SECONDS
|
||||
/// How long it takes to lay a web
|
||||
var/webbing_time = 4 SECONDS
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
overlay_icon_state = "bg_alien_border"
|
||||
button_icon = 'icons/mob/actions/actions_animal.dmi'
|
||||
button_icon_state = "wrap_0"
|
||||
check_flags = AB_CHECK_CONSCIOUS
|
||||
check_flags = AB_CHECK_CONSCIOUS | AB_CHECK_INCAPACITATED
|
||||
click_to_activate = TRUE
|
||||
ranged_mousepointer = 'icons/effects/mouse_pointers/wrap_target.dmi'
|
||||
/// The time it takes to wrap something.
|
||||
|
||||
@@ -13,7 +13,7 @@ Doesn't work on other aliens/AI.*/
|
||||
overlay_icon_state = "bg_alien_border"
|
||||
button_icon = 'icons/mob/actions/actions_xeno.dmi'
|
||||
button_icon_state = "spell_default"
|
||||
check_flags = AB_CHECK_IMMOBILE|AB_CHECK_CONSCIOUS
|
||||
check_flags = AB_CHECK_IMMOBILE | AB_CHECK_CONSCIOUS | AB_CHECK_INCAPACITATED
|
||||
melee_cooldown_time = 0 SECONDS
|
||||
|
||||
/// How much plasma this action uses.
|
||||
|
||||
@@ -246,7 +246,7 @@
|
||||
|
||||
/datum/action/cooldown/vomit
|
||||
name = "Vomit"
|
||||
check_flags = AB_CHECK_CONSCIOUS
|
||||
check_flags = AB_CHECK_CONSCIOUS | AB_CHECK_INCAPACITATED
|
||||
button_icon_state = "vomit"
|
||||
button_icon = 'icons/mob/simple/animal.dmi'
|
||||
cooldown_time = 250
|
||||
|
||||
@@ -195,7 +195,7 @@
|
||||
overlay_icon_state = "bg_hive_border"
|
||||
button_icon = 'icons/mob/actions/actions_slime.dmi'
|
||||
button_icon_state = "consume"
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_IMMOBILE
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_IMMOBILE|AB_CHECK_INCAPACITATED
|
||||
///The mob thats being consumed by this creature
|
||||
var/mob/living/vored_mob
|
||||
|
||||
@@ -303,7 +303,7 @@
|
||||
overlay_icon_state = "bg_hive_border"
|
||||
button_icon = 'icons/mob/actions/actions_slime.dmi'
|
||||
button_icon_state = "globules"
|
||||
check_flags = AB_CHECK_CONSCIOUS
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_INCAPACITATED
|
||||
cooldown_time = 5 SECONDS
|
||||
click_to_activate = TRUE
|
||||
|
||||
@@ -419,7 +419,7 @@
|
||||
overlay_icon_state = "bg_hive_border"
|
||||
button_icon = 'icons/mob/actions/actions_slime.dmi'
|
||||
button_icon_state = "gel_cocoon"
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_IMMOBILE
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_IMMOBILE|AB_CHECK_INCAPACITATED
|
||||
cooldown_time = 10 SECONDS
|
||||
|
||||
/datum/action/cooldown/gel_cocoon/Activate(atom/target)
|
||||
|
||||
@@ -203,7 +203,7 @@
|
||||
/datum/action/cooldown/domain
|
||||
name = "Rat King's Domain"
|
||||
desc = "Corrupts this area to be more suitable for your rat army."
|
||||
check_flags = AB_CHECK_CONSCIOUS
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_INCAPACITATED
|
||||
cooldown_time = 6 SECONDS
|
||||
melee_cooldown_time = 0 SECONDS
|
||||
button_icon = 'icons/mob/actions/actions_animal.dmi'
|
||||
@@ -237,7 +237,7 @@
|
||||
/datum/action/cooldown/riot
|
||||
name = "Raise Army"
|
||||
desc = "Raise an army out of the hordes of mice and pests crawling around the maintenance shafts."
|
||||
check_flags = AB_CHECK_CONSCIOUS
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_INCAPACITATED
|
||||
button_icon = 'icons/mob/actions/actions_animal.dmi'
|
||||
button_icon_state = "riot"
|
||||
background_icon_state = "bg_clock"
|
||||
|
||||
@@ -480,7 +480,7 @@
|
||||
overlay_icon_state = "bg_changeling_border"
|
||||
button_icon = 'icons/mob/actions/actions_animal.dmi'
|
||||
button_icon_state = "regurgitate"
|
||||
check_flags = AB_CHECK_CONSCIOUS
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_INCAPACITATED
|
||||
melee_cooldown_time = 0 SECONDS
|
||||
click_to_activate = TRUE
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
overlay_icon_state = "bg_revenant_border"
|
||||
button_icon = 'icons/mob/actions/actions_animal.dmi'
|
||||
button_icon_state = "tentacle_slap"
|
||||
check_flags = AB_CHECK_CONSCIOUS
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_INCAPACITATED
|
||||
cooldown_time = 12 SECONDS
|
||||
melee_cooldown_time = 0 SECONDS
|
||||
click_to_activate = TRUE
|
||||
|
||||
@@ -425,7 +425,7 @@
|
||||
auto.Grant(buckled_mob, src)
|
||||
|
||||
/datum/action/innate/proto_emitter
|
||||
check_flags = AB_CHECK_HANDS_BLOCKED | AB_CHECK_IMMOBILE | AB_CHECK_CONSCIOUS
|
||||
check_flags = AB_CHECK_HANDS_BLOCKED | AB_CHECK_IMMOBILE | AB_CHECK_CONSCIOUS | AB_CHECK_INCAPACITATED
|
||||
///Stores the emitter the user is currently buckled on
|
||||
var/obj/machinery/power/emitter/prototype/proto_emitter
|
||||
///Stores the mob instance that is buckled to the emitter
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
button_icon_state = "spell_default"
|
||||
overlay_icon_state = "bg_spell_border"
|
||||
active_overlay_icon_state = "bg_spell_border_active_red"
|
||||
check_flags = AB_CHECK_CONSCIOUS
|
||||
check_flags = AB_CHECK_CONSCIOUS | AB_CHECK_INCAPACITATED
|
||||
panel = "Spells"
|
||||
melee_cooldown_time = 0 SECONDS
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
overlay_icon_state = "bg_mime_border"
|
||||
button_icon = 'icons/mob/actions/actions_mime.dmi'
|
||||
button_icon_state = "invisible_chair"
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_HANDS_BLOCKED
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_HANDS_BLOCKED|AB_CHECK_INCAPACITATED
|
||||
panel = "Mime"
|
||||
sound = null
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
overlay_icon_state = "bg_mime_border"
|
||||
button_icon = 'icons/mob/actions/actions_mime.dmi'
|
||||
button_icon_state = "invisible_wall"
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_HANDS_BLOCKED
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_HANDS_BLOCKED|AB_CHECK_INCAPACITATED
|
||||
panel = "Mime"
|
||||
sound = null
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
overlay_icon_state = "bg_mime_border"
|
||||
button_icon = 'icons/mob/actions/actions_mime.dmi'
|
||||
button_icon_state = "invisible_box"
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_HANDS_BLOCKED
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_HANDS_BLOCKED|AB_CHECK_INCAPACITATED
|
||||
panel = "Mime"
|
||||
sound = null
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
overlay_icon_state = "bg_mime_border"
|
||||
button_icon = 'icons/mob/actions/actions_mime.dmi'
|
||||
button_icon_state = "finger_guns0"
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_HANDS_BLOCKED
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_HANDS_BLOCKED|AB_CHECK_INCAPACITATED
|
||||
panel = "Mime"
|
||||
sound = null
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
overlay_icon_state = "bg_mime_border"
|
||||
button_icon = 'icons/mob/actions/actions_mime.dmi'
|
||||
button_icon_state = "invisible_blockade"
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_HANDS_BLOCKED
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_HANDS_BLOCKED|AB_CHECK_INCAPACITATED
|
||||
panel = "Mime"
|
||||
sound = null
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
* (generally) inadvisable unless you know what you're doing
|
||||
*/
|
||||
/datum/action/cooldown/spell/touch
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_HANDS_BLOCKED
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_HANDS_BLOCKED|AB_CHECK_INCAPACITATED
|
||||
sound = 'sound/items/welder.ogg'
|
||||
invocation = "High Five!"
|
||||
invocation_type = INVOCATION_SHOUT
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
///hud action for starting and stopping flight
|
||||
/datum/action/innate/flight
|
||||
name = "Toggle Flight"
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_IMMOBILE
|
||||
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_IMMOBILE|AB_CHECK_INCAPACITATED
|
||||
button_icon = 'icons/mob/actions/actions_items.dmi'
|
||||
button_icon_state = "flight"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user