Changeset 174 for trunk/src/game/Creature.cpp
- Timestamp:
- 11/19/08 13:43:15 (17 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/game/Creature.cpp
r173 r174 47 47 #include "OutdoorPvPMgr.h" 48 48 #include "GameEvent.h" 49 #include "PossessedAI.h" 49 50 // apply implementation of the singletons 50 51 #include "Policies/SingletonImp.h" … … 118 119 119 120 Creature::Creature() : 120 Unit(), i_AI(NULL), 121 Unit(), i_AI(NULL), i_AI_possessed(NULL), 121 122 lootForPickPocketed(false), lootForBody(false), m_groupLootTimer(0), lootingGroupLeaderGUID(0), 122 123 m_lootMoney(0), m_lootRecipient(0), … … 146 147 delete i_AI; 147 148 i_AI = NULL; 149 150 DeletePossessedAI(); 148 151 } 149 152 … … 365 368 366 369 //Call AI respawn virtual function 367 i_AI->JustRespawned();370 AI()->JustRespawned(); 368 371 369 372 MapManager::Instance().GetMap(GetMapId(), this)->Add(this); … … 429 432 // do not allow the AI to be changed during update 430 433 m_AI_locked = true; 431 i_AI->UpdateAI(diff);434 AI()->UpdateAI(diff); 432 435 m_AI_locked = false; 433 436 } … … 526 529 } 527 530 531 // don't allow AI switch when possessed 532 if (isPossessed()) 533 return false; 534 528 535 CreatureAI * oldAI = i_AI; 529 536 i_motionMaster.Initialize(); … … 532 539 delete oldAI; 533 540 return true; 541 } 542 543 void Creature::InitPossessedAI() 544 { 545 if (!isPossessed()) return; 546 547 if (!i_AI_possessed) 548 i_AI_possessed = new PossessedAI(*this); 549 550 // Signal the old AI that it's been disabled 551 i_AI->OnPossess(true); 552 } 553 554 void Creature::DeletePossessedAI() 555 { 556 if (!i_AI_possessed) return; 557 558 delete i_AI_possessed; 559 i_AI_possessed = NULL; 560 561 // Signal the old AI that it's been re-enabled 562 i_AI->OnPossess(false); 534 563 } 535 564