mirror of
https://github.com/emagi/eq2emu
synced 2026-08-12 18:23:04 -04:00
22 KiB
22 KiB
File: Spawn.h
Classes
SpellZoneServerQuestLUAHistoryCellCellInfoMovementDataBasicInfoStructMovementLocationSpawnUpdateSpawnDataTimedGridDataSpawnSpawnProximity
Functions
void AddChangedZoneSpawn();void AddPrimaryEntityCommand(const char* name, float distance, const char* command, const char* error_text, int16 cast_time, int32 spell_visual, bool defaultDenyList = false, Player* player = NULL);void RemovePrimaryEntityCommand(const char* command);bool SetPermissionToEntityCommand(EntityCommand* command, Player* player, bool permissionValue);bool SetPermissionToEntityCommandByCharID(EntityCommand* command, int32 charID, bool permissionValue);void RemoveSpawnFromPlayer(Player* player);void AddSecondaryEntityCommand(const char* name, float distance, const char* command, const char* error_text, int16 cast_time, int32 spell_visual){int8 GetLockedNoLoot(){int16 GetEmoteState(){int8 GetHideHood(){void SetLockedNoLoot(int8 new_val, bool updateFlags = true){void SetHandFlag(int8 new_val, bool updateFlags = true){void SetHideHood(int8 new_val, bool updateFlags = true){void SetEmoteState(int8 new_val, bool updateFlags = true){void SetName(const char* new_name, bool updateFlags = true){void SetPrefixTitle(const char* new_prefix_title, bool updateFlags = true) {void SetSuffixTitle(const char* new_suffix_title, bool updateFlags = true) {void SetSubTitle(const char* new_sub_title, bool updateFlags = true) {void SetLastName(const char* new_last_name, bool updateFlags = true) {void SetAdventureClass(int8 new_class, bool updateFlags = true) {void SetTradeskillClass(int8 new_class, bool updateFlags = true) {void SetSize(int16 new_size, bool updateFlags = true) {void SetSpeedX(float speed_x, bool updateFlags = true) {void SetSpeedY(float speed_y, bool updateFlags = true) {void SetSpeedZ(float speed_z, bool updateFlags = true) {void SetX(float x, bool updateFlags = true){void SetY(float y, bool updateFlags = true, bool disableYMapFix = false);void SetZ(float z, bool updateFlags = true){void SetHeading(sint16 dir1, sint16 dir2, bool updateFlags = true){void SetHeading(float heading, bool updateFlags = true){void SetPitch(sint16 pitch1, sint16 pitch2, bool updateFlags = true){void SetPitch(float pitch, bool updateFlags = true){void SetRoll(float roll, bool updateFlags = true){else if (roll != 180)void SetVisualState(int16 state, bool updateFlags = true){void SetActionState(int16 state, bool updateFlags = true){void SetMoodState(int16 state, bool updateFlags = true){void SetInitialState(int16 state, bool updateFlags = true){void SetActivityStatus(int16 state, bool updateFlags = true){void SetCollisionRadius(int32 radius, bool updateFlags = true){int16 GetCollisionRadius(){int16 GetVisualState(){int16 GetActionState(){int16 GetMoodState(){int16 GetInitialState(){int16 GetActivityStatus(){int32 GetPrimaryCommandListID(){int32 GetSecondaryCommandListID(){void SetID(int32 in_id){void SetDifficulty(int8 difficulty, bool setUpdateFlags = true){void SetTSLevel(int16 tradeskill_level, bool setUpdateFlags = true){void SetGender(int8 gender, bool setUpdateFlags = true){void SetShowName(int8 new_val, bool setUpdateFlags = true){void SetShowLevel(int8 new_val, bool setUpdateFlags = true){void SetHeroic(int8 new_val, bool setUpdateFlags = true){void SetTargetable(int8 new_val, bool setUpdateFlags = true){void SetShowCommandIcon(int8 new_val, bool setUpdateFlags = true){void SetShowHandIcon(int8 new_val, bool setUpdateFlags = true){void SetAttackable(int8 new_val, bool setUpdateFlags = true){void SetLocation(int32 id, bool setUpdateFlags = true);void SetRace(int8 race, bool setUpdateFlags = true){void SetIcon(int8 icon, bool setUpdateFlags = true){void AddIconValue(int8 val){void RemoveIconValue(int8 val){int8 GetIconValue(){void SetSpawnType(int8 new_type){int8 GetSpawnType(){void SetDatabaseID(int32 new_id){int32 GetDatabaseID(){int8 GetShowHandIcon(){int32 GetLocation(){int8 GetAttackable(){int8 GetShowName(){int8 GetShowLevel(){int8 GetHeroic(){int8 GetTargetable(){int8 GetShowCommandIcon(){int8 GetAdventureClass() {int8 GetTradeskillClass() {float GetDestinationX(){float GetX() {float GetSpeedX() {float GetSpeedY() {float GetSpeedZ() {float GetDestinationY(){float GetY(){float GetDestinationZ(){float GetZ(){float GetHeading(){float GetPitch(){float GetRoll(){int32 GetID(){float GetDistance(float x1, float y1, float z1, float x2, float y2, float z2);float GetDistance(float x, float y, float z, float radius, bool ignore_y = false);float GetDistance(float x, float y, float z, bool ignore_y = false);float GetDistance(Spawn* spawn, bool ignore_y = false, bool includeRadius=true);float GetDistance(Spawn* spawn, float x1, float y1, float z1, bool includeRadius=true);float CalculateRadius(Spawn* target);int8 GetDifficulty(){sint32 GetTotalPower();sint32 GetPower();sint32 GetTotalHP();sint32 GetHP();sint32 GetTotalHPBase();sint32 GetTotalHPBaseInstance();sint32 GetTotalPowerBase();sint32 GetTotalPowerBaseInstance();float GetHPRatio() { return GetHP() == 0 || GetTotalHP() == 0 ? 0 : ((float) GetHP() / GetTotalHP() * 100); }int GetIntHPRatio() { return GetTotalHP() == 0 ? 0 : static_cast<int>(GetHPRatio()); }sint32 GetTotalSavagery();sint32 GetSavagery();sint32 GetTotalDissonance();sint32 GetDissonance();sint32 GetTotalSavageryBase();sint32 GetTotalDissonanceBase();sint16 GetAssignedAA();sint16 GetUnassignedAA();sint16 GetTradeskillAA();sint16 GetUnassignedTradeskillAA();sint16 GetPrestigeAA();sint16 GetUnassignedPretigeAA();sint16 GetTradeskillPrestigeAA();sint16 GetUnassignedTradeskillPrestigeAA();int32 GetAAXPRewards();void SetTotalPower(sint32 new_val);void SetTotalHP(sint32 new_val);void SetTotalSavagery(sint32 new_val);void SetTotalDissonance(sint32 new_val);void SetTotalPowerBase(sint32 new_val);void SetTotalPowerBaseInstance(sint32 new_val);void SetTotalHPBase(sint32 new_val);void SetTotalHPBaseInstance(sint32 new_val);void SetTotalSavageryBase(sint32 new_val);void SetTotalDissonanceBase(sint32 new_val);void SetPower(sint32 power, bool setUpdateFlags = true);void SetHP(sint32 new_val, bool setUpdateFlags = true);void SetSavagery(sint32 savagery, bool setUpdateFlags = true);void SetDissonance(sint32 dissonance, bool setUpdateFlags = true);void SetAssignedAA(sint16 new_val);void SetUnassignedAA(sint16 new_val);void SetTradeskillAA(sint16 new_val);void SetUnassignedTradeskillAA(sint16 new_val);void SetPrestigeAA(sint16 new_val);void SetUnassignedPrestigeAA(sint16 new_val);void SetTradeskillPrestigeAA(sint16 new_val);void SetUnassignedTradeskillPrestigeAA(sint16 new_val);void SetAAXPRewards(int32 amount);void SetPrivateQuestSpawn(bool val) {req_quests_private = val;}void SetQuestsRequiredOverride(int16 val) {req_quests_override = val;}void SetQuestsRequiredContinuedAccess(bool val) {req_quests_continued_access = val;}bool GetPrivateQuestSpawn() {return req_quests_private;}int16 GetQuestsRequiredOverride() {return req_quests_override;}bool GetQuestsRequiredContinuedAccess() {return req_quests_continued_access;}bool Alive(){ return is_alive; }void SetAlive(bool val) { is_alive = val; }int16 GetLevel(){int16 GetTSLevel(){int8 GetGender(){int8 GetRace(){int32 GetSize(){int32 GetDeviation(){void SetDeviation(int32 in_dev){float GetSpawnOrigHeading(){void SetSpawnOrigHeading(float val){float GetSpawnOrigX(){float GetSpawnOrigY(){float GetSpawnOrigZ(){float GetSpawnOrigPitch(){float GetSpawnOrigRoll(){void SetSpawnOrigX(float val){void SetSpawnOrigY(float val){void SetSpawnOrigZ(float val){void SetSpawnOrigRoll(float val){void SetSpawnOrigPitch(float val){void SetSogaModelType(int16 new_val, bool setUpdateFlags = true){void SetModelType(int16 model_type, bool setUpdateFlags = true){int16 GetSogaModelType(){int16 GetModelType(){bool IsFlyingCreature();bool IsWaterCreature();bool InWater();bool InLava();void SetFlyingCreature();void SetWaterCreature();void SetPrimaryCommand(const char* name, const char* command, float distance = 10);void SetPrimaryCommands(vector<EntityCommand*>* commands);void SetSecondaryCommands(vector<EntityCommand*>* commands);bool HasInfoChanged(){ return info_changed; }bool HasPositionChanged(){ return position_changed; }bool HasTarget(){ return target ? true : false; }int32 GetRespawnTime();void SetRespawnTime(int32 time);sint32 GetRespawnOffsetLow();void SetRespawnOffsetLow(sint32 time);sint32 GetRespawnOffsetHigh();void SetRespawnOffsetHigh(sint32 time);bool DuplicatedSpawn() { return duplicated_spawn; }void SetDuplicateSpawn(bool val) { duplicated_spawn = val; }int32 GetExpireTime() { return expire_time; }void SetExpireTime(int32 new_expire_time) { expire_time = new_expire_time; }int32 GetExpireOffsetTime();void SetExpireOffsetTime(int32 time);int32 GetSpawnLocationID();void SetSpawnLocationID(int32 id);int32 GetSpawnEntryID();void SetSpawnEntryID(int32 id);int32 GetSpawnLocationPlacementID();void SetSpawnLocationPlacementID(int32 id);float GetXOffset() { return x_offset; }void SetXOffset(float new_x_offset) { x_offset = new_x_offset; }float GetYOffset() { return y_offset; }void SetYOffset(float new_y_offset) { y_offset = new_y_offset; }float GetZOffset() { return z_offset; }void SetZOffset(float new_z_offset) { z_offset = new_z_offset; }bool HasTrapTriggered() {int32 GetTrapState() {void SetChestDropTime() {void SetTrapTriggered(bool triggered, int32 state) {int32 GetChestDropTime() {int32 GetTrapOpenedTime() {void AddLootItem(int32 id, int16 charges = 1) {void AddLootItem(Item* item) {bool HasLoot() {void TransferLoot(Spawn* spawn);bool HasLootItemID(int32 id);int32 GetLootItemID();void LockLoot() {void UnlockLoot() {void ClearLoot() {int32 GetLootCount() {void ClearNonBodyLoot() {int32 GetLootCoins() {void SetLootCoins(int32 val, bool lockloot = true) {void AddLootCoins(int32 coins) {void SetTarget(Spawn* spawn);void SetLastAttacker(Spawn* spawn);bool TakeDamage(int32 damage);int32 GetZoneID();void SetFactionID(int32 val) { faction_id = val; }int32 GetFactionID(){else if ((next_id - 255) % 256 == 0) { //we dont want it to end in 255, it will confuse/crash the clientreturn NextID();void AddProvidedQuest(int32 val){bool HasProvidedQuests(){void SetSpawnScript(string name);bool HasSpawnGroup();bool IsInSpawnGroup(Spawn* spawn);void UpdateEncounterState(int8 new_state);void CheckEncounterState(Entity* victim, bool test_auto_lock = false);void AddTargetToEncounter(Entity* entity);void SendSpawnChanges(bool val){ send_spawn_changes = val; }void SetSpawnGroupID(int32 id);int32 GetSpawnGroupID();void AddSpawnToGroup(Spawn* spawn);void SetSpawnGroupList(vector<Spawn*>* list, Mutex* mutex);void RemoveSpawnFromGroup(bool erase_all = false, bool ignore_death = false);void SetRunningTo(Spawn* spawn){ running_to = spawn->GetID(); }void SetTempVisualState(int val, bool update = true) { SetInfo(&tmp_visual_state, val, update); }int GetTempVisualState(){ return tmp_visual_state; }void SetTempActionState(int val, bool update = true) { SetInfo(&tmp_action_state, val, update); }int GetTempActionState(){ return tmp_action_state; }void AddAllowAccessSpawn(Spawn* spawn){ allowed_access[spawn->GetID()] = 1; }void RemoveSpawnAccess(Spawn* spawn);bool IsPrivateSpawn(){ return allowed_access.size() > 0 ;}bool AllowedAccess(Spawn* spawn){ return allowed_access.count(spawn->GetID()) > 0; }void MakeSpawnPublic() { allowed_access.clear(); }void SetSizeOffset(int8 offset);int8 GetSizeOffset();void SetMerchantID(int32 val);int32 GetMerchantID();void SetMerchantType(int8 val);int8 GetMerchantType();void SetCollector(bool is_it) { is_collector = is_it; }bool IsCollector() { return is_collector; }void SetMerchantLevelRange(int32 minLvl = 0, int32 maxLvl = 0);bool IsClientInMerchantLevelRange(Client* ent, bool sendMessageIfDenied = true);int32 GetMerchantMinLevel();int32 GetMerchantMaxLevel();void SetQuestsRequired(Spawn* new_spawn);void SetQuestsRequired(int32 quest_id, int16 quest_step);bool HasQuestsRequired();bool HasHistoryRequired();void SetRequiredHistory(int32 event_id, int32 value1, int32 value2);void SetTransporterID(int32 id);int32 GetTransporterID();bool MeetsSpawnAccessRequirements(Player* player);void RemovePrimaryCommands();void InitializePosPacketData(Player* player, PacketStruct* packet, bool bSpawnUpdate = false);void InitializeInfoPacketData(Player* player, PacketStruct* packet);void InitializeVisPacketData(Player* player, PacketStruct* packet);void InitializeHeaderPacketData(Player* player, PacketStruct* packet, int16 index);void InitializeFooterPacketData(Player* player, PacketStruct* packet);void MoveToLocation(Spawn* spawn, float distance, bool immediate = true, bool isMappedLocation = false);void AddMovementLocation(float x, float y, float z, float speed, int16 delay, const char* lua_function, float heading, bool include_heading = false, bool use_nav_path = false);void ProcessMovement(bool isSpawnListLocked=false);void ResetMovement();bool ValidateRunning(bool lockMovementLocation, bool lockMovementLoop);bool IsRunning();void CalculateRunningLocation(bool stop = false);void RunToLocation(float x, float y, float z, float following_x = 0, float following_y = 0, float following_z = 0);void NewWaypointChange(MovementLocation* data);bool CalculateChange();void AddRunningLocation(float x, float y, float z, float speed, float distance_away = 0, bool attackable = true, bool finished_adding_locations = true, string lua_function = "", bool isMapped=false, bool useNavPath=false);bool RemoveRunningLocation();void ClearRunningLocations();void CopySpawnAppearance(Spawn* spawn);bool MovementInterrupted(){ return movement_interrupted; }void MovementInterrupted(bool val) { movement_interrupted = val; }bool NeedsToResumeMovement(){ return attack_resume_needed; }void NeedsToResumeMovement(bool val) { attack_resume_needed = val; }bool HasMovementLoop(){ return movement_loop.size() > 0; }bool HasMovementLocations() {float GetFaceTarget(float x, float z);void FaceTarget(float x, float z);void FaceTarget(Spawn* target, bool disable_action_state = true);void SetInvulnerable(bool val);bool GetInvulnerable();void SetScaredByStrongPlayers(bool val) { scared_by_strong_players = val; }bool IsScaredByStrongPlayers() { return scared_by_strong_players; }bool IsPet() { return is_pet; }void SetPet(bool val) { is_pet = val; }void SetFollowTarget(Spawn* spawn, int32 followDistance=0);void AddTempVariable(string var, string val);void AddTempVariable(string var, Spawn* val);void AddTempVariable(string var, ZoneServer* val);void AddTempVariable(string var, Quest* val);void AddTempVariable(string var, Item* val);string GetTempVariable(string var);int8 GetTempVariableType(string var);void DeleteTempVariable(string var);void SetIllusionModel(int16 val, bool setUpdateFlags = true) {int16 GetIllusionModel() { return m_illusionModel; }int32 GetSpawnAnim() { return m_spawnAnim; }void SetSpawnAnim(int32 value) { m_spawnAnim = value; }int32 GetAddedToWorldTimestamp() { return m_addedToWorldTimestamp; }void SetAddedToWorldTimestamp(int32 value) { m_addedToWorldTimestamp = value; }int16 GetSpawnAnimLeeway() { return m_spawnAnimLeeway; }void SetSpawnAnimLeeway(int16 value) { m_spawnAnimLeeway = value; }float FindDestGroundZ(glm::vec3 dest, float z_offset);float FindBestZ(glm::vec3 loc, glm::vec3* result=nullptr, int32* new_grid_id=nullptr, int32* new_widget_id=nullptr);float GetFixedZ(const glm::vec3& destination, int32 z_find_offset = 1);void FixZ(bool forceUpdate=false);bool CheckLoS(Spawn* target);bool CheckLoS(glm::vec3 myloc, glm::vec3 oloc);void CalculateNewFearpoint();void AddSpawnToProximity(int32 spawnValue, SpawnProximityType type);void RemoveSpawnFromProximity(int32 spawnValue, SpawnProximityType type);void RemoveSpawnProximities() {void SetPickupItemID(int32 itemid)void SetPickupUniqueItemID(int32 uniqueid)int32 GetPickupItemID() { return pickup_item_id; }int32 GetPickupUniqueItemID() { return pickup_unique_item_id; }bool IsSoundsDisabled() { return disable_sounds; }void SetSoundsDisabled(bool val) { disable_sounds = val; }void DeleteRegion(Region_Node* inNode, ZBSP_Node* rootNode);bool InRegion(Region_Node* inNode, ZBSP_Node* rootNode);int32 GetRegionType(Region_Node* inNode, ZBSP_Node* rootNode);float SpawnAngle(Spawn* target, float selfx, float selfz);bool BehindSpawn(Spawn *target, float selfx, float selfz)bool InFrontSpawn(Spawn *target, float selfx, float selfz)bool IsFlankingSpawn(Spawn *target, float selfx, float selfz)bool IsTransportSpawn() { return is_transport_spawn; }void SetTransportSpawn(bool val) { is_transport_spawn = val; }sint64 GetRailID() { return rail_id; }void SetRailID(sint64 val) { rail_id = val; }void AddRailPassenger(int32 char_id);void RemoveRailPassenger(int32 char_id);void SetAppearancePosition(float x, float y, float z);void SetOmittedByDBFlag(bool val) { is_omitted_by_db_flag = val; }bool IsOmittedByDBFlag() { return is_omitted_by_db_flag; }int32 GetLootTier() { return loot_tier; }void SetLootTier(int32 tier) { loot_tier = tier; }int32 GetLootDropType() { return loot_drop_type; }void SetLootDropType(int32 type) { loot_drop_type = type; }void SetDeletedSpawn(bool val) { deleted_spawn = val; }bool IsDeletedSpawn() { return deleted_spawn; }int32 InsertRegionToSpawn(Region_Node* node, ZBSP_Node* bsp_root, WaterRegionType regionType, bool in_region = true);bool HasRegionTracked(Region_Node* node, ZBSP_Node* bsp_root, bool in_region);int8 GetArrowColor(int8 spawn_level);void AddIgnoredWidget(int32 id);void SendGroupUpdate();void OverrideLootMethod(GroupLootMethod newMethod) { loot_method = newMethod; }void SetLootMethod(GroupLootMethod method, int8 item_rarity = 0, int32 group_id = 0);int32 GetLootGroupID() { return loot_group_id; }GroupLootMethod GetLootMethod() { return loot_method; }int8 GetLootRarity() { return loot_rarity; }int32 GetLootTimeRemaining() { return loot_timer.GetRemainingTime(); }bool IsLootTimerRunning() { return loot_timer.Enabled(); }bool CheckLootTimer() { return loot_timer.Check(); }void DisableLootTimer() { return loot_timer.Disable(); }int32 GetLooterSpawnID() { return looter_spawn_id; }void SetLooterSpawnID(int32 id) { looter_spawn_id = id; }bool AddNeedGreedItemRequest(int32 item_id, int32 spawn_id, bool need_item);bool AddLottoItemRequest(int32 item_id, int32 spawn_id);void AddSpawnLootWindowCompleted(int32 spawn_id, bool status_);bool SetSpawnLootWindowCompleted(int32 spawn_id);bool HasSpawnLootWindowCompleted(int32 spawn_id);bool HasSpawnNeedGreedEntry(int32 item_id, int32 spawn_id);bool HasSpawnLottoEntry(int32 item_id, int32 spawn_id);void GetSpawnLottoEntries(int32 item_id, std::map<int32, int32>* out_entries);void GetLootItemsList(std::vector<int32>* out_entries);void GetSpawnNeedGreedEntries(int32 item_id, bool need_item, std::map<int32, int32>* out_entries);bool HasLootWindowCompleted();bool IsLootWindowComplete() { return is_loot_complete; }void SetLootDispensed() { is_loot_dispensed = true; }bool IsLootDispensed() { return is_loot_dispensed; }void StartLootTimer(Spawn* looter);void CloseLoot(Spawn* sender);void SetLootName(char* name) {bool IsItemInLootTier(Item* item);void DistributeGroupLoot_RoundRobin(std::vector<int32>* item_list, bool roundRobinTrashLoot = false); // trash loot is what falls under the item tier requirement by group optionsvoid CalculateInitialVelocity(float heading, float distanceHorizontal, float distanceVertical, float distanceDepth, float duration);glm::vec3 CalculateProjectilePosition(glm::vec3 initialVelocity, float time);bool CalculateSpawnProjectilePosition(float x, float y, float z);void SetKnockback(Spawn* target, int32 duration, float vertical, float horizontal);void ResetKnockedBack();void CheckProximities();bool IsKnockedBack() { return knocked_back; }
Notable Comments
- /*
- */
- // WE ARE UNSURE OF THESE OLD CLIENT VALUES USED AS TEMP PLACEHOLDERS FOR NEWER CLIENTS
- //int32 start_time;
- //int32 end_time;
- *field = value;
- ///
Sets a user defined variable - /// Variable we are setting
- /// Value to set the variable to
- ///
Gets the value for the given variable