Files
Aurora.3/code/modules/projectiles/projectile/beams.dm
LordFowl 13ac6c9351 Plenty'o'fixes (#1478)
Nerfs blob rollercoaster of death by making it so that blobs cannot interact with the mobs inside of other blobs.
Replaces blob's gibbing mobs with husking humans, merely killing borgs, and gibbing everything else.
Makes flamethrowers modestly more effective versus blobs - a consistent source of minor AoE damage.
Makes blobs more aesthetically pleasing.
Distinguishes the main core from the aux cores slightly more.

Fixes #1426
Fixes #1427
Fixes #1432
Fixes #1461
Fixes #1464
Fixes #1471

Modifies BFG's to be more like actual BFG's.
Fixes Industrial IPCs being able to select Baseline IPC screens.
Fixes several baycode company names to fit ours in guns. Changes several of our guns to fit Baycode's naming paradigm.
2017-01-09 01:04:36 +02:00

262 lines
7.6 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/midlaser
damage = 40
armor_penetration = 10
/obj/item/projectile/beam/heavylaser
name = "heavy laser"
icon_state = "heavylaser"
damage = 60
armor_penetration = 30
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 = 25
armor_penetration = 50
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
armor_penetration = 30
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 = 50
armor_penetration = 10
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
no_attack_log = 1
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
/obj/item/projectile/beam/megaglaive
name = "thermal lance"
icon_state = "megaglaive"
damage = 6
incinerate = 5
armor_penetration = 10
no_attack_log = 1
muzzle_type = /obj/effect/projectile/solar/muzzle
tracer_type = /obj/effect/projectile/solar/tracer
impact_type = /obj/effect/projectile/solar/impact
/obj/item/projectile/beam/megaglaive/New()
effect_transform = new()
effect_transform.Scale(2)
src.transform = effect_transform
..()
/obj/item/projectile/beam/thermaldrill
name = "thermal lance"
icon_state = "megaglaive"
damage = 3
no_attack_log = 1
muzzle_type = /obj/effect/projectile/solar/muzzle
tracer_type = /obj/effect/projectile/solar/tracer
impact_type = /obj/effect/projectile/solar/impact
/obj/item/projectile/beam/thermaldrill/on_impact(var/atom/A)
if(isturf(A))
if(istype(A, /turf/simulated/mineral))
if(prob(75)) //likely because its a mining tool
var/turf/simulated/mineral/M = A
M.GetDrilled()
if(ismob(A))
var/mob/living/M = A
M.apply_effect(1, INCINERATE, 0)
..()