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; } } }
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; } } }
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; } } }
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; } } }
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; } } }