Bubberstation gun replacements part 1: Murphy service pistol [part of skyrat removal PR] (#3949)

## About The Pull Request
Feedback here:
https://discord.com/channels/1059199070016655462/1381309027849474169
This PR is a complimentary PR that fills in the widest gaps left by the
now-removed arrangement of guns. The focus is on making security still
have a very reliable sidearm that is interesting and provides relevance
even in the later game. It is also perfectly usable as a regular weapon
without all the fluff.

This PR is one of 5 total, and with being asked to atomize my things, it
will be the first one to try out for testmerge.

# This PR only adds the murphy, rest is data on all plans and guns

## 'Murphy' security pistol
``This 9 mm monster was developed during the very first body-modding
craze by NanoTrasen, built with every what-if in mind, this timeless
brick is near-incapable of failure. 60% more bullet-per-bullet ammo may
not have helped it's killing power, but it sure helped this gun hit like
an actual brick when used as a bludgeon. Not only that, but it's
'anti-lawsuit' heavy trigger design allows for safe spinning, if one can
handle it and not hit anyone with the magazine flying out the
handle...``
- 20 damage shots
- 10 bullet magazines
- baton-equivilent pistol whip damage
- increased throw force
- press Z when the gun is dry to reload your gun over (2-3 seconds,
DRAFT, as I said). This can be done on the move and you do not need your
other hand empty to do this.
- toggleable setting, off by default, ejects your magazines for a tiny
bit of extra damage.
- researchable magazines that pack only 8 rounds in return for dealing
[30-40, up to adjustment] damage. [knockdown is being discussed]

## Upcoming: Personality Core Eguns, The SC-3
Aren't you tired of old eguns? The blandness of them? Their low amount
of potential upgrades?
Well fear not, as with every arms race, Allstar has made developments of
their own.
*lightly* copying the homework off their more morally corrupt
competitors, personality modules.

So how's it compare to an egun? 
- Radial menu is a bit clunkier to use
- Comes with a free combat knife as a module
- Will loudly proclaim your location when emp'd due to a personaltiy
module
- Is practically the same combat-wise as the egun if you were to
micromanage a combat knife alongside it. It's a third-degree, but was
highly requested, and not only! (I say equivilent to combat knife
because I am about to release an ERT buff PR)

**As you can impact what the final modules are with this poll**
https://forms.gle/d3Fst6ZLWYTb8mDo7


--## Plasma Gun [the most wip of them all]
- Magazine fed bulky weapon
- We hear concerns about vampires being too strong, so this weapon's
shots damage scales depending on the amount of shots a target has
received from this particular gun. No, 5 officers with the same gun will
not be more effective than one.
- Due to it's high power (if you can mind the damage rampup), it's also
highly expensive and volatile. You shouldn't let one of those armaments
explode, lest it's core bursts. (Gibtonite effect upon being caught in a
heavy explosion, after some time).
--

This weapon is not needed for the game balance, instead, focus is
shifted to rebalancing the Kiboko to be a usable gun. The aim will be to
have it to take on a more supportive role, being effective at applying
firestacks and providing smoke if need be.

The kiboko will become a tool that will require itself to be roundstart
only, or at least dep-order only as to prevent it from being a recurring
threat if dealt with once already.

- Buff damage from 20 -> 30 on hit
- Buff projectile velocity
- Remove practise and shrapnel rounds
- Remove delay between hitting target and exploding (if on the same
tile)
- Grenades will now explode even if they score a direct hit
- Less deadly fire grenades (up to 100+ damage per one currently if met
on an unarmored target in close proximity, will likely make it less
damaging but more consistent)


Planned addition:
       Breacher rounds:
The kiboko's breacher rounds are inspired by the strange delay they
initially had and how it felt reminiscent of R6's Ash. Frangible slugs
are not often used as it takes away ammo from a main weapon, they are
also clunkier and require several rounds. They have their place but are
overall quite messy.

What breacher rounds will do is cause a delayed (mostly cosmetic)
explosion after striking a target object, structure or person. The delay
will be larger if the integrity of the object hit is large, scaling.
This isn't the end of the world as it will still be the quickest or at
least easiest way to tear down walls and airlocks. This also provides
some time to take out any shields, weapons and prime grenades while
waiting on the charge to drill deeper and have the fuse detonate.
   
     
## Why It's Good For The Game
(will update this, currently my exams are approaching very quickly, so
please be understanding for needing yet more time. Work speed will pick
up drastically once that is over. )

New security get a gun that is easy and convenient to use.
The gun is not meant to be your main tool of dealing with threats such
as traitor, rather your backup plan. As such, it benefits from okay-ish
stats for melee combat once you run out of everything.
It shakes up the belt-storage meta, making magazines more enticing of a
choice considering the potential of unloading very consistent fire if
one is to use that room.
For threats that are more slippery or plentiful such as carps or spiders
this gun's aforementioned consistency crowns over other ones.
Lastly, in those scenarios it helps you keep your shield up and keep
dishing out damage. Turn off your brain for once with the Murphy.

Highly requested bit of fun gun customization, will come with multiple
personality matrices.

~~
Helps security and crew with dealing with extremely defensive and bulky
threats. Be it a nukie, mech or vampire, if the user maintains healthy
social distancing then the tables will turn quickly, forcing antagonists
to reconsider their approach and introduces a gun that while possible to
use personally, becomes much better with team-oriented protective
playstyles.

~~ I have discussed this heavily with my team and they have reassured me
that the current threats are not as bad as it would have initially
seemed. The tools to deal with that already exist.

The kiboko's rounds can be outran which makes it only a good breaching
weapon, as a breaching weapon it is outclassed by almost anything else
as anyone can block the grenade with their body for a measely 20 damage
pre-armour, and then there's the fact it's shrapnel rounds cause weeping
avulsions near-guaranteedly if they hit. It's a mess.

Again, disclaimer, the values are not final, will be likely changed,
aspects such as how the guns work are being discussed and the visual
aspects are going to be handled last.

The necessity of more is being discussed as 5 concepts of guns were
scrapped, 2 of which mid-development.

## Proof Of Testing
To be done, you can find discussion pertaining this in the skyrat gun
removal thread.


## Changelog

🆑
add: Added a security sidearm - the Murphy service pistol. Spin to
reload with ammo from your belt slot, toggle launch-ejecting mags (and
special mags) for a little (or a lot) extra damage. Show the last person
to have laughed at your gun why your 'brick' is called a brick by
pistolwhipping them (baton equivalent damage on hit, stronger throw).
add: 9mm security caliber for the murphy.
/🆑

---------

Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
This commit is contained in:
Ssalty
2025-07-29 14:50:17 +03:00
committed by GitHub
co-authored by Roxy
parent ee77249571
commit 01eae8710b
13 changed files with 270 additions and 101 deletions
@@ -28,3 +28,6 @@
#define CALIBER_457GOVT ".457 Government"
#define CALIBER_FLECHETTE "Flechette"
// Murphy caliber, there was no other way to make it non-compatible with syndie ammo and prevent gaming it
#define CALIBER_9MM_SEC "9mm Security"
@@ -40,6 +40,11 @@
ammo_type = /obj/item/ammo_casing/c10mm/fire
max_ammo = 20
/obj/item/ammo_box/c9mm/security //Bubberstation sourced, because I'll finalize all the moving once I merge the adjacent PR's
name = "ammo box (9mm Murphy)"
ammo_type = /obj/item/ammo_casing/security
caliber = CALIBER_9MM_SEC
/obj/item/ammo_box/c46x30mm
name = "ammo box (4.6x30mm)"
icon = 'modular_skyrat/modules/company_imports/icons/ammo.dmi'
@@ -64,6 +64,17 @@
sharpness = NONE
embed_type = null
/obj/item/ammo_casing/security
name = "9x25mm Mk.12 security casing"
desc = "A modern 9x25mm Mk.12 bullet casing. This one fires a law-enfocement grade round, making it less deadly than most, but still lethal enough to do it's job."
caliber = CALIBER_9MM_SEC
projectile_type = /obj/projectile/bullet/security
/obj/projectile/bullet/security
name = "9x25mm Murphy bullet"
damage = 20
wound_bonus = -20
/obj/projectile/bullet/c9mm
damage = 25
/*
@@ -18,7 +18,6 @@
contraband = list(
/obj/item/clothing/glasses/sunglasses = 2,
/obj/item/storage/fancy/donut_box = 2,
/obj/item/ammo_box/magazine/m9mm = 4,
)
premium = list(
/obj/item/storage/belt/security/webbing = 5,
@@ -30,8 +29,7 @@
/obj/item/watertank/pepperspray = 2,
/obj/item/storage/belt/holster/energy = 4,
/obj/item/storage/box/holobadge = 1,
/obj/item/ammo_box/magazine/m9mm/rubber = 12,
/obj/item/ammo_box/magazine/m9mm/ihdf = 12,
/obj/item/ammo_box/magazine/security = 12,
/obj/item/ammo_box/c10mm/speedloader/rubber = 12,
/obj/item/ammo_box/advanced/s12gauge/frangible = 2,
)
@@ -34,6 +34,7 @@
design_ids += "ammoworkbench_disk_lethal"
design_ids += "ammo_workbench"
design_ids += "s12g_huntingslug"
design_ids += "m9mm_sec"
/datum/techweb_node/magazineresearch_heavy
id = "storedmunition_tech_three"
@@ -64,6 +65,7 @@
design_ids += "sol_bolt_to_rifle"
design_ids += "c10mm_rhp"
design_ids += "c10mm_rap"
design_ids += "m9mm_sec_rocket"
. = ..()
/datum/techweb_node/syndicate_basic/New()
@@ -0,0 +1,35 @@
/obj/item/ammo_box/magazine/security
name = "pistol magazine (9mm Murphy)"
desc = "A 9mm handgun magazine, suitable for the Service Pistol."
icon = 'modular_skyrat/modules/aesthetics/guns/icons/magazine.dmi'
icon_state = "9x19p"
base_icon_state = "9x19p"
ammo_type = /obj/item/ammo_casing/security
caliber = CALIBER_9MM_SEC
max_ammo = 10
ammo_band_color = null
multiple_sprites = AMMO_BOX_PER_BULLET
multiple_sprite_use_base = TRUE
var/murphy_eject_sound = 'sound/items/weapons/throwhard.ogg'
var/was_ejected = 0
/obj/item/ammo_box/magazine/security/rocket
name = "pistol magazine (9mm Murphy Rocket Eject)"
desc = "A 9mm handgun magazine, suitable for the Service Pistol."
ammo_type = /obj/item/ammo_casing/security
max_ammo = 8
base_icon_state = "9x19pI"
murphy_eject_sound = 'sound/items/weapons/gun/general/rocket_launch.ogg'
/obj/item/ammo_box/magazine/security/rocket/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
. = ..()
if(QDELETED(src))
return
if(was_ejected)
playsound(get_turf(src.loc), 'sound/effects/explosion/explosion1.ogg', 40, 1)
visible_message(span_warning("[src] crumbles into scrap from the force of the impact"))
if(isliving(hit_atom))
var/mob/living/hit_mob = hit_atom
hit_mob.Knockdown(2 SECONDS)
hit_mob.apply_damage(40, BRUTE, BODY_ZONE_CHEST)
qdel(src)
@@ -0,0 +1,12 @@
/datum/design/c9mm_sec
name = "Ammo Box (9x25mm Murphy) (Lethal)" //SKYRAT EDIT: Calibre rename - Original: name = "Ammo Box (9mm)"
id = "c9mm_sec"
build_type = AUTOLATHE
materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 150)
build_path = /obj/item/ammo_box/c9mm/security
category = list(
RND_CATEGORY_HACKED,
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO,
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
@@ -301,6 +301,36 @@
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design/m9mm_sec
name = "Magazine (9x25mm Murphy) (Lethal)"
desc = "Designed to slide in and out of a 9mm 'Murphy' service pistol. It's heavier bullets make this magazine quite heavy, watch where you throw it!"
id = "m9mm_sec"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(
/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 30,
/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT * 3,
)
build_path = /obj/item/ammo_box/magazine/security
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design/m9mm_sec_rocket
name = "Magazine (9x25mm Murphy RE) (Lethal)"
desc = "A volatile magazine with extra weight and aerodynamic padding, letting it accelerate rapidly upon release - preferrably towards the suspect."
id = "m9mm_sec_rocket"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(
/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 10,
/datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT * 5,
)
build_path = /obj/item/ammo_box/magazine/security/rocket
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design/m9mm_mag_rubber
name = "9x25mm Mk2 Pistol Magazine(Less-Lethal)"
desc = "A standard magazine for pistol using 9x25mm Mk2."
@@ -2,35 +2,21 @@
/datum/export/weapon/sec_glock
export_types = list(/obj/item/gun/ballistic/automatic/pistol/sec_glock)
cost = CARGO_CRATE_VALUE * 1.25
unit_name = "C-CK 9x25mm pistol"
unit_name = "'Murphy' Service Pistol"
/datum/supply_pack/security/armory/sec_glock
name = "C-CK 9x25mm Crate"
desc = "Contains a pair of C-CK 9x25mm pistols pre-loaded with less-than-lethal rubber-tipped rounds. Additional ammo sold seperately. Nanotrasen reminds you that the other weapon is for a friend, and not for going guns akimbo."
name = "'Murphy' Service Pistol Crate"
desc = "Contains a pair of 'Murphy' service pistols pre-loaded with lethal rounds. Additional ammo sold seperately. Nanotrasen reminds you that the other weapon is for a friend, and not for going guns akimbo."
cost = CARGO_CRATE_VALUE * 6
contains = list(/obj/item/gun/ballistic/automatic/pistol/sec_glock/security/rubber = 2)
crate_name = "C-CK 9x25mm crate"
contains = list(/obj/item/gun/ballistic/automatic/pistol/sec_glock = 2)
crate_name = "'Murphy' service pistol crate"
/datum/supply_pack/security/armory/sec_glock_ammo_rubber
name = "C-CK 9x25mm Ammo Crate (Rubber-Tipped)"
desc = "Contains 4 magazines with less-than-lethal rubber-tipped rounds for the C-CK 9x25mm."
/datum/supply_pack/security/armory/sec_glock_ammo
name = "'Murphy' Service Pistol Ammo Crate"
desc = "Contains 4 magazines with lethal rounds for the 'Murphy' service pistol."
cost = CARGO_CRATE_VALUE * 3
contains = list(/obj/item/ammo_box/magazine/m9mm/rubber = 4)
crate_name = "C-CK 9x25mm ammo crate (rubber-tipped)"
/datum/supply_pack/security/armory/sec_glock_ammo_flat
name = "C-CK 9x25mm Ammo Crate (Flat-Tipped)"
desc = "Contains 4 magazines with lethal flat-tipped rounds for the C-CK 9x25mm."
cost = CARGO_CRATE_VALUE * 4
contains = list(/obj/item/ammo_box/magazine/m9mm/flathead = 4)
crate_name = "C-CK 9x25mm ammo crate (flat-tipped)"
/datum/supply_pack/security/armory/sec_glock_ammo_regular
name = "C-CK 9x25mm Ammo Crate (Regular)"
desc = "Contains 4 magazines with lethal rounds for the C-CK 9x25mm."
cost = CARGO_CRATE_VALUE * 6
contains = list(/obj/item/ammo_box/magazine/m9mm = 4)
crate_name = "C-CK 9x25mm ammo crate (regular)"
contains = list(/obj/item/ammo_box/magazine/security = 4)
crate_name = "'Murphy' service pistol ammo crate"
/datum/supply_pack/security/armory/alert_level_firing_pin
name = "Alert Level Firing Pin Crate"
@@ -1,15 +1,15 @@
/obj/item/storage/toolbox/guncase/skyrat/pistol/sec_glock
name = "black glock-9mm case"
name = "\improper 'Murphy' Service Pistol case"
/obj/item/storage/toolbox/guncase/skyrat/pistol/sec_glock/PopulateContents()
new /obj/item/gun/ballistic/automatic/pistol/sec_glock/security(src)
new /obj/item/ammo_box/magazine/m9mm/flathead(src)
new /obj/item/ammo_box/magazine/m9mm/flathead(src)
new /obj/item/gun/ballistic/automatic/pistol/sec_glock(src)
new /obj/item/ammo_box/magazine/security(src)
new /obj/item/ammo_box/magazine/security(src)
/obj/item/storage/toolbox/guncase/skyrat/pistol/hos_glock
name = "silver glock-9mm case"
name = "\improper 'Murphy' Service Pistol case"
/obj/item/storage/toolbox/guncase/skyrat/pistol/hos_glock/PopulateContents()
new /obj/item/gun/ballistic/automatic/pistol/sec_glock(src)
new /obj/item/ammo_box/magazine/m9mm(src)
new /obj/item/ammo_box/magazine/m9mm(src)
new /obj/item/ammo_box/magazine/security(src)
new /obj/item/ammo_box/magazine/security(src)
@@ -1,28 +1,158 @@
/obj/item/gun/ballistic/automatic/pistol/sec_glock //This is what you give to the Head of Security.
name = "\improper Silver C-CK 9x25mm"
desc = "The Compact Criminal Killer, or C-CK9 for short, is a semi-automatic ballistic pistol meant for regulated station defense. This one is silver plated."
icon = 'modular_zubbers/icons/obj/guns/sec_pistol.dmi'
icon_state = "silver"
w_class = WEIGHT_CLASS_NORMAL
accepted_magazine_type = /obj/item/ammo_box/magazine/m9mm
spawn_magazine_type = /obj/item/ammo_box/magazine/m9mm
fire_sound = 'modular_zubbers/sound/weapons/gun/lock/shot.ogg'
fire_delay = 3
can_suppress = FALSE
projectile_damage_multiplier = 0.75
/obj/item/gun/ballistic/automatic/pistol/sec_glock/security //This is what you give to Security Officers.
name = "\improper C-CK 9x25mm"
desc = "The Compact Criminal Killer, or C-CK9 for short, is a semi-automatic ballistic pistol meant for regulated station defense. These are normally issued with a special firing pin that only allows firing on code blue or higher."
name = "\improper 'Murphy' Service Pistol"
desc = "This 9 mm monster was developed during the very first body-modding craze by Nanotrasen, built with every what-if in mind, this timeless brick is near-incapable of failure. It comes with a revolutionary quick-reload system."
icon = 'modular_zubbers/icons/obj/guns/sec_pistol.dmi'
icon_state = "black"
pin = /obj/item/firing_pin/alert_level/blue
spawn_magazine_type = /obj/item/ammo_box/magazine/m9mm/flathead
fire_delay = 4
w_class = WEIGHT_CLASS_NORMAL
throwforce = 19 //Nokia of guns, no locker breaking though
force = 10 //same as baton
accepted_magazine_type = /obj/item/ammo_box/magazine/security
fire_sound = 'modular_zubbers/sound/weapons/gun/lock/shot.ogg'
fire_delay = 5
can_suppress = FALSE
projectile_damage_multiplier = 0.65
projectile_damage_multiplier = 1
actions_types = list(/datum/action/item_action/toggle_mageject)
var/magejecting = FALSE //Whether we are launching the mags or not
/obj/item/gun/ballistic/automatic/pistol/sec_glock/security/rubber //This is what you give to cargo packages.
spawn_magazine_type = /obj/item/ammo_box/magazine/m9mm/rubber
/datum/action/item_action/toggle_mageject
button_icon = 'icons/obj/weapons/guns/ammo.dmi'
button_icon_state = "9x19p"
name = "Toggle magazine ejection"
/obj/item/gun/ballistic/automatic/pistol/sec_glock/ui_action_click(mob/user, actiontype)
if(!istype(actiontype, /datum/action/item_action/toggle_mageject))
return ..()
magejecting = !magejecting
balloon_alert(user, "[magejecting ? "now" : "no longer"] launching empty magazines")
playsound(user, 'sound/items/weapons/empty.ogg', 100, TRUE)
update_appearance()
update_item_action_buttons()
/obj/item/gun/ballistic/automatic/pistol/sec_glock/examine(mob/user)
. = ..()
. += span_notice("Only compatible with Nanotrasen-sourced 9mm magazines.")
. += span_notice("Using it in hand when out of ammo to start a spin reload. This can only be done if you have a spare magazine in or on your belt.")
. += span_notice("Spin reloads can be done on the move and need you only to hold your gun for their 2 second duration.")
. += span_notice("If toggled on, spin reloads throw empty magazines in the direction you're facing, dealing damage dependant on their type.")
/obj/item/gun/ballistic/automatic/pistol/sec_glock/attack_self(mob/living/user)
var/obj/item/belt_item = user.get_item_by_slot(ITEM_SLOT_BELT)
var/obj/item/ammo_box/magazine/swapped_mag = istype(belt_item, accepted_magazine_type) ? belt_item : locate(accepted_magazine_type) in belt_item
if(!magazine && !chambered) //Empty gun, load in anyhow but without delay. No mag
if(swapped_mag)
balloon_alert(user, "you spin your gun, loading in a mag!")
SpinAnimation(2, 1)
if(do_after(user, 1 SECONDS, timed_action_flags = (IGNORE_USER_LOC_CHANGE | IGNORE_TARGET_LOC_CHANGE), target = src))
insert_magazine(user, swapped_mag) // Just put the new mag in hands off
return
else
balloon_alert(user, "no spare magazines in your belt!") // We still say what's wrong
default_behaviour(user, TRUE)
return
if(!magazine && chambered)
default_behaviour(user)
return
if(magazine)
if(!magazine.ammo_count() && !chambered)
if(swapped_mag)
balloon_alert(user, "you spin your gun, loading in a mag!")
SpinAnimation(2, 1)
if(do_after(user, 1 SECONDS, timed_action_flags = (IGNORE_USER_LOC_CHANGE | IGNORE_TARGET_LOC_CHANGE), target = src))
throw_eject_magazine(user, magejecting, swapped_mag)
return
else
default_behaviour(user, TRUE)
balloon_alert(user, "no spare magazines in your belt!")
return
default_behaviour(user)
/obj/item/gun/ballistic/automatic/pistol/sec_glock/proc/throw_eject_magazine(mob/user, was_ejected, obj/item/ammo_box/magazine/security/belt_mag, atom/target)
if(bolt_type == BOLT_TYPE_OPEN)
chambered = null
if(magazine.ammo_count())
playsound(src, eject_sound, eject_sound_volume, eject_sound_vary)
else
playsound(src, eject_empty_sound, eject_sound_volume, eject_sound_vary)
magazine.forceMove(drop_location())
var/obj/item/ammo_box/magazine/security/old_mag = magazine
if(belt_mag)
insert_magazine(user, belt_mag)
else
magazine = null
return
old_mag.forceMove(drop_location())
playsound(old_mag, old_mag.murphy_eject_sound, 50, TRUE)
if(was_ejected)
old_mag.was_ejected = TRUE
old_mag.throw_at(get_edge_target_turf(user, user.dir), range = 7, speed = 7, thrower = user, force = 10)
old_mag.update_appearance()
update_appearance()
/obj/item/gun/ballistic/automatic/pistol/sec_glock/insert_magazine(mob/user, obj/item/ammo_box/magazine/AM, display_message = TRUE)
if(!istype(AM, accepted_magazine_type))
balloon_alert(user, "[AM.name] doesn't fit!")
return FALSE
if(user.transferItemToLoc(AM, src))
magazine = AM
if(bolt_type == BOLT_TYPE_OPEN && !bolt_locked)
chamber_round(TRUE)
drop_bolt()
update_appearance()
return TRUE
else
to_chat(user, span_warning("You cannot seem to get [src] out of your hands!"))
return FALSE
// for your viewing convenience, same procs, just without bubbles
/obj/item/gun/ballistic/automatic/pistol/sec_glock/drop_bolt(mob/user = null)
playsound(src, bolt_drop_sound, bolt_drop_sound_volume, FALSE)
chamber_round()
bolt_locked = FALSE
update_appearance()
/obj/item/gun/ballistic/automatic/pistol/sec_glock/rack(mob/user = null)
if(bolt_type == BOLT_TYPE_NO_BOLT)
return
if(bolt_type == BOLT_TYPE_OPEN)
if(!bolt_locked)
return
bolt_locked = FALSE
process_chamber(!chambered, FALSE)
if(bolt_type == BOLT_TYPE_LOCKING && !chambered)
bolt_locked = TRUE
playsound(src, lock_back_sound, lock_back_sound_volume, lock_back_sound_vary)
else
playsound(src, rack_sound, rack_sound_volume, rack_sound_vary)
update_appearance()
/obj/item/gun/ballistic/automatic/pistol/sec_glock/proc/default_behaviour(mob/user = null, eject_mag_inside = FALSE) //Proc that we call to make the gun work as any gun would when not launching magazines etc
if(!internal_magazine && magazine && eject_mag_inside) //Eject mag inside prevents someone spamming use in hand from emptying the clip they're going to throw into their hand.
if(!magazine.ammo_count())
eject_magazine(user)
return
if(bolt_type == BOLT_TYPE_NO_BOLT)
unload_ammo(user)
return
if(bolt_type == BOLT_TYPE_LOCKING && bolt_locked)
drop_bolt(user)
return
if (recent_rack > world.time)
return
recent_rack = world.time + rack_delay
rack(user)
return
//oh BROTHER I am NOT getting a coder of the year award with this... But yeah overriding the item_interaction was my best idea out of MULTPLE attempts. Not lazy, just stupid.
/obj/item/gun/ballistic/automatic/pistol/sec_glock/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
. = ..()
if (.)
return
if (!internal_magazine && istype(tool, /obj/item/ammo_box/magazine))
if (tac_reloads)
eject_magazine(user)
insert_magazine(user, tool)
return ITEM_INTERACT_SUCCESS
..()
@@ -1,44 +0,0 @@
/datum/design/glock9mm_ammo_rubber
name = "C-CK Magazine (9x25mm Rubber-Tipped) (Less-Than-Lethal)"
desc = "A magazine for the C-CK 9x25mm Pistol. Contains less-than-lethal rubber-tipped ammo."
id = "glock9mm_ammo_rubber"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3)
build_path = /obj/item/ammo_box/magazine/m9mm/rubber
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design/glock9mm_ammo_flat
name = "C-CK Magazine (9x25mm FlatHead) (Lethal)"
desc = "A magazine for the C-CK 9x25mm Pistol. Contains lethal surplus-tier flathead ammo."
id = "glock9mm_ammo_flathead"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 4)
build_path = /obj/item/ammo_box/magazine/m9mm/flathead
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design/glock9mm_ammo
name = "C-CK Magazine (9x25mm Regular) (Lethal)"
desc = "A magazine for the C-CK 9x25mm Pistol. Contains lethal regular ammo."
id = "glock9mm_ammo_normal"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5)
build_path = /obj/item/ammo_box/magazine/m9mm
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/techweb_node/weaponry/New()
design_ids += "glock9mm_ammo_rubber"
design_ids += "glock9mm_ammo_flathead"
. = ..()
/datum/techweb_node/adv_weaponry/New()
design_ids += "glock9mm_ammo_normal"
. = ..()
+3 -2
View File
@@ -8650,7 +8650,6 @@
#include "modular_skyrat\modules\sec_haul\code\peacekeeper\peacekeeper_lockers.dm"
#include "modular_skyrat\modules\sec_haul\code\technode\all_nodes.dm"
#include "modular_skyrat\modules\sec_haul\code\technode\conversion_kit.dm"
#include "modular_skyrat\modules\sec_haul\code\technode\sec_research.dm"
#include "modular_skyrat\modules\self_actualization_device\code\self_actualization_device.dm"
#include "modular_skyrat\modules\server_overflow\code\chat_link.dm"
#include "modular_skyrat\modules\server_overflow\code\client_procs.dm"
@@ -9545,6 +9544,7 @@
#include "modular_zubbers\code\modules\power\supermatter\supermatter_gas.dm"
#include "modular_zubbers\code\modules\projectiles\ammunition\ballistic\rifle.dm"
#include "modular_zubbers\code\modules\projectiles\ammunition\ballistic\smg.dm"
#include "modular_zubbers\code\modules\projectiles\boxes_magazines\external\pistol.dm"
#include "modular_zubbers\code\modules\projectiles\boxes_magazines\external\smg.dm"
#include "modular_zubbers\code\modules\projectiles\guns\ballistic\automatic.dm"
#include "modular_zubbers\code\modules\projectiles\guns\energy\pulse.dm"
@@ -9577,7 +9577,9 @@
#include "modular_zubbers\code\modules\research\designs\medical_designs.dm"
#include "modular_zubbers\code\modules\research\designs\misc_designs.dm"
#include "modular_zubbers\code\modules\research\designs\nerd_designs.dm"
#include "modular_zubbers\code\modules\research\designs\weapon_designs.dm"
#include "modular_zubbers\code\modules\research\designs\wiremod_designs.dm"
#include "modular_zubbers\code\modules\research\designs\autolathe\security_designs.dm"
#include "modular_zubbers\code\modules\research\techweb\all_nodes.dm"
#include "modular_zubbers\code\modules\research\techweb\circuit_nodes.dm"
#include "modular_zubbers\code\modules\rr_opt_in\examine.dm"
@@ -9594,7 +9596,6 @@
#include "modular_zubbers\code\modules\security\security_glock\firing_pin.dm"
#include "modular_zubbers\code\modules\security\security_glock\gun.dm"
#include "modular_zubbers\code\modules\security\security_glock\lockers.dm"
#include "modular_zubbers\code\modules\security\security_glock\research.dm"
#include "modular_zubbers\code\modules\security_levels\security_level_datums.dm"
#include "modular_zubbers\code\modules\shelves\shelf.dm"
#include "modular_zubbers\code\modules\shuttle\emergency.dm"