mirror of
https://github.com/CHOMPstation/CHOMPstation.git
synced 2026-08-31 07:56:25 +01:00
Polaris sync
This commit is contained in:
@@ -223,4 +223,25 @@
|
||||
icon_state = "impact_lightning"
|
||||
light_range = 2
|
||||
light_power = 0.5
|
||||
light_color = "#00C6FF"
|
||||
light_color = "#00C6FF"
|
||||
|
||||
//----------------------------
|
||||
// Dark matter
|
||||
//----------------------------
|
||||
/obj/effect/projectile/darkmatter/tracer
|
||||
icon_state = "darkb"
|
||||
light_range = 2
|
||||
light_power = 0.5
|
||||
light_color = "#8837A3"
|
||||
|
||||
/obj/effect/projectile/darkmatter/muzzle
|
||||
icon_state = "muzzle_darkb"
|
||||
light_range = 2
|
||||
light_power = 0.5
|
||||
light_color = "#8837A3"
|
||||
|
||||
/obj/effect/projectile/darkmatter/impact
|
||||
icon_state = "impact_darkb"
|
||||
light_range = 2
|
||||
light_power = 0.5
|
||||
light_color = "#8837A3"
|
||||
@@ -1,46 +0,0 @@
|
||||
// Alien pinning weapon.
|
||||
/obj/item/weapon/gun/launcher/spikethrower
|
||||
|
||||
name = "spike thrower"
|
||||
desc = "A vicious alien projectile weapon. Parts of it quiver gelatinously, as though the thing is insectile and alive."
|
||||
|
||||
var/last_regen = 0
|
||||
var/spike_gen_time = 150
|
||||
var/max_spikes = 3
|
||||
var/spikes = 3
|
||||
release_force = 30
|
||||
icon = 'icons/obj/gun.dmi'
|
||||
icon_state = "spikethrower3"
|
||||
item_state = "spikethrower"
|
||||
fire_sound_text = "a strange noise"
|
||||
fire_sound = 'sound/weapons/bladeslice.ogg'
|
||||
|
||||
/obj/item/weapon/gun/launcher/spikethrower/New()
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
last_regen = world.time
|
||||
|
||||
/obj/item/weapon/gun/launcher/spikethrower/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/launcher/spikethrower/process()
|
||||
if(spikes < max_spikes && world.time > last_regen + spike_gen_time)
|
||||
spikes++
|
||||
last_regen = world.time
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/gun/launcher/spikethrower/examine(mob/user)
|
||||
..(user)
|
||||
user << "It has [spikes] spike\s remaining."
|
||||
|
||||
/obj/item/weapon/gun/launcher/spikethrower/update_icon()
|
||||
icon_state = "spikethrower[spikes]"
|
||||
|
||||
/obj/item/weapon/gun/launcher/spikethrower/update_release_force()
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/launcher/spikethrower/consume_next_projectile()
|
||||
if(spikes < 1) return null
|
||||
spikes--
|
||||
return new /obj/item/weapon/spike(src)
|
||||
@@ -149,4 +149,4 @@ obj/item/weapon/gun/energy/staff/focus
|
||||
charge_cost = 200
|
||||
user << "<span class='warning'>The [src.name] will now strike only a single person.</span>"
|
||||
projectile_type = "/obj/item/projectile/forcebolt"
|
||||
*/
|
||||
*/
|
||||
@@ -55,3 +55,14 @@
|
||||
force = 10
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 200000)
|
||||
projectile_type = /obj/item/projectile/energy/bolt/large
|
||||
|
||||
/obj/item/weapon/gun/energy/plasmastun
|
||||
name = "plasma pulse projector"
|
||||
desc = "The Mars Military Industries MA21 Selkie is a weapon that uses a laser pulse to ionise the local atmosphere, creating a disorienting pulse of plasma and deafening shockwave as the wave expands."
|
||||
icon_state = "plasma_stun"
|
||||
item_state = "plasma_stun"
|
||||
fire_sound = 'sound/weapons/blaster.ogg'
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_POWER = 3)
|
||||
fire_delay = 20
|
||||
charge_cost = 600
|
||||
projectile_type = /obj/item/projectile/energy/plasmastun
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
// Stole hacky terrible code from doublebarrel shotgun. -Spades
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/mosin/attackby(var/obj/item/A as obj, mob/user as mob)
|
||||
if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/melee/energy) || istype(A, /obj/item/weapon/pickaxe/plasmacutter) && w_class != ITEMSIZE_NORMAL)
|
||||
if(istype(A, /obj/item/weapon/surgical/circular_saw) || istype(A, /obj/item/weapon/melee/energy) || istype(A, /obj/item/weapon/pickaxe/plasmacutter) && w_class != ITEMSIZE_NORMAL)
|
||||
user << "<span class='notice'>You begin to shorten the barrel and stock of \the [src].</span>"
|
||||
if(loaded.len)
|
||||
afterattack(user, user) //will this work? //it will. we call it twice, for twice the FUN
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
|
||||
//this is largely hacky and bad :( -Pete
|
||||
/obj/item/weapon/gun/projectile/shotgun/doublebarrel/attackby(var/obj/item/A as obj, mob/user as mob)
|
||||
if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/melee/energy) || istype(A, /obj/item/weapon/pickaxe/plasmacutter))
|
||||
if(istype(A, /obj/item/weapon/surgical/circular_saw) || istype(A, /obj/item/weapon/melee/energy) || istype(A, /obj/item/weapon/pickaxe/plasmacutter))
|
||||
user << "<span class='notice'>You begin to shorten the barrel of \the [src].</span>"
|
||||
if(loaded.len)
|
||||
var/burstsetting = burst
|
||||
|
||||
@@ -0,0 +1,139 @@
|
||||
/*
|
||||
* Vox Spike Thrower
|
||||
* Alien pinning weapon.
|
||||
*/
|
||||
|
||||
/obj/item/weapon/gun/launcher/spikethrower
|
||||
name = "spike thrower"
|
||||
desc = "A vicious alien projectile weapon. Parts of it quiver gelatinously, as though the thing is insectile and alive."
|
||||
|
||||
var/last_regen = 0
|
||||
var/spike_gen_time = 150
|
||||
var/max_spikes = 3
|
||||
var/spikes = 3
|
||||
release_force = 30
|
||||
icon = 'icons/obj/gun.dmi'
|
||||
icon_state = "spikethrower3"
|
||||
item_state = "spikethrower"
|
||||
fire_sound_text = "a strange noise"
|
||||
fire_sound = 'sound/weapons/bladeslice.ogg'
|
||||
|
||||
/obj/item/weapon/gun/launcher/spikethrower/New()
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
last_regen = world.time
|
||||
|
||||
/obj/item/weapon/gun/launcher/spikethrower/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/launcher/spikethrower/process()
|
||||
if(spikes < max_spikes && world.time > last_regen + spike_gen_time)
|
||||
spikes++
|
||||
last_regen = world.time
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/gun/launcher/spikethrower/examine(mob/user)
|
||||
..(user)
|
||||
user << "It has [spikes] spike\s remaining."
|
||||
|
||||
/obj/item/weapon/gun/launcher/spikethrower/update_icon()
|
||||
icon_state = "spikethrower[spikes]"
|
||||
|
||||
/obj/item/weapon/gun/launcher/spikethrower/update_release_force()
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/launcher/spikethrower/consume_next_projectile()
|
||||
if(spikes < 1) return null
|
||||
spikes--
|
||||
return new /obj/item/weapon/spike(src)
|
||||
|
||||
/*
|
||||
* Vox Darkmatter Cannon
|
||||
*/
|
||||
/obj/item/weapon/gun/energy/darkmatter
|
||||
name = "dark matter gun"
|
||||
desc = "A vicious alien beam weapon. Parts of it quiver gelatinously, as though the thing is insectile and alive."
|
||||
icon_state = "darkcannon"
|
||||
item_state = "darkcannon"
|
||||
fire_sound = 'sound/weapons/eLuger.ogg'
|
||||
charge_cost = 600
|
||||
projectile_type = /obj/item/projectile/beam/darkmatter
|
||||
self_recharge = 1
|
||||
accuracy = 2
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="focused", burst=1, fire_delay=null, move_delay=null, burst_accuracy=list(2), dispersion=null, projectile_type=/obj/item/projectile/beam/darkmatter, charge_cost = 600),
|
||||
list(mode_name="scatter burst", burst=8, fire_delay=null, move_delay=4, burst_accuracy=list(0, 0, 0, 0, 0, 0, 0, 0), dispersion=list(3, 3, 3, 3, 3, 3, 3, 3, 3), projectile_type=/obj/item/projectile/energy/darkmatter, charge_cost = 300),
|
||||
)
|
||||
|
||||
/obj/item/projectile/beam/darkmatter
|
||||
name = "dark matter bolt"
|
||||
icon_state = "darkb"
|
||||
damage = 60
|
||||
armor_penetration = 35
|
||||
damage_type = BRUTE
|
||||
check_armour = "energy"
|
||||
light_color = "#8837A3"
|
||||
|
||||
embed_chance = 0
|
||||
|
||||
muzzle_type = /obj/effect/projectile/darkmatter/muzzle
|
||||
tracer_type = /obj/effect/projectile/darkmatter/tracer
|
||||
impact_type = /obj/effect/projectile/darkmatter/impact
|
||||
|
||||
/obj/item/projectile/energy/darkmatter
|
||||
name = "dark matter pellet"
|
||||
icon_state = "dark_pellet"
|
||||
damage = 20
|
||||
armor_penetration = 35
|
||||
damage_type = BRUTE
|
||||
check_armour = "energy"
|
||||
light_color = "#8837A3"
|
||||
|
||||
embed_chance = 0
|
||||
|
||||
/*
|
||||
* Vox Darkmatter Cannon
|
||||
*/
|
||||
/obj/item/weapon/gun/energy/sonic
|
||||
name = "soundcannon"
|
||||
desc = "A vicious alien sound weapon. Parts of it quiver gelatinously, as though the thing is insectile and alive."
|
||||
icon_state = "noise"
|
||||
item_state = "noise"
|
||||
fire_sound = 'sound/effects/basscannon.ogg'
|
||||
self_recharge = 1
|
||||
charge_cost = 600
|
||||
|
||||
projectile_type=/obj/item/projectile/sonic/strong
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="normal", projectile_type=/obj/item/projectile/sonic/strong, charge_cost = 600),
|
||||
list(mode_name="suppressive", projectile_type=/obj/item/projectile/sonic/weak, charge_cost = 300),
|
||||
)
|
||||
|
||||
/obj/item/projectile/sonic
|
||||
name = "sonic pulse"
|
||||
icon_state = "sound"
|
||||
damage = 15
|
||||
armor_penetration = 30
|
||||
damage_type = BRUTE
|
||||
check_armour = "melee"
|
||||
embed_chance = 0
|
||||
vacuum_traversal = 0
|
||||
|
||||
// var/amplitude = 10 //Roughly how loud it is, changes the way damage will work, and such
|
||||
|
||||
/obj/item/projectile/sonic/weak
|
||||
agony = 30
|
||||
|
||||
/obj/item/projectile/sonic/strong
|
||||
damage = 45
|
||||
|
||||
//Already have thoughts on how to improve this, will take a day or two after initial testing. - Anewbe
|
||||
|
||||
/obj/item/projectile/sonic/strong/on_hit(var/atom/movable/target, var/blocked = 0)
|
||||
if(ismob(target))
|
||||
var/throwdir = get_dir(firer,target)
|
||||
target.throw_at(get_edge_target_turf(target, throwdir), rand(1,6), 10)
|
||||
return 1
|
||||
@@ -65,6 +65,8 @@
|
||||
var/tracer_type
|
||||
var/impact_type
|
||||
|
||||
var/vacuum_traversal = 1 //Determines if the projectile can exist in vacuum, if false, the projectile will be deleted if it enters vacuum.
|
||||
|
||||
var/datum/plot_vector/trajectory // used to plot the path of the projectile
|
||||
var/datum/vector_loc/location // current location of the projectile in pixel space
|
||||
var/matrix/effect_transform // matrix to rotate and scale projectile effects - putting it here so it doesn't
|
||||
@@ -300,6 +302,10 @@
|
||||
qdel(src) // if it's left the world... kill it
|
||||
return
|
||||
|
||||
if (is_below_sound_pressure(get_turf(src)) && !vacuum_traversal) //Deletes projectiles that aren't supposed to bein vacuum if they leave pressurised areas
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
before_move()
|
||||
Move(location.return_turf())
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
eyeblur = 4
|
||||
var/frequency = 1
|
||||
hitscan = 1
|
||||
embed_chance = 0
|
||||
invisibility = 101 //beam projectiles are invisible as they are rendered by the effect engine
|
||||
light_range = 2
|
||||
light_power = 0.5
|
||||
|
||||
@@ -133,3 +133,42 @@
|
||||
light_range = 2
|
||||
light_power = 0.5
|
||||
light_color = "#33CC00"
|
||||
|
||||
/obj/item/projectile/energy/plasmastun
|
||||
name = "plasma pulse"
|
||||
icon_state = "plasma_stun"
|
||||
armor_penetration = 10
|
||||
kill_count = 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.confused += 150
|
||||
else if (ear_safety > 1)
|
||||
M.confused += 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()
|
||||
|
||||
/obj/item/projectile/energy/plasmastun/on_hit(var/atom/target)
|
||||
bang(target)
|
||||
. = ..()
|
||||
@@ -156,4 +156,3 @@
|
||||
nodamage = 1
|
||||
damage_type = HALLOSS
|
||||
muzzle_type = /obj/effect/projectile/bullet/muzzle
|
||||
|
||||
|
||||
Reference in New Issue
Block a user