From 557d68502510de311e0cc6dcbeee580efe1fe47d Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Tue, 13 Jun 2017 15:07:19 -0400 Subject: [PATCH] Individual-files some more complicated guns and ammo We should probably do this from now on. Keeps things organized. --- .../modules/vore/fluffstuff/custom_guns_vr.dm | 216 +----------------- .../modules/vore/fluffstuff/guns/bsharpoon.dm | 90 ++++++++ .../modules/vore/fluffstuff/guns/dominator.dm | 31 +++ 3 files changed, 122 insertions(+), 215 deletions(-) create mode 100644 code/modules/vore/fluffstuff/guns/bsharpoon.dm create mode 100644 code/modules/vore/fluffstuff/guns/dominator.dm diff --git a/code/modules/vore/fluffstuff/custom_guns_vr.dm b/code/modules/vore/fluffstuff/custom_guns_vr.dm index ce1c9e64b9..7b0c810ce6 100644 --- a/code/modules/vore/fluffstuff/custom_guns_vr.dm +++ b/code/modules/vore/fluffstuff/custom_guns_vr.dm @@ -436,123 +436,7 @@ name = "\improper MEUSOC .45" desc = "Some serious drywall work, coming up!" -//-----------------------KHI Common---------------------------------- -// // // Pistols -/obj/item/weapon/gun/projectile/khi/process_chambered() - if (!chambered) return - qdel(chambered) //Devours ammo rather than fires it. - -/obj/item/weapon/gun/projectile/khi/update_icon() - ..() - if(ammo_magazine) - icon_state = "[initial(icon_state)]" - else - icon_state = "[initial(icon_state)]-empty" - -// // // Automatics -/obj/item/weapon/gun/projectile/automatic/khi/process_chambered() - if (!chambered) return - qdel(chambered) //Devours ammo rather than fires it. - -/obj/item/weapon/gun/projectile/automatic/khi/update_icon() - ..() - if(ammo_magazine) - icon_state = "[initial(icon_state)]" - else - icon_state = "[initial(icon_state)]-empty" - -//-----------------------KHI Pistol---------------------------------- -/obj/item/weapon/gun/projectile/khi/pistol - name = "alien pistol" - desc = "This KHI handgun doesn't so much 'fire' .45 ammo as 'devour' it and make it's own proprietary ammunition." - icon = 'icons/obj/gun_vr.dmi' - icon_state = "khipistol" - item_state = "gun" // Placeholder - magazine_type = /obj/item/ammo_magazine/m45/flash //Dun wanna KILL all the people. - allowed_magazines = list(/obj/item/ammo_magazine/m45) - caliber = ".45" - handle_casings = CYCLE_CASINGS - origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 5) - fire_sound = 'sound/weapons/semiauto.ogg' - load_method = MAGAZINE - dna_lock = 1 - -//-----------------------KHI PDW---------------------------------- -// For general use -/obj/item/weapon/gun/projectile/automatic/khi/pdw - name = "alien pdw" - desc = "The KHI personal defense mainstay. If KHI had any standards whatsoever, that is. Insert 9mm ammo for good times." - icon = 'icons/obj/gun_vr.dmi' - icon_state = "khipdw" - item_state = "c20r" // Placeholder - w_class = ITEMSIZE_NORMAL - caliber = "9mm" - origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 5) - slot_flags = SLOT_BELT - load_method = MAGAZINE - handle_casings = CYCLE_CASINGS - magazine_type = /obj/item/ammo_magazine/m9mml - allowed_magazines = list(/obj/item/ammo_magazine/m9mm, /obj/item/ammo_magazine/m9mml) - dna_lock = 1 - - firemodes = list( - list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), - list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=6, burst_accuracy=list(0,-1,-2), dispersion=list(0.0, 0.6, 0.6)) - ) - -//-----------------------KHI LIM Rifle---------------------------------- -//Unfinished -/obj/item/weapon/limrifle //Not even a subtype of gun because it behaves differently. - name = "lim rifle" - desc = "The KHI-101-R linear induction motor rifle can propel a small 2mm slug at extreme velocity through nearly any solid object. Whether it has the time to impart any force is another question entirely." - //icon = 'icons/obj/gun64_vr.dmi' - icon_state = "limrifle" - item_state = "gun" //Should probably be huge-r - //dna_lock = 1 - //safety_level = 1 - - var/charge_time = 5 SECONDS - var/charge_percent = 100 - -/obj/item/weapon/limrifle/New() - ..() - update_icon() - -/obj/item/weapon/limrifle/update_icon() - ..() - var/charge_icon = round(charge_percent,20) - icon_state = "[initial(icon_state)]_[charge_icon]" - -/obj/item/weapon/limrifle/proc/recharge() - charge_percent = 0 - update_icon() - - //////////////////// Energy Weapons //////////////////// -// -------------- Dominator ------------- -/obj/item/weapon/gun/energy/gun/fluff/dominator - name = "\improper MWPSB Dominator" - desc = "A MWPSB's Dominator from the Federation. Like the basic Energy Gun, this gun has two settings. It is used by the United Federation Public Safety Bureau's Criminal Investigation Division." - - icon = 'icons/vore/custom_guns_vr.dmi' - icon_state = "dominatorstun100" - - icon_override = 'icons/vore/custom_guns_vr.dmi' - item_state = null - item_icons = null - - fire_sound = 'sound/weapons/Taser.ogg' - projectile_type = /obj/item/projectile/beam/stun - - modifystate = "dominatorstun" - - dna_lock = 1 - - firemodes = list( - list(mode_name="stun", charge_cost=240,projectile_type=/obj/item/projectile/beam/stun, modifystate="dominatorstun", fire_sound='sound/weapons/Taser.ogg'), - list(mode_name="lethal", charge_cost=480,projectile_type=/obj/item/projectile/beam/dominator, modifystate="dominatorkill", fire_sound='sound/weapons/gauss_shoot.ogg'), - ) - // ------------ Energy Luger ------------ /obj/item/weapon/gun/energy/gun/eluger @@ -769,110 +653,12 @@ 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) - return - if(transforming) - to_chat(user,"You can't fire while \the [src] transforming!") - return - if(!(current_fire - last_fire >= 30 SECONDS)) - to_chat(user,"\The [src] is recharging...") - return - if(is_jammed(A) || is_jammed(user)) - to_chat(user,"\The [src] shot fizzles due to interference!") - last_fire = current_fire - playsound(user, 'sound/weapons/wave.ogg', 60, 1) - return - var/turf/T = get_turf(A) - if(!T || T.check_density()) - to_chat(user,"That's a little too solid to harpoon into!") - 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 name = "laser beam" icon_state = "emitter" -/obj/item/projectile/beam/dominator - name = "dominator lethal beam" - icon_state = "xray" - muzzle_type = /obj/effect/projectile/xray/muzzle - tracer_type = /obj/effect/projectile/xray/tracer - impact_type = /obj/effect/projectile/xray/impact - /obj/item/projectile/beam/stun/kin21 name = "kinh21 stun beam" icon_state = "omnilaser" @@ -891,7 +677,7 @@ mag_type = MAGAZINE /obj/item/ammo_casing/stg - desc = "A 7.92×33mm Kurz casing." + desc = "A 7.92 33mm Kurz casing." icon_state = "rifle-casing" caliber = "kurz" projectile_type = /obj/item/projectile/bullet/rifle/a762 diff --git a/code/modules/vore/fluffstuff/guns/bsharpoon.dm b/code/modules/vore/fluffstuff/guns/bsharpoon.dm new file mode 100644 index 0000000000..0c684e202f --- /dev/null +++ b/code/modules/vore/fluffstuff/guns/bsharpoon.dm @@ -0,0 +1,90 @@ +//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) + return + if(transforming) + to_chat(user,"You can't fire while \the [src] transforming!") + return + if(!(current_fire - last_fire >= 30 SECONDS)) + to_chat(user,"\The [src] is recharging...") + return + if(is_jammed(A) || is_jammed(user)) + to_chat(user,"\The [src] shot fizzles due to interference!") + last_fire = current_fire + playsound(user, 'sound/weapons/wave.ogg', 60, 1) + return + var/turf/T = get_turf(A) + if(!T || T.check_density()) + to_chat(user,"That's a little too solid to harpoon into!") + 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 diff --git a/code/modules/vore/fluffstuff/guns/dominator.dm b/code/modules/vore/fluffstuff/guns/dominator.dm new file mode 100644 index 0000000000..b5c0acadcb --- /dev/null +++ b/code/modules/vore/fluffstuff/guns/dominator.dm @@ -0,0 +1,31 @@ +// -------------- Dominator ------------- +/obj/item/weapon/gun/energy/gun/fluff/dominator + name = "\improper MWPSB Dominator" + desc = "A MWPSB's Dominator from the Federation. Like the basic Energy Gun, this gun has two settings. It is used by the United Federation Public Safety Bureau's Criminal Investigation Division." + + icon = 'icons/vore/custom_guns_vr.dmi' + icon_state = "dominatorstun100" + + icon_override = 'icons/vore/custom_guns_vr.dmi' + item_state = null + item_icons = null + + fire_sound = 'sound/weapons/Taser.ogg' + projectile_type = /obj/item/projectile/beam/stun + + modifystate = "dominatorstun" + + dna_lock = 1 + + firemodes = list( + list(mode_name="stun", charge_cost=240,projectile_type=/obj/item/projectile/beam/stun, modifystate="dominatorstun", fire_sound='sound/weapons/Taser.ogg'), + list(mode_name="lethal", charge_cost=480,projectile_type=/obj/item/projectile/beam/dominator, modifystate="dominatorkill", fire_sound='sound/weapons/gauss_shoot.ogg'), + ) + +// Dominator Ammo +/obj/item/projectile/beam/dominator + name = "dominator lethal beam" + icon_state = "xray" + muzzle_type = /obj/effect/projectile/xray/muzzle + tracer_type = /obj/effect/projectile/xray/tracer + impact_type = /obj/effect/projectile/xray/impact \ No newline at end of file