mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-21 20:11:04 +01:00
Landmines (#3908)
Adds landmines, objects that can be deployed and will trigger a certain effect when someone walks over them. Can only be "disarmed" via destroying it, by bullets, explosion and etc. Sprites made by thegreatjorge.
This commit is contained in:
+1
-1
@@ -668,7 +668,6 @@
|
||||
#include "code\game\objects\effects\glowshroom.dm"
|
||||
#include "code\game\objects\effects\landmarks.dm"
|
||||
#include "code\game\objects\effects\manifest.dm"
|
||||
#include "code\game\objects\effects\mines.dm"
|
||||
#include "code\game\objects\effects\misc.dm"
|
||||
#include "code\game\objects\effects\overlays.dm"
|
||||
#include "code\game\objects\effects\portals.dm"
|
||||
@@ -774,6 +773,7 @@
|
||||
#include "code\game\objects\items\weapons\gift_wrappaper.dm"
|
||||
#include "code\game\objects\items\weapons\handcuffs.dm"
|
||||
#include "code\game\objects\items\weapons\improvised_components.dm"
|
||||
#include "code\game\objects\items\weapons\landmines.dm"
|
||||
#include "code\game\objects\items\weapons\manuals.dm"
|
||||
#include "code\game\objects\items\weapons\mop.dm"
|
||||
#include "code\game\objects\items\weapons\paint.dm"
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
name = "Kneebreaker Hammer"
|
||||
item_cost = 10
|
||||
path = /obj/item/weapon/melee/hammer
|
||||
|
||||
|
||||
/datum/uplink_item/item/visible_weapons/revolver
|
||||
name = "Revolver"
|
||||
item_cost = 12
|
||||
@@ -49,6 +49,21 @@
|
||||
item_cost = 14
|
||||
path = /obj/item/weapon/gun/projectile/automatic/tommygun
|
||||
|
||||
/datum/uplink_item/item/visible_weapons/landmine
|
||||
name = "Land Mine"
|
||||
item_cost = 5
|
||||
path = /obj/item/weapon/landmine
|
||||
|
||||
/datum/uplink_item/item/visible_weapons/emplandmine
|
||||
name = "EMP Land Mine"
|
||||
item_cost = 4
|
||||
path = /obj/item/weapon/landmine/emp
|
||||
|
||||
/datum/uplink_item/item/visible_weapons/sleepylandmine
|
||||
name = "N2O Land Mine"
|
||||
item_cost = 7
|
||||
path = /obj/item/weapon/landmine/n2o
|
||||
|
||||
/datum/uplink_item/item/visible_weapons/heavysniper
|
||||
name = "Anti-materiel Rifle"
|
||||
item_cost = DEFAULT_TELECRYSTAL_AMOUNT
|
||||
|
||||
@@ -1,101 +0,0 @@
|
||||
/obj/effect/mine
|
||||
name = "Mine"
|
||||
desc = "I Better stay away from that thing."
|
||||
density = 1
|
||||
anchored = 1
|
||||
layer = 3
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "uglymine"
|
||||
var/triggerproc = "explode" //name of the proc thats called when the mine is triggered
|
||||
var/triggered = 0
|
||||
|
||||
/obj/effect/mine/New()
|
||||
icon_state = "uglyminearmed"
|
||||
|
||||
/obj/effect/mine/Crossed(AM as mob|obj)
|
||||
Bumped(AM)
|
||||
|
||||
/obj/effect/mine/Bumped(mob/M as mob|obj)
|
||||
|
||||
if(triggered) return
|
||||
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
for(var/mob/O in viewers(world.view, src.loc))
|
||||
O << "<font color='red'>[M] triggered the \icon[src] [src]</font>"
|
||||
triggered = 1
|
||||
call(src,triggerproc)(M)
|
||||
|
||||
/obj/effect/mine/proc/triggerrad(var/mob/living/M)
|
||||
spark(src, 3, alldirs)
|
||||
if (istype(M))
|
||||
M.apply_radiation(50)
|
||||
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mine/proc/triggerstun(obj)
|
||||
if(ismob(obj))
|
||||
var/mob/M = obj
|
||||
M.Stun(30)
|
||||
spark(src, 3, alldirs)
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mine/proc/triggern2o(obj)
|
||||
//example: n2o triggerproc
|
||||
//note: im lazy
|
||||
|
||||
for (var/turf/simulated/floor/target in range(1,src))
|
||||
if(!target.blocks_air)
|
||||
target.assume_gas("sleeping_agent", 30)
|
||||
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mine/proc/triggerphoron(obj)
|
||||
for (var/turf/simulated/floor/target in range(1,src))
|
||||
if(!target.blocks_air)
|
||||
target.assume_gas("phoron", 30)
|
||||
|
||||
target.hotspot_expose(1000, CELL_VOLUME)
|
||||
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mine/proc/triggerkick(var/mob/M)
|
||||
spark(src, 3, alldirs)
|
||||
if (istype(M))
|
||||
qdel(M.client)
|
||||
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mine/proc/explode(obj)
|
||||
explosion(loc, 0, 1, 2, 3)
|
||||
spawn(0)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/mine/dnascramble
|
||||
name = "Radiation Mine"
|
||||
icon_state = "uglymine"
|
||||
triggerproc = "triggerrad"
|
||||
|
||||
/obj/effect/mine/phoron
|
||||
name = "Phoron Mine"
|
||||
icon_state = "uglymine"
|
||||
triggerproc = "triggerphoron"
|
||||
|
||||
/obj/effect/mine/kick
|
||||
name = "Kick Mine"
|
||||
icon_state = "uglymine"
|
||||
triggerproc = "triggerkick"
|
||||
|
||||
/obj/effect/mine/n2o
|
||||
name = "N2O Mine"
|
||||
icon_state = "uglymine"
|
||||
triggerproc = "triggern2o"
|
||||
|
||||
/obj/effect/mine/stun
|
||||
name = "Stun Mine"
|
||||
icon_state = "uglymine"
|
||||
triggerproc = "triggerstun"
|
||||
@@ -0,0 +1,147 @@
|
||||
/obj/item/weapon/landmine
|
||||
name = "land mine"
|
||||
desc = "An anti-personnel explosive device used for area denial."
|
||||
icon = 'icons/obj/grenade.dmi'
|
||||
icon_state = "landmine"
|
||||
throwforce = 0
|
||||
w_class = 3
|
||||
var/deployed = 0
|
||||
|
||||
/obj/item/weapon/landmine/update_icon()
|
||||
..()
|
||||
|
||||
if(!deployed)
|
||||
icon_state = "[icon_state]"
|
||||
else
|
||||
icon_state = "[icon_state]_on"
|
||||
|
||||
/obj/item/weapon/landmine/verb/hide_under()
|
||||
set src in oview(1)
|
||||
set name = "Hide"
|
||||
set category = "Object"
|
||||
|
||||
if(use_check(user, USE_DISALLOW_SILICONS))
|
||||
return
|
||||
|
||||
layer = TURF_LAYER+0.2
|
||||
usr << "<span class='notice'>You hide \the [src].</span>"
|
||||
|
||||
|
||||
/obj/item/weapon/landmine/attack_self(mob/user as mob)
|
||||
..()
|
||||
if(!deployed && !use_check(user, USE_DISALLOW_SILICONS))
|
||||
user.visible_message(
|
||||
"<span class='danger'>[user] starts to deploy \the [src].</span>",
|
||||
"<span class='danger'>You begin deploying \the [src]!</span>"
|
||||
)
|
||||
|
||||
if (do_after(user, 60))
|
||||
user.visible_message(
|
||||
"<span class='danger'>[user] has deployed \the [src].</span>",
|
||||
"<span class='danger'>You have deployed \the [src]!</span>"
|
||||
)
|
||||
|
||||
deployed = 1
|
||||
user.drop_from_inventory(src)
|
||||
update_icon()
|
||||
anchored = 1
|
||||
|
||||
/obj/item/weapon/landmine/proc/trigger(mob/living/L)
|
||||
spark(src, 3, alldirs)
|
||||
if(ishuman(L))
|
||||
L.Weaken(2)
|
||||
explosion(loc, 0, 1, 2, 3)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/landmine/Crossed(AM as mob|obj)
|
||||
if(deployed && isliving(AM))
|
||||
var/mob/living/L = AM
|
||||
if(L.mob_size >= 5)
|
||||
L.visible_message(
|
||||
"<span class='danger'>[L] steps on \the [src].</span>",
|
||||
"<span class='danger'>You step on \the [src]!</span>",
|
||||
"<span class='danger'>You hear a mechanical click!</span>"
|
||||
)
|
||||
trigger(L)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/landmine/attack_hand(mob/user as mob)
|
||||
if(deployed && !use_check(user, USE_DISALLOW_SILICONS))
|
||||
user.visible_message(
|
||||
"<span class='danger'>[user] triggers \the [src].</span>",
|
||||
"<span class='danger'>You trigger \the [src]!</span>",
|
||||
"<span class='danger'>You hear a mechanical click!</span>"
|
||||
)
|
||||
trigger(user)
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/landmine/attackby(var/obj/item/I, var/mob/user)
|
||||
..()
|
||||
if(I.force > 10 && deployed)
|
||||
trigger(user)
|
||||
|
||||
/obj/item/weapon/landmine/bullet_act()
|
||||
if(deployed)
|
||||
trigger()
|
||||
|
||||
/obj/item/weapon/landmine/ex_act()
|
||||
if(deployed)
|
||||
trigger()
|
||||
|
||||
//landmines that do more than explode
|
||||
|
||||
/obj/item/weapon/landmine/frag
|
||||
name = "fragmentation land mine"
|
||||
var/num_fragments = 15
|
||||
var/fragment_damage = 10
|
||||
var/damage_step = 2
|
||||
var/explosion_size = 3
|
||||
var/spread_range = 7
|
||||
|
||||
/obj/item/weapon/landmine/frag/trigger(mob/living/L)
|
||||
spark(src, 3, alldirs)
|
||||
fragem(src,num_fragments,num_fragments,explosion_size,explosion_size+1,fragment_damage,damage_step,1)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/landmine/radiation
|
||||
icon_state = "radlandmine"
|
||||
|
||||
/obj/item/weapon/landmine/radiation/trigger(mob/living/L)
|
||||
spark(src, 3, alldirs)
|
||||
if(L)
|
||||
if(ishuman(L))
|
||||
L.apply_radiation(50)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/landmine/phoron
|
||||
icon_state = "phoronlandmine"
|
||||
|
||||
/obj/item/weapon/landmine/phoron/trigger(mob/living/L)
|
||||
spark(src, 3, alldirs)
|
||||
for (var/turf/simulated/floor/target in range(1,src))
|
||||
if(!target.blocks_air)
|
||||
target.assume_gas("phoron", 30)
|
||||
|
||||
target.hotspot_expose(1000, CELL_VOLUME)
|
||||
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/landmine/n2o
|
||||
icon_state = "phoronlandmine"
|
||||
|
||||
/obj/item/weapon/landmine/n2o/trigger(mob/living/L)
|
||||
spark(src, 3, alldirs)
|
||||
for (var/turf/simulated/floor/target in range(1,src))
|
||||
if(!target.blocks_air)
|
||||
target.assume_gas("sleeping_agent", 30)
|
||||
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/landmine/emp
|
||||
icon_state = "emplandmine"
|
||||
|
||||
/obj/item/weapon/landmine/emp/trigger(mob/living/L)
|
||||
spark(src, 3, alldirs)
|
||||
empulse(src.loc, 2, 4)
|
||||
qdel(src)
|
||||
@@ -0,0 +1,4 @@
|
||||
author: Alberyk
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Added explosive land mines, you can get them by using an uplink."
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.5 KiB |
Reference in New Issue
Block a user