# File: `Spawn.h` ## Classes - `Spell` - `ZoneServer` - `Quest` - `LUAHistory` - `Cell` - `CellInfo` - `MovementData` - `BasicInfoStruct` - `MovementLocation` - `SpawnUpdate` - `SpawnData` - `TimedGridData` - `Spawn` - `SpawnProximity` ## 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(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* commands);` - `void SetSecondaryCommands(vector* 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 client` - `return 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* 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* out_entries);` - `void GetLootItemsList(std::vector* out_entries);` - `void GetSpawnNeedGreedEntries(int32 item_id, bool need_item, std::map* 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* item_list, bool roundRobinTrashLoot = false); // trash loot is what falls under the item tier requirement by group options` - `void 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