mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-26 01:52:15 +00:00
Fixes the mousebeam for more gibbings and ensures that nowhere is safe. Fixes the multipliers because fuck. Makes the night lighting process not runtime if night lighting is disabled. Note to Bed: del()-ing processes is bad, they should be disabled instead.
215 lines
6.3 KiB
Plaintext
215 lines
6.3 KiB
Plaintext
/obj/item/projectile/beam
|
|
name = "laser"
|
|
icon_state = "laser"
|
|
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
|
|
damage = 40
|
|
damage_type = BURN
|
|
check_armour = "laser"
|
|
eyeblur = 4
|
|
var/frequency = 1
|
|
hitscan = 1
|
|
invisibility = 101 //beam projectiles are invisible as they are rendered by the effect engine
|
|
|
|
muzzle_type = /obj/effect/projectile/laser/muzzle
|
|
tracer_type = /obj/effect/projectile/laser/tracer
|
|
impact_type = /obj/effect/projectile/laser/impact
|
|
|
|
/obj/item/projectile/beam/practice
|
|
name = "laser"
|
|
icon_state = "laser"
|
|
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
|
|
damage = 0
|
|
damage_type = BURN
|
|
no_attack_log = 1
|
|
check_armour = "laser"
|
|
eyeblur = 2
|
|
|
|
/obj/item/projectile/beam/heavylaser
|
|
name = "heavy laser"
|
|
icon_state = "heavylaser"
|
|
damage = 60
|
|
|
|
muzzle_type = /obj/effect/projectile/laser_heavy/muzzle
|
|
tracer_type = /obj/effect/projectile/laser_heavy/tracer
|
|
impact_type = /obj/effect/projectile/laser_heavy/impact
|
|
|
|
/obj/item/projectile/beam/xray
|
|
name = "xray beam"
|
|
icon_state = "xray"
|
|
damage = 30
|
|
|
|
muzzle_type = /obj/effect/projectile/xray/muzzle
|
|
tracer_type = /obj/effect/projectile/xray/tracer
|
|
impact_type = /obj/effect/projectile/xray/impact
|
|
|
|
/obj/item/projectile/beam/pulse
|
|
name = "pulse"
|
|
icon_state = "u_laser"
|
|
damage = 50
|
|
|
|
muzzle_type = /obj/effect/projectile/laser_pulse/muzzle
|
|
tracer_type = /obj/effect/projectile/laser_pulse/tracer
|
|
impact_type = /obj/effect/projectile/laser_pulse/impact
|
|
|
|
/obj/item/projectile/beam/pulse/on_hit(var/atom/target, var/blocked = 0)
|
|
if(isturf(target))
|
|
target.ex_act(2)
|
|
..()
|
|
|
|
/obj/item/projectile/beam/emitter
|
|
name = "emitter beam"
|
|
icon_state = "emitter"
|
|
damage = 0 // The actual damage is computed in /code/modules/power/singularity/emitter.dm
|
|
|
|
muzzle_type = /obj/effect/projectile/emitter/muzzle
|
|
tracer_type = /obj/effect/projectile/emitter/tracer
|
|
impact_type = /obj/effect/projectile/emitter/impact
|
|
|
|
/obj/item/projectile/beam/lastertag/blue
|
|
name = "lasertag beam"
|
|
icon_state = "bluelaser"
|
|
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
|
|
damage = 0
|
|
no_attack_log = 1
|
|
damage_type = BURN
|
|
check_armour = "laser"
|
|
|
|
muzzle_type = /obj/effect/projectile/laser_blue/muzzle
|
|
tracer_type = /obj/effect/projectile/laser_blue/tracer
|
|
impact_type = /obj/effect/projectile/laser_blue/impact
|
|
|
|
/obj/item/projectile/beam/lastertag/blue/on_hit(var/atom/target, var/blocked = 0)
|
|
if(istype(target, /mob/living/carbon/human))
|
|
var/mob/living/carbon/human/M = target
|
|
if(istype(M.wear_suit, /obj/item/clothing/suit/redtag))
|
|
M.Weaken(5)
|
|
return 1
|
|
|
|
/obj/item/projectile/beam/lastertag/red
|
|
name = "lasertag beam"
|
|
icon_state = "laser"
|
|
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
|
|
damage = 0
|
|
no_attack_log = 1
|
|
damage_type = BURN
|
|
check_armour = "laser"
|
|
|
|
/obj/item/projectile/beam/lastertag/red/on_hit(var/atom/target, var/blocked = 0)
|
|
if(istype(target, /mob/living/carbon/human))
|
|
var/mob/living/carbon/human/M = target
|
|
if(istype(M.wear_suit, /obj/item/clothing/suit/bluetag))
|
|
M.Weaken(5)
|
|
return 1
|
|
|
|
/obj/item/projectile/beam/lastertag/omni//A laser tag bolt that stuns EVERYONE
|
|
name = "lasertag beam"
|
|
icon_state = "omnilaser"
|
|
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
|
|
damage = 0
|
|
damage_type = BURN
|
|
check_armour = "laser"
|
|
|
|
muzzle_type = /obj/effect/projectile/laser_omni/muzzle
|
|
tracer_type = /obj/effect/projectile/laser_omni/tracer
|
|
impact_type = /obj/effect/projectile/laser_omni/impact
|
|
|
|
/obj/item/projectile/beam/lastertag/omni/on_hit(var/atom/target, var/blocked = 0)
|
|
if(istype(target, /mob/living/carbon/human))
|
|
var/mob/living/carbon/human/M = target
|
|
if((istype(M.wear_suit, /obj/item/clothing/suit/bluetag))||(istype(M.wear_suit, /obj/item/clothing/suit/redtag)))
|
|
M.Weaken(5)
|
|
return 1
|
|
|
|
/obj/item/projectile/beam/sniper
|
|
name = "sniper beam"
|
|
icon_state = "xray"
|
|
damage = 60
|
|
stun = 3
|
|
weaken = 3
|
|
stutter = 3
|
|
|
|
muzzle_type = /obj/effect/projectile/xray/muzzle
|
|
tracer_type = /obj/effect/projectile/xray/tracer
|
|
impact_type = /obj/effect/projectile/xray/impact
|
|
|
|
/obj/item/projectile/beam/stun
|
|
name = "stun beam"
|
|
icon_state = "stun"
|
|
nodamage = 1
|
|
taser_effect = 1
|
|
agony = 40
|
|
damage_type = HALLOSS
|
|
|
|
muzzle_type = /obj/effect/projectile/stun/muzzle
|
|
tracer_type = /obj/effect/projectile/stun/tracer
|
|
impact_type = /obj/effect/projectile/stun/impact
|
|
|
|
/obj/item/projectile/beam/gatlinglaser
|
|
name = "heavy laser"
|
|
icon_state = "heavylaser"
|
|
damage = 10
|
|
|
|
muzzle_type = /obj/effect/projectile/laser_omni/muzzle
|
|
tracer_type = /obj/effect/projectile/laser_omni/tracer
|
|
impact_type = /obj/effect/projectile/laser_omni/impact
|
|
|
|
/obj/item/projectile/beam/mousegun
|
|
name = "diffuse electrical arc"
|
|
icon_state = "stun"
|
|
nodamage = 1
|
|
damage_type = HALLOSS
|
|
|
|
muzzle_type = /obj/effect/projectile/stun/muzzle
|
|
tracer_type = /obj/effect/projectile/stun/tracer
|
|
impact_type = /obj/effect/projectile/stun/impact
|
|
|
|
/obj/item/projectile/beam/mousegun/on_impact(var/atom/A)
|
|
mousepulse(A, 1)
|
|
..()
|
|
|
|
/obj/item/projectile/beam/mousegun/proc/mousepulse(turf/epicenter, range, log=0)
|
|
if (!epicenter)
|
|
return
|
|
|
|
if (!istype(epicenter, /turf))
|
|
epicenter = get_turf(epicenter.loc)
|
|
|
|
for (var/mob/living/M in range(range, epicenter))
|
|
var/distance = get_dist(epicenter, M)
|
|
if (distance < 0)
|
|
distance = 0
|
|
if (distance <= range)
|
|
if (M.mob_size <= 2 && (M.find_type() & TYPE_ORGANIC))
|
|
M.visible_message("<span class='danger'>[M] bursts like a balloon!</span>")
|
|
M.gib()
|
|
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
|
s.set_up(3, 1, M)
|
|
s.start()
|
|
else if (iscarbon(M) && M.contents.len)
|
|
for (var/obj/item/weapon/holder/H in M.contents)
|
|
if (!H.contained)
|
|
continue
|
|
|
|
var/mob/living/A = H.contained
|
|
if (!istype(A))
|
|
continue
|
|
|
|
if (A.mob_size <= 2 && (A.find_type() & TYPE_ORGANIC))
|
|
H.release_mob()
|
|
A.visible_message("<span class='danger'>[A] bursts like a balloon!</span>")
|
|
A.gib()
|
|
|
|
M << 'sound/effects/basscannon.ogg'
|
|
return 1
|
|
|
|
/obj/item/projectile/beam/shotgun
|
|
name = "diffuse laser"
|
|
icon_state = "laser"
|
|
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
|
|
damage = 15
|
|
eyeblur = 4
|
|
|
|
muzzle_type = /obj/effect/projectile/laser/muzzle
|
|
tracer_type = /obj/effect/projectile/laser/tracer
|
|
impact_type = /obj/effect/projectile/laser/impact
|