void Person::doAI()
{
- if (!isPlayerControlled() && !isPlayerFriend() && !Dialog::inDialog()) {
+ if (!isPlayerControlled() && !Dialog::inDialog()) {
jumpclimb = 0;
//disable movement in editor
if (Game::editorenabled) {
if ((!Tutorial::active || cananger) &&
hostile &&
+ !isPlayerFriend() &&
!Person::players[0]->dead &&
distsq(&coords, &Person::players[0]->coords) < 400 &&
occluded < 25) {
//hearing sounds
if (!Game::editorenabled) {
if (howactive <= typesleeping) {
- if (numenvsounds > 0 && (!Tutorial::active || cananger) && hostile) {
+ if (numenvsounds > 0 && (!Tutorial::active || cananger) && !isPlayerFriend() && hostile) {
for (int j = 0; j < numenvsounds; j++) {
float vol = howactive == typesleeping ? envsoundvol[j] - 14 : envsoundvol[j];
if (vol > 0 && distsq(&coords, &envsound[j]) < 2 * (vol + vol * (creature == rabbittype) * 3)) {
if (howactive < typesleeping &&
((!Tutorial::active || cananger) && hostile) &&
+ !isPlayerFriend() &&
!Person::players[0]->dead &&
distsq(&coords, &Person::players[0]->coords) < 400 &&
occluded < 25) {
jumpkeydown = 1;
}
- if (numenvsounds > 0 && ((!Tutorial::active || cananger) && hostile)) {
+ if (numenvsounds > 0 && ((!Tutorial::active || cananger) && !isPlayerFriend() && hostile)) {
for (int k = 0; k < numenvsounds; k++) {
if (distsq(&coords, &envsound[k]) < 2 * (envsoundvol[k] + envsoundvol[k] * (creature == rabbittype) * 3)) {
aitype = attacktypecutoff;
}
if (!Person::players[0]->dead &&
+ !isPlayerFriend() &&
losupdatedelay < 0 &&
!Game::editorenabled &&
occluded < 2 &&
lastseentime = 12;
- if (!Person::players[0]->dead && ((!Tutorial::active || cananger) && hostile)) {
+ if (!Person::players[0]->dead && !isPlayerFriend() && ((!Tutorial::active || cananger) && hostile)) {
if (ally < 0 || hasWeapon() || lastchecktime <= 0) {
aitype = attacktypecutoff;
lastseentime = 1;
} else if (howactive >= typesleeping) {
targetheadyaw = targetyaw;
targetheadpitch = 0;
+ } else if (isPlayerFriend()) {
+ targetheadyaw = 180 - roughDirectionTo(coords, Person::players[0]->coords);
+ targetheadpitch = pitchTo(coords, Person::players[0]->coords);
} else {
if (interestdelay <= 0) {
interestdelay = .7 + (float)(abs(Random() % 100)) / 100;