4JXXvX%Ww2e
zS`bFSBZDvk3
Date: Fri, 16 Aug 2024 21:07:49 +0200
Subject: [PATCH 3/9] smg crate
---
code/modules/cargo/packs.dm | 40 +++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm
index 2dc16fb89866..b0b4b6c306f1 100644
--- a/code/modules/cargo/packs.dm
+++ b/code/modules/cargo/packs.dm
@@ -174,6 +174,46 @@ var/global/list/all_supply_groups = list("Operations","Security","Hospitality","
access = access_brig
group = "Security"
+/datum/supply_pack/ballistic/smg
+ name = ".38 SMG crate"
+ contains = list(/obj/item/weapon/gun/projectile/automatic/l13,
+ /obj/item/weapon/gun/projectile/automatic/l13,
+ /obj/item/weapon/gun/projectile/automatic/l13)
+ additional_costs = 2300
+ crate_type = /obj/structure/closet/crate/secure/weapon
+ crate_name = ".38 SMG crate"
+ access = access_brig
+ group = "Security"
+
+/datum/supply_pack/ballistic/smg_magazine
+ name = ".38 magazine"
+ contains = list(/obj/item/ammo_box/magazine/l13/lethal,
+ /obj/item/ammo_box/magazine/l13/lethal,
+ /obj/item/ammo_box/magazine/l13/lethal,
+ /obj/item/ammo_box/magazine/l13/lethal,
+ /obj/item/ammo_box/magazine/l13/lethal,
+ /obj/item/ammo_box/magazine/l13/lethal)
+ additional_costs = 500
+ crate_type = /obj/structure/closet/crate/secure
+ crate_name = ".38 magazine"
+ access = access_armory
+ group = "Security"
+
+/datum/supply_pack/ballistic/smg_magazine_rubber
+ name = ".38 magazine (rubber)"
+ contains = list(/obj/item/ammo_box/magazine/l13,
+ /obj/item/ammo_box/magazine/l13,
+ /obj/item/ammo_box/magazine/l13,
+ /obj/item/ammo_box/magazine/l13,
+ /obj/item/ammo_box/magazine/l13,
+ /obj/item/ammo_box/magazine/l13)
+ additional_costs = 400
+ crate_type = /obj/structure/closet/crate/secure
+ crate_name = ".38 magazine (rubber)"
+ access = access_brig
+ group = "Security"
+
+
/datum/supply_pack/ballistic/pistol
name = "9mm pistol crate"
contains = list(/obj/item/weapon/gun/projectile/automatic/pistol/glock,
From 4b74e9e4fef129c7a6c4641b367565b3221571ad Mon Sep 17 00:00:00 2001
From: simb11 <84613249+simb11@users.noreply.github.com>
Date: Fri, 16 Aug 2024 21:21:10 +0200
Subject: [PATCH 4/9] Update fullauto.dm
---
code/datums/components/fullauto.dm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/code/datums/components/fullauto.dm b/code/datums/components/fullauto.dm
index e7f687caaab0..e77171b95a36 100644
--- a/code/datums/components/fullauto.dm
+++ b/code/datums/components/fullauto.dm
@@ -82,8 +82,8 @@
RegisterSignal(shooter, COMSIG_LOGOUT, PROC_REF(autofire_off))
UnregisterSignal(shooter, COMSIG_LOGIN)
RegisterSignals(parent, list(COMSIG_PARENT_QDELETING, COMSIG_ITEM_DROPPED), PROC_REF(autofire_off))
- parent.RegisterSignal(src, COMSIG_AUTOFIRE_ONMOUSEDOWN, TYPE_PROC_REF(/obj/item/weapon/gun/, autofire_bypass_check))
- parent.RegisterSignal(parent, COMSIG_AUTOFIRE_SHOT, TYPE_PROC_REF(/obj/item/weapon/gun/, do_autofire))
+ parent.RegisterSignal(src, COMSIG_AUTOFIRE_ONMOUSEDOWN, TYPE_PROC_REF(/obj/item/weapon/gun, autofire_bypass_check))
+ parent.RegisterSignal(parent, COMSIG_AUTOFIRE_SHOT, TYPE_PROC_REF(/obj/item/weapon/gun, do_autofire))
From 5bd05a7df359edf7a3ed950cba5ee7e5a9ff227d Mon Sep 17 00:00:00 2001
From: simb11 <84613249+simb11@users.noreply.github.com>
Date: Fri, 16 Aug 2024 22:47:51 +0200
Subject: [PATCH 5/9] del musor
---
code/datums/components/fullauto.dm | 12 +++---------
1 file changed, 3 insertions(+), 9 deletions(-)
diff --git a/code/datums/components/fullauto.dm b/code/datums/components/fullauto.dm
index e77171b95a36..283f17fdf703 100644
--- a/code/datums/components/fullauto.dm
+++ b/code/datums/components/fullauto.dm
@@ -237,9 +237,9 @@
if(get_dist(shooter, target) <= 0)
target = get_step(shooter, shooter.dir) //Shoot in the direction faced if the mouse is on the same tile as we are.
target_loc = target
- //else if(!CAN_THEY_SEE(target, shooter))
- // stop_autofiring() //Elvis has left the building.
- // return FALSE
+ else if(!CAN_THEY_SEE(target, shooter))
+ stop_autofiring() //Elvis has left the building.
+ return FALSE
shooter.face_atom(target)
var/next_delay = autofire_shot_delay
if(windup_autofire)
@@ -266,13 +266,8 @@
if(!can_fire())
shoot_with_empty_chamber(shooter)
return FALSE
- //var/obj/item/bodypart/other_hand = shooter.has_hand_for_held_index(shooter.get_inactive_hand_index())
- //if(weapon_weight == WEAPON_HEAVY && (shooter.get_inactive_held_item() || !other_hand))
- // balloon_alert(shooter, "use both hands!")
- // return FALSE
return TRUE
-
/obj/item/weapon/gun/proc/autofire_bypass_check(datum/source, client/clicker, atom/target, turf/location, control, params)
SIGNAL_HANDLER
if(clicker.mob.get_active_hand() != src)
@@ -289,7 +284,6 @@
INVOKE_ASYNC(src, PROC_REF(do_autofire_shot), source, target, shooter, params)
return COMPONENT_AUTOFIRE_SHOT_SUCCESS //All is well, we can continue shooting.
-
/obj/item/weapon/gun/proc/do_autofire_shot(datum/source, atom/target, mob/living/shooter, params)
afterattack(target, shooter, FALSE)
From a2f75704ecf66636998fb4406a04843b64de2384 Mon Sep 17 00:00:00 2001
From: simb11 <84613249+simb11@users.noreply.github.com>
Date: Mon, 19 Aug 2024 13:35:42 +0200
Subject: [PATCH 6/9] be
---
code/modules/projectiles/gun.dm | 3 ++
.../modules/projectiles/guns/plasma/plasma.dm | 4 +-
.../projectiles/guns/projectile/automatic.dm | 37 +++++++++---------
.../projectiles/guns/projectile/pistol.dm | 4 +-
code/modules/research/prototipify.dm | 2 -
icons/obj/ammo/magazines.dmi | Bin 16722 -> 16690 bytes
6 files changed, 26 insertions(+), 24 deletions(-)
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index be765e617cd6..0176156ce1a5 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -176,6 +176,9 @@
if(!special_check(user, target))
return
+ if (!ready_to_fire())
+ return
+
user.next_click = world.time + (burst - 1) * burst_delay
for(var/i in 1 to burst)
if(chambered)
diff --git a/code/modules/projectiles/guns/plasma/plasma.dm b/code/modules/projectiles/guns/plasma/plasma.dm
index 6b0dacc31dcd..283a954344ce 100644
--- a/code/modules/projectiles/guns/plasma/plasma.dm
+++ b/code/modules/projectiles/guns/plasma/plasma.dm
@@ -16,7 +16,7 @@
desc = "Стандартный плазменный карабин типа булл-пап обладающий высокой скорострельностью."
icon_state = "plasma10_car"
item_state = "plasma10_car"
- fire_delay = 2
+ fire_delay = 0
origin_tech = "combat=3;magnets=2"
fire_sound = 'sound/weapons/guns/plasma10_shot.ogg'
recoil = FALSE
@@ -58,7 +58,7 @@
/obj/item/weapon/gun/plasma/atom_init()
. = ..()
if(fullauto)
- AddComponent(/datum/component/automatic_fire, fire_delay)
+ AddComponent(/datum/component/automatic_fire, 0.2 SECONDS)
magazine = new initial_mag(src)
for(var/i in ammo_type)
var/path = ammo_type[i]
diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm
index fdd66049f050..7444bbabd241 100644
--- a/code/modules/projectiles/guns/projectile/automatic.dm
+++ b/code/modules/projectiles/guns/projectile/automatic.dm
@@ -48,11 +48,11 @@
/obj/item/weapon/gun/projectile/automatic/saber
spread = 1
- fire_delay = 2
+ fire_delay = 0
/obj/item/weapon/gun/projectile/automatic/saber/atom_init()
. = ..()
- AddComponent(/datum/component/automatic_fire, fire_delay)
+ AddComponent(/datum/component/automatic_fire, 0.2 SECONDS)
/obj/item/weapon/gun/projectile/automatic/mini_uzi
name = "Mac-10"
@@ -64,12 +64,12 @@
origin_tech = "combat=5;materials=2;syndicate=8"
initial_mag = /obj/item/ammo_box/magazine/mac10
can_be_silenced = TRUE
- fire_delay = 1
+ fire_delay = 0
spread = 1.5
/obj/item/weapon/gun/projectile/automatic/mini_uzi/atom_init()
. = ..()
- AddComponent(/datum/component/automatic_fire, fire_delay)
+ AddComponent(/datum/component/automatic_fire, 0.1 SECONDS)
/obj/item/weapon/gun/projectile/automatic/c20r
name = "C-20r SMG"
@@ -84,12 +84,12 @@
should_alarm_when_empty = TRUE
can_be_silenced = TRUE
has_ammo_counter = TRUE
- fire_delay = 2
+ fire_delay = 0
spread = 1
/obj/item/weapon/gun/projectile/automatic/c20r/atom_init()
. = ..()
- AddComponent(/datum/component/automatic_fire, fire_delay)
+ AddComponent(/datum/component/automatic_fire, 0.2 SECONDS)
/obj/item/weapon/gun/projectile/automatic/l6_saw
name = "L6 SAW"
@@ -103,12 +103,12 @@
has_cover = TRUE
two_hand_weapon = ONLY_TWOHAND
has_ammo_counter = TRUE
- fire_delay = 2.5
+ fire_delay = 0
spread = 1.5
/obj/item/weapon/gun/projectile/automatic/l6_saw/atom_init()
. = ..()
- AddComponent(/datum/component/automatic_fire, fire_delay)
+ AddComponent(/datum/component/automatic_fire, 0.25 SECONDS)
/obj/item/weapon/gun/projectile/automatic/l6_saw/update_icon()
icon_state = "l6[cover_open ? "open" : "closed"][magazine ? CEIL(get_ammo(0) / 25) * 25 : "-empty"]"
@@ -162,12 +162,12 @@
suitable_mags = list(/obj/item/ammo_box/magazine/l13, /obj/item/ammo_box/magazine/l13/lethal)
fire_sound = 'sound/weapons/guns/gunshot_l13.ogg'
can_be_silenced = TRUE
- fire_delay = 2
+ fire_delay = 0
spread = 1
/obj/item/weapon/gun/projectile/automatic/l13/atom_init()
. = ..()
- AddComponent(/datum/component/automatic_fire, fire_delay)
+ AddComponent(/datum/component/automatic_fire, 0.2 SECONDS)
/obj/item/weapon/gun/projectile/automatic/tommygun
name = "tommy gun"
@@ -181,12 +181,12 @@
initial_mag = /obj/item/ammo_box/magazine/tommygun
fire_sound = 'sound/weapons/guns/gunshot_light.ogg'
can_be_silenced = TRUE
- fire_delay = 1.5
+ fire_delay = 0
spread = 1.5
/obj/item/weapon/gun/projectile/automatic/tommygun/atom_init()
. = ..()
- AddComponent(/datum/component/automatic_fire, fire_delay)
+ AddComponent(/datum/component/automatic_fire, 0.15 SECONDS)
/obj/item/weapon/gun/projectile/automatic/bar
name = "Browning M1918"
@@ -198,10 +198,11 @@
origin_tech = "combat=5;materials=2"
initial_mag = /obj/item/ammo_box/magazine/bar
fire_sound = 'sound/weapons/guns/Gunshot2.ogg'
+ fire_delay = 0
/obj/item/weapon/gun/projectile/automatic/bar/atom_init()
. = ..()
- AddComponent(/datum/component/automatic_fire, fire_delay)
+ AddComponent(/datum/component/automatic_fire, 0.4 SECONDS)
/obj/item/weapon/gun/projectile/automatic/borg
name = "Robot SMG"
@@ -250,12 +251,12 @@
initial_mag = /obj/item/ammo_box/magazine/a28
suitable_mags = list(/obj/item/ammo_box/magazine/a28, /obj/item/ammo_box/magazine/a28/nonlethal, /obj/item/ammo_box/magazine/a28/incendiary)
fire_sound = 'sound/weapons/guns/gunshot_medium.ogg'
- fire_delay = 2.5
+ fire_delay = 0
spread = 1
/obj/item/weapon/gun/projectile/automatic/a28/atom_init()
. = ..()
- AddComponent(/datum/component/automatic_fire, fire_delay)
+ AddComponent(/datum/component/automatic_fire, 0.25 SECONDS)
/obj/item/weapon/gun/projectile/automatic/a74
name = "A74 assault rifle"
@@ -268,12 +269,12 @@
item_state = "a74"
origin_tech = "combat=5;materials=4;syndicate=6"
fire_sound = 'sound/weapons/guns/gunshot_ak74.ogg'
- fire_delay = 2.5
+ fire_delay = 0
spread = 1
/obj/item/weapon/gun/projectile/automatic/a74/atom_init()
. = ..()
- AddComponent(/datum/component/automatic_fire, fire_delay)
+ AddComponent(/datum/component/automatic_fire, 0.25 SECONDS)
/obj/item/weapon/gun/projectile/automatic/a74/krinkov
name = "Krinkov"
@@ -356,7 +357,7 @@
initial_mag = /obj/item/ammo_box/magazine/m41a
w_class = SIZE_SMALL
two_hand_weapon = DESIRABLE_TWOHAND
- fire_delay = 1
+ fire_delay = 3
burst = 3
spread = 1.5
diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm
index 9800d30a0320..b012d2b2528d 100644
--- a/code/modules/projectiles/guns/projectile/pistol.dm
+++ b/code/modules/projectiles/guns/projectile/pistol.dm
@@ -65,11 +65,11 @@
initial_mag = /obj/item/ammo_box/magazine/stechkin
suitable_mags = list(/obj/item/ammo_box/magazine/stechkin, /obj/item/ammo_box/magazine/stechkin/extended)
can_be_silenced = TRUE
- fire_delay = 3
+ fire_delay = 0
/obj/item/weapon/gun/projectile/automatic/pistol/stechkin/atom_init()
. = ..()
- AddComponent(/datum/component/automatic_fire, fire_delay)
+ AddComponent(/datum/component/automatic_fire, 0.3 SECONDS)
/obj/item/weapon/gun/projectile/automatic/pistol/colt1911
desc = "Дешевая марсианская подделка Colt M1911. Использует менее смертоносные патроны 45-го калибра."
diff --git a/code/modules/research/prototipify.dm b/code/modules/research/prototipify.dm
index 1983ceecae52..4ffc28fd3b01 100644
--- a/code/modules/research/prototipify.dm
+++ b/code/modules/research/prototipify.dm
@@ -95,9 +95,7 @@
/obj/item/weapon/gun/projectile/automatic/set_prototype_qualities(rel_val=100, mark=0)
if(mark)
recoil = max(recoil / mark, 0.5)
- fire_delay = max(fire_delay / mark, 2)
if(!prob(reliability))
- fire_delay *= 2
recoil += 1
/obj/item/weapon/gun/plasma/set_prototype_qualities(rel_val=100, mark=0)
diff --git a/icons/obj/ammo/magazines.dmi b/icons/obj/ammo/magazines.dmi
index d965f790a280e2fc2fd9efd4aaf5856c8f2c687f..4582c3c2f36dbf8821ef873dfe2b2fce4de746f9 100644
GIT binary patch
delta 13319
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
Date: Sun, 8 Sep 2024 12:01:48 +0200
Subject: [PATCH 7/9] small fix
---
code/__HELPERS/view.dm | 2 --
code/datums/components/fullauto.dm | 3 --
code/modules/projectiles/gun.dm | 17 ++++++++++
.../projectiles/guns/projectile/automatic.dm | 31 ++++++++++++-------
.../projectiles/guns/projectile/pistol.dm | 2 ++
5 files changed, 39 insertions(+), 16 deletions(-)
diff --git a/code/__HELPERS/view.dm b/code/__HELPERS/view.dm
index 6b1ce1b34a25..22637d252b9e 100644
--- a/code/__HELPERS/view.dm
+++ b/code/__HELPERS/view.dm
@@ -10,5 +10,3 @@
viewX = text2num(viewrangelist[1])
viewY = text2num(viewrangelist[2])
return list(viewX, viewY)
-
-#define CAN_THEY_SEE(target, source) ((source in viewers(7, target)) || in_range(target, source))
diff --git a/code/datums/components/fullauto.dm b/code/datums/components/fullauto.dm
index 283f17fdf703..081ab7842681 100644
--- a/code/datums/components/fullauto.dm
+++ b/code/datums/components/fullauto.dm
@@ -237,9 +237,6 @@
if(get_dist(shooter, target) <= 0)
target = get_step(shooter, shooter.dir) //Shoot in the direction faced if the mouse is on the same tile as we are.
target_loc = target
- else if(!CAN_THEY_SEE(target, shooter))
- stop_autofiring() //Elvis has left the building.
- return FALSE
shooter.face_atom(target)
var/next_delay = autofire_shot_delay
if(windup_autofire)
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 0176156ce1a5..121f87fe482a 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -41,6 +41,8 @@
var/two_hand_weapon = FALSE
var/burst = 1 //burst size
var/burst_delay = 1 //cooldown between burst shots
+ var/spread_increase = 0 // per shot
+ var/spread_max = 0
var/spread = 0
lefthand_file = 'icons/mob/inhands/guns_lefthand.dmi'
@@ -49,6 +51,12 @@
/datum/action/item_action/hands_free/switch_gun
name = "Switch Gun"
+/obj/item/weapon/gun/process()
+ if(spread == 0)
+ STOP_PROCESSING(SSfastprocess, src)
+ else
+ spread = clamp(spread - 0.1, 0, spread_max)
+
/obj/item/weapon/gun/examine(mob/user)
..()
if(two_hand_weapon)
@@ -83,12 +91,21 @@
var/skill_recoil_duration = max(DEFAULT_DURATION_RECOIL, apply_skill_bonus(user, recoil, list(/datum/skill/firearms = SKILL_LEVEL_TRAINED), multiplier = -0.5))
if(two_hand_weapon != DESIRABLE_TWOHAND)
shake_camera(user, skill_recoil_duration, OPTIMAL_POWER_RECOIL)
+ if(spread_increase)
+ spread = clamp(spread + spread_increase, 0, spread_max)
+ START_PROCESSING(SSfastprocess, src)
if(two_hand_weapon == DESIRABLE_TWOHAND)
//No OPTIMAL_POWER_RECOIL only for increasing user's motivation to drop other hand
if(user.get_inactive_hand())
shake_camera(user, recoil + 2, recoil + 1)
+ if(spread_increase)
+ spread = clamp(spread + spread_increase + 1, 0, spread_max)
+ START_PROCESSING(SSfastprocess, src)
else
shake_camera(user, skill_recoil_duration, OPTIMAL_POWER_RECOIL)
+ if(spread_increase)
+ spread = clamp(spread + spread_increase, 0, spread_max)
+ START_PROCESSING(SSfastprocess, src)
if(silenced)
playsound(user, fire_sound, VOL_EFFECTS_MASTER, 30, FALSE, null, -4)
diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm
index 7444bbabd241..1b021982a875 100644
--- a/code/modules/projectiles/guns/projectile/automatic.dm
+++ b/code/modules/projectiles/guns/projectile/automatic.dm
@@ -47,7 +47,8 @@
return ..()
/obj/item/weapon/gun/projectile/automatic/saber
- spread = 1
+ spread_increase = 0.5
+ spread_max = 1.5
fire_delay = 0
/obj/item/weapon/gun/projectile/automatic/saber/atom_init()
@@ -65,7 +66,8 @@
initial_mag = /obj/item/ammo_box/magazine/mac10
can_be_silenced = TRUE
fire_delay = 0
- spread = 1.5
+ spread_increase = 0.25
+ spread_max = 2
/obj/item/weapon/gun/projectile/automatic/mini_uzi/atom_init()
. = ..()
@@ -85,7 +87,8 @@
can_be_silenced = TRUE
has_ammo_counter = TRUE
fire_delay = 0
- spread = 1
+ spread_increase = 0.25
+ spread_max = 1.5
/obj/item/weapon/gun/projectile/automatic/c20r/atom_init()
. = ..()
@@ -104,7 +107,8 @@
two_hand_weapon = ONLY_TWOHAND
has_ammo_counter = TRUE
fire_delay = 0
- spread = 1.5
+ spread_increase = 0.5
+ spread_max = 2
/obj/item/weapon/gun/projectile/automatic/l6_saw/atom_init()
. = ..()
@@ -163,7 +167,8 @@
fire_sound = 'sound/weapons/guns/gunshot_l13.ogg'
can_be_silenced = TRUE
fire_delay = 0
- spread = 1
+ spread_increase = 0.25
+ spread_max = 1.5
/obj/item/weapon/gun/projectile/automatic/l13/atom_init()
. = ..()
@@ -182,7 +187,8 @@
fire_sound = 'sound/weapons/guns/gunshot_light.ogg'
can_be_silenced = TRUE
fire_delay = 0
- spread = 1.5
+ spread_increase = 0.25
+ spread_max = 2
/obj/item/weapon/gun/projectile/automatic/tommygun/atom_init()
. = ..()
@@ -199,6 +205,8 @@
initial_mag = /obj/item/ammo_box/magazine/bar
fire_sound = 'sound/weapons/guns/Gunshot2.ogg'
fire_delay = 0
+ spread_increase = 0.5
+ spread_max = 1
/obj/item/weapon/gun/projectile/automatic/bar/atom_init()
. = ..()
@@ -210,7 +218,6 @@
initial_mag = /obj/item/ammo_box/magazine/borg45
fire_sound = 'sound/weapons/guns/gunshot_medium.ogg'
has_ammo_counter = TRUE
- spread = 1
burst = 3
burst_delay = 2
@@ -252,7 +259,8 @@
suitable_mags = list(/obj/item/ammo_box/magazine/a28, /obj/item/ammo_box/magazine/a28/nonlethal, /obj/item/ammo_box/magazine/a28/incendiary)
fire_sound = 'sound/weapons/guns/gunshot_medium.ogg'
fire_delay = 0
- spread = 1
+ spread_increase = 0.5
+ spread_max = 1.5
/obj/item/weapon/gun/projectile/automatic/a28/atom_init()
. = ..()
@@ -270,7 +278,8 @@
origin_tech = "combat=5;materials=4;syndicate=6"
fire_sound = 'sound/weapons/guns/gunshot_ak74.ogg'
fire_delay = 0
- spread = 1
+ spread_increase = 0.5
+ spread_max = 1.5
/obj/item/weapon/gun/projectile/automatic/a74/atom_init()
. = ..()
@@ -359,7 +368,8 @@
two_hand_weapon = DESIRABLE_TWOHAND
fire_delay = 3
burst = 3
- spread = 1.5
+ spread_increase = 0.5
+ spread_max = 1.5
/obj/item/weapon/gun/projectile/automatic/m41a/process_chamber()
return ..(1, 1, 1)
@@ -391,7 +401,6 @@
"You activate your [launcher].",\
"You hear an ominous click.")
else
- spread = 1.5
burst = 3
user.visible_message("[user] presses a button, deciding to stop the bombings.",\
"You deactivate your [launcher].",\
diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm
index b012d2b2528d..46c69c3fc04d 100644
--- a/code/modules/projectiles/guns/projectile/pistol.dm
+++ b/code/modules/projectiles/guns/projectile/pistol.dm
@@ -66,6 +66,8 @@
suitable_mags = list(/obj/item/ammo_box/magazine/stechkin, /obj/item/ammo_box/magazine/stechkin/extended)
can_be_silenced = TRUE
fire_delay = 0
+ spread_increase = 0.5
+ spread_max = 1.5
/obj/item/weapon/gun/projectile/automatic/pistol/stechkin/atom_init()
. = ..()
From b372a0be3f01c2f30d5d17e4b3cb4aafc500d8ba Mon Sep 17 00:00:00 2001
From: simb11 <84613249+simb11@users.noreply.github.com>
Date: Mon, 16 Sep 2024 17:59:37 +0200
Subject: [PATCH 8/9] 321
---
code/__DEFINES/traits.dm | 1 +
code/_onclick/click.dm | 4 ----
code/datums/components/fullauto.dm | 2 ++
code/modules/client/client_defines.dm | 4 ----
code/modules/mining/mine_items.dm | 4 ++--
code/modules/mob/living/carbon/human/human_movement.dm | 3 +++
code/modules/projectiles/guns/plasma/plasma.dm | 2 +-
code/modules/projectiles/guns/projectile/automatic.dm | 8 +++++---
maps/centcom/centcom.dmm | 4 ++--
9 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index f5254f82ecef..dbbc836fccaf 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -197,6 +197,7 @@
#define TRAIT_MIMING "miming"
#define TRAIT_WILLPOWER_IMPLANT "willpower_implant"
#define TRAIT_CAN_LEAP "can_leap"
+#define TRAIT_AUTOFIRE_SHOOTS "autofire_shoots"
/*
* Used for movables that need to be updated, via COMSIG_ENTER_AREA and COMSIG_EXIT_AREA, when transitioning areas.
diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm
index 1008b1608f09..7d0761e32eaa 100644
--- a/code/_onclick/click.dm
+++ b/code/_onclick/click.dm
@@ -167,15 +167,11 @@
/client/MouseDown(datum/object, location, control, params)
SEND_SIGNAL(src, COMSIG_CLIENT_MOUSEDOWN, object, location, control, params)
- if(mouse_down_icon)
- mouse_pointer_icon = mouse_down_icon
..()
/client/MouseUp(object, location, control, params)
if(SEND_SIGNAL(src, COMSIG_CLIENT_MOUSEUP, object, location, control, params) & COMPONENT_CLIENT_MOUSEUP_INTERCEPT)
click_intercept_time = world.time
- if(mouse_up_icon)
- mouse_pointer_icon = mouse_up_icon
/client/MouseDrag(src_object,atom/over_object,src_location,over_location,src_control,over_control,params)
SEND_SIGNAL(src, COMSIG_CLIENT_MOUSEDRAG, src_object, over_object, src_location, over_location, src_control, over_control, params)
diff --git a/code/datums/components/fullauto.dm b/code/datums/components/fullauto.dm
index 081ab7842681..3bd03c5351e2 100644
--- a/code/datums/components/fullauto.dm
+++ b/code/datums/components/fullauto.dm
@@ -176,6 +176,7 @@
if(!process_shot()) //First shot is processed instantly.
return //If it fails, such as when the gun is empty, then there's no need to schedule a second shot.
+ ADD_TRAIT(shooter, TRAIT_AUTOFIRE_SHOOTS, GENERIC_TRAIT)
START_PROCESSING(SSfullauto, src)
RegisterSignal(clicker, COMSIG_CLIENT_MOUSEDRAG, PROC_REF(on_mouse_drag))
@@ -201,6 +202,7 @@
UnregisterSignal(clicker, COMSIG_CLIENT_MOUSEDRAG)
if(!QDELETED(shooter))
UnregisterSignal(shooter, COMSIG_MOB_SWAP_HANDS)
+ REMOVE_TRAIT(shooter, TRAIT_AUTOFIRE_SHOOTS, GENERIC_TRAIT)
target = null
target_loc = null
mouse_parameters = null
diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm
index 10076c751169..8e35c5318c0c 100644
--- a/code/modules/client/client_defines.dm
+++ b/code/modules/client/client_defines.dm
@@ -120,9 +120,5 @@
COOLDOWN_DECLARE(say_slowmode)
var/is_in_spawner = FALSE
- ///used to make a special mouse cursor, this one for mouse up icon
- var/mouse_up_icon = null
- ///used to make a special mouse cursor, this one for mouse up icon
- var/mouse_down_icon = null
///used to override the mouse cursor so it doesnt get reset
var/mouse_override_icon = null
diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm
index ddd9358ab0c7..aa6b432be1cb 100644
--- a/code/modules/mining/mine_items.dm
+++ b/code/modules/mining/mine_items.dm
@@ -667,7 +667,7 @@ var/global/mining_shuttle_location = 0 // 0 = station 13, 1 = mining station
damtype = BURN
hitsound = list('sound/weapons/sear.ogg')
ammo_type = list(/obj/item/ammo_casing/energy/laser/cutter)
- fire_delay = 3
+ fire_delay = 0
w_class = SIZE_SMALL //it is smaller than the pickaxe
origin_tech = "materials=4;phorontech=3;engineering=3"
desc = "The latest self-rechargeable low-power cutter using bursts of hot plasma. You could use it to cut limbs off of xenos! Or, you know, mine stuff."
@@ -701,12 +701,12 @@ var/global/mining_shuttle_location = 0 // 0 = station 13, 1 = mining station
/obj/item/weapon/gun/energy/laser/cutter/atom_init()
. = ..()
power_supply.AddComponent(/datum/component/cell_selfrecharge, 50)
+ AddComponent(/datum/component/automatic_fire, 0.4 SECONDS)
/obj/item/weapon/gun/energy/laser/cutter/emag_act(mob/user)
if(emagged)
return FALSE
ammo_type += new /obj/item/ammo_casing/energy/laser/cutter/emagged(src)
- fire_delay = 5
origin_tech += ";syndicate=1"
emagged = TRUE
to_chat(user, "Ошибка: Обнаружен несовместимый модуль. Ошибкаошибкаошибка.")
diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm
index a5d8a7bf3f34..a186e529b11d 100644
--- a/code/modules/mob/living/carbon/human/human_movement.dm
+++ b/code/modules/mob/living/carbon/human/human_movement.dm
@@ -136,6 +136,9 @@
if(get_species() == UNATHI && bodytemperature > species.body_temperature)
tally -= min((bodytemperature - species.body_temperature) / 10, 1) //will be on the border of heat_level_1
+ if(HAS_TRAIT(src, TRAIT_AUTOFIRE_SHOOTS)) // so that you can’t run at full speed and shoot everyone and everything
+ tally += 0.75
+
return (tally + config.human_delay)
/mob/living/carbon/human/Process_Spacemove(movement_dir = 0)
diff --git a/code/modules/projectiles/guns/plasma/plasma.dm b/code/modules/projectiles/guns/plasma/plasma.dm
index 283a954344ce..a7e256a658e8 100644
--- a/code/modules/projectiles/guns/plasma/plasma.dm
+++ b/code/modules/projectiles/guns/plasma/plasma.dm
@@ -89,7 +89,7 @@
fire_sound = initial(fire_sound)
else
shot = ammo_type[PLASMAGUN_OVERCHARGE_TYPE]
- fire_delay = 1
+ fire_delay = 0
fire_sound = overcharge_fire_sound
max_projectile_per_fire = 1
diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm
index 1b021982a875..48b983faa04e 100644
--- a/code/modules/projectiles/guns/projectile/automatic.dm
+++ b/code/modules/projectiles/guns/projectile/automatic.dm
@@ -1,6 +1,6 @@
-/obj/item/weapon/gun/projectile/automatic //Hopefully someone will find a way to make these fire in bursts or something. --Superxpdude
- name = "submachine gun"
- desc = "Легкий, скорострельный пистолет-пулемёт. Использует патроны калибра 9мм."
+/obj/item/weapon/gun/projectile/automatic
+ name = "generic automatic gun"
+ desc = "О боже, вы не должны были видеть это!"
icon_state = "saber"
item_state = null
w_class = SIZE_SMALL
@@ -47,6 +47,8 @@
return ..()
/obj/item/weapon/gun/projectile/automatic/saber
+ name = "submachine gun"
+ desc = "Легкий, скорострельный пистолет-пулемёт. Использует патроны калибра 9мм."
spread_increase = 0.5
spread_max = 1.5
fire_delay = 0
diff --git a/maps/centcom/centcom.dmm b/maps/centcom/centcom.dmm
index be4149c678d9..2c6d0b6e89eb 100644
--- a/maps/centcom/centcom.dmm
+++ b/maps/centcom/centcom.dmm
@@ -14441,10 +14441,10 @@
/area/custom/wizard_station)
"aGr" = (
/obj/structure/rack,
-/obj/item/weapon/gun/projectile/automatic{
+/obj/item/weapon/gun/projectile/automatic/saber{
pixel_y = 6
},
-/obj/item/weapon/gun/projectile/automatic{
+/obj/item/weapon/gun/projectile/automatic/saber{
pixel_y = 3
},
/obj/item/weapon/gun/projectile/automatic/saber,
From 29f580f8921bb5986ce267b31e5b376163b595ee Mon Sep 17 00:00:00 2001
From: simb11 <84613249+simb11@users.noreply.github.com>
Date: Sat, 21 Sep 2024 15:32:54 +0200
Subject: [PATCH 9/9] rnd plasma cutter fix
---
code/modules/mining/mine_items.dm | 1 -
code/modules/research/prototipify.dm | 7 +++++++
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm
index aa6b432be1cb..d1e52bba2bea 100644
--- a/code/modules/mining/mine_items.dm
+++ b/code/modules/mining/mine_items.dm
@@ -697,7 +697,6 @@ var/global/mining_shuttle_location = 0 // 0 = station 13, 1 = mining station
if((iswallturf(target)) && (prob(destruction_chance)))
target.ex_act(EXPLODE_HEAVY)
-
/obj/item/weapon/gun/energy/laser/cutter/atom_init()
. = ..()
power_supply.AddComponent(/datum/component/cell_selfrecharge, 50)
diff --git a/code/modules/research/prototipify.dm b/code/modules/research/prototipify.dm
index 4ffc28fd3b01..d712c0f0ed61 100644
--- a/code/modules/research/prototipify.dm
+++ b/code/modules/research/prototipify.dm
@@ -92,6 +92,13 @@
power_supply.maxcharge /= 2
power_supply.charge = power_supply.maxcharge
+/obj/item/weapon/gun/energy/laser/cutter/set_prototype_qualities(rel_val=100, mark=0)
+ if(mark)
+ power_supply.maxcharge += (mark - 1) * 200
+ if(!prob(reliability))
+ power_supply.maxcharge /= 2
+ power_supply.charge = power_supply.maxcharge
+
/obj/item/weapon/gun/projectile/automatic/set_prototype_qualities(rel_val=100, mark=0)
if(mark)
recoil = max(recoil / mark, 0.5)