mirror of
https://github.com/fulpstation/fulpstation.git
synced 2025-12-10 01:57:01 +00:00
* Kills obj/item/projectile in favour of obj/projectile * Resolves conflicts properly * fixes that one map * it lives
465 lines
11 KiB
Plaintext
465 lines
11 KiB
Plaintext
//unsorted miscellaneous temporary visuals
|
|
/obj/effect/temp_visual/dir_setting/bloodsplatter
|
|
icon = 'icons/effects/blood.dmi'
|
|
duration = 5
|
|
randomdir = FALSE
|
|
layer = BELOW_MOB_LAYER
|
|
var/splatter_type = "splatter"
|
|
|
|
/obj/effect/temp_visual/dir_setting/bloodsplatter/Initialize(mapload, set_dir)
|
|
if(set_dir in GLOB.diagonals)
|
|
icon_state = "[splatter_type][pick(1, 2, 6)]"
|
|
else
|
|
icon_state = "[splatter_type][pick(3, 4, 5)]"
|
|
. = ..()
|
|
var/target_pixel_x = 0
|
|
var/target_pixel_y = 0
|
|
switch(set_dir)
|
|
if(NORTH)
|
|
target_pixel_y = 16
|
|
if(SOUTH)
|
|
target_pixel_y = -16
|
|
layer = ABOVE_MOB_LAYER
|
|
if(EAST)
|
|
target_pixel_x = 16
|
|
if(WEST)
|
|
target_pixel_x = -16
|
|
if(NORTHEAST)
|
|
target_pixel_x = 16
|
|
target_pixel_y = 16
|
|
if(NORTHWEST)
|
|
target_pixel_x = -16
|
|
target_pixel_y = 16
|
|
if(SOUTHEAST)
|
|
target_pixel_x = 16
|
|
target_pixel_y = -16
|
|
layer = ABOVE_MOB_LAYER
|
|
if(SOUTHWEST)
|
|
target_pixel_x = -16
|
|
target_pixel_y = -16
|
|
layer = ABOVE_MOB_LAYER
|
|
animate(src, pixel_x = target_pixel_x, pixel_y = target_pixel_y, alpha = 0, time = duration)
|
|
|
|
/obj/effect/temp_visual/dir_setting/bloodsplatter/xenosplatter
|
|
splatter_type = "xsplatter"
|
|
|
|
/obj/effect/temp_visual/dir_setting/speedbike_trail
|
|
name = "speedbike trails"
|
|
icon_state = "ion_fade"
|
|
layer = BELOW_MOB_LAYER
|
|
duration = 10
|
|
randomdir = 0
|
|
|
|
/obj/effect/temp_visual/dir_setting/firing_effect
|
|
icon = 'icons/effects/effects.dmi'
|
|
icon_state = "firing_effect"
|
|
duration = 2
|
|
|
|
/obj/effect/temp_visual/dir_setting/firing_effect/setDir(newdir)
|
|
switch(newdir)
|
|
if(NORTH)
|
|
layer = BELOW_MOB_LAYER
|
|
pixel_x = rand(-3,3)
|
|
pixel_y = rand(4,6)
|
|
if(SOUTH)
|
|
pixel_x = rand(-3,3)
|
|
pixel_y = rand(-1,1)
|
|
else
|
|
pixel_x = rand(-1,1)
|
|
pixel_y = rand(-1,1)
|
|
..()
|
|
|
|
/obj/effect/temp_visual/dir_setting/firing_effect/energy
|
|
icon_state = "firing_effect_energy"
|
|
duration = 3
|
|
|
|
/obj/effect/temp_visual/dir_setting/firing_effect/magic
|
|
icon_state = "shieldsparkles"
|
|
duration = 3
|
|
|
|
/obj/effect/temp_visual/dir_setting/ninja
|
|
name = "ninja shadow"
|
|
icon = 'icons/mob/mob.dmi'
|
|
icon_state = "uncloak"
|
|
duration = 9
|
|
|
|
/obj/effect/temp_visual/dir_setting/ninja/cloak
|
|
icon_state = "cloak"
|
|
|
|
/obj/effect/temp_visual/dir_setting/ninja/shadow
|
|
icon_state = "shadow"
|
|
|
|
/obj/effect/temp_visual/dir_setting/ninja/phase
|
|
name = "ninja energy"
|
|
icon_state = "phasein"
|
|
|
|
/obj/effect/temp_visual/dir_setting/ninja/phase/out
|
|
icon_state = "phaseout"
|
|
|
|
/obj/effect/temp_visual/dir_setting/wraith
|
|
name = "blood"
|
|
icon = 'icons/mob/mob.dmi'
|
|
icon_state = "phase_shift2"
|
|
duration = 12
|
|
|
|
/obj/effect/temp_visual/dir_setting/wraith/out
|
|
icon_state = "phase_shift"
|
|
|
|
/obj/effect/temp_visual/dir_setting/tailsweep
|
|
icon_state = "tailsweep"
|
|
duration = 4
|
|
|
|
/obj/effect/temp_visual/dir_setting/curse
|
|
icon_state = "curse"
|
|
duration = 32
|
|
var/fades = TRUE
|
|
|
|
/obj/effect/temp_visual/dir_setting/curse/Initialize(mapload, set_dir)
|
|
. = ..()
|
|
if(fades)
|
|
animate(src, alpha = 0, time = 32)
|
|
|
|
/obj/effect/temp_visual/dir_setting/curse/blob
|
|
icon_state = "curseblob"
|
|
|
|
/obj/effect/temp_visual/dir_setting/curse/grasp_portal
|
|
icon = 'icons/effects/64x64.dmi'
|
|
layer = LARGE_MOB_LAYER
|
|
pixel_y = -16
|
|
pixel_x = -16
|
|
duration = 32
|
|
fades = FALSE
|
|
|
|
/obj/effect/temp_visual/dir_setting/curse/grasp_portal/fading
|
|
duration = 32
|
|
fades = TRUE
|
|
|
|
/obj/effect/temp_visual/dir_setting/curse/hand
|
|
icon_state = "cursehand"
|
|
|
|
/obj/effect/temp_visual/dir_setting/curse/hand/Initialize(mapload, set_dir, handedness)
|
|
. = ..()
|
|
update_icon()
|
|
|
|
/obj/effect/temp_visual/bsa_splash
|
|
name = "\improper Bluespace energy wave"
|
|
desc = "A massive, rippling wave of bluepace energy, all rapidly exhausting itself the moment it leaves the concentrated beam of light."
|
|
icon = 'icons/effects/beam_splash.dmi'
|
|
icon_state = "beam_splash_l"
|
|
layer = ABOVE_ALL_MOB_LAYER
|
|
pixel_y = -16
|
|
duration = 50
|
|
|
|
/obj/effect/temp_visual/bsa_splash/Initialize(mapload, dir)
|
|
. = ..()
|
|
switch(dir)
|
|
if(WEST)
|
|
icon_state = "beam_splash_w"
|
|
if(EAST)
|
|
icon_state = "beam_splash_e"
|
|
|
|
/obj/projectile/curse_hand/update_icon()
|
|
icon_state = "[icon_state][handedness]"
|
|
|
|
/obj/effect/temp_visual/wizard
|
|
name = "water"
|
|
icon = 'icons/mob/mob.dmi'
|
|
icon_state = "reappear"
|
|
duration = 5
|
|
|
|
/obj/effect/temp_visual/wizard/out
|
|
icon_state = "liquify"
|
|
duration = 12
|
|
|
|
/obj/effect/temp_visual/monkeyify
|
|
icon = 'icons/mob/mob.dmi'
|
|
icon_state = "h2monkey"
|
|
duration = 22
|
|
|
|
/obj/effect/temp_visual/monkeyify/humanify
|
|
icon_state = "monkey2h"
|
|
|
|
/obj/effect/temp_visual/borgflash
|
|
icon = 'icons/mob/mob.dmi'
|
|
icon_state = "blspell"
|
|
duration = 5
|
|
|
|
/obj/effect/temp_visual/guardian
|
|
randomdir = 0
|
|
|
|
/obj/effect/temp_visual/guardian/phase
|
|
duration = 5
|
|
icon_state = "phasein"
|
|
|
|
/obj/effect/temp_visual/guardian/phase/out
|
|
icon_state = "phaseout"
|
|
|
|
/obj/effect/temp_visual/decoy
|
|
desc = "It's a decoy!"
|
|
duration = 15
|
|
|
|
/obj/effect/temp_visual/decoy/Initialize(mapload, atom/mimiced_atom)
|
|
. = ..()
|
|
alpha = initial(alpha)
|
|
if(mimiced_atom)
|
|
name = mimiced_atom.name
|
|
appearance = mimiced_atom.appearance
|
|
setDir(mimiced_atom.dir)
|
|
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
|
|
|
/obj/effect/temp_visual/decoy/fading/Initialize(mapload, atom/mimiced_atom)
|
|
. = ..()
|
|
animate(src, alpha = 0, time = duration)
|
|
|
|
/obj/effect/temp_visual/decoy/fading/threesecond
|
|
duration = 40
|
|
|
|
/obj/effect/temp_visual/decoy/fading/fivesecond
|
|
duration = 50
|
|
|
|
/obj/effect/temp_visual/decoy/fading/halfsecond
|
|
duration = 5
|
|
|
|
/obj/effect/temp_visual/small_smoke
|
|
icon_state = "smoke"
|
|
duration = 50
|
|
|
|
/obj/effect/temp_visual/small_smoke/halfsecond
|
|
duration = 5
|
|
|
|
/obj/effect/temp_visual/fire
|
|
icon = 'icons/effects/fire.dmi'
|
|
icon_state = "3"
|
|
light_range = LIGHT_RANGE_FIRE
|
|
light_color = LIGHT_COLOR_FIRE
|
|
duration = 10
|
|
|
|
/obj/effect/temp_visual/revenant
|
|
name = "spooky lights"
|
|
icon_state = "purplesparkles"
|
|
|
|
/obj/effect/temp_visual/revenant/cracks
|
|
name = "glowing cracks"
|
|
icon_state = "purplecrack"
|
|
duration = 6
|
|
|
|
/obj/effect/temp_visual/gravpush
|
|
name = "gravity wave"
|
|
icon_state = "shieldsparkles"
|
|
duration = 5
|
|
|
|
/obj/effect/temp_visual/telekinesis
|
|
name = "telekinetic force"
|
|
icon_state = "empdisable"
|
|
duration = 5
|
|
|
|
/obj/effect/temp_visual/emp
|
|
name = "emp sparks"
|
|
icon_state = "empdisable"
|
|
|
|
/obj/effect/temp_visual/emp/pulse
|
|
name = "emp pulse"
|
|
icon_state = "emppulse"
|
|
duration = 8
|
|
randomdir = 0
|
|
|
|
/obj/effect/temp_visual/bluespace_fissure
|
|
name = "bluespace fissure"
|
|
icon_state = "bluestream_fade"
|
|
duration = 9
|
|
|
|
/obj/effect/temp_visual/gib_animation
|
|
icon = 'icons/mob/mob.dmi'
|
|
duration = 15
|
|
|
|
/obj/effect/temp_visual/gib_animation/Initialize(mapload, gib_icon)
|
|
icon_state = gib_icon // Needs to be before ..() so icon is correct
|
|
. = ..()
|
|
|
|
/obj/effect/temp_visual/gib_animation/animal
|
|
icon = 'icons/mob/animal.dmi'
|
|
|
|
/obj/effect/temp_visual/dust_animation
|
|
icon = 'icons/mob/mob.dmi'
|
|
duration = 15
|
|
|
|
/obj/effect/temp_visual/dust_animation/Initialize(mapload, dust_icon)
|
|
icon_state = dust_icon // Before ..() so the correct icon is flick()'d
|
|
. = ..()
|
|
|
|
/obj/effect/temp_visual/mummy_animation
|
|
icon = 'icons/mob/mob.dmi'
|
|
icon_state = "mummy_revive"
|
|
duration = 20
|
|
|
|
/obj/effect/temp_visual/heal //color is white by default, set to whatever is needed
|
|
name = "healing glow"
|
|
icon_state = "heal"
|
|
duration = 15
|
|
|
|
/obj/effect/temp_visual/heal/Initialize(mapload, set_color)
|
|
if(set_color)
|
|
add_atom_colour(set_color, FIXED_COLOUR_PRIORITY)
|
|
. = ..()
|
|
pixel_x = rand(-12, 12)
|
|
pixel_y = rand(-9, 0)
|
|
|
|
/obj/effect/temp_visual/kinetic_blast
|
|
name = "kinetic explosion"
|
|
icon = 'icons/obj/projectiles.dmi'
|
|
icon_state = "kinetic_blast"
|
|
layer = ABOVE_ALL_MOB_LAYER
|
|
duration = 4
|
|
|
|
/obj/effect/temp_visual/explosion
|
|
name = "explosion"
|
|
icon = 'icons/effects/96x96.dmi'
|
|
icon_state = "explosion"
|
|
pixel_x = -32
|
|
pixel_y = -32
|
|
duration = 8
|
|
|
|
/obj/effect/temp_visual/explosion/fast
|
|
icon_state = "explosionfast"
|
|
duration = 4
|
|
|
|
/obj/effect/temp_visual/blob
|
|
name = "blob"
|
|
icon_state = "blob_attack"
|
|
alpha = 140
|
|
randomdir = 0
|
|
duration = 6
|
|
|
|
/obj/effect/temp_visual/desynchronizer
|
|
name = "desynchronizer field"
|
|
icon_state = "chronofield"
|
|
duration = 3
|
|
|
|
/obj/effect/temp_visual/impact_effect
|
|
icon_state = "impact_bullet"
|
|
duration = 5
|
|
|
|
/obj/effect/temp_visual/impact_effect/Initialize(mapload, x, y)
|
|
pixel_x = x
|
|
pixel_y = y
|
|
return ..()
|
|
|
|
/obj/effect/temp_visual/impact_effect/red_laser
|
|
icon_state = "impact_laser"
|
|
duration = 4
|
|
|
|
/obj/effect/temp_visual/impact_effect/red_laser/wall
|
|
icon_state = "impact_laser_wall"
|
|
duration = 10
|
|
|
|
/obj/effect/temp_visual/impact_effect/blue_laser
|
|
icon_state = "impact_laser_blue"
|
|
duration = 4
|
|
|
|
/obj/effect/temp_visual/impact_effect/green_laser
|
|
icon_state = "impact_laser_green"
|
|
duration = 4
|
|
|
|
/obj/effect/temp_visual/impact_effect/purple_laser
|
|
icon_state = "impact_laser_purple"
|
|
duration = 4
|
|
|
|
/obj/effect/temp_visual/impact_effect/shrink
|
|
icon_state = "m_shield"
|
|
duration = 10
|
|
|
|
/obj/effect/temp_visual/impact_effect/ion
|
|
icon_state = "shieldsparkles"
|
|
duration = 6
|
|
|
|
/obj/effect/temp_visual/heart
|
|
name = "heart"
|
|
icon = 'icons/mob/animal.dmi'
|
|
icon_state = "heart"
|
|
duration = 25
|
|
|
|
/obj/effect/temp_visual/heart/Initialize(mapload)
|
|
. = ..()
|
|
pixel_x = rand(-4,4)
|
|
pixel_y = rand(-4,4)
|
|
animate(src, pixel_y = pixel_y + 32, alpha = 0, time = 25)
|
|
|
|
/obj/effect/temp_visual/love_heart
|
|
name = "love heart"
|
|
icon = 'icons/effects/effects.dmi'
|
|
icon_state = "heart"
|
|
duration = 25
|
|
|
|
/obj/effect/temp_visual/love_heart/Initialize(mapload)
|
|
. = ..()
|
|
pixel_x = rand(-10,10)
|
|
pixel_y = rand(-10,10)
|
|
animate(src, pixel_y = pixel_y + 32, alpha = 0, time = duration)
|
|
|
|
/obj/effect/temp_visual/love_heart/invisible
|
|
icon_state = null
|
|
|
|
/obj/effect/temp_visual/love_heart/invisible/Initialize(mapload, mob/seer)
|
|
. = ..()
|
|
var/image/I = image(icon = 'icons/effects/effects.dmi', icon_state = "heart", layer = ABOVE_MOB_LAYER, loc = src)
|
|
add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/onePerson, "heart", I, seer)
|
|
I.alpha = 255
|
|
I.appearance_flags = RESET_ALPHA
|
|
animate(I, alpha = 0, time = duration)
|
|
|
|
/obj/effect/temp_visual/bleed
|
|
name = "bleed"
|
|
icon = 'icons/effects/bleed.dmi'
|
|
icon_state = "bleed0"
|
|
duration = 10
|
|
var/shrink = TRUE
|
|
|
|
/obj/effect/temp_visual/bleed/Initialize(mapload, atom/size_calc_target)
|
|
. = ..()
|
|
var/size_matrix = matrix()
|
|
if(size_calc_target)
|
|
layer = size_calc_target.layer + 0.01
|
|
var/icon/I = icon(size_calc_target.icon, size_calc_target.icon_state, size_calc_target.dir)
|
|
size_matrix = matrix() * (I.Height()/world.icon_size)
|
|
transform = size_matrix //scale the bleed overlay's size based on the target's icon size
|
|
var/matrix/M = transform
|
|
if(shrink)
|
|
M = size_matrix*0.1
|
|
else
|
|
M = size_matrix*2
|
|
animate(src, alpha = 20, transform = M, time = duration, flags = ANIMATION_PARALLEL)
|
|
|
|
/obj/effect/temp_visual/bleed/explode
|
|
icon_state = "bleed10"
|
|
duration = 12
|
|
shrink = FALSE
|
|
|
|
/obj/effect/temp_visual/warp_cube
|
|
duration = 5
|
|
var/outgoing = TRUE
|
|
|
|
/obj/effect/temp_visual/warp_cube/Initialize(mapload, atom/teleporting_atom, warp_color, new_outgoing)
|
|
. = ..()
|
|
if(teleporting_atom)
|
|
outgoing = new_outgoing
|
|
appearance = teleporting_atom.appearance
|
|
setDir(teleporting_atom.dir)
|
|
if(warp_color)
|
|
color = list(warp_color, warp_color, warp_color, list(0,0,0))
|
|
set_light(1.4, 1, warp_color)
|
|
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
|
var/matrix/skew = transform
|
|
skew = skew.Turn(180)
|
|
skew = skew.Interpolate(transform, 0.5)
|
|
if(!outgoing)
|
|
transform = skew * 2
|
|
skew = teleporting_atom.transform
|
|
alpha = 0
|
|
animate(src, alpha = teleporting_atom.alpha, transform = skew, time = duration)
|
|
else
|
|
skew *= 2
|
|
animate(src, alpha = 0, transform = skew, time = duration)
|
|
else
|
|
return INITIALIZE_HINT_QDEL
|
|
|