Ramaraunt1

Untitled

Nov 15th, 2016
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. ///path_is_possible(target,attack_range[current_action]);
  2.  
  3. /*
  4. This script returns true if ther is a path to the current target, and false if there isnt.
  5. Pathfinding must have been initialized with the script movment_range first.
  6. */
  7.  
  8. target = argument0;
  9. current_action_range = argument1;
  10.  
  11. //create list of gridspacers within attack range
  12. ranged = ds_list_create();
  13.  
  14. for (n_difference = 1; n_difference <= current_attack_range; n_difference ++)
  15. {
  16. for (m_difference = 1; m_difference <= current_attack_range; m_difference ++)
  17. {
  18. if target.n - n_difference >= 0 and target.m - m_difference >= 0
  19. {
  20. ds_list_add(ranged,global.gridspacer[target.n - n_difference,target.m - m_difference]);
  21. }
  22. if target.n + n_difference <= grid_columns and target.m + m_difference <= grid_rows
  23. {
  24. ds_list_add(ranged,global.gridspacer[target.n + n_difference,target.m + m_difference]);
  25. }
  26. if target.m - m_difference >= 0 and target.n + n_difference <= grid_columns
  27. {
  28. ds_list_add(ranged,global.gridspacer[target.n + n_difference <= grid_columns,target.m - m_difference]);
  29. }
  30. if target.m + m_difference <= grid_rows and target.n - n_difference >= 0
  31. {
  32. ds_list_add(ranged,global.gridspacer[target.n - n_difference <= grid_columns,target.m + m_difference]);
  33. }
  34. }
  35. }
  36.  
  37. if ds_list_empty(ranged)
  38. {
  39. ds_list_destroy(ranged);
  40. return(noone);
  41. }
  42. else
  43. {
  44. closest_g = 99999999
  45. closest_gridspacer = noone;
  46. for (cur_index = 0; cur_index < ds_list_size(ranged); cur_index ++)
  47. {
  48. cur_gridspacer = ds_list_find_value(ranged,cur_index);
  49. if cur_gridspacer.G < closest_g and cur_gridspacer.parent != noone
  50. {
  51. closest_g = cur_gridspacer.G;
  52. closest_gridspacer = cur_gridspacer;
  53. }
  54.  
  55. }
  56. if closest_gridspacer = noone
  57. {
  58. ds_list_destroy(ranged);
  59. return(noone);
  60. }
  61. else
  62. {
  63. ds_list_destroy(ranged);
  64. return(closest_gridspacer);
  65. }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment