def __doTesla(zap, delay, fShowStun): toon = zap['toon'] level = zap['level'] hpbonus = zap['hpbonus'] target = zap['target'] suit = target['suit'] hp = target['hp'] kbbonus = target['kbbonus'] died = target['died'] revived = target['revived'] leftSuits = target['leftSuits'] rightSuits = target['rightSuits'] battle = zap['battle'] suitPos = suit.getPos(battle) origHpr = toon.getHpr(battle) hitSuit = hp > 0 scale = sprayScales[level] tButton = 0.0 dButtonScale = 0.5 dButtonHold = 3.0 dSprayScale = 0.1 dSprayHold = 1.8 tContact = 2.9 tSpray = 2.5 tSprayDelay = 2.5 tSuitDodges = 1.8 shrinkDuration = 0.4 tracks = Parallel() soundTrack = __getSoundTrack(level, hitSuit, 2.3, toon) tracks.append(soundTrack) button = globalPropPool.getProp('button') button2 = MovieUtil.copyProp(button) buttons = [button, button2] hands = toon.getLeftHands() toonTrack = Sequence(Func(MovieUtil.showProps, buttons, hands), Func(toon.headsUp, battle, suitPos), ActorInterval(toon, 'pushbutton'), Func(MovieUtil.removeProps, buttons), Func(toon.loop, 'neutral'), Func(toon.setHpr, battle, origHpr)) tracks.append(toonTrack) coil = globalPropPool.getProp('tesla') coilPos = Point3(toon.getX(battle), 2, 0) coilHpr = Point3(0, 0, 0) propTrack = Sequence() propTrack.append(Func(coil.show)) propTrack.append(Func(coil.setScale, Point3(0.1, 0.1, 0.1))) propTrack.append(Func(coil.reparentTo, battle)) propTrack.append(LerpScaleInterval(coil, 1.5, Point3(1.0, 1.0, 1.0))) propTrack.append(Wait(tSpray + 2)) propTrack.append( LerpScaleInterval(nodePath=coil, scale=Point3(1.0, 1.0, 0.1), duration=shrinkDuration)) propTrack.append(Func(MovieUtil.removeProp, coil)) tracks.append(propTrack) targetPoint = lambda suit=suit: __suitTargetPoint(suit) def getSprayStartPos(coil=coil, toon=toon): toon.update(0) p = coil.getPos(render) p.setZ(5) return p sprayTrack = Sequence() sprayTrack.append(Wait(tSprayDelay)) sprayTrack.append( MovieUtil.getZapTrack(battle, WaterSprayColor, getSprayStartPos, targetPoint, dSprayScale, dSprayHold, dSprayScale, horizScale=scale, vertScale=scale)) tracks.append(sprayTrack) if hp > 0 or delay <= 0: tracks.append( __getSuitTrack(suit, tContact, tSuitDodges, hp, hpbonus, kbbonus, 'shock', died, leftSuits, rightSuits, battle, toon, fShowStun, revived=revived)) return tracks
def __doRug(zap, delay, fShowStun): toon = zap['toon'] level = zap['level'] hpbonus = zap['hpbonus'] target = zap['target'] suit = target['suit'] hp = target['hp'] kbbonus = target['kbbonus'] died = target['died'] revived = target['revived'] leftSuits = target['leftSuits'] rightSuits = target['rightSuits'] battle = zap['battle'] suitPos = suit.getPos(battle) origHpr = toon.getHpr(battle) hitSuit = hp > 0 scale = sprayScales[level] tSpray = 5.2 sprayPoseFrame = 88 dSprayScale = 0.1 dSprayHold = 0.1 tContact = tSpray + dSprayScale tSuitDodges = max(tSpray - 0.5, 0.0) tracks = Parallel() tracks.append(ActorInterval(toon, 'run')) soundTrack = __getSoundTrack(level, hitSuit, 0, toon) tracks.append(soundTrack) rug = globalPropPool.getProp('zapRug') rugPos = Point3(0, 0, 0.025) rugHpr = Point3(0, 0, 0) glassTrack = Sequence( Func(MovieUtil.showProp, rug, toon, rugPos, rugHpr), ActorInterval(toon, 'walk', playRate=0.7), ActorInterval(toon, 'run'), ActorInterval(toon, 'run', playRate=1.1), ActorInterval(toon, 'run', playRate=1.2), ActorInterval(toon, 'run', playRate=1.3), ActorInterval(toon, 'run', playRate=1.4), ActorInterval(toon, 'water', playRate=1, startFrame=0, endFrame=36), Wait(1), Func(MovieUtil.removeProp, rug), Func(toon.loop, 'neutral'), Func(toon.setHpr, battle, origHpr)) tracks.append(glassTrack) targetPoint = lambda suit=suit: __suitTargetPoint(suit) def getSprayStartPos(toon=toon): toon.update(0) lod0 = toon.getLOD(toon.getLODNames()[0]) if base.config.GetBool('want-new-anims', 1): if not lod0.find('**/def_joint_right_hold').isEmpty(): joint = lod0.find('**/def_joint_right_hold') else: joint = lod0.find('**/joint_Rhold') else: joint = lod0.find('**/joint_Rhold') p = joint.getPos(render) return p sprayTrack = MovieUtil.getZapTrack(battle, WaterSprayColor, getSprayStartPos, targetPoint, dSprayScale, dSprayHold, dSprayScale, horizScale=scale, vertScale=scale) tracks.append(Sequence(Wait(tSpray), sprayTrack)) if hp > 0 or delay <= 0: tracks.append( __getSuitTrack(suit, tContact, tSuitDodges, hp, hpbonus, kbbonus, 'shock', died, leftSuits, rightSuits, battle, toon, fShowStun, revived=revived)) return tracks
def __doTazer(zap, delay, fShowStun): toon = zap['toon'] level = zap['level'] hpbonus = zap['hpbonus'] target = zap['target'] suit = target['suit'] hp = target['hp'] kbbonus = target['kbbonus'] died = target['died'] revived = target['revived'] leftSuits = target['leftSuits'] rightSuits = target['rightSuits'] battle = zap['battle'] suitPos = suit.getPos(battle) origHpr = toon.getHpr(battle) origPos = toon.getPos(battle) tazer = globalPropPool.getProp('tazer') tazer.setHpr(180, 0, 0) runBackHpr = Vec3(0, 0, 0) hands = toon.getRightHands() hand_jointpath0 = hands[0].attachNewNode('handJoint0-path') hand_jointpath1 = hand_jointpath0.instanceTo(hands[1]) hitSuit = hp > 0 scale = 0.3 tAppearDelay = 0.7 dHoseHold = 0.7 midPos = Point3(toon.getX(battle) * .5, 0, 0) runDur = 1 tSprayDelay = 2 tSpray = 1 dSprayScale = 0.1 dSprayHold = 1.8 tContact = 2 tSuitDodges = 2.1 tracks = Parallel() toonTrack = Sequence(Wait(tAppearDelay), Func(MovieUtil.showProp, tazer, hand_jointpath0), Func(toon.headsUp, battle, suitPos), Func(toon.loop, 'run'), Wait(1), Func(toon.pingpong, 'cast', fromFrame=30, toFrame=40), Wait(3), Func(toon.stop), Func(toon.setHpr, battle, runBackHpr), Func(toon.loop, 'run'), Func(toon.loop, 'neutral'), Func(MovieUtil.removeProp, tazer), Func(toon.setHpr, battle, origHpr)) moveTrack = Sequence(Wait(tAppearDelay), LerpPosInterval(toon, runDur, midPos, other=battle), Wait(3), LerpPosInterval(toon, runDur, origPos, other=battle)) tracks.append(toonTrack) tracks.append(moveTrack) soundTrack = __getSoundTrack(level, hitSuit, tSprayDelay, toon) tracks.append(soundTrack) targetPoint = lambda suit=suit: __suitTargetPoint(suit) def getSprayStartPos(tazer=tazer, toon=toon): toon.update(0) p = tazer.getPos(render) return p sprayTrack = Sequence() sprayTrack.append(Wait(tSprayDelay)) sprayTrack.append( MovieUtil.getZapTrack(battle, WaterSprayColor, getSprayStartPos, targetPoint, dSprayScale, dSprayHold, dSprayScale, horizScale=scale, vertScale=scale)) tracks.append(sprayTrack) if hp > 0 or delay <= 0: tracks.append( __getSuitTrack(suit, tContact, tSuitDodges, hp, hpbonus, kbbonus, 'shock', died, leftSuits, rightSuits, battle, toon, fShowStun, revived=revived)) return tracks
def __doJoybuzzer(zap, delay, fShowStun): toon = zap['toon'] level = zap['level'] hpbonus = zap['hpbonus'] target = zap['target'] suit = target['suit'] hp = target['hp'] kbbonus = target['kbbonus'] died = target['died'] revived = target['revived'] leftSuits = target['leftSuits'] rightSuits = target['rightSuits'] battle = zap['battle'] suitPos = suit.getPos(battle) origHpr = toon.getHpr(battle) hitSuit = hp > 0 scale = sprayScales[level] tTotalFlowerToonAnimationTime = 2 tFlowerFirstAppears = 1.0 dFlowerScaleTime = 0.5 tSprayStarts = tTotalFlowerToonAnimationTime dSprayScale = 0.2 dSprayHold = 0.1 tContact = tSprayStarts + dSprayScale tSuitDodges = tTotalFlowerToonAnimationTime tracks = Parallel() button = globalPropPool.getProp('joybuzz') button2 = MovieUtil.copyProp(button) buttons = [button, button2] hands = toon.getRightHands() toonTrack = Sequence( Func(MovieUtil.showProps, buttons, hands, Vec3((0.3, 0, 0)), Vec3((-10, -60, 0))), Func(toon.headsUp, battle, suitPos), ActorInterval(toon, 'water-gun'), Func(MovieUtil.removeProps, buttons), Func(toon.loop, 'neutral'), Func(toon.setHpr, battle, origHpr)) tracks.append(toonTrack) tracks.append( __getSoundTrack(level, hitSuit, tTotalFlowerToonAnimationTime, toon)) targetPoint = lambda suit=suit: __suitTargetPoint(suit) def getSprayStartPos(toon=toon): toon.update(0) p = button2.getPos(toon) return p sprayTrack = MovieUtil.getZapTrack(battle, WaterSprayColor, getSprayStartPos, targetPoint, dSprayScale, dSprayHold, dSprayScale, horizScale=scale, vertScale=scale) if hp > 0 or delay <= 0: tracks.append( __getSuitTrack(suit, tContact, tSuitDodges, hp, hpbonus, kbbonus, 'shock', died, leftSuits, rightSuits, battle, toon, fShowStun, revived=revived)) return tracks