mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2025-12-31 12:41:46 +00:00
* Handlers converted, now to fix 3532 compile errors * 3532 compile fixes later, got runtimes on startup * Well the server loads now atleast * Take 2 * Oops
116 lines
3.5 KiB
Plaintext
116 lines
3.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/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))
|