Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ///path_is_possible(target,attack_range[current_action]);
- /*
- This script returns true if ther is a path to the current target, and false if there isnt.
- Pathfinding must have been initialized with the script movment_range first.
- */
- target = argument0;
- current_action_range = argument1;
- //create list of gridspacers within attack range
- ranged = ds_list_create();
- for (n_difference = 1; n_difference <= current_attack_range; n_difference ++)
- {
- for (m_difference = 1; m_difference <= current_attack_range; m_difference ++)
- {
- if target.n - n_difference >= 0 and target.m - m_difference >= 0
- {
- ds_list_add(ranged,global.gridspacer[target.n - n_difference,target.m - m_difference]);
- }
- if target.n + n_difference <= grid_columns and target.m + m_difference <= grid_rows
- {
- ds_list_add(ranged,global.gridspacer[target.n + n_difference,target.m + m_difference]);
- }
- if target.m - m_difference >= 0 and target.n + n_difference <= grid_columns
- {
- ds_list_add(ranged,global.gridspacer[target.n + n_difference <= grid_columns,target.m - m_difference]);
- }
- if target.m + m_difference <= grid_rows and target.n - n_difference >= 0
- {
- ds_list_add(ranged,global.gridspacer[target.n - n_difference <= grid_columns,target.m + m_difference]);
- }
- }
- }
- if ds_list_empty(ranged)
- {
- ds_list_destroy(ranged);
- return(noone);
- }
- else
- {
- closest_g = 99999999
- closest_gridspacer = noone;
- for (cur_index = 0; cur_index < ds_list_size(ranged); cur_index ++)
- {
- cur_gridspacer = ds_list_find_value(ranged,cur_index);
- if cur_gridspacer.G < closest_g and cur_gridspacer.parent != noone
- {
- closest_g = cur_gridspacer.G;
- closest_gridspacer = cur_gridspacer;
- }
- }
- if closest_gridspacer = noone
- {
- ds_list_destroy(ranged);
- return(noone);
- }
- else
- {
- ds_list_destroy(ranged);
- return(closest_gridspacer);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment