Ejemplo n.º 1
0
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):
Ejemplo n.º 2
0
     '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)
Ejemplo n.º 4
0
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),
Ejemplo n.º 5
0
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 },
Ejemplo n.º 7
0
        '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),
Ejemplo n.º 9
0
        '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=[
Ejemplo n.º 10
0
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)}