mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-23 20:17:15 +01:00
The Great Lasertag Update (#18691)
* Save~ * Fixes launch_many_projectiles having 100% miss chance Adds laser landmines. Makes it so portable turrets don't do janky BS for lasertag. Gives portable lasertag turrets a fun emag/EMP effect * emag and equipment * cargo * tur et * milsim rp * clarify * PLEASE I HAVE A FAMILY * cries * signal drop * no spawn
This commit is contained in:
@@ -145,9 +145,7 @@
|
||||
M.UpdateAppearance()
|
||||
visible_message("\The [src.name] flashes violently before disintegrating!")
|
||||
SSmotiontracker.ping(src,100)
|
||||
spawn(0)
|
||||
qdel(s)
|
||||
qdel(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mine/stun
|
||||
mineitemtype = /obj/item/mine/stun
|
||||
@@ -163,9 +161,7 @@
|
||||
M.Stun(30)
|
||||
visible_message("\The [src.name] flashes violently before disintegrating!")
|
||||
SSmotiontracker.ping(src,100)
|
||||
spawn(0)
|
||||
qdel(s)
|
||||
qdel(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mine/n2o
|
||||
mineitemtype = /obj/item/mine/n2o
|
||||
@@ -179,8 +175,7 @@
|
||||
target.assume_gas(GAS_N2O, 30)
|
||||
visible_message("\The [src.name] detonates!")
|
||||
SSmotiontracker.ping(src,100)
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mine/phoron
|
||||
mineitemtype = /obj/item/mine/phoron
|
||||
@@ -195,8 +190,7 @@
|
||||
target.hotspot_expose(1000, CELL_VOLUME)
|
||||
visible_message("\The [src.name] detonates!")
|
||||
SSmotiontracker.ping(src,100)
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mine/kick
|
||||
mineitemtype = /obj/item/mine/kick
|
||||
@@ -213,9 +207,7 @@
|
||||
M = E.occupant
|
||||
if(istype(M))
|
||||
qdel(M.client)
|
||||
spawn(0)
|
||||
qdel(s)
|
||||
qdel(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mine/frag
|
||||
mineitemtype = /obj/item/mine/frag
|
||||
@@ -237,9 +229,7 @@
|
||||
src.fragmentate(O, num_fragments, spread_range, fragment_types) //only 20 weak fragments because you're stepping directly on it
|
||||
visible_message("\The [src.name] detonates!")
|
||||
SSmotiontracker.ping(src,100)
|
||||
spawn(0)
|
||||
qdel(s)
|
||||
qdel(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mine/training //Name and Desc commented out so it's possible to trick people with the training mines
|
||||
// name = "training mine"
|
||||
@@ -252,8 +242,9 @@
|
||||
triggered = TRUE
|
||||
visible_message("\The [src.name]'s light flashes rapidly as it 'explodes'.")
|
||||
new src.mineitemtype(get_turf(src))
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
for(var/wire_color in wires.colors)
|
||||
wires.detach_assembly(wire_color) //Kick all the signallers off!
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mine/emp
|
||||
mineitemtype = /obj/item/mine/emp
|
||||
@@ -268,8 +259,7 @@
|
||||
visible_message("\The [src.name] flashes violently before disintegrating!")
|
||||
SSmotiontracker.ping(src,100)
|
||||
empulse(loc, 2, 4, 7, 10, 1) // As strong as an EMP grenade
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mine/emp/camo
|
||||
camo_net = TRUE
|
||||
@@ -289,8 +279,7 @@
|
||||
M.fire_act()
|
||||
visible_message("\The [src.name] bursts into flames!")
|
||||
SSmotiontracker.ping(src,100)
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mine/gadget
|
||||
mineitemtype = /obj/item/mine/gadget
|
||||
@@ -377,8 +366,7 @@
|
||||
R.trap.forceMove(R)
|
||||
if(explode_now)
|
||||
R.explode(user)
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/mine/dnascramble
|
||||
name = "radiation mine"
|
||||
@@ -436,3 +424,65 @@
|
||||
if(!(L.hovering || L.flying || L.is_incorporeal() || L.mob_size <= MOB_TINY))
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
//Lasertag mines
|
||||
|
||||
/obj/effect/mine/lasertag
|
||||
mineitemtype = /obj/item/mine/lasertag
|
||||
var/beam_types = list(/obj/item/projectile/bullet/foam_dart_riot) // you fool, you baffoon, you used these, you absolute ignoramous, why did you not read this!
|
||||
var/spread_range = 3
|
||||
|
||||
/obj/effect/mine/lasertag/explode(var/mob/living/M)
|
||||
if(triggered) // Prevents circular mine explosions from two mines detonating eachother
|
||||
return
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread()
|
||||
triggered = 1
|
||||
s.set_up(3, 1, src)
|
||||
s.start()
|
||||
var/turf/O = get_turf(src)
|
||||
if(!O)
|
||||
return
|
||||
launch_many_projectiles(O, spread_range, beam_types)
|
||||
visible_message("\The [src.name] detonates!")
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mine/lasertag/red
|
||||
mineitemtype = /obj/item/mine/lasertag/red
|
||||
beam_types = list(/obj/item/projectile/beam/lasertag/red)
|
||||
|
||||
/obj/effect/mine/lasertag/blue
|
||||
mineitemtype = /obj/item/mine/lasertag/blue
|
||||
beam_types = list(/obj/item/projectile/beam/lasertag/blue)
|
||||
|
||||
/obj/effect/mine/lasertag/omni
|
||||
mineitemtype = /obj/item/mine/lasertag/omni
|
||||
beam_types = list(/obj/item/projectile/beam/lasertag/omni)
|
||||
|
||||
/obj/effect/mine/lasertag/all
|
||||
mineitemtype = /obj/item/mine/lasertag/all
|
||||
beam_types = list(/obj/item/projectile/beam/lasertag/red,/obj/item/projectile/beam/lasertag/blue,/obj/item/projectile/beam/lasertag/omni)
|
||||
|
||||
/obj/item/mine/lasertag
|
||||
name = "lasertag mine"
|
||||
desc = "A small mine with 'BOOM' written on top, and an optical hazard warning on the side."
|
||||
minetype = /obj/effect/mine/lasertag
|
||||
|
||||
/obj/item/mine/lasertag/red
|
||||
name = "red lasertag mine"
|
||||
desc = "A small red mine with 'BOOM' written on top, and an optical hazard warning on the side."
|
||||
minetype = /obj/effect/mine/lasertag/red
|
||||
|
||||
/obj/item/mine/lasertag/blue
|
||||
name = "blue lasertag mine"
|
||||
desc = "A small blue mine with 'BOOM' written on top, and an optical hazard warning on the side."
|
||||
minetype = /obj/effect/mine/lasertag/blue
|
||||
|
||||
/obj/item/mine/lasertag/omni
|
||||
name = "purple lasertag mine"
|
||||
desc = "A small purple mine with 'BOOM' written on top, and an optical hazard warning on the side."
|
||||
minetype = /obj/effect/mine/lasertag/omni
|
||||
|
||||
/obj/item/mine/lasertag/all
|
||||
name = "chaos lasertag mine"
|
||||
desc = "A small grey mine with 'BOOM' written on top, and an optical hazard warning on the side."
|
||||
minetype = /obj/effect/mine/lasertag/all
|
||||
|
||||
@@ -401,7 +401,7 @@
|
||||
else
|
||||
return 0
|
||||
|
||||
/obj/item/throw_impact(atom/hit_atom)
|
||||
/obj/item/throw_impact(atom/hit_atom, var/speed)
|
||||
..()
|
||||
if(isliving(hit_atom) && !hit_atom.is_incorporeal()) //Living mobs handle hit sounds differently.
|
||||
var/volume = get_volume_by_throwforce_and_or_w_class()
|
||||
|
||||
@@ -73,4 +73,4 @@
|
||||
else if(!M.lying && src.loc != get_turf(src)) //if it's not on the turf, it must be in the mob!
|
||||
P.attack_mob(M, 0, 25) //you're holding a grenade, dude!
|
||||
else
|
||||
P.attack_mob(M, 0, 100) //otherwise, allow a decent amount of fragments to pass
|
||||
P.attack_mob(M, 0, 75) //otherwise, allow a decent amount of fragments to pass
|
||||
|
||||
@@ -78,7 +78,10 @@
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/gun/energy/lasertag/red = 5,
|
||||
/obj/item/clothing/suit/redtag = 5)
|
||||
/obj/item/clothing/suit/lasertag/redtag = 5,
|
||||
/obj/item/lasertagknife/red = 5,
|
||||
/obj/item/mine/lasertag/all = 5,
|
||||
/obj/item/mine/lasertag/red = 5)
|
||||
|
||||
|
||||
/obj/structure/closet/lasertag/blue
|
||||
@@ -88,7 +91,22 @@
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/gun/energy/lasertag/blue = 5,
|
||||
/obj/item/clothing/suit/bluetag = 5)
|
||||
/obj/item/clothing/suit/lasertag/bluetag = 5,
|
||||
/obj/item/lasertagknife/blue = 5,
|
||||
/obj/item/mine/lasertag/all = 5,
|
||||
/obj/item/mine/lasertag/blue = 5)
|
||||
|
||||
/obj/structure/closet/lasertag/omni
|
||||
name = "unniversal laser tag equipment"
|
||||
desc = "It's a storage unit for laser tag equipment."
|
||||
closet_appearance = /decl/closet_appearance/wardrobe/purple
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/gun/energy/lasertag/omni = 5,
|
||||
/obj/item/clothing/suit/lasertag/omni = 5,
|
||||
/obj/item/lasertagknife = 5,
|
||||
/obj/item/mine/lasertag/all = 5,
|
||||
/obj/item/mine/lasertag/omni = 5)
|
||||
|
||||
/obj/structure/closet/lasertag/red/laserdome
|
||||
name = "red team laserdome equipment"
|
||||
@@ -101,7 +119,8 @@
|
||||
/obj/item/clothing/under/color/red = 3,
|
||||
/obj/item/gun/energy/lasertag/red = 3,
|
||||
/obj/item/clothing/head/redtag = 3,
|
||||
/obj/item/clothing/suit/redtag = 3)
|
||||
/obj/item/clothing/suit/lasertag/redtag = 3,
|
||||
/obj/item/lasertagknife/red = 3)
|
||||
|
||||
/obj/structure/closet/lasertag/blue/laserdome
|
||||
name = "blue team laserdome equipment"
|
||||
@@ -114,4 +133,5 @@
|
||||
/obj/item/clothing/under/color/blue = 3,
|
||||
/obj/item/gun/energy/lasertag/blue = 3,
|
||||
/obj/item/clothing/head/bluetag = 3,
|
||||
/obj/item/clothing/suit/bluetag = 3)
|
||||
/obj/item/clothing/suit/lasertag/bluetag = 3,
|
||||
/obj/item/lasertagknife/blue = 3)
|
||||
|
||||
@@ -70,6 +70,11 @@
|
||||
desc = "A hefty wooden crate displaying the logo of Donk-Soft. It's rather heavy."
|
||||
starts_with = list(/obj/machinery/vending/donksoft)
|
||||
|
||||
/obj/structure/largecrate/lasertag_turrets
|
||||
name = "lasertag turret crate"
|
||||
desc = "A hefty wooden crate displaying the logo of Laz-co. It's rather heavy."
|
||||
starts_with = list(/obj/machinery/porta_turret/lasertag/blue, /obj/machinery/porta_turret/lasertag/red, /obj/machinery/porta_turret/lasertag/omni)
|
||||
|
||||
/obj/structure/largecrate/vehicle
|
||||
name = "vehicle crate"
|
||||
desc = "Wulf Aeronautics says it comes in a box for the consumer's sake... How is this so light?"
|
||||
|
||||
Reference in New Issue
Block a user