EMOTE_SHRUG = 60809 EMOTE_SINCERETHANKS = 60810 EMOTE_SNARL = 60811 EMOTE_GUN_DRAW = 60900 EMOTE_GUN_AIM = 60901 EMOTE_GUN_PUTAWAY = 60902 EMOTE_FART = 60903 EMOTE_DRINKPOTION = 60904 EMOTE_NED_CRAZY = 60905 EMOTE_BLACKHAND_SWORD_A = 60906 EMOTE_BLACKHAND_SWORD_B = 60907 EMOTE_BLACKHAND_SWORD_C = 60908 EMOTE_BLACKHAND = 60909 EMOTE_YES = 65000 EMOTE_NO = 65001 emotes = {EMOTE_RECEIVE_DOLL: {'anim': 'doll_receive', 'prop': 'models/handheld/voodoo_doll_high'}, EMOTE_RECEIVE_STAFF: {'anim': 'staff_receive', 'prop': 'models/handheld/voodoo_staff_high'}, EMOTE_RECEIVE_DAGGER: {'anim': 'dagger_receive', 'prop': 'models/handheld/dagger_high'}, EMOTE_RECEIVE_GRENADE: {'anim': 'bomb_receive', 'prop': 'models/ammunition/grenade'}, EMOTE_DANCE_JIG: {'anim': 'emote_dance_jig_loop', 'loop': 1, 'group': OL.Emotes_General}, EMOTE_FLEX: {'anim': 'emote_flex', 'group': OL.Emotes_General}, EMOTE_PRIMP: {'anim': 'primp_idle', 'loop': 1, 'group': OL.Emotes_General, 'gender': 'f'}, EMOTE_ANGRY: {'anim': 'emote_anger', 'group': OL.Emotes_Expressions}, EMOTE_CELEBRATE: {'anim': 'emote_celebrate', 'group': OL.Emotes_General}, EMOTE_CLAP: {'anim': 'emote_clap', 'group': OL.Emotes_General, 'sfx': loadSfxString(SoundGlobals.SFX_AVATAR_CLAP)}, EMOTE_FEAR: {'anim': 'emote_fear', 'group': OL.Emotes_Expressions}, EMOTE_LAUGH: {'anim': 'emote_laugh', 'group': OL.Emotes_Expressions}, EMOTE_NO: {'anim': 'emote_no', 'group': OL.Emotes_General}, EMOTE_SAD: {'anim': 'emote_sad', 'group': OL.Emotes_Expressions}, EMOTE_SMILE: {'anim': 'emote_smile', 'group': OL.Emotes_Expressions}, EMOTE_WAVE: {'anim': 'emote_wave', 'group': OL.Emotes_General}, EMOTE_WINK: {'anim': 'emote_wink', 'group': OL.Emotes_General}, EMOTE_YAWN: {'anim': 'emote_yawn', 'group': OL.Emotes_Expressions}, EMOTE_YES: {'anim': 'emote_yes', 'group': OL.Emotes_General}, EMOTE_SLEEP: {'anim': 'sleep_idle', 'loop': 1, 'group': OL.Emotes_General}, EMOTE_VALENTINES: {'prereqs': [IsHoliday(HolidayGlobals.VALENTINESDAY)], 'anim': 'emote_wink', 'group': OL.Emotes_General}, EMOTE_NOISEMAKER: {'prereqs': [IsHoliday(HolidayGlobals.WINTERFESTIVAL)], 'anim': 'emote_newyears', 'prop': 'models/handheld/pir_m_hnd_hol_noisemaker08', 'group': OL.Emotes_General, 'sfx': loadSfxString(SoundGlobals.SFX_AVATAR_NOISEMAKER)}, EMOTE_HALLOWEEN: {'prereqs': [IsHoliday(HolidayGlobals.ZOMBIEEMOTE)], 'anim': 'emote_thriller', 'group': OL.Emotes_General}, EMOTE_CHEER: {'anim': 'emote_celebrate'}, EMOTE_TIRED: {'anim': 'sleep_idle_loop', 'loop': 1}, EMOTE_NOD: {'anim': 'emote_yes'}, EMOTE_GREET: {'anim': 'emote_wave'}, EMOTE_LOL: {'anim': 'emote_laugh'}, EMOTE_SCARED: {'anim': 'emote_fear'}, EMOTE_GRIN: {'anim': 'emote_smile'}, EMOTE_HAPPY: {'anim': 'emote_smile'}, EMOTE_DANCE: {'anim': 'emote_dance_jig', 'loop': 1}, EMOTE_BORED: {'anim': 'idle_B_shiftWeight', 'loop': 1}, EMOTE_CACKLE: {'anim': 'emote_laugh'}, EMOTE_HAIL: {'anim': 'emote_wave'}, EMOTE_SORRY: {'anim': 'sleep_idle', 'loop': 1}, EMOTE_HISS: {'anim': 'emote_anger'}, EMOTE_IMPATIENT: {'anim': 'idle_B_shiftWeight', 'loop': 1}, EMOTE_CONFUSED: {'anim': 'idle_head_scratch'}, EMOTE_WAIT: {'anim': 'emote_no'}, EMOTE_GLARE: {'anim': 'idle_handhip', 'loop': 1}, EMOTE_COIN_HEADS: {'anim': None}, EMOTE_COIN_TAILS: {'anim': None}, EMOTE_DUHHH: {'anim': 'emote_duhhh'}, EMOTE_BLOWKISS: {'anim': 'emote_blow_kiss'}, EMOTE_FLIRT: {'anim': 'emote_flirt'}, EMOTE_SASSY: {'anim': 'emote_sassy'}, EMOTE_TALKTOHAND: {'anim': 'emote_talk_to_the_hand'}, EMOTE_INSANE: {'anim': 'emote_crazy'}, EMOTE_CUTTHROAT: {'anim': 'emote_cut_throat'}, EMOTE_EMBARRASSED: {'anim': 'emote_embarrassed'}, EMOTE_FACESMACK: {'anim': 'emote_face_smack'}, EMOTE_HANDITOVER: {'anim': 'emote_hand_it_over'}, EMOTE_HEADSCRATCH: {'anim': 'emote_head_scratch'}, EMOTE_NERVOUS: {'anim': 'emote_nervous'}, EMOTE_PETRIFIED: {'anim': 'emote_scared'}, EMOTE_SHOWMEMONEY: {'anim': 'emote_show_me_the_money'}, EMOTE_SHRUG: {'anim': 'emote_shrug'}, EMOTE_SINCERETHANKS: {'anim': 'emote_sincere_thanks'}, EMOTE_SNARL: {'anim': 'emote_snarl'}, EMOTE_GUN_DRAW: {'anim': 'gun_draw', 'prop': 'models/handheld/pir_m_hnd_gun_pistol_a'}, EMOTE_GUN_AIM: {'anim': 'gun_aim_idle', 'loop': 1, 'prop': 'models/handheld/pir_m_hnd_gun_pistol_a'}, EMOTE_GUN_PUTAWAY: {'anim': 'gun_putaway', 'prop': 'models/handheld/pir_m_hnd_gun_pistol_a'}, EMOTE_FART: {'anim': 'fart', 'sfx': loadSfxString(SoundGlobals.SFX_MINIGAME_POTION_FX_FART_1)}, EMOTE_DRINKPOTION: {'anim': 'drink_potion', 'prop': 'models/handheld/bottle_high', 'sfx': loadSfxString(SoundGlobals.SFX_CONSUMABLE_DRINK)}, EMOTE_NED_CRAZY: {'anim': 'crazy_ned_day_interact'}, EMOTE_BLACKHAND_SWORD_A: {'anim': 'hand_curse_get_sword', 'prop': 'models/handheld/pir_m_hnd_swd_davyJones_g', 'waitProp': 0.5, 'durProp': 17.0, 'vfx': BlackhandCurseSword}, EMOTE_BLACKHAND_SWORD_B: {'anim': 'hand_curse_get_sword', 'prop': 'models/handheld/pir_m_hnd_swd_davyJones_a', 'waitProp': 0.5, 'durProp': 17.0, 'vfx': BlackhandCurseSword}, EMOTE_BLACKHAND_SWORD_C: {'anim': 'hand_curse_get_sword', 'prop': 'models/handheld/pir_m_hnd_swd_davyJones_e', 'waitProp': 0.5, 'durProp': 17.0, 'vfx': BlackhandCurseSword}, EMOTE_BLACKHAND: {'prereqs': [DidQuest('rc.le.10lootTreasure')], 'anim': 'hand_curse_check', 'group': OL.Emotes_General}} def getEmotePrereqs(emoteId): if emotes.has_key(emoteId): return emotes[emoteId].get('prereqs', []) return [] def getEmoteAnim(emoteId): if emotes.has_key(emoteId): return emotes[emoteId].get('anim') return def getEmoteLoop(emoteId): if emotes.has_key(emoteId):
'loop': 1, 'group': OL.Emotes_General, 'gender': 'f' }, EMOTE_ANGRY: { 'anim': 'emote_anger', 'group': OL.Emotes_Expressions }, EMOTE_CELEBRATE: { 'anim': 'emote_celebrate', 'group': OL.Emotes_General }, EMOTE_CLAP: { 'anim': 'emote_clap', 'group': OL.Emotes_General, 'sfx': loadSfxString(SoundGlobals.SFX_AVATAR_CLAP) }, EMOTE_FEAR: { 'anim': 'emote_fear', 'group': OL.Emotes_Expressions }, EMOTE_LAUGH: { 'anim': 'emote_laugh', 'group': OL.Emotes_Expressions }, EMOTE_NO: { 'anim': 'emote_no', 'group': OL.Emotes_General }, EMOTE_SAD: { 'anim': 'emote_sad',
class EnvironmentEffects(DirectObject): __module__ = __name__ effectDict = { 'effect_gypsyball': [(GypsyBallGlow, Options.SpecialEffectsLow)], 'candle_effect': [(CandleFlame, Options.SpecialEffectsLow)], 'torch_effect': [(TorchFire, Options.SpecialEffectsLow)], 'no_glow_effect': [(TorchFire, Options.SpecialEffectsLow)], 'lantern_effect': [(LanternGlow, Options.SpecialEffectsMedium)], 'bonfire_effect': [(Bonfire, Options.SpecialEffectsMedium)], 'fireplace_effect': [(Fire, Options.SpecialEffectsLow)], 'watersplash_effect': [(WaterSplash, Options.SpecialEffectsHigh)], 'steam_effect': [(SteamEffect, Options.SpecialEffectsHigh)], 'darksteam_effect': [(DarkSteamEffect, Options.SpecialEffectsMedium)], 'steamcloud_effect': [(SteamCloud, Options.SpecialEffectsMedium)], 'cratersmoke_effect': [(CraterSmoke, Options.SpecialEffectsHigh)], 'lavaburst_effect': [(LavaBurst, Options.SpecialEffectsHigh)], 'blacksmoke_effect': [(BlackSmoke, Options.SpecialEffectsMedium)], 'lightsmoke_effect': [(LightSmoke, Options.SpecialEffectsMedium)], 'mysticsmoke_effect': [(MysticSmoke, Options.SpecialEffectsHigh)], 'mysticfire_effect': [(MysticFire, Options.SpecialEffectsHigh)], 'steam_vent_effect': [(SteamVent, Options.SpecialEffectsMedium)], 'lava_vent_effect': [(LavaVent, Options.SpecialEffectsMedium)], 'brazier_fire_effect': [(BrazierFire, Options.SpecialEffectsLow)], 'lava_smoke_effect': [(LavaSmoke, Options.SpecialEffectsMedium)], 'lava_steam_effect': [(LavaSteam, Options.SpecialEffectsMedium)], 'light_fire_effect': [(LightFire, Options.SpecialEffectsLow)], 'gentle_smoke_effect': [(GentleSmoke, Options.SpecialEffectsMedium)], 'ravenflock_effect': [(RavenFlock, Options.SpecialEffectsMedium)] } soundDict = { 'waterfall_sound': loadSfxString(SoundGlobals.SFX_FX_WATERFALL_SMALL), 'waterfall_cave_sound': loadSfxString(SoundGlobals.SFX_FX_WATERFALL_CAVE) } EffectNodeNames = effectDict.keys() animPartsDict = { 'hanging_pot': [('Hpr', 2, Point3(20, 20, 0), Point3(-20, -20, 0))], 'lightstream': [('UVOverlayScroll', 40, 0.15, 0.3, 'models/effects/cloudOverlay'), ('UVScroll', 1200, 1, 0), ('DelayColorFade', 2, Vec4(0.3, 0.3, 0.4, 1), Vec4(0.6, 0.6, 0.7, 1), 10), 'Unlit'] } def __init__(self, parent, modelPath): self.parent = parent self.modelPath = modelPath self.effects = [] self.sounds = [] self.intervals = [] self.lights = [] self.colorScale = None self.grass = None self.holidayLocators = {} self.holidayEffects = {} self.loadAnimParts() self.loadEffects() self.loadSounds() self.loadGrass() self.accept('HolidayStarted', self.loadHolidayEffects) self.accept('HolidayEnded', self.stopHolidayEffects) return def delete(self): self.ignore('HolidayStarted') self.ignore('HolidayEnded') for effect in self.effects: if effect: if not self.editorMode: self.parent.builder.unregisterEffect(effect) effect.destroy() effect = None self.effects = [] for holidayName in self.holidayEffects.keys(): self.stopHolidayEffects(holidayName) self.holidayEffects = {} for sound in self.sounds: if sound: sound.finish() sound = None self.sounds = [] for anim in self.intervals: if anim: anim.pause() del anim self.intervals = [] for light in self.lights: del light self.lights = [] if self.grass: self.grass.stop() self.grass.destroy() self.grass = None return def loadSingleEffect(self, nodePath): for effect in self.effectDict: locators = nodePath.findAllMatches('**/' + effect + '*;+s') for locator in locators: if not locator.isEmpty(): effectParent = locator.getParent() effects = self.effectDict.get(effect) for effectName in effects: glow = effectName[0](effectParent) return glow return def loadEffects(self): self.editorMode = hasattr(base, 'pe') if not self.parent: return effectSetting = None if not self.editorMode: effectSetting = base.options.getSpecialEffectsSetting() else: effectSetting = 2 for effectEntry in self.effectDict: locators = self.parent.findAllMatches('**/' + effectEntry + '*;+s') for locator in locators: if not locator.isEmpty(): if locator.getNetTag('Holiday') != '': self.holidayLocators[ effectEntry] = self.holidayLocators.has_key( effectEntry) or [locator] else: list = self.holidayLocators.get(effectEntry) list.append(locator) self.holidayLocators[effectEntry] = list elif not locator.isEmpty(): effectParent = locator locatorPos = locator.getPos() locatorHpr = locator.getHpr() locatorScale = locator.getScale() effects = self.effectDict.get(effectEntry) for effectName, effectLevel in effects: if effectLevel <= effectSetting: if isinstance(effectName, PooledEffect): effect = effectName.getEffect() effect.reparentTo(effectParent) else: effect = effectName(effectParent) if hasattr(effect, 'setEffectScale'): effect.setEffectScale(locatorScale[0]) if not effect.getNetTag('visZone'): effect.startLoop(effectSetting) self.effects.append(effect) if not self.editorMode: self.parent.builder.registerEffect(effect) if self.editorMode: return if base.cr.newsManager: for holidayId in base.cr.newsManager.getHolidayList().iterkeys(): self.loadHolidayEffects( HolidayGlobals.getHolidayName(holidayId)) return def unloadEffects(self): for effect in self.effects: if not self.editorMode: self.parent.builder.unregisterEffect(effect) effect.stop() effect = None for holidayName in self.holidayEffects.keys(): self.stopHolidayEffects(holidayName) self.holidayEffects = {} self.effects = [] return def loadHolidayEffects(self, holidayName): effectSetting = None if not hasattr(base, 'pe'): effectSetting = base.options.getSpecialEffectsSetting() else: effectSetting = 2 for effectEntry in self.holidayLocators.keys(): locators = self.holidayLocators.get(effectEntry) for locator in locators: if locator.getNetTag('Holiday') == holidayName: effectParent = locator.getParent() locatorPos = locator.getPos() locatorHpr = locator.getHpr() locatorScale = locator.getScale() effects = self.effectDict.get(effectEntry) for effectName, effectLevel in effects: if effectLevel <= effectSetting: if isinstance(effectName, PooledEffect): effect.reparentTo(effectParent) effect = effectName.getEffect() else: effect = effectName(effectParent) effect.setPos(locatorPos) if effectEntry != 'candle_effect': effect.setScale(locatorScale) effect.startLoop(effectSetting) if not self.holidayEffects.has_key(holidayName): self.holidayEffects[holidayName] = [effect] else: list = self.holidayEffects.get(holidayName) list.append(effect) self.holidayEffects[holidayName] = list return def stopHolidayEffects(self, holidayName): if not self.holidayEffects.has_key(holidayName): return for effect in self.holidayEffects.get(holidayName): effect.stop() effect = None self.holidayEffects[holidayName] = [] return def loadSounds(self): if self.parent: for effect in self.soundDict: locators = self.parent.findAllMatches('**/' + effect + '*;+s') sfx = loader.loadSfx(self.soundDict.get(effect)) for locator in locators: if not locator.isEmpty(): soundFX = SoundInterval(sfx, node=locator, volume=0.5, seamlessLoop=False) soundFX.loop() self.sounds.append(soundFX) locator.stash() def soundVolumeDown(self): for effect in self.sounds: effect.volume = 0.25 def soundVolumeUp(self): for effect in self.sounds: effect.volume = 0.5 def loadAnimParts(self): if self.parent: for part in self.animPartsDict: foundParts = self.parent.findAllMatches('**/' + part + '*;+s') for myPart in foundParts: if not myPart.isEmpty(): effects = self.animPartsDict.get(part) for effect in effects: if effect[0] == 'Hpr': randomness = random.random() / 10 rotate1 = myPart.hprInterval( effect[1] + randomness, effect[3], startHpr=effect[2], blendType='easeInOut') rotate2 = myPart.hprInterval( effect[1] + randomness, effect[2], startHpr=effect[3], blendType='easeInOut') anim = Sequence(rotate1, rotate2) anim.loop() self.intervals.append(anim) elif effect[0] == 'ColorFade': randomness = random.random() / 10 fadeIn = myPart.colorInterval( effect[1] + randomness, effect[3], startColor=effect[2]) fadeOut = myPart.colorInterval( effect[1] + randomness, effect[2], startColor=effect[3]) anim = Sequence(fadeIn, fadeOut) anim.loop() self.intervals.append(anim) elif effect[0] == 'DelayColorFade': randomness = random.random() / 10 fadeIn = myPart.colorInterval( effect[1] + randomness, effect[3], startColor=effect[2]) fadeOut = myPart.colorInterval( effect[1] + randomness, effect[2], startColor=effect[3]) anim = Sequence(fadeIn, Wait(effect[4]), fadeOut, Wait(effect[4])) anim.loop() self.intervals.append(anim) elif effect[0] == 'UVScroll': t = myPart.findAllTextureStages()[0] randomness = random.random() / 10 anim = LerpFunctionInterval( self.setNewUVs, fromData=0.0, toData=10.0, duration=effect[1] + randomness, extraArgs=[myPart, t, effect]) anim.loop() self.intervals.append(anim) elif effect[0] == 'UVOverlayScroll': t = TextureStage('t') t.setMode(TextureStage.MBlend) t.setSort(60) card = loader.loadModel(effect[4]) tex = card.findTexture('*') myPart.setTexture(t, tex) myPart.setTexScale(t, 2, 2) randomness = random.random() / 10 anim = LerpFunctionInterval( self.setNewUVs, fromData=0.0, toData=10.0, duration=effect[1] + randomness, extraArgs=[myPart, t, effect]) anim.loop() self.intervals.append(anim) elif effect[0] == 'Unlit': myPart.setDepthWrite(0) myPart.setColorScaleOff() myPart.setFogOff() def loadGrass(self): if base.config.GetBool('want-grass', 0) and Grass.HasGrass( self.modelPath): self.grass = Grass.Grass(self.parent) self.grass.reparentTo(self.parent) def setNewUVs(self, time, part, ts, effect): part.setTexOffset(ts, time * effect[2], time * effect[3]) def setupAnimActor(self): if not hasattr(self.parent, 'geom'): return pt = Actor.Actor() self.parent.geom.detachNode() pt.loadModel(self.parent.geom, copy=0) pt.loadModel(self.modelPrefix + 'none') pt.loadAnims({'idle': self.modelPrefix + 'idle'}) pt.reparentTo(self.parent) pt.loop('idle') mesh = pt.findAllMatches('**/RockMeshGroup') if not mesh.isEmpty(): mesh = mesh[0] mesh.flattenStrong() tc = mesh.findAllTextureStages() for k in range(0, tc.getNumTextureStages()): if tc[k].getTexcoordName().getName().find('Top') != -1: joint = pt.findAllMatches('**/uvj_WaterTexture')[0] ts = tc[k] mesh.setTexProjector(ts, joint, self.parent) mesh = pt.findAllMatches('**/WaterfallMeshGroup') if not mesh.isEmpty(): mesh = mesh[0] tc = mesh.findTextureStage('default') joints = pt.findAllMatches('**/uvj_WaterfallTexture') if tc: if not joints.isEmpty(): joint = joints[0] ts = tc mesh.setTexProjector(ts, joint, self.parent) mesh = pt.findAllMatches('**/LightMeshGroup') if not mesh.isEmpty(): mesh = mesh[0] mesh.flattenStrong() tc = mesh.findTextureStage('default') joints = pt.findAllMatches('**/uvj_LightTexture') if tc and not joints.isEmpty(): joint = joints[0] ts = tc mesh.setTexProjector(ts, joint, self.parent) mesh = pt.findAllMatches('**/WaterMeshGroup') mesh = mesh.isEmpty() or mesh[0] mesh.flattenStrong() tc = mesh.findAllTextureStages() for k in range(0, tc.getNumTextureStages()): if tc[k].getName().find('dummy') != -1: continue if tc[k].getTexcoordName().getName().find('Top') != -1: joint = pt.findAllMatches('**/uvj_WaterTopTexture')[0] ts = tc[k] mesh.setTexProjector(ts, joint, render) if tc[k].getTexcoordName().getName().find('Bottom') != -1: joint = pt.findAllMatches('**/uvj_WaterBottomTexture')[0] ts = tc[k] mesh.setTexProjector(ts, joint, self.parent) return pt def loadPolylights(self): if self.parent: polyLights = self.parent.findAllMatches('**/polylight*') for i in range(len(polyLights)): light = polyLights[i] plNode = light.node() print 'light node radius = %s' % plNode.getRadius() plNode.setFlickerType(PolylightNode.FSIN) plNode.setAttenuation(PolylightNode.AQUADRATIC) plNode.setRadius(20) effect = base.localAvatar.node().getEffect( PolylightEffect.getClassType()).addLight(light) base.localAvatar.node().setEffect(effect) self.lights.append(light)
from pirates.audio import SoundGlobals from pirates.audio.SoundGlobals import loadSfxString SOUND_FX_LIST = { 'Cannon Fire': [ loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_FIRE_01), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_FIRE_02), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_FIRE_03), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_FIRE_04), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_FIRE_05) ], 'Distant Cannon': [ loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_DIST_FIRE_01), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_DIST_FIRE_02), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_DIST_FIRE_03), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_DIST_FIRE_04), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_DIST_FIRE_05), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_DIST_FIRE_06), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_DIST_FIRE_07), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_DIST_FIRE_08), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_DIST_FIRE_09), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_DIST_FIRE_10) ], 'Ambient': [loadSfxString(SoundGlobals.SFX_AMBIENT_SHORE)], 'Sword': [ loadSfxString(SoundGlobals.SFX_WEAPON_CUTLASS_CLASHCLANG), loadSfxString(SoundGlobals.SFX_WEAPON_CUTLASS_SWIPECLANG_01), loadSfxString(SoundGlobals.SFX_WEAPON_CUTLASS_SWIPECLANG_02), loadSfxString(SoundGlobals.SFX_WEAPON_CUTLASS_SWIPECLANG_03) ], 'Explosion': [ loadSfxString(SoundGlobals.SFX_FX_EXPLODE_WOOD_01),
class Knife(DirectFrame): SOUNDS = { 'miss': loadSfxString(SoundGlobals.SFX_MINIGAME_BH_MISS), 'hit': loadSfxString(SoundGlobals.SFX_MINIGAME_BH_HIT) } POSHPR = { 'neutral': (Vec3(0.12, 0, 1.25), Vec3(0.0, 0.0, 10.0)), 'in': (Vec3(0.029999999999999999, 0, 1.1299999999999999), Vec3(0.0, 0.0, 0.0)), 'out': (Vec3(0.12, 0, 1.3500000000000001), Vec3(0.0, 0.0, 15.0)) } def __init__(self, *args, **kwargs): DirectFrame.__init__(self, *args, **args) self.initialiseoptions(Knife) model = loader.loadModel('models/props/BH_images') self.shadowTurner = DirectFrame(parent = self, relief = None) self.shadow = DirectFrame(parent = self.shadowTurner, relief = None, geom = model.find('**/BH_shadow'), scale = 0.074999999999999997, pos = (0.0, 0.0, 0.80000000000000004)) self.shadow.setColorScale(1.0, 0.0, 0.0, 1.0) self.knifeTurner = DirectFrame(parent = self, relief = None) self.knife = DirectFrame(parent = self.knifeTurner, relief = None, geom = model.find('**/BH_bone'), scale = 0.75, pos = self.POSHPR['neutral'][0], hpr = self.POSHPR['neutral'][1]) self.seq = None self.initSounds() def initSounds(self): self.sounds = { } for key in Knife.SOUNDS.keys(): self.sounds[key] = loader.loadSfx(self.SOUNDS[key]) def turn(self, angle): self.knifeTurner.setR(angle) self.shadowTurner.setR(angle) def strike(self, danger): if self.seq: self.seq.finish() def check(angle): if angle <= BishopsHandGlobals.FINGER_RANGES[0][0]: mistake = 0 id = 0 elif BishopsHandGlobals.FINGER_RANGES[0][0] < angle: pass elif angle <= BishopsHandGlobals.FINGER_RANGES[0][0]: mistake = 1 id = 1 elif BishopsHandGlobals.FINGER_RANGES[0][1] < angle: pass elif angle <= BishopsHandGlobals.FINGER_RANGES[0][0]: mistake = 0 id = 1 elif BishopsHandGlobals.FINGER_RANGES[1][0] < angle: pass elif angle <= BishopsHandGlobals.FINGER_RANGES[0][0]: mistake = 1 id = 2 elif BishopsHandGlobals.FINGER_RANGES[1][1] < angle: pass elif angle <= BishopsHandGlobals.FINGER_RANGES[0][0]: mistake = 0 id = 2 elif BishopsHandGlobals.FINGER_RANGES[2][0] < angle: pass elif angle <= BishopsHandGlobals.FINGER_RANGES[0][0]: mistake = 1 id = 3 elif BishopsHandGlobals.FINGER_RANGES[2][1] < angle: pass elif angle <= BishopsHandGlobals.FINGER_RANGES[0][0]: mistake = 0 id = 3 elif BishopsHandGlobals.FINGER_RANGES[3][0] < angle: pass elif angle <= BishopsHandGlobals.FINGER_RANGES[0][0]: mistake = 1 id = 4 else: mistake = 0 id = 4 return (mistake, id) def getSound(checkVal): result = check(angle) if result[0]: return self.sounds['hit'] return self.sounds['miss'] angle = self.knifeTurner.getR() checkVal = check(angle) if danger: sound = getSound(checkVal) self.seq = Sequence() pos = self.POSHPR['in'][0] hpr = self.POSHPR['in'][1] self.seq.append(Func(self.knife.setPosHpr, pos, hpr)) self.seq.append(Func(sound.setVolume, 1.0)) self.seq.append(Func(sound.play)) self.seq.append(Wait(0.10000000000000001)) pos = self.POSHPR['neutral'][0] hpr = self.POSHPR['neutral'][1] self.seq.append(Func(self.knife.setPosHpr, pos, hpr)) self.seq.start() return checkVal else: sound = self.sounds['miss'] self.seq = Sequence() pos = self.POSHPR['out'][0] hpr = self.POSHPR['out'][1] self.seq.append(Func(self.knife.setPosHpr, pos, hpr)) self.seq.append(Func(sound.setVolume, 0.25)) self.seq.append(Func(sound.play)) self.seq.append(Wait(0.10000000000000001)) pos = self.POSHPR['neutral'][0] hpr = self.POSHPR['neutral'][1] self.seq.append(Func(self.knife.setPosHpr, pos, hpr)) self.seq.start() return (-1, 0)
'group': OL.Emotes_General }, EMOTE_PRIMP: { 'anim': 'primp_idle', 'loop': 1, 'group': OL.Emotes_General, 'gender': 'f' }, EMOTE_ANGRY: { 'anim': 'emote_anger', 'group': OL.Emotes_Expressions }, EMOTE_CELEBRATE: { 'anim': 'emote_celebrate', 'group': OL.Emotes_General }, EMOTE_CLAP: { 'anim': 'emote_clap', 'group': OL.Emotes_General, 'sfx': loadSfxString(SoundGlobals.SFX_AVATAR_CLAP) }, EMOTE_FEAR: { 'anim': 'emote_fear', 'group': OL.Emotes_Expressions }, EMOTE_LAUGH: { 'anim': 'emote_laugh', 'group': OL.Emotes_Expressions }, EMOTE_NO: { 'anim': 'emote_no', 'group': OL.Emotes_General }, EMOTE_SAD: { 'anim': 'emote_sad', 'group': OL.Emotes_Expressions }, EMOTE_SMILE: { 'anim': 'emote_smile', 'group': OL.Emotes_Expressions },
'components': tuple(''), 'actorFunctors': None, 'soundFile': None, 'filmSizeHorizontal': 42.667000000000002, 'focalLength': 30 } def __init__(self, *args, **kwArgs): POD.__init__(self, *args, **args) self.filename = CutsceneFilenames[self.id] CutsceneData = { Cutscene1_1_1: CutsceneDesc(id = Cutscene1_1_1, components = [ ''], actorFunctors = [ CutJackSparrow, Functor(CutLocalPirate, False)], soundFile = loadSfxString(SoundGlobals.CS_1_1_A_JS), filmSizeHorizontal = 42.667000000000002, focalLength = 50), Cutscene1_1_2: CutsceneDesc(id = Cutscene1_1_2, components = [ ''], actorFunctors = [ CutJackSparrow, Functor(CutLocalPirate, False)], soundFile = loadSfxString(SoundGlobals.CS_1_1_B_JS), filmSizeHorizontal = 42.667000000000002, focalLength = 50), Cutscene1_1_5_a: CutsceneDesc(id = Cutscene1_1_5_a, components = [ ''], actorFunctors = [ Functor(CutLocalPirate, False), Functor(CutBartenderMmsDoggerel, 1), Functor(CutBartenderFmiNell, 1)], soundFile = loadSfxString(SoundGlobals.CS_1_1_5_A_DAN), filmSizeHorizontal = 42.667000000000002, focalLength = 50), Cutscene1_1_5_b: CutsceneDesc(id = Cutscene1_1_5_b, components = [ ''], actorFunctors = [ Functor(CutLocalPirate, False), Functor(CutBartenderMmsDoggerel, 1), Functor(CutBartenderFmiNell, 1)], soundFile = loadSfxString(SoundGlobals.CS_1_1_5_B_DAN), filmSizeHorizontal = 42.667000000000002, focalLength = 50), Cutscene1_1_5_c: CutsceneDesc(id = Cutscene1_1_5_c, components = [
# File: S (Python 2.4) from pirates.audio import SoundGlobals from pirates.audio.SoundGlobals import loadSfxString SOUND_FX_LIST = { 'Cannon Fire': [ loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_FIRE_01), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_FIRE_02), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_FIRE_03), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_FIRE_04), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_FIRE_05)], 'Distant Cannon': [ loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_DIST_FIRE_01), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_DIST_FIRE_02), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_DIST_FIRE_03), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_DIST_FIRE_04), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_DIST_FIRE_05), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_DIST_FIRE_06), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_DIST_FIRE_07), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_DIST_FIRE_08), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_DIST_FIRE_09), loadSfxString(SoundGlobals.SFX_WEAPON_CANNON_DIST_FIRE_10)], 'Ambient': [ loadSfxString(SoundGlobals.SFX_AMBIENT_SHORE)], 'Sword': [ loadSfxString(SoundGlobals.SFX_WEAPON_CUTLASS_CLASHCLANG), loadSfxString(SoundGlobals.SFX_WEAPON_CUTLASS_SWIPECLANG_01), loadSfxString(SoundGlobals.SFX_WEAPON_CUTLASS_SWIPECLANG_02), loadSfxString(SoundGlobals.SFX_WEAPON_CUTLASS_SWIPECLANG_03)], 'Explosion': [ loadSfxString(SoundGlobals.SFX_FX_EXPLODE_WOOD_01),
'focalLength': 30 } def __init__(self, *args, **kwArgs): POD.__init__(self, *args, **kwArgs) self.filename = CutsceneFilenames[self.id] CutsceneData = { Cutscene1_1_1: CutsceneDesc( id=Cutscene1_1_1, components=[''], actorFunctors=[CutJackSparrow, Functor(CutLocalPirate, False)], soundFile=loadSfxString(SoundGlobals.CS_1_1_A_JS), filmSizeHorizontal=42.667, focalLength=50), Cutscene1_1_2: CutsceneDesc( id=Cutscene1_1_2, components=[''], actorFunctors=[CutJackSparrow, Functor(CutLocalPirate, False)], soundFile=loadSfxString(SoundGlobals.CS_1_1_B_JS), filmSizeHorizontal=42.667, focalLength=50), Cutscene1_1_5_a: CutsceneDesc(id=Cutscene1_1_5_a, components=[''], actorFunctors=[
Cutscene3_1 = '3.1: Sneaking to BlackPearl' Cutscene3_2 = '3.2: Jack and Joshamee' Cutscene6_1 = '6.1: Tia Showing Voodoo Doll' CutsceneNames = [ Cutscene1_1_1, Cutscene1_1_2, Cutscene1_1_5_a, Cutscene1_1_5_b, Cutscene1_1_5_c, Cutscene1_2, Cutscene1_3, Cutscene2_1, Cutscene2_1_b, Cutscene2_2, Cutscene2_3, Cutscene2_4, Cutscene2_4_b, Cutscene2_5, Cutscene3_1, Cutscene3_2, Cutscene6_1] CutsceneFilenames = {Cutscene1_1_1: 'tut_act_1_1_1_jail', Cutscene1_1_2: 'tut_act_1_1_2_jail', Cutscene1_1_5_a: 'tut_act_1_1_5_a_dan', Cutscene1_1_5_b: 'tut_act_1_1_5_b_dan', Cutscene1_1_5_c: 'tut_act_1_1_5_c_dan', Cutscene1_2: 'tut_act_1_2', Cutscene1_3: 'tut_act_1_3_jr', Cutscene2_1: 'tut_act_2_1_wt', Cutscene2_1_b: 'tut_act_2_1_b_wt', Cutscene2_2: 'tut_act_2_2_td', Cutscene2_3: 'tut_act_2_3_es', Cutscene2_4: 'tut_act_2_4_cb', Cutscene2_4_b: 'tut_act_2_4_cb', Cutscene2_5: 'tut_act_2_5_js', Cutscene3_1: 'tut_act_3_1_bp', Cutscene3_2: 'tut_act_3_2_js', Cutscene6_1: 'tut_act_6_1_td'} CutsceneSubtitles = {Cutscene1_1_1: [{'beginTime': 4, 'text': PLocalizer.CutSubtitle1_1_1__1}], Cutscene1_1_2: [{'beginTime': 0.5, 'text': PLocalizer.CutSubtitle1_1_2__1}, {'beginTime': 2.5, 'text': PLocalizer.CutSubtitle1_1_2__2}, {'beginTime': 12.5, 'text': PLocalizer.CutSubtitle1_1_2__3}, {'beginTime': 14.3, 'text': PLocalizer.CutSubtitle1_1_2__4, 'endTime': 20.0}], Cutscene1_1_5_a: [{'beginTime': 1.4, 'text': PLocalizer.CutSubtitle1_1_5_a__1}, {'beginTime': 4.8, 'text': PLocalizer.CutSubtitle1_1_5_a__2}, {'beginTime': 10.9, 'text': PLocalizer.CutSubtitle1_1_5_a__3}, {'beginTime': 13.2, 'text': PLocalizer.CutSubtitle1_1_5_a__4, 'endTime': 17.78}, {'beginTime': 20.0, 'text': PLocalizer.CutSubtitle1_1_5_a__5}, {'beginTime': 21.0, 'text': PLocalizer.CutSubtitle1_1_5_a__6}, {'beginTime': 25.71, 'text': PLocalizer.CutSubtitle1_1_5_a__7}], Cutscene1_1_5_b: [{'beginTime': 0.5, 'text': PLocalizer.CutSubtitle1_1_5_b__1}], Cutscene1_1_5_c: [{'beginTime': 0.4, 'text': PLocalizer.CutSubtitle1_1_5_c__1}, {'beginTime': 2.93, 'text': PLocalizer.CutSubtitle1_1_5_c__2}, {'beginTime': 5.7, 'text': PLocalizer.CutSubtitle1_1_5_c__3}, {'beginTime': 10.2, 'text': PLocalizer.CutSubtitle1_1_5_c__4}, {'beginTime': 13.7, 'text': PLocalizer.CutSubtitle1_1_5_c__5}, {'beginTime': 17.9, 'text': PLocalizer.CutSubtitle1_1_5_c__6}, {'beginTime': 24.36, 'text': PLocalizer.CutSubtitle1_1_5_c__7}, {'beginTime': 26.8, 'text': PLocalizer.CutSubtitle1_1_5_c__8}, {'beginTime': 32.2, 'text': PLocalizer.CutSubtitle1_1_5_c__9}, {'beginTime': 34.61, 'text': PLocalizer.CutSubtitle1_1_5_c__10}], Cutscene1_2: [{'beginTime': 1.55, 'text': PLocalizer.CutSubtitle1_2_a__1}, {'beginTime': 3.65, 'text': PLocalizer.CutSubtitle1_2_a__2}, {'beginTime': 6.47, 'text': PLocalizer.CutSubtitle1_2_a__3}, {'beginTime': 10.3, 'text': PLocalizer.CutSubtitle1_2_b__1}, {'beginTime': 13.49, 'text': PLocalizer.CutSubtitle1_2_b__2}, {'beginTime': 18.36, 'text': PLocalizer.CutSubtitle1_2_b__3}], Cutscene1_3: [{'beginTime': 0.3, 'text': PLocalizer.CutSubtitle1_3_a__1}, {'beginTime': 5.86, 'text': PLocalizer.CutSubtitle1_3_a__2}, {'beginTime': 11.45, 'text': PLocalizer.CutSubtitle1_3_a__3, 'endTime': 14.22}, {'beginTime': 16.5, 'text': PLocalizer.CutSubtitle1_3_a__4}, {'beginTime': 24.13, 'text': PLocalizer.CutSubtitle1_3_a__5}, {'beginTime': 27.7, 'text': PLocalizer.CutSubtitle1_3_a__6}, {'beginTime': 31.7, 'text': PLocalizer.CutSubtitle1_3_a__7, 'endTime': 35.0}, {'beginTime': 38.21, 'text': PLocalizer.CutSubtitle1_3_a__8}, {'beginTime': 42.6, 'text': PLocalizer.CutSubtitle1_3_a__9, 'endTime': 47.65}, {'beginTime': 51.7, 'text': PLocalizer.CutSubtitle1_3_a__10}, {'beginTime': 59.14, 'text': PLocalizer.CutSubtitle1_3_a__11}, {'beginTime': 65.6, 'text': PLocalizer.CutSubtitle1_3_a__12}, {'beginTime': 75.3, 'text': PLocalizer.CutSubtitle1_3_a__13}], Cutscene2_1: [{'beginTime': 3.0, 'text': PLocalizer.CutSubtitle2_1_a__1}, {'beginTime': 6.18, 'text': PLocalizer.CutSubtitle2_1_a__2}, {'beginTime': 11.79, 'text': PLocalizer.CutSubtitle2_1_a__3}, {'beginTime': 13.02, 'text': PLocalizer.CutSubtitle2_1_a__5}, {'beginTime': 16.41, 'text': PLocalizer.CutSubtitle2_1_a__6}, {'beginTime': 21.0, 'text': PLocalizer.CutSubtitle2_1_a__7}, {'beginTime': 28.45, 'text': PLocalizer.CutSubtitle2_1_a__8}, {'beginTime': 30.4, 'text': PLocalizer.CutSubtitle2_1_a__9}], Cutscene2_1_b: [{'beginTime': 1.2, 'text': PLocalizer.CutSubtitle2_1_b__1}, {'beginTime': 3.52, 'text': PLocalizer.CutSubtitle2_1_b__2, 'endTime': 9.08}, {'beginTime': 11.1, 'text': PLocalizer.CutSubtitle2_1_b__4}, {'beginTime': 13.75, 'text': PLocalizer.CutSubtitle2_1_b__6}], Cutscene2_2: [{'beginTime': 1.9, 'text': PLocalizer.CutSubtitle2_2__1}, {'beginTime': 7.37, 'text': PLocalizer.CutSubtitle2_2__2}, {'beginTime': 13.7, 'text': PLocalizer.CutSubtitle2_2__3}, {'beginTime': 22.82, 'text': PLocalizer.CutSubtitle2_2__4}, {'beginTime': 32.66, 'text': PLocalizer.CutSubtitle2_2__5}, {'beginTime': 38.64, 'text': PLocalizer.CutSubtitle2_2__6}, {'beginTime': 45.1, 'text': PLocalizer.CutSubtitle2_2__7}, {'beginTime': 53.52, 'text': PLocalizer.CutSubtitle2_2__8}, {'beginTime': 62.7, 'text': PLocalizer.CutSubtitle2_2__9}, {'beginTime': 70.11, 'text': PLocalizer.CutSubtitle2_2__10}, {'beginTime': 77.67, 'text': PLocalizer.CutSubtitle2_2__11}, {'beginTime': 84.92, 'text': PLocalizer.CutSubtitle2_2__12}], Cutscene2_3: [{'beginTime': 2.1, 'text': PLocalizer.CutSubtitle2_3__1}, {'beginTime': 6.26, 'text': PLocalizer.CutSubtitle2_3__2}, {'beginTime': 10.13, 'text': PLocalizer.CutSubtitle2_3__3}, {'beginTime': 15.4, 'text': PLocalizer.CutSubtitle2_3__4}, {'beginTime': 21.26, 'text': PLocalizer.CutSubtitle2_3__5}, {'beginTime': 24.68, 'text': PLocalizer.CutSubtitle2_3__6}, {'beginTime': 27.75, 'text': PLocalizer.CutSubtitle2_3__7, 'endTime': 31.34}, {'beginTime': 33.1, 'text': PLocalizer.CutSubtitle2_3__8}, {'beginTime': 38.15, 'text': PLocalizer.CutSubtitle2_3__9}, {'beginTime': 40.64, 'text': PLocalizer.CutSubtitle2_3__10}, {'beginTime': 43.48, 'text': PLocalizer.CutSubtitle2_3__11}, {'beginTime': 45.5, 'text': PLocalizer.CutSubtitle2_3__12}, {'beginTime': 51.11, 'text': PLocalizer.CutSubtitle2_3__13}], Cutscene2_4: [{'beginTime': 1.6, 'text': PLocalizer.CutSubtitle2_4_a__1}, {'beginTime': 3.92, 'text': PLocalizer.CutSubtitle2_4_a__2}, {'beginTime': 8.92, 'text': PLocalizer.CutSubtitle2_4_a__3}, {'beginTime': 16.91, 'text': PLocalizer.CutSubtitle2_4_a__4}], Cutscene2_4_b: [{'beginTime': 1.8, 'text': PLocalizer.CutSubtitle2_4_b__1}, {'beginTime': 8.32, 'text': PLocalizer.CutSubtitle2_4_b__2}, {'beginTime': 14.82, 'text': PLocalizer.CutSubtitle2_4_b__3}, {'beginTime': 21.17, 'text': PLocalizer.CutSubtitle2_4_b__4}, {'beginTime': 29.0, 'text': PLocalizer.CutSubtitle2_4_b__5}, {'beginTime': 35.03, 'text': PLocalizer.CutSubtitle2_4_b__6}], Cutscene2_5: [{'beginTime': 0, 'text': PLocalizer.CutSubtitle2_5__1}, {'beginTime': 2.02, 'text': PLocalizer.CutSubtitle2_5__2}, {'beginTime': 6.11, 'text': PLocalizer.CutSubtitle2_5__3}, {'beginTime': 10.0, 'text': PLocalizer.CutSubtitle2_5__4}, {'beginTime': 13.05, 'text': PLocalizer.CutSubtitle2_5__5}, {'beginTime': 18.32, 'text': PLocalizer.CutSubtitle2_5__6}, {'beginTime': 24.21, 'text': PLocalizer.CutSubtitle2_5__7}, {'beginTime': 29.1, 'text': PLocalizer.CutSubtitle2_5__8}, {'beginTime': 32.89, 'text': PLocalizer.CutSubtitle2_5__9}, {'beginTime': 38.3, 'text': PLocalizer.CutSubtitle2_5__10}, {'beginTime': 43.05, 'text': PLocalizer.CutSubtitle2_5__11, 'endTime': 46.68}, {'beginTime': 50.0, 'text': PLocalizer.CutSubtitle2_5__12}, {'beginTime': 53.01, 'text': PLocalizer.CutSubtitle2_5__13}, {'beginTime': 56.83, 'text': PLocalizer.CutSubtitle2_5__14}], Cutscene3_1: [{'beginTime': 1.9, 'text': PLocalizer.CutSubtitle3_1__1}, {'beginTime': 3.95, 'text': PLocalizer.CutSubtitle3_1__2}, {'beginTime': 7.45, 'text': PLocalizer.CutSubtitle3_1__3}, {'beginTime': 10.1, 'text': PLocalizer.CutSubtitle3_1__4}, {'beginTime': 13.58, 'text': PLocalizer.CutSubtitle3_1__5}, {'beginTime': 17.26, 'text': PLocalizer.CutSubtitle3_1__6}, {'beginTime': 18.51, 'text': PLocalizer.CutSubtitle3_1__7}, {'beginTime': 23.42, 'text': PLocalizer.CutSubtitle3_1__8}, {'beginTime': 29.67, 'text': PLocalizer.CutSubtitle3_1__9}, {'beginTime': 34.68, 'text': PLocalizer.CutSubtitle3_1__10}, {'beginTime': 38.48, 'text': PLocalizer.CutSubtitle3_1__11}, {'beginTime': 41.3, 'text': PLocalizer.CutSubtitle3_1__12}, {'beginTime': 46.4, 'text': PLocalizer.CutSubtitle3_1__13}, {'beginTime': 52.53, 'text': PLocalizer.CutSubtitle3_1__14}, {'beginTime': 59.4, 'text': PLocalizer.CutSubtitle3_1__15}, {'beginTime': 65.52, 'text': PLocalizer.CutSubtitle3_1__16}, {'beginTime': 69.5, 'text': PLocalizer.CutSubtitle3_1__17}], Cutscene3_2: [{'beginTime': 0, 'text': PLocalizer.CutSubtitle3_2__1}, {'beginTime': 4.41, 'text': PLocalizer.CutSubtitle3_2__2}, {'beginTime': 8.22, 'text': PLocalizer.CutSubtitle3_2__3}, {'beginTime': 14.96, 'text': PLocalizer.CutSubtitle3_2__4}, {'beginTime': 20.86, 'text': PLocalizer.CutSubtitle3_2__5}, {'beginTime': 26.55, 'text': PLocalizer.CutSubtitle3_2__6}, {'beginTime': 29.46, 'text': PLocalizer.CutSubtitle3_2__7}, {'beginTime': 31.06, 'text': PLocalizer.CutSubtitle3_2__8}, {'beginTime': 35.99, 'text': PLocalizer.CutSubtitle3_2__9}, {'beginTime': 38.0, 'text': PLocalizer.CutSubtitle3_2__10, 'endTime': 41.6}, {'beginTime': 43.0, 'text': PLocalizer.CutSubtitle3_2__11}, {'beginTime': 45.16, 'text': PLocalizer.CutSubtitle3_2__12}, {'beginTime': 51.6, 'text': PLocalizer.CutSubtitle3_2__13}, {'beginTime': 54.68, 'text': PLocalizer.CutSubtitle3_2__14}, {'beginTime': 59.47, 'text': PLocalizer.CutSubtitle3_2__15}, {'beginTime': 64.68, 'text': PLocalizer.CutSubtitle3_2__16}, {'beginTime': 69.2, 'text': PLocalizer.CutSubtitle3_2__17, 'endTime': 74.6}, {'beginTime': 79, 'text': PLocalizer.CutSubtitle3_2__18}, {'beginTime': 85.11, 'text': PLocalizer.CutSubtitle3_2__19}, {'beginTime': 88.92, 'text': PLocalizer.CutSubtitle3_2__20}, {'beginTime': 90.26, 'text': PLocalizer.CutSubtitle3_2__21}, {'beginTime': 94.73, 'text': PLocalizer.CutSubtitle3_2__22}, {'beginTime': 96.58, 'text': PLocalizer.CutSubtitle3_2__23}, {'beginTime': 100.46, 'text': PLocalizer.CutSubtitle3_2__24}], Cutscene6_1: [{'beginTime': 0, 'text': PLocalizer.CutSubtitle6_1__1}, {'beginTime': 3.5, 'text': PLocalizer.CutSubtitle6_1__2}, {'beginTime': 6.0, 'text': PLocalizer.CutSubtitle6_1__3}, {'beginTime': 9.9, 'text': PLocalizer.CutSubtitle6_1__4}, {'beginTime': 12.25, 'text': PLocalizer.CutSubtitle6_1__5}, {'beginTime': 14.6, 'text': PLocalizer.CutSubtitle6_1__6}, {'beginTime': 18.56, 'text': PLocalizer.CutSubtitle6_1__7}, {'beginTime': 21.3, 'text': PLocalizer.CutSubtitle6_1__8}]} CutsceneIds = CutsceneFilenames.keys() CutsceneIds.sort() PRELOADED_CUTSCENE_STAGE1 = [ Cutscene1_1_2] PRELOADED_CUTSCENE_STAGE2 = [ Cutscene1_1_5_a, Cutscene1_1_5_c] PRELOADED_CUTSCENE_STAGE3 = [ Cutscene1_2, Cutscene1_3] PRELOADED_CUTSCENE_STAGE4 = [ Cutscene2_1_b] PRELOADED_CUTSCENE_STAGE5 = [ Cutscene2_4_b] class CutsceneDesc(POD): __module__ = __name__ DataSet = {'id': None, 'components': tuple(''), 'actorFunctors': None, 'soundFile': None, 'filmSizeHorizontal': 42.667, 'focalLength': 30} def __init__(self, *args, **kwArgs): POD.__init__(self, *args, **kwArgs) self.filename = CutsceneFilenames[self.id] CutsceneData = {Cutscene1_1_1: CutsceneDesc(id=Cutscene1_1_1, components=[''], actorFunctors=[CutJackSparrow, Functor(CutLocalPirate, False)], soundFile=loadSfxString(SoundGlobals.CS_1_1_A_JS), filmSizeHorizontal=42.667, focalLength=50), Cutscene1_1_2: CutsceneDesc(id=Cutscene1_1_2, components=[''], actorFunctors=[CutJackSparrow, Functor(CutLocalPirate, False)], soundFile=loadSfxString(SoundGlobals.CS_1_1_B_JS), filmSizeHorizontal=42.667, focalLength=50), Cutscene1_1_5_a: CutsceneDesc(id=Cutscene1_1_5_a, components=[''], actorFunctors=[Functor(CutLocalPirate, False), Functor(CutBartenderMmsDoggerel, 1), Functor(CutBartenderFmiNell, 1)], soundFile=loadSfxString(SoundGlobals.CS_1_1_5_A_DAN), filmSizeHorizontal=42.667, focalLength=50), Cutscene1_1_5_b: CutsceneDesc(id=Cutscene1_1_5_b, components=[''], actorFunctors=[Functor(CutLocalPirate, False), Functor(CutBartenderMmsDoggerel, 1), Functor(CutBartenderFmiNell, 1)], soundFile=loadSfxString(SoundGlobals.CS_1_1_5_B_DAN), filmSizeHorizontal=42.667, focalLength=50), Cutscene1_1_5_c: CutsceneDesc(id=Cutscene1_1_5_c, components=[''], actorFunctors=[Functor(CutLocalPirate, False), Functor(CutBartenderMmsDoggerel, 1), Functor(CutBartenderFmiNell, 1)], soundFile=loadSfxString(SoundGlobals.CS_1_1_5_C_DAN), filmSizeHorizontal=42.667, focalLength=50), Cutscene1_2: CutsceneDesc(id=Cutscene1_2, components=['_dock', '_b_dock'], actorFunctors=[Functor(CutLocalPirate, False), Functor(CutCaptainBeckShort, 1), Functor(CutGenericActor, 'wheel', 'wheel_zero', 'models/props/'), Functor(CutShip, ShipGlobals.STUMPY_SHIP, ShipGlobals.Styles.Player)], soundFile=loadSfxString(SoundGlobals.CS_1_2_DOCK), filmSizeHorizontal=42.667, focalLength=50), Cutscene1_3: CutsceneDesc(id=Cutscene1_3, components=['_a', '_b'], actorFunctors=[CutJollyRoger, Functor(CutLocalPirate, False), Functor(CutGenericActor, 'wheel', 'wheel_zero', 'models/props/'), Functor(CutGenericActor, 'plank', 'plank_zero', 'models/props/'), Functor(CutCaptainBeckShort, 1), Functor(CutSkeleton, EarthUndead[0], 1), Functor(CutSkeleton, EarthUndead[4], 2), Functor(CutSkeleton, EarthUndead[2], 3), Functor(CutShip, ShipGlobals.STUMPY_SHIP, ShipGlobals.Styles.Player), Functor(CutShip, ShipGlobals.SKEL_DEATH_OMEN, ShipGlobals.Styles.Undead)], soundFile=loadSfxString(SoundGlobals.CS_1_3_JR), filmSizeHorizontal=42.667, focalLength=50), Cutscene2_1: CutsceneDesc(id=Cutscene2_1, components=[''], actorFunctors=[Functor(CutWillTurner, '1152830677.95jubutler'), Functor(CutLocalPirate, False)], soundFile=loadSfxString(SoundGlobals.CS_2_1_A_WT), filmSizeHorizontal=42.667, focalLength=72), Cutscene2_1_b: CutsceneDesc(id=Cutscene2_1_b, components=[''], actorFunctors=[Functor(CutWillTurner, '1152830677.95jubutler'), Functor(CutLocalPirate, False), Functor(CutSkeleton, EarthUndead[2], 2), Functor(CutSkeleton, EarthUndead[1], 3)], soundFile=loadSfxString(SoundGlobals.CS_2_1_B_WT), filmSizeHorizontal=42.667, focalLength=35), Cutscene2_2: CutsceneDesc(id=Cutscene2_2, components=[''], actorFunctors=[Functor(CutTiaDalma, '1154497344.0jubutlerPR'), Functor(CutLocalPirate, False), Functor(CutBlackGuard1, 1), Functor(CutBlackGuard2, 2), Functor(CutBlackGuard3, 3), CutJollyRoger, Functor(CutSkeleton, EarthUndead[4], 4), Functor(CutSkeleton, EarthUndead[2], 5), Functor(CutGenericActor, 'lantern', 'lantern_zero', 'models/props/'), Functor(CutGenericActor, 'crablegs', 'crablegs_zero', 'models/props/')], soundFile=loadSfxString(SoundGlobals.CS_2_2_TD), filmSizeHorizontal=42.667, focalLength=72), Cutscene2_3: CutsceneDesc(id=Cutscene2_3, components=[''], actorFunctors=[Functor(CutElizabethSwan, '1171325040.86MAsaduzz'), Functor(CutLocalPirate, False), Functor(CutGenericActor, 'paper', 'paper_zero', 'models/props/')], soundFile=loadSfxString(SoundGlobals.CS_2_3_ES), filmSizeHorizontal=42.667, focalLength=32), Cutscene2_4: CutsceneDesc(id=Cutscene2_4, components=['_a'], actorFunctors=[Functor(CutCaptBarbossa, '1172618710.78sdnaik'), Functor(CutLocalPirate, False), Functor(CutGenericActor, 'monkey', 'monkey_hi', 'models/char/')], soundFile=loadSfxString(SoundGlobals.CS_2_4_A_CB), filmSizeHorizontal=42.667, focalLength=50), Cutscene2_4_b: CutsceneDesc(id=Cutscene2_4_b, components=['_b', '_c'], actorFunctors=[Functor(CutCaptBarbossa, '1172618710.78sdnaik'), Functor(CutLocalPirate, True), Functor(CutGenericActor, 'monkey', 'monkey_hi', 'models/char/')], soundFile=loadSfxString(SoundGlobals.CS_2_4_B_CB), filmSizeHorizontal=42.667, focalLength=50), Cutscene2_5: CutsceneDesc(id=Cutscene2_5, components=[''], actorFunctors=[CutJackSparrow, Functor(CutLocalPirate, False), Functor(CutGenericActor, 'mug', 'mug_zero', 'models/props/'), Functor(CutBartenderPear, 1)], soundFile=loadSfxString(SoundGlobals.CS_2_5_JS), filmSizeHorizontal=42.667, focalLength=30), Cutscene3_1: CutsceneDesc(id=Cutscene3_1, components=[''], actorFunctors=[Functor(CutLocalPirate, False), Functor(CutGenericActor, 'open_paper', 'open_paper_zero', 'models/props/'), Functor(CutNavyMtpPeter, 1), Functor(CutNavyMtpJeff, 2), Functor(CutCaptainBeckShort, 3), Functor(CutBartenderMmsDoggerel, 4), Functor(CutShip, ShipGlobals.GOLIATH, ShipGlobals.Styles.Navy), Functor(CutShip, ShipGlobals.BLACK_PEARL, ShipGlobals.Styles.BP)], soundFile=loadSfxString(SoundGlobals.CS_3_1_BP), filmSizeHorizontal=42.667, focalLength=50), Cutscene3_2: CutsceneDesc(id=Cutscene3_2, components=[''], actorFunctors=[CutJackSparrow, Functor(CutLocalPirate, False), Functor(CutJoshGibbs, '1168022298.47Shochet')], soundFile=loadSfxString(SoundGlobals.CS_3_2_JS), filmSizeHorizontal=42.667, focalLength=50), Cutscene6_1: CutsceneDesc(id=Cutscene6_1, components=[''], actorFunctors=[Functor(CutTiaDalma, '1154497344.0jubutlerPR'), Functor(CutLocalPirate, False)], soundFile=loadSfxString(SoundGlobals.CS_6_1_TD), filmSizeHorizontal=42.667, focalLength=50)}