diff --git a/README.md b/README.md
index 2eec6e3f6bd..7dfe894a4b2 100644
--- a/README.md
+++ b/README.md
@@ -138,6 +138,15 @@ Mapping for Paradise station can be daunting to new contributors. Here's a compr
>Further files or folders may also fall under this licence, and any such instances will be specified within the folder or file.
+
+
+
+
+>Any files with the ancestor directories [`Paradise/icons/tgmc`](icons/tgmc) are licensed under the [Creative Commons 4.0 BY-NC license](https://creativecommons.org/licenses/by-nc/4.0).
+>
+>Further files or folders may also fall under this license, and any such instances will be specified within the folder or file.
+
+

diff --git a/code/datums/outfits/outfit_admin.dm b/code/datums/outfits/outfit_admin.dm
index 180f4c88566..953697795ad 100644
--- a/code/datums/outfits/outfit_admin.dm
+++ b/code/datums/outfits/outfit_admin.dm
@@ -612,7 +612,7 @@
suit = /obj/item/clothing/suit/sovietcoat
glasses = /obj/item/clothing/glasses/sunglasses
r_pocket = /obj/item/flashlight/seclite
- belt = /obj/item/gun/projectile/automatic/pistol/aps
+ belt = /obj/item/gun/projectile/automatic/pistol/type_230
backpack_contents = list(
/obj/item/storage/box/soviet = 1,
@@ -655,7 +655,7 @@
backpack_contents = list(
/obj/item/storage/box/soviet = 1,
- /obj/item/gun/projectile/automatic/pistol/aps = 1,
+ /obj/item/gun/projectile/automatic/pistol/type_230 = 1,
/obj/item/ammo_box/magazine/apsm10mm = 2,
/obj/item/storage/fancy/cigarettes/cigpack_syndicate = 1,
/obj/item/lighter/zippo/engraved = 1
diff --git a/code/datums/uplink_items/uplink_nuclear.dm b/code/datums/uplink_items/uplink_nuclear.dm
index 8fa51decf7e..2a88befdb8e 100644
--- a/code/datums/uplink_items/uplink_nuclear.dm
+++ b/code/datums/uplink_items/uplink_nuclear.dm
@@ -5,10 +5,10 @@
////////////////////////////////////////
/datum/uplink_item/dangerous/aps
- name = "Stechkin APS Pistol"
+ name = "Type 230 Machine Pistol"
reference = "APS"
- desc = "The automatic machine pistol version of the FK-69 'Stechkin' chambered in 10mm Auto with a detachable 20-round box magazine. Perfect for dual wielding or as backup."
- item = /obj/item/gun/projectile/automatic/pistol/aps
+ desc = "A compact machine pistol, chambered in 10mm Auto with a detachable 20-round box magazine. Perfect for dual wielding or as backup."
+ item = /obj/item/gun/projectile/automatic/pistol/type_230
cost = 40
uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
@@ -165,32 +165,32 @@
////////////////////////////////////////
/datum/uplink_item/ammo/aps
- name = "Stechkin APS - 10mm Magazine"
- desc = "An additional 20-round 10mm magazine for use in the Stechkin APS machine pistol, loaded with rounds that are cheap but around half as effective as .357"
+ name = "Type 230 - 10mm Magazine"
+ desc = "An additional 20-round 10mm magazine for use in the Type 230 machine pistol, loaded with rounds that are cheap but around half as effective as .357"
reference = "10MMAPS"
item = /obj/item/ammo_box/magazine/apsm10mm
cost = 10
uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
/datum/uplink_item/ammo/apsap
- name = "Stechkin APS - 10mm Armour Piercing Magazine"
- desc = "An additional 20-round 10mm magazine for use in the Stechkin APS machine pistol, loaded with rounds that are less effective at injuring the target but penetrate protective gear."
+ name = "Type 230 - 10mm Armour Piercing Magazine"
+ desc = "An additional 20-round 10mm magazine for use in the Type 230 machine pistol, loaded with rounds that are less effective at injuring the target but penetrate protective gear."
reference = "10MMAPSAP"
item = /obj/item/ammo_box/magazine/apsm10mm/ap
cost = 15
uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
/datum/uplink_item/ammo/apsfire
- name = "Stechkin APS - 10mm Incendiary Magazine"
- desc = "An additional 20-round 10mm magazine for use in the Stechkin APS machine pistol, loaded with incendiary rounds which ignite the target."
+ name = "Type 230 - 10mm Incendiary Magazine"
+ desc = "An additional 20-round 10mm magazine for use in the Type 230 machine pistol, loaded with incendiary rounds which ignite the target."
reference = "10MMAPSFIRE"
item = /obj/item/ammo_box/magazine/apsm10mm/fire
cost = 15
uplinktypes = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
/datum/uplink_item/ammo/apshp
- name = "Stechkin APS - 10mm Hollow Point Magazine"
- desc = "An additional 20-round 10mm magazine for use in the Stechkin APS machine pistol, loaded with rounds which are more damaging but ineffective against armour."
+ name = "Type 230 - 10mm Hollow Point Magazine"
+ desc = "An additional 20-round 10mm magazine for use in the Type 230 machine pistol, loaded with rounds which are more damaging but ineffective against armour."
reference = "10MMAPSHP"
item = /obj/item/ammo_box/magazine/apsm10mm/hp
cost = 20
diff --git a/code/game/gamemodes/wizard/rightandwrong.dm b/code/game/gamemodes/wizard/rightandwrong.dm
index 4c6ffbd43a0..5a60ae1989a 100644
--- a/code/game/gamemodes/wizard/rightandwrong.dm
+++ b/code/game/gamemodes/wizard/rightandwrong.dm
@@ -50,7 +50,7 @@ GLOBAL_LIST_INIT(summoned_guns, list(
/obj/item/gun/energy/bsg/prebuilt,
/obj/item/gun/energy/xray,
/obj/item/gun/energy/plasma_pistol,
- /obj/item/gun/projectile/automatic/pistol/aps, // whyyy is this capitalized
+ /obj/item/gun/projectile/automatic/pistol/type_230, // whyyy is this capitalized
/obj/item/gun/projectile/revolver/overgrown,
/obj/item/gun/energy/gun/blueshield/pdw9,
/obj/item/gun/energy/disabler/silencer,
diff --git a/code/game/objects/effects/spawners/random/traders/trader_organization_spawners.dm b/code/game/objects/effects/spawners/random/traders/trader_organization_spawners.dm
index f92bfa79a7a..a97e36d8c69 100644
--- a/code/game/objects/effects/spawners/random/traders/trader_organization_spawners.dm
+++ b/code/game/objects/effects/spawners/random/traders/trader_organization_spawners.dm
@@ -82,7 +82,7 @@
spawn_loot_count = 2 //Lots of dangerous stuff here - reduced amount
loot = list(
/obj/item/gun/projectile/revolver/nagant = 5,
- /obj/item/gun/projectile/automatic/pistol/aps = 3,
+ /obj/item/gun/projectile/automatic/pistol/type_230 = 3,
/obj/item/gun/projectile/shotgun/boltaction = 5,
/obj/item/clothing/suit/space/hardsuit/soviet = 4,
/obj/item/clothing/glasses/thermal/eyepatch = 5,
diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm
index 28a658968f7..e929d1a8382 100644
--- a/code/modules/projectiles/ammunition/magazines.dm
+++ b/code/modules/projectiles/ammunition/magazines.dm
@@ -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()
diff --git a/code/modules/projectiles/gun_attachments.dm b/code/modules/projectiles/gun_attachments.dm
index f88f615d7f0..791a9ceef18 100644
--- a/code/modules/projectiles/gun_attachments.dm
+++ b/code/modules/projectiles/gun_attachments.dm
@@ -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
diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm
index 1129c89fb22..e02857301f6 100644
--- a/code/modules/projectiles/guns/projectile/automatic.dm
+++ b/code/modules/projectiles/guns/projectile/automatic.dm
@@ -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
diff --git a/code/modules/projectiles/guns/projectile/launchers.dm b/code/modules/projectiles/guns/projectile/launchers.dm
index 1cb81b9d7ca..27d0db454d4 100644
--- a/code/modules/projectiles/guns/projectile/launchers.dm
+++ b/code/modules/projectiles/guns/projectile/launchers.dm
@@ -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
diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm
index f16578d32e6..66724cae82f 100644
--- a/code/modules/projectiles/guns/projectile/pistol.dm
+++ b/code/modules/projectiles/guns/projectile/pistol.dm
@@ -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
diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm
index c04384e9603..f0b1706d3cf 100644
--- a/code/modules/projectiles/guns/projectile/revolver.dm
+++ b/code/modules/projectiles/guns/projectile/revolver.dm
@@ -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'
diff --git a/code/modules/projectiles/guns/projectile/toy.dm b/code/modules/projectiles/guns/projectile/toy.dm
index c85627692f4..bf5cef843b4 100644
--- a/code/modules/projectiles/guns/projectile/toy.dm
+++ b/code/modules/projectiles/guns/projectile/toy.dm
@@ -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()
diff --git a/code/modules/projectiles/guns/projectile_gun.dm b/code/modules/projectiles/guns/projectile_gun.dm
index c5a408d68ec..01f7cb697f8 100644
--- a/code/modules/projectiles/guns/projectile_gun.dm
+++ b/code/modules/projectiles/guns/projectile_gun.dm
@@ -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)
diff --git a/docs/mapping/spawn_pools.md b/docs/mapping/spawn_pools.md
index cf4e56307e8..efde27a5528 100644
--- a/docs/mapping/spawn_pools.md
+++ b/docs/mapping/spawn_pools.md
@@ -55,7 +55,7 @@ And then we create the spawners we want, all subtypes of
/obj/effect/spawner/random/pool/space_loot/tier3
point_value = 100
loot = list(
- /obj/item/gun/projectile/automatic/pistol/APS = 2,
+ /obj/item/gun/projectile/automatic/pistol/type_230 = 2,
/obj/item/gun/projectile/automatic/l6_saw = 1,
)
```
diff --git a/icons/mob/inhands/guns_lefthand.dmi b/icons/mob/inhands/guns_lefthand.dmi
index a992479645e..3d6e06f3a0d 100644
Binary files a/icons/mob/inhands/guns_lefthand.dmi and b/icons/mob/inhands/guns_lefthand.dmi differ
diff --git a/icons/mob/inhands/guns_righthand.dmi b/icons/mob/inhands/guns_righthand.dmi
index 591b9cd3698..69cd6ee30b6 100644
Binary files a/icons/mob/inhands/guns_righthand.dmi and b/icons/mob/inhands/guns_righthand.dmi differ
diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi
index b19f65eeb33..e086eb288dd 100644
Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ
diff --git a/icons/obj/guns/attachments.dmi b/icons/obj/guns/attachments.dmi
new file mode 100644
index 00000000000..cf74d73796c
Binary files /dev/null and b/icons/obj/guns/attachments.dmi differ
diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi
index d33ad927331..25d563e1f3e 100644
Binary files a/icons/obj/guns/projectile.dmi and b/icons/obj/guns/projectile.dmi differ
diff --git a/icons/obj/guns/projectile64.dmi b/icons/obj/guns/projectile64.dmi
new file mode 100644
index 00000000000..7854fabe2bf
Binary files /dev/null and b/icons/obj/guns/projectile64.dmi differ
diff --git a/icons/obj/guns/toy.dmi b/icons/obj/guns/toy.dmi
index a67bd4916ce..b30a83a0c53 100644
Binary files a/icons/obj/guns/toy.dmi and b/icons/obj/guns/toy.dmi differ
diff --git a/icons/tgmc/LICENSE.md b/icons/tgmc/LICENSE.md
new file mode 100644
index 00000000000..303cf0fdd58
--- /dev/null
+++ b/icons/tgmc/LICENSE.md
@@ -0,0 +1,2 @@
+All files located in this directory and any subdirectories are licensed under the
+Creative Commons 4.0 BY-NC license (https://creativecommons.org/licenses/by-nc/4.0)
diff --git a/icons/tgmc/mob/inhands/guns_lefthand.dmi b/icons/tgmc/mob/inhands/guns_lefthand.dmi
new file mode 100644
index 00000000000..1bc4d3ba765
Binary files /dev/null and b/icons/tgmc/mob/inhands/guns_lefthand.dmi differ
diff --git a/icons/tgmc/mob/inhands/guns_righthand.dmi b/icons/tgmc/mob/inhands/guns_righthand.dmi
new file mode 100644
index 00000000000..e637f26bd84
Binary files /dev/null and b/icons/tgmc/mob/inhands/guns_righthand.dmi differ
diff --git a/icons/tgmc/objects/ammo.dmi b/icons/tgmc/objects/ammo.dmi
new file mode 100644
index 00000000000..4a32fdb95a4
Binary files /dev/null and b/icons/tgmc/objects/ammo.dmi differ
diff --git a/icons/tgmc/objects/attachments.dmi b/icons/tgmc/objects/attachments.dmi
new file mode 100644
index 00000000000..4a71d222f85
Binary files /dev/null and b/icons/tgmc/objects/attachments.dmi differ
diff --git a/icons/tgmc/objects/guns.dmi b/icons/tgmc/objects/guns.dmi
new file mode 100644
index 00000000000..e5650e50ad0
Binary files /dev/null and b/icons/tgmc/objects/guns.dmi differ
diff --git a/icons/tgmc/objects/guns64.dmi b/icons/tgmc/objects/guns64.dmi
new file mode 100644
index 00000000000..5a1138b9efc
Binary files /dev/null and b/icons/tgmc/objects/guns64.dmi differ
diff --git a/paradise.dme b/paradise.dme
index ca19945519a..dc13031e6b3 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -480,10 +480,10 @@
#include "code\datums\ai\basic_mobs\basic_subtrees\tip_reaction.dm"
#include "code\datums\ai\basic_mobs\basic_subtrees\use_mob_ability.dm"
#include "code\datums\ai\basic_mobs\basic_subtrees\ventcrawl_subtree.dm"
+#include "code\datums\ai\basic_mobs\generic_controllers\hostile_controllers.dm"
#include "code\datums\ai\basic_mobs\hunting_behavior\find_and_hunt_target.dm"
#include "code\datums\ai\basic_mobs\hunting_behavior\find_hunt_target.dm"
#include "code\datums\ai\basic_mobs\hunting_behavior\hunt_target.dm"
-#include "code\datums\ai\basic_mobs\generic_controllers\hostile_controllers.dm"
#include "code\datums\ai\generic\find_and_set.dm"
#include "code\datums\ai\generic\generic_behaviors.dm"
#include "code\datums\ai\idle_behaviors\idle_behavior.dm"