mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-25 21:19:44 +01:00
@@ -572,6 +572,282 @@
|
||||
list(mode_name="lethal", charge_cost=200,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"
|
||||
ammo_type = /obj/item/ammo_casing/a44/rubber
|
||||
magazine_type = /obj/item/ammo_magazine/a44/rubber
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/a44,/obj/item/ammo_magazine/a44/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 = "FS HG .32 \"Giskard\""
|
||||
desc = "Can even fit into the pocket! Uses .32 rounds."
|
||||
|
||||
icon = 'icons/obj/gun_vr.dmi'
|
||||
icon_state = "giskardcivil"
|
||||
|
||||
caliber = ".32"
|
||||
ammo_type = /obj/item/ammo_casing/a32
|
||||
magazine_type = /obj/item/ammo_magazine/a32
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/a32)
|
||||
load_method = MAGAZINE
|
||||
fire_delay = 0.6
|
||||
accuracy = 1
|
||||
|
||||
w_class = ITEMSIZE_SMALL
|
||||
|
||||
fire_sound = 'sound/weapons/Gunshot_light.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"
|
||||
|
||||
//Better civilian gun
|
||||
/obj/item/weapon/gun/projectile/olivaw
|
||||
name = "FS HG .32 \"Olivaw\""
|
||||
desc = "A more advanced version of the \"Giskard\". This one seems to have a two-round burst-fire mode. Uses .32 rounds."
|
||||
|
||||
icon = 'icons/obj/gun_vr.dmi'
|
||||
icon_state = "olivawcivil"
|
||||
|
||||
caliber = ".32"
|
||||
ammo_type = /obj/item/ammo_casing/a32
|
||||
magazine_type = /obj/item/ammo_magazine/a32
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/a32)
|
||||
fire_delay = 1.2
|
||||
load_method = MAGAZINE
|
||||
accuracy = 2
|
||||
|
||||
fire_sound = 'sound/weapons/Gunshot_light.ogg'
|
||||
|
||||
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,-1), dispersion=list(1.2, 1.8)),
|
||||
)
|
||||
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3)
|
||||
|
||||
/obj/item/weapon/gun/projectile/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 = "FS REV .44 \"Consul\""
|
||||
desc = "A choice revolver for when you absolutely, positively need to put a hole in the other guy. Uses .44 ammo."
|
||||
|
||||
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()
|
||||
|
||||
//Warden gun
|
||||
/obj/item/weapon/gun/projectile/automatic/SMG_sol
|
||||
name = "FS SMG 9x19 \"Sol\""
|
||||
desc = "A standard-issued weapon used by Ironhammer operatives. Compact and reliable. 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"
|
||||
ammo_type = /obj/item/ammo_casing/c9mm
|
||||
magazine_type = /obj/item/ammo_magazine/c9mm
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/c9mm)
|
||||
load_method = MAGAZINE
|
||||
multi_aim = 1
|
||||
burst_delay = 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,-1,-1), dispersion=list(0.0, 0.6, 1.0)),
|
||||
)
|
||||
|
||||
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2)
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/SMG_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/SMG_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 = "FS PDW E \"Martin\""
|
||||
desc = "A 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'
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="stun", projectile_type=/obj/item/projectile/beam/stun, fire_sound='sound/weapons/Taser.ogg'),
|
||||
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, fire_sound='sound/weapons/Laser.ogg'),
|
||||
)
|
||||
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 2)
|
||||
|
||||
/obj/item/weapon/gun/energy/gun/martin/proc/update_mode()
|
||||
var/datum/firemode/current_mode = firemodes[sel_mode]
|
||||
switch(current_mode.name)
|
||||
if("stun") overlays += "taser_pdw"
|
||||
if("lethal") overlays += "lazer_pdw"
|
||||
|
||||
/obj/item/weapon/gun/energy/gun/martin/update_icon()
|
||||
overlays.Cut()
|
||||
update_mode()
|
||||
|
||||
//RD 'gun'
|
||||
/obj/item/weapon/bluespace_harpoon
|
||||
name = "bluespace harpoon"
|
||||
desc = "For climbing on bluespace mountains!"
|
||||
|
||||
icon = 'icons/obj/gun_vr.dmi'
|
||||
icon_state = "harpoon-2"
|
||||
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
|
||||
throw_speed = 4
|
||||
throw_range = 20
|
||||
|
||||
origin_tech = list(TECH_BLUESPACE = 5)
|
||||
|
||||
var/mode = 1 // 1 mode - teleport you to turf 0 mode teleport turf to you
|
||||
var/last_fire = 0
|
||||
var/transforming = 0
|
||||
|
||||
/obj/item/weapon/bluespace_harpoon/afterattack(atom/A, mob/user as mob)
|
||||
var/current_fire = world.time
|
||||
if(!user || !A || user.machine)
|
||||
return
|
||||
if(transforming)
|
||||
to_chat(user,"<span class = 'warning'>You can't fire while \the [src] transforming!</span>")
|
||||
return
|
||||
if(!(current_fire - last_fire >= 20 SECONDS))
|
||||
to_chat(user,"<span class = 'warning'>\The [src] is recharging...</span>")
|
||||
return
|
||||
|
||||
last_fire = current_fire
|
||||
playsound(user, 'sound/weapons/wave.ogg', 60, 1)
|
||||
|
||||
user.visible_message("<span class='warning'>[user] fires \the [src]!</span>","<span class='warning'>You fire \the [src]!</span>")
|
||||
|
||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(4, 1, A)
|
||||
s.start()
|
||||
s = new /datum/effect/effect/system/spark_spread
|
||||
s.set_up(4, 1, user)
|
||||
s.start()
|
||||
|
||||
var/turf/FromTurf = mode ? get_turf(user) : get_turf(A)
|
||||
var/turf/ToTurf = mode ? get_turf(A) : get_turf(user)
|
||||
|
||||
for(var/obj/O in FromTurf)
|
||||
if(O.anchored) continue
|
||||
if(prob(5))
|
||||
O.forceMove(pick(trange(24,user)))
|
||||
else
|
||||
O.forceMove(ToTurf)
|
||||
|
||||
for(var/mob/living/M in FromTurf)
|
||||
if(prob(5))
|
||||
M.forceMove(pick(trange(24,user)))
|
||||
else
|
||||
M.forceMove(ToTurf)
|
||||
|
||||
/obj/item/weapon/bluespace_harpoon/attack_self(mob/living/user as mob)
|
||||
return chande_fire_mode(user)
|
||||
|
||||
/obj/item/weapon/bluespace_harpoon/verb/chande_fire_mode(mob/user as mob)
|
||||
set name = "Change fire mode"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
if(transforming) return
|
||||
mode = !mode
|
||||
transforming = 1
|
||||
to_chat(user,"<span class = 'info'>You change \the [src]'s mode to [mode ? "transmiting" : "receiving"].</span>")
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/bluespace_harpoon/update_icon()
|
||||
if(transforming)
|
||||
switch(mode)
|
||||
if(0)
|
||||
flick("harpoon-2-change", src)
|
||||
icon_state = "harpoon-1"
|
||||
if(1)
|
||||
flick("harpoon-1-change",src)
|
||||
icon_state = "harpoon-2"
|
||||
transforming = 0
|
||||
|
||||
//////////////////// Custom Ammo ////////////////////
|
||||
//---------------- Beams ----------------
|
||||
/obj/item/projectile/beam/eluger
|
||||
@@ -715,3 +991,63 @@
|
||||
icon = 'icons/obj/ammo_vr.dmi'
|
||||
icon_state = "flash357"
|
||||
projectile_type = /obj/item/projectile/energy/flash/strong
|
||||
|
||||
//.32
|
||||
/obj/item/ammo_casing/a32
|
||||
desc = "A .32 bullet casing."
|
||||
caliber = ".32"
|
||||
projectile_type = /obj/item/projectile/bullet/pistol
|
||||
|
||||
/obj/item/ammo_magazine/a32
|
||||
icon_state = "a762"
|
||||
caliber = ".32"
|
||||
ammo_type = /obj/item/ammo_casing/a32
|
||||
max_ammo = 6
|
||||
mag_type = MAGAZINE
|
||||
|
||||
//.44
|
||||
/obj/item/ammo_casing/a44
|
||||
icon = 'icons/obj/ammo_vr.dmi'
|
||||
icon_state = "a357"
|
||||
desc = "A .44 bullet casing."
|
||||
caliber = ".44"
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/strong
|
||||
|
||||
/obj/item/ammo_casing/a44/rubber
|
||||
icon = 'icons/obj/ammo_vr.dmi'
|
||||
icon_state = "rubber357"
|
||||
desc = "A .44 rubber bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/rubber/strong
|
||||
|
||||
/obj/item/ammo_magazine/a44
|
||||
desc = "A magazine for .44 ammo."
|
||||
icon = 'icons/obj/ammo_vr.dmi'
|
||||
icon_state = "44lethal"
|
||||
caliber = ".44"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 1680)
|
||||
ammo_type = /obj/item/ammo_casing/a44
|
||||
max_ammo = 8
|
||||
mag_type = MAGAZINE
|
||||
|
||||
/obj/item/ammo_magazine/a44/rubber
|
||||
desc = "A magazine for .44 less-than-lethal ammo."
|
||||
icon_state = "44rubber"
|
||||
ammo_type = /obj/item/ammo_casing/a44/rubber
|
||||
|
||||
//.44 speedloaders
|
||||
/obj/item/ammo_magazine/a44sl
|
||||
name = "speedloader (.44)"
|
||||
desc = "A speedloader for .44 revolvers."
|
||||
icon = 'icons/obj/ammo_vr.dmi'
|
||||
icon_state = "357"
|
||||
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/a44sl/rubber
|
||||
name = "speedloader (.44 rubber)"
|
||||
icon_state = "r357"
|
||||
ammo_type = /obj/item/ammo_casing/a44/rubber
|
||||
Reference in New Issue
Block a user