# File: `zoneserver.h`

## Classes

- `SpellProcess`
- `TradeskillMgr`
- `Bot`
- `PlayerProximity`
- `LocationProximity`
- `LocationGrid`
- `GridMap`
- `TrackedSpawn`
- `HouseItem`
- `Widget`
- `Client`
- `Sign`
- `Object`
- `GroundSpawn`
- `GroundSpawnEntry`
- `GroundSpawnEntryItem`
- `LootTable`
- `LootDrop`
- `GlobalLoot`
- `TransportDestination`
- `LocationTransportDestination`
- `RevivePoint`
- `SpawnScriptTimer`
- `FlightPathInfo`
- `FlightPathLocation`
- `ZoneInfoSlideStructInfo`
- `ZoneInfoSlideStructTransitionInfo`
- `ZoneInfoSlideStruct`
- `ZoneServer`

## Functions

- `void ZoneLoop(void *tmp);`
- `void SpawnLoop(void *tmp);`
- `void SendInitialSpawns(void *tmp);`
- `void SendLevelChangedSpawns(void*tmp);`
- `void		IncrementIncomingClients();`
- `void		DecrementIncomingClients();`
- `void		Init();`
- `bool		Process();`
- `bool		SpawnProcess();`
- `void AddZoneInfoSlideStructTransitionInfo(ZoneInfoSlideStruct* info, int32 x, int32 y, float zoom, float transition_time);`
- `void	LoadRevivePoints(vector<RevivePoint*>* revive_points);`
- `void	AddClient(Client* client);`
- `void	SimpleMessage(int8 type, const char* message, Spawn* from, float distance, bool send_to_sender = true);`
- `void	HandleChatMessage(Spawn* from, const char* to, int16 channel, const char* message, float distance = 0, const char* channel_name = 0, bool show_bubble = true, int32 language = 0);`
- `void	HandleChatMessage(Client* client, Spawn* from, const char* to, int16 channel, const char* message, float distance = 0, const char* channel_name = 0, bool show_bubble = true, int32 language = 0);`
- `void	HandleChatMessage(Client* client, std::string fromName, const char* to, int16 channel, const char* message, float distance = 0, const char* channel_name = 0, int32 language = 0);`
- `void	HandleChatMessage(std::string fromName, const char* to, int16 channel, const char* message, float distance, const char* channel_name, int32 language);`
- `void	HandleBroadcast(const char* message);`
- `void	HandleAnnouncement(const char* message);`
- `int16	SetSpawnTargetable(Spawn* spawn, float distance);`
- `int16	SetSpawnTargetable(int32 spawn_id);`
- `void	ApplySetSpawnCommand(Client* client, Spawn* target, int8 type, const char* value);`
- `void	SetSpawnCommand(Spawn* spawn, int8 type, char* value, Client* client = 0);`
- `void	SetSpawnCommand(int32 spawn_id, int8 type, char* value, Client* client = 0);`
- `void	AddLoot(NPC* npc, Spawn* killer = nullptr, GroupLootMethod loot_method = GroupLootMethod::METHOD_FFA, int8 item_rarity = 0, int32 group_id = 0);`
- `void	AddSpawn(Spawn* spawn);`
- `void	RemoveDeadEnemyList(Spawn* spawn);`
- `void	RemoveDeadSpawn(Spawn* spawn);`
- `void	AddSpawnGroupLocation(int32 group_id, int32 location_id, int32 spawn_location_id);`
- `void	AddSpawnGroupAssociation(int32 group_id1, int32 group_id2);`
- `void	AddSpawnGroupChance(int32 group_id, float percent);`
- `void	RemoveSpawn(Spawn* spawn, bool delete_spawn = true, bool respawn = true, bool lock = true, bool erase_from_spawn_list = true, bool lock_spell_process = false);`
- `void	ProcessSpawnLocations();`
- `void	SendQuestUpdates(Client* client, Spawn* spawn = 0);`
- `bool	CallSpawnScript(Spawn* npc, int8 type, Spawn* spawn = 0, const char* message = 0, bool is_door_open = false, sint32 input_value = 0, sint32* return_value = 0);`
- `void	SendSpawnVisualState(Spawn* spawn, int16 type);`
- `void	SendSpellFailedPacket(Client* client, int16 error);`
- `void	SendInterruptPacket(Spawn* interrupted, LuaSpell* spell, bool fizzle=false);`
- `void	HandleEmote(Spawn* originator, string name, Spawn* opt_target = nullptr, bool no_target = false);`
- `void	PlaySoundFile(Client* client, const char* name, float origin_x, float origin_y, float origin_z);`
- `void	SendZoneSpawns(Client* client);`
- `void	StartZoneInitialSpawnThread(Client* client);`
- `void	SendSpawnChanges();`
- `void	SendSpawnChanges(Spawn* spawn);`
- `void	SendSpawnChanges(Spawn* spawn, Client* client, bool override_changes = false, bool override_vis_changes = false);`
- `void	SendSpawnChangesByDBID(int32 spawn_id, Client* client, bool override_changes = false, bool override_vis_changes = false);`
- `void	SendPlayerPositionChanges(Player* player);`
- `void	UpdateVitality(float amount);`
- `void	KillSpawn(bool spawnListLocked, Spawn* dead, Spawn* killer, bool send_packet = true, int8 type = 0, int8 damage_type = 0, int16 kill_blow_type = 0);`
- `void	SendDamagePacket(Spawn* attacker, Spawn* victim, int8 type1, int8 type2, int8 damage_type, int16 damage, const char* spell_name);`
- `void    SendHealPacket(Spawn* caster, Spawn* target, int16 type, int32 heal_amt, const char* spell_name);`
- `void	SendCastSpellPacket(LuaSpell* spell, Entity* caster, int32 spell_visual_override = 0, int16 casttime_override = 0xFFFF);`
- `void	SendCastSpellPacket(int32 spell_visual, Spawn* target, Spawn* caster = 0);`
- `void	SendCastEntityCommandPacket(EntityCommand* entity_command, int32 spawn_id, int32 target_id);`
- `void	TriggerCharSheetTimer();`
- `void	SendTimeUpdateToAllClients();`
- `void	AddWidgetTimer(Spawn* widget, float time);`
- `bool	HasWidgetTimer(Spawn* widget);`
- `void	Despawn(Spawn* spawn, int32 timer);`
- `void	RepopSpawns(Client* client, Spawn* spawn);`
- `bool	AddCloseSpawnsToSpawnGroup(Spawn* spawn, float radius);`
- `void	Depop(bool respawns = false, bool repop = false);`
- `bool	IsSpawnGroupAlive(int32 id);`
- `void	AddEnemyList(NPC* npc);`
- `void	ReloadClientQuests();`
- `void	SendAllSpawnsForLevelChange(Client* client);`
- `void	SendAllSpawnsForSeeInvisChange(Client* client);`
- `void	SendAllSpawnsForVisChange(Client* client, bool limitToEntities=true);`
- `void	AddLocationGrid(LocationGrid* grid);`
- `void	RemoveLocationGrids();`
- `void	DeleteTransporters();`
- `void	CheckTransporters(Client* client);`
- `void	WritePlayerStatistics();`
- `bool	SendRadiusSpawnInfo(Client* client, float radius);`
- `void	FindSpawn(Client* client, char* regSearchStr);`
- `void	AddChangedSpawn(Spawn* spawn);`
- `void	AddDamagedSpawn(Spawn* spawn);`
- `void	AddDrowningVictim(Player* player);`
- `void	RemoveDrowningVictim(Player* player);`
- `void	DeleteSpellProcess();`
- `void	LoadSpellProcess();`
- `void	LockAllSpells(Player* player);`
- `void	UnlockAllSpells(Player* player);`
- `void	RemoveSpellTimersFromSpawn(Spawn* spawn, bool remove_all, bool delete_recast = true, bool call_expire_function = true, bool lock_spell_process = false);`
- `void	Interrupted(Entity* caster, Spawn* interruptor, int16 error_code, bool cancel = false, bool from_movement = false);`
- `void	ProcessSpell(Spell* spell, Entity* caster, Spawn* target = 0, bool lock = true, bool harvest_spell = false, LuaSpell* customSpell = 0, int16 custom_cast_time = 0, bool in_heroic_opp = false);`
- `void	ProcessEntityCommand(EntityCommand* entity_command, Entity* caster, Spawn* target, bool lock = true);`
- `void	AddPlayerTracking(Player* player);`
- `void	RemovePlayerTracking(Player* player, int8 mode);`
- `void	SendUpdateTitles(Client *client, Title *suffix = 0, Title *prefix = 0);`
- `void	SendUpdateTitles(Spawn *spawn, Title *suffix = 0, Title *prefix = 0);`
- `void    RemoveTargetFromSpell(LuaSpell* spell, Spawn* target, bool remove_caster = false);`
- `void	SetRain(float val);`
- `void	SetWind(float val);`
- `void	ProcessWeather();`
- `void    ResurrectSpawn(Spawn* spawn, Client* client);`
- `void	HidePrivateSpawn(Spawn* spawn);`
- `bool SetPlayerTargetByName(Client* originator, char* targetName, float distance);`
- `std::vector<int32> GetGridsByLocation(Spawn* originator, glm::vec3 loc, float distance);`
- `void StartZoneSpawnsForLevelThread(Client* client);`
- `void SendDispellPacket(Entity* caster, Spawn* target, string dispell_name, string spell_name, int8 dispell_type);`
- `void SetupInstance(int32 createdInstanceID=0);`
- `void SendUpdateDefaultCommand(Spawn* spawn, const char* command, float distance, Spawn* toplayer = NULL);`
- `int32			GetClosestLocation(Spawn* spawn);`
- `void			PlayFlavor(Client* client, Spawn* spawn, const char* mp3, const char* text, const char* emote, int32 key1, int32 key2, int8 language);`
- `void			PlayVoice(Client* client, Spawn* spawn, const char* mp3, int32 key1, int32 key2);`
- `void			PlayFlavor(Spawn* spawn, const char* mp3, const char* text, const char* emote, int32 key1, int32 key2, int8 language);`
- `void			PlayFlavorID(Spawn* spawn, int8 type, int32 id, int16 index, int8 language);`
- `void			PlayVoice(Spawn* spawn, const char* mp3, int32 key1, int32 key2);`
- `void			SendThreatPacket(Spawn* caster, Spawn* target, int32 threat_amt, const char* spell_name);`
- `void			SendYellPacket(Spawn* yeller, float max_distance=50.0f);`
- `void			KillSpawnByDistance(Spawn* spawn, float max_distance, bool include_players = false, bool send_packet = false);`
- `void			SpawnSetByDistance(Spawn* spawn, float max_distance, string field, string value);`
- `void			AddSpawnScriptTimer(SpawnScriptTimer* timer);`
- `void			AddMovementNPC(Spawn* spawn);`
- `void			AddPlayerProximity(Spawn* spawn, float distance, string in_range_function, string leaving_range_function);`
- `void			AddLocationProximity(float x, float y, float z, float max_variation, string in_range_function, string leaving_range_function);`
- `void			PlayAnimation(Spawn* spawn, int32 visual_state, Spawn* spawn2 = 0, int8 type = 1);`
- `void			AddTransportSpawn(Spawn* spawn);`
- `void			RemovePlayerPassenger(int32 char_id);`
- `bool			IsDusk() { return isDusk; }										// never used, probably meant for lua though`
- `void	SetZoneName(char* new_zone) {`
- `void	SetZoneFile(char* zone) {`
- `void	SetZoneSkyFile(char* zone) {`
- `void	SetZoneDescription(char* desc) {`
- `void			SetUnderWorld(float under){ underworld = under; }`
- `float			GetUnderWorld(){ return underworld; }`
- `void			SetZoneID(int32 new_id){ zoneID = new_id; }`
- `void			SetCityZone(bool val) { cityzone = val; }`
- `void			SetAlwaysLoaded(bool val) { always_loaded = val; }`
- `void			SetDuplicatedZone(bool val) { duplicated_zone = val; }`
- `void			SetDuplicatedID(int32 id) { duplicated_id = id; }`
- `int32			NumPlayers()	{ return pNumPlayers; }`
- `void			SetMinimumStatus(sint16 minStatus) { minimumStatus = minStatus; }`
- `sint16			GetMinimumStatus() { return minimumStatus; }`
- `void			SetMinimumLevel(int16 minLevel) { minimumLevel = minLevel; }`
- `void			SetMaximumLevel(int16 maxLevel) { maximumLevel = maxLevel; }`
- `void			SetMinimumVersion(int16 minVersion) { minimumVersion = minVersion; }`
- `int16			GetMinimumLevel() { return minimumLevel; }`
- `int16			GetMaximumLevel() { return maximumLevel; }`
- `int16			GetMinimumVersion() { return minimumVersion; }`
- `void			SetZoneLockState(bool lock_state) { locked = lock_state; }	// JA: /zone lock|unlock`
- `int32			GetInstanceID() { return instanceID; }`
- `bool			IsInstanceZone() { return isInstance; }`
- `void			SetInstanceID(int32 newInstanceID) { instanceID = newInstanceID; }`
- `void SetShutdownTimer(int val){`
- `void AddSpawnLocation(int32 id, SpawnLocation* spawnlocation) {`
- `void			SetInstanceType(int16 type) { InstanceType = (Instance_Type)type; if(type>0)isInstance=true; else isInstance=false; }`
- `Instance_Type	GetInstanceType() { return InstanceType; }`
- `float			GetSafeX(){ return safe_x; }`
- `float			GetSafeY(){ return safe_y; }`
- `float			GetSafeZ(){ return safe_z; }`
- `float			GetSafeHeading() { return safe_heading; }`
- `void			SetSafeX(float val){ safe_x = val; }`
- `void			SetSafeY(float val){ safe_y = val; }`
- `void			SetSafeZ(float val){ safe_z = val; }`
- `void			SetSafeHeading(float val) { safe_heading = val; }`
- `float			GetXPModifier() { return xp_mod; }`
- `void			SetXPModifier(float val) { xp_mod = val; }`
- `void			SetZoneMOTD(string z_motd) { zone_motd = z_motd; }`
- `string			GetZoneMOTD() { return zone_motd; }`
- `bool			isZoneShuttingDown ( ) { return zoneShuttingDown; }`
- `void			Shutdown(){ zoneShuttingDown = true; }`
- `int32			GetClientCount(){ return clients.size(); }`
- `int32			GetDefaultLockoutTime() { return def_lockout_time; }`
- `int32			GetDefaultReenterTime() { return def_reenter_time; }`
- `int32			GetDefaultResetTime() { return def_reset_time; }`
- `int8			GetForceGroupZoneOption() { return group_zone_option; }`
- `void			SetDefaultLockoutTime(int32 val) { def_lockout_time = val; }`
- `void			SetDefaultReenterTime(int32 val) { def_reenter_time = val; }`
- `void			SetDefaultResetTime(int32 val) { def_reset_time = val; }`
- `void			SetForceGroupZoneOption(int8 val) { group_zone_option = val; }`
- `bool			FinishedDepop(){ return finished_depop; }`
- `bool	isWeatherEnabled() { return weather_enabled; }`
- `void	SetWeatherEnabled(bool val) { weather_enabled = val; }`
- `bool	isWeatherAllowed() { return weather_allowed; }`
- `void	SetWeatherAllowed(bool val) { weather_allowed = val; }`
- `int8	GetWeatherType() { return weather_type; }`
- `void	SetWeatherType(int8 val) { weather_type = val; }`
- `int32	GetWeatherFrequency() { return weather_frequency; }`
- `void	SetWeatherFrequency(int32 val) { weather_frequency = val; }`
- `float	GetWeatherMinSeverity() { return weather_min_severity; }`
- `void	SetWeatherMinSeverity(float val) { weather_min_severity = val; }`
- `float	GetWeatherMaxSeverity() { return weather_max_severity; }`
- `void	SetWeatherMaxSeverity(float val) { weather_max_severity = val; }`
- `float	GetWeatherChangeAmount() { return weather_change_amount; }`
- `void	SetWeatherChangeAmount(float val) { weather_change_amount = val; }`
- `float	GetWeatherDynamicOffset() { return weather_dynamic_offset; }`
- `void	SetWeatherDynamicOffset(float val) { weather_dynamic_offset = val; }`
- `int8	GetWeatherChance() { return weather_change_chance; }`
- `void	SetWeatherChance(int8 val) { weather_change_chance = val; }`
- `float	GetCurrentWeather() { return weather_current_severity; }`
- `void	SetCurrentWeather(float val) { weather_current_severity = val; }`
- `int8	GetWeatherPattern() { return weather_pattern; }`
- `void	SetWeatherPattern(int8 val) { weather_pattern = val; }`
- `void	SetWeatherLastChangedTime(int32 val) { weather_last_changed_time = val; }`
- `int32	GetExpansionFlag() { return expansion_flag; }`
- `void	SetExpansionFlag(int32 val) { expansion_flag = val; }`
- `int32	GetHolidayFlag() { return holiday_flag; }`
- `void	SetHolidayFlag(int32 val) { holiday_flag = val; }`
- `int32	GetCanBind() { return can_bind; }`
- `void	SetCanBind(int32 val) { can_bind = val; }`
- `bool	GetCanGate() { return can_gate; }`
- `void	SetCanGate(int32 val) { can_gate = val; }`
- `bool	GetCanEvac() { return can_evac; }`
- `void	SetCanEvac(int32 val) { can_evac = val; }`
- `void	RemoveClientImmediately(Client* client);`
- `void	ClearHate(Entity* entity);`
- `void AddFlightPath(int32 id, FlightPathInfo* info);`
- `void AddFlightPathLocation(int32 id, FlightPathLocation* location);`
- `void DeleteFlightPaths();`
- `void SendFlightPathsPackets(Client* client);`
- `int32 GetFlightPathIndex(int32 id);`
- `float GetFlightPathSpeed(int32 id);`
- `void	SendSpawn(Spawn* spawn, Client* client);														// moved from private to public for bots`
- `void ProcessSpawnConditional(int8 condition);`
- `void SetSpawnStructs(Client* client);`
- `void AddSpawnProximities(Spawn* spawn);`
- `void RemoveSpawnProximities(Spawn* spawn);`
- `void SetSpawnScript(SpawnEntry* entry, Spawn* spawn);`
- `bool IsLoading() {`
- `vector<HouseItem> GetHouseItems(Client* client);`
- `void SendHouseItems(Client* client);`
- `int32 GetWatchdogTime() { return watchdogTimestamp; }`
- `void SetWatchdogTime(int32 time) { watchdogTimestamp = time; }`
- `void CancelThreads();`
- `void AddPendingSpawnRemove(int32 id);`
- `void ProcessSpawnRemovals();`
- `bool	SendRemoveSpawn(Client* client, Spawn* spawn, PacketStruct* packet = 0, bool delete_spawn = false);`
- `void	AddSpawnToGroup(Spawn* spawn, int32 group_id);`
- `void	QueueStateCommandToClients(int32 spawn_id, int32 state);`
- `void	QueueDefaultCommand(int32 spawn_id, std::string command, float distance);`
- `void	ProcessQueuedStateCommands();`
- `void	RemoveClientsFromZone(ZoneServer* zone);`
- `void	WorldTimeUpdateTrigger() { sync_game_time_timer.Trigger(); }`
- `void	StopSpawnScriptTimer(Spawn* spawn, std::string functionName);`
- `void	SendSubSpawnUpdates(SUBSPAWN_TYPES subtype);`
- `bool	HouseItemSpawnExists(int32 item_id);`
- `void	ProcessPendingSpawns();`
- `void 	AddSpawnToGrid(Spawn* spawn, int32 grid_id);`
- `void	RemoveSpawnFromGrid(Spawn* spawn, int32 grid_id);`
- `int32	GetSpawnCountInGrid(int32 grid_id);`
- `void	SendClientSpawnListInGrid(Client* client, int32 grid_id);`
- `void 	AddIgnoredWidget(int32 id);`
- `void	AddRespawn(Spawn* spawn);`
- `void	AddRespawn(int32 locationID, int32 respawnTime);`
- `void	SendRespawnTimerList(Client* client);`
- `void	AddTransporter(LocationTransportDestination* loc);`
- `void	CheckDeadSpawnRemoval();`
- `void	DeleteData(bool boot_clients = true);`
- `void	DeleteFactionLists();`
- `void	ProcessDepop(bool respawns_allowed = false, bool repop = false);`
- `void	ClientProcess(bool ignore_shutdown_timer = false);													// never used outside zone server`
- `void	RemoveClient(Client* client);																		// never used outside zone server`
- `void	DeterminePosition(SpawnLocation* spawnlocation, Spawn* spawn);										// never used outside zone server`
- `void	AddDeadSpawn(Spawn* spawn, int32 timer = 0xFFFFFFFF);												// never used outside zone server`
- `int32	CalculateSpawnGroup(SpawnLocation* spawnlocation, bool respawn = false);							// never used outside zone server`
- `float	GetSpawnGroupChance(int32 group_id);																// never used outside zone server`
- `void	ProcessSpawnLocation(int32 location_id, map<int32,int32>* instNPCs, map<int32,int32>* instGroundSpawns, map<int32,int32>* instObjSpawns, map<int32,int32>* instWidgetSpawns, map<int32,int32>* instSignSpawns, bool respawn = false);										// never used outside zone server`
- `void	SendRaidSheetChanges();																				// never used outside zone server`
- `void	SendCharSheetChanges();																				// never used outside zone server`
- `void	SendCharSheetChanges(Client* client);																// never used outside zone server`
- `void	SaveClients();																						// never used outside zone server`
- `void	CheckSendSpawnToClient();																			// never used outside zone server`
- `void	CheckSendSpawnToClient(Client* client, bool initial_login = false);									// never used outside zone server`
- `void	CheckRemoveSpawnFromClient(Spawn* spawn);															// never used outside zone server`
- `void	SaveClient(Client* client);																			// never used outside zone server`
- `void	ProcessFaction(Spawn* spawn, Client* client);														// never used outside zone server`
- `void	RegenUpdate();																						// never used outside zone server`
- `void	SendCalculatedXP(Player* player, Spawn* victim);													// never used outside zone server, might not be used at all any more`
- `void	SendTimeUpdate(Client* client);																		// never used outside zone server`
- `void	CheckWidgetTimers();																				// never used outside zone server`
- `void	CheckRespawns();																					// never used outside zone server`
- `void	CheckSpawnExpireTimers();																			// never used outside zone server`
- `void	AddSpawnExpireTimer(Spawn* spawn, int32 expire_time, int32 expire_offset = 0);						// never used outside zone server`
- `void	CheckSpawnRange(Client* client, Spawn* spawn, bool initial_login = false);							// never used outside zone server`
- `void	CheckSpawnRange(Spawn* spawn);																		// never used outside zone server`
- `void	DeleteSpawnScriptTimers(Spawn* spawn, bool all = false);											// never used outside zone server`
- `void	DeleteSpawnScriptTimers();																			// never used outside zone server`
- `void	CheckSpawnScriptTimers();																			// never used outside zone server`
- `bool	PrepareSpawnID(Player* player, Spawn* spawn);														// never used outside zone server`
- `void	RemoveMovementNPC(Spawn* spawn);																	// never used outside zone server`
- `bool	CheckNPCAttacks(NPC* npc, Spawn* victim, Client* client = 0);										// never used outside zone server`
- `bool	AggroVictim(NPC* npc, Spawn* victim, Client* client = 0);											// never used outside zone server`
- `bool	CheckEnemyList(NPC* npc);																			// never used outside zone server`
- `void	RemovePlayerProximity(Spawn* spawn, bool all = false);												// never used outside zone server`
- `void	RemovePlayerProximity(Client* client);																// never used outside zone server`
- `void	CheckPlayerProximity(Spawn* spawn, Client* client);													// never used outside zone server`
- `void	RemoveLocationProximities();																		// never used outside zone server`
- `void	CheckLocationProximity();																			// never used outside zone server`
- `void	CheckLocationGrids();																				// never used outside zone server`
- `void	RemoveSpawnSupportFunctions(Spawn* spawn, bool lock_spell_process = false, bool shutdown = false);	// never used outside zone server`
- `void	ReloadTransporters();																				// never used outside zone server`
- `void	DeleteSpawns(bool delete_all);																		// never used outside zone server`
- `void	AddPendingDelete(Spawn* spawn);																		// never used outside zone server`
- `void	ClearDeadSpawns();																					// never used outside zone server`
- `void	RemoveChangedSpawn(Spawn* spawn);																	// never used outside zone server`
- `void	ProcessDrowning();																					// never used outside zone server`
- `void	RemoveDamagedSpawn(Spawn* spawn);																	// never used outside zone server`
- `void	ProcessTracking();																					// never used outside zone server`
- `void	ProcessTracking(Client* client);																	// never used outside zone server`
- `void	SendEpicMobDeathToGuild(Player* killer, Spawn* victim);												// never used outside zone server`
- `void	ProcessAggroChecks(Spawn* spawn);																	// never used outside zone server`
- `bool CombatProcess(Spawn* spawn);																			// never used outside zone server`
- `void LootProcess(Spawn* spawn);`
- `void CloseSpawnLootWindow(Spawn* spawn);`
- `void	InitWeather();																						// never used outside zone server`
- `void DismissAllPets();																						// never used outside zone server`
- `void				SetEntityCommandList(int32 id, EntityCommand* command);`
- `void				ClearEntityCommands();`
- `void				AddNPC(int32 id, NPC* npc);`
- `void AddNPCSkill(int32 list_id, int32 skill_id, int16 value);`
- `void AddNPCEquipment(int32 list_id, int32 item_id);`
- `void SetNPCEquipment(NPC* npc);`
- `void				AddObject(int32 id, Object* object){ object_list[id] = object; }`
- `void				AddSign(int32 id, Sign* sign){ sign_list[id] = sign; }`
- `void				AddWidget(int32 id, Widget* widget);`
- `void AddGroundSpawnEntry(int32 groundspawn_id, int16 min_skill_level, int16 min_adventure_level, int8 bonus_table, float harvest1, float harvest3, float harvest5, float harvest_imbue, float harvest_rare, float harvest10, int32 harvest_coin);`
- `void AddGroundSpawnItem(int32 groundspawn_id, int32 item_id, int8 is_rare, int32 grid_id);`
- `void LoadGroundSpawnEntries();`
- `void LoadGroundSpawnItems();`
- `void DeleteGroundSpawnItems();`
- `void				AddGroundSpawn(int32 id, GroundSpawn* spawn);`
- `void				AddLootTable(int32 id, LootTable* table);`
- `void				AddLootDrop(int32 id, LootDrop* drop);`
- `void				AddSpawnLootList(int32 spawn_id, int32 id);`
- `void				ClearSpawnLootList(int32 spawn_id);`
- `void				AddLevelLootList(GlobalLoot* loot);`
- `void				AddRacialLootList(int16 racial_id, GlobalLoot* loot);`
- `void				AddZoneLootList(int32 zone, GlobalLoot* loot);`
- `void				ClearLootTables();`
- `vector<int32>		GetSpawnLootList(int32 spawn_id, int32 zone_id, int8 spawn_level, int16 racial_id, Spawn* spawn = 0);`
- `void AddLocationTransporter(int32 zone_id, string message, float trigger_x, float trigger_y, float trigger_z, float trigger_radius, int32 destination_zone_id, float destination_x, float destination_y, float destination_z, float destination_heading, int32 cost, int32 unique_id);`
- `void GetTransporters(vector<TransportDestination*>* returnList, Client* client, int32 transport_id);`
- `void DeleteGlobalTransporters();`
- `void AddTransportMap(int32 id, string name);`
- `bool TransportHasMap(int32 id);`
- `string GetTransportMap(int32 id);`
- `void DeleteTransporterMaps();`
- `void DeleteGlobalSpawns();`
- `void ReloadSpawns();`
- `void SendStateCommand(Spawn* spawn, int32 state);`
- `int32 getGroupraidMinLevel() const {`
- `int32 getGroupraidMaxLevel() const {`
- `int32 getGroupraidAvgLevel() const {`
- `int32 getGroupraidFirstLevel() const {`
- `void setGroupRaidLevels(int32 min_level, int32 max_level, int32 avg_level, int32 first_level) {`

## Notable Comments

- /*
- */
- // Can't verify these 3 values
- // 32768 - SF
- // 131072 - AoD
- /* JA: TODO Turn into R_World Rules */
- // need to attempt to clean this up and add xml comments, remove unused code, find a logical way to sort the functions maybe by get/set/process/add etc...
- /// <summary>Sends the game time packet to all connected clients</summary>
- /// <summary>Set the rain levl in the zone</summary>
- /// <param name='val'>Level of rain in the zone 0.0 - 1.1 (rain starts at 0.76)</param>
