mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-30 03:53:33 +00:00
* Large amount of work; Animal taming, shearing. Random animal spawns on sif grass/forest turfs. New PoIs, thermal poncho. * Combat drone DMI moved to drones folder. Mining Drone subtype added. "Tameable" with ores, will collect and store ores when not in active combat.
258 lines
7.2 KiB
Plaintext
258 lines
7.2 KiB
Plaintext
/obj/item/projectile/energy
|
|
name = "energy"
|
|
icon_state = "spark"
|
|
damage = 0
|
|
damage_type = BURN
|
|
check_armour = "energy"
|
|
|
|
impact_effect_type = /obj/effect/temp_visual/impact_effect
|
|
hitsound_wall = 'sound/weapons/effects/searwall.ogg'
|
|
hitsound = 'sound/weapons/zapbang.ogg'
|
|
|
|
var/flash_strength = 10
|
|
|
|
//releases a burst of light on impact or after travelling a distance
|
|
/obj/item/projectile/energy/flash
|
|
name = "chemical shell"
|
|
icon_state = "bullet"
|
|
fire_sound = 'sound/weapons/gunshot_pathetic.ogg'
|
|
hitsound_wall = null
|
|
damage = 5
|
|
range = 15 //if the shell hasn't hit anything after travelling this far it just explodes.
|
|
var/flash_range = 0
|
|
var/brightness = 7
|
|
var/light_colour = "#ffffff"
|
|
|
|
/obj/item/projectile/energy/flash/on_impact(var/atom/A)
|
|
var/turf/T = flash_range? src.loc : get_turf(A)
|
|
if(!istype(T)) return
|
|
|
|
//blind adjacent people
|
|
for (var/mob/living/carbon/M in viewers(T, flash_range))
|
|
if(M.eyecheck() < 1)
|
|
M.flash_eyes()
|
|
if(ishuman(M))
|
|
var/mob/living/carbon/human/H = M
|
|
flash_strength *= H.species.flash_mod
|
|
|
|
if(flash_strength > 0)
|
|
H.Confuse(flash_strength + 5)
|
|
H.Blind(flash_strength)
|
|
H.eye_blurry = max(H.eye_blurry, flash_strength + 5)
|
|
H.adjustHalLoss(22 * (flash_strength / 5)) // Five flashes to stun. Bit weaker than melee flashes due to being ranged.
|
|
|
|
//snap pop
|
|
playsound(src, 'sound/effects/snap.ogg', 50, 1)
|
|
src.visible_message("<span class='warning'>\The [src] explodes in a bright flash!</span>")
|
|
|
|
var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread()
|
|
sparks.set_up(2, 1, T)
|
|
sparks.start()
|
|
|
|
new /obj/effect/decal/cleanable/ash(src.loc) //always use src.loc so that ash doesn't end up inside windows
|
|
new /obj/effect/effect/smoke/illumination(T, 5, brightness, brightness, light_colour)
|
|
|
|
//blinds people like the flash round, but can also be used for temporary illumination
|
|
/obj/item/projectile/energy/flash/flare
|
|
fire_sound = 'sound/weapons/grenade_launcher.ogg'
|
|
damage = 10
|
|
flash_range = 1
|
|
brightness = 15
|
|
flash_strength = 20
|
|
|
|
/obj/item/projectile/energy/flash/flare/on_impact(var/atom/A)
|
|
light_colour = pick("#e58775", "#ffffff", "#90ff90", "#a09030")
|
|
|
|
..() //initial flash
|
|
|
|
//residual illumination
|
|
new /obj/effect/effect/smoke/illumination(src.loc, rand(190,240) SECONDS, range=8, power=3, color=light_colour) //same lighting power as flare
|
|
|
|
/obj/item/projectile/energy/electrode
|
|
name = "electrode"
|
|
icon_state = "spark"
|
|
fire_sound = 'sound/weapons/Gunshot2.ogg'
|
|
taser_effect = 1
|
|
agony = 40
|
|
light_range = 2
|
|
light_power = 0.5
|
|
light_color = "#FFFFFF"
|
|
//Damage will be handled on the MOB side, to prevent window shattering.
|
|
|
|
/obj/item/projectile/energy/electrode/strong
|
|
agony = 55
|
|
|
|
/obj/item/projectile/energy/electrode/stunshot
|
|
name = "stunshot"
|
|
damage = 5
|
|
agony = 80
|
|
|
|
/obj/item/projectile/energy/declone
|
|
name = "declone"
|
|
icon_state = "declone"
|
|
fire_sound = 'sound/weapons/pulse3.ogg'
|
|
nodamage = 1
|
|
damage_type = CLONE
|
|
irradiate = 40
|
|
light_range = 2
|
|
light_power = 0.5
|
|
light_color = "#33CC00"
|
|
impact_effect_type = /obj/effect/temp_visual/impact_effect/monochrome_laser
|
|
|
|
combustion = FALSE
|
|
|
|
/obj/item/projectile/energy/excavate
|
|
name = "kinetic blast"
|
|
icon_state = "kinetic_blast"
|
|
fire_sound = 'sound/weapons/pulse3.ogg'
|
|
damage_type = BRUTE
|
|
damage = 30
|
|
armor_penetration = 60
|
|
excavation_amount = 200
|
|
check_armour = "melee"
|
|
|
|
vacuum_traversal = 0
|
|
combustion = FALSE
|
|
|
|
/obj/item/projectile/energy/dart
|
|
name = "dart"
|
|
icon_state = "toxin"
|
|
damage = 5
|
|
damage_type = TOX
|
|
agony = 120
|
|
check_armour = "energy"
|
|
|
|
combustion = FALSE
|
|
|
|
/obj/item/projectile/energy/bolt
|
|
name = "bolt"
|
|
icon_state = "cbbolt"
|
|
damage = 10
|
|
damage_type = TOX
|
|
agony = 40
|
|
stutter = 10
|
|
|
|
/obj/item/projectile/energy/bolt/large
|
|
name = "largebolt"
|
|
damage = 20
|
|
|
|
/obj/item/projectile/energy/acid //Slightly up-gunned (Read: The thing does agony and checks bio resist) variant of the simple alien mob's projectile, for queens and sentinels.
|
|
name = "acidic spit"
|
|
icon_state = "neurotoxin"
|
|
damage = 30
|
|
damage_type = BURN
|
|
agony = 10
|
|
check_armour = "bio"
|
|
armor_penetration = 25 // It's acid
|
|
|
|
combustion = FALSE
|
|
|
|
/obj/item/projectile/energy/neurotoxin
|
|
name = "neurotoxic spit"
|
|
icon_state = "neurotoxin"
|
|
damage = 5
|
|
damage_type = BIOACID
|
|
agony = 80
|
|
check_armour = "bio"
|
|
armor_penetration = 25 // It's acid-based
|
|
|
|
combustion = FALSE
|
|
|
|
/obj/item/projectile/energy/neurotoxin/toxic //New alien mob projectile to match the player-variant's projectiles.
|
|
name = "neurotoxic spit"
|
|
icon_state = "neurotoxin"
|
|
damage = 20
|
|
damage_type = BIOACID
|
|
agony = 20
|
|
check_armour = "bio"
|
|
armor_penetration = 25 // It's acid-based
|
|
|
|
/obj/item/projectile/energy/phoron
|
|
name = "phoron bolt"
|
|
icon_state = "energy"
|
|
fire_sound = 'sound/effects/stealthoff.ogg'
|
|
damage = 20
|
|
damage_type = TOX
|
|
irradiate = 20
|
|
light_range = 2
|
|
light_power = 0.5
|
|
light_color = "#33CC00"
|
|
impact_effect_type = /obj/effect/temp_visual/impact_effect/monochrome_laser
|
|
|
|
combustion = FALSE
|
|
|
|
/obj/item/projectile/energy/plasmastun
|
|
name = "plasma pulse"
|
|
icon_state = "plasma_stun"
|
|
fire_sound = 'sound/weapons/blaster.ogg'
|
|
armor_penetration = 10
|
|
range = 4
|
|
damage = 5
|
|
agony = 55
|
|
damage_type = BURN
|
|
vacuum_traversal = 0 //Projectile disappears in empty space
|
|
|
|
/obj/item/projectile/energy/plasmastun/proc/bang(var/mob/living/carbon/M)
|
|
|
|
to_chat(M, "<span class='danger'>You hear a loud roar.</span>")
|
|
playsound(M.loc, 'sound/effects/bang.ogg', 50, 1)
|
|
var/ear_safety = 0
|
|
ear_safety = M.get_ear_protection()
|
|
if(ear_safety == 1)
|
|
M.Confuse(150)
|
|
else if (ear_safety > 1)
|
|
M.Confuse(30)
|
|
else if (!ear_safety)
|
|
M.Stun(10)
|
|
M.Weaken(2)
|
|
M.ear_damage += rand(1, 10)
|
|
M.ear_deaf = max(M.ear_deaf,15)
|
|
if (M.ear_damage >= 15)
|
|
to_chat(M, "<span class='danger'>Your ears start to ring badly!</span>")
|
|
if (prob(M.ear_damage - 5))
|
|
to_chat(M, "<span class='danger'>You can't hear anything!</span>")
|
|
M.sdisabilities |= DEAF
|
|
else
|
|
if (M.ear_damage >= 5)
|
|
to_chat(M, "<span class='danger'>Your ears start to ring!</span>")
|
|
M.update_icons() //Just to apply matrix transform for laying asap
|
|
|
|
/obj/item/projectile/energy/plasmastun/on_hit(var/atom/target)
|
|
bang(target)
|
|
. = ..()
|
|
|
|
/obj/item/projectile/energy/blue_pellet
|
|
name = "suppressive pellet"
|
|
icon_state = "blue_pellet"
|
|
fire_sound = 'sound/weapons/Laser.ogg'
|
|
damage = 5
|
|
armor_penetration = 75
|
|
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
|
|
damage_type = BURN
|
|
check_armour = "energy"
|
|
light_color = "#00AAFF"
|
|
|
|
embed_chance = 0
|
|
muzzle_type = /obj/effect/projectile/muzzle/pulse
|
|
impact_effect_type = /obj/effect/temp_visual/impact_effect/monochrome_laser
|
|
|
|
/obj/item/projectile/energy/phase
|
|
name = "phase wave"
|
|
icon_state = "phase"
|
|
range = 6
|
|
damage = 5
|
|
SA_bonus_damage = 45 // 50 total on animals
|
|
SA_vulnerability = SA_ANIMAL
|
|
|
|
/obj/item/projectile/energy/phase/light
|
|
range = 4
|
|
SA_bonus_damage = 35 // 40 total on animals
|
|
|
|
/obj/item/projectile/energy/phase/heavy
|
|
range = 8
|
|
SA_bonus_damage = 55 // 60 total on animals
|
|
|
|
/obj/item/projectile/energy/phase/heavy/cannon
|
|
range = 10
|
|
damage = 15
|
|
SA_bonus_damage = 60 // 75 total on animals |