forked from teamnwah/openmw-tes3coop
disable AI combat for creatures
This commit is contained in:
parent
5b20cce849
commit
a6e7c6c104
1 changed files with 24 additions and 21 deletions
|
@ -75,28 +75,31 @@ void MWMechanics::AiSequence::execute (const MWWorld::Ptr& actor)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ESM::Position playerpos = MWBase::Environment::get().getWorld()->getPlayer().getPlayer().getRefData().getPosition();
|
if(actor.getTypeName() == typeid(ESM::NPC).name())
|
||||||
ESM::Position actorpos = actor.getRefData().getPosition();
|
|
||||||
float d = sqrt((actorpos.pos[0] - playerpos.pos[0])*(actorpos.pos[0] - playerpos.pos[0])
|
|
||||||
+(actorpos.pos[1] - playerpos.pos[1])*(actorpos.pos[1] - playerpos.pos[1])
|
|
||||||
+(actorpos.pos[2] - playerpos.pos[2])*(actorpos.pos[2] - playerpos.pos[2]));
|
|
||||||
float fight = actor.getClass().getCreatureStats(actor).getAiSetting(1);
|
|
||||||
float disp = MWBase::Environment::get().getMechanicsManager()->getDerivedDisposition(actor);
|
|
||||||
bool LOS = MWBase::Environment::get().getWorld()->getLOS(actor,MWBase::Environment::get().getWorld()->getPlayer().getPlayer());
|
|
||||||
if( ( (fight == 100 )
|
|
||||||
|| (fight >= 95 && d <= 3000)
|
|
||||||
|| (fight >= 90 && d <= 2000)
|
|
||||||
|| (fight >= 80 && d <= 1000)
|
|
||||||
|| (fight >= 80 && disp <= 40)
|
|
||||||
|| (fight >= 70 && disp <= 35 && d <= 1000)
|
|
||||||
|| (fight >= 60 && disp <= 30 && d <= 1000)
|
|
||||||
|| (fight >= 50 && disp == 0)
|
|
||||||
|| (fight >= 40 && disp <= 10 && d <= 500) )
|
|
||||||
&& LOS
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
mCombat = true;
|
ESM::Position playerpos = MWBase::Environment::get().getWorld()->getPlayer().getPlayer().getRefData().getPosition();
|
||||||
mCombatPackage = new AiCombat("player");
|
ESM::Position actorpos = actor.getRefData().getPosition();
|
||||||
|
float d = sqrt((actorpos.pos[0] - playerpos.pos[0])*(actorpos.pos[0] - playerpos.pos[0])
|
||||||
|
+(actorpos.pos[1] - playerpos.pos[1])*(actorpos.pos[1] - playerpos.pos[1])
|
||||||
|
+(actorpos.pos[2] - playerpos.pos[2])*(actorpos.pos[2] - playerpos.pos[2]));
|
||||||
|
float fight = actor.getClass().getCreatureStats(actor).getAiSetting(1);
|
||||||
|
float disp = MWBase::Environment::get().getMechanicsManager()->getDerivedDisposition(actor);
|
||||||
|
bool LOS = MWBase::Environment::get().getWorld()->getLOS(actor,MWBase::Environment::get().getWorld()->getPlayer().getPlayer());
|
||||||
|
if( ( (fight == 100 )
|
||||||
|
|| (fight >= 95 && d <= 3000)
|
||||||
|
|| (fight >= 90 && d <= 2000)
|
||||||
|
|| (fight >= 80 && d <= 1000)
|
||||||
|
|| (fight >= 80 && disp <= 40)
|
||||||
|
|| (fight >= 70 && disp <= 35 && d <= 1000)
|
||||||
|
|| (fight >= 60 && disp <= 30 && d <= 1000)
|
||||||
|
|| (fight >= 50 && disp == 0)
|
||||||
|
|| (fight >= 40 && disp <= 10 && d <= 500) )
|
||||||
|
&& LOS
|
||||||
|
)
|
||||||
|
{
|
||||||
|
mCombat = true;
|
||||||
|
mCombatPackage = new AiCombat("player");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (!mPackages.empty())
|
if (!mPackages.empty())
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue