Advertisement
Guest User

Untitled

a guest
Sep 16th, 2019
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var spd = 3.5;
  2.  
  3. if jump = false && state != estate.spattack && state != estate.idle && state != estate.charge {
  4.     anim_state = "moving";
  5. }
  6.  
  7. if state = estate.spattack or state = estate.charge {
  8.     r = 5;
  9. } else {
  10.     r = 1;
  11. }
  12. //State speed management
  13. switch (state) {
  14.     case estate.move_right:  hspd += 1;
  15.         maxhspd = spd; break;
  16.     case estate.move_left: hspd -= 1;
  17.         maxhspd = spd; break;
  18.     case estate.idle: hspd = 0;
  19.         maxhspd = spd;
  20.         anim_state = "idle"; break;
  21.     case estate.idle_move_left: hspd -= 0.2;
  22.         maxhspd = 1.4; break;
  23.     case estate.idle_move_right: hspd += 0.2;
  24.         maxhspd = 1.4; break;
  25.     case estate.spattack: hspd -= 15*flipped;
  26.         maxhspd = 15;
  27.         anim_state = "spattack"; break;
  28.     case estate.charge: hspd = 0;
  29.         maxhspd = 6;
  30.         anim_state = "charge"; break;
  31. }
  32.  
  33. //Attacks
  34. if state = estate.charge {
  35.     if attack_timer = 25 {
  36.         state = estate.spattack;   
  37.     }
  38. }
  39.  
  40. hspd = clamp(hspd, -maxhspd, maxhspd); //this makes sure hspd doesn't exceed the max value
  41.  
  42. //Jumping
  43. if jump = true && on_ground = true {
  44.     vspd = -8;
  45.     on_ground = false;
  46.     anim_state = "jumping";
  47. }
  48.  
  49. vspd = vspd +  0.35//Adds gravity to vspeed
  50.  
  51. ///Collison Code///
  52.  
  53. //Horizontal
  54. if (place_meeting(x+hspd, y, o_wall)){
  55.     while (!place_meeting(x+sign(hspd), y, o_wall)){
  56.         x+=sign(hspd);
  57.     }
  58.     hspd=0;
  59. }
  60. x+=hspd;
  61.  
  62. //Vertical
  63. if (place_meeting(x, y+vspd, o_wall)){
  64.     while (!place_meeting(x, y+sign(vspd), o_wall)){
  65.         y+=sign(vspd);
  66.     }
  67.    vspd=0;
  68.    on_ground = true;
  69. }
  70. y+=vspd;
  71.  
  72. //Check to Jump
  73. if (place_meeting(x+(hspd*8), y, o_wall) and on_ground = true) {
  74.     jump = true;
  75. } else if !(place_meeting(x+(hspd*6),y,o_wall)) and on_ground = true {
  76.     jump = false;
  77. }
  78.  
  79. ///Attack Code///
  80.  
  81. var p_dir = point_direction(x,y,o_player.x,o_player.y);
  82.  
  83. if collision_rectangle(x-450,y-225,x+450,y+225,o_player,false,true) {
  84.     in_alert_radius = true;
  85.     if collision_rectangle(x-325*r,y-175*r,x+325*r,y+175*r,o_player,false,true) {
  86.         in_radius = true;  
  87.     } else {
  88.         in_radius = false;
  89.     }
  90. } else {
  91.     in_alert_radius = false;
  92. }
  93.  
  94. if attack_timer > 0 {
  95.     attack_timer -= 1;
  96. } else {
  97.     attack_timer = irandom_range(60,80);
  98. }
  99.  
  100. if in_radius = true {
  101.  
  102.  
  103. if attack_timer = 0 {
  104.     if state != estate.spattack {
  105.         var spchance = irandom_range(1,5);
  106.         if spchance = 1 {
  107.             state = estate.charge;
  108.             attack_timer = 50;
  109.         } else {
  110.             attack_timer = irandom_range(60,80);
  111.         }
  112.     } else {
  113.         state = estate.idle;
  114.         attack_timer = irandom_range(60,80);
  115.     }
  116. }
  117.  
  118. if state != estate.spattack and state != estate.charge {
  119.     if (p_dir < 45 or p_dir >= 315) {
  120.         e_dir_next = estate.move_right;
  121.     } else if (p_dir >= 135 and p_dir < 225) {
  122.         e_dir_next = estate.move_left; 
  123.     }
  124.    
  125.     state = e_dir_next;
  126. }
  127.  
  128. } else {
  129.    
  130.     if in_alert_radius = true {
  131.         if (p_dir < 45 or p_dir >= 315) {
  132.             state = estate.idle_move_right;
  133.         } else if (p_dir >= 135 and p_dir < 225) {
  134.             state = estate.idle_move_left; 
  135.         }
  136.         idle_move_timer = 5;
  137.     }
  138.    
  139.     idle_move_timer -= 1;
  140.     if idle_move_timer = 0 {
  141.         state = choose(estate.idle_move_right,estate.idle_move_left,estate.idle,estate.idle);
  142.         idle_move_timer = irandom_range(60,100);
  143.     }
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement