mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2025-12-27 18:51:53 +00:00
82 lines
2.5 KiB
Plaintext
82 lines
2.5 KiB
Plaintext
//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/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 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)) |