diff --git a/aurorastation.dme b/aurorastation.dme
index 1752b65196c..dc6561e0674 100644
--- a/aurorastation.dme
+++ b/aurorastation.dme
@@ -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"
diff --git a/code/datums/uplink/highly visible and dangerous weapons.dm b/code/datums/uplink/highly visible and dangerous weapons.dm
index 81b66a809fd..1e9a00bf5bb 100644
--- a/code/datums/uplink/highly visible and dangerous weapons.dm
+++ b/code/datums/uplink/highly visible and dangerous weapons.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
diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm
deleted file mode 100644
index 383119200fb..00000000000
--- a/code/game/objects/effects/mines.dm
+++ /dev/null
@@ -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 << "[M] triggered the \icon[src] [src]"
- 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"
diff --git a/code/game/objects/items/weapons/landmines.dm b/code/game/objects/items/weapons/landmines.dm
new file mode 100644
index 00000000000..1b7bed7fea0
--- /dev/null
+++ b/code/game/objects/items/weapons/landmines.dm
@@ -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 << "You hide \the [src]."
+
+
+/obj/item/weapon/landmine/attack_self(mob/user as mob)
+ ..()
+ if(!deployed && !use_check(user, USE_DISALLOW_SILICONS))
+ user.visible_message(
+ "[user] starts to deploy \the [src].",
+ "You begin deploying \the [src]!"
+ )
+
+ if (do_after(user, 60))
+ user.visible_message(
+ "[user] has deployed \the [src].",
+ "You have deployed \the [src]!"
+ )
+
+ 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(
+ "[L] steps on \the [src].",
+ "You step on \the [src]!",
+ "You hear a mechanical click!"
+ )
+ trigger(L)
+ ..()
+
+/obj/item/weapon/landmine/attack_hand(mob/user as mob)
+ if(deployed && !use_check(user, USE_DISALLOW_SILICONS))
+ user.visible_message(
+ "[user] triggers \the [src].",
+ "You trigger \the [src]!",
+ "You hear a mechanical click!"
+ )
+ 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)
\ No newline at end of file
diff --git a/html/changelogs/alberyk-landmine.yml b/html/changelogs/alberyk-landmine.yml
new file mode 100644
index 00000000000..e51ab1e6932
--- /dev/null
+++ b/html/changelogs/alberyk-landmine.yml
@@ -0,0 +1,4 @@
+author: Alberyk
+delete-after: True
+changes:
+ - rscadd: "Added explosive land mines, you can get them by using an uplink."
diff --git a/icons/obj/grenade.dmi b/icons/obj/grenade.dmi
index 60d7b4b4d2d..51bb782b8ef 100644
Binary files a/icons/obj/grenade.dmi and b/icons/obj/grenade.dmi differ