Merge pull request #7212 from Novacat/nova-pathfinder

Gun Refactors and Changes
This commit is contained in:
Aronai Sieyes
2020-04-13 09:45:37 -04:00
committed by GitHub
29 changed files with 798 additions and 972 deletions

View File

@@ -1,8 +1,8 @@
/datum/supply_pack/munitions/expeditionguns
name = "Frontier phaser (station-locked) crate"
contains = list(
/obj/item/weapon/gun/energy/frontier/locked = 2,
/obj/item/weapon/gun/energy/frontier/locked/holdout = 1,
/obj/item/weapon/gun/energy/locked/frontier = 2,
/obj/item/weapon/gun/energy/locked/frontier/holdout = 1,
)
cost = 35
containertype = /obj/structure/closet/crate/secure

View File

@@ -1,7 +1,7 @@
/obj/item/clothing/glasses/omnihud
name = "\improper AR glasses"
desc = "The KHI-62 AR Glasses are a design from Kitsuhana Heavy Industries. These are a cheap export version \
for Nanotrasen. Probably not as complete as KHI could make them, but more readily available for NT."
desc = "The ARG-62 AR Glasses are capable of displaying information on individuals. \
Commonly used to allow non-augmented crew to interact with virtual interfaces."
origin_tech = list(TECH_MAGNET = 3, TECH_BIO = 3)
var/obj/item/clothing/glasses/hud/omni/hud = null
var/mode = "civ"
@@ -67,7 +67,7 @@
/obj/item/clothing/glasses/omnihud/med
name = "\improper AR-M glasses"
desc = "The KHI-62-M AR glasses are a design from Kitsuhana Heavy Industries. \
desc = "The ARG-62-M AR Glasses are capable of displaying information on individuals. \
These have been upgraded with medical records access and virus database integration."
mode = "med"
action_button_name = "AR Console (Crew Monitor)"
@@ -81,7 +81,7 @@
/obj/item/clothing/glasses/omnihud/sec
name = "\improper AR-S glasses"
desc = "The KHI-62-S AR glasses are a design from Kitsuhana Heavy Industries. \
desc = "The ARG-62-S AR Glasses are capable of displaying information on individuals. \
These have been upgraded with security records integration and flash protection."
mode = "sec"
flash_protection = FLASH_PROTECTION_MAJOR
@@ -96,7 +96,7 @@
/obj/item/clothing/glasses/omnihud/eng
name = "\improper AR-E glasses"
desc = "The KHI-62-E AR glasses are a design from Kitsuhana Heavy Industries. \
desc = "The ARG-62-E AR Glasses are capable of displaying information on individuals. \
These have been upgraded with advanced electrochromic lenses to protect your eyes during welding."
mode = "eng"
flash_protection = FLASH_PROTECTION_MAJOR
@@ -110,7 +110,7 @@
/obj/item/clothing/glasses/omnihud/rnd
name = "\improper AR-R glasses"
desc = "The KHI-62-R AR glasses are a design from Kitsuhana Heavy Industries. \
desc = "The ARG-62-R AR Glasses are capable of displaying information on individuals. \
These have been ... modified ... to fit into a different frame."
mode = "sci"
icon = 'icons/obj/clothing/glasses.dmi'
@@ -156,7 +156,7 @@
/obj/item/clothing/glasses/omnihud/all
name = "\improper AR-B glasses"
desc = "The KHI-62-B AR glasses are a design from Kitsuhana Heavy Industries. \
desc = "The ARG-62-B AR Glasses are capable of displaying information on individuals. \
These have been upgraded with every feature the lesser models have. Now we're talkin'."
mode = "best"
flash_protection = FLASH_PROTECTION_MAJOR

View File

@@ -0,0 +1,302 @@
/* TUTORIAL
"icon" is the file with the HUD/ground icon for the item
"icon_state" is the iconstate in this file for the item
"icon_override" is the file with the on-mob icons, can be the same file
"item_state" is the iconstate for the on-mob icons:
item_state_s is used for worn uniforms on mobs
item_state_r and item_state_l are for being held in each hand
"item_state_slots" can replace "item_state", it is a list:
item_state_slots["slotname1"] = "item state for that slot"
item_state_slots["slotname2"] = "item state for that slot"
on guns, in particular:
item_state being null makes it look for exactly the icon_state in the on-mob file,
including any 0,75,etc appended from the energy bar setting
item_state being present prevents different mode sprites, sadly, but you may
be able to override this on the gun itself with a proc
*/
/* TEMPLATE
//ckey:Character Name
/obj/item/weapon/gun/type/fluff/charactername
name = ""
desc = ""
icon = 'icons/vore/custom_guns_vr.dmi'
icon_state = "myicon"
icon_override = 'icons/vore/custom_guns_vr.dmi'
item_state = "myicon"
*/
// For general use
/obj/item/weapon/gun/energy/imperial
name = "imperial energy pistol"
desc = "An elegant weapon developed by the Imperium Auream. Their weaponsmiths have cleverly found a way to make a gun that is only about the size of an average energy pistol, yet with the fire power of a laser carbine."
icon_state = "ge_pistol"
item_state = "ge_pistol"
fire_sound = 'sound/weapons/mandalorian.ogg'
icon = 'icons/obj/gun_vr.dmi'
item_icons = list(slot_r_hand_str = 'icons/obj/gun_vr.dmi', slot_l_hand_str = 'icons/obj/gun_vr.dmi') // WORK YOU FUCKING CUNT PIECE OF SHIT BASTARD STUPID BITCH ITEM ICON AAAAHHHH
item_state_slots = list(slot_r_hand_str = "ge_pistol_r", slot_l_hand_str = "ge_pistol_l")
slot_flags = SLOT_BELT
w_class = ITEMSIZE_NORMAL
force = 10
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2)
matter = list(DEFAULT_WALL_MATERIAL = 2000)
projectile_type = /obj/item/projectile/beam/imperial
// Removed because gun64_vr.dmi guns don't work.
/*
//-----------------------G44 Energy Variant--------------------
/obj/item/weapon/gun/energy/gun/burst/g44e
name = "G44 Energy Rifle"
desc = "The G44 Energy is a laser variant of the G44 lightweight assault rifle manufactured by the National Armory of Gaia. Though almost exclusively to the United Federation's Military Assault Command Operations Department (MACOs) and Starfleet, it is occassionally sold to security departments for their stun capabilities."
icon = 'icons/obj/gun64_vr.dmi'
icon_state = "g44estun100"
item_state = "energystun100" //This is temporary.
fire_sound = 'sound/weapons/Taser.ogg'
charge_cost = 100
force = 8
w_class = ITEMSIZE_LARGE
fire_delay = 6
pixel_x = -16
projectile_type = /obj/item/projectile/beam/stun/weak
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2, TECH_ILLEGAL = 3)
modifystate = "g44estun"
one_handed_penalty = 60
firemodes = list(
list(mode_name="stun", burst=1, projectile_type=/obj/item/projectile/beam/stun/weak, modifystate="g44estun", fire_sound='sound/weapons/Taser.ogg', charge_cost = 100),
list(mode_name="stun burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,0,0), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/item/projectile/beam/stun/weak, modifystate="g44estun", fire_sound='sound/weapons/Taser.ogg'),
list(mode_name="lethal", burst=1, projectile_type=/obj/item/projectile/beam/burstlaser, modifystate="g44ekill", fire_sound='sound/weapons/Laser.ogg', charge_cost = 200),
list(mode_name="lethal burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,0,0), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/item/projectile/beam/burstlaser, modifystate="g44ekill", fire_sound='sound/weapons/Laser.ogg'),
)
*/
//////////////////// Energy Weapons ////////////////////
// ------------ Energy Luger ------------
/obj/item/weapon/gun/energy/gun/eluger
name = "energy Luger"
desc = "The finest sidearm produced by RauMauser. Although its battery cannot be removed, its ergonomic design makes it easy to shoot, allowing for rapid follow-up shots. It also has the ability to toggle between stun and kill."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "elugerstun100"
item_state = "gun"
fire_delay = null // Lugers are quite comfortable to shoot, thus allowing for more controlled follow-up shots. Rate of fire similar to a laser carbine.
battery_lock = 1 // In exchange for balance, you cannot remove the battery. Also there's no sprite for that and I fucking suck at sprites. -Ace
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2, TECH_ILLEGAL = 2) // Illegal tech cuz Space Nazis
modifystate = "elugerstun"
fire_sound = 'sound/weapons/Taser.ogg'
firemodes = list(
list(mode_name="stun", charge_cost=120,projectile_type=/obj/item/projectile/beam/stun, modifystate="elugerstun", fire_sound='sound/weapons/Taser.ogg'),
list(mode_name="lethal", charge_cost=240,projectile_type=/obj/item/projectile/beam/eluger, modifystate="elugerkill", fire_sound='sound/weapons/eluger.ogg'),
)
//////////////////// Eris Ported Guns ////////////////////
//HoP gun
/obj/item/weapon/gun/energy/gun/martin
name = "holdout energy gun"
desc = "The FS PDW E \"Martin\" is small holdout e-gun. Don't miss!"
icon = 'icons/obj/gun_vr.dmi'
icon_state = "PDW"
item_state = "gun"
w_class = ITEMSIZE_SMALL
projectile_type = /obj/item/projectile/beam/stun
charge_cost = 1200
charge_meter = 0
modifystate = null
battery_lock = 1
fire_sound = 'sound/weapons/Taser.ogg'
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
firemodes = list(
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, fire_sound='sound/weapons/Taser.ogg', charge_cost = 600),
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, fire_sound='sound/weapons/Laser.ogg', charge_cost = 1200),
)
/obj/item/weapon/gun/energy/gun/martin/proc/update_mode()
var/datum/firemode/current_mode = firemodes[sel_mode]
switch(current_mode.name)
if("stun") add_overlay("taser_pdw")
if("lethal") add_overlay("lazer_pdw")
/obj/item/weapon/gun/energy/gun/martin/update_icon()
cut_overlays()
update_mode()
/////////////////////////////////////////////////////
//////////////////// Custom Ammo ////////////////////
/////////////////////////////////////////////////////
//---------------- Beams ----------------
/obj/item/projectile/beam/eluger
name = "laser beam"
icon_state = "xray"
light_color = "#00FF00"
muzzle_type = /obj/effect/projectile/muzzle/xray
tracer_type = /obj/effect/projectile/tracer/xray
impact_type = /obj/effect/projectile/impact/xray
/obj/item/projectile/beam/imperial
name = "laser beam"
fire_sound = 'sound/weapons/mandalorian.ogg'
icon_state = "darkb"
light_color = "#8837A3"
muzzle_type = /obj/effect/projectile/muzzle/darkmatter
tracer_type = /obj/effect/projectile/tracer/darkmatter
impact_type = /obj/effect/projectile/impact/darkmatter
/obj/item/projectile/beam/stun/kin21
name = "kinh21 stun beam"
icon_state = "omnilaser"
light_color = "#0000FF"
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
tracer_type = /obj/effect/projectile/tracer/laser_omni
impact_type = /obj/effect/projectile/impact/laser_omni
//Gun Locking Mechanism
/obj/item/weapon/gun/energy/locked
req_access = list(access_armory) //for toggling safety
var/locked = 1
var/lockable = 1
/obj/item/weapon/gun/energy/locked/attackby(obj/item/I, mob/user)
var/obj/item/weapon/card/id/id = I.GetID()
if(istype(id) && lockable)
if(check_access(id))
locked = !locked
to_chat(user, "<span class='warning'>You [locked ? "enable" : "disable"] the safety lock on \the [src].</span>")
else
to_chat(user, "<span class='warning'>Access denied.</span>")
user.visible_message("<span class='notice'>[user] swipes \the [I] against \the [src].</span>")
else
return ..()
/obj/item/weapon/gun/energy/locked/emag_act(var/remaining_charges,var/mob/user)
..()
if(lockable)
locked = !locked
to_chat(user, "<span class='warning'>You [locked ? "enable" : "disable"] the safety lock on \the [src]!</span>")
/obj/item/weapon/gun/energy/locked/special_check(mob/user)
if(locked)
var/turf/T = get_turf(src)
if(T.z in using_map.map_levels)
to_chat(user, "<span class='warning'>The safety device prevents the gun from firing this close to the facility.</span>")
return 0
return ..()
//Expedition Frontier Phaser
/obj/item/weapon/gun/energy/locked/frontier
name = "frontier phaser"
desc = "An extraordinarily rugged laser weapon, built to last and requiring effectively no maintenance. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "phaser"
item_state = "phaser"
item_icons = list(slot_l_hand_str = 'icons/mob/items/lefthand_guns_vr.dmi', slot_r_hand_str = 'icons/mob/items/righthand_guns_vr.dmi', "slot_belt" = 'icons/mob/belt_vr.dmi')
fire_sound = 'sound/weapons/laser2.ogg'
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2, TECH_POWER = 4)
charge_cost = 300
battery_lock = 1
unacidable = 1
var/recharging = 0
var/phase_power = 75
projectile_type = /obj/item/projectile/beam
firemodes = list(
list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/beam, charge_cost = 300),
list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/weaklaser, charge_cost = 60),
)
/obj/item/weapon/gun/energy/locked/frontier/unload_ammo(var/mob/user)
if(recharging)
return
recharging = 1
update_icon()
user.visible_message("<span class='notice'>[user] opens \the [src] and starts pumping the handle.</span>", \
"<span class='notice'>You open \the [src] and start pumping the handle.</span>")
while(recharging)
if(!do_after(user, 10, src))
break
playsound(get_turf(src),'sound/items/change_drill.ogg',25,1)
if(power_supply.give(phase_power) < phase_power)
break
recharging = 0
update_icon()
/obj/item/weapon/gun/energy/locked/frontier/update_icon()
if(recharging)
icon_state = "[initial(icon_state)]_pump"
update_held_icon()
return
..()
/obj/item/weapon/gun/energy/locked/frontier/emp_act(severity)
return ..(severity+2)
/obj/item/weapon/gun/energy/locked/frontier/ex_act() //|rugged|
return
/obj/item/weapon/gun/energy/locked/frontier/unlocked
desc = "An extraordinarily rugged laser weapon, built to last and requiring effectively no maintenance. Includes a built-in crank charger for recharging away from civilization."
req_access = newlist() //for toggling safety
locked = 0
lockable = 0
//Phaser Carbine - Reskinned phaser
/obj/item/weapon/gun/energy/locked/frontier/carbine
name = "frontier carbine"
desc = "An ergonomically improved version of the venerable frontier phaser, the carbine is a fairly new weapon, and has only been produced in limited numbers so far. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "carbinekill"
item_state = "retro"
item_icons = list(slot_l_hand_str = 'icons/mob/items/lefthand_guns.dmi', slot_r_hand_str = 'icons/mob/items/righthand_guns.dmi')
modifystate = "carbinekill"
firemodes = list(
list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/beam, modifystate="carbinekill", charge_cost = 300),
list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/weaklaser, modifystate="carbinestun", charge_cost = 60),
)
/obj/item/weapon/gun/energy/locked/frontier/carbine/update_icon()
if(recharging)
icon_state = "[modifystate]_pump"
update_held_icon()
return
..()
/obj/item/weapon/gun/energy/locked/frontier/carbine/unlocked
desc = "An ergonomically improved version of the venerable frontier phaser, the carbine is a fairly new weapon, and has only been produced in limited numbers so far."
req_access = newlist() //for toggling safety
locked = 0
lockable = 0
//Expeditionary Holdout Phaser Pistol
/obj/item/weapon/gun/energy/locked/frontier/holdout
name = "holdout frontier phaser"
desc = "An minaturized weapon designed for the purpose of expeditionary support to defend themselves on the field. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "holdoutkill"
item_state = null
phase_power = 100
w_class = ITEMSIZE_SMALL
charge_cost = 600
modifystate = "holdoutkill"
firemodes = list(
list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/beam, modifystate="holdoutkill", charge_cost = 600),
list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/weaklaser, modifystate="holdoutstun", charge_cost = 120),
list(mode_name="stun", fire_delay=12, projectile_type=/obj/item/projectile/beam/stun/med, modifystate="holdoutshock", charge_cost = 300),
)
/obj/item/weapon/gun/energy/locked/frontier/holdout/unlocked
desc = "An minaturized weapon designed for the purpose of expeditionary support to defend themselves on the field. Includes a built-in crank charger for recharging away from civilization."
req_access = newlist() //for toggling safety
locked = 0
lockable = 0

View File

@@ -1,35 +1,12 @@
/obj/item/weapon/gun/energy/netgun
name = "energy net gun"
desc = "A Kitsuhana-designed, usually dubbed 'Hunter' or 'non-lethal capture device' stunner and energy net launcher, \
for when you want criminals to stop acting like they're on a 20th century British comedy sketch show."
catalogue_data = list(/datum/category_item/catalogue/information/organization/khi)
desc = "Specially made-to-order by Xenonomix, the XX-1 \"Varmint Catcher\" is designed to trap even the most unruly of creatures for safe transport."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "hunter"
icon_state = "netgun"
item_state = "gun" // Placeholder
mode_name = "stun"
fire_sound = 'sound/weapons/eluger.ogg'
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 5, TECH_MAGNET = 3)
projectile_type = /obj/item/projectile/beam/stun/blue
charge_cost = 240
fire_delay = 5
firemodes = list(
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun/blue, fire_sound='sound/weapons/Taser.ogg', charge_cost=240, fire_delay=5),
list(mode_name="capture", projectile_type=/obj/item/projectile/beam/energy_net, fire_sound = 'sound/weapons/eluger.ogg', charge_cost=1200, fire_delay=50)
)
/obj/item/weapon/gun/energy/netgun/update_icon()
overlays.Cut()
if(power_supply)
var/ratio = power_supply.charge / power_supply.maxcharge
if(power_supply.charge < charge_cost)
ratio = 0
else
ratio = max(round(ratio, 0.25) * 100, 25)
overlays += "[initial(icon_state)]_cell"
overlays += "[initial(icon_state)]_[ratio]"
overlays += "[initial(icon_state)]_[mode_name]"
projectile_type = /obj/item/projectile/beam/energy_net
charge_cost = 800
fire_delay = 50

View File

@@ -1,12 +1,10 @@
// -------------- Protector -------------
/obj/item/weapon/gun/energy/protector
name = "small energy gun"
desc = "The KHI-98a 'Protector' is the first firearm custom-designed for Nanotrasen by KHI. It features a powerful stun mode, and \
an alert-level-locked lethal mode, only usable on code blue and higher. It also features an integrated flashlight!"
catalogue_data = list(/datum/category_item/catalogue/information/organization/khi)
/obj/item/weapon/gun/energy/gun/protector
name = "secure small energy gun"
desc = "The LAEP95 'Protector' is another firearm from Lawson Arms and "+TSC_HEPH+", unlike the Perun this is designed for issue to non-security staff. It contains a detachable cell, and an alert-level-locked lethal mode, only usable on code blue and higher. It also features an integrated flashlight!"
description_info = "This gun can only be fired in lethal mode while on higher security alert levels. It is legal for sec to carry for this reason, since it cannot be used for lethal force until SOP allows it, in essence."
description_fluff = "The first 'commission' from a Kitsuhana citizen for NanoTrasen, this gun has a wireless connection to the computer's datacore to ensure it can't be used without authorization from heads of staff who have raised the alert level. Until then, *click*!"
description_fluff = "A lighter weapon designed for non-security staff, this gun has a wireless connection to the computer's datacore to ensure it can't be used without authorization from heads of staff who have raised the alert level. Until then, *click*!"
description_antag = "The gun can be emagged to remove the lethal security level restriction, allowing it to be fired on lethal mode at all times."
icon = 'icons/vore/custom_guns_vr.dmi'
@@ -30,14 +28,16 @@
flight_x_offset = 0
flight_y_offset = 0
w_class = ITEMSIZE_SMALL
firemodes = list(
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun/protector, modifystate="stun", fire_sound='sound/weapons/Taser.ogg'),
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, modifystate="kill", fire_sound='sound/weapons/gauss_shoot.ogg'),
)
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun/med, modifystate="stun", charge_cost = 400),
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, modifystate="kill", charge_cost = 800),
)
var/emagged = FALSE
/obj/item/weapon/gun/energy/protector/special_check(mob/user)
/obj/item/weapon/gun/energy/gun/protector/special_check(mob/user)
if(!emagged && mode_name == "lethal" && get_security_level() == "green")
to_chat(user,"<span class='warning'>The trigger refuses to depress while on the lethal setting under security level green!</span>")
return FALSE
@@ -45,7 +45,7 @@
return ..()
/obj/item/weapon/gun/energy/protector/emag_act(var/remaining_charges,var/mob/user)
/obj/item/weapon/gun/energy/gun/protector/emag_act(var/remaining_charges,var/mob/user)
..()
if(!emagged)
emagged = TRUE
@@ -54,7 +54,7 @@
return TRUE
//Update icons from /tg/, so fancy! Use this more!
/obj/item/weapon/gun/energy/protector/update_icon()
/obj/item/weapon/gun/energy/gun/protector/update_icon()
overlays.Cut()
var/ratio = 0
@@ -98,13 +98,7 @@
item_state = itemState
*/
// Protector beams
/obj/item/projectile/beam/stun/protector
name = "protector stun beam"
icon_state = "omnilaser" //A little more cyan
light_color = "#00C6FF"
agony = 50 //Normal is 40 when this was set
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
tracer_type = /obj/effect/projectile/tracer/laser_omni
impact_type = /obj/effect/projectile/impact/laser_omni
/obj/item/weapon/gun/energy/gun/protector/unlocked
emagged = TRUE
name = "small energy gun"
desc = "The LAEP95 'Protector' is another firearm from Lawson Arms and "+TSC_HEPH+", unlike the Perun this is designed for issue to non-security staff. It contains a detachable cell. It also features an integrated flashlight!"

View File

@@ -1,2 +1,226 @@
/obj/item/weapon/gun/projectile/automatic/wt550/lethal
magazine_type = /obj/item/ammo_magazine/m9mmt
magazine_type = /obj/item/ammo_magazine/m9mmt
////////////////////////////////////////////////////////////
//////////////////// Projectile Weapons ////////////////////
////////////////////////////////////////////////////////////
// For general use
/obj/item/weapon/gun/projectile/automatic/battlerifle
name = "\improper USDF service rifle"
desc = "You had your chance to be afraid before you joined my beloved Corps! But, to guide you back to the true path, I have brought this motivational device! Uses 9.5x40mm rounds."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "battlerifle"
icon_override = 'icons/obj/gun_vr.dmi'
item_state = "battlerifle_i"
item_icons = null
w_class = ITEMSIZE_LARGE
recoil = 2 // The battlerifle was known for its nasty recoil.
max_shells = 36
caliber = "9.5x40mm"
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2)
magazine_type = /obj/item/ammo_magazine/m95
allowed_magazines = list(/obj/item/ammo_magazine/m95)
fire_sound = 'sound/weapons/battlerifle.ogg'
load_method = MAGAZINE
slot_flags = SLOT_BACK
one_handed_penalty = 60 // The weapon itself is heavy
// For general use
/obj/item/weapon/gun/projectile/automatic/pdw
name = "personal defense weapon"
desc = "The X-9MM is a select-fire personal defense weapon designed in-house by Xing Private Security. It was made to compete with the WT550 Saber, but never caught on with NanoTrasen. Uses 9mm rounds."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "pdw"
item_state = "c20r" // Placeholder
w_class = ITEMSIZE_NORMAL
caliber = "9mm"
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2)
slot_flags = SLOT_BELT
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/m9mml
allowed_magazines = list(/obj/item/ammo_magazine/m9mm, /obj/item/ammo_magazine/m9mml)
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,-15,-30), dispersion=list(0.0, 0.6, 0.6))
)
/obj/item/weapon/gun/projectile/automatic/pdw/update_icon(var/ignore_inhands)
..()
if(istype(ammo_magazine,/obj/item/ammo_magazine/m9mm))
icon_state = "pdw-short"
else
icon_state = (ammo_magazine)? "pdw" : "pdw-empty"
if(!ignore_inhands) update_held_icon()
// For general use
/obj/item/weapon/gun/projectile/automatic/stg
name = "\improper Sturmgewehr"
desc = "An STG-560 built by RauMauser. Experience the terror of the Siegfried line, redone for the 26th century! The Kaiser would be proud. Uses unique 7.92x33mm Kurz rounds."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "stg60"
item_state = "arifle"
w_class = ITEMSIZE_LARGE
max_shells = 30
caliber = "7.92x33mm"
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2, TECH_ILLEGAL = 6)
magazine_type = /obj/item/ammo_magazine/mtg
allowed_magazines = list(/obj/item/ammo_magazine/mtg)
load_method = MAGAZINE
/obj/item/weapon/gun/projectile/automatic/stg/update_icon(var/ignore_inhands)
..()
icon_state = (ammo_magazine)? "stg60" : "stg60-empty"
item_state = (ammo_magazine)? "arifle" : "arifle-empty"
if(!ignore_inhands) update_held_icon()
// Removed because gun64_vr.dmi guns don't work.
/*
//-----------------------UF-ARC----------------------------------
/obj/item/weapon/gun/projectile/automatic/carbine/fluff/ufarc
name = "UF-ARC"
desc = "The UF-ARC is a lightweight assault rifle manufactured by the National Armory of Gaia and sold almost exclusively to the United Federation's standing army, the Military Assault Command Operations Department (MACOs)."
icon = 'icons/obj/gun64_vr.dmi'
icon_state = "ufarc"
icon_override = 'icons/obj/gun_vr.dmi'
item_state = "battlerifle_i"
item_icons = null
pixel_x = -16
/obj/item/weapon/gun/projectile/automatic/carbine/fluff/ufarc/update_icon(var/ignore_inhands)
..()
// TODO - Fix this for spriting different size magazines
icon_state = (ammo_magazine)? "ufarc" : "ufarc-empty"
item_state = (ammo_magazine)? "bullpup" : "bullpup-empty"
if(!ignore_inhands) update_held_icon()
//-----------------------G44----------------------------------
/obj/item/weapon/gun/projectile/automatic/carbine/fluff/g44
name = "G44 Rifle"
desc = "The G44 is a lightweight assault rifle manufactured by the National Armory of Gaia and sold almost exclusively to the United Federation's standing army, the Military Assault Command Operations Department (MACOs)."
icon = 'icons/obj/gun64_vr.dmi'
icon_state = "g44"
item_state = "bullpup"
pixel_x = -16
/obj/item/weapon/gun/projectile/automatic/carbine/fluff/g44/update_icon(var/ignore_inhands)
..()
// TODO - Fix this for spriting different size magazines
icon_state = (ammo_magazine)? "g44" : "g44-empty"
item_state = (ammo_magazine)? "bullpup" : "bullpup-empty"
if(!ignore_inhands) update_held_icon()
*/
//////////////////// Eris Ported Guns ////////////////////
// No idea what this is for.
/obj/item/weapon/gun/projectile/automatic/sol
name = "\improper \"Sol\" SMG"
desc = "The FS 9x19mm \"Sol\" is a compact and reliable submachine gun. Uses 9mm rounds."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "SMG-IS"
item_state = "wt550"
w_class = ITEMSIZE_LARGE
slot_flags = SLOT_BELT
caliber = "9mm"
magazine_type = /obj/item/ammo_magazine/m9mm
allowed_magazines = list(/obj/item/ammo_magazine/m9mm)
load_method = MAGAZINE
multi_aim = 1
burst_delay = 2
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2)
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,-15,-15), dispersion=list(0.0, 0.6, 1.0)),
)
/obj/item/weapon/gun/projectile/automatic/sol/proc/update_charge()
if(!ammo_magazine)
return
var/ratio = ammo_magazine.stored_ammo.len / ammo_magazine.max_ammo
if(ratio < 0.25 && ratio != 0)
ratio = 0.25
ratio = round(ratio, 0.25) * 100
overlays += "smg_[ratio]"
/obj/item/weapon/gun/projectile/automatic/sol/update_icon()
icon_state = (ammo_magazine)? "SMG-IS" : "SMG-IS-empty"
overlays.Cut()
update_charge()
//--------------- StG-60 ----------------
/obj/item/ammo_magazine/m792
name = "box mag (7.92x33mm Kurz)"
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "stg_30rnd"
caliber = "7.92x33mm"
ammo_type = /obj/item/ammo_casing/a792
max_ammo = 30
mag_type = MAGAZINE
/obj/item/ammo_casing/a792
desc = "A 7.92x33mm Kurz casing."
icon_state = "rifle-casing"
caliber = "7.92x33mm"
projectile_type = /obj/item/projectile/bullet/rifle/a762
/obj/item/ammo_magazine/mtg/empty
initial_ammo = 0
//------------- Battlerifle -------------
/obj/item/ammo_magazine/m95
name = "box mag (9.5x40mm)"
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "battlerifle"
caliber = "9.5x40mm"
ammo_type = /obj/item/ammo_casing/a95
max_ammo = 36
mag_type = MAGAZINE
multiple_sprites = 1
/obj/item/ammo_casing/a95
desc = "A 9.5x40mm bullet casing."
icon_state = "rifle-casing"
caliber = "9.5x40mm"
projectile_type = /obj/item/projectile/bullet/rifle/a95
/obj/item/projectile/bullet/rifle/a95
damage = 40
/obj/item/ammo_magazine/m95/empty
initial_ammo = 0
//---------------- PDW ------------------
/obj/item/ammo_magazine/m9mml
name = "\improper SMG magazine (9mm)"
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "smg"
origin_tech = list(TECH_COMBAT = 2)
mag_type = MAGAZINE
matter = list(DEFAULT_WALL_MATERIAL = 1800)
caliber = "9mm"
ammo_type = /obj/item/ammo_casing/a9mm
max_ammo = 30
multiple_sprites = 1
/obj/item/ammo_magazine/m9mml/empty
initial_ammo = 0
/obj/item/ammo_magazine/m9mml/ap
name = "\improper SMG magazine (9mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a9mm/ap
/* Seems to have been de-coded?
/obj/item/ammo_magazine/m9mml/flash
name = "\improper SMG magazine (9mm flash)"
ammo_type = /obj/item/ammo_casing/a9mmf
/obj/item/ammo_magazine/m9mml/rubber
name = "\improper SMG magazine (9mm rubber)"
ammo_type = /obj/item/ammo_casing/a9mmr
/obj/item/ammo_magazine/m9mml/practice
name = "\improper SMG magazine (9mm practice)"
ammo_type = /obj/item/ammo_casing/a9mmp
*/

View File

@@ -0,0 +1,29 @@
//-----------------------Tranq Gun----------------------------------
/obj/item/weapon/gun/projectile/dartgun/tranq
name = "tranquilizer gun"
desc = "A gas-powered dart gun designed by the National Armory of Gaia. This gun is used primarily by United Federation special forces for Tactical Espionage missions. Don't forget your bandana."
icon_state = "tranqgun"
item_state = null
caliber = "dart"
fire_sound = 'sound/weapons/empty.ogg'
fire_sound_text = "a metallic click"
recoil = 0
silenced = 1
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/chemdart
allowed_magazines = list(/obj/item/ammo_magazine/chemdart)
auto_eject = 0
/obj/item/weapon/gun/projectile/dartgun/tranq/update_icon()
if(!ammo_magazine)
icon_state = "tranqgun"
return 1
if(!ammo_magazine.stored_ammo || ammo_magazine.stored_ammo.len)
icon_state = "tranqgun"
else if(ammo_magazine.stored_ammo.len > 5)
icon_state = "tranqgun"
else
icon_state = "tranqgun"
return 1

View File

@@ -9,4 +9,66 @@
magazine_type = /obj/item/ammo_magazine/m9mm/large/preban // Spawns with big magazines that are legal.
/obj/item/weapon/gun/projectile/p92x/large/preban/hp
magazine_type = /obj/item/ammo_magazine/m9mm/large/preban/hp // Spawns with legal hollow-point mag
magazine_type = /obj/item/ammo_magazine/m9mm/large/preban/hp // Spawns with legal hollow-point mag
//////////////////// Eris Ported Guns ////////////////////
//HoS Gun
/obj/item/weapon/gun/projectile/lamia
name = "FS HG .44 \"Lamia\""
desc = "Uses .44 rounds."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "Headdeagle"
item_state = "revolver"
caliber = ".44"
magazine_type = /obj/item/ammo_magazine/m44/rubber
allowed_magazines = list(/obj/item/ammo_magazine/m44,/obj/item/ammo_magazine/m44/rubber)
load_method = MAGAZINE
auto_eject = 1
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 4)
/obj/item/weapon/gun/projectile/lamia/update_icon()
overlays.Cut()
if(!ammo_magazine)
return
var/ratio = ammo_magazine.stored_ammo.len * 100 / ammo_magazine.max_ammo
ratio = round(ratio, 33)
overlays += "deagle_[ratio]"
//Civilian gun
/obj/item/weapon/gun/projectile/giskard
name = "\improper \"Giskard\" holdout pistol"
desc = "The FS HG .380 \"Giskard\" can even fit into the pocket! Uses .380 rounds."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "giskardcivil"
caliber = ".380"
magazine_type = /obj/item/ammo_magazine/m380
allowed_magazines = list(/obj/item/ammo_magazine/m380)
load_method = MAGAZINE
w_class = ITEMSIZE_SMALL
fire_sound = 'sound/weapons/gunshot_pathetic.ogg'
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 3)
/obj/item/weapon/gun/projectile/giskard/update_icon()
..()
if(ammo_magazine && ammo_magazine.stored_ammo.len)
icon_state = "giskardcivil"
else
icon_state = "giskardcivil_empty"
//Not so civilian gun
/obj/item/weapon/gun/projectile/giskard/olivaw
name = "\improper \"Olivaw\" holdout burst-pistol"
desc = "The FS HG .380 \"Olivaw\" is a more advanced version of the \"Giskard\". This one seems to have a two-round burst-fire mode. Uses .380 rounds."
icon_state = "olivawcivil"
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=1.2, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="2-round bursts", burst=2, fire_delay=0.2, move_delay=4, burst_accuracy=list(0,-15), dispersion=list(1.2, 1.8)),
)
/obj/item/weapon/gun/projectile/giskard/olivaw/update_icon()
..()
if(ammo_magazine && ammo_magazine.stored_ammo.len)
icon_state = "olivawcivil"
else
icon_state = "olivawcivil_empty"

View File

@@ -0,0 +1,115 @@
//////////////////// Eris Ported Guns ////////////////////
//Detective gun
/obj/item/weapon/gun/projectile/revolver/consul
name = "\improper \"Consul\" Revolver"
desc = "Are you feeling lucky, punk? Uses .44 rounds."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "inspector"
item_state = "revolver"
caliber = ".44"
ammo_type = /obj/item/ammo_casing/a44/rubber
handle_casings = CYCLE_CASINGS
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3)
/obj/item/weapon/gun/projectile/revolver/consul/proc/update_charge()
if(loaded.len==0)
overlays += "inspector_off"
else
overlays += "inspector_on"
/obj/item/weapon/gun/projectile/revolver/consul/update_icon()
overlays.Cut()
update_charge()
//.357 special ammo
/obj/item/ammo_magazine/s357/stun
name = "speedloader (.357 stun)"
desc = "A speedloader for .357 revolvers."
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "s357"
caliber = ".357"
ammo_type = /obj/item/ammo_casing/a357/stun
/obj/item/ammo_casing/a357/stun
desc = "A .357 stun bullet casing."
caliber = ".357"
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "stun357"
projectile_type = /obj/item/projectile/energy/electrode/stunshot/strong
/obj/item/ammo_magazine/s357/rubber
name = "speedloader (.357 rubber)"
desc = "A speedloader for .357 revolvers."
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "r357"
caliber = ".357"
ammo_type = /obj/item/ammo_casing/a357/rubber
/obj/item/ammo_casing/a357/rubber
desc = "A .357 rubber bullet casing."
caliber = ".357"
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "rubber357"
projectile_type = /obj/item/projectile/bullet/pistol/rubber/strong
/obj/item/ammo_magazine/s357/flash
name = "speedloader (.357 flash)"
desc = "A speedloader for .357 revolvers."
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "f357"
caliber = ".357"
ammo_type = /obj/item/ammo_casing/a357/flash
/obj/item/ammo_casing/a357/flash
desc = "A .357 flash bullet casing."
caliber = ".357"
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "flash357"
projectile_type = /obj/item/projectile/energy/flash/strong
//.380
/obj/item/ammo_casing/a380
desc = "A .380 bullet casing."
caliber = ".380"
projectile_type = /obj/item/projectile/bullet/pistol
/obj/item/ammo_magazine/m380
name = "magazine (.380)"
icon_state = "9x19p"
origin_tech = list(TECH_COMBAT = 2)
mag_type = MAGAZINE
matter = list(DEFAULT_WALL_MATERIAL = 480)
caliber = ".380"
ammo_type = /obj/item/ammo_casing/a380
max_ammo = 8
multiple_sprites = 1
//.44
/obj/item/ammo_casing/a44/rubber
icon_state = "r-casing"
desc = "A .44 rubber bullet casing."
projectile_type = /obj/item/projectile/bullet/pistol/rubber/strong
/obj/item/ammo_magazine/m44/rubber
desc = "A magazine for .44 less-than-lethal ammo."
ammo_type = /obj/item/ammo_casing/a44/rubber
//.44 speedloaders
/obj/item/ammo_magazine/s44
name = "speedloader (.44)"
desc = "A speedloader for .44 revolvers."
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "s357"
caliber = ".44"
matter = list(DEFAULT_WALL_MATERIAL = 1260)
ammo_type = /obj/item/ammo_casing/a44
max_ammo = 6
multiple_sprites = 1
mag_type = SPEEDLOADER
/obj/item/ammo_magazine/s44/rubber
name = "speedloader (.44 rubber)"
icon_state = "r357"
ammo_type = /obj/item/ammo_casing/a44/rubber

View File

@@ -0,0 +1,11 @@
// For general use
/obj/item/weapon/gun/projectile/shotgun/pump/USDF
name = "\improper USDF tactical shotgun"
desc = "All you greenhorns who wanted to see Xenomorphs up close... this is your lucky day. Uses 12g rounds."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "haloshotgun"
icon_override = 'icons/obj/gun_vr.dmi'
item_state = "haloshotgun_i"
item_icons = null
ammo_type = /obj/item/ammo_casing/a12g
max_shells = 12

View File

@@ -1,36 +0,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 = ITEMSIZE_HUGE // 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 = -45 //shooting at the hip
scoped_accuracy = 0
one_handed_penalty = 60 // 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/m762
allowed_magazines = list(/obj/item/ammo_magazine/m762)
/obj/item/weapon/gun/projectile/SVD/update_icon()
..()
// if(istype(ammo_magazine,/obj/item/ammo_magazine/m762)
// 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

@@ -14,7 +14,7 @@
id = "protector"
req_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 3, TECH_MAGNET = 2)
materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 2000, "silver" = 1000)
build_path = /obj/item/weapon/gun/energy/protector
build_path = /obj/item/weapon/gun/energy/gun/protector
sort_string = "MAAVA"
/datum/design/item/weapon/energy/sickshot

View File

@@ -1,855 +0,0 @@
/* TUTORIAL
"icon" is the file with the HUD/ground icon for the item
"icon_state" is the iconstate in this file for the item
"icon_override" is the file with the on-mob icons, can be the same file
"item_state" is the iconstate for the on-mob icons:
item_state_s is used for worn uniforms on mobs
item_state_r and item_state_l are for being held in each hand
"item_state_slots" can replace "item_state", it is a list:
item_state_slots["slotname1"] = "item state for that slot"
item_state_slots["slotname2"] = "item state for that slot"
on guns, in particular:
item_state being null makes it look for exactly the icon_state in the on-mob file,
including any 0,75,etc appended from the energy bar setting
item_state being present prevents different mode sprites, sadly, but you may
be able to override this on the gun itself with a proc
*/
/* TEMPLATE
//ckey:Character Name
/obj/item/weapon/gun/type/fluff/charactername
name = ""
desc = ""
icon = 'icons/vore/custom_guns_vr.dmi'
icon_state = "myicon"
icon_override = 'icons/vore/custom_guns_vr.dmi'
item_state = "myicon"
*/
////////////////////////////////////////////////////////////
//////////////////// Projectile Weapons ////////////////////
////////////////////////////////////////////////////////////
// For general use
/obj/item/weapon/gun/projectile/automatic/battlerifle
name = "\improper USDF service rifle"
desc = "You had your chance to be afraid before you joined my beloved Corps! But, to guide you back to the true path, I have brought this motivational device! Uses 9.5x40mm rounds."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "battlerifle"
icon_override = 'icons/obj/gun_vr.dmi'
item_state = "battlerifle_i"
item_icons = null
w_class = ITEMSIZE_LARGE
recoil = 2 // The battlerifle was known for its nasty recoil.
max_shells = 36
caliber = "9.5x40mm"
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2)
magazine_type = /obj/item/ammo_magazine/m95
allowed_magazines = list(/obj/item/ammo_magazine/m95)
fire_sound = 'sound/weapons/battlerifle.ogg'
load_method = MAGAZINE
slot_flags = SLOT_BACK
one_handed_penalty = 60 // The weapon itself is heavy
// For general use
/obj/item/weapon/gun/projectile/shotgun/pump/USDF
name = "\improper USDF tactical shotgun"
desc = "All you greenhorns who wanted to see Xenomorphs up close... this is your lucky day. Uses 12g rounds."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "haloshotgun"
icon_override = 'icons/obj/gun_vr.dmi'
item_state = "haloshotgun_i"
item_icons = null
ammo_type = /obj/item/ammo_casing/a12g
max_shells = 12
// For general use
/obj/item/weapon/gun/projectile/automatic/pdw
name = "personal defense weapon"
desc = "The X-9MM is a select-fire personal defense weapon designed in-house by Xing Private Security. It was made to compete with the WT550 Saber, but never caught on with NanoTrasen. Uses 9mm rounds."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "pdw"
item_state = "c20r" // Placeholder
w_class = ITEMSIZE_NORMAL
caliber = "9mm"
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2)
slot_flags = SLOT_BELT
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/m9mml
allowed_magazines = list(/obj/item/ammo_magazine/m9mm, /obj/item/ammo_magazine/m9mml)
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,-15,-30), dispersion=list(0.0, 0.6, 0.6))
)
/obj/item/weapon/gun/projectile/automatic/pdw/update_icon(var/ignore_inhands)
..()
if(istype(ammo_magazine,/obj/item/ammo_magazine/m9mm))
icon_state = "pdw-short"
else
icon_state = (ammo_magazine)? "pdw" : "pdw-empty"
if(!ignore_inhands) update_held_icon()
// For general use
/obj/item/weapon/gun/energy/imperial
name = "imperial energy pistol"
desc = "An elegant weapon developed by the Imperium Auream. Their weaponsmiths have cleverly found a way to make a gun that is only about the size of an average energy pistol, yet with the fire power of a laser carbine."
icon_state = "ge_pistol"
item_state = "ge_pistol"
fire_sound = 'sound/weapons/mandalorian.ogg'
icon = 'icons/obj/gun_vr.dmi'
item_icons = list(slot_r_hand_str = 'icons/obj/gun_vr.dmi', slot_l_hand_str = 'icons/obj/gun_vr.dmi') // WORK YOU FUCKING CUNT PIECE OF SHIT BASTARD STUPID BITCH ITEM ICON AAAAHHHH
item_state_slots = list(slot_r_hand_str = "ge_pistol_r", slot_l_hand_str = "ge_pistol_l")
slot_flags = SLOT_BELT
w_class = ITEMSIZE_NORMAL
force = 10
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2)
matter = list(DEFAULT_WALL_MATERIAL = 2000)
projectile_type = /obj/item/projectile/beam/imperial
// jertheace : Jeremiah 'Ace' Acacius
/obj/item/weapon/gun/projectile/shotgun/pump/USDF/fluff/ace
name = "Ace's tactical shotgun" // D-model holds half as many shells as the normal version so as not OP as shit. Better than normal shotgun, worse than combat shotgun.
desc = "Owned by the respected (or feared?) veteran Captain of the original NSS Adephagia. Inscribed on the barrel are the words \"Speak softly, and carry a big stick.\""
ammo_type = /obj/item/ammo_casing/a12g/stunshell
max_shells = 6
/* // jertheace : Jeremiah 'Ace' Acacius
/obj/item/ammo_magazine/m9mm/large/preban/hp // Not yet implemented. Waiting on a PR to Polaris. -Ace
ammo_type = /obj/item/ammo_casing/a9mm/hp
*/
// bwoincognito:Tasald Corlethian
/obj/item/weapon/gun/projectile/revolver/mateba/fluff/tasald_corlethian //Now that it is actually Single-Action and not hacky broken SA, I see no reason to nerf this down to .38. --Joan Risu
name = "\improper \"Big Iron\" revolver"
desc = "A .357 revolver for veteran rangers on the planet Orta. The right side of the handle has a logo for Quarion industries, and the left is the Rangers. The primary ammo for this gun is .357 rubber. According to the CentCom Chief of Security, this revolver was more controversial than it needed to be."
icon = 'icons/vore/custom_guns_vr.dmi'
icon_state = "tasaldrevolver"
item_state = "revolver"
fire_sound = 'sound/weapons/pistol.ogg'
ammo_type = /obj/item/ammo_casing/a357/rubber //Like I said, no reason to nerf. --Joan Risu
var/recentpump = 0
var/cocksound = 'sound/weapons/revolvercock.ogg'
consume_next_projectile()
if(chambered)
return chambered.BB
to_chat(usr, "<span class='warning'>It's a single action revolver, pull the hammer back!</span>")
return null
attack_self(mob/living/user as mob)
if(world.time >= recentpump + 10)
pump(user)
recentpump = world.time
proc/pump(mob/M as mob)
playsound(M, cocksound, 60, 1)
if(chambered)//We have a shell in the chamber
chambered.loc = get_turf(src)//Eject casing
chambered = null
if(loaded.len)
var/obj/item/ammo_casing/AC = loaded[1] //load next casing.
loaded -= AC //Remove casing from loaded list.
chambered = AC
update_icon()
/obj/item/weapon/gun/projectile/revolver/mateba/fluff/tasald_corlethian/attack_hand(mob/user as mob)
if(user.get_inactive_hand() == src)
unload_ammo(user, allow_dump = 1)
else
..()
// wankersonofjerkin : Glenn Pink
/obj/item/weapon/gun/projectile/revolver/fluff/admiral_pink_revolver
name = "Admiral Pink's 'Devilgun'"
desc = "You notice the serial number on the revolver is 666. The word 'Sin' is engraved on the blood-red rosewood grip. Uses .357 rounds." //Edgy, but based on real guns the player owns.
icon = 'icons/vore/custom_guns_vr.dmi'
icon_state = "ryan_winz"
item_state = "revolver"
/obj/item/weapon/gun/projectile/revolver/fluff/admiral_pink_revolver/redemption
name = "Admiral Pink's 'Redeemer'"
desc = "You notice the serial number on the revolver is 667. The word 'Redemption' is engraved on dark rosewood grip. Uses .357 rounds." //Edgy, but based on real guns the player owns.
// sasoperative : Joseph Skinner
/obj/item/weapon/gun/projectile/revolver/judge/fluff/sasoperative
name = "\"The Jury\""
desc = "A customized variant of the \"The Judge\" revolver sold by Cybersun Industries, built specifically for Joseph Skinner. Uses 12g shells."
icon = 'icons/vore/custom_guns_vr.dmi'
icon_state = "jury"
item_state = "gun"
ammo_type = /obj/item/ammo_casing/a12g/beanbag
// Dhaeleena : Dhaeleena M'iar
/obj/item/weapon/gun/projectile/revolver/mateba/fluff/dhael
name = "Dhaeleena's engraved mateba"
desc = "This unique looking handgun is engraved with roses along the barrel and the cylinder as well as the initials DM under the grip. Along the middle of the barrel an engraving shows the words 'Mateba Unica 6'. Uses .357 rounds."
icon_state = "mateba"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
ammo_type = /obj/item/ammo_casing/a357/stun
// SilencedMP5A5 : Serdykov Antoz
/obj/item/weapon/gun/projectile/colt/fluff/serdy
name = "Raikov PPS/45"
desc = "An expertly crafted and reliable .45 sidearm with a 7 round single-stack magazine, originally built and in 2369 for frontier men and peacekeepers. The frame and slide are nickel plated, and it has a synthetic black ivory grip. The words 'Krasnaya Raketa' are engraved on the slide near the muzzle. It's relatively thin, but heavy. It also has an ambidextrous mag release and safety lever, making it grippable in either hand comfortably."
icon = 'icons/vore/custom_guns_vr.dmi'
item_state = "raikov"
icon_state = "raikov"
fire_sound = 'sound/weapons/45pistol_vr.ogg'
magazine_type = /obj/item/ammo_magazine/m45/rubber
/* //Commented out due to weapon change.
/obj/item/weapon/gun/projectile/revolver/detective/fluff/serdy //This forces it to be .38 bullets only
name = "Vintage S&W Model 10"
desc = "It's a classic S&W Model 10 revolver. This one in particular is beautifully restored with a chromed black frame and cylinder, and a nice redwood grip. The name 'Serdykov A.' is engraved into the base of the grip."
icon = 'icons/vore/custom_guns_vr.dmi'
item_state = "model10"
icon_state = "model10"
fire_sound = 'sound/weapons/deagle.ogg'
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
ammo_type = /obj/item/ammo_casing/a38r //Rubber rounds.
*/
// LuminescentRing : Briana Moore
/obj/item/weapon/gun/projectile/derringer/fluff/briana
name = "second-hand derringer"
desc = "It's a palm sized gun. One of the few things that won't break an angel's wrists. Uses 10mm rounds."
caliber = "10mm"
ammo_type = /obj/item/ammo_casing/a10mm
// For general use
/obj/item/weapon/gun/projectile/automatic/stg
name = "\improper Sturmgewehr"
desc = "An STG-560 built by RauMauser. Experience the terror of the Siegfried line, redone for the 26th century! The Kaiser would be proud. Uses unique 7.92x33mm Kurz rounds."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "stg60"
item_state = "arifle"
w_class = ITEMSIZE_LARGE
max_shells = 30
caliber = "7.92x33mm"
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2, TECH_ILLEGAL = 6)
magazine_type = /obj/item/ammo_magazine/mtg
allowed_magazines = list(/obj/item/ammo_magazine/mtg)
load_method = MAGAZINE
/obj/item/weapon/gun/projectile/automatic/stg/update_icon(var/ignore_inhands)
..()
icon_state = (ammo_magazine)? "stg60" : "stg60-empty"
item_state = (ammo_magazine)? "arifle" : "arifle-empty"
if(!ignore_inhands) update_held_icon()
//-----------------------Tranq Gun----------------------------------
/obj/item/weapon/gun/projectile/dartgun/tranq
name = "tranquilizer gun"
desc = "A gas-powered dart gun designed by the National Armory of Gaia. This gun is used primarily by United Federation special forces for Tactical Espionage missions. Don't forget your bandana."
icon_state = "tranqgun"
item_state = null
caliber = "dart"
fire_sound = 'sound/weapons/empty.ogg'
fire_sound_text = "a metallic click"
recoil = 0
silenced = 1
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/chemdart
allowed_magazines = list(/obj/item/ammo_magazine/chemdart)
auto_eject = 0
/obj/item/weapon/gun/projectile/dartgun/tranq/update_icon()
if(!ammo_magazine)
icon_state = "tranqgun"
return 1
if(!ammo_magazine.stored_ammo || ammo_magazine.stored_ammo.len)
icon_state = "tranqgun"
else if(ammo_magazine.stored_ammo.len > 5)
icon_state = "tranqgun"
else
icon_state = "tranqgun"
return 1
// Removed because gun64_vr.dmi guns don't work.
/*//-----------------------UF-ARC----------------------------------
/obj/item/weapon/gun/projectile/automatic/carbine/fluff/ufarc
name = "UF-ARC"
desc = "The UF-ARC is a lightweight assault rifle manufactured by the National Armory of Gaia and sold almost exclusively to the United Federation's standing army, the Military Assault Command Operations Department (MACOs)."
icon = 'icons/obj/gun64_vr.dmi'
icon_state = "ufarc"
icon_override = 'icons/obj/gun_vr.dmi'
item_state = "battlerifle_i"
item_icons = null
pixel_x = -16
/obj/item/weapon/gun/projectile/automatic/carbine/fluff/ufarc/update_icon(var/ignore_inhands)
..()
// TODO - Fix this for spriting different size magazines
icon_state = (ammo_magazine)? "ufarc" : "ufarc-empty"
item_state = (ammo_magazine)? "bullpup" : "bullpup-empty"
if(!ignore_inhands) update_held_icon()
//-----------------------G44----------------------------------
/obj/item/weapon/gun/projectile/automatic/carbine/fluff/g44
name = "G44 Rifle"
desc = "The G44 is a lightweight assault rifle manufactured by the National Armory of Gaia and sold almost exclusively to the United Federation's standing army, the Military Assault Command Operations Department (MACOs)."
icon = 'icons/obj/gun64_vr.dmi'
icon_state = "g44"
item_state = "bullpup"
pixel_x = -16
/obj/item/weapon/gun/projectile/automatic/carbine/fluff/g44/update_icon(var/ignore_inhands)
..()
// TODO - Fix this for spriting different size magazines
icon_state = (ammo_magazine)? "g44" : "g44-empty"
item_state = (ammo_magazine)? "bullpup" : "bullpup-empty"
if(!ignore_inhands) update_held_icon()
//-----------------------G44 Energy Variant--------------------
/obj/item/weapon/gun/energy/gun/burst/g44e
name = "G44 Energy Rifle"
desc = "The G44 Energy is a laser variant of the G44 lightweight assault rifle manufactured by the National Armory of Gaia. Though almost exclusively to the United Federation's Military Assault Command Operations Department (MACOs) and Starfleet, it is occassionally sold to security departments for their stun capabilities."
icon = 'icons/obj/gun64_vr.dmi'
icon_state = "g44estun100"
item_state = "energystun100" //This is temporary.
fire_sound = 'sound/weapons/Taser.ogg'
charge_cost = 100
force = 8
w_class = ITEMSIZE_LARGE
fire_delay = 6
pixel_x = -16
projectile_type = /obj/item/projectile/beam/stun/weak
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2, TECH_ILLEGAL = 3)
modifystate = "g44estun"
one_handed_penalty = 60
firemodes = list(
list(mode_name="stun", burst=1, projectile_type=/obj/item/projectile/beam/stun/weak, modifystate="g44estun", fire_sound='sound/weapons/Taser.ogg', charge_cost = 100),
list(mode_name="stun burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,0,0), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/item/projectile/beam/stun/weak, modifystate="g44estun", fire_sound='sound/weapons/Taser.ogg'),
list(mode_name="lethal", burst=1, projectile_type=/obj/item/projectile/beam/burstlaser, modifystate="g44ekill", fire_sound='sound/weapons/Laser.ogg', charge_cost = 200),
list(mode_name="lethal burst", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,0,0), dispersion=list(0.0, 0.2, 0.5), projectile_type=/obj/item/projectile/beam/burstlaser, modifystate="g44ekill", fire_sound='sound/weapons/Laser.ogg'),
)*/
// molenar:Kari Akiren
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/fluff/kari_akiren
name = "clockwork rifle"
desc = "Brass, copper, and lots of gears. Well lubricated for fluid movement as each round is loaded, locked, and fired. Just like clockwork."
icon = 'icons/vore/custom_guns_vr.dmi'
icon_state = "clockworkrifle_icon"
icon_override = 'icons/vore/custom_guns_vr.dmi'
item_state = "clockworkrifle"
item_icons = null
/* Permit Expired
//Razerwing:Archer Maximus
/obj/item/weapon/gun/projectile/colt/fluff/archercolt
name = "\improper MEUSOC .45"
desc = "Some serious drywall work, coming up!"
*/
//hzdonut:Jesse Soemmer
/obj/item/weapon/gun/projectile/revolver/fluff/jesselemat
name = "Modified LeMat"
desc = "The LeMat Revolver is a 9 shot revolver with a secondary firing barrel for loading shotgun shells. Uses .38-Special and 12g rounds depending on the barrel. This one appears to have had it's secondary barrel sealed off and looks to be in pristine condition. Either it's brand new, or its owner takes very good care of it."
icon_state = "lemat"
max_shells = 9
caliber = ".38"
ammo_type = /obj/item/ammo_casing/a38
preserve_item = FALSE
//////////////////// Energy Weapons ////////////////////
// ------------ Energy Luger ------------
/obj/item/weapon/gun/energy/gun/eluger
name = "energy Luger"
desc = "The finest sidearm produced by RauMauser. Although its battery cannot be removed, its ergonomic design makes it easy to shoot, allowing for rapid follow-up shots. It also has the ability to toggle between stun and kill."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "elugerstun100"
item_state = "gun"
fire_delay = null // Lugers are quite comfortable to shoot, thus allowing for more controlled follow-up shots. Rate of fire similar to a laser carbine.
battery_lock = 1 // In exchange for balance, you cannot remove the battery. Also there's no sprite for that and I fucking suck at sprites. -Ace
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2, TECH_ILLEGAL = 2) // Illegal tech cuz Space Nazis
modifystate = "elugerstun"
fire_sound = 'sound/weapons/Taser.ogg'
firemodes = list(
list(mode_name="stun", charge_cost=120,projectile_type=/obj/item/projectile/beam/stun, modifystate="elugerstun", fire_sound='sound/weapons/Taser.ogg'),
list(mode_name="lethal", charge_cost=240,projectile_type=/obj/item/projectile/beam/eluger, modifystate="elugerkill", fire_sound='sound/weapons/eluger.ogg'),
)
//////////////////// Eris Ported Guns ////////////////////
//HoS Gun
/*/obj/item/weapon/gun/projectile/lamia
name = "FS HG .44 \"Lamia\""
desc = "Uses .44 rounds."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "Headdeagle"
item_state = "revolver"
fire_sound = 'sound/weapons/Gunshot.ogg'
caliber = ".44"
magazine_type = /obj/item/ammo_magazine/m44/rubber
allowed_magazines = list(/obj/item/ammo_magazine/m44,/obj/item/ammo_magazine/m44/rubber)
load_method = MAGAZINE
auto_eject = 1
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 4)
/obj/item/weapon/gun/projectile/lamia/update_icon()
overlays.Cut()
if(!ammo_magazine)
return
var/ratio = ammo_magazine.stored_ammo.len * 100 / ammo_magazine.max_ammo
ratio = round(ratio, 33)
overlays += "deagle_[ratio]"*/ // Fugly.
//Civilian gun
/obj/item/weapon/gun/projectile/giskard
name = "\improper \"Giskard\" holdout pistol"
desc = "The FS HG .380 \"Giskard\" can even fit into the pocket! Uses .380 rounds."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "giskardcivil"
caliber = ".380"
magazine_type = /obj/item/ammo_magazine/m380
allowed_magazines = list(/obj/item/ammo_magazine/m380)
load_method = MAGAZINE
w_class = ITEMSIZE_SMALL
fire_sound = 'sound/weapons/gunshot_pathetic.ogg'
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 3)
/obj/item/weapon/gun/projectile/giskard/update_icon()
..()
if(ammo_magazine && ammo_magazine.stored_ammo.len)
icon_state = "giskardcivil"
else
icon_state = "giskardcivil_empty"
//Not so civilian gun
/obj/item/weapon/gun/projectile/giskard/olivaw
name = "\improper \"Olivaw\" holdout burst-pistol"
desc = "The FS HG .380 \"Olivaw\" is a more advanced version of the \"Giskard\". This one seems to have a two-round burst-fire mode. Uses .380 rounds."
icon_state = "olivawcivil"
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=1.2, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="2-round bursts", burst=2, fire_delay=0.2, move_delay=4, burst_accuracy=list(0,-15), dispersion=list(1.2, 1.8)),
)
/obj/item/weapon/gun/projectile/giskard/olivaw/update_icon()
..()
if(ammo_magazine && ammo_magazine.stored_ammo.len)
icon_state = "olivawcivil"
else
icon_state = "olivawcivil_empty"
//Detective gun
/obj/item/weapon/gun/projectile/revolver/consul
name = "\improper \"Consul\" Revolver"
desc = "Are you feeling lucky, punk? Uses .44 rounds."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "inspector"
item_state = "revolver"
caliber = ".44"
ammo_type = /obj/item/ammo_casing/a44/rubber
handle_casings = CYCLE_CASINGS
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3)
/obj/item/weapon/gun/projectile/revolver/consul/proc/update_charge()
if(loaded.len==0)
overlays += "inspector_off"
else
overlays += "inspector_on"
/obj/item/weapon/gun/projectile/revolver/consul/update_icon()
overlays.Cut()
update_charge()
// No idea what this is for.
/obj/item/weapon/gun/projectile/automatic/sol
name = "\improper \"Sol\" SMG"
desc = "The FS 9x19mm \"Sol\" is a compact and reliable submachine gun. Uses 9mm rounds."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "SMG-IS"
item_state = "wt550"
w_class = ITEMSIZE_LARGE
slot_flags = SLOT_BELT
caliber = "9mm"
magazine_type = /obj/item/ammo_magazine/m9mm
allowed_magazines = list(/obj/item/ammo_magazine/m9mm)
load_method = MAGAZINE
multi_aim = 1
burst_delay = 2
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2)
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,-15,-15), dispersion=list(0.0, 0.6, 1.0)),
)
/obj/item/weapon/gun/projectile/automatic/sol/proc/update_charge()
if(!ammo_magazine)
return
var/ratio = ammo_magazine.stored_ammo.len / ammo_magazine.max_ammo
if(ratio < 0.25 && ratio != 0)
ratio = 0.25
ratio = round(ratio, 0.25) * 100
overlays += "smg_[ratio]"
/obj/item/weapon/gun/projectile/automatic/sol/update_icon()
icon_state = (ammo_magazine)? "SMG-IS" : "SMG-IS-empty"
overlays.Cut()
update_charge()
//HoP gun
/obj/item/weapon/gun/energy/gun/martin
name = "holdout energy gun"
desc = "The FS PDW E \"Martin\" is small holdout e-gun. Don't miss!"
icon = 'icons/obj/gun_vr.dmi'
icon_state = "PDW"
item_state = "gun"
w_class = ITEMSIZE_SMALL
projectile_type = /obj/item/projectile/beam/stun
charge_cost = 1200
charge_meter = 0
modifystate = null
battery_lock = 1
fire_sound = 'sound/weapons/Taser.ogg'
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
firemodes = list(
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, fire_sound='sound/weapons/Taser.ogg', charge_cost = 600),
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, fire_sound='sound/weapons/Laser.ogg', charge_cost = 1200),
)
/obj/item/weapon/gun/energy/gun/martin/proc/update_mode()
var/datum/firemode/current_mode = firemodes[sel_mode]
switch(current_mode.name)
if("stun") add_overlay("taser_pdw")
if("lethal") add_overlay("lazer_pdw")
/obj/item/weapon/gun/energy/gun/martin/update_icon()
cut_overlays()
update_mode()
/////////////////////////////////////////////////////
//////////////////// Custom Ammo ////////////////////
/////////////////////////////////////////////////////
//---------------- Beams ----------------
/obj/item/projectile/beam/eluger
name = "laser beam"
icon_state = "xray"
light_color = "#00FF00"
muzzle_type = /obj/effect/projectile/muzzle/xray
tracer_type = /obj/effect/projectile/tracer/xray
impact_type = /obj/effect/projectile/impact/xray
/obj/item/projectile/beam/imperial
name = "laser beam"
fire_sound = 'sound/weapons/mandalorian.ogg'
icon_state = "darkb"
light_color = "#8837A3"
muzzle_type = /obj/effect/projectile/muzzle/darkmatter
tracer_type = /obj/effect/projectile/tracer/darkmatter
impact_type = /obj/effect/projectile/impact/darkmatter
/obj/item/projectile/beam/stun/kin21
name = "kinh21 stun beam"
icon_state = "omnilaser"
light_color = "#0000FF"
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
tracer_type = /obj/effect/projectile/tracer/laser_omni
impact_type = /obj/effect/projectile/impact/laser_omni
//--------------- StG-60 ----------------
/obj/item/ammo_magazine/m792
name = "box mag (7.92x33mm Kurz)"
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "stg_30rnd"
caliber = "7.92x33mm"
ammo_type = /obj/item/ammo_casing/a792
max_ammo = 30
mag_type = MAGAZINE
/obj/item/ammo_casing/a792
desc = "A 7.92x33mm Kurz casing."
icon_state = "rifle-casing"
caliber = "7.92x33mm"
projectile_type = /obj/item/projectile/bullet/rifle/a762
/obj/item/ammo_magazine/mtg/empty
initial_ammo = 0
//------------- Battlerifle -------------
/obj/item/ammo_magazine/m95
name = "box mag (9.5x40mm)"
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "battlerifle"
caliber = "9.5x40mm"
ammo_type = /obj/item/ammo_casing/a95
max_ammo = 36
mag_type = MAGAZINE
multiple_sprites = 1
/obj/item/ammo_casing/a95
desc = "A 9.5x40mm bullet casing."
icon_state = "rifle-casing"
caliber = "9.5x40mm"
projectile_type = /obj/item/projectile/bullet/rifle/a95
/obj/item/projectile/bullet/rifle/a95
damage = 40
/obj/item/ammo_magazine/m95/empty
initial_ammo = 0
//---------------- PDW ------------------
/obj/item/ammo_magazine/m9mml
name = "\improper SMG magazine (9mm)"
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "smg"
origin_tech = list(TECH_COMBAT = 2)
mag_type = MAGAZINE
matter = list(DEFAULT_WALL_MATERIAL = 1800)
caliber = "9mm"
ammo_type = /obj/item/ammo_casing/a9mm
max_ammo = 30
multiple_sprites = 1
/obj/item/ammo_magazine/m9mml/empty
initial_ammo = 0
/obj/item/ammo_magazine/m9mml/ap
name = "\improper SMG magazine (9mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a9mm/ap
/* Seems to have been de-coded?
/obj/item/ammo_magazine/m9mml/flash
name = "\improper SMG magazine (9mm flash)"
ammo_type = /obj/item/ammo_casing/a9mmf
/obj/item/ammo_magazine/m9mml/rubber
name = "\improper SMG magazine (9mm rubber)"
ammo_type = /obj/item/ammo_casing/a9mmr
/obj/item/ammo_magazine/m9mml/practice
name = "\improper SMG magazine (9mm practice)"
ammo_type = /obj/item/ammo_casing/a9mmp
*/
//.357 special ammo
/obj/item/ammo_magazine/s357/stun
name = "speedloader (.357 stun)"
desc = "A speedloader for .357 revolvers."
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "s357"
caliber = ".357"
ammo_type = /obj/item/ammo_casing/a357/stun
/obj/item/ammo_casing/a357/stun
desc = "A .357 stun bullet casing."
caliber = ".357"
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "stun357"
projectile_type = /obj/item/projectile/energy/electrode/stunshot/strong
/obj/item/ammo_magazine/s357/rubber
name = "speedloader (.357 rubber)"
desc = "A speedloader for .357 revolvers."
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "r357"
caliber = ".357"
ammo_type = /obj/item/ammo_casing/a357/rubber
/obj/item/ammo_casing/a357/rubber
desc = "A .357 rubber bullet casing."
caliber = ".357"
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "rubber357"
projectile_type = /obj/item/projectile/bullet/pistol/rubber/strong
/obj/item/ammo_magazine/s357/flash
name = "speedloader (.357 flash)"
desc = "A speedloader for .357 revolvers."
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "f357"
caliber = ".357"
ammo_type = /obj/item/ammo_casing/a357/flash
/obj/item/ammo_casing/a357/flash
desc = "A .357 flash bullet casing."
caliber = ".357"
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "flash357"
projectile_type = /obj/item/projectile/energy/flash/strong
//.380
/obj/item/ammo_casing/a380
desc = "A .380 bullet casing."
caliber = ".380"
projectile_type = /obj/item/projectile/bullet/pistol
/obj/item/ammo_magazine/m380
name = "magazine (.380)"
icon_state = "9x19p"
origin_tech = list(TECH_COMBAT = 2)
mag_type = MAGAZINE
matter = list(DEFAULT_WALL_MATERIAL = 480)
caliber = ".380"
ammo_type = /obj/item/ammo_casing/a380
max_ammo = 8
multiple_sprites = 1
//.44
/obj/item/ammo_casing/a44/rubber
icon_state = "r-casing"
desc = "A .44 rubber bullet casing."
projectile_type = /obj/item/projectile/bullet/pistol/rubber/strong
/obj/item/ammo_magazine/m44/rubber
desc = "A magazine for .44 less-than-lethal ammo."
ammo_type = /obj/item/ammo_casing/a44/rubber
//.44 speedloaders
/obj/item/ammo_magazine/s44
name = "speedloader (.44)"
desc = "A speedloader for .44 revolvers."
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "s357"
caliber = ".44"
matter = list(DEFAULT_WALL_MATERIAL = 1260)
ammo_type = /obj/item/ammo_casing/a44
max_ammo = 6
multiple_sprites = 1
mag_type = SPEEDLOADER
/obj/item/ammo_magazine/s44/rubber
name = "speedloader (.44 rubber)"
icon_state = "r357"
ammo_type = /obj/item/ammo_casing/a44/rubber
//Expedition Frontier Phaser
/obj/item/weapon/gun/energy/frontier
name = "frontier phaser"
desc = "An extraordinarily rugged laser weapon, built to last and requiring effectively no maintenance. Includes a built-in crank charger for recharging away from civilization."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "phaser"
item_state = "phaser"
item_icons = list(slot_l_hand_str = 'icons/mob/items/lefthand_guns_vr.dmi', slot_r_hand_str = 'icons/mob/items/righthand_guns_vr.dmi', "slot_belt" = 'icons/mob/belt_vr.dmi')
fire_sound = 'sound/weapons/laser2.ogg'
origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2, TECH_POWER = 4)
charge_cost = 300
battery_lock = 1
unacidable = 1
var/recharging = 0
var/phase_power = 75
projectile_type = /obj/item/projectile/beam
firemodes = list(
list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/beam, charge_cost = 300),
list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/weaklaser, charge_cost = 60),
)
/obj/item/weapon/gun/energy/frontier/unload_ammo(var/mob/user)
if(recharging)
return
recharging = 1
update_icon()
user.visible_message("<span class='notice'>[user] opens \the [src] and starts pumping the handle.</span>", \
"<span class='notice'>You open \the [src] and start pumping the handle.</span>")
while(recharging)
if(!do_after(user, 10, src))
break
playsound(get_turf(src),'sound/items/change_drill.ogg',25,1)
if(power_supply.give(phase_power) < phase_power)
break
recharging = 0
update_icon()
/obj/item/weapon/gun/energy/frontier/update_icon()
if(recharging)
icon_state = "[initial(icon_state)]_pump"
update_held_icon()
return
..()
/obj/item/weapon/gun/energy/frontier/emp_act(severity)
return ..(severity+2)
/obj/item/weapon/gun/energy/frontier/ex_act() //|rugged|
return
/obj/item/weapon/gun/energy/frontier/locked
desc = "An extraordinarily rugged laser weapon, built to last and requiring effectively no maintenance. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility."
req_access = list(access_armory) //for toggling safety
var/locked = 1
/obj/item/weapon/gun/energy/frontier/locked/attackby(obj/item/I, mob/user)
var/obj/item/weapon/card/id/id = I.GetID()
if(istype(id))
if(check_access(id))
locked = !locked
to_chat(user, "<span class='warning'>You [locked ? "enable" : "disable"] the safety lock on \the [src].</span>")
else
to_chat(user, "<span class='warning'>Access denied.</span>")
user.visible_message("<span class='notice'>[user] swipes \the [I] against \the [src].</span>")
else
return ..()
/obj/item/weapon/gun/energy/frontier/locked/emag_act(var/remaining_charges,var/mob/user)
..()
locked = !locked
to_chat(user, "<span class='warning'>You [locked ? "enable" : "disable"] the safety lock on \the [src]!</span>")
/obj/item/weapon/gun/energy/frontier/locked/special_check(mob/user)
if(locked)
var/turf/T = get_turf(src)
if(T.z in using_map.map_levels)
to_chat(user, "<span class='warning'>The safety device prevents the gun from firing this close to the facility.</span>")
return 0
return ..()
//Phaser Carbine - Reskinned phaser
/obj/item/weapon/gun/energy/frontier/locked/carbine
name = "frontier carbine"
desc = "An ergonomically improved version of the venerable frontier phaser, the carbine is a fairly new weapon, and has only been produced in limited numbers so far. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "carbinekill"
item_state = "retro"
item_icons = list(slot_l_hand_str = 'icons/mob/items/lefthand_guns.dmi', slot_r_hand_str = 'icons/mob/items/righthand_guns.dmi')
modifystate = "carbinekill"
firemodes = list(
list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/beam, modifystate="carbinekill", charge_cost = 300),
list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/weaklaser, modifystate="carbinestun", charge_cost = 60),
)
/obj/item/weapon/gun/energy/frontier/locked/carbine/update_icon()
if(recharging)
icon_state = "[modifystate]_pump"
update_held_icon()
return
..()
//Expeditionary Holdout Phaser Pistol
/obj/item/weapon/gun/energy/frontier/locked/holdout
name = "holdout frontier phaser"
desc = "An minaturized weapon designed for the purpose of expeditionary support to defend themselves on the field. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility."
icon = 'icons/obj/gun_vr.dmi'
icon_state = "holdoutkill"
item_state = null
phase_power = 100
w_class = ITEMSIZE_SMALL
charge_cost = 600
modifystate = "holdoutkill"
firemodes = list(
list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/beam, modifystate="holdoutkill", charge_cost = 600),
list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/weaklaser, modifystate="holdoutstun", charge_cost = 120),
list(mode_name="stun", fire_delay=12, projectile_type=/obj/item/projectile/beam/stun/med, modifystate="holdoutshock", charge_cost = 300),
)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 44 KiB

View File

@@ -39,7 +39,7 @@
/obj/item/weapon/reagent_containers/glass/bottle/antitoxin,
/obj/item/weapon/storage/belt/medical/emt,
/obj/item/weapon/material/knife/tacknife/survival,
/obj/item/weapon/gun/energy/frontier/locked/holdout,
/obj/item/weapon/gun/energy/locked/frontier/holdout,
/obj/item/clothing/mask/gas/explorer,
/obj/item/clothing/suit/storage/hooded/explorer/medic,
/obj/item/clothing/suit/storage/hooded/wintercoat/medical/sar,
@@ -68,7 +68,7 @@
starts_with = list(
/obj/item/weapon/storage/backpack/parachute,
/obj/item/weapon/material/knife/tacknife/survival,
/obj/item/weapon/gun/energy/frontier/locked/holdout,
/obj/item/weapon/gun/energy/locked/frontier/holdout,
/obj/item/clothing/head/pilot,
/obj/item/clothing/under/rank/pilot1,
/obj/item/clothing/suit/storage/toggle/bomber/pilot,
@@ -116,7 +116,7 @@
/obj/item/stack/marker_beacon/thirty,
/obj/item/weapon/material/knife/tacknife/survival,
/obj/item/weapon/material/knife/machete/deluxe,
/obj/item/weapon/gun/energy/frontier/locked/carbine,
/obj/item/weapon/gun/energy/locked/frontier/carbine,
/obj/item/clothing/accessory/holster/machete,
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein,

View File

@@ -7145,8 +7145,8 @@
/obj/item/weapon/cell/device/weapon,
/obj/item/weapon/cell/device/weapon,
/obj/item/weapon/cell/device/weapon,
/obj/item/weapon/gun/energy/protector,
/obj/item/weapon/gun/energy/protector,
/obj/item/weapon/gun/energy/gun/protector,
/obj/item/weapon/gun/energy/gun/protector,
/turf/simulated/floor/tiled/steel_grid,
/area/mothership/armory)
"nc" = (

View File

@@ -367,7 +367,7 @@ var/global/list/latejoin_tram = list()
/obj/structure/closet/secure_closet/guncabinet/excursion/New()
..()
for(var/i = 1 to 3)
new /obj/item/weapon/gun/energy/frontier/locked(src)
new /obj/item/weapon/gun/energy/locked/frontier(src)
// Used at centcomm for the elevator
/obj/machinery/cryopod/robot/door/dorms

View File

@@ -3033,20 +3033,33 @@
#include "code\modules\projectiles\guns\modular_guns.dm"
#include "code\modules\projectiles\guns\projectile.dm"
#include "code\modules\projectiles\guns\vox.dm"
#include "code\modules\projectiles\guns\energy\bsharpoon_vr.dm"
#include "code\modules\projectiles\guns\energy\crestrose_vr.dm"
#include "code\modules\projectiles\guns\energy\dominator_vr.dm"
#include "code\modules\projectiles\guns\energy\gunsword_vr.dm"
#include "code\modules\projectiles\guns\energy\hooklauncher.dm"
#include "code\modules\projectiles\guns\energy\kinetic_accelerator_vr.dm"
#include "code\modules\projectiles\guns\energy\laser.dm"
#include "code\modules\projectiles\guns\energy\laser_vr.dm"
#include "code\modules\projectiles\guns\energy\netgun_vr.dm"
#include "code\modules\projectiles\guns\energy\nuclear.dm"
#include "code\modules\projectiles\guns\energy\nuclear_vr.dm"
#include "code\modules\projectiles\guns\energy\particle.dm"
#include "code\modules\projectiles\guns\energy\phase.dm"
#include "code\modules\projectiles\guns\energy\protector_vr.dm"
#include "code\modules\projectiles\guns\energy\pulse.dm"
#include "code\modules\projectiles\guns\energy\pummeler_vr.dm"
#include "code\modules\projectiles\guns\energy\sickshot_vr.dm"
#include "code\modules\projectiles\guns\energy\special.dm"
#include "code\modules\projectiles\guns\energy\special_vr.dm"
#include "code\modules\projectiles\guns\energy\stun.dm"
#include "code\modules\projectiles\guns\energy\stun_vr.dm"
#include "code\modules\projectiles\guns\energy\temperature.dm"
#include "code\modules\projectiles\guns\energy\cell_loaded_vr\cell_loaded.dm"
#include "code\modules\projectiles\guns\energy\cell_loaded_vr\ml3m.dm"
#include "code\modules\projectiles\guns\energy\cell_loaded_vr\ml3m_cells.dm"
#include "code\modules\projectiles\guns\energy\cell_loaded_vr\nsfw.dm"
#include "code\modules\projectiles\guns\energy\cell_loaded_vr\nsfw_cells.dm"
#include "code\modules\projectiles\guns\launcher\crossbow.dm"
#include "code\modules\projectiles\guns\launcher\grenade_launcher.dm"
#include "code\modules\projectiles\guns\launcher\pneumatic.dm"
@@ -3063,11 +3076,14 @@
#include "code\modules\projectiles\guns\projectile\caseless.dm"
#include "code\modules\projectiles\guns\projectile\contender.dm"
#include "code\modules\projectiles\guns\projectile\dartgun.dm"
#include "code\modules\projectiles\guns\projectile\dartgun_vr.dm"
#include "code\modules\projectiles\guns\projectile\pistol.dm"
#include "code\modules\projectiles\guns\projectile\pistol_vr.dm"
#include "code\modules\projectiles\guns\projectile\revolver.dm"
#include "code\modules\projectiles\guns\projectile\revolver_vr.dm"
#include "code\modules\projectiles\guns\projectile\semiauto.dm"
#include "code\modules\projectiles\guns\projectile\shotgun.dm"
#include "code\modules\projectiles\guns\projectile\shotgun_vr.dm"
#include "code\modules\projectiles\guns\projectile\sniper.dm"
#include "code\modules\projectiles\guns\projectile\sniper\collapsible_sniper.dm"
#include "code\modules\projectiles\projectile\arc.dm"
@@ -3401,22 +3417,9 @@
#include "code\modules\vore\eating\vorepanel_vr.dm"
#include "code\modules\vore\fluffstuff\custom_boxes_vr.dm"
#include "code\modules\vore\fluffstuff\custom_clothes_vr.dm"
#include "code\modules\vore\fluffstuff\custom_guns_vr.dm"
#include "code\modules\vore\fluffstuff\custom_items_vr.dm"
#include "code\modules\vore\fluffstuff\custom_mecha_vr.dm"
#include "code\modules\vore\fluffstuff\custom_permits_vr.dm"
#include "code\modules\vore\fluffstuff\guns\bsharpoon.dm"
#include "code\modules\vore\fluffstuff\guns\crestrose.dm"
#include "code\modules\vore\fluffstuff\guns\dominator.dm"
#include "code\modules\vore\fluffstuff\guns\gunsword.dm"
#include "code\modules\vore\fluffstuff\guns\protector.dm"
#include "code\modules\vore\fluffstuff\guns\pummeler.dm"
#include "code\modules\vore\fluffstuff\guns\sickshot.dm"
#include "code\modules\vore\fluffstuff\guns\cell_loaded\cell_loaded.dm"
#include "code\modules\vore\fluffstuff\guns\cell_loaded\ml3m.dm"
#include "code\modules\vore\fluffstuff\guns\cell_loaded\ml3m_cells.dm"
#include "code\modules\vore\fluffstuff\guns\cell_loaded\nsfw.dm"
#include "code\modules\vore\fluffstuff\guns\cell_loaded\nsfw_cells.dm"
#include "code\modules\vore\persist\persist_vr.dm"
#include "code\modules\vore\resizing\grav_pull_vr.dm"
#include "code\modules\vore\resizing\holder_micro_vr.dm"