def __getGagEffectOnMe(self, avId, gagName, gagData, damageInfo, isPlayer): """ Returns the base damage and the damage offset a specified gag name used by "avId" has on this Cog """ weaknessFactor = self.suitPlan.getGagWeaknesses().get(gagName, 1.0) classWeakness = self.suitPlan.getCogClassAttrs().getGagDmgRamp(GagGlobals.getTrackOfGag(gagName, isAI = True)) if isPlayer: baseDmg = GagGlobals.calculateDamage(avId, gagName, gagData) else: baseDmg = damageInfo.damageAmount dmgOffset = int(math.ceil(baseDmg * weaknessFactor * classWeakness)) - baseDmg return baseDmg, dmgOffset
def handleHitByToon(self, player, gagId, distance): if self.isDead(): return gagName = base.cr.attackMgr.getAttackName(gagId) data = dict(GagGlobals.getGagData(gagName)) data['distance'] = distance baseDmg = GagGlobals.calculateDamage(player, gagName, data) hp = self.health - baseDmg self.setHealth(hp) self.announceHealth(0, baseDmg, -1) self.doDamageFade() if self.isDead(): self.doRagdollMode()
def hitByGag(self, gagId, distance): if self.isDead(): return avId = self.air.getAvatarIdFromSender() player = self.air.doId2do.get(avId, None) if not player: return gagName = self.air.attackMgr.getAttackName(gagId) data = dict(GagGlobals.getGagData(gagName)) data['distance'] = distance baseDmg = GagGlobals.calculateDamage(player, gagName, data) hp = self.health - baseDmg self.b_setHealth(hp) self.d_announceHealth(0, baseDmg, -1) if self.isDead(): self.dispatchOutput("OnDie") self.brain.stop() self.d_doRagdollMode()