diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm
index f777c893f8..29921c4584 100755
--- a/code/game/machinery/recharger.dm
+++ b/code/game/machinery/recharger.dm
@@ -16,8 +16,7 @@
/obj/item/melee/baton,
/obj/item/ammo_box/magazine/recharge,
/obj/item/modular_computer,
- /obj/item/gun/ballistic/automatic/magrifle_e,
- /obj/item/gun/ballistic/automatic/pistol/mag_e))
+ /obj/item/gun/ballistic/automatic/magrifle))
/obj/machinery/recharger/RefreshParts()
for(var/obj/item/stock_parts/capacitor/C in component_parts)
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index d89eeb7e3d..120303d4d7 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -13,6 +13,7 @@
w_class = WEIGHT_CLASS_SMALL
var/charge = 0 // note %age conveted to actual charge in New
var/maxcharge = 1000
+ var/start_charged = TRUE
materials = list(MAT_METAL=700, MAT_GLASS=50)
grind_results = list(/datum/reagent/lithium = 15, /datum/reagent/iron = 5, /datum/reagent/silicon = 5)
var/rigged = FALSE // true if rigged to explode
@@ -32,7 +33,8 @@
create_reagents(5, INJECTABLE | DRAINABLE)
if (override_maxcharge)
maxcharge = override_maxcharge
- charge = maxcharge
+ if(start_charged)
+ charge = maxcharge
if(ratingdesc)
desc += " This one has a rating of [DisplayEnergy(maxcharge)], and you should not swallow it."
update_icon()
@@ -163,9 +165,8 @@
return rating * maxcharge
/* Cell variants*/
-/obj/item/stock_parts/cell/empty/Initialize()
- . = ..()
- charge = 0
+/obj/item/stock_parts/cell/empty
+ start_charged = FALSE
/obj/item/stock_parts/cell/crap
name = "\improper Nanotrasen brand rechargeable AA battery"
@@ -173,10 +174,8 @@
maxcharge = 500
materials = list(MAT_GLASS=40)
-/obj/item/stock_parts/cell/crap/empty/Initialize()
- . = ..()
- charge = 0
- update_icon()
+/obj/item/stock_parts/cell/crap/empty
+ start_charged = FALSE
/obj/item/stock_parts/cell/upgraded
name = "upgraded power cell"
@@ -195,10 +194,8 @@
maxcharge = 1250 //25/12/6 disabler/laser/taser shots.
materials = list(MAT_GLASS=40)
-/obj/item/stock_parts/cell/secborg/empty/Initialize()
- . = ..()
- charge = 0
- update_icon()
+/obj/item/stock_parts/cell/secborg/empty
+ start_charged = FALSE
/obj/item/stock_parts/cell/lascarbine
name = "laser carbine power supply"
@@ -231,10 +228,8 @@
maxcharge = 15000
chargerate = 2250
-/obj/item/stock_parts/cell/high/empty/Initialize()
- . = ..()
- charge = 0
- update_icon()
+/obj/item/stock_parts/cell/high/empty
+ start_charged = FALSE
/obj/item/stock_parts/cell/super
name = "super-capacity power cell"
@@ -243,10 +238,8 @@
materials = list(MAT_GLASS=300)
chargerate = 2000
-/obj/item/stock_parts/cell/super/empty/Initialize()
- . = ..()
- charge = 0
- update_icon()
+/obj/item/stock_parts/cell/super/empty
+ start_charged = FALSE
/obj/item/stock_parts/cell/hyper
name = "hyper-capacity power cell"
@@ -255,10 +248,8 @@
materials = list(MAT_GLASS=400)
chargerate = 3000
-/obj/item/stock_parts/cell/hyper/empty/Initialize()
- . = ..()
- charge = 0
- update_icon()
+/obj/item/stock_parts/cell/hyper/empty
+ start_charged = FALSE
/obj/item/stock_parts/cell/bluespace
name = "bluespace power cell"
@@ -268,10 +259,8 @@
materials = list(MAT_GLASS=600)
chargerate = 4000
-/obj/item/stock_parts/cell/bluespace/empty/Initialize()
- . = ..()
- charge = 0
- update_icon()
+/obj/item/stock_parts/cell/bluespace/empty
+ start_charged = FALSE
/obj/item/stock_parts/cell/infinite
name = "infinite-capacity power cell!"
@@ -321,15 +310,13 @@
maxcharge = 500
rating = 3
-/obj/item/stock_parts/cell/emproof/empty/Initialize()
- . = ..()
- charge = 0
- update_icon()
-
-/obj/item/stock_parts/cell/emproof/empty/ComponentInitialize()
+/obj/item/stock_parts/cell/emproof/ComponentInitialize()
. = ..()
AddComponent(/datum/component/empprotection, EMP_PROTECT_SELF)
+/obj/item/stock_parts/cell/emproof/empty
+ start_charged = FALSE
+
/obj/item/stock_parts/cell/emproof/corrupt()
return
@@ -364,3 +351,22 @@
//found inside the inducers ordered from cargo.
/obj/item/stock_parts/cell/inducer_supply
maxcharge = 5000
+
+/obj/item/stock_parts/cell/magnetic
+ name = "magrifle power supply"
+ maxcharge = 12000
+ chargerate = 600
+
+/obj/item/stock_parts/cell/magnetic/empty
+ start_charged = FALSE
+
+/obj/item/stock_parts/cell/magnetic/pistol
+ name = "magpistol power supply"
+ maxcharge = 6000
+
+/obj/item/stock_parts/cell/magnetic/pistol/empty
+ start_charged = FALSE
+
+/obj/item/stock_parts/cell/toymagburst
+ name = "toy mag burst rifle power supply"
+ maxcharge = 4000
diff --git a/code/modules/projectiles/ammunition/caseless/ferromagnetic.dm b/code/modules/projectiles/ammunition/caseless/ferromagnetic.dm
new file mode 100644
index 0000000000..d984460235
--- /dev/null
+++ b/code/modules/projectiles/ammunition/caseless/ferromagnetic.dm
@@ -0,0 +1,39 @@
+/obj/item/ammo_casing/caseless/magnetic
+ desc = "A large ferromagnetic slug intended to be launched out of a compatible weapon."
+ caliber = "mag"
+ icon_state = "mag-casing-live"
+ click_cooldown_override = 2.5
+ delay = 3
+ var/energy_cost = 200
+
+/obj/item/ammo_casing/caseless/magnetic
+ projectile_type = /obj/item/projectile/bullet/magnetic
+
+/obj/item/ammo_casing/caseless/magnetic/disabler
+ desc = "A large, specialized ferromagnetic slug designed with a less-than-lethal payload."
+ projectile_type = /obj/item/projectile/bullet/magnetic/disabler
+
+/obj/item/ammo_casing/caseless/magnetic/weak
+ desc = "A ferromagnetic slug intended to be launched out of a compatible weapon."
+ projectile_type = /obj/item/projectile/bullet/magnetic/weak
+ energy_cost = 125
+
+/obj/item/ammo_casing/caseless/magnetic/weak/disabler
+ desc = "A specialized ferromagnetic slug designed with a less-than-lethal payload."
+ projectile_type = /obj/item/projectile/bullet/magnetic/weak/disabler
+ energy_cost = 125
+
+/obj/item/ammo_casing/caseless/magnetic/hyper
+ desc = "A large block of speciallized ferromagnetic material designed to be fired out of the experimental Hyper-Burst Rifle."
+ caliber = "hypermag"
+ icon_state = "hyper-casing-live"
+ projectile_type = /obj/item/projectile/bullet/magnetic/hyper
+ pellets = 8
+ variance = 30
+ energy_cost = 1500
+
+/obj/item/ammo_casing/caseless/magnetic/hyper/inferno
+ projectile_type = /obj/item/projectile/bullet/incendiary/mag_inferno
+ pellets = 1
+ variance = 0
+
diff --git a/code/modules/projectiles/ammunition/caseless/foam.dm b/code/modules/projectiles/ammunition/caseless/foam.dm
index 1040c08d87..dd29f075f1 100644
--- a/code/modules/projectiles/ammunition/caseless/foam.dm
+++ b/code/modules/projectiles/ammunition/caseless/foam.dm
@@ -63,3 +63,8 @@
projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/riot
icon_state = "foamdart_riot"
materials = list(MAT_METAL = 1125)
+
+/obj/item/ammo_casing/caseless/foam_dart/mag
+ name = "magfoam dart"
+ desc = "A foam dart with fun light-up projectiles powered by magnets!"
+ projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/mag
diff --git a/code/modules/projectiles/ammunition/energy/laser.dm b/code/modules/projectiles/ammunition/energy/laser.dm
index f0aa9eae1f..174645dd11 100644
--- a/code/modules/projectiles/ammunition/energy/laser.dm
+++ b/code/modules/projectiles/ammunition/energy/laser.dm
@@ -62,6 +62,14 @@
/obj/item/ammo_casing/energy/laser/redtag/hitscan/holy
projectile_type = /obj/item/projectile/beam/lasertag/redtag/hitscan/holy
+/obj/item/ammo_casing/energy/laser/magtag
+ projectile_type = /obj/item/projectile/beam/lasertag/mag
+ select_name = "magtag"
+ pellets = 3
+ variance = 30
+ e_cost = 1000
+ fire_sound = 'sound/weapons/magburst.ogg'
+
/obj/item/ammo_casing/energy/xray
projectile_type = /obj/item/projectile/beam/xray
e_cost = 50
diff --git a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm
index ba6a8e2454..2842f13db5 100644
--- a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm
+++ b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm
@@ -87,7 +87,14 @@
max_ammo = 40
materials = list(MAT_METAL = 500)
+/obj/item/ammo_box/foambox/mag
+ name = "ammo box (Magnetic Foam Darts)"
+ icon = 'icons/obj/guns/toy.dmi'
+ icon_state = "foambox"
+ ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag
+ max_ammo = 42
+
/obj/item/ammo_box/foambox/riot
icon_state = "foambox_riot"
ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot
- materials = list(MAT_METAL = 50000)
\ No newline at end of file
+ materials = list(MAT_METAL = 50000)
diff --git a/code/modules/projectiles/boxes_magazines/external/magweapon.dm b/code/modules/projectiles/boxes_magazines/external/magweapon.dm
new file mode 100644
index 0000000000..fa90170ace
--- /dev/null
+++ b/code/modules/projectiles/boxes_magazines/external/magweapon.dm
@@ -0,0 +1,34 @@
+/obj/item/ammo_box/magazine/mmag
+ icon_state = "mediummagmag"
+ ammo_type = /obj/item/ammo_casing/caseless/magnetic/disabler
+ caliber = "mag"
+ max_ammo = 24
+ multiple_sprites = 2
+
+/obj/item/ammo_box/magazine/mmag/lethal
+ name = "magrifle magazine (lethal)"
+ ammo_type = /obj/item/ammo_casing/caseless/magnetic
+
+/obj/item/ammo_box/magazine/mmag/small
+ name = "magpistol magazine (non-lethal disabler)"
+ icon_state = "smallmagmag"
+ ammo_type = /obj/item/ammo_casing/caseless/magnetic/weak/disabler
+ max_ammo = 15
+
+/obj/item/ammo_box/magazine/mmag/small/lethal
+ name = "magpistol magazine (lethal)"
+ ammo_type = /obj/item/ammo_casing/caseless/magnetic/weak
+
+/obj/item/ammo_box/magazine/mhyper
+ name = "hyper-burst rifle magazine"
+ icon_state = "hypermag"
+ ammo_type = /obj/item/ammo_casing/caseless/magnetic/hyper
+ caliber = "hypermag"
+ desc = "A magazine for the Hyper-Burst Rifle. Loaded with a special slug that fragments into 6 smaller shards which can absolutely puncture anything, but has rather short effective range."
+ max_ammo = 4
+ multiple_sprites = 4
+
+/obj/item/ammo_box/magazine/mhyper/inferno
+ name = "hyper-burst rifle magazine (inferno)"
+ ammo_type = /obj/item/ammo_casing/caseless/magnetic/hyper/inferno
+ desc = "A magazine for the Hyper-Burst Rifle. Loaded with a special slug that violently reacts with whatever surface it strikes, generating massive amount of heat and light."
diff --git a/code/modules/projectiles/boxes_magazines/external/toy.dm b/code/modules/projectiles/boxes_magazines/external/toy.dm
index b9e1ec9615..04bcad284d 100644
--- a/code/modules/projectiles/boxes_magazines/external/toy.dm
+++ b/code/modules/projectiles/boxes_magazines/external/toy.dm
@@ -57,3 +57,11 @@
/obj/item/ammo_box/magazine/toy/m762/riot
icon_state = "a762-riot"
ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot
+
+/obj/item/ammo_box/magazine/toy/foamag
+ name = "foam force magrifle magazine"
+ icon_state = "foamagmag"
+ max_ammo = 24
+ multiple_sprites = 2
+ ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag
+ materials = list(MAT_METAL = 200)
diff --git a/code/modules/projectiles/boxes_magazines/internal/toy.dm b/code/modules/projectiles/boxes_magazines/internal/toy.dm
index 7a520c6a1f..6de018c6af 100644
--- a/code/modules/projectiles/boxes_magazines/internal/toy.dm
+++ b/code/modules/projectiles/boxes_magazines/internal/toy.dm
@@ -5,3 +5,7 @@
/obj/item/ammo_box/magazine/internal/shot/toy/crossbow
max_ammo = 5
+
+/obj/item/ammo_box/magazine/internal/shot/toy/mag
+ ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag
+ max_ammo = 14
diff --git a/code/modules/projectiles/guns/ballistic/magweapon.dm b/code/modules/projectiles/guns/ballistic/magweapon.dm
new file mode 100644
index 0000000000..f366063a74
--- /dev/null
+++ b/code/modules/projectiles/guns/ballistic/magweapon.dm
@@ -0,0 +1,103 @@
+/obj/item/gun/ballistic/automatic/magrifle
+ name = "\improper Magnetic Rifle"
+ desc = "A simple upscalling of the technologies used in the magpistol, the magrifle is capable of firing slightly larger slugs in bursts. Compatible with the magpistol's slugs."
+ icon_state = "magrifle"
+ item_state = "arg"
+ force = 10
+ slot_flags = NONE
+ mag_type = /obj/item/ammo_box/magazine/mmag
+ fire_sound = 'sound/weapons/magrifle.ogg'
+ can_suppress = FALSE
+ burst_size = 1
+ actions_types = null
+ fire_delay = 3
+ spread = 0
+ recoil = 0.1
+ casing_ejector = FALSE
+ inaccuracy_modifier = 0.5
+ dualwield_spread_mult = 1.4
+ weapon_weight = WEAPON_MEDIUM
+ var/obj/item/stock_parts/cell/cell
+ var/cell_type = /obj/item/stock_parts/cell/magnetic
+
+/obj/item/gun/ballistic/automatic/magrifle/Initialize()
+ . = ..()
+ if(cell_type)
+ cell = new cell_type(src)
+ else
+ cell = new(src)
+
+/obj/item/gun/ballistic/automatic/magrifle/examine(mob/user)
+ . = ..()
+ if(cell)
+ . += "[src]'s cell is [round(cell.charge / cell.maxcharge, 0.1) * 100]% full."
+ else
+ . += "[src] doesn't seem to have a cell!"
+
+/obj/item/gun/ballistic/automatic/magrifle/can_shoot()
+ if(QDELETED(cell))
+ return 0
+
+ var/obj/item/ammo_casing/caseless/magnetic/shot = chambered
+ if(!shot)
+ return 0
+ if(cell.charge < shot.energy_cost * burst_size)
+ return 0
+ . = ..()
+
+/obj/item/gun/ballistic/automatic/magrifle/shoot_live_shot()
+ var/obj/item/ammo_casing/caseless/magnetic/shot = chambered
+ cell.use(shot.energy_cost)
+ . = ..()
+
+/obj/item/gun/ballistic/automatic/magrifle/emp_act(severity)
+ . = ..()
+ if(!(. & EMP_PROTECT_CONTENTS))
+ cell.use(round(cell.charge / severity))
+
+/obj/item/gun/ballistic/automatic/magrifle/get_cell()
+ return cell
+
+/obj/item/gun/ballistic/automatic/magrifle/nopin
+ pin = null
+ spawnwithmagazine = FALSE
+ cell_type = /obj/item/stock_parts/cell/magnetic/empty
+
+/obj/item/gun/ballistic/automatic/magrifle/hyperburst
+ name = "\improper Hyper-Burst Rifle"
+ desc = "An extremely beefed up version of a stolen Nanotrasen weapon prototype, this 'rifle' is more like a cannon, with an extremely large bore barrel capable of generating several smaller magnetic 'barrels' to simultaneously launch multiple projectiles at once."
+ icon_state = "hyperburst"
+ item_state = "arg"
+ mag_type = /obj/item/ammo_box/magazine/mhyper
+ fire_sound = 'sound/weapons/magburst.ogg'
+ fire_delay = 40
+ recoil = 2
+ weapon_weight = WEAPON_HEAVY
+
+/obj/item/gun/ballistic/automatic/magrifle/hyperburst/update_icon()
+ ..()
+ icon_state = "hyperburst[magazine ? "-[get_ammo()]" : ""][chambered ? "" : "-e"]"
+
+///magpistol///
+
+/obj/item/gun/ballistic/automatic/magrifle/pistol
+ name = "magpistol"
+ desc = "A handgun utilizing maglev technologies to propel a ferromagnetic slug to extreme velocities."
+ icon_state = "magpistol"
+ fire_sound = 'sound/weapons/magpistol.ogg'
+ mag_type = /obj/item/ammo_box/magazine/mmag/small
+ fire_delay = 2
+ inaccuracy_modifier = 0.25
+ cell_type = /obj/item/stock_parts/cell/magnetic/pistol
+
+/obj/item/gun/ballistic/automatic/magrifle/pistol/update_icon()
+ ..()
+ cut_overlays()
+ if(magazine)
+ add_overlay("magpistol-magazine")
+ icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
+
+/obj/item/gun/ballistic/automatic/magrifle/pistol/nopin
+ pin = null
+ spawnwithmagazine = FALSE
+ cell_type = /obj/item/stock_parts/cell/magnetic/pistol/empty
diff --git a/code/modules/projectiles/guns/ballistic/toy.dm b/code/modules/projectiles/guns/ballistic/toy.dm
index 8b358832b0..4060a02c0f 100644
--- a/code/modules/projectiles/guns/ballistic/toy.dm
+++ b/code/modules/projectiles/guns/ballistic/toy.dm
@@ -109,3 +109,36 @@
/obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted/riot
mag_type = /obj/item/ammo_box/magazine/toy/m762/riot
+
+/obj/item/gun/ballistic/automatic/toy/magrifle
+ name = "foamag rifle"
+ desc = "A foam launching magnetic rifle. Ages 8 and up."
+ icon_state = "foamagrifle"
+ obj_flags = NONE
+ mag_type = /obj/item/ammo_box/magazine/toy/foamag
+ fire_sound = 'sound/weapons/magrifle.ogg'
+ burst_size = 1
+ actions_types = null
+ fire_delay = 3
+ spread = 60
+ recoil = 0.1
+ can_suppress = FALSE
+ inaccuracy_modifier = 0.5
+ weapon_weight = WEAPON_MEDIUM
+ dualwield_spread_mult = 1.4
+ w_class = WEIGHT_CLASS_BULKY
+
+/obj/item/gun/ballistic/shotgun/toy/mag
+ name = "foam force magpistol"
+ desc = "A fancy toy sold alongside light-up foam force darts. Ages 8 and up."
+ icon_state = "toymag"
+ item_state = "gun"
+ mag_type = /obj/item/ammo_box/magazine/internal/shot/toy/mag
+ fire_sound = 'sound/weapons/magpistol.ogg'
+ fire_delay = 2
+ recoil = 0.1
+ inaccuracy_modifier = 0.25
+ dualwield_spread_mult = 1.4
+ slot_flags = SLOT_BELT
+ w_class = WEIGHT_CLASS_NORMAL
+ weapon_weight = WEAPON_MEDIUM
diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm
index 1e1af62d5a..32f3416faf 100644
--- a/code/modules/projectiles/guns/energy/laser.dm
+++ b/code/modules/projectiles/guns/energy/laser.dm
@@ -16,6 +16,19 @@
clumsy_check = 0
item_flags = NONE
+/obj/item/gun/energy/laser/practice/hyperburst
+ name = "toy hyper-burst launcher"
+ desc = "A toy laser with a unique beam shaping lens that projects harmless bolts capable of going through objects. Compatible with existing laser tag systems."
+ ammo_type = list(/obj/item/ammo_casing/energy/laser/magtag)
+ icon_state = "toyburst"
+ obj_flags = NONE
+ fire_delay = 40
+ weapon_weight = WEAPON_HEAVY
+ selfcharge = EGUN_SELFCHARGE
+ charge_delay = 2
+ recoil = 2
+ cell_type = /obj/item/stock_parts/cell/toymagburst
+
/obj/item/gun/energy/laser/retro
name ="retro laser gun"
icon_state = "retro"
diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm
index d71e081dac..389bf84904 100644
--- a/code/modules/projectiles/projectile/beams.dm
+++ b/code/modules/projectiles/projectile/beams.dm
@@ -146,6 +146,15 @@
if(M.wear_suit.type in suit_types)
M.adjustStaminaLoss(34)
+/obj/item/projectile/beam/lasertag/mag //the projectile, compatible with regular laser tag armor
+ icon_state = "magjectile-toy"
+ name = "lasertag magbolt"
+ movement_type = FLYING | UNSTOPPABLE //for penetration memes
+ range = 5 //so it isn't super annoying
+ light_range = 2
+ light_color = LIGHT_COLOR_YELLOW
+ eyeblur = 0
+
/obj/item/projectile/beam/lasertag/redtag
icon_state = "laser"
suit_types = list(/obj/item/clothing/suit/bluetag)
diff --git a/code/modules/projectiles/projectile/bullets/ferromagnetic.dm b/code/modules/projectiles/projectile/bullets/ferromagnetic.dm
new file mode 100644
index 0000000000..2d66e25256
--- /dev/null
+++ b/code/modules/projectiles/projectile/bullets/ferromagnetic.dm
@@ -0,0 +1,49 @@
+/obj/item/projectile/bullet/magnetic
+ icon_state = "magjectile"
+ damage = 20
+ armour_penetration = 20
+ light_range = 3
+ speed = 0.6
+ range = 35
+ light_color = LIGHT_COLOR_RED
+
+/obj/item/projectile/bullet/magnetic/disabler
+ icon_state = "magjectile-nl" //nl stands for non-lethal
+ damage = 2
+ armour_penetration = 10
+ stamina = 20
+ light_color = LIGHT_COLOR_BLUE
+
+/obj/item/projectile/bullet/magnetic/weak
+ damage = 15
+ armour_penetration = 10
+ light_range = 2
+ range = 25
+
+/obj/item/projectile/bullet/magnetic/weak/disabler
+ damage = 2
+ stamina = 20
+
+/obj/item/projectile/bullet/magnetic/hyper
+ damage = 10
+ armour_penetration = 20
+ stamina = 10
+ movement_type = FLYING | UNSTOPPABLE
+ range = 6
+ light_range = 1
+ light_color = LIGHT_COLOR_RED
+
+/obj/item/projectile/bullet/incendiary/mag_inferno
+ icon_state = "magjectile-large"
+ damage = 10
+ armour_penetration = 20
+ movement_type = FLYING | UNSTOPPABLE
+ range = 20
+ speed = 0.8
+ light_range = 4
+ light_color = LIGHT_COLOR_RED
+
+/obj/item/projectile/bullet/incendiary/mag_inferno/on_hit(atom/target, blocked = FALSE)
+ ..()
+ explosion(target, -1, 0, 0, 1, 2, flame_range = 2)
+ return BULLET_ACT_HIT
diff --git a/code/modules/projectiles/projectile/reusable/foam_dart.dm b/code/modules/projectiles/projectile/reusable/foam_dart.dm
index 42f6218b6c..7d21f663c2 100644
--- a/code/modules/projectiles/projectile/reusable/foam_dart.dm
+++ b/code/modules/projectiles/projectile/reusable/foam_dart.dm
@@ -39,3 +39,10 @@
icon_state = "foamdart_riot_proj"
ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot
stamina = 25
+
+/obj/item/projectile/bullet/reusable/foam_dart/mag
+ name = "magfoam dart"
+ icon_state = "magjectile-toy"
+ ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag
+ light_range = 2
+ light_color = LIGHT_COLOR_YELLOW
diff --git a/code/modules/research/designs/autoylathe_designs.dm b/code/modules/research/designs/autoylathe_designs.dm
index 1773286e6b..d54dce9e8a 100644
--- a/code/modules/research/designs/autoylathe_designs.dm
+++ b/code/modules/research/designs/autoylathe_designs.dm
@@ -584,7 +584,7 @@
id = "foam_magrifle"
build_type = AUTOYLATHE
materials = list(MAT_PLASTIC = 4000, MAT_METAL = 500)
- build_path = /obj/item/gun/ballistic/automatic/magrifle/toy
+ build_path = /obj/item/gun/ballistic/automatic/toy/magrifle
category = list("initial", "Rifles")
/datum/design/foam_hyperburst
diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm
index e6f4670f87..1d65edbe9a 100644
--- a/code/modules/research/designs/weapon_designs.dm
+++ b/code/modules/research/designs/weapon_designs.dm
@@ -47,6 +47,44 @@
category = list("Ammo")
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+//////////////////
+//Mag-Rifle Mags//
+//////////////////
+
+/datum/design/mag_magrifle
+ name = "Magrifle Magazine (Lethal)"
+ desc = "A 24-round magazine for the Magrifle."
+ id = "mag_magrifle"
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 8000, MAT_SILVER = 1000)
+ build_path = /obj/item/ammo_box/magazine/mmag/lethal
+ category = list("Ammo")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
+/datum/design/mag_magrifle/nl
+ name = "Magrifle Magazine (Non-Lethal)"
+ desc = "A 24- round non-lethal magazine for the Magrifle."
+ id = "mag_magrifle_nl"
+ materials = list(MAT_METAL = 6000, MAT_SILVER = 500, MAT_TITANIUM = 500)
+ build_path = /obj/item/ammo_box/magazine/mmag
+
+/datum/design/mag_magpistol
+ name = "Magpistol Magazine"
+ desc = "A 14 round magazine for the Magpistol."
+ id = "mag_magpistol"
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 4000, MAT_SILVER = 500)
+ build_path = /obj/item/ammo_box/magazine/mmag/small/lethal
+ category = list("Ammo")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
+/datum/design/mag_magpistol/nl
+ name = "Magpistol Magazine (Non-Lethal)"
+ desc = "A 14 round non-lethal magazine for the Magpistol."
+ id = "mag_magpistol_nl"
+ materials = list(MAT_METAL = 3000, MAT_SILVER = 250, MAT_TITANIUM = 250)
+ build_path = /obj/item/ammo_box/magazine/mmag/small
+
//////////////
//WT550 Mags//
//////////////
@@ -323,6 +361,26 @@
category = list("Weapons")
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+/datum/design/magpistol
+ name = "Magpistol"
+ desc = "A weapon which fires ferromagnetic slugs."
+ id = "magpistol"
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 7500, MAT_GLASS = 1000, MAT_URANIUM = 1000, MAT_TITANIUM = 5000, MAT_SILVER = 2000)
+ build_path = /obj/item/gun/ballistic/automatic/magrifle/pistol/nopin
+ category = list("Weapons")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
+/datum/design/magrifle
+ name = "Magrifle"
+ desc = "An upscaled Magpistol in rifle form."
+ id = "magrifle"
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 2000, MAT_TITANIUM = 10000, MAT_SILVER = 4000, MAT_GOLD = 2000)
+ build_path = /obj/item/gun/ballistic/automatic/magrifle/nopin
+ category = list("Weapons")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
///////////
//Grenades/
///////////
diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm
index c02fdc7c72..15e88fc811 100644
--- a/code/modules/research/techweb/all_nodes.dm
+++ b/code/modules/research/techweb/all_nodes.dm
@@ -697,6 +697,15 @@
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
export_price = 5000
+/datum/techweb_node/magnetic_weapons
+ id = "magnetic_weapons"
+ display_name = "Magnetic Weapons"
+ description = "Weapons using magnetic technology"
+ prereq_ids = list("weaponry", "adv_weaponry", "emp_adv")
+ design_ids = list("magrifle", "magpistol", "mag_magrifle", "mag_magrifle_nl", "mag_magpistol", "mag_magpistol_nl")
+ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
+ export_price = 5000
+
/datum/techweb_node/medical_weapons
id = "medical_weapons"
display_name = "Medical Weaponry"
diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi
index 6282e555fa..55cbcc66e0 100644
Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ
diff --git a/icons/obj/guns/energy.dmi b/icons/obj/guns/energy.dmi
index c30e8aa6bd..c68728a91f 100644
Binary files a/icons/obj/guns/energy.dmi and b/icons/obj/guns/energy.dmi differ
diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi
index 24ec5797d4..b85c769bcd 100644
Binary files a/icons/obj/guns/projectile.dmi and b/icons/obj/guns/projectile.dmi differ
diff --git a/icons/obj/guns/toy.dmi b/icons/obj/guns/toy.dmi
index f41c289746..56fa76b41b 100644
Binary files a/icons/obj/guns/toy.dmi and b/icons/obj/guns/toy.dmi differ
diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi
index a434994846..668f3388ce 100644
Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ
diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm
deleted file mode 100644
index 9779b47b15..0000000000
--- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm
+++ /dev/null
@@ -1,470 +0,0 @@
-///////XCOM X9 AR///////
-
-/obj/item/gun/ballistic/automatic/x9 //will be adminspawn only so ERT or something can use them
- name = "\improper X9 Assault Rifle"
- desc = "A rather old design of a cheap, reliable assault rifle made for combat against unknown enemies. Uses 5.56mm ammo."
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "x9"
- item_state = "arg"
- slot_flags = 0
- mag_type = /obj/item/ammo_box/magazine/m556 //Uses the m90gl's magazine, just like the NT-ARG
- fire_sound = 'sound/weapons/gunshot_smg.ogg'
- can_suppress = 0
- burst_size = 6 //in line with XCOMEU stats. This can fire 5 bursts from a full magazine.
- fire_delay = 1
- spread = 30 //should be 40 for XCOM memes, but since its adminspawn only, might as well make it useable
- recoil = 1
-
-///toy memes///
-
-/obj/item/ammo_box/magazine/toy/x9
- name = "foam force X9 magazine"
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "toy9magazine"
- max_ammo = 30
- multiple_sprites = 2
- materials = list(MAT_METAL = 200)
-
-/obj/item/gun/ballistic/automatic/x9/toy
- name = "\improper Foam Force X9"
- desc = "An old but reliable assault rifle made for combat against unknown enemies. Appears to be hastily converted. Ages 8 and up."
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "toy9"
- can_suppress = 0
- obj_flags = 0
- mag_type = /obj/item/ammo_box/magazine/toy/x9
- casing_ejector = 0
- spread = 90 //MAXIMUM XCOM MEMES (actually that'd be 180 spread)
- w_class = WEIGHT_CLASS_BULKY
- weapon_weight = WEAPON_HEAVY
-
-////////XCOM2 Magpistol/////////
-
-//////projectiles//////
-
-/obj/item/projectile/bullet/mags
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "magjectile"
- damage = 15
- armour_penetration = 10
- light_range = 2
- speed = 0.6
- range = 25
- light_color = LIGHT_COLOR_RED
-
-/obj/item/projectile/bullet/nlmags //non-lethal boolets
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "magjectile-nl"
- damage = 2
- knockdown = 0
- stamina = 20
- light_range = 2
- speed = 0.6
- range = 25
- light_color = LIGHT_COLOR_BLUE
-
-
-/////actual ammo/////
-
-/obj/item/ammo_casing/caseless/amags
- desc = "A ferromagnetic slug intended to be launched out of a compatible weapon."
- caliber = "mags"
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "mag-casing-live"
- projectile_type = /obj/item/projectile/bullet/mags
-
-/obj/item/ammo_casing/caseless/anlmags
- desc = "A specialized ferromagnetic slug designed with a less-than-lethal payload."
- caliber = "mags"
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "mag-casing-live"
- projectile_type = /obj/item/projectile/bullet/nlmags
-
-//////magazines/////
-
-/obj/item/ammo_box/magazine/mmag/small
- name = "magpistol magazine (non-lethal disabler)"
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "smallmagmag"
- ammo_type = /obj/item/ammo_casing/caseless/anlmags
- caliber = "mags"
- max_ammo = 15
- multiple_sprites = 2
-
-/obj/item/ammo_box/magazine/mmag/small/lethal
- name = "magpistol magazine (lethal)"
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "smallmagmag"
- ammo_type = /obj/item/ammo_casing/caseless/amags
-
-//////the gun itself//////
-
-/obj/item/gun/ballistic/automatic/pistol/mag
- name = "magpistol"
- desc = "A handgun utilizing maglev technologies to propel a ferromagnetic slug to extreme velocities."
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "magpistol"
- force = 10
- fire_sound = 'sound/weapons/magpistol.ogg'
- mag_type = /obj/item/ammo_box/magazine/mmag/small
- can_suppress = 0
- casing_ejector = FALSE
- fire_delay = 2
- recoil = 0.1
- inaccuracy_modifier = 0.25
-
-/obj/item/gun/ballistic/automatic/pistol/mag/update_icon()
- ..()
- if(magazine)
- cut_overlays()
- add_overlay("magpistol-magazine")
- else
- cut_overlays()
- icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
-
-///research memes///
-/obj/item/gun/ballistic/automatic/pistol/mag/nopin
- pin = null
- spawnwithmagazine = FALSE
-
-/datum/design/magpistol
- name = "Magpistol"
- desc = "A weapon which fires ferromagnetic slugs."
- id = "magpisol"
- build_type = PROTOLATHE
- materials = list(MAT_METAL = 7500, MAT_GLASS = 1000, MAT_URANIUM = 1000, MAT_TITANIUM = 5000, MAT_SILVER = 2000)
- build_path = /obj/item/gun/ballistic/automatic/pistol/mag/nopin
- category = list("Weapons")
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY
-
-/datum/design/mag_magpistol
- name = "Magpistol Magazine"
- desc = "A 14 round magazine for the Magpistol."
- id = "mag_magpistol"
- build_type = PROTOLATHE
- materials = list(MAT_METAL = 4000, MAT_SILVER = 500)
- build_path = /obj/item/ammo_box/magazine/mmag/small/lethal
- category = list("Ammo")
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY
-
-/datum/design/mag_magpistol/nl
- name = "Magpistol Magazine (Non-Lethal)"
- desc = "A 14 round non-lethal magazine for the Magpistol."
- id = "mag_magpistol_nl"
- materials = list(MAT_METAL = 3000, MAT_SILVER = 250, MAT_TITANIUM = 250)
- build_path = /obj/item/ammo_box/magazine/mmag/small
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY
-
-//////toy memes/////
-
-/obj/item/projectile/bullet/reusable/foam_dart/mag
- name = "magfoam dart"
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "magjectile-toy"
- ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag
- light_range = 2
- light_color = LIGHT_COLOR_YELLOW
-
-/obj/item/ammo_casing/caseless/foam_dart/mag
- name = "magfoam dart"
- desc = "A foam dart with fun light-up projectiles powered by magnets!"
- projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/mag
-
-/obj/item/ammo_box/magazine/internal/shot/toy/mag
- ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag
- max_ammo = 14
-
-/obj/item/gun/ballistic/shotgun/toy/mag
- name = "foam force magpistol"
- desc = "A fancy toy sold alongside light-up foam force darts. Ages 8 and up."
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "toymag"
- item_state = "gun"
- mag_type = /obj/item/ammo_box/magazine/internal/shot/toy/mag
- fire_sound = 'sound/weapons/magpistol.ogg'
- slot_flags = SLOT_BELT
- w_class = WEIGHT_CLASS_SMALL
-
-/obj/item/ammo_box/foambox/mag
- name = "ammo box (Magnetic Foam Darts)"
- icon = 'icons/obj/guns/toy.dmi'
- icon_state = "foambox"
- ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag
- max_ammo = 42
-
-//////Magrifle//////
-
-///projectiles///
-
-/obj/item/projectile/bullet/magrifle
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "magjectile-large"
- damage = 20
- armour_penetration = 20
- light_range = 3
- speed = 0.6
- range = 35
- light_color = LIGHT_COLOR_RED
-
-/obj/item/projectile/bullet/nlmagrifle //non-lethal boolets
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "magjectile-large-nl"
- damage = 2
- knockdown = 0
- stamina = 20
- armour_penetration = 10
- light_range = 3
- speed = 0.6
- range = 35
- light_color = LIGHT_COLOR_BLUE
-
-///ammo casings///
-
-/obj/item/ammo_casing/caseless/amagm
- desc = "A large ferromagnetic slug intended to be launched out of a compatible weapon."
- caliber = "magm"
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "mag-casing-live"
- projectile_type = /obj/item/projectile/bullet/magrifle
- click_cooldown_override = 2.5
- delay = 3
-
-/obj/item/ammo_casing/caseless/anlmagm
- desc = "A large, specialized ferromagnetic slug designed with a less-than-lethal payload."
- caliber = "magm"
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "mag-casing-live"
- projectile_type = /obj/item/projectile/bullet/nlmagrifle
- click_cooldown_override = 2.5
- delay = 3
-
-///magazines///
-
-/obj/item/ammo_box/magazine/mmag
- name = "magrifle magazine (non-lethal disabler)"
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "mediummagmag"
- ammo_type = /obj/item/ammo_casing/caseless/anlmagm
- caliber = "magm"
- max_ammo = 24
- multiple_sprites = 2
-
-/obj/item/ammo_box/magazine/mmag/lethal
- name = "magrifle magazine (lethal)"
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "mediummagmag"
- ammo_type = /obj/item/ammo_casing/caseless/amagm
- max_ammo = 24
-
-///the gun itself///
-
-/obj/item/gun/ballistic/automatic/magrifle
- name = "\improper Magnetic Rifle"
- desc = "A simple upscalling of the technologies used in the magpistol, the magrifle is capable of firing slightly larger slugs in bursts. Compatible with the magpistol's slugs."
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "magrifle"
- item_state = "arg"
- slot_flags = NONE
- mag_type = /obj/item/ammo_box/magazine/mmag
- fire_sound = 'sound/weapons/magrifle.ogg'
- can_suppress = 0
- burst_size = 1
- actions_types = null
- fire_delay = 3
- spread = 0
- recoil = 0.1
- casing_ejector = FALSE
- inaccuracy_modifier = 0.5
- weapon_weight = WEAPON_MEDIUM
- dualwield_spread_mult = 1.4
-
-//research///
-
-/obj/item/gun/ballistic/automatic/magrifle/nopin
- pin = null
- spawnwithmagazine = FALSE
-
-/datum/design/magrifle
- name = "Magrifle"
- desc = "An upscaled Magpistol in rifle form."
- id = "magrifle"
- build_type = PROTOLATHE
- materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 2000, MAT_TITANIUM = 10000, MAT_SILVER = 4000, MAT_GOLD = 2000)
- build_path = /obj/item/gun/ballistic/automatic/magrifle/nopin
- category = list("Weapons")
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY
-
-/datum/design/mag_magrifle
- name = "Magrifle Magazine (Lethal)"
- desc = "A 24-round magazine for the Magrifle."
- id = "mag_magrifle"
- build_type = PROTOLATHE
- materials = list(MAT_METAL = 8000, MAT_SILVER = 1000)
- build_path = /obj/item/ammo_box/magazine/mmag/lethal
- category = list("Ammo")
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY
-
-/datum/design/mag_magrifle/nl
- name = "Magrifle Magazine (Non-Lethal)"
- desc = "A 24- round non-lethal magazine for the Magrifle."
- id = "mag_magrifle_nl"
- materials = list(MAT_METAL = 6000, MAT_SILVER = 500, MAT_TITANIUM = 500)
- build_path = /obj/item/ammo_box/magazine/mmag
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY
-
-///foamagrifle///
-
-/obj/item/ammo_box/magazine/toy/foamag
- name = "foam force magrifle magazine"
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "foamagmag"
- max_ammo = 24
- multiple_sprites = 2
- ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag
- materials = list(MAT_METAL = 200)
-
-/obj/item/gun/ballistic/automatic/magrifle/toy
- name = "foamag rifle"
- desc = "A foam launching magnetic rifle. Ages 8 and up."
- icon_state = "foamagrifle"
- obj_flags = 0
- mag_type = /obj/item/ammo_box/magazine/toy/foamag
- casing_ejector = FALSE
- spread = 60
- w_class = WEIGHT_CLASS_BULKY
- weapon_weight = WEAPON_HEAVY
-// TECHWEBS IMPLEMENTATION
-//
-
-/datum/techweb_node/magnetic_weapons
- id = "magnetic_weapons"
- display_name = "Magnetic Weapons"
- description = "Weapons using magnetic technology"
- prereq_ids = list("weaponry", "adv_weaponry", "emp_adv")
- design_ids = list("magrifle", "magpisol", "mag_magrifle", "mag_magrifle_nl", "mag_magpistol", "mag_magpistol_nl")
- research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
- export_price = 5000
-
-//////Hyper-Burst Rifle//////
-
-///projectiles///
-
-/obj/item/projectile/bullet/mags/hyper
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "magjectile"
- damage = 10
- armour_penetration = 10
- stamina = 10
- movement_type = FLYING | UNSTOPPABLE
- range = 6
- light_range = 1
- light_color = LIGHT_COLOR_RED
-
-/obj/item/projectile/bullet/mags/hyper/inferno
- icon_state = "magjectile-large"
- stamina = 0
- movement_type = FLYING | UNSTOPPABLE
- range = 25
- light_range = 4
-
-/obj/item/projectile/bullet/mags/hyper/inferno/on_hit(atom/target, blocked = FALSE)
- ..()
- explosion(target, -1, 1, 2, 4, 5)
- return BULLET_ACT_HIT
-
-///ammo casings///
-
-/obj/item/ammo_casing/caseless/ahyper
- desc = "A large block of speciallized ferromagnetic material designed to be fired out of the experimental Hyper-Burst Rifle."
- caliber = "hypermag"
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "hyper-casing-live"
- projectile_type = /obj/item/projectile/bullet/mags/hyper
- pellets = 12
- variance = 40
-
-/obj/item/ammo_casing/caseless/ahyper/inferno
- projectile_type = /obj/item/projectile/bullet/mags/hyper/inferno
- pellets = 1
- variance = 0
-
-///magazines///
-
-/obj/item/ammo_box/magazine/mhyper
- name = "hyper-burst rifle magazine"
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "hypermag-4"
- ammo_type = /obj/item/ammo_casing/caseless/ahyper
- caliber = "hypermag"
- desc = "A magazine for the Hyper-Burst Rifle. Loaded with a special slug that fragments into 12 smaller shards which can absolutely puncture anything, but has rather short effective range."
- max_ammo = 4
-
-/obj/item/ammo_box/magazine/mhyper/update_icon()
- ..()
- icon_state = "hypermag-[ammo_count() ? "4" : "0"]"
-
-/obj/item/ammo_box/magazine/mhyper/inferno
- name = "hyper-burst rifle magazine (inferno)"
- ammo_type = /obj/item/ammo_casing/caseless/ahyper/inferno
- desc = "A magazine for the Hyper-Burst Rifle. Loaded with a special slug that violently reacts with whatever surface it strikes, generating a massive amount of heat and light."
-
-///gun itself///
-
-/obj/item/gun/ballistic/automatic/hyperburst
- name = "\improper Hyper-Burst Rifle"
- desc = "An extremely beefed up version of a stolen Nanotrasen weapon prototype, this 'rifle' is more like a cannon, with an extremely large bore barrel capable of generating several smaller magnetic 'barrels' to simultaneously launch multiple projectiles at once."
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "hyperburst"
- item_state = "arg"
- slot_flags = 0
- mag_type = /obj/item/ammo_box/magazine/mhyper
- fire_sound = 'sound/weapons/magburst.ogg'
- can_suppress = 0
- burst_size = 1
- fire_delay = 40
- recoil = 2
- casing_ejector = 0
- weapon_weight = WEAPON_HEAVY
-
-/obj/item/gun/ballistic/automatic/hyperburst/update_icon()
- ..()
- icon_state = "hyperburst[magazine ? "-[get_ammo()]" : ""][chambered ? "" : "-e"]"
-
-///toy memes///
-
-/obj/item/projectile/beam/lasertag/mag //the projectile, compatible with regular laser tag armor
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "magjectile-toy"
- name = "lasertag magbolt"
- movement_type = FLYING | UNSTOPPABLE //for penetration memes
- range = 5 //so it isn't super annoying
- light_range = 2
- light_color = LIGHT_COLOR_YELLOW
- eyeblur = 0
-
-/obj/item/ammo_casing/energy/laser/magtag
- projectile_type = /obj/item/projectile/beam/lasertag/mag
- select_name = "magtag"
- pellets = 3
- variance = 30
- e_cost = 1000
- fire_sound = 'sound/weapons/magburst.ogg'
-
-/obj/item/gun/energy/laser/practice/hyperburst
- name = "toy hyper-burst launcher"
- desc = "A toy laser with a unique beam shaping lens that projects harmless bolts capable of going through objects. Compatible with existing laser tag systems."
- ammo_type = list(/obj/item/ammo_casing/energy/laser/magtag)
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "toyburst"
- clumsy_check = FALSE
- obj_flags = 0
- fire_delay = 40
- weapon_weight = WEAPON_HEAVY
- selfcharge = EGUN_SELFCHARGE
- charge_delay = 2
- recoil = 2
- cell_type = /obj/item/stock_parts/cell/toymagburst
-
-/obj/item/stock_parts/cell/toymagburst
- name = "toy mag burst rifle power supply"
- maxcharge = 4000
diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm
deleted file mode 100644
index f847d04e9e..0000000000
--- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm
+++ /dev/null
@@ -1,293 +0,0 @@
-///ammo///
-
-/obj/item/ammo_casing/caseless/mag_e
- var/energy_cost = 0
-
-/obj/item/ammo_casing/caseless/mag_e/amagm_e
- desc = "A large ferromagnetic slug intended to be launched out of a compatible weapon."
- caliber = "mag_e"
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "mag-casing-live"
- projectile_type = /obj/item/projectile/bullet/magrifle
- energy_cost = 200
-
-/obj/item/ammo_casing/caseless/mag_e/anlmagm_e
- desc = "A large, specialized ferromagnetic slug designed with a less-than-lethal payload."
- caliber = "mag_e"
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "mag-casing-live"
- projectile_type = /obj/item/projectile/bullet/nlmagrifle
- energy_cost = 200
-
-/obj/item/ammo_casing/caseless/mag_e/amags
- desc = "A ferromagnetic slug intended to be launched out of a compatible weapon."
- caliber = "mag_e"
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "mag-casing-live"
- projectile_type = /obj/item/projectile/bullet/mags
- energy_cost = 125
-
-/obj/item/ammo_casing/caseless/mag_e/anlmags
- desc = "A specialized ferromagnetic slug designed with a less-than-lethal payload."
- caliber = "mag_e"
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "mag-casing-live"
- projectile_type = /obj/item/projectile/bullet/nlmags
- energy_cost = 125
-
-///magazines///
-
-/obj/item/ammo_box/magazine/mmag_e/
- name = "magrifle magazine (non-lethal disabler)"
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "mediummagmag"
- ammo_type = /obj/item/ammo_casing/caseless/mag_e/anlmagm_e
- caliber = "mag_e"
- max_ammo = 24
- multiple_sprites = 2
-
-/obj/item/ammo_box/magazine/mmag_e/lethal
- name = "magrifle magazine (lethal)"
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "mediummagmag"
- ammo_type = /obj/item/ammo_casing/caseless/mag_e/amagm_e
- max_ammo = 24
-
-/obj/item/ammo_box/magazine/mmag_e/small
- name = "magpistol magazine (non-lethal disabler)"
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "smallmagmag"
- ammo_type = /obj/item/ammo_casing/caseless/mag_e/anlmags
- caliber = "mag_e"
- max_ammo = 16
- multiple_sprites = 2
-
-/obj/item/ammo_box/magazine/mmag_e/small/lethal
- name = "magpistol magazine (lethal)"
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "smallmagmag"
- ammo_type = /obj/item/ammo_casing/caseless/mag_e/amags
- max_ammo = 16
-
-///cells///
-
-/obj/item/stock_parts/cell/magrifle_e
- name = "magrifle power supply"
- maxcharge = 14400
- chargerate = 3520
-
-/obj/item/stock_parts/cell/magpistol_e
- name = "magpistol power supply"
- maxcharge = 6000
- chargerate = 1000
-
-///sci designs///
-
-/datum/design/magrifle_e
- name = "Magrifle"
- desc = "An upscaled Magpistol in rifle form."
- id = "magrifle_e"
- build_type = PROTOLATHE
- materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 2000, MAT_TITANIUM = 10000, MAT_SILVER = 4000, MAT_GOLD = 2000)
- build_path = /obj/item/gun/ballistic/automatic/magrifle_e/nopin
- category = list("Weapons")
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY
-
-/datum/design/mag_magrifle_e
- name = "Magrifle Magazine (Lethal)"
- desc = "A 24-round magazine for the Magrifle."
- id = "mag_magrifle_e"
- build_type = PROTOLATHE
- materials = list(MAT_METAL = 8000, MAT_SILVER = 1000)
- build_path = /obj/item/ammo_box/magazine/mmag_e/lethal
- category = list("Ammo")
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY
-
-/datum/design/mag_magrifle_e/nl
- name = "Magrifle Magazine (Non-Lethal)"
- desc = "A 24- round non-lethal magazine for the Magrifle."
- id = "mag_magrifle_e_nl"
- materials = list(MAT_METAL = 6000, MAT_SILVER = 500, MAT_TITANIUM = 500)
- build_path = /obj/item/ammo_box/magazine/mmag_e
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY
-
-/datum/design/magpistol_e
- name = "Magpistol"
- desc = "A weapon which fires ferromagnetic slugs."
- id = "magpistol_e"
- build_type = PROTOLATHE
- materials = list(MAT_METAL = 7500, MAT_GLASS = 1000, MAT_URANIUM = 1000, MAT_TITANIUM = 5000, MAT_SILVER = 2000)
- build_path = /obj/item/gun/ballistic/automatic/pistol/mag_e/nopin
- category = list("Weapons")
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY
-
-/datum/design/mag_magpistol_e
- name = "Magpistol Magazine"
- desc = "A 14 round magazine for the Magpistol."
- id = "mag_magpistol_e"
- build_type = PROTOLATHE
- materials = list(MAT_METAL = 4000, MAT_SILVER = 500)
- build_path = /obj/item/ammo_box/magazine/mmag_e/small/lethal
- category = list("Ammo")
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY
-
-/datum/design/mag_magpistol_e/nl
- name = "Magpistol Magazine (Non-Lethal)"
- desc = "A 14 round non-lethal magazine for the Magpistol."
- id = "mag_magpistol_e_nl"
- materials = list(MAT_METAL = 3000, MAT_SILVER = 250, MAT_TITANIUM = 250)
- build_path = /obj/item/ammo_box/magazine/mmag_e/small
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY
-
-/*
-// TECHWEBS IMPLEMENTATION
-*/
-
-/*
-/datum/techweb_node/magnetic_weapons
- id = "magnetic_weapons"
- display_name = "Magnetic Weapons"
- description = "Weapons using magnetic technology"
- prereq_ids = list("weaponry", "adv_weaponry", "emp_adv")
- design_ids = list("magrifle_e", "magpistol_e", "mag_magrifle_e", "mag_magrifle_e_nl", "mag_magpistol_e", "mag_magpistol_e_nl")
- research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
- export_price = 5000
-*/
-
-///magrifle///
-
-/obj/item/gun/ballistic/automatic/magrifle_e
- name = "\improper Magnetic Rifle"
- desc = "A simple upscalling of the technologies used in the magpistol, the magrifle is capable of firing slightly larger slugs in bursts. Compatible with the magpistol's slugs."
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "magrifle"
- item_state = "arg"
- slot_flags = 0
- mag_type = /obj/item/ammo_box/magazine/mmag_e
- fire_sound = 'sound/weapons/magrifle.ogg'
- can_suppress = 0
- burst_size = 3
- fire_delay = 2
- spread = 5
- recoil = 0.15
- casing_ejector = 0
- var/obj/item/stock_parts/cell/cell
- var/cell_type = /obj/item/stock_parts/cell/magrifle_e
- var/dead_cell = FALSE
-
-/obj/item/gun/ballistic/automatic/magrifle_e/examine(mob/user)
- . = ..()
- if(cell)
- . += "[src]'s cell is [round(cell.charge / cell.maxcharge, 0.1) * 100]% full."
- else
- . += "[src] doesn't seem to have a cell!"
-
-/obj/item/gun/ballistic/automatic/magrifle_e/can_shoot()
- if(QDELETED(cell))
- return 0
-
- var/obj/item/ammo_casing/caseless/mag_e/shot = chambered
- if(!shot)
- return 0
- if(cell.charge < shot.energy_cost*burst_size)
- return 0
- . = ..()
-
-/obj/item/gun/ballistic/automatic/magrifle_e/shoot_live_shot()
- var/obj/item/ammo_casing/caseless/mag_e/shot = chambered
- cell.use(shot.energy_cost)
- . = ..()
-
-/obj/item/gun/ballistic/automatic/magrifle_e/emp_act(severity)
- . = ..()
- if(!(. & EMP_PROTECT_CONTENTS))
- cell.use(round(cell.charge / severity))
-
-/obj/item/gun/ballistic/automatic/magrifle_e/get_cell()
- return cell
-
-/obj/item/gun/ballistic/automatic/magrifle_e/Initialize()
- . = ..()
- if(cell_type)
- cell = new cell_type(src)
- else
- cell = new(src)
-
- if(!dead_cell)
- cell.give(cell.maxcharge)
-
-/obj/item/gun/ballistic/automatic/magrifle_e/nopin
- pin = null
- spawnwithmagazine = FALSE
-
-///magpistol///
-
-/obj/item/gun/ballistic/automatic/pistol/mag_e
- name = "magpistol"
- desc = "A handgun utilizing maglev technologies to propel a ferromagnetic slug to extreme velocities."
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "magpistol"
- force = 10
- fire_sound = 'sound/weapons/magpistol.ogg'
- mag_type = /obj/item/ammo_box/magazine/mmag_e/small
- can_suppress = 0
- casing_ejector = 0
- fire_delay = 2
- recoil = 0.2
- var/obj/item/stock_parts/cell/cell
- var/cell_type = /obj/item/stock_parts/cell/magpistol_e
- var/dead_cell = FALSE
-
-/obj/item/gun/ballistic/automatic/pistol/mag_e/examine(mob/user)
- . = ..()
- if(cell)
- . += "[src]'s cell is [round(cell.charge / cell.maxcharge, 0.1) * 100]% full."
- else
- . += "[src] doesn't seem to have a cell!"
-
-/obj/item/gun/ballistic/automatic/pistol/mag_e/can_shoot()
- if(QDELETED(cell))
- return 0
-
- var/obj/item/ammo_casing/caseless/mag_e/shot = chambered
- if(!shot)
- return 0
- if(cell.charge < shot.energy_cost)
- return 0
- . = ..()
-
-/obj/item/gun/ballistic/automatic/pistol/mag_e/shoot_live_shot()
- var/obj/item/ammo_casing/caseless/mag_e/shot = chambered
- cell.use(shot.energy_cost)
- . = ..()
-
-/obj/item/gun/ballistic/automatic/pistol/mag_e/emp_act(severity)
- . = ..()
- if(!(. & EMP_PROTECT_CONTENTS))
- cell.use(round(cell.charge / severity))
-
-/obj/item/gun/ballistic/automatic/pistol/mag_e/get_cell()
- return cell
-
-/obj/item/gun/ballistic/automatic/pistol/mag_e/Initialize()
- . = ..()
- if(cell_type)
- cell = new cell_type(src)
- else
- cell = new(src)
-
- if(!dead_cell)
- cell.give(cell.maxcharge)
-
-/obj/item/gun/ballistic/automatic/pistol/mag_e/update_icon()
- ..()
- if(magazine)
- cut_overlays()
- add_overlay("magpistol-magazine")
- else
- cut_overlays()
- icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
-
-/obj/item/gun/ballistic/automatic/pistol/mag_e/nopin
- pin = null
- spawnwithmagazine = FALSE
diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm
index 024669757a..37198e87cf 100644
--- a/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm
+++ b/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm
@@ -16,6 +16,29 @@
spread = 30 //should be 40 for XCOM memes, but since its adminspawn only, might as well make it useable
recoil = 1
+///toy memes///
+
+/obj/item/ammo_box/magazine/toy/x9
+ name = "foam force X9 magazine"
+ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
+ icon_state = "toy9magazine"
+ max_ammo = 30
+ multiple_sprites = 2
+ materials = list(MAT_METAL = 200)
+
+/obj/item/gun/ballistic/automatic/x9/toy
+ name = "\improper Foam Force X9"
+ desc = "An old but reliable assault rifle made for combat against unknown enemies. Appears to be hastily converted. Ages 8 and up."
+ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
+ icon_state = "toy9"
+ can_suppress = 0
+ obj_flags = 0
+ mag_type = /obj/item/ammo_box/magazine/toy/x9
+ casing_ejector = 0
+ spread = 90 //MAXIMUM XCOM MEMES (actually that'd be 180 spread)
+ w_class = WEIGHT_CLASS_BULKY
+ weapon_weight = WEAPON_HEAVY
+
///////security rifles special ammo///////
/obj/item/ammo_casing/c46x30mm/rubber
diff --git a/modular_citadel/icons/obj/guns/cit_guns.dmi b/modular_citadel/icons/obj/guns/cit_guns.dmi
index bd48d8edbd..79b54d27fb 100644
Binary files a/modular_citadel/icons/obj/guns/cit_guns.dmi and b/modular_citadel/icons/obj/guns/cit_guns.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index b5f5442d67..75312c3879 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -2577,6 +2577,7 @@
#include "code\modules\projectiles\ammunition\ballistic\smg.dm"
#include "code\modules\projectiles\ammunition\ballistic\sniper.dm"
#include "code\modules\projectiles\ammunition\caseless\_caseless.dm"
+#include "code\modules\projectiles\ammunition\caseless\ferromagnetic.dm"
#include "code\modules\projectiles\ammunition\caseless\foam.dm"
#include "code\modules\projectiles\ammunition\caseless\misc.dm"
#include "code\modules\projectiles\ammunition\caseless\rocket.dm"
@@ -2596,6 +2597,7 @@
#include "code\modules\projectiles\boxes_magazines\ammo_boxes.dm"
#include "code\modules\projectiles\boxes_magazines\external\grenade.dm"
#include "code\modules\projectiles\boxes_magazines\external\lmg.dm"
+#include "code\modules\projectiles\boxes_magazines\external\magweapon.dm"
#include "code\modules\projectiles\boxes_magazines\external\pistol.dm"
#include "code\modules\projectiles\boxes_magazines\external\rechargable.dm"
#include "code\modules\projectiles\boxes_magazines\external\rifle.dm"
@@ -2617,6 +2619,7 @@
#include "code\modules\projectiles\guns\ballistic\automatic.dm"
#include "code\modules\projectiles\guns\ballistic\laser_gatling.dm"
#include "code\modules\projectiles\guns\ballistic\launchers.dm"
+#include "code\modules\projectiles\guns\ballistic\magweapon.dm"
#include "code\modules\projectiles\guns\ballistic\pistol.dm"
#include "code\modules\projectiles\guns\ballistic\revolver.dm"
#include "code\modules\projectiles\guns\ballistic\shotgun.dm"
@@ -2647,6 +2650,7 @@
#include "code\modules\projectiles\projectile\bullets\_incendiary.dm"
#include "code\modules\projectiles\projectile\bullets\dart_syringe.dm"
#include "code\modules\projectiles\projectile\bullets\dnainjector.dm"
+#include "code\modules\projectiles\projectile\bullets\ferromagnetic.dm"
#include "code\modules\projectiles\projectile\bullets\grenade.dm"
#include "code\modules\projectiles\projectile\bullets\lmg.dm"
#include "code\modules\projectiles\projectile\bullets\pistol.dm"
@@ -3176,8 +3180,6 @@
#include "modular_citadel\code\modules\projectiles\guns\pumpenergy.dm"
#include "modular_citadel\code\modules\projectiles\guns\toys.dm"
#include "modular_citadel\code\modules\projectiles\guns\ballistic\handguns.dm"
-#include "modular_citadel\code\modules\projectiles\guns\ballistic\magweapon.dm"
-#include "modular_citadel\code\modules\projectiles\guns\ballistic\magweapon_energy.dm"
#include "modular_citadel\code\modules\projectiles\guns\ballistic\rifles.dm"
#include "modular_citadel\code\modules\projectiles\guns\ballistic\spinfusor.dm"
#include "modular_citadel\code\modules\projectiles\guns\energy\energy_gun.dm"