Esempio n. 1
0
    def __init__(self, air, dispatch):
        DistributedAvatarAI.__init__(self, air)
        BaseNPCAI.__init__(self, dispatch)
        self.setDispatch(dispatch)

        self.patrolTime = 0.0
        self.patrolDur = 10.0

        self.activities = {
            ACT_WAKE_ANGRY: 2.0,
            ACT_DIE: -1,
            ACT_GOON_SCAN: 6.0
        }

        self.schedules.update({
            "SCAN_AREA":
            Schedule([
                Task_StopMoving(self),
                Task_GetRandomPath(self),
                Task_RunPath(self),
                Task_AwaitMovement(self),
                Task_SetActivity(self, ACT_GOON_SCAN),
                Task_AwaitActivity(self)
            ],
                     interruptMask=COND_NEW_TARGET | COND_LIGHT_DAMAGE
                     | COND_HEAVY_DAMAGE)
        })

        self.brain = None
        self.spawnflags = 0

        self.health = 25
        self.maxHealth = 25
Esempio n. 2
0
    def getIdealState(self):

        BaseNPCAI.getIdealState(self)

        if self.npcState == STATE_ALERT:
            if globalClock.getFrameTime() - self.patrolTime > self.patrolDur:
                self.idealState = STATE_IDLE

        return self.idealState
Esempio n. 3
0
    def getSchedule(self):
        if self.npcState in [STATE_DEAD, STATE_NONE]:
            return BaseNPCAI.getSchedule(self)

        if self.npcState == STATE_ALERT:
            # Walk around and scan the area for trespassers
            return self.getScheduleByName("SCAN_AREA")

        return BaseNPCAI.getSchedule(self)
Esempio n. 4
0
    def setNPCState(self, state):
        if state != self.npcState:
            if state == STATE_ALERT:
                self.patrolTime = globalClock.getFrameTime()
                self.patrolDur = random.uniform(10, 60)

            if state == STATE_COMBAT:
                self.d_doDetectStuff()
            elif self.npcState == STATE_COMBAT:
                self.d_doUndetectGlow()
        BaseNPCAI.setNPCState(self, state)