diff --git a/code/__DEFINES/math.dm b/code/__DEFINES/math.dm index 433d1c55b56..b255027d60d 100644 --- a/code/__DEFINES/math.dm +++ b/code/__DEFINES/math.dm @@ -236,3 +236,6 @@ return round(num--) else return num + +/// Checks if a number is an integer, or a float +#define IS_INT(x) (x == round(x)) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 22ac670b293..f443d97815d 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -187,7 +187,8 @@ var/datum/stack_recipe/R = recipes_list[text2num(href_list["make"])] var/multiplier = text2num(href_list["multiplier"]) - if(!multiplier || multiplier <= 0 || multiplier > 50) // Href exploit checks + if(!multiplier || multiplier <= 0 || multiplier > 50 || !IS_INT(multiplier)) // Href exploit checks + message_admins("[key_name_admin(usr)] just attempted to href exploit sheet crafting with an invalid multiplier. Ban highly advised.") multiplier = 1 if(get_amount() < R.req_amount * multiplier)