mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
Adds an underslung grenade launcher to the Z8.
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
/obj/item/weapon/gun/launcher/grenade
|
/obj/item/weapon/gun/launcher/grenade
|
||||||
name = "grenade launcher"
|
name = "grenade launcher"
|
||||||
desc = "A bulky pump-action grenade launcher. Holds up to 5 grenades in a revolving magazine."
|
desc = "A bulky pump-action grenade launcher. Holds up to 6 grenades in a revolving magazine."
|
||||||
icon_state = "riotgun"
|
icon_state = "riotgun"
|
||||||
item_state = "riotgun"
|
item_state = "riotgun"
|
||||||
w_class = 4
|
w_class = 4
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
var/obj/item/weapon/grenade/chambered
|
var/obj/item/weapon/grenade/chambered
|
||||||
var/list/grenades = new/list()
|
var/list/grenades = new/list()
|
||||||
var/max_grenades = 4 //holds this + one in the chamber
|
var/max_grenades = 5 //holds this + one in the chamber
|
||||||
matter = list("metal" = 2000)
|
matter = list("metal" = 2000)
|
||||||
|
|
||||||
//revolves the magazine, allowing players to choose between multiple grenade types
|
//revolves the magazine, allowing players to choose between multiple grenade types
|
||||||
@@ -42,30 +42,36 @@
|
|||||||
if(chambered)
|
if(chambered)
|
||||||
user << "\A [chambered] is chambered."
|
user << "\A [chambered] is chambered."
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/launcher/grenade/proc/load(obj/item/weapon/grenade/G, mob/user)
|
||||||
|
if(grenades.len >= max_grenades)
|
||||||
|
user << "<span class='warning'>[src] is full.</span>"
|
||||||
|
return
|
||||||
|
user.remove_from_mob(G)
|
||||||
|
G.loc = src
|
||||||
|
grenades.Insert(1, G) //add to the head of the list, so that it is loaded on the next pump
|
||||||
|
user.visible_message("[user] inserts \a [G] into [src].", "<span class='notice'>You insert \a [G] into [src].</span>")
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/launcher/grenade/proc/unload(mob/user)
|
||||||
|
if(grenades.len)
|
||||||
|
var/obj/item/weapon/grenade/G = grenades[grenades.len]
|
||||||
|
grenades.len--
|
||||||
|
user.put_in_hands(G)
|
||||||
|
user.visible_message("[user] removes \a [G] from [src].", "<span class='notice'>You remove \a [G] from [src].</span>")
|
||||||
|
else
|
||||||
|
user << "<span class='warning'>[src] is empty.</span>"
|
||||||
|
|
||||||
/obj/item/weapon/gun/launcher/grenade/attack_self(mob/user)
|
/obj/item/weapon/gun/launcher/grenade/attack_self(mob/user)
|
||||||
pump(user)
|
pump(user)
|
||||||
|
|
||||||
/obj/item/weapon/gun/launcher/grenade/attackby(obj/item/I, mob/user)
|
/obj/item/weapon/gun/launcher/grenade/attackby(obj/item/I, mob/user)
|
||||||
if((istype(I, /obj/item/weapon/grenade)))
|
if((istype(I, /obj/item/weapon/grenade)))
|
||||||
if(grenades.len >= max_grenades)
|
load(I, user)
|
||||||
user << "<span class='warning'>[src] is full.</span>"
|
|
||||||
return
|
|
||||||
user.remove_from_mob(I)
|
|
||||||
I.loc = src
|
|
||||||
grenades.Insert(1, I) //add to the head of the list, so that it is loaded on the next pump
|
|
||||||
user.visible_message("[user] inserts \a [I] into [src].", "<span class='notice'>You insert \a [I] into [src].</span>")
|
|
||||||
else
|
else
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/item/weapon/gun/launcher/grenade/attack_hand(mob/user)
|
/obj/item/weapon/gun/launcher/grenade/attack_hand(mob/user)
|
||||||
if(user.get_inactive_hand() == src)
|
if(user.get_inactive_hand() == src)
|
||||||
if(grenades.len)
|
unload(user)
|
||||||
var/obj/item/weapon/grenade/G = grenades[grenades.len]
|
|
||||||
grenades.len--
|
|
||||||
user.put_in_hands(G)
|
|
||||||
user.visible_message("[user] removes \a [G] from [src].", "<span class='notice'>You remove \a [G] from [src].</span>")
|
|
||||||
else
|
|
||||||
user << "<span class='warning'>[src] is empty.</span>"
|
|
||||||
else
|
else
|
||||||
..()
|
..()
|
||||||
|
|
||||||
@@ -79,3 +85,32 @@
|
|||||||
message_admins("[key_name_admin(user)] fired a grenade ([chambered.name]) from a grenade launcher ([src.name]).")
|
message_admins("[key_name_admin(user)] fired a grenade ([chambered.name]) from a grenade launcher ([src.name]).")
|
||||||
log_game("[key_name_admin(user)] used a grenade ([chambered.name]).")
|
log_game("[key_name_admin(user)] used a grenade ([chambered.name]).")
|
||||||
chambered = null
|
chambered = null
|
||||||
|
|
||||||
|
//Underslung grenade launcher to be used with the Z8
|
||||||
|
/obj/item/weapon/gun/launcher/grenade/underslung
|
||||||
|
name = "underslung grenade launcher"
|
||||||
|
desc = "Not much more than a tube and a firing mechanism, this grenade launcher is designed to be fitted to a rifle."
|
||||||
|
w_class = 3
|
||||||
|
force = 5
|
||||||
|
max_grenades = 0
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/launcher/grenade/underslung/attack_self()
|
||||||
|
return
|
||||||
|
|
||||||
|
//load and unload directly into chambered
|
||||||
|
/obj/item/weapon/gun/launcher/grenade/underslung/load(obj/item/weapon/grenade/G, mob/user)
|
||||||
|
if(chambered)
|
||||||
|
user << "<span class='warning'>[src] is already loaded.</span>"
|
||||||
|
return
|
||||||
|
user.remove_from_mob(G)
|
||||||
|
G.loc = src
|
||||||
|
chambered = G
|
||||||
|
user.visible_message("[user] load \a [G] into [src].", "<span class='notice'>You load \a [G] into [src].</span>")
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/launcher/grenade/underslung/unload(mob/user)
|
||||||
|
if(chambered)
|
||||||
|
user.put_in_hands(chambered)
|
||||||
|
user.visible_message("[user] removes \a [chambered] from [src].", "<span class='notice'>You remove \a [chambered] from [src].</span>")
|
||||||
|
chambered = null
|
||||||
|
else
|
||||||
|
user << "<span class='warning'>[src] is empty.</span>"
|
||||||
@@ -47,6 +47,23 @@
|
|||||||
icon_state = "c20r"
|
icon_state = "c20r"
|
||||||
return
|
return
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/projectile/automatic/sts35
|
||||||
|
name = "\improper STS-35 automatic rifle"
|
||||||
|
desc = "A durable, rugged looking automatic weapon of a make popular on the frontier. Uses 7.62mm rounds. It is unmarked."
|
||||||
|
icon_state = "arifle"
|
||||||
|
item_state = "shotgun"
|
||||||
|
w_class = 4
|
||||||
|
force = 10
|
||||||
|
caliber = "a762"
|
||||||
|
origin_tech = "combat=6;materials=1;syndicate=4"
|
||||||
|
slot_flags = SLOT_BACK
|
||||||
|
load_method = MAGAZINE
|
||||||
|
magazine_type = /obj/item/ammo_magazine/c762
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/projectile/automatic/sts35/update_icon()
|
||||||
|
..()
|
||||||
|
icon_state = (ammo_magazine)? "arifle-0" : "arifle"
|
||||||
|
|
||||||
/obj/item/weapon/gun/projectile/automatic/wt550
|
/obj/item/weapon/gun/projectile/automatic/wt550
|
||||||
name = "\improper W-T 550 Saber"
|
name = "\improper W-T 550 Saber"
|
||||||
desc = "A cheap, mass produced Ward-Takahashi PDW. Uses 9mm rounds."
|
desc = "A cheap, mass produced Ward-Takahashi PDW. Uses 9mm rounds."
|
||||||
@@ -70,7 +87,7 @@
|
|||||||
|
|
||||||
/obj/item/weapon/gun/projectile/automatic/z8
|
/obj/item/weapon/gun/projectile/automatic/z8
|
||||||
name = "\improper Z8 Bulldog"
|
name = "\improper Z8 Bulldog"
|
||||||
desc = "An older model bullpup carbine, made by the now defunct Zendai Foundries. Uses armor piercing 5.56mm rounds. Makes you feel like a space marine when you hold it."
|
desc = "An older model bullpup carbine, made by the now defunct Zendai Foundries. Uses armor piercing 5.56mm rounds and has an underslung grenade launcher. Makes you feel like a space marine when you hold it."
|
||||||
icon_state = "carbine"
|
icon_state = "carbine"
|
||||||
item_state = "shotgun"
|
item_state = "shotgun"
|
||||||
w_class = 4
|
w_class = 4
|
||||||
@@ -82,6 +99,34 @@
|
|||||||
slot_flags = SLOT_BACK
|
slot_flags = SLOT_BACK
|
||||||
load_method = MAGAZINE
|
load_method = MAGAZINE
|
||||||
magazine_type = /obj/item/ammo_magazine/a556
|
magazine_type = /obj/item/ammo_magazine/a556
|
||||||
|
var/use_launcher = 0
|
||||||
|
var/obj/item/weapon/gun/launcher/grenade/underslung/launcher
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/projectile/automatic/z8/New()
|
||||||
|
..()
|
||||||
|
launcher = new(src)
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/projectile/automatic/z8/attack_self(mob/user)
|
||||||
|
use_launcher = !use_launcher
|
||||||
|
user << "<span class='notice'>You switch to [use_launcher? "\the [launcher]" : "firing normally"].</span>"
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/projectile/automatic/z8/attackby(obj/item/I, mob/user)
|
||||||
|
if((istype(I, /obj/item/weapon/grenade)))
|
||||||
|
launcher.load(I, user)
|
||||||
|
else
|
||||||
|
..()
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/projectile/automatic/z8/attack_hand(mob/user)
|
||||||
|
if(user.get_inactive_hand() == src && use_launcher)
|
||||||
|
launcher.unload(user)
|
||||||
|
else
|
||||||
|
..()
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/projectile/automatic/z8/Fire(atom/target, mob/living/user, params, pointblank=0, reflex=0)
|
||||||
|
if(use_launcher)
|
||||||
|
launcher.Fire(target, user, params, pointblank, reflex)
|
||||||
|
else
|
||||||
|
..()
|
||||||
|
|
||||||
/obj/item/weapon/gun/projectile/automatic/z8/update_icon()
|
/obj/item/weapon/gun/projectile/automatic/z8/update_icon()
|
||||||
..()
|
..()
|
||||||
@@ -91,23 +136,6 @@
|
|||||||
icon_state = "carbine"
|
icon_state = "carbine"
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/item/weapon/gun/projectile/automatic/sts35
|
|
||||||
name = "\improper STS-35 automatic rifle"
|
|
||||||
desc = "A durable, rugged looking automatic weapon of a make popular on the frontier. Uses 7.62mm rounds. It is unmarked."
|
|
||||||
icon_state = "assltrifle"
|
|
||||||
item_state = "shotgun"
|
|
||||||
w_class = 4
|
|
||||||
force = 10
|
|
||||||
caliber = "a762"
|
|
||||||
origin_tech = "combat=6;materials=1;syndicate=4"
|
|
||||||
slot_flags = SLOT_BACK
|
|
||||||
load_method = MAGAZINE
|
|
||||||
magazine_type = /obj/item/ammo_magazine/c762
|
|
||||||
|
|
||||||
/obj/item/weapon/gun/projectile/automatic/sts35/update_icon()
|
|
||||||
..()
|
|
||||||
icon_state = (ammo_magazine)? "assltrifle" : "assltrifle-noclip"
|
|
||||||
|
|
||||||
/obj/item/weapon/gun/projectile/automatic/l6_saw
|
/obj/item/weapon/gun/projectile/automatic/l6_saw
|
||||||
name = "\improper L6 SAW"
|
name = "\improper L6 SAW"
|
||||||
desc = "A rather traditionally made light machine gun with a pleasantly lacquered wooden pistol grip. Has 'Aussec Armoury- 2531' engraved on the reciever"
|
desc = "A rather traditionally made light machine gun with a pleasantly lacquered wooden pistol grip. Has 'Aussec Armoury- 2531' engraved on the reciever"
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 49 KiB |
Reference in New Issue
Block a user