Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add: New weapon & caliber - .35 Wespe pistol #1117

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 4 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
1 change: 1 addition & 0 deletions modular_bandastation/_defines220/_defines220.dme
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include "code/defines/spans.dm"
#include "code/defines/subsystems.dm"
#include "code/defines/text_to_speech.dm"
#include "code/defines/calibers.dm"
#include "code/signals_mob/signals_mob_ai.dm"
#include "code/signals_mob/signals_mob_carbon.dm"
#include "code/signals_mob/signals_mob_living.dm"
Expand Down
1 change: 1 addition & 0 deletions modular_bandastation/_defines220/code/defines/calibers.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#define CALIBER_SOL35SHORT ".35 Sol Short"
2 changes: 2 additions & 0 deletions modular_bandastation/objects/_objects.dme
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@
#include "code/items/weapons/melee/centcom/rapier.dm"
#include "code/items/weapons/ranged/energy/awaymission_gun.dm"
#include "code/items/weapons/ranged/energy/eg_14.dm"
#include "code/items/weapons/ranged/ballistic/wespe.dm"
#include "code/items/weapons/ranged/ballistic/ammo.dm"

#include "code/machinery/papershredder.dm"
#include "code/machinery/photocopier.dm"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,201 @@
/obj/item/ammo_casing/c35sol
name = ".35 Sol Short lethal bullet casing"
desc = "A SolFed standard lethal pistol round."
icon = 'modular_bandastation/objects/icons/obj/weapons/guns/ammo.dmi'
icon_state = "35sol"
caliber = CALIBER_SOL35SHORT
projectile_type = /obj/projectile/bullet/c35sol

/obj/projectile/bullet/c35sol
name = ".35 Sol Short bullet"
damage = 15
wound_bonus = -5 // Normal bullets are 20
bare_wound_bonus = 5
embed_falloff_tile = -4

/obj/item/ammo_box/c35sol
name = "ammo box (.35 Sol Short lethal)"
desc = "A box of .35 Sol Short lethal pistol rounds, holds twenty-four rounds."
icon = 'modular_bandastation/objects/icons/obj/weapons/guns/ammo.dmi'
icon_state = "35box"
multiple_sprites = AMMO_BOX_FULL_EMPTY
w_class = WEIGHT_CLASS_NORMAL
caliber = CALIBER_SOL35SHORT
ammo_type = /obj/item/ammo_casing/c35sol
max_ammo = 24

/obj/item/ammo_casing/c35sol/rubber
name = ".35 Sol Short rubber bullet casing"
desc = "A SolFed standard less-lethal pistol round. Exhausts targets on hit, has a tendency to bounce off walls at shallow angles."
icon = 'modular_bandastation/objects/icons/obj/weapons/guns/ammo.dmi'
icon_state = "35sol_disabler"
projectile_type = /obj/projectile/bullet/c35sol/rubber
harmful = FALSE


/obj/projectile/bullet/c35sol/rubber
name = ".35 Sol Short rubber bullet"
damage = 5
stamina = 20
wound_bonus = -40
bare_wound_bonus = -20
weak_against_armour = TRUE

// The stats of the ricochet are a nerfed version of detective revolver rubber ammo
// This is due to the fact that there's a lot more rounds fired quickly from weapons that use this, over a revolver
ricochet_auto_aim_angle = 30
ricochet_auto_aim_range = 5
ricochets_max = 4
ricochet_incidence_leeway = 50
ricochet_chance = 130
ricochet_decay_damage = 0.8
shrapnel_type = null
sharpness = NONE
embed_type = null


/obj/item/ammo_box/c35sol/rubber
name = "ammo box (.35 Sol Short rubber)"
desc = "A box of .35 Sol Short less-lethal pistol rounds, holds twenty-four rounds. The blue stripe indicates this should hold less-lethal ammunition."
icon_state = "35box_disabler"
ammo_type = /obj/item/ammo_casing/c35sol/rubber


// .35 Sol ripper, similar to the detective revolver's dumdum rounds, causes slash wounds and is weak to armor

/obj/item/ammo_casing/c35sol/ripper
name = ".35 Sol Short ripper bullet casing"
desc = "A SolFed standard ripper pistol round. Causes slashing wounds on targets, but is weak to armor."
icon = 'modular_bandastation/objects/icons/obj/weapons/guns/ammo.dmi'
icon_state = "35sol_shrapnel"
projectile_type = /obj/projectile/bullet/c35sol/ripper


/obj/projectile/bullet/c35sol/ripper
name = ".35 Sol ripper bullet"
damage = 12
weak_against_armour = TRUE
sharpness = SHARP_EDGED
ricochets_max = 0
wound_bonus = 20
bare_wound_bonus = 20
embed_type = /datum/embedding/bullet/c35sol/ripper
embed_falloff_tile = -15

/datum/embedding/bullet/c35sol/ripper
embed_chance = 75
fall_chance = 3
jostle_chance = 4
ignore_throwspeed_threshold = TRUE
pain_stam_pct = 0.4
pain_mult = 5
jostle_pain_mult = 6
rip_time = 1 SECONDS

/obj/item/ammo_box/c35sol/ripper
name = "ammo box (.35 Sol Short ripper)"
desc = "A box of .35 Sol Short ripper pistol rounds, holds twenty-four rounds. The orange stripe indicates this should hold hollowpoint-like ammunition."
icon_state = "35box_shrapnel"
ammo_type = /obj/item/ammo_casing/c35sol/ripper

//.35 sol pierce are the AP rounds for this weapon

/obj/item/ammo_casing/c35sol/pierce
name = ".35 Sol Short armor piercing bullet casing"
desc = "A SolFed standard armor piercing pistol round. The silver stripe indicates this should hold pierce-like ammunition. Penetrates armor, but is rather weak against un-armored targets."
icon = 'modular_bandastation/objects/icons/obj/weapons/guns/ammo.dmi'
icon_state = "35sol_ap"
projectile_type = /obj/projectile/bullet/c35sol/pierce

/obj/projectile/bullet/c35sol/pierce
name = ".35 Sol Short armor piercing bullet"
damage = 13
bare_wound_bonus = -30
armour_penetration = 20

/obj/item/ammo_box/c35sol/pierce
name = "ammo box (.35 Sol Short armor piercing)"
desc = "A box of .35 Sol Short armor piercing pistol rounds, holds twenty-four rounds."
icon_state = "35box_ap"
ammo_type = /obj/item/ammo_casing/c35sol/pierce

/obj/item/ammo_box/magazine/c35sol_pistol
name = "Sol pistol magazine"
desc = "A standard size magazine for SolFed pistols, holds twelve rounds."
icon = 'modular_bandastation/objects/icons/obj/weapons/guns/ammo.dmi'
icon_state = "pistol_35_standard"
multiple_sprites = AMMO_BOX_FULL_EMPTY
w_class = WEIGHT_CLASS_TINY
ammo_type = /obj/item/ammo_casing/c35sol
caliber = CALIBER_SOL35SHORT
max_ammo = 12

/obj/item/ammo_box/magazine/c35sol_pistol/starts_empty
start_empty = TRUE

/obj/item/ammo_box/magazine/c35sol_pistol/stendo
name = "Sol extended pistol magazine"
desc = "An extended magazine for SolFed pistols, holds sixteen rounds."
icon_state = "pistol_35_stended"
w_class = WEIGHT_CLASS_NORMAL
max_ammo = 16

/obj/item/ammo_box/magazine/c35sol_pistol/stendo/starts_empty
start_empty = TRUE

/obj/item/ammo_box/magazine/c35sol_pistol/rubber
name = "Sol rubber pistol magazine"
desc = "A standard size magazine for SolFed pistols, holds twelve rubber rounds."
icon_state = "pistol_35_standard_disabler"
multiple_sprites = AMMO_BOX_FULL_EMPTY
ammo_type = /obj/item/ammo_casing/c35sol/rubber

/obj/item/ammo_box/magazine/c35sol_pistol/rubber/starts_empty
start_empty = TRUE

/obj/item/ammo_box/magazine/c35sol_pistol/stendo/rubber
name = "Sol rubber extended pistol magazine"
desc = "An extended magazine for SolFed pistols, holds sixteen rubber rounds."
icon_state = "pistol_35_stended_disabler"
ammo_type = /obj/item/ammo_casing/c35sol/rubber

/obj/item/ammo_box/magazine/c35sol_pistol/stendo/rubber/starts_empty
start_empty = TRUE

/obj/item/ammo_box/magazine/c35sol_pistol/pierce
name = "Sol AP pistol magazine"
desc = "A standard size magazine for SolFed pistols, holds twelve pierce rounds."
icon_state = "pistol_35_standard_ap"
multiple_sprites = AMMO_BOX_FULL_EMPTY
ammo_type = /obj/item/ammo_casing/c35sol/pierce

/obj/item/ammo_box/magazine/c35sol_pistol/pierce/starts_empty
start_empty = TRUE

/obj/item/ammo_box/magazine/c35sol_pistol/stendo/pierce
name = "Sol AP extended pistol magazine"
desc = "An extended magazine for SolFed pistols, holds sixteen pierce rounds."
icon_state = "pistol_35_stended_ap"
ammo_type = /obj/item/ammo_casing/c35sol/pierce

/obj/item/ammo_box/magazine/c35sol_pistol/stendo/pierce/starts_empty
start_empty = TRUE

/obj/item/ammo_box/magazine/c35sol_pistol/ripper
name = "Sol HP pistol magazine"
desc = "A standard size magazine for SolFed pistols, holds twelve ripper rounds."
icon_state = "pistol_35_standard_shrapnel"
multiple_sprites = AMMO_BOX_FULL_EMPTY
ammo_type = /obj/item/ammo_casing/c35sol/ripper

/obj/item/ammo_box/magazine/c35sol_pistol/ripper/starts_empty
start_empty = TRUE

/obj/item/ammo_box/magazine/c35sol_pistol/stendo/ripper
name = "Sol HP extended pistol magazine"
desc = "An extended magazine for SolFed pistols, holds sixteen ripper rounds."
icon_state = "pistol_35_stended_shrapnel"
ammo_type = /obj/item/ammo_casing/c35sol/ripper

/obj/item/ammo_box/magazine/c35sol_pistol/stendo/ripper/starts_empty
start_empty = TRUE
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
/obj/item/gun/ballistic/automatic/pistol/sol
name = "Wespe Pistol"
desc = "The standard issue service pistol of SolFed's various military branches. Uses .35 Sol and comes with an attached light."
icon = 'modular_bandastation/objects/icons/obj/weapons/guns/ballistic.dmi'
icon_state = "wespe"
fire_sound = 'modular_bandastation/objects/sounds/pistol_light.ogg'
w_class = WEIGHT_CLASS_NORMAL
accepted_magazine_type = /obj/item/ammo_box/magazine/c35sol_pistol
special_mags = TRUE
suppressor_x_offset = 7
suppressor_y_offset = 0
fire_delay = 0.3 SECONDS
obj_flags = UNIQUE_RENAME
unique_reskin = list(
"Default" = "wespe",
"Black" = "wespe_black",
)


/obj/item/gun/ballistic/automatic/pistol/sol/add_seclight_point()
AddComponent(/datum/component/seclite_attachable, \
starting_light = new /obj/item/flashlight/seclite(src), \
is_light_removable = FALSE, \
)

/obj/item/gun/ballistic/automatic/pistol/sol/examine_more(mob/user)
. = ..()

. += "The Wespe is a pistol that was made entirely for military use. \
Required to use a standard round, standard magazines, and be able \
to function in all of the environments that SolFed operated in \
commonly. These qualities just so happened to make the weapon \
popular in frontier space and is likely why you are looking at \
one now."

return .

/obj/item/gun/ballistic/automatic/pistol/sol/no_mag
spawnwithmagazine = FALSE

/datum/supply_pack/security/wespe_guns
name = "Wespe Pistols Crate"
desc = "Need new handguns? In that case, this crate contains two Wespe handguns with two rubber magazines."
cost = CARGO_CRATE_VALUE * 10
access_view = ACCESS_SECURITY
contains = list(
/obj/item/gun/ballistic/automatic/pistol/sol/no_mag = 2,
/obj/item/ammo_box/magazine/c35sol_pistol/rubber = 2,
)
crate_name = "Wespe handguns crate"

/datum/supply_pack/security/wespe_ammo
name = ".35 Sol Ammo Crate"
desc = "Short on ammo? No worries, this crate contains two .35 Sol rubber non-lethal magazines, two lethal magazines, and respective ammunition packets."
cost = CARGO_CRATE_VALUE * 6
access_view = ACCESS_SECURITY
contains = list(
/obj/item/ammo_box/magazine/c35sol_pistol = 2,
/obj/item/ammo_box/magazine/c35sol_pistol/rubber = 2,
/obj/item/ammo_box/c35sol = 1,
/obj/item/ammo_box/c35sol/rubber = 1,
)
crate_name = ".35 Sol ammo crate"

/datum/supply_pack/security/wespe_ammospecial
name = ".35 Sol Special Ammo Crate"
desc = "Need some special ammunition? No worries, this crate contains two .35 Sol AP magazines, two HP magazines, and respective ammunition packets."
cost = CARGO_CRATE_VALUE * 8
access_view = ACCESS_SECURITY
contains = list(
/obj/item/ammo_box/magazine/c35sol_pistol/pierce = 2,
/obj/item/ammo_box/magazine/c35sol_pistol/ripper = 2,
/obj/item/ammo_box/c35sol/pierce = 1,
/obj/item/ammo_box/c35sol/ripper = 1,
)
crate_name = ".35 Sol special ammo crate"

/datum/supply_pack/security/wespe_mags_extended
name = ".35 Sol Extended Magazines Crate"
desc = "Not enough bullets in mag? No worries, this crate contains two extended .35 Sol magazines."
cost = CARGO_CRATE_VALUE * 4
access_view = ACCESS_SECURITY
contains = list(
/obj/item/ammo_box/magazine/c35sol_pistol/stendo = 1,
/obj/item/ammo_box/magazine/c35sol_pistol/stendo/rubber = 1,
)
crate_name = ".35 Sol extended magazines crate"

/datum/supply_pack/goody/wespe_mags_extended_single
name = ".35 Sol Extended Magazine Crate"
desc = "Not enough bullets in mag? No worries, this crate contains one extended .35 Sol magazine."
cost = CARGO_CRATE_VALUE * 3
access_view = ACCESS_WEAPONS
contains = list(
/obj/item/ammo_box/magazine/c35sol_pistol/stendo/starts_empty = 1,
)

/datum/supply_pack/goody/wespe_single
name = "Wespe Pistol Single-Pack"
desc = "Need new handgun? In that case, this crate contains Wespe handgun with a magazine."
cost = CARGO_CRATE_VALUE * 6
access_view = ACCESS_WEAPONS
contains = list(
/obj/item/gun/ballistic/automatic/pistol/sol/no_mag = 1,
/obj/item/ammo_box/magazine/c35sol_pistol/starts_empty = 1,
)

/datum/supply_pack/goody/rubber35
name = ".35 Sol Rubber Ammo Box"
desc = "Need some non-lethal ammo? In that case, this crate contains a box of .35 Sol rubber ammo."
cost = CARGO_CRATE_VALUE * 2
access_view = ACCESS_WEAPONS
contains = list(
/obj/item/ammo_box/c35sol/rubber = 1,
)

/datum/supply_pack/goody/ripper35
name = ".35 Sol HP Ammo Box"
desc = "Need some HP ammo? In that case, this crate contains a box of .35 Sol hollow-point ammo."
cost = CARGO_CRATE_VALUE * 2
access_view = ACCESS_WEAPONS
contains = list(
/obj/item/ammo_box/c35sol/ripper = 1,
)

/datum/supply_pack/goody/pierce35
name = ".35 Sol AP Ammo Box"
desc = "Need some AP ammo? In that case, this crate contains a box of .35 Sol armor-piercing ammo."
cost = CARGO_CRATE_VALUE * 2
access_view = ACCESS_WEAPONS
contains = list(
/obj/item/ammo_box/c35sol/pierce = 1,
)

/datum/supply_pack/goody/lethal35
name = ".35 Sol Ammo Box"
desc = "Need some lethal ammo? In that case, this crate contains a box of .35 Sol lethal ammo."
cost = CARGO_CRATE_VALUE * 2
access_view = ACCESS_WEAPONS
contains = list(
/obj/item/ammo_box/c35sol = 1,
)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading