Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
b93e99e
we love clutter
Nihisohel May 31, 2025
4b351af
oh nanu if you hear me please approve my pr
Nihisohel May 31, 2025
3e2e6cf
we love map linters
Nihisohel May 31, 2025
19e902b
Update casings.dm
Nihisohel May 31, 2025
dcf1daf
Update casings.dm
Nihisohel May 31, 2025
088b3cd
fix for real holy shit
Nihisohel May 31, 2025
90aac72
Update code/datums/ammo/ammo.dm
Nihisohel Jun 5, 2025
4fbd9f3
Update code/modules/projectiles/gun.dm
Nihisohel Jun 5, 2025
e25bc57
Merge remote-tracking branch 'upstream/master' into casing-man
Nihisohel Oct 31, 2025
b8abafc
50/50
Nihisohel Oct 31, 2025
5668761
Update casings.dm
Nihisohel Oct 31, 2025
7156be9
linters
Nihisohel Oct 31, 2025
4f0ed8f
linters please
Nihisohel Oct 31, 2025
7b46d16
twe p90 thing
Nihisohel Nov 1, 2025
23bcab7
Create 9404-casing-potatochip.txt
Nihisohel Nov 1, 2025
be74df6
oops
Nihisohel Nov 1, 2025
383420c
much better ejection performance
Nihisohel Nov 1, 2025
91106a1
twobore stuff part 1
Nihisohel Nov 1, 2025
0cfa4d8
a
Nihisohel Nov 1, 2025
abf10f6
a
Nihisohel Nov 1, 2025
e069250
matrix based ejection direction
Nihisohel Nov 1, 2025
7a7fbfc
Bouncing Shell Casings (Various Sizes) freesound_community
Nihisohel Nov 1, 2025
4c85cc2
fixes
Nihisohel Nov 1, 2025
ab3584a
more casings, pb fix
Nihisohel Nov 2, 2025
d562725
layer fix oh my god
Nihisohel Nov 4, 2025
e9006f1
m1911c fix, execution fix, etc etc etc
Nihisohel Nov 6, 2025
538aace
Merge branch 'master' into casing-man
Nihisohel Nov 30, 2025
dc2c205
Merge remote-tracking branch 'upstream/master' into casing-man
Nihisohel Dec 13, 2025
eebae9b
oops
Nihisohel Dec 13, 2025
c59ba35
Merge remote-tracking branch 'upstream/master' into casing-man
Nihisohel Jan 19, 2026
1d97201
map
Nihisohel Jan 19, 2026
448bf01
map stuff
Nihisohel Jan 19, 2026
afdd526
Merge remote-tracking branch 'upstream/master' into casing-man
Nihisohel Feb 18, 2026
467bef9
the great mappening stuff
Nihisohel Feb 18, 2026
9dc4013
second one too
Nihisohel Feb 18, 2026
8fab168
god forbid
Nihisohel Feb 18, 2026
d0cd016
full map revertion
Nihisohel Feb 18, 2026
afa4ad2
become cleanable
Nihisohel Feb 18, 2026
662bea6
map cleanable
Nihisohel Feb 18, 2026
41dcf4e
no such thing as bullet bro
Nihisohel Feb 18, 2026
213ba11
Revert "no such thing as bullet bro"
Nihisohel Feb 18, 2026
1fcebfd
Reapply "no such thing as bullet bro"
Nihisohel Feb 18, 2026
0779d13
Update 10.bar_resin.dmm
Nihisohel Feb 18, 2026
9ff0ae5
fix for accurate casings
Nihisohel Feb 18, 2026
41224a8
surely
Nihisohel Feb 18, 2026
ab36952
more map shenanigans
Nihisohel Feb 18, 2026
fce8080
Merge remote-tracking branch 'upstream/master' into casing-man
Nihisohel Feb 22, 2026
b9d2fe3
map
Nihisohel Feb 22, 2026
6ceb0d0
man
Nihisohel Feb 22, 2026
964afcf
Merge remote-tracking branch 'upstream/master' into casing-man
Nihisohel Feb 28, 2026
d316e2c
overlap port + cleaning
Nihisohel Feb 28, 2026
b4c067e
sprites
Nihisohel Mar 2, 2026
70c1c51
lol
Nihisohel Mar 2, 2026
fb280d4
Merge remote-tracking branch 'upstream/master' into casing-man
Nihisohel Jun 22, 2026
68c2a37
merge conflict markers bruh
Nihisohel Jun 22, 2026
e48e00f
how did i delete this
Nihisohel Jun 22, 2026
c656669
yellow tape around his body
Nihisohel Jun 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions code/__DEFINES/conflict.dm
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,10 @@
#define GUN_SUPPORT_PLATFORM (1<<16)
/// No gun description, only base desc
#define GUN_NO_DESCRIPTION (1<<17)
/// If it can automatically eject shell casings
#define GUN_AUTO_EJECT_CASINGS (1<<18)
/// If it needs to manually eject shell casings (like bolt actions)
#define GUN_MANUAL_EJECT_CASINGS (1<<19)
// NOTE: Don't add flags past 1<<23, it'll break things due to BYOND limitations. You can usually use a Component instead.

#define USES_STREAKS (1<<0)
Expand Down
3 changes: 3 additions & 0 deletions code/datums/ammo/ammo.dm
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,9 @@
/// Whether or not this ammo ignores mobs that are lying down
var/hits_lying_mobs = FALSE

/// Type of empty shell casing
var/shell_casing

/datum/ammo/New()
set_bullet_traits()

Expand Down
1 change: 1 addition & 0 deletions code/datums/ammo/bullet/lever_action.dm
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
accurate_range = 14
effective_range_max = 7
handful_state = "lever_action_bullet"
shell_casing = /obj/effect/decal/cleanable/ammo_casing/cartridge/lever_action

//unused and not working. need to refactor MD code. Unobtainable.
//intended mechanic is to have xenos hit with it show up very frequently on any MDs around
Expand Down
2 changes: 2 additions & 0 deletions code/datums/ammo/bullet/pistol.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
damage = 40
penetration= ARMOR_PENETRATION_TIER_2
shrapnel_chance = SHRAPNEL_CHANCE_TIER_2
shell_casing = /obj/effect/decal/cleanable/ammo_casing

/datum/ammo/bullet/pistol/setup_faction_clash_values()
. = ..()
Expand Down Expand Up @@ -107,6 +108,7 @@
hit_effect_color = "#00aeff"
stamina_damage = 30
accuracy = HIT_ACCURACY_TIER_4
shell_casing = null

// Used by M1911 and KT-42
/datum/ammo/bullet/pistol/heavy
Expand Down
2 changes: 2 additions & 0 deletions code/datums/ammo/bullet/revolver.dm
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
damage = 72
penetration = ARMOR_PENETRATION_TIER_1
accuracy = HIT_ACCURACY_TIER_1
shell_casing = /obj/effect/decal/cleanable/ammo_casing

/datum/ammo/bullet/revolver/marksman
name = "marksman revolver bullet"
Expand Down Expand Up @@ -90,6 +91,7 @@
icon_state = "shrapnelshot"
handful_state = "shrapnel"
bonus_projectiles_type = /datum/ammo/bullet/revolver/upp/shrapnel_bits
shell_casing = /obj/effect/decal/cleanable/ammo_casing/shrapnel

max_range = 6
damage = 40 // + TIER_4 * 3
Expand Down
2 changes: 1 addition & 1 deletion code/datums/ammo/bullet/rifle.dm
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
effective_range_max = 7
damage_falloff = DAMAGE_FALLOFF_TIER_7
max_range = 24 //So S8 users don't have their bullets magically disappaer at 22 tiles (S8 can see 24 tiles)
shell_casing = /obj/effect/decal/cleanable/ammo_casing/cartridge

/datum/ammo/bullet/rifle/holo_target
name = "holo-targeting rifle bullet"
Expand Down Expand Up @@ -222,7 +223,6 @@

/datum/ammo/bullet/rifle/mar40
name = "heavy rifle bullet"

damage = 55

/datum/ammo/bullet/rifle/type71
Expand Down
17 changes: 17 additions & 0 deletions code/datums/ammo/bullet/shotgun.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

/datum/ammo/bullet/shotgun
headshot_state = HEADSHOT_OVERLAY_HEAVY
shell_casing = /obj/effect/decal/cleanable/ammo_casing/shell // safe to assume that most shotguns will have a casing

/datum/ammo/bullet/shotgun/setup_faction_clash_values()
. = ..()
Expand All @@ -23,6 +24,7 @@
accuracy = HIT_ACCURACY_TIER_3
damage_armor_punch = 2
handful_state = "slug_shell"
shell_casing = /obj/effect/decal/cleanable/ammo_casing/shell/green_shell

/datum/ammo/bullet/shotgun/slug/on_hit_mob(mob/M,obj/projectile/P)
knockback(M, P, 6)
Expand Down Expand Up @@ -53,6 +55,7 @@
damage = 60
penetration = ARMOR_PENETRATION_TIER_8
accuracy = HIT_ACCURACY_TIER_5
shell_casing = /obj/effect/decal/cleanable/ammo_casing/shell/es7_slug

/datum/ammo/bullet/shotgun/beanbag
name = "beanbag slug"
Expand All @@ -69,6 +72,7 @@
accuracy = HIT_ACCURACY_TIER_3
shell_speed = AMMO_SPEED_TIER_3
handful_state = "beanbag_slug"
shell_casing = /obj/effect/decal/cleanable/ammo_casing/shell/blue_shell

/datum/ammo/bullet/shotgun/beanbag/on_hit_mob(mob/M, obj/projectile/P)
if(!M || M == P.firer)
Expand All @@ -95,6 +99,7 @@
accuracy = HIT_ACCURACY_TIER_3
shell_speed = AMMO_SPEED_TIER_4
handful_state = "shock_slug"
shell_casing = /obj/effect/decal/cleanable/ammo_casing/shell/es7_shock

/datum/ammo/bullet/shotgun/beanbag/es7/on_hit_mob(mob/mobs, obj/projectile/P)
if(!isyautja(mobs) && !isxeno(mobs))
Expand All @@ -117,6 +122,7 @@
damage = 55
penetration= ARMOR_PENETRATION_TIER_1
handful_state = "incendiary_slug"
shell_casing = /obj/effect/decal/cleanable/ammo_casing/shell/incen_slug

/datum/ammo/bullet/shotgun/incendiary/set_bullet_traits()
. = ..()
Expand Down Expand Up @@ -151,6 +157,7 @@
bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_3
handful_state = "flechette_shell"
multiple_handful_name = TRUE
shell_casing = /obj/effect/decal/cleanable/ammo_casing/shell/purple_shell

/datum/ammo/bullet/shotgun/flechette/setup_faction_clash_values()
. = ..()
Expand Down Expand Up @@ -194,11 +201,13 @@
pen_armor_punch = 0
handful_state = "buckshot_shell"
multiple_handful_name = TRUE
shell_casing = /obj/effect/decal/cleanable/ammo_casing/shell/red_shell

/datum/ammo/bullet/shotgun/buckshot/incendiary
name = "incendiary buckshot shell"
handful_state = "incen_buckshot"
handful_type = /obj/item/ammo_magazine/handful/shotgun/buckshot/incendiary
shell_casing = /obj/effect/decal/cleanable/ammo_casing/shell/incen_shell

/datum/ammo/bullet/shotgun/buckshot/incendiary/set_bullet_traits()
. = ..()
Expand Down Expand Up @@ -263,6 +272,7 @@
shell_speed = AMMO_SPEED_TIER_2
damage_armor_punch = 0
pen_armor_punch = 0
shell_casing = /obj/effect/decal/cleanable/ammo_casing/shell/heavy

/datum/ammo/bullet/shotgun/heavy/buckshot/on_hit_mob(mob/M,obj/projectile/P)
knockback(M,P)
Expand All @@ -283,6 +293,7 @@
accurate_range = 3
max_range = 4
bonus_projectiles_type = /datum/ammo/bullet/shotgun/heavy/buckshot/dragonsbreath/spread
shell_casing = /obj/effect/decal/cleanable/ammo_casing/shell/heavy/incen_shell

/datum/ammo/bullet/shotgun/heavy/buckshot/dragonsbreath/set_bullet_traits()
. = ..()
Expand All @@ -307,6 +318,7 @@
damage = 90 //ouch.
penetration = ARMOR_PENETRATION_TIER_6
damage_armor_punch = 2
shell_casing = /obj/effect/decal/cleanable/ammo_casing/shell/heavy/green_shell

/datum/ammo/bullet/shotgun/heavy/slug/on_hit_mob(mob/M,obj/projectile/P)
knockback(M, P, 7)
Expand Down Expand Up @@ -340,6 +352,7 @@
stamina_damage = 100
accuracy = HIT_ACCURACY_TIER_2
shell_speed = AMMO_SPEED_TIER_2
shell_casing = /obj/effect/decal/cleanable/ammo_casing/shell/heavy/blue_shell

/datum/ammo/bullet/shotgun/heavy/beanbag/on_hit_mob(mob/M, obj/projectile/P)
if(!M || M == P.firer)
Expand All @@ -363,6 +376,7 @@
damage_var_high = PROJECTILE_VARIANCE_TIER_8
penetration = ARMOR_PENETRATION_TIER_10
bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_2
shell_casing = /obj/effect/decal/cleanable/ammo_casing/shell/heavy/purple_shell

/datum/ammo/bullet/shotgun/heavy/flechette/setup_faction_clash_values()
. = ..()
Expand Down Expand Up @@ -394,6 +408,7 @@
handful_state = "breaching_shell"
multiple_handful_name = TRUE
bonus_projectiles_type = /datum/ammo/bullet/shotgun/light/breaching/spread
shell_casing = /obj/effect/decal/cleanable/ammo_casing/shell/light

accuracy_var_low = PROJECTILE_VARIANCE_TIER_6
accuracy_var_high = PROJECTILE_VARIANCE_TIER_6
Expand Down Expand Up @@ -426,6 +441,7 @@
stamina_damage = 35
bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_3
penetration = ARMOR_PENETRATION_TIER_1
shell_casing = /obj/effect/decal/cleanable/ammo_casing/shell/light/rubbershot

/datum/ammo/bullet/shotgun/light/rubber/spread
name = "additional rubber buckshot"
Expand All @@ -446,6 +462,7 @@
penetration = ARMOR_PENETRATION_TIER_3
damage_falloff = DAMAGE_FALLOFF_TIER_1 * 3 //It has a lot of energy, but the 26mm bullet drops off fast.
effective_range_max = EFFECTIVE_RANGE_MAX_TIER_2 //Full damage up to this distance, then falloff for each tile beyond.
shell_casing = /obj/effect/decal/cleanable/ammo_casing/shell/twobore_shell
var/hit_messages = list()

/datum/ammo/bullet/shotgun/twobore/on_hit_mob(mob/living/M, obj/projectile/P)
Expand Down
1 change: 1 addition & 0 deletions code/datums/ammo/bullet/smg.dm
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
damage_falloff = DAMAGE_FALLOFF_TIER_5
scatter = SCATTER_AMOUNT_TIER_6
accuracy = HIT_ACCURACY_TIER_3
shell_casing = /obj/effect/decal/cleanable/ammo_casing

/datum/ammo/bullet/smg/m39
name = "high-velocity submachinegun bullet" //i don't want all smgs to inherit 'high velocity'
Expand Down
5 changes: 5 additions & 0 deletions code/datums/ammo/bullet/sniper.dm
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
name = "crude sniper bullet"
damage = 42
penetration = ARMOR_PENETRATION_TIER_6
shell_casing = /obj/effect/decal/cleanable/ammo_casing/cartridge

/datum/ammo/bullet/sniper/crude/on_hit_mob(mob/M, obj/projectile/P)
. = ..()
Expand All @@ -98,6 +99,7 @@
name = "armor-piercing sniper bullet"
damage = 80
penetration = ARMOR_PENETRATION_TIER_10
shell_casing = /obj/effect/decal/cleanable/ammo_casing/cartridge //traditionally, SVDs use casings

/datum/ammo/bullet/sniper/anti_materiel
name = "anti-materiel sniper bullet"
Expand All @@ -107,6 +109,7 @@
damage = 125
shell_speed = AMMO_SPEED_TIER_6
penetration = ARMOR_PENETRATION_TIER_10 + ARMOR_PENETRATION_TIER_5
shell_casing = /obj/effect/decal/cleanable/ammo_casing/cartridge // I would be surprised if something as powerful as this would not need a casing

/datum/ammo/bullet/sniper/anti_materiel/proc/stopping_power_knockback(mob/living/living_mob, obj/projectile/fired_projectile)
var/stopping_power = min(CEILING((fired_projectile.damage/30), 1), 5) // This is from bullet damage, and does not take Aimed Shot into account.
Expand Down Expand Up @@ -275,6 +278,7 @@
handful_state = "vulture_bullet"
sound_hit = 'sound/bullets/bullet_vulture_impact.ogg'
flags_ammo_behavior = AMMO_BALLISTIC|AMMO_SNIPER|AMMO_IGNORE_COVER|AMMO_ANTIVEHICLE
shell_casing = /obj/effect/decal/cleanable/ammo_casing/cartridge

/datum/ammo/bullet/sniper/anti_materiel/vulture/on_hit_mob(mob/hit_mob, obj/projectile/bullet)
. = ..()
Expand Down Expand Up @@ -317,6 +321,7 @@
damage = 150
shell_speed = AMMO_SPEED_TIER_6 + AMMO_SPEED_TIER_2
penetration = ARMOR_PENETRATION_TIER_10 + ARMOR_PENETRATION_TIER_5
shell_casing = /obj/effect/decal/cleanable/ammo_casing/cartridge

/datum/ammo/bullet/sniper/elite/set_bullet_traits()
. = ..()
Expand Down
2 changes: 2 additions & 0 deletions code/datums/ammo/bullet/special_ammo.dm
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,7 @@
accurate_range = 12
damage = 35
penetration = ARMOR_PENETRATION_TIER_6
shell_casing = /obj/effect/decal/cleanable/ammo_casing/cartridge

/datum/ammo/bullet/minigun/New()
..()
Expand All @@ -266,6 +267,7 @@
damage = 45 //7.62x51 is scary
penetration= ARMOR_PENETRATION_TIER_6
shrapnel_chance = SHRAPNEL_CHANCE_TIER_2
shell_casing = /obj/effect/decal/cleanable/ammo_casing/cartridge

/datum/ammo/bullet/pkp
name = "machinegun bullet"
Expand Down
Loading