ZoriaRPG

npc script wolf

Dec 12th, 2019
161
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. npc script wolfie
  2. {
  3.     void run()
  4.     {
  5.         int clks[3];
  6.         eweapon bite = Screen->CreateEWeapon(EW_SCRIPT1);
  7.         bite->DrawYOffset = -32768;
  8.         clks[1] = Rand(120,210);
  9.         clks[2] = 60;
  10.         while(1)
  11.         {
  12.            
  13.             if( (--clks[1]) < 1 )
  14.             {
  15.                 clks[1] = Rand(120,210);
  16.                 //slow down
  17.                 do
  18.                 {
  19.                     --this->Step;
  20.                     nmes::transform2x1(this,clks);
  21.                     bite->DeadState = WDS_ALIVE;
  22.                     Waitframe();
  23.                 } while(this->Step > 0);
  24.                 //change dir
  25.                 this->Dir = Rand(4);
  26.                 nmes::transform2x1(this,clks);
  27.                
  28.                 //speed up
  29.                 do
  30.                 {
  31.                     ++this->Step;
  32.                     nmes::transform2x1(this,clks);
  33.                     bite->DeadState = WDS_ALIVE;
  34.                     Waitframe();
  35.                 }  
  36.                 while (this->Step < Game->LoadNPCData(this->ID)->Step);
  37.             }
  38.             nmes::transform2x1(this,clks);
  39.             //this->HaltingWalk({this->Rate, this->Homing, 0, this->Haltrate, Game->LoadNPCData(this->ID)->Random});
  40.             //this->ConstantWalk({this->Rate, this->Homing, this->Hunger});
  41.             bite->DeadState = WDS_ALIVE;
  42.             Waitframe();
  43.         }
  44.     }
  45. }
  46.  
  47. namespace nmes
  48. {      
  49.     void transformbite(npc n, eweapon e)
  50.     {
  51.         bite->X = n->X-n->HitXOffset;
  52.         bite->Y = n->Y-n->HitYOffset;
  53.     }
  54.     void transform2x1(npc n, int clk)
  55.     {
  56.         ++clk[0];
  57.         int f4 = Floor(clk[0]/(n->ASpeed/4));
  58.         if( f4 >= 4 ) { f4 = 0; clk[0] = 0;}
  59.         switch(n->Dir)
  60.         {
  61.             case DIR_DOWN:
  62.                 n->Tile = (Game->LoadNPCData(n->ID)->Tile) + 4 + f4;
  63.                 n->OriginalTile = n->Tile;
  64.                 n->HitXOffset = 0;
  65.                 n->HitYOffset = -16;
  66.                 n->DrawXOffset = 0;
  67.                 n->DrawYOffset = -16;
  68.                 n->TileWidth = 1;
  69.                 n->TileHeight = 2;
  70.                 n->HitWidth = 16;
  71.                 n->HitHeight = 32;
  72.                 break;
  73.             case DIR_RIGHT:
  74.                 n->Tile = (Game->LoadNPCData(n->ID)->Tile) + 60 + (f4 * 2);
  75.                 n->OriginalTile = n->Tile;
  76.                 n->HitXOffset = -16;
  77.                 n->HitYOffset = 0;
  78.                 n->DrawXOffset = -16;
  79.                 n->DrawYOffset = 0;
  80.                 n->TileWidth = 2;
  81.                 n->TileHeight = 1;
  82.                 n->HitWidth = 32;
  83.                 n->HitHeight = 16;
  84.                 break;
  85.             case DIR_LEFT:
  86.                 n->Tile = (Game->LoadNPCData(n->ID)->Tile) + 40 + (f4 *2);
  87.                 n->OriginalTile = n->Tile;
  88.                 n->TileWidth = 2;
  89.                 n->TileHeight = 1;
  90.                 n->HitWidth = 32;
  91.                 n->HitHeight = 16;
  92.                 n->HitXOffset = 0;
  93.                 n->HitYOffset = 0;
  94.                 n->DrawXOffset = 0;
  95.                 n->DrawYOffset = 0;
  96.                 break;
  97.             case DIR_UP:
  98.                 n->Tile = (Game->LoadNPCData(n->ID)->Tile) + f4;
  99.                 n->OriginalTile = n->Tile;
  100.                 n->TileWidth = 1;
  101.                 n->TileHeight = 2;
  102.                 n->HitWidth = 16;
  103.                 n->HitHeight = 32;
  104.                 n->HitXOffset = 0;
  105.                 n->HitYOffset = 0;
  106.                 n->DrawXOffset = 0;
  107.                 n->DrawYOffset = 0;
  108.                 break;
  109.            
  110.         }
  111.     }
  112. }
RAW Paste Data