本文整理汇总了Python中pirates.battle.WeaponGlobals.isSelfUseSkill方法的典型用法代码示例。如果您正苦于以下问题:Python WeaponGlobals.isSelfUseSkill方法的具体用法?Python WeaponGlobals.isSelfUseSkill怎么用?Python WeaponGlobals.isSelfUseSkill使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pirates.battle.WeaponGlobals
的用法示例。
在下文中一共展示了WeaponGlobals.isSelfUseSkill方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: useTargetedSkill
# 需要导入模块: from pirates.battle import WeaponGlobals [as 别名]
# 或者: from pirates.battle.WeaponGlobals import isSelfUseSkill [as 别名]
def useTargetedSkill(self, skillId, ammoSkillId, skillResult, targetId, areaIdList, attackerEffects, targetEffects, areaIdEffects, itemEffects, timestamp, pos, charge = 0, localSignal = 0):
if WeaponGlobals.isSelfUseSkill(skillId) and not localSignal:
selfUse = True
else:
selfUse = False
if localSignal:
target = self.cr.doId2do.get(targetId)
if target and target != self and WeaponGlobals.isBreakAttackComboSkill(skillId) and skillResult == WeaponGlobals.RESULT_HIT:
levelGrade = self.cr.battleMgr.getModifiedExperienceGrade(self, target)
self.guiMgr.combatTray.updateSkillCharges(levelGrade)
if not self.isLocal() and localSignal and WeaponGlobals.getSkillTrack(skillId) == WeaponGlobals.DEFENSE_SKILL_INDEX or selfUse:
multiHits = []
numHits = WeaponGlobals.getNumHits(skillId)
hitTiming = WeaponGlobals.getMultiHitAttacks(skillId)
if hitTiming:
multiHits += hitTiming
if ammoSkillId:
numHits += WeaponGlobals.getNumHits(ammoSkillId) - 1
hitTiming = WeaponGlobals.getMultiHitAttacks(ammoSkillId)
if hitTiming:
multiHits += hitTiming
if not selfUse or self.isNpc:
if not targetId and areaIdList:
self.playSkillMovie(skillId, ammoSkillId, skillResult, charge, areaIdList[0], areaIdList)
else:
self.playSkillMovie(skillId, ammoSkillId, skillResult, charge, targetId, areaIdList)
if skillResult == WeaponGlobals.RESULT_REFLECTED or selfUse:
target = self
targetId = self.getDoId()
elif skillResult == WeaponGlobals.RESULT_BLOCKED:
target = None
else:
target = self.currentTarget
if target and targetId:
if multiHits and numHits:
multiHitEffects = self.packMultiHitEffects(targetEffects, numHits)
for i in range(numHits):
target.targetedWeaponHit(skillId, ammoSkillId, skillResult, multiHitEffects[i], self, pos, charge, multiHits[i], i, itemEffects = itemEffects)
else:
target.targetedWeaponHit(skillId, ammoSkillId, skillResult, targetEffects, self, pos, charge, itemEffects = itemEffects)
for (targetId, areaEffects) in zip(areaIdList, areaIdEffects):
target = self.cr.doId2do.get(targetId)
if target:
if multiHits and numHits:
multiHitEffects = self.packMultiHitEffects(areaEffects, numHits)
for i in range(numHits):
target.targetedWeaponHit(skillId, ammoSkillId, skillResult, multiHitEffects[i], self, pos, charge, multiHits[i], i, itemEffects = itemEffects)
else:
target.targetedWeaponHit(skillId, ammoSkillId, skillResult, areaEffects, self, pos, charge, itemEffects = itemEffects)
if not (self.currentTarget) and not areaIdList:
self.playHitSound(skillId, ammoSkillId, WeaponGlobals.RESULT_MISS)
示例2: targetedWeaponHit
# 需要导入模块: from pirates.battle import WeaponGlobals [as 别名]
# 或者: from pirates.battle.WeaponGlobals import isSelfUseSkill [as 别名]
def targetedWeaponHit(self, skillId, ammoSkillId, skillResult, targetEffects, attacker, pos, charge = 0, delay = None, multihit = 0, itemEffects = []):
if self == attacker:
if not targetEffects[0] and targetEffects[1] and targetEffects[2] and targetEffects[3] > 0:
pass
if not targetEffects[4] and not WeaponGlobals.isSelfUseSkill(skillId):
return None
if not delay:
(targetPos, time, impactT) = self.getProjectileInfo(skillId, attacker)
if impactT:
delay = impactT
else:
delay = WeaponGlobals.getAttackReactionDelay(skillId, ammoSkillId)
if WeaponGlobals.getIsDollAttackSkill(skillId):
delay += random.uniform(0.0, 0.5)
if attacker and attacker.isLocal():
self.localAttackedMe()
centerEffect = WeaponGlobals.getCenterEffect(skillId, ammoSkillId)
if self.hasNetPythonTag('MonstrousObject'):
pass
elif not centerEffect == 2:
if not self.avatarType.isA(AvatarTypes.Stump) and self.avatarType.isA(AvatarTypes.FlyTrap) and self.avatarType.isA(AvatarTypes.GiantCrab):
pass
if not self.avatarType.isA(AvatarTypes.CrusherCrab):
mult = 0.66600000000000004
if self.avatarType.isA(AvatarTypes.GiantCrab) or self.avatarType.isA(AvatarTypes.CrusherCrab):
mult = 0.10000000000000001
elif self.avatarType.isA(AvatarTypes.RockCrab):
mult = 0.20000000000000001
pos = Vec3(0, 0, self.height * mult)
elif centerEffect == 1:
newZ = attacker.getZ(self)
pos = Vec3(0, 0, newZ + attacker.height * 0.66600000000000004)
else:
newPos = self.cr.targetMgr.getAimHitPos(attacker)
if newPos:
pos = Vec3(newPos[0], newPos[1], newPos[2] + 1.5)
else:
centerEffect = WeaponGlobals.getCenterEffect(skillId, ammoSkillId)
if centerEffect >= 1:
pos = Vec3(0, 0, self.height * 0.66600000000000004)
weaponSubType = None
if attacker and attacker.currentWeapon:
weaponType = ItemGlobals.getType(attacker.currentWeapon.itemId)
if weaponType in [
ItemGlobals.SWORD]:
weaponSubType = ItemGlobals.getSubtype(attacker.currentWeapon.itemId)
elif attacker.currentWeapon.getName() in [
'sword']:
weaponSubType = ItemGlobals.CUTLASS
if delay > 0.0:
taskMgr.doMethodLater(delay, self.playHitSound, self.taskName('playHitSoundTask'), extraArgs = [
skillId,
ammoSkillId,
skillResult,
weaponSubType])
else:
self.playHitSound(skillId, ammoSkillId, skillResult, weaponSubType)
if skillResult in [
WeaponGlobals.RESULT_HIT,
WeaponGlobals.RESULT_MISTIMED_HIT,
WeaponGlobals.RESULT_REFLECTED]:
bonus = 0
if bonus:
targetEffects[0] -= bonus
if skillResult == WeaponGlobals.RESULT_MISTIMED_HIT:
if type(targetEffects) is types.TupleType:
targetEffects = (int(targetEffects[0] * WeaponGlobals.MISTIME_PENALTY),) + targetEffects[1:]
else:
targetEffects[0] = int(targetEffects[0] * WeaponGlobals.MISTIME_PENALTY)
if delay > 0.0:
taskMgr.doMethodLater(delay, self.playOuch, self.taskName('playOuchTask'), extraArgs = [
skillId,
ammoSkillId,
targetEffects,
attacker,
pos,
itemEffects,
multihit,
0,
skillResult])
else:
self.playOuch(skillId, ammoSkillId, targetEffects, attacker, pos, itemEffects, multihit, skillResult = skillResult)
if bonus:
taskMgr.doMethodLater(WeaponGlobals.COMBO_DAMAGE_DELAY, self.playOuch, self.taskName('playBonusOuchTask'), extraArgs = [
skillId,
ammoSkillId,
[
bonus,
0,
0,
#.........这里部分代码省略.........
示例3: playOuch
# 需要导入模块: from pirates.battle import WeaponGlobals [as 别名]
# 或者: from pirates.battle.WeaponGlobals import isSelfUseSkill [as 别名]
def playOuch(self, skillId, ammoSkillId, targetEffects, attacker, pos, itemEffects = [], multihit = 0, targetBonus = 0, skillResult = 0):
(targetHp, targetPower, targetEffect, targetMojo, targetSwiftness) = targetEffects
if self.gameFSM.state in ('Injured',):
return None
if not targetBonus:
if ammoSkillId:
effectId = WeaponGlobals.getHitEffect(ammoSkillId)
skillEffectId = WeaponGlobals.getSkillEffectFlag(ammoSkillId)
else:
effectId = WeaponGlobals.getHitEffect(skillId)
skillEffectId = WeaponGlobals.getSkillEffectFlag(skillId)
if attacker:
self.addCombo(attacker.getDoId(), attacker.currentWeaponId, skillId, -targetHp, skillResult)
if WeaponGlobals.C_KNOCKDOWN not in self.getSkillEffects() or skillEffectId == WeaponGlobals.C_KNOCKDOWN:
self.cleanupOuchIval()
if not targetBonus and not (self.NoPain) and not (self.noIntervals) and targetEffects[0] < 0:
if self.gameFSM.state not in ('Ensnared', 'Knockdown', 'Stunned', 'Rooted', 'NPCInteract', 'ShipBoarding', 'Injured', 'Dying', 'Death') or WeaponGlobals.C_KNOCKDOWN in self.getSkillEffects() or self.gameFSM.state not in ('ShipBoarding', 'Injured', 'Dying', 'Death'):
if WeaponGlobals.C_KNOCKDOWN not in self.getSkillEffects() or skillEffectId == WeaponGlobals.C_KNOCKDOWN:
ouchSfx = None
if self.currentWeapon:
if not self.avatarType.isA(AvatarTypes.Creature) and skillEffectId == WeaponGlobals.C_KNOCKDOWN and not ItemGlobals.getWeaponAttributes(self.currentWeaponId, ItemGlobals.SURE_FOOTED):
if self.isLocal():
actorIval = Sequence(self.actorInterval('injured_fall', playRate = 1.5, blendOutT = 0), self.actorInterval('injured_standup', playRate = 1.5, blendInT = 0), Func(messenger.send, 'skillFinished'))
else:
actorIval = Sequence(self.actorInterval('injured_fall', playRate = 1.5, blendOutT = 0), self.actorInterval('injured_standup', playRate = 1.5, blendInT = 0))
elif not self.avatarType.isA(AvatarTypes.Creature) and effectId == WeaponGlobals.VFX_BLIND:
actorIval = self.actorInterval('sand_in_eyes_holdweapon_noswing', playRate = random.uniform(0.69999999999999996, 1.5))
else:
actorIval = self.actorInterval(self.currentWeapon.painAnim, playRate = random.uniform(0.69999999999999996, 1.5))
if WeaponGlobals.getIsStaffAttackSkill(skillId):
skillInfo = WeaponGlobals.getSkillAnimInfo(skillId)
getOuchSfxFunc = skillInfo[WeaponGlobals.OUCH_SFX_INDEX]
if getOuchSfxFunc:
ouchSfx = getOuchSfxFunc()
else:
ouchSfx = self.getSfx('pain')
elif not self.avatarType.isA(AvatarTypes.Creature) and skillEffectId == WeaponGlobals.C_KNOCKDOWN:
actorIval = Sequence(self.actorInterval('injured_fall', playRate = 1.5, blendOutT = 0), self.actorInterval('injured_standup', playRate = 1.5, blendInT = 0))
elif not self.avatarType.isA(AvatarTypes.Creature) and effectId == WeaponGlobals.VFX_BLIND:
actorIval = self.actorInterval('sand_in_eyes', playRate = random.uniform(0.69999999999999996, 1.5))
else:
actorIval = self.actorInterval('idle_hit', playRate = random.uniform(0.69999999999999996, 1.5))
if ouchSfx:
self.ouchAnim = Sequence(Func(base.playSfx, ouchSfx, node = self, cutoff = 75), actorIval)
else:
self.ouchAnim = actorIval
self.ouchAnim.start()
skillEffectId == WeaponGlobals.C_KNOCKDOWN
if self.combatEffect:
self.combatEffect.destroy()
self.combatEffect = None
self.combatEffect = CombatEffect.CombatEffect(effectId, multihit, attacker, skillResult)
self.combatEffect.reparentTo(self)
self.combatEffect.setPos(self, pos[0], pos[1], pos[2])
if not WeaponGlobals.getIsDollAttackSkill(skillId) and not WeaponGlobals.getIsStaffAttackSkill(skillId):
if not WeaponGlobals.isSelfUseSkill(skillId):
if attacker and not attacker.isEmpty():
self.combatEffect.lookAt(attacker)
self.combatEffect.setH(self.combatEffect, 180)
skillEffects = self.getSkillEffects()
if WeaponGlobals.C_MELEE_SHIELD in skillEffects:
if WeaponGlobals.getAttackClass(skillId) == WeaponGlobals.AC_COMBAT:
self.pulseGhostGuardEffect(attacker, Vec4(0, 0, 0, 1), wantBlending = False)
elif WeaponGlobals.C_MISSILE_SHIELD in skillEffects:
if WeaponGlobals.getAttackClass(skillId) == WeaponGlobals.AC_MISSILE:
self.pulseGhostGuardEffect(attacker, Vec4(1, 1, 1, 1), wantBlending = True)
elif WeaponGlobals.C_MAGIC_SHIELD in skillEffects:
if WeaponGlobals.getAttackClass(skillId) == WeaponGlobals.AC_MAGIC:
self.pulseGhostGuardEffect(attacker, Vec4(0.5, 0.29999999999999999, 1, 1), wantBlending = True)
self.combatEffect.play()
if WeaponGlobals.getIsDollAttackSkill(skillId):
self.voodooSmokeEffect2 = AttuneSmoke.getEffect()
if self.voodooSmokeEffect2:
self.voodooSmokeEffect2.reparentTo(self)
self.voodooSmokeEffect2.setPos(0, 0, 0.20000000000000001)
self.voodooSmokeEffect2.play()