@@ -245,38 +245,23 @@ function mod.aim_gun_at_nearest_enemy(pindex, enemy_in)
245245 return true
246246end
247247
248- -- Max ranges are determined by the game GUI, min ranges represent the minimum distance where you will not get damaged.
248+ --- Get the throw range for a capsule or grenade.
249+ --- Returns 0 for anything but a throwable attack, otherwise returns the range from attack parameters.
250+ --- @param stack LuaItemStack
251+ --- @return number min_range
252+ --- @return number max_range
249253function mod .get_grenade_or_capsule_range (stack )
250- local max_range = 20
251- local min_range = 0
252- if stack == nil or stack .valid_for_read == false then
253- return min_range , max_range
254- elseif stack .name == " grenade" then
255- max_range = 15
256- min_range = 7
257- elseif stack .name == " cluster-grenade" then
258- max_range = 20
259- min_range = 12
260- elseif stack .name == " poison-capsule" then
261- max_range = 25
262- min_range = 12
263- elseif stack .name == " slowdown-capsule" then
264- max_range = 25
265- min_range = 0
266- elseif stack .name == " cliff-explosives" then
267- max_range = 10
268- min_range = 0
269- elseif stack .name == " defender-capsule" then
270- max_range = 20
271- min_range = 0
272- elseif stack .name == " distractor-capsule" then
273- max_range = 25
274- min_range = 0
275- elseif stack .name == " destroyer-capsule" then
276- max_range = 20
277- min_range = 0
278- end
279- return min_range , max_range
254+ if stack == nil or not stack .valid_for_read then return 0 , 0 end
255+
256+ local capsule_action = stack .prototype .capsule_action
257+ if not capsule_action then return 0 , 0 end
258+
259+ if capsule_action .type ~= " throw" then return 0 , 0 end
260+
261+ local attack_params = capsule_action .attack_parameters
262+ if not attack_params then return 0 , 0 end
263+
264+ return attack_params .min_range or 0 , attack_params .range or 0
280265end
281266
282267--[[
0 commit comments