diff --git a/zenno/src/lib/data/support.ts b/zenno/src/lib/data/support.ts new file mode 100644 index 0000000..7b626e3 --- /dev/null +++ b/zenno/src/lib/data/support.ts @@ -0,0 +1,212 @@ +/** + * Support card definitions. + */ +export interface SupportCard { + /** + * Support card ID. + */ + id: number; + /** + * Support card name including variant, e.g. + * `[The Brightest Star in Japan!] Special Week`. + */ + name: string; + /** + * ID of the card's representative character. + */ + chara_id: number; + /** + * Name of the card's character. + * May differ from the name of the `chara_id` character. + */ + chara_name: string; + /** + * Support card rarity. + */ + rarity: Rarity; + /** + * Support card specialty. + */ + specialty: Specialty; + /** + * Blanket support card type. + */ + type: Type; + /** + * Support card effects per five level increment. + */ + effects: [ + Effect[], + Effect[], + Effect[], + Effect[], + Effect[], + Effect[], + Effect[], + Effect[], + Effect[], + Effect[], + Effect[], + Effect[], + ]; + /** + * Unique effect, for cards that have them. + */ + unique_effect?: UniqueEffect; + /** + * Hints that the card can yield. + */ + hints: Hint[]; + /** + * Number of recreation events available with the card, + * not including recreation with the individual characters in a group. + */ + outings?: number; +} + +/** + * Support card rarity levels. + */ +export enum Rarity { + R = 1, + SR = 2, + SSR = 3, +} + +/** + * Support card specialty attribute. + */ +export enum Specialty { + None = 0, // for pals and groups + Speed = 101, + Power = 102, + Guts = 103, + Stamina = 105, + Wit = 106, +} + +/** + * Support card types. + */ +export enum Type { + Normal = 1, + Pal = 2, + Group = 3, +} + +/** + * Support card basic effects. + */ +export interface Effect { + /** + * Type of the effect. + */ + type: EffectType; + /** + * When positive, the amount of the effect. + * When -1, interpolate between the previous and next nonnegative values. + */ + value: number; +} + +/** + * Support card unique effects. + */ +export interface UniqueEffect { + /** + * Name of the unique effect. + */ + name: string; + /** + * In-game description of the effect. + */ + description: string; + /** + * Card level at which the unique effect unlocks. + */ + card_level: number; + /** + * First type of the effect. + */ + type: EffectType; + /** + * Values parameterizing the first type. + */ + args: number[]; + /** + * Second type of the effect, if applicable. + */ + type2?: EffectType; + /** + * Values parameterizing the second type. + */ + args2?: number[]; + /** + * Mystery parameter that one day we might figure out. + */ + idle_mode_sub_rate: number; +} + +/** + * Basic and unique effect types. + */ +export enum EffectType { + FriendshipBonus = 1, + MoodEffect = 2, + SpeedBonus = 3, + StaminaBonus = 4, + PowerBonus = 5, + GutsBonus = 6, + WitBonus = 7, + TrainingEffectiveness = 8, + InitialSpeed = 9, + InitialStamina = 10, + InitialPower = 11, + InitialGuts = 12, + InitialWit = 13, + InitialFriendship = 14, + RaceBonus = 15, + FanBonus = 16, + HintLevels = 17, + HintFrequency = 18, + SpecialtyPriority = 19, + MaxSpeed = 20, + MaxStamina = 21, + MaxPower = 22, + MaxGuts = 23, + MaxWit = 24, + EventRecovery = 25, + EventEffectiveness = 26, + FailureProtection = 27, + EnergyCostReduction = 28, + MinigameEffectiveness = 29, + SkillPointBonus = 30, + WitFriendshipRecovery = 31, + + UniqueFriendshipThreshold = 101, + UniqueOffSpecialty = 102, + UniqueColorThresholdTrainingEffectiveness = 103, + UniqueFanScalingTrainingEffectiveness = 104, + UniqueColorInitialStats = 105, + UniqueRainbowStack = 106, + UniqueLowEnergyScaling = 107, + UniqueMaxEnergyScaling = 108, + UniqueTotalFriendship = 109, + UniqueCardCount = 110, + UniqueFacilityLevel = 111, + UniqueDisableFailure = 112, + UniqueFriendshipTrainingAdditionalEffect = 113, +} + +/** + * Hint event bonuses. + */ +export interface Hint { + skill_id?: number; + speed?: number; + stamina?: number; + power?: number; + guts?: number; + wit?: number; + sp?: number; +}