From f27fa6cc2b7ef4514463bcd59357dc0b01a793d5 Mon Sep 17 00:00:00 2001 From: Anewbe Date: Sat, 9 Jul 2016 00:24:12 -0500 Subject: [PATCH] Adds a pry var to objects, which checks if the obj can open doors --- .../game/gamemodes/changeling/powers/armblade.dm | 1 + code/game/machinery/doors/airlock.dm | 4 ++-- code/game/machinery/doors/blast_door.dm | 2 +- code/game/machinery/doors/firedoor.dm | 2 +- .../objects/items/weapons/material/twohanded.dm | 16 ++++++++++++++++ code/game/objects/items/weapons/tools.dm | 1 + code/game/objects/objs.dm | 1 + 7 files changed, 23 insertions(+), 4 deletions(-) diff --git a/code/game/gamemodes/changeling/powers/armblade.dm b/code/game/gamemodes/changeling/powers/armblade.dm index 7ab1cdda3b..e1583d6ed9 100644 --- a/code/game/gamemodes/changeling/powers/armblade.dm +++ b/code/game/gamemodes/changeling/powers/armblade.dm @@ -32,6 +32,7 @@ force = 40 sharp = 1 edge = 1 + pry = 1 anchored = 1 throwforce = 0 //Just to be on the safe side throw_range = 0 diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 6873cbf005..b7e43745db 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -727,7 +727,7 @@ About the new airlock wires panel: update_icon() return 1 -/obj/machinery/door/airlock/attackby(C as obj, mob/user as mob) +/obj/machinery/door/airlock/attackby(obj/C as obj, mob/user as mob) //world << text("airlock attackby src [] obj [] mob []", src, C, user) if(!istype(usr, /mob/living/silicon)) if(src.isElectrified()) @@ -810,7 +810,7 @@ About the new airlock wires panel: spawn(0) close(1) // Check if we're using a crowbar or armblade, and if the airlock's unpowered for whatever reason (off, broken, etc). - else if( (istype(C, /obj/item/weapon/material/twohanded/fireaxe) || istype(C, /obj/item/weapon/melee/arm_blade) ) && !arePowerSystemsOn()) + else if((C.pry == 1) && !arePowerSystemsOn()) if(locked) user << "The airlock's bolts prevent it from being forced." else if( !welded && !operating ) diff --git a/code/game/machinery/doors/blast_door.dm b/code/game/machinery/doors/blast_door.dm index 9647befd6e..72b878a49a 100644 --- a/code/game/machinery/doors/blast_door.dm +++ b/code/game/machinery/doors/blast_door.dm @@ -90,7 +90,7 @@ // This only works on broken doors or doors without power. Also allows repair with Plasteel. /obj/machinery/door/blast/attackby(obj/item/weapon/C as obj, mob/user as mob) src.add_fingerprint(user) - if(istype(C, /obj/item/weapon/crowbar) || istype(C, /obj/item/weapon/material/twohanded/fireaxe) || istype(C, /obj/item/weapon/melee/arm_blade)) + if(C.pry == 1) if(istype(C,/obj/item/weapon/material/twohanded/fireaxe)) var/obj/item/weapon/material/twohanded/fireaxe/F = C if(!F.wielded) diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index b2b619e342..44a9dedae0 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -235,7 +235,7 @@ user << "\The [src] is welded shut!" return - if(istype(C, /obj/item/weapon/crowbar) || istype(C,/obj/item/weapon/material/twohanded/fireaxe) || istype(C, /obj/item/weapon/melee/arm_blade)) + if(C.pry == 1) if(operating) return diff --git a/code/game/objects/items/weapons/material/twohanded.dm b/code/game/objects/items/weapons/material/twohanded.dm index 2e36eead75..5299ce2a99 100644 --- a/code/game/objects/items/weapons/material/twohanded.dm +++ b/code/game/objects/items/weapons/material/twohanded.dm @@ -93,6 +93,22 @@ attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut") applies_material_colour = 0 +/obj/item/weapon/material/twohanded/fireaxe/update_held_icon() + var/mob/living/M = loc + if(istype(M) && !issmall(M) && M.item_is_in_hands(src) && !M.hands_are_full()) + wielded = 1 + pry = 1 + force = force_wielded + name = "[base_name] (wielded)" + update_icon() + else + wielded = 0 + pry = 0 + force = force_unwielded + name = "[base_name]" + update_icon() + ..() + /obj/item/weapon/material/twohanded/fireaxe/afterattack(atom/A as mob|obj|turf|area, mob/user as mob, proximity) if(!proximity) return ..() diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index b7868cf7e0..33a9f46ed1 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -413,6 +413,7 @@ slot_flags = SLOT_BELT force = 5.0 throwforce = 7.0 + pry = 1 item_state = "crowbar" w_class = 2.0 origin_tech = list(TECH_ENGINEERING = 1) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index bc10bc4359..46715d5e8e 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -7,6 +7,7 @@ var/throwforce = 1 var/sharp = 0 // whether this object cuts var/edge = 0 // whether this object is more likely to dismember + var/pry = 0 //Used in attackby() to open doors var/in_use = 0 // If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING! var/damtype = "brute" var/armor_penetration = 0