diff --git a/code/datums/trading/weaponry.dm b/code/datums/trading/weaponry.dm index a51c290cf5c..132bc9cf168 100644 --- a/code/datums/trading/weaponry.dm +++ b/code/datums/trading/weaponry.dm @@ -23,6 +23,7 @@ /obj/item/gun/projectile/sec = TRADER_ALL, /obj/item/gun/projectile/shotgun/pump = TRADER_ALL, /obj/item/gun/projectile/shotgun/doublebarrel = TRADER_ALL, + /obj/item/gun/projectile/shotgun/pump/lever_action = TRADER_THIS_TYPE, /obj/item/gun/projectile/tanto = TRADER_THIS_TYPE, /obj/item/gun/projectile/revolver/detective = TRADER_THIS_TYPE, /obj/item/gun/projectile/leyon = TRADER_THIS_TYPE, @@ -42,6 +43,7 @@ /obj/item/storage/box/shotgunshells = TRADER_THIS_TYPE, /obj/item/storage/box/haywireshells = TRADER_THIS_TYPE, /obj/item/storage/box/incendiaryshells = TRADER_THIS_TYPE, + /obj/item/storage/box/governmentammo = TRADER_THIS_TYPE, /obj/item/clothing/accessory/holster = TRADER_SUBTYPES_ONLY, /obj/item/clothing/accessory/holster/thigh/fluff = TRADER_BLACKLIST_ALL ) @@ -115,6 +117,7 @@ /obj/item/gun/projectile/contender = TRADER_THIS_TYPE, /obj/item/gun/projectile/revolver/lemat = TRADER_THIS_TYPE, /obj/item/gun/projectile/shotgun/pump/rifle/vintage = TRADER_BLACKLIST, + /obj/item/gun/projectile/shotgun/pump/lever_action = TRADER_BLACKLIST, /obj/item/gun/energy/rifle/icelance = TRADER_THIS_TYPE, /obj/item/clothing/accessory/storage/bayonet = TRADER_THIS_TYPE, /obj/item/gun/projectile/cannon = TRADER_THIS_TYPE, diff --git a/code/datums/uplink/ammunition.dm b/code/datums/uplink/ammunition.dm index 6e3580110fc..d720c6f02f5 100644 --- a/code/datums/uplink/ammunition.dm +++ b/code/datums/uplink/ammunition.dm @@ -36,11 +36,28 @@ path = /obj/item/ammo_magazine/a357 desc = "Contains eight rounds of .357 bullets." +/datum/uplink_item/item/ammo/c38 + name = ".38 Speedloader" + path = /obj/item/ammo_magazine/c38 + desc = "Contains six rounds of .38 bullets." + +/datum/uplink_item/item/ammo/c38/haywire + name = ".38 Speedloader (Haywire)" + telecrystal_cost = 2 + path = /obj/item/ammo_magazine/c38/emp + desc = "Contains six rounds of .38 haywire bullets." + /datum/uplink_item/item/ammo/shotgun_shells name = "Box of Shells" path = /obj/item/storage/box/shotgunshells desc = "Contains eight shotgun buckshot shells." +/datum/uplink_item/item/ammo/government + name = "Box of .45-70 Govt. ammo" + telecrystal_cost = 2 + path = /obj/item/storage/box/governmentammo + desc = "Contains eight .45-70 Govt. bullets." + /datum/uplink_item/item/ammo/plasma_mag name = "Plasma Shotgun Magazine" telecrystal_cost = 2 diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 0c5df5d2640..25bb2833da0 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -364,6 +364,16 @@ pickup_sound = 'sound/items/pickup/ammobox.ogg' starts_with = list(/obj/item/ammo_casing/c10mm = 10) +/obj/item/storage/box/governmentammo + name = "box of .45-70 Govt. rounds" + desc = "It has a picture of a rifle shell and several warning symbols on the front.
WARNING: Live ammunition. Misuse may result in serious injury or death." + icon_state = "ammobox" + item_state = "ammobox" + illustration = null + drop_sound = 'sound/items/drop/ammobox.ogg' + pickup_sound = 'sound/items/pickup/ammobox.ogg' + starts_with = list(/obj/item/ammo_casing/govt = 8) + /obj/item/storage/box/flashbangs name = "box of flashbangs" desc = "A box containing 7 antipersonnel flashbang grenades.
WARNING: These devices are extremely dangerous and can cause blindness or deafness in repeated use." diff --git a/code/game/objects/random/weapon.dm b/code/game/objects/random/weapon.dm index e978d0bef2d..b82011582aa 100644 --- a/code/game/objects/random/weapon.dm +++ b/code/game/objects/random/weapon.dm @@ -192,6 +192,7 @@ /obj/item/gun/projectile/shotgun/pump/rifle/obrez, /obj/item/gun/projectile/contender, /obj/item/gun/projectile/shotgun/pump/rifle/vintage, + /obj/item/gun/projectile/shotgun/pump/lever_action, /obj/item/gun/projectile/gauss, /obj/item/gun/projectile/gauss/carbine, /obj/item/gun/projectile/shotgun/pump, diff --git a/code/game/objects/random/weapon_and_ammo.dm b/code/game/objects/random/weapon_and_ammo.dm index a3649f33ca1..8cdef6e30bc 100644 --- a/code/game/objects/random/weapon_and_ammo.dm +++ b/code/game/objects/random/weapon_and_ammo.dm @@ -18,6 +18,7 @@ /obj/item/gun/projectile/revolver/derringer = 1, /obj/item/gun/projectile/shotgun/pump/rifle/obrez = 1, /obj/item/gun/projectile/shotgun/pump/rifle/vintage = 1, + /obj/item/gun/projectile/shotgun/pump/lever_action = 0.5, /obj/item/gun/launcher/harpoon = 1 ) diff --git a/code/game/objects/structures/crates_lockers/crates/gear_loadout.dm b/code/game/objects/structures/crates_lockers/crates/gear_loadout.dm index 9ec267d0631..b0fb0eeebd7 100644 --- a/code/game/objects/structures/crates_lockers/crates/gear_loadout.dm +++ b/code/game/objects/structures/crates_lockers/crates/gear_loadout.dm @@ -252,6 +252,7 @@ new /obj/item/clothing/head/cowboy(src) new /obj/item/melee/whip(src) new /obj/item/gun/projectile/revolver/detective(src) + new /obj/item/gun/projectile/shotgun/pump/lever_action(src) /obj/structure/closet/crate/secure/gear_loadout/frontier_cowboys/single/fill() var/obj/item/clothing/under/shorts/khaki/pants = new(src) @@ -273,6 +274,8 @@ new /obj/item/clothing/head/cowboy(src) new /obj/item/melee/whip(src) new /obj/item/gun/projectile/revolver/detective(src) + new /obj/item/gun/projectile/shotgun/pump/lever_action(src) + //Megacorporate suits are used in devices and tools in the uplink /obj/structure/closet/crate/gear_loadout/zavodskoi/fill() new /obj/item/clothing/head/helmet/space/void/zavodskoi(src) diff --git a/code/modules/projectiles/ammunition/bullets.dm b/code/modules/projectiles/ammunition/bullets.dm index 17e5749fba1..8854621df31 100644 --- a/code/modules/projectiles/ammunition/bullets.dm +++ b/code/modules/projectiles/ammunition/bullets.dm @@ -297,12 +297,20 @@ /obj/item/ammo_casing/vintage projectile_type = /obj/item/projectile/bullet/rifle/vintage - desc = "Some vintage shell casing. It looks old, and you can't understand the writing stamped on it." - caliber = "vintage" + desc = "A .30-06 Government bullet casing. It looks old, and you can barely understand the writing stamped on it." + caliber = "30-06 govt" icon_state = "lcasing" spent_icon = "lcasing-spent" max_stack = 6 +/obj/item/ammo_casing/govt + projectile_type = /obj/item/projectile/bullet/rifle/govt + desc = "A .45-70 Government bullet casing." + caliber = "45-70 govt" + icon_state = "gcasing" + spent_icon = "gcasing-spent" + max_stack = 4 + /obj/item/ammo_casing/slugger projectile_type = /obj/item/projectile/bullet/rifle/slugger caliber = "slugger" diff --git a/code/modules/projectiles/guns/projectile/rifle.dm b/code/modules/projectiles/guns/projectile/rifle.dm index 2c1ce136e7d..9ff411a1245 100644 --- a/code/modules/projectiles/guns/projectile/rifle.dm +++ b/code/modules/projectiles/guns/projectile/rifle.dm @@ -13,6 +13,7 @@ rack_sound = 'sound/weapons/riflebolt.ogg' rack_verb = "pull back the bolt on" + cycle_anim = FALSE can_bayonet = TRUE knife_x_offset = 23 @@ -203,7 +204,7 @@ slot_flags = SLOT_BACK load_method = SINGLE_CASING|SPEEDLOADER handle_casings = HOLD_CASINGS - caliber = "vintage" + caliber = "30-06 govt" ammo_type = /obj/item/ammo_casing/vintage magazine_type = /obj/item/ammo_magazine/boltaction/vintage can_bayonet = TRUE @@ -375,3 +376,24 @@ to_chat(user, SPAN_WARNING("You can't fire without stabilizing \the [src]!")) return 0 return ..() + +/obj/item/gun/projectile/shotgun/pump/lever_action + name = "lever action rifle" + desc = "A lever action rifle with a side-loading port, these are still popular with frontiersmen for hunting and self-defense purposes." + icon = 'icons/obj/guns/leveraction.dmi' + icon_state = "leveraction" + item_state = "leveraction" + origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) + fire_sound = 'sound/weapons/gunshot/gunshot_rifle.ogg' + caliber = "45-70 govt" + ammo_type = /obj/item/ammo_casing/govt + max_shells = 4 + load_method = SINGLE_CASING + handle_casings = HOLD_CASINGS + + cycle_anim = TRUE + + rack_sound = 'sound/weapons/reloads/lever_action_cock1.ogg' + rack_verb = "work the lever on" + can_bayonet = FALSE + can_sawoff = FALSE diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index eb781a42b7f..c58dff44cba 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -63,6 +63,8 @@ var/recentpump = 0 // to prevent spammage var/rack_sound = /singleton/sound_category/shotgun_pump var/rack_verb = "pump" + ///Whether the item icon has a cycling animation + var/cycle_anim = TRUE /obj/item/gun/projectile/shotgun/pump/consume_next_projectile() if(chambered) @@ -84,6 +86,8 @@ playsound(M, rack_sound, 60, FALSE) to_chat(M, SPAN_NOTICE("You [rack_verb] \the [src]!")) + if(cycle_anim) + flick("[icon_state]-cycling", src) if(chambered)//We have a shell in the chamber chambered.forceMove(get_turf(src)) //Eject casing @@ -111,6 +115,7 @@ max_shells = 7 //match the ammo box capacity, also it can hold a round in the chamber anyways, for a total of 8. ammo_type = /obj/item/ammo_casing/shotgun fire_sound = 'sound/weapons/gunshot/gunshot_shotgun.ogg' + cycle_anim = FALSE /obj/item/gun/projectile/shotgun/pump/combat/sol name = "solarian combat shotgun" @@ -120,6 +125,7 @@ item_state = "malella" origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 3, TECH_ILLEGAL = 2) ammo_type = /obj/item/ammo_casing/shotgun/pellet + cycle_anim = FALSE /obj/item/gun/projectile/shotgun/doublebarrel name = "double-barreled shotgun" diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 4a96cff71ee..7621652b04f 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -245,11 +245,15 @@ penetrating = TRUE /obj/item/projectile/bullet/rifle/vintage - name = "vintage bullet" + name = ".30-06 Govt. bullet" damage = 50 weaken = 1 penetrating = TRUE +/obj/item/projectile/bullet/rifle/govt + name = ".40-70 Govt. bullet" + damage = 50 + /obj/item/projectile/bullet/rifle/slugger name = "slugger round" damage = 60 diff --git a/html/changelogs/GeneralCamo - Lever Action.yml b/html/changelogs/GeneralCamo - Lever Action.yml new file mode 100644 index 00000000000..00d1557dfac --- /dev/null +++ b/html/changelogs/GeneralCamo - Lever Action.yml @@ -0,0 +1,44 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: GeneralCamo + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Added a lever action rifle for the frontier cowboys, which uses newly added .45-70 Government rounds. Sprites ported from polaris, with modifications by suethecake and GeneralCamo." + - rscadd: ".45-70 Govt. and .38 rounds are now available on the antagonist uplink." + - rscadd: "Added support for cycling animations for pump action shotguns (and derivatives)." + - tweak: "Renamed the vintage rounds used by the Springfield to .30-06 Government rounds." diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index bf5a22482e9..997bdf73cda 100644 Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ diff --git a/icons/obj/guns/leveraction.dmi b/icons/obj/guns/leveraction.dmi new file mode 100644 index 00000000000..1aa5f857258 Binary files /dev/null and b/icons/obj/guns/leveraction.dmi differ diff --git a/icons/obj/guns/shotgun.dmi b/icons/obj/guns/shotgun.dmi index c34cee6a1eb..5b9883bfb17 100644 Binary files a/icons/obj/guns/shotgun.dmi and b/icons/obj/guns/shotgun.dmi differ diff --git a/sound/attributions.txt b/sound/attributions.txt index 76c219690ed..9fcd27c4509 100644 --- a/sound/attributions.txt +++ b/sound/attributions.txt @@ -66,4 +66,8 @@ ATTRIBUTIONS SECTION END ATTRIBUTIONS SECTION START sound/machines/sensors/ping.ogg - "archi_sonar_05.wav", licensed under CC0. Obtained and edited from https://freesound.org/people/ElanHickler/sounds/38704 +ATTRIBUTIONS SECTION END + +ATTRIBUTIONS SECTION START +sound/weapons/reloads/lever_action_cock1.ogg - "Lever action cocking 2.wav", licensed under CC0. Obtained and edited from https://freesound.org/people/C-V/sounds/523402/ ATTRIBUTIONS SECTION END \ No newline at end of file diff --git a/sound/weapons/reloads/lever_action_cock1.ogg b/sound/weapons/reloads/lever_action_cock1.ogg new file mode 100644 index 00000000000..2950acee800 Binary files /dev/null and b/sound/weapons/reloads/lever_action_cock1.ogg differ