diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm
index 6c0795028bf..e25fa4bab02 100644
--- a/code/game/mecha/equipment/weapons/weapons.dm
+++ b/code/game/mecha/equipment/weapons/weapons.dm
@@ -293,7 +293,7 @@
name = "\improper SRM-8 missile rack"
desc = "A weapon for combat exosuits. Shoots light explosive missiles."
icon_state = "mecha_missilerack"
- projectile = /obj/item/projectile/bullet/srmrocket
+ projectile = /obj/item/projectile/bullet/a84mm_he
fire_sound = 'sound/weapons/grenadelaunch.ogg'
projectiles = 8
projectile_energy_cost = 1000
diff --git a/code/modules/projectiles/ammunition/caseless/rocket.dm b/code/modules/projectiles/ammunition/caseless/rocket.dm
index 0b74f6ff8c0..cdd7c7eaa4c 100644
--- a/code/modules/projectiles/ammunition/caseless/rocket.dm
+++ b/code/modules/projectiles/ammunition/caseless/rocket.dm
@@ -1,9 +1,16 @@
+
/obj/item/ammo_casing/caseless/a84mm
- desc = "An 84mm anti-armour rocket."
+ desc = "A 84mm HE rocket."
caliber = "84mm"
- icon_state = "s-casing-live"
+ icon_state = "84mm-hedp"
projectile_type = /obj/item/projectile/bullet/a84mm
+/obj/item/ammo_casing/caseless/srm8
+ desc = "A 84mm HE rocket."
+ caliber = "84mm"
+ icon_state = "srm-8"
+ projectile_type = /obj/item/projectile/bullet/a84mm_he
+
/obj/item/ammo_casing/caseless/a75
desc = "A .75 bullet casing."
caliber = "75"
diff --git a/code/modules/projectiles/boxes_magazines/internal/grenade.dm b/code/modules/projectiles/boxes_magazines/internal/grenade.dm
index 12325a0299a..73205e7604f 100644
--- a/code/modules/projectiles/boxes_magazines/internal/grenade.dm
+++ b/code/modules/projectiles/boxes_magazines/internal/grenade.dm
@@ -10,8 +10,16 @@
caliber = "40mm"
max_ammo = 1
-/obj/item/ammo_box/magazine/internal/rocketlauncher
- name = "grenade launcher internal magazine"
- ammo_type = /obj/item/ammo_casing/caseless/a84mm
+/obj/item/ammo_box/magazine/rocket
+ name = "84mm HE rocket"
+ icon_state = "srm-8"
+ ammo_type = /obj/item/ammo_casing/caseless/srm8
caliber = "84mm"
max_ammo = 1
+ w_class = WEIGHT_CLASS_NORMAL
+
+/obj/item/ammo_box/magazine/rocket/hedp
+ name = "84mm HEDP rocket"
+ icon_state = "84mm-hedp"
+ ammo_type = /obj/item/ammo_casing/caseless/a84mm
+
diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm
index 2bd860c42f1..821132cf007 100644
--- a/code/modules/projectiles/guns/ballistic.dm
+++ b/code/modules/projectiles/guns/ballistic.dm
@@ -7,6 +7,7 @@
var/mag_type = /obj/item/ammo_box/magazine/m10mm //Removes the need for max_ammo and caliber info
var/obj/item/ammo_box/magazine/magazine
var/casing_ejector = TRUE //whether the gun ejects the chambered casing
+ var/magazine_wording = "magazine"
/obj/item/gun/ballistic/Initialize()
. = ..()
@@ -57,7 +58,7 @@
if (!magazine && istype(AM, mag_type))
if(user.transferItemToLoc(AM, src))
magazine = AM
- to_chat(user, "You load a new magazine into \the [src].")
+ to_chat(user, "You load a new [magazine_wording] into \the [src].")
if(magazine.ammo_count())
playsound(src, "gun_insert_full_magazine", 70, 1)
if(!chambered)
@@ -72,7 +73,7 @@
to_chat(user, "You cannot seem to get \the [src] out of your hands!")
return
else if (magazine)
- to_chat(user, "There's already a magazine in \the [src].")
+ to_chat(user, "There's already a [magazine_wording] in \the [src].")
if(istype(A, /obj/item/suppressor))
var/obj/item/suppressor/S = A
if(!can_suppress)
diff --git a/code/modules/projectiles/guns/ballistic/launchers.dm b/code/modules/projectiles/guns/ballistic/launchers.dm
index 2102c46a9ac..211e674111a 100644
--- a/code/modules/projectiles/guns/ballistic/launchers.dm
+++ b/code/modules/projectiles/guns/ballistic/launchers.dm
@@ -74,25 +74,47 @@
update_icon()
chamber_round()
-/obj/item/gun/ballistic/automatic/atlauncher
- desc = "A pre-loaded, single shot anti-armour launcher."
- name = "anti-armour grenade launcher"
+/obj/item/gun/ballistic/automatic/rocketlauncher
+ name = "rocket propelled grenade launcher"
+ desc = "A reusable rocket propelled grenade launcher."
icon_state = "rocketlauncher"
item_state = "rocketlauncher"
- mag_type = /obj/item/ammo_box/magazine/internal/rocketlauncher
+ mag_type = /obj/item/ammo_box/magazine/rocket
fire_sound = 'sound/weapons/rocketlaunch.ogg'
w_class = WEIGHT_CLASS_BULKY
can_suppress = FALSE
+ pin = /obj/item/firing_pin/implant/pindicate
burst_size = 1
fire_delay = 0
select = 0
actions_types = list()
casing_ejector = FALSE
weapon_weight = WEAPON_HEAVY
+ magazine_wording = "rocket"
-/obj/item/gun/ballistic/automatic/atlauncher/attack_self()
+/obj/item/gun/ballistic/automatic/rocketlauncher/unrestricted
+ pin = /obj/item/firing_pin
+
+/obj/item/gun/ballistic/automatic/rocketlauncher/process_chamber()
+ if(chambered)
+ chambered = null
+ if(magazine)
+ QDEL_NULL(magazine)
+ update_icon()
+
+/obj/item/gun/ballistic/automatic/rocketlauncher/attack_self(mob/living/user)
+ if(magazine)
+ magazine.forceMove(drop_location())
+ user.put_in_hands(magazine)
+ playsound(src, 'sound/weapons/gun_magazine_remove_full.ogg', 70, TRUE)
+ to_chat(user, "You work the [magazine] out from [src].")
+ magazine = null
+ chambered = null
+ else
+ to_chat(user, "There's no rocket in [src].")
+ update_icon()
return
-/obj/item/gun/ballistic/automatic/atlauncher/update_icon()
+/obj/item/gun/ballistic/automatic/rocketlauncher/update_icon()
..()
icon_state = "rocketlauncher[magazine ? "-[get_ammo(TRUE)]" : ""]"
\ No newline at end of file
diff --git a/code/modules/projectiles/projectile/special/rocket.dm b/code/modules/projectiles/projectile/special/rocket.dm
index 6518b2a4d5e..3a5ee1f4a3a 100644
--- a/code/modules/projectiles/projectile/special/rocket.dm
+++ b/code/modules/projectiles/projectile/special/rocket.dm
@@ -9,9 +9,9 @@
return TRUE
/obj/item/projectile/bullet/a84mm
- name ="anti-armour rocket"
+ name ="\improper HEDP rocket"
desc = "USE A WEEL GUN"
- icon_state= "atrocket"
+ icon_state= "84mm-hedp"
damage = 80
var/anti_armour_damage = 200
armour_penetration = 100
@@ -29,14 +29,14 @@
S.take_overall_damage(anti_armour_damage*0.75, anti_armour_damage*0.25)
return TRUE
-/obj/item/projectile/bullet/srmrocket
- name ="SRM-8 Rocket"
+/obj/item/projectile/bullet/a84mm_he
+ name ="\improper HE rocket"
desc = "Boom."
icon_state = "missile"
damage = 30
ricochets_max = 0 //it's a MISSILE
-/obj/item/projectile/bullet/srmrocket/on_hit(atom/target, blocked=0)
+/obj/item/projectile/bullet/a84mm_he/on_hit(atom/target, blocked=0)
..()
if(!isliving(target)) //if the target isn't alive, so is a wall or something
explosion(target, 0, 1, 2, 4)
diff --git a/code/modules/research/designs/mecha_designs.dm b/code/modules/research/designs/mecha_designs.dm
index cee0dc74133..12ec54a00ec 100644
--- a/code/modules/research/designs/mecha_designs.dm
+++ b/code/modules/research/designs/mecha_designs.dm
@@ -209,7 +209,7 @@
/datum/design/mech_missile_rack
name = "Exosuit Weapon (SRM-8 Missile Rack)"
- desc = "Allows for the construction of SRM-8 Missile Rack."
+ desc = "Allows for the construction of an SRM-8 Missile Rack."
id = "mech_missile_rack"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack
diff --git a/code/modules/spells/spell_types/rightandwrong.dm b/code/modules/spells/spell_types/rightandwrong.dm
index bc1fc980bb7..4cb814ecc8f 100644
--- a/code/modules/spells/spell_types/rightandwrong.dm
+++ b/code/modules/spells/spell_types/rightandwrong.dm
@@ -42,6 +42,7 @@ GLOBAL_LIST_INIT(summoned_guns, list(
/obj/item/gun/ballistic/revolver/grenadelauncher,
/obj/item/gun/ballistic/revolver/golden,
/obj/item/gun/ballistic/automatic/sniper_rifle,
+ /obj/item/gun/ballistic/automatic/rocketlauncher,
/obj/item/gun/medbeam,
/obj/item/gun/energy/laser/scatter,
/obj/item/gun/energy/gravity_gun))
diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm
index c071e0dccf3..b334b663150 100644
--- a/code/modules/uplink/uplink_items.dm
+++ b/code/modules/uplink/uplink_items.dm
@@ -220,6 +220,15 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
surplus = 0
include_modes = list(/datum/game_mode/nuclear)
+/datum/uplink_item/dangerous/rawketlawnchair
+ name = "84mm Rocket Propelled Grenade Launcher"
+ desc = "A reusable rocket propelled grenade launcher preloaded with a low-yield 84mm HE round. \
+ Guaranteed to send your target out with a bang or your money back!"
+ item = /obj/item/gun/ballistic/automatic/rocketlauncher
+ cost = 8
+ surplus = 30
+ include_modes = list(/datum/game_mode/nuclear)
+
/datum/uplink_item/dangerous/grenadier
name = "Grenadier's belt"
desc = "A belt of a large variety of lethally dangerous and destructive grenades."
@@ -573,6 +582,21 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
mixture that'll ignite anyone struck by the bullet. Some men just want to watch the world burn."
item = /obj/item/ammo_box/magazine/mm195x129/incen
+/datum/uplink_item/ammo/rocket
+ include_modes = list(/datum/game_mode/nuclear)
+
+/datum/uplink_item/ammo/rocket/basic
+ name = "84mm HE Rocket"
+ desc = "A low-yield anti-personnel HE rocket. Gonna take you out in style!"
+ item = /obj/item/ammo_box/magazine/rocket
+ cost = 4
+
+/datum/uplink_item/ammo/rocket/hedp
+ name = "84mm HEDP Rocket"
+ desc = "A high-yield HEDP rocket; extremely effective against armored targets, as well as surrounding personnel. Strike fear into the hearts of your enemies."
+ item = /obj/item/ammo_box/magazine/rocket/hedp
+ cost = 6
+
/datum/uplink_item/ammo/sniper
cost = 4
include_modes = list(/datum/game_mode/nuclear)
diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi
index 24ede3c5134..6282e555faf 100644
Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ
diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi
index d276655ae86..f1ad7ed9e3a 100644
Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ