diff --git a/code/game/machinery/computer/arcade/minesweeper.dm b/code/game/machinery/computer/arcade/minesweeper.dm
index e90e05966c..fe69860f76 100644
--- a/code/game/machinery/computer/arcade/minesweeper.dm
+++ b/code/game/machinery/computer/arcade/minesweeper.dm
@@ -250,11 +250,11 @@
itemname = "a syndicate bomb beacon"
new /obj/item/sbeacondrop/bomb(loc)
if(2)
- itemname = "a rocket launcher"
- new /obj/item/gun/ballistic/rocketlauncher/unrestricted(loc)
- new /obj/item/ammo_casing/caseless/rocket(loc)
- new /obj/item/ammo_casing/caseless/rocket(loc)
- new /obj/item/ammo_casing/caseless/rocket(loc)
+ itemname = "a grenade launcher"
+ new /obj/item/gun/ballistic/revolver/grenadelauncher/unrestricted(loc)
+ new /obj/item/ammo_casing/a40mm(loc)
+ new /obj/item/ammo_casing/a40mm(loc)
+ new /obj/item/ammo_casing/a40mm(loc)
if(3)
itemname = "two bags of c4"
new /obj/item/storage/backpack/duffelbag/syndie/c4(loc)
diff --git a/code/modules/projectiles/ammunition/caseless/rocket.dm b/code/modules/projectiles/ammunition/caseless/rocket.dm
index bc693d96bc..9d6befce53 100644
--- a/code/modules/projectiles/ammunition/caseless/rocket.dm
+++ b/code/modules/projectiles/ammunition/caseless/rocket.dm
@@ -9,7 +9,7 @@
name = "\improper PM-9HEDP"
desc = "An 84mm High Explosive Dual Purpose rocket. Pointy end toward mechs."
caliber = "84mm"
- icon_state = "84mm-hedp"
+ icon_state = "s-casing-live"
projectile_type = /obj/item/projectile/bullet/a84mm
/obj/item/ammo_casing/caseless/a75
diff --git a/code/modules/projectiles/boxes_magazines/internal/grenade.dm b/code/modules/projectiles/boxes_magazines/internal/grenade.dm
index 79a005ee8a..352d1eb951 100644
--- a/code/modules/projectiles/boxes_magazines/internal/grenade.dm
+++ b/code/modules/projectiles/boxes_magazines/internal/grenade.dm
@@ -11,7 +11,7 @@
max_ammo = 1
/obj/item/ammo_box/magazine/internal/rocketlauncher
- name = "rocket launcher internal magazine"
+ name = "grenade launcher internal magazine"
ammo_type = /obj/item/ammo_casing/caseless/rocket
caliber = "84mm"
max_ammo = 1
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index fb3ed19f82..98fd774d63 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -32,10 +32,9 @@
var/fire_delay = 0 //rate of fire for burst firing and semi auto
var/firing_burst = 0 //Prevent the weapon from firing again while already firing
var/semicd = 0 //cooldown handler
- var/weapon_weight = WEAPON_LIGHT //currently only used for inaccuracy
+ var/weapon_weight = WEAPON_LIGHT
var/spread = 0 //Spread induced by the gun itself.
var/randomspread = 1 //Set to 0 for shotguns. This is used for weapons that don't fire all their bullets at once.
- var/inaccuracy_modifier = 1
lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi'
@@ -539,13 +538,3 @@
if(A == chambered)
chambered = null
update_icon()
-
-/obj/item/gun/proc/getinaccuracy(mob/living/user)
- if(!iscarbon(user))
- return FALSE
- else
- var/mob/living/carbon/holdingdude = user
- if(istype(holdingdude) && holdingdude.combatmode)
- return (max((holdingdude.lastdirchange + weapon_weight * 25) - world.time,0) * inaccuracy_modifier)
- else
- return ((weapon_weight * 25) * inaccuracy_modifier)
diff --git a/code/modules/projectiles/guns/ballistic/launchers.dm b/code/modules/projectiles/guns/ballistic/launchers.dm
index f6356dce99..eea4e1bc0b 100644
--- a/code/modules/projectiles/guns/ballistic/launchers.dm
+++ b/code/modules/projectiles/guns/ballistic/launchers.dm
@@ -86,7 +86,6 @@
pin = /obj/item/firing_pin/implant/pindicate
burst_size = 1
fire_delay = 0
- inaccuracy_modifier = 0.7
casing_ejector = FALSE
weapon_weight = WEAPON_HEAVY
magazine_wording = "rocket"
@@ -109,34 +108,34 @@
/obj/item/gun/ballistic/rocketlauncher/can_shoot()
return chambered?.BB
+/obj/item/gun/ballistic/rocketlauncher/process_chamber()
+ if(chambered)
+ chambered = null
+ if(magazine)
+ QDEL_NULL(magazine)
+ update_icon()
+
/obj/item/gun/ballistic/rocketlauncher/attack_self_tk(mob/user)
return //too difficult to remove the rocket with TK
/obj/item/gun/ballistic/rocketlauncher/attack_self(mob/living/user)
if(magazine)
- var/obj/item/ammo_casing/AC = chambered
- if(AC)
- if(!user.put_in_hands(AC))
- AC.bounce_away(FALSE, NONE)
- to_chat(user, "You remove \the [AC] from \the [src]!")
- playsound(src, 'sound/weapons/gun_magazine_remove_full.ogg', 70, TRUE)
+ if(chambered)
+ chambered.forceMove(magazine)
+ magazine.stored_ammo.Insert(1, chambered)
chambered = null
else
- to_chat(user, "There's no [magazine_wording] in [src].")
+ stack_trace("Removed [magazine] from [src] without a chambered round")
+ magazine.forceMove(drop_location())
+ if(user.is_holding(src))
+ 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
+ else
+ to_chat(user, "There's no rocket in [src].")
update_icon()
-/obj/item/gun/ballistic/rocketlauncher/attackby(obj/item/A, mob/user, params)
- if(magazine && istype(A, /obj/item/ammo_casing))
- if(user.temporarilyRemoveItemFromInventory(A))
- if(!chambered)
- to_chat(user, "You load a new [A] into \the [src].")
- playsound(src, "gun_insert_full_magazine", 70, 1)
- chamber_round()
- update_icon()
- return TRUE
- else
- to_chat(user, "You cannot seem to get \the [A] out of your hands!")
-
/obj/item/gun/ballistic/rocketlauncher/update_icon()
icon_state = "[initial(icon_state)]-[chambered ? "1" : "0"]"
diff --git a/code/modules/projectiles/projectile/special/rocket.dm b/code/modules/projectiles/projectile/special/rocket.dm
index e15810c6bb..a62fa25f7d 100644
--- a/code/modules/projectiles/projectile/special/rocket.dm
+++ b/code/modules/projectiles/projectile/special/rocket.dm
@@ -16,7 +16,6 @@
var/anti_armour_damage = 200
armour_penetration = 100
dismemberment = 100
- ricochets_max = 0
/obj/item/projectile/bullet/a84mm/on_hit(atom/target, blocked = FALSE)
..()
diff --git a/icons/emoji.dmi b/icons/emoji.dmi
index 089c0ff3f8..925b072a5f 100644
Binary files a/icons/emoji.dmi and b/icons/emoji.dmi differ
diff --git a/modular_citadel/code/modules/projectiles/gun.dm b/modular_citadel/code/modules/projectiles/gun.dm
index 317f68b4c4..ea8af7c74c 100644
--- a/modular_citadel/code/modules/projectiles/gun.dm
+++ b/modular_citadel/code/modules/projectiles/gun.dm
@@ -9,3 +9,13 @@
return 0
else
return ..()
+
+/obj/item/gun/proc/getinaccuracy(mob/living/user)
+ if(!iscarbon(user))
+ return 0
+ else
+ var/mob/living/carbon/holdingdude = user
+ if(istype(holdingdude) && holdingdude.combatmode)
+ return max((holdingdude.lastdirchange + weapon_weight * 25) - world.time,0)
+ else
+ return weapon_weight * 25