diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm index 4d493c59a05..496003cfbc7 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm @@ -46,6 +46,7 @@ new /obj/item/clothing/gloves/sterile/latex(src) new /obj/item/device/radio/headset/heads/rd(src) new /obj/item/device/radio/headset/heads/rd/alt(src) + new /obj/item/weapon/bluespace_harpoon //VOREStation Edit new /obj/item/weapon/tank/air(src) new /obj/item/clothing/mask/gas(src) new /obj/item/device/flash(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 4bed035b82f..a8ace582665 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -43,8 +43,8 @@ new /obj/item/device/radio/headset/heads/hop/alt(src) new /obj/item/weapon/storage/box/ids(src) new /obj/item/weapon/storage/box/ids( src ) - new /obj/item/weapon/gun/energy/gun(src) - new /obj/item/weapon/gun/projectile/sec/flash(src) + new /obj/item/weapon/gun/energy/gun/martin(src) //VOREStation Edit + //new /obj/item/weapon/gun/projectile/sec/flash(src) //VOREStation Edit new /obj/item/device/flash(src) return @@ -110,7 +110,7 @@ new /obj/item/device/radio/headset/heads/hos/alt(src) new /obj/item/clothing/glasses/sunglasses/sechud(src) new /obj/item/taperoll/police(src) - new /obj/item/weapon/shield/riot(src) + //new /obj/item/weapon/shield/riot(src) //VOREStation Edit new /obj/item/weapon/shield/riot/tele(src) new /obj/item/weapon/storage/box/holobadge/hos(src) new /obj/item/clothing/accessory/badge/holo/hos(src) @@ -120,8 +120,10 @@ new /obj/item/weapon/storage/belt/security(src) new /obj/item/device/flash(src) new /obj/item/weapon/melee/baton/loaded(src) - new /obj/item/weapon/gun/energy/gun(src) - new /obj/item/weapon/cell/device/weapon(src) + new /obj/item/weapon/gun/projectile/lamia(src) //VOREStation Edit + new /obj/item/ammo_magazine/a44 //VOREStation Edit + new /obj/item/ammo_magazine/a44 //VOREStation Edit + //new /obj/item/weapon/cell/device/weapon(src) //VOREStation Edit new /obj/item/clothing/accessory/holster/waist(src) new /obj/item/weapon/melee/telebaton(src) new /obj/item/clothing/head/beret/sec/corporate/hos(src) @@ -274,10 +276,10 @@ new /obj/item/device/radio/headset/headset_sec(src) new /obj/item/device/radio/headset/headset_sec/alt(src) new /obj/item/clothing/suit/storage/vest/detective(src) - new /obj/item/ammo_magazine/c45m/rubber(src) - new /obj/item/ammo_magazine/c45m/rubber(src) + new /obj/item/ammo_magazine/a44sl/rubber(src) //VOREStation Edit + new /obj/item/ammo_magazine/a44sl/rubber(src) //VOREStation Edit new /obj/item/taperoll/police(src) - new /obj/item/weapon/gun/projectile/colt/detective(src) + new /obj/item/weapon/gun/projectile/revolver/consul(src) //VOREStation Edit new /obj/item/clothing/accessory/holster/armpit(src) new /obj/item/device/flashlight/maglight(src) new /obj/item/weapon/reagent_containers/food/drinks/flask/detflask(src) diff --git a/code/modules/projectiles/guns/energy/netgun_vr.dm b/code/modules/projectiles/guns/energy/netgun_vr.dm index 3be66189a65..8678d2c5dc7 100644 --- a/code/modules/projectiles/guns/energy/netgun_vr.dm +++ b/code/modules/projectiles/guns/energy/netgun_vr.dm @@ -1,9 +1,9 @@ /obj/item/weapon/gun/energy/netgun - name = "\improper\'Hunter\' capture gun" + name = "\improper KHI \"Hunter\" capture gun" desc = "A Kitsuhana-designed '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." icon = 'icons/obj/gun_vr.dmi' - icon_state = "khinet" + icon_state = "hunter" item_state = "gun" // Placeholder mode_name = "stun" diff --git a/code/modules/vore/fluffstuff/custom_guns_vr.dm b/code/modules/vore/fluffstuff/custom_guns_vr.dm index f28c958401b..6c19db6426c 100644 --- a/code/modules/vore/fluffstuff/custom_guns_vr.dm +++ b/code/modules/vore/fluffstuff/custom_guns_vr.dm @@ -390,7 +390,7 @@ 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" @@ -562,6 +562,280 @@ 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 + magazine_type = /obj/item/ammo_magazine/a44 + allowed_magazines = list(/obj/item/ammo_magazine/a44) + load_method = MAGAZINE + + 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,"You can't fire while \the [src] transforming!") + return + if(!(current_fire - last_fire >= 20 SECONDS)) + to_chat(user,"\The [src] is recharging...") + return + + last_fire = current_fire + playsound(user, 'sound/weapons/wave.ogg', 60, 1) + + user.visible_message("[user] fires \the [src]!","You fire \the [src]!") + + 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,"You change \the [src]'s mode to [mode ? "transmiting" : "receiving"].") + 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 @@ -705,3 +979,51 @@ 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 + desc = "A .44 bullet casing." + caliber = ".44" + projectile_type = /obj/item/projectile/bullet/pistol/strong + +/obj/item/ammo_magazine/a44 + icon_state = "a762" + caliber = ".44" + ammo_type = /obj/item/ammo_casing/a44 + max_ammo = 8 + mag_type = MAGAZINE + +/obj/item/ammo_casing/a44/rubber + desc = "A .44 rubber bullet casing." + projectile_type = /obj/item/projectile/bullet/pistol/rubber/strong + +//.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 \ No newline at end of file diff --git a/icons/obj/gun_vr.dmi b/icons/obj/gun_vr.dmi index 7924bb7770a..9ad5e01a80b 100644 Binary files a/icons/obj/gun_vr.dmi and b/icons/obj/gun_vr.dmi differ