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 7 commits into
base: master
Choose a base branch
from
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
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"
6 changes: 6 additions & 0 deletions modular_bandastation/objects/_objects.dme
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,12 @@
#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_casings.dm"
#include "code/items/weapons/ranged/ballistic/supply_packs.dm"
#include "code/items/weapons/ranged/ballistic/magazines.dm"
#include "code/items/weapons/ranged/ballistic/projectiles.dm"
#include "code/items/weapons/ranged/ballistic/ammo_boxes.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,28 @@
/obj/item/ammo_box/c35sol
name = "ammo box (.35 Sol Short lethal)"
desc = "Коробка со летальными пистолетными патронами калибра .35 Sol Short, вмещает двадцать четыре патрона."
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_box/c35sol/rubber
name = "ammo box (.35 Sol Short rubber)"
desc = "Коробка с нелетальными пистолетными патронами калибра .35 Sol Short, вмещает двадцать четыре патрона. Синяя полоска указывает на то, что здесь должны храниться нелетальные боеприпасы."
icon_state = "35box_disabler"
ammo_type = /obj/item/ammo_casing/c35sol/rubber

/obj/item/ammo_box/c35sol/ripper
name = "ammo box (.35 Sol Short ripper)"
desc = "Коробка с экспансивными пистолетными патронами калибра .35 Sol Short, вмещает двадцать четыре патрона. Оранжевая полоска указывает на то, что в ней должны храниться экспансивные боеприпасы."
icon_state = "35box_shrapnel"
ammo_type = /obj/item/ammo_casing/c35sol/ripper

/obj/item/ammo_box/c35sol/ap
name = "ammo box (.35 Sol Short armor piercing)"
desc = "Коробка с бронебойными пистолетными патронами калибра .35 Sol Short, вмещает двадцать четыре патрона. Серебрянная полоска указывает на то, что в ней должны храниться бронебойные боеприпасы."
icon_state = "35box_ap"
ammo_type = /obj/item/ammo_casing/c35sol/ap
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/obj/item/ammo_casing/c35sol
name = ".35 Sol Short lethal bullet casing"
desc = "Стандартный летальный пистолетный патрон ТСФ калибра .35 Sol Short."
icon = 'modular_bandastation/objects/icons/obj/weapons/guns/ammo.dmi'
icon_state = "35sol"
caliber = CALIBER_SOL35SHORT
projectile_type = /obj/projectile/bullet/c35sol

/obj/item/ammo_casing/c35sol/rubber
name = ".35 Sol Short rubber bullet casing"
desc = "Стандартный резиновый пистолетный патрон ТСФ калибра .35 Sol Short с пониженной летальностью. Изнуряет цель при попадании, имеет тенденцию отскакивать от стен под небольшим углом."
icon = 'modular_bandastation/objects/icons/obj/weapons/guns/ammo.dmi'
icon_state = "35sol_disabler"
projectile_type = /obj/projectile/bullet/c35sol/rubber
harmful = FALSE

// .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 = "Стандартный экспансивный пистолетный патрон ТСФ калибра .35 Sol Short. Наносит целям режущие раны, но слаб против брони."
icon = 'modular_bandastation/objects/icons/obj/weapons/guns/ammo.dmi'
icon_state = "35sol_shrapnel"
projectile_type = /obj/projectile/bullet/c35sol/ripper

//.35 sol armor piercing are the AP rounds for this weapon

/obj/item/ammo_casing/c35sol/ap
name = ".35 Sol Short armor piercing bullet casing"
desc = "Стандартный бронебойный пистолетный патрон ТСФ калибра .35 Sol Short. Пробивает броню, но довольно слаб против небронированных целей."
icon = 'modular_bandastation/objects/icons/obj/weapons/guns/ammo.dmi'
icon_state = "35sol_ap"
projectile_type = /obj/projectile/bullet/c35sol/ap
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
/obj/item/ammo_box/magazine/c35sol_pistol
name = "Sol pistol magazine"
desc = "Магазин стандартного размера для пистолетов ТСФ калибра .35 Sol Short, вмещает двенадцать патронов."
icon = 'modular_bandastation/objects/icons/obj/weapons/guns/ammo.dmi'
icon_state = "pistol_35_standard"
base_icon_state = "pistol_35_standard"
w_class = WEIGHT_CLASS_TINY
ammo_type = /obj/item/ammo_casing/c35sol
caliber = CALIBER_SOL35SHORT
max_ammo = 12
ammo_band_icon = "+35_ammo_band"
ammo_band_color = null
multiple_sprites = AMMO_BOX_FULL_EMPTY
multiple_sprite_use_base = TRUE

/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 = "Увеличенный магазин для пистолетов ТСФ калибра .35 Sol Short, вмещает шестнадцать патронов."
icon_state = "pistol_35_stended"
base_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 = "Магазин стандартного размера для пистолетов ТСФ калибра .35 Sol Short, вмещает двенадцать резиновых патронов."
ammo_band_color = COLOR_AMMO_RUBBER
ammo_type = /obj/item/ammo_casing/c35sol/rubber

/obj/item/ammo_box/magazine/c35sol_pistol/stendo/rubber
name = "Sol rubber extended pistol magazine"
desc = "Увеличенный магазин для пистолетов ТСФ калибра .35 Sol Short, вмещает шестнадцать резиновых патронов."
ammo_band_color = COLOR_AMMO_RUBBER
ammo_type = /obj/item/ammo_casing/c35sol/rubber

/obj/item/ammo_box/magazine/c35sol_pistol/ap
name = "Sol AP pistol magazine"
desc = "Магазин стандартного размера для пистолетов ТСФ калибра .35 Sol Short, вмещает двенадцать бронебойных патронов."
MAGAZINE_TYPE_ARMORPIERCE
ammo_type = /obj/item/ammo_casing/c35sol/ap

/obj/item/ammo_box/magazine/c35sol_pistol/stendo/ap
name = "Sol AP extended pistol magazine"
desc = "Увеличенный магазин для пистолетов ТСФ калибра .35 Sol Short, вмещает шестнадцать бронебойных патронов."
MAGAZINE_TYPE_ARMORPIERCE
ammo_type = /obj/item/ammo_casing/c35sol/ap

/obj/item/ammo_box/magazine/c35sol_pistol/ripper
name = "Sol HP pistol magazine"
desc = "Магазин стандартного размера для пистолетов ТСФ калибра .35 Sol Short, вмещает двенадцать экспансивных патронов."
MAGAZINE_TYPE_HOLLOWPOINT
ammo_type = /obj/item/ammo_casing/c35sol/ripper

/obj/item/ammo_box/magazine/c35sol_pistol/stendo/ripper
name = "Sol HP extended pistol magazine"
desc = "Увеличенный магазин для пистолетов ТСФ калибра .35 Sol Short, вмещающий шестнадцать экспансивных патронов."
MAGAZINE_TYPE_HOLLOWPOINT
ammo_type = /obj/item/ammo_casing/c35sol/ripper
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/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/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/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/projectile/bullet/c35sol/ap
name = ".35 Sol Short armor piercing bullet"
damage = 13
bare_wound_bonus = -30
armour_penetration = 20
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
/datum/supply_pack/security/wespe_guns
name = "Wespe Pistols Crate"
desc = "Вам нужны новые пистолеты? В таком случае в этом ящике находятся два пистолета 'Оса' калибра .35 Sol Short с двумя магазинами заряженными резиной, а также по одной коробке соответствующих летальных и нелетальных боеприпасов."
cost = CARGO_CRATE_VALUE * 10
access_view = ACCESS_SECURITY
contains = list(
/obj/item/gun/ballistic/automatic/pistol/wespe = 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 = "Wespe handguns crate"

/datum/supply_pack/security/wespe_ammo
name = ".35 Sol Short Ammo Crate"
desc = "Не хватает патронов? Не беспокойтесь, в этом ящике вы найдете два нелетальных магазина и два летальных магазина калибра .35 Sol Short, и соответствующие коробки с боеприпасами."
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 Short ammo crate"

/datum/supply_pack/security/wespe_ammospecial
name = ".35 Sol Short Special Ammo Crate"
desc = "Нужны особые боеприпасы? Не беспокойтесь, в этом ящике вы найдете два бронебойных магазина и два экспансивных магазина калибра .35 Sol Short, и соответствующие коробки с боеприпасами."
cost = CARGO_CRATE_VALUE * 8
access_view = ACCESS_SECURITY
contains = list(
/obj/item/ammo_box/magazine/c35sol_pistol/ap = 2,
/obj/item/ammo_box/magazine/c35sol_pistol/ripper = 2,
/obj/item/ammo_box/c35sol/ap = 1,
/obj/item/ammo_box/c35sol/ripper = 1,
)
crate_name = ".35 Sol Short special ammo crate"

/datum/supply_pack/security/wespe_mags_extended
name = ".35 Sol Short Extended Magazines Crate"
desc = "Не хватает патронов в магазине? Не беспокойтесь, в этом ящике находятся два увеличенных магазина калибра .35 Sol Short."
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 Short extended magazines crate"

/datum/supply_pack/goody/wespe_mags_extended_single
name = ".35 Sol Short Extended Magazine Crate"
desc = "Не хватает патронов в магазине? Не беспокойтесь, в этом ящике находится один увеличенный магазин калибра .35 Sol Short."
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 = "Вам нужен новый пистолет? В таком случае, в этом ящике вы найдете себе один пистолет 'Оса' калибра .35 Sol Short с пустым магазином."
cost = CARGO_CRATE_VALUE * 6
access_view = ACCESS_WEAPONS
contains = list(
/obj/item/gun/ballistic/automatic/pistol/wespe/no_mag = 1,
/obj/item/ammo_box/magazine/c35sol_pistol/starts_empty = 1,
)

/datum/supply_pack/goody/rubber35
name = ".35 Sol Short Rubber Ammo Box"
desc = "Нужны нелетальные патроны? В таком случае, в этом ящике находится коробка резиновых патронов калибра .35 Sol Short."
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 Short HP Ammo Box"
desc = "Нужны экспансивные патроны? В таком случае, в этом ящике находится коробка с экспансивными патронами калибра .35 Sol Short."
cost = CARGO_CRATE_VALUE * 2
access_view = ACCESS_WEAPONS
contains = list(
/obj/item/ammo_box/c35sol/ripper = 1,
)

/datum/supply_pack/goody/ap35
name = ".35 Sol Short AP Ammo Box"
desc = "Нужны бронебойные патроны? В таком случае, в этом ящике находится коробка с бронебойными патронами калибра .35 Sol Short."
cost = CARGO_CRATE_VALUE * 2
access_view = ACCESS_WEAPONS
contains = list(
/obj/item/ammo_box/c35sol/ap = 1,
)

/datum/supply_pack/goody/lethal35
name = ".35 Sol Short Ammo Box"
desc = "Нужны летальные патроны? В таком случае, в этом ящике находится коробка с летальными патронами калибра .35 Sol Short."
cost = CARGO_CRATE_VALUE * 2
access_view = ACCESS_WEAPONS
contains = list(
/obj/item/ammo_box/c35sol = 1,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/obj/item/gun/ballistic/automatic/pistol/wespe
name = "'Wespe' pistol"
desc = "Стандартный служебный пистолет различных военных подразделений ТСФ. Использует патрон .35 Sol Short имеет встроенный фонарик."
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/wespe/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/wespe/examine_more(mob/user)
. = ..()

. += "'Оса' - пистолет, созданный исключительно для военных целей. \
Он должен был использовать стандартные патроны, стандартные магазины и быть способным \
функционировать во всех условиях, в которых обычно работает ТСФ. \
Так получилось, что эти качества сделали это оружие популярным \
в пограничном пространстве, и, скорее всего, именно поэтому вы сейчас смотрите на \
этот пистолет. Данный экземпляр является модификацией компании Etamin Industries."

return .

/obj/item/gun/ballistic/automatic/pistol/wespe/no_mag
spawnwithmagazine = FALSE
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading
Loading