bool GameObject::CreateFromProto(uint32 entry,uint32 mapid, float x, float y, float z, float ang) { pInfo= GameObjectNameStorage.LookupEntry(entry); if(!pInfo)return false; Object::_Create( mapid, x, y, z, ang ); SetUInt32Value( OBJECT_FIELD_ENTRY, entry ); SetFloatValue( GAMEOBJECT_POS_X, x ); SetFloatValue( GAMEOBJECT_POS_Y, y ); SetFloatValue( GAMEOBJECT_POS_Z, z ); SetFloatValue( GAMEOBJECT_FACING, ang ); //SetUInt32Value( GAMEOBJECT_TIMESTAMP, (uint32)time(NULL)); // SetUInt32Value( GAMEOBJECT_ARTKIT, 0 ); //these must be from wdb somewhere i guess // SetUInt32Value( GAMEOBJECT_ANIMPROGRESS, 0 ); SetUInt32Value( GAMEOBJECT_STATE, 1 ); SetUInt32Value( GAMEOBJECT_DISPLAYID, pInfo->DisplayID ); SetUInt32Value( GAMEOBJECT_TYPE_ID, pInfo->Type ); InitAI(); return true; /* original_flags = m_uint32Values[GAMEOBJECT_FLAGS]; original_state = m_uint32Values[GAMEOBJECT_STATE]; */ }
bool GameObject::Load(GOSpawn *spawn) { if(!CreateFromProto(spawn->entry,0,spawn->x,spawn->y,spawn->z,spawn->facing)) return false; spawnid = spawn->id; m_spawn = spawn; SetFloatValue(GAMEOBJECT_ROTATION,spawn->o); SetFloatValue(GAMEOBJECT_ROTATION_01 ,spawn->o1); SetFloatValue(GAMEOBJECT_ROTATION_02 ,spawn->o2); SetFloatValue(GAMEOBJECT_ROTATION_03 ,spawn->o3); SetUInt32Value(GAMEOBJECT_FLAGS,spawn->flags); // SetUInt32Value(GAMEOBJECT_LEVEL,spawn->level); SetUInt32Value(GAMEOBJECT_STATE,spawn->state); if(spawn->faction) { SetUInt32Value(GAMEOBJECT_FACTION,spawn->faction); m_faction = sFactionTmpStore.LookupEntry(spawn->faction); if(m_faction) m_factionDBC = sFactionStore.LookupEntry(m_faction->Faction); } SetFloatValue(OBJECT_FIELD_SCALE_X,spawn->scale); _LoadQuests(); CALL_GO_SCRIPT_EVENT(this, OnCreate)(); CALL_GO_SCRIPT_EVENT(this, OnSpawn)(); InitAI(); _LoadQuests(); return true; }
void EnemyAIBase::Exec( TEX_DRAW_INFO &enemyInfo, ACTION_ARRAY &actionInfo ) { if( !m_isReady ){ m_isReady = InitAI(); } else{ ExecMain( enemyInfo, actionInfo ); } }
Unit::Unit(float x, float y, UNITTYPE type, OWNER owner, AI *ai, Animation *animation) { m_objType = UNIT; m_position.x = x; m_position.y = y; m_utype = type; m_owner = owner; m_ai = ai; m_animation = animation; InitAI(); }
bool GameObject::CreateFromProto(uint32 entry,uint32 mapid, float x, float y, float z, float ang, float orientation1, float orientation2, float orientation3, float orientation4) { pInfo= GameObjectNameStorage.LookupEntry(entry); if(!pInfo) return false; Object::_Create( mapid, x, y, z, ang ); SetUInt32Value( OBJECT_FIELD_ENTRY, entry ); SetFloatValue( GAMEOBJECT_PARENTROTATION, orientation1 ); SetFloatValue( GAMEOBJECT_PARENTROTATION + 1, orientation2 ); UpdateRotation( orientation3,orientation4 ); SetByte(GAMEOBJECT_BYTES_1, GAMEOBJECT_BYTES_STATE, 1); SetUInt32Value( GAMEOBJECT_DISPLAYID, pInfo->DisplayID ); SetByte(GAMEOBJECT_BYTES_1, GAMEOBJECT_BYTES_TYPE_ID, pInfo->Type); InitAI(); return true; }