From 607ebed0f0f74cbcce68fec4c65e22baeb29a1c3 Mon Sep 17 00:00:00 2001 From: Markolie Date: Sun, 1 Mar 2015 02:53:01 +0100 Subject: [PATCH] Further turret fixes --- code/game/machinery/portable_turret.dm | 40 ++++++++++-------- code/game/machinery/turret_control.dm | 15 ++++--- code/modules/projectiles/gun.dm | 6 +++ .../projectiles/guns/energy/nuclear.dm | 17 +++++--- icons/obj/gun.dmi | Bin 67887 -> 68366 bytes 5 files changed, 48 insertions(+), 30 deletions(-) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 13bdac7b536..cdab2906826 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -155,13 +155,15 @@ qdel(cover) // qdel ..() -/obj/machinery/porta_turret/proc/isLocked(mob/user) +/obj/machinery/porta_turret/proc/isLocked(mob/user,var/message = 1) if(ailock && (isrobot(user) || isAI(user))) - user << "There seems to be a firewall preventing you from accessing this device." + if(message) + user << "There seems to be a firewall preventing you from accessing this device." return 1 if(locked && !(isrobot(user) || isAI(user))) - user << "Access denied." + if(message) + user << "Access denied." return 1 return 0 @@ -193,7 +195,7 @@ settings[++settings.len] = list("category" = "Check Security Records", "setting" = "check_records", "value" = check_records) settings[++settings.len] = list("category" = "Check Arrest Status", "setting" = "check_arrest", "value" = check_arrest) settings[++settings.len] = list("category" = "Check Access Authorization", "setting" = "check_access", "value" = check_access) - settings[++settings.len] = list("category" = "Check misc. Lifeforms", "setting" = "check_anomalies", "value" = check_anomalies) + settings[++settings.len] = list("category" = "Check Misc. Lifeforms", "setting" = "check_anomalies", "value" = check_anomalies) data["settings"] = settings ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) @@ -215,7 +217,7 @@ usr << "Turrets can only be controlled using the assigned turret controller." return 1 - if(isLocked(usr)) + if(isLocked(usr,0)) return 1 if(!anchored) @@ -274,18 +276,6 @@ user << "You remove the turret but did not manage to salvage anything." qdel(src) // qdel - if(istype(I, /obj/item/weapon/card/emag) && !emagged) - //Emagging the turret makes it go bonkers and stun everyone. It also makes - //the turret shoot much, much faster. - user << "You short out [src]'s threat assessment circuits." - visible_message("[src] hums oddly...") - emagged = 1 - iconholder = 1 - controllock = 1 - enabled = 0 //turns off the turret temporarily - sleep(60) //6 seconds for the traitor to gtfo of the area before the turret decides to ruin his shit - enabled = 1 //turns it back on. The cover popUp() popDown() are automatically called in process(), no need to define it here - else if((istype(I, /obj/item/weapon/wrench))) if(enabled || raised) user << "You cannot unsecure an active turret!" @@ -334,6 +324,7 @@ //if the turret was attacked with the intention of harming it: user.changeNext_move(CLICK_CD_MELEE) take_damage(I.force * 0.5) + playsound(src.loc, 'sound/weapons/smash.ogg', 60, 1) if(I.force * 0.5 > 1) //if the force of impact dealt at least 1 damage, the turret gets pissed off if(!attacked && !emagged) attacked = 1 @@ -342,6 +333,19 @@ attacked = 0 ..() + +/obj/machinery/porta_turret/emag_act(user as mob) + if(!emagged) + //Emagging the turret makes it go bonkers and stun everyone. It also makes + //the turret shoot much, much faster. + user << "You short out [src]'s threat assessment circuits." + visible_message("[src] hums oddly...") + emagged = 1 + iconholder = 1 + controllock = 1 + enabled = 0 //turns off the turret temporarily + sleep(60) //6 seconds for the traitor to gtfo of the area before the turret decides to ruin his shit + enabled = 1 //turns it back on. The cover popUp() popDown() are automatically called in process(), no need to define it here /obj/machinery/porta_turret/proc/take_damage(var/force) health -= force @@ -524,6 +528,7 @@ return if(stat & BROKEN) return + playsound(get_turf(src), 'sound/effects/turret/open.wav', 60, 1) invisibility = 0 raising = 1 flick("popup", cover) @@ -542,6 +547,7 @@ return if(stat & BROKEN) return + playsound(get_turf(src), 'sound/effects/turret/open.wav', 60, 1) layer = 3 raising = 1 flick("popdown", cover) diff --git a/code/game/machinery/turret_control.dm b/code/game/machinery/turret_control.dm index 3b7b48b48d1..19d88713d98 100644 --- a/code/game/machinery/turret_control.dm +++ b/code/game/machinery/turret_control.dm @@ -79,13 +79,6 @@ if(stat & BROKEN) return - if(!emagged && istype(W, /obj/item/weapon/card/emag)) - user << "You short out the turret controls' access analysis module." - emagged = 1 - locked = 0 - ailock = 0 - return - if(istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) if(src.allowed(usr)) if(emagged) @@ -95,6 +88,14 @@ user << "You [ locked ? "lock" : "unlock"] the panel." return return ..() + +/obj/machinery/turretid/emag_act(user as mob) + if(!emagged) + user << "You short out the turret controls' access analysis module." + emagged = 1 + locked = 0 + ailock = 0 + return /obj/machinery/turretid/attack_ai(mob/user as mob) if(isLocked(user)) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 21146c38573..6500acbaf88 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -149,6 +149,12 @@ user.visible_message("[user] fires [src][reflex ? " by reflex":""]!", \ "You fire [src][reflex ? "by reflex":""]!", \ "You hear a [istype(in_chamber, /obj/item/projectile/beam) ? "laser blast" : "gunshot"]!") + + if(heavy_weapon) + if(user.get_inactive_hand()) + if(prob(15)) + user.visible_message("[src] flies out of [user]'s hands!", "[src] kicks out of your grip!") + user.drop_item() if (istype(in_chamber, /obj/item/projectile/bullet/blank)) // A hacky way of making blank shotgun shells work again. Honk. in_chamber.delete() diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm index d744525ee17..8f5a2f470e4 100644 --- a/code/modules/projectiles/guns/energy/nuclear.dm +++ b/code/modules/projectiles/guns/energy/nuclear.dm @@ -140,6 +140,9 @@ w_class = 5 heavy_weapon = 1 can_flashlight = 0 + projectile_type = /obj/item/projectile/energy/electrode + charge_cost = 1000 + fire_delay = 20 /obj/item/weapon/gun/energy/gun/turret/update_icon() icon_state = initial(icon_state) @@ -148,18 +151,20 @@ switch(mode) if(0) mode = 1 - charge_cost = 1000 + charge_cost = 500 fire_sound = 'sound/weapons/Laser.ogg' user << "\red [src.name] is now set to kill." - projectile_type = "/obj/item/projectile/beam" + projectile_type = /obj/item/projectile/beam modifystate = "energykill" + fire_delay = 0 if(1) mode = 0 - charge_cost = 500 - fire_sound = 'sound/weapons/Taser2.ogg' - user << "\red [src.name] is now set to disable." - projectile_type = "/obj/item/projectile/beam/disabler" + charge_cost = 1000 + fire_sound = 'sound/weapons/Taser.ogg' + user << "\red [src.name] is now set to stun." + projectile_type = /obj/item/projectile/energy/electrode modifystate = "energystun" + fire_delay = 20 update_icon() if(user.l_hand == src) user.update_inv_l_hand() diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index 7cee746fc5ddd672d19d896952ad54b92603b217..cbc9742a6c56741cfeb4c43b5a816f02868b3411 100644 GIT binary patch delta 7350 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 delta 6698 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