forked from teamnwah/openmw-tes3coop
[General] Replace BaseObject's hasMaster variable with isSummon
Additionally, add a GetObjectSummonState() script function to the server.
This commit is contained in:
parent
8ce225b1cc
commit
bef53749ed
5 changed files with 29 additions and 14 deletions
|
@ -113,6 +113,11 @@ int ObjectFunctions::GetObjectLockLevel(unsigned int i) noexcept
|
||||||
return readObjectList->baseObjects.at(i).lockLevel;
|
return readObjectList->baseObjects.at(i).lockLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ObjectFunctions::GetObjectSummonState(unsigned int i) noexcept
|
||||||
|
{
|
||||||
|
return readObjectList->baseObjects.at(i).isSummon;
|
||||||
|
}
|
||||||
|
|
||||||
double ObjectFunctions::GetObjectSummonDuration(unsigned int i) noexcept
|
double ObjectFunctions::GetObjectSummonDuration(unsigned int i) noexcept
|
||||||
{
|
{
|
||||||
return readObjectList->baseObjects.at(i).summonDuration;
|
return readObjectList->baseObjects.at(i).summonDuration;
|
||||||
|
@ -263,9 +268,9 @@ void ObjectFunctions::SetObjectDisarmState(bool disarmState) noexcept
|
||||||
tempObject.isDisarmed = disarmState;
|
tempObject.isDisarmed = disarmState;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ObjectFunctions::SetObjectMasterState(bool masterState) noexcept
|
void ObjectFunctions::SetObjectSummonState(bool summonState) noexcept
|
||||||
{
|
{
|
||||||
tempObject.hasMaster = masterState;
|
tempObject.isSummon = summonState;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ObjectFunctions::SetObjectPosition(double x, double y, double z) noexcept
|
void ObjectFunctions::SetObjectPosition(double x, double y, double z) noexcept
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
{"GetObjectState", ObjectFunctions::GetObjectState},\
|
{"GetObjectState", ObjectFunctions::GetObjectState},\
|
||||||
{"GetObjectDoorState", ObjectFunctions::GetObjectDoorState},\
|
{"GetObjectDoorState", ObjectFunctions::GetObjectDoorState},\
|
||||||
{"GetObjectLockLevel", ObjectFunctions::GetObjectLockLevel},\
|
{"GetObjectLockLevel", ObjectFunctions::GetObjectLockLevel},\
|
||||||
|
{"GetObjectSummonState", ObjectFunctions::GetObjectSummonState},\
|
||||||
{"GetObjectSummonDuration", ObjectFunctions::GetObjectSummonDuration},\
|
{"GetObjectSummonDuration", ObjectFunctions::GetObjectSummonDuration},\
|
||||||
{"GetObjectPosX", ObjectFunctions::GetObjectPosX},\
|
{"GetObjectPosX", ObjectFunctions::GetObjectPosX},\
|
||||||
{"GetObjectPosY", ObjectFunctions::GetObjectPosY},\
|
{"GetObjectPosY", ObjectFunctions::GetObjectPosY},\
|
||||||
|
@ -57,7 +58,7 @@
|
||||||
{"SetObjectLockLevel", ObjectFunctions::SetObjectLockLevel},\
|
{"SetObjectLockLevel", ObjectFunctions::SetObjectLockLevel},\
|
||||||
{"SetObjectDisarmState", ObjectFunctions::SetObjectDisarmState},\
|
{"SetObjectDisarmState", ObjectFunctions::SetObjectDisarmState},\
|
||||||
{"SetObjectSummonDuration", ObjectFunctions::SetObjectSummonDuration},\
|
{"SetObjectSummonDuration", ObjectFunctions::SetObjectSummonDuration},\
|
||||||
{"SetObjectMasterState", ObjectFunctions::SetObjectMasterState},\
|
{"SetObjectSummonState", ObjectFunctions::SetObjectSummonState},\
|
||||||
{"SetObjectPosition", ObjectFunctions::SetObjectPosition},\
|
{"SetObjectPosition", ObjectFunctions::SetObjectPosition},\
|
||||||
{"SetObjectRotation", ObjectFunctions::SetObjectRotation},\
|
{"SetObjectRotation", ObjectFunctions::SetObjectRotation},\
|
||||||
\
|
\
|
||||||
|
@ -252,6 +253,16 @@ public:
|
||||||
*/
|
*/
|
||||||
static int GetObjectLockLevel(unsigned int i) noexcept;
|
static int GetObjectLockLevel(unsigned int i) noexcept;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Check whether the object at a certain index in the read object list's object changes
|
||||||
|
* is a summon.
|
||||||
|
*
|
||||||
|
* Only living actors can have be summoned.
|
||||||
|
*
|
||||||
|
* \return The summon state.
|
||||||
|
*/
|
||||||
|
static bool GetObjectSummonState(unsigned int i) noexcept;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Get the summon duration of the object at a certain index in the read object list's object
|
* \brief Get the summon duration of the object at a certain index in the read object list's object
|
||||||
* changes.
|
* changes.
|
||||||
|
@ -539,15 +550,15 @@ public:
|
||||||
static void SetObjectDisarmState(bool disarmState) noexcept;
|
static void SetObjectDisarmState(bool disarmState) noexcept;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Set the master state of the temporary object stored on the server.
|
* \brief Set the summon state of the temporary object stored on the server.
|
||||||
*
|
*
|
||||||
* This only affects living actors and determines whether they are followers of another
|
* This only affects living actors and determines whether they are summons of another
|
||||||
* living actor.
|
* living actor.
|
||||||
*
|
*
|
||||||
* \param masterState The master state.
|
* \param summonState The summon state.
|
||||||
* \return void
|
* \return void
|
||||||
*/
|
*/
|
||||||
static void SetObjectMasterState(bool masterState) noexcept;
|
static void SetObjectSummonState(bool summonState) noexcept;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Set the position of the temporary object stored on the server.
|
* \brief Set the position of the temporary object stored on the server.
|
||||||
|
|
|
@ -338,7 +338,7 @@ void ObjectList::spawnObjects(MWWorld::CellStore* cellStore)
|
||||||
|
|
||||||
newPtr = MWBase::Environment::get().getWorld()->placeObject(newPtr, cellStore, baseObject.position);
|
newPtr = MWBase::Environment::get().getWorld()->placeObject(newPtr, cellStore, baseObject.position);
|
||||||
|
|
||||||
if (baseObject.hasMaster)
|
if (baseObject.isSummon)
|
||||||
{
|
{
|
||||||
MWWorld::Ptr masterPtr;
|
MWWorld::Ptr masterPtr;
|
||||||
|
|
||||||
|
@ -839,8 +839,8 @@ void ObjectList::addObjectSpawn(const MWWorld::Ptr& ptr)
|
||||||
baseObject.refId = ptr.getCellRef().getRefId();
|
baseObject.refId = ptr.getCellRef().getRefId();
|
||||||
baseObject.refNumIndex = ptr.getCellRef().getRefNum().mIndex;
|
baseObject.refNumIndex = ptr.getCellRef().getRefNum().mIndex;
|
||||||
baseObject.mpNum = 0;
|
baseObject.mpNum = 0;
|
||||||
|
baseObject.isSummon = false;
|
||||||
baseObject.summonDuration = -1;
|
baseObject.summonDuration = -1;
|
||||||
baseObject.hasMaster = false;
|
|
||||||
|
|
||||||
// Make sure we send the RefData position instead of the CellRef one, because that's what
|
// Make sure we send the RefData position instead of the CellRef one, because that's what
|
||||||
// we actually see on this client
|
// we actually see on this client
|
||||||
|
@ -857,10 +857,9 @@ void ObjectList::addObjectSpawn(const MWWorld::Ptr& ptr, const MWWorld::Ptr& mas
|
||||||
baseObject.refId = ptr.getCellRef().getRefId();
|
baseObject.refId = ptr.getCellRef().getRefId();
|
||||||
baseObject.refNumIndex = ptr.getCellRef().getRefNum().mIndex;
|
baseObject.refNumIndex = ptr.getCellRef().getRefNum().mIndex;
|
||||||
baseObject.mpNum = 0;
|
baseObject.mpNum = 0;
|
||||||
|
baseObject.isSummon = true;
|
||||||
baseObject.summonDuration = duration;
|
baseObject.summonDuration = duration;
|
||||||
|
|
||||||
baseObject.hasMaster = true;
|
|
||||||
|
|
||||||
if (master == MWBase::Environment::get().getWorld()->getPlayerPtr())
|
if (master == MWBase::Environment::get().getWorld()->getPlayerPtr())
|
||||||
{
|
{
|
||||||
baseObject.master.isPlayer = true;
|
baseObject.master.isPlayer = true;
|
||||||
|
|
|
@ -57,9 +57,9 @@ namespace mwmp
|
||||||
bool isDisarmed;
|
bool isDisarmed;
|
||||||
bool droppedByPlayer;
|
bool droppedByPlayer;
|
||||||
|
|
||||||
|
bool isSummon;
|
||||||
float summonDuration;
|
float summonDuration;
|
||||||
Target master;
|
Target master;
|
||||||
bool hasMaster;
|
|
||||||
|
|
||||||
bool hasContainer;
|
bool hasContainer;
|
||||||
|
|
||||||
|
|
|
@ -15,9 +15,9 @@ void PacketObjectSpawn::Object(BaseObject &baseObject, bool send)
|
||||||
RW(baseObject.position, send);
|
RW(baseObject.position, send);
|
||||||
RW(baseObject.summonDuration, send);
|
RW(baseObject.summonDuration, send);
|
||||||
|
|
||||||
RW(baseObject.hasMaster, send);
|
RW(baseObject.isSummon, send);
|
||||||
|
|
||||||
if (baseObject.hasMaster)
|
if (baseObject.isSummon)
|
||||||
{
|
{
|
||||||
RW(baseObject.master.isPlayer, send);
|
RW(baseObject.master.isPlayer, send);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue