ZoriaRPG icon

npc script wolf

ZoriaRPG | PRO | 12/12/19 02:42:28 PM UTC | 0 ⭐ | 679 👁️ | Never ⏰ | []
C++ |

2.53 KB

|

None

|

0 👍

/

0 👎

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