mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
Merge pull request #2674 from VOREStation/aro-thatbugfix
Fixes Exploit with Power Tools
This commit is contained in:
@@ -60,13 +60,27 @@
|
|||||||
throwforce = 8
|
throwforce = 8
|
||||||
attack_verb = list("drilled", "screwed", "jabbed")
|
attack_verb = list("drilled", "screwed", "jabbed")
|
||||||
toolspeed = 0.25
|
toolspeed = 0.25
|
||||||
|
var/obj/item/weapon/screwdriver/power/counterpart = null
|
||||||
|
|
||||||
|
/obj/item/weapon/wrench/power/New(newloc, no_counterpart = TRUE)
|
||||||
|
..(newloc)
|
||||||
|
if(!counterpart && no_counterpart)
|
||||||
|
counterpart = new(src, FALSE)
|
||||||
|
counterpart.counterpart = src
|
||||||
|
|
||||||
|
/obj/item/weapon/wrench/power/Destroy()
|
||||||
|
if(counterpart)
|
||||||
|
counterpart.counterpart = null // So it can qdel cleanly.
|
||||||
|
qdel_null(counterpart)
|
||||||
|
return ..()
|
||||||
|
|
||||||
/obj/item/weapon/wrench/power/attack_self(mob/user)
|
/obj/item/weapon/wrench/power/attack_self(mob/user)
|
||||||
playsound(get_turf(user),'sound/items/change_drill.ogg',50,1)
|
playsound(get_turf(user),'sound/items/change_drill.ogg',50,1)
|
||||||
var/obj/item/weapon/screwdriver/power/s_drill = new /obj/item/weapon/screwdriver/power
|
user.drop_item(src)
|
||||||
|
counterpart.forceMove(get_turf(src))
|
||||||
|
src.forceMove(counterpart)
|
||||||
|
user.put_in_active_hand(counterpart)
|
||||||
to_chat(user, "<span class='notice'>You attach the screw driver bit to [src].</span>")
|
to_chat(user, "<span class='notice'>You attach the screw driver bit to [src].</span>")
|
||||||
qdel(src)
|
|
||||||
user.put_in_active_hand(s_drill)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Screwdriver
|
* Screwdriver
|
||||||
@@ -168,13 +182,27 @@
|
|||||||
usesound = 'sound/items/drill_use.ogg'
|
usesound = 'sound/items/drill_use.ogg'
|
||||||
toolspeed = 0.25
|
toolspeed = 0.25
|
||||||
random_color = FALSE
|
random_color = FALSE
|
||||||
|
var/obj/item/weapon/wrench/power/counterpart = null
|
||||||
|
|
||||||
|
/obj/item/weapon/screwdriver/power/New(newloc, no_counterpart = TRUE)
|
||||||
|
..(newloc)
|
||||||
|
if(!counterpart && no_counterpart)
|
||||||
|
counterpart = new(src, FALSE)
|
||||||
|
counterpart.counterpart = src
|
||||||
|
|
||||||
|
/obj/item/weapon/screwdriver/power/Destroy()
|
||||||
|
if(counterpart)
|
||||||
|
counterpart.counterpart = null // So it can qdel cleanly.
|
||||||
|
qdel_null(counterpart)
|
||||||
|
return ..()
|
||||||
|
|
||||||
/obj/item/weapon/screwdriver/power/attack_self(mob/user)
|
/obj/item/weapon/screwdriver/power/attack_self(mob/user)
|
||||||
playsound(get_turf(user),'sound/items/change_drill.ogg',50,1)
|
playsound(get_turf(user),'sound/items/change_drill.ogg',50,1)
|
||||||
var/obj/item/weapon/wrench/power/w_drill = new /obj/item/weapon/wrench/power
|
user.drop_item(src)
|
||||||
|
counterpart.forceMove(get_turf(src))
|
||||||
|
src.forceMove(counterpart)
|
||||||
|
user.put_in_active_hand(counterpart)
|
||||||
to_chat(user, "<span class='notice'>You attach the bolt driver bit to [src].</span>")
|
to_chat(user, "<span class='notice'>You attach the bolt driver bit to [src].</span>")
|
||||||
qdel(src)
|
|
||||||
user.put_in_active_hand(w_drill)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Wirecutters
|
* Wirecutters
|
||||||
@@ -245,13 +273,27 @@
|
|||||||
force = 15
|
force = 15
|
||||||
toolspeed = 0.25
|
toolspeed = 0.25
|
||||||
random_color = FALSE
|
random_color = FALSE
|
||||||
|
var/obj/item/weapon/crowbar/power/counterpart = null
|
||||||
|
|
||||||
|
/obj/item/weapon/wirecutters/power/New(newloc, no_counterpart = TRUE)
|
||||||
|
..(newloc)
|
||||||
|
if(!counterpart && no_counterpart)
|
||||||
|
counterpart = new(src, FALSE)
|
||||||
|
counterpart.counterpart = src
|
||||||
|
|
||||||
|
/obj/item/weapon/wirecutters/power/Destroy()
|
||||||
|
if(counterpart)
|
||||||
|
counterpart.counterpart = null // So it can qdel cleanly.
|
||||||
|
qdel_null(counterpart)
|
||||||
|
return ..()
|
||||||
|
|
||||||
/obj/item/weapon/wirecutters/power/attack_self(mob/user)
|
/obj/item/weapon/wirecutters/power/attack_self(mob/user)
|
||||||
playsound(get_turf(user), 'sound/items/change_jaws.ogg', 50, 1)
|
playsound(get_turf(user), 'sound/items/change_jaws.ogg', 50, 1)
|
||||||
var/obj/item/weapon/crowbar/power/pryjaws = new /obj/item/weapon/crowbar/power
|
user.drop_item(src)
|
||||||
|
counterpart.forceMove(get_turf(src))
|
||||||
|
src.forceMove(counterpart)
|
||||||
|
user.put_in_active_hand(counterpart)
|
||||||
to_chat(user, "<span class='notice'>You attach the pry jaws to [src].</span>")
|
to_chat(user, "<span class='notice'>You attach the pry jaws to [src].</span>")
|
||||||
qdel(src)
|
|
||||||
user.put_in_active_hand(pryjaws)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Welding Tool
|
* Welding Tool
|
||||||
@@ -910,13 +952,28 @@
|
|||||||
usesound = 'sound/items/jaws_pry.ogg'
|
usesound = 'sound/items/jaws_pry.ogg'
|
||||||
force = 15
|
force = 15
|
||||||
toolspeed = 0.25
|
toolspeed = 0.25
|
||||||
|
var/obj/item/weapon/wirecutters/power/counterpart = null
|
||||||
|
|
||||||
|
/obj/item/weapon/crowbar/power/New(newloc, no_counterpart = TRUE)
|
||||||
|
..(newloc)
|
||||||
|
if(!counterpart && no_counterpart)
|
||||||
|
counterpart = new(src, FALSE)
|
||||||
|
counterpart.counterpart = src
|
||||||
|
|
||||||
|
/obj/item/weapon/crowbar/power/Destroy()
|
||||||
|
if(counterpart)
|
||||||
|
counterpart.counterpart = null // So it can qdel cleanly.
|
||||||
|
qdel_null(counterpart)
|
||||||
|
return ..()
|
||||||
|
|
||||||
/obj/item/weapon/crowbar/power/attack_self(mob/user)
|
/obj/item/weapon/crowbar/power/attack_self(mob/user)
|
||||||
playsound(get_turf(user), 'sound/items/change_jaws.ogg', 50, 1)
|
playsound(get_turf(user), 'sound/items/change_jaws.ogg', 50, 1)
|
||||||
var/obj/item/weapon/wirecutters/power/cutjaws = new /obj/item/weapon/wirecutters/power
|
user.drop_item(src)
|
||||||
|
counterpart.forceMove(get_turf(src))
|
||||||
|
src.forceMove(counterpart)
|
||||||
|
user.put_in_active_hand(counterpart)
|
||||||
to_chat(user, "<span class='notice'>You attach the cutting jaws to [src].</span>")
|
to_chat(user, "<span class='notice'>You attach the cutting jaws to [src].</span>")
|
||||||
qdel(src)
|
|
||||||
user.put_in_active_hand(cutjaws)
|
|
||||||
|
|
||||||
/*/obj/item/weapon/combitool
|
/*/obj/item/weapon/combitool
|
||||||
name = "combi-tool"
|
name = "combi-tool"
|
||||||
|
|||||||
@@ -149,6 +149,11 @@
|
|||||||
set category = "Object"
|
set category = "Object"
|
||||||
set src = usr
|
set src = usr
|
||||||
|
|
||||||
|
if(world.time <= next_click) // This isn't really a 'click' but it'll work for our purposes.
|
||||||
|
return
|
||||||
|
|
||||||
|
next_click = world.time + 1
|
||||||
|
|
||||||
if(istype(loc,/obj/mecha)) return
|
if(istype(loc,/obj/mecha)) return
|
||||||
|
|
||||||
if(hand)
|
if(hand)
|
||||||
|
|||||||
@@ -936,6 +936,11 @@
|
|||||||
set category = "IC"
|
set category = "IC"
|
||||||
set src = usr
|
set src = usr
|
||||||
|
|
||||||
|
if(world.time <= next_click) // Hard check, before anything else, to avoid crashing
|
||||||
|
return
|
||||||
|
|
||||||
|
next_click = world.time + 1
|
||||||
|
|
||||||
var/obj/item/W = get_active_hand()
|
var/obj/item/W = get_active_hand()
|
||||||
if (W)
|
if (W)
|
||||||
W.attack_self(src)
|
W.attack_self(src)
|
||||||
|
|||||||
Reference in New Issue
Block a user