From 97b0b89dceffd48f158384b777e1bf30e4b1cca4 Mon Sep 17 00:00:00 2001 From: Andrew Kesterson Date: Sun, 22 Jun 2014 14:03:43 -0700 Subject: [PATCH] Reporting townspeople should send the guard to the player's last known location --- moonlight/src/AISprite.js | 31 +++++++++++++++++++++++++------ moonlight/src/Constants.js | 1 + 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/moonlight/src/AISprite.js b/moonlight/src/AISprite.js index e493c15..f2ec349 100644 --- a/moonlight/src/AISprite.js +++ b/moonlight/src/AISprite.js @@ -377,12 +377,27 @@ var AISprite = function(game, x, y, key, frame) { this.action_chaseplayer = function() { - this.chasetarget(player, - STATE_ALERTED, - STATE_MOVING | STATE_RUNNING, - true, - undefined, - false); + if ( this.path.length > 1 && + this.path_index >= this.path.length && + hasState(this, STATE_RUNNINGTOREPORT) ) { + delState(this, STATE_RUNNINGTOREPORT); + this.target = player; + } + if ( hasState(this, STATE_RUNNINGTOREPORT) ) { + this.chasetarget(this.target, + STATE_ALERTED, + STATE_MOVING | STATE_RUNNING, + true, + 1000, + false); + } else { + this.chasetarget(player, + STATE_ALERTED, + STATE_MOVING | STATE_RUNNING, + true, + undefined, + false); + } return; } @@ -394,6 +409,10 @@ var AISprite = function(game, x, y, key, frame) { var aiSprites = game.state.states.game.aiSprites; this.target = nearestInGroup(this, aiSprites, "townsfolk-guard"); } else if ( hasState(this, STATE_RUNNINGTOLIGHT) == false ) { + this.target.setAwarenessState(STATE_ALERTED); + this.target.target = this.lastSawPlayerAt + addState(this.target, STATE_RUNNINGTOREPORT); + this.path_tween_stop(); this.path_purge(); var staticLights = game.state.states.game.staticLights; diff --git a/moonlight/src/Constants.js b/moonlight/src/Constants.js index 5a1fd31..6fae3fd 100644 --- a/moonlight/src/Constants.js +++ b/moonlight/src/Constants.js @@ -21,6 +21,7 @@ STATE_FACE_DOWN = 1 << 9; STATE_MOVING = 1 << 10; STATE_RUNNINGTOLIGHT = 1 << 11; +STATE_RUNNINGTOREPORT = 1 << 12; STATES_AWARENESS = (STATE_UNAWARE | STATE_CONCERNED | STATE_ALERTED | STATE_LOSTHIM); STATES_MOVEMENT = (STATE_MOVING | STATE_RUNNING);