diff --git a/monkestation/code/modules/antagonists/bloodling/bloodling_abilities.dm b/monkestation/code/modules/antagonists/bloodling/abilities/bloodling_abilities.dm similarity index 82% rename from monkestation/code/modules/antagonists/bloodling/bloodling_abilities.dm rename to monkestation/code/modules/antagonists/bloodling/abilities/bloodling_abilities.dm index d3c97886ac8c..0c21aed5800d 100644 --- a/monkestation/code/modules/antagonists/bloodling/bloodling_abilities.dm +++ b/monkestation/code/modules/antagonists/bloodling/abilities/bloodling_abilities.dm @@ -14,7 +14,8 @@ var/mob/living/basic/bloodling/our_mob = owner if(our_mob.biomass <= biomass_cost) return FALSE - return TRUE + // Hardcoded for the bloodling biomass system. So it will not function on non-bloodlings + return istype(owner, /mob/living/basic/bloodling) /datum/action/cooldown/mob_cooldown/bloodling/PreActivate(atom/target) var/mob/living/basic/bloodling/our_mob = owner @@ -28,6 +29,9 @@ if(QDELETED(src) || QDELETED(owner)) return TRUE + if(click_to_activate && our_mob.biomass < biomass_cost) + unset_click_ability(owner, refund_cooldown = FALSE) + our_mob.add_biomass(-biomass_cost) return TRUE @@ -49,12 +53,11 @@ var/mob/living/basic/bloodling/our_mob = owner if(our_mob.biomass <= biomass_cost) return FALSE - return TRUE + // Hardcoded for the bloodling biomass system. So it will not function on non-bloodlings + return istype(owner, /mob/living/basic/bloodling) /datum/action/cooldown/bloodling/PreActivate(atom/target) var/mob/living/basic/bloodling/our_mob = owner - // Parent calls Activate(), so if parent returns TRUE, - // it means the activation happened successfuly by this point . = ..() if(!.) return FALSE diff --git a/monkestation/code/modules/antagonists/bloodling/abilities/hide.dm b/monkestation/code/modules/antagonists/bloodling/abilities/hide.dm index ef81131c565c..7e91609c80f7 100644 --- a/monkestation/code/modules/antagonists/bloodling/abilities/hide.dm +++ b/monkestation/code/modules/antagonists/bloodling/abilities/hide.dm @@ -1,23 +1,7 @@ -/datum/action/cooldown/bloodling/hide +/datum/action/cooldown/sneak/bloodling name = "Hide" - desc = "Allows you to hide beneath tables and certain objects." - button_icon_state = "alien_hide" - /// The layer we are on while hiding - var/hide_layer = BULLET_HOLE_LAYER - -/datum/action/cooldown/bloodling/hide/Activate(atom/target) - if(owner.layer == hide_layer) - owner.layer = initial(owner.layer) - owner.visible_message( - span_notice("[owner] slowly peeks up from the ground..."), - span_changeling("You stop hiding."), - ) - - else - owner.layer = hide_layer - owner.visible_message( - span_name("[owner] scurries to the ground!"), - span_changeling("You are now hiding."), - ) - - return TRUE + panel = "alien" + desc = "Blend into the shadows to stalk your prey." + button_icon_state = "alien_sneak" + background_icon_state = "bg_alien" + overlay_icon_state = "bg_alien_border" diff --git a/monkestation/code/modules/antagonists/bloodling/bloodling_structures.dm b/monkestation/code/modules/antagonists/bloodling/bloodling_structures.dm index 9eab31601e2e..2549042fb797 100644 --- a/monkestation/code/modules/antagonists/bloodling/bloodling_structures.dm +++ b/monkestation/code/modules/antagonists/bloodling/bloodling_structures.dm @@ -52,4 +52,6 @@ return COOLDOWN_START(src, rattime, rand(minimum_rattime, maximum_rattime)) - new /mob/living/basic/mouse(src.loc) + var/turf/our_turf = src.loc + new /mob/living/basic/mouse(our_turf) + our_turf.add_liquid_list(list(/datum/reagent/toxin/mutagen = 10), TRUE) diff --git a/monkestation/code/modules/antagonists/bloodling/mobs/bloodling_mob.dm b/monkestation/code/modules/antagonists/bloodling/mobs/bloodling_mob.dm index 2c0b98fb22ad..1ac1255ee708 100644 --- a/monkestation/code/modules/antagonists/bloodling/mobs/bloodling_mob.dm +++ b/monkestation/code/modules/antagonists/bloodling/mobs/bloodling_mob.dm @@ -176,12 +176,17 @@ /mob/living/basic/bloodling/proper/proc/on_damaged(datum/source, damage, damagetype) SIGNAL_HANDLER + var/damage_amount = damage // Stamina damage is fucky, so we ignore it if(damagetype == STAMINA) return + if(damagetype == BURN) + // Bloodlings take additional burning damage + damage_amount *= 1.5 + // Bloodlings take damage through their biomass, not regular damage - add_biomass(-damage) + add_biomass(-damage_amount) /mob/living/basic/bloodling/proper/Destroy() UnregisterSignal(src, COMSIG_LIVING_LIFE) @@ -193,7 +198,7 @@ evolution_level = 1 initial_powers = list( /datum/action/cooldown/mob_cooldown/bloodling/absorb, - /datum/action/cooldown/bloodling/hide, + /datum/action/cooldown/sneak/bloodling, ) speed = 0.5 @@ -207,7 +212,7 @@ evolution_level = 2 initial_powers = list( /datum/action/cooldown/mob_cooldown/bloodling/absorb, - /datum/action/cooldown/bloodling/hide, + /datum/action/cooldown/sneak/bloodling, /datum/action/cooldown/mob_cooldown/bloodling/infest, /datum/action/cooldown/bloodling/build, ) diff --git a/tgstation.dme b/tgstation.dme index 43b6afa086ac..03075de4c0cd 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -5734,11 +5734,11 @@ #include "monkestation\code\modules\aesthetics\walls\iron.dm" #include "monkestation\code\modules\antagonists\_common\antag_datum.dm" #include "monkestation\code\modules\antagonists\bloodling\bloodling.dm" -#include "monkestation\code\modules\antagonists\bloodling\bloodling_abilities.dm" #include "monkestation\code\modules\antagonists\bloodling\bloodling_structures.dm" #include "monkestation\code\modules\antagonists\bloodling\infested_thrall.dm" #include "monkestation\code\modules\antagonists\bloodling\objectives.dm" #include "monkestation\code\modules\antagonists\bloodling\abilities\absorb_biomass.dm" +#include "monkestation\code\modules\antagonists\bloodling\abilities\bloodling_abilities.dm" #include "monkestation\code\modules\antagonists\bloodling\abilities\build.dm" #include "monkestation\code\modules\antagonists\bloodling\abilities\devour.dm" #include "monkestation\code\modules\antagonists\bloodling\abilities\dissonant_shriek.dm"