From 60180cb0fdb73146bb8462ca5b7739d404aa9e4e Mon Sep 17 00:00:00 2001 From: Screemonster Date: Fri, 21 Oct 2016 03:30:46 +0100 Subject: [PATCH] Makes the antitamper mechanism prevent tampering 2: electric boomaloo (#20893) * Sanitises input on abandoned crates * Makes anti-tamper mechanisms detect tampering. * Makes explosion trigger on take_damage() instead. --- .../structures/crates_lockers/crates/secure.dm | 15 +++++++++++++++ code/modules/mining/abandoned_crates.dm | 9 +-------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm index bac428d5d1f..8ca845c35bb 100644 --- a/code/game/objects/structures/crates_lockers/crates/secure.dm +++ b/code/game/objects/structures/crates_lockers/crates/secure.dm @@ -7,6 +7,7 @@ obj_integrity = 500 max_integrity = 500 armor = list(melee = 30, bullet = 50, laser = 50, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 80) + var/tamperproof = 0 /obj/structure/closet/crate/secure/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) if(damage_flag == "melee" && damage_amount < 25) @@ -22,6 +23,20 @@ else add_overlay("securecrateg") +/obj/structure/closet/crate/secure/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1) + if(prob(tamperproof)) + boom() + ..() + + +/obj/structure/closet/crate/secure/proc/boom(mob/user) + if(user) + user << "The crate's anti-tamper system activates!" + for(var/atom/movable/AM in src) + qdel(AM) + explosion(get_turf(src), 0, 1, 5, 5) + qdel(src) + /obj/structure/closet/crate/secure/weapon desc = "A secure weapons crate." name = "weapons crate" diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index e8ef37d7b0f..d1d00ef1ee5 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -9,6 +9,7 @@ var/lastattempt = null var/attempts = 10 var/codelen = 4 + tamperproof = 90 /obj/structure/closet/crate/secure/loot/New() ..() @@ -224,11 +225,3 @@ /obj/structure/closet/crate/secure/loot/deconstruct(disassembled = TRUE) boom() - -/obj/structure/closet/crate/secure/loot/proc/boom(mob/user) - if(user) - user << "The crate's anti-tamper system activates!" - for(var/atom/movable/AM in src) - qdel(AM) - explosion(get_turf(src), 0, 1, 5, 5) - qdel(src) \ No newline at end of file