void GameView::UpdateMonsterSpawning() { if (GetTimeOfDay() != TimeOfDay::Night) return; float spawnRate = GetMonsterSpawnRate(); m_monsterSpawnTime -= ODT; if (m_monsterSpawnTime <= 0.f) { m_monsterSpawnTime = spawnRate; SpawnMonster(); } }
void GameSocket::OnSpawnMonster() { unsigned int id = Reader.ReadDWord(); /* Temporary: */ _Position* x = new _Position; x->XSector = Player.Position.XSector; x->YSector = Player.Position.YSector; x->X = Player.Position.X + 5; x->Y = Player.Position.Y + 5; x->Z = Player.Position.Z; SpawnMonster(x, id); delete x; //printf(" primera \n"); }
// called when a enemy is on sight bool CMonster::OnEnemyOnSight( CPlayer* Enemy ) { clock_t etime = clock() - lastSighCheck; if(etime<5000) return true; if(!IsOnBattle( )) { if(thisnpc->aggresive>1) { UINT aggro = GServer->RandNumber(2,15); if(thisnpc->aggresive>=aggro && !IsGhostSeed( )) { Enemy->ClearObject( this->clientid ); SpawnMonster(Enemy, this ); StartAction( (CCharacter*) Enemy, NORMAL_ATTACK, 0 ); } else if(IsGhostSeed( ) || thisnpc->aggresive>5) MoveTo( Enemy->Position->current, true ); } lastSighCheck = clock(); } return true; }