Mercurial > parpg-source
changeset 47:dd9bd93ec81c
Fixed NPC behaviour. NPCs are wandering around again.
author | KarstenBock@gmx.net |
---|---|
date | Wed, 07 Sep 2011 14:48:08 +0200 |
parents | bf506f739322 |
children | 1bdadb768bcf |
files | behaviours/npc.py |
diffstat | 1 files changed, 21 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/behaviours/npc.py Wed Sep 07 13:54:02 2011 +0200 +++ b/behaviours/npc.py Wed Sep 07 14:48:08 2011 +0200 @@ -15,6 +15,8 @@ from random import randrange +from fife import fife + import base from base import BaseBehaviour @@ -43,7 +45,7 @@ @return: NPC's position""" x = self.getX() y = self.getY() - if self.state == _AGENT_STATE_WANDER: + if self.state == base._AGENT_STATE_WANDER: """ Random Target Location """ l = [0, 0] for i in range(len(l)): @@ -69,7 +71,7 @@ @type action: ??? @param action: ??? @return: None""" - if self.state == _AGENT_STATE_WANDER: + if self.state == base._AGENT_STATE_WANDER: self.target_loc = self.getTargetLocation() self.idle() @@ -78,21 +80,28 @@ """Controls the NPC when it is idling. Different actions based on the NPC's state. @return: None""" - if self.state == _AGENT_STATE_NONE: - self.state = _AGENT_STATE_IDLE + if self.state == base._AGENT_STATE_NONE: + self.state = base._AGENT_STATE_IDLE self.agent.act('stand', self.agent.getFacingLocation()) - elif self.state == _AGENT_STATE_IDLE: + elif self.state == base._AGENT_STATE_IDLE: if self.wanderCounter > self.wanderRate: self.wanderCounter = 0 - self.state = _AGENT_STATE_WANDER + self.state = base._AGENT_STATE_WANDER else: self.wanderCounter += 1 - self.state = _AGENT_STATE_NONE + self.state = base._AGENT_STATE_NONE self.target_loc = self.getTargetLocation() self.agent.act('stand', self.agent.getFacingLocation()) - elif self.state == _AGENT_STATE_WANDER: - self.parent.wander(self.target_loc) - self.state = _AGENT_STATE_NONE - elif self.state == _AGENT_STATE_TALK: - self.agent.act('stand', self.pc.getLocation()) \ No newline at end of file + elif self.state == base._AGENT_STATE_WANDER: + self.wander(self.target_loc) + self.state = base._AGENT_STATE_NONE + elif self.state == base._AGENT_STATE_TALK: + self.agent.act('stand', self.pc.getLocation()) + + def wander(self, location): + """Nice slow movement for random walking. + @type location: fife.Location + @param location: Where the NPC will walk to. + @return: None""" + self.agent.move('walk', location, self.speed - 1) \ No newline at end of file