From c39d963a2529d1007c20627ddc1f6522f4402b49 Mon Sep 17 00:00:00 2001 From: KasparoVy Date: Sun, 7 May 2017 16:42:52 -0400 Subject: [PATCH] Fixes #7242, RCS Exploit You can no longer teleport crates/closets by dialog-stacking if you're not adjacent to them and if the RCS doesn't have enough charge. --- code/game/objects/structures/crates_lockers/closets.dm | 6 +++--- code/game/objects/structures/crates_lockers/crates.dm | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 7180e59b800..ed1b9be0e0d 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -196,7 +196,7 @@ playsound(E.loc, E.usesound, 50, 1) to_chat(user, "Teleporting [name]...") E.teleporting = 1 - if(!do_after(user, 50 * E.toolspeed, target = src)) + if(!(do_after(user, 50 * E.toolspeed, target = src) && (E.rcell && (E.rcell.charge >= E.chargecost)) && Adjacent(user))) E.teleporting = 0 return E.teleporting = 0 @@ -218,7 +218,7 @@ playsound(E.loc, E.usesound, 50, 1) to_chat(user, "Teleporting [name]...") E.teleporting = 1 - if(!do_after(user, 50, E.toolspeed, target = src)) + if(!(do_after(user, 50, E.toolspeed, target = src) && (E.rcell && (E.rcell.charge >= E.chargecost)) && Adjacent(user))) E.teleporting = 0 return E.teleporting = 0 @@ -327,7 +327,7 @@ /obj/structure/closet/attack_hand(mob/user) add_fingerprint(user) toggle(user) - + /obj/structure/closet/attack_ghost(mob/user) if(user.can_advanced_admin_interact()) toggle(user) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 07a738a8c94..79fd929dedb 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -105,7 +105,7 @@ playsound(E.loc, E.usesound, 50, 1) to_chat(user, "Teleporting [src.name]...") E.teleporting = 1 - if(!do_after(user, 50 * E.toolspeed, target = src)) + if(!(do_after(user, 50 * E.toolspeed, target = src) && (E.rcell && (E.rcell.charge >= E.chargecost)) && Adjacent(user))) E.teleporting = 0 return E.teleporting = 0 @@ -123,7 +123,7 @@ playsound(E.loc, E.usesound, 50, 1) to_chat(user, "Teleporting [src.name]...") E.teleporting = 1 - if(!do_after(user, 50 * E.toolspeed, target = src)) + if(!(do_after(user, 50 * E.toolspeed, target = src) && (E.rcell && (E.rcell.charge >= E.chargecost)) && Adjacent(user))) E.teleporting = 0 return E.teleporting = 0