//OTHER DEBUFFS /datum/status_effect/cultghost //is a cult ghost and can't use manifest runes id = "cult_ghost" duration = -1 alert_type = null /datum/status_effect/cultghost/tick() if(owner.reagents) owner.reagents.del_reagent("holywater") //can't be deconverted /datum/status_effect/crusher_mark id = "crusher_mark" duration = 300 //if you leave for 30 seconds you lose the mark, deal with it status_type = STATUS_EFFECT_REPLACE alert_type = null var/mutable_appearance/marked_underlay var/obj/item/twohanded/kinetic_crusher/hammer_synced /datum/status_effect/crusher_mark/on_creation(mob/living/new_owner, obj/item/twohanded/kinetic_crusher/new_hammer_synced) . = ..() if(.) hammer_synced = new_hammer_synced /datum/status_effect/crusher_mark/on_apply() if(owner.mob_size >= MOB_SIZE_LARGE) marked_underlay = mutable_appearance('icons/effects/effects.dmi', "shield2") marked_underlay.pixel_x = -owner.pixel_x marked_underlay.pixel_y = -owner.pixel_y owner.underlays += marked_underlay return TRUE return FALSE /datum/status_effect/crusher_mark/Destroy() hammer_synced = null if(owner) owner.underlays -= marked_underlay QDEL_NULL(marked_underlay) return ..() /datum/status_effect/crusher_mark/be_replaced() owner.underlays -= marked_underlay //if this is being called, we should have an owner at this point. ..() /datum/status_effect/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 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/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))