mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-19 12:05:59 +01:00
914b0272d4
* Fixes Mob Action Cooldowns (Ash Drake) (#81211) ## About The Pull Request Fixes #80236 Ash drake abilities were rewritten to not be slept and instead use async which messed up the cooldown timing Also rewrites several cooldowns to not use a 360 second cooldown hack ## Why It's Good For The Game Abilities being used at the proper time is very cool ## Changelog 🆑 fix: Ash drake's fire breath attack has proper cooldowns again /🆑 * Fixes Mob Action Cooldowns (Ash Drake) --------- Co-authored-by: Whoneedspacee <yougotreallyowned@gmail.com>
51 lines
2.0 KiB
Plaintext
51 lines
2.0 KiB
Plaintext
/// An ability that allows the viper spider to get in an defensive mode at the cost of speed.
|
|
/datum/action/cooldown/mob_cooldown/defensive_mode
|
|
name = "Change Mode"
|
|
button_icon = 'icons/mob/actions/actions_animal.dmi'
|
|
button_icon_state = "defensive_mode"
|
|
desc = "Activates a defensive mode to reduce damage but will make you slower."
|
|
cooldown_time = 5 SECONDS
|
|
click_to_activate = FALSE
|
|
/// If the defensive mode is activated or not.
|
|
var/defense_active = FALSE
|
|
/// Movement speed modifier used.
|
|
var/datum/movespeed_modifier/modifier_type = /datum/movespeed_modifier/viper_defensive
|
|
|
|
/datum/action/cooldown/mob_cooldown/defensive_mode/Remove(mob/living/remove_from)
|
|
var/mob/living/basic/owner_mob = owner
|
|
if(defense_active && istype(owner_mob))
|
|
offence(owner_mob)
|
|
|
|
return ..()
|
|
|
|
/datum/action/cooldown/mob_cooldown/defensive_mode/Activate(atom/target_atom)
|
|
disable_cooldown_actions()
|
|
activate_defence(owner)
|
|
StartCooldown()
|
|
enable_cooldown_actions()
|
|
return TRUE
|
|
|
|
/datum/action/cooldown/mob_cooldown/defensive_mode/proc/activate_defence(mob/living/basic/owner_mob)
|
|
if(!istype(owner_mob))
|
|
return
|
|
if(defense_active)
|
|
offence(owner_mob)
|
|
return
|
|
defence(owner_mob)
|
|
|
|
/datum/action/cooldown/mob_cooldown/defensive_mode/proc/offence(mob/living/basic/owner_mob)
|
|
owner_mob.damage_coeff = list(BRUTE = 1, BURN = 1.25, TOX = 1, STAMINA = 1, OXY = 1)
|
|
owner_mob.icon_state = initial(owner_mob.icon_state)
|
|
owner_mob.icon_living = initial(owner_mob.icon_living)
|
|
owner_mob.icon_dead = initial(owner_mob.icon_dead)
|
|
owner_mob.remove_movespeed_modifier(modifier_type)
|
|
defense_active = FALSE
|
|
|
|
/datum/action/cooldown/mob_cooldown/defensive_mode/proc/defence(mob/living/basic/owner_mob)
|
|
owner_mob.damage_coeff = list(BRUTE = 0.4, BURN = 0.5, TOX = 1, STAMINA = 1, OXY = 1)
|
|
owner_mob.icon_dead = "[owner_mob.icon_state]_d_dead"
|
|
owner_mob.icon_state = "[owner_mob.icon_state]_d"
|
|
owner_mob.icon_living = "[owner_mob.icon_living]_d"
|
|
owner_mob.add_movespeed_modifier(modifier_type)
|
|
defense_active = TRUE
|