Пример #1
0
        public AllAbilities(IList <byte> bytes, IList <byte> effectsBytes, IList <byte> itemEffects, IList <byte> reactionEffects)
        {
            AllEffects        = new AllAbilityEffects(this);
            this.defaultBytes = FFTPatch.Context == Context.US_PSP ? PSPResources.Binaries.Abilities : PSXResources.Binaries.Abilities;

            IDictionary <UInt16, Effect> effects = FFTPatch.Context == Context.US_PSP ? Effect.PSPEffects : Effect.PSXEffects;
            IList <byte> defaultEffects          = FFTPatch.Context == Context.US_PSP ? PSPResources.Binaries.AbilityEffects : PSXResources.Binaries.AbilityEffects;
            IList <byte> defaultItemEffects      = FFTPatch.Context == Context.US_PSP ? PSPResources.Binaries.ItemAbilityEffects : PSXResources.Binaries.ItemAbilityEffects;
            IList <byte> defaultReaction         = FFTPatch.Context == Context.US_PSP ? PSPResources.Binaries.ReactionAbilityEffects : PSXResources.Binaries.ReactionAbilityEffects;

            Abilities        = new Ability[512];
            DefaultAbilities = new Ability[512];
            for (UInt16 i = 0; i < 512; i++)
            {
                IList <byte> defaultFirst = defaultBytes.Sub(i * 8, i * 8 + 7);
                IList <byte> first        = bytes.Sub(i * 8, i * 8 + 7);
                IList <byte> second;
                IList <byte> defaultSecond;
                Effect       effect        = null;
                Effect       defaultEffect = null;

                if (i <= 0x16F)
                {
                    second        = bytes.Sub(0x1000 + 14 * i, 0x1000 + 14 * i + 13);
                    defaultSecond = defaultBytes.Sub(0x1000 + 14 * i, 0x1000 + 14 * i + 13);
                    effect        = effects[PatcherLib.Utilities.Utilities.BytesToUShort(effectsBytes[i * 2], effectsBytes[i * 2 + 1])];
                    defaultEffect = effects[PatcherLib.Utilities.Utilities.BytesToUShort(defaultEffects[i * 2], defaultEffects[i * 2 + 1])];
                }
                else if (i <= 0x17D)
                {
                    second        = bytes.Sub(0x2420 + i - 0x170, 0x2420 + i - 0x170);
                    defaultSecond = defaultBytes.Sub(0x2420 + i - 0x170, 0x2420 + i - 0x170);
                    effect        = effects[(ushort)(PatcherLib.Utilities.Utilities.BytesToUShort(itemEffects[(i - 368) * 2], itemEffects[(i - 368) * 2 + 1]) & ~Ability.ItemEffectPrefixValue)];
                    defaultEffect = effects[(ushort)(PatcherLib.Utilities.Utilities.BytesToUShort(defaultItemEffects[(i - 368) * 2], defaultItemEffects[(i - 368) * 2 + 1]) & ~Ability.ItemEffectPrefixValue)];
                }
                else if (i <= 0x189)
                {
                    second        = bytes.Sub(0x2430 + i - 0x17E, 0x2430 + i - 0x17E);
                    defaultSecond = defaultBytes.Sub(0x2430 + i - 0x17E, 0x2430 + i - 0x17E);
                }
                else if (i <= 0x195)
                {
                    second        = bytes.Sub(0x243C + (i - 0x18A) * 2, 0x243C + (i - 0x18A) * 2 + 1);
                    defaultSecond = defaultBytes.Sub(0x243C + (i - 0x18A) * 2, 0x243C + (i - 0x18A) * 2 + 1);
                }
                else if (i <= 0x19D)
                {
                    second        = bytes.Sub(0x2454 + (i - 0x196) * 2, 0x2454 + (i - 0x196) * 2 + 1);
                    defaultSecond = defaultBytes.Sub(0x2454 + (i - 0x196) * 2, 0x2454 + (i - 0x196) * 2 + 1);
                }
                else if (i <= 0x1A5)
                {
                    second        = bytes.Sub(0x2464 + i - 0x19E, 0x2464 + i - 0x19E);
                    defaultSecond = defaultBytes.Sub(0x2464 + i - 0x19E, 0x2464 + i - 0x19E);
                }
                else
                {
                    if (i >= 422 && i <= 453)
                    {
                        effect        = effects[PatcherLib.Utilities.Utilities.BytesToUShort(reactionEffects[(i - 422) * 2], reactionEffects[(i - 422) * 2 + 1])];
                        defaultEffect = effects[PatcherLib.Utilities.Utilities.BytesToUShort(defaultReaction[(i - 422) * 2], defaultReaction[(i - 422) * 2 + 1])];
                    }
                    second        = bytes.Sub(0x246C + i - 0x1A6, 0x246C + i - 0x1A6);
                    defaultSecond = defaultBytes.Sub(0x246C + i - 0x1A6, 0x246C + i - 0x1A6);
                }

                Abilities[i] = new Ability(((i == 0) ? "Attack" : Names[i]), i, first, second, new Ability(((i == 0) ? "Attack" : Names[i]), i, defaultFirst, defaultSecond));
                if (effect != null && defaultEffect != null)
                {
                    Abilities[i].Effect         = effect;
                    Abilities[i].Default.Effect = defaultEffect;
                }
            }
        }
Пример #2
0
        public AllAbilities(IList <byte> bytes, IList <byte> effectsBytes)
        {
            AllEffects = new AllAbilityEffects(this);
            byte[] defaultBytes = FFTPatch.Context == Context.US_PSP ? PSPResources.AbilitiesBin : PSXResources.AbilitiesBin;
            Dictionary <UInt16, Effect> effects = FFTPatch.Context == Context.US_PSP ? Effect.PSPEffects : Effect.PSXEffects;

            byte[] defaultEffects = FFTPatch.Context == Context.US_PSP ? PSPResources.AbilityEffectsBin : PSXResources.AbilityEffectsBin;

            Abilities        = new Ability[512];
            DefaultAbilities = new Ability[512];
            for (UInt16 i = 0; i < 512; i++)
            {
                IList <byte> defaultFirst = defaultBytes.Sub(i * 8, i * 8 + 7);
                IList <byte> first        = bytes.Sub(i * 8, i * 8 + 7);
                IList <byte> second;
                IList <byte> defaultSecond;
                Effect       effect        = null;
                Effect       defaultEffect = null;

                if (i <= 0x16F)
                {
                    second        = bytes.Sub(0x1000 + 14 * i, 0x1000 + 14 * i + 13);
                    defaultSecond = defaultBytes.Sub(0x1000 + 14 * i, 0x1000 + 14 * i + 13);
                    effect        = effects[PatcherLib.Utilities.Utilities.BytesToUShort(effectsBytes[i * 2], effectsBytes[i * 2 + 1])];
                    defaultEffect = effects[PatcherLib.Utilities.Utilities.BytesToUShort(defaultEffects[i * 2], defaultEffects[i * 2 + 1])];
                }
                else if (i <= 0x17D)
                {
                    second        = bytes.Sub(0x2420 + i - 0x170, 0x2420 + i - 0x170);
                    defaultSecond = defaultBytes.Sub(0x2420 + i - 0x170, 0x2420 + i - 0x170);
                }
                else if (i <= 0x189)
                {
                    second        = bytes.Sub(0x2430 + i - 0x17E, 0x2430 + i - 0x17E);
                    defaultSecond = defaultBytes.Sub(0x2430 + i - 0x17E, 0x2430 + i - 0x17E);
                }
                else if (i <= 0x195)
                {
                    second        = bytes.Sub(0x243C + (i - 0x18A) * 2, 0x243C + (i - 0x18A) * 2 + 1);
                    defaultSecond = defaultBytes.Sub(0x243C + (i - 0x18A) * 2, 0x243C + (i - 0x18A) * 2 + 1);
                }
                else if (i <= 0x19D)
                {
                    second        = bytes.Sub(0x2454 + (i - 0x196) * 2, 0x2454 + (i - 0x196) * 2 + 1);
                    defaultSecond = defaultBytes.Sub(0x2454 + (i - 0x196) * 2, 0x2454 + (i - 0x196) * 2 + 1);
                }
                else if (i <= 0x1A5)
                {
                    second        = bytes.Sub(0x2464 + i - 0x19E, 0x2464 + i - 0x19E);
                    defaultSecond = defaultBytes.Sub(0x2464 + i - 0x19E, 0x2464 + i - 0x19E);
                }
                else
                {
                    second        = bytes.Sub(0x246C + i - 0x1A6, 0x246C + i - 0x1A6);
                    defaultSecond = defaultBytes.Sub(0x246C + i - 0x1A6, 0x246C + i - 0x1A6);
                }

                Abilities[i] = new Ability(Names[i], i, first, second, new Ability(Names[i], i, defaultFirst, defaultSecond));
                if (i <= 0x16F)
                {
                    Abilities[i].Effect         = effect;
                    Abilities[i].Default.Effect = defaultEffect;
                }
            }
        }
Пример #3
0
        public AllAbilities(IList <byte> bytes, IList <byte> effectsBytes, IList <byte> defaultBytes, IList <byte> defaultEffects, Context context)
        {
            AllEffects        = new AllAbilityEffects(this);
            this.defaultBytes = defaultBytes ?? (context == Context.US_PSP ? PSPResources.Binaries.Abilities : PSXResources.Binaries.Abilities);

            IDictionary <UInt16, Effect> effects = context == Context.US_PSP ? Effect.PSPEffects : Effect.PSXEffects;

            defaultEffects = defaultEffects ?? (context == Context.US_PSP ? PSPResources.Binaries.AbilityEffects : PSXResources.Binaries.AbilityEffects);
            //defaultItemEffects = defaultItemEffects ?? (context == Context.US_PSP ? PSPResources.Binaries.ItemAbilityEffects : PSXResources.Binaries.ItemAbilityEffects);
            //defaultReaction = defaultReaction ?? (context == Context.US_PSP ? PSPResources.Binaries.ReactionAbilityEffects : PSXResources.Binaries.ReactionAbilityEffects);

            Abilities        = new Ability[512];
            DefaultAbilities = new Ability[512];
            for (UInt16 i = 0; i < 512; i++)
            {
                IList <byte> defaultFirst = defaultBytes.Sub(i * 8, i * 8 + 7);
                IList <byte> first        = bytes.Sub(i * 8, i * 8 + 7);
                IList <byte> second;
                IList <byte> defaultSecond;
                Effect       effect        = null;
                Effect       defaultEffect = null;

                if (i <= 0x1C5)
                {
                    bool isItemOrThrowEffect = ((i >= 0x170) && (i <= 0x189));

                    ushort effectIndex        = PatcherLib.Utilities.Utilities.BytesToUShort(effectsBytes[i * 2], effectsBytes[i * 2 + 1]);
                    ushort defaultEffectIndex = PatcherLib.Utilities.Utilities.BytesToUShort(defaultEffects[i * 2], defaultEffects[i * 2 + 1]);

                    if ((isItemOrThrowEffect) && (effectIndex != 0xFFFF))
                    {
                        effectIndex        = (ushort)(effectIndex & ~Ability.ItemEffectPrefixValue);
                        defaultEffectIndex = (ushort)(defaultEffectIndex & ~Ability.ItemEffectPrefixValue);
                    }

                    effect        = effects[effectIndex];
                    defaultEffect = effects[defaultEffectIndex];
                }

                if (i <= 0x16F)
                {
                    second        = bytes.Sub(0x1000 + 14 * i, 0x1000 + 14 * i + 13);
                    defaultSecond = defaultBytes.Sub(0x1000 + 14 * i, 0x1000 + 14 * i + 13);
                    effect        = effects[PatcherLib.Utilities.Utilities.BytesToUShort(effectsBytes[i * 2], effectsBytes[i * 2 + 1])];
                    defaultEffect = effects[PatcherLib.Utilities.Utilities.BytesToUShort(defaultEffects[i * 2], defaultEffects[i * 2 + 1])];
                }
                else if (i <= 0x17D)
                {
                    second        = bytes.Sub(0x2420 + i - 0x170, 0x2420 + i - 0x170);
                    defaultSecond = defaultBytes.Sub(0x2420 + i - 0x170, 0x2420 + i - 0x170);
                    //effect = effects[(ushort)(PatcherLib.Utilities.Utilities.BytesToUShort(itemEffects[(i - 368) * 2], itemEffects[(i - 368) * 2 + 1]) & ~Ability.ItemEffectPrefixValue)];
                    //defaultEffect = effects[(ushort)(PatcherLib.Utilities.Utilities.BytesToUShort(defaultItemEffects[(i - 368) * 2], defaultItemEffects[(i - 368) * 2 + 1]) & ~Ability.ItemEffectPrefixValue)];
                }
                else if (i <= 0x189)
                {
                    second        = bytes.Sub(0x2430 + i - 0x17E, 0x2430 + i - 0x17E);
                    defaultSecond = defaultBytes.Sub(0x2430 + i - 0x17E, 0x2430 + i - 0x17E);
                }
                else if (i <= 0x195)
                {
                    second        = bytes.Sub(0x243C + (i - 0x18A) * 2, 0x243C + (i - 0x18A) * 2 + 1);
                    defaultSecond = defaultBytes.Sub(0x243C + (i - 0x18A) * 2, 0x243C + (i - 0x18A) * 2 + 1);
                }
                else if (i <= 0x19D)
                {
                    second        = bytes.Sub(0x2454 + (i - 0x196) * 2, 0x2454 + (i - 0x196) * 2 + 1);
                    defaultSecond = defaultBytes.Sub(0x2454 + (i - 0x196) * 2, 0x2454 + (i - 0x196) * 2 + 1);
                }
                else if (i <= 0x1A5)
                {
                    second        = bytes.Sub(0x2464 + i - 0x19E, 0x2464 + i - 0x19E);
                    defaultSecond = defaultBytes.Sub(0x2464 + i - 0x19E, 0x2464 + i - 0x19E);
                }
                else
                {
                    /*
                     * if (i >= 422 && i <= 453)
                     * {
                     *  effect = effects[PatcherLib.Utilities.Utilities.BytesToUShort( reactionEffects[(i - 422) * 2], reactionEffects[(i - 422) * 2 + 1] )];
                     *  defaultEffect = effects[PatcherLib.Utilities.Utilities.BytesToUShort( defaultReaction[(i - 422) * 2], defaultReaction[(i - 422) * 2 + 1] )];
                     * }
                     */
                    second        = bytes.Sub(0x246C + i - 0x1A6, 0x246C + i - 0x1A6);
                    defaultSecond = defaultBytes.Sub(0x246C + i - 0x1A6, 0x246C + i - 0x1A6);
                }

                Abilities[i] = new Ability(GetNames(context)[i], i, first, second, new Ability(GetNames(context)[i], i, defaultFirst, defaultSecond, context), context);
                if (effect != null && defaultEffect != null)
                {
                    Abilities[i].Effect         = effect;
                    Abilities[i].Default.Effect = defaultEffect;
                }
            }
        }
Пример #4
0
        public AllAbilities( IList<byte> bytes, IList<byte> effectsBytes, IList<byte> itemEffects, IList<byte> reactionEffects )
        {
            AllEffects = new AllAbilityEffects( this );
            this.defaultBytes = FFTPatch.Context == Context.US_PSP ? PSPResources.Binaries.Abilities : PSXResources.Binaries.Abilities;

            IDictionary<UInt16, Effect> effects = FFTPatch.Context == Context.US_PSP ? Effect.PSPEffects : Effect.PSXEffects;
            IList<byte> defaultEffects = FFTPatch.Context == Context.US_PSP ? PSPResources.Binaries.AbilityEffects : PSXResources.Binaries.AbilityEffects;
            IList<byte> defaultItemEffects = FFTPatch.Context == Context.US_PSP ? PSPResources.Binaries.ItemAbilityEffects : PSXResources.Binaries.ItemAbilityEffects;
            IList<byte> defaultReaction = FFTPatch.Context == Context.US_PSP ? PSPResources.Binaries.ReactionAbilityEffects : PSXResources.Binaries.ReactionAbilityEffects;

            Abilities = new Ability[512];
            DefaultAbilities = new Ability[512];
            for( UInt16 i = 0; i < 512; i++ )
            {
                IList<byte> defaultFirst = defaultBytes.Sub( i * 8, i * 8 + 7 );
                IList<byte> first = bytes.Sub( i * 8, i * 8 + 7 );
                IList<byte> second;
                IList<byte> defaultSecond;
                Effect effect = null;
                Effect defaultEffect = null;

                if( i <= 0x16F )
                {
                    second = bytes.Sub( 0x1000 + 14 * i, 0x1000 + 14 * i + 13 );
                    defaultSecond = defaultBytes.Sub( 0x1000 + 14 * i, 0x1000 + 14 * i + 13 );
                    effect = effects[PatcherLib.Utilities.Utilities.BytesToUShort( effectsBytes[i * 2], effectsBytes[i * 2 + 1] )];
                    defaultEffect = effects[PatcherLib.Utilities.Utilities.BytesToUShort( defaultEffects[i * 2], defaultEffects[i * 2 + 1] )];
                }
                else if( i <= 0x17D )
                {
                    second = bytes.Sub( 0x2420 + i - 0x170, 0x2420 + i - 0x170 );
                    defaultSecond = defaultBytes.Sub( 0x2420 + i - 0x170, 0x2420 + i - 0x170 );
                    effect = effects[(ushort)(PatcherLib.Utilities.Utilities.BytesToUShort(itemEffects[(i - 368) * 2], itemEffects[(i - 368) * 2 + 1]) & ~Ability.ItemEffectPrefixValue)];
                    defaultEffect = effects[(ushort)(PatcherLib.Utilities.Utilities.BytesToUShort(defaultItemEffects[(i - 368) * 2], defaultItemEffects[(i - 368) * 2 + 1]) & ~Ability.ItemEffectPrefixValue)];
                }
                else if( i <= 0x189 )
                {
                    second = bytes.Sub( 0x2430 + i - 0x17E, 0x2430 + i - 0x17E );
                    defaultSecond = defaultBytes.Sub( 0x2430 + i - 0x17E, 0x2430 + i - 0x17E );
                }
                else if( i <= 0x195 )
                {
                    second = bytes.Sub( 0x243C + (i - 0x18A) * 2, 0x243C + (i - 0x18A) * 2 + 1 );
                    defaultSecond = defaultBytes.Sub( 0x243C + (i - 0x18A) * 2, 0x243C + (i - 0x18A) * 2 + 1 );
                }
                else if( i <= 0x19D )
                {
                    second = bytes.Sub( 0x2454 + (i - 0x196) * 2, 0x2454 + (i - 0x196) * 2 + 1 );
                    defaultSecond = defaultBytes.Sub( 0x2454 + (i - 0x196) * 2, 0x2454 + (i - 0x196) * 2 + 1 );
                }
                else if( i <= 0x1A5 )
                {
                    second = bytes.Sub( 0x2464 + i - 0x19E, 0x2464 + i - 0x19E );
                    defaultSecond = defaultBytes.Sub( 0x2464 + i - 0x19E, 0x2464 + i - 0x19E );
                }
                else
                {
                    if (i >= 422 && i <= 453)
                    {
                        effect = effects[PatcherLib.Utilities.Utilities.BytesToUShort( reactionEffects[(i - 422) * 2], reactionEffects[(i - 422) * 2 + 1] )];
                        defaultEffect = effects[PatcherLib.Utilities.Utilities.BytesToUShort( defaultReaction[(i - 422) * 2], defaultReaction[(i - 422) * 2 + 1] )];
                    }
                    second = bytes.Sub( 0x246C + i - 0x1A6, 0x246C + i - 0x1A6 );
                    defaultSecond = defaultBytes.Sub( 0x246C + i - 0x1A6, 0x246C + i - 0x1A6 );
                }

                Abilities[i] = new Ability( ((i == 0) ? "Attack" : Names[i]), i, first, second, new Ability( ((i == 0) ? "Attack" : Names[i]), i, defaultFirst, defaultSecond ) );
                if( effect != null && defaultEffect != null )
                {
                    Abilities[i].Effect = effect;
                    Abilities[i].Default.Effect = defaultEffect;
                }
            }
        }
Пример #5
0
        public AllAbilities( IList<byte> bytes, IList<byte> effectsBytes )
        {
            AllEffects = new AllAbilityEffects( this );
            byte[] defaultBytes = FFTPatch.Context == Context.US_PSP ? PSPResources.AbilitiesBin : PSXResources.AbilitiesBin;
            Dictionary<UInt16, Effect> effects = FFTPatch.Context == Context.US_PSP ? Effect.PSPEffects : Effect.PSXEffects;
            byte[] defaultEffects = FFTPatch.Context == Context.US_PSP ? PSPResources.AbilityEffectsBin : PSXResources.AbilityEffectsBin;

            Abilities = new Ability[512];
            DefaultAbilities = new Ability[512];
            for( UInt16 i = 0; i < 512; i++ )
            {
                IList<byte> defaultFirst = defaultBytes.Sub( i * 8, i * 8 + 7 );
                IList<byte> first = bytes.Sub( i * 8, i * 8 + 7 );
                IList<byte> second;
                IList<byte> defaultSecond;
                Effect effect = null;
                Effect defaultEffect = null;

                if( i <= 0x16F )
                {
                    second = bytes.Sub( 0x1000 + 14 * i, 0x1000 + 14 * i + 13 );
                    defaultSecond = defaultBytes.Sub( 0x1000 + 14 * i, 0x1000 + 14 * i + 13 );
                    effect = effects[PatcherLib.Utilities.Utilities.BytesToUShort( effectsBytes[i * 2], effectsBytes[i * 2 + 1] )];
                    defaultEffect = effects[PatcherLib.Utilities.Utilities.BytesToUShort( defaultEffects[i * 2], defaultEffects[i * 2 + 1] )];
                }
                else if( i <= 0x17D )
                {
                    second = bytes.Sub( 0x2420 + i - 0x170, 0x2420 + i - 0x170 );
                    defaultSecond = defaultBytes.Sub( 0x2420 + i - 0x170, 0x2420 + i - 0x170 );
                }
                else if( i <= 0x189 )
                {
                    second = bytes.Sub( 0x2430 + i - 0x17E, 0x2430 + i - 0x17E );
                    defaultSecond = defaultBytes.Sub( 0x2430 + i - 0x17E, 0x2430 + i - 0x17E );
                }
                else if( i <= 0x195 )
                {
                    second = bytes.Sub( 0x243C + (i - 0x18A) * 2, 0x243C + (i - 0x18A) * 2 + 1 );
                    defaultSecond = defaultBytes.Sub( 0x243C + (i - 0x18A) * 2, 0x243C + (i - 0x18A) * 2 + 1 );
                }
                else if( i <= 0x19D )
                {
                    second = bytes.Sub( 0x2454 + (i - 0x196) * 2, 0x2454 + (i - 0x196) * 2 + 1 );
                    defaultSecond = defaultBytes.Sub( 0x2454 + (i - 0x196) * 2, 0x2454 + (i - 0x196) * 2 + 1 );
                }
                else if( i <= 0x1A5 )
                {
                    second = bytes.Sub( 0x2464 + i - 0x19E, 0x2464 + i - 0x19E );
                    defaultSecond = defaultBytes.Sub( 0x2464 + i - 0x19E, 0x2464 + i - 0x19E );
                }
                else
                {
                    second = bytes.Sub( 0x246C + i - 0x1A6, 0x246C + i - 0x1A6 );
                    defaultSecond = defaultBytes.Sub( 0x246C + i - 0x1A6, 0x246C + i - 0x1A6 );
                }

                Abilities[i] = new Ability( Names[i], i, first, second, new Ability( Names[i], i, defaultFirst, defaultSecond ) );
                if( i <= 0x16F )
                {
                    Abilities[i].Effect = effect;
                    Abilities[i].Default.Effect = defaultEffect;
                }
            }
        }