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 INTEREST_CAP)
+ calc_threshold = INTEREST_CAP
+ if(company_datum.interest < calc_threshold)
+ passed_interest_tier[company_datum] = PASSED_INTEREST
+
+ else
+ passed_interest_tier[company_datum] = HIGH_INTEREST
+
+
+ var/list/products = subtypesof(/datum/armament_entry/cargo_gun)
+ // Setting cost and stock of armament entries
+ for(var/armament_category as anything in GLOB.armament_entries)
+ for(var/subcategory as anything in GLOB.armament_entries[armament_category][CATEGORY_ENTRY])
+ for(var/datum/armament_entry/armament_entry as anything in GLOB.armament_entries[armament_category][CATEGORY_ENTRY][subcategory])
+ if(products && !(armament_entry.type in products))
+ continue
+
+ var/datum/armament_entry/cargo_gun/entry_typecast = armament_entry
+
+ for(var/company_gun in companies)
+ var/datum/gun_company/the_datum = companies[company_gun]
+
+ if(the_datum.company_flag != entry_typecast.company_bitflag)
+ continue
+
+ switch(passed_interest_tier[the_datum])
+
+ if(FAILED_INTEREST)
+ var/stock_failed = rand(0, 2)
+ entry_typecast.stock = max((round(stock_failed * entry_typecast.stock_mult)), 0)
+ var/gun_cost_failed = rand(entry_typecast.lower_cost, entry_typecast.upper_cost)
+ var/compound_cost = round(entry_typecast.cost * 0.1)
+ entry_typecast.cost = max((round((gun_cost_failed + (compound_cost + CARGO_CRATE_VALUE)) - (0.25 * entry_typecast.lower_cost)) ), 0)
+ entry_typecast.magazine_cost = round((entry_typecast.cost * INTEREST_LOW_MAG_COST) * the_datum.magazine_cost_mult)
+
+ if(PASSED_INTEREST)
+ var/stock_passed = rand(0, 4)
+ entry_typecast.stock = max((round(stock_passed * entry_typecast.stock_mult) + 1), 0)
+ var/gun_cost_passed = rand(entry_typecast.lower_cost, entry_typecast.upper_cost)
+ var/compound_cost = round(entry_typecast.cost * 0.1)
+ entry_typecast.cost = max((round(gun_cost_passed + compound_cost) + CARGO_CRATE_VALUE), 0)
+ entry_typecast.magazine_cost = round((entry_typecast.cost * INTEREST_MED_MAG_COST) * the_datum.magazine_cost_mult)
+
+ if(HIGH_INTEREST)
+ var/stock_interested = rand(0, 6)
+ entry_typecast.stock = max((round(stock_interested * entry_typecast.stock_mult) + 2), 0)
+ var/gun_cost_high = rand(entry_typecast.lower_cost, entry_typecast.upper_cost)
+ var/compound_cost = round(entry_typecast.cost * 0.1)
+ entry_typecast.cost = max(round(gun_cost_high + (compound_cost + CARGO_CRATE_VALUE)) , 0)
+ entry_typecast.magazine_cost = round((entry_typecast.cost * INTEREST_HIGH_MAG_COST) * the_datum.magazine_cost_mult)
+
+#undef MAX_HANDOUT_CHOICES
+#undef INTEREST_HIGH_MULT
+#undef INTEREST_CAP
+#undef INTEREST_LOWER_RAND
+#undef INTEREST_HIGHER_RAND
+#undef BASE_COST_MINIMUM
+#undef BASE_COST_MAXIMUM
+#undef INTEREST_LOW_MAG_COST
+#undef INTEREST_MED_MAG_COST
+#undef INTEREST_HIGH_MAG_COST
diff --git a/modular_skyrat/modules/gun_cargo/code/objects/access.dm b/modular_skyrat/modules/gun_cargo/code/objects/access.dm
new file mode 100644
index 00000000000..e7e33cbafd1
--- /dev/null
+++ b/modular_skyrat/modules/gun_cargo/code/objects/access.dm
@@ -0,0 +1,8 @@
+/obj/item/proc/get_gun_permit_iconstate()
+ var/obj/item/card/id/id_card = GetID()
+
+ if(!id_card)
+ return "hudfan_no"
+ if(ACCESS_WEAPONS in id_card.GetAccess())
+ return "hud_permit"
+ return "hudfan_no"
diff --git a/modular_skyrat/modules/gun_cargo/code/objects/ammo_boxes.dm b/modular_skyrat/modules/gun_cargo/code/objects/ammo_boxes.dm
new file mode 100644
index 00000000000..78de9353ebd
--- /dev/null
+++ b/modular_skyrat/modules/gun_cargo/code/objects/ammo_boxes.dm
@@ -0,0 +1,130 @@
+/obj/item/ammo_box/c9mm/ap
+ name = "ammo box (9mm AP)"
+ ammo_type = /obj/item/ammo_casing/c9mm/ap
+
+/obj/item/ammo_box/c9mm/hp
+ name = "ammo box (9mm HP)"
+ ammo_type = /obj/item/ammo_casing/c9mm/hp
+
+/obj/item/ammo_box/c9mm/fire
+ name = "ammo box (9mm Incen)"
+ ammo_type = /obj/item/ammo_casing/c9mm/fire
+
+/obj/item/ammo_box/c10mm/ap
+ name = "ammo box (10mm AP)"
+ ammo_type = /obj/item/ammo_casing/c10mm/ap
+ max_ammo = 20
+
+/obj/item/ammo_box/c10mm/hp
+ name = "ammo box (10mm HP)"
+ ammo_type = /obj/item/ammo_casing/c10mm/hp
+ max_ammo = 20
+
+/obj/item/ammo_box/c10mm/fire
+ name = "ammo box (10mm Incen)"
+ ammo_type = /obj/item/ammo_casing/c10mm/fire
+ max_ammo = 20
+
+/obj/item/ammo_box/c46x30mm
+ name = "ammo box (4.6x30mm)"
+ icon = 'modular_skyrat/modules/gun_cargo/icons/ammo.dmi'
+ icon_state = "ammo_46"
+ ammo_type = /obj/item/ammo_casing/c46x30mm
+ max_ammo = 20
+
+/obj/item/ammo_box/c46x30mm/ap
+ name = "ammo box (4.6x30mm AP)"
+ ammo_type = /obj/item/ammo_casing/c46x30mm/ap
+
+/obj/item/ammo_box/c46x30mm/rubber
+ name = "ammo box (4.6x30mm Rubber)"
+ ammo_type = /obj/item/ammo_casing/c46x30mm/rubber
+
+/obj/item/ammo_box/c32
+ name = "ammo box (.32)"
+ icon = 'modular_skyrat/modules/gun_cargo/icons/ammo.dmi'
+ icon_state = "ammo_32"
+ ammo_type = /obj/item/ammo_casing/c32
+ max_ammo = 20
+
+/obj/item/ammo_box/c32/ap
+ name = "ammo box (.32 AP)"
+ ammo_type = /obj/item/ammo_casing/c32/ap
+
+/obj/item/ammo_box/c32/rubber
+ name = "ammo box (.32 Rubber)"
+ ammo_type = /obj/item/ammo_casing/c32/rubber
+
+/obj/item/ammo_box/c32/fire
+ name = "ammo box (.32 Incen)"
+ ammo_type = /obj/item/ammo_casing/c32_incendiary
+
+/obj/item/ammo_box/c34
+ name = "ammo box (.34)"
+ icon = 'modular_skyrat/modules/gun_cargo/icons/ammo.dmi'
+ icon_state = "ammo_34"
+ ammo_type = /obj/item/ammo_casing/c34
+ max_ammo = 20
+
+/obj/item/ammo_box/c34/ap
+ name = "ammo box (.34 AP)"
+ ammo_type = /obj/item/ammo_casing/c34/ap
+
+/obj/item/ammo_box/c34/rubber
+ name = "ammo box (.34 Rubber)"
+ ammo_type = /obj/item/ammo_casing/c34/rubber
+
+/obj/item/ammo_box/c34/fire
+ name = "ammo box (.34 Incen)"
+ ammo_type = /obj/item/ammo_casing/c34_incendiary
+
+/obj/item/ammo_box/c12mm
+ name = "ammo box (12mm)"
+ icon = 'modular_skyrat/modules/gun_cargo/icons/ammo.dmi'
+ icon_state = "ammo_12mm"
+ ammo_type = /obj/item/ammo_casing/c12mm
+ max_ammo = 20
+
+/obj/item/ammo_box/c12mm/ap
+ name = "ammo box (12mm AP)"
+ ammo_type = /obj/item/ammo_casing/c12mm/ap
+
+/obj/item/ammo_box/c12mm/hp
+ name = "ammo box (12mm HP)"
+ ammo_type = /obj/item/ammo_casing/c12mm/hp
+
+/obj/item/ammo_box/c12mm/fire
+ name = "ammo box (12mm Incen)"
+ ammo_type = /obj/item/ammo_casing/c12mm/fire
+
+/obj/item/storage/box/ammo_box/microfusion/bluespace
+ name = "bluespace microfusion cell container"
+ desc = "A box filled with microfusion cells."
+
+/obj/item/storage/box/ammo_box/microfusion/bluespace/PopulateContents()
+ new /obj/item/storage/bag/ammo(src)
+ new /obj/item/stock_parts/cell/microfusion/bluespace(src)
+ new /obj/item/stock_parts/cell/microfusion/bluespace(src)
+ new /obj/item/stock_parts/cell/microfusion/bluespace(src)
+
+/obj/item/storage/box/ammo_box/microfusion/bluespace/bagless
+
+/obj/item/storage/box/ammo_box/microfusion/bluespace/bagless/PopulateContents()
+ new /obj/item/stock_parts/cell/microfusion/bluespace(src)
+ new /obj/item/stock_parts/cell/microfusion/bluespace(src)
+ new /obj/item/stock_parts/cell/microfusion/bluespace(src)
+
+/obj/item/ammo_box/b10mm
+ name = "ammo box (10mm Auto)"
+ ammo_type = /obj/item/ammo_casing/b10mm
+ max_ammo = 20
+
+/obj/item/ammo_box/b10mm/hp
+ name = "ammo box (10mm Auto HP)"
+ ammo_type = /obj/item/ammo_casing/b10mm/hp
+ max_ammo = 20
+
+/obj/item/ammo_box/b10mm/rubber
+ name = "ammo box (10mm Auto Rubber)"
+ ammo_type = /obj/item/ammo_casing/b10mm/rubber
+ max_ammo = 20
diff --git a/modular_skyrat/modules/gun_cargo/code/objects/box.dm b/modular_skyrat/modules/gun_cargo/code/objects/box.dm
new file mode 100644
index 00000000000..3295b47feb6
--- /dev/null
+++ b/modular_skyrat/modules/gun_cargo/code/objects/box.dm
@@ -0,0 +1,15 @@
+/obj/item/storage/box/syringes/piercing
+ name = "piercing syringe box"
+ desc = "A five-pack of piercing syringes."
+
+/obj/item/storage/box/syringes/piercing/PopulateContents()
+ for(var/i in 1 to 5)
+ new /obj/item/reagent_containers/syringe/piercing(src)
+
+/obj/item/storage/box/syringes/bluespace
+ name = "bluespace syringe box"
+ desc = "A three-pack of piercing syringes."
+
+/obj/item/storage/box/syringes/piercing/PopulateContents()
+ for(var/i in 1 to 3)
+ new /obj/item/reagent_containers/syringe/bluespace(src)
diff --git a/modular_skyrat/modules/gun_cargo/code/objects/cargo_console.dm b/modular_skyrat/modules/gun_cargo/code/objects/cargo_console.dm
new file mode 100644
index 00000000000..b9f1e33e340
--- /dev/null
+++ b/modular_skyrat/modules/gun_cargo/code/objects/cargo_console.dm
@@ -0,0 +1,3 @@
+/obj/machinery/computer/cargo/ComponentInitialize()
+ . = ..()
+ AddComponent(/datum/component/armament/cargo_gun, subtypesof(/datum/armament_entry/cargo_gun), 0)
diff --git a/modular_skyrat/modules/gun_cargo/code/objects/firing_pin.dm b/modular_skyrat/modules/gun_cargo/code/objects/firing_pin.dm
new file mode 100644
index 00000000000..3c15a754296
--- /dev/null
+++ b/modular_skyrat/modules/gun_cargo/code/objects/firing_pin.dm
@@ -0,0 +1,34 @@
+GLOBAL_VAR_INIT(permit_pin_unrestricted, FALSE)
+// Firing pin that can be used off station freely, and requires a permit to use on-station
+/obj/item/firing_pin/permit_pin
+ name = "permit-locked firing pin"
+ desc = "A firing pin for a station who can't trust their crew. Only allows you to fire the weapon off-station or with a firearms permit.."
+ icon_state = "firing_pin_explorer"
+ fail_message = "You must have a permit or be off-station to fire this!"
+ can_remove = TRUE
+
+// This checks that the user isn't on the station Z-level.
+/obj/item/firing_pin/permit_pin/pin_auth(mob/living/user)
+ var/turf/station_check = get_turf(user)
+
+ if(obj_flags & EMAGGED)
+ return TRUE
+
+ if(GLOB.permit_pin_unrestricted)
+ return TRUE
+
+ var/obj/item/card/id/the_id = user.get_idcard()
+
+ if(!the_id && is_station_level(station_check.z))
+ return FALSE
+
+ if(!is_station_level(station_check.z) || (ACCESS_WEAPONS in the_id.GetAccess()))
+ return TRUE
+
+
+/obj/item/firing_pin
+ var/can_remove = TRUE
+
+/obj/item/firing_pin/emag_act(mob/user)
+ . = ..()
+ can_remove = TRUE
diff --git a/modular_skyrat/modules/gun_cargo/code/objects/guns/interdyne.dm b/modular_skyrat/modules/gun_cargo/code/objects/guns/interdyne.dm
new file mode 100644
index 00000000000..963132e0a1d
--- /dev/null
+++ b/modular_skyrat/modules/gun_cargo/code/objects/guns/interdyne.dm
@@ -0,0 +1,28 @@
+/obj/item/gun/ballistic/automatic/pistol/firefly/smartdart
+ name = "\improper I-94 'Honeybee'"
+ desc = "A 9mm sidearm made by Armadyne and modified by Interdyne, it features a slightly modified paint job and sports a SmartDart underbarrel attachment which can be fired with right click."
+ company_flag = COMPANY_INTERDYNE
+ icon = 'modular_skyrat/modules/gun_cargo/icons/honeybee.dmi'
+ icon_state = "honeybee"
+ company_flag = COMPANY_INTERDYNE
+ var/obj/item/gun/syringe/smartdart/underbarrel/underbarrel
+
+/obj/item/gun/ballistic/automatic/pistol/firefly/smartdart/Initialize()
+ . = ..()
+ underbarrel = new(src)
+ update_appearance()
+
+/obj/item/gun/ballistic/automatic/pistol/firefly/smartdart/afterattack_secondary(atom/target, mob/living/user, flag, params)
+ underbarrel.afterattack(target, user, flag, params)
+ return SECONDARY_ATTACK_CONTINUE_CHAIN
+
+/obj/item/gun/ballistic/automatic/pistol/firefly/smartdart/attackby(obj/item/attacking_item, mob/user, params)
+ if(istype(attacking_item, /obj/item/reagent_containers/syringe/smartdart))
+ underbarrel.attackby(attacking_item, user, params)
+ else
+ ..()
+
+/obj/item/gun/syringe/smartdart/underbarrel
+ name = "SmartDart underbarrel device"
+ desc = "An underbarrel attachment for a pistol that fits a SmartDart."
+ has_gun_safety = FALSE
diff --git a/modular_skyrat/modules/gun_cargo/code/objects/hud_glasses.dm b/modular_skyrat/modules/gun_cargo/code/objects/hud_glasses.dm
new file mode 100644
index 00000000000..7c9ffdaf066
--- /dev/null
+++ b/modular_skyrat/modules/gun_cargo/code/objects/hud_glasses.dm
@@ -0,0 +1,7 @@
+/obj/item/clothing/glasses/hud/gun_permit
+ name = "permit HUD"
+ desc = "A heads-up display that scans humanoids in view, and displays if their current ID possesses a firearms permit or not."
+ icon = 'modular_skyrat/modules/gun_cargo/icons/hud_goggles.dmi'
+ worn_icon = 'modular_skyrat/modules/gun_cargo/icons/hud_goggles_worn.dmi'
+ icon_state = "permithud"
+ hud_type = DATA_HUD_PERMIT
diff --git a/modular_skyrat/modules/gun_cargo/code/objects/keycard_auth.dm b/modular_skyrat/modules/gun_cargo/code/objects/keycard_auth.dm
new file mode 100644
index 00000000000..364d367830e
--- /dev/null
+++ b/modular_skyrat/modules/gun_cargo/code/objects/keycard_auth.dm
@@ -0,0 +1,4 @@
+/proc/toggle_permit_pins()
+ GLOB.permit_pin_unrestricted = !GLOB.permit_pin_unrestricted
+ minor_announce("Permit-locked firing pins have now had their locks [GLOB.permit_pin_unrestricted ? "removed" : "reinstated"].", "Weapons Systems Update:")
+ SSblackbox.record_feedback("nested tally", "keycard_auths", 1, list("permit-locked pins", GLOB.permit_pin_unrestricted ? "unlocked" : "locked"))
diff --git a/modular_skyrat/modules/gun_cargo/icons/ammo.dmi b/modular_skyrat/modules/gun_cargo/icons/ammo.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..77460d0fcac59e079c2cefefb0bdcbf8bfda1657
GIT binary patch
literal 541
zcmV+&0^R9JLGWpiV4
zX>fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33t
zGfE(w;*!LYR3K9+F*i3q-o#9ai!&v&s2C_>$i4;332KSjdF8w
zsZ>^Q^>YDx2>`KMJbYm^+oS*h0QN~lK~z|U?bShU!yo`e(WGEQ0}EwMQQ@P0hNgk|{|{!cIfSlKND>$=9~2*A4ld_}nd
z?F<R0kCU_1BwPf)d0BnYW7Dj07{|X
zb}0bVN_(vcZ1VnZ0PM2w4Didt0Pn{GlDz*3fGm4vfZu-xco%@LC^w*;fkYolA|TVA
f33&EXe($~k?RZsr2=T!|00000NkvXXu0mjfWTe*3
literal 0
HcmV?d00001
diff --git a/modular_skyrat/modules/gun_cargo/icons/honeybee.dmi b/modular_skyrat/modules/gun_cargo/icons/honeybee.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..e59ef5c0461c740ce27bd74fe024dfd023fa53c6
GIT binary patch
literal 595
zcmV-Z0<8UsP)Jx)Bk(#m68pFCZ{5XagcpWMPS)
zpE@)&-{0Sqz})X)YO1QLR8&+#LPBO_WXZ|NV`F1nSy_L7e^6CqFf~TI$H&**-Y`Z*
za}3tY00001bW%=J06^y0W&i*HgnCq1bVOxyV{&P5bZKvH004NLQ&wDl08A-I
zrtPcm>Hq)%1xZ9fR9J=WmeFp*APhx`-IC2MWZBYgZ8loi|NrA`+P6mCfR|PBu@WVM
zd$}T!j4_Jxuj#saE#PX6w!=y}BJ@wseUE*m0TIwA*P7rB=haPASt
zD>(s`=y~5>v+^23HW7y+191S>^RjP~_q+Y@{&6Ud0N!|Gj?+Bv_VfJtRjMCHFHaDr
zY!J!=fZoe002ovPDHLkV1oB=1yBG0
literal 0
HcmV?d00001
diff --git a/modular_skyrat/modules/gun_cargo/icons/hud_goggles.dmi b/modular_skyrat/modules/gun_cargo/icons/hud_goggles.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..c4121b3b3b7d76c8b6be2afb2509cbb0e1beb3f1
GIT binary patch
literal 302
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvxd5LK*8>L*2nh+L85_?`Gd`1M
z{6Edu-rincUtdK<#lyqnQhmP?P$gqYkY6x^!?PP{Ku&H|NJNQCYH@N=WKhlO#F@nvH#g*lHV
z9hnrO5WG@htA_bzmBl8mo!!Q&n^#C^q@6fAGi=I?*<6X*+B<&jZ0KcUI1nLyS7brr
zS)j$Po-U3d8WWQfBnlk@CNv6mJZuQO8R~FC#fL#LK}b*I%`7#J@FOqc^b~^P6b%{~
vmw7Cj(718Ky^ug3DMmlsgQPZZI$yFJ$++IVX54&_D)HS3j3^P6i
literal 0
HcmV?d00001
diff --git a/modular_skyrat/modules/gun_cargo/icons/hud_goggles_worn.dmi b/modular_skyrat/modules/gun_cargo/icons/hud_goggles_worn.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..8ec8b7fe6024034e0ef4a3d6aa79634777cf6bc4
GIT binary patch
literal 288
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJqNiMQ4l4+-9++i&RQR3p|EO6UrxzKNZ#Z%+=i!m2-r~O^CC0MzPD?5M5qt40=;`OS
z!+&0!{G*cDcGzUnNgelV(^l;^l6iCVsmR&;DJNAlMfsR#hTrthd$+-be?RLl<^vJZ
zcXQ@UnhUf&)6>NTa+CU1*HwOY
zscgBnWz)8$w;35GY^j#cTDyHo(Xu70zo(x`E30_kI@A1&<$goAnUNBkt1sw0I3HEV
d3^X1NelVQqm1YpX68sq?{yMbrApn
literal 0
HcmV?d00001
diff --git a/modular_skyrat/modules/gunsgalore/code/guns/akm.dm b/modular_skyrat/modules/gunsgalore/code/guns/akm.dm
index 0beba814134..34e05065b25 100644
--- a/modular_skyrat/modules/gunsgalore/code/guns/akm.dm
+++ b/modular_skyrat/modules/gunsgalore/code/guns/akm.dm
@@ -21,7 +21,8 @@
load_empty_sound = 'modular_skyrat/modules/gunsgalore/sound/guns/interact/ltrifle_magin.ogg'
eject_sound = 'modular_skyrat/modules/gunsgalore/sound/guns/interact/ltrifle_magout.ogg'
alt_icons = TRUE
- realistic = TRUE
+ dirt_modifier = 0.75
+ company_flag = COMPANY_IZHEVSK
/obj/item/ammo_box/magazine/akm
name = "\improper AKM magazine"
diff --git a/modular_skyrat/modules/gunsgalore/code/guns/luger.dm b/modular_skyrat/modules/gunsgalore/code/guns/luger.dm
index 385b6863e77..c3be38587c7 100644
--- a/modular_skyrat/modules/gunsgalore/code/guns/luger.dm
+++ b/modular_skyrat/modules/gunsgalore/code/guns/luger.dm
@@ -14,3 +14,4 @@
rack_sound = 'modular_skyrat/modules/gunsgalore/sound/guns/fire/luger_rack.ogg'
fire_sound_volume = 100
suppressor_x_offset = 14
+ company_flag = COMPANY_OLDARMS
diff --git a/modular_skyrat/modules/gunsgalore/code/guns/mp40.dm b/modular_skyrat/modules/gunsgalore/code/guns/mp40.dm
index bfb53248894..bfd9f1a9232 100644
--- a/modular_skyrat/modules/gunsgalore/code/guns/mp40.dm
+++ b/modular_skyrat/modules/gunsgalore/code/guns/mp40.dm
@@ -21,6 +21,7 @@
eject_sound = 'modular_skyrat/modules/gunsgalore/sound/guns/interact/smg_magout.ogg'
alt_icons = TRUE
realistic = TRUE
+ company_flag = COMPANY_OLDARMS
/obj/item/ammo_box/magazine/mp40
name = "mp40 magazine (9mmx19)"
diff --git a/modular_skyrat/modules/gunsgalore/code/guns/ppsh.dm b/modular_skyrat/modules/gunsgalore/code/guns/ppsh.dm
index e3115d87d5c..322514db307 100644
--- a/modular_skyrat/modules/gunsgalore/code/guns/ppsh.dm
+++ b/modular_skyrat/modules/gunsgalore/code/guns/ppsh.dm
@@ -24,6 +24,7 @@
load_sound = 'modular_skyrat/modules/gunsgalore/sound/guns/interact/smg_magin.ogg'
load_empty_sound = 'modular_skyrat/modules/gunsgalore/sound/guns/interact/smg_magin.ogg'
eject_sound = 'modular_skyrat/modules/gunsgalore/sound/guns/interact/smg_magout.ogg'
+ company_flag = COMPANY_OLDARMS
/obj/item/ammo_box/magazine/ppsh
name = "Asha 76 magazine (7.62x25mm)"
diff --git a/modular_skyrat/modules/gunsgalore/code/guns/stg.dm b/modular_skyrat/modules/gunsgalore/code/guns/stg.dm
index 192f89efbc1..c96d426e172 100644
--- a/modular_skyrat/modules/gunsgalore/code/guns/stg.dm
+++ b/modular_skyrat/modules/gunsgalore/code/guns/stg.dm
@@ -24,6 +24,7 @@
load_sound = 'modular_skyrat/modules/gunsgalore/sound/guns/interact/ltrifle_magin.ogg'
load_empty_sound = 'modular_skyrat/modules/gunsgalore/sound/guns/interact/ltrifle_magin.ogg'
eject_sound = 'modular_skyrat/modules/gunsgalore/sound/guns/interact/ltrifle_magout.ogg'
+ company_flag = COMPANY_OLDARMS
/obj/item/ammo_box/magazine/stg
name = "stg magazine (7.92x33mm)"
diff --git a/modular_skyrat/modules/mapping/code/shuttles.dm b/modular_skyrat/modules/mapping/code/shuttles.dm
index ee947eb7963..f0f589b9053 100644
--- a/modular_skyrat/modules/mapping/code/shuttles.dm
+++ b/modular_skyrat/modules/mapping/code/shuttles.dm
@@ -118,7 +118,7 @@
implants = list(/obj/item/implant/weapons_auth)
belt = /obj/item/storage/belt/military
r_pocket = /obj/item/storage/bag/ammo
- l_pocket = /obj/item/gun/energy/disabler/cfa_disabler
+ l_pocket = /obj/item/gun/energy/disabler/bolt_disabler
id = /obj/item/card/id/advanced/chameleon
id_trim = /datum/id_trim/chameleon/operative
skillchips = list(/obj/item/skillchip/job/engineer)
@@ -148,7 +148,7 @@
implants = list(/obj/item/implant/weapons_auth)
belt = /obj/item/storage/belt/military
r_pocket = /obj/item/storage/bag/ammo
- l_pocket = /obj/item/gun/energy/disabler/cfa_disabler
+ l_pocket = /obj/item/gun/energy/disabler/bolt_disabler
id = /obj/item/card/id/advanced/chameleon
id_trim = /datum/id_trim/chameleon/operative
skillchips = list(/obj/item/skillchip/job/engineer)
diff --git a/modular_skyrat/modules/microfusion/code/cargo_stuff.dm b/modular_skyrat/modules/microfusion/code/cargo_stuff.dm
index f4d49054a98..85fc96a0895 100644
--- a/modular_skyrat/modules/microfusion/code/cargo_stuff.dm
+++ b/modular_skyrat/modules/microfusion/code/cargo_stuff.dm
@@ -34,7 +34,7 @@
)
crate_name = "Microfusion Cell Crate"
-/datum/supply_pack/security/mcr01_attachments_A
+/datum/supply_pack/security/mcr01_attachments_a
name = "MCR-01 Military Attachments Crate Type A"
desc = "Micron Control Systems Incorporated supplied MCR-01 Military spec attachments! This crate comes with two utilitarian repeater loadout."
cost = CARGO_CRATE_VALUE * 14
@@ -52,7 +52,7 @@
)
crate_name = "MCR-01 Military Attachments Crate Type A"
-/datum/supply_pack/security/mcr01_attachments_type_B
+/datum/supply_pack/security/mcr01_attachments_type_b
name = "MCR-01 Military Attachments Crate Type B"
desc = "Micron Control Systems Incorporated supplied MCR-01 Military spec attachments! This crate comes in a mixed specialist loadout."
cost = CARGO_CRATE_VALUE * 16
@@ -69,7 +69,7 @@
crate_name = "MCR-01 Military Attachments Crate Type B"
-/datum/supply_pack/security/mcr01_attachments_H
+/datum/supply_pack/security/mcr01_attachments_h
name = "HCR-01 Military Attachments Crate Type H"
desc = "Honkicron Clownery Systems Inhonkorated supplied HCR-01 Clownery spec attachments! This crate oddly smells of bananas."
cost = CARGO_CRATE_VALUE * 20
@@ -86,4 +86,3 @@
/obj/item/food/pie/cream,
)
crate_name = "MCR-01 Military Attachments Crate Type H"
-
diff --git a/modular_skyrat/modules/microfusion/code/gun_types.dm b/modular_skyrat/modules/microfusion/code/gun_types.dm
index bc59c449176..b65a84bf461 100644
--- a/modular_skyrat/modules/microfusion/code/gun_types.dm
+++ b/modular_skyrat/modules/microfusion/code/gun_types.dm
@@ -1,9 +1,10 @@
/obj/item/gun/microfusion/mcr01
name = "MCR-01"
- desc = "An advanced, modular energy weapon produced by Allstar Lasers Incorporated. These cutting edge weapons differ from traditional beam weaponry in producing individual bolts, as well as utilizing hotswapped cells rather than being tied to immobile power sources."
+ desc = "An advanced, modular energy weapon produced by Micron Control Systems. These cutting edge weapons differ from traditional beam weaponry in producing individual bolts, as well as utilizing hotswapped cells rather than being tied to immobile power sources."
icon_state = "mcr01"
inhand_icon_state = "mcr01"
shaded_charge = TRUE
+ company_flag = COMPANY_MICRON
/// Gun for cargo crates.
/obj/item/gun/microfusion/mcr01/advanced
@@ -49,6 +50,13 @@
new /obj/item/stock_parts/cell/microfusion/advanced(src)
new /obj/item/stock_parts/cell/microfusion/advanced(src)
+/obj/item/storage/box/ammo_box/microfusion/advanced/bagless
+
+/obj/item/storage/box/ammo_box/microfusion/advanced/bagless/PopulateContents()
+ new /obj/item/stock_parts/cell/microfusion/advanced(src)
+ new /obj/item/stock_parts/cell/microfusion/advanced(src)
+ new /obj/item/stock_parts/cell/microfusion/advanced(src)
+
//////////////MICROFUSION SPAWNERS
/obj/effect/spawner/armory_spawn/microfusion
icon_state = "random_rifle"
diff --git a/modular_skyrat/modules/modular_weapons/code/autolathe_designs.dm b/modular_skyrat/modules/modular_weapons/code/autolathe_designs.dm
index 657ca37590d..23d59345159 100644
--- a/modular_skyrat/modules/modular_weapons/code/autolathe_designs.dm
+++ b/modular_skyrat/modules/modular_weapons/code/autolathe_designs.dm
@@ -9,7 +9,7 @@
// .32 - 15 damage pistol round.
/datum/design/c32
- name = "4.6x30mm Bullet"
+ name = ".32 Bullet"
id = "c32"
build_type = AUTOLATHE
materials = list(/datum/material/iron = 1000)
@@ -24,30 +24,6 @@
build_path = /obj/item/ammo_casing/c32/rubber
category = list("initial", "Security")
-/datum/design/c32/ap
- name = ".32 Armor-Piercing Bullet"
- id = "c32/ap"
- build_type = AUTOLATHE
- materials = list(/datum/material/iron = 2000)
- build_path = /obj/item/ammo_casing/c32/ap
- category = list("hacked", "Security")
-
-/datum/design/c32_incendiary
- name = ".32 Incendiary Bullet"
- id = "c32_incendiary"
- build_type = AUTOLATHE
- materials = list(/datum/material/iron = 2000)
- build_path = /obj/item/ammo_casing/c32_incendiary
- category = list("hacked", "Security")
-
-/datum/design/smg32acp
- name = "Empty .32 SMG Magazine"
- id = "smg32acp"
- build_type = AUTOLATHE
- materials = list(/datum/material/iron = 3000)
- build_path = /obj/item/ammo_box/magazine/multi_sprite/cfa_wildcat/empty
- category = list("hacked", "Security")
-
/datum/design/a762
name = "7.62 Bullet"
id = "a762"
@@ -82,22 +58,6 @@
build_path = /obj/item/ammo_casing/c46x30mm/rubber
category = list("initial", "Security")
-/datum/design/c46x30mm_ap
- name = "4.6x30mm Armor-Piercing Bullet"
- id = "c46x30mm_ap"
- build_type = AUTOLATHE
- materials = list(/datum/material/iron = 1000)
- build_path = /obj/item/ammo_casing/c46x30mm/ap
- category = list("hacked", "Security")
-
-/datum/design/c46x30mm_incendiary
- name = "4.6x30mm Incendiary Bullet"
- id = "c46x30mm_incendiary"
- build_type = AUTOLATHE
- materials = list(/datum/material/iron = 1000)
- build_path = /obj/item/ammo_casing/c46x30mm/inc
- category = list("hacked", "Security")
-
// .45
/datum/design/c45_lethal
diff --git a/modular_skyrat/modules/modular_weapons/code/automatic.dm b/modular_skyrat/modules/modular_weapons/code/automatic.dm
index 0757dd5b60f..5599ee8ca09 100644
--- a/modular_skyrat/modules/modular_weapons/code/automatic.dm
+++ b/modular_skyrat/modules/modular_weapons/code/automatic.dm
@@ -5,26 +5,26 @@
// Magazines
/obj/item/ammo_box/magazine/multi_sprite/cfa_wildcat
- name = "CFA Wildcat magazine (.32)"
- desc = "Magazines taking .32 ammunition; it fits in the CFA Wildcat. Alt+click to reskin it."
+ name = "CFA Wildcat magazine (.34)"
+ desc = "Magazines taking .34 ammunition; it fits in the CFA Wildcat. Alt+click to reskin it."
icon = 'modular_skyrat/modules/modular_weapons/icons/obj/ammo.dmi'
- icon_state = "smg32"
+ icon_state = "smg34"
possible_types = list(AMMO_TYPE_LETHAL, AMMO_TYPE_AP, AMMO_TYPE_RUBBER, AMMO_TYPE_INCENDIARY)
- ammo_type = /obj/item/ammo_casing/c32
- caliber = "c32acp"
+ ammo_type = /obj/item/ammo_casing/c34
+ caliber = "c34acp"
max_ammo = 30
multiple_sprites = AMMO_BOX_FULL_EMPTY_BASIC
/obj/item/ammo_box/magazine/multi_sprite/cfa_wildcat/ap
- ammo_type = /obj/item/ammo_casing/c32/ap
+ ammo_type = /obj/item/ammo_casing/c34/ap
round_type = AMMO_TYPE_AP
/obj/item/ammo_box/magazine/multi_sprite/cfa_wildcat/rubber
- ammo_type = /obj/item/ammo_casing/c32/rubber
+ ammo_type = /obj/item/ammo_casing/c34/rubber
round_type = AMMO_TYPE_RUBBER
/obj/item/ammo_box/magazine/multi_sprite/cfa_wildcat/incendiary
- ammo_type = /obj/item/ammo_casing/c32_incendiary
+ ammo_type = /obj/item/ammo_casing/c34_incendiary
round_type = AMMO_TYPE_INCENDIARY
/obj/item/ammo_box/magazine/multi_sprite/cfa_wildcat/empty
@@ -37,7 +37,7 @@
// Fills the role of a low damage, high magazine capacity magdump gun.
/obj/item/gun/ballistic/automatic/cfa_wildcat
name = "\improper CFA Wildcat"
- desc = "An old SMG, this one is chambered in .32, a very common and dirt-cheap cartridge. It has Cantalan Federal Arms etched above the magazine well."
+ desc = "A robust roller-delayed SMG chambered for .34 ammunition."
icon = 'modular_skyrat/modules/modular_weapons/icons/obj/guns/projectile40x32.dmi'
icon_state = "mp5"
inhand_icon_state = "arg"
@@ -52,6 +52,8 @@
fire_sound = 'sound/weapons/gun/smg/shot_alt.ogg'
weapon_weight = WEAPON_MEDIUM
w_class = WEIGHT_CLASS_BULKY
+ company_flag = COMPANY_CANTALAN
+ dirt_modifier = 0.2
/obj/item/gun/ballistic/automatic/cfa_wildcat/no_mag
spawnwithmagazine = FALSE
@@ -62,7 +64,7 @@
/obj/item/gun/ballistic/automatic/cfa_lynx
name = "\improper CFA Lynx"
- desc = "A carbine with a high magazine capacity. Chambered in 4.6x30mm. It has Cantalan Federal Arms etched above the magazine well."
+ desc = "A carbine with a high magazine capacity. Chambered in 4.2x30mm."
icon = 'modular_skyrat/modules/modular_weapons/icons/obj/guns/projectile.dmi'
icon_state = "cfa-lynx"
inhand_icon_state = "arg"
@@ -77,31 +79,33 @@
fire_sound = 'sound/weapons/gun/smg/shot_alt.ogg'
weapon_weight = WEAPON_MEDIUM
w_class = WEIGHT_CLASS_BULKY
+ company_flag = COMPANY_CANTALAN
+ dirt_modifier = 0.2
/obj/item/gun/ballistic/automatic/cfa_lynx/no_mag
spawnwithmagazine = FALSE
/obj/item/ammo_box/magazine/multi_sprite/cfa_lynx
- name = "CFA Lynx Magazine (4.6x30mm)"
- desc = "A magazine for the CFA Lynx. It has a small inscription on the base, '4.6x30mm'. Alt+click to reskin it."
+ name = "CFA Lynx Magazine (4.2x30mm)"
+ desc = "A magazine for the CFA Lynx. It has a small inscription on the base, '4.2x30mm'. Alt+click to reskin it."
icon = 'modular_skyrat/modules/modular_weapons/icons/obj/ammo.dmi'
icon_state = "lynx"
possible_types = list(AMMO_TYPE_LETHAL, AMMO_TYPE_AP, AMMO_TYPE_RUBBER, AMMO_TYPE_INCENDIARY)
- ammo_type = /obj/item/ammo_casing/c46x30mm
- caliber = CALIBER_46X30MM
+ ammo_type = /obj/item/ammo_casing/c42x30mm
+ caliber = CALIBER_42X30MM
max_ammo = 40
multiple_sprites = AMMO_BOX_FULL_EMPTY_BASIC
/obj/item/ammo_box/magazine/multi_sprite/cfa_lynx/ap
- ammo_type = /obj/item/ammo_casing/c46x30mm/ap
+ ammo_type = /obj/item/ammo_casing/c42x30mm/ap
round_type = AMMO_TYPE_AP
/obj/item/ammo_box/magazine/multi_sprite/cfa_lynx/rubber
- ammo_type = /obj/item/ammo_casing/c46x30mm/rubber
+ ammo_type = /obj/item/ammo_casing/c42x30mm/rubber
round_type = AMMO_TYPE_RUBBER
/obj/item/ammo_box/magazine/multi_sprite/cfa_lynx/incendiary
- ammo_type = /obj/item/ammo_casing/c46x30mm/inc
+ ammo_type = /obj/item/ammo_casing/c42x30mm/inc
round_type = AMMO_TYPE_INCENDIARY
/obj/item/ammo_box/magazine/multi_sprite/cfa_lynx/empty
diff --git a/modular_skyrat/modules/modular_weapons/code/energy.dm b/modular_skyrat/modules/modular_weapons/code/energy.dm
index a1a7a88baaf..96ec60e501a 100644
--- a/modular_skyrat/modules/modular_weapons/code/energy.dm
+++ b/modular_skyrat/modules/modular_weapons/code/energy.dm
@@ -1,11 +1,11 @@
//////////////////////
-// CFA Defender //
+// Bolt Responder //
//////////////////////
// A mini disabler with 12 shot capacity in comparison to the normal disabler's 20.
-/obj/item/gun/energy/disabler/cfa_disabler
- name = "CFA Responder"
- desc = "A pocket-sized self-defense weapon popular with law enforcement due to its safe non-lethal payload that physically exhausts organic targets and cheap pricetag. The size makes it popular with smaller species, however, gives the obvious drawback of a smaller battery. It has Cantalan Federal Arms eteched into the grip."
+/obj/item/gun/energy/disabler/bolt_disabler
+ name = "Bolt Responder"
+ desc = "A pocket-sized non-lethal energy gun with low ammo capacity."
icon = 'modular_skyrat/modules/modular_weapons/icons/obj/guns/projectile.dmi'
icon_state = "cfa-disabler"
inhand_icon_state = null
@@ -18,8 +18,9 @@
can_flashlight = FALSE // Can't attach or detach the flashlight, and override it's icon update
gunlight_state = "cfa-disabler-light"
has_gun_safety = FALSE
+ company_flag = COMPANY_BOLT
-/obj/item/gun/energy/disabler/cfa_disabler/Initialize()
+/obj/item/gun/energy/disabler/bolt_disabler/Initialize()
set_gun_light(new /obj/item/flashlight/seclite(src))
return ..()
diff --git a/modular_skyrat/modules/modular_weapons/code/modular_projectiles.dm b/modular_skyrat/modules/modular_weapons/code/modular_projectiles.dm
index 6cd84dbf866..0cbb9a9eca3 100644
--- a/modular_skyrat/modules/modular_weapons/code/modular_projectiles.dm
+++ b/modular_skyrat/modules/modular_weapons/code/modular_projectiles.dm
@@ -207,4 +207,195 @@
///// 5.56x45mm /////
////////////////////////
-////// 7.62 //////
+////// .34 ACP //////
+// Why? Blame CFA, they want their bullets to be *proprietary*
+/obj/item/ammo_casing/c34
+ name = ".34 bullet casing"
+ desc = "A .34 bullet casing."
+ caliber = "c32acp"
+ projectile_type = /obj/projectile/bullet/c34
+
+/obj/projectile/bullet/c34
+ name = ".34 bullet"
+ damage = 15
+ wound_bonus = 0
+
+/obj/item/ammo_casing/c34/rubber
+ name = ".34 rubber bullet casing"
+ desc = "A .34 rubber bullet casing."
+ caliber = "c34acp"
+ projectile_type = /obj/projectile/bullet/c34/rubber
+ harmful = FALSE
+
+/obj/projectile/bullet/c34/rubber
+ name = ".34 rubber bullet"
+ damage = 5
+ stamina = 20
+ wound_bonus = -75
+ shrapnel_type = null
+ sharpness = NONE
+ embedding = null
+
+/obj/item/ammo_casing/c34/ap
+ name = ".34 armor-piercing bullet"
+ desc = "A .34 armor-piercing bullet casing."
+ caliber = "c34acp"
+ projectile_type = /obj/projectile/bullet/c34/ap
+
+/obj/projectile/bullet/c34/ap
+ name = ".34 armor-piercing bullet"
+ damage = 15
+ armour_penetration = 40
+ wound_bonus = -75
+
+/obj/item/ammo_casing/c34_incendiary
+ name = ".34 incendiary bullet"
+ desc = "A .34 incendiary bullet casing."
+ caliber = "c34acp"
+ projectile_type = /obj/projectile/bullet/incendiary/c34_incendiary
+
+/obj/projectile/bullet/incendiary/c34_incendiary
+ name = ".34 incendiary bullet"
+ damage = 8
+ fire_stacks = 1
+ wound_bonus = -90
+
+////// .34 ACP //////
+////////////////////////
+////// 4.2x30mm //////
+
+/obj/item/ammo_casing/c42x30mm
+ name = "4.2x30mm bullet casing"
+ desc = "A 4.2x30mm bullet casing."
+ caliber = CALIBER_42X30MM
+ projectile_type = /obj/projectile/bullet/c42x30mm
+
+/obj/item/ammo_casing/c42x30mm/ap
+ name = "4.2x30mm armor-piercing bullet casing"
+ desc = "A 4.2x30mm armor-piercing bullet casing."
+ projectile_type = /obj/projectile/bullet/c42x30mm/ap
+
+/obj/item/ammo_casing/c42x30mm/inc
+ name = "4.2x30mm incendiary bullet casing"
+ desc = "A 4.2x30mm incendiary bullet casing."
+ projectile_type = /obj/projectile/bullet/incendiary/c42x30mm
+
+/obj/projectile/bullet/c42x30mm
+ name = "4.2x30mm bullet"
+ damage = 20
+ wound_bonus = -5
+ bare_wound_bonus = 5
+ embed_falloff_tile = -4
+
+/obj/projectile/bullet/c42x30mm/ap
+ name = "4.2x30mm armor-piercing bullet"
+ damage = 15
+ armour_penetration = 40
+ embedding = null
+
+/obj/projectile/bullet/incendiary/c42x30mm
+ name = "4.2x30mm incendiary bullet"
+ damage = 10
+ fire_stacks = 1
+
+/obj/projectile/bullet/c42x30mm_rubber
+ name = "4.2x30mm rubber bullet"
+ damage = 3
+ stamina = 17
+ ricochets_max = 6
+ ricochet_incidence_leeway = 0
+ ricochet_chance = 130
+ ricochet_decay_damage = 0.7
+ shrapnel_type = null
+ sharpness = NONE
+ embedding = null
+ wound_bonus = -50
+
+/obj/item/ammo_casing/c42x30mm/rubber
+ name = "4.2x30mm rubber bullet casing"
+ desc = "A 4.2x30mm rubber bullet casing."
+ projectile_type = /obj/projectile/bullet/c42x30mm_rubber
+ harmful = FALSE
+
+////// 4.2x30mm //////
+////////////////////////
+////// 12mm //////
+
+/obj/item/ammo_casing/c12mm
+ name = "12mm Magnum bullet casing"
+ desc = "A 12mm Magnum bullet casing."
+ caliber = CALIBER_12MM
+ projectile_type = /obj/projectile/bullet/c12mm
+
+/obj/item/ammo_casing/c12mm/ap
+ name = "12mm Magnum armor-piercing bullet casing"
+ desc = "A 12mm Magnum bullet casing with a tungsten core tip."
+ projectile_type = /obj/projectile/bullet/c12mm/ap
+
+/obj/item/ammo_casing/c12mm/hp
+ name = "12mm Magnum hollow-point bullet casing"
+ desc = "A 12mm Magnum bullet casing with a hollow tip that fragments on contact."
+ projectile_type = /obj/projectile/bullet/c12mm/hp
+
+/obj/item/ammo_casing/c12mm/fire
+ name = "12mm Magnum incendiary bullet casing"
+ desc = "A 12mm Magnum bullet casing with a magnesium coated tip meant for setting things on fire."
+ projectile_type = /obj/projectile/bullet/incendiary/c12mm
+
+/obj/item/ammo_casing/c12mm/rubber
+ name = "12mm Magnum rubber bullet casing"
+ desc = "A low powder load 12mm Magnum bullet casing with a flat rubber tip. Headshots heavily discouraged."
+ projectile_type = /obj/projectile/bullet/c12mm/rubber
+ harmful = FALSE
+
+/obj/projectile/bullet/c12mm
+ name = "12mm bullet"
+ damage = 40
+
+/obj/projectile/bullet/c12mm/ap
+ name = "12mm armor-piercing bullet"
+ damage = 37
+ armour_penetration = 40
+
+/obj/projectile/bullet/c12mm/hp
+ name = "12mm hollow-point bullet"
+ damage = 60
+ weak_against_armour = TRUE
+
+/obj/projectile/bullet/incendiary/c12mm
+ name = "12mm incendiary bullet"
+ damage = 20
+ fire_stacks = 2
+
+/obj/projectile/bullet/c12mm/rubber
+ name = "12mm Magnum rubber ball"
+ damage = 10
+ stamina = 40
+ ricochets_max = 6
+ ricochet_incidence_leeway = 0
+ ricochet_chance = 130
+ ricochet_decay_damage = 0.7
+ shrapnel_type = null
+ sharpness = NONE
+ embedding = null
+
+////// 12mm //////
+////////////////////////
+////// 6.8x43mm //////
+
+
+/obj/item/ammo_casing/a68
+ name = "6.8mm bullet casing"
+ desc = "A 6.8mm bullet casing."
+ icon_state = "762-casing"
+ caliber = CALIBER_A68
+ projectile_type = /obj/projectile/bullet/a68
+
+/obj/projectile/bullet/a68
+ name = "6.8 bullet"
+ damage = 55
+ armour_penetration = 10
+ wound_bonus = -45
+ wound_falloff_tile = 0
+
+////// 6.8x43mm //////
diff --git a/modular_skyrat/modules/modular_weapons/code/pistol.dm b/modular_skyrat/modules/modular_weapons/code/pistol.dm
index dd077e39d31..61f64db38ff 100644
--- a/modular_skyrat/modules/modular_weapons/code/pistol.dm
+++ b/modular_skyrat/modules/modular_weapons/code/pistol.dm
@@ -8,7 +8,7 @@
/obj/item/gun/ballistic/automatic/pistol/cfa_snub
name = "CFA Snub"
- desc = "A small easily-concealable modern pistol chambered in the more widely-used 4.6x30mm. It's specifically designed to be compact. It has Cantalan Federal Arms etched into the slide. "
+ desc = "An easily-concealable pistol chambered for 4.2x30mm."
icon = 'modular_skyrat/modules/modular_weapons/icons/obj/guns/projectile.dmi'
icon_state = "cfa-snub"
mag_type = /obj/item/ammo_box/magazine/multi_sprite/cfa_snub
@@ -16,13 +16,15 @@
fire_sound_volume = 30
w_class = WEIGHT_CLASS_SMALL
has_gun_safety = FALSE
+ company_flag = COMPANY_CANTALAN
+ dirt_modifier = 0.2
/obj/item/gun/ballistic/automatic/pistol/cfa_snub/empty
spawnwithmagazine = FALSE
/obj/item/gun/ballistic/automatic/pistol/cfa_ruby
name = "CFA Ruby"
- desc = "A large and loud modern handgun made to fit more universally used cartridges. It's chambered in .45, or 11.43x23mm. It has Cantalan Federal Arms etched into the slide."
+ desc = "A heavy-duty sidearm chambered in 12x27mm."
icon = 'modular_skyrat/modules/modular_weapons/icons/obj/guns/projectile.dmi'
icon_state = "cfa_ruby"
mag_type = /obj/item/ammo_box/magazine/multi_sprite/cfa_ruby
@@ -30,6 +32,8 @@
fire_sound_volume = 120
w_class = WEIGHT_CLASS_NORMAL
has_gun_safety = FALSE
+ company_flag = COMPANY_CANTALAN
+ dirt_modifier = 0.2
/obj/item/gun/ballistic/automatic/pistol/cfa_ruby/empty
spawnwithmagazine = FALSE
@@ -38,39 +42,39 @@
// AMMO //
////////////////////////
/obj/item/ammo_box/magazine/multi_sprite/cfa_snub
- name = "CFA Snub magazine (4.6x30mm)"
+ name = "CFA Snub magazine (4.2x30mm)"
desc = "An advanced magazine with smart type displays. Alt+click to reskin it."
icon = 'modular_skyrat/modules/modular_weapons/icons/obj/ammo.dmi'
- icon_state = "m46x30"
+ icon_state = "m42x30"
possible_types = list(AMMO_TYPE_LETHAL, AMMO_TYPE_AP, AMMO_TYPE_RUBBER, AMMO_TYPE_INCENDIARY)
- ammo_type = /obj/item/ammo_casing/c46x30mm
- caliber = CALIBER_46X30MM
+ ammo_type = /obj/item/ammo_casing/c42x30mm
+ caliber = CALIBER_42X30MM
max_ammo = 16
multiple_sprites = AMMO_BOX_FULL_EMPTY_BASIC
/obj/item/ammo_box/magazine/multi_sprite/cfa_snub/ap
- ammo_type = /obj/item/ammo_casing/c46x30mm/ap
+ ammo_type = /obj/item/ammo_casing/c42x30mm/ap
round_type = AMMO_TYPE_AP
/obj/item/ammo_box/magazine/multi_sprite/cfa_snub/rubber
- ammo_type = /obj/item/ammo_casing/c46x30mm/rubber
+ ammo_type = /obj/item/ammo_casing/c42x30mm/rubber
round_type = AMMO_TYPE_RUBBER
/obj/item/ammo_box/magazine/multi_sprite/cfa_snub/incendiary
- ammo_type = /obj/item/ammo_casing/c46x30mm/inc
+ ammo_type = /obj/item/ammo_casing/c42x30mm/inc
round_type = AMMO_TYPE_INCENDIARY
/obj/item/ammo_box/magazine/multi_sprite/cfa_snub/empty
start_empty = TRUE
/obj/item/ammo_box/magazine/multi_sprite/cfa_ruby
- name = "CFA Ruby magazine (10mm Magnum)"
+ name = "CFA Ruby magazine (12mm Magnum)"
desc = "An advanced magazine with smart type displays. Alt+click to reskin it."
icon = 'modular_skyrat/modules/modular_weapons/icons/obj/ammo.dmi'
- icon_state = "m10mm"
+ icon_state = "m12mm"
possible_types = list(AMMO_TYPE_LETHAL, AMMO_TYPE_AP, AMMO_TYPE_RUBBER, AMMO_TYPE_HOLLOWPOINT, AMMO_TYPE_INCENDIARY)
- ammo_type = /obj/item/ammo_casing/c10mm
- caliber = CALIBER_10MM
+ ammo_type = /obj/item/ammo_casing/c12mm
+ caliber = CALIBER_12MM
max_ammo = 8
multiple_sprites = AMMO_BOX_FULL_EMPTY_BASIC
@@ -78,17 +82,17 @@
start_empty = TRUE
/obj/item/ammo_box/magazine/multi_sprite/cfa_ruby/ap
- ammo_type = /obj/item/ammo_casing/c10mm/ap
+ ammo_type = /obj/item/ammo_casing/c12mm/ap
round_type = AMMO_TYPE_AP
/obj/item/ammo_box/magazine/multi_sprite/cfa_ruby/rubber
- ammo_type = /obj/item/ammo_casing/c10mm/rubber
+ ammo_type = /obj/item/ammo_casing/c12mm/rubber
round_type = AMMO_TYPE_RUBBER
/obj/item/ammo_box/magazine/multi_sprite/cfa_ruby/hp
- ammo_type = /obj/item/ammo_casing/c10mm/hp
+ ammo_type = /obj/item/ammo_casing/c12mm/hp
round_type = AMMO_TYPE_HOLLOWPOINT
/obj/item/ammo_box/magazine/multi_sprite/cfa_ruby/incendiary
- ammo_type = /obj/item/ammo_casing/c10mm/fire
+ ammo_type = /obj/item/ammo_casing/c12mm/fire
round_type = AMMO_TYPE_INCENDIARY
diff --git a/modular_skyrat/modules/modular_weapons/code/revolver.dm b/modular_skyrat/modules/modular_weapons/code/revolver.dm
index 79c9fb32c05..21515953d9b 100644
--- a/modular_skyrat/modules/modular_weapons/code/revolver.dm
+++ b/modular_skyrat/modules/modular_weapons/code/revolver.dm
@@ -25,6 +25,8 @@
righthand_file = 'modular_skyrat/modules/modular_weapons/icons/mob/inhands/weapons/64x_guns_right.dmi'
pixel_x = -8
inhand_icon_state = "revolving"
+ company_flag = COMPANY_IZHEVSK
+ dirt_modifier = 0.75
/obj/item/gun/ballistic/revolver/rifle/improvised
name = "\improper Improvised .38 Revolving Rifle"
@@ -33,6 +35,7 @@
mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rev38 //TAs far as improvised weapons go, this is fairly decent, this isn't half bad.
fire_delay = 15
recoil = 1
+ company_flag = null
/obj/item/gun/ballistic/revolver/rifle/gold
name = "\improper .45 Revolving Rifle"
diff --git a/modular_skyrat/modules/modular_weapons/code/rifle.dm b/modular_skyrat/modules/modular_weapons/code/rifle.dm
index fd160221b5e..31713b3bba3 100644
--- a/modular_skyrat/modules/modular_weapons/code/rifle.dm
+++ b/modular_skyrat/modules/modular_weapons/code/rifle.dm
@@ -118,8 +118,8 @@
////////////////////////
/obj/item/gun/ballistic/automatic/cfa_rifle
- name = "Cantanheim 7.62 rifle"
- desc = "An old semi-automatic rifle used in a war long ago. Uses 7.62 bullets in a ten round magazine."
+ name = "Cantanheim 6.8mm rifle"
+ desc = "A simple semi-automatic rifle chambered in 6.8mm. The letters 'XJP' are crossed out in the receiver." //Different 6.8mm than the FTU's propietary pulse ballistics
icon = 'modular_skyrat/modules/modular_weapons/icons/obj/guns/projectile40x32.dmi'
icon_state = "cfa_rifle"
inhand_icon_state = "irifle"
@@ -128,11 +128,11 @@
lefthand_file = 'modular_skyrat/modules/modular_weapons/icons/mob/inhands/weapons/64x_guns_left.dmi'
righthand_file = 'modular_skyrat/modules/modular_weapons/icons/mob/inhands/weapons/64x_guns_right.dmi'
worn_icon_state = null
- mag_type = /obj/item/ammo_box/magazine/cm762
+ mag_type = /obj/item/ammo_box/magazine/cm68
fire_delay = 5
can_suppress = FALSE
burst_size = 0
- fire_select_modes = list(SELECT_SEMI_AUTOMATIC) //SKYRAT EDIT CHANGE
+ fire_select_modes = list(SELECT_SEMI_AUTOMATIC)
mag_display = FALSE
mag_display_ammo = FALSE
empty_indicator = FALSE
@@ -144,16 +144,18 @@
zoom_out_amt = 2
has_gun_safety = FALSE
w_class = WEIGHT_CLASS_BULKY
+ company_flag = COMPANY_CANTALAN
+ dirt_modifier = 0.25
/obj/item/gun/ballistic/automatic/cfa_rifle/empty
spawnwithmagazine = FALSE
-/obj/item/ammo_box/magazine/cm762
- name = "rifle magazine (7.62mm)"
+/obj/item/ammo_box/magazine/cm68
+ name = "rifle magazine (6.8mm)"
icon = 'modular_skyrat/modules/modular_weapons/icons/obj/ammo.dmi'
- icon_state = "7.62"
- ammo_type = /obj/item/ammo_casing/a762
- caliber = CALIBER_A762
+ icon_state = "6.8"
+ ammo_type = /obj/item/ammo_casing/a68
+ caliber = CALIBER_A68
max_ammo = 10
multiple_sprites = 2
diff --git a/modular_skyrat/modules/modular_weapons/icons/obj/ammo.dmi b/modular_skyrat/modules/modular_weapons/icons/obj/ammo.dmi
index 49bac414e39b5635f58ba4f59a903f13048a40df..9531519b341b49c5b819f6bcf552c2c160976b66 100644
GIT binary patch
delta 2166
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
embroidery on the grip."
//////////////////GLOCK
/obj/item/gun/ballistic/automatic/pistol/g17
- name = "\improper Glock-17"
- desc = "A weapon from bygone times, this has been made to feel and look exactly like the 21st century version. Let's hope it's more reliable. Chambered in 9mm."
+ name = "\improper GK-17"
+ desc = "A weapon from bygone times, this has been made to look like an old, blocky firearm from the 21st century. Let's hope it's more reliable. Chambered in 9mm."
icon = 'modular_skyrat/modules/sec_haul/icons/guns/glock.dmi'
icon_state = "glock"
w_class = WEIGHT_CLASS_NORMAL
@@ -30,12 +27,11 @@
rack_sound = 'sound/weapons/gun/pistol/rack.ogg'
lock_back_sound = 'sound/weapons/gun/pistol/slide_lock.ogg'
bolt_drop_sound = 'sound/weapons/gun/pistol/slide_drop.ogg'
- realistic = TRUE
can_flashlight = TRUE
dirt_modifier = 1
emp_damageable = TRUE
- armadyne = TRUE
fire_delay = 1.90
+ company_flag = COMPANY_CANTALAN
/obj/item/ammo_box/magazine/multi_sprite/g17
name = "9x19mm double stack magazine"
@@ -59,8 +55,8 @@
round_type = AMMO_TYPE_RUBBER
/obj/item/gun/ballistic/automatic/pistol/g18
- name = "\improper Glock-18"
- desc = "A burst-firing special anniversary edition of the Glock-18 from Armadyne. Its heavier barrel negatively affects firerate minimally."
+ name = "\improper GK-18"
+ desc = "A CFA-made burst firing cheap polymer pistol chambered in 9mm. Its heavy duty barrel affects firerate."
icon = 'modular_skyrat/modules/sec_haul/icons/guns/glock.dmi'
icon_state = "glock_spec"
w_class = WEIGHT_CLASS_NORMAL
@@ -73,10 +69,11 @@
burst_size = 3
fire_delay = 2.10
spread = 8
- realistic = TRUE
mag_display = FALSE
mag_display_ammo = FALSE
can_flashlight = TRUE
+ company_flag = COMPANY_CANTALAN
+ dirt_modifier = 1
/obj/item/ammo_box/magazine/multi_sprite/g18
name = "extended 9x19mm magazine"
@@ -115,8 +112,8 @@
can_flashlight = TRUE
dirt_modifier = 0.2
emp_damageable = FALSE
- armadyne = FALSE
fire_delay = 0.9
+ company_flag = null
////////////////PDH 40x32
/obj/item/gun/ballistic/automatic/pistol/pdh
@@ -135,9 +132,9 @@
lock_back_sound = 'sound/weapons/gun/pistol/slide_lock.ogg'
bolt_drop_sound = 'sound/weapons/gun/pistol/slide_drop.ogg'
realistic = TRUE
- armadyne = TRUE
can_flashlight = TRUE
emp_damageable = TRUE
+ company_flag = COMPANY_ARMADYNE
/obj/item/gun/ballistic/automatic/pistol/pdh/alt
name = "\improper PDH-6C 'SOCOM'"
@@ -187,6 +184,7 @@
realistic = TRUE
dirt_modifier = 0.1
can_flashlight = TRUE
+ company_flag = COMPANY_ARMADYNE
/obj/item/ammo_box/magazine/multi_sprite/pdh_corpo
name = ".357 pistol magazine"
@@ -201,14 +199,15 @@
///////////////////////////PDH PEACEKEEPER
/obj/item/gun/ballistic/automatic/pistol/pdh/peacekeeper
- name = "\improper PDH-6B 'Peacekeeper'"
- desc = "A modern ballistic sidearm, used primarily by law enforcement, however this one has had a paintjob to match the peacekeeper theme."
+ name = "\improper PDH-6B"
+ desc = "A modern ballistic sidearm, used primarily by law enforcement."
fire_delay = 1.95
icon_state = "pdh_peacekeeper"
mag_type = /obj/item/ammo_box/magazine/multi_sprite/pdh_peacekeeper
fire_sound = 'modular_skyrat/modules/sec_haul/sound/pistol_fire.ogg'
realistic = TRUE
can_flashlight = TRUE
+ company_flag = COMPANY_ARMADYNE
/obj/item/ammo_box/magazine/multi_sprite/pdh_peacekeeper
name = "9x19mm polymer magazine"
@@ -233,8 +232,8 @@
///////////////////////LADON 40x32
/obj/item/gun/ballistic/automatic/pistol/ladon
- name = "\improper P-3 'Ladon'"
- desc = "A modern ballistic sidearm based off the PDH models, chambered in 10mm and quite recent on the market. It has an Armadyne
embroidery on the grip."
+ name = "\improper Ladon pistol"
+ desc = "Modern handgun based off the PDH series, chambered in 10mm."
icon = 'modular_skyrat/modules/sec_haul/icons/guns/ladon.dmi'
righthand_file = 'modular_skyrat/modules/sec_haul/icons/guns/inhands/righthand40x32.dmi'
lefthand_file = 'modular_skyrat/modules/sec_haul/icons/guns/inhands/lefthand40x32.dmi'
@@ -251,8 +250,8 @@
can_flashlight = TRUE
dirt_modifier = 0.8
emp_damageable = TRUE
- armadyne = TRUE
fire_delay = 4.20
+ company_flag = COMPANY_ARMADYNE
/obj/item/ammo_box/magazine/multi_sprite/ladon
name = "10mm Auto pistol magazine"
@@ -287,9 +286,9 @@
rack_sound = 'sound/weapons/gun/pistol/rack.ogg'
lock_back_sound = 'sound/weapons/gun/pistol/slide_lock.ogg'
bolt_drop_sound = 'sound/weapons/gun/pistol/slide_drop.ogg'
- realistic = TRUE
- dirt_modifier = 0.7
+ dirt_modifier = 0.75
emp_damageable = TRUE
+ company_flag = COMPANY_IZHEVSK
/obj/item/ammo_box/magazine/multi_sprite/makarov
name = "small 10mm Auto pistol magazine"
@@ -329,6 +328,7 @@
realistic = TRUE
dirt_modifier = 0.4
emp_damageable = TRUE
+ company_flag = COMPANY_ARMADYNE
/obj/item/ammo_box/magazine/multi_sprite/mk58
name = "outdated 9x19mm magazine"
@@ -367,7 +367,7 @@
realistic = TRUE
can_flashlight = TRUE
emp_damageable = TRUE
- armadyne = TRUE
+ company_flag = COMPANY_ARMADYNE
/obj/item/ammo_box/magazine/multi_sprite/firefly
name = "9x19mm special pistol magazine"
@@ -417,9 +417,9 @@
mag_display_ammo = FALSE
fire_select_modes = list(SELECT_SEMI_AUTOMATIC, SELECT_BURST_SHOT)
realistic = TRUE
- dirt_modifier = 1.7
+ dirt_modifier = 1.7 //the croon is an EXTRA piece of shit
emp_damageable = TRUE
- armadyne = TRUE
+ company_flag = COMPANY_IZHEVSK
/obj/item/ammo_box/magazine/multi_sprite/croon
name = "6.3mm SMG magazine"
@@ -462,7 +462,7 @@
bolt_drop_sound = 'sound/weapons/gun/pistol/slide_drop.ogg'
realistic = TRUE
emp_damageable = TRUE
- armadyne = TRUE
+ company_flag = COMPANY_ARMADYNE
/obj/item/ammo_box/magazine/multi_sprite/dozer
name = "9x19mm small PDW magazine"
@@ -507,6 +507,7 @@
realistic = TRUE
fire_sound_volume = 60
fire_sound = 'modular_skyrat/modules/sec_haul/sound/sniper_fire.ogg'
+ company_flag = COMPANY_ARMADYNE
/obj/item/ammo_box/magazine/dmr
name = ".557 DMR Magazine"
@@ -528,8 +529,8 @@
inhand_icon_state = "zeta"
mag_type = /obj/item/ammo_box/magazine/internal/cylinder/zeta
fire_sound = 'modular_skyrat/modules/sec_haul/sound/revolver_fire.ogg'
- armadyne = TRUE
fire_delay = 3
+ company_flag = COMPANY_BOLT
/obj/item/ammo_box/magazine/internal/cylinder/zeta
name = "10mm Auto revolver cylinder"
@@ -561,8 +562,8 @@
inhand_icon_state = "revolution"
mag_type = /obj/item/ammo_box/magazine/internal/cylinder/revolution
fire_sound = 'modular_skyrat/modules/sec_haul/sound/revolver_fire.ogg'
- armadyne = TRUE
fire_delay = 1.90
+ company_flag = COMPANY_BOLT
/obj/item/ammo_box/magazine/internal/cylinder/revolution
name = "revolver cylinder"
@@ -617,7 +618,7 @@
load_empty_sound = 'modular_skyrat/modules/sec_haul/sound/chaingun_magout.ogg'
var/recharge_time = 5 SECONDS
var/recharging = FALSE
- armadyne = TRUE
+ company_flag = COMPANY_ARMADYNE
/obj/item/gun/ballistic/automatic/smartgun/process_chamber()
. = ..()
@@ -690,10 +691,10 @@
realistic = TRUE
fire_sound = 'modular_skyrat/modules/sec_haul/sound/ltrifle_fire.ogg'
emp_damageable = FALSE
- armadyne = TRUE
can_bayonet = TRUE
can_flashlight = TRUE
dirt_modifier = 0.1
+ company_flag = COMPANY_OLDARMS
/obj/item/ammo_box/magazine/multi_sprite/g11
name = "4.73x33mm top-loader magazine"
@@ -724,6 +725,7 @@
mag_type = /obj/item/ammo_box/magazine/internal/shot/m23
w_class = WEIGHT_CLASS_BULKY
slot_flags = ITEM_SLOT_BACK | ITEM_SLOT_BELT | ITEM_SLOT_OCLOTHING
+ company_flag = COMPANY_BOLT
/obj/item/ammo_box/magazine/internal/shot/m23
name = "m23 shotgun internal magazine"
@@ -751,6 +753,7 @@
mag_type = /obj/item/ammo_box/magazine/internal/shot/as2
w_class = WEIGHT_CLASS_BULKY
slot_flags = ITEM_SLOT_BACK | ITEM_SLOT_BELT | ITEM_SLOT_OCLOTHING
+ company_flag = COMPANY_ARMADYNE
/obj/item/ammo_box/magazine/internal/shot/as2
name = "shotgun internal magazine"
@@ -779,7 +782,7 @@
fire_select_modes = list(SELECT_SEMI_AUTOMATIC)
semi_auto = TRUE
internal_magazine = FALSE
- armadyne = TRUE
+ company_flag = COMPANY_ARMADYNE
/obj/item/ammo_box/magazine/sas14
name = "14 Gauge box magazine"
diff --git a/modular_skyrat/modules/sec_haul/code/guns/pepperball_gun.dm b/modular_skyrat/modules/sec_haul/code/guns/pepperball_gun.dm
index 352ca5db8cc..8bd6cb8a497 100644
--- a/modular_skyrat/modules/sec_haul/code/guns/pepperball_gun.dm
+++ b/modular_skyrat/modules/sec_haul/code/guns/pepperball_gun.dm
@@ -1,6 +1,6 @@
/obj/item/gun/ballistic/automatic/pistol/pepperball
- name = "\improper Armadyne Pepperball AHG"
- desc = "A fantastically shit weapon used for self defence and created for the sole purpose of underfunded security forces, meet the Pepperball AHG."
+ name = "\improper Bolt Pepperball AHG"
+ desc = "An incredibly mediocre 'firearm' designed to fire soft pepper balls meant to easily subdue targets."
icon = 'modular_skyrat/modules/sec_haul/icons/guns/pepperball.dmi'
icon_state = "peppergun"
w_class = WEIGHT_CLASS_NORMAL
@@ -14,8 +14,8 @@
can_flashlight = TRUE
dirt_modifier = 2
emp_damageable = TRUE
- armadyne = TRUE
fire_sound_volume = 50
+ company_flag = COMPANY_BOLT
/obj/item/ammo_box/magazine/pepperball
name = "pistol magazine (pepperball)"
diff --git a/modular_skyrat/modules/sec_haul/code/guns/token_system/gunsets.dm b/modular_skyrat/modules/sec_haul/code/guns/token_system/gunsets.dm
index f37dec93a19..cdd1087297e 100644
--- a/modular_skyrat/modules/sec_haul/code/guns/token_system/gunsets.dm
+++ b/modular_skyrat/modules/sec_haul/code/guns/token_system/gunsets.dm
@@ -53,7 +53,7 @@
//G-17
/obj/item/storage/box/gunset/glock17
- name = "glock-17 supply box"
+ name = "GK-17 supply box"
/obj/item/gun/ballistic/automatic/pistol/g17/nomag
spawnwithmagazine = FALSE
@@ -248,9 +248,10 @@
//HOS
/obj/item/storage/box/gunset/glock18_hos
- name = "glock-18 supply box"
- desc = "Ideally contains a fast-firing 9x19mm Pistol made out of cheap plastic."
+ name = "GK-18 supply box"
+ desc = "Ideally contains a fast-firing 9x19mm pistol made out of cheap plastic."
w_class = WEIGHT_CLASS_NORMAL
+
/obj/item/gun/ballistic/automatic/pistol/g18/nomag
spawnwithmagazine = FALSE
diff --git a/modular_skyrat/modules/sec_haul/code/misc/packs.dm b/modular_skyrat/modules/sec_haul/code/misc/packs.dm
index 652c7c38926..20532c63d3d 100644
--- a/modular_skyrat/modules/sec_haul/code/misc/packs.dm
+++ b/modular_skyrat/modules/sec_haul/code/misc/packs.dm
@@ -15,20 +15,3 @@
/obj/item/vending_refill/wardrobe/law_wardrobe)
crate_name = "security department supply crate"
-/datum/supply_pack/security/primary_case
- name = "Primary Armory Token Crate"
- desc = "Contains a box of primary armory tokens for the Armadyne weapons vendor."
- cost = CARGO_CRATE_VALUE * 15
- access_view = ACCESS_ARMORY
- contains = list(/obj/item/storage/box/armament_tokens_primary)
- crate_name = "primary armory token crate"
-
-/datum/supply_pack/security/energy_case
- name = "Energy Armory Token Crate"
- desc = "Contains a box of energy armory tokens for the Armadyne weapons vendor."
- cost = CARGO_CRATE_VALUE * 15
- access_view = ACCESS_ARMORY
- contains = list(/obj/item/storage/box/armament_tokens_energy)
- crate_name = "energy armory token crate"
-
-
diff --git a/tgstation.dme b/tgstation.dme
index cddb16c1656..4c415c43393 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -5162,6 +5162,32 @@
#include "modular_skyrat\modules\goofsec\code\projectiles.dm"
#include "modular_skyrat\modules\goofsec\code\sec_clothing_overrides.dm"
#include "modular_skyrat\modules\goofsec\code\sol_fed.dm"
+#include "modular_skyrat\modules\gun_cargo\code\armament_component.dm"
+#include "modular_skyrat\modules\gun_cargo\code\company_datums.dm"
+#include "modular_skyrat\modules\gun_cargo\code\gun_subsystem.dm"
+#include "modular_skyrat\modules\gun_cargo\code\armament_datums\allstar.dm"
+#include "modular_skyrat\modules\gun_cargo\code\armament_datums\armadyne.dm"
+#include "modular_skyrat\modules\gun_cargo\code\armament_datums\armadyne_oldarms.dm"
+#include "modular_skyrat\modules\gun_cargo\code\armament_datums\bolt.dm"
+#include "modular_skyrat\modules\gun_cargo\code\armament_datums\cantalan.dm"
+#include "modular_skyrat\modules\gun_cargo\code\armament_datums\dynamics.dm"
+#include "modular_skyrat\modules\gun_cargo\code\armament_datums\interdyne.dm"
+#include "modular_skyrat\modules\gun_cargo\code\armament_datums\izhevsk.dm"
+#include "modular_skyrat\modules\gun_cargo\code\armament_datums\micron.dm"
+#include "modular_skyrat\modules\gun_cargo\code\armament_datums\nanotrasen.dm"
+#include "modular_skyrat\modules\gun_cargo\code\armament_datums\parent_armament.dm"
+#include "modular_skyrat\modules\gun_cargo\code\armament_datums\scarborough.dm"
+#include "modular_skyrat\modules\gun_cargo\code\datums\cargo_order.dm"
+#include "modular_skyrat\modules\gun_cargo\code\datums\cargo_pack.dm"
+#include "modular_skyrat\modules\gun_cargo\code\datums\hud.dm"
+#include "modular_skyrat\modules\gun_cargo\code\objects\access.dm"
+#include "modular_skyrat\modules\gun_cargo\code\objects\ammo_boxes.dm"
+#include "modular_skyrat\modules\gun_cargo\code\objects\box.dm"
+#include "modular_skyrat\modules\gun_cargo\code\objects\cargo_console.dm"
+#include "modular_skyrat\modules\gun_cargo\code\objects\firing_pin.dm"
+#include "modular_skyrat\modules\gun_cargo\code\objects\hud_glasses.dm"
+#include "modular_skyrat\modules\gun_cargo\code\objects\keycard_auth.dm"
+#include "modular_skyrat\modules\gun_cargo\code\objects\guns\interdyne.dm"
#include "modular_skyrat\modules\gunhud\code\gun_hud.dm"
#include "modular_skyrat\modules\gunhud\code\gun_hud_component.dm"
#include "modular_skyrat\modules\gunpoint\code\gunpoint.dm"
diff --git a/tgui/packages/tgui-panel/styles/goon/chat-dark.scss b/tgui/packages/tgui-panel/styles/goon/chat-dark.scss
index 47b1d0b4d25..9fbd3db9877 100644
--- a/tgui/packages/tgui-panel/styles/goon/chat-dark.scss
+++ b/tgui/packages/tgui-panel/styles/goon/chat-dark.scss
@@ -1021,3 +1021,23 @@ em {
color: #ff00ff;
font-weight: bold;
}
+
+.brown {
+ color: #3d2009;
+ font-weight: bold;
+}
+
+.orange {
+ color: #b8761a;
+ font-weight: bold;
+}
+
+.yellow {
+ color: #c7b72c;
+ font-weight: bold;
+}
+
+.cyan {
+ color: #0ea1e6;
+ font-weight: bold;
+}
diff --git a/tgui/packages/tgui-panel/styles/goon/chat-light.scss b/tgui/packages/tgui-panel/styles/goon/chat-light.scss
index 6178a9f5abc..20ed07138ce 100644
--- a/tgui/packages/tgui-panel/styles/goon/chat-light.scss
+++ b/tgui/packages/tgui-panel/styles/goon/chat-light.scss
@@ -972,3 +972,23 @@ h1.alert, h2.alert {
color: #ff00ff;
font-weight: bold;
}
+
+.brown {
+ color: #3d2009;
+ font-weight: bold;
+}
+
+.orange {
+ color: #b8761a;
+ font-weight: bold;
+}
+
+.yellow {
+ color: #c7b72c;
+ font-weight: bold;
+}
+
+.cyan {
+ color: #0ea1e6;
+ font-weight: bold;
+}
diff --git a/tgui/packages/tgui/interfaces/Cargo.js b/tgui/packages/tgui/interfaces/Cargo.js
index f1186f1dd45..cb3d2fd6c2f 100644
--- a/tgui/packages/tgui/interfaces/Cargo.js
+++ b/tgui/packages/tgui/interfaces/Cargo.js
@@ -45,6 +45,12 @@ export const CargoContent = (props, context) => {
onClick={() => setTab('requests')}>
Requests ({requests.length})
+ act('gun_window')}>
+ Gun Requisitions
+
{!requestonly && (
<>
{
{tab === 'help' && (
)}
+ {tab === 'gun_window' && (
+ tab === 'catalog'
+ )}
);
};
diff --git a/tgui/packages/tgui/interfaces/CargoGunConsole.js b/tgui/packages/tgui/interfaces/CargoGunConsole.js
new file mode 100644
index 00000000000..19727bf9c80
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/CargoGunConsole.js
@@ -0,0 +1,201 @@
+import { useBackend, useLocalState } from '../backend';
+import { Section, Stack, Box, Divider, Button, NumberInput } from '../components';
+import { Window } from '../layouts';
+
+export const CargoGunConsole = (props, context) => {
+ const [category, setCategory] = useLocalState(context, 'category', '');
+ const [weapon, setArmament] = useLocalState(context, 'weapon');
+ const { act, data } = useBackend(context);
+ const {
+ armaments_list = [],
+ budget_points,
+ budget_name,
+ ammo_amount,
+ self_paid,
+ } = data;
+ return (
+
+
+
+
+
+ act('toggleprivate')} />
+
+ Current Budget: {budget_name}
+
+
+ Budget Remaining: {budget_points}
+
+
+
+
+
+
+
+
+ {armaments_list.map(armament_category => (
+
+ {armament_category.category_purchased ? (
+
+ ))}
+
+
+
+
+
+
+ {armaments_list.map(armament_category => (
+ armament_category.category === category && (
+ armament_category.subcategories.map(subcat => (
+
+
+ {subcat.items.map(item => (
+
+ = item.quantity ? "bad" : "default"}
+ width="100%"
+ key={item.ref}
+ onClick={() =>
+ setArmament(item.ref)}>
+
+ {item.name}
+
+
+ ))}
+
+
+ ))
+ )
+ ))}
+
+
+
+
+
+ {armaments_list.map(armament_category => (
+ armament_category.subcategories.map(subcat => (
+ subcat.items.map(item => (
+ item.ref === weapon && (
+
+
+
+
+
+
+
+ {item.description}
+
+ {!!item.cant_purchase && (
+
+ {'Company interest needs to be higher to buy this item!'}
+
+ )}
+
+ {'Quantity Remaining: ' + (item.quantity)}
+
+ budget_points) ? "red" : "green"}>
+ {'Cost: ' + item.cost}
+
+ {!!item.buyable_ammo && (
+ budget_points) ? "red" : "green"}>
+ {'Ammo Cost: ' + item.magazine_cost}
+
+ )}
+
+ budget_points
+ || 0 >= item.quantity
+ || !!item.cant_purchase}
+ onClick={() => act('equip_item', {
+ armament_ref: item.ref })}
+ />
+
+ {!!item.buyable_ammo && (
+
+ budget_points}
+ onClick={() => act('buy_ammo', {
+ armament_ref: item.ref })}
+ />
+
+ )}
+ {!!item.buyable_ammo && (
+ act('set_ammo_amount', {
+ chosen_amount: value,
+ })} />
+ )}
+
+ )
+ ))
+ ))
+ ))}
+
+
+
+
+
+
+ );
+};
diff --git a/tgui/packages/tgui/interfaces/KeycardAuth.js b/tgui/packages/tgui/interfaces/KeycardAuth.js
index 3229bf2d077..0c4ccca0f79 100644
--- a/tgui/packages/tgui/interfaces/KeycardAuth.js
+++ b/tgui/packages/tgui/interfaces/KeycardAuth.js
@@ -5,9 +5,10 @@ import { Window } from '../layouts';
export const KeycardAuth = (props, context) => {
const { act, data } = useBackend(context);
return (
+ // SKYRAT EDIT: height 125 -> 150, addition of permit-locked firing pin
+ height={150}>
@@ -47,6 +48,11 @@ export const KeycardAuth = (props, context) => {
fluid
onClick={() => act('bsa_unlock')}
content="Bluespace Artillery Unlock" />
+ act('pin_unrestrict')}
+ content="Permit-Locked Firing Pin Unrestriction" />
>
)}
>