diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index a74e309a40..122ba67402 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -175,9 +175,9 @@ GLOBAL_LIST_INIT(clawfootmob, typecacheof(list( /mob/living/simple_animal/chicken, /mob/living/simple_animal/hostile/bear, /mob/living/simple_animal/hostile/jungle/mega_arachnid, - /mob/living/simple_animal/hostile/mining_mobs/ice_whelp, - /mob/living/simple_animal/hostile/mining_mobs/wolf, - /mob/living/simple_animal/hostile/mining_mobs/polarbear + /mob/living/simple_animal/hostile/asteroid/ice_whelp, + /mob/living/simple_animal/hostile/asteroid/wolf, + /mob/living/simple_animal/hostile/asteroid/polarbear ))) GLOBAL_LIST_INIT(barefootmob, typecacheof(list( diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index 10d25959fe..4c200f110d 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -391,78 +391,28 @@ owner.underlays -= marked_underlay //if this is being called, we should have an owner at this point. ..() -/datum/status_effect/saw_bleed +/datum/status_effect/stacking/saw_bleed id = "saw_bleed" - duration = -1 //removed under specific conditions tick_interval = 6 - alert_type = null - var/mutable_appearance/bleed_overlay - var/mutable_appearance/bleed_underlay - var/bleed_amount = 3 - var/bleed_buildup = 3 - var/delay_before_decay = 5 + delay_before_decay = 5 + stack_threshold = 10 + max_stacks = 10 + overlay_file = 'icons/effects/bleed.dmi' + underlay_file = 'icons/effects/bleed.dmi' + overlay_state = "bleed" + underlay_state = "bleed" var/bleed_damage = 200 - var/needs_to_bleed = FALSE -/datum/status_effect/saw_bleed/Destroy() - if(owner) - owner.cut_overlay(bleed_overlay) - owner.underlays -= bleed_underlay - QDEL_NULL(bleed_overlay) - return ..() +/datum/status_effect/stacking/saw_bleed/fadeout_effect() + new /obj/effect/temp_visual/bleed(get_turf(owner)) -/datum/status_effect/saw_bleed/on_apply() - if(owner.stat == DEAD) - return FALSE - bleed_overlay = mutable_appearance('icons/effects/bleed.dmi', "bleed[bleed_amount]") - bleed_underlay = mutable_appearance('icons/effects/bleed.dmi', "bleed[bleed_amount]") - var/icon/I = icon(owner.icon, owner.icon_state, owner.dir) - var/icon_height = I.Height() - bleed_overlay.pixel_x = -owner.pixel_x - bleed_overlay.pixel_y = FLOOR(icon_height * 0.25, 1) - bleed_overlay.transform = matrix() * (icon_height/world.icon_size) //scale the bleed overlay's size based on the target's icon size - bleed_underlay.pixel_x = -owner.pixel_x - bleed_underlay.transform = matrix() * (icon_height/world.icon_size) * 3 - bleed_underlay.alpha = 40 - owner.add_overlay(bleed_overlay) - owner.underlays += bleed_underlay - return ..() - -/datum/status_effect/saw_bleed/tick() - if(owner.stat == DEAD) - qdel(src) - else - add_bleed(-1) - -/datum/status_effect/saw_bleed/proc/add_bleed(amount) - owner.cut_overlay(bleed_overlay) - owner.underlays -= bleed_underlay - bleed_amount += amount - if(bleed_amount) - if(bleed_amount >= 10) - needs_to_bleed = TRUE - qdel(src) - else - if(amount > 0) - tick_interval += delay_before_decay - bleed_overlay.icon_state = "bleed[bleed_amount]" - bleed_underlay.icon_state = "bleed[bleed_amount]" - owner.add_overlay(bleed_overlay) - owner.underlays += bleed_underlay - else - qdel(src) - -/datum/status_effect/saw_bleed/on_remove() - . = ..() - if(needs_to_bleed) - var/turf/T = get_turf(owner) - new /obj/effect/temp_visual/bleed/explode(T) - for(var/d in GLOB.alldirs) - new /obj/effect/temp_visual/dir_setting/bloodsplatter(T, d) - playsound(T, "desceration", 200, 1, -1) - owner.adjustBruteLoss(bleed_damage) - else - new /obj/effect/temp_visual/bleed(get_turf(owner)) +/datum/status_effect/stacking/saw_bleed/threshold_cross_effect() + owner.adjustBruteLoss(bleed_damage) + var/turf/T = get_turf(owner) + new /obj/effect/temp_visual/bleed/explode(T) + for(var/d in GLOB.alldirs) + new /obj/effect/temp_visual/dir_setting/bloodsplatter(T, d) + playsound(T, "desceration", 100, TRUE, -1) /datum/status_effect/stacking/saw_bleed/bloodletting id = "bloodletting" diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_whelp.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_whelp.dm index 3aa6be588c..c8d5cf4b73 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_whelp.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_whelp.dm @@ -33,7 +33,6 @@ deathsound = 'sound/magic/demon_dies.ogg' stat_attack = UNCONSCIOUS robust_searching = TRUE - footstep_type = FOOTSTEP_MOB_CLAW /// How far the whelps fire can go var/fire_range = 4 diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/polarbear.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/polarbear.dm index 03a168440b..0576d0ecfe 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/polarbear.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/polarbear.dm @@ -16,7 +16,7 @@ obj_damage = 40 melee_damage_lower = 25 melee_damage_upper = 25 - attack_text = "claws" + attacktext = "claws" attack_sound = 'sound/weapons/bladeslice.ogg' vision_range = 2 // don't aggro unless you basically antagonize it, though they will kill you worse than a goliath will aggro_vision_range = 9 @@ -29,7 +29,6 @@ crusher_loot = /obj/item/crusher_trophy/goliath_tentacle stat_attack = UNCONSCIOUS robust_searching = TRUE - footstep_type = FOOTSTEP_MOB_CLAW /// Message for when the polar bear starts to attack faster var/aggressive_message_said = FALSE diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/wolf.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/wolf.dm index 53378d28e6..9f17421691 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/wolf.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/wolf.dm @@ -31,7 +31,6 @@ crusher_loot = /obj/item/crusher_trophy/watcher_wing stat_attack = UNCONSCIOUS robust_searching = TRUE - footstep_type = FOOTSTEP_MOB_CLAW /// Message for when the wolf decides to start running away var/retreat_message_said = FALSE