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