Exemple #1
0
 def delete(self):
     self.died = None
     self.hpBarrel = None
     taskMgr.remove(self.uniqueName('npcToonDie'))
     BaseNPCAI.delete(self)
     DistributedToonAI.delete(self)
     DistributedEntityAI.delete(self)
Exemple #2
0
    def announceGenerate(self):
        npcName = self.getEntityValue("name")
        if len(npcName) == 0:
            npcId = self.getEntityValueInt("npcId")
        else:
            npcId = NPCGlobals.getNPCIDByName(npcName)

        name = NPCGlobals.NPCToonDict[npcId][1]
        dna = NPCGlobals.NPCToonDict[npcId][2]
        self.b_setName(name)
        self.b_setDNAStrand(dna)
        self.b_setHealth(self.getMaxHealth())

        self.setPos(self.cEntity.getOrigin())
        self.setHpr(self.cEntity.getAngles())

        DistributedEntityAI.announceGenerate(self)
        DistributedToonAI.announceGenerate(self)

        #self.b_setParent(CIGlobals.SPRender)
        self.startPosHprBroadcast()

        self.startAI()

        self.accept(self.getHealthChangeEvent(), self.__hpChange)
 def __init__(self, air):
     try:
         self.DistributedPlayerToonAI_initialized
         return
     except:
         self.DistributedPlayerToonAI_initialized = 1
     DistributedToonAI.__init__(self, air)
     DistributedPlayerToonShared.__init__(self)
     self.money = 0
     self.portal = None
     self.book = None
     self.role = None
     self.ghost = 0
     self.attackers = []
     self.puInventory = []
     self.equippedPU = -1
     self.backpack = BackpackAI(self)
     self.backpackNetString = ""
     self.quests = ""
     self.questHistory = []
     self.tier = -1
     self.friends = []
     self.tutDone = 0
     self.hoodsDiscovered = []
     self.teleportAccess = []
     self.lastHood = 0
     self.defaultShard = 0
     self.currentGag = -1
     self.trackExperience = dict(GagGlobals.DefaultTrackExperiences)
     return
    def b_setMaxHealth(self, hp):
        if self.battleZone and not self.battleZone.getGameRules(
        ).useRealHealth():
            self.b_setSessionMaxHealth(hp)
            return

        DistributedToonAI.b_setMaxHealth(self, hp)
Exemple #5
0
 def delete(self):
     taskMgr.remove(self.taskName("hpRegen"))
     self.money = None
     self.viewOrigin = None
     self.viewAngles = None
     self.viewAngleVectors = None
     DistributedToonAI.delete(self)
Exemple #6
0
 def __init__(self, air):
     DistributedToonAI.__init__(self, air)
     self.money = 0
     self.viewOrigin = Vec3()
     self.viewAngles = Vec3()
     self.viewAngleVectors = []
     self.numbers = []
 def delete(self):
     try:
         self.DistributedPlayerToonAI_deleted
     except:
         self.DistributedPlayerToonAI_deleted = 1
         DistributedPlayerToonShared.delete(self)
         self.questManager.cleanup()
         self.questManager = None
         self.money = None
         self.portal = None
         self.book = None
         self.role = None
         self.ghost = None
         self.attackers = None
         self.puInventory = None
         self.equippedPU = None
         if type(self.backpack
                 ) != types.IntType and self.backpack is not None:
             self.backpack.cleanup()
             self.backpack = None
         self.quests = None
         self.questHistory = None
         self.tier = None
         self.friends = None
         self.tutDone = None
         self.hoodsDiscovered = None
         self.teleportAccess = None
         self.lastHood = None
         self.defaultShard = None
         self.trackExperience = None
         del self.questManager
         del self.money
         del self.portal
         del self.book
         del self.role
         del self.ghost
         del self.attackers
         del self.puInventory
         del self.equippedPU
         del self.backpack
         del self.quests
         del self.questHistory
         del self.tier
         del self.friends
         del self.tutDone
         del self.hoodsDiscovered
         del self.teleportAccess
         del self.lastHood
         del self.defaultShard
         del self.trackExperience
         DistributedToonAI.delete(self)
     return
    def updateAttackAmmo(self, gagId, ammo, maxAmmo, ammo2, maxAmmo2, clip,
                         maxClip):
        if self.useBackpack():
            self.backpack.setSupply(gagId, ammo)
        else:

            if ammo < 0:
                ammo = abs(ammo)
            if maxAmmo < 0:
                maxAmmo = abs(maxAmmo)

            DistributedToonAI.updateAttackAmmo(self, gagId, ammo, maxAmmo,
                                               ammo2, maxAmmo2, clip, maxClip)
Exemple #9
0
    def __init__(self, air, dispatch):
        DistributedEntityAI.__init__(self, air, dispatch)
        DistributedToonAI.__init__(self, air)
        BaseNPCAI.__init__(self, dispatch)
        self.setBattleZone(dispatch)

        from src.coginvasion.attack.Attacks import ATTACK_GAG_WHOLECREAMPIE
        self.attackIds = [ATTACK_GAG_WHOLECREAMPIE]

        self.died = False

        self.hpBarrel = None

        self.schedules.update({
            "GET_HP_FROM_BARREL":
            Schedule(
                [
                    Task_StopMoving(self),
                    Task_StopAttack(self),
                    Task_RememberPosition(
                        self
                    ),  # remember where we were, we will return there after grabbing some HP
                    Task_FindBestHPBarrel(self),
                    Task_GetPathToHPBarrel(self),
                    Task_Speak(self, 0.5, [
                        "I need more Laff points.",
                        "I'm grabbing a Laff barrel!",
                        "Hang on, I need this Laff barrel.", "I need Laff!"
                    ]),
                    Task_RunPath(self),
                    Task_AwaitMovement(self),
                    Task_GrabHPBarrel(self),
                    Task_ClearHPBarrel(self),
                    Task_SetSchedule(self, "RETURN_TO_MEMORY_POSITION")
                ],
                interruptMask=COND_HEAVY_DAMAGE)
        })
 def announceGenerate(self):
     DistributedToonAI.announceGenerate(self)
     if self.parentId != self.getDefaultShard():
         self.b_setDefaultShard(self.parentId)
 def setupAttacks(self):
     DistributedToonAI.setupAttacks(self)
     # Update the player with the correct ammo numbers.
     for attack in self.attacks.values():
         attack.d_updateAttackAmmo()
Exemple #12
0
    def __init__(self, air, dispatch):
        DistributedToonAI.__init__(self, air)
        BaseNPCAI.__init__(self, dispatch)
        self.setDispatch(dispatch)
        self.setBattleZone(dispatch)

        from src.coginvasion.attack.Attacks import ATTACK_GAG_WHOLECREAMPIE
        self.attackIds = [ATTACK_GAG_WHOLECREAMPIE]

        self.died = False

        self.hpBarrel = None

        self.followTarget = None

        self.schedules.update({
            "HEAL_FOLLOW_TARGET":
            Schedule([
                Task_StopMoving(self),
                Task_FaceFollowTarget(self),
                Task_Speak(self, 0.75, [
                    "Patch yourself up!", "Here, this'll help!",
                    "Let me help you out!", "Heads up!"
                ]),
                Task_EquipAttack(self, ATTACK_GAG_WHOLECREAMPIE),
                Task_FireHealAttack(self),
                Task_AwaitAttack(self)
            ],
                     interruptMask=COND_SCHEDULE_DONE | COND_TASK_FAILED
                     | COND_LIGHT_DAMAGE | COND_HEAVY_DAMAGE | COND_NEW_TARGET
                     | COND_VP_JUMPING),
            "GET_HP_FROM_BARREL":
            Schedule(
                [
                    Task_StopMoving(self),
                    Task_StopAttack(self),
                    Task_RememberPosition(
                        self
                    ),  # remember where we were, we will return there after grabbing some HP
                    Task_FindBestHPBarrel(self),
                    Task_GetPathToHPBarrel(self),
                    Task_Speak(self, 0.5, [
                        "I need more Laff points.",
                        "I'm grabbing a Laff barrel!",
                        "Hang on, I need this Laff barrel.", "I need Laff!"
                    ]),
                    Task_MoveShoot(self),
                    Task_GrabHPBarrel(self),
                    Task_ClearHPBarrel(self),
                    Task_SetSchedule(self, "RETURN_TO_MEMORY_POSITION")
                ],
                interruptMask=COND_VP_JUMPING | COND_HEAVY_DAMAGE
                | COND_IN_WALL),
            "RUN_TO_FOLLOW_TARGET":
            Schedule([
                Task_StopAttack(self),
                Task_StopMoving(self),
                Task_GetPathToFollowTarget(self),
                Task_RunPath(self),
                Task_RunToFollowTarget(self),
                Task_FaceFollowTarget(self)
            ],
                     interruptMask=COND_NEW_TARGET | COND_SCHEDULE_DONE
                     | COND_TASK_FAILED | COND_IN_WALL),
            "FOLLOW_TARGET_FACE":
            Schedule([
                Task_StopAttack(self),
                Task_StopMoving(self),
                Task_FaceFollowTarget(self)
            ],
                     interruptMask=COND_NEW_TARGET | COND_SCHEDULE_DONE
                     | COND_TASK_FAILED),
            "MAINTAIN_FOLLOW_TARGET":
            Schedule([
                Task_StopAttack(self),
                Task_StopMoving(self),
                Task_MaintainFollowTarget(self)
            ],
                     interruptMask=COND_VP_JUMPING | COND_SEE_FEAR
                     | COND_NEW_TARGET | COND_LIGHT_DAMAGE | COND_HEAVY_DAMAGE
                     | COND_HEAR_DANGER | COND_HEAR_HATE | COND_FRIEND_IN_WAY
                     | COND_HEAR_SOMETHING | COND_IN_WALL),
            "VP_JUMP_DODGE":
            Schedule([
                Task_StopAttack(self),
                Task_StopMoving(self),
                Task_Wait(0.5),
                Task_SetActivity(self, ACT_JUMP),
                Task_AwaitActivity(self)
            ],
                     interruptMask=COND_SCHEDULE_DONE | COND_TASK_FAILED),
            "VP_JUMP_REACT":
            Schedule([
                Task_StopAttack(self),
                Task_StopMoving(self),
                Task_SetActivity(self, ACT_TOON_FALL),
                Task_AwaitActivity(self)
            ],
                     interruptMask=COND_SCHEDULE_DONE | COND_TASK_FAILED),
        })

        self.schedules["YIELD_TO_FRIEND"].prependTask(
            Task_Speak(
                self, 0.4,
                ["Sorry.", "Let me get out of your way.", "Excuse me."]))

        self.schedules["IDLE_STAND"].interruptMask |= COND_VP_JUMPING
        self.schedules["COMBAT_FACE"].interruptMask |= COND_VP_JUMPING
        self.schedules[
            "TAKE_COVER_FROM_ORIGIN"].interruptMask |= COND_VP_JUMPING
        self.schedules[
            "TAKE_COVER_FROM_TARGET"].interruptMask |= COND_VP_JUMPING
        self.schedules["CHASE_TARGET"].interruptMask |= COND_VP_JUMPING
        self.schedules["ATTACK"].interruptMask |= COND_VP_JUMPING
        self.schedules["MAKE_ATTACK_LOS"].interruptMask |= COND_VP_JUMPING
        self.schedules["ALERT_FACE"].interruptMask |= COND_VP_JUMPING
        self.schedules[
            "RETURN_TO_MEMORY_POSITION"].interruptMask |= COND_VP_JUMPING
Exemple #13
0
 def announceGenerate(self):
     DistributedToonAI.announceGenerate(self)
     taskMgr.add(self.__hpRegenTask, self.taskName("hpRegen"))
Exemple #14
0
 def takeDamage(self, damageInfo):
     DistributedToonAI.takeDamage(self, damageInfo)
     bz = self.air.battleZones[self.zoneId]
     bz.playerTakeDamage(damageInfo.damageAmount, self.doId)