Let's just have the one commit this time because I'm no longer paranoid of losing progress.

This commit is contained in:
Spades
2016-06-01 12:48:48 -04:00
parent 3e0ff6c897
commit ff87150c3d
52 changed files with 1112 additions and 238 deletions

View File

@@ -890,6 +890,15 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
access = access_armory
group = "Security"
/datum/supply_packs/randomised/automatic/hidden
name = "Assault weapon crate"
contains = list(
/obj/item/weapon/gun/projectile/automatic/fn3000,
/obj/item/weapon/gun/projectile/automatic/fn3000
)
cost = 100
hidden = 1
/datum/supply_packs/randomised/autoammo
name = "Automatic weapon ammunition crate"
num_contained = 6
@@ -904,6 +913,18 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
access = access_armory
group = "Security"
/datum/supply_packs/randomised/autoammo/hidden
name = "Assault weapon ammunition crate"
num_contained = 4
contains = list(
/obj/item/ammo_magazine/a556,
/obj/item/ammo_magazine/a556,
/obj/item/ammo_magazine/a556m,
/obj/item/ammo_magazine/a556m
)
hidden = 1
cost = 30
/datum/supply_packs/energy_guns
name = "energy guns crate"
contains = list(/obj/item/weapon/gun/energy/gun = 2)
@@ -1834,6 +1855,35 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
access = access_security
group = "Security"
/datum/supply_packs/bolt_rifles_competitive
name = "Competitive shooting crate"
contains = list(
/obj/item/device/assembly/timer,
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice = 2,
/obj/item/ammo_magazine/clip/a762/practice = 4,
/obj/item/target = 2,
/obj/item/target/alien = 2,
/obj/item/target/syndicate = 2
)
cost = 40
containertype = /obj/structure/closet/crate/secure/weapon
containername = "Weapons crate"
access = access_security
group = "Security"
/datum/supply_packs/bolt_rifles_mosin
name = "Surplus Soviet rifles"
contains = list(
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/mosin = 3,
/obj/item/ammo_magazine/clip/a762 = 6
)
cost = 50
hidden = 1
containertype = /obj/structure/closet/crate/secure/weapon
containername = "Weapons crate"
access = access_security
group = "Security"
/datum/supply_packs/medicalextragear
name = "Medical surplus equipment"
contains = list(

View File

@@ -6,62 +6,98 @@
category = /datum/uplink_category/ammunition
/datum/uplink_item/item/ammo/a357
name = ".357"
name = ".357 Speedloader"
path = /obj/item/ammo_magazine/a357
/datum/uplink_item/item/ammo/mc9mm
name = "9mm"
name = "Pistol Magazine (9mm)"
path = /obj/item/ammo_magazine/mc9mm
/datum/uplink_item/item/ammo/c45m
name = ".45"
name = "Pistol Magazine (.45)"
path = /obj/item/ammo_magazine/c45m
/datum/uplink_item/item/ammo/tommymag
name = "Tommygun Magazine (.45)"
path = /obj/item/ammo_magazine/tommymag
/datum/uplink_item/item/ammo/tommydrum
name = "Tommygun Drum Magazine (.45)"
path = /obj/item/ammo_magazine/tommydrum
item_cost = 4 // Buy 40 bullets, get 10 free!
/datum/uplink_item/item/ammo/darts
name = "Darts"
path = /obj/item/ammo_magazine/chemdart
/datum/uplink_item/item/ammo/sniperammo
name = "14.5mm"
name = "Anti-Materiel Rifle ammo box (14.5mm)"
path = /obj/item/weapon/storage/box/sniperammo
/datum/uplink_item/item/ammo/a556
name = "5.56mm"
name = "10rnd Rifle Magazine (5.56mm)"
path = /obj/item/ammo_magazine/a556
/datum/uplink_item/item/ammo/a556/ap
name = "5.56mm AP"
name = "10rnd Rifle Magazine (5.56mm AP)"
path = /obj/item/ammo_magazine/a556/ap
/datum/uplink_item/item/ammo/a556m
name = "20rnd Rifle Magazine (5.56mm)"
path = /obj/item/ammo_magazine/a556m
item_cost = 4
/datum/uplink_item/item/ammo/a556m/ap
name = "20rnd Rifle Magazine (5.56mm AP)"
path = /obj/item/ammo_magazine/a556m/ap
item_cost = 4
/datum/uplink_item/item/ammo/c762
name = "20rnd Rifle Magazine (7.62mm)"
path = /obj/item/ammo_magazine/c762
/datum/uplink_item/item/ammo/c762/ap
name = "20rnd Rifle Magazine (7.62mm AP)"
path = /obj/item/ammo_magazine/c762/ap
/datum/uplink_item/item/ammo/SVD
name = "10rnd Rifle Magazine (7.62mm)"
path = /obj/item/ammo_magazine/SVD
item_cost = 1 // Half the capacity.
/datum/uplink_item/item/ammo/SVD/ap
name = "10rnd Rifle Magazine (7.62mm AP)"
path = /obj/item/ammo_magazine/SVD/ap
/datum/uplink_item/item/ammo/a10mm
name = "10mm"
name = "SMG Magazine (10mm)"
path = /obj/item/ammo_magazine/a10mm
/datum/uplink_item/item/ammo/a762
name = "7.62mm"
name = "Machinegun Magazine (7.62mm)"
path = /obj/item/ammo_magazine/a762
/datum/uplink_item/item/ammo/a762/ap
name = "7.62mm AP"
name = "Machinegun Magazine (7.62mm AP)"
path = /obj/item/ammo_magazine/a762/ap
/datum/uplink_item/item/ammo/g12
name = "12 gauge"
name = "12g Auto-Shotgun Magazine (Slug)"
path = /obj/item/ammo_magazine/g12
/datum/uplink_item/item/ammo/g12/beanbag
name = "12 gauge beanbag"
name = "12g Auto-Shotgun Magazine (Beanbag)"
path = /obj/item/ammo_magazine/g12/beanbag
item_cost = 1 // Discount due to it being LTL.
/datum/uplink_item/item/ammo/g12/pellet
name = "12 gauge pellet"
name = "12g Auto-Shotgun Magazine (Pellet)"
path = /obj/item/ammo_magazine/g12/pellet
/datum/uplink_item/item/ammo/g12/stun
name = "12 gauge stun"
name = "12g Auto-Shotgun Magazine (Stun)"
path = /obj/item/weapon/storage/box/stunshells
/datum/uplink_item/item/ammo/g12/flash
name = "12 gauge flash"
name = "12g Auto-Shotgun Magazine (Flash)"
path = /obj/item/weapon/storage/box/flashshells

View File

@@ -34,22 +34,42 @@
item_cost = 6
path = /obj/item/weapon/gun/projectile/revolver
/datum/uplink_item/item/visible_weapons/Derringer
name = ".357 Derringer Pistol"
item_cost = 5
path = /obj/item/weapon/gun/projectile/derringer
/datum/uplink_item/item/visible_weapons/SVD
name = "Dragunov Sniper (7.62mm)"
item_cost = 7
path = /obj/item/weapon/gun/projectile/SVD
/datum/uplink_item/item/visible_weapons/heavysniper
name = "Anti-materiel Rifle"
name = "Anti-Materiel Rifle (14.5mm)"
item_cost = DEFAULT_TELECRYSTAL_AMOUNT
path = /obj/item/weapon/gun/projectile/heavysniper
/datum/uplink_item/item/visible_weapons/tommygun
name = "Tommygun (.45)"
item_cost = DEFAULT_TELECRYSTAL_AMOUNT
path = /obj/item/weapon/gun/projectile/automatic/tommygun
//These are for traitors (or other antags, perhaps) to have the option of purchasing some merc gear.
/datum/uplink_item/item/visible_weapons/submachinegun
name = "Submachine Gun"
name = "Submachine Gun (10mm)"
item_cost = 6
path = /obj/item/weapon/gun/projectile/automatic/c20r
/datum/uplink_item/item/visible_weapons/assaultrifle
name = "Assault Rifle"
name = "Assault Rifle (7.62mm)"
item_cost = 7
path = /obj/item/weapon/gun/projectile/automatic/sts35
/datum/uplink_item/item/visible_weapons/bullpuprifle
name = "Assault Rifle (5.56mm)"
item_cost = 7
path = /obj/item/weapon/gun/projectile/automatic/fn3000
/datum/uplink_item/item/visible_weapons/combatshotgun
name = "Combat Shotgun"
item_cost = 7

View File

@@ -27,7 +27,7 @@ var/datum/antagonist/deathsquad/mercenary/commandos
player.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal(player), slot_glasses)
player.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/syndicate(player), slot_wear_mask)
player.equip_to_slot_or_del(new /obj/item/weapon/storage/box(player), slot_in_backpack)
player.equip_to_slot_or_del(new /obj/item/ammo_magazine/c45(player), slot_in_backpack)
player.equip_to_slot_or_del(new /obj/item/ammo_magazine/clip/c45(player), slot_in_backpack)
player.equip_to_slot_or_del(new /obj/item/weapon/rig/merc(player), slot_back)
player.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse_rifle(player), slot_r_hand)

View File

@@ -80,16 +80,24 @@ var/datum/antagonist/raider/raiders
/obj/item/weapon/gun/projectile/automatic/c20r,
/obj/item/weapon/gun/projectile/automatic/wt550,
/obj/item/weapon/gun/projectile/automatic/sts35,
/obj/item/weapon/gun/projectile/automatic/fn3000,
/obj/item/weapon/gun/projectile/automatic/p90,
/obj/item/weapon/gun/projectile/automatic/tommygun,
/obj/item/weapon/gun/projectile/silenced,
/obj/item/weapon/gun/projectile/shotgun/pump,
/obj/item/weapon/gun/projectile/shotgun/pump/combat,
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/mosin,
/obj/item/weapon/gun/projectile/shotgun/doublebarrel,
/obj/item/weapon/gun/projectile/shotgun/doublebarrel/pellet,
/obj/item/weapon/gun/projectile/shotgun/doublebarrel/sawn,
/obj/item/weapon/gun/projectile/colt/detective,
/obj/item/weapon/gun/projectile/pistol,
/obj/item/weapon/gun/projectile/revolver,
/obj/item/weapon/gun/projectile/pirate
/obj/item/weapon/gun/projectile/pirate,
/obj/item/weapon/gun/projectile/SVD,
/obj/item/weapon/gun/projectile/revolver/judge,
list(/obj/item/weapon/gun/projectile/luger,/obj/item/weapon/gun/projectile/luger/brown),
list(/obj/item/weapon/gun/projectile/deagle, /obj/item/weapon/gun/projectile/deagle/gold, /obj/item/weapon/gun/projectile/deagle/camo)
)
var/list/raider_holster = list(

View File

@@ -37,19 +37,25 @@ var/datum/antagonist/renegade/renegades
/obj/item/weapon/gun/projectile/automatic/mini_uzi,
/obj/item/weapon/gun/projectile/automatic/c20r,
/obj/item/weapon/gun/projectile/automatic/sts35,
/obj/item/weapon/gun/projectile/automatic/fn3000,
/obj/item/weapon/gun/projectile/automatic/wt550,
/obj/item/weapon/gun/projectile/automatic/z8,
/obj/item/weapon/gun/projectile/automatic/tommygun,
/obj/item/weapon/gun/projectile/colt/detective,
/obj/item/weapon/gun/projectile/sec/wood,
/obj/item/weapon/gun/projectile/silenced,
/obj/item/weapon/gun/projectile/pistol,
/obj/item/weapon/gun/projectile/revolver,
/obj/item/weapon/gun/projectile/derringer,
/obj/item/weapon/gun/projectile/shotgun/pump,
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/mosin,
/obj/item/weapon/gun/projectile/shotgun/pump/combat,
/obj/item/weapon/gun/projectile/shotgun/doublebarrel,
/obj/item/weapon/gun/projectile/revolver/judge,
list(/obj/item/weapon/gun/projectile/shotgun/doublebarrel/pellet, /obj/item/weapon/gun/projectile/shotgun/doublebarrel/sawn),
list(/obj/item/weapon/gun/projectile/deagle, /obj/item/weapon/gun/projectile/deagle/gold, /obj/item/weapon/gun/projectile/deagle/camo),
list(/obj/item/weapon/gun/projectile/revolver/detective, /obj/item/weapon/gun/projectile/revolver/deckard)
list(/obj/item/weapon/gun/projectile/revolver/detective, /obj/item/weapon/gun/projectile/revolver/deckard),
list(/obj/item/weapon/gun/projectile/luger,/obj/item/weapon/gun/projectile/luger/brown)
)
/datum/antagonist/renegade/New()

View File

@@ -150,6 +150,22 @@
if(is_robot_module(O))
return 0
if(istype(O,/obj/item/ammo_magazine/clip) || istype(O,/obj/item/ammo_magazine/a357) || istype(O,/obj/item/ammo_magazine/c38)) // Prevents ammo recycling exploit with speedloaders.
user << "\The [O] is too hazardous to recycle with the autolathe!"
return
/* ToDo: Make this actually check for ammo and let me recycle if the ammo is spent or gone. -Spades
var/obj/item/ammo_magazine/speedloader = O
if(speedloader.stored_ammo)
user << "\The [speedloader] is too hazardous to put back into the autolathe while there's ammunition inside of it!"
return
else
speedloader.matter = list(DEFAULT_WALL_MATERIAL = 75) // It's just a hunk of scrap metal now.
if(istype(O,/obj/item/ammo_magazine)) // This was just for immersion consistency with above.
var/obj/item/ammo_magazine/mag = O
if(mag.stored_ammo)
user << "\The [mag] is too hazardous to put back into the autolathe while there's ammunition inside of it!"
return*/
//Resources are being loaded.
var/obj/item/eating = O
if(!eating.matter)

View File

@@ -330,36 +330,247 @@
path = /obj/item/weapon/syringe_cartridge
category = "Arms and Ammunition"
////////////////
/*Ammo casings*/
////////////////
/datum/autolathe/recipe/shotgun_blanks
name = "ammunition (shotgun, blank)"
name = "ammunition (12g, blank)"
path = /obj/item/ammo_casing/shotgun/blank
category = "Arms and Ammunition"
/datum/autolathe/recipe/shotgun_beanbag
name = "ammunition (shotgun, beanbag)"
name = "ammunition (12g, beanbag)"
path = /obj/item/ammo_casing/shotgun/beanbag
category = "Arms and Ammunition"
/datum/autolathe/recipe/shotgun_flash
name = "ammunition (shotgun, flash)"
name = "ammunition (12g, flash)"
path = /obj/item/ammo_casing/shotgun/flash
category = "Arms and Ammunition"
/datum/autolathe/recipe/magazine_rubber
name = "ammunition (.45, rubber)"
path = /obj/item/ammo_magazine/c45m/rubber
/datum/autolathe/recipe/shotgun
name = "ammunition (12g, slug)"
path = /obj/item/ammo_casing/shotgun
hidden = 1
category = "Arms and Ammunition"
/datum/autolathe/recipe/magazine_flash
name = "ammunition (.45, flash)"
path = /obj/item/ammo_magazine/c45m/flash
/datum/autolathe/recipe/shotgun_pellet
name = "ammunition (12g, pellet)"
path = /obj/item/ammo_casing/shotgun/pellet
hidden = 1
category = "Arms and Ammunition"
/datum/autolathe/recipe/magazine_smg_rubber
name = "ammunition (9mm rubber top mounted)"
path = /obj/item/ammo_magazine/mc9mmt/rubber
/datum/autolathe/recipe/stunshell
name = "ammunition (stun cartridge, shotgun)"
path = /obj/item/ammo_casing/shotgun/stunshell
hidden = 1
category = "Arms and Ammunition"
//////////////////
/*Ammo magazines*/
//////////////////
// These should always be /empty! The idea is to fill them up manually with ammo clips.
/datum/autolathe/recipe/pistol_5mm
name = "pistol magazine (5mm)"
path = /obj/item/ammo_magazine/c5mm
category = "Arms and Ammunition"
hidden = 1
/datum/autolathe/recipe/smg_5mm
name = "top-mounted SMG magazine (5mm)"
path = /obj/item/ammo_magazine/c5mmt
category = "Arms and Ammunition"
hidden = 1
/datum/autolathe/recipe/pistol_45
name = "pistol magazine (.45)"
path = /obj/item/ammo_magazine/c45m/empty
category = "Arms and Ammunition"
/datum/autolathe/recipe/pistol_45uzi
name = "uzi magazine (.45)"
path = /obj/item/ammo_magazine/c45uzi/empty
category = "Arms and Ammunition"
hidden = 1
/datum/autolathe/recipe/tommymag
name = "Tommygun magazine (.45)"
path = /obj/item/ammo_magazine/tommymag/empty
category = "Arms and Ammunition"
hidden = 1
/datum/autolathe/recipe/tommydrum
name = "Tommygun drum magazine (.45)"
path = /obj/item/ammo_magazine/tommydrum/empty
category = "Arms and Ammunition"
hidden = 1
/datum/autolathe/recipe/pistol_9mm
name = "pistol magazine (9mm)"
path = /obj/item/ammo_magazine/mc9mm/empty
category = "Arms and Ammunition"
/datum/autolathe/recipe/smg_9mm
name = "top-mounted SMG magazine (9mm)"
path = /obj/item/ammo_magazine/mc9mmt/empty
category = "Arms and Ammunition"
/datum/autolathe/recipe/smg_10mm
name = "SMG magazine (10mm)"
path = /obj/item/ammo_magazine/a10mm/empty
category = "Arms and Ammunition"
hidden = 1
/datum/autolathe/recipe/pistol_50
name = "pistol magazine (.50AE)"
path = /obj/item/ammo_magazine/a50
category = "Arms and Ammunition"
hidden = 1
/datum/autolathe/recipe/rifle_556
name = "10rnd rifle magazine (5.56)"
path = /obj/item/ammo_magazine/a556/empty
category = "Arms and Ammunition"
/datum/autolathe/recipe/rifle_556m
name = "20rnd rifle magazine (5.56)"
path = /obj/item/ammo_magazine/a556m/empty
category = "Arms and Ammunition"
hidden = 1
/datum/autolathe/recipe/rifle_SVD
name = "10rnd rifle magazine (7.62mm)"
path = /obj/item/ammo_magazine/SVD/empty
category = "Arms and Ammunition"
hidden = 1
/datum/autolathe/recipe/rifle_762
name = "20rnd rifle magazine (7.62mm)"
path = /obj/item/ammo_magazine/c762/empty
category = "Arms and Ammunition"
hidden = 1
/datum/autolathe/recipe/machinegun_762
name = "machinegun box magazine (7.62)"
path = /obj/item/ammo_magazine/a762/empty
category = "Arms and Ammunition"
hidden = 1
/datum/autolathe/recipe/shotgun_magazine
name = "24rnd shotgun magazine (12g)"
path = /obj/item/ammo_magazine/g12/empty
category = "Arms and Ammunition"
hidden = 1
///////////////////////////////
/*Ammo clips and Speedloaders*/
///////////////////////////////
/datum/autolathe/recipe/speedloader_357
name = "speedloader (.357)"
path = /obj/item/ammo_magazine/a357
category = "Arms and Ammunition"
hidden = 1
/datum/autolathe/recipe/speedloader_38
name = "speedloader (.38)"
path = /obj/item/ammo_magazine/c38
category = "Arms and Ammunition"
hidden = 1
/datum/autolathe/recipe/speedloader_38r
name = "speedloader (.38 rubber)"
path = /obj/item/ammo_magazine/c38/rubber
category = "Arms and Ammunition"
/datum/autolathe/recipe/pistol_clip_45
name = "ammo clip (.45)"
path = /obj/item/ammo_magazine/clip/c45
category = "Arms and Ammunition"
hidden = 1
/datum/autolathe/recipe/pistol_clip_45r
name = "ammo clip (.45 rubber)"
path = /obj/item/ammo_magazine/clip/c45/rubber
category = "Arms and Ammunition"
/datum/autolathe/recipe/pistol_clip_45f
name = "ammo clip (.45 flash)"
path = /obj/item/ammo_magazine/clip/c45/flash
category = "Arms and Ammunition"
/datum/autolathe/recipe/pistol_clip_45p
name = "ammo clip (.45 practice)"
path = /obj/item/ammo_magazine/clip/c45/practice
category = "Arms and Ammunition"
/datum/autolathe/recipe/pistol_clip_9mm
name = "ammo clip (9mm)"
path = /obj/item/ammo_magazine/clip/c9mm
category = "Arms and Ammunition"
hidden = 1
/datum/autolathe/recipe/pistol_clip_9mmr
name = "ammo clip (9mm rubber)"
path = /obj/item/ammo_magazine/clip/c9mm/rubber
category = "Arms and Ammunition"
/datum/autolathe/recipe/pistol_clip_9mmp
name = "ammo clip (9mm practice)"
path = /obj/item/ammo_magazine/clip/c9mm/practice
category = "Arms and Ammunition"
/datum/autolathe/recipe/pistol_clip_9mmf
name = "ammo clip (9mm flash)"
path = /obj/item/ammo_magazine/clip/c9mm/flash
category = "Arms and Ammunition"
/datum/autolathe/recipe/pistol_clip_5mm
name = "ammo clip (5mm)"
path = /obj/item/ammo_magazine/clip/c5mm
category = "Arms and Ammunition"
hidden = 1
/datum/autolathe/recipe/pistol_clip_10mm
name = "ammo clip (10mm)"
path = /obj/item/ammo_magazine/clip/a10mm
category = "Arms and Ammunition"
hidden = 1
/datum/autolathe/recipe/pistol_clip_50
name = "ammo clip (.50AE)"
path = /obj/item/ammo_magazine/clip/a50
category = "Arms and Ammunition"
hidden = 1
/datum/autolathe/recipe/rifle_clip_762
name = "ammo clip (7.62mm)"
path = /obj/item/ammo_magazine/clip/a762
category = "Arms and Ammunition"
hidden = 1
/datum/autolathe/recipe/rifle_clip_762_practice
name = "ammo clip (7.62mm practice)"
path = /obj/item/ammo_magazine/clip/a762/practice
category = "Arms and Ammunition"
/datum/autolathe/recipe/rifle_clip_556
name = "ammo clip (5.56mm)"
path = /obj/item/ammo_magazine/clip/a556
category = "Arms and Ammunition"
hidden = 1
/datum/autolathe/recipe/rifle_clip_556_practice
name = "ammo clip (5.56mm practice)"
path = /obj/item/ammo_magazine/clip/a556/practice
category = "Arms and Ammunition"
//////////////
/datum/autolathe/recipe/consolescreen
name = "console screen"
path = /obj/item/weapon/stock_parts/console_screen
@@ -427,78 +638,6 @@
hidden = 1
category = "Arms and Ammunition"
/datum/autolathe/recipe/magazine_revolver_1
name = "ammunition (.357)"
path = /obj/item/ammo_magazine/a357
hidden = 1
category = "Arms and Ammunition"
/datum/autolathe/recipe/magazine_revolver_2
name = "ammunition (.45)"
path = /obj/item/ammo_magazine/c45m
hidden = 1
category = "Arms and Ammunition"
/datum/autolathe/recipe/magazine_stetchkin
name = "ammunition (9mm)"
path = /obj/item/ammo_magazine/mc9mm
hidden = 1
category = "Arms and Ammunition"
/datum/autolathe/recipe/magazine_stetchkin_flash
name = "ammunition (9mm, flash)"
path = /obj/item/ammo_magazine/mc9mm/flash
hidden = 1
category = "Arms and Ammunition"
/datum/autolathe/recipe/magazine_c20r
name = "ammunition (10mm)"
path = /obj/item/ammo_magazine/a10mm
hidden = 1
category = "Arms and Ammunition"
/datum/autolathe/recipe/magazine_arifle
name = "ammunition (7.62mm)"
path = /obj/item/ammo_magazine/c762
hidden = 1
category = "Arms and Ammunition"
/datum/autolathe/recipe/magazine_smg
name = "ammunition (9mm top mounted)"
path = /obj/item/ammo_magazine/mc9mmt
hidden = 1
category = "Arms and Ammunition"
/datum/autolathe/recipe/magazine_carbine
name = "ammunition (5.56mm)"
path = /obj/item/ammo_magazine/a556
hidden = 1
category = "Arms and Ammunition"
/datum/autolathe/recipe/shotgun
name = "ammunition (slug, shotgun)"
path = /obj/item/ammo_casing/shotgun
hidden = 1
category = "Arms and Ammunition"
/datum/autolathe/recipe/shotgun_pellet
name = "ammunition (shell, shotgun)"
path = /obj/item/ammo_casing/shotgun/pellet
hidden = 1
category = "Arms and Ammunition"
/datum/autolathe/recipe/tacknife
name = "tactical knife"
path = /obj/item/weapon/material/hatchet/tacknife
hidden = 1
category = "Arms and Ammunition"
/datum/autolathe/recipe/stunshell
name = "ammunition (stun cartridge, shotgun)"
path = /obj/item/ammo_casing/shotgun/stunshell
hidden = 1
category = "Arms and Ammunition"
/datum/autolathe/recipe/rcd
name = "rapid construction device"
path = /obj/item/weapon/rcd
@@ -534,3 +673,9 @@
path = /obj/item/weapon/material/knuckledusters
hidden = 1
category = "Arms and Ammunition"
/datum/autolathe/recipe/tacknife
name = "tactical knife"
path = /obj/item/weapon/material/hatchet/tacknife
hidden = 1
category = "Arms and Ammunition"

View File

@@ -95,7 +95,7 @@
energy_drain = 120
origin_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 6, TECH_POWER = 4)
projectile = /obj/item/projectile/beam/pulse/heavy
fire_sound = 'sound/weapons/marauder.ogg'
fire_sound = 'sound/weapons/gauss_shoot.ogg'
/obj/item/projectile/beam/pulse/heavy
name = "heavy pulse laser"
@@ -205,7 +205,7 @@
icon_state = "mecha_uac2"
equip_cooldown = 10
projectile = /obj/item/projectile/bullet/pistol/medium
fire_sound = 'sound/weapons/Gunshot.ogg'
fire_sound = 'sound/weapons/machinegun.ogg'
projectiles = 300
projectiles_per_shot = 3
deviation = 0.3
@@ -241,7 +241,7 @@
name = "\improper SRM-8 missile rack"
icon_state = "mecha_missilerack"
projectile = /obj/item/missile
fire_sound = 'sound/effects/bang.ogg'
fire_sound = 'sound/weapons/rpg.ogg'
projectiles = 8
projectile_energy_cost = 1000
equip_cooldown = 60

View File

@@ -42,7 +42,7 @@
ranged = 1
projectiletype = /obj/item/projectile/bullet
projectilesound = 'sound/weapons/Gunshot.ogg'
casingtype = /obj/item/ammo_casing/a357
casingtype = /obj/item/ammo_casing/spent
/mob/living/simple_animal/hostile/russian/death()

View File

@@ -107,7 +107,7 @@
rapid = 1
icon_state = "syndicateranged"
icon_living = "syndicateranged"
casingtype = /obj/item/ammo_casing/a10mm
casingtype = /obj/item/ammo_casing/spent
projectilesound = 'sound/weapons/Gunshot_light.ogg'
projectiletype = /obj/item/projectile/bullet/pistol/medium

View File

@@ -12,7 +12,7 @@
var/caliber = "" //Which kind of guns it can be loaded into
var/projectile_type //The bullet type to create when New() is called
var/obj/item/projectile/BB = null //The loaded bullet - make it so that the projectiles are created only when needed?
var/spent_icon = null
// var/spent_icon = null
/obj/item/ammo_casing/New()
..()
@@ -46,8 +46,10 @@
BB.name = "[initial(BB.name)] (\"[label_text]\")"
/obj/item/ammo_casing/update_icon()
if(spent_icon && !BB)
icon_state = spent_icon
/* if(spent_icon && !BB)
icon_state = spent_icon*/
if(!BB) // This is really just a much better way of doing this.
icon_state = "[initial(icon_state)]-spent"
/obj/item/ammo_casing/examine(mob/user)
..()
@@ -112,6 +114,24 @@
C.loc = src
stored_ammo.Insert(1, C) //add to the head of the list
update_icon()
if(istype(W, /obj/item/ammo_magazine/clip))
var/obj/item/ammo_magazine/clip/L = W
if(L.caliber != caliber)
user << "<span class='warning'>The ammo in [L] does not fit into [src].</span>"
return
if(!L.stored_ammo.len)
user << "<span class='warning'>There's no more ammo [L]!</span>"
return
if(stored_ammo.len >= max_ammo)
user << "<span class='warning'>[src] is full!</span>"
return
var/obj/item/ammo_casing/AC = L.stored_ammo[1] //select the next casing.
L.stored_ammo -= AC //Remove this casing from loaded list of the clip.
AC.loc = src
stored_ammo.Insert(1, AC) //add it to the head of our magazine's list
L.update_icon()
playsound(user.loc, 'sound/weapons/flipblade.ogg', 50, 1)
update_icon()
/obj/item/ammo_magazine/attack_self(mob/user)
if(!stored_ammo.len)

View File

@@ -1,17 +1,22 @@
// Don't set DEFAULT_WALL_MATERIAL under 75 or you'll risk giving away free ammo on the autolathe.
///////// .357 /////////
/obj/item/ammo_magazine/a357
//name = "ammo box (.357)"
//desc = "A box of .357 ammo"
//icon_state = "357"
name = "speedloader (.357)"
icon_state = "T38"
desc = "A speedloader for .357 revolvers."
icon_state = "38"
caliber = "357"
ammo_type = /obj/item/ammo_casing/a357
matter = list(DEFAULT_WALL_MATERIAL = 1260)
max_ammo = 7
matter = list(DEFAULT_WALL_MATERIAL = 1080)
max_ammo = 6
multiple_sprites = 1
///////// .38 /////////
/obj/item/ammo_magazine/c38
name = "speedloader (.38)"
desc = "A speedloader for .38 revolvers."
icon_state = "38"
caliber = "38"
matter = list(DEFAULT_WALL_MATERIAL = 360)
@@ -23,12 +28,14 @@
name = "speedloader (.38 rubber)"
ammo_type = /obj/item/ammo_casing/c38r
///////// .45 /////////
/obj/item/ammo_magazine/c45m
name = "magazine (.45)"
name = "pistol magazine (.45)"
icon_state = "45"
mag_type = MAGAZINE
ammo_type = /obj/item/ammo_casing/c45
matter = list(DEFAULT_WALL_MATERIAL = 525) //metal costs are very roughly based around 1 .45 casing = 75 metal
matter = list(DEFAULT_WALL_MATERIAL = 100) // Only cost of the magazine its self.
caliber = ".45"
max_ammo = 7
multiple_sprites = 1
@@ -46,17 +53,79 @@
/obj/item/ammo_magazine/c45m/flash
name = "magazine (.45 flash)"
ammo_type = "/obj/item/ammo_casing/c45f"
ammo_type = /obj/item/ammo_casing/c45f
/obj/item/ammo_magazine/c45uzi
name = "stick magazine (.45)"
icon_state = "uzi45"
mag_type = MAGAZINE
ammo_type = /obj/item/ammo_casing/c45
matter = list(DEFAULT_WALL_MATERIAL = 150)
caliber = ".45"
max_ammo = 16
multiple_sprites = 1
/obj/item/ammo_magazine/c45uzi/empty
initial_ammo = 0
/obj/item/ammo_magazine/tommymag
name = "tommygun magazine (.45)"
icon_state = "tommy-mag"
mag_type = MAGAZINE
ammo_type = /obj/item/ammo_casing/c45
matter = list(DEFAULT_WALL_MATERIAL = 200)
caliber = ".45"
max_ammo = 20
/obj/item/ammo_magazine/tommymag/empty
initial_ammo = 0
/obj/item/ammo_magazine/tommydrum
name = "tommygun drum magazine (.45)"
icon_state = "tommy-drum"
w_class = 3 // Bulky ammo doesn't fit in your pockets!
mag_type = MAGAZINE
ammo_type = /obj/item/ammo_casing/c45
matter = list(DEFAULT_WALL_MATERIAL = 500)
caliber = ".45"
max_ammo = 50
/obj/item/ammo_magazine/tommydrum/empty
initial_ammo = 0
/obj/item/ammo_magazine/clip/c45
name = "ammo clip (.45)"
icon_state = "clip_pistol"
desc = "A stripper clip for reloading .45 rounds into magazines."
caliber = ".45"
ammo_type = /obj/item/ammo_casing/c45
matter = list(DEFAULT_WALL_MATERIAL = 675) // metal costs very roughly based around one .45 casing = 75 metal
max_ammo = 9
multiple_sprites = 1
/obj/item/ammo_magazine/clip/c45/rubber
name = "ammo clip (.45 rubber)"
ammo_type = /obj/item/ammo_casing/c45r
/obj/item/ammo_magazine/clip/c45/practice
name = "ammo clip (.45 practice)"
ammo_type = /obj/item/ammo_casing/c45p
/obj/item/ammo_magazine/clip/c45/flash
name = "ammo clip (.45 flash)"
ammo_type = /obj/item/ammo_casing/c45f
///////// 9mm /////////
/obj/item/ammo_magazine/mc9mm
name = "magazine (9mm)"
icon_state = "9x19p"
origin_tech = list(TECH_COMBAT = 2)
mag_type = MAGAZINE
matter = list(DEFAULT_WALL_MATERIAL = 600)
matter = list(DEFAULT_WALL_MATERIAL = 100)
caliber = "9mm"
ammo_type = /obj/item/ammo_casing/c9mm
max_ammo = 10
max_ammo = 8
multiple_sprites = 1
/obj/item/ammo_magazine/mc9mm/empty
@@ -65,24 +134,16 @@
/obj/item/ammo_magazine/mc9mm/flash
ammo_type = /obj/item/ammo_casing/c9mmf
/obj/item/ammo_magazine/c9mm
name = "ammunition Box (9mm)"
icon_state = "9mm"
origin_tech = list(TECH_COMBAT = 2)
matter = list(DEFAULT_WALL_MATERIAL = 1800)
caliber = "9mm"
ammo_type = /obj/item/ammo_casing/c9mm
max_ammo = 30
/obj/item/ammo_magazine/c9mm/empty
initial_ammo = 0
/obj/item/ammo_magazine/mc9mm/rubber
name = "magazine (9mm rubber)"
ammo_type = /obj/item/ammo_casing/c9mmr
/obj/item/ammo_magazine/mc9mmt
name = "top mounted magazine (9mm)"
icon_state = "9mmt"
mag_type = MAGAZINE
ammo_type = /obj/item/ammo_casing/c9mm
matter = list(DEFAULT_WALL_MATERIAL = 1200)
matter = list(DEFAULT_WALL_MATERIAL = 250)
caliber = "9mm"
max_ammo = 20
multiple_sprites = 1
@@ -98,25 +159,81 @@
name = "top mounted magazine (9mm practice)"
ammo_type = /obj/item/ammo_casing/c9mmp
/obj/item/ammo_magazine/c45
name = "ammunition Box (.45)"
/obj/item/ammo_magazine/clip/c9mm
name = "ammo clip (9mm)"
icon_state = "clip_pistol"
desc = "A stripper clip for reloading 9mm rounds into magazines."
caliber = "9mm"
ammo_type = /obj/item/ammo_casing/c9mm
matter = list(DEFAULT_WALL_MATERIAL = 540) // metal costs are very roughly based around one 9mm casing = 60 metal
max_ammo = 9
multiple_sprites = 1
/obj/item/ammo_magazine/clip/c9mm/rubber
name = "ammo clip (.45 rubber)"
ammo_type = /obj/item/ammo_casing/c9mmr
/obj/item/ammo_magazine/clip/c9mm/practice
name = "ammo clip (.45 practice)"
ammo_type = /obj/item/ammo_casing/c9mmp
/obj/item/ammo_magazine/clip/c9mm/flash
name = "ammo clip (.45 flash)"
ammo_type = /obj/item/ammo_casing/c9mmf
/obj/item/ammo_magazine/c9mm // Exclusively for Prototype SMG and should probably be removed because why does it require DIAMONDS to make bullets?
name = "ammunition Box (9mm)"
icon_state = "9mm"
origin_tech = list(TECH_COMBAT = 2)
caliber = ".45"
matter = list(DEFAULT_WALL_MATERIAL = 2250)
ammo_type = /obj/item/ammo_casing/c45
matter = list(DEFAULT_WALL_MATERIAL = 1800)
caliber = "9mm"
ammo_type = /obj/item/ammo_casing/c9mm
max_ammo = 30
/obj/item/ammo_magazine/c9mm/empty
initial_ammo = 0
///////// 5mm /////////
/obj/item/ammo_magazine/c5mmt
name = "top mounted magazine (5mm)"
icon_state = "p90"
mag_type = MAGAZINE
ammo_type = /obj/item/ammo_casing/c5mm
matter = list(DEFAULT_WALL_MATERIAL = 500)
caliber = "5mm"
max_ammo = 50
multiple_sprites = 1
/obj/item/ammo_magazine/c5mm
name = "magazine (5mm)"
icon_state = "fiveseven"
mag_type = MAGAZINE
ammo_type = /obj/item/ammo_casing/c5mm
matter = list(DEFAULT_WALL_MATERIAL = 200)
caliber = "5mm"
max_ammo = 20
//multiple_sprites = 1
/obj/item/ammo_magazine/clip/c5mm
name = "ammo clip (5mm)"
icon_state = "clip_pistol"
desc = "A stripper clip for reloading 5mm rounds into magazines."
caliber = "5mm"
ammo_type = /obj/item/ammo_casing/c5mm
matter = list(DEFAULT_WALL_MATERIAL = 540) // metal costs are very roughly based around one 5mm casing = 60 metal
max_ammo = 9
multiple_sprites = 1
///////// 10mm /////////
/obj/item/ammo_magazine/a10mm
name = "magazine (10mm)"
icon_state = "12mm"
origin_tech = list(TECH_COMBAT = 2)
mag_type = MAGAZINE
caliber = "10mm"
matter = list(DEFAULT_WALL_MATERIAL = 1500)
matter = list(DEFAULT_WALL_MATERIAL = 250)
ammo_type = /obj/item/ammo_casing/a10mm
max_ammo = 20
multiple_sprites = 1
@@ -124,13 +241,25 @@
/obj/item/ammo_magazine/a10mm/empty
initial_ammo = 0
/obj/item/ammo_magazine/clip/a10mm
name = "ammo clip (10mm)"
icon_state = "clip_pistol"
desc = "A stripper clip for reloading 5mm rounds into magazines."
caliber = "10mm"
ammo_type = /obj/item/ammo_casing/a10mm
matter = list(DEFAULT_WALL_MATERIAL = 675) // metal costs are very roughly based around one 10mm casing = 75 metal
max_ammo = 9
multiple_sprites = 1
///////// 5.56mm /////////
/obj/item/ammo_magazine/a556
name = "magazine (5.56mm)"
icon_state = "5.56"
origin_tech = list(TECH_COMBAT = 2)
mag_type = MAGAZINE
caliber = "a556"
matter = list(DEFAULT_WALL_MATERIAL = 1800)
matter = list(DEFAULT_WALL_MATERIAL = 150)
ammo_type = /obj/item/ammo_casing/a556
max_ammo = 10
multiple_sprites = 1
@@ -146,13 +275,55 @@
name = "magazine (5.56mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a556/ap
/obj/item/ammo_magazine/a556m
name = "20rnd magazine (5.56mm)"
icon_state = "5.56mid"
origin_tech = list(TECH_COMBAT = 2)
mag_type = MAGAZINE
caliber = "a556"
matter = list(DEFAULT_WALL_MATERIAL = 300)
ammo_type = /obj/item/ammo_casing/a556
max_ammo = 20
multiple_sprites = 1
/obj/item/ammo_magazine/a556m/empty
initial_ammo = 0
/obj/item/ammo_magazine/a556m/ap
name = "20rnd magazine (5.56mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a556/ap
/obj/item/ammo_magazine/a556m/practice
name = "20rnd magazine (5.56mm practice)"
ammo_type = /obj/item/ammo_casing/a556p
/obj/item/ammo_magazine/clip/a556
name = "ammo clip (5.56mm)"
icon_state = "clip_rifle"
caliber = "a556"
ammo_type = /obj/item/ammo_casing/a556
matter = list(DEFAULT_WALL_MATERIAL = 450)
// metal costs are very roughly based around one 10mm casing = 180 metal
max_ammo = 5
multiple_sprites = 1
/obj/item/ammo_magazine/clip/a556/ap
name = "rifle clip (7.62mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a556/ap
/obj/item/ammo_magazine/clip/a556/practice
name = "rifle clip (7.62mm practice)"
ammo_type = /obj/item/ammo_casing/a556
///////// .50 AE /////////
/obj/item/ammo_magazine/a50
name = "magazine (.50)"
name = "magazine (.50 AE)"
icon_state = "50ae"
origin_tech = list(TECH_COMBAT = 2)
mag_type = MAGAZINE
caliber = ".50"
matter = list(DEFAULT_WALL_MATERIAL = 1260)
matter = list(DEFAULT_WALL_MATERIAL = 150)
ammo_type = /obj/item/ammo_casing/a50
max_ammo = 7
multiple_sprites = 1
@@ -160,17 +331,17 @@
/obj/item/ammo_magazine/a50/empty
initial_ammo = 0
/obj/item/ammo_magazine/a75
name = "ammo magazine (20mm)"
icon_state = "75"
mag_type = MAGAZINE
caliber = "75"
ammo_type = /obj/item/ammo_casing/a75
/obj/item/ammo_magazine/clip/a50
name = "ammo clip (.50 AE)"
icon_state = "clip_pistol"
desc = "A stripper clip for reloading .50 Action Express rounds into magazines."
caliber = ".50"
ammo_type = /obj/item/ammo_casing/a50
matter = list(DEFAULT_WALL_MATERIAL = 1620) // metal costs are very roughly based around one .50 casing = 180 metal
max_ammo = 9
multiple_sprites = 1
max_ammo = 4
/obj/item/ammo_magazine/a75/empty
initial_ammo = 0
///////// 7.62mm /////////
/obj/item/ammo_magazine/a762
name = "magazine box (7.62mm)"
@@ -178,7 +349,7 @@
origin_tech = list(TECH_COMBAT = 2)
mag_type = MAGAZINE
caliber = "a762"
matter = list(DEFAULT_WALL_MATERIAL = 4500)
matter = list(DEFAULT_WALL_MATERIAL = 10000)
ammo_type = /obj/item/ammo_casing/a762
max_ammo = 50
multiple_sprites = 1
@@ -195,7 +366,7 @@
icon_state = "c762"
mag_type = MAGAZINE
caliber = "a762"
matter = list(DEFAULT_WALL_MATERIAL = 1800)
matter = list(DEFAULT_WALL_MATERIAL = 4000)
ammo_type = /obj/item/ammo_casing/a762
max_ammo = 20
multiple_sprites = 1
@@ -204,22 +375,51 @@
name = "magazine (7.62mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a762/ap
/obj/item/ammo_magazine/caps
name = "speed loader (caps)"
icon_state = "T38"
caliber = "caps"
color = "#FF0000"
ammo_type = /obj/item/ammo_casing/cap
matter = list(DEFAULT_WALL_MATERIAL = 600)
max_ammo = 7
/obj/item/ammo_magazine/c762/empty
initial_ammo = 0
/obj/item/ammo_magazine/SVD
name = "\improper SVD magazine (7.62mm)"
icon_state = "SVD"
mag_type = MAGAZINE
caliber = "a762"
matter = list(DEFAULT_WALL_MATERIAL = 2000)
ammo_type = /obj/item/ammo_casing/a762
max_ammo = 10
multiple_sprites = 1
/obj/item/ammo_magazine/SVD/empty
initial_ammo = 0
/obj/item/ammo_magazine/SVD/ap
name = "\improper SVD magazine (7.62mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a762/ap
/obj/item/ammo_magazine/clip/a762
name = "ammo clip (7.62mm)"
icon_state = "clip_rifle"
caliber = "a762"
ammo_type = /obj/item/ammo_casing/a762
matter = list(DEFAULT_WALL_MATERIAL = 1000) // metal costs are very roughly based around one 7.62 casing = 200 metal
max_ammo = 5
multiple_sprites = 1
/obj/item/ammo_magazine/clip/a762/ap
name = "rifle clip (7.62mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a762/ap
/obj/item/ammo_magazine/clip/a762/practice
name = "rifle clip (7.62mm practice)"
ammo_type = /obj/item/ammo_casing/a762p
///////// 12g /////////
/obj/item/ammo_magazine/g12
name = "magazine (12 gauge)"
icon_state = "g12"
mag_type = MAGAZINE
caliber = "shotgun"
matter = list(DEFAULT_WALL_MATERIAL = 2200)
matter = list(DEFAULT_WALL_MATERIAL = 200)
ammo_type = /obj/item/ammo_casing/shotgun
max_ammo = 24
multiple_sprites = 1
@@ -238,3 +438,29 @@
/obj/item/ammo_magazine/g12/empty
initial_ammo = 0
///////// .75 Gyrojet /////////
/obj/item/ammo_magazine/a75
name = "ammo magazine (.75 Gyrojet)"
icon_state = "75"
mag_type = MAGAZINE
caliber = "75"
ammo_type = /obj/item/ammo_casing/a75
multiple_sprites = 1
max_ammo = 4
/obj/item/ammo_magazine/a75/empty
initial_ammo = 0
///////// Misc. /////////
/obj/item/ammo_magazine/caps
name = "speedloader (caps)"
icon_state = "T38"
caliber = "caps"
color = "#FF0000"
ammo_type = /obj/item/ammo_casing/cap
matter = list(DEFAULT_WALL_MATERIAL = 600)
max_ammo = 7
multiple_sprites = 1

View File

@@ -9,7 +9,7 @@
projectile_type = /obj/item/projectile/bullet/pistol/strong
/obj/item/ammo_casing/a75
desc = "A 20mm bullet casing."
desc = "A .75 gyrojet rocket sheathe."
caliber = "75"
projectile_type = /obj/item/projectile/bullet/gyro
@@ -21,6 +21,7 @@
/obj/item/ammo_casing/c38r
desc = "A .38 rubber bullet casing."
caliber = "38"
icon_state = "r-casing"
projectile_type = /obj/item/projectile/bullet/pistol/rubber
/obj/item/ammo_casing/c9mm
@@ -31,18 +32,25 @@
/obj/item/ammo_casing/c9mmf
desc = "A 9mm flash shell casing."
caliber = "9mm"
icon_state = "r-casing"
projectile_type = /obj/item/projectile/energy/flash
/obj/item/ammo_casing/c9mmr
desc = "A 9mm rubber bullet casing."
caliber = "9mm"
icon_state = "r-casing"
projectile_type = /obj/item/projectile/bullet/pistol/rubber
/obj/item/ammo_casing/c9mmp
desc = "A 9mm practice bullet casing."
caliber = "9mm"
icon_state = "r-casing"
projectile_type = /obj/item/projectile/bullet/pistol/practice
/obj/item/ammo_casing/c5mm
desc = "A 5mm bullet casing."
caliber = "5mm"
projectile_type = /obj/item/projectile/bullet/pistol/small
/obj/item/ammo_casing/c45
desc = "A .45 bullet casing."
@@ -52,16 +60,19 @@
/obj/item/ammo_casing/c45p
desc = "A .45 practice bullet casing."
caliber = ".45"
icon_state = "r-casing"
projectile_type = /obj/item/projectile/bullet/pistol/practice
/obj/item/ammo_casing/c45r
desc = "A .45 rubber bullet casing."
caliber = ".45"
icon_state = "r-casing"
projectile_type = /obj/item/projectile/bullet/pistol/rubber
/obj/item/ammo_casing/c45f
desc = "A .45 flash shell casing."
caliber = ".45"
icon_state = "r-casing"
projectile_type = /obj/item/projectile/energy/flash
/obj/item/ammo_casing/a10mm
@@ -112,7 +123,6 @@
name = "stun shell"
desc = "A 12 gauge taser cartridge."
icon_state = "stunshell"
spent_icon = "stunshell-spent"
projectile_type = /obj/item/projectile/energy/electrode/stunshot
matter = list(DEFAULT_WALL_MATERIAL = 360, "glass" = 720)
@@ -131,18 +141,27 @@
/obj/item/ammo_casing/a762
desc = "A 7.62mm bullet casing."
caliber = "a762"
icon_state = "rifle-casing"
projectile_type = /obj/item/projectile/bullet/rifle/a762
/obj/item/ammo_casing/a762/ap
desc = "A 7.62mm armor-piercing bullet casing."
caliber = "a762"
projectile_type = /obj/item/projectile/bullet/rifle/a762/ap
/obj/item/ammo_casing/a762p
desc = "A 7.62mm practice bullet casing."
caliber = "a762"
icon_state = "rifle-casing" // Need to make an icon for these
projectile_type = /obj/item/projectile/bullet/rifle/practice
/obj/item/ammo_casing/a762/blank
desc = "A blank 7.62mm bullet casing."
projectile_type = /obj/item/projectile/bullet/blank
matter = list(DEFAULT_WALL_MATERIAL = 90)
/obj/item/ammo_casing/a145
name = "shell casing"
desc = "A 14.5mm shell."
icon_state = "lcasing"
spent_icon = "lcasing-spent"
caliber = "14.5mm"
projectile_type = /obj/item/projectile/bullet/rifle/a145
matter = list(DEFAULT_WALL_MATERIAL = 1250)
@@ -150,17 +169,18 @@
/obj/item/ammo_casing/a556
desc = "A 5.56mm bullet casing."
caliber = "a556"
icon_state = "rifle-casing"
projectile_type = /obj/item/projectile/bullet/rifle/a556
/obj/item/ammo_casing/a556/ap
desc = "A 5.56mm armor-piercing bullet casing."
caliber = "a556"
projectile_type = /obj/item/projectile/bullet/rifle/a556/ap
/obj/item/ammo_casing/a556p
desc = "A 5.56mm practice bullet casing."
caliber = "a556"
projectile_type = /obj/item/projectile/bullet/rifle/a556/practice
icon_state = "rifle-casing" // Need to make an icon for these
projectile_type = /obj/item/projectile/bullet/rifle/practice
/obj/item/ammo_casing/rocket
name = "rocket shell"
@@ -173,5 +193,11 @@
name = "cap"
desc = "A cap for children toys."
caliber = "caps"
icon_state = "r-casing"
color = "#FF0000"
projectile_type = /obj/item/projectile/bullet/pistol/cap
/obj/item/ammo_casing/spent // For mobs only.
icon_state = "s-casing-spent"
BB = null
projectile_type = null

View File

@@ -251,7 +251,8 @@
//called after successfully firing
/obj/item/weapon/gun/proc/handle_post_fire(mob/user, atom/target, var/pointblank=0, var/reflex=0)
if(silenced)
playsound(user, fire_sound, 10, 1)
/*playsound(user, fire_sound, 10, 1)*/
playsound(user, 'sound/weapons/silenced.ogg', 10, 1)
else
playsound(user, fire_sound, 50, 1)
@@ -362,7 +363,8 @@
if (istype(in_chamber))
user.visible_message("<span class = 'warning'>[user] pulls the trigger.</span>")
if(silenced)
playsound(user, fire_sound, 10, 1)
/*playsound(user, fire_sound, 10, 1)*/
playsound(user, 'sound/weapons/silenced.ogg', 10, 1)
else
playsound(user, fire_sound, 50, 1)
if(istype(in_chamber, /obj/item/projectile/beam/lastertag))

View File

@@ -90,7 +90,7 @@ obj/item/weapon/gun/energy/retro
standard photonic beams, resulting in an effective 'anti-armor' energy weapon."
icon_state = "xray"
item_state = "xray"
fire_sound = 'sound/weapons/laser3.ogg'
fire_sound = 'sound/weapons/eluger.ogg'
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 3, TECH_MAGNET = 2)
projectile_type = /obj/item/projectile/beam/xray
charge_cost = 100
@@ -101,8 +101,8 @@ obj/item/weapon/gun/energy/retro
desc = "The HI DMR 9E is an older design of Hesphaistos Industries. A designated marksman rifle capable of shooting powerful \
ionized beams, this is a weapon to kill from a distance."
icon_state = "sniper"
item_state = "laser"
fire_sound = 'sound/weapons/marauder.ogg'
item_state = "laser" // placeholder
fire_sound = 'sound/weapons/gauss_shoot.ogg'
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 5, TECH_POWER = 4)
projectile_type = /obj/item/projectile/beam/sniper
slot_flags = SLOT_BACK

View File

@@ -7,13 +7,14 @@
force = 10
fire_sound='sound/weapons/Laser.ogg'
projectile_type = /obj/item/projectile/beam
charge_cost=100
max_shots = 20 // This is cut in half by "DESTROY" mode.
sel_mode = 2
max_shots = 10
firemodes = list(
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, fire_sound='sound/weapons/Taser.ogg', fire_delay=null, charge_cost=null),
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, fire_sound='sound/weapons/Laser.ogg', fire_delay=null, charge_cost=null),
list(mode_name="DESTROY", projectile_type=/obj/item/projectile/beam/pulse, fire_sound='sound/weapons/pulse.ogg', fire_delay=null, charge_cost=100),
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, fire_sound='sound/weapons/Taser.ogg', fire_delay=null, charge_cost=100),
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, fire_sound='sound/weapons/Laser.ogg', fire_delay=null, charge_cost=100),
list(mode_name="DESTROY", projectile_type=/obj/item/projectile/beam/pulse, fire_sound='sound/weapons/gauss_shoot.ogg', fire_delay=null, charge_cost=200),
)
/obj/item/weapon/gun/energy/pulse_rifle/mounted
@@ -25,7 +26,7 @@
desc = "A heavy-duty, pulse-based energy weapon. Because of its complexity and cost, it is rarely seen in use except by specialists."
cell_type = /obj/item/weapon/cell/super
fire_delay = 25
fire_sound='sound/weapons/pulse.ogg'
fire_sound='sound/weapons/gauss_shoot.ogg'
projectile_type=/obj/item/projectile/beam/pulse
charge_cost=400

View File

@@ -19,7 +19,7 @@
/obj/item/weapon/gun/energy/ionrifle/update_icon()
..()
if(power_supply.charge < charge_cost)
item_state = "ionrifle-empty"
item_state = "ionrifle0"
else
item_state = initial(item_state)

View File

@@ -60,6 +60,7 @@
grenades.len--
user.put_in_hands(G)
user.visible_message("[user] removes \a [G] from [src].", "<span class='notice'>You remove \a [G] from [src].</span>")
playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1)
else
user << "<span class='warning'>[src] is empty.</span>"
@@ -117,6 +118,7 @@
if(chambered)
user.put_in_hands(chambered)
user.visible_message("[user] removes \a [chambered] from [src].", "<span class='notice'>You remove \a [chambered] from [src].</span>")
playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1)
chambered = null
else
user << "<span class='warning'>[src] is empty.</span>"

View File

@@ -54,6 +54,7 @@
item_storage.remove_from_storage(removing, src.loc)
user.put_in_hands(removing)
user << "You remove [removing] from the hopper."
playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1)
else
user << "There is nothing to remove in \the [src]."

View File

@@ -10,7 +10,7 @@
flags = CONDUCT
slot_flags = 0
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 5)
fire_sound = 'sound/effects/bang.ogg'
fire_sound = 'sound/weapons/rpg.ogg'
release_force = 15
throw_distance = 30

View File

@@ -31,6 +31,7 @@
/obj/item/weapon/syringe_cartridge/attack_self(mob/user)
if(syringe)
user << "<span class='notice'>You remove [syringe] from [src].</span>"
playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1)
user.put_in_hands(syringe)
syringe = null
sharp = initial(sharp)
@@ -114,6 +115,7 @@
darts -= C
user.put_in_hands(C)
user.visible_message("[user] removes \a [C] from [src].", "<span class='notice'>You remove \a [C] from [src].</span>")
playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1)
else
..()

View File

@@ -24,6 +24,7 @@
//For MAGAZINE guns
var/magazine_type = null //the type of magazine that the gun comes preloaded with
var/obj/item/ammo_magazine/ammo_magazine = null //stored magazine
var/allowed_magazines //determines list of which magazines will fit in the gun
var/auto_eject = 0 //if the magazine should automatically eject itself when empty.
var/auto_eject_sound = null
//TODO generalize ammo icon states for guns
@@ -96,9 +97,9 @@
/obj/item/weapon/gun/projectile/proc/load_ammo(var/obj/item/A, mob/user)
if(istype(A, /obj/item/ammo_magazine))
var/obj/item/ammo_magazine/AM = A
if(!(load_method & AM.mag_type) || caliber != AM.caliber)
return //incompatible
if(!(load_method & AM.mag_type) || caliber != AM.caliber || allowed_magazines && !is_type_in_list(A, allowed_magazines))
user << "<span class='warning'>[AM] won't load into [src]!</span>"
return
switch(AM.mag_type)
if(MAGAZINE)
if(ammo_magazine)
@@ -167,6 +168,7 @@
loaded.len--
user.put_in_hands(C)
user.visible_message("[user] removes \a [C] from [src].", "<span class='notice'>You remove \a [C] from [src].</span>")
playsound(src.loc, 'sound/weapons/empty.ogg', 50, 1)
else
user << "<span class='warning'>[src] is empty.</span>"
update_icon()

View File

@@ -17,21 +17,10 @@
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-1,-1), dispersion=list(0.0, 0.6, 1.0)),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-1,-1), dispersion=list(0.0, 0.6, 1.0))
// list(mode_name="short bursts", burst=5, fire_delay=null, move_delay=4, burst_accuracy=list(0,-1,-1,-2,-2), dispersion=list(0.6, 1.0, 1.0, 1.0, 1.2)),
)
/obj/item/weapon/gun/projectile/automatic/mini_uzi
name = "\improper Uzi"
desc = "The UZI is a lightweight, fast firing gun. For when you want someone dead. Uses .45 rounds."
icon_state = "mini-uzi"
w_class = 3
load_method = SPEEDLOADER //yup. until someone sprites a magazine for it.
max_shells = 15
caliber = ".45"
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2, TECH_ILLEGAL = 8)
ammo_type = /obj/item/ammo_casing/c45
/obj/item/weapon/gun/projectile/automatic/c20r
name = "submachine gun"
desc = "The C-20r is a lightweight and rapid firing SMG, for when you REALLY need someone dead. Uses 10mm rounds. Has a 'Scarborough Arms - Per falcis, per pravitas' buttstamp."
@@ -45,6 +34,7 @@
fire_sound = 'sound/weapons/Gunshot_light.ogg'
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/a10mm
allowed_magazines = list(/obj/item/ammo_magazine/a10mm)
auto_eject = 1
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
@@ -71,17 +61,21 @@
slot_flags = SLOT_BACK
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/c762
allowed_magazines = list(/obj/item/ammo_magazine/c762, /obj/item/ammo_magazine/SVD)
one_handed_penalty = 4
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=6, burst_accuracy=list(0,-1,-2), dispersion=list(0.0, 0.6, 0.6)),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=6, burst_accuracy=list(0,-1,-2), dispersion=list(0.0, 0.6, 0.6))
// list(mode_name="short bursts", burst=5, fire_delay=null, move_delay=6, burst_accuracy=list(0,-1,-2,-2,-3), dispersion=list(0.6, 1.0, 1.0, 1.0, 1.2)),
)
/obj/item/weapon/gun/projectile/automatic/sts35/update_icon(var/ignore_inhands)
..()
if(istype(ammo_magazine,/obj/item/ammo_magazine/SVD))
icon_state = "arifle-small"
else
icon_state = (ammo_magazine)? "arifle" : "arifle-empty"
if(!ignore_inhands) update_held_icon()
@@ -98,6 +92,7 @@
fire_sound = 'sound/weapons/Gunshot_light.ogg'
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/mc9mmt/rubber
allowed_magazines = list(/obj/item/ammo_magazine/mc9mmt)
/obj/item/weapon/gun/projectile/automatic/wt550/update_icon()
..()
@@ -116,11 +111,12 @@
force = 10
caliber = "a556"
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 3)
ammo_type = "/obj/item/ammo_casing/a556"
ammo_type = "/obj/item/ammo_casing/a556" // Is this really needed anymore?
fire_sound = 'sound/weapons/Gunshot.ogg'
slot_flags = SLOT_BACK
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/a556
allowed_magazines = list(/obj/item/ammo_magazine/a556)
auto_eject = 1
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
@@ -180,7 +176,7 @@
name = "light machine gun"
desc = "A rather traditionally made L6 SAW with a pleasantly lacquered wooden pistol grip. Has 'Aussec Armoury- 2531' engraved on the reciever"
icon_state = "l6closed100"
item_state = "l6closedmag"
item_state = "l6closed"
w_class = 4
force = 10
slot_flags = 0
@@ -188,17 +184,18 @@
caliber = "a762"
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 2)
slot_flags = SLOT_BACK
ammo_type = "/obj/item/ammo_casing/a762"
ammo_type = "/obj/item/ammo_casing/a762" // Is this really needed anymore?
fire_sound = 'sound/weapons/Gunshot_light.ogg'
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/a762
allowed_magazines = list(/obj/item/ammo_magazine/a762, /obj/item/ammo_magazine/c762)
one_handed_penalty = 6
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-1,-1), dispersion=list(0.0, 0.6, 1.0)),
list(mode_name="short bursts", burst=5, move_delay=6, burst_accuracy = list(0,-1,-1,-2,-2), dispersion = list(0.6, 1.0, 1.0, 1.0, 1.2)),
list(mode_name="short bursts", burst=5, move_delay=6, burst_accuracy = list(0,-1,-1,-2,-2), dispersion = list(0.6, 1.0, 1.0, 1.0, 1.2))
)
var/cover_open = 0
@@ -213,6 +210,7 @@
cover_open = !cover_open
user << "<span class='notice'>You [cover_open ? "open" : "close"] [src]'s cover.</span>"
update_icon()
update_held_icon()
/obj/item/weapon/gun/projectile/automatic/l6_saw/attack_self(mob/user as mob)
if(cover_open)
@@ -227,7 +225,13 @@
return ..() //once open, behave like normal
/obj/item/weapon/gun/projectile/automatic/l6_saw/update_icon()
if(istype(ammo_magazine,/obj/item/ammo_magazine/c762))
icon_state = "l6[cover_open ? "open" : "closed"]mag"
item_state = icon_state
else
icon_state = "l6[cover_open ? "open" : "closed"][ammo_magazine ? round(ammo_magazine.stored_ammo.len, 25) : "-empty"]"
item_state = "l6[cover_open ? "open" : "closed"][ammo_magazine ? "" : "-empty"]"
update_held_icon()
/obj/item/weapon/gun/projectile/automatic/l6_saw/load_ammo(var/obj/item/A, mob/user)
if(!cover_open)
@@ -249,16 +253,18 @@
w_class = 4
force = 10
caliber = "shotgun"
fire_sound = 'sound/weapons/shotgun.ogg'
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4)
slot_flags = SLOT_BACK
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/g12
allowed_magazines = list(/obj/item/ammo_magazine/g12)
one_handed_penalty = 4
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0),
list(mode_name="3-round bursts", burst=3, move_delay=6, burst_accuracy = list(0,-1,-1,-2,-2), dispersion = list(0.0, 0.6, 0.6)),
list(mode_name="3-round bursts", burst=3, move_delay=6, burst_accuracy = list(0,-1,-1,-2,-2), dispersion = list(0.0, 0.6, 0.6))
// list(mode_name="6-round bursts", burst=6, move_delay=6, burst_accuracy = list(0,-1,-1,-2,-2), dispersion = list(0.6, 1.0, 1.0, 1.0, 1.2, 1.2)),
)
@@ -270,5 +276,99 @@
icon_state = "ashot"
return
/obj/item/weapon/gun/projectile/automatic/mini_uzi
name = "\improper Uzi"
desc = "A lightweight, compact, fast firing gun, for when you want someone really dead. Uses .45 rounds."
icon_state = "mini-uzi"
w_class = 3
load_method = MAGAZINE
caliber = ".45"
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2, TECH_ILLEGAL = 5)
magazine_type = /obj/item/ammo_magazine/c45uzi
allowed_magazines = list(/obj/item/ammo_magazine/c45uzi)
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0),
list(mode_name="short bursts", burst=4, burst_delay=1, fire_delay=3, move_delay=3, burst_accuracy = list(0,-1,-1,-2), dispersion = list(0.6, 1.0, 1.0, 1.2))
)
/obj/item/weapon/gun/projectile/automatic/mini_uzi/update_icon()
..()
if(ammo_magazine)
icon_state = "mini-uzi"
else
icon_state = "mini-uzi-empty"
/obj/item/weapon/gun/projectile/automatic/p90
name = "\improper FN P90"
desc = "Despite its fierce reputation, it still manages to feel like a toy. Uses 5mm rounds."
icon_state = "p90smg"
item_state = "p90"
w_class = 3
caliber = "5mm"
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2)
slot_flags = SLOT_BELT // ToDo: Belt sprite.
fire_sound = 'sound/weapons/Gunshot_light.ogg'
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/c5mmt
allowed_magazines = list(/obj/item/ammo_magazine/c5mmt)
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0),
list(mode_name="short bursts", burst=5, burst_delay=1, fire_delay=4, move_delay=4, burst_accuracy = list(0,-1,-1,-2,-2), dispersion = list(0.6, 1.0, 1.0, 1.2, 1.2)),
)
/obj/item/weapon/gun/projectile/automatic/p90/update_icon()
icon_state = "p90smg-[ammo_magazine ? round(ammo_magazine.stored_ammo.len, 6) : "empty"]"
/obj/item/weapon/gun/projectile/automatic/tommygun
name = "\improper M1A1 \"Thompson\""
desc = "Some little typewriter, huh? I'm gonna write my name all over this town with big letters! Uses .45 rounds."
icon_state = "tommygun"
w_class = 3
caliber = ".45"
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2, TECH_ILLEGAL = 5)
slot_flags = SLOT_BELT // ToDo: Belt sprite.
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/tommymag
allowed_magazines = list(/obj/item/ammo_magazine/tommymag, /obj/item/ammo_magazine/tommydrum)
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0),
list(mode_name="short bursts", burst=5, move_delay=6, burst_accuracy = list(0,-1,-1,-2,-2), dispersion = list(0.6, 1.0, 1.0, 1.0, 1.2)),
)
/obj/item/weapon/gun/projectile/automatic/tommygun/update_icon()
..()
icon_state = (ammo_magazine)? "tommygun" : "tommygun-empty"
// update_held_icon()
/obj/item/weapon/gun/projectile/automatic/fn3000
name = "bullpup assault rifle"
desc = "The tacticool bullpup configured FN3000 is a light, compact, military-grade assault rifle that is most <i>definitely</i> illegal for civilians to own. What fun! Uses 5.56mm rounds."
icon_state = "bullpupm"
item_state = "bullpup"
w_class = 4
force = 10
caliber = "a556"
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4)
slot_flags = SLOT_BACK
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/a556m
allowed_magazines = list(/obj/item/ammo_magazine/a556, /obj/item/ammo_magazine/a556m)
one_handed_penalty = 4
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=6, burst_accuracy=list(0,-1,-2), dispersion=list(0.0, 0.6, 0.6))
)
/obj/item/weapon/gun/projectile/automatic/fn3000/update_icon(var/ignore_inhands)
..()
if(istype(ammo_magazine,/obj/item/ammo_magazine/a556m))
icon_state = "bullpupm"
else
icon_state = (ammo_magazine)? "bullpup" : "bullpup-empty"
item_state = (ammo_magazine)? "bullpup" : "bullpup-empty"
if(!ignore_inhands) update_held_icon()

View File

@@ -0,0 +1,52 @@
// For all intents and purposes, these work exactly the same as pump shotguns. It's unnecessary to make their own procs for them.
/obj/item/weapon/gun/projectile/shotgun/pump/rifle
name = "bolt action rifle"
desc = "A reproduction of an almost ancient weapon design from the early 20th century. It's still popular among hunters and collectors due to its reliability. Uses 7.62mm rounds."
item_state = "boltaction"
icon_state = "boltaction"
fire_sound = 'sound/weapons/rifleshot.ogg'
max_shells = 5
caliber = "a762"
origin_tech = list(TECH_COMBAT = 1)// Old as shit rifle doesn't have very good tech.
ammo_type = /obj/item/ammo_casing/a762
load_method = SINGLE_CASING|SPEEDLOADER
action_sound = 'sound/weapons/riflebolt.ogg'
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice // For target practice
desc = "A bolt-action rifle with a lightweight synthetic wood stock, designed for competitive shooting. Comes shipped with practice rounds pre-loaded into the gun. Popular among professional marksmen. Uses 7.62mm rounds."
ammo_type = /obj/item/ammo_casing/a762p
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/ceremonial
name = "ceremonial bolt-action rifle"
desc = "A bolt-action rifle decorated with dazzling engravings across the stock. Usually loaded with blanks, but can fire live rounds. Popular among well-dressed guardsmen. Uses 7.62mm rounds."
ammo_type = /obj/item/ammo_casing/a762/blank
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/mosin
name = "\improper Mosin Nagant"
desc = "How else are you going to arm five people for just $400? Uses 7.62mm rounds."
icon_state = "mosin"
item_state = "mosin"
// Stole hacky terrible code from doublebarrel shotgun. -Spades
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/mosin/attackby(var/obj/item/A as obj, mob/user as mob)
if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/melee/energy) || istype(A, /obj/item/weapon/pickaxe/plasmacutter) && w_class != 3)
user << "<span class='notice'>You begin to shorten the barrel and stock of \the [src].</span>"
if(loaded.len)
afterattack(user, user) //will this work? //it will. we call it twice, for twice the FUN
playsound(user, fire_sound, 50, 1)
user.visible_message("<span class='danger'>[src] goes off!</span>", "<span class='danger'>The rifle goes off in your face!</span>")
return
if(do_after(user, 30)) //SHIT IS STEALTHY EYYYYY
icon_state = "obrez"
w_class = 3
recoil = 2 // Owch
accuracy = -1 // You know damn well why.
item_state = "gun"
slot_flags &= ~SLOT_BACK //you can't sling it on your back
slot_flags |= (SLOT_BELT|SLOT_HOLSTER) //but you can wear it on your belt (poorly concealed under a trenchcoat, ideally) - or in a holster, why not.
name = "\improper Obrez"
desc = "cheeki breeki"
user << "<span class='warning'>You shorten the barrel and stock of \the [src]!</span>"
else
..()

View File

@@ -54,6 +54,7 @@
silenced = 1
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/chemdart
allowed_magazines = list(/obj/item/ammo_magazine/chemdart)
auto_eject = 0
var/list/beakers = list() //All containers inside the gun.

View File

@@ -3,10 +3,11 @@
name = ".45 pistol"
desc = "A cheap Martian knock-off of a Colt M1911. Uses .45 rounds."
magazine_type = /obj/item/ammo_magazine/c45m
allowed_magazines = list(/obj/item/ammo_magazine/c45m)
icon_state = "colt"
caliber = ".45"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
fire_sound = 'sound/weapons/Gunshot_light.ogg'
fire_sound = 'sound/weapons/semiauto.ogg'
load_method = MAGAZINE
/obj/item/weapon/gun/projectile/colt/detective
@@ -72,7 +73,7 @@
magazine_type = /obj/item/ammo_magazine/c45m/rubber
caliber = ".45"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
fire_sound = 'sound/weapons/Gunshot_light.ogg'
fire_sound = 'sound/weapons/semiauto.ogg'
load_method = MAGAZINE
/obj/item/weapon/gun/projectile/sec/update_icon()
@@ -108,42 +109,60 @@
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 8)
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/c45m
allowed_magazines = list(/obj/item/ammo_magazine/c45m)
/obj/item/weapon/gun/projectile/deagle
name = "desert eagle"
desc = "A robust handgun that uses .50 AE ammo"
desc = "A robust handgun that uses .50 AE rounds."
icon_state = "deagle"
item_state = "deagle"
force = 14.0
caliber = ".50"
load_method = MAGAZINE
fire_sound = 'sound/weapons/deagle.ogg'
magazine_type = /obj/item/ammo_magazine/a50
auto_eject = 1
allowed_magazines = list(/obj/item/ammo_magazine/a50)
/obj/item/weapon/gun/projectile/deagle/gold
desc = "A gold plated gun folded over a million times by superior martian gunsmiths. Uses .50 AE ammo."
desc = "A gold plated gun folded over a million times by superior martian gunsmiths. Uses .50 AE rounds."
icon_state = "deagleg"
item_state = "deagleg"
/obj/item/weapon/gun/projectile/deagle/camo
desc = "A Deagle brand Deagle for operators operating operationally. Uses .50 AE ammo."
desc = "A Deagle brand Deagle for operators operating operationally. Uses .50 AE rounds."
icon_state = "deaglecamo"
item_state = "deagleg"
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
/obj/item/weapon/gun/projectile/fiveseven
name = "\improper FiveSeven"
desc = "This tacticool pistol makes you feel like you're playing Counter Strike in Space. Uses 5mm rounds."
icon_state = "fnseven"
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2)
caliber = "5mm"
load_method = MAGAZINE
fire_sound = 'sound/weapons/semiauto.ogg'
magazine_type = /obj/item/ammo_magazine/c5mm
allowed_magazines = list(/obj/item/ammo_magazine/c5mm)
/obj/item/weapon/gun/projectile/fiveseven/update_icon()
..()
if(ammo_magazine)
icon_state = "fnseven"
else
icon_state = "fnseven-empty"
/obj/item/weapon/gun/projectile/gyropistol
name = "gyrojet pistol"
desc = "A bulky pistol designed to fire self propelled rounds"
desc = "Speak softly, and carry a big gun. Fires rare .75 caliber self-propelled exploding bolts--because fuck you and everything around you."
icon_state = "gyropistol"
max_shells = 8
caliber = "75"
fire_sound = 'sound/effects/Explosion1.ogg'
fire_sound = 'sound/weapons/rpg.ogg'
origin_tech = list(TECH_COMBAT = 3)
ammo_type = "/obj/item/ammo_casing/a75"
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/a75
allowed_magazines = list(/obj/item/ammo_magazine/a75)
auto_eject = 1
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
@@ -163,9 +182,10 @@
caliber = "9mm"
silenced = 0
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 2)
fire_sound = 'sound/weapons/Gunshot_light.ogg'
fire_sound = 'sound/weapons/semiauto.ogg'
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/mc9mm
allowed_magazines = list(/obj/item/ammo_magazine/mc9mm)
/obj/item/weapon/gun/projectile/pistol/flash
name = "holdout signal pistol"
@@ -246,3 +266,36 @@
var/obj/item/ammo_casing/ammo = ammo_type
caliber = initial(ammo.caliber)
..()
/obj/item/weapon/gun/projectile/derringer
name = "derringer"
desc = "It's not size of your gun that matters, just the size of your load. Uses .357 rounds." //OHHH MYYY~
icon_state = "derringer"
item_state = "concealed"
w_class = 2
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 3)
handle_casings = CYCLE_CASINGS //player has to take the old casing out manually before reloading
load_method = SINGLE_CASING
max_shells = 2
ammo_type = /obj/item/ammo_casing/a357
/obj/item/weapon/gun/projectile/luger
name = "\improper P08 Luger"
desc = "Not some cheap Scheisse .45 caliber Martian knockoff! This Luger is an authentic reproduction by RauMauser. Accuracy, easy handling, and its signature appearance make it popular among collectors... and space Nazis. Uses 9mm rounds."
icon_state = "p08"
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2)
caliber = "9mm"
load_method = MAGAZINE
fire_sound = 'sound/weapons/semiauto.ogg'
magazine_type = /obj/item/ammo_magazine/mc9mm
allowed_magazines = list(/obj/item/ammo_magazine/mc9mm)
/obj/item/weapon/gun/projectile/luger/update_icon()
..()
if(ammo_magazine)
icon_state = "[initial(icon_state)]"
else
icon_state = "[initial(icon_state)]-e"
/obj/item/weapon/gun/projectile/luger/brown
icon_state = "p08b"

View File

@@ -1,12 +1,12 @@
/obj/item/weapon/gun/projectile/revolver
name = "revolver"
desc = "The Lumoco Arms HE Colt is a choice revolver for when you absolutely, positively need to put a hole in the other guy. Uses .357 ammo."
desc = "The Lumoco Arms HE Colt is a choice revolver for when you absolutely, positively need to put a hole in the other guy. Uses .357 rounds."
icon_state = "revolver"
item_state = "revolver"
caliber = "357"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
handle_casings = CYCLE_CASINGS
max_shells = 7
max_shells = 6
ammo_type = /obj/item/ammo_casing/a357
var/chamber_offset = 0 //how many empty chambers in the cylinder until you hit a round
@@ -42,7 +42,6 @@
name = "revolver"
desc = "A cheap Martian knock-off of a Smith & Wesson Model 10. Uses .38-Special rounds."
icon_state = "detective"
max_shells = 6
caliber = "38"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
fire_sound = 'sound/weapons/Gunshot_light.ogg'
@@ -68,10 +67,9 @@
// Blade Runner pistol.
/obj/item/weapon/gun/projectile/revolver/deckard
name = "Deckard .44"
name = "Deckard .38"
desc = "A custom-built revolver, based off the semi-popular Detective Special model."
icon_state = "deckard-empty"
max_shells = 6
caliber = "38"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
fire_sound = 'sound/weapons/Gunshot_light.ogg'
@@ -100,3 +98,14 @@
max_shells = 7
ammo_type = /obj/item/ammo_casing/cap
/obj/item/weapon/gun/projectile/revolver/judge
name = "\"The Judge\""
desc = "A revolving hand-shotgun by Cybersun Industries that packs the power of a 12 guage in the palm of your hand (if you don't break your wrist). \"It's never been easier to be Judge, Jury, and Executioner.\"<22> Uses 12 shotgun rounds."
icon_state = "judge"
caliber = "shotgun"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 4)
max_shells = 5
recoil = 2 // ow my fucking hand
accuracy = -1 // smooth bore + short barrel = shit accuracy
ammo_type = /obj/item/ammo_casing/shotgun
// ToDo: Remove accuracy debuf in exchange for slightly injuring your hand every time you fire it.

View File

@@ -13,7 +13,9 @@
load_method = SINGLE_CASING
ammo_type = /obj/item/ammo_casing/shotgun/beanbag
handle_casings = HOLD_CASINGS
fire_sound = 'sound/weapons/shotgun.ogg'
var/recentpump = 0 // to prevent spammage
var/action_sound = 'sound/weapons/shotgunpump.ogg'
/obj/item/weapon/gun/projectile/shotgun/pump/consume_next_projectile()
if(chambered)
@@ -26,7 +28,7 @@
recentpump = world.time
/obj/item/weapon/gun/projectile/shotgun/pump/proc/pump(mob/M as mob)
playsound(M, 'sound/weapons/shotgunpump.ogg', 60, 1)
playsound(M, action_sound, 60, 1)
if(chambered)//We have a shell in the chamber
chambered.loc = get_turf(src)//Eject casing

View File

@@ -1,15 +1,17 @@
////////////// PTR-7 Anti-Materiel Rifle //////////////
/obj/item/weapon/gun/projectile/heavysniper
name = "anti-materiel rifle"
desc = "A portable anti-armour rifle fitted with a scope, the HI PTR-7 Rifle was originally designed to used against armoured exosuits. It is capable of punching through windows and non-reinforced walls with ease. Fires armor piercing 14.5mm shells."
icon_state = "heavysniper"
item_state = "l6closednomag" //placeholder
item_state = "l6closed-empty" // placeholder
w_class = 5 // So it can't fit in a backpack.
force = 10
slot_flags = SLOT_BACK
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 2, TECH_ILLEGAL = 8)
caliber = "14.5mm"
recoil = 2 //extra kickback
//fire_sound = 'sound/weapons/sniper.ogg'
recoil = 3 //extra kickback
fire_sound = 'sound/weapons/sniper.ogg' // extra boom
handle_casings = HOLD_CASINGS
load_method = SINGLE_CASING
max_shells = 1
@@ -65,3 +67,40 @@
toggle_scope(2.0)
////////////// Dragunov Sniper Rifle //////////////
/obj/item/weapon/gun/projectile/SVD
name = "\improper Dragunov"
desc = "The SVD, also known as the Dragunov, was mass produced with an Optical Sniper Sight so simple that even Ivan can figure out how it works. Too bad for you that it's written in Russian. Uses 7.62mm rounds."
icon_state = "SVD"
item_state = "SVD"
w_class = 5 // So it can't fit in a backpack.
force = 10
slot_flags = SLOT_BACK // Needs a sprite.
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 2, TECH_ILLEGAL = 8)
recoil = 2 //extra kickback
caliber = "a762"
load_method = MAGAZINE
accuracy = -3 //shooting at the hip
scoped_accuracy = 0
// requires_two_hands = 1
one_handed_penalty = 4 // The weapon itself is heavy, and the long barrel makes it hard to hold steady with just one hand.
fire_sound = 'sound/weapons/SVD_shot.ogg'
magazine_type = /obj/item/ammo_magazine/SVD
allowed_magazines = list(/obj/item/ammo_magazine/SVD, /obj/item/ammo_magazine/c762)
/obj/item/weapon/gun/projectile/SVD/update_icon()
..()
/*if(istype(ammo_magazine,/obj/item/ammo_magazine/c762)
icon_state = "SVD-bigmag"*/ //No icon for this exists yet.
if(ammo_magazine)
icon_state = "SVD"
else
icon_state = "SVD-empty"
/obj/item/weapon/gun/projectile/SVD/verb/scope()
set category = "Object"
set name = "Use Scope"
set popup_menu = 1
toggle_scope(2.0)

View File

@@ -128,6 +128,10 @@
/obj/item/projectile/bullet/pistol
damage = 20
/obj/item/projectile/bullet/pistol/small
damage = 15
armor_penetration = 50
/obj/item/projectile/bullet/pistol/medium
damage = 25
@@ -227,8 +231,9 @@
/obj/item/projectile/bullet/pistol/practice
damage = 5
/obj/item/projectile/bullet/rifle/a556/practice
/obj/item/projectile/bullet/rifle/practice
damage = 5
penetrating = 0
/obj/item/projectile/bullet/shotgun/practice
name = "practice"

View File

@@ -0,0 +1,50 @@
################################
# 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
#################################
# Your name.
author: JerTheAce
# 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: "Adds a variety of new guns, including the Dragunov Sniper, Mosin Nagant, Tommygun, and P08 Luger. Some of these guns and and their ammunition are purchasable through antag uplink, cargo, or can be spawned during Renegade or Heist modes."
- rscadd: "Adds ammunition clips for reloading magazines and some guns (such as bolt-actions)."
- rscadd: "All magazines and ammunitions can now be produced with the autolathe."
- maptweak: "P90 and FiveSeven are available in Asset Protection staging area on Polaris-2"
- tweak: "Revolvers now use 6 shots. Finally."
- tweak: "Most guns that didn't use magazines before for some reason (such as the Uzi) now use magazines."
- tweak: "All casings now update icons if they have been spent."
- tweak: "Corrects and improves a number of icons for guns, including a couple of energy guns, and adds fallback icons so they do not turn invisible when held or strapped to your back."
- tweak: "Made the icons for some guns look differently depending on what magazine is loaded into them."
- tweak: "Made antag uplink menu for guns and ammo more informative."
- spellcheck: "Made names and descriptions for all projectile guns and ammo consistent while removing grammar and spelling errors."
- bugfix: "Autolathe no longer exploitable for ammo by repeatedly recycling empty magazines."
- bugfix: "Guns now check a list of compatible magazines."
- bugfix: "Ranged mobs no longer drop usable .357 casings."
- soundadd: "Added a variety of new gun sound effects, and swapped out the old default gun sound."

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Binary file not shown.

BIN
sound/weapons/cannon.ogg Normal file

Binary file not shown.

BIN
sound/weapons/deagle.ogg Normal file

Binary file not shown.

BIN
sound/weapons/eLuger.ogg Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
sound/weapons/riflebolt.ogg Normal file

Binary file not shown.

BIN
sound/weapons/rifleshot.ogg Normal file

Binary file not shown.

BIN
sound/weapons/rpg.ogg Normal file

Binary file not shown.

BIN
sound/weapons/semiauto.ogg Normal file

Binary file not shown.

BIN
sound/weapons/shotgun.ogg Normal file

Binary file not shown.

BIN
sound/weapons/silenced.ogg Normal file

Binary file not shown.

BIN
sound/weapons/sniper.ogg Normal file

Binary file not shown.

BIN
sound/weapons/svd_shot.ogg Normal file

Binary file not shown.