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