1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-07 12:54:00 +00:00
OpenMW/apps/openmw/mwmechanics/aiescort.hpp
scrawl 965bea45c0 AiEscort makes the actor side with target in fights (Bug #2697)
Also will follow the player through teleport doors.
2015-12-06 23:38:51 +01:00

59 lines
1.8 KiB
C++

#ifndef GAME_MWMECHANICS_AIESCORT_H
#define GAME_MWMECHANICS_AIESCORT_H
#include "aipackage.hpp"
#include <string>
#include "pathfinding.hpp"
namespace ESM
{
namespace AiSequence
{
struct AiEscort;
}
}
namespace MWMechanics
{
/// \brief AI Package to have an NPC lead the player to a specific point
class AiEscort : public AiPackage
{
public:
/// Implementation of AiEscort
/** The Actor will escort the specified actor to the world position x, y, z until they reach their position, or they run out of time
\implement AiEscort **/
AiEscort(const std::string &actorId,int duration, float x, float y, float z);
/// Implementation of AiEscortCell
/** The Actor will escort the specified actor to the cell position x, y, z until they reach their position, or they run out of time
\implement AiEscortCell **/
AiEscort(const std::string &actorId,const std::string &cellId,int duration, float x, float y, float z);
AiEscort(const ESM::AiSequence::AiEscort* escort);
virtual AiEscort *clone() const;
virtual bool execute (const MWWorld::Ptr& actor, CharacterController& characterController, AiState& state, float duration);
virtual int getTypeId() const;
MWWorld::Ptr getTarget();
virtual bool sideWithTarget() const { return true; }
void writeState(ESM::AiSequence::AiSequence &sequence) const;
private:
std::string mActorId;
std::string mCellId;
float mX;
float mY;
float mZ;
float mMaxDist;
float mRemainingDuration; // In seconds
int mCellX;
int mCellY;
};
}
#endif