npc script wolfie
{
void run()
{
int clks[3];
eweapon bite = Screen->CreateEWeapon(EW_SCRIPT1);
bite->DrawYOffset = -32768;
clks[1] = Rand(120,210);
clks[2] = 60;
while(1)
{
if( (--clks[1]) < 1 )
{
clks[1] = Rand(120,210);
//slow down
do
{
--this->Step;
nmes::transform2x1(this,clks);
bite->DeadState = WDS_ALIVE;
Waitframe();
} while(this->Step > 0);
//change dir
this->Dir = Rand(4);
nmes::transform2x1(this,clks);
//speed up
do
{
++this->Step;
nmes::transform2x1(this,clks);
bite->DeadState = WDS_ALIVE;
Waitframe();
}
while (this->Step < Game->LoadNPCData(this->ID)->Step);
}
nmes::transform2x1(this,clks);
//this->HaltingWalk({this->Rate, this->Homing, 0, this->Haltrate, Game->LoadNPCData(this->ID)->Random});
//this->ConstantWalk({this->Rate, this->Homing, this->Hunger});
bite->DeadState = WDS_ALIVE;
Waitframe();
}
}
}
namespace nmes
{
void transformbite(npc n, eweapon e)
{
bite->X = n->X-n->HitXOffset;
bite->Y = n->Y-n->HitYOffset;
}
void transform2x1(npc n, int clk)
{
++clk[0];
int f4 = Floor(clk[0]/(n->ASpeed/4));
if( f4 >= 4 ) { f4 = 0; clk[0] = 0;}
switch(n->Dir)
{
case DIR_DOWN:
n->Tile = (Game->LoadNPCData(n->ID)->Tile) + 4 + f4;
n->OriginalTile = n->Tile;
n->HitXOffset = 0;
n->HitYOffset = -16;
n->DrawXOffset = 0;
n->DrawYOffset = -16;
n->TileWidth = 1;
n->TileHeight = 2;
n->HitWidth = 16;
n->HitHeight = 32;
break;
case DIR_RIGHT:
n->Tile = (Game->LoadNPCData(n->ID)->Tile) + 60 + (f4 * 2);
n->OriginalTile = n->Tile;
n->HitXOffset = -16;
n->HitYOffset = 0;
n->DrawXOffset = -16;
n->DrawYOffset = 0;
n->TileWidth = 2;
n->TileHeight = 1;
n->HitWidth = 32;
n->HitHeight = 16;
break;
case DIR_LEFT:
n->Tile = (Game->LoadNPCData(n->ID)->Tile) + 40 + (f4 *2);
n->OriginalTile = n->Tile;
n->TileWidth = 2;
n->TileHeight = 1;
n->HitWidth = 32;
n->HitHeight = 16;
n->HitXOffset = 0;
n->HitYOffset = 0;
n->DrawXOffset = 0;
n->DrawYOffset = 0;
break;
case DIR_UP:
n->Tile = (Game->LoadNPCData(n->ID)->Tile) + f4;
n->OriginalTile = n->Tile;
n->TileWidth = 1;
n->TileHeight = 2;
n->HitWidth = 16;
n->HitHeight = 32;
n->HitXOffset = 0;
n->HitYOffset = 0;
n->DrawXOffset = 0;
n->DrawYOffset = 0;
break;
}
}
}
Comments