Ports TGMC Pistol + Pistol Magazine + Attachment Sprites (#29768)

* let's fuckin go

* aps cleanup

* one word

* attachments file

* license nonsense

* almost forgor

* error fix

* second fix

* please free me from this hell

* AHHHHHHHHHHHHHHH

* please just end already

* please

* for fuck's sake

* just work already you little shit

* FUCK

* the suffering does not end

* there can't be many more

* license

* rollback 1

* rollback 2

* license move

* Update code/modules/projectiles/ammunition/magazines.dm

Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com>
Signed-off-by: PopeDaveThe3th <80988376+PopeDaveThe3th@users.noreply.github.com>

* contra change

* rollback

* contra change 2.0

* Update README.md

Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com>
Signed-off-by: PopeDaveThe3th <80988376+PopeDaveThe3th@users.noreply.github.com>

* Update code/modules/projectiles/guns/projectile/automatic.dm

Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com>
Signed-off-by: PopeDaveThe3th <80988376+PopeDaveThe3th@users.noreply.github.com>

* Update code/modules/projectiles/guns/syringe_gun.dm

Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com>
Signed-off-by: PopeDaveThe3th <80988376+PopeDaveThe3th@users.noreply.github.com>

* more contra changes

* whoops

* daedalus

* few more

* Update code/modules/projectiles/guns/projectile/automatic.dm

Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com>
Signed-off-by: PopeDaveThe3th <80988376+PopeDaveThe3th@users.noreply.github.com>

* more contra edits

* Update code/modules/projectiles/guns/projectile/sniper.dm

Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com>
Signed-off-by: PopeDaveThe3th <80988376+PopeDaveThe3th@users.noreply.github.com>

* that was annoying

* Update code/modules/projectiles/ammunition/magazines.dm

Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com>
Signed-off-by: PopeDaveThe3th <80988376+PopeDaveThe3th@users.noreply.github.com>

---------

Signed-off-by: PopeDaveThe3th <80988376+PopeDaveThe3th@users.noreply.github.com>
Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com>
This commit is contained in:
PopeDaveThe3th
2025-07-29 22:30:45 +00:00
committed by GitHub
co-authored by Contrabang
parent d06d5fe83d
commit 6dff434902
29 changed files with 138 additions and 63 deletions
@@ -1,5 +1,5 @@
/obj/item/ammo_box/magazine
icon_state = "enforcer" // placeholder icon
icon_state = null
////////////////INTERNAL MAGAZINES//////////////////////
/obj/item/ammo_box/magazine/internal
@@ -191,6 +191,7 @@
/obj/item/ammo_box/magazine/m10mm
name = "pistol magazine (10mm)"
desc = "A gun magazine."
icon = 'icons/tgmc/objects/ammo.dmi'
icon_state = "9x19p"
origin_tech = "combat=2"
ammo_type = /obj/item/ammo_casing/c10mm
@@ -218,24 +219,27 @@
/obj/item/ammo_box/magazine/m45
name = "handgun magazine (.45)"
icon = 'icons/tgmc/objects/ammo.dmi'
icon_state = "45"
ammo_type = /obj/item/ammo_casing/c45
caliber = ".45"
max_ammo = 8
multi_sprite_step = 1
multi_sprite_step = AMMO_BOX_MULTI_SPRITE_STEP_ON_OFF
/obj/item/ammo_box/magazine/enforcer
name = "handgun magazine (9mm rubber)"
icon = 'icons/tgmc/objects/ammo.dmi'
icon_state = "enforcer"
ammo_type = /obj/item/ammo_casing/rubber9mm
max_ammo = 8
multi_sprite_step = 1
caliber = "9mm"
multi_sprite_step = AMMO_BOX_MULTI_SPRITE_STEP_ON_OFF
/obj/item/ammo_box/magazine/enforcer/update_overlays()
. = ..()
var/ammo = ammo_count()
if(ammo && is_rubber())
. += image('icons/obj/ammo.dmi', icon_state = "enforcer-r")
. += image('icons/tgmc/objects/ammo.dmi', icon_state = "enforcer-r")
/obj/item/ammo_box/magazine/enforcer/examine(mob/user)
. = ..()
@@ -316,11 +320,12 @@
/obj/item/ammo_box/magazine/uzim9mm
name = "uzi magazine (9mm)"
icon = 'icons/tgmc/objects/ammo.dmi'
icon_state = "uzi9mm"
ammo_type = /obj/item/ammo_casing/c9mm
caliber = "9mm"
max_ammo = 32
multi_sprite_step = 4
multi_sprite_step = AMMO_BOX_MULTI_SPRITE_STEP_ON_OFF
/obj/item/ammo_box/magazine/smgm9mm
name = "\improper SMG magazine (9mm)"
@@ -347,25 +352,26 @@
materials = list(MAT_METAL = 3000)
/obj/item/ammo_box/magazine/apsm10mm
name = "stechkin aps magazine (10mm)"
name = "Type 230 magazine (10mm)"
icon = 'icons/tgmc/objects/ammo.dmi'
icon_state = "10mmaps"
ammo_type = /obj/item/ammo_casing/c10mm
caliber = "10mm"
max_ammo = 20
multi_sprite_step = 5
multi_sprite_step = AMMO_BOX_MULTI_SPRITE_STEP_ON_OFF
/obj/item/ammo_box/magazine/apsm10mm/fire
name = "stechkin aps magazine (10mm incendiary)"
name = "Type 230 magazine (10mm incendiary)"
icon_state = "10mmapsI"
ammo_type = /obj/item/ammo_casing/c10mm/fire
/obj/item/ammo_box/magazine/apsm10mm/hp
name = "stechkin aps magazine (10mm HP)"
name = "Type 230 magazine (10mm HP)"
icon_state = "10mmapsH"
ammo_type = /obj/item/ammo_casing/c10mm/hp
/obj/item/ammo_box/magazine/apsm10mm/ap
name = "stechkin aps magazine (10mm AP)"
name = "Type 230 magazine (10mm AP)"
icon_state = "10mmapsA"
ammo_type = /obj/item/ammo_casing/c10mm/ap
@@ -395,7 +401,6 @@
/obj/item/ammo_box/magazine/m75
name = "specialized magazine (.75)"
icon_state = "75"
ammo_type = /obj/item/ammo_casing/caseless/a75
caliber = "75"
multi_sprite_step = AMMO_BOX_MULTI_SPRITE_STEP_ON_OFF
@@ -509,6 +514,7 @@
/obj/item/ammo_box/magazine/toy/pistol
name = "foam force pistol magazine"
icon = 'icons/tgmc/objects/ammo.dmi'
icon_state = "9x19p"
max_ammo = 8
multi_sprite_step = AMMO_BOX_MULTI_SPRITE_STEP_ON_OFF
@@ -518,17 +524,19 @@
/obj/item/ammo_box/magazine/toy/enforcer
name = "\improper Enforcer foam magazine"
icon = 'icons/tgmc/objects/ammo.dmi'
icon_state = "enforcer"
max_ammo = 8
multi_sprite_step = 1
multi_sprite_step = AMMO_BOX_MULTI_SPRITE_STEP_ON_OFF
ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot
/obj/item/ammo_box/magazine/toy/enforcer/update_overlays()
. = ..()
var/ammo = ammo_count()
if(ammo && is_riot())
. += image('icons/obj/ammo.dmi', icon_state = "enforcer-rd")
. += image('icons/tgmc/objects/ammo.dmi', icon_state = "enforcer-rd")
else if(ammo)
. += image('icons/obj/ammo.dmi', icon_state = "enforcer-bd")
. += image('icons/tgmc/objects/ammo.dmi', icon_state = "enforcer-bd")
/obj/item/ammo_box/magazine/toy/enforcer/proc/is_riot()//if the topmost bullet is a riot dart
var/ammo = ammo_count()
+1 -1
View File
@@ -4,7 +4,7 @@
/obj/item/suppressor
name = "universal suppressor"
desc = "A universal syndicate small-arms suppressor for maximum espionage."
icon = 'icons/obj/guns/projectile.dmi'
icon = 'icons/tgmc/objects/attachments.dmi'
icon_state = "suppressor"
item_state = "suppressor"
w_class = WEIGHT_CLASS_SMALL
@@ -154,13 +154,20 @@
/obj/item/gun/projectile/automatic/mini_uzi
name = "\improper 'Type U3' Uzi"
desc = "A lightweight, burst-fire submachine gun, for when you really want someone dead. Uses 9mm rounds."
icon = 'icons/tgmc/objects/guns.dmi'
icon_state = "mini-uzi"
item_state = "mini-uzi"
origin_tech = "combat=4;materials=2;syndicate=4"
mag_type = /obj/item/ammo_box/magazine/uzim9mm
fire_sound = 'sound/weapons/gunshots/gunshot_pistol.ogg'
burst_size = 2
can_holster = TRUE // it's a mini-uzi after all
/obj/item/gun/projectile/automatic/mini_uzi/update_overlays()
. = ..()
if(suppressed)
. += image(icon = 'icons/obj/guns/attachments.dmi', icon_state = "suppressor_attached", pixel_x = 13, pixel_y = 5)
//////////////////////////////
// MARK: M-90GL CARBINE
//////////////////////////////
@@ -245,7 +252,6 @@
/obj/item/gun/projectile/automatic/tommygun
name = "\improper Thompson SMG"
desc = "A genuine 'Chicago Typewriter'."
icon_state = "tommygun"
item_state = "shotgun"
w_class = WEIGHT_CLASS_HUGE
slot_flags = 0
@@ -5,7 +5,11 @@
/obj/item/gun/projectile/revolver/grenadelauncher
desc = "A break-action grenade launcher."
name = "grenade launcher"
icon = 'icons/obj/guns/projectile.dmi'
icon_state = "dbshotgun_sawn"
item_state = "gun"
lefthand_file = 'icons/mob/inhands/guns_lefthand.dmi'
righthand_file = 'icons/mob/inhands/guns_righthand.dmi'
mag_type = /obj/item/ammo_box/magazine/internal/grenadelauncher
fire_sound = 'sound/weapons/grenadelaunch.ogg'
can_holster = FALSE // Not your normal revolver
@@ -2,68 +2,92 @@
/obj/item/gun/projectile/automatic/pistol
name = "stechkin pistol"
desc = "A small, easily concealable 10mm handgun. Has a threaded barrel for suppressors."
icon = 'icons/tgmc/objects/guns.dmi'
icon_state = "pistol"
item_state = "pistol"
lefthand_file = 'icons/tgmc/mob/inhands/guns_lefthand.dmi'
righthand_file = 'icons/tgmc/mob/inhands/guns_righthand.dmi'
w_class = WEIGHT_CLASS_SMALL
origin_tech = "combat=3;materials=2;syndicate=3"
can_holster = TRUE
fire_sound = 'sound/weapons/gunshots/gunshot_pistol.ogg'
magin_sound = 'sound/weapons/gun_interactions/pistol_magin.ogg'
magout_sound = 'sound/weapons/gun_interactions/pistol_magout.ogg'
can_flashlight = TRUE
burst_size = 1
fire_delay = 0
execution_speed = 4 SECONDS
actions_types = list()
/obj/item/gun/projectile/automatic/pistol/update_icon_state()
icon_state = "[initial(icon_state)][magazine ? "-[magazine.max_ammo]" : ""][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]"
icon_state = "[initial(icon_state)][magazine ? "-[magazine.max_ammo]" : ""][chambered ? "" : "-e"]"
/obj/item/gun/projectile/automatic/pistol/update_overlays()
. = list()
if(suppressed)
. += image(icon = 'icons/tgmc/objects/attachments.dmi', icon_state = "suppressor_attached", pixel_x = 15, pixel_y = 5)
if(gun_light)
var/flashlight = "uflashlight_attached"
if(gun_light.on)
flashlight = "uflashlight_attached-on"
. += image(icon = 'icons/tgmc/objects/attachments.dmi', icon_state = flashlight, pixel_x = 5, pixel_y = -2)
/obj/item/gun/projectile/automatic/pistol/ui_action_click()
toggle_gunlight()
//M1911//
/obj/item/gun/projectile/automatic/pistol/m1911
name = "\improper M1911"
desc = "A classic .45 handgun with a small magazine capacity."
icon_state = "m1911"
item_state = "m1911"
w_class = WEIGHT_CLASS_NORMAL
mag_type = /obj/item/ammo_box/magazine/m45
can_suppress = FALSE
/obj/item/gun/projectile/automatic/pistol/update_overlays()
. = list()
if(gun_light)
var/flashlight = "uflashlight_attached"
if(gun_light.on)
flashlight = "uflashlight_attached-on"
. += image(icon = 'icons/tgmc/objects/attachments.dmi', icon_state = flashlight, pixel_x = 5, pixel_y = -1)
//Enforcer//
/obj/item/gun/projectile/automatic/pistol/enforcer
name = "\improper NF10 'Enforcer' pistol"
desc = "A 9mm sidearm commonly used by Nanotrasen Asset Protection."
icon_state = "enforcer_grey"
item_state = "enforcer_grey"
force = 10
mag_type = /obj/item/ammo_box/magazine/enforcer
unique_reskin = TRUE
can_flashlight = TRUE
/obj/item/gun/projectile/automatic/pistol/enforcer/Initialize(mapload)
. = ..()
options["Grey slide"] = "enforcer_grey"
options["Red slide"] = "enforcer_red"
options["Green slide"] = "enforcer_green"
options["Tan slide"] = "enforcer_tan"
options["Black slide"] = "enforcer_black"
options["Green Handle"] = "enforcer_greengrip"
options["Tan Handle"] = "enforcer_tangrip"
options["Red Handle"] = "enforcer_redgrip"
options["Grey"] = "enforcer_grey"
options["Red"] = "enforcer_red"
options["Green"] = "enforcer_green"
options["Tan"] = "enforcer_tan"
options["Black"] = "enforcer_black"
options["Blue"] = "enforcer_blue"
options["Brown"] = "enforcer_brown"
/obj/item/gun/projectile/automatic/pistol/enforcer/update_icon_state()
if(current_skin)
icon_state = "[current_skin][chambered ? "" : "-e"]"
icon_state = "[current_skin][magazine ? "-[magazine.max_ammo]" : ""][chambered ? "" : "-e"]"
else
icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
icon_state = "[initial(icon_state)][magazine ? "-[magazine.max_ammo]" : ""][chambered ? "" : "-e"]"
/obj/item/gun/projectile/automatic/pistol/enforcer/update_overlays()
. = list()
if(suppressed)
. += image(icon = icon, icon_state = "enforcer_supp", pixel_x = 4)
. += image(icon = 'icons/tgmc/objects/attachments.dmi', icon_state = "suppressor_attached", pixel_x = 15, pixel_y = 5)
if(gun_light)
var/flashlight = "Enforcer_light"
var/flashlight = "uflashlight_attached"
if(gun_light.on)
flashlight = "Enforcer_light-on"
. += image(icon = icon, icon_state = flashlight, pixel_x = 0)
/obj/item/gun/projectile/automatic/pistol/enforcer/ui_action_click()
toggle_gunlight()
flashlight = "uflashlight_attached-on"
. += image(icon = 'icons/tgmc/objects/attachments.dmi', icon_state = flashlight, pixel_x = 5, pixel_y = -2)
/obj/item/gun/projectile/automatic/pistol/enforcer/lethal
mag_type = /obj/item/ammo_box/magazine/enforcer/lethal
@@ -72,7 +96,10 @@
/obj/item/gun/projectile/automatic/pistol/deagle
name = "\improper Desert Eagle"
desc = "A robust .50 AE handgun."
icon = 'icons/obj/guns/projectile.dmi'
icon_state = "deagle"
lefthand_file = 'icons/mob/inhands/guns_lefthand.dmi'
righthand_file = 'icons/mob/inhands/guns_righthand.dmi'
force = 14.0
mag_type = /obj/item/ammo_box/magazine/m50
fire_sound = 'sound/weapons/gunshots/gunshot_pistolH.ogg'
@@ -90,11 +117,12 @@
icon_state = "deaglecamo"
item_state = "deagleg"
//APS Pistol//
/obj/item/gun/projectile/automatic/pistol/aps
name = "stechkin APS pistol"
desc = "A deadly automatic pistol produced by the USSP's State Armory. Uses 10mm ammo."
icon_state = "aps"
//Type 230 Machine Pistol//
/obj/item/gun/projectile/automatic/pistol/type_230
name = "\improper Type 230 Machine Pistol"
desc = "A compact submachine gun produced by the USSP-based Rocino Armaments Collective. Chambered in 10mm."
icon_state = "type_230"
item_state = "type_230"
w_class = WEIGHT_CLASS_NORMAL
mag_type = /obj/item/ammo_box/magazine/apsm10mm
can_suppress = FALSE
@@ -2,7 +2,11 @@
name = "\improper .357 magnum revolver"
desc = "A powerful revolver commonly used by the Syndicate. Uses .357 magnum ammo."
materials = list()
icon = 'icons/tgmc/objects/guns.dmi'
icon_state = "revolver"
item_state = "revolver"
lefthand_file = 'icons/tgmc/mob/inhands/guns_lefthand.dmi'
righthand_file = 'icons/tgmc/mob/inhands/guns_righthand.dmi'
mag_type = /obj/item/ammo_box/magazine/internal/cylinder
origin_tech = "combat=3;materials=2"
fire_sound = 'sound/weapons/gunshots/gunshot_strong.ogg'
@@ -113,7 +117,10 @@
/obj/item/gun/projectile/revolver/fingergun
name = "finger gun"
desc = "Bang bang bang!"
icon = 'icons/obj/guns/projectile.dmi'
icon_state = "fingergun"
lefthand_file = 'icons/mob/inhands/guns_lefthand.dmi'
righthand_file = 'icons/mob/inhands/guns_righthand.dmi'
force = 0
mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rev38/invisible
origin_tech = ""
@@ -170,11 +177,14 @@
name = "\improper Unica 6 auto-revolver"
desc = "A retro high-powered autorevolver typically used by officers of several unrelated militaries. Uses .357 ammo." //>10mm hole >.357
icon_state = "mateba"
item_state = "mateba"
/obj/item/gun/projectile/revolver/golden
name = "\improper Golden revolver"
desc = "This ain't no game, ain't never been no show, And I'll gladly gun down the oldest lady you know. Uses .357 ammo."
icon = 'icons/tgmc/objects/guns64.dmi'
icon_state = "goldrevolver"
item_state = "goldrevolver"
fire_sound = 'sound/weapons/resonator_blast.ogg'
recoil = 8
@@ -182,13 +192,20 @@
name = "\improper Nagant revolver"
desc = "An old model of revolver that originated in Russia, now used by the USSP. Able to be suppressed. Uses 7.62x38mmR ammo."
icon_state = "nagant"
item_state = "nagant"
origin_tech = "combat=3"
can_suppress = TRUE
mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rev762
/obj/item/gun/projectile/revolver/nagant/update_overlays()
. = list()
if(suppressed)
. += image(icon = 'icons/obj/guns/attachments.dmi', icon_state = "suppressor_attached", pixel_x = 15, pixel_y = 6)
/obj/item/gun/projectile/revolver/overgrown
name = "overgrown revolver"
desc = "A bulky revolver that seems to be made out of a plant."
icon = 'icons/obj/guns/projectile.dmi'
icon_state = "pea_shooter"
item_state = "peashooter"
w_class = WEIGHT_CLASS_BULKY
@@ -216,6 +233,7 @@
/obj/item/gun/projectile/revolver/doublebarrel
name = "\improper CM150 double-barreled shotgun"
desc = "A true classic, by Starstrike Arms."
icon = 'icons/obj/guns/projectile.dmi'
icon_state = "dbshotgun"
item_state = null
lefthand_file = 'icons/mob/inhands/64x64_guns_lefthand.dmi'
@@ -42,17 +42,17 @@
can_flashlight = TRUE
/obj/item/gun/projectile/automatic/toy/pistol/enforcer/update_icon_state()
icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
icon_state = "[initial(icon_state)][magazine ? "-[magazine.max_ammo]" : ""][chambered ? "" : "-e"]"
/obj/item/gun/projectile/automatic/toy/pistol/enforcer/update_overlays()
. = ..()
if(suppressed)
. += image(icon = 'icons/obj/guns/projectile.dmi', icon_state = "enforcer_supp", pixel_x = 5)
. += image(icon = 'icons/obj/guns/attachments.dmi', icon_state = "suppressor_attached", pixel_x = 15, pixel_y = 5)
if(gun_light)
var/flashlight = "Enforcer_light"
var/flashlight = "uflashlight_attached"
if(gun_light.on)
flashlight = "Enforcer_light-on"
. += image(icon = 'icons/obj/guns/projectile.dmi', icon_state = flashlight, pixel_x = 0)
flashlight = "uflashlight_attached-on"
. += image(icon = 'icons/obj/guns/attachments.dmi', icon_state = flashlight, pixel_x = 5, pixel_y = -2)
/obj/item/gun/projectile/automatic/toy/pistol/enforcer/ui_action_click()
toggle_gunlight()
@@ -1,7 +1,7 @@
/obj/item/gun/projectile
desc = "Now comes in flavors like GUN. Uses 10mm ammo, for some reason"
name = "projectile gun"
icon_state = "pistol"
icon_state = "tommygun"
origin_tech = "combat=2;materials=2"
materials = list(MAT_METAL=1000)