From 8a70f6aa65eed160b63fef0c67bfbac3f87d0bf1 Mon Sep 17 00:00:00 2001 From: Mark van Alphen Date: Mon, 3 Jun 2019 00:14:51 +0200 Subject: [PATCH] Sheet multiplier exploit fix --- code/game/objects/items/stacks/stack.dm | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index b0a1286d3b2..75decb95413 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -111,16 +111,11 @@ if(istype(E, /datum/stack_recipe)) var/datum/stack_recipe/R = E - var/max_multiplier = round(src.amount / R.req_amount) + var/max_multiplier = round(amount / R.req_amount) var/title var/can_build = 1 can_build = can_build && (max_multiplier > 0) - /* - if(R.one_per_turf) - can_build = can_build && !(locate(R.result_type) in usr.loc) - if(R.on_floor) - can_build = can_build && istype(usr.loc, /turf/simulated/floor) - */ + if(R.res_amount > 1) title += "[R.res_amount]x [R.title]\s" else @@ -131,12 +126,13 @@ else t1 += "[title]" continue - if(R.max_res_amount>1 && max_multiplier>1) + if(R.max_res_amount > 1 && max_multiplier > 1) max_multiplier = min(max_multiplier, round(R.max_res_amount / R.res_amount)) t1 += " |" - var/list/multipliers = list(5,10,25) + + var/list/multipliers = list(5, 10, 25) for(var/n in multipliers) - if(max_multiplier>=n) + if(max_multiplier >= n) t1 += " [n * R.res_amount]x" if(!(max_multiplier in multipliers)) t1 += " [max_multiplier * R.res_amount]x" @@ -165,7 +161,7 @@ var/datum/stack_recipe/R = recipes_list[text2num(href_list["make"])] var/multiplier = text2num(href_list["multiplier"]) - if(!multiplier) + if(!multiplier || multiplier <= 0 || multiplier > 50) // Href exploit checks multiplier = 1 if(amount < R.req_amount * multiplier)