Advertisement
Wolfrost

SZ AI Finanza

Jun 24th, 2016
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ///sz_AIFinanzaBase()
  2.  
  3. //min_dist = distanza minima di attacco
  4. //jump_action = true se il nemico può saltare per schivare
  5. //get_weapon = true se può raccogliere armi da terra
  6.  
  7. var wm, hm, id_mom, ammo_mom, place_pistol, place_shotgun; //variabili d'appoggio
  8. wm = sprite_get_width(mask_index);
  9. hm = sprite_get_height(mask_index);
  10. place_pistol = collision_rectangle(x, y, x +wm, y +hm, obj_Pistol, false, false);
  11. place_shotgun = collision_rectangle(x, y, x +wm, y +hm, obj_Shotgun, false, false);
  12.  
  13. if(!is_Died)
  14. {
  15.     //-----------per raccogliere armi da terra-----------
  16.     if(get_weapon)
  17.     {
  18.         if(place_pistol != noone or place_shotgun != noone)
  19.         {
  20.             //se a terra c'è una pistola
  21.             if(place_pistol != noone)
  22.             {
  23.                 if(place_pistol.ammo > 0)
  24.                 {
  25.                     //ii = instance_create(x, y, obj_FinanzaWeapon);
  26.                     ii = sz_secInstanceChange(obj_FinanzaWeapon);
  27.                     ii.weaponid = place_pistol.id;
  28.                     ii.is_Wielding = 'pistol';
  29.                     ii.mdir = mdir;
  30.                     //PARAMETRI IA
  31.                     ii.health_m = health_m;
  32.                     ii.walk_vel= walk_vel;
  33.                     ii.jumpspd= jumpspd;
  34.                     ii.damage = damage;
  35.                     ii.perc_damage = perc_damage;
  36.                     ii.action_delay = action_delay +30; //aggiungo un secondo di ritardo tra un'azione e l'altra
  37.                     //ii.min_dist = min_dist; //non lo passo perchè è utilizzato in un altro modo
  38.                     ii.jump_action = jump_action;
  39.                    
  40.                     instance_destroy(); //mi autodistruggo yeeeeee
  41.                     exit;
  42.                 }
  43.             }
  44.             //se a terra c'è un fucile
  45.             if(place_shotgun != noone)
  46.             {
  47.                 if(place_shotgun.ammo > 0)
  48.                 {
  49.                     //ii = instance_create(x, y, obj_FinanzaWeapon);
  50.                     ii = sz_secInstanceChange(obj_FinanzaWeapon);
  51.                     ii.weaponid = place_shotgun.id;
  52.                     ii.is_Wielding = 'shotgun';
  53.                     ii.mdir = mdir;
  54.                     //PARAMETRI IA
  55.                     ii.health_m = health_m;
  56.                     ii.walk_vel = walk_vel;
  57.                     ii.jumpspd = jumpspd;
  58.                     ii.damage = damage;
  59.                     ii.perc_damage = perc_damage;
  60.                     ii.action_delay = action_delay +30; //aggiungo un secondo di ritardo tra un'azione e l'altra
  61.                     //ii.min_dist = min_dist; //non lo passo perchè è utilizzato in un altro modo
  62.                     ii.jump_action = jump_action;
  63.                    
  64.                     instance_destroy(); //mi autodistruggo yeeeeee
  65.                     exit;
  66.                 }
  67.             }
  68.         }
  69.     }
  70.     //-------fine codice raccolta armi da terra----------
  71.    
  72.     if(distance_to_object(obj_Zeb) >= 128 or abs(obj_Zeb.y-y) > 64 or obj_Zeb.is_Died or obj_Zeb.freeze) //aggiunto obj_Zeb.freeze per evitare che la finanza colpisca zeb quando è freezato //abs(obj_Zeb.y-y) > 16 in precedenza
  73.     {
  74.         if(!is_Jumping)
  75.         {
  76.             is_Walking = true;
  77.             //cambio direzione altrimenti cade (prima versione commentata)
  78.             //if(!place_meeting(x+(sprite_width/2 +4)*mdir, y+(sprite_height/2)*vdir +8, obj_Block) and !place_meeting(x+(sprite_width/2 +4)*mdir, y+(sprite_height/2)*vdir +4, obj_Block2))
  79.             if(!place_meeting(x+((wm/2 +4)*mdir), y+sprite_height/2+8, obj_Block))
  80.             {
  81.                 mdir = -mdir; //cambio direzione
  82.                 alarm[0] = irandom_range(20, 40); //un tempo casuale tra 20 e 40 step
  83.                 change_direction = false;
  84.             }
  85.             if(change_direction)
  86.             {
  87.                 mdir = -mdir; //cambio direzione
  88.                 alarm[0] = irandom_range(20, 40); //un tempo casuale tra 20 e 40 step
  89.                 change_direction = false;
  90.             }
  91.         }
  92.     }
  93.     else
  94.     {
  95.         if(distance_to_object(obj_Zeb) > min_dist)
  96.         {
  97.             if(!is_Jumping)
  98.             {
  99.                 //--------------aggiunto successivamente per far saltare la finanza-----------------------
  100.                 if(!place_meeting(x+((wm/2 +4)*mdir), y+sprite_height/2+8, obj_Block) /* && !place_meeting(x+((wm/2 +4)*mdir), y+sprite_height/2+8, par_stair)*/)  //dovrebbe essere così doom, vedi un po' te
  101.                 {
  102.                     hdir = sz_RealDirection();
  103.                     vel=walk_vel;
  104.                     hmove=hdir*vel;
  105.                     vmove =- jumpspd;
  106.                 }
  107.                 else
  108.                 {
  109.                 //----------------------------------------------------------------------------------------
  110.                     is_Fighting = false;
  111.                     is_Standing = false;
  112.                     is_Walking = true;
  113.                     mdir = sz_RealDirection();
  114.                 }
  115.             }
  116.         }
  117.         else
  118.         {
  119.             if(!is_Jumping)
  120.             {
  121.                 is_Walking = false; //si ferma in qualsiasi situazione
  122.                 mdir = sz_RealDirection();
  123.                 if(what_todo == -1 && can_do)
  124.                 {
  125.                     //is_Walking = false;
  126.                     is_Fighting = false;
  127.                     can_do = false;
  128.                     what_todo = irandom_range(0, 49); //scelgo casualmente un'azione da fare
  129.                    
  130.                     if(what_todo >= 0 && what_todo < 20) {
  131.                         is_Fighting = true;
  132.                         punch = 1;
  133.                     }
  134.                     if(what_todo >= 20 && what_todo < 40) {
  135.                         is_Fighting = true;
  136.                         punch = 2;
  137.                     }
  138.                     if(jump_action)
  139.                     {
  140.                         if(what_todo >= 40 && what_todo < 49) {
  141.                             hdir = -sz_RealDirection();
  142.                             vel=walk_vel;
  143.                             hmove=hdir*vel;
  144.                             vmove =- jumpspd;
  145.                             //is_OnStair = false;
  146.                         }
  147.                     }
  148.                 }
  149.                 else
  150.                 {
  151.                     is_Standing = true;
  152.                 }
  153.             }
  154.         }
  155.     }
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement