mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-16 02:49:55 +00:00
b57807407a
Spell, potion, enchantment, creature, NPC, armor, book, clothing, miscellaneous and weapon record data can now be sent in a RecordDynamic packet. Additionally, the packets include data related to associated magical effects (for spells, potions and enchantments), data related to default inventory contents (for creatures and NPCs) and data related to body parts affected (for armor and clothing). The server now has associated script functions for setting most of the details of the above, with the main exception being individual creature and NPC stats. Records can either be created entirely from scratch or can use an existing record (set via the baseId variable) as a starting point for their values. In the latter case, only the values that are specifically set override the starting values. Creature and NPC records also have an inventoryBaseId that can be used on top of the baseId to base their inventories on another existing record. The client's RecordHelper class has been heavily expanded to allow for the above mentioned functionality. When players create spells, potions and enchantments as part of regular gameplay, they send RecordDynamic packets that provide the server with the complete details of the records that should be created. When they create enchantments, they also provide the server with armor, book, clothing and weapon records corresponding to the items they've enchanted. This functionality added by this packet was originally supposed to be exclusive to the rewrite, but I've gone ahead and tried to provide it for the pre-rewrite in a way that can mostly be reused for the rewrite.
758 lines
28 KiB
C++
758 lines
28 KiB
C++
#ifndef OPENMW_ACTORAPI_HPP
|
|
#define OPENMW_ACTORAPI_HPP
|
|
|
|
#define ACTORAPI \
|
|
{"ReadReceivedActorList", ActorFunctions::ReadReceivedActorList},\
|
|
{"ReadCellActorList", ActorFunctions::ReadCellActorList},\
|
|
\
|
|
{"ClearActorList", ActorFunctions::ClearActorList},\
|
|
{"SetActorListPid", ActorFunctions::SetActorListPid},\
|
|
\
|
|
{"CopyReceivedActorListToStore", ActorFunctions::CopyReceivedActorListToStore},\
|
|
\
|
|
{"GetActorListSize", ActorFunctions::GetActorListSize},\
|
|
{"GetActorListAction", ActorFunctions::GetActorListAction},\
|
|
\
|
|
{"GetActorCell", ActorFunctions::GetActorCell},\
|
|
{"GetActorRefId", ActorFunctions::GetActorRefId},\
|
|
{"GetActorRefNum", ActorFunctions::GetActorRefNum},\
|
|
{"GetActorMpNum", ActorFunctions::GetActorMpNum},\
|
|
\
|
|
{"GetActorPosX", ActorFunctions::GetActorPosX},\
|
|
{"GetActorPosY", ActorFunctions::GetActorPosY},\
|
|
{"GetActorPosZ", ActorFunctions::GetActorPosZ},\
|
|
{"GetActorRotX", ActorFunctions::GetActorRotX},\
|
|
{"GetActorRotY", ActorFunctions::GetActorRotY},\
|
|
{"GetActorRotZ", ActorFunctions::GetActorRotZ},\
|
|
\
|
|
{"GetActorHealthBase", ActorFunctions::GetActorHealthBase},\
|
|
{"GetActorHealthCurrent", ActorFunctions::GetActorHealthCurrent},\
|
|
{"GetActorHealthModified", ActorFunctions::GetActorHealthModified},\
|
|
{"GetActorMagickaBase", ActorFunctions::GetActorMagickaBase},\
|
|
{"GetActorMagickaCurrent", ActorFunctions::GetActorMagickaCurrent},\
|
|
{"GetActorMagickaModified", ActorFunctions::GetActorMagickaModified},\
|
|
{"GetActorFatigueBase", ActorFunctions::GetActorFatigueBase},\
|
|
{"GetActorFatigueCurrent", ActorFunctions::GetActorFatigueCurrent},\
|
|
{"GetActorFatigueModified", ActorFunctions::GetActorFatigueModified},\
|
|
\
|
|
{"GetActorEquipmentItemRefId", ActorFunctions::GetActorEquipmentItemRefId},\
|
|
{"GetActorEquipmentItemCount", ActorFunctions::GetActorEquipmentItemCount},\
|
|
{"GetActorEquipmentItemCharge", ActorFunctions::GetActorEquipmentItemCharge},\
|
|
{"GetActorEquipmentItemEnchantmentCharge", ActorFunctions::GetActorEquipmentItemEnchantmentCharge},\
|
|
\
|
|
{"DoesActorHavePlayerKiller", ActorFunctions::DoesActorHavePlayerKiller},\
|
|
{"GetActorKillerPid", ActorFunctions::GetActorKillerPid},\
|
|
{"GetActorKillerRefId", ActorFunctions::GetActorKillerRefId},\
|
|
{"GetActorKillerRefNum", ActorFunctions::GetActorKillerRefNum},\
|
|
{"GetActorKillerMpNum", ActorFunctions::GetActorKillerMpNum},\
|
|
{"GetActorKillerName", ActorFunctions::GetActorKillerName},\
|
|
\
|
|
{"DoesActorHavePosition", ActorFunctions::DoesActorHavePosition},\
|
|
{"DoesActorHaveStatsDynamic", ActorFunctions::DoesActorHaveStatsDynamic},\
|
|
\
|
|
{"SetActorListCell", ActorFunctions::SetActorListCell},\
|
|
{"SetActorListAction", ActorFunctions::SetActorListAction},\
|
|
\
|
|
{"SetActorCell", ActorFunctions::SetActorCell},\
|
|
{"SetActorRefId", ActorFunctions::SetActorRefId},\
|
|
{"SetActorRefNum", ActorFunctions::SetActorRefNum},\
|
|
{"SetActorMpNum", ActorFunctions::SetActorMpNum},\
|
|
\
|
|
{"SetActorPosition", ActorFunctions::SetActorPosition},\
|
|
{"SetActorRotation", ActorFunctions::SetActorRotation},\
|
|
\
|
|
{"SetActorHealthBase", ActorFunctions::SetActorHealthBase},\
|
|
{"SetActorHealthCurrent", ActorFunctions::SetActorHealthCurrent},\
|
|
{"SetActorHealthModified", ActorFunctions::SetActorHealthModified},\
|
|
{"SetActorMagickaBase", ActorFunctions::SetActorMagickaBase},\
|
|
{"SetActorMagickaCurrent", ActorFunctions::SetActorMagickaCurrent},\
|
|
{"SetActorMagickaModified", ActorFunctions::SetActorMagickaModified},\
|
|
{"SetActorFatigueBase", ActorFunctions::SetActorFatigueBase},\
|
|
{"SetActorFatigueCurrent", ActorFunctions::SetActorFatigueCurrent},\
|
|
{"SetActorFatigueModified", ActorFunctions::SetActorFatigueModified},\
|
|
\
|
|
{"SetActorAIAction", ActorFunctions::SetActorAIAction},\
|
|
{"SetActorAITargetToPlayer", ActorFunctions::SetActorAITargetToPlayer},\
|
|
{"SetActorAITargetToObject", ActorFunctions::SetActorAITargetToObject},\
|
|
{"SetActorAICoordinates", ActorFunctions::SetActorAICoordinates},\
|
|
{"SetActorAIDistance", ActorFunctions::SetActorAIDistance},\
|
|
{"SetActorAIDuration", ActorFunctions::SetActorAIDuration},\
|
|
{"SetActorAIRepetition", ActorFunctions::SetActorAIRepetition},\
|
|
\
|
|
{"EquipActorItem", ActorFunctions::EquipActorItem},\
|
|
{"UnequipActorItem", ActorFunctions::UnequipActorItem},\
|
|
\
|
|
{"AddActor", ActorFunctions::AddActor},\
|
|
\
|
|
{"SendActorList", ActorFunctions::SendActorList},\
|
|
{"SendActorAuthority", ActorFunctions::SendActorAuthority},\
|
|
{"SendActorPosition", ActorFunctions::SendActorPosition},\
|
|
{"SendActorStatsDynamic", ActorFunctions::SendActorStatsDynamic},\
|
|
{"SendActorEquipment", ActorFunctions::SendActorEquipment},\
|
|
{"SendActorAI", ActorFunctions::SendActorAI},\
|
|
{"SendActorCellChange", ActorFunctions::SendActorCellChange},\
|
|
\
|
|
{"ReadLastActorList", ActorFunctions::ReadLastActorList},\
|
|
{"InitializeActorList", ActorFunctions::InitializeActorList},\
|
|
{"CopyLastActorListToStore", ActorFunctions::CopyLastActorListToStore},\
|
|
{"GetActorRefNumIndex", ActorFunctions::GetActorRefNumIndex},\
|
|
{"GetActorKillerRefNumIndex", ActorFunctions::GetActorKillerRefNumIndex},\
|
|
{"SetActorRefNumIndex", ActorFunctions::SetActorRefNumIndex}
|
|
|
|
class ActorFunctions
|
|
{
|
|
public:
|
|
|
|
/**
|
|
* \brief Use the last actor list received by the server as the one being read.
|
|
*
|
|
* \return void
|
|
*/
|
|
static void ReadReceivedActorList() noexcept;
|
|
|
|
/**
|
|
* \brief Use the temporary actor list stored for a cell as the one being read.
|
|
*
|
|
* This type of actor list is used to store actor positions and dynamic stats and is deleted
|
|
* when the cell is unloaded.
|
|
*
|
|
* \param cellDescription The description of the cell whose actor list should be read.
|
|
* \return void
|
|
*/
|
|
static void ReadCellActorList(const char* cellDescription) noexcept;
|
|
|
|
/**
|
|
* \brief Clear the data from the actor list stored on the server.
|
|
*
|
|
* \return void
|
|
*/
|
|
static void ClearActorList() noexcept;
|
|
|
|
/**
|
|
* \brief Set the pid attached to the ActorList.
|
|
*
|
|
* \param pid The player ID to whom the actor list should be attached.
|
|
* \return void
|
|
*/
|
|
static void SetActorListPid(unsigned short pid) noexcept;
|
|
|
|
/**
|
|
* \brief Take the contents of the read-only actor list last received by the
|
|
* server from a player and move its contents to the stored object list
|
|
* that can be sent by the server.
|
|
*
|
|
* \return void
|
|
*/
|
|
static void CopyReceivedActorListToStore() noexcept;
|
|
|
|
/**
|
|
* \brief Get the number of indexes in the read actor list.
|
|
*
|
|
* \return The number of indexes.
|
|
*/
|
|
static unsigned int GetActorListSize() noexcept;
|
|
|
|
/**
|
|
* \brief Get the action type used in the read actor list.
|
|
*
|
|
* \return The action type (0 for SET, 1 for ADD, 2 for REMOVE, 3 for REQUEST).
|
|
*/
|
|
static unsigned char GetActorListAction() noexcept;
|
|
|
|
/**
|
|
* \brief Get the cell description of the actor at a certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return The cell description.
|
|
*/
|
|
static const char *GetActorCell(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Get the refId of the actor at a certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return The refId.
|
|
*/
|
|
static const char *GetActorRefId(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Get the refNum of the actor at a certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return The refNum.
|
|
*/
|
|
static unsigned int GetActorRefNum(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Get the mpNum of the actor at a certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return The mpNum.
|
|
*/
|
|
static unsigned int GetActorMpNum(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Get the X position of the actor at a certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return The X position.
|
|
*/
|
|
static double GetActorPosX(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Get the Y position of the actor at a certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return The Y position.
|
|
*/
|
|
static double GetActorPosY(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Get the Z position of the actor at a certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return The Z position.
|
|
*/
|
|
static double GetActorPosZ(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Get the X rotation of the actor at a certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return The X rotation.
|
|
*/
|
|
static double GetActorRotX(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Get the Y rotation of the actor at a certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return The Y rotation.
|
|
*/
|
|
static double GetActorRotY(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Get the Z rotation of the actor at a certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return The Z rotation.
|
|
*/
|
|
static double GetActorRotZ(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Get the base health of the actor at a certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return The base health.
|
|
*/
|
|
static double GetActorHealthBase(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Get the current health of the actor at a certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return The current health.
|
|
*/
|
|
static double GetActorHealthCurrent(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Get the modified health of the actor at a certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return The modified health.
|
|
*/
|
|
static double GetActorHealthModified(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Get the base magicka of the actor at a certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return The base magicka.
|
|
*/
|
|
static double GetActorMagickaBase(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Get the current magicka of the actor at a certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return The current magicka.
|
|
*/
|
|
static double GetActorMagickaCurrent(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Get the modified magicka of the actor at a certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return The modified magicka.
|
|
*/
|
|
static double GetActorMagickaModified(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Get the base fatigue of the actor at a certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return The base fatigue.
|
|
*/
|
|
static double GetActorFatigueBase(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Get the current fatigue of the actor at a certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return The current fatigue.
|
|
*/
|
|
static double GetActorFatigueCurrent(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Get the modified fatigue of the actor at a certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return The modified fatigue.
|
|
*/
|
|
static double GetActorFatigueModified(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Get the refId of the item in a certain slot of the equipment of the actor at a
|
|
* certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \param slot The slot of the equipment item.
|
|
* \return The refId.
|
|
*/
|
|
static const char *GetActorEquipmentItemRefId(unsigned int index, unsigned short slot) noexcept;
|
|
|
|
/**
|
|
* \brief Get the count of the item in a certain slot of the equipment of the actor at a
|
|
* certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \param slot The slot of the equipment item.
|
|
* \return The item count.
|
|
*/
|
|
static int GetActorEquipmentItemCount(unsigned int index, unsigned short slot) noexcept;
|
|
|
|
/**
|
|
* \brief Get the charge of the item in a certain slot of the equipment of the actor at a
|
|
* certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \param slot The slot of the equipment item.
|
|
* \return The charge.
|
|
*/
|
|
static int GetActorEquipmentItemCharge(unsigned int index, unsigned short slot) noexcept;
|
|
|
|
/**
|
|
* \brief Get the enchantment charge of the item in a certain slot of the equipment of the actor at a
|
|
* certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \param slot The slot of the equipment item.
|
|
* \return The enchantment charge.
|
|
*/
|
|
static double GetActorEquipmentItemEnchantmentCharge(unsigned int index, unsigned short slot) noexcept;
|
|
|
|
/**
|
|
* \brief Check whether the killer of the actor at a certain index in the read actor list is a player.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return Whether the actor was killed by a player.
|
|
*/
|
|
static bool DoesActorHavePlayerKiller(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Get the player ID of the killer of the actor at a certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return The player ID of the killer.
|
|
*/
|
|
static int GetActorKillerPid(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Get the refId of the actor killer of the actor at a certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return The refId of the killer.
|
|
*/
|
|
static const char *GetActorKillerRefId(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Get the refNum of the actor killer of the actor at a certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return The refNum of the killer.
|
|
*/
|
|
static unsigned int GetActorKillerRefNum(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Get the mpNum of the actor killer of the actor at a certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return The mpNum of the killer.
|
|
*/
|
|
static unsigned int GetActorKillerMpNum(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Get the name of the actor killer of the actor at a certain index in the read actor list.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return The name of the killer.
|
|
*/
|
|
static const char *GetActorKillerName(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Check whether there is any positional data for the actor at a certain index in
|
|
* the read actor list.
|
|
*
|
|
* This is only useful when reading the actor list data recorded for a particular cell.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return Whether the read actor list contains positional data.
|
|
*/
|
|
static bool DoesActorHavePosition(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Check whether there is any dynamic stats data for the actor at a certain index in
|
|
* the read actor list.
|
|
*
|
|
* This is only useful when reading the actor list data recorded for a particular cell.
|
|
*
|
|
* \param index The index of the actor.
|
|
* \return Whether the read actor list contains dynamic stats data.
|
|
*/
|
|
static bool DoesActorHaveStatsDynamic(unsigned int index) noexcept;
|
|
|
|
/**
|
|
* \brief Set the cell of the temporary actor list stored on the server.
|
|
*
|
|
* The cell is determined to be an exterior cell if it fits the pattern of a number followed
|
|
* by a comma followed by another number.
|
|
*
|
|
* \param cellDescription The description of the cell.
|
|
* \return void
|
|
*/
|
|
static void SetActorListCell(const char* cellDescription) noexcept;
|
|
|
|
/**
|
|
* \brief Set the action type of the temporary actor list stored on the server.
|
|
*
|
|
* \param action The action type (0 for SET, 1 for ADD, 2 for REMOVE, 3 for REQUEST).
|
|
* \return void
|
|
*/
|
|
static void SetActorListAction(unsigned char action) noexcept;
|
|
|
|
/**
|
|
* \brief Set the cell of the temporary actor stored on the server.
|
|
*
|
|
* Used for ActorCellChange packets, where a specific actor's cell now differs from that of the
|
|
* actor list.
|
|
*
|
|
* The cell is determined to be an exterior cell if it fits the pattern of a number followed
|
|
* by a comma followed by another number.
|
|
*
|
|
* \param cellDescription The description of the cell.
|
|
* \return void
|
|
*/
|
|
static void SetActorCell(const char* cellDescription) noexcept;
|
|
|
|
/**
|
|
* \brief Set the refId of the temporary actor stored on the server.
|
|
*
|
|
* \param refId The refId.
|
|
* \return void
|
|
*/
|
|
static void SetActorRefId(const char* refId) noexcept;
|
|
|
|
/**
|
|
* \brief Set the refNum of the temporary actor stored on the server.
|
|
*
|
|
* \param refNum The refNum.
|
|
* \return void
|
|
*/
|
|
static void SetActorRefNum(int refNum) noexcept;
|
|
|
|
/**
|
|
* \brief Set the mpNum of the temporary actor stored on the server.
|
|
*
|
|
* \param mpNum The mpNum.
|
|
* \return void
|
|
*/
|
|
static void SetActorMpNum(int mpNum) noexcept;
|
|
|
|
/**
|
|
* \brief Set the position of the temporary actor stored on the server.
|
|
*
|
|
* \param x The X position.
|
|
* \param y The Y position.
|
|
* \param z The Z position.
|
|
* \return void
|
|
*/
|
|
static void SetActorPosition(double x, double y, double z) noexcept;
|
|
|
|
/**
|
|
* \brief Set the rotation of the temporary actor stored on the server.
|
|
*
|
|
* \param x The X rotation.
|
|
* \param y The Y rotation.
|
|
* \param z The Z rotation.
|
|
* \return void
|
|
*/
|
|
static void SetActorRotation(double x, double y, double z) noexcept;
|
|
|
|
/**
|
|
* \brief Set the base health of the temporary actor stored on the server.
|
|
*
|
|
* \param value The new value.
|
|
* \return void
|
|
*/
|
|
static void SetActorHealthBase(double value) noexcept;
|
|
|
|
/**
|
|
* \brief Set the current health of the temporary actor stored on the server.
|
|
*
|
|
* \param value The new value.
|
|
* \return void
|
|
*/
|
|
static void SetActorHealthCurrent(double value) noexcept;
|
|
|
|
/**
|
|
* \brief Set the modified health of the temporary actor stored on the server.
|
|
*
|
|
* \param value The new value.
|
|
* \return void
|
|
*/
|
|
static void SetActorHealthModified(double value) noexcept;
|
|
|
|
/**
|
|
* \brief Set the base magicka of the temporary actor stored on the server.
|
|
*
|
|
* \param value The new value.
|
|
* \return void
|
|
*/
|
|
static void SetActorMagickaBase(double value) noexcept;
|
|
|
|
/**
|
|
* \brief Set the current magicka of the temporary actor stored on the server.
|
|
*
|
|
* \param value The new value.
|
|
* \return void
|
|
*/
|
|
static void SetActorMagickaCurrent(double value) noexcept;
|
|
|
|
/**
|
|
* \brief Set the modified magicka of the temporary actor stored on the server.
|
|
*
|
|
* \param value The new value.
|
|
* \return void
|
|
*/
|
|
static void SetActorMagickaModified(double value) noexcept;
|
|
|
|
/**
|
|
* \brief Set the base fatigue of the temporary actor stored on the server.
|
|
*
|
|
* \param value The new value.
|
|
* \return void
|
|
*/
|
|
static void SetActorFatigueBase(double value) noexcept;
|
|
|
|
/**
|
|
* \brief Set the current fatigue of the temporary actor stored on the server.
|
|
*
|
|
* \param value The new value.
|
|
* \return void
|
|
*/
|
|
static void SetActorFatigueCurrent(double value) noexcept;
|
|
|
|
/**
|
|
* \brief Set the modified fatigue of the temporary actor stored on the server.
|
|
*
|
|
* \param value The new value.
|
|
* \return void
|
|
*/
|
|
static void SetActorFatigueModified(double value) noexcept;
|
|
|
|
/**
|
|
* \brief Set the AI action of the temporary actor stored on the server.
|
|
*
|
|
* \param action The new action.
|
|
* \return void
|
|
*/
|
|
static void SetActorAIAction(unsigned int action) noexcept;
|
|
|
|
/**
|
|
* \brief Set a player as the AI target of the temporary actor stored on the server.
|
|
*
|
|
* \param pid The player ID.
|
|
* \return void
|
|
*/
|
|
static void SetActorAITargetToPlayer(unsigned short pid) noexcept;
|
|
|
|
/**
|
|
* \brief Set another object as the AI target of the temporary actor stored on the server.
|
|
*
|
|
* \param refNum The refNum of the target object.
|
|
* \param mpNum The mpNum of the target object.
|
|
* \return void
|
|
*/
|
|
static void SetActorAITargetToObject(int refNum, int mpNum) noexcept;
|
|
|
|
/**
|
|
* \brief Set the coordinates for the AI package associated with the current AI action.
|
|
*
|
|
* \param x The X coordinate.
|
|
* \param y The Y coordinate.
|
|
* \param z The Z coordinate.
|
|
* \return void
|
|
*/
|
|
static void SetActorAICoordinates(double x, double y, double z) noexcept;
|
|
|
|
/**
|
|
* \brief Set the distance of the AI package associated with the current AI action.
|
|
*
|
|
* \param duration The distance of the package.
|
|
* \return void
|
|
*/
|
|
static void SetActorAIDistance(unsigned int distance) noexcept;
|
|
|
|
/**
|
|
* \brief Set the duration of the AI package associated with the current AI action.
|
|
*
|
|
* \param duration The duration of the package.
|
|
* \return void
|
|
*/
|
|
static void SetActorAIDuration(unsigned int duration) noexcept;
|
|
|
|
/**
|
|
* \brief Set whether the current AI package should be repeated.
|
|
*
|
|
* Note: This only has an effect on the WANDER package.
|
|
*
|
|
* \param shouldRepeat Whether the package should be repeated.
|
|
* \return void
|
|
*/
|
|
static void SetActorAIRepetition(bool shouldRepeat) noexcept;
|
|
|
|
/**
|
|
* \brief Equip an item in a certain slot of the equipment of the temporary actor stored
|
|
* on the server.
|
|
*
|
|
* \param slot The equipment slot.
|
|
* \param refId The refId of the item.
|
|
* \param count The count of the item.
|
|
* \param charge The charge of the item.
|
|
* \param enchantmentCharge The enchantment charge of the item.
|
|
* \return void
|
|
*/
|
|
static void EquipActorItem(unsigned short slot, const char* refId, unsigned int count, int charge, double enchantmentCharge = -1) noexcept;
|
|
|
|
/**
|
|
* \brief Unequip the item in a certain slot of the equipment of the temporary actor stored
|
|
* on the server.
|
|
*
|
|
* \param slot The equipment slot.
|
|
* \return void
|
|
*/
|
|
static void UnequipActorItem(unsigned short slot) noexcept;
|
|
|
|
/**
|
|
* \brief Add a copy of the server's temporary actor to the server's temporary actor list.
|
|
*
|
|
* In the process, the server's temporary actor will automatically be cleared so a new
|
|
* one can be set up.
|
|
*
|
|
* \return void
|
|
*/
|
|
static void AddActor() noexcept;
|
|
|
|
/**
|
|
* \brief Send an ActorList packet.
|
|
*
|
|
* It is sent only to the player for whom the current actor list was initialized.
|
|
*
|
|
* \return void
|
|
*/
|
|
static void SendActorList() noexcept;
|
|
|
|
/**
|
|
* \brief Send an ActorAuthority packet.
|
|
*
|
|
* The player for whom the current actor list was initialized is recorded in the server memory
|
|
* as the new actor authority for the actor list's cell.
|
|
*
|
|
* The packet is sent to that player as well as all other players who have the cell loaded.
|
|
*
|
|
* \return void
|
|
*/
|
|
static void SendActorAuthority() noexcept;
|
|
|
|
/**
|
|
* \brief Send an ActorPosition packet.
|
|
*
|
|
* \param sendToOtherVisitors Whether this packet should be sent to cell visitors other
|
|
* than the player attached to the packet (false by default).
|
|
* \param skipAttachedPlayer Whether the packet should skip being sent to the player attached
|
|
* to the packet (false by default).
|
|
*
|
|
* \return void
|
|
*/
|
|
static void SendActorPosition(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept;
|
|
|
|
/**
|
|
* \brief Send an ActorStatsDynamic packet.
|
|
*
|
|
* \param sendToOtherVisitors Whether this packet should be sent to cell visitors other
|
|
* than the player attached to the packet (false by default).
|
|
* \param skipAttachedPlayer Whether the packet should skip being sent to the player attached
|
|
* to the packet (false by default).
|
|
*
|
|
* \return void
|
|
*/
|
|
static void SendActorStatsDynamic(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept;
|
|
|
|
/**
|
|
* \brief Send an ActorEquipment packet.
|
|
*
|
|
* \param sendToOtherVisitors Whether this packet should be sent to cell visitors other
|
|
* than the player attached to the packet (false by default).
|
|
* \param skipAttachedPlayer Whether the packet should skip being sent to the player attached
|
|
* to the packet (false by default).
|
|
*
|
|
* \return void
|
|
*/
|
|
static void SendActorEquipment(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept;
|
|
|
|
/**
|
|
* \brief Send an ActorAI packet.
|
|
*
|
|
* \param sendToOtherVisitors Whether this packet should be sent to cell visitors other
|
|
* than the player attached to the packet (false by default).
|
|
* \param skipAttachedPlayer Whether the packet should skip being sent to the player attached
|
|
* to the packet (false by default).
|
|
* \return void
|
|
*/
|
|
static void SendActorAI(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept;
|
|
|
|
/**
|
|
* \brief Send an ActorCellChange packet.
|
|
*
|
|
* \param sendToOtherVisitors Whether this packet should be sent to cell visitors other
|
|
* than the player attached to the packet (false by default).
|
|
* \param skipAttachedPlayer Whether the packet should skip being sent to the player attached
|
|
* to the packet (false by default).
|
|
*
|
|
* \return void
|
|
*/
|
|
static void SendActorCellChange(bool sendToOtherVisitors, bool skipAttachedPlayer) noexcept;
|
|
|
|
|
|
// All methods below are deprecated versions of methods from above
|
|
|
|
static void ReadLastActorList() noexcept;
|
|
static void InitializeActorList(unsigned short pid) noexcept;
|
|
static void CopyLastActorListToStore() noexcept;
|
|
static unsigned int GetActorRefNumIndex(unsigned int index) noexcept;
|
|
static unsigned int GetActorKillerRefNumIndex(unsigned int index) noexcept;
|
|
static void SetActorRefNumIndex(int refNum) noexcept;
|
|
};
|
|
|
|
|
|
#endif //OPENMW_ACTORAPI_HPP
|