From 54040d98677a4c2f66c4915d25e5a232c66e0962 Mon Sep 17 00:00:00 2001 From: paprka Date: Fri, 13 Feb 2015 09:26:31 -0800 Subject: [PATCH] stun changes and stun revolver --- code/game/gamemodes/objective_items.dm | 6 ++++++ .../crates_lockers/closets/secure/security.dm | 2 +- code/modules/projectiles/ammunition.dm | 2 +- code/modules/projectiles/ammunition/energy.dm | 1 + code/modules/projectiles/gun.dm | 21 +++++++++++++------ code/modules/projectiles/guns/energy.dm | 3 +++ code/modules/projectiles/guns/energy/stun.dm | 6 +++--- .../research/designs/weapon_designs.dm | 10 --------- 8 files changed, 30 insertions(+), 21 deletions(-) diff --git a/code/game/gamemodes/objective_items.dm b/code/game/gamemodes/objective_items.dm index b2c96c0aa91..65ed0da0b65 100644 --- a/code/game/gamemodes/objective_items.dm +++ b/code/game/gamemodes/objective_items.dm @@ -17,6 +17,12 @@ datum/objective_item/steal/caplaser difficulty = 5 excludefromjob = list("Captain") +datum/objective_item/steal/hospistol + name = "the head of security's stun revolver" + targetitem = /obj/item/weapon/gun/energy/stunrevolver + difficulty = 6 + excludefromjob = list("Head of Security") + datum/objective_item/steal/handtele name = "a hand teleporter" targetitem = /obj/item/weapon/hand_tele 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 30fc7329d5b..d4a46830b5a 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -83,7 +83,7 @@ new /obj/item/clothing/mask/gas/sechailer/swat(src) new /obj/item/weapon/shield/riot/tele(src) new /obj/item/weapon/melee/baton/loaded(src) - new /obj/item/weapon/gun/energy/gun/advtaser(src) + new /obj/item/weapon/gun/energy/stunrevolver(src) new /obj/item/weapon/storage/belt/security/full(src) return diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 608522f5e19..a8cef5e1b15 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -13,7 +13,7 @@ var/obj/item/projectile/BB = null //The loaded bullet var/pellets = 0 //Pellets for spreadshot var/variance = 0 //Variance for inaccuracy fundamental to the casing - + var/delay = 0 //Delay for energy weapons /obj/item/ammo_casing/New() ..() diff --git a/code/modules/projectiles/ammunition/energy.dm b/code/modules/projectiles/ammunition/energy.dm index 04afcf54d7f..04e7161ceef 100644 --- a/code/modules/projectiles/ammunition/energy.dm +++ b/code/modules/projectiles/ammunition/energy.dm @@ -56,6 +56,7 @@ select_name = "stun" fire_sound = 'sound/weapons/taser.ogg' e_cost = 200 + delay = 5 /obj/item/ammo_casing/energy/electrode/gun fire_sound = 'sound/weapons/gunshot.ogg' diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 252d9e0bc58..c488ccb069e 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -20,16 +20,17 @@ attack_verb = list("struck", "hit", "bashed") var/fire_sound = "gunshot" - var/suppressed = 0 + var/suppressed = 0 //whether or not a message is displayed when fired var/can_suppress = 0 - var/recoil = 0 + var/recoil = 0 //boom boom shake the room var/clumsy_check = 1 var/obj/item/ammo_casing/chambered = null - var/trigger_guard = 1 - var/sawn_desc = null + var/trigger_guard = 1 //trigger guard on the weapon, hulks can't fire them with their big meaty fingers + var/sawn_desc = null //description change if weapon is sawn-off var/sawn_state = SAWN_INTACT - var/burst_size = 1 - var/fire_delay = 0 + var/burst_size = 1 //how large a burst is + var/fire_delay = 0 //rate of fire for burst firing and semi auto + var/semicd = 0 //cooldown handler lefthand_file = 'icons/mob/inhands/guns_lefthand.dmi' righthand_file = 'icons/mob/inhands/guns_righthand.dmi' @@ -152,6 +153,9 @@ /obj/item/weapon/gun/proc/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, var/message = 1, params) add_fingerprint(user) + if(semicd) + return + for(var/i = 1 to burst_size) if(!issilicon(user)) if( i>1 && !(src in get_both_hands(user))) //for burst firing @@ -172,6 +176,11 @@ update_icon() sleep(fire_delay) + if(burst_size == 1 && fire_delay) + semicd = 1 + spawn(fire_delay) + semicd = 0 + if(user.hand) user.update_inv_l_hand(0) else diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 2896861b972..efdd8ce86b3 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -29,6 +29,7 @@ ammo_type[i] = shot shot = ammo_type[select] fire_sound = shot.fire_sound + fire_delay = shot.delay update_icon() return @@ -36,6 +37,7 @@ /obj/item/weapon/gun/energy/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, params) newshot() //prepare a new shot ..() + /obj/item/weapon/gun/energy/can_shoot() var/obj/item/ammo_casing/energy/shot = ammo_type[select] return power_supply.charge >= shot.e_cost @@ -62,6 +64,7 @@ select = 1 var/obj/item/ammo_casing/energy/shot = ammo_type[select] fire_sound = shot.fire_sound + fire_delay = shot.delay if (shot.select_name) user << "[src] is now set to [shot.select_name]." update_icon() diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index 9933294f86a..485695a3306 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -8,12 +8,11 @@ /obj/item/weapon/gun/energy/stunrevolver name = "stun revolver" - desc = "A high-tech revolver that fires internal, reusable stun cartidges in a revolving cylinder. Holds twice as many electrodes as a standard taser." + desc = "A high-tech revolver that fires internal, reusable stun cartidges in a revolving cylinder. The pride of the Head of Security." icon_state = "stunrevolver" - origin_tech = "combat=3;materials=3;powerstorage=2" ammo_type = list(/obj/item/ammo_casing/energy/electrode/gun) can_flashlight = 0 - pin = null + pin = /obj/item/device/firing_pin/implant/loyalty /obj/item/weapon/gun/energy/gun/advtaser name = "hybrid taser" @@ -21,6 +20,7 @@ icon_state = "advtaser" ammo_type = list(/obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/disabler) origin_tech = null + fire_delay = 5 /obj/item/weapon/gun/energy/gun/advtaser/cyborg name = "cyborg taser" diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index aeac82800b8..569e5a9a18b 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -33,16 +33,6 @@ build_path = /obj/item/weapon/gun/energy/gun/nuclear category = list("Weapons") -/datum/design/stunrevolver - name = "Stun Revolver" - desc = "A high-tech revolver that fires internal, reusable stun cartridges in a revolving cylinder. The stun cartridges can be recharged using a conventional energy weapon recharger." - id = "stunrevolver" - req_tech = list("combat" = 3, "materials" = 3, "powerstorage" = 2) - build_type = PROTOLATHE - materials = list("$metal" = 4000) - build_path = /obj/item/weapon/gun/energy/stunrevolver - category = list("Weapons") - /datum/design/tele_shield name = "Telescopic Riot Shield" desc = "An advanced riot shield made of lightweight materials that collapses for easy storage."