import {z} from 'zod' export type Region = 'JP' | 'NA' | 'CN' | 'KR' | 'TW'; export type ReverseDepth = 'function' | 'skillNp' | 'servant'; export type ReverseData = 'basic' | 'nice'; export type Language = 'jp' | 'en'; export type GetApiNiceRegionFunctionFuncIdArgs = {region: Region, func_id: number, reverse?: boolean | undefined, reverseDepth?: ReverseDepth | undefined, reverseData?: ReverseData | undefined, lang?: (Language | null) | undefined}; export type GetApiNiceRegionFunctionFuncIdOptions = {baseUrl?: string | undefined, fetch?: typeof fetch | undefined}; export const niceFuncType = z.enum(["none", "addState", "subState", "damage", "damageNp", "gainStar", "gainHp", "gainNp", "lossNp", "shortenSkill", "extendSkill", "releaseState", "lossHp", "instantDeath", "damageNpPierce", "damageNpIndividual", "addStateShort", "gainHpPer", "damageNpStateIndividual", "hastenNpturn", "delayNpturn", "damageNpHpratioHigh", "damageNpHpratioLow", "cardReset", "replaceMember", "lossHpSafe", "damageNpCounter", "damageNpStateIndividualFix", "damageNpSafe", "callServant", "ptShuffle", "lossStar", "changeServant", "changeBg", "damageValue", "withdraw", "fixCommandcard", "shortenBuffturn", "extendBuffturn", "shortenBuffcount", "extendBuffcount", "changeBgm", "displayBuffstring", "resurrection", "gainNpBuffIndividualSum", "setSystemAliveFlag", "forceInstantDeath", "damageNpRare", "gainNpFromTargets", "gainHpFromTargets", "lossHpPer", "lossHpPerSafe", "shortenUserEquipSkill", "quickChangeBg", "shiftServant", "damageNpAndOrCheckIndividuality", "absorbNpturn", "overwriteDeadType", "forceAllBuffNoact", "breakGaugeUp", "breakGaugeDown", "moveToLastSubmember", "extendUserEquipSkill", "updateEnemyEntryMaxCountEachTurn", "expUp", "qpUp", "dropUp", "friendPointUp", "eventDropUp", "eventDropRateUp", "eventPointUp", "eventPointRateUp", "transformServant", "qpDropUp", "servantFriendshipUp", "userEquipExpUp", "classDropUp", "enemyEncountCopyRateUp", "enemyEncountRateUp", "enemyProbDown", "getRewardGift", "sendSupportFriendPoint", "movePosition", "revival", "damageNpIndividualSum", "damageValueSafe", "friendPointUpDuplicate", "moveState", "changeBgmCostume", "lossCommandSpell", "gainCommandSpell", "updateEntryPositions", "buddyPointUp", "addFieldChangeToField", "subFieldBuff", "eventFortificationPointUp", "gainNpIndividualSum", "setQuestRouteFlag", "lastUsePlayerSkillCopy", "changeEnemyMasterFace", "damageValueSafeOnce", "addBattleValue", "setBattleValue", "gainMultiplyNp", "lossMultiplyNp", "addBattlePoint", "damageNpBattlePointPhase", "setNpExecutedState", "hideOverGauge", "gainNpTargetSum", "enemyCountChange", "displayBattleMessage", "generateBattleSkillDrop", "changeMasterFace", "enableMasterSkill", "enableMasterCommandSpell", "battleModelChange", "gainNpCriticalstarSum", "addBattleMissionValue", "setBattleMissionValue", "changeEnemyStatusUiType", "swapFieldPosition", "setDisplayDirectBattleMessageInFsm", "addStateToField", "addStateShortToField", "gainNpFromOtherUsedNpValue", "hastenNpturnFromOtherUsedNpturn", "damageFuncType164", "damageFuncType165", "subBattlePoint", "setBattleMissionValueAsMax", "addStateUserEquipSkillAvailable", "addStateShortUserEquipSkillAvailable"]); export const niceFuncTargetType = z.enum(["self", "ptOne", "ptAnother", "ptAll", "enemy", "enemyAnother", "enemyAll", "ptFull", "enemyFull", "ptOther", "ptOneOther", "ptRandom", "enemyOther", "enemyRandom", "ptOtherFull", "enemyOtherFull", "ptselectOneSub", "ptselectSub", "ptOneAnotherRandom", "ptSelfAnotherRandom", "enemyOneAnotherRandom", "ptSelfAnotherFirst", "ptSelfBefore", "ptSelfAfter", "ptSelfAnotherLast", "commandTypeSelfTreasureDevice", "fieldOther", "enemyOneNoTargetNoAction", "ptOneHpLowestValue", "ptOneHpLowestRate", "enemyRange", "handCommandcardRandomOne", "fieldAll", "noTarget", "fieldRandom", "playerAttackPreselectTargetPtOne"]); export const funcApplyTarget = z.enum(["player", "enemy", "playerAndEnemy"]); export const trait = z.enum(["unknown", "genderMale", "genderFemale", "genderUnknown", "classSaber", "classLancer", "classArcher", "classRider", "classCaster", "classAssassin", "classBerserker", "classShielder", "classRuler", "classAlterEgo", "classAvenger", "classDemonGodPillar", "classLoreGrandCaster", "classBeastI", "classBeastII", "classMoonCancer", "classBeastIIIR", "classForeigner", "classBeastIIIL", "classBeastUnknown", "classPretender", "classUOlgaMarie", "classUOlgaMarieGrand", "classGrandUnBeastUOlgaMarieAlienGod", "classAquaFragment", "classUOlgaMarieStellar", "classUnBeastOlgaMarie", "classGrandSaber", "classGrandLancer", "classGrandArcher", "classGrandRider", "classGrandCaster", "classGrandAssassin", "classGrandBerserker", "classGrandShielder", "classGrandRuler", "classGrandAlterego", "classGrandAvenger", "classGrandMoonCancer", "classGrandForeigner", "classGrandPretender", "classGrandUnBeast", "attributeSky", "attributeEarth", "attributeHuman", "attributeStar", "attributeBeast", "alignmentLawful", "alignmentChaotic", "alignmentNeutral", "alignmentGood", "alignmentEvil", "alignmentBalanced", "alignmentMadness", "alignmentSummer", "basedOnServant", "human", "undead", "artificialDemon", "demonBeast", "daemon", "demon", "soldier", "amazoness", "skeleton", "zombie", "ghost", "automata", "golem", "spellBook", "homunculus", "lamia", "centaur", "werebeast", "chimera", "wyvern", "dragonType", "gazer", "handOrDoor", "demonGodPillar", "oni", "hand", "door", "threatToHumanity", "divine", "humanoid", "dragon", "dragonSlayer", "roman", "wildbeast", "atalante", "saberface", "weakToEnumaElish", "riding", "arthur", "skyOrEarth", "skyOrEarthServant", "brynhildsBeloved", "undeadOrDaemon", "undeadOrDemon", "demonic", "skyOrEarthExceptPseudoAndDemi", "skyOrEarthExceptPseudoAndDemiServant", "divineOrDaemonOrUndead", "divineOrDemonOrUndead", "saberClassServant", "superGiant", "king", "greekMythologyMales", "illya", "feminineLookingServant", "argonaut", "associatedToTheArgo", "genderCaenisServant", "hominidaeServant", "blessedByKur", "demonicBeastServant", "canBeInBattle", "notBasedOnServant", "livingHuman", "cardArts", "cardBuster", "cardQuick", "cardExtra", "buffPositiveEffect", "buffNegativeEffect", "buffIncreaseDamage", "buffIncreaseDefence", "buffDecreaseDamage", "buffDecreaseDefence", "buffMentalEffect", "buffPoison", "buffCharm", "buffPetrify", "buffStun", "buffBurn", "buffSpecialResistUp", "buffSpecialResistDown", "buffEvadeAndInvincible", "buffSureHit", "buffNpSeal", "buffEvade", "buffInvincible", "buffTargetFocus", "buffGuts", "skillSeal", "buffCurse", "buffAtkUp", "buffPowerModStrUp", "buffDamagePlus", "buffNpDamageUp", "buffCritDamageUp", "buffCritRateUp", "buffAtkDown", "buffPowerModStrDown", "buffDamageMinus", "buffNpDamageDown", "buffCritDamageDown", "buffCritRateDown", "buffDeathResistDown", "buffDefenceUp", "buffMaxHpUpPercent", "buffMaxHpDownPercent", "buffMaxHpUp", "buffMaxHpDown", "buffImmobilize", "buffIncreasePoisonEffectiveness", "buffPigify", "buffCurseEffectUp", "buffTerrorStunChanceAfterTurn", "buffConfusion", "buffOffensiveMode", "buffDefensiveMode", "buffLockCardsDeck", "buffDisableColorCard", "buffChangeField", "buffIncreaseDefenceAgainstIndividuality", "buffDefUp", "buffInvinciblePierce", "buffHpRecoveryPerTurn", "buffNegativeEffectImmunity", "buffNegativeEffectAtTurnEnd", "attackPhysical", "attackProjectile", "attackMagical", "criticalHit", "faceCard", "cardNP", "kingproteaGrowth", "kingproteaInfiniteProliferation", "kingproteaProliferation", "kingproteaProliferationNPDefense", "fieldSunlight", "fieldShore", "fieldForest", "fieldBurning", "fieldCity", "shadowServant", "aoeNP", "stNP", "giant", "childServant", "buffSpecialInvincible", "buffSkillRankUp", "buffSleep", "nobunaga", "fieldImaginarySpace", "existenceOutsideTheDomain", "curse", "fieldShoreOrImaginarySpace", "shutenOnField", "shuten", "genji", "vengeance", "enemyGardenOfSinnersLivingCorpse", "enemyGardenOfSinnersApartmentGhostAndSkeleton", "enemyGardenOfSinnersBaseModel", "enemyGardenOfSinnersVengefulSpiritOfSevenPeople", "enemySaberEliWerebeastAndHomunculusAndKnight", "enemySaberEliSkeletonAndGhostAndLamia", "enemySaberEliBugAndGolem", "enemySeraphEater", "enemySeraphShapeshifter", "enemySeraphTypeI", "enemySeraphTypeSakura", "enemyHimejiCastleKnightAndGazerAndMassProduction", "enemyHimejiCastleDronesAndHomunculusAndAutomata", "enemyHimejiCastleSkeletonAndScarecrow", "enemyGuda3MiniNobu", "enemyDavinciTrueEnemy", "enemyDavinciFalseEnemy", "enemyCaseFilesRareEnemy", "enemyLasVegasBonusEnemy", "enemySummerCampRareEnemy", "enemyLittleBigTenguTsuwamonoEnemy", "eventSaberWars", "eventRashomon", "eventOnigashima", "eventOnigashimaRaid", "eventPrisma", "eventPrismaWorldEndMatch", "eventNeroFest2", "eventGuda2", "eventNeroFest3", "eventSetsubun", "eventApocrypha", "eventBattleInNewYork1", "eventOniland", "eventOoku", "eventGuda4", "eventLasVegas", "eventBattleInNewYork2", "eventSaberWarsII", "eventSummerCamp", "eventGuda5", "cursedBook", "buffCharmFemale", "mechanical", "fae", "hasCostume", "weakPointsRevealed", "chenGongNpBlock", "knightsOfTheRound", "divineSpirit", "buffNullifyBuff", "enemyGudaMiniNobu", "burningLove", "buffStrongAgainstWildBeast", "buffStrongAgainstDragon", "fairyTaleServant", "classBeastIV", "havingAnimalsCharacteristics", "like", "exaltation", "gubijin", "yuMeiren", "milleniumCastle", "protoMerlinNPChargeBlock", "valkyrie", "immuneToPigify", "summerModeServant", "shinsengumiServant", "ryozanpaku", "demonUnused", "levitating", "obstacleMaker", "defender", "hasGoddessMetamorphosis", "servantsWithSkyAttribute", "moon", "cardWeak", "cardStrong", "servant", "shadow", "chenGongNp", "cantBeSacrificed", "gutsBlock", "classBeastILost", "holdingHolyGrail", "standardClassServant", "classBeast", "classBeastVI", "classBeastVIBoss", "buffBound", "buffDamageCut", "marking", "manuscriptComplete", "myFairSoldier", "zeroStarServant", "oneStarServant", "twoStarServant", "threeStarServant", "fourStarServant", "fiveStarServant", "wrathOfTheEnshrinedDeity", "caitCuCerpriestessAscension0To2", "caitCuCerpriestessAscension3To4", "fieldAir", "caitCuCerpriestessOnTheField", "buffNpPerTurn", "buffStarPerTurn", "burnEffectivenessUp", "murasamaAscension0", "classUOlgaMarieFlare", "elementalsWrath", "buffBuffSuccessRateUp", "groupServant", "takeruDummyTrait", "artsBuff", "busterBuff", "quickBuff", "FSNServant", "fieldDarkness", "magicBullet", "protagonistCorrection", "normalAokoBuff", "magicBulletAtkBuff", "demeritFunction", "extraBuff", "robinCounter", "kuonjiAliceHasSkill3", "kuonjiAliceStage3", "instantDeathFunction", "forceInstantDeathFunction", "buffGutsOnInstantDeath", "robinAllGone", "classBeastEresh", "alignmentBeast", "bunnyServant", "buffSpecialDmgAgainstAlignmentGood", "buffSpecialDmgAgainstAlignmentEvil", "hasSupereffectiveNPAgainstAlignmentGood", "hasSupereffectiveNPAgainstAlignmentEvil", "happyHalloween", "happyHalloweenCounter", "protectedByBBDubai", "notProtectedByBBDubai", "canFlyInSpace", "buffSpecialInvinciblePierce", "sakuraSeries", "buffDefenceDown", "fieldHeaven", "fieldHell", "markOfSin", "quickChain", "artsChain", "busterChain", "mightyChain", "braveChain", "chainError", "classBeastDraco"]); export const niceTrait = z.object({id: z.number().int(), name: trait, negative: z.boolean().nullable().optional()}); export const functionScript = z.object({overwriteTvals: z.array(z.array(niceTrait)).nullable().optional(), funcIndividuality: z.array(niceTrait).nullable().optional()}); export const niceFuncGroup = z.object({eventId: z.number().int(), baseFuncId: z.number().int(), nameTotal: z.string(), name: z.string(), icon: z.string().min(1).max(2083).nullable().optional(), priority: z.number().int(), isDispValue: z.boolean()}); export const niceBuffType = z.enum(["none", "invalid", "upCommandatk", "upStarweight", "upCriticalpoint", "downCriticalpoint", "regainNp", "regainStar", "regainHp", "reduceHp", "upAtk", "downAtk", "upDamage", "downDamage", "addDamage", "subDamage", "upNpdamage", "downNpdamage", "upDropnp", "upCriticaldamage", "downCriticaldamage", "addSelfdamage", "subSelfdamage", "avoidance", "breakAvoidance", "invincible", "upGrantstate", "downGrantstate", "upTolerance", "downTolerance", "avoidState", "donotAct", "donotSkill", "donotNoble", "donotRecovery", "disableGender", "guts", "upHate", "addIndividuality", "subIndividuality", "upDefence", "downDefence", "upCommandstar", "upCommandnp", "upCommandall", "downCommandall", "downStarweight", "reduceNp", "downDropnp", "upGainHp", "downGainHp", "downCommandatk", "upCriticalrate", "downCriticalrate", "pierceInvincible", "avoidInstantdeath", "upResistInstantdeath", "upNonresistInstantdeath", "delayFunction", "regainNpUsedNoble", "deadFunction", "upMaxhp", "downMaxhp", "addMaxhp", "subMaxhp", "battlestartFunction", "wavestartFunction", "selfturnendFunction", "damageFunction", "upGivegainHp", "downGivegainHp", "commandattackAfterFunction", "deadattackFunction", "upSpecialdefence", "downSpecialdefence", "upDamagedropnp", "downDamagedropnp", "entryFunction", "upChagetd", "reflectionFunction", "upGrantSubstate", "downGrantSubstate", "upToleranceSubstate", "downToleranceSubstate", "upGrantInstantdeath", "downGrantInstantdeath", "gutsRatio", "upDefencecommandall", "downDefencecommandall", "overwriteBattleclass", "overwriteClassrelatioAtk", "overwriteClassrelatioDef", "upDamageIndividuality", "downDamageIndividuality", "upDamageIndividualityActiveonly", "downDamageIndividualityActiveonly", "upNpturnval", "downNpturnval", "multiattack", "upGiveNp", "downGiveNp", "upResistanceDelayNpturn", "downResistanceDelayNpturn", "pierceDefence", "upGutsHp", "downGutsHp", "upFuncgainNp", "downFuncgainNp", "upFuncHpReduce", "downFuncHpReduce", "upDefenceCommanddamage", "downDefenceCommanddamage", "npattackPrevBuff", "fixCommandcard", "donotGainnp", "fieldIndividuality", "donotActCommandtype", "upDamageEventPoint", "upDamageSpecial", "attackAfterFunction", "commandcodeattackBeforeFunction", "donotNobleCondMismatch", "donotSelectCommandcard", "donotReplace", "shortenUserEquipSkill", "tdTypeChange", "overwriteClassRelation", "tdTypeChangeArts", "tdTypeChangeBuster", "tdTypeChangeQuick", "commandattackBeforeFunction", "gutsFunction", "upCriticalRateDamageTaken", "downCriticalRateDamageTaken", "upCriticalStarDamageTaken", "downCriticalStarDamageTaken", "skillRankUp", "avoidanceIndividuality", "changeCommandCardType", "specialInvincible", "preventDeathByDamage", "commandcodeattackAfterFunction", "attackBeforeFunction", "donotSkillSelect", "buffRate", "invisibleBattleChara", "counterFunction", "notTargetSkill", "hpReduceToRegain", "selfturnstartFunction", "overwriteDeadType", "upActionCount", "downActionCount", "shiftGuts", "shiftGutsRatio", "masterSkillValueUp", "buffConvert", "subFieldIndividuality", "commandcodeattackBeforeFunctionMainOnly", "commandcodeattackAfterFunctionMainOnly", "commandattackBeforeFunctionMainOnly", "commandattackAfterFunctionMainOnly", "attackBeforeFunctionMainOnly", "attackAfterFunctionMainOnly", "warBoardNotAttacked", "warBoardIgnoreDefeatpoint", "skillAfterFunction", "treasureDeviceAfterFunction", "skillAfterFunctionMainOnly", "treasureDeviceAfterFunctionMainOnly", "preventInvisibleWhenInstantDeath", "overwriteSubattribute", "avoidanceAttackDeathDamage", "avoidFunctionExecuteSelf", "pierceSubdamage", "continueFunction", "addSpecialdamage", "subSpecialdamage", "addFuncHpReduce", "subFuncHpReduce", "changeBgm", "confirmCommandFunction", "skillBeforeFunction", "skillTargetedBeforeFunction", "fieldIndividualityChangedFunction", "treasureDeviceBeforeFunction", "stepInAfterFunction", "shortenSkillAfterUseSkill", "pierceSpecialInvincible", "functionedFunction", "donotActCommandcard", "upNpdamageIndividualitySum", "comboStartFunction", "comboEndFunction", "overwriteSvtCardType", "upDefenceDamage", "downDefenceDamage", "upDefenceCriticaldamage", "downDefenceCriticaldamage", "upDefenceNpdamage", "downDefenceNpdamage", "upDefenceCommandnp", "downDefenceCommandnp", "upDefenceCommandstar", "downCommandstar", "downDefenceCommandstar", "wavestartAnimationBeforeFunction", "subFixedSelfdamage", "overwriteFixedDefenceDamage", "extendActionCount", "gutsBeforeFunction", "overwriteBuffUseRate", "upBuffUseRate", "downBuffUseRate", "reactiveDamageGainHp", "upHateToGrantedOpponent", "upBaseHp", "addBaseHp", "substituteInstantDeath", "substituteAddState", "otherTreasureDevicePreBeforeFunction", "attackPhaseStartFunction", "treasureDevicePostAfterFunction", "multiDeadFunction", "multiGutsFunction", "multiGutsBeforeFunction", "limitMaxNp", "limitMinNp", "lastSelfturnprogressFunction", "addMaxBattlePoint", "subMaxBattlePoint", "selfturnprogressFunction", "toFieldChangeField", "toFieldAvoidBuff", "toFieldSubIndividualityField", "upSelfdamage", "downSelfdamage", "downCommanstar", "downCommandnp"]); export const niceClassRelationOverwriteType = z.enum(["overwriteForce", "overwriteMoreThanTarget", "overwriteLessThanTarget"]); export const relationOverwriteDetail = z.object({damageRate: z.number().int(), type: niceClassRelationOverwriteType}); export const niceBuffRelationOverwrite = z.object({atkSide: z.record(z.string(), z.record(z.string(), relationOverwriteDetail)), defSide: z.record(z.string(), z.record(z.string(), relationOverwriteDetail))}); export const niceBuffConvertLimitType = z.enum(["all", "self"]); export const niceBuffConvertType = z.enum(["none", "buff", "individuality"]); export const buffConvertScript = z.object({OverwritePopupText: z.array(z.string())}); export const buffConvert = z.object({targetLimit: niceBuffConvertLimitType, convertType: niceBuffConvertType, targets: z.union([z.array(z.number().int()), z.array(niceTrait), z.array(z.record(z.string(), z.unknown()))]), targetBuffs: z.array(z.record(z.string(), z.unknown())), targetIndividualities: z.array(niceTrait), convertBuffs: z.array(z.record(z.string(), z.unknown())), script: buffConvertScript, effectId: z.number().int()}); export const niceBuffConditionTargetType = z.enum(["none", "ptAll", "enemyAll", "fieldAll", "ptFull", "enemyFull", "ptOtherAll", "ptOtherFull", "fieldOtherAll", "relativePositionPt"]); export const condBuffValue = z.object({buffType: niceBuffType, condValue: z.string(), buffCheckIndvType: z.number().int().nullable().optional(), buffIndividualities: z.array(niceTrait), valueCondTargetType: niceBuffConditionTargetType, filterActivePassive: z.number().int().nullable().optional(), filterSubStateEnable: z.number().int().nullable().optional()}); export const buffScript = z.object({checkIndvType: z.number().int().nullable().optional(), CheckOpponentBuffTypes: z.array(niceBuffType).nullable().optional(), relationId: niceBuffRelationOverwrite.nullable().optional(), ReleaseText: z.string().nullable().optional(), DamageRelease: z.number().int().nullable().optional(), INDIVIDUALITIE: niceTrait.nullable().optional(), INDIVIDUALITIE_COUNT_ABOVE: z.number().int().nullable().optional(), INDIVIDUALITIE_COUNT_BELOW: z.number().int().nullable().optional(), INDIVIDUALITIE_AND: z.array(niceTrait).nullable().optional(), INDIVIDUALITIE_OR: z.array(niceTrait).nullable().optional(), ckSelfCountIndividuality: z.array(niceTrait).nullable().optional(), ckOpCountIndividuality: z.array(niceTrait).nullable().optional(), ckIndvCountAbove: z.number().int().nullable().optional(), ckIndvCountBelow: z.number().int().nullable().optional(), UpBuffRateBuffIndiv: z.array(niceTrait).nullable().optional(), HP_LOWER: z.number().int().nullable().optional(), HP_HIGHER: z.number().int().nullable().optional(), CounterMessage: z.string().nullable().optional(), avoidanceText: z.string().nullable().optional(), gutsText: z.string().nullable().optional(), missText: z.string().nullable().optional(), AppId: z.number().int().nullable().optional(), IncludeIgnoreIndividuality: z.number().int().nullable().optional(), ProgressSelfTurn: z.number().int().nullable().optional(), TargetIndiv: niceTrait.nullable().optional(), extendLowerLimit: z.number().int().nullable().optional(), convert: buffConvert.nullable().optional(), useFirstTimeInTurn: z.number().int().nullable().optional(), fromCommandSpell: z.number().int().nullable().optional(), fromMasterEquip: z.number().int().nullable().optional(), NotPierceIndividuality: z.array(z.array(niceTrait)).nullable().optional(), condBuffValue: z.array(condBuffValue).nullable().optional()}); export const niceBuff = z.object({id: z.number().int(), name: z.string(), originalName: z.string(), detail: z.string(), icon: z.string().min(1).max(2083).nullable().optional(), type: niceBuffType, buffGroup: z.number().int(), script: buffScript, originalScript: z.record(z.string(), z.unknown()).optional(), vals: z.array(niceTrait), tvals: z.array(niceTrait), ckSelfIndv: z.array(niceTrait), ckOpIndv: z.array(niceTrait), maxRate: z.number().int()}); export const niceSkillType = z.enum(["active", "passive"]); export const skillScriptCond = z.enum(["NONE", "NP_HIGHER", "NP_LOWER", "STAR_HIGHER", "STAR_LOWER", "HP_VAL_HIGHER", "HP_VAL_LOWER", "HP_PER_HIGHER", "HP_PER_LOWER"]); export const niceSelectAddInfoBtnCond = z.object({cond: skillScriptCond, value: z.number().int().nullable().optional()}); export const niceSelectAddInfoBtn = z.object({name: z.string().nullable().optional(), conds: z.array(niceSelectAddInfoBtnCond), image: z.string().nullable().optional(), imageUrl: z.string().min(1).max(2083).nullable().optional()}); export const niceSelectAddInfo = z.object({title: z.string(), btn: z.array(niceSelectAddInfoBtn)}); export const tdChangeByBattlePoint = z.object({battlePointId: z.number().int(), phase: z.number().int(), noblePhantasmId: z.number().int()}); export const selectTreasureDeviceInfoTreasureDevice = z.object({id: z.number().int(), type: z.string(), message: z.string()}); export const selectTreasureDeviceInfo = z.object({dialogType: z.number().int(), treasureDevices: z.array(selectTreasureDeviceInfoTreasureDevice), title: z.string(), messageOnSelected: z.string()}); export const niceBattleBranchSkillCondBranchType = z.enum(["none", "isSelfTarget", "individuality"]); export const condBranchSkillInfo = z.object({condType: niceBattleBranchSkillCondBranchType, condValue: z.array(z.number().int()), skillId: z.number().int(), detailText: z.string().nullable().optional(), iconBuffId: z.number().int().nullable().optional()}); export const niceSkillScript = z.object({NP_HIGHER: z.array(z.number().int()).nullable().optional(), NP_LOWER: z.array(z.number().int()).nullable().optional(), STAR_HIGHER: z.array(z.number().int()).nullable().optional(), STAR_LOWER: z.array(z.number().int()).nullable().optional(), HP_VAL_HIGHER: z.array(z.number().int()).nullable().optional(), HP_VAL_LOWER: z.array(z.number().int()).nullable().optional(), HP_PER_HIGHER: z.array(z.number().int()).nullable().optional(), HP_PER_LOWER: z.array(z.number().int()).nullable().optional(), additionalSkillId: z.array(z.number().int()).nullable().optional(), additionalSkillActorType: z.array(z.number().int()).nullable().optional(), tdTypeChangeIDs: z.array(z.number().int()).nullable().optional(), excludeTdChangeTypes: z.array(z.number().int()).nullable().optional(), actRarity: z.array(z.array(z.number().int())).nullable().optional(), battleStartRemainingTurn: z.array(z.number().int()).nullable().optional(), SelectAddInfo: z.array(niceSelectAddInfo).nullable().optional(), IgnoreValueUp: z.array(z.boolean()).nullable().optional(), IgnoreBattlePointUp: z.array(z.array(z.number().int())).nullable().optional(), tdChangeByBattlePoint: z.array(tdChangeByBattlePoint).nullable().optional(), selectTreasureDeviceInfo: z.array(selectTreasureDeviceInfo).nullable().optional(), condBranchSkillInfo: z.array(condBranchSkillInfo).nullable().optional()}); export const niceCondType = z.enum(["none", "questClear", "itemGet", "useItemEternity", "useItemTime", "useItemCount", "svtLevel", "svtLimit", "svtGet", "svtFriendship", "svtGroup", "event", "date", "weekday", "purchaseQpShop", "purchaseStoneShop", "warClear", "flag", "svtCountStop", "birthDay", "eventEnd", "svtEventJoin", "missionConditionDetail", "eventMissionClear", "eventMissionAchieve", "questClearNum", "notQuestGroupClear", "raidAlive", "raidDead", "raidDamage", "questChallengeNum", "masterMission", "questGroupClear", "superBossDamage", "superBossDamageAll", "purchaseShop", "questNotClear", "notShopPurchase", "notSvtGet", "notEventShopPurchase", "svtHaving", "notSvtHaving", "questChallengeNumEqual", "questChallengeNumBelow", "questClearNumEqual", "questClearNumBelow", "questClearPhase", "notQuestClearPhase", "eventPointGroupWin", "eventNormaPointClear", "questAvailable", "questGroupAvailableNum", "eventNormaPointNotClear", "notItemGet", "costumeGet", "questResetAvailable", "svtGetBeforeEventEnd", "questClearRaw", "questGroupClearRaw", "eventGroupPointRatioInTerm", "eventGroupRankInTerm", "notEventRaceQuestOrNotAllGroupGoal", "eventGroupTotalWinEachPlayer", "eventScriptPlay", "svtCostumeReleased", "questNotClearAnd", "svtRecoverd", "shopReleased", "eventPoint", "eventRewardDispCount", "equipWithTargetCostume", "raidGroupDead", "notSvtGroup", "notQuestResetAvailable", "notQuestClearRaw", "notQuestGroupClearRaw", "notEventMissionClear", "notEventMissionAchieve", "notCostumeGet", "notSvtCostumeReleased", "notEventRaceQuestOrNotTargetRankGoal", "playerGenderType", "shopGroupLimitNum", "eventGroupPoint", "eventGroupPointBelow", "eventTotalPoint", "eventTotalPointBelow", "eventValue", "eventValueBelow", "eventFlag", "eventStatus", "notEventStatus", "forceFalse", "svtHavingLimitMax", "eventPointBelow", "svtEquipFriendshipHaving", "movieNotDownload", "multipleDate", "svtFriendshipAbove", "svtFriendshipBelow", "movieDownloaded", "routeSelect", "notRouteSelect", "limitCount", "limitCountAbove", "limitCountBelow", "badEndPlay", "commandCodeGet", "notCommandCodeGet", "allUsersBoxGachaCount", "totalTdLevel", "totalTdLevelAbove", "totalTdLevelBelow", "commonRelease", "battleResultWin", "battleResultLose", "eventValueEqual", "boardGameTokenHaving", "boardGameTokenGroupHaving", "eventFlagOn", "eventFlagOff", "questStatusFlagOn", "questStatusFlagOff", "eventValueNotEqual", "limitCountMaxEqual", "limitCountMaxAbove", "limitCountMaxBelow", "boardGameTokenGetNum", "battleLineWinAbove", "battleLineLoseAbove", "battleLineContinueWin", "battleLineContinueLose", "battleLineContinueWinBelow", "battleLineContinueLoseBelow", "battleGroupWinAvove", "battleGroupLoseAvove", "svtLimitClassNum", "overTimeLimitRaidAlive", "onTimeLimitRaidDead", "onTimeLimitRaidDeadNum", "raidBattleProgressAbove", "svtEquipRarityLevelNum", "latestMainScenarioWarClear", "eventMapValueContains", "resetBirthDay", "shopFlagOn", "shopFlagOff", "purchaseValidShopGroup", "svtLevelClassNum", "svtLevelIdNum", "limitCountImageEqual", "limitCountImageAbove", "limitCountImageBelow", "eventTypeStartTimeToEndDate", "existBoxGachaScriptReplaceGiftId", "notExistBoxGachaScriptReplaceGiftId", "limitedPeriodVoiceChangeTypeOn", "startRandomMission", "randomMissionClearNum", "progressValueEqual", "progressValueAbove", "progressValueBelow", "randomMissionTotalClearNum", "weekdays", "eventFortificationRewardNum", "questClearBeforeEventStart", "notQuestClearBeforeEventStart", "eventTutorialFlagOn", "eventTutorialFlagOff", "eventSuperBossValueEqual", "notEventSuperBossValueEqual", "allSvtTargetSkillLvNum", "superBossDamageAbove", "superBossDamageBelow", "eventMissionGroupAchieve", "svtFriendshipClassNumAbove", "notWarClear", "svtSkillLvClassNumAbove", "svtClassLvUpCount", "svtClassSkillLvUpCount", "svtClassLimitUpCount", "svtClassFriendshipCount", "completeHeelPortrait", "notCompleteHeelPortrait", "classBoardSquareReleased", "svtLevelExchangeSvt", "svtLimitExchangeSvt", "skillLvExchangeSvt", "svtFriendshipExchangeSvt", "exchangeSvt", "raidDamageAbove", "raidDamageBelow", "raidGroupDamageAbove", "raidGroupDamageBelow", "raidDamageRateAbove", "raidDamageRateBelow", "raidDamageRateNotAbove", "raidDamageRateNotBelow", "raidGroupDamageRateAbove", "raidGroupDamageRateBelow", "raidGroupDamageRateNotAbove", "raidGroupDamageRateNotBelow", "notQuestGroupClearNum", "raidGroupOpenAbove", "raidGroupOpenBelow", "treasureDeviceAccelerate", "playQuestPhase", "notPlayQuestPhase", "eventStartToEnd", "commonValueAbove", "commonValueBelow", "commonValueEqual", "elapsedTimeAfterQuestClear", "withStartingMember", "latestQuestPhaseEqual", "notLatestQuestPhaseEqual", "purchaseShopNum", "eventTradeTotalNum", "limitedMissionAchieveNumBelow", "limitedMissionAchieveNumAbove", "notSvtVoicePlayed", "battlePointAbove", "battlePointBelow", "beforeSpecifiedDate", "notHaveChargeStone", "haveChargeStone", "battleFunctionTargetAllIndividuality", "battleFunctionTargetOneIndividuality", "beforeQuestClearTime", "afterQuestClearTime", "notBattleFunctionTargetAllIndividuality", "notBattleFunctionTargetOneIndividuality", "eventScriptNotPlay", "eventScriptFlag", "imagePartsGroup", "userLevelAbove", "userLevelBelow", "userLevelEqual", "highestWaveAbove", "highestWaveBelow", "privilegeValid", "privilegeInvalid", "battleActionOpponentIndividuality", "notBattleActionOpponentIndividuality", "treasureDeviceOfSelectedCard", "battleSvtFriendshipAbove", "battleSvtFriendshipBelow", "elapsedTimeAfterSvtGet", "notElapsedTimeAfterQuestClear", "notElapsedTimeAfterSvtGet", "grandSvtSet", "playedMovie", "notPlayedMovie", "notShopGroupLimitNum", "equipGet", "notEquipGet", "svtGetBeforeDate", "svtGetAfterDate", "notQuestAvailable", "notImagePartsGroup", "useEventPassiveSkillGivenItem", "notUseEventPassiveSkillGivenItem", "selfIndividuality", "notSelfIndividuality", "battleValueAbove", "battleValueBelow", "battleValueEqual", "battleValueNotEqual", "battlePointEqual", "battlePointNotEqual", "battleEntryPlayerTotalCountAbove", "battleEntryPlayerTotalCountBelow", "battleEntryPlayerTotalCountEqual", "battleEntryEnemyTotalCountAbove", "battleEntryEnemyTotalCountBelow", "battleEntryEnemyTotalCountEqual", "jobMaxLevelNumAbove", "jobMaxLevelNumBelow", "jobMaxLevelNumEqual", "svtHpReachNum", "svtAtkReachNum", "favoriteSvtIdEqual", "eventBallotSubmitted", "eventBallotNotSubmitted"]); export const niceCommonRelease = z.object({id: z.number().int(), priority: z.number().int(), condGroup: z.number().int(), condType: niceCondType, condId: z.number().int(), condNum: z.number().int()}); export const svtPassiveSkillScript = z.object({condIndividuality: z.array(z.number().int()).nullable().optional(), otherValidEventId: z.number().int().nullable().optional()}); export const extraPassive = z.object({num: z.number().int(), priority: z.number().int(), condQuestId: z.number().int(), condQuestPhase: z.number().int(), condLv: z.number().int(), condLimitCount: z.number().int(), condFriendshipRank: z.number().int(), eventId: z.number().int(), flag: z.number().int(), releaseConditions: z.array(niceCommonRelease).optional(), startedAt: z.number().int(), endedAt: z.number().int(), script: svtPassiveSkillScript}); export const niceSkillAdd = z.object({priority: z.number().int(), releaseConditions: z.array(niceCommonRelease), name: z.string(), originalName: z.string(), ruby: z.string()}); export const niceSvtSkillRelease = z.object({idx: z.number().int(), condType: niceCondType, condTargetId: z.number().int(), condNum: z.number().int(), condGroup: z.number().int()}); export const niceSkillSvt = z.object({svtId: z.number().int(), num: z.number().int(), priority: z.number().int(), script: z.record(z.string(), z.unknown()).nullable().optional(), strengthStatus: z.number().int(), condQuestId: z.number().int(), condQuestPhase: z.number().int(), condLv: z.number().int().optional(), condLimitCount: z.number().int(), eventId: z.number().int(), flag: z.number().int(), releaseConditions: z.array(niceSvtSkillRelease)}); export const valCheckBattlePointPhaseRange = z.object({battlePointId: z.number().int(), range: z.array(z.string())}); export const valDamageRateBattlePointPhase = z.object({battlePointPhase: z.number().int(), value: z.number().int()}); export const valTriggeredTargetBattlePointRateRange = z.object({battlePointId: z.number().int(), range: z.array(z.string())}); export const niceBaseFunction = z.object({funcId: z.number().int(), funcType: niceFuncType, funcTargetType: niceFuncTargetType, funcTargetTeam: funcApplyTarget, funcPopupText: z.string(), funcPopupIcon: z.string().min(1).max(2083).nullable().optional(), functvals: z.array(niceTrait), overWriteTvalsList: z.array(z.array(niceTrait)), funcquestTvals: z.array(niceTrait), script: functionScript, funcGroup: z.array(niceFuncGroup), traitVals: z.array(niceTrait).optional(), buffs: z.array(niceBuff)}); export const baseVals = z.object({Rate: z.number().int().nullable().optional(), Turn: z.number().int().nullable().optional(), Count: z.number().int().nullable().optional(), Value: z.number().int().nullable().optional(), Value2: z.number().int().nullable().optional(), UseRate: z.number().int().nullable().optional(), Target: z.number().int().nullable().optional(), Correction: z.number().int().nullable().optional(), ParamAdd: z.number().int().nullable().optional(), ParamMax: z.number().int().nullable().optional(), HideMiss: z.number().int().nullable().optional(), OnField: z.number().int().nullable().optional(), HideNoEffect: z.number().int().nullable().optional(), Unaffected: z.number().int().nullable().optional(), ShowState: z.number().int().nullable().optional(), AuraEffectId: z.number().int().nullable().optional(), ActSet: z.number().int().nullable().optional(), ActSetWeight: z.number().int().nullable().optional(), ShowQuestNoEffect: z.number().int().nullable().optional(), CheckDead: z.number().int().nullable().optional(), RatioHPHigh: z.number().int().nullable().optional(), RatioHPLow: z.number().int().nullable().optional(), SetPassiveFrame: z.number().int().nullable().optional(), SetPlayerSideBg: z.number().int().nullable().optional(), SetEnemySideBg: z.number().int().nullable().optional(), ProcPassive: z.number().int().nullable().optional(), ProcActive: z.number().int().nullable().optional(), HideParam: z.number().int().nullable().optional(), SkillID: z.number().int().nullable().optional(), SkillLV: z.number().int().nullable().optional(), ShowCardOnly: z.number().int().nullable().optional(), EffectSummon: z.number().int().nullable().optional(), RatioHPRangeHigh: z.number().int().nullable().optional(), RatioHPRangeLow: z.number().int().nullable().optional(), TargetList: z.array(z.number().int()).nullable().optional(), OpponentOnly: z.number().int().nullable().optional(), StatusEffectId: z.number().int().nullable().optional(), EndBattle: z.number().int().nullable().optional(), LoseBattle: z.number().int().nullable().optional(), AddIndividualty: z.number().int().nullable().optional(), AddIndividualtyList: z.array(z.number().int()).nullable().optional(), AddLinkageTargetIndividualty: z.number().int().nullable().optional(), SameBuffLimitTargetIndividuality: z.number().int().nullable().optional(), SameBuffLimitNum: z.number().int().nullable().optional(), CheckDuplicate: z.number().int().nullable().optional(), OnFieldCount: z.number().int().nullable().optional(), TargetRarityList: z.array(z.number().int()).nullable().optional(), DependFuncId: z.number().int().nullable().optional(), InvalidHide: z.number().int().nullable().optional(), OutEnemyNpcId: z.number().int().nullable().optional(), InEnemyNpcId: z.number().int().nullable().optional(), OutEnemyPosition: z.number().int().nullable().optional(), IgnoreIndividuality: z.number().int().nullable().optional(), StarHigher: z.number().int().nullable().optional(), ChangeTDCommandType: z.number().int().nullable().optional(), ShiftNpcId: z.number().int().nullable().optional(), DisplayLastFuncInvalidType: z.number().int().nullable().optional(), AndCheckIndividualityList: z.array(z.number().int()).nullable().optional(), AndOrCheckIndividualityList: z.array(z.array(z.number().int())).nullable().optional(), WinBattleNotRelatedSurvivalStatus: z.number().int().nullable().optional(), ForceSelfInstantDeath: z.number().int().nullable().optional(), ChangeMaxBreakGauge: z.number().int().nullable().optional(), ParamAddMaxValue: z.number().int().nullable().optional(), ParamAddMaxCount: z.number().int().nullable().optional(), LossHpChangeDamage: z.number().int().nullable().optional(), IncludePassiveIndividuality: z.number().int().nullable().optional(), MotionChange: z.number().int().nullable().optional(), PopLabelDelay: z.number().int().nullable().optional(), NoTargetNoAct: z.number().int().nullable().optional(), CardIndex: z.number().int().nullable().optional(), CardIndividuality: z.number().int().nullable().optional(), WarBoardTakeOverBuff: z.number().int().nullable().optional(), ParamAddSelfIndividuality: z.array(z.number().int()).nullable().optional(), ParamAddOpIndividuality: z.array(z.number().int()).nullable().optional(), ParamAddFieldIndividuality: z.array(z.number().int()).nullable().optional(), ParamAddValue: z.number().int().nullable().optional(), MultipleGainStar: z.number().int().nullable().optional(), NoCheckIndividualityIfNotUnit: z.number().int().nullable().optional(), ForcedEffectSpeedOne: z.number().int().nullable().optional(), SetLimitCount: z.number().int().nullable().optional(), CheckEnemyFieldSpace: z.number().int().nullable().optional(), TriggeredFuncPosition: z.number().int().nullable().optional(), DamageCount: z.number().int().nullable().optional(), DamageRates: z.array(z.number().int()).nullable().optional(), OnPositions: z.array(z.number().int()).nullable().optional(), OffPositions: z.array(z.number().int()).nullable().optional(), TargetIndiv: z.number().int().nullable().optional(), IncludeIgnoreIndividuality: z.number().int().nullable().optional(), EvenIfWinDie: z.number().int().nullable().optional(), CallSvtEffectId: z.number().int().nullable().optional(), ForceAddState: z.number().int().nullable().optional(), UnSubState: z.number().int().nullable().optional(), IsStun2WaitMode: z.number().int().nullable().optional(), ForceSubState: z.number().int().nullable().optional(), IgnoreIndivUnreleaseable: z.number().int().nullable().optional(), OnParty: z.number().int().nullable().optional(), CounterId: z.number().int().nullable().optional(), CounterLv: z.number().int().nullable().optional(), CounterOc: z.number().int().nullable().optional(), UseTreasureDevice: z.number().int().nullable().optional(), SkillReaction: z.number().int().nullable().optional(), BehaveAsFamilyBuff: z.number().int().nullable().optional(), UnSubStateWhileLinkedToOthers: z.number().int().nullable().optional(), NotAccompanyWhenLinkedTargetMoveState: z.number().int().nullable().optional(), NotTargetSkillIdArray: z.array(z.number().int()).nullable().optional(), ShortTurn: z.number().int().nullable().optional(), FieldIndividuality: z.array(z.number().int()).nullable().optional(), BGId: z.number().int().nullable().optional(), BGType: z.number().int().nullable().optional(), BgmId: z.number().int().nullable().optional(), TakeOverFieldState: z.number().int().nullable().optional(), TakeOverNextWaveBGAndBGM: z.number().int().nullable().optional(), RemoveFieldBuffActorDeath: z.number().int().nullable().optional(), FieldBuffGrantType: z.number().int().nullable().optional(), Priority: z.number().int().nullable().optional(), AddIndividualityEx: z.number().int().nullable().optional(), IgnoreResistance: z.number().int().nullable().optional(), GainNpTargetPassiveIndividuality: z.number().int().nullable().optional(), HpReduceToRegainIndiv: z.number().int().nullable().optional(), DisplayActualRecoveryHpFlag: z.number().int().nullable().optional(), ShiftDeckIndex: z.number().int().nullable().optional(), PopValueText: z.string().nullable().optional(), IsLossHpPerNow: z.number().int().nullable().optional(), CopyTargetFunctionType: z.array(z.number().int()).nullable().optional(), CopyFunctionTargetPTOnly: z.number().int().nullable().optional(), IgnoreValueUp: z.number().int().nullable().optional(), ApplyValueUp: z.array(z.string()).nullable().optional(), ActNoDamageBuff: z.number().int().nullable().optional(), ActSelectIndex: z.number().int().nullable().optional(), CopyTargetBuffType: z.array(z.number().int()).nullable().optional(), NotSkillCopyTargetFuncIds: z.array(z.number().int()).nullable().optional(), NotSkillCopyTargetIndividualities: z.array(z.number().int()).nullable().optional(), ClassIconAuraEffectId: z.number().int().nullable().optional(), ActMasterGenderType: z.number().int().nullable().optional(), IntervalTurn: z.number().int().nullable().optional(), IntervalCount: z.number().int().nullable().optional(), TriggeredFieldCountTarget: z.number().int().nullable().optional(), TriggeredFieldCountRange: z.string().nullable().optional(), TargetEnemyRange: z.array(z.number().int()).nullable().optional(), TriggeredFuncPositionSameTarget: z.number().int().nullable().optional(), TriggeredFuncPositionAll: z.number().int().nullable().optional(), TriggeredTargetHpRange: z.string().nullable().optional(), TriggeredTargetHpRateRange: z.string().nullable().optional(), ExcludeUnSubStateIndiv: z.number().int().nullable().optional(), ProgressTurnOnBoard: z.number().int().nullable().optional(), CheckTargetResurrectable: z.number().int().nullable().optional(), CancelTransform: z.number().int().nullable().optional(), UnSubStateWhenContinue: z.number().int().nullable().optional(), CheckTargetHaveDefeatPoint: z.number().int().nullable().optional(), NPFixedDamageValue: z.number().int().nullable().optional(), IgnoreShiftSafeDamage: z.number().int().nullable().optional(), ActAttackFunction: z.number().int().nullable().optional(), DelayRemoveBuffExpiredOnPlayerTurn: z.number().int().nullable().optional(), AllowRemoveBuff: z.number().int().nullable().optional(), NotExecFunctionIfKeepAliveOnWarBoard: z.number().int().nullable().optional(), SnapShotParamAddSelfIndv: z.array(z.number().int()).nullable().optional(), SnapShotParamAddOpIndv: z.array(z.number().int()).nullable().optional(), SnapShotParamAddFieldIndv: z.array(z.number().int()).nullable().optional(), SnapShotParamAddValue: z.number().int().nullable().optional(), SnapShotParamAddMaxValue: z.number().int().nullable().optional(), SnapShotParamAddMaxCount: z.number().int().nullable().optional(), NotExecOnTransform: z.number().int().nullable().optional(), NotRemoveOnTransform: z.number().int().nullable().optional(), PriorityBgm: z.number().int().nullable().optional(), BgmAllowSubPlaying: z.number().int().nullable().optional(), BgPriority: z.number().int().nullable().optional(), PriorityBg: z.number().int().nullable().optional(), ResetPriorityBgmAtWaveStart: z.number().int().nullable().optional(), ControlOtherBgmAtOverStageBgm_Priority: z.number().int().nullable().optional(), ControlOtherBgmAtOverStageBgm_Target: z.number().int().nullable().optional(), ExtendBuffHalfTurnInOpponentTurn: z.number().int().nullable().optional(), ShortenBuffHalfTurnInOpponentTurn: z.number().int().nullable().optional(), ExtendBuffHalfTurnInPartyTurn: z.number().int().nullable().optional(), ShortenBuffHalfTurnInPartyTurn: z.number().int().nullable().optional(), LinkageBuffGrantSuccessEvenIfOtherFailed: z.number().int().nullable().optional(), DisplayNoEffectCauses: z.string().nullable().optional(), BattlePointId: z.number().int().nullable().optional(), BattlePointValue: z.number().int().nullable().optional(), BattlePointUiUpdateType: z.number().int().nullable().optional(), BattlePointOverwrite: z.number().int().nullable().optional(), CheckOverChargeStageRange: z.array(z.string()).nullable().optional(), CheckBattlePointPhaseRange: z.array(valCheckBattlePointPhaseRange).nullable().optional(), StartingPosition: z.array(z.number().int()).nullable().optional(), FriendShipAbove: z.number().int().nullable().optional(), DamageRateBattlePointPhase: z.array(valDamageRateBattlePointPhase).nullable().optional(), ParamAddBattlePointPhaseId: z.number().int().nullable().optional(), ParamAddBattlePointPhaseValue: z.number().int().nullable().optional(), ShortenMaxCountEachSkill: z.array(z.number().int()).nullable().optional(), ChargeHpMaxBeforeBreakGaugeUp: z.number().int().nullable().optional(), TargetFunctionIndividuality: z.array(z.number().int()).nullable().optional(), TargetBuffIndividuality: z.array(z.number().int()).nullable().optional(), TargetEnemyClass: z.number().int().nullable().optional(), ParamAddIndividualityTargetType: z.number().int().nullable().optional(), TriggeredFuncIndexAndCheckList: z.array(z.number().int()).nullable().optional(), FuncCheckTargetIndividualityTargetType: z.number().int().nullable().optional(), FuncCheckTargetIndividualityCountHigher: z.number().int().nullable().optional(), FuncCheckTargetIndividualityCountLower: z.number().int().nullable().optional(), FuncCheckTargetIndividualityCountEqual: z.number().int().nullable().optional(), ParamAddSelfIndividualityAndCheck: z.array(z.array(z.number().int())).nullable().optional(), ParamAddOpIndividualityAndCheck: z.array(z.array(z.number().int())).nullable().optional(), ParamAddFieldIndividualityAndCheck: z.array(z.array(z.number().int())).nullable().optional(), SnapShotParamAddSelfIndividualityAndCheck: z.array(z.array(z.number().int())).nullable().optional(), SnapShotParamAddOpIndividualityAndCheck: z.array(z.array(z.number().int())).nullable().optional(), SnapShotParamAddFieldIndividualityAndCheck: z.array(z.array(z.number().int())).nullable().optional(), EnemyCountChangeTime: z.number().int().nullable().optional(), EnemyCountChangeEffectId: z.number().int().nullable().optional(), EnemyCountWaitTimeAfterMessage: z.number().int().nullable().optional(), WaitMessageEnd: z.number().int().nullable().optional(), MessageStartDelayTime: z.number().int().nullable().optional(), ContinueDisplayMessage: z.number().int().nullable().optional(), StartIntervalTurn: z.number().int().nullable().optional(), StartIntervalCount: z.number().int().nullable().optional(), CommonReleaseId: z.number().int().nullable().optional(), ForceTurnProgressIfTimingIsOverInPartyTurn: z.number().int().nullable().optional(), ForceTurnProgressIfTimingIsOverInOpponentTurn: z.number().int().nullable().optional(), OverwriteFuncInvalidType: z.number().int().nullable().optional(), BgmFadeTime: z.number().int().nullable().optional(), KeepChangeModelAfterContinue: z.number().int().nullable().optional(), DefenceDamageHigher: z.number().int().nullable().optional(), SameIndivBuffActorOnField: z.number().int().nullable().optional(), SyncUsedSameIndivBuffActorOnField: z.number().int().nullable().optional(), OnlyMaxFuncGroupId: z.number().int().nullable().optional(), UseAttack: z.number().int().nullable().optional(), CondParamAddType: z.number().int().nullable().optional(), CondParamAddValue: z.number().int().nullable().optional(), CondParamAddMaxValue: z.number().int().nullable().optional(), CondParamAddTargetId: z.array(z.number().int()).nullable().optional(), CondParamRangeType: z.number().int().nullable().optional(), CondParamRangeMaxCount: z.number().int().nullable().optional(), CondParamRangeMaxValue: z.number().int().nullable().optional(), CondParamRangeTargetId: z.array(z.number().int()).nullable().optional(), ExecOnce: z.number().int().nullable().optional(), ApplyBuffIndividuality: z.array(z.array(z.number().int())).nullable().optional(), ExecWhenCanNotAttack: z.number().int().nullable().optional(), ExecEvenCardSelectState: z.number().int().nullable().optional(), IgnoredCheckBuffType: z.number().int().nullable().optional(), OverwriteShift: z.number().int().nullable().optional(), IgnoreShiftWhiteFade: z.number().int().nullable().optional(), BackStepTargets: z.array(z.number().int()).nullable().optional(), ReplacePositionTargets: z.array(z.number().int()).nullable().optional(), ApplySupportSvt: z.number().int().nullable().optional(), ApplyHighestValueInFieldGroup: z.number().int().nullable().optional(), IsClassIconChangeSaveGrand: z.number().int().nullable().optional(), ExecuteEffectId: z.number().int().nullable().optional(), PriorityUpHate: z.number().int().nullable().optional(), JudgeUseEveryTime: z.number().int().nullable().optional(), IgnoreDeathRate: z.number().int().nullable().optional(), SubstituteRate: z.number().int().nullable().optional(), SubstituteResist: z.number().int().nullable().optional(), UseSvtResistRate: z.number().int().nullable().optional(), UseBuffResistRate: z.number().int().nullable().optional(), SubstituteSkillId: z.number().int().nullable().optional(), SubstituteSkillLv: z.number().int().nullable().optional(), ResistSkillId: z.number().int().nullable().optional(), ResistSkillLv: z.number().int().nullable().optional(), SubstitutePopupText: z.string().nullable().optional(), SubstitutePopupIconId: z.number().int().nullable().optional(), ResistPopupText: z.string().nullable().optional(), ResistPopupIconId: z.number().int().nullable().optional(), SubstituteEffectList: z.array(z.number().int()).nullable().optional(), ResistEffectList: z.array(z.number().int()).nullable().optional(), EnablePassiveBuffConvert: z.number().int().nullable().optional(), FieldBuffApplyTarget: z.number().int().nullable().optional(), MaxGainNp: z.number().int().nullable().optional(), MaxHastenNpTurn: z.number().int().nullable().optional(), FunctionTriggerActorTargetFlag: z.number().int().nullable().optional(), IsTurnProgressWithoutGrantActor: z.number().int().nullable().optional(), IsFuncCheckFieldIndividuality: z.number().int().nullable().optional(), IgnoreTargetFuncResult: z.number().int().nullable().optional(), ExecuteWhenHideText: z.number().int().nullable().optional(), SkipCheckAlive: z.number().int().nullable().optional(), CallServantPosition: z.number().int().nullable().optional(), NotActIfAlreadyAvoidStateBuff: z.number().int().nullable().optional(), AvoidFieldBuff: z.number().int().nullable().optional(), UseUserSpecifiedLimitCount: z.number().int().nullable().optional(), ParamAddOpCheckDead: z.number().int().nullable().optional(), ResultAggregateGroupId: z.number().int().nullable().optional(), SelfTurnProgressGroup: z.number().int().nullable().optional(), EnemyCountWaitTimeAfterEffect: z.number().int().nullable().optional(), TriggeredTargetBattlePointRateRange: z.array(valTriggeredTargetBattlePointRateRange).nullable().optional(), OnlyAvailableSkill: z.number().int().nullable().optional(), UserEquipSkillMaxTargetNum: z.number().int().nullable().optional(), ShowMasterPopupDuringNoblePhantasm: z.number().int().nullable().optional(), TypeIndividualityEachFunc: z.array(z.array(z.number().int())).nullable().optional(), NotRemoveOnShift: z.number().int().nullable().optional(), ExecuteForEachTargetFuncExecution: z.number().int().nullable().optional(), Individuality: z.number().int().nullable().optional(), EventId: z.number().int().nullable().optional(), AddCount: z.number().int().nullable().optional(), RateCount: z.number().int().nullable().optional(), DropRateCount: z.number().int().nullable().optional(), DependFunc: niceBaseFunction.nullable().optional()}); export const vals = z.object({Rate: z.number().int().nullable().optional(), Turn: z.number().int().nullable().optional(), Count: z.number().int().nullable().optional(), Value: z.number().int().nullable().optional(), Value2: z.number().int().nullable().optional(), UseRate: z.number().int().nullable().optional(), Target: z.number().int().nullable().optional(), Correction: z.number().int().nullable().optional(), ParamAdd: z.number().int().nullable().optional(), ParamMax: z.number().int().nullable().optional(), HideMiss: z.number().int().nullable().optional(), OnField: z.number().int().nullable().optional(), HideNoEffect: z.number().int().nullable().optional(), Unaffected: z.number().int().nullable().optional(), ShowState: z.number().int().nullable().optional(), AuraEffectId: z.number().int().nullable().optional(), ActSet: z.number().int().nullable().optional(), ActSetWeight: z.number().int().nullable().optional(), ShowQuestNoEffect: z.number().int().nullable().optional(), CheckDead: z.number().int().nullable().optional(), RatioHPHigh: z.number().int().nullable().optional(), RatioHPLow: z.number().int().nullable().optional(), SetPassiveFrame: z.number().int().nullable().optional(), SetPlayerSideBg: z.number().int().nullable().optional(), SetEnemySideBg: z.number().int().nullable().optional(), ProcPassive: z.number().int().nullable().optional(), ProcActive: z.number().int().nullable().optional(), HideParam: z.number().int().nullable().optional(), SkillID: z.number().int().nullable().optional(), SkillLV: z.number().int().nullable().optional(), ShowCardOnly: z.number().int().nullable().optional(), EffectSummon: z.number().int().nullable().optional(), RatioHPRangeHigh: z.number().int().nullable().optional(), RatioHPRangeLow: z.number().int().nullable().optional(), TargetList: z.array(z.number().int()).nullable().optional(), OpponentOnly: z.number().int().nullable().optional(), StatusEffectId: z.number().int().nullable().optional(), EndBattle: z.number().int().nullable().optional(), LoseBattle: z.number().int().nullable().optional(), AddIndividualty: z.number().int().nullable().optional(), AddIndividualtyList: z.array(z.number().int()).nullable().optional(), AddLinkageTargetIndividualty: z.number().int().nullable().optional(), SameBuffLimitTargetIndividuality: z.number().int().nullable().optional(), SameBuffLimitNum: z.number().int().nullable().optional(), CheckDuplicate: z.number().int().nullable().optional(), OnFieldCount: z.number().int().nullable().optional(), TargetRarityList: z.array(z.number().int()).nullable().optional(), DependFuncId: z.number().int().nullable().optional(), InvalidHide: z.number().int().nullable().optional(), OutEnemyNpcId: z.number().int().nullable().optional(), InEnemyNpcId: z.number().int().nullable().optional(), OutEnemyPosition: z.number().int().nullable().optional(), IgnoreIndividuality: z.number().int().nullable().optional(), StarHigher: z.number().int().nullable().optional(), ChangeTDCommandType: z.number().int().nullable().optional(), ShiftNpcId: z.number().int().nullable().optional(), DisplayLastFuncInvalidType: z.number().int().nullable().optional(), AndCheckIndividualityList: z.array(z.number().int()).nullable().optional(), AndOrCheckIndividualityList: z.array(z.array(z.number().int())).nullable().optional(), WinBattleNotRelatedSurvivalStatus: z.number().int().nullable().optional(), ForceSelfInstantDeath: z.number().int().nullable().optional(), ChangeMaxBreakGauge: z.number().int().nullable().optional(), ParamAddMaxValue: z.number().int().nullable().optional(), ParamAddMaxCount: z.number().int().nullable().optional(), LossHpChangeDamage: z.number().int().nullable().optional(), IncludePassiveIndividuality: z.number().int().nullable().optional(), MotionChange: z.number().int().nullable().optional(), PopLabelDelay: z.number().int().nullable().optional(), NoTargetNoAct: z.number().int().nullable().optional(), CardIndex: z.number().int().nullable().optional(), CardIndividuality: z.number().int().nullable().optional(), WarBoardTakeOverBuff: z.number().int().nullable().optional(), ParamAddSelfIndividuality: z.array(z.number().int()).nullable().optional(), ParamAddOpIndividuality: z.array(z.number().int()).nullable().optional(), ParamAddFieldIndividuality: z.array(z.number().int()).nullable().optional(), ParamAddValue: z.number().int().nullable().optional(), MultipleGainStar: z.number().int().nullable().optional(), NoCheckIndividualityIfNotUnit: z.number().int().nullable().optional(), ForcedEffectSpeedOne: z.number().int().nullable().optional(), SetLimitCount: z.number().int().nullable().optional(), CheckEnemyFieldSpace: z.number().int().nullable().optional(), TriggeredFuncPosition: z.number().int().nullable().optional(), DamageCount: z.number().int().nullable().optional(), DamageRates: z.array(z.number().int()).nullable().optional(), OnPositions: z.array(z.number().int()).nullable().optional(), OffPositions: z.array(z.number().int()).nullable().optional(), TargetIndiv: z.number().int().nullable().optional(), IncludeIgnoreIndividuality: z.number().int().nullable().optional(), EvenIfWinDie: z.number().int().nullable().optional(), CallSvtEffectId: z.number().int().nullable().optional(), ForceAddState: z.number().int().nullable().optional(), UnSubState: z.number().int().nullable().optional(), IsStun2WaitMode: z.number().int().nullable().optional(), ForceSubState: z.number().int().nullable().optional(), IgnoreIndivUnreleaseable: z.number().int().nullable().optional(), OnParty: z.number().int().nullable().optional(), CounterId: z.number().int().nullable().optional(), CounterLv: z.number().int().nullable().optional(), CounterOc: z.number().int().nullable().optional(), UseTreasureDevice: z.number().int().nullable().optional(), SkillReaction: z.number().int().nullable().optional(), BehaveAsFamilyBuff: z.number().int().nullable().optional(), UnSubStateWhileLinkedToOthers: z.number().int().nullable().optional(), NotAccompanyWhenLinkedTargetMoveState: z.number().int().nullable().optional(), NotTargetSkillIdArray: z.array(z.number().int()).nullable().optional(), ShortTurn: z.number().int().nullable().optional(), FieldIndividuality: z.array(z.number().int()).nullable().optional(), BGId: z.number().int().nullable().optional(), BGType: z.number().int().nullable().optional(), BgmId: z.number().int().nullable().optional(), TakeOverFieldState: z.number().int().nullable().optional(), TakeOverNextWaveBGAndBGM: z.number().int().nullable().optional(), RemoveFieldBuffActorDeath: z.number().int().nullable().optional(), FieldBuffGrantType: z.number().int().nullable().optional(), Priority: z.number().int().nullable().optional(), AddIndividualityEx: z.number().int().nullable().optional(), IgnoreResistance: z.number().int().nullable().optional(), GainNpTargetPassiveIndividuality: z.number().int().nullable().optional(), HpReduceToRegainIndiv: z.number().int().nullable().optional(), DisplayActualRecoveryHpFlag: z.number().int().nullable().optional(), ShiftDeckIndex: z.number().int().nullable().optional(), PopValueText: z.string().nullable().optional(), IsLossHpPerNow: z.number().int().nullable().optional(), CopyTargetFunctionType: z.array(z.number().int()).nullable().optional(), CopyFunctionTargetPTOnly: z.number().int().nullable().optional(), IgnoreValueUp: z.number().int().nullable().optional(), ApplyValueUp: z.array(z.string()).nullable().optional(), ActNoDamageBuff: z.number().int().nullable().optional(), ActSelectIndex: z.number().int().nullable().optional(), CopyTargetBuffType: z.array(z.number().int()).nullable().optional(), NotSkillCopyTargetFuncIds: z.array(z.number().int()).nullable().optional(), NotSkillCopyTargetIndividualities: z.array(z.number().int()).nullable().optional(), ClassIconAuraEffectId: z.number().int().nullable().optional(), ActMasterGenderType: z.number().int().nullable().optional(), IntervalTurn: z.number().int().nullable().optional(), IntervalCount: z.number().int().nullable().optional(), TriggeredFieldCountTarget: z.number().int().nullable().optional(), TriggeredFieldCountRange: z.string().nullable().optional(), TargetEnemyRange: z.array(z.number().int()).nullable().optional(), TriggeredFuncPositionSameTarget: z.number().int().nullable().optional(), TriggeredFuncPositionAll: z.number().int().nullable().optional(), TriggeredTargetHpRange: z.string().nullable().optional(), TriggeredTargetHpRateRange: z.string().nullable().optional(), ExcludeUnSubStateIndiv: z.number().int().nullable().optional(), ProgressTurnOnBoard: z.number().int().nullable().optional(), CheckTargetResurrectable: z.number().int().nullable().optional(), CancelTransform: z.number().int().nullable().optional(), UnSubStateWhenContinue: z.number().int().nullable().optional(), CheckTargetHaveDefeatPoint: z.number().int().nullable().optional(), NPFixedDamageValue: z.number().int().nullable().optional(), IgnoreShiftSafeDamage: z.number().int().nullable().optional(), ActAttackFunction: z.number().int().nullable().optional(), DelayRemoveBuffExpiredOnPlayerTurn: z.number().int().nullable().optional(), AllowRemoveBuff: z.number().int().nullable().optional(), NotExecFunctionIfKeepAliveOnWarBoard: z.number().int().nullable().optional(), SnapShotParamAddSelfIndv: z.array(z.number().int()).nullable().optional(), SnapShotParamAddOpIndv: z.array(z.number().int()).nullable().optional(), SnapShotParamAddFieldIndv: z.array(z.number().int()).nullable().optional(), SnapShotParamAddValue: z.number().int().nullable().optional(), SnapShotParamAddMaxValue: z.number().int().nullable().optional(), SnapShotParamAddMaxCount: z.number().int().nullable().optional(), NotExecOnTransform: z.number().int().nullable().optional(), NotRemoveOnTransform: z.number().int().nullable().optional(), PriorityBgm: z.number().int().nullable().optional(), BgmAllowSubPlaying: z.number().int().nullable().optional(), BgPriority: z.number().int().nullable().optional(), PriorityBg: z.number().int().nullable().optional(), ResetPriorityBgmAtWaveStart: z.number().int().nullable().optional(), ControlOtherBgmAtOverStageBgm_Priority: z.number().int().nullable().optional(), ControlOtherBgmAtOverStageBgm_Target: z.number().int().nullable().optional(), ExtendBuffHalfTurnInOpponentTurn: z.number().int().nullable().optional(), ShortenBuffHalfTurnInOpponentTurn: z.number().int().nullable().optional(), ExtendBuffHalfTurnInPartyTurn: z.number().int().nullable().optional(), ShortenBuffHalfTurnInPartyTurn: z.number().int().nullable().optional(), LinkageBuffGrantSuccessEvenIfOtherFailed: z.number().int().nullable().optional(), DisplayNoEffectCauses: z.string().nullable().optional(), BattlePointId: z.number().int().nullable().optional(), BattlePointValue: z.number().int().nullable().optional(), BattlePointUiUpdateType: z.number().int().nullable().optional(), BattlePointOverwrite: z.number().int().nullable().optional(), CheckOverChargeStageRange: z.array(z.string()).nullable().optional(), CheckBattlePointPhaseRange: z.array(valCheckBattlePointPhaseRange).nullable().optional(), StartingPosition: z.array(z.number().int()).nullable().optional(), FriendShipAbove: z.number().int().nullable().optional(), DamageRateBattlePointPhase: z.array(valDamageRateBattlePointPhase).nullable().optional(), ParamAddBattlePointPhaseId: z.number().int().nullable().optional(), ParamAddBattlePointPhaseValue: z.number().int().nullable().optional(), ShortenMaxCountEachSkill: z.array(z.number().int()).nullable().optional(), ChargeHpMaxBeforeBreakGaugeUp: z.number().int().nullable().optional(), TargetFunctionIndividuality: z.array(z.number().int()).nullable().optional(), TargetBuffIndividuality: z.array(z.number().int()).nullable().optional(), TargetEnemyClass: z.number().int().nullable().optional(), ParamAddIndividualityTargetType: z.number().int().nullable().optional(), TriggeredFuncIndexAndCheckList: z.array(z.number().int()).nullable().optional(), FuncCheckTargetIndividualityTargetType: z.number().int().nullable().optional(), FuncCheckTargetIndividualityCountHigher: z.number().int().nullable().optional(), FuncCheckTargetIndividualityCountLower: z.number().int().nullable().optional(), FuncCheckTargetIndividualityCountEqual: z.number().int().nullable().optional(), ParamAddSelfIndividualityAndCheck: z.array(z.array(z.number().int())).nullable().optional(), ParamAddOpIndividualityAndCheck: z.array(z.array(z.number().int())).nullable().optional(), ParamAddFieldIndividualityAndCheck: z.array(z.array(z.number().int())).nullable().optional(), SnapShotParamAddSelfIndividualityAndCheck: z.array(z.array(z.number().int())).nullable().optional(), SnapShotParamAddOpIndividualityAndCheck: z.array(z.array(z.number().int())).nullable().optional(), SnapShotParamAddFieldIndividualityAndCheck: z.array(z.array(z.number().int())).nullable().optional(), EnemyCountChangeTime: z.number().int().nullable().optional(), EnemyCountChangeEffectId: z.number().int().nullable().optional(), EnemyCountWaitTimeAfterMessage: z.number().int().nullable().optional(), WaitMessageEnd: z.number().int().nullable().optional(), MessageStartDelayTime: z.number().int().nullable().optional(), ContinueDisplayMessage: z.number().int().nullable().optional(), StartIntervalTurn: z.number().int().nullable().optional(), StartIntervalCount: z.number().int().nullable().optional(), CommonReleaseId: z.number().int().nullable().optional(), ForceTurnProgressIfTimingIsOverInPartyTurn: z.number().int().nullable().optional(), ForceTurnProgressIfTimingIsOverInOpponentTurn: z.number().int().nullable().optional(), OverwriteFuncInvalidType: z.number().int().nullable().optional(), BgmFadeTime: z.number().int().nullable().optional(), KeepChangeModelAfterContinue: z.number().int().nullable().optional(), DefenceDamageHigher: z.number().int().nullable().optional(), SameIndivBuffActorOnField: z.number().int().nullable().optional(), SyncUsedSameIndivBuffActorOnField: z.number().int().nullable().optional(), OnlyMaxFuncGroupId: z.number().int().nullable().optional(), UseAttack: z.number().int().nullable().optional(), CondParamAddType: z.number().int().nullable().optional(), CondParamAddValue: z.number().int().nullable().optional(), CondParamAddMaxValue: z.number().int().nullable().optional(), CondParamAddTargetId: z.array(z.number().int()).nullable().optional(), CondParamRangeType: z.number().int().nullable().optional(), CondParamRangeMaxCount: z.number().int().nullable().optional(), CondParamRangeMaxValue: z.number().int().nullable().optional(), CondParamRangeTargetId: z.array(z.number().int()).nullable().optional(), ExecOnce: z.number().int().nullable().optional(), ApplyBuffIndividuality: z.array(z.array(z.number().int())).nullable().optional(), ExecWhenCanNotAttack: z.number().int().nullable().optional(), ExecEvenCardSelectState: z.number().int().nullable().optional(), IgnoredCheckBuffType: z.number().int().nullable().optional(), OverwriteShift: z.number().int().nullable().optional(), IgnoreShiftWhiteFade: z.number().int().nullable().optional(), BackStepTargets: z.array(z.number().int()).nullable().optional(), ReplacePositionTargets: z.array(z.number().int()).nullable().optional(), ApplySupportSvt: z.number().int().nullable().optional(), ApplyHighestValueInFieldGroup: z.number().int().nullable().optional(), IsClassIconChangeSaveGrand: z.number().int().nullable().optional(), ExecuteEffectId: z.number().int().nullable().optional(), PriorityUpHate: z.number().int().nullable().optional(), JudgeUseEveryTime: z.number().int().nullable().optional(), IgnoreDeathRate: z.number().int().nullable().optional(), SubstituteRate: z.number().int().nullable().optional(), SubstituteResist: z.number().int().nullable().optional(), UseSvtResistRate: z.number().int().nullable().optional(), UseBuffResistRate: z.number().int().nullable().optional(), SubstituteSkillId: z.number().int().nullable().optional(), SubstituteSkillLv: z.number().int().nullable().optional(), ResistSkillId: z.number().int().nullable().optional(), ResistSkillLv: z.number().int().nullable().optional(), SubstitutePopupText: z.string().nullable().optional(), SubstitutePopupIconId: z.number().int().nullable().optional(), ResistPopupText: z.string().nullable().optional(), ResistPopupIconId: z.number().int().nullable().optional(), SubstituteEffectList: z.array(z.number().int()).nullable().optional(), ResistEffectList: z.array(z.number().int()).nullable().optional(), EnablePassiveBuffConvert: z.number().int().nullable().optional(), FieldBuffApplyTarget: z.number().int().nullable().optional(), MaxGainNp: z.number().int().nullable().optional(), MaxHastenNpTurn: z.number().int().nullable().optional(), FunctionTriggerActorTargetFlag: z.number().int().nullable().optional(), IsTurnProgressWithoutGrantActor: z.number().int().nullable().optional(), IsFuncCheckFieldIndividuality: z.number().int().nullable().optional(), IgnoreTargetFuncResult: z.number().int().nullable().optional(), ExecuteWhenHideText: z.number().int().nullable().optional(), SkipCheckAlive: z.number().int().nullable().optional(), CallServantPosition: z.number().int().nullable().optional(), NotActIfAlreadyAvoidStateBuff: z.number().int().nullable().optional(), AvoidFieldBuff: z.number().int().nullable().optional(), UseUserSpecifiedLimitCount: z.number().int().nullable().optional(), ParamAddOpCheckDead: z.number().int().nullable().optional(), ResultAggregateGroupId: z.number().int().nullable().optional(), SelfTurnProgressGroup: z.number().int().nullable().optional(), EnemyCountWaitTimeAfterEffect: z.number().int().nullable().optional(), TriggeredTargetBattlePointRateRange: z.array(valTriggeredTargetBattlePointRateRange).nullable().optional(), OnlyAvailableSkill: z.number().int().nullable().optional(), UserEquipSkillMaxTargetNum: z.number().int().nullable().optional(), ShowMasterPopupDuringNoblePhantasm: z.number().int().nullable().optional(), TypeIndividualityEachFunc: z.array(z.array(z.number().int())).nullable().optional(), NotRemoveOnShift: z.number().int().nullable().optional(), ExecuteForEachTargetFuncExecution: z.number().int().nullable().optional(), Individuality: z.number().int().nullable().optional(), EventId: z.number().int().nullable().optional(), AddCount: z.number().int().nullable().optional(), RateCount: z.number().int().nullable().optional(), DropRateCount: z.number().int().nullable().optional(), DependFunc: niceBaseFunction.nullable().optional(), DependFuncVals: baseVals.nullable().optional()}); export const niceFunction = z.object({funcId: z.number().int(), funcType: niceFuncType, funcTargetType: niceFuncTargetType, funcTargetTeam: funcApplyTarget, funcPopupText: z.string(), funcPopupIcon: z.string().min(1).max(2083).nullable().optional(), functvals: z.array(niceTrait), overWriteTvalsList: z.array(z.array(niceTrait)), funcquestTvals: z.array(niceTrait), script: functionScript, funcGroup: z.array(niceFuncGroup), traitVals: z.array(niceTrait).optional(), buffs: z.array(niceBuff), svals: z.array(vals), svals2: z.array(vals).nullable().optional(), svals3: z.array(vals).nullable().optional(), svals4: z.array(vals).nullable().optional(), svals5: z.array(vals).nullable().optional(), followerVals: z.array(vals).nullable().optional()}); export const niceSkillGroupOverwrite = z.object({level: z.number().int(), skillGroupId: z.number().int(), startedAt: z.number().int(), endedAt: z.number().int(), icon: z.string().min(1).max(2083).nullable().optional(), detail: z.string(), unmodifiedDetail: z.string(), functions: z.array(niceFunction)}); export const svtClass = z.enum(["saber", "archer", "lancer", "rider", "caster", "assassin", "berserker", "shielder", "ruler", "alterEgo", "avenger", "demonGodPillar", "loreGrandSaber", "loreGrandArcher", "loreGrandLancer", "loreGrandRider", "loreGrandCaster", "loreGrandAssassin", "loreGrandBerserker", "beastII", "ushiChaosTide", "beastI", "moonCancer", "beastIIIR", "foreigner", "beastIIIL", "beastUnknown", "pretender", "beastIV", "beastILost", "uOlgaMarieAlienGod", "uOlgaMarie", "beast", "beastVI", "beastVIBoss", "beastVII", "uOlgaMarieFlare", "beastEresh", "uOlgaMarieAqua", "uOlgaMarieGrand", "uOlgaMarieStellar", "unBeastOlgaMarie", "aquaFragment", "unknown", "agarthaPenth", "cccFinaleEmiyaAlter", "salemAbby", "OTHER", "ALL", "EXTRA", "MIX", "EXTRA1", "EXTRA2", "uOlgaMarieFlareCollection", "uOlgaMarieAquaCollection", "uOlgaMarieGrandCollection", "uOlgaMarieStellarCollection", "atlasUnmappedClass", "grandSaber", "grandArcher", "grandLancer", "grandRider", "grandCaster", "grandAssassin", "grandBerserker", "grandShielder", "grandRuler", "grandAlterego", "grandAvenger", "grandMoonCancer", "grandForeigner", "grandPretender", "grandUnBeastUOlgaMarieAlienGod", "grandUnBeastDraco", "grandUnBeastEresh", "grandUnBeastUOlgaMarie"]); export const niceSvtType = z.enum(["normal", "heroine", "combineMaterial", "enemy", "enemyCollection", "servantEquip", "statusUp", "svtEquipMaterial", "enemyCollectionDetail", "all", "commandCode", "svtMaterialTd"]); export const niceSvtFlag = z.enum(["onlyUseForNpc", "svtEquipFriendShip", "ignoreCombineLimitSpecial", "svtEquipExp", "svtEquipChocolate", "svtEquipManaExchange", "svtEquipCampaign", "svtEquipEvent", "svtEquipEventReward", "svtEquipRarityLevelNumMission", "normal", "goetia", "matDropRateUpCe", "unknown"]); export const niceSvtFlagOriginal = z.enum(["onlyUseForNpc", "svtEquipFriendShip", "ignoreCombineLimitSpecial", "svtEquipExp", "svtEquipChocolate", "svtEquipManaExchange", "svtEquipCampaign", "svtEquipEvent", "svtEquipEventReward", "svtEquipRarityLevelNumMission"]); export const extraAssetsUrl = z.object({ascension: z.record(z.string(), z.string().min(1).max(2083)).nullable().optional(), story: z.record(z.string(), z.string().min(1).max(2083)).nullable().optional(), costume: z.record(z.string(), z.string().min(1).max(2083)).nullable().optional(), equip: z.record(z.string(), z.string().min(1).max(2083)).nullable().optional(), cc: z.record(z.string(), z.string().min(1).max(2083)).nullable().optional(), imagePartsGroup: z.record(z.string(), z.string().min(1).max(2083)).nullable().optional(), transformGroup: z.record(z.string(), z.string().min(1).max(2083)).nullable().optional()}); export const extraAssets = z.object({charaGraph: extraAssetsUrl, faces: extraAssetsUrl, charaGraphEx: extraAssetsUrl, charaGraphName: extraAssetsUrl, narrowFigure: extraAssetsUrl, charaFigure: extraAssetsUrl, charaFigureForm: z.record(z.string(), extraAssetsUrl), charaFigureMulti: z.record(z.string(), extraAssetsUrl), charaFigureMultiCombine: z.record(z.string(), extraAssetsUrl), charaFigureMultiLimitUp: z.record(z.string(), extraAssetsUrl), commands: extraAssetsUrl, status: extraAssetsUrl, equipFace: extraAssetsUrl, image: extraAssetsUrl, spriteModel: extraAssetsUrl, charaGraphChange: extraAssetsUrl, narrowFigureChange: extraAssetsUrl, facesChange: extraAssetsUrl}); export const niceGender = z.enum(["male", "female", "unknown"]); export const attribute = z.enum(["none", "default", "human", "sky", "earth", "star", "beast", "void"]); export const niceCommandCardAttackType = z.enum(["one", "all"]); export const niceSvtCardPositionDamageRatesSlideType = z.enum(["none", "front", "back"]); export const svtCardAddOverwriteRateData = z.object({condType: z.string(), condValue: z.number().int(), damageRate: z.number().int().nullable().optional(), attackNpRate: z.number().int().nullable().optional(), defenseNpRate: z.number().int().nullable().optional(), dropStarRate: z.number().int().nullable().optional(), iconBuffId: z.number().int().nullable().optional()}); export const niceCardDetail = z.object({hitsDistribution: z.array(z.number().int()), attackIndividuality: z.array(niceTrait), attackType: niceCommandCardAttackType, damageRate: z.number().int().nullable().optional(), attackNpRate: z.number().int().nullable().optional(), defenseNpRate: z.number().int().nullable().optional(), dropStarRate: z.number().int().nullable().optional(), forceAttackFunctionTargetAll: z.number().int().nullable().optional(), positionDamageRates: z.array(z.number().int()).nullable().optional(), positionDamageRatesSlideType: niceSvtCardPositionDamageRatesSlideType.nullable().optional(), overwriteRates: z.array(svtCardAddOverwriteRateData).nullable().optional()}); export const niceGiftType = z.enum(["servant", "item", "friendship", "userExp", "equip", "eventSvtJoin", "eventSvtGet", "questRewardIcon", "costumeRelease", "costumeGet", "commandCode", "eventPointBuff", "eventBoardGameToken", "eventCommandAssist", "eventHeelPortrait", "battleItem", "privilege", "classSkill"]); export const niceBaseGift = z.object({id: z.number().int(), type: niceGiftType, objectId: z.number().int(), priority: z.number().int(), num: z.number().int()}); export const niceGiftAdd = z.object({priority: z.number().int(), replacementGiftIcon: z.string().min(1).max(2083), condType: niceCondType, targetId: z.number().int(), targetNum: z.number().int(), replacementGifts: z.array(niceBaseGift)}); export const niceGift = z.object({id: z.number().int(), type: niceGiftType, objectId: z.number().int(), priority: z.number().int(), num: z.number().int(), giftAdds: z.array(niceGiftAdd)}); export const niceValentineScript = z.object({scriptId: z.string(), script: z.string().min(1).max(2083), scriptName: z.string()}); export const niceStatusRank = z.enum(["A", "A+", "A++", "A-", "A+++", "A?", "A(B)", "A(C)", "A(D)", "A(E)", "B", "B+", "B++", "B-", "B+++", "B?", "B(A)", "B(C)", "B(D)", "B(E)", "C", "C+", "C++", "C-", "C+++", "C?", "C(A)", "C(B)", "C(D)", "C(E)", "D", "D+", "D++", "D-", "D+++", "D?", "D(A)", "D(B)", "D(C)", "D(E)", "E", "E+", "E++", "E-", "E+++", "E?", "E(A)", "E(B)", "E(C)", "E(D)", "EX", "?", "None", "Unknown"]); export const servantPolicy = z.enum(["none", "neutral", "lawful", "chaotic", "unknown"]); export const servantPersonality = z.enum(["none", "good", "madness", "balanced", "summer", "evil", "goodAndEvil", "bride", "beast", "unknown"]); export const niceSvtLimit = z.object({limitCount: z.number().int(), rarity: z.number().int(), lvMax: z.number().int(), hpBase: z.number().int(), hpMax: z.number().int(), atkBase: z.number().int(), atkMax: z.number().int(), criticalWeight: z.number().int(), strength: niceStatusRank, endurance: niceStatusRank, agility: niceStatusRank, magic: niceStatusRank, luck: niceStatusRank, np: niceStatusRank, deity: niceStatusRank, policy: servantPolicy, personality: servantPersonality}); export const ascensionAddEntryAttribute = z.object({ascension: z.record(z.string(), attribute), costume: z.record(z.string(), attribute)}); export const ascensionAddEntryTrait = z.object({ascension: z.record(z.string(), z.array(niceTrait)), costume: z.record(z.string(), z.array(niceTrait))}); export const ascensionAddEntryInt = z.object({ascension: z.record(z.string(), z.number().int()), costume: z.record(z.string(), z.number().int())}); export const ascensionAddEntryStr = z.object({ascension: z.record(z.string(), z.string()), costume: z.record(z.string(), z.string())}); export const ascensionAddEntryHttpUrl = z.object({ascension: z.record(z.string(), z.string().min(1).max(2083)), costume: z.record(z.string(), z.string().min(1).max(2083))}); export const overwriteValue = z.object({id: z.number().int(), value: z.string()}); export const ascensionAddEntryListOverwriteValue = z.object({ascension: z.record(z.string(), z.array(overwriteValue)), costume: z.record(z.string(), z.array(overwriteValue))}); export const ascensionAddEntryListInt = z.object({ascension: z.record(z.string(), z.array(z.number().int())), costume: z.record(z.string(), z.array(z.number().int()))}); export const ascensionAddEntryCommonRelease = z.object({ascension: z.record(z.string(), z.array(niceCommonRelease)), costume: z.record(z.string(), z.array(niceCommonRelease))}); export const ascensionAdd = z.object({attribute: ascensionAddEntryAttribute, individuality: ascensionAddEntryTrait, voicePrefix: ascensionAddEntryInt, overWriteServantName: ascensionAddEntryStr, originalOverWriteServantName: ascensionAddEntryStr, overWriteServantBattleName: ascensionAddEntryStr, originalOverWriteServantBattleName: ascensionAddEntryStr, overWriteTDName: ascensionAddEntryStr, originalOverWriteTDName: ascensionAddEntryStr, overWriteTDRuby: ascensionAddEntryStr, overWriteTDFileName: ascensionAddEntryHttpUrl, overWriteTDRank: ascensionAddEntryStr, overWriteTDTypeText: ascensionAddEntryStr, overwriteSkillName: ascensionAddEntryListOverwriteValue, overwriteSvtDetailName: ascensionAddEntryStr, overwriteAtkBase: ascensionAddEntryInt, overwriteAtkMax: ascensionAddEntryInt, overwriteClassPassive: ascensionAddEntryListInt, overwriteCost: ascensionAddEntryInt, overwriteExpType: ascensionAddEntryInt, overwriteHpBase: ascensionAddEntryInt, overwriteHpMax: ascensionAddEntryInt, overwriteRarity: ascensionAddEntryInt, lvMax: ascensionAddEntryInt, rarity: ascensionAddEntryInt, charaGraphChange: ascensionAddEntryHttpUrl, charaGraphChangeCommonRelease: ascensionAddEntryCommonRelease, faceChange: ascensionAddEntryHttpUrl, faceChangeCommonRelease: ascensionAddEntryCommonRelease}); export const niceServantTrait = z.object({idx: z.number().int(), trait: z.array(niceTrait), limitCount: z.number().int(), condType: niceCondType.nullable().optional(), condId: z.number().int().nullable().optional(), condNum: z.number().int().nullable().optional(), eventId: z.number().int().nullable().optional(), startedAt: z.number().int().nullable().optional(), endedAt: z.number().int().nullable().optional()}); export const niceServantChange = z.object({beforeTreasureDeviceIds: z.array(z.number().int()), afterTreasureDeviceIds: z.array(z.number().int()), svtId: z.number().int(), priority: z.number().int(), condType: niceCondType, condTargetId: z.number().int(), condValue: z.number().int(), name: z.string(), ruby: z.string(), battleName: z.string(), svtVoiceId: z.number().int(), limitCount: z.number().int(), flag: z.number().int(), battleSvtId: z.number().int()}); export const niceServantLimitImage = z.object({limitCount: z.number().int(), priority: z.number().int(), defaultLimitCount: z.number().int(), condType: niceCondType, condTargetId: z.number().int(), condNum: z.number().int()}); export const niceServantOverwriteType = z.literal("treasureDevice"); export const niceTdEffectFlag = z.enum(["support", "attackEnemyAll", "attackEnemyOne"]); export const npGain = z.object({buster: z.array(z.number().int()), arts: z.array(z.number().int()), quick: z.array(z.number().int()), extra: z.array(z.number().int()), defence: z.array(z.number().int()), np: z.array(z.number().int())}); export const niceTdSvt = z.object({svtId: z.number().int(), num: z.number().int(), npNum: z.number().int(), priority: z.number().int(), damage: z.array(z.number().int()), strengthStatus: z.number().int(), flag: z.number().int(), imageIndex: z.number().int(), condQuestId: z.number().int(), condQuestPhase: z.number().int(), condLv: z.number().int().optional(), condFriendshipRank: z.number().int().optional(), motion: z.number().int(), card: z.string(), releaseConditions: z.array(niceSvtSkillRelease).optional()}); export const niceTd = z.object({id: z.number().int(), num: z.number().int(), npNum: z.number().int(), card: z.string(), name: z.string(), originalName: z.string(), ruby: z.string(), icon: z.string().min(1).max(2083).nullable().optional(), rank: z.string(), type: z.string(), effectFlags: z.array(niceTdEffectFlag), detail: z.string().nullable().optional(), unmodifiedDetail: z.string().nullable().optional(), npGain: npGain, npDistribution: z.array(z.number().int()), svtId: z.number().int(), strengthStatus: z.number().int(), priority: z.number().int(), condQuestId: z.number().int(), condQuestPhase: z.number().int(), releaseConditions: z.array(niceSvtSkillRelease).optional(), individuality: z.array(niceTrait), npSvts: z.array(niceTdSvt), script: niceSkillScript, functions: z.array(niceFunction)}); export const niceSvtOverwriteValue = z.object({noblePhantasm: niceTd.nullable().optional()}); export const niceSvtOverwrite = z.object({type: niceServantOverwriteType, priority: z.number().int(), condType: niceCondType, condTargetId: z.number().int(), condValue: z.number().int(), overwriteValue: niceSvtOverwriteValue}); export const niceItemType = z.enum(["qp", "stone", "apRecover", "apAdd", "mana", "key", "gachaClass", "gachaRelic", "gachaTicket", "limit", "skillLvUp", "tdLvUp", "friendPoint", "eventPoint", "eventItem", "questRewardQp", "chargeStone", "rpAdd", "boostItem", "stoneFragments", "anonymous", "rarePri", "costumeRelease", "itemSelect", "commandCardPrmUp", "dice", "continueItem", "euqipSkillUseItem", "svtCoin", "friendshipUpItem", "purePri", "tradeAp", "revivalItem", "stormpod", "battleItem", "aniplexPlusChargeStone", "purePriShopReset", "exchangeSvtCoin", "reduceTradeTime", "eventPassiveSkillGiven", "classBoardResetItem", "netmarbleChargeStone"]); export const niceItemUse = z.enum(["skill", "appendSkill", "ascension", "costume"]); export const niceItemBGType = z.enum(["zero", "bronze", "silver", "gold", "questClearQPReward", "aquaBlue", "six", "unknown"]); export const niceItemSelect = z.object({idx: z.number().int(), gifts: z.array(niceGift), requireNum: z.number().int(), detail: z.string()}); export const niceItemScript = z.object({eventId: z.number().int().nullable().optional(), eventGroupId: z.number().int().nullable().optional(), maxNum: z.number().int().nullable().optional(), validClassIds: z.array(z.number().int()).nullable().optional()}); export const niceItem = z.object({id: z.number().int(), name: z.string(), originalName: z.string(), type: niceItemType, uses: z.array(niceItemUse), detail: z.string(), individuality: z.array(niceTrait), icon: z.string().min(1).max(2083), background: niceItemBGType, value: z.number().int(), eventId: z.number().int(), eventGroupId: z.number().int(), priority: z.number().int(), dropPriority: z.number().int(), startedAt: z.number().int(), endedAt: z.number().int(), itemSelects: z.array(niceItemSelect), script: niceItemScript}); export const niceItemAmount = z.object({item: niceItem, amount: z.number().int()}); export const niceLvlUpMaterial = z.object({items: z.array(niceItemAmount), qp: z.number().int()}); export const niceServantCoin = z.object({summonNum: z.number().int(), item: niceItem}); export const niceImagePartsGroupScript = z.object({DialogSkillLv: z.number().int().nullable().optional(), DialogSkillId: z.number().int().nullable().optional(), NotEquipImage: z.number().int().nullable().optional()}); export const niceImagePartsGroup = z.object({id: z.number().int(), idx: z.number().int(), script: niceImagePartsGroupScript, originalScript: z.record(z.string(), z.unknown()), typeValue: z.number().int(), imageValue: z.number().int(), condType: niceCondType, condId: z.number().int(), condNum: z.number().int()}); export const servantTransformInfo = z.object({saveTransform: z.number().int().nullable().optional(), saveTransformDefault: z.number().int().nullable().optional()}); export const overwriteSvtClassImageId = z.object({imageId: z.number().int(), releaseConditions: z.array(niceCommonRelease).optional()}); export const niceServantScript = z.object({SkillRankUp: z.record(z.string(), z.array(z.number().int())).nullable().optional(), svtBuffTurnExtend: z.boolean().nullable().optional(), maleImage: extraAssets.nullable().optional(), imagePartsGroup: z.array(niceImagePartsGroup).nullable().optional(), transformInfo: servantTransformInfo.nullable().optional(), overwriteClassImageId: z.array(overwriteSvtClassImageId).nullable().optional()}); export const mstSvtScriptExtendDataCond = z.object({condType: z.number().int(), value: z.number().int()}); export const mstSvtScriptExtendData = z.object({faceSize: z.number().int().nullable().optional(), faceSizeRect: z.array(z.number().int()).nullable().optional(), combineResultMultipleForm: z.number().int().nullable().optional(), myroomForm: z.number().int().nullable().optional(), conds: z.array(mstSvtScriptExtendDataCond).nullable().optional()}); export const niceSvtScript = z.object({id: z.number().int(), form: z.number().int(), faceX: z.number().int(), faceY: z.number().int(), extendData: mstSvtScriptExtendData, bgImageId: z.number().int().optional(), scale: z.number(), offsetX: z.number().int(), offsetY: z.number().int(), offsetXMyroom: z.number().int(), offsetYMyroom: z.number().int(), svtId: z.number().int().nullable().optional(), limitCount: z.number().int().nullable().optional()}); export const niceBattlePointFlag = z.enum(["none", "notTargetOtherPlayer", "hideUiGaugeAllTime", "hideUiGaugeWhenCantAddPoint", "hideUiGaugeWhenCantAddPointAndFollowerSupport", "battlePointCheckAsPercentage", "resetValueOnContinue"]); export const niceBattlePointPhase = z.object({phase: z.number().int(), value: z.number().int(), name: z.string(), effectId: z.number().int()}); export const niceSvtBattlePoint = z.object({svtId: z.number().int(), individuality: z.array(z.array(niceTrait)).nullable().optional()}); export const battlePointScriptMaxChange = z.object({individuality: z.array(niceTrait).nullable().optional(), value: z.number().int().nullable().optional()}); export const niceBattlePointScript = z.object({maxChange: z.array(battlePointScriptMaxChange).nullable().optional(), maxLimit: z.number().int().nullable().optional(), defaultMax: z.number().int().nullable().optional()}); export const niceBattlePoint = z.object({id: z.number().int(), name: z.string().nullable().optional(), flags: z.array(niceBattlePointFlag), phases: z.array(niceBattlePointPhase), svts: z.array(niceSvtBattlePoint), script: niceBattlePointScript}); export const niceSkill = z.object({id: z.number().int(), num: z.number().int().optional(), name: z.string(), originalName: z.string(), ruby: z.string(), detail: z.string().nullable().optional(), unmodifiedDetail: z.string().nullable().optional(), type: niceSkillType, svtId: z.number().int(), strengthStatus: z.number().int().optional(), priority: z.number().int().optional(), condQuestId: z.number().int().optional(), condQuestPhase: z.number().int().optional(), condLv: z.number().int().optional(), condLimitCount: z.number().int().optional(), icon: z.string().min(1).max(2083).nullable().optional(), coolDown: z.array(z.number().int()), individuality: z.array(niceTrait).nullable().optional(), actIndividuality: z.array(niceTrait), script: niceSkillScript, extraPassive: z.array(extraPassive), skillAdd: z.array(niceSkillAdd), skillSvts: z.array(niceSkillSvt).optional(), aiIds: z.record(z.string(), z.array(z.number().int())).nullable().optional(), groupOverwrites: z.array(niceSkillGroupOverwrite).nullable().optional(), functions: z.array(niceFunction)}); export const niceServantAppendPassiveSkill = z.object({num: z.number().int(), priority: z.number().int(), skill: niceSkill, unlockMaterials: z.array(niceItemAmount)}); export const niceLoreStats = z.object({strength: niceStatusRank, endurance: niceStatusRank, agility: niceStatusRank, magic: niceStatusRank, luck: niceStatusRank, np: niceStatusRank, policy: servantPolicy, personality: servantPersonality, deity: niceStatusRank}); export const niceCostume = z.object({id: z.number().int(), costumeCollectionNo: z.number().int(), battleCharaId: z.number().int(), name: z.string(), shortName: z.string(), detail: z.string(), priority: z.number().int()}); export const niceLoreCommentAdd = z.object({idx: z.number().int(), condType: niceCondType, condValues: z.array(z.number().int()), condValue2: z.number().int()}); export const niceLoreComment = z.object({id: z.number().int(), priority: z.number().int(), condMessage: z.string(), comment: z.string(), condType: niceCondType, condValues: z.array(z.number().int()).nullable().optional(), condValue2: z.number().int(), additionalConds: z.array(niceLoreCommentAdd)}); export const niceSvtVoiceType = z.enum(["home", "groeth", "firstGet", "eventJoin", "eventReward", "battle", "treasureDevice", "masterMission", "eventShop", "homeCostume", "boxGachaTalk", "battleEntry", "battleWin", "eventTowerReward", "guide", "eventDailyPoint", "tddamage", "treasureBox", "warBoard", "eventDigging", "eventExpedition", "eventRecipe", "eventFortification", "eventTrade", "sum"]); export const scriptLink = z.object({scriptId: z.string(), script: z.string().min(1).max(2083)}); export const niceVoiceCondType = z.enum(["birthDay", "event", "friendship", "svtGet", "svtGroup", "questClear", "notQuestClear", "levelUp", "limitCount", "limitCountCommon", "countStop", "isnewWar", "eventEnd", "eventNoend", "eventMissionAction", "masterMission", "limitCountAbove", "eventShopPurchase", "eventPeriod", "friendshipAbove", "spacificShopPurchase", "friendshipBelow", "costume", "levelUpLimitCount", "levelUpLimitCountAbove", "levelUpLimitCountBelow", "svtExceedCount", "svtExceedCountAbove", "svtExceedCountBelow", "unknown27", "unknown30", "unknown32", "unknown34", "unknown35", "unknown37", "unknown38", "unknown40", "unknown"]); export const niceVoiceCond = z.object({condType: niceVoiceCondType, value: z.number().int(), valueList: z.array(z.number().int()).optional(), eventId: z.number().int()}); export const niceVoicePlayCond = z.object({condGroup: z.number().int(), condType: niceCondType, targetId: z.number().int(), condValue: z.number().int(), condValues: z.array(z.number().int())}); export const niceVoiceLine = z.object({name: z.string().nullable().optional(), condType: niceCondType.nullable().optional(), condValue: z.number().int().nullable().optional(), priority: z.number().int().nullable().optional(), svtVoiceType: niceSvtVoiceType.nullable().optional(), overwriteName: z.string(), summonScript: scriptLink.nullable().optional(), id: z.array(z.string()), audioAssets: z.array(z.string()), delay: z.array(z.number()), face: z.array(z.number().int()), form: z.array(z.number().int()), text: z.array(z.string()), subtitle: z.string(), conds: z.array(niceVoiceCond), playConds: z.array(niceVoicePlayCond)}); export const niceVoiceGroup = z.object({svtId: z.number().int(), voicePrefix: z.number().int(), type: niceSvtVoiceType, voiceLines: z.array(niceVoiceLine)}); export const niceLore = z.object({cv: z.string(), illustrator: z.string(), stats: niceLoreStats.nullable().optional(), costume: z.record(z.string(), niceCostume), comments: z.array(niceLoreComment), voices: z.array(niceVoiceGroup)}); export const niceServant = z.object({id: z.number().int(), collectionNo: z.number().int(), name: z.string(), originalName: z.string(), ruby: z.string(), battleName: z.string(), originalBattleName: z.string(), classId: z.number().int(), className: z.union([svtClass, z.string()]), type: niceSvtType, flag: niceSvtFlag, flags: z.array(niceSvtFlagOriginal), rarity: z.number().int(), cost: z.number().int(), lvMax: z.number().int(), extraAssets: extraAssets, gender: niceGender, attribute: attribute, traits: z.array(niceTrait), starAbsorb: z.number().int(), starGen: z.number().int(), instantDeathChance: z.number().int(), cards: z.array(z.string()), hitsDistribution: z.record(z.string(), z.array(z.number().int())), cardDetails: z.record(z.string(), niceCardDetail), atkBase: z.number().int(), atkMax: z.number().int(), hpBase: z.number().int(), hpMax: z.number().int(), relateQuestIds: z.array(z.number().int()), trialQuestIds: z.array(z.number().int()), growthCurve: z.number().int(), atkGrowth: z.array(z.number().int()), hpGrowth: z.array(z.number().int()), bondGrowth: z.array(z.number().int()), expGrowth: z.array(z.number().int()), expFeed: z.array(z.number().int()), bondGifts: z.record(z.string(), z.array(niceGift)), bondEquip: z.number().int().optional(), bondEquips: z.array(z.number().int()).optional(), valentineEquip: z.array(z.number().int()).optional(), valentineScript: z.array(niceValentineScript).optional(), bondEquipOwner: z.number().int().nullable().optional(), valentineEquipOwner: z.number().int().nullable().optional(), limits: z.array(niceSvtLimit), ascensionAdd: ascensionAdd, traitAdd: z.array(niceServantTrait), svtChange: z.array(niceServantChange), ascensionImage: z.array(niceServantLimitImage), overwrites: z.array(niceSvtOverwrite), ascensionMaterials: z.record(z.string(), niceLvlUpMaterial), skillMaterials: z.record(z.string(), niceLvlUpMaterial), appendSkillMaterials: z.record(z.string(), niceLvlUpMaterial), costumeMaterials: z.record(z.string(), niceLvlUpMaterial), coin: niceServantCoin.nullable().optional(), script: niceServantScript, charaScripts: z.array(niceSvtScript), battlePoints: z.array(niceBattlePoint), skills: z.array(niceSkill), classPassive: z.array(niceSkill), extraPassive: z.array(niceSkill), appendPassive: z.array(niceServantAppendPassiveSkill), noblePhantasms: z.array(niceTd), profile: niceLore.nullable().optional()}); export const mCAssets = z.object({male: z.string().min(1).max(2083), female: z.string().min(1).max(2083)}); export const extraMCAssets = z.object({item: mCAssets, masterFace: mCAssets, masterFigure: mCAssets}); export const niceMysticCodeCostume = z.object({id: z.number().int(), releaseConditions: z.array(niceCommonRelease), extraAssets: extraMCAssets}); export const niceMysticCode = z.object({id: z.number().int(), name: z.string(), shortName: z.string(), originalName: z.string(), detail: z.string(), maxLv: z.number().int(), extraAssets: extraMCAssets, skills: z.array(niceSkill), expRequired: z.array(z.number().int()), costumes: z.array(niceMysticCodeCostume)}); export const extraCCAssets = z.object({charaGraph: extraAssetsUrl, faces: extraAssetsUrl}); export const niceCommandCode = z.object({id: z.number().int(), collectionNo: z.number().int(), name: z.string(), originalName: z.string(), ruby: z.string(), rarity: z.number().int(), extraAssets: extraCCAssets, skills: z.array(niceSkill), illustrator: z.string(), comment: z.string()}); export const niceReversedSkillTd = z.object({servant: z.array(niceServant).optional(), MC: z.array(niceMysticCode).optional(), CC: z.array(niceCommandCode).optional()}); export const basicCostume = z.object({id: z.number().int(), costumeCollectionNo: z.number().int(), battleCharaId: z.number().int(), shortName: z.string()}); export const basicServant = z.object({id: z.number().int(), collectionNo: z.number().int(), name: z.string(), originalName: z.string(), overwriteName: z.string().nullable().optional(), originalOverwriteName: z.string().nullable().optional(), type: niceSvtType, flag: niceSvtFlag, flags: z.array(niceSvtFlagOriginal), classId: z.number().int(), className: z.union([svtClass, z.string()]), attribute: attribute, traits: z.array(niceTrait), rarity: z.number().int(), atkMax: z.number().int(), hpMax: z.number().int(), face: z.string().min(1).max(2083), costume: z.record(z.string(), basicCostume)}); export const basicMysticCode = z.object({id: z.number().int(), name: z.string(), item: mCAssets}); export const basicCommandCode = z.object({id: z.number().int(), collectionNo: z.number().int(), name: z.string(), rarity: z.number().int(), face: z.string().min(1).max(2083)}); export const basicReversedSkillTd = z.object({servant: z.array(basicServant).optional(), MC: z.array(basicMysticCode).optional(), CC: z.array(basicCommandCode).optional()}); export const niceReversedSkillTdType = z.object({nice: niceReversedSkillTd.nullable().optional(), basic: basicReversedSkillTd.nullable().optional()}); export const niceSkillReverse = z.object({id: z.number().int(), num: z.number().int().optional(), name: z.string(), originalName: z.string(), ruby: z.string(), detail: z.string().nullable().optional(), unmodifiedDetail: z.string().nullable().optional(), type: niceSkillType, svtId: z.number().int(), strengthStatus: z.number().int().optional(), priority: z.number().int().optional(), condQuestId: z.number().int().optional(), condQuestPhase: z.number().int().optional(), condLv: z.number().int().optional(), condLimitCount: z.number().int().optional(), icon: z.string().min(1).max(2083).nullable().optional(), coolDown: z.array(z.number().int()), individuality: z.array(niceTrait).nullable().optional(), actIndividuality: z.array(niceTrait), script: niceSkillScript, extraPassive: z.array(extraPassive), skillAdd: z.array(niceSkillAdd), skillSvts: z.array(niceSkillSvt).optional(), aiIds: z.record(z.string(), z.array(z.number().int())).nullable().optional(), groupOverwrites: z.array(niceSkillGroupOverwrite).nullable().optional(), functions: z.array(niceFunction), reverse: niceReversedSkillTdType.nullable().optional()}); export const niceTdReverse = z.object({id: z.number().int(), num: z.number().int(), npNum: z.number().int(), card: z.string(), name: z.string(), originalName: z.string(), ruby: z.string(), icon: z.string().min(1).max(2083).nullable().optional(), rank: z.string(), type: z.string(), effectFlags: z.array(niceTdEffectFlag), detail: z.string().nullable().optional(), unmodifiedDetail: z.string().nullable().optional(), npGain: npGain, npDistribution: z.array(z.number().int()), svtId: z.number().int(), strengthStatus: z.number().int(), priority: z.number().int(), condQuestId: z.number().int(), condQuestPhase: z.number().int(), releaseConditions: z.array(niceSvtSkillRelease).optional(), individuality: z.array(niceTrait), npSvts: z.array(niceTdSvt), script: niceSkillScript, functions: z.array(niceFunction), reverse: niceReversedSkillTdType.nullable().optional()}); export const niceReversedFunction = z.object({skill: z.array(niceSkillReverse).optional(), NP: z.array(niceTdReverse).optional()}); export const basicReversedSkillTdType = z.object({basic: basicReversedSkillTd.nullable().optional()}); export const basicSkillReverse = z.object({id: z.number().int(), name: z.string(), ruby: z.string(), icon: z.string().min(1).max(2083).nullable().optional(), reverse: basicReversedSkillTdType.nullable().optional()}); export const basicTdReverse = z.object({id: z.number().int(), name: z.string(), ruby: z.string(), reverse: basicReversedSkillTdType.nullable().optional()}); export const basicReversedFunction = z.object({skill: z.array(basicSkillReverse).optional(), NP: z.array(basicTdReverse).optional()}); export const niceReversedFunctionType = z.object({nice: niceReversedFunction.nullable().optional(), basic: basicReversedFunction.nullable().optional()}); export const niceBaseFunctionReverse = z.object({funcId: z.number().int(), funcType: niceFuncType, funcTargetType: niceFuncTargetType, funcTargetTeam: funcApplyTarget, funcPopupText: z.string(), funcPopupIcon: z.string().min(1).max(2083).nullable().optional(), functvals: z.array(niceTrait), overWriteTvalsList: z.array(z.array(niceTrait)), funcquestTvals: z.array(niceTrait), script: functionScript, funcGroup: z.array(niceFuncGroup), traitVals: z.array(niceTrait).optional(), buffs: z.array(niceBuff), reverse: niceReversedFunctionType.nullable().optional()}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Get function data * * GET /nice/{region}/function/{func_id} */ export const getApiNiceRegionFunctionFuncId = async (args: GetApiNiceRegionFunctionFuncIdArgs, options?: GetApiNiceRegionFunctionFuncIdOptions) => { const {baseUrl = "https://api.atlasacademy.io", fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args.reverse != null) query.append("reverse", String(args.reverse)) if (args.reverseDepth != null) query.append("reverseDepth", String(args.reverseDepth)) if (args.reverseData != null) query.append("reverseData", String(args.reverseData)) if (args.lang != null) query.append("lang", String(args.lang)) const url = `${baseUrl.replace(/\/+$/, '')}/nice/${encodeURIComponent(String(args.region))}/function/${encodeURIComponent(String(args.func_id))}${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(niceBaseFunctionReverse, await res.json()) };