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
1 change: 1 addition & 0 deletions code/__DEFINES/~darkpack/guns.dm
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@
#define CALIBER_CROSSBOWBOLT "bolt"
#define CALIBER_762NATO "7.62x51mm NATO"
#define CALIBER_75BALL ".75 ball"
#define CALIBER_GRENADE "grenade"
Binary file modified modular_darkpack/modules/deprecated/icons/48x32.dmi
Binary file not shown.
Binary file modified modular_darkpack/modules/deprecated/icons/lefthand.dmi
Binary file not shown.
Binary file modified modular_darkpack/modules/deprecated/icons/righthand.dmi
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -72,14 +72,15 @@
head = /obj/item/clothing/head/vampire/eod
id = /obj/item/card/swat
backpack_contents = list(
/obj/item/grenade/frag = 1,
/obj/item/grenade/flashbang = 1,
/obj/item/grenade/smokebomb = 1,
/obj/item/molotov = 1,
/obj/item/ammo_casing/vampire/c40mm = 1,
/obj/item/ammo_casing/vampire/c40mm/incendiary = 1,
/obj/item/ammo_casing/vampire/c40mm/smoke = 1,
/obj/item/ammo_casing/vampire/c40mm/flashbang = 1,
/obj/item/gun/ballistic/automatic/darkpack/uzi = 1,
/obj/item/ammo_casing/vampire/c9mm = 1,
/obj/item/liquid_flamethrower = 1,
)
r_hand = /obj/item/gun/ballistic/revolver/grenadelauncher
r_hand = /obj/item/gun/ballistic/shotgun/darkpack/grenadelauncher

/datum/outfit/job/vampire/ert/national_guard/marksman
name = "National Guard Marksman"
Expand Down
31 changes: 31 additions & 0 deletions modular_darkpack/modules/weapons/code/ammo_boxes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -184,3 +184,34 @@
name = "cartriage bag (.75 silver ball)"
ammo_type = /obj/item/ammo_casing/vampire/c75/silver

//40mm grenade launcher rounds
/obj/item/ammo_box/darkpack/c40mm
name = "explosive ammo box (40mm)"
icon_state = "explosive_box"
ammo_type = /obj/item/ammo_casing/vampire/c40mm/explosive
max_ammo = 6

/obj/item/ammo_box/darkpack/c40mm/baton
name = "rubber baton ammo box (40mm)"
icon_state = "baton_box"
ammo_type = /obj/item/ammo_casing/vampire/c40mm/baton

/obj/item/ammo_box/darkpack/c40mm/incendiary
name = "incendiary ammo box (40mm)"
icon_state = "incen_box"
ammo_type = /obj/item/ammo_casing/vampire/c40mm/incendiary

/obj/item/ammo_box/darkpack/c40mm/flashbang
name = "flashbang ammo box (40mm)"
icon_state = "flash_box"
ammo_type = /obj/item/ammo_casing/vampire/c40mm/flashbang

/obj/item/ammo_box/darkpack/c40mm/teargas
name = "teargas ammo box (40mm)"
icon_state = "teargas_box"
ammo_type = /obj/item/ammo_casing/vampire/c40mm/teargas

/obj/item/ammo_box/darkpack/c40mm/smoke
name = "smoke ammo box (40mm)"
icon_state = "smoke_box"
ammo_type = /obj/item/ammo_casing/vampire/c40mm/smoke
50 changes: 50 additions & 0 deletions modular_darkpack/modules/weapons/code/ammo_casings.dm
Original file line number Diff line number Diff line change
Expand Up @@ -203,3 +203,53 @@
projectile_type = /obj/projectile/bullet/darkpack/vamp75/silver
icon_state = "scartridge"
base_icon_state = "scartridge"

/obj/item/ammo_casing/vampire/c40mm
name = "40mm casing"
desc = "A 40mm casing."
caliber = CALIBER_GRENADE
projectile_type = /obj/projectile/bullet/darkpack/c40mm
icon_state = "explosive_slug"
base_icon_state = "explosive_slug"

/obj/item/ammo_casing/vampire/c40mm/incendiary
name = "40mm incendiary casing"
desc = "A 40mm incendiary casing."
projectile_type = /obj/projectile/bullet/darkpack/c40mm/incendiary
icon_state = "incendiary_slug"
base_icon_state = "incendiary_slug"

/obj/item/ammo_casing/vampire/c40mm/explosive
name = "40mm explosive casing"
desc = "A 40mm explosive casing."
projectile_type = /obj/projectile/bullet/darkpack/c40mm/explosive
icon_state = "explosive_slug"
base_icon_state = "explosive_slug"

/obj/item/ammo_casing/vampire/c40mm/teargas
name = "40mm teargas casing"
desc = "A 40mm teargas casing."
projectile_type = /obj/projectile/bullet/darkpack/c40mm/teargas
icon_state = "teargas_slug"
base_icon_state = "teargas_slug"

/obj/item/ammo_casing/vampire/c40mm/smoke
name = "40mm smoke casing"
desc = "A 40mm smoke casing."
projectile_type = /obj/projectile/bullet/darkpack/c40mm/smoke
icon_state = "smoke_slug"
base_icon_state = "smoke_slug"

/obj/item/ammo_casing/vampire/c40mm/flashbang
name = "40mm flashbang casing"
desc = "A 40mm flashbang casing."
projectile_type = /obj/projectile/bullet/darkpack/c40mm/flashbang
icon_state = "flashbang_slug"
base_icon_state = "flashbang_slug"

/obj/item/ammo_casing/vampire/c40mm/baton
name = "40mm baton casing"
desc = "A 40mm baton casing."
projectile_type = /obj/projectile/bullet/darkpack/c40mm/baton
icon_state = "baton_slug"
base_icon_state = "baton_slug"
38 changes: 38 additions & 0 deletions modular_darkpack/modules/weapons/code/guns.dm
Original file line number Diff line number Diff line change
Expand Up @@ -912,3 +912,41 @@
spread = 25 //+25 from sawing off anyway, good fucking luck
w_class = WEIGHT_CLASS_NORMAL
slot_flags = ITEM_SLOT_BACK | ITEM_SLOT_BELT

/obj/item/ammo_box/magazine/internal/vampire/grenadelauncher
name = "grenade launcher internal magazine"
ammo_type = /obj/item/ammo_casing/vampire/c40mm
caliber = CALIBER_GRENADE
max_ammo = 1
start_empty = TRUE

// It's dumb but we path it as a shotgun so it can hold its internal rounds like a proper break-action.
/obj/item/gun/ballistic/shotgun/darkpack/grenadelauncher
name = "break-action grenade launcher"
desc = "A break action grenade launcher, designed to fire 40mm grenades. Not suggested to aim for heads or knees."
icon = 'modular_darkpack/modules/deprecated/icons/48x32.dmi'
lefthand_file = 'modular_darkpack/modules/deprecated/icons/lefthand.dmi'
righthand_file = 'modular_darkpack/modules/deprecated/icons/righthand.dmi'
ONFLOOR_ICON_HELPER('modular_darkpack/modules/weapons/icons/weapons_onfloor.dmi')
inhand_x_dimension = 32
inhand_y_dimension = 32
base_icon_state = "gl"
icon_state = "gl"
inhand_icon_state = "gl"
worn_icon_state = "gl"
accepted_magazine_type = /obj/item/ammo_box/magazine/internal/vampire/grenadelauncher
fire_sound = 'sound/items/weapons/gun/general/grenade_launch.ogg'
vary_fire_sound = FALSE
fire_delay = 10
recoil = 5
spread = 2
w_class = WEIGHT_CLASS_HUGE
slot_flags = ITEM_SLOT_BACK
bolt_type = BOLT_TYPE_NO_BOLT
can_muzzle_flash = FALSE //Not a regular projectile weapon, no flash
serial_shown = FALSE //No serial, doesn't need it.

// For the break-action sprite update
/obj/item/gun/ballistic/shotgun/darkpack/grenadelauncher/update_icon_state()
. = ..()
icon_state = "[base_icon_state][!chambered ? "_empty" : ""]"
93 changes: 92 additions & 1 deletion modular_darkpack/modules/weapons/code/projectiles.dm
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@
damage = 45
armour_penetration = 75
exposed_wound_bonus = 30
wound_bonus = 30 //We're gonna make this hurt as much as possible.
wound_bonus = 30 //We're gonna make this hurt as much as possible.
sharpness = SHARP_POINTY
embed_type = /datum/embedding/crossbolt //YEEEEOUCH!!!!

Expand Down Expand Up @@ -247,3 +247,94 @@
/obj/projectile/bullet/darkpack/vamp75/silver/on_hit(atom/target, blocked = FALSE, pierce_hit)
. = ..()
fera_silver_damage(target, 5) //Same as silver longsword; it's a solid silver ball. As the founding fathers intended.

/obj/projectile/bullet/darkpack/c40mm
name = "40mm grenade"
damage = 5
stamina = 50
armour_penetration = 0
exposed_wound_bonus = 5
wound_bonus = 5
range = 10 //Avoids issue where a grenade travels across the map
can_hit_turfs = TRUE

//Variable for devistation range, this can gib corpses and destroy floor plating/walls. Very strong, avoid increasing unless needed.
var/explosive_devastation_range = 0
//Heavy explosion range, this should be used for epicenter. More severly injures mobs than a light explosion.
var/explosive_heavy_range = 0
//Standard explosion range, this damages and throws mobs around. Can damage stuff but won't do what devistation does.
var/explosive_light_range = 0
//Flash range, self explanitory. It's for flashbang rounds.
var/explosive_flash_range = 0
//Fire range, self explanitory. It's for the fireball the incindary round makes.
var/explosive_fire_range = 0
//For if the explosive creates a smoke plume or not.
var/smoke_effect = FALSE
//For if the explosive is silent or not. (Ex - smoke grenade, flashbang, etc. They are 'explosive' but not like a bomb.)
var/explosive_sound = FALSE

/obj/projectile/bullet/darkpack/c40mm/on_hit(atom/target, blocked = 0, pierce_hit)
..()
if(explosive_light_range || explosive_fire_range || explosive_flash_range)
explosion(target, devastation_range = explosive_devastation_range, heavy_impact_range = explosive_heavy_range, light_impact_range = explosive_light_range, flame_range = explosive_fire_range, flash_range = explosive_flash_range, silent = explosive_sound, smoke = smoke_effect, adminlog = TRUE, explosion_cause = src)
return BULLET_ACT_HIT

/obj/projectile/bullet/darkpack/c40mm/explosive
name = "40mm explosive"
//explosive_heavy_range = 2 - Don't use this for now, it causes flooring to get destroyed.
explosive_light_range = 4
explosive_flash_range = 2
explosive_fire_range = 2
smoke_effect = TRUE
explosive_sound = TRUE

/obj/projectile/bullet/darkpack/c40mm/incendiary
name = "40mm incendiary"
explosive_light_range = 2
explosive_flash_range = 3
explosive_fire_range = 4
smoke_effect = TRUE
explosive_sound = TRUE

/obj/projectile/bullet/darkpack/c40mm/incendiary/on_hit(atom/target, blocked = 0, pierce_hit)
. = ..()
if(iscarbon(target))
var/mob/living/carbon/victim = target
victim.adjust_fire_stacks(7)
victim.ignite_mob()

/obj/projectile/bullet/darkpack/c40mm/teargas
name = "40mm teargas"

/obj/projectile/bullet/darkpack/c40mm/teargas/Initialize(mapload)
. = ..()
AddElement(/datum/element/projectile_drop, /obj/item/grenade/chem_grenade/teargas/instant)

/obj/projectile/bullet/darkpack/c40mm/smoke
name = "40mm smoke"

/obj/projectile/bullet/darkpack/c40mm/smoke/Initialize(mapload)
. = ..()
AddElement(/datum/element/projectile_drop, /obj/item/grenade/smokebomb/instant)

/obj/item/grenade/smokebomb/instant/Initialize(mapload)
. = ..()
if(detonate())
return INITIALIZE_HINT_QDEL

/obj/projectile/bullet/darkpack/c40mm/flashbang
name = "40mm flashbang"
explosive_flash_range = 2
explosive_light_range = 1
smoke_effect = TRUE

// Only projectile of the family with no explosive element or effect
/obj/projectile/bullet/darkpack/c40mm/baton
name = "40mm baton"
damage = 15 //LTL, not non-lethal
stamina = 120 //YOUCH!!!
armour_penetration = 0
exposed_wound_bonus = 5
wound_bonus = 5
range = 18 //longer range since no impact
can_hit_turfs = FALSE //So it can travel past the screens edge; doesn't do anything to floors anyway.
Binary file modified modular_darkpack/modules/weapons/icons/ammo.dmi
Binary file not shown.
Binary file modified modular_darkpack/modules/weapons/icons/ammo_onfloor.dmi
Binary file not shown.
Binary file modified modular_darkpack/modules/weapons/icons/weapons_onfloor.dmi
Binary file not shown.
Binary file modified modular_darkpack/modules/weapons/icons/worn_guns.dmi
Binary file not shown.
Loading