Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 6 additions & 0 deletions code/__DEFINES/ammo.dm
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,12 @@
#define CALIBER_ANY "anything even remotely ammolike"
#define CALIBER_BRICK "bricks"
#define CALIBER_FLINTLOCK "blackpowder charges"

//new defines
#define CALIBER_223 ".223 rounds"
#define CALIBER_38 ".38 rounds"
#define CALIBER_12G "12 gauge shells"

/// Caliber POW levels
/// for hobo guns scaling their explodiness to the casing fired
/// Heavier rounds than the gun can handle? more chance to POW
Expand Down
13 changes: 10 additions & 3 deletions code/__DEFINES/combat.dm
Original file line number Diff line number Diff line change
Expand Up @@ -379,9 +379,9 @@ GLOBAL_LIST_INIT(main_body_parts2words, list(
#define ARROW_SPEED_BASE (BULLET_SPEED_BASE / 3)

/// Bullet damage modifier defines
#define BULLET_MATCH_MULT_DAMAGE 1.25 // rare, pack a punch
#define BULLET_SURPLUS_MULT_DAMAGE 1 // standard ammo from an ammobench
#define BULLET_HANDLOAD_MULT_DAMAGE 0.75 // trash ammo you can make anywhere with a reloader tool, most common
#define BULLET_MATCH_MULT_DAMAGE 1.5 // rare, pack a punch
#define BULLET_SURPLUS_MULT_DAMAGE 1.25 // standard ammo from an ammobench
#define BULLET_HANDLOAD_MULT_DAMAGE 1 // trash ammo you can make anywhere with a reloader tool, most common

/// Bullet speed modifier defines
#define BULLET_MATCH_MULT_SPEED 2
Expand Down Expand Up @@ -442,6 +442,7 @@ GLOBAL_LIST_INIT(main_body_parts2words, list(

#define BULLET_DAMAGE_PISTOL_9MM 25
#define BULLET_DAMAGE_PISTOL_9MM_HANDLOAD (BULLET_DAMAGE_PISTOL_9MM * BULLET_HANDLOAD_MULT_DAMAGE)
#define BULLET_DAMAGE_PISTOL_9MM_SURPLUS (BULLET_DAMAGE_PISTOL_9MM * BULLET_SURPLUS_MULT_DAMAGE)
#define BULLET_DAMAGE_PISTOL_9MM_MATCH (BULLET_DAMAGE_PISTOL_9MM * BULLET_MATCH_MULT_DAMAGE)
#define BULLET_STAMINA_PISTOL_9MM (BULLET_DAMAGE_PISTOL_9MM * 0.5)
#define BULLET_RECOIL_PISTOL_9MM BULLET_RECOIL_PISTOL_SMALL
Expand All @@ -461,6 +462,7 @@ GLOBAL_LIST_INIT(main_body_parts2words, list(

#define BULLET_DAMAGE_PISTOL_45ACP 36
#define BULLET_DAMAGE_PISTOL_45ACP_HANDLOAD (BULLET_DAMAGE_PISTOL_45ACP * BULLET_HANDLOAD_MULT_DAMAGE)
#define BULLET_DAMAGE_PISTOL_45ACP_SURPLUS (BULLET_DAMAGE_PISTOL_45ACP * BULLET_SURPLUS_MULT_DAMAGE)
#define BULLET_DAMAGE_PISTOL_45ACP_MATCH (BULLET_DAMAGE_PISTOL_45ACP * BULLET_MATCH_MULT_DAMAGE)
#define BULLET_STAMINA_PISTOL_45ACP (BULLET_DAMAGE_PISTOL_45ACP * 0.5)
#define BULLET_RECOIL_PISTOL_45ACP BULLET_RECOIL_PISTOL_MEDIUM
Expand Down Expand Up @@ -575,6 +577,7 @@ GLOBAL_LIST_INIT(main_body_parts2words, list(

#define BULLET_DAMAGE_RIFLE_223 36
#define BULLET_DAMAGE_RIFLE_223_HANDLOAD (BULLET_DAMAGE_RIFLE_223 * BULLET_HANDLOAD_MULT_DAMAGE)
#define BULLET_DAMAGE_RIFLE_223_SURPLUS (BULLET_DAMAGE_RIFLE_223 * BULLET_SURPLUS_MULT_DAMAGE)
#define BULLET_DAMAGE_RIFLE_223_MATCH (BULLET_DAMAGE_RIFLE_223 * BULLET_MATCH_MULT_DAMAGE)
#define BULLET_STAMINA_RIFLE_223 (BULLET_DAMAGE_RIFLE_223 * 0.2)
#define BULLET_RECOIL_RIFLE_223 BULLET_RECOIL_RIFLE_SMALL
Expand Down Expand Up @@ -632,6 +635,7 @@ GLOBAL_LIST_INIT(main_body_parts2words, list(

#define BULLET_DAMAGE_RIFLE_308 45
#define BULLET_DAMAGE_RIFLE_308_HANDLOAD (BULLET_DAMAGE_RIFLE_308 * BULLET_HANDLOAD_MULT_DAMAGE)
#define BULLET_DAMAGE_RIFLE_308_SURPLUS (BULLET_DAMAGE_RIFLE_308 * BULLET_SURPLUS_MULT_DAMAGE)
#define BULLET_DAMAGE_RIFLE_308_MATCH (BULLET_DAMAGE_RIFLE_308 * BULLET_MATCH_MULT_DAMAGE)
#define BULLET_STAMINA_RIFLE_308 (BULLET_DAMAGE_RIFLE_308 * 0.5)
#define BULLET_RECOIL_RIFLE_308 BULLET_RECOIL_RIFLE_MEDIUM
Expand Down Expand Up @@ -731,6 +735,7 @@ GLOBAL_LIST_INIT(main_body_parts2words, list(
#define BULLET_DAMAGE_NEEDLER_PELLET 3 //will need revision when possible <-- Tox note
#define BULLET_DAMAGE_RATSHOT_PELLET 6 //six divides easily into the 36 damage of .357, and 60 damage of .45-70
#define BULLET_DAMAGE_SHOTGUN_PELLET_HANDLOAD (BULLET_DAMAGE_SHOTGUN_PELLET * BULLET_HANDLOAD_MULT_DAMAGE)
#define BULLET_DAMAGE_SHOTGUN_PELLET_SURPLUS (BULLET_DAMAGE_SHOTGUN_PELLET * BULLET_SURPLUS_MULT_DAMAGE)
#define BULLET_DAMAGE_SHOTGUN_PELLET_MATCH (BULLET_DAMAGE_SHOTGUN_PELLET * BULLET_MATCH_MULT_DAMAGE)
#define BULLET_STAMINA_SHOTGUN_PELLET (BULLET_DAMAGE_SHOTGUN_PELLET * 0.1)
#define BULLET_RECOIL_SHOTGUN_PELLET BULLET_RECOIL_SHOTGUN
Expand All @@ -750,6 +755,7 @@ GLOBAL_LIST_INIT(main_body_parts2words, list(

#define BULLET_DAMAGE_SHOTGUN_SLUG 60
#define BULLET_DAMAGE_SHOTGUN_SLUG_HANDLOAD (BULLET_DAMAGE_SHOTGUN_SLUG * BULLET_HANDLOAD_MULT_DAMAGE)
#define BULLET_DAMAGE_SHOTGUN_SLUG_SURPLUS (BULLET_DAMAGE_SHOTGUN_SLUG * BULLET_SURPLUS_MULT_DAMAGE)
#define BULLET_DAMAGE_SHOTGUN_SLUG_MATCH (BULLET_DAMAGE_SHOTGUN_SLUG * BULLET_MATCH_MULT_DAMAGE)
#define BULLET_STAMINA_SHOTGUN_SLUG (BULLET_DAMAGE_SHOTGUN_SLUG * 0.5)
#define BULLET_RECOIL_SHOTGUN_SLUG BULLET_RECOIL_SHOTGUN
Expand Down Expand Up @@ -1158,6 +1164,7 @@ GLOBAL_LIST_INIT(main_body_parts2words, list(
#define GUN_FIRE_RATE_200 RPM_TO_FIRE_DELAY(400) // 400 RPM = 1.5 deciseconds per shot
#define GUN_FIRE_RATE_300 RPM_TO_FIRE_DELAY(600) // 600 RPM = 1 deciseconds per shot
#define GUN_FIRE_RATE_400 RPM_TO_FIRE_DELAY(800) // 800 RPM = 0.75 deciseconds per shot
#define GUN_FIRE_RATE_500 RPM_TO_FIRE_DELAY(1000) //1000 RPM = 0.6 deciseconds per shot
#define GUN_FIRE_RATE_600 RPM_TO_FIRE_DELAY(1200) // 1200 RPM = 0.5 decisecond per shot
#define GUN_FIRE_RATE_800 RPM_TO_FIRE_DELAY(1600) // 1600 RPM = 0.375 deciseconds per shot
#define GUN_FIRE_RATE_1000 RPM_TO_FIRE_DELAY(2000) // 2000 RPM = 0.3 deciseconds per shot
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items.dm
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
var/list/hud_actions

var/list/item_upgrades = list()
var/max_upgrades = 5 // was three now five because the amount of mods you need/want has significantly increased. Love you!
var/max_upgrades = 3 // was three now five because the amount of mods you need/want has significantly increased. Love you!

/// extra special transform
var/matrix/special_transform
Expand Down
2 changes: 1 addition & 1 deletion code/modules/jobs/job_types/tribals.dm
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
ADD_TRAIT(H, TRAIT_GENERIC, src)
ADD_TRAIT(H, TRAIT_MACHINE_SPIRITS, src)
H.grant_language(/datum/language/tribal)
for(var/datum/crafting_recipe/recipe as() in GLOB.tribal_job_recipes)
for(var/datum/crafting_recipe/recipe in GLOB.tribal_job_recipes)
H.mind.teach_crafting_recipe(recipe)

/*
Expand Down
2 changes: 1 addition & 1 deletion code/modules/jobs/job_types/wasteland.dm
Original file line number Diff line number Diff line change
Expand Up @@ -460,7 +460,7 @@ Raider
..()
if(visualsOnly)
return
for(var/datum/crafting_recipe/recipe as() in GLOB.tribal_job_recipes)
for(var/datum/crafting_recipe/recipe in GLOB.tribal_job_recipes)
H.mind.teach_crafting_recipe(recipe)
H.grant_language(/datum/language/tribal)
add_verb(H, /mob/living/proc/create_tribe)
Expand Down
1 change: 1 addition & 0 deletions code/modules/projectiles/fuzammo/ammo_arrow/arrow_ammo.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
// arrow is the standard ofc
Empty file.
271 changes: 271 additions & 0 deletions code/modules/projectiles/fuzammo/ammo_shotgun/shotgun_ammo.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,271 @@
// 12 gauge is the standard


///////////////////////////////
////////// 12 gauge ammo //////////
///////////////////////////////

///////////////casing///////////////

/obj/item/ammo_casing/a12g
name = "handloaded 12 gauge slug shell"
desc = "A low-power 12 gauge slug shell."
icon_state = "gshell"
caliber = CALIBER_12G
projectile_type = /obj/item/projectile/bullet/a12g
material_class = BULLET_IS_SHOTGUN
custom_materials = list(
/datum/material/iron = MATS_SHOTGUN_CASING + MATS_SHOTGUN_BULLET,
/datum/material/blackpowder = MATS_SHOTGUN_POWDER)
fire_power = CASING_POWER_SHOTGUN * CASING_POWER_MOD_HANDLOAD
sound_properties = CSP_SHOTGUN

/obj/item/ammo_casing/a12g/buck
name = "handloaded 12 gauge buckshot shell"
desc = "A low-power 12 gauge buckshot shell."
icon_state = "bbshell"
caliber = CALIBER_12G
projectile_type = /obj/item/projectile/bullet/a12g/buck
material_class = BULLET_IS_SHOTGUN
custom_materials = list(
/datum/material/iron = MATS_SHOTGUN_CASING + MATS_SHOTGUN_BULLET,
/datum/material/blackpowder = MATS_SHOTGUN_POWDER)
fire_power = CASING_POWER_SHOTGUN * CASING_POWER_MOD_HANDLOAD
sound_properties = CSP_SHOTGUN

/obj/item/ammo_casing/a12g/q2
name = "12 gauge slug shell"
desc = "A 12 gauge slug shell."
projectile_type = /obj/item/projectile/bullet/a12g/q2
custom_materials = list(
/datum/material/iron = MATS_SHOTGUN_CASING + MATS_SHOTGUN_BULLET,
/datum/material/blackpowder = MATS_SHOTGUN_POWDER)
fire_power = CASING_POWER_SHOTGUN * CASING_POWER_MOD_SURPLUS

/obj/item/ammo_casing/a12g/buck/q2
name = "12 gauge buckshot shell"
desc = "A 12 gauge buckshot shell."
projectile_type = /obj/item/projectile/bullet/a12g/buck/q2
custom_materials = list(
/datum/material/iron = MATS_SHOTGUN_CASING + MATS_SHOTGUN_BULLET,
/datum/material/blackpowder = MATS_SHOTGUN_POWDER)
fire_power = CASING_POWER_SHOTGUN * CASING_POWER_MOD_SURPLUS

/obj/item/ammo_casing/a12g/q3
name = "magnum 12 gauge slug shell"
desc = "A high-grade 12 gauge slug shell."
projectile_type = /obj/item/projectile/bullet/a12g/q3
custom_materials = list(
/datum/material/iron = MATS_SHOTGUN_CASING + MATS_SHOTGUN_BULLET,
/datum/material/blackpowder = MATS_SHOTGUN_POWDER)
fire_power = CASING_POWER_SHOTGUN * CASING_POWER_MOD_MATCH

/obj/item/ammo_casing/a12g/buck/q3
name = "magnum 12 gauge buckshot shell"
desc = "A high-grade 12 gauge buckshot shell."
projectile_type = /obj/item/projectile/bullet/a12g/buck/q3
custom_materials = list(
/datum/material/iron = MATS_SHOTGUN_CASING + MATS_SHOTGUN_BULLET,
/datum/material/blackpowder = MATS_SHOTGUN_POWDER)
fire_power = CASING_POWER_SHOTGUN * CASING_POWER_MOD_MATCH

///////////////bullet///////////////

/obj/item/projectile/bullet/a12g
name = "12 gauge slug"
damage = BULLET_DAMAGE_SHOTGUN_SLUG_HANDLOAD
damage_list = list("30" = 30, "36" = 30, "40" = 30, "41" = 2, "42" = 2, "43" = 2, "44" = 2, "45" = 1, "50" = 0.5, "55" = 0.5)
stamina = BULLET_STAMINA_SHOTGUN_SLUG // needs a proper define later
spread = BULLET_SPREAD_HANDLOAD
recoil = BULLET_RECOIL_SHOTGUN_SLUG

wound_bonus = BULLET_WOUND_SHOTGUN_SLUG
bare_wound_bonus = BULLET_WOUND_SHOTGUN_SLUG_NAKED_MULT
wound_falloff_tile = BULLET_WOUND_FALLOFF_SHOTGUN_SLUG

pixels_per_second = BULLET_SPEED_SHOTGUN_SLUG
damage_falloff = BULLET_FALLOFF_DEFAULT_SHOTGUN_SLUG

/obj/item/projectile/bullet/a12g/q2
damage = BULLET_DAMAGE_SHOTGUN_SLUG_SURPLUS
spread = BULLET_SPREAD_SURPLUS

/obj/item/projectile/bullet/a12g/q3
damage = BULLET_DAMAGE_SHOTGUN_SLUG_MATCH
spread = BULLET_SPREAD_MATCH

/obj/item/projectile/bullet/a12g/buck
name = "12 gauge buckshot"
damage = BULLET_DAMAGE_SHOTGUN_PELLET_HANDLOAD
damage_list = list("30" = 30, "36" = 30, "40" = 30, "41" = 2, "42" = 2, "43" = 2, "44" = 2, "45" = 1, "50" = 0.5, "55" = 0.5)
stamina = BULLET_STAMINA_SHOTGUN_PELLET // needs a proper define later
spread = BULLET_SPREAD_HANDLOAD
recoil = BULLET_RECOIL_SHOTGUN_PELLET

wound_bonus = BULLET_WOUND_SHOTGUN_PELLET
bare_wound_bonus = BULLET_WOUND_SHOTGUN_PELLET_NAKED_MULT
wound_falloff_tile = BULLET_WOUND_FALLOFF_SHOTGUN_PELLET

pixels_per_second = BULLET_SPEED_SHOTGUN_PELLET
damage_falloff = BULLET_FALLOFF_DEFAULT_SHOTGUN_PELLET

/obj/item/projectile/bullet/a12g/buck/q2
damage = BULLET_DAMAGE_SHOTGUN_PELLET_SURPLUS
spread = BULLET_SPREAD_SURPLUS

/obj/item/projectile/bullet/a12g/buck/q3
damage = BULLET_DAMAGE_SHOTGUN_PELLET_MATCH
spread = BULLET_SPREAD_MATCH

///////////////ammo box///////////////

/obj/item/ammo_box/a12g
name = "12 gauge slug box (handload)"
icon = 'icons/fallout/objects/guns/ammo.dmi'
icon_state = "gbox"
multiple_sprites = 3 // I think this is right?
caliber = list(CALIBER_12G)
ammo_type = /obj/item/ammo_casing/a12g
max_ammo = 20 // don't change this for new calibers
w_class = WEIGHT_CLASS_SMALL
custom_materials = list(/datum/material/iron = MATS_RIFLE_SMALL_BOX)
randomize_ammo_count = FALSE

/obj/item/ammo_box/a12g/q2
name = "12 gauge slug box (standard)"
ammo_type = /obj/item/ammo_casing/a12g/q2

/obj/item/ammo_box/a12g/q3
name = "12 gauge slug box (magnum)"
ammo_type = /obj/item/ammo_casing/a12g/q3

/obj/item/ammo_box/a12g/buck
name = "12 gauge buckshot box (handload)"
icon_state = "lbox"
ammo_type = /obj/item/ammo_casing/a12g/buck

/obj/item/ammo_box/a12g/buck/q2
name = "12 gauge buckshot box (standard)"
ammo_type = /obj/item/ammo_casing/a12g/buck/q2

/obj/item/ammo_box/a12g/buck/q3
name = "12 gauge buckshot box (magnum)"
ammo_type = /obj/item/ammo_casing/a12g/buck/q3

///////////////ammo crate///////////////

/obj/item/ammo_box/a12g/crate
name = "12 gauge slug crate (handload)"
desc = "A wooden crate of ammo."
icon = 'modular_coyote/icons/objects/c13ammo.dmi'
icon_state = "wood_ammobox"
w_class = WEIGHT_CLASS_HUGE // don't you dare make this any smaller!
multiple_sprites = 4
max_ammo = 120 // don't change this for new calibers
load_behavior = AMMOB_CRATE

/obj/item/ammo_box/a12g/crate/q2
name = "12 gauge slug crate (standard)"
ammo_type = /obj/item/ammo_casing/a12g/q2

/obj/item/ammo_box/a12g/crate/q3
name = "12 gauge slug crate (magnum)"
ammo_type = /obj/item/ammo_casing/a12g/q3

/obj/item/ammo_box/a12g/buck/crate
name = "12 gauge buckshot crate (handload)"
desc = "A wooden crate of ammo."
icon = 'modular_coyote/icons/objects/c13ammo.dmi'
icon_state = "wood_ammobox"
w_class = WEIGHT_CLASS_HUGE // don't you dare make this any smaller!
multiple_sprites = 4
max_ammo = 120 // don't change this for new calibers
load_behavior = AMMOB_CRATE

/obj/item/ammo_box/a12g/buck/crate/q2
name = "12 gauge buckshot crate (standard)"
ammo_type = /obj/item/ammo_casing/a12g/buck/q2

/obj/item/ammo_box/a12g/buck/crate/q3
name = "12 gauge buckshot crate (magnum)"
ammo_type = /obj/item/ammo_casing/a12g/buck/q3

///////////////ammo box recipe///////////////

/datum/design/ammolathe/a12g
name = "12 gauge slug box (handload)"
id = "a12g"
build_path = /obj/item/ammo_box/a12g
category = list("initial", "Basic Ammo")

/datum/design/ammolathe/a12g2
name = "12 gauge slug box (standard)"
id = "a12g2"
build_path = /obj/item/ammo_box/a12g/q2
category = list("initial", "Basic Ammo")

/datum/design/ammolathe/a12g3
name = "12 gauge slug box (magnum)"
id = "a12g3"
build_path = /obj/item/ammo_box/a12g/q3
category = list("initial", "Basic Ammo")

/datum/design/ammolathe/a12gb
name = "12 gauge buckshot box (handload)"
id = "a12gb"
build_path = /obj/item/ammo_box/a12g/buck
category = list("initial", "Basic Ammo")

/datum/design/ammolathe/a12gb2
name = "12 gauge buckshot box (standard)"
id = "a12gb2"
build_path = /obj/item/ammo_box/a12g/buck/q2
category = list("initial", "Basic Ammo")

/datum/design/ammolathe/a12gb3
name = "12 gauge buckshot box (magnum)"
id = "a12gb3"
build_path = /obj/item/ammo_box/a12g/buck/q3
category = list("initial", "Basic Ammo")

///////////////ammo crate recipe///////////////

/datum/design/ammolathe/a12gcrate
name = "12 gauge slug crate (handload)"
id = "a12gcrate"
build_path = /obj/item/ammo_box/a12g/crate
category = list("initial", "Basic ammo")

/datum/design/ammolathe/a12gcrate2
name = "12 gauge slug crate (standard)"
id = "a12gcrate2"
build_path = /obj/item/ammo_box/a12g/crate/q2
category = list("initial", "Basic ammo")

/datum/design/ammolathe/a12gcrate3
name = "12 gauge slug crate (magnum)"
id = "a12gcrate3"
build_path = /obj/item/ammo_box/a12g/crate/q3
category = list("initial", "Basic ammo")

/datum/design/ammolathe/a12gbcrate
name = "12 gauge buckshot crate (handload)"
id = "a12gbcrate"
build_path = /obj/item/ammo_box/a12g/buck/crate
category = list("initial", "Basic ammo")

/datum/design/ammolathe/a12gbcrate2
name = "12 gauge buckshot crate (standard)"
id = "a12gbcrate2"
build_path = /obj/item/ammo_box/a12g/buck/crate/q2
category = list("initial", "Basic ammo")

/datum/design/ammolathe/a12gbcrate3
name = "12 gauge buckshot crate (magnum)"
id = "a12gbcrate3"
build_path = /obj/item/ammo_box/a12g/buck/crate/q3
category = list("initial", "Basic ammo")




Empty file.
Loading
Loading