53 lines
1.5 KiB
Plaintext
53 lines
1.5 KiB
Plaintext
// Spawn a monster
|
|
void CMonster::SpawnMonster( CPlayer* player, CMonster* thismon )
|
|
{
|
|
BEGINPACKET( pak, 0x792 );
|
|
ADDWORD ( pak, clientid );
|
|
ADDFLOAT ( pak, Position->current.x*100 );
|
|
ADDFLOAT ( pak, Position->current.y*100 );
|
|
ADDFLOAT ( pak, Position->destiny.x*100 );
|
|
ADDFLOAT ( pak, Position->destiny.y*100 );
|
|
|
|
if(IsDead( ))
|
|
{
|
|
ADDWORD ( pak, 0x0003 );
|
|
ADDWORD ( pak, 0x0000 );
|
|
}
|
|
else if(IsOnBattle( ))
|
|
{
|
|
ADDWORD ( pak, 0x0002 );
|
|
ADDWORD ( pak, Battle->target );
|
|
}
|
|
else if(IsMoving( ))
|
|
{
|
|
ADDWORD ( pak, 0x0001 );
|
|
ADDWORD ( pak, 0x0000 );
|
|
}
|
|
else
|
|
{
|
|
ADDWORD ( pak, 0x0000 );
|
|
ADDWORD ( pak, 0x0000 );
|
|
}
|
|
|
|
ADDBYTE ( pak, thisnpc->stance );
|
|
ADDWORD ( pak, Stats->HP );
|
|
|
|
ADDDWORD ( pak, Stats->HP );
|
|
if(thismon->owner != player->clientid)
|
|
{
|
|
CMap* map = GServer->MapList.Index[Position->Map];
|
|
if(IsSummon( ) && map->allowpvp!=0) {ADDWORD( pak, 0x0064 );} //Hostil
|
|
else if (IsSummon( ) && map->allowpvp==0) {ADDWORD ( pak, 0x0000 );}//Friendly
|
|
else {ADDWORD( pak, 0x0064 );} //Hostil
|
|
}
|
|
else {ADDWORD( pak, 0x0000 );}//Friendly
|
|
ADDDWORD( pak, GServer->BuildBuffs( this ) );
|
|
ADDWORD ( pak, montype );
|
|
ADDWORD ( pak, 0x0000 );
|
|
if(IsSummon( ))
|
|
{
|
|
ADDWORD( pak, owner );
|
|
ADDWORD( pak, 0x0000 ); //
|
|
}
|
|
player->client->SendPacket( &pak );
|
|
} |