diff --git a/app/components/layout/GlobalSearch.module.css b/app/components/layout/GlobalSearch.module.css index 47ea40621..11e6aaed6 100644 --- a/app/components/layout/GlobalSearch.module.css +++ b/app/components/layout/GlobalSearch.module.css @@ -146,7 +146,7 @@ } .listBox { - max-height: 300px; + max-height: 325px; overflow-y: auto; padding: var(--s-2); outline: none; diff --git a/app/components/layout/GlobalSearch.tsx b/app/components/layout/GlobalSearch.tsx index 9840473d3..49e4f72e8 100644 --- a/app/components/layout/GlobalSearch.tsx +++ b/app/components/layout/GlobalSearch.tsx @@ -21,9 +21,7 @@ import { Input } from "~/components/Input"; import type { SearchLoaderData } from "~/features/search/routes/search"; import { useDebounce } from "~/hooks/useDebounce"; import type { MainWeaponId } from "~/modules/in-game-lists/types"; -import { canonicalWeaponSplId } from "~/modules/in-game-lists/weapon-ids"; import { - mySlugify, navIconUrl, teamPage, tournamentOrganizationPage, @@ -38,6 +36,7 @@ import { saveRecentWeapon, WeaponDestinationMenu, WeaponResultsList, + weaponToSelectedWeapon, } from "./WeaponSearch"; const SEARCH_TYPES = [ @@ -166,9 +165,7 @@ function resolveInitialWeapon( if (Number.isNaN(id)) return null; const name = t(`weapons:MAIN_${id}`); if (!name || name === `MAIN_${id}`) return null; - const englishName = t(`weapons:MAIN_${id}`, { lng: "en" }); - const slugName = t(`weapons:MAIN_${canonicalWeaponSplId(id)}`, { lng: "en" }); - return { id, name, englishName, slug: mySlugify(slugName) }; + return weaponToSelectedWeapon(id, t); } function GlobalSearchContent({ @@ -239,14 +236,7 @@ function GlobalSearchContent({ const recentWeapons: SelectedWeapon[] = searchType === "weapons" - ? getRecentWeapons().map((id) => { - const name = t(`weapons:MAIN_${id}`); - const englishName = t(`weapons:MAIN_${id}`, { lng: "en" }); - const slugName = t(`weapons:MAIN_${canonicalWeaponSplId(id)}`, { - lng: "en", - }); - return { id, name, englishName, slug: mySlugify(slugName) }; - }) + ? getRecentWeapons().map((id) => weaponToSelectedWeapon(id, t)) : []; const handleSelect = (key: React.Key) => { diff --git a/app/components/layout/WeaponSearch.tsx b/app/components/layout/WeaponSearch.tsx index 28269cd58..4fb4ae506 100644 --- a/app/components/layout/WeaponSearch.tsx +++ b/app/components/layout/WeaponSearch.tsx @@ -1,5 +1,5 @@ import { clsx } from "clsx"; -import type { TFunction } from "i18next"; +import type { Namespace, TFunction } from "i18next"; import { Calculator, ChartColumnBig, @@ -7,6 +7,7 @@ import { Flame, FlaskConical, ImageIcon, + SlidersHorizontal, Users, Videotape, } from "lucide-react"; @@ -19,6 +20,7 @@ import { filterWeapon } from "~/modules/in-game-lists/utils"; import { canonicalWeaponSplId, mainWeaponIds, + weaponIdToBaseWeaponId, } from "~/modules/in-game-lists/weapon-ids"; import { ANALYZER_URL, @@ -29,6 +31,7 @@ import { weaponBuildPage, weaponBuildPopularPage, weaponBuildStatsPage, + weaponParamsPage, } from "~/utils/urls"; import styles from "./GlobalSearch.module.css"; @@ -37,6 +40,7 @@ const WEAPON_DESTINATIONS = [ "popular", "stats", "analyzer", + "params", "vods", "art", "lfg", @@ -48,6 +52,29 @@ export interface SelectedWeapon { name: string; englishName: string; slug: string; + paramsSlug: string; +} + +/** + * Builds the {@link SelectedWeapon} for a main weapon id: its localized name plus the English-derived + * url slugs (the build pages slug from the weapon's canonical id, the params page slug from its base + * id). The caller's `t` must have the `weapons` namespace available. + */ +export function weaponToSelectedWeapon( + id: MainWeaponId, + t: TFunction, +): SelectedWeapon { + return { + id, + name: t(`weapons:MAIN_${id}` as never), + englishName: t(`weapons:MAIN_${id}` as never, { lng: "en" }), + slug: mySlugify( + t(`weapons:MAIN_${canonicalWeaponSplId(id)}` as never, { lng: "en" }), + ), + paramsSlug: mySlugify( + t(`weapons:MAIN_${weaponIdToBaseWeaponId(id)}` as never, { lng: "en" }), + ), + }; } export function filterWeaponResults( @@ -58,24 +85,14 @@ export function filterWeaponResults( const matches: SelectedWeapon[] = []; for (const id of mainWeaponIds) { - const weaponName = t(`weapons:MAIN_${id}`); const isMatch = filterWeapon({ weapon: { type: "MAIN", id }, - weaponName, + weaponName: t(`weapons:MAIN_${id}`), searchTerm: query, }); if (isMatch) { - const englishName = t(`weapons:MAIN_${id}`, { lng: "en" }); - const slugName = t(`weapons:MAIN_${canonicalWeaponSplId(id)}`, { - lng: "en", - }); - matches.push({ - id, - name: weaponName, - englishName, - slug: mySlugify(slugName), - }); + matches.push(weaponToSelectedWeapon(id, t)); } if (matches.length >= 10) break; @@ -93,6 +110,7 @@ function getWeaponDestinationUrl( popular: weaponBuildPopularPage(weapon.slug), stats: weaponBuildStatsPage(weapon.slug), analyzer: `${ANALYZER_URL}?weapon=${weapon.id}`, + params: weaponParamsPage(weapon.paramsSlug), vods: `${VODS_PAGE}?weapon=${weapon.id}`, art: `/art?tab=showcase&tag=${encodeURIComponent(weapon.englishName.toLowerCase())}`, lfg: `${LFG_PAGE}?q=w.${weapon.id}`, @@ -191,6 +209,18 @@ export function WeaponDestinationMenu({ + +
+ + + {t("common:pages.params")} + +
+
-
+
+ } + > + {t("analyzer:rawParameters")} +
diff --git a/app/features/builds/builds-constants.ts b/app/features/builds/builds-constants.ts index 3fa902df7..f10ba3585 100644 --- a/app/features/builds/builds-constants.ts +++ b/app/features/builds/builds-constants.ts @@ -1,3 +1,4 @@ +import { differenceInCalendarDays } from "date-fns"; import type { BuildAbilitiesTupleWithUnknown } from "~/modules/in-game-lists/types"; export const MAX_BUILD_FILTERS = 6; @@ -6,73 +7,59 @@ export const FILTER_SEARCH_PARAM_KEY = "f"; type Patch = { patch: string; date: string }; +/** + * Every Splatoon 3 game version that introduced weapon parameter changes, newest first, + * with its release date (`YYYY-MM-DD`). The version strings match those tracked in the + * weapon params data (`metadata.versions`), so this is the single source of patch dates + * used by both the builds date filter and the weapon params patch history. + */ export const PATCHES: Array = [ - { - patch: "11.2.0", - date: "2026-06-10", - }, - { - patch: "11.1.0", - date: "2026-03-18", - }, - { - patch: "11.0.0", - date: "2026-01-29", - }, - // { - // patch: "10.1.0", - // date: "2025-09-03", - // }, - // { - // patch: "10.0.0", - // date: "2025-06-12", - // }, - // { - // patch: "9.3.0", - // date: "2025-03-13", - // }, - // { - // patch: "9.2.0", - // date: "2024-11-20", - // }, - // { - // patch: "9.0.0", - // date: "2024-08-29", - // }, - // { - // patch: "8.1.0", - // date: "2024-07-17", - // }, - // { - // patch: "8.0.0", - // date: "2024-05-31", - // }, - // { - // patch: "7.2.0", - // date: "2024-04-17", - // }, - // { - // patch: "7.0.0", - // date: "2024-02-21", - // }, - // { - // patch: "6.1.0", - // date: "2024-01-24", - // }, - // { - // patch: "6.0.0", - // date: "2023-11-29", - // }, - // { - // patch: "5.1.0", - // date: "2023-10-17", - // }, - // { - // patch: "5.0.0", - // date: "2023-08-30", - // }, + { patch: "11.2.0", date: "2026-06-10" }, + { patch: "11.1.0", date: "2026-03-18" }, + { patch: "11.0.1", date: "2026-02-10" }, + { patch: "11.0.0", date: "2026-01-28" }, + { patch: "10.1.0", date: "2025-09-03" }, + { patch: "10.0.0", date: "2025-06-11" }, + { patch: "9.3.0", date: "2025-03-12" }, + { patch: "9.2.0", date: "2024-11-20" }, + { patch: "9.1.0", date: "2024-09-11" }, + { patch: "9.0.0", date: "2024-08-29" }, + { patch: "8.1.0", date: "2024-07-17" }, + { patch: "8.0.0", date: "2024-05-30" }, + { patch: "7.2.0", date: "2024-04-17" }, + { patch: "7.1.0", date: "2024-03-21" }, + { patch: "7.0.0", date: "2024-02-21" }, + { patch: "6.1.0", date: "2024-01-24" }, + { patch: "6.0.0", date: "2023-11-29" }, + { patch: "5.2.0", date: "2023-10-17" }, + { patch: "5.1.0", date: "2023-09-13" }, + { patch: "5.0.0", date: "2023-08-30" }, + { patch: "4.1.0", date: "2023-07-26" }, + { patch: "4.0.0", date: "2023-05-31" }, + { patch: "3.1.0", date: "2023-03-07" }, + { patch: "3.0.0", date: "2023-02-28" }, + { patch: "2.1.0", date: "2022-12-06" }, + { patch: "2.0.0", date: "2022-11-30" }, + { patch: "1.2.0", date: "2022-11-16" }, + { patch: "1.1.1", date: "2022-09-20" }, + { patch: "1.1.0", date: "2022-09-08" }, + { patch: "1.0.0", date: "2022-09-09" }, + { patch: "0.9.9", date: "2022-09-09" }, ]; +const RECENT_PATCH_MAX_AGE_IN_DAYS = 365; + +/** + * The subset of {@link PATCHES} released within roughly a year of the newest patch. Used + * for the builds date filter so its dropdown stays short while always covering the patches + * builds are most likely to be filtered against. + */ +export const RECENT_PATCHES: Array = PATCHES.filter( + ({ date }) => + differenceInCalendarDays(new Date(PATCHES[0].date), new Date(date)) <= + RECENT_PATCH_MAX_AGE_IN_DAYS, +); + export const BUILD = { MAX_COUNT: 250, } as const; diff --git a/app/features/builds/components/FilterSection.tsx b/app/features/builds/components/FilterSection.tsx index 1c5efb5c3..7279590a6 100644 --- a/app/features/builds/components/FilterSection.tsx +++ b/app/features/builds/components/FilterSection.tsx @@ -13,7 +13,7 @@ import type { ModeShort, } from "~/modules/in-game-lists/types"; import { dateToYYYYMMDD, isValidDate } from "~/utils/dates"; -import { PATCHES } from "../builds-constants"; +import { RECENT_PATCHES } from "../builds-constants"; import type { AbilityBuildFilter, BuildFilter, @@ -203,7 +203,9 @@ function DateFilter({ }); const selectValue = () => - PATCHES.some(({ date }) => date === filter.date) ? filter.date : "CUSTOM"; + RECENT_PATCHES.some(({ date }) => date === filter.date) + ? filter.date + : "CUSTOM"; // on Saturday so it doesn't overlap with actual path dates (no patches on Saturdays) const oneMonthAgoOnSaturday = new Date(); @@ -232,7 +234,7 @@ function DateFilter({ }) } > - {PATCHES.map(({ patch, date: dateString }) => { + {RECENT_PATCHES.map(({ patch, date: dateString }) => { const date = new Date(dateString); return ( diff --git a/app/features/builds/routes/builds.$slug.tsx b/app/features/builds/routes/builds.$slug.tsx index 9e4ad8da3..63d99efa4 100644 --- a/app/features/builds/routes/builds.$slug.tsx +++ b/app/features/builds/routes/builds.$slug.tsx @@ -34,7 +34,7 @@ import { BUILDS_PAGE_MAX_BUILDS, FILTER_SEARCH_PARAM_KEY, MAX_BUILD_FILTERS, - PATCHES, + RECENT_PATCHES, } from "../builds-constants"; import { type BuildFiltersFromSearchParams, @@ -210,7 +210,7 @@ export default function WeaponsBuildsPage() { : type === "date" ? { type: "date", - date: PATCHES[0].date, + date: RECENT_PATCHES[0].date, } : { type: "mode", diff --git a/app/features/object-damage-calculator/calculator-constants.ts b/app/features/object-damage-calculator/calculator-constants.ts index 6b30f04a7..b7c86871a 100644 --- a/app/features/object-damage-calculator/calculator-constants.ts +++ b/app/features/object-damage-calculator/calculator-constants.ts @@ -1,9 +1,10 @@ +import type { Namespace, TFunction } from "i18next"; import type { AnyWeapon, DamageType, } from "~/features/build-analyzer/analyzer-types"; import type { MainWeaponId } from "~/modules/in-game-lists/types"; -import type { CombineWith } from "./calculator-types"; +import type { CombineWith, DamageReceiver } from "./calculator-types"; import type objectDamages from "./core/object-dmg.json"; export const DAMAGE_RECEIVERS = [ @@ -29,6 +30,108 @@ export const DAMAGE_RECEIVERS = [ "BulletShelterCanopyFocus_Launched", // Recycled Brella Canopy launched ] as const; +type ReceiverTranslation = + | { key: string } + | { weaponKey: string; suffixKey: string }; + +/** + * Maps each damage receiver to the i18n key(s) describing the object it represents. Some + * receivers are a plain weapon/mode name, others combine a weapon name with a suffix (e.g. + * " Canopy"). Consumed via {@link translateDamageReceiver}. + */ +const damageReceiverTranslations: Record = + { + Chariot: { key: "weapons:SPECIAL_12" }, + NiceBall_Armor: { + weaponKey: "weapons:SPECIAL_6", + suffixKey: "analyzer:damageReceiver.suffix.armor", + }, + ShockSonar: { key: "weapons:SPECIAL_7" }, + GreatBarrier_Barrier: { + weaponKey: "weapons:SPECIAL_2", + suffixKey: "analyzer:damageReceiver.suffix.shield", + }, + GreatBarrier_WeakPoint: { + weaponKey: "weapons:SPECIAL_2", + suffixKey: "analyzer:damageReceiver.suffix.weakPoint", + }, + BlowerInhale: { + weaponKey: "weapons:SPECIAL_8", + suffixKey: "analyzer:damageReceiver.suffix.inhale", + }, + Decoy: { key: "weapons:SPECIAL_16" }, + BulletPogo: { key: "weapons:SPECIAL_18" }, + Gachihoko_Barrier: { + weaponKey: "game-misc:MODE_LONG_RM", + suffixKey: "analyzer:damageReceiver.suffix.shield", + }, + Wsb_Flag: { key: "weapons:SUB_8" }, + Wsb_Shield: { key: "weapons:SUB_4" }, + Wsb_Sprinkler: { key: "weapons:SUB_3" }, + Bomb_TorpedoBullet: { key: "weapons:SUB_13" }, + BulletUmbrellaCanopyCompact: { + weaponKey: "weapons:MAIN_6020", + suffixKey: "analyzer:damageReceiver.suffix.canopy", + }, + BulletUmbrellaCanopyNormal: { + weaponKey: "weapons:MAIN_6000", + suffixKey: "analyzer:damageReceiver.suffix.canopy", + }, + BulletUmbrellaCanopyNormal_Launched: { + weaponKey: "weapons:MAIN_6000", + suffixKey: "analyzer:damageReceiver.suffix.canopyLaunched", + }, + BulletUmbrellaCanopyWide: { + weaponKey: "weapons:MAIN_6010", + suffixKey: "analyzer:damageReceiver.suffix.canopy", + }, + BulletUmbrellaCanopyWide_Launched: { + weaponKey: "weapons:MAIN_6010", + suffixKey: "analyzer:damageReceiver.suffix.canopyLaunched", + }, + BulletShelterCanopyFocus: { + weaponKey: "weapons:MAIN_6030", + suffixKey: "analyzer:damageReceiver.suffix.canopy", + }, + BulletShelterCanopyFocus_Launched: { + weaponKey: "weapons:MAIN_6030", + suffixKey: "analyzer:damageReceiver.suffix.canopyLaunched", + }, + }; + +/** + * Resolves the localized display name of a damage receiver using the given i18next `t` function. + * The `weapons`, `analyzer` and `game-misc` namespaces must be available to the caller. + */ +export function translateDamageReceiver( + t: TFunction, + receiver: DamageReceiver, +): string { + const config = damageReceiverTranslations[receiver]; + if ("key" in config) { + return t(config.key as never); + } + return t(config.suffixKey as never, { + weapon: t(config.weaponKey as never), + }); +} + +/** + * The suffix-only localized label of a damage receiver (e.g. "Shield", "Weak Point"), or `null` + * when the receiver is a plain weapon/mode name with no suffix. Used to disambiguate the parts of + * a multi-part object (e.g. Big Bubbler's shield vs. weak point) without repeating the weapon name. + */ +export function damageReceiverSuffix( + t: TFunction, + receiver: DamageReceiver, +): string | null { + const config = damageReceiverTranslations[receiver]; + if ("key" in config) { + return null; + } + return String(t(config.suffixKey as never, { weapon: "" })).trim(); +} + export const damagePriorities: Array< [ AnyWeapon["type"], diff --git a/app/features/object-damage-calculator/routes/object-damage-calculator.tsx b/app/features/object-damage-calculator/routes/object-damage-calculator.tsx index 4b3853e5e..22e3d1a59 100644 --- a/app/features/object-damage-calculator/routes/object-damage-calculator.tsx +++ b/app/features/object-damage-calculator/routes/object-damage-calculator.tsx @@ -38,6 +38,7 @@ import { specialWeaponVariantImageUrl, subWeaponImageUrl, } from "~/utils/urls"; +import { translateDamageReceiver } from "../calculator-constants"; import { useObjectDamage } from "../calculator-hooks"; import type { DamageReceiver } from "../calculator-types"; import styles from "./object-damage-calculator.module.css"; @@ -237,70 +238,6 @@ const damageReceiverAp: Partial> = { ), }; -type ReceiverTranslation = - | { key: string } - | { weaponKey: string; suffixKey: string }; - -const damageReceiverTranslations: Record = - { - Chariot: { key: "weapons:SPECIAL_12" }, - NiceBall_Armor: { - weaponKey: "weapons:SPECIAL_6", - suffixKey: "analyzer:damageReceiver.suffix.armor", - }, - ShockSonar: { key: "weapons:SPECIAL_7" }, - GreatBarrier_Barrier: { - weaponKey: "weapons:SPECIAL_2", - suffixKey: "analyzer:damageReceiver.suffix.shield", - }, - GreatBarrier_WeakPoint: { - weaponKey: "weapons:SPECIAL_2", - suffixKey: "analyzer:damageReceiver.suffix.weakPoint", - }, - BlowerInhale: { - weaponKey: "weapons:SPECIAL_8", - suffixKey: "analyzer:damageReceiver.suffix.inhale", - }, - Decoy: { key: "weapons:SPECIAL_16" }, - BulletPogo: { key: "weapons:SPECIAL_18" }, - Gachihoko_Barrier: { - weaponKey: "game-misc:MODE_LONG_RM", - suffixKey: "analyzer:damageReceiver.suffix.shield", - }, - Wsb_Flag: { key: "weapons:SUB_8" }, - Wsb_Shield: { key: "weapons:SUB_4" }, - Wsb_Sprinkler: { key: "weapons:SUB_3" }, - Bomb_TorpedoBullet: { key: "weapons:SUB_13" }, - BulletUmbrellaCanopyCompact: { - weaponKey: "weapons:MAIN_6020", - suffixKey: "analyzer:damageReceiver.suffix.canopy", - }, - BulletUmbrellaCanopyNormal: { - weaponKey: "weapons:MAIN_6000", - suffixKey: "analyzer:damageReceiver.suffix.canopy", - }, - BulletUmbrellaCanopyNormal_Launched: { - weaponKey: "weapons:MAIN_6000", - suffixKey: "analyzer:damageReceiver.suffix.canopyLaunched", - }, - BulletUmbrellaCanopyWide: { - weaponKey: "weapons:MAIN_6010", - suffixKey: "analyzer:damageReceiver.suffix.canopy", - }, - BulletUmbrellaCanopyWide_Launched: { - weaponKey: "weapons:MAIN_6010", - suffixKey: "analyzer:damageReceiver.suffix.canopyLaunched", - }, - BulletShelterCanopyFocus: { - weaponKey: "weapons:MAIN_6030", - suffixKey: "analyzer:damageReceiver.suffix.canopy", - }, - BulletShelterCanopyFocus_Launched: { - weaponKey: "weapons:MAIN_6030", - suffixKey: "analyzer:damageReceiver.suffix.canopyLaunched", - }, - }; - function DamageReceiversGrid({ weapon, damagesToReceivers, @@ -316,13 +253,8 @@ function DamageReceiversGrid({ }): JSX.Element { const { t } = useTranslation(["weapons", "analyzer", "common", "game-misc"]); - const translateReceiver = (receiver: DamageReceiver) => { - const config = damageReceiverTranslations[receiver]; - if ("key" in config) { - return t(config.key as any); - } - return t(config.suffixKey as any, { weapon: t(config.weaponKey as any) }); - }; + const translateReceiver = (receiver: DamageReceiver) => + translateDamageReceiver(t, receiver); return (
void; +}) { + const { t } = useTranslation(["params"]); + + const sortedEntries = R.sortBy(entries, [(entry) => entry.value, "desc"]); + const maxValue = Math.max(...entries.map((entry) => Math.abs(entry.value))); + + return ( + +
+ {sortedEntries.map((entry) => ( +
+
+ + {entry.name} +
+
+
+
+ + {WeaponParams.formatValue(entry.value)} + +
+ ))} +
+ + ); +} diff --git a/app/features/params/components/WeaponKits.module.css b/app/features/params/components/WeaponKits.module.css new file mode 100644 index 000000000..15faf19f2 --- /dev/null +++ b/app/features/params/components/WeaponKits.module.css @@ -0,0 +1,44 @@ +.kits { + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: var(--s-2); + list-style: none; + padding: 0; + margin: 0; +} + +.kit { + display: inline-flex; + align-items: center; + gap: var(--s-2); + font-size: var(--font-xs); + font-weight: var(--weight-bold); + background-color: var(--color-bg-high); + border: var(--border-style); + border-radius: var(--radius-field); + padding: var(--s-1) var(--s-3); +} + +.kitName { + overflow-x: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.kitGear { + display: inline-flex; + align-items: center; + gap: var(--s-1); + margin-inline-start: var(--s-1); +} + +.gearLink { + display: inline-flex; + align-items: center; + border-radius: var(--radius-rounded); + + &:hover { + filter: brightness(1.2); + } +} diff --git a/app/features/params/components/WeaponKits.tsx b/app/features/params/components/WeaponKits.tsx new file mode 100644 index 000000000..57aeb0dc7 --- /dev/null +++ b/app/features/params/components/WeaponKits.tsx @@ -0,0 +1,50 @@ +import { useTranslation } from "react-i18next"; +import { Link } from "react-router"; +import { + SpecialWeaponImage, + SubWeaponImage, + WeaponImage, +} from "~/components/Image"; +import { mySlugify, weaponParamsPage } from "~/utils/urls"; +import type { WeaponKitInfo } from "../weapon-params-types"; +import styles from "./WeaponKits.module.css"; + +export function WeaponKits({ kits }: { kits: WeaponKitInfo[] }) { + const { t } = useTranslation(["weapons"]); + + return ( +
    + {kits.map((kit) => ( +
  • + + + {t(`weapons:MAIN_${kit.weaponId}`)} + + + + + + + + + +
  • + ))} +
+ ); +} diff --git a/app/features/params/components/WeaponParamsTable.module.css b/app/features/params/components/WeaponParamsTable.module.css new file mode 100644 index 000000000..b9dbca820 --- /dev/null +++ b/app/features/params/components/WeaponParamsTable.module.css @@ -0,0 +1,262 @@ +.container { + margin-top: var(--s-4); + width: 100%; + max-height: 600px; + overflow: auto; + align-self: stretch; +} + +.hiddenBar { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: var(--s-1-5); + margin-bottom: var(--s-2); + padding: var(--s-1-5) var(--s-2); + background-color: var(--color-bg-high); + border: 1px solid var(--color-border); + border-radius: var(--radius-box); +} + +.hiddenBarLabel { + flex-shrink: 0; + color: var(--color-text-high); +} + +.hiddenBadge { + display: inline-flex; + align-items: center; + gap: var(--s-1); +} + +.hiddenBadgeName { + font-size: var(--font-2xs); + max-width: 90px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.hideButton { + position: absolute; + top: var(--s-1); + right: var(--s-1); +} + +.table { + width: 100%; + border-collapse: separate; + border-spacing: 0; + font-size: var(--font-xs); + text-align: left; + + & tbody { + & tr:hover { + background-color: var(--color-bg-high); + } + + & td { + padding: var(--s-2) var(--s-3); + border-bottom: 1px solid var(--color-border); + } + + & tr:first-child td { + border-top: 1px solid var(--color-border); + } + } +} + +.thead { + position: sticky; + top: 0; + z-index: 1; + + & th { + padding: var(--s-2); + background-color: var(--color-bg); + } +} + +.paramHeader { + min-width: 180px; +} + +.weaponHeader { + position: relative; + min-width: 90px; + padding: var(--s-2); + text-align: center; +} + +.weaponHeaderContent { + display: flex; + flex-direction: column; + align-items: center; + gap: var(--s-1); +} + +.weaponName { + font-size: var(--font-2xs); + max-width: 80px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.categoryHeader { + background-color: var(--color-bg-high); + font-weight: var(--weight-bold); + font-size: var(--font-xs); + letter-spacing: 0.5px; + padding: var(--s-1-5) var(--s-2); +} + +.paramName { + font-size: var(--font-xs); + min-width: 180px; + vertical-align: top; +} + +.paramNameInner { + display: flex; + align-items: center; + gap: var(--s-1); +} + +.expandableRow .paramName { + cursor: pointer; + + &:hover { + background-color: var(--color-bg-high); + } +} + +.paramNameText { + flex: 1; +} + +.paramInfo { + display: flex; + align-items: center; + flex-shrink: 0; +} + +.historyIndicator { + display: flex; + align-items: center; + flex-shrink: 0; + color: var(--color-accent); +} + +.paramCell { + font-size: var(--font-xs); + vertical-align: top; + min-width: 90px; +} + +.cellContent { + display: flex; + align-items: center; + gap: var(--s-1); +} + +.currentValue { + font-variant-numeric: tabular-nums; +} + +.historyBadge { + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 16px; + height: 16px; + padding-inline: var(--s-0-5); + border-radius: var(--radius-full); + background-color: var(--color-accent-low); + color: var(--color-accent); + font-size: var(--font-xs); + font-weight: var(--weight-bold); +} + +.noValue { + color: var(--color-text-high); +} + +.historyList { + margin-top: var(--s-1); + display: flex; + flex-direction: column; + gap: var(--s-0-5); + font-size: var(--font-xs); + border-top: 1px solid var(--color-border); + padding-top: var(--s-1); +} + +.historyItem { + display: flex; + justify-content: space-between; + gap: var(--s-2); +} + +.historyVersion { + color: var(--color-text-high); +} + +.historyValue { + font-variant-numeric: tabular-nums; + color: var(--color-accent); + font-weight: var(--weight-semi); +} + +.specialPointHistory { + margin-top: var(--s-1); + display: flex; + flex-direction: column; + gap: var(--s-1-5); + border-top: 1px solid var(--color-border); + padding-top: var(--s-1); +} + +.specialPointHistoryKit { + display: flex; + align-items: flex-start; + gap: var(--s-1); + + & > div:first-child { + flex-shrink: 0; + } +} + +.specialPointHistoryKitList { + display: flex; + flex: 1; + flex-direction: column; + gap: var(--s-0-5); + font-size: var(--font-xs); +} + +.legend { + margin-top: var(--s-3); + display: flex; + flex-direction: column; + gap: var(--s-1); + font-size: var(--font-2xs); + color: var(--color-text-high); +} + +.legendTitle { + font-weight: var(--weight-bold); + color: var(--color-text); +} + +.legendItem { + margin: 0; + padding-left: var(--s-3); + position: relative; + + &::before { + content: "•"; + position: absolute; + left: var(--s-1); + } +} diff --git a/app/features/params/components/WeaponParamsTable.tsx b/app/features/params/components/WeaponParamsTable.tsx new file mode 100644 index 000000000..80c6cb50f --- /dev/null +++ b/app/features/params/components/WeaponParamsTable.tsx @@ -0,0 +1,679 @@ +import clsx from "clsx"; +import { + ChartColumnBig, + ChevronDown, + ChevronUp, + EyeOff, + X, +} from "lucide-react"; +import { Fragment, useState } from "react"; +import { useTranslation } from "react-i18next"; +import { Link } from "react-router"; +import * as R from "remeda"; +import { SendouButton } from "~/components/elements/Button"; +import { + SpecialWeaponImage, + SubWeaponImage, + WeaponImage, +} from "~/components/Image"; +import { InfoPopover } from "~/components/InfoPopover"; +import { translateDamageReceiver } from "~/features/object-damage-calculator/calculator-constants"; +import type { DamageReceiver } from "~/features/object-damage-calculator/calculator-types"; +import { useSearchParamStateEncoder } from "~/hooks/useSearchParamState"; +import type { + MainWeaponId, + SpecialWeaponId, + SubWeaponId, +} from "~/modules/in-game-lists/types"; +import { mySlugify, weaponParamsPage } from "~/utils/urls"; +import { getParamExplanation } from "../core/param-explanations"; +import * as WeaponParams from "../core/WeaponParams"; +import { SPECIAL_POINTS_PARAM_KEY } from "../weapon-params-constants"; +import type { + DamageMultiplierWithHistory, + ParamComparisonEntry, + ParamValueWithHistory, + SpecialPointWithHistory, + WeaponParamKind, + WeaponParamsTableProps, +} from "../weapon-params-types"; +import { weaponTranslationKey } from "../weapon-params-types"; +import { ParamComparisonDialog } from "./ParamComparisonDialog"; +import styles from "./WeaponParamsTable.module.css"; + +const DAMAGE_RATE_INFO_CATEGORY = "DamageRateInfo"; + +export function WeaponParamImage({ + kind, + id, + size, +}: { + kind: WeaponParamKind; + id: number; + size: number; +}) { + if (kind === "sub") { + return ; + } + if (kind === "special") { + return ( + + ); + } + return ( + + ); +} + +// The display name and (English) url slug of a weapon, resolved from the right `weapons` +// translation key for the table's kind. +function useWeaponParamNaming(kind: WeaponParamKind) { + const { t } = useTranslation(["weapons"]); + + const name = (id: number): string => + t(weaponTranslationKey(kind, id) as never); + + const slug = (id: number) => + mySlugify(t(weaponTranslationKey(kind, id) as never, { lng: "en" })); + + return { name, slug }; +} + +export function WeaponParamsTable({ + kind, + currentWeaponId, + categoryWeaponIds, + weaponParams, + specialPoints, + damageMultipliers, +}: WeaponParamsTableProps) { + const { t } = useTranslation(["weapons", "common", "analyzer", "params"]); + const naming = useWeaponParamNaming(kind); + const [expandedRows, setExpandedRows] = useState>(new Set()); + const [comparison, setComparison] = useState<{ + label: string; + entries: ParamComparisonEntry[]; + } | null>(null); + + const paramDefinitions = WeaponParams.allParamKeys(weaponParams); + + const paramsByCategory = R.groupBy(paramDefinitions, (def) => def.category); + + const toggleRow = (fullKey: string) => { + setExpandedRows((prev) => { + const next = new Set(prev); + if (next.has(fullKey)) { + next.delete(fullKey); + } else { + next.add(fullKey); + } + return next; + }); + }; + + const sortedWeaponIds = [ + currentWeaponId, + ...categoryWeaponIds.filter((id) => id !== currentWeaponId), + ]; + + const [hiddenWeaponIds, setHiddenWeaponIds] = useSearchParamStateEncoder< + number[] + >({ + name: "hidden", + defaultValue: [], + revive: (value) => + value + .split(",") + .map(Number) + .filter( + (id) => + !Number.isNaN(id) && + id !== currentWeaponId && + categoryWeaponIds.includes(id), + ), + encode: (ids) => ids.join(","), + }); + + const hiddenSet = new Set(hiddenWeaponIds); + const visibleWeaponIds = sortedWeaponIds.filter((id) => !hiddenSet.has(id)); + + const hideWeapon = (weaponId: number) => + setHiddenWeaponIds([...hiddenWeaponIds, weaponId]); + const restoreWeapon = (weaponId: number) => + setHiddenWeaponIds(hiddenWeaponIds.filter((id) => id !== weaponId)); + const showAllWeapons = () => setHiddenWeaponIds([]); + + const currentWeaponHasParam = (category: string, key: string) => { + return Boolean( + weaponParams[String(currentWeaponId)]?.categories[category]?.[key], + ); + }; + + const rowHasHistory = (category: string, key: string) => { + return visibleWeaponIds.some((id) => { + const param = weaponParams[String(id)]?.categories[category]?.[key]; + return param && WeaponParams.hasHistory(param); + }); + }; + + // Bars are only drawn for plain numbers, so string-valued (or array/object) params and hidden + // weapons are skipped here. The compare button shows up only when at least two weapons remain. + const comparisonEntries = ( + getValue: (weaponId: number) => number | string | undefined, + ) => + visibleWeaponIds + .map((weaponId) => { + const value = getValue(weaponId); + return typeof value === "number" + ? { weaponId, value, name: naming.name(weaponId) } + : null; + }) + .filter((entry): entry is ParamComparisonEntry => entry !== null); + + const openComparison = (label: string, entries: ParamComparisonEntry[]) => + setComparison({ label, entries }); + + return ( + <> +
+ {hiddenWeaponIds.length > 0 ? ( + + ) : null} + + + + + {visibleWeaponIds.map((weaponId) => { + const weaponName = naming.name(weaponId); + const slug = naming.slug(weaponId); + + return ( + + ); + })} + + + + {kind === "main" && specialPoints ? ( + toggleRow(SPECIAL_POINTS_PARAM_KEY)} + /> + ) : null} + {Object.entries(paramsByCategory).map(([category, params]) => { + const filteredParams = params.filter(({ key }) => + currentWeaponHasParam(category, key), + ); + + if (filteredParams.length === 0) { + return null; + } + + return ( + + + + + {filteredParams.map(({ key, fullKey }) => { + const isExpanded = expandedRows.has(fullKey); + const hasHistory = rowHasHistory(category, key); + const explanation = getParamExplanation(category, key); + + return ( + + + {visibleWeaponIds.map((weaponId) => ( + + ))} + + ); + })} + + ); + })} + {damageMultipliers ? ( + + ) : null} + +
+ {t("params:header.parameter")} + + + + {weaponName} + + {weaponId !== currentWeaponId ? ( + } + className={styles.hideButton} + onPress={() => hideWeapon(weaponId)} + aria-label={t("common:actions.hide")} + testId={`hide-weapon-${weaponId}`} + /> + ) : null} +
+ {category} +
toggleRow(fullKey) : undefined + } + > +
+ {key} + {hasHistory ? ( + + {isExpanded ? ( + + ) : ( + + )} + + ) : null} + {explanation ? ( + // biome-ignore lint/a11y/noStaticElementInteractions: stops the help popover click from toggling the history row + e.stopPropagation()} + > + {explanation} + + ) : null} + + weaponParams[String(weaponId)]?.categories[ + category + ]?.[key]?.current, + )} + onCompare={openComparison} + /> +
+
+
+ + {comparison ? ( + setComparison(null)} + /> + ) : null} + + ); +} + +function ComparisonButton({ + label, + entries, + onCompare, +}: { + label: string; + entries: ParamComparisonEntry[]; + onCompare: (label: string, entries: ParamComparisonEntry[]) => void; +}) { + const { t } = useTranslation(["params"]); + + if (entries.length < 2) { + return null; + } + + return ( + // biome-ignore lint/a11y/noStaticElementInteractions: stops the compare button click from toggling the history row + e.stopPropagation()}> + } + onPress={() => onCompare(label, entries)} + aria-label={t("params:compare.action")} + testId="compare-param" + /> + + ); +} + +function ParamsLegend() { + const { t } = useTranslation(["params"]); + + return ( +
+
{t("params:legend.title")}
+
{t("params:legend.damage")}
+
{t("params:legend.frames")}
+
{t("params:legend.powerUp")}
+
+ ); +} + +function DamageRateInfoSection({ + visibleWeaponIds, + currentWeaponId, + damageMultipliers, + expandedRows, + onToggle, + comparisonEntries, + onCompare, +}: { + visibleWeaponIds: number[]; + currentWeaponId: number; + damageMultipliers: Record; + expandedRows: Set; + onToggle: (fullKey: string) => void; + comparisonEntries: ( + getValue: (weaponId: number) => number | string | undefined, + ) => ParamComparisonEntry[]; + onCompare: (label: string, entries: ParamComparisonEntry[]) => void; +}) { + const { t } = useTranslation(["weapons", "analyzer", "game-misc"]); + + const targets = (damageMultipliers[String(currentWeaponId)] ?? []).map( + (multiplier) => multiplier.target, + ); + + if (targets.length === 0) { + return null; + } + + const multiplierFor = (weaponId: number, target: string) => + damageMultipliers[String(weaponId)]?.find((m) => m.target === target); + + return ( + + + + {DAMAGE_RATE_INFO_CATEGORY} + + + {targets.map((target) => { + const fullKey = `${DAMAGE_RATE_INFO_CATEGORY}.${target}`; + const isExpanded = expandedRows.has(fullKey); + const hasHistory = visibleWeaponIds.some( + (id) => (multiplierFor(id, target)?.history.length ?? 0) > 0, + ); + const targetLabel = translateDamageReceiver( + t, + target as DamageReceiver, + ); + + return ( + + onToggle(fullKey) : undefined} + > +
+ {targetLabel} + multiplierFor(weaponId, target)?.current, + )} + onCompare={onCompare} + /> + {hasHistory ? ( + + {isExpanded ? ( + + ) : ( + + )} + + ) : null} +
+ + {visibleWeaponIds.map((weaponId) => ( + + ))} + + ); + })} +
+ ); +} + +function HiddenWeaponsBar({ + kind, + hiddenWeaponIds, + onRestore, + onShowAll, +}: { + kind: WeaponParamKind; + hiddenWeaponIds: number[]; + onRestore: (weaponId: number) => void; + onShowAll: () => void; +}) { + const { t } = useTranslation(["weapons", "common"]); + const naming = useWeaponParamNaming(kind); + + return ( +
+ + {hiddenWeaponIds.map((weaponId) => ( + onRestore(weaponId)} + testId={`restore-weapon-${weaponId}`} + > + + + {naming.name(weaponId)} + + + + ))} + + {t("common:actions.showAll")} + +
+ ); +} + +function SpecialPointsRow({ + visibleWeaponIds, + specialPoints, + isExpanded, + onToggle, +}: { + visibleWeaponIds: number[]; + specialPoints: Record; + isExpanded: boolean; + onToggle: () => void; +}) { + const { t } = useTranslation(["analyzer"]); + + const hasHistory = visibleWeaponIds.some((id) => + specialPoints[String(id)]?.some((kit) => kit.history.length > 0), + ); + + return ( + + +
+ + {t("analyzer:stat.specialPoints")} + + {hasHistory ? ( + + {isExpanded ? : } + + ) : null} +
+ + {visibleWeaponIds.map((weaponId) => ( + + ))} + + ); +} + +function SpecialPointCell({ + kits, + isExpanded, +}: { + kits: SpecialPointWithHistory[]; + isExpanded: boolean; +}) { + const { t } = useTranslation(["analyzer"]); + const suffix = t("analyzer:suffix.specialPointsShort"); + + if (kits.length === 0) { + return ( + + + + ); + } + + const kitsWithHistory = kits.filter((kit) => kit.history.length > 0); + const showHistory = isExpanded && kitsWithHistory.length > 0; + + return ( + +
+ + {kits.map((kit) => `${kit.current}${suffix}`).join(" / ")} + + {kitsWithHistory.length > 0 && !isExpanded ? ( + {kitsWithHistory.length} + ) : null} +
+ {showHistory ? ( +
+ {kitsWithHistory.map((kit) => ( +
+ +
+ {kit.history.toReversed().map(({ version, value }) => ( +
+ + {`${value}${suffix}`} + + {version} +
+ ))} +
+
+ ))} +
+ ) : null} + + ); +} + +function ParamCell({ + param, + isExpanded, +}: { + param: ParamValueWithHistory | undefined; + isExpanded: boolean; +}) { + if (!param) { + return ( + + + + ); + } + + const showHistory = isExpanded && param.history.length > 0; + + return ( + +
+ + {WeaponParams.formatValue(param.current)} + + {param.history.length > 0 && !isExpanded ? ( + {param.history.length} + ) : null} +
+ {showHistory ? ( +
+ {param.history.toReversed().map(({ version, value }) => ( +
+ + {WeaponParams.formatValue(value)} + + {version} +
+ ))} +
+ ) : null} + + ); +} diff --git a/app/features/params/components/WeaponParamsView.module.css b/app/features/params/components/WeaponParamsView.module.css new file mode 100644 index 000000000..b22b2482f --- /dev/null +++ b/app/features/params/components/WeaponParamsView.module.css @@ -0,0 +1,16 @@ +.container { + display: flex; + flex-direction: column; + align-items: center; + gap: var(--s-4); +} + +.tabs { + width: 100%; +} + +.dataCredit { + font-size: var(--font-2xs); + color: var(--color-text-high); + text-decoration: underline; +} diff --git a/app/features/params/components/WeaponParamsView.tsx b/app/features/params/components/WeaponParamsView.tsx new file mode 100644 index 000000000..d75d8ed7a --- /dev/null +++ b/app/features/params/components/WeaponParamsView.tsx @@ -0,0 +1,109 @@ +import { useTranslation } from "react-i18next"; +import { + SendouTab, + SendouTabList, + SendouTabPanel, + SendouTabs, +} from "~/components/elements/Tabs"; +import { Main } from "~/components/Main"; +import { useSearchParamState } from "~/hooks/useSearchParamState"; +import type { MainWeaponId } from "~/modules/in-game-lists/types"; +import type { + DamageMultiplierWithHistory, + KitPatchHistory, + ParsedWeaponParams, + SpecialPointWithHistory, + WeaponKitInfo, + WeaponParamKind, + WeaponPatch, +} from "../weapon-params-types"; +import { WeaponKits } from "./WeaponKits"; +import { WeaponParamsTable } from "./WeaponParamsTable"; +import styles from "./WeaponParamsView.module.css"; +import { + WeaponPatchHistory, + WeaponPatchHistoryByKit, +} from "./WeaponPatchHistory"; + +export function WeaponParamsView({ + kind, + weaponId, + categoryWeaponIds, + weaponParams, + specialPoints, + damageMultipliers, + versions, + patchHistory, + kitPatchHistories, + kits, +}: { + kind: WeaponParamKind; + weaponId: number; + categoryWeaponIds: number[]; + weaponParams: Record; + specialPoints?: Record; + damageMultipliers?: Record; + versions: string[]; + patchHistory: WeaponPatch[]; + kitPatchHistories?: KitPatchHistory[]; + kits?: WeaponKitInfo[]; +}) { + const { t } = useTranslation(["params"]); + + const [tab, setTab] = useSearchParamState({ + name: "tab", + defaultValue: "params", + revive: (value) => (value === "patches" ? "patches" : "params"), + }); + + const viewedKitPatchCount = + kitPatchHistories?.find((kit) => kit.weaponId === weaponId)?.patches + .length ?? patchHistory.length; + + return ( +
+ {kits ? : null} + setTab(String(key))} + className={styles.tabs} + > + + {t("params:tab.params")} + + {t("params:tab.patches")} + + + + + + + {kitPatchHistories && kitPatchHistories.length > 0 ? ( + + ) : ( + + )} + + + + {t("params:dataCredit.lean")} + +
+ ); +} diff --git a/app/features/params/components/WeaponPatchHistory.module.css b/app/features/params/components/WeaponPatchHistory.module.css new file mode 100644 index 000000000..c4cffe032 --- /dev/null +++ b/app/features/params/components/WeaponPatchHistory.module.css @@ -0,0 +1,176 @@ +.kitHistory { + display: flex; + flex-direction: column; + gap: var(--s-3); + width: 100%; + align-self: stretch; +} + +.controls { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: var(--s-2) var(--s-4); +} + +.kitChip { + display: flex; + align-items: center; + gap: var(--s-1); +} + +.container { + display: flex; + gap: var(--s-3); + width: 100%; + overflow-x: auto; + padding-bottom: var(--s-2); + align-self: stretch; +} + +.divider { + font-size: var(--font-2xs); + font-weight: var(--weight-bold); + + &:not(:first-child) { + margin-block: var(--s-3); + } +} + +.dividerLabel { + display: flex; + align-items: center; + gap: var(--s-1); + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.column { + display: flex; + flex-direction: column; + gap: var(--s-2); + flex: 0 0 auto; + width: 15rem; +} + +.header { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: var(--s-1); + padding: var(--s-3) var(--s-2); + border: 2px solid var(--color-border-high); + border-radius: var(--radius-box); + background-color: var(--color-bg-high); +} + +.version { + font-size: var(--font-xl); + font-weight: var(--weight-extra); + line-height: 1; +} + +.date { + font-size: var(--font-2xs); + color: var(--color-text-high); +} + +.changes { + display: flex; + flex-direction: column; + gap: var(--s-1-5); +} + +.change { + min-height: 2rem; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + gap: var(--s-1) var(--s-2); + padding: var(--s-1) var(--s-2); + border: 1px solid var(--color-border); + background-color: var(--color-bg-high); + border-radius: var(--radius-box); + font-size: var(--font-2xs); + + &.wide, + &.incoming { + flex-direction: column; + align-items: stretch; + } + + &.buff { + border-color: var(--color-success); + background-color: var(--color-success-low); + } + + &.nerf { + border-color: var(--color-error); + background-color: var(--color-error-low); + } +} + +.changeName { + display: flex; + flex: 1; + min-width: 0; + align-items: center; + gap: var(--s-1); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + + .change.wide & { + white-space: normal; + } +} + +.changeIcon { + flex-shrink: 0; +} + +.changeValues { + display: flex; + align-items: center; + gap: var(--s-1); + flex-shrink: 0; + font-weight: var(--weight-semi); + font-variant-numeric: tabular-nums; + + .change.wide & { + flex-wrap: wrap; + } +} + +.attackers { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: var(--s-1) var(--s-2); + min-width: 0; +} + +.attackerIcons { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: var(--s-1); +} + +.attackerSuffix { + font-weight: var(--weight-semi); +} + +.arrow { + color: var(--color-text-high); +} + +.empty { + color: var(--color-text-high); + font-size: var(--font-sm); + padding: var(--s-4); +} diff --git a/app/features/params/components/WeaponPatchHistory.tsx b/app/features/params/components/WeaponPatchHistory.tsx new file mode 100644 index 000000000..978000375 --- /dev/null +++ b/app/features/params/components/WeaponPatchHistory.tsx @@ -0,0 +1,389 @@ +import clsx from "clsx"; +import { useTranslation } from "react-i18next"; +import { Divider } from "~/components/Divider"; +import { + SendouChipRadio, + SendouChipRadioGroup, +} from "~/components/elements/ChipRadio"; +import { SendouSwitch } from "~/components/elements/Switch"; +import { + SpecialWeaponImage, + SubWeaponImage, + WeaponImage, +} from "~/components/Image"; +import { LocaleTime } from "~/components/LocaleTime"; +import { + damageReceiverSuffix, + translateDamageReceiver, +} from "~/features/object-damage-calculator/calculator-constants"; +import type { DamageReceiver } from "~/features/object-damage-calculator/calculator-types"; +import { + useSearchParamState, + useSearchParamStateEncoder, +} from "~/hooks/useSearchParamState"; +import type { + MainWeaponId, + SpecialWeaponId, + SubWeaponId, +} from "~/modules/in-game-lists/types"; +import * as WeaponParams from "../core/WeaponParams"; +import { + DAMAGE_MULTIPLIER_PARAM_KEY, + INCOMING_DAMAGE_MULTIPLIER_PARAM_KEY, + SPECIAL_POINTS_PARAM_KEY, +} from "../weapon-params-constants"; +import type { + IncomingDamageAttackers, + KitPatchHistory, + PatchChange, + WeaponPatch, +} from "../weapon-params-types"; +import styles from "./WeaponPatchHistory.module.css"; + +const PATCH_DATE_OPTIONS: Intl.DateTimeFormatOptions = { + day: "numeric", + month: "short", + year: "numeric", +}; + +export function WeaponPatchHistory({ patches }: { patches: WeaponPatch[] }) { + const { t } = useTranslation(["params"]); + + if (patches.length === 0) { + return
{t("params:noPatches")}
; + } + + return ( +
+ {patches.map((patch) => ( +
+ +
+ {patch.changes.map((change, i) => ( + + ))} +
+
+ ))} +
+ ); +} + +/** + * Patch history of a main weapon shown one kit at a time: the selected kit's main weapon, sub + * weapon and special weapon changes are grouped under dividers within the same patch column. Sub + * and special weapon changes can be toggled off. + */ +export function WeaponPatchHistoryByKit({ + kits, + defaultWeaponId, +}: { + kits: KitPatchHistory[]; + defaultWeaponId: MainWeaponId; +}) { + const { t } = useTranslation(["params"]); + + const kitIds = kits.map((kit) => kit.weaponId); + + const [selectedWeaponId, setSelectedWeaponId] = + useSearchParamStateEncoder({ + name: "kit", + defaultValue: defaultWeaponId, + revive: (value) => { + const id = Number(value) as MainWeaponId; + return kitIds.includes(id) ? id : undefined; + }, + encode: (value) => String(value), + }); + + const [showSubSpecial, setShowSubSpecial] = useSearchParamState({ + name: "kitExtras", + defaultValue: true, + revive: (value) => + value === "false" ? false : value === "true" ? true : undefined, + }); + + const selectedKit = + kits.find((kit) => kit.weaponId === selectedWeaponId) ?? kits[0]; + + const patches = selectedKit.patches + .map((patch) => ({ + ...patch, + changes: showSubSpecial + ? patch.changes + : patch.changes.filter((change) => change.source === "main"), + })) + .filter((patch) => patch.changes.length > 0); + + return ( +
+
+ {kits.length > 1 ? ( + + ) : null} + + {t("params:patches.showSubSpecial")} + +
+ {patches.length === 0 ? ( +
{t("params:noPatches")}
+ ) : ( +
+ {patches.map((patch) => ( + + ))} +
+ )} +
+ ); +} + +function KitFilter({ + kits, + selectedWeaponId, + onSelect, +}: { + kits: KitPatchHistory[]; + selectedWeaponId: MainWeaponId; + onSelect: (weaponId: MainWeaponId) => void; +}) { + const { t } = useTranslation(["weapons"]); + + return ( + + {kits.map((kit) => ( + onSelect(Number(value) as MainWeaponId)} + > + + + {t(`weapons:MAIN_${kit.weaponId}`)} + + + ))} + + ); +} + +function KitPatchColumn({ + patch, + kit, +}: { + patch: WeaponPatch; + kit: KitPatchHistory; +}) { + const mainChanges = patch.changes.filter( + (change) => change.source === "main", + ); + const subChanges = patch.changes.filter((change) => change.source === "sub"); + const specialChanges = patch.changes.filter( + (change) => change.source === "special", + ); + + return ( +
+ +
+ {mainChanges.map((change, i) => ( + + ))} + {subChanges.length > 0 ? ( + <> + + {subChanges.map((change, i) => ( + + ))} + + ) : null} + {specialChanges.length > 0 ? ( + <> + + {specialChanges.map((change, i) => ( + + ))} + + ) : null} +
+
+ ); +} + +function SubWeaponDivider({ subWeaponId }: { subWeaponId: SubWeaponId }) { + const { t } = useTranslation(["weapons"]); + + return ( + + + + {t(`weapons:SUB_${subWeaponId}`)} + + + ); +} + +function SpecialWeaponDivider({ + specialWeaponId, +}: { + specialWeaponId: SpecialWeaponId; +}) { + const { t } = useTranslation(["weapons"]); + + return ( + + + + {t(`weapons:SPECIAL_${specialWeaponId}`)} + + + ); +} + +function PatchColumnHeader({ + version, + date, +}: { + version: string; + date: string | null; +}) { + return ( +
+
{version}
+ {date ? ( + + ) : null} +
+ ); +} + +function changeKey(change: PatchChange, index: number) { + return `${change.category}.${change.key}.${change.weaponId ?? ""}.${change.source ?? ""}.${index}`; +} + +function ChangeBadge({ change }: { change: PatchChange }) { + const { t } = useTranslation(["analyzer", "weapons", "game-misc"]); + + if ( + change.category === INCOMING_DAMAGE_MULTIPLIER_PARAM_KEY && + change.attackers + ) { + return ; + } + + const isSpecialPoints = change.category === SPECIAL_POINTS_PARAM_KEY; + const isDamageMultiplier = change.category === DAMAGE_MULTIPLIER_PARAM_KEY; + // Damage falloff curves serialize to long "damage @ distance" lists that need their own line. + const isWideValue = + typeof change.from === "string" && change.from.includes("@"); + + const label = isSpecialPoints + ? t("analyzer:stat.specialPoints") + : isDamageMultiplier + ? translateDamageReceiver(t, change.key as DamageReceiver) + : change.key; + + return ( +
+ + {isSpecialPoints && change.weaponId ? ( + + ) : null} + {label} + + + {WeaponParams.formatValue(change.from)} + + {WeaponParams.formatValue(change.to)} + +
+ ); +} + +/** + * An incoming damage multiplier change: a set of attacking weapons whose shared damage rate against + * the page's sub or special weapon changed. Shows the attacking weapons' icons (with a suffix for + * multi-part objects, e.g. a Big Bubbler's shield vs. weak point) and the from→to rate. + */ +function IncomingChangeBadge({ + change, + attackers, +}: { + change: PatchChange; + attackers: IncomingDamageAttackers; +}) { + const { t } = useTranslation(["analyzer", "weapons", "game-misc"]); + + const suffix = damageReceiverSuffix(t, change.key as DamageReceiver); + + return ( +
+
+ + {attackers.mainWeaponIds.map((id) => ( + + ))} + {attackers.subWeaponIds.map((id) => ( + + ))} + {attackers.specialWeaponIds.map((id) => ( + + ))} + + {suffix ? ( + {suffix} + ) : null} +
+ + {WeaponParams.formatValue(change.from)} + + {WeaponParams.formatValue(change.to)} + +
+ ); +} diff --git a/app/features/params/core/WeaponParams.test.ts b/app/features/params/core/WeaponParams.test.ts new file mode 100644 index 000000000..9d0b26f3c --- /dev/null +++ b/app/features/params/core/WeaponParams.test.ts @@ -0,0 +1,473 @@ +import { describe, expect, it } from "vitest"; +import { + DAMAGE_MULTIPLIER_PARAM_KEY, + INCOMING_DAMAGE_MULTIPLIER_PARAM_KEY, + SPECIAL_POINTS_PARAM_KEY, +} from "../weapon-params-constants"; +import type { + DamageMultiplierWithHistory, + ParsedWeaponParams, +} from "../weapon-params-types"; +import { classifyParamChange } from "./param-directions"; +import * as WeaponParams from "./WeaponParams"; + +const VERSIONS = ["1.0.0", "2.0.0", "3.0.0"]; + +const emptyParsed = (weaponId: number): ParsedWeaponParams => ({ + weaponId, + categories: {}, +}); + +const row = (overrides: { + mainWeaponIds?: number[]; + subWeaponIds?: number[]; + specialWeaponIds?: number[]; + targets: DamageMultiplierWithHistory[]; +}) => ({ + mainWeaponIds: [], + subWeaponIds: [], + specialWeaponIds: [], + ...overrides, +}); + +describe("damageMultipliersForWeapon", () => { + it("collects only rows applying to the weapon for the given kind", () => { + const rows = { + a: row({ + specialWeaponIds: [11], + targets: [{ target: "Chariot", current: 2, history: [] }], + }), + b: row({ + specialWeaponIds: [12], + targets: [{ target: "ShockSonar", current: 2, history: [] }], + }), + }; + + const result = WeaponParams.damageMultipliersForWeapon(rows, 11, "special"); + + expect(result.map((m) => m.target)).toEqual(["Chariot"]); + }); + + it("de-duplicates identical target histories shared across rows", () => { + const sharedTarget: DamageMultiplierWithHistory = { + target: "GreatBarrier_Barrier", + current: 1.4, + history: [{ version: "1.0.0", value: 2.8 }], + }; + const rows = { + bullet: row({ specialWeaponIds: [10], targets: [sharedTarget] }), + bombCore: row({ + specialWeaponIds: [10], + targets: [{ ...sharedTarget }], + }), + }; + + const result = WeaponParams.damageMultipliersForWeapon(rows, 10, "special"); + + expect(result).toHaveLength(1); + }); + + it("merges several rows of the same target into the most informative entry", () => { + const rows = { + swing: row({ + specialWeaponIds: [11], + targets: [{ target: "Chariot", current: 4.5, history: [] }], + }), + throwBombCore: row({ + specialWeaponIds: [11], + targets: [ + { + target: "Chariot", + current: 3.273, + history: [ + { version: "2.0.0", value: 2 }, + { version: "3.0.0", value: 6 }, + ], + }, + ], + }), + }; + + const result = WeaponParams.damageMultipliersForWeapon(rows, 11, "special"); + + expect(result).toHaveLength(1); + expect(result[0].history).toHaveLength(2); + expect(result[0].current).toBe(3.273); + }); + + it("orders entries like DAMAGE_RECEIVERS", () => { + const rows = { + a: row({ + specialWeaponIds: [11], + targets: [ + { target: "Wsb_Shield", current: 2, history: [] }, + { target: "Chariot", current: 3, history: [] }, + ], + }), + }; + + const result = WeaponParams.damageMultipliersForWeapon(rows, 11, "special"); + + // Chariot precedes Wsb_Shield in DAMAGE_RECEIVERS + expect(result.map((m) => m.target)).toEqual(["Chariot", "Wsb_Shield"]); + }); +}); + +describe("patchHistory damage multipliers", () => { + const buildWith = (multiplier: DamageMultiplierWithHistory) => + WeaponParams.patchHistory(emptyParsed(11), VERSIONS, [], [multiplier]); + + it("attributes a change to the version after the recorded one and flags a higher rate as a buff", () => { + const patches = buildWith({ + target: "Wsb_Shield", + current: 2.2, + history: [{ version: "1.0.0", value: 2 }], + }); + + expect(patches).toHaveLength(1); + expect(patches[0].version).toBe("2.0.0"); + expect(patches[0].changes).toEqual([ + { + category: DAMAGE_MULTIPLIER_PARAM_KEY, + key: "Wsb_Shield", + from: 2, + to: 2.2, + kind: "buff", + }, + ]); + }); + + it("flags a lower rate as a nerf", () => { + const patches = buildWith({ + target: "NiceBall_Armor", + current: 1.82, + history: [{ version: "2.0.0", value: 2.6 }], + }); + + expect(patches).toHaveLength(1); + expect(patches[0].version).toBe("3.0.0"); + expect(patches[0].changes[0].kind).toBe("nerf"); + }); +}); + +describe("incomingDamageMultipliersForWeapon", () => { + it("collects other weapons' rates against the weapon's receiver targets", () => { + const rows = { + fromSpecial: row({ + specialWeaponIds: [10], + targets: [ + { + target: "GreatBarrier_Barrier", + current: 1.4, + history: [{ version: "1.0.0", value: 2.8 }], + }, + ], + }), + fromMains: row({ + mainWeaponIds: [200, 201], + targets: [ + { + target: "GreatBarrier_WeakPoint", + current: 3, + history: [{ version: "2.0.0", value: 2 }], + }, + ], + }), + unrelated: row({ + mainWeaponIds: [400], + targets: [{ target: "Chariot", current: 2, history: [] }], + }), + }; + + // special id 2 is Big Bubbler (GreatBarrier_Barrier + GreatBarrier_WeakPoint) + const result = WeaponParams.incomingDamageMultipliersForWeapon( + rows, + 2, + "special", + ); + + expect(result.map((m) => m.target)).toEqual([ + "GreatBarrier_Barrier", + "GreatBarrier_WeakPoint", + ]); + expect(result[1].attackers.mainWeaponIds).toEqual([200, 201]); + }); + + it("de-duplicates the same attacker group and target across rows", () => { + const target = { + target: "GreatBarrier_Barrier", + current: 1.4, + history: [{ version: "1.0.0", value: 2.8 }], + }; + const rows = { + bullet: row({ specialWeaponIds: [10], targets: [target] }), + bombCore: row({ specialWeaponIds: [10], targets: [{ ...target }] }), + }; + + const result = WeaponParams.incomingDamageMultipliersForWeapon( + rows, + 2, + "special", + ); + + expect(result).toHaveLength(1); + }); + + it("returns nothing for a weapon that is not a damageable object", () => { + const rows = { + a: row({ + specialWeaponIds: [10], + targets: [ + { + target: "GreatBarrier_Barrier", + current: 1, + history: [{ version: "1.0.0", value: 2 }], + }, + ], + }), + }; + + // special id 1 (Trizooka) is not in INCOMING_DAMAGE_RECEIVERS + expect( + WeaponParams.incomingDamageMultipliersForWeapon(rows, 1, "special"), + ).toEqual([]); + }); +}); + +describe("patchHistory incoming damage multipliers", () => { + it("flags a higher incoming rate as a nerf to the defending weapon and carries the attackers", () => { + const patches = WeaponParams.patchHistory( + emptyParsed(2), + VERSIONS, + [], + [], + [ + { + target: "GreatBarrier_Barrier", + attackers: { + mainWeaponIds: [200], + subWeaponIds: [], + specialWeaponIds: [], + }, + current: 2.8, + history: [{ version: "1.0.0", value: 1.4 }], + }, + ], + ); + + expect(patches).toHaveLength(1); + expect(patches[0].version).toBe("2.0.0"); + expect(patches[0].changes[0]).toMatchObject({ + category: INCOMING_DAMAGE_MULTIPLIER_PARAM_KEY, + key: "GreatBarrier_Barrier", + from: 1.4, + to: 2.8, + kind: "nerf", + attackers: { mainWeaponIds: [200] }, + }); + }); + + it("flags a lower incoming rate as a buff to the defending weapon", () => { + const patches = WeaponParams.patchHistory( + emptyParsed(2), + VERSIONS, + [], + [], + [ + { + target: "GreatBarrier_Barrier", + attackers: { + mainWeaponIds: [200], + subWeaponIds: [], + specialWeaponIds: [], + }, + current: 1.4, + history: [{ version: "1.0.0", value: 2.8 }], + }, + ], + ); + + expect(patches[0].changes[0].kind).toBe("buff"); + }); +}); + +describe("parse damage falloff curves", () => { + it("serializes a DistanceDamage array into a scaled damage @ distance string", () => { + const parsed = WeaponParams.parse( + 0, + { + BlastParam: { + DistanceDamage: [ + { Damage: 1800, Distance: 3.6 }, + { Damage: 300, Distance: 7 }, + ], + }, + }, + VERSIONS, + ); + + expect(parsed.categories.BlastParam.DistanceDamage.current).toBe( + "180 @ 3.6, 30 @ 7", + ); + }); + + it("flattens nested breakpoint arrays", () => { + const parsed = WeaponParams.parse( + 0, + { + BlastParam: { + DistanceDamage: [ + [{ Damage: 1800, Distance: 3.6 }], + [{ Damage: 300, Distance: 7 }], + ], + }, + }, + VERSIONS, + ); + + expect(parsed.categories.BlastParam.DistanceDamage.current).toBe( + "180 @ 3.6, 30 @ 7", + ); + }); + + it("tracks per-version history of a damage falloff curve", () => { + const parsed = WeaponParams.parse( + 0, + { + BlastParam: { + DistanceDamage: [{ Damage: 600, Distance: 4 }], + "DistanceDamage@2.0.0": [{ Damage: 400, Distance: 4 }], + }, + }, + VERSIONS, + ); + + expect(parsed.categories.BlastParam.DistanceDamage.history).toEqual([ + { version: "2.0.0", value: "40 @ 4" }, + ]); + }); +}); + +describe("classifyParamChange damage falloff curves", () => { + it("flags higher damage as a buff", () => { + expect( + classifyParamChange("BlastParam", "DistanceDamage", "40 @ 4", "60 @ 4"), + ).toBe("buff"); + }); + + it("flags lower damage as a nerf", () => { + expect( + classifyParamChange("BlastParam", "DistanceDamage", "60 @ 4", "40 @ 4"), + ).toBe("nerf"); + }); + + it("flags longer reach at the same damage as a buff", () => { + expect( + classifyParamChange( + "BlastParam", + "DistanceDamage", + "70 @ 0.94, 50 @ 3.3", + "70 @ 1.01, 50 @ 3.37", + ), + ).toBe("buff"); + }); + + it("flags shorter reach at the same damage as a nerf", () => { + expect( + classifyParamChange( + "BlastParam", + "DistanceDamage", + "70 @ 1.01, 50 @ 3.37", + "70 @ 0.975, 50 @ 3.37", + ), + ).toBe("nerf"); + }); + + it("is neutral when damage rises but reach shrinks", () => { + expect( + classifyParamChange("BlastParam", "DistanceDamage", "60 @ 4", "70 @ 3.5"), + ).toBe("neutral"); + }); + + it("is neutral when the curve gains or loses a breakpoint", () => { + expect( + classifyParamChange( + "BlastParam", + "DistanceDamage", + "60 @ 4", + "60 @ 4, 30 @ 8", + ), + ).toBe("neutral"); + }); +}); + +describe("kitPatchHistories", () => { + const kitHistory = () => + WeaponParams.kitPatchHistories({ + mainParsed: emptyParsed(11), + versions: VERSIONS, + kits: [{ weaponId: 11, subWeaponId: 1, specialWeaponId: 2 }], + specialPointsByKit: { + "11": { + weaponId: 11, + current: 180, + history: [{ version: "1.0.0", value: 200 }], + }, + }, + mainDamageMultipliers: [ + { + target: "Wsb_Shield", + current: 2.2, + history: [{ version: "1.0.0", value: 2 }], + }, + ], + subParams: { "1": emptyParsed(1) }, + subDamageMultipliers: { + "1": [ + { + target: "Chariot", + current: 3, + history: [{ version: "1.0.0", value: 2 }], + }, + ], + }, + subIncomingDamageMultipliers: {}, + specialParams: { "2": emptyParsed(2) }, + specialDamageMultipliers: { + "2": [ + { + target: "NiceBall_Armor", + current: 1.5, + history: [{ version: "2.0.0", value: 2 }], + }, + ], + }, + specialIncomingDamageMultipliers: {}, + }); + + it("folds the kit's main, sub and special weapon changes into one descending history", () => { + const [history] = kitHistory(); + + expect(history.weaponId).toBe(11); + expect(history.patches.map((patch) => patch.version)).toEqual([ + "3.0.0", + "2.0.0", + ]); + }); + + it("tags each change with its source and groups main before sub before special", () => { + const [history] = kitHistory(); + + const v2 = history.patches.find((patch) => patch.version === "2.0.0")!; + // special points + main damage rate (both main), then the sub weapon's damage rate + expect(v2.changes.map((change) => change.source)).toEqual([ + "main", + "main", + "sub", + ]); + expect(v2.changes[0].category).toBe(SPECIAL_POINTS_PARAM_KEY); + + const v3 = history.patches.find((patch) => patch.version === "3.0.0")!; + expect(v3.changes.map((change) => change.source)).toEqual(["special"]); + }); +}); diff --git a/app/features/params/core/WeaponParams.ts b/app/features/params/core/WeaponParams.ts new file mode 100644 index 000000000..dfcf8ec82 --- /dev/null +++ b/app/features/params/core/WeaponParams.ts @@ -0,0 +1,774 @@ +import { PATCHES } from "~/features/builds/builds-constants"; +import { DAMAGE_RECEIVERS } from "~/features/object-damage-calculator/calculator-constants"; +import type { MainWeaponId } from "~/modules/in-game-lists/types"; +import { + mainWeaponIds, + weaponCategories, + weaponIdToBaseWeaponId, + weaponIdToType, +} from "~/modules/in-game-lists/weapon-ids"; +import { + DAMAGE_MULTIPLIER_PARAM_KEY, + INCOMING_DAMAGE_MULTIPLIER_PARAM_KEY, + INCOMING_DAMAGE_RECEIVERS, + SPECIAL_POINTS_PARAM_KEY, +} from "../weapon-params-constants"; +import type { + DamageMultiplierWithHistory, + IncomingDamageAttackers, + IncomingDamageMultiplierWithHistory, + KitPatchHistory, + ParamDefinition, + ParamValueWithHistory, + ParsedWeaponParams, + PatchChange, + SpecialPointWithHistory, + WeaponKitInfo, + WeaponParamKind, + WeaponPatch, +} from "../weapon-params-types"; +import { classifyParamChange } from "./param-directions"; + +/** + * Shape of the committed `all-version-*-params.json` data files: a map of weapon id to its raw + * per-version params, the ordered list of tracked game versions, and (weapons only) special + * points history. + */ +export interface AllVersionParams { + metadata: { versions: string[] }; + weapons: Record>>; + specialPoints?: Record< + string, + { history: Array<{ version: string; value: number }> } + >; +} + +function parseParamKey(key: string): { + baseKey: string; + version: string | null; +} { + const atIndex = key.indexOf("@"); + if (atIndex === -1) { + return { baseKey: key, version: null }; + } + return { + baseKey: key.slice(0, atIndex), + version: key.slice(atIndex + 1), + }; +} + +interface DistanceDamageBreakpoint { + Damage: number; + Distance: number; +} + +function isDistanceDamageBreakpoint( + value: unknown, +): value is DistanceDamageBreakpoint { + return ( + typeof value === "object" && + value !== null && + typeof (value as DistanceDamageBreakpoint).Damage === "number" && + typeof (value as DistanceDamageBreakpoint).Distance === "number" + ); +} + +/** + * Whether `value` is a damage falloff curve: an array of {@link DistanceDamageBreakpoint}, with + * each entry possibly being a nested array of breakpoints (e.g. fizzy bomb bounces). + */ +function isDistanceDamageArray( + value: unknown[], +): value is Array { + return ( + value.length > 0 && + value.every( + (el) => + isDistanceDamageBreakpoint(el) || + (Array.isArray(el) && + el.length > 0 && + el.every(isDistanceDamageBreakpoint)), + ) + ); +} + +/** + * Serializes a damage falloff curve into a compact `" @ "` string (damage + * scaled to displayed HP, i.e. divided by 10) so its per-version changes flow through the same + * scalar param pipeline as plain values. Nested breakpoint arrays are flattened. + */ +function formatDistanceDamageArray( + value: Array, +): string { + return value + .flat() + .map( + (breakpoint) => + `${formatValue(breakpoint.Damage / 10)} @ ${formatValue(breakpoint.Distance)}`, + ) + .join(", "); +} + +function flattenScalarParams( + params: Record, + prefix = "", +): Array<[string, number | string]> { + const result: Array<[string, number | string]> = []; + + for (const [key, value] of Object.entries(params)) { + const fullKey = prefix ? `${prefix}.${key}` : key; + + if (typeof value === "number" || typeof value === "string") { + result.push([fullKey, value]); + } else if (Array.isArray(value)) { + // Damage falloff curves and arrays of plain numbers/strings (e.g. + // SplashSpawnParam.ForceSpawnNearestAddNumArray) are kept as a single joined string so + // their per-version changes still show up. Other arrays of objects are too structured + // to represent this way and are skipped. + if (isDistanceDamageArray(value)) { + result.push([fullKey, formatDistanceDamageArray(value)]); + } else if ( + value.length > 0 && + value.every((el) => typeof el === "number" || typeof el === "string") + ) { + result.push([ + fullKey, + `[${value.map((el) => formatValue(el)).join(", ")}]`, + ]); + } + } else if (typeof value === "object" && value !== null) { + result.push( + ...flattenScalarParams(value as Record, fullKey), + ); + } + } + + return result; +} + +/** + * Parses a single weapon's raw per-version params into the {@link ParsedWeaponParams} shape: each + * parameter's current value plus its tracked history, grouped by category. + */ +export function parse( + weaponId: number, + rawParams: Record>, + versions: string[], +): ParsedWeaponParams { + const categories: Record> = {}; + + for (const [categoryName, categoryParams] of Object.entries(rawParams)) { + if ( + typeof categoryParams !== "object" || + categoryParams === null || + Object.keys(categoryParams).length === 0 + ) { + continue; + } + + const parsedParams: Record = {}; + const paramHistory: Record< + string, + { current: number | string; versions: Map } + > = {}; + + for (const [key, value] of flattenScalarParams(categoryParams)) { + const { baseKey, version } = parseParamKey(key); + + if (!paramHistory[baseKey]) { + paramHistory[baseKey] = { + current: value, + versions: new Map(), + }; + } + + if (version === null) { + paramHistory[baseKey].current = value; + } else { + paramHistory[baseKey].versions.set(version, value); + } + } + + for (const [baseKey, data] of Object.entries(paramHistory)) { + const history: Array<{ version: string; value: number | string }> = []; + + for (const version of versions) { + const historicalValue = data.versions.get(version); + if (historicalValue !== undefined) { + history.push({ version, value: historicalValue }); + } + } + + parsedParams[baseKey] = { + current: data.current, + history, + }; + } + + if (Object.keys(parsedParams).length > 0) { + categories[categoryName] = parsedParams; + } + } + + return { weaponId, categories }; +} + +/** + * Parses the params of every given weapon id from a static all-version params data file, keyed by + * weapon id (as a string). Ids with no entry in the data are skipped. `toDataKey` maps a weapon id + * to the id its params are stored under — main weapons share params with their base weapon, while + * subs and specials use their own id (the default identity mapping). + */ +export function parseMany( + ids: readonly Id[], + data: AllVersionParams, + toDataKey: (id: Id) => number = (id) => id, +): Record { + const result: Record = {}; + + for (const id of ids) { + const rawParams = data.weapons[String(toDataKey(id))]; + if (rawParams) { + result[String(id)] = parse(id, rawParams, data.metadata.versions); + } + } + + return result; +} + +/** + * Collects every distinct `${category}.${key}` parameter present across the given weapons, sorted + * by category then key, for use as the comparison table's row definitions. + */ +export function allParamKeys( + weaponParams: Record, +): ParamDefinition[] { + const seenKeys = new Set(); + const definitions: ParamDefinition[] = []; + + for (const parsed of Object.values(weaponParams)) { + for (const [category, params] of Object.entries(parsed.categories)) { + for (const key of Object.keys(params)) { + const fullKey = `${category}.${key}`; + if (!seenKeys.has(fullKey)) { + seenKeys.add(fullKey); + definitions.push({ category, key, fullKey }); + } + } + } + } + + definitions.sort((a, b) => { + if (a.category !== b.category) { + return a.category.localeCompare(b.category); + } + return a.key.localeCompare(b.key); + }); + + return definitions; +} + +function getWeaponCategory(weaponId: MainWeaponId) { + return weaponCategories.find((cat) => + (cat.weaponIds as readonly number[]).includes(weaponId), + ); +} + +/** + * Returns the base main weapon ids of the given weapon's category, used as the columns its params + * are compared against. A non-base weapon is kept first, followed by the other base weapons. + */ +export function categoryWeaponIds(weaponId: MainWeaponId): MainWeaponId[] { + const category = getWeaponCategory(weaponId); + if (!category) { + return [weaponId]; + } + + const baseWeapons = (category.weaponIds as readonly MainWeaponId[]).filter( + (id) => weaponIdToType(id) === "BASE", + ); + + if (baseWeapons.includes(weaponId)) { + return baseWeapons; + } + + const currentWeaponBaseId = weaponIdToBaseWeaponId(weaponId); + return [weaponId, ...baseWeapons.filter((id) => id !== currentWeaponBaseId)]; +} + +/** + * Returns the main weapon ids that are kit siblings of the given weapon, i.e. they share + * the same base weapon (e.g. a weapon and its alternate kit) but excluding cosmetic alt + * skins. The returned list includes the given weapon itself. + */ +export function kitSiblingIds(weaponId: MainWeaponId): MainWeaponId[] { + const baseId = weaponIdToBaseWeaponId(weaponId); + return mainWeaponIds.filter( + (id) => + weaponIdToBaseWeaponId(id) === baseId && + weaponIdToType(id) !== "ALT_SKIN", + ); +} + +/** Whether the given parameter has any tracked per-version history. */ +export function hasHistory(param: ParamValueWithHistory): boolean { + return param.history.length > 0; +} + +interface DamageRateHistoryRow { + mainWeaponIds: number[]; + subWeaponIds: number[]; + specialWeaponIds: number[]; + targets: DamageMultiplierWithHistory[]; +} + +const DAMAGE_RECEIVER_ORDER = new Map( + DAMAGE_RECEIVERS.map((receiver, i) => [receiver as string, i]), +); + +const EMPTY_ATTACKERS: IncomingDamageAttackers = { + mainWeaponIds: [], + subWeaponIds: [], + specialWeaponIds: [], +}; + +/** Whether `candidate` is a better single representative of a target than the `current` pick. */ +function isMoreInformativeMultiplier( + candidate: DamageMultiplierWithHistory, + current: DamageMultiplierWithHistory, +): boolean { + if (candidate.history.length !== current.history.length) { + return candidate.history.length > current.history.length; + } + return candidate.current > current.current; +} + +/** + * Collects the damage multiplier history of every damage rate row that applies to the given + * weapon, reduced to a single entry per object target. A weapon can map to several rows (e.g. + * different attacks) that share the same target; the most informative one (longest tracked + * history, then highest current rate) is kept. Entries are ordered like {@link DAMAGE_RECEIVERS}. + */ +export function damageMultipliersForWeapon( + rows: Record, + weaponId: number, + kind: WeaponParamKind, +): DamageMultiplierWithHistory[] { + const applies = (row: DamageRateHistoryRow) => { + if (kind === "sub") return row.subWeaponIds.includes(weaponId); + if (kind === "special") return row.specialWeaponIds.includes(weaponId); + return ( + row.mainWeaponIds.includes(weaponId) || + row.mainWeaponIds.includes( + weaponIdToBaseWeaponId(weaponId as MainWeaponId), + ) + ); + }; + + const byTarget = new Map(); + + for (const row of Object.values(rows)) { + if (!applies(row)) continue; + for (const target of row.targets) { + const existing = byTarget.get(target.target); + if (!existing || isMoreInformativeMultiplier(target, existing)) { + byTarget.set(target.target, target); + } + } + } + + return [...byTarget.values()].sort( + (a, b) => + (DAMAGE_RECEIVER_ORDER.get(a.target) ?? Number.MAX_SAFE_INTEGER) - + (DAMAGE_RECEIVER_ORDER.get(b.target) ?? Number.MAX_SAFE_INTEGER), + ); +} + +/** A stable identifier for a group of attacking weapons, used to de-duplicate incoming entries. */ +function attackerGroupKey(attackers: IncomingDamageAttackers): string { + const part = (ids: number[]) => [...ids].sort((a, b) => a - b).join(","); + return `m${part(attackers.mainWeaponIds)};s${part(attackers.subWeaponIds)};x${part(attackers.specialWeaponIds)}`; +} + +/** + * Collects, for the given sub or special weapon (which must itself be a damageable object), the + * history of every *other* weapon's damage multiplier against it. Each entry is one group of + * attacking weapons that shared a rate change against one of the weapon's receiver targets; per + * (attacker group, target) the most informative entry (longest history, then highest rate) is + * kept. Entries are ordered like {@link DAMAGE_RECEIVERS}, then by attacker group. + */ +export function incomingDamageMultipliersForWeapon( + rows: Record, + weaponId: number, + kind: "sub" | "special", +): IncomingDamageMultiplierWithHistory[] { + const receiverTargets = INCOMING_DAMAGE_RECEIVERS[kind][weaponId]; + if (!receiverTargets) return []; + const targetSet = new Set(receiverTargets); + + const byKey = new Map(); + + for (const row of Object.values(rows)) { + const attackers: IncomingDamageAttackers = { + mainWeaponIds: + row.mainWeaponIds as IncomingDamageAttackers["mainWeaponIds"], + subWeaponIds: row.subWeaponIds as IncomingDamageAttackers["subWeaponIds"], + specialWeaponIds: + row.specialWeaponIds as IncomingDamageAttackers["specialWeaponIds"], + }; + const attackerKey = attackerGroupKey(attackers); + + for (const target of row.targets) { + if (!targetSet.has(target.target)) continue; + + const key = `${attackerKey}|${target.target}`; + const existing = byKey.get(key); + if (!existing || isMoreInformativeMultiplier(target, existing)) { + byKey.set(key, { + target: target.target, + attackers, + current: target.current, + history: target.history, + }); + } + } + } + + return [...byKey.values()].sort((a, b) => { + const order = + (DAMAGE_RECEIVER_ORDER.get(a.target) ?? Number.MAX_SAFE_INTEGER) - + (DAMAGE_RECEIVER_ORDER.get(b.target) ?? Number.MAX_SAFE_INTEGER); + if (order !== 0) return order; + return attackerGroupKey(a.attackers).localeCompare( + attackerGroupKey(b.attackers), + ); + }); +} + +function changesFromHistory( + history: Array<{ version: string; value: number | string }>, + current: number | string, + versions: string[], + versionIndex: Map, +): Array<{ patchVersion: string; from: number | string; to: number | string }> { + const result: Array<{ + patchVersion: string; + from: number | string; + to: number | string; + }> = []; + + for (let i = 0; i < history.length; i++) { + const { version, value: from } = history[i]; + const to = i < history.length - 1 ? history[i + 1].value : current; + + // A recorded value is the value *before* a change, so the change took effect at the + // next tracked game version. + const recordedIndex = versionIndex.get(version); + if (recordedIndex === undefined) continue; + const patchVersion = versions[recordedIndex + 1]; + if (!patchVersion) continue; + + result.push({ patchVersion, from, to }); + } + + return result; +} + +/** + * Groups every tracked parameter change of a single weapon by the game version (patch) that + * introduced it. Optionally folds the weapon's special points history into the same grouping. + * + * Within each patch the changes are sorted with special points first, then alphabetically by + * category and key. + */ +function computeWeaponPatchChanges( + parsed: ParsedWeaponParams, + versions: string[], + specialPoints?: SpecialPointWithHistory[], + damageMultipliers?: DamageMultiplierWithHistory[], + source?: WeaponParamKind, + incomingDamageMultipliers?: IncomingDamageMultiplierWithHistory[], +): Map { + const versionIndex = new Map(versions.map((version, i) => [version, i])); + const byVersion = new Map(); + + const push = (patchVersion: string, change: PatchChange) => { + const existing = byVersion.get(patchVersion); + if (existing) { + existing.push(change); + } else { + byVersion.set(patchVersion, [change]); + } + }; + + for (const [category, params] of Object.entries(parsed.categories)) { + for (const [key, param] of Object.entries(params)) { + for (const { patchVersion, from, to } of changesFromHistory( + param.history, + param.current, + versions, + versionIndex, + )) { + push(patchVersion, { + category, + key, + from, + to, + kind: classifyParamChange(category, key, from, to), + source, + }); + } + } + } + + for (const kit of specialPoints ?? []) { + for (const { patchVersion, from, to } of changesFromHistory( + kit.history, + kit.current, + versions, + versionIndex, + )) { + // Fewer special points needed means the special charges faster. + const kind = from === to ? "neutral" : to < from ? "buff" : "nerf"; + push(patchVersion, { + category: SPECIAL_POINTS_PARAM_KEY, + key: SPECIAL_POINTS_PARAM_KEY, + from, + to, + kind, + weaponId: kit.weaponId, + source, + }); + } + } + + for (const multiplier of damageMultipliers ?? []) { + for (const { patchVersion, from, to } of changesFromHistory( + multiplier.history, + multiplier.current, + versions, + versionIndex, + )) { + // A higher damage rate means the weapon deals more damage to the object. + const kind = from === to ? "neutral" : to > from ? "buff" : "nerf"; + push(patchVersion, { + category: DAMAGE_MULTIPLIER_PARAM_KEY, + key: multiplier.target, + from, + to, + kind, + source, + }); + } + } + + for (const multiplier of incomingDamageMultipliers ?? []) { + for (const { patchVersion, from, to } of changesFromHistory( + multiplier.history, + multiplier.current, + versions, + versionIndex, + )) { + // A higher incoming damage rate means the object takes more damage, i.e. a nerf to the + // sub or special weapon being defended (the inverse of an outgoing damage multiplier). + const kind = from === to ? "neutral" : to > from ? "nerf" : "buff"; + push(patchVersion, { + category: INCOMING_DAMAGE_MULTIPLIER_PARAM_KEY, + key: multiplier.target, + from, + to, + kind, + source, + attackers: multiplier.attackers, + }); + } + } + + for (const changes of byVersion.values()) { + changes.sort((a, b) => { + // Special points first (ordered by kit), then outgoing damage multipliers, then + // incoming damage multipliers, then regular params by category and key. + const rank = (change: PatchChange) => + change.category === SPECIAL_POINTS_PARAM_KEY + ? 0 + : change.category === DAMAGE_MULTIPLIER_PARAM_KEY + ? 1 + : change.category === INCOMING_DAMAGE_MULTIPLIER_PARAM_KEY + ? 2 + : 3; + const aRank = rank(a); + const bRank = rank(b); + if (aRank !== bRank) return aRank - bRank; + + if (aRank === 0) return (a.weaponId ?? 0) - (b.weaponId ?? 0); + if (aRank === 2) { + const order = + (DAMAGE_RECEIVER_ORDER.get(a.key) ?? Number.MAX_SAFE_INTEGER) - + (DAMAGE_RECEIVER_ORDER.get(b.key) ?? Number.MAX_SAFE_INTEGER); + if (order !== 0) return order; + return attackerGroupKey(a.attackers ?? EMPTY_ATTACKERS).localeCompare( + attackerGroupKey(b.attackers ?? EMPTY_ATTACKERS), + ); + } + if (a.category !== b.category) { + return a.category.localeCompare(b.category); + } + return a.key.localeCompare(b.key); + }); + } + + return byVersion; +} + +/** + * Assembles per-version change maps into the descending-by-version patch history, attaching each + * tracked game version's release date and skipping versions with no changes. When several maps are + * given (e.g. a kit's main, sub and special weapon changes) their changes are concatenated in the + * order the maps are passed, keeping each map's own within-version ordering. + */ +function changeMapsToPatches( + maps: Array>, + versions: string[], +): WeaponPatch[] { + const patchDateByVersion = new Map(PATCHES.map((p) => [p.patch, p.date])); + + return versions + .map((version) => ({ + version, + date: patchDateByVersion.get(version) ?? null, + changes: maps.flatMap((map) => map.get(version) ?? []), + })) + .filter((patch) => patch.changes.length > 0) + .reverse(); +} + +/** + * Builds the descending-by-version patch history of a single weapon, attaching each tracked + * game version's release date and skipping versions with no tracked balance changes. Special + * points changes are only folded in for main weapons (pass their history as `specialPoints`). + */ +export function patchHistory( + parsed: ParsedWeaponParams | undefined, + versions: string[], + specialPoints: SpecialPointWithHistory[] = [], + damageMultipliers: DamageMultiplierWithHistory[] = [], + incomingDamageMultipliers: IncomingDamageMultiplierWithHistory[] = [], +): WeaponPatch[] { + if (!parsed) return []; + + return changeMapsToPatches( + [ + computeWeaponPatchChanges( + parsed, + versions, + specialPoints, + damageMultipliers, + undefined, + incomingDamageMultipliers, + ), + ], + versions, + ); +} + +/** + * Builds a patch history per kit of a main weapon, folding the (shared) main weapon changes + * together with the kit's own special points, sub weapon and special weapon changes. Every change + * is tagged with its `source` so the patch history can group a column under a divider per weapon. + */ +export function kitPatchHistories({ + mainParsed, + versions, + kits, + specialPointsByKit, + mainDamageMultipliers, + subParams, + subDamageMultipliers, + subIncomingDamageMultipliers, + specialParams, + specialDamageMultipliers, + specialIncomingDamageMultipliers, +}: { + mainParsed: ParsedWeaponParams | undefined; + versions: string[]; + kits: WeaponKitInfo[]; + specialPointsByKit: Record; + mainDamageMultipliers: DamageMultiplierWithHistory[]; + subParams: Record; + subDamageMultipliers: Record; + subIncomingDamageMultipliers: Record< + string, + IncomingDamageMultiplierWithHistory[] + >; + specialParams: Record; + specialDamageMultipliers: Record; + specialIncomingDamageMultipliers: Record< + string, + IncomingDamageMultiplierWithHistory[] + >; +}): KitPatchHistory[] { + if (!mainParsed) return []; + + return kits.map((kit) => { + const kitSpecialPoints = specialPointsByKit[String(kit.weaponId)]; + const maps = [ + computeWeaponPatchChanges( + mainParsed, + versions, + kitSpecialPoints ? [kitSpecialPoints] : [], + mainDamageMultipliers, + "main", + ), + ]; + + const subIncoming = + subIncomingDamageMultipliers[String(kit.subWeaponId)] ?? []; + const subParsed = subParams[String(kit.subWeaponId)]; + if (subParsed || subIncoming.length > 0) { + maps.push( + computeWeaponPatchChanges( + subParsed ?? { weaponId: kit.subWeaponId, categories: {} }, + versions, + [], + subDamageMultipliers[String(kit.subWeaponId)] ?? [], + "sub", + subIncoming, + ), + ); + } + + const specialIncoming = + specialIncomingDamageMultipliers[String(kit.specialWeaponId)] ?? []; + const specialParsed = specialParams[String(kit.specialWeaponId)]; + if (specialParsed || specialIncoming.length > 0) { + maps.push( + computeWeaponPatchChanges( + specialParsed ?? { weaponId: kit.specialWeaponId, categories: {} }, + versions, + [], + specialDamageMultipliers[String(kit.specialWeaponId)] ?? [], + "special", + specialIncoming, + ), + ); + } + + return { + weaponId: kit.weaponId, + subWeaponId: kit.subWeaponId, + specialWeaponId: kit.specialWeaponId, + patches: changeMapsToPatches(maps, versions), + }; + }); +} + +/** Formats a parameter value for display, trimming trailing zeroes from non-integer numbers. */ +export function formatValue(value: number | string): string { + if (typeof value === "number") { + if (Number.isInteger(value)) { + return String(value); + } + return value.toFixed(4).replace(/\.?0+$/, ""); + } + return String(value); +} diff --git a/app/features/params/core/param-directions.ts b/app/features/params/core/param-directions.ts new file mode 100644 index 000000000..8789b8cfb --- /dev/null +++ b/app/features/params/core/param-directions.ts @@ -0,0 +1,186 @@ +/** + * Whether a higher value is better ("higher") or worse ("lower") for the player who owns + * the weapon. `null` means the direction is unknown / context-dependent. + */ +type ParamDirection = "higher" | "lower" | null; + +/** + * How a value change between two patches affected the weapon: a `"buff"` made it stronger, + * a `"nerf"` made it weaker, and `"neutral"` is either an unclassified parameter or a change + * whose impact direction we don't track. + */ +export type ParamChangeKind = "buff" | "nerf" | "neutral"; + +/** + * Ordered substring rules describing whether a higher value of a parameter is good for its + * weapon. The first rule whose `match` is a substring of the full `${category}.${key}` wins, + * so narrower exceptions are listed before broader rules (e.g. `ReceiveDamage` before + * `Damage`). Parameters matching no rule are treated as having an unknown direction. + */ +const PARAM_DIRECTION_RULES: Array<{ + match: string; + betterWhenHigher: boolean; +}> = [ + // Taking less damage is good, so these override the broader "Damage" rule below. + { match: "ReceiveDamage", betterWhenHigher: false }, + { match: "AttackedDamageRate", betterWhenHigher: false }, + + // Lower is better: less ink, faster recovery, tighter spread, shorter delays. + { match: "InkConsume", betterWhenHigher: false }, + { match: "InkRecoverStop", betterWhenHigher: false }, + { match: "DegSwerve", betterWhenHigher: false }, + { match: "DegBias", betterWhenHigher: false }, + { match: "ChargeFrame", betterWhenHigher: false }, + { match: "RepeatFrame", betterWhenHigher: false }, + { match: "PostDelayFrame", betterWhenHigher: false }, + { match: "PreDelayFrame", betterWhenHigher: false }, + { match: "DashFrame", betterWhenHigher: false }, + { match: "NakedFrame", betterWhenHigher: false }, + { match: "Dash_ChargeCancelableFrame", betterWhenHigher: false }, + + // Higher is better: more damage, durability, mobility, paint, range, uptime. + { match: "Damage", betterWhenHigher: true }, + { match: "CanopyHP", betterWhenHigher: true }, + { match: "ArmorHP", betterWhenHigher: true }, + { match: "MaxFieldHP", betterWhenHigher: true }, + { match: "MaxHP", betterWhenHigher: true }, + { match: "HitPoint", betterWhenHigher: true }, + { match: "MoveSpeed", betterWhenHigher: true }, + { match: "WidthHalf", betterWhenHigher: true }, + { match: "PaintRadius", betterWhenHigher: true }, + { match: "CrossPaint", betterWhenHigher: true }, + { match: "PaintHeight", betterWhenHigher: true }, + { match: "SpawnNum", betterWhenHigher: true }, + { match: "SplitNum", betterWhenHigher: true }, + { match: "SpawnSpeed", betterWhenHigher: true }, + { match: "GoStraightStateEndMaxSpeed", betterWhenHigher: true }, + { match: "MaxShootingFrame", betterWhenHigher: true }, + { match: "ServeAreaRadius", betterWhenHigher: true }, + { match: "PowerUpFrame", betterWhenHigher: true }, + { match: "KnockBackParam.Distance", betterWhenHigher: true }, + + // Longer-lasting effects and uptime are buffs. + { match: "SpecialTotalFrame", betterWhenHigher: true }, + { match: "SpecialDurationFrame", betterWhenHigher: true }, + { match: "MarkingFrame", betterWhenHigher: true }, + { match: "RainyFrame", betterWhenHigher: true }, + { match: "LaserFrame", betterWhenHigher: true }, + { match: ".Low", betterWhenHigher: true }, + { match: ".Mid", betterWhenHigher: true }, + { match: ".High", betterWhenHigher: true }, +]; + +/** + * Returns whether a higher value of the given parameter benefits the weapon's owner, using + * substring matching against `${category}.${key}`. Returns `null` when the parameter is not + * recognized as clearly directional. + */ +function getParamDirection(category: string, key: string): ParamDirection { + const fullKey = `${category}.${key}`; + + for (const { match, betterWhenHigher } of PARAM_DIRECTION_RULES) { + if (fullKey.includes(match)) { + return betterWhenHigher ? "higher" : "lower"; + } + } + + return null; +} + +/** Matches a single `" @ "` breakpoint of a serialized damage falloff curve. */ +const DAMAGE_BREAKPOINT_PATTERN = /^\s*([\d.]+)\s*@\s*([\d.]+)\s*$/; + +/** + * Parses a serialized damage falloff curve (see `formatDistanceDamageArray`) back into its + * breakpoints. Returns `null` for any other string (enums, primitive-array blobs), which are + * treated as non-directional. + */ +function parseDamageCurve( + value: number | string, +): Array<{ damage: number; distance: number }> | null { + if (typeof value !== "string") { + return null; + } + + const breakpoints: Array<{ damage: number; distance: number }> = []; + for (const part of value.split(",")) { + const match = part.match(DAMAGE_BREAKPOINT_PATTERN); + if (!match) return null; + breakpoints.push({ damage: Number(match[1]), distance: Number(match[2]) }); + } + + return breakpoints.length > 0 ? breakpoints : null; +} + +/** + * Classifies a change between two damage falloff curves by comparing them breakpoint by + * breakpoint. Both more damage and more reach (a higher distance at which a damage tier still + * applies) count as improvements, so a curve where every change improves is a buff, every change + * worsens is a nerf, and a mix (or curves of differing shape) is neutral. Returns `null` when the + * values are not both damage curves, so the caller falls back to scalar comparison. + */ +function classifyDamageCurveChange( + direction: ParamDirection, + from: number | string, + to: number | string, +): ParamChangeKind | null { + const fromCurve = parseDamageCurve(from); + const toCurve = parseDamageCurve(to); + if (!fromCurve || !toCurve || fromCurve.length !== toCurve.length) { + return null; + } + + let improved = false; + let worsened = false; + for (let i = 0; i < fromCurve.length; i++) { + for (const field of ["damage", "distance"] as const) { + const before = fromCurve[i][field]; + const after = toCurve[i][field]; + if (before === after) continue; + const isImprovement = + direction === "lower" ? after < before : after > before; + if (isImprovement) { + improved = true; + } else { + worsened = true; + } + } + } + + if (improved && !worsened) return "buff"; + if (worsened && !improved) return "nerf"; + return "neutral"; +} + +/** + * Classifies a parameter value change between two patches as a buff, a nerf, or neutral. + * + * Damage falloff curves are compared breakpoint by breakpoint (see + * {@link classifyDamageCurveChange}). Neutral is returned for other non-numeric values, unchanged + * values, or parameters whose impact direction is unknown (see {@link getParamDirection}). + */ +export function classifyParamChange( + category: string, + key: string, + from: number | string, + to: number | string, +): ParamChangeKind { + const direction = getParamDirection(category, key); + if (direction === null) { + return "neutral"; + } + + const curveChange = classifyDamageCurveChange(direction, from, to); + if (curveChange !== null) { + return curveChange; + } + + if (typeof from !== "number" || typeof to !== "number" || from === to) { + return "neutral"; + } + + const increased = to > from; + const improved = direction === "higher" ? increased : !increased; + + return improved ? "buff" : "nerf"; +} diff --git a/app/features/params/core/param-explanations.ts b/app/features/params/core/param-explanations.ts new file mode 100644 index 000000000..13e786a5b --- /dev/null +++ b/app/features/params/core/param-explanations.ts @@ -0,0 +1,2115 @@ +/** + * Plain-English explanations of raw weapon parameters, keyed by `${category}.${key}`. + * + * These are reconstructed by correlating Nintendo's official Splatoon 3 patch notes + * against the per-version value history we store. Only keys + * with a non-empty value below show a help popover on the params page. + * + * Every parameter the table can display is listed here. Filled-in entries are active; + * the rest are commented out as placeholders — uncomment one and write its meaning to + * add a popover for it. + * + * Conventions are explained once in the table's legend, so individual entries omit them: + * - damage values are stored ×10 (450 means 45.0 damage), + * - frame values run at 60 frames per second, + * - `.Low` / `.Mid` / `.High` are the same stat with none / a moderate amount / the maximum + * amount of the relevant Power Up gear ability equipped (`.Low` is 0 ability points, + * `.High` is the value at the ability-point cap). A single base-key entry (without the + * suffix) covers all three levels — see {@link getParamExplanation}. + */ +const PARAM_EXPLANATIONS: Record = { + // AdditionMovePlayerParam + // "AdditionMovePlayerParam.ZRate": "", + + // AreaParam + // "AreaParam.AreaOffsetY": "", + // "AreaParam.Distance.High": "", + // "AreaParam.Distance.Low": "", + // "AreaParam.Distance.Mid": "", + // "AreaParam.DistanceForOff": "", + // "AreaParam.Frame": "", + // "AreaParam.MarkingFrameSubSpec.High": "", + // "AreaParam.MarkingFrameSubSpec.Low": "", + // "AreaParam.MarkingFrameSubSpec.Mid": "", + + // BlasterBurstJumpParam + // "BlasterBurstJumpParam.BurstFrame": "", + // "BlasterBurstJumpParam.MoveLength": "", + // "BlasterBurstJumpParam.ShotCollisionHitRadiusRate": "", + // "BlasterBurstJumpParam.SplashDropPaintRadius": "", + // "BlasterBurstJumpParam.SplashDropPaintShotColHitRadius": "", + // "BlasterBurstJumpParam.SplashPaintRadius": "", + // "BlasterBurstJumpParam.SplashPaintShotColHitRadius": "", + // "BlasterBurstJumpParam.SplashRoundAxisXArray": "", + // "BlasterBurstJumpParam.SplashRoundAxisYArray": "", + // "BlasterBurstJumpParam.SplashWallDropMoveParam.FallPeriodFirstFrameMax": "", + // "BlasterBurstJumpParam.SplashWallDropMoveParam.FallPeriodFirstFrameMin": "", + // "BlasterBurstJumpParam.SplashWallDropMoveParam.FallPeriodFirstTargetSpeed": "", + // "BlasterBurstJumpParam.SplashWallDropMoveParam.FallPeriodLastFrameMax": "", + // "BlasterBurstJumpParam.SplashWallDropMoveParam.FallPeriodLastFrameMin": "", + // "BlasterBurstJumpParam.SplashWallDropMoveParam.FallPeriodSecondFrame": "", + // "BlasterBurstJumpParam.SplashWallDropMoveParam.FallPeriodSecondTargetSpeed": "", + // "BlasterBurstJumpParam.SplashWallDropPaintParam.PaintRadiusFall": "", + // "BlasterBurstJumpParam.SplashWallDropPaintParam.PaintRadiusGround": "", + // "BlasterBurstJumpParam.SplashWallDropPaintParam.PaintRadiusShock": "", + // "BlasterBurstJumpParam.WallHitPaintRadius": "", + + // BlasterBurstParam + // "BlasterBurstParam.BurstFrame": "", + // "BlasterBurstParam.MoveLength": "", + // "BlasterBurstParam.ShotCollisionHitRadiusRate": "", + // "BlasterBurstParam.SplashDropPaintRadius": "", + // "BlasterBurstParam.SplashDropPaintShotColHitRadius": "", + // "BlasterBurstParam.SplashPaintRadius": "", + // "BlasterBurstParam.SplashPaintShotColHitRadius": "", + // "BlasterBurstParam.SplashRoundAxisXArray": "", + // "BlasterBurstParam.SplashRoundAxisYArray": "", + // "BlasterBurstParam.SplashWallDropMoveParam.FallPeriodFirstFrameMax": "", + // "BlasterBurstParam.SplashWallDropMoveParam.FallPeriodFirstFrameMin": "", + // "BlasterBurstParam.SplashWallDropMoveParam.FallPeriodFirstTargetSpeed": "", + // "BlasterBurstParam.SplashWallDropMoveParam.FallPeriodLastFrameMax": "", + // "BlasterBurstParam.SplashWallDropMoveParam.FallPeriodLastFrameMin": "", + // "BlasterBurstParam.SplashWallDropMoveParam.FallPeriodSecondFrame": "", + // "BlasterBurstParam.SplashWallDropMoveParam.FallPeriodSecondTargetSpeed": "", + // "BlasterBurstParam.SplashWallDropPaintParam.PaintRadiusFall": "", + // "BlasterBurstParam.SplashWallDropPaintParam.PaintRadiusGround": "", + // "BlasterBurstParam.SplashWallDropPaintParam.PaintRadiusShock": "", + // "BlasterBurstParam.WallHitPaintRadius": "", + + // BlastJumpParam + // "BlastJumpParam.CrossPaintCheckLength": "", + // "BlastJumpParam.CrossPaintRadius": "", + // "BlastJumpParam.KnockBackParam.Accel": "", + // "BlastJumpParam.KnockBackParam.Bias": "", + "BlastJumpParam.KnockBackParam.Distance": + "Short flight distance shot radius.", + // "BlastJumpParam.PaintRadius": "", + + // BlastParam + // "BlastParam.BlastParam.CollisionRadiusForPaint": "", + // "BlastParam.BlastParam.CrossPaintCheckLength": "", + // "BlastParam.BlastParam.CrossPaintRadius": "", + // "BlastParam.BlastParam.DamageOffsetY": "", + // "BlastParam.BlastParam.KnockBackParam.Accel": "", + // "BlastParam.BlastParam.KnockBackParam.Bias": "", + // "BlastParam.BlastParam.KnockBackParam.Distance": "", + // "BlastParam.BlastParam.PaintOffsetY": "", + // "BlastParam.BlastParam.PaintRadius": "", + // "BlastParam.CollisionRadiusForPaint": "", + // "BlastParam.CrossPaintCheckLength": "", + // "BlastParam.CrossPaintRadius": "", + // "BlastParam.DamageHeightUp": "", + // "BlastParam.DamageOffsetY": "", + "BlastParam.DamageRadiusEnd": + "Radius the damaging area expands to at its largest.", + "BlastParam.DamageValueEnd": + "Damage dealt by the effect at its largest extent.", + // "BlastParam.DamageValueStart": "", + // "BlastParam.DistanceFar": "", + // "BlastParam.DistanceNear": "", + // "BlastParam.KnockBackParam.Accel": "", + // "BlastParam.KnockBackParam.Bias": "", + "BlastParam.KnockBackParam.Distance": "Shot radius.", + // "BlastParam.PaintHeight": "", + // "BlastParam.PaintOffsetY": "", + // "BlastParam.PaintRadius": "", + // "BlastParam.PaintRadiusEnd": "", + // "BlastParam.PaintRadiusFar": "", + // "BlastParam.PaintRadiusNear": "", + // "BlastParam.PaintRadiusStart": "", + // "BlastParam.PaintRotateDegree": "", + // "BlastParam.PaintSpanFrame": "", + // "BlastParam.PaintTexture": "", + // "BlastParam.RadiusSpreadFrame": "", + // "BlastParam.SplashAroundParam.Num": "", + // "BlastParam.SplashAroundParam.OffsetY": "", + // "BlastParam.SplashAroundParam.PaintRadius": "", + // "BlastParam.SplashAroundParam.PitchMax": "", + // "BlastParam.SplashAroundParam.PitchMin": "", + // "BlastParam.SplashAroundParam.VelocityMax": "", + // "BlastParam.SplashAroundParam.VelocityMin": "", + + // BlastParamChase + // "BlastParamChase.KnockBackParam.Accel": "", + // "BlastParamChase.KnockBackParam.Bias": "", + // "BlastParamChase.KnockBackParam.Distance": "", + // "BlastParamChase.PaintRadius": "", + // "BlastParamChase.SplashAroundParam.Num": "", + // "BlastParamChase.SplashAroundParam.PaintRadius": "", + // "BlastParamChase.SplashAroundParam.PitchMax": "", + // "BlastParamChase.SplashAroundParam.PitchMin": "", + // "BlastParamChase.SplashAroundParam.VelocityMax": "", + // "BlastParamChase.SplashAroundParam.VelocityMin": "", + // "BlastParamChase.SplashBlastParam.CrossPaintCheckLength": "", + // "BlastParamChase.SplashBlastParam.CrossPaintRadius": "", + // "BlastParamChase.SplashBlastParam.KnockBackParam.Accel": "", + // "BlastParamChase.SplashBlastParam.PaintRadius": "", + + // BlastParamDokanWarp + // "BlastParamDokanWarp.CrossPaintCheckLength": "", + // "BlastParamDokanWarp.CrossPaintRadius": "", + // "BlastParamDokanWarp.CrossPaintTexture": "", + // "BlastParamDokanWarp.KnockBackParam.Accel": "", + // "BlastParamDokanWarp.KnockBackParam.Distance": "", + // "BlastParamDokanWarp.PaintRadius": "", + // "BlastParamDokanWarp.PaintTexture": "", + + // BlastParamMaxCharge + // "BlastParamMaxCharge.CrossPaintCheckLength": "", + // "BlastParamMaxCharge.CrossPaintRadius": "", + // "BlastParamMaxCharge.KnockBackParam.Accel": "", + // "BlastParamMaxCharge.KnockBackParam.Bias": "", + // "BlastParamMaxCharge.KnockBackParam.Distance": "", + // "BlastParamMaxCharge.PaintRadius": "", + // "BlastParamMaxCharge.SplashAroundParam.Num": "", + // "BlastParamMaxCharge.SplashAroundParam.PaintRadius": "", + // "BlastParamMaxCharge.SplashAroundParam.PitchMax": "", + // "BlastParamMaxCharge.SplashAroundParam.PitchMin": "", + // "BlastParamMaxCharge.SplashAroundParam.VelocityMax": "", + // "BlastParamMaxCharge.SplashAroundParam.VelocityMin": "", + + // BlastParamMinCharge + // "BlastParamMinCharge.CrossPaintCheckLength": "", + // "BlastParamMinCharge.CrossPaintRadius": "", + // "BlastParamMinCharge.KnockBackParam.Accel": "", + // "BlastParamMinCharge.KnockBackParam.Bias": "", + // "BlastParamMinCharge.KnockBackParam.Distance": "", + // "BlastParamMinCharge.PaintRadius": "", + // "BlastParamMinCharge.SplashAroundParam.Num": "", + // "BlastParamMinCharge.SplashAroundParam.PaintRadius": "", + // "BlastParamMinCharge.SplashAroundParam.PitchMax": "", + // "BlastParamMinCharge.SplashAroundParam.PitchMin": "", + // "BlastParamMinCharge.SplashAroundParam.VelocityMax": "", + // "BlastParamMinCharge.SplashAroundParam.VelocityMin": "", + + // BlastParamNormal + // "BlastParamNormal.CrossPaintCheckLength": "", + // "BlastParamNormal.CrossPaintRadius": "", + // "BlastParamNormal.CrossPaintTexture": "", + // "BlastParamNormal.KnockBackParam.Accel": "", + // "BlastParamNormal.KnockBackParam.Distance": "", + // "BlastParamNormal.PaintRadius": "", + // "BlastParamNormal.PaintTexture": "", + + // BlastParamThrow + // "BlastParamThrow.KnockBackParam.Accel": "", + // "BlastParamThrow.KnockBackParam.Bias": "", + // "BlastParamThrow.KnockBackParam.Distance": "", + // "BlastParamThrow.PaintOffsetY": "", + // "BlastParamThrow.PaintRadius": "", + // "BlastParamThrow.SplashAroundParam.Num": "", + // "BlastParamThrow.SplashAroundParam.PaintRadius": "", + // "BlastParamThrow.SplashAroundParam.PitchMax": "", + // "BlastParamThrow.SplashAroundParam.VelocityMax": "", + // "BlastParamThrow.SplashAroundParam.VelocityMin": "", + + // BodyParam + // "BodyParam.CollisionAttackFrontOffset": "", + // "BodyParam.CollisionDashFrontOffset": "", + // "BodyParam.CollisionDashRadiusForPlayer": "", + // "BodyParam.CollisionJumpRadiusForPlayer": "", + // "BodyParam.CollisionPaintAttackFrontOffset": "", + // "BodyParam.CollisionPaintDashFrontOffset": "", + // "BodyParam.CollisionPaintOffFrontOffset": "", + // "BodyParam.CollisionParam.DownRayCastLength": "", + // "BodyParam.CollisionParam.KnockBackOpponent.AccelMax": "", + // "BodyParam.CollisionParam.KnockBackOpponent.AccelMin": "", + // "BodyParam.CollisionParam.KnockBackOpponent.MyVelocityRate": "", + // "BodyParam.CollisionParam.KnockBackOpponent.OpponentVelocityRate": "", + // "BodyParam.CollisionParam.KnockBackRollerPlayerDamageOff.AccelMax": "", + // "BodyParam.CollisionParam.KnockBackRollerPlayerDamageOff.AccelMin": "", + // "BodyParam.CollisionParam.KnockBackRollerPlayerDamageOff.MyVelocityRate": "", + // "BodyParam.CollisionParam.KnockBackRollerPlayerDamageOff.OpponentVelocityRate": "", + // "BodyParam.CollisionParam.KnockBackRollerPlayerDamageOn.AccelMax": "", + // "BodyParam.CollisionParam.KnockBackRollerPlayerDamageOn.AccelMin": "", + // "BodyParam.CollisionParam.KnockBackRollerPlayerDamageOn.MyVelocityRate": "", + // "BodyParam.CollisionParam.KnockBackRollerPlayerDamageOn.OpponentVelocityRate": "", + // "BodyParam.CollisionParam.Radius": "", + // "BodyParam.CollisionParam.WidthHalf": "", + // "BodyParam.CollisionRadiusForField": "", + // "BodyParam.CollisionRadiusForPlayer": "", + // "BodyParam.CollisionUpperOffset": "", + // "BodyParam.Damage": "", + // "BodyParam.DamageJumpValue": "", + // "BodyParam.DefiladeUpperOffset": "", + // "BodyParam.DefiladeYMinusLength": "", + // "BodyParam.KnockBackChariotPlayer.AccelMax": "", + // "BodyParam.KnockBackChariotPlayer.AccelMin": "", + // "BodyParam.KnockBackChariotPlayer.MyVelocityRate": "", + // "BodyParam.KnockBackChariotPlayer.OpponentVelocityRate": "", + // "BodyParam.KnockBackOpponent.AccelMax": "", + // "BodyParam.KnockBackOpponent.AccelMin": "", + // "BodyParam.KnockBackOpponent.MyVelocityRate": "", + // "BodyParam.KnockBackOpponent.OpponentVelocityRate": "", + // "BodyParam.PaintCheckUpperOffset": "", + // "BodyParam.PaintDepthScale": "", + // "BodyParam.PaintParam.Depth": "", + // "BodyParam.PaintParam.SpeedMax": "", + // "BodyParam.PaintParam.SpeedMin": "", + // "BodyParam.PaintParam.WidthAddWallCut": "", + // "BodyParam.PaintParam.WidthHalfMax": "", + // "BodyParam.PaintParam.WidthHalfMin": "", + // "BodyParam.PaintSpanFrame": "", + // "BodyParam.PaintWidthHalf": "", + // "BodyParam.SideParam.CheckLength": "", + // "BodyParam.SideParam.Radius": "", + + // BulletAdditionMovePlayerSplashNearestParam + // "BulletAdditionMovePlayerSplashNearestParam.XRate": "", + // "BulletAdditionMovePlayerSplashNearestParam.YPlusRate": "", + // "BulletAdditionMovePlayerSplashNearestParam.ZRate": "", + + // BulletBlastParam + // "BulletBlastParam.DamageOffsetY": + // "", + // "BulletBlastParam.KnockBackParam.Accel": "", + // "BulletBlastParam.KnockBackParam.Bias": "", + // "BulletBlastParam.KnockBackParam.Distance": "", + // "BulletBlastParam.PaintRadius": "", + // "BulletBlastParam.PaintTexture": "", + // "BulletBlastParam.SplashAroundParam.Num": "", + // "BulletBlastParam.SplashAroundParam.OffsetY": "", + // "BulletBlastParam.SplashAroundParam.PaintRadius": "", + // "BulletBlastParam.SplashAroundParam.PitchMax": "", + // "BulletBlastParam.SplashAroundParam.VelocityMax": "", + // "BulletBlastParam.SplashAroundParam.VelocityMin": "", + + // BulletBombMoveParam + // "BulletBombMoveParam.FlyGravity": "", + // "BulletBombMoveParam.FlyPositionAirResist": "", + // "BulletBombMoveParam.GuideHitCollisionType": "", + // "BulletBombMoveParam.SpawnSpeedZSpecUp.High": "", + // "BulletBombMoveParam.SpawnSpeedZSpecUp.Low": "", + // "BulletBombMoveParam.SpawnSpeedZSpecUp.Mid": "", + + // BulletParam + // "BulletParam.CollisionRadiusForField": "", + // "BulletParam.CollisionRadiusForPlayer": "", + "BulletParam.DamageValue": "Damage dealt by a short range hit.", + // "BulletParam.HitPoint": "", + // "BulletParam.KnockBackLen": "", + // "BulletParam.KnockBackParam.Accel": "", + // "BulletParam.KnockBackParam.Bias": "", + // "BulletParam.KnockBackParam.Degree": "", + // "BulletParam.KnockBackParam.DirectionZeroAccelRate": "", + // "BulletParam.KnockBackParam.Distance": "", + // "BulletParam.MoveCollisionHeight": "", + // "BulletParam.MoveDistance": "", + // "BulletParam.MoveFrame": "", + // "BulletParam.PaintDepthScale": "", + // "BulletParam.PaintSpanFrame": "", + // "BulletParam.PaintWidthHalf": "", + "BulletParam.StartInvincibleFrame": + "Duration in frames for the ink fist to start dropping.", + // "BulletParam.SuperJumpWaitFrame0": "", + // "BulletParam.SuperJumpWaitFrame1": "", + // "BulletParam.WaitRiseFrame": "", + + // BulletSaberHorizontalParam + // "BulletSaberHorizontalParam.BurstParam.BurstFrame": "", + // "BulletSaberHorizontalParam.BurstParam.SplashColRadius": "", + // "BulletSaberHorizontalParam.BurstParam.SplashDrawRadius": "", + // "BulletSaberHorizontalParam.BurstParam.SplashPaintRadius": "", + // "BulletSaberHorizontalParam.CollisionParam.CoreIndex": "", + // "BulletSaberHorizontalParam.DamageParam.HitDamage": "", + // "BulletSaberHorizontalParam.MoveParam.BrakeAirResist": "", + // "BulletSaberHorizontalParam.MoveParam.BrakeGravity": "", + // "BulletSaberHorizontalParam.MoveParam.BrakeToFreeStateFrame": "", + // "BulletSaberHorizontalParam.MoveParam.BrakeToFreeVelocityXZ": "", + // "BulletSaberHorizontalParam.MoveParam.BrakeToFreeVelocityY": "", + // "BulletSaberHorizontalParam.MoveParam.FreeAirResist": "", + // "BulletSaberHorizontalParam.MoveParam.FreeGravity": "", + // "BulletSaberHorizontalParam.MoveParam.GoStraightToBrakeStateFrame": "", + // "BulletSaberHorizontalParam.MoveParam.SpawnSpeed": "", + // "BulletSaberHorizontalParam.PaintParam.DepthScaleMax": "", + // "BulletSaberHorizontalParam.PaintParam.DepthScaleMin": "", + // "BulletSaberHorizontalParam.PaintParam.PaintDegreeMax": "", + // "BulletSaberHorizontalParam.PaintParam.WidthHalf": "", + // "BulletSaberHorizontalParam.SplashPaintParam.DepthScaleMax": "", + // "BulletSaberHorizontalParam.SplashPaintParam.DepthScaleMin": "", + // "BulletSaberHorizontalParam.SplashPaintParam.WidthHalf": "", + // "BulletSaberHorizontalParam.SplashPaintParam.WidthHalfNearest": "", + // "BulletSaberHorizontalParam.SplashSpawnParam.DropInterval": "", + // "BulletSaberHorizontalParam.SplashSpawnParam.NearestLen": "", + // "BulletSaberHorizontalParam.SplashSpawnParam.RandomSpawnVelXMax": "", + // "BulletSaberHorizontalParam.SplashSpawnParam.RandomSpawnVelYMax": "", + // "BulletSaberHorizontalParam.SplashSpawnParam.RandomSpawnVelZMax": "", + // "BulletSaberHorizontalParam.SplashSpawnParam.RandomSpawnVelZMin": "", + // "BulletSaberHorizontalParam.SplashSpawnParam.SplashNumMax": "", + // "BulletSaberHorizontalParam.SplashSpawnParam.SplitNum": "", + // "BulletSaberHorizontalParam.WallDropMoveParam.FallPeriodFirstTargetSpeed": "", + // "BulletSaberHorizontalParam.WallDropMoveParam.FallPeriodSecondTargetSpeed": "", + // "BulletSaberHorizontalParam.WallDropPaintParam.PaintRadiusFall": "", + // "BulletSaberHorizontalParam.WallDropPaintParam.PaintRadiusGround": "", + // "BulletSaberHorizontalParam.WallDropPaintParam.PaintRadiusShock": "", + + // BulletSaberSlashHorizontalParam + // "BulletSaberSlashHorizontalParam.DamageParam.AccelForCastle": "", + // "BulletSaberSlashHorizontalParam.DamageParam.DamageValue": "", + // "BulletSaberSlashHorizontalParam.MoveParam.AliveFrame": "", + // "BulletSaberSlashHorizontalParam.ShapeParam.BoxCenter.X": "", + // "BulletSaberSlashHorizontalParam.ShapeParam.BoxCenter.Y": "", + // "BulletSaberSlashHorizontalParam.ShapeParam.BoxCenter.Z": "", + // "BulletSaberSlashHorizontalParam.ShapeParam.BoxHalfExtents.X": "", + // "BulletSaberSlashHorizontalParam.ShapeParam.BoxHalfExtents.Y": "", + // "BulletSaberSlashHorizontalParam.ShapeParam.BoxHalfExtents.Z": "", + // "BulletSaberSlashHorizontalParam.ShapeParam.CylinderCenterA.X": "", + // "BulletSaberSlashHorizontalParam.ShapeParam.CylinderCenterA.Y": "", + // "BulletSaberSlashHorizontalParam.ShapeParam.CylinderCenterA.Z": "", + // "BulletSaberSlashHorizontalParam.ShapeParam.CylinderCenterB.X": "", + // "BulletSaberSlashHorizontalParam.ShapeParam.CylinderCenterB.Y": "", + // "BulletSaberSlashHorizontalParam.ShapeParam.CylinderCenterB.Z": "", + // "BulletSaberSlashHorizontalParam.ShapeParam.CylinderRadius": "", + + // BulletSaberSlashVerticalParam + // "BulletSaberSlashVerticalParam.DamageParam.AccelForCastle": "", + // "BulletSaberSlashVerticalParam.DamageParam.DamageValue": "", + // "BulletSaberSlashVerticalParam.MoveParam.AliveFrame": "", + // "BulletSaberSlashVerticalParam.ShapeParam.BoxCenter.X": "", + // "BulletSaberSlashVerticalParam.ShapeParam.BoxCenter.Y": "", + // "BulletSaberSlashVerticalParam.ShapeParam.BoxCenter.Z": "", + // "BulletSaberSlashVerticalParam.ShapeParam.BoxHalfExtents.X": "", + // "BulletSaberSlashVerticalParam.ShapeParam.BoxHalfExtents.Y": "", + // "BulletSaberSlashVerticalParam.ShapeParam.BoxHalfExtents.Z": "", + // "BulletSaberSlashVerticalParam.ShapeParam.CylinderCenterA.X": "", + // "BulletSaberSlashVerticalParam.ShapeParam.CylinderCenterA.Y": "", + // "BulletSaberSlashVerticalParam.ShapeParam.CylinderCenterA.Z": "", + // "BulletSaberSlashVerticalParam.ShapeParam.CylinderCenterB.X": "", + // "BulletSaberSlashVerticalParam.ShapeParam.CylinderCenterB.Y": "", + // "BulletSaberSlashVerticalParam.ShapeParam.CylinderCenterB.Z": "", + // "BulletSaberSlashVerticalParam.ShapeParam.CylinderRadius": "", + + // BulletSaberVerticalParam + // "BulletSaberVerticalParam.BurstParam.BurstFrame": "", + // "BulletSaberVerticalParam.BurstParam.SplashColRadius": "", + // "BulletSaberVerticalParam.BurstParam.SplashDrawRadius": "", + // "BulletSaberVerticalParam.BurstParam.SplashPaintRadius": "", + // "BulletSaberVerticalParam.CollisionParam.CoreIndex": "", + // "BulletSaberVerticalParam.DamageParam.HitDamage": "", + // "BulletSaberVerticalParam.MoveParam.BrakeAirResist": "", + // "BulletSaberVerticalParam.MoveParam.BrakeGravity": "", + // "BulletSaberVerticalParam.MoveParam.BrakeToFreeStateFrame": "", + // "BulletSaberVerticalParam.MoveParam.BrakeToFreeVelocityXZ": "", + // "BulletSaberVerticalParam.MoveParam.BrakeToFreeVelocityY": "", + // "BulletSaberVerticalParam.MoveParam.FreeAirResist": "", + // "BulletSaberVerticalParam.MoveParam.FreeGravity": "", + // "BulletSaberVerticalParam.MoveParam.GoStraightStateEndMaxSpeed": "", + // "BulletSaberVerticalParam.MoveParam.GoStraightToBrakeStateFrame": "", + // "BulletSaberVerticalParam.MoveParam.SpawnSpeed": "", + // "BulletSaberVerticalParam.PaintParam.DepthScaleMax": "", + // "BulletSaberVerticalParam.PaintParam.DepthScaleMin": "", + // "BulletSaberVerticalParam.PaintParam.PaintDegreeMax": "", + // "BulletSaberVerticalParam.PaintParam.WidthHalf": "", + // "BulletSaberVerticalParam.SplashPaintParam.DepthScaleMax": "", + // "BulletSaberVerticalParam.SplashPaintParam.WidthHalf": "", + // "BulletSaberVerticalParam.SplashPaintParam.WidthHalfNearest": "", + // "BulletSaberVerticalParam.SplashSpawnParam.DropInterval": "", + // "BulletSaberVerticalParam.SplashSpawnParam.SplashNumMax": "", + // "BulletSaberVerticalParam.WallDropMoveParam.FallPeriodFirstTargetSpeed": "", + // "BulletSaberVerticalParam.WallDropMoveParam.FallPeriodSecondTargetSpeed": "", + // "BulletSaberVerticalParam.WallDropPaintParam.PaintRadiusFall": "", + // "BulletSaberVerticalParam.WallDropPaintParam.PaintRadiusGround": "", + // "BulletSaberVerticalParam.WallDropPaintParam.PaintRadiusShock": "", + + // CannonParam + // "CannonParam.BlastParam.CrossPaintCheckLength": "", + // "CannonParam.BlastParam.CrossPaintRadius": "", + // "CannonParam.BlastParam.DamageOffsetY": "", + // "CannonParam.BlastParam.KnockBackParam.Accel": "", + // "CannonParam.BlastParam.KnockBackParam.Bias": "", + // "CannonParam.BlastParam.KnockBackParam.Distance": "", + // "CannonParam.BlastParam.PaintOffsetY": "", + // "CannonParam.BlastParam.PaintRadius": "", + // "CannonParam.CollisionParam.ChangeFrameForField": "", + // "CannonParam.CollisionParam.ChangeFrameForPlayer": "", + // "CannonParam.CollisionParam.EndRadiusForField": "", + // "CannonParam.CollisionParam.EndRadiusForPlayer": "", + // "CannonParam.CollisionParam.FriendThroughFrameForPlayer": "", + // "CannonParam.CollisionParam.InitRadiusForField": "", + // "CannonParam.CollisionParam.InitRadiusForPlayer": "", + // "CannonParam.DirectDamage": "", + // "CannonParam.DrawSize": "", + // "CannonParam.MoveParam.BrakeAirResist": "", + // "CannonParam.MoveParam.BrakeGravity": "", + // "CannonParam.MoveParam.BrakeToFreeStateFrame": "", + // "CannonParam.MoveParam.BrakeToFreeVelocityXZ": "", + // "CannonParam.MoveParam.BrakeToFreeVelocityY": "", + // "CannonParam.MoveParam.FreeAirResist": "", + // "CannonParam.MoveParam.FreeGravity": "", + // "CannonParam.MoveParam.GoStraightToBrakeStateFrame": "", + // "CannonParam.SplashParam.DrawSizeCollisionPaintParam.CollisionParam.EndRadiusForField": "", + // "CannonParam.SplashParam.DrawSizeCollisionPaintParam.CollisionParam.EndRadiusForPlayer": "", + // "CannonParam.SplashParam.DrawSizeCollisionPaintParam.CollisionParam.InitRadiusForField": "", + // "CannonParam.SplashParam.DrawSizeCollisionPaintParam.CollisionParam.InitRadiusForPlayer": "", + // "CannonParam.SplashParam.DrawSizeCollisionPaintParam.DrawRadius": "", + // "CannonParam.SplashParam.DrawSizeCollisionPaintParam.PaintDepthScale": "", + // "CannonParam.SplashParam.DrawSizeCollisionPaintParam.PaintWidthHalf": "", + // "CannonParam.SplashParam.SpawnParam.SpawnBetweenLength": "", + // "CannonParam.SplashParam.SpawnParam.SpawnNum": "", + + // CloudParam + // "CloudParam.DamageRadius": "", + // "CloudParam.NoPaintRainNum": "", + // "CloudParam.RainNum": "", + // "CloudParam.RainyFrame.High": "", + // "CloudParam.RainyFrame.Low": "", + // "CloudParam.RainyFrame.Mid": "", + // "CloudParam.WithNoPaintRainNum": "", + + // CollisionLapOverParam + // "CollisionLapOverParam.ChangeFrameForField": "", + // "CollisionLapOverParam.ChangeFrameForPlayer": "", + // "CollisionLapOverParam.EndRadiusForField": "", + // "CollisionLapOverParam.EndRadiusForPlayer": "", + // "CollisionLapOverParam.FriendThroughFrameForPlayer": "", + // "CollisionLapOverParam.InitRadiusForField": "", + // "CollisionLapOverParam.InitRadiusForPlayer": "", + + // CollisionParam + // "CollisionParam.ChangeFrameForField": "", + // "CollisionParam.ChangeFrameForPlayer": "", + // "CollisionParam.EndRadiusForField": "", + // "CollisionParam.EndRadiusForPlayer": "", + // "CollisionParam.FriendThroughFrameForPlayer": "", + // "CollisionParam.InitRadiusForField": "", + // "CollisionParam.InitRadiusForPlayer": "", + + // DamageJumpParam + // "DamageJumpParam.ReduceEndFrame": "", + // "DamageJumpParam.ReduceStartFrame": "", + // "DamageJumpParam.ValueMax": "", + // "DamageJumpParam.ValueMin": "", + + // DamageLapOverParam + "DamageLapOverParam.ReduceEndFrame": + "Frame by which damage has fully reduced to its minimum value.", + // "DamageLapOverParam.ReduceStartFrame": "", + // "DamageLapOverParam.ValueMax": "", + // "DamageLapOverParam.ValueMin": "", + + // DamageParam + // "DamageParam.DirectHitDamage": "", + "DamageParam.ReduceEndFrame": + "Frame by which damage has fully reduced to its minimum value.", + "DamageParam.ReduceStartFrame": + "Frame at which damage begins reducing from its maximum toward its minimum value.", + "DamageParam.ValueFullCharge": "Direct-hit damage at full charge.", + // "DamageParam.ValueFullChargeMax": "", + "DamageParam.ValueMax": "Maximum direct-hit damage.", + "DamageParam.ValueMaxCharge": "Direct-hit damage at maximum charge.", + "DamageParam.ValueMin": + "Minimum direct-hit damage after full damage falloff at range.", + // "DamageParam.ValueMinCharge": "", + + // ExhaleBlastParamMaxCharge + // "ExhaleBlastParamMaxCharge.CrossPaintCheckLength": "", + // "ExhaleBlastParamMaxCharge.CrossPaintRadius": "", + // "ExhaleBlastParamMaxCharge.DamageOffsetY": "", + // "ExhaleBlastParamMaxCharge.KnockBackParam.Accel": "", + // "ExhaleBlastParamMaxCharge.KnockBackParam.Bias": "", + // "ExhaleBlastParamMaxCharge.KnockBackParam.Distance": "", + // "ExhaleBlastParamMaxCharge.PaintOffsetY": "", + // "ExhaleBlastParamMaxCharge.PaintRadius": "", + + // ExhaleBlastParamMinCharge + // "ExhaleBlastParamMinCharge.CrossPaintCheckLength": "", + // "ExhaleBlastParamMinCharge.CrossPaintRadius": "", + // "ExhaleBlastParamMinCharge.DamageOffsetY": "", + // "ExhaleBlastParamMinCharge.KnockBackParam.Accel": "", + // "ExhaleBlastParamMinCharge.KnockBackParam.Bias": "", + // "ExhaleBlastParamMinCharge.KnockBackParam.DirectionZeroAccelRate": "", + // "ExhaleBlastParamMinCharge.KnockBackParam.Distance": "", + // "ExhaleBlastParamMinCharge.PaintOffsetY": "", + // "ExhaleBlastParamMinCharge.PaintRadius": "", + + // ExhaleCollisionParam + // "ExhaleCollisionParam.RadiusForPlayerMinCharge": "", + + // ExhaleParam + // "ExhaleParam.DirectAccel": "", + // "ExhaleParam.DirectDamage": "", + // "ExhaleParam.FlyGravity": "", + // "ExhaleParam.FlyPositionAirResist": "", + // "ExhaleParam.GuideHitCollisionType": "", + // "ExhaleParam.GuideRadius": "", + // "ExhaleParam.PaintRadiusMaxCharge": "", + // "ExhaleParam.PaintRadiusMinCharge": "", + // "ExhaleParam.SpawnBlastWaitFrame": "", + // "ExhaleParam.SpawnSpeedY": "", + // "ExhaleParam.SpawnSpeedYMaxCharge": "", + // "ExhaleParam.SpawnSpeedZMaxCharge": "", + // "ExhaleParam.SpawnSpeedZSpecUp.High": "", + // "ExhaleParam.SpawnSpeedZSpecUp.Low": "", + // "ExhaleParam.SpawnSpeedZSpecUp.Mid": "", + + // FootSplashParam + // "FootSplashParam.PaintRadius": "", + + // FridgeParam + "FridgeParam.PowerUpFrame": "Duration in frames of the drink's buff.", + // "FridgeParam.PutFrame": "", + // "FridgeParam.PutFrameOnYagura": "", + // "FridgeParam.ServeAreaHeightDown": "", + // "FridgeParam.ServeAreaHeightUp": "", + "FridgeParam.ServeAreaRadius": + "Horizontal radius of the area around a placed Tacticooler where teammates can drink to gain its buffs. Higher means a larger area to drink in.", + // "FridgeParam.VanishDistance": "", + + // HookBlastParam + // "HookBlastParam.CrossPaintCheckLength": "", + // "HookBlastParam.CrossPaintRadius": "", + // "HookBlastParam.KnockBackParam.Accel": "", + // "HookBlastParam.KnockBackParam.Bias": "", + // "HookBlastParam.KnockBackParam.Distance": "", + + // HookCollisionParam + // "HookCollisionParam.EndRadiusForField": "", + // "HookCollisionParam.EndRadiusForPlayer": "", + // "HookCollisionParam.InitRadiusForField": "", + // "HookCollisionParam.InitRadiusForPlayer": "", + + // IceParam + // "IceParam.BlastParam.CrossPaintCheckLength": "", + // "IceParam.BlastParam.CrossPaintRadius": "", + // "IceParam.BlastParam.DamageOffsetY": "", + // "IceParam.BlastParam.KnockBackParam.Accel": "", + // "IceParam.BlastParam.KnockBackParam.Bias": "", + // "IceParam.BlastParam.KnockBackParam.Distance": "", + // "IceParam.BlastParam.PaintHeight": "", + // "IceParam.BlastParam.PaintOffsetY": "", + // "IceParam.BlastParam.PaintRadius": "", + // "IceParam.BlastParam.SplashAroundParam.PaintRadius": "", + // "IceParam.BlastParam.SplashAroundParam.PitchMax": "", + // "IceParam.BlastParam.SplashAroundParam.VelocityMax": "", + "IceParam.BurstFrame": + "Time in frames from spawning until this detonates or activates.", + // "IceParam.CollisionRadius": "", + // "IceParam.FlyingFrame": "", + // "IceParam.GroundOffsetY": "", + // "IceParam.HitPoint": "", + // "IceParam.InitialScale": "", + // "IceParam.PaintRadius": "", + // "IceParam.RotateDegRatePerFrame": "", + // "IceParam.ScaleResetFrame": "", + // "IceParam.SpawnRotateDegMax": "", + // "IceParam.SpawnRotateDegMin": "", + // "IceParam.WarningAnimRestFrame": "", + // "IceParam.WarningSERestFrame": "", + + // InhaleParam + // "InhaleParam.CollisionAccelRateNearest": "", + // "InhaleParam.CollisionAccelRatePerDist": "", + // "InhaleParam.CollisionAirResist": "", + // "InhaleParam.CollisionAirResistMaxNum": "", + // "InhaleParam.CollisionAirResistNum0": "", + // "InhaleParam.DamagePerFrameByObject": "", + // "InhaleParam.EffectRingSpanFrame": "", + // "InhaleParam.EffectRingSpeed.Data": "", + // "InhaleParam.EffectRingSpeed.MaxX": "", + // "InhaleParam.EffectRingSpeed.Type": "", + // "InhaleParam.EffectScalePerCollision.Data": "", + // "InhaleParam.EffectScalePerCollision.MaxX": "", + // "InhaleParam.EffectScalePerCollision.Type": "", + // "InhaleParam.EffectSpanForGeyser": "", + // "InhaleParam.EffectSpeed": "", + // "InhaleParam.LengthAddPerFrame": "", + // "InhaleParam.LengthMax": "", + // "InhaleParam.MuzzleCollisionOffset": "", + // "InhaleParam.MuzzleCollisionRadius": "", + // "InhaleParam.PaintSplashParam.DepthMaxDropHeight": "", + // "InhaleParam.PaintSplashParam.DepthMinDropHeight": "", + // "InhaleParam.PaintSplashParam.DepthScaleMax": "", + // "InhaleParam.PaintSplashParam.DepthScaleMin": "", + // "InhaleParam.PaintSplashParam.WidthHalf": "", + // "InhaleParam.PaintSplashParam.WidthHalfNearest": "", + // "InhaleParam.PaintSplashSpanFrame": "", + // "InhaleParam.PaintSplashSpawnOffset.X": "", + // "InhaleParam.PaintSplashSpawnOffset.Y": "", + // "InhaleParam.PaintSplashSpawnOffset.Z": "", + // "InhaleParam.PoisonMistForPlayer.EffectFrame": "", + // "InhaleParam.PoisonMistForPlayer.SideStepInkConsumeRate": "", + "InhaleParam.RadiusMax": "Maximum inhale radius.", + // "InhaleParam.RadiusMin.High": "", + // "InhaleParam.RadiusMin.Low": "", + // "InhaleParam.RadiusMin.Mid": "", + // "InhaleParam.ReceiveDamageForGeyser": "", + // "InhaleParam.ReceiveDamageForPlayer": "", + + // KnockBackByCanopyParam + // "KnockBackByCanopyParam.KnockBackRollerPlayerDamageOff.AccelMax": "", + // "KnockBackByCanopyParam.KnockBackRollerPlayerDamageOff.AccelMin": "", + // "KnockBackByCanopyParam.KnockBackRollerPlayerDamageOff.MyVelocityRate": "", + // "KnockBackByCanopyParam.KnockBackRollerPlayerDamageOff.OpponentVelocityRate": "", + // "KnockBackByCanopyParam.KnockBackRollerPlayerDamageOn.AccelMax": "", + // "KnockBackByCanopyParam.KnockBackRollerPlayerDamageOn.AccelMin": "", + // "KnockBackByCanopyParam.KnockBackRollerPlayerDamageOn.MyVelocityRate": "", + // "KnockBackByCanopyParam.KnockBackRollerPlayerDamageOn.OpponentVelocityRate": "", + + // LauncherCollisionParam + // "LauncherCollisionParam.ChangeFrameForField": "", + // "LauncherCollisionParam.ChangeFrameForPlayer": "", + // "LauncherCollisionParam.EndRadiusForField": "", + // "LauncherCollisionParam.EndRadiusForPlayer": "", + // "LauncherCollisionParam.FriendThroughFrameForPlayer": "", + // "LauncherCollisionParam.InitRadiusForField": "", + // "LauncherCollisionParam.InitRadiusForPlayer": "", + + // MainEffectiveRangeUpParam + // "MainEffectiveRangeUpParam.BaseDistance": "", + // "MainEffectiveRangeUpParam.High": "", + // "MainEffectiveRangeUpParam.Mid": "", + + // MainWeaponSetting + // "MainWeaponSetting.Overwrite_ConsumeRt_Main_High": "", + // "MainWeaponSetting.Overwrite_ConsumeRt_Main_Low": "", + // "MainWeaponSetting.Overwrite_ConsumeRt_Main_Mid": "", + // "MainWeaponSetting.Overwrite_MoveVelRt_Shot_High": "", + // "MainWeaponSetting.Overwrite_MoveVelRt_Shot_Low": "", + // "MainWeaponSetting.Overwrite_MoveVelRt_Shot_Mid": "", + // "MainWeaponSetting.WeaponAccType": "", + // "MainWeaponSetting.WeaponSpeedType": "", + + // MissileParam + // "MissileParam.XZBias": "", + + // MotherParam + // "MotherParam.TargetHeight": "", + + // MoveJumpParam + // "MoveJumpParam.GoStraightStateEndMaxSpeed": "", + // "MoveJumpParam.GoStraightToBrakeStateFrame": "", + // "MoveJumpParam.SpawnSpeed": "", + + // MoveLapOverParam + "MoveLapOverParam.GoStraightStateEndMaxSpeed": + "Speed the projectile settles to after its initial fast phase, which affects its effective range.", + "MoveLapOverParam.GoStraightToBrakeStateFrame": + "Time in frames the projectile travels at full speed before it begins to slow down.", + "MoveLapOverParam.SpawnSpeed": + "Initial travel speed of the projectile the moment it is fired.", + + // MoveParam + // "MoveParam.BaseSpeedComeOverRate": "", + // "MoveParam.BaseSpeedComeUnderRate": "", + // "MoveParam.BaseSpeedMinCharge": "", + // "MoveParam.BeforeRotateFrame": "", + // "MoveParam.BetweenRotEndAndStartChaseFrame": "", + // "MoveParam.BrakeAirResist": "", + // "MoveParam.BrakeGravity": "", + // "MoveParam.BrakeToFreeStateFrame": "", + // "MoveParam.BrakeToFreeVelocityXZ": "", + // "MoveParam.BrakeToFreeVelocityY": "", + // "MoveParam.BurstFrame": "", + // "MoveParam.BurstSeFrameArray": "", + // "MoveParam.BurstTimingSpeedStartRestFrame": "", + // "MoveParam.BurstTimingSpeedStopBias": "", + // "MoveParam.BurstWaitFrameArray": "", + // "MoveParam.BurstWarnFrameArray": "", + // "MoveParam.CanPlaceBoundDegree": "", + // "MoveParam.CanPlaceBoundVel": "", + // "MoveParam.CanPlaceCheckLength1": "", + // "MoveParam.CanPlaceCheckLength2": "", + // "MoveParam.CanPlaceHeight": "", + // "MoveParam.ChargeFrameArray": "", + // "MoveParam.ChaseAirAddSpeedXZPerFrame": "", + // "MoveParam.ChaseAirMaxSpeedXZ": "", + // "MoveParam.ChaseAirMaxSpeedY": "", + // "MoveParam.ChaseBurstWaitFrame": "", + // "MoveParam.ChaseFrame": "", + // "MoveParam.ChaseGroundAddSpeedPerFrame": "", + // "MoveParam.ChaseGroundMaxSpeed": "", + // "MoveParam.ChasePitchDegree": "", + // "MoveParam.ChaseRollDegree": "", + // "MoveParam.ChaseYawDegree": "", + // "MoveParam.CollisionRadius": "", + // "MoveParam.CollisionSeSilentFrame": "", + // "MoveParam.CollisionSESpanFrame": "", + // "MoveParam.CollisionSeVelDotGndNrm": "", + // "MoveParam.CollisionSEVelDotGroundNrm": "", + // "MoveParam.ContactDashPanel.AddSpeedPerImpact": "", + // "MoveParam.ContactDashPanel.AddSpeedSequenceFrameRate": "", + // "MoveParam.ContactDashPanel.CrossSaveSpeedRate": "", + // "MoveParam.ContactDashPanel.ImpactDirectionSaveSpeedRate": "", + // "MoveParam.ContactJumpPanel.AddSpeedOneBoundRate": "", + // "MoveParam.ContactJumpPanel.AddSpeedPerImpact": "", + // "MoveParam.ContactJumpPanel.MaxBoundNum": "", + // "MoveParam.DamageDirectHit": "", + // "MoveParam.DamageDirectSpanSecond": "", + // "MoveParam.DamageSpanFrame": "", + // "MoveParam.DamageValueForDamageTag": "", + // "MoveParam.DeathTargetApprouchDistance": "", + "MoveParam.DirectDamage": "Damage dealt by a direct hit.", + // "MoveParam.Distance": "", + // "MoveParam.DistanceFullCharge": "", + // "MoveParam.DistanceMaxCharge": "", + // "MoveParam.DistanceMinCharge": "", + // "MoveParam.FindApproachBurstWaitFrame": "", + // "MoveParam.FindCollisionStartRadiusRate": "", + // "MoveParam.FindRotateFrame": "", + // "MoveParam.FindSpawnSplashAroundParam.Num": "", + // "MoveParam.FindSpawnSplashAroundParam.PaintRadius": "", + // "MoveParam.FindSpawnSplashAroundParam.PitchMax": "", + // "MoveParam.FindSpawnSplashAroundParam.PitchMin": "", + // "MoveParam.FindSpawnSplashAroundParam.VelocityMax": "", + // "MoveParam.FindSpawnSplashAroundParam.VelocityMin": "", + // "MoveParam.FlyGravity": "", + // "MoveParam.FlyHitDeg50WallReboundMaxRt": "", + // "MoveParam.FlyHitVerticalWallReboundMaxRt": "", + // "MoveParam.FlyHitWallPitchToPlane": "", + // "MoveParam.FlyHitWallReboundResetFrame": "", + // "MoveParam.FlyingFrame": "", + // "MoveParam.FlyPositionAirResist": "", + // "MoveParam.FlyRotateAirResist": "", + // "MoveParam.FlySplashDistanceArray": "", + // "MoveParam.FlySplashPaintRadiusArray": "", + // "MoveParam.FreeAirResist": "", + // "MoveParam.FreeGravity": "", + "MoveParam.GoStraightStateEndMaxSpeed": + "Speed a shot settles to after its initial fast phase, which affects its effective range.", + "MoveParam.GoStraightToBrakeStateFrame": + "Time in frames the projectile travels at full speed before it begins to slow down.", + // "MoveParam.GroundGravity": "", + // "MoveParam.GroundPositionAirResist": "", + // "MoveParam.GroundPositionDeg50AirResist": "", + // "MoveParam.GroundPositionHorizonAirResist": "", + // "MoveParam.GroundRotateDeg50AirResist": "", + // "MoveParam.GroundRotateHorizonAirResist": "", + // "MoveParam.GuideHitCollisionType": "", + // "MoveParam.GuideRadius": "", + // "MoveParam.HitPaintRadius": "", + // "MoveParam.HitVerticalWallReboundMaxRate": "", + // "MoveParam.HopPitchH": "", + // "MoveParam.HopPitchL": "", + // "MoveParam.HopVelH": "", + // "MoveParam.HopVelL": "", + // "MoveParam.KnockBackParam.Accel": "", + // "MoveParam.KnockBackParam.Bias": "", + // "MoveParam.KnockBackParam.Degree": "", + // "MoveParam.KnockBackParam.Distance": "", + // "MoveParam.MarkingFrame.High": "", + // "MoveParam.MarkingFrame.Low": "", + // "MoveParam.MarkingFrame.Mid": "", + // "MoveParam.MarkingFrameSubSpec.High": "", + // "MoveParam.MarkingFrameSubSpec.Low": "", + // "MoveParam.MarkingFrameSubSpec.Mid": "", + // "MoveParam.MaxHP.High": "", + // "MoveParam.MaxHP.Low": "", + // "MoveParam.MaxHP.Mid": "", + // "MoveParam.MaxPlaceNum": "", + // "MoveParam.ModelRotateHitWall45Degree": "", + // "MoveParam.ModelRotateReduceDegree": "", + // "MoveParam.NoReceiveTargetBurstWaitFrame": "", + // "MoveParam.ObjColDamage": "", + // "MoveParam.PaintBurstRadiusBias": "", + // "MoveParam.PaintCheckHeight": "", + // "MoveParam.PaintRadius": "", + // "MoveParam.PaintRadiusBias": "", + // "MoveParam.PaintRadiusMaxCharge": "", + // "MoveParam.PaintRadiusMinCharge": "", + "MoveParam.PeriodFirst": + "How long the sprinkler stays in its fast-output phase, in frames.", + // "MoveParam.PeriodSecond.High": "", + // "MoveParam.PeriodSecond.Low": "", + // "MoveParam.PeriodSecond.Mid": "", + // "MoveParam.PlacePaintRadius": "", + // "MoveParam.ReboundGroundBoundRate": "", + // "MoveParam.ReboundGroundReflectAngleRate": "", + // "MoveParam.ReboundWallBoundRate": "", + // "MoveParam.ReboundWallReflectAngleRate": "", + // "MoveParam.SensorRadius.High": "", + // "MoveParam.SensorRadius.Low": "", + // "MoveParam.SensorRadius.Mid": "", + // "MoveParam.SpawnRotatePitch": "", + // "MoveParam.SpawnRotateRoll": "", + "MoveParam.SpawnSpeed": + "Initial travel speed of a shot the moment it is fired.", + // "MoveParam.SpawnSpeedFirstLastAndSecond": "", + // "MoveParam.SpawnSpeedFullCharge": "", + // "MoveParam.SpawnSpeedMaxCharge": "", + // "MoveParam.SpawnSpeedMinCharge": "", + // "MoveParam.SpawnSpeedRandomBias": "", + // "MoveParam.SpawnSpeedRandomRate": "", + // "MoveParam.SpawnSpeedY": "", + // "MoveParam.SpawnSpeedYMaxCharge": "", + // "MoveParam.SpawnSpeedYWorldMin": "", + // "MoveParam.SpawnSpeedZMaxCharge": "", + "MoveParam.SpawnSpeedZSpecUp": "Forward launch speed (throw distance).", + // "MoveParam.SpoutInkDrawRadius": "", + // "MoveParam.SpoutInkPaintRadiusMaxHeight": "", + // "MoveParam.SpoutInkPaintRadiusMaxRate": "", + // "MoveParam.SpoutInkPaintRadiusMinHeight": "", + // "MoveParam.SpoutInkPaintRadiusMinRate": "", + // "MoveParam.TailDamage": "", + // "MoveParam.TailFrame": "", + // "MoveParam.UnfindBurstWaitFrame": "", + // "MoveParam.WarningAnimRestFrame": "", + // "MoveParam.WarningSERestFrame": "", + + // NearestParam + // "NearestParam.DrawSizeCollisionPaintParam.CollisionParam.EndRadiusForPlayer": "", + // "NearestParam.DrawSizeCollisionPaintParam.CollisionParam.InitRadiusForPlayer": "", + // "NearestParam.DrawSizeCollisionPaintParam.PaintDepthScale": "", + // "NearestParam.DrawSizeCollisionPaintParam.PaintWidthHalf": "", + // "NearestParam.SpawnOffset.X": "", + // "NearestParam.SpawnOffset.Y": "", + + // PaintParam + // "PaintParam.DegreeUseDepthScaleMin": "", + // "PaintParam.DepthScaleMax": "", + // "PaintParam.DepthScaleMaxBreakFree": "", + // "PaintParam.DepthScaleMin": "", + // "PaintParam.DepthScaleMinBreakFree": "", + // "PaintParam.DistanceFar": "", + // "PaintParam.DistanceMiddle": "", + // "PaintParam.DistanceNear": "", + // "PaintParam.HeightUseDepthScaleMaxBreakFree": "", + // "PaintParam.HeightUseDepthScaleMinBreakFree": "", + // "PaintParam.RadiusFullCharge": "", + // "PaintParam.RadiusMaxCharge": "", + // "PaintParam.RadiusMinCharge": "", + // "PaintParam.WidthHalfFar": "", + // "PaintParam.WidthHalfMiddle": "", + // "PaintParam.WidthHalfNear": "", + + // PipeParam + // "PipeParam.DepthRadius": "", + // "PipeParam.MinBetweenDistance": "", + // "PipeParam.TargetCenterBias": "", + + // RainParam + // "RainParam.CollisionParam.EndRadiusForField": "", + // "RainParam.CollisionParam.EndRadiusForPlayer": "", + // "RainParam.CollisionParam.InitRadiusForField": "", + // "RainParam.CollisionParam.InitRadiusForPlayer": "", + // "RainParam.MoveParam.BrakeAirResist": "", + // "RainParam.MoveParam.BrakeGravity": "", + // "RainParam.MoveParam.BrakeToFreeStateFrame": "", + // "RainParam.MoveParam.BrakeToFreeVelocityXZ": "", + // "RainParam.MoveParam.BrakeToFreeVelocityY": "", + // "RainParam.MoveParam.FreeAirResist": "", + // "RainParam.MoveParam.FreeGravity": "", + // "RainParam.MoveParam.GoStraightStateEndMaxSpeed": "", + // "RainParam.MoveParam.GoStraightToBrakeStateFrame": "", + // "RainParam.MoveParam.SpawnSpeed": "", + + // ShooterCollisionParam + // "ShooterCollisionParam.ChangeFrameForField": "", + // "ShooterCollisionParam.EndRadiusForField": "", + // "ShooterCollisionParam.EndRadiusForPlayer": "", + // "ShooterCollisionParam.FriendThroughFrameForPlayer": "", + // "ShooterCollisionParam.InitRadiusForField": "", + // "ShooterCollisionParam.InitRadiusForPlayer": "", + + // ShooterDamageParam + // "ShooterDamageParam.ReduceEndFrame": "", + // "ShooterDamageParam.ReduceStartFrame": "", + // "ShooterDamageParam.ValueMax": "", + // "ShooterDamageParam.ValueMin": "", + + // ShooterMoveParam + // "ShooterMoveParam.FreeGravity": "", + // "ShooterMoveParam.GoStraightStateEndMaxSpeed": "", + // "ShooterMoveParam.GoStraightToBrakeStateFrame": "", + // "ShooterMoveParam.SpawnSpeed": "", + + // ShooterPaintParam + // "ShooterPaintParam.DistanceMiddle": "", + // "ShooterPaintParam.WidthHalfFar": "", + // "ShooterPaintParam.WidthHalfMiddle": "", + // "ShooterPaintParam.WidthHalfNear": "", + + // ShooterSplashPaintParam + // "ShooterSplashPaintParam.DepthMaxDropHeight": "", + // "ShooterSplashPaintParam.DepthMinDropHeight": "", + // "ShooterSplashPaintParam.WidthHalf": "", + // "ShooterSplashPaintParam.WidthHalfNearest": "", + + // ShooterSplashSpawnParam + // "ShooterSplashSpawnParam.SpawnBetweenLength": "", + // "ShooterSplashSpawnParam.SpawnNearestLength": "", + // "ShooterSplashSpawnParam.SpawnNum": "", + // "ShooterSplashSpawnParam.SplitNum": "", + + // ShooterWallDropCollisionPaintParam + // "ShooterWallDropCollisionPaintParam.PaintRadiusFall": "", + // "ShooterWallDropCollisionPaintParam.PaintRadiusGround": "", + // "ShooterWallDropCollisionPaintParam.PaintRadiusShock": "", + + // ShooterWallDropMoveParam + // "ShooterWallDropMoveParam.FallPeriodFirstFrameMax": "", + // "ShooterWallDropMoveParam.FallPeriodFirstFrameMin": "", + // "ShooterWallDropMoveParam.FallPeriodFirstTargetSpeed": "", + // "ShooterWallDropMoveParam.FallPeriodLastFrameMax": "", + // "ShooterWallDropMoveParam.FallPeriodLastFrameMin": "", + // "ShooterWallDropMoveParam.FallPeriodSecondFrame": "", + // "ShooterWallDropMoveParam.FallPeriodSecondTargetSpeed": "", + // "ShooterWallDropMoveParam.FreeGravityType": "", + + // SideStepParam + // "SideStepParam.ChargeFrame": "", + "SideStepParam.InkConsume": + "Ink used by a single Dodge Roll, as a fraction of the ink tank.", + // "SideStepParam.InkRecoverStop": "", + // "SideStepParam.MoveDist": "", + // "SideStepParam.MoveFrame": "", + // "SideStepParam.MoveStepKd_Air": "", + // "SideStepParam.RepeatCnt": "", + // "SideStepParam.SlipMoveDistAir": "", + // "SideStepParam.SlipMoveDistGnd": "", + // "SideStepParam.SlipMoveFrame": "", + // "SideStepParam.SplashSlideParam.MoveLength": "", + // "SideStepParam.SplashSlideParam.PaintWidthHalf": "", + // "SideStepParam.UnrelaxFrameMove": "", + // "SideStepParam.UnrelaxFrameMove_Last": "", + // "SideStepParam.UnrelaxFrameNoSideStep": "", + // "SideStepParam.UnrelaxFrameNoSideStep_Last": "", + // "SideStepParam.UnrelaxFrameNoSquid": "", + // "SideStepParam.UnrelaxFrameNoSquid_Last": "", + // "SideStepParam.UnrelaxFrameNoWeapon": "", + // "SideStepParam.UnrelaxFrameNoWeapon_Last": "", + // "SideStepParam.UnrelaxFrameOneMuzzle": "", + // "SideStepParam.UnrelaxFrameOneMuzzle_Last": "", + + // spl__BulletBlastParam + // "spl__BulletBlastParam.CrossPaintCheckLength": "", + // "spl__BulletBlastParam.DamageOffsetY": "", + // "spl__BulletBlastParam.KnockBackParam.Accel": "", + // "spl__BulletBlastParam.KnockBackParam.Bias": "", + // "spl__BulletBlastParam.KnockBackParam.Distance": "", + // "spl__BulletBlastParam.PaintOffsetY": "", + // "spl__BulletBlastParam.PaintRadius": "", + + // spl__BulletInformImpactControlForGeyserParam + // "spl__BulletInformImpactControlForGeyserParam.AddSpeedPerImpact": "", + + // spl__BulletShelterCanopyParam + // "spl__BulletShelterCanopyParam.CanopyAttackedDamageRate": "", + // "spl__BulletShelterCanopyParam.CanopyColRadius": "", + // "spl__BulletShelterCanopyParam.CanopyCureHPPerFrame": "", + // "spl__BulletShelterCanopyParam.CanopyDamage": "", + // "spl__BulletShelterCanopyParam.CanopyFrame": "", + // "spl__BulletShelterCanopyParam.CanopyGravity": "", + // "spl__BulletShelterCanopyParam.CanopyHitOtherCanopyDamage": "", + // "spl__BulletShelterCanopyParam.CanopyHitOtherCanopyVolume": "", + // "spl__BulletShelterCanopyParam.CanopyHitShieldAttackDamage": "", + // "spl__BulletShelterCanopyParam.CanopyHitShieldReceiveDamage": "", + "spl__BulletShelterCanopyParam.CanopyHP": + "Hit points of the Brella's canopy. Different weapons deal different damage multipliers against it, so check the Object Damage Calculator to see how fast a given weapon breaks it.", + // "spl__BulletShelterCanopyParam.CanopyInitSpeed": "", + // "spl__BulletShelterCanopyParam.CanopyMoveKnockBackSideStepRate": "", + "spl__BulletShelterCanopyParam.CanopyNakedFrame": + "Time in frames for a broken canopy to recover.", + // "spl__BulletShelterCanopyParam.CanopyPaintRadius": "", + // "spl__BulletShelterCanopyParam.CanopySpeedAirAddScaleXZ": "", + // "spl__BulletShelterCanopyParam.CanopySpeedGroundAddScale": "", + // "spl__BulletShelterCanopyParam.FootSplashPaintRadius": "", + // "spl__BulletShelterCanopyParam.FootSplashShapeCastOffset": "", + // "spl__BulletShelterCanopyParam.FootSplashSpanFrame": "", + // "spl__BulletShelterCanopyParam.FootSplashWaitFrame": "", + + // spl__BulletShelterShotgunParam + // "spl__BulletShelterShotgunParam.DamageEffectiveTotalMax": "", + // "spl__BulletShelterShotgunParam.ShotgunWallDropMoveParam.FallPeriodFirstFrameMax": "", + // "spl__BulletShelterShotgunParam.ShotgunWallDropMoveParam.FallPeriodFirstFrameMin": "", + // "spl__BulletShelterShotgunParam.ShotgunWallDropMoveParam.FallPeriodFirstTargetSpeed": "", + // "spl__BulletShelterShotgunParam.ShotgunWallDropMoveParam.FallPeriodLastFrameMax": "", + // "spl__BulletShelterShotgunParam.ShotgunWallDropMoveParam.FallPeriodLastFrameMin": "", + // "spl__BulletShelterShotgunParam.SplashParam.CreateSplashLength": "", + // "spl__BulletShelterShotgunParam.SplashParam.CreateSplashNum": "", + // "spl__BulletShelterShotgunParam.SplashParam.RandomSpawnVelXMax": "", + // "spl__BulletShelterShotgunParam.SplashParam.RandomSpawnVelZMax": "", + // "spl__BulletShelterShotgunParam.SplashParam.RandomSpawnVelZMin": "", + // "spl__BulletShelterShotgunParam.SplashParam.SplashPaintDepthScaleFullActive": "", + // "spl__BulletShelterShotgunParam.SplashParam.SplashPaintDepthScaleOneActive": "", + // "spl__BulletShelterShotgunParam.SplashParam.SplashPaintWidthFullActive": "", + // "spl__BulletShelterShotgunParam.SplashParam.SplashPaintWidthOneActive": "", + // "spl__BulletShelterShotgunParam.SplashWallDropCollisionParam.PaintRadiusFall": "", + // "spl__BulletShelterShotgunParam.SplashWallDropCollisionParam.PaintRadiusGround": "", + // "spl__BulletShelterShotgunParam.SplashWallDropCollisionParam.PaintRadiusShock": "", + // "spl__BulletShelterShotgunParam.SplashWallDropMoveParam.FallPeriodFirstFrameMax": "", + // "spl__BulletShelterShotgunParam.SplashWallDropMoveParam.FallPeriodFirstTargetSpeed": "", + // "spl__BulletShelterShotgunParam.SplashWallDropMoveParam.FallPeriodLastFrameMax": "", + // "spl__BulletShelterShotgunParam.SplashWallDropMoveParam.FallPeriodLastFrameMin": "", + // "spl__BulletShelterShotgunParam.SplashWallDropMoveParam.FallPeriodSecondFrame": "", + // "spl__BulletShelterShotgunParam.SplashWallDropMoveParam.FallPeriodSecondTargetSpeed": "", + + // spl__BulletShooterTailLengthParam + // "spl__BulletShooterTailLengthParam.DelayShotFrame": "", + // "spl__BulletShooterTailLengthParam.EndMaxLength": "", + // "spl__BulletShooterTailLengthParam.MaxLengthFrame": "", + + // spl__BulletSpGreatBarrierMoveParam + // "spl__BulletSpGreatBarrierMoveParam.BarrierParam.CanopyKnockBack": "", + "spl__BulletSpGreatBarrierMoveParam.BarrierParam.DamgeRatio": + "Multiplier applied to damage taken by the inner device and top section the barrier.", + "spl__BulletSpGreatBarrierMoveParam.BarrierParam.MaxFieldHP": + "Total hit points of the deployed field.", + "spl__BulletSpGreatBarrierMoveParam.BarrierParam.MaxHP": "Hit points.", + "spl__BulletSpGreatBarrierMoveParam.BarrierParam.MaxRadius": + "Maximum radius this expands to.", + // "spl__BulletSpGreatBarrierMoveParam.BarrierParam.MinRadius": "", + // "spl__BulletSpGreatBarrierMoveParam.BarrierParam.RadiusRatioCurve.Data": "", + // "spl__BulletSpGreatBarrierMoveParam.BarrierParam.RadiusRatioCurve.MaxX": "", + // "spl__BulletSpGreatBarrierMoveParam.BarrierParam.RadiusRatioCurve.Type": "", + "spl__BulletSpGreatBarrierMoveParam.BarrierParam.TimeDamage": + "How much HP the barrier loses over time while deployed.", + "spl__BulletSpGreatBarrierMoveParam.BarrierParam.TimeDamageOnVLift": + "How much HP the barrier loses over time while it is on the Tower.", + // "spl__BulletSpGreatBarrierMoveParam.BaseParam.PaintRadius": "", + // "spl__BulletSpGreatBarrierMoveParam.BaseParam.PaintTexture": "", + // "spl__BulletSpGreatBarrierMoveParam.DroneParam.AscendCurve.Data": "", + // "spl__BulletSpGreatBarrierMoveParam.DroneParam.AscendCurve.MaxX": "", + // "spl__BulletSpGreatBarrierMoveParam.DroneParam.AscendCurve.Type": "", + // "spl__BulletSpGreatBarrierMoveParam.DroneParam.AscendFrame": "", + "spl__BulletSpGreatBarrierMoveParam.DroneParam.AscendHeight": + "Height the barrier's drone ascends to before deploying the bubble (affects radius of the barrier).", + // "spl__BulletSpGreatBarrierMoveParam.DroneParam.FieldCollisionRadius": "", + // "spl__BulletSpGreatBarrierMoveParam.DroneParam.IgnitionFrame": "", + // "spl__BulletSpGreatBarrierMoveParam.DroneParam.OverlapFieldDamage": "", + // "spl__BulletSpGreatBarrierMoveParam.DroneParam.OverlapFieldDamageInterval": "", + + // spl__BulletSpMicroLaserBitParam + // "spl__BulletSpMicroLaserBitParam.ChargeParam.ChargeFrame": "", + // "spl__BulletSpMicroLaserBitParam.ChargeParam.InterpRate": "", + // "spl__BulletSpMicroLaserBitParam.ChargeParam.MaxAngularVel": "", + // "spl__BulletSpMicroLaserBitParam.ChargeParam.MaxAngularVelChargeStateNoTgt": "", + // "spl__BulletSpMicroLaserBitParam.FollowParam.LockonEndFrame": "", + // "spl__BulletSpMicroLaserBitParam.LaserParam.AfterLaserWaitFrame": "", + // "spl__BulletSpMicroLaserBitParam.LaserParam.FreeMoveRotSpeed": "", + "spl__BulletSpMicroLaserBitParam.LaserParam.LaserDamage": + "Damage dealt by each laser tick.", + // "spl__BulletSpMicroLaserBitParam.LaserParam.LaserDamageIntervalFrame": "", + // "spl__BulletSpMicroLaserBitParam.LaserParam.LaserFrame.High": "", + // "spl__BulletSpMicroLaserBitParam.LaserParam.LaserFrame.Low": "", + "spl__BulletSpMicroLaserBitParam.LaserParam.LaserFrame": + "How long the lasers fire, in frames.", + + // spl__BulletSpMultiMissileMoveParam + // "spl__BulletSpMultiMissileMoveParam.RiseParam.RiseBaseSpeedComeUnderRate": "", + + // spl__BulletSpShockSonarParam + // "spl__BulletSpShockSonarParam.GeneratorParam.HeadColRadius": "", + // "spl__BulletSpShockSonarParam.GeneratorParam.HitDamage": "", + // "spl__BulletSpShockSonarParam.GeneratorParam.HitDamageInterval": "", + // "spl__BulletSpShockSonarParam.GeneratorParam.HitKnockback": "", + // "spl__BulletSpShockSonarParam.GeneratorParam.MarkingFrame": "", + // "spl__BulletSpShockSonarParam.GeneratorParam.MaxHP": "", + // "spl__BulletSpShockSonarParam.GeneratorParam.MoveParam.FlyGravity": "", + // "spl__BulletSpShockSonarParam.GeneratorParam.MoveParam.FlyPositionAirResist": "", + // "spl__BulletSpShockSonarParam.GeneratorParam.MoveParam.GuideHitCollisionType": "", + // "spl__BulletSpShockSonarParam.GeneratorParam.MoveParam.SpawnSpeedY": "", + // "spl__BulletSpShockSonarParam.GeneratorParam.MoveParam.SpawnSpeedYWorldMin": "", + // "spl__BulletSpShockSonarParam.GeneratorParam.MoveParam.SpawnSpeedZSpecUp.High": "", + // "spl__BulletSpShockSonarParam.GeneratorParam.MoveParam.SpawnSpeedZSpecUp.Low": "", + // "spl__BulletSpShockSonarParam.GeneratorParam.MoveParam.SpawnSpeedZSpecUp.Mid": "", + // "spl__BulletSpShockSonarParam.GeneratorParam.PoleColHeight": "", + // "spl__BulletSpShockSonarParam.GeneratorParam.SphereAnimCurve.Data": "", + // "spl__BulletSpShockSonarParam.GeneratorParam.SphereAnimCurve.MaxX": "", + // "spl__BulletSpShockSonarParam.GeneratorParam.SphereAnimCurve.Type": "", + // "spl__BulletSpShockSonarParam.GeneratorParam.SphereAnimRadius": "", + // "spl__BulletSpShockSonarParam.GeneratorParam.WaveEmitFrameArray": "", + // "spl__BulletSpShockSonarParam.WaveParam.Damage": "", + // "spl__BulletSpShockSonarParam.WaveParam.DamageYMax": "", + // "spl__BulletSpShockSonarParam.WaveParam.DamageYMin": "", + // "spl__BulletSpShockSonarParam.WaveParam.MaxFrame.High": "", + // "spl__BulletSpShockSonarParam.WaveParam.MaxFrame.Low": "", + // "spl__BulletSpShockSonarParam.WaveParam.MaxFrame.Mid": "", + // "spl__BulletSpShockSonarParam.WaveParam.MaxRadius.High": "", + // "spl__BulletSpShockSonarParam.WaveParam.MaxRadius.Low": "", + // "spl__BulletSpShockSonarParam.WaveParam.MaxRadius.Mid": "", + + // spl__BulletStringerParam + // "spl__BulletStringerParam.CollisionParam.EndRadiusForPlayer": "", + // "spl__BulletStringerParam.CollisionParam.InitRadiusForPlayer": "", + // "spl__BulletStringerParam.DamageParam.DirectHitDamageMax": "", + // "spl__BulletStringerParam.DamageParam.DirectHitDamageMid": "", + // "spl__BulletStringerParam.DamageParam.DirectHitDamageMin": "", + // "spl__BulletStringerParam.DetonationParam.BlastParam.DamageOffsetY": "", + // "spl__BulletStringerParam.DetonationParam.BlastParam.KnockBackParam.Distance": "", + // "spl__BulletStringerParam.DetonationParam.BlastParam.PaintOffsetY": "", + // "spl__BulletStringerParam.DetonationParam.BlastParam.PaintRadius": "", + // "spl__BulletStringerParam.DetonationParam.DetonationFrame": "", + // "spl__BulletStringerParam.DrawParam.CapsuleLength": "", + // "spl__BulletStringerParam.DrawParam.CapsuleRadius": "", + // "spl__BulletStringerParam.Effect1stParam.DelayFrame": "", + // "spl__BulletStringerParam.Effect1stParam.MaxLen": "", + // "spl__BulletStringerParam.Effect2ndParam.SmokeInterval": "", + // "spl__BulletStringerParam.MoveParam.BrakeAirResist": "", + // "spl__BulletStringerParam.MoveParam.BrakeGravity": "", + // "spl__BulletStringerParam.MoveParam.BrakeToFreeStateFrame": "", + // "spl__BulletStringerParam.MoveParam.BrakeToFreeVelocityXZ": "", + // "spl__BulletStringerParam.MoveParam.BrakeToFreeVelocityY": "", + // "spl__BulletStringerParam.MoveParam.FreeAirResist": "", + // "spl__BulletStringerParam.MoveParam.FreeGravity": "", + // "spl__BulletStringerParam.MoveParam.GoStraightStateEndMaxSpeed": "", + // "spl__BulletStringerParam.MoveParam.GoStraightToBrakeStateFrame": "", + // "spl__BulletStringerParam.MoveParam.SpawnSpeed": "", + // "spl__BulletStringerParam.MoveParam.SpawnSpeedMax": "", + // "spl__BulletStringerParam.MoveParam.SpawnSpeedMid": "", + // "spl__BulletStringerParam.MoveParam.SpawnSpeedMin": "", + // "spl__BulletStringerParam.PaintParam.WidthHalfMax": "", + // "spl__BulletStringerParam.PaintParam.WidthHalfMid": "", + // "spl__BulletStringerParam.PaintParam.WidthHalfMin": "", + // "spl__BulletStringerParam.SplashPaintParam.DepthScaleMax": "", + // "spl__BulletStringerParam.SplashPaintParam.WidthHalf": "", + // "spl__BulletStringerParam.SplashSpawnParam.DropInterval": "", + // "spl__BulletStringerParam.SplashSpawnParam.RandomSpawnVelXMax": "", + // "spl__BulletStringerParam.SplashSpawnParam.SplashNumMax": "", + // "spl__BulletStringerParam.SplashSpawnParam.SplitNum": "", + // "spl__BulletStringerParam.WallDropMoveParam.FallPeriodFirstFrameMax": "", + // "spl__BulletStringerParam.WallDropMoveParam.FallPeriodFirstFrameMin": "", + // "spl__BulletStringerParam.WallDropMoveParam.FallPeriodLastFrameMax": "", + + // spl__PaintMonitorSetParam + // "spl__PaintMonitorSetParam.RelabilityMinTime": "", + + // spl__PlayerGearSkillParam_ActionSpecUp_ReduceJumpSwerveRate + // "spl__PlayerGearSkillParam_ActionSpecUp_ReduceJumpSwerveRate.Mid": "", + + // spl__SpawnBulletAdditionMovePlayerParam + // "spl__SpawnBulletAdditionMovePlayerParam.XRate": "", + // "spl__SpawnBulletAdditionMovePlayerParam.YMax": "", + // "spl__SpawnBulletAdditionMovePlayerParam.YMinusRate": "", + // "spl__SpawnBulletAdditionMovePlayerParam.YPlusRate": "", + // "spl__SpawnBulletAdditionMovePlayerParam.ZRate": "", + + // spl__WeaponSaberParam + // "spl__WeaponSaberParam.ChargeParam.AirChargeRateByInkEmpty": "", + "spl__WeaponSaberParam.ChargeParam.ChargeFrameFullCharge": + "Time in frames needed to reach a full charge.", + // "spl__WeaponSaberParam.ChargeParam.ChargeFrameMinCharge": "", + "spl__WeaponSaberParam.ChargeParam.InkConsumeFullCharge": + "Ink consumed by a fully charged use, as a fraction of the ink tank.", + // "spl__WeaponSaberParam.ChargeParam.InkConsumeMinCharge": "", + // "spl__WeaponSaberParam.ChargeParam.InkRecoverStop": "", + // "spl__WeaponSaberParam.ChargeParam.MoveSpeedFullCharge": "", + // "spl__WeaponSaberParam.FootSplashPaintParam.DepthMaxDropHeight": "", + // "spl__WeaponSaberParam.FootSplashPaintParam.DepthMinDropHeight": "", + // "spl__WeaponSaberParam.FootSplashPaintParam.DepthScaleMax": "", + // "spl__WeaponSaberParam.FootSplashPaintParam.DepthScaleMin": "", + // "spl__WeaponSaberParam.FootSplashPaintParam.WidthHalf": "", + // "spl__WeaponSaberParam.FootSplashPaintParam.WidthHalfNearest": "", + // "spl__WeaponSaberParam.ShotGuideParam.ChargeStepSwingShotGuideFrame": "", + // "spl__WeaponSaberParam.ShotGuideParam.ChargeSwingShotGuideFrame": "", + // "spl__WeaponSaberParam.ShotGuideParam.HorizontalSightFrame": "", + // "spl__WeaponSaberParam.ShotGuideParam.HorizontalSphereIndex": "", + // "spl__WeaponSaberParam.ShotGuideParam.VerticalSightFrame": "", + // "spl__WeaponSaberParam.ShotGuideParam.VerticalSphereIndex": "", + // "spl__WeaponSaberParam.SwingParam.ChargeMoveVelLimit": "", + // "spl__WeaponSaberParam.SwingParam.ChargeSwingASFrame": "", + // "spl__WeaponSaberParam.SwingParam.ChargeSwingFrame": "", + // "spl__WeaponSaberParam.SwingParam.ChargeSwingFrameStepAdd": "", + // "spl__WeaponSaberParam.SwingParam.ChargeSwingPostDelayFrame": "", + // "spl__WeaponSaberParam.SwingParam.ChargeSwingShotBulletFrame": "", + // "spl__WeaponSaberParam.SwingParam.ChargeSwingShotSlashFrame": "", + // "spl__WeaponSaberParam.SwingParam.ChargeSwingStepShotBulletFrame": "", + // "spl__WeaponSaberParam.SwingParam.ChargeSwingStepShotSlashFrame": "", + "spl__WeaponSaberParam.SwingParam.InkConsume": + "Ink consumed per use, as a fraction of the ink tank.", + // "spl__WeaponSaberParam.SwingParam.InkRecoverStop": "", + // "spl__WeaponSaberParam.SwingParam.InkRecoverStop_ChargeSwing": "", + // "spl__WeaponSaberParam.SwingParam.ReserveAcceptFrame": "", + // "spl__WeaponSaberParam.SwingParam.ShotBulletOffset_L.X": "", + // "spl__WeaponSaberParam.SwingParam.ShotBulletOffset_L.Y": "", + // "spl__WeaponSaberParam.SwingParam.ShotBulletOffset_L.Z": "", + // "spl__WeaponSaberParam.SwingParam.ShotBulletOffset_R.X": "", + // "spl__WeaponSaberParam.SwingParam.ShotBulletOffset_R.Y": "", + // "spl__WeaponSaberParam.SwingParam.ShotBulletOffset_R.Z": "", + // "spl__WeaponSaberParam.SwingParam.ShotBulletOffset_Vertical.X": "", + // "spl__WeaponSaberParam.SwingParam.ShotBulletOffset_Vertical.Y": "", + // "spl__WeaponSaberParam.SwingParam.ShotBulletOffset_Vertical.Z": "", + // "spl__WeaponSaberParam.SwingParam.ShotSlashOffset_L.X": "", + // "spl__WeaponSaberParam.SwingParam.ShotSlashOffset_L.Y": "", + // "spl__WeaponSaberParam.SwingParam.ShotSlashOffset_L.Z": "", + // "spl__WeaponSaberParam.SwingParam.ShotSlashOffset_R.X": "", + // "spl__WeaponSaberParam.SwingParam.ShotSlashOffset_R.Y": "", + // "spl__WeaponSaberParam.SwingParam.ShotSlashOffset_R.Z": "", + // "spl__WeaponSaberParam.SwingParam.ShotSlashOffset_Vertical.X": "", + // "spl__WeaponSaberParam.SwingParam.ShotSlashOffset_Vertical.Y": "", + // "spl__WeaponSaberParam.SwingParam.ShotSlashOffset_Vertical.Z": "", + "spl__WeaponSaberParam.SwingParam.SideStepParam.ChargeFrame": + "Time in frames spent charging.", + // "spl__WeaponSaberParam.SwingParam.SideStepParam.InkConsume": "", + // "spl__WeaponSaberParam.SwingParam.SideStepParam.InkRecoverStop": "", + // "spl__WeaponSaberParam.SwingParam.SideStepParam.InputReqAcceptFrame": "", + // "spl__WeaponSaberParam.SwingParam.SideStepParam.MoveDist": "", + // "spl__WeaponSaberParam.SwingParam.SideStepParam.MoveDistKd_OnSlideGnd": "", + // "spl__WeaponSaberParam.SwingParam.SideStepParam.MoveFrame": "", + // "spl__WeaponSaberParam.SwingParam.SideStepParam.MoveStepKd": "", + // "spl__WeaponSaberParam.SwingParam.SideStepParam.MoveStepKd_Air": "", + // "spl__WeaponSaberParam.SwingParam.SideStepParam.RepeatCnt": "", + // "spl__WeaponSaberParam.SwingParam.SideStepParam.SlipMoveDistAir": "", + // "spl__WeaponSaberParam.SwingParam.SideStepParam.SlipMoveDistGnd": "", + // "spl__WeaponSaberParam.SwingParam.SideStepParam.SlipMoveFrame": "", + // "spl__WeaponSaberParam.SwingParam.SideStepParam.TimeScale": "", + // "spl__WeaponSaberParam.SwingParam.SideStepParam.TimeScaleFrm": "", + // "spl__WeaponSaberParam.SwingParam.SideStepParam.UnrelaxFrameMove": "", + // "spl__WeaponSaberParam.SwingParam.SideStepParam.UnrelaxFrameMove_Last": "", + // "spl__WeaponSaberParam.SwingParam.SideStepParam.UnrelaxFrameNoSideStep": "", + // "spl__WeaponSaberParam.SwingParam.SideStepParam.UnrelaxFrameNoSideStep_Last": "", + // "spl__WeaponSaberParam.SwingParam.SideStepParam.UnrelaxFrameNoSquid": "", + // "spl__WeaponSaberParam.SwingParam.SideStepParam.UnrelaxFrameNoSquid_Last": "", + // "spl__WeaponSaberParam.SwingParam.SideStepParam.UnrelaxFrameNoWeapon": "", + // "spl__WeaponSaberParam.SwingParam.SideStepParam.UnrelaxFrameNoWeapon_Last": "", + // "spl__WeaponSaberParam.SwingParam.SideStepParam.UnrelaxFrameOneMuzzle": "", + // "spl__WeaponSaberParam.SwingParam.SideStepParam.UnrelaxFrameOneMuzzle_Last": "", + // "spl__WeaponSaberParam.SwingParam.StepStartStickHistoryFrame": "", + // "spl__WeaponSaberParam.SwingParam.StepStartStickThresholdY": "", + // "spl__WeaponSaberParam.SwingParam.WeakSwingASFrame": "", + // "spl__WeaponSaberParam.SwingParam.WeakSwingFrame": "", + // "spl__WeaponSaberParam.SwingParam.WeakSwingMoveVelLimit": "", + // "spl__WeaponSaberParam.SwingParam.WeakSwingPostDelayFrame": "", + // "spl__WeaponSaberParam.SwingParam.WeakSwingShotBulletFrame": "", + // "spl__WeaponSaberParam.SwingParam.WeakSwingShotSlashFrame": "", + + // spl__WeaponShelterCanopyParam + // "spl__WeaponShelterCanopyParam.CanopyChargeFrame": "", + // "spl__WeaponShelterCanopyParam.CanopyDirXZ_DiffDeg_H": "", + // "spl__WeaponShelterCanopyParam.CanopyDirXZ_DiffDeg_L": "", + // "spl__WeaponShelterCanopyParam.CanopyDirXZ_RotDeg_H": "", + // "spl__WeaponShelterCanopyParam.CanopyDirXZ_RotDeg_L": "", + // "spl__WeaponShelterCanopyParam.CanopyDirXZ_RotDegBias": "", + "spl__WeaponShelterCanopyParam.CanopyNakedFrame": + "Time in frames for a broken canopy to recover.", + // "spl__WeaponShelterCanopyParam.CanopyOpenEndBias": "", + // "spl__WeaponShelterCanopyParam.CanopyOpenEndOffset": "", + // "spl__WeaponShelterCanopyParam.CanopyOpenFrame": "", + // "spl__WeaponShelterCanopyParam.CanopyOpenStartOffset": "", + // "spl__WeaponShelterCanopyParam.CanopyShotFrame": "", + "spl__WeaponShelterCanopyParam.InkConsumeUmbrella": + "Ink used to launch the canopy, as a fraction of the ink tank.", + + // spl__WeaponShelterShotgunParam + "spl__WeaponShelterShotgunParam.InkConsume": + "Ink used per shot for shotgun-style Brella weapons, as a fraction of the ink tank.", + // "spl__WeaponShelterShotgunParam.InkRecoverStop": "", + // "spl__WeaponShelterShotgunParam.InkRecoverStopCanopy": "", + // "spl__WeaponShelterShotgunParam.InkRecoverStopCharge": "", + "spl__WeaponShelterShotgunParam.JumpGndCharge": + "Jump height while holding ZR to fire. Higher means you can jump higher while firing.", + // "spl__WeaponShelterShotgunParam.MoveSpeed": "", + // "spl__WeaponShelterShotgunParam.MoveSpeedCharge": "", + // "spl__WeaponShelterShotgunParam.PostDelayFrame_Main": "", + // "spl__WeaponShelterShotgunParam.PostDelayFrame_MoveLmt": "", + // "spl__WeaponShelterShotgunParam.PostNoShotReqFrame": "", + // "spl__WeaponShelterShotgunParam.PreDelayFrame_HumanMain": "", + // "spl__WeaponShelterShotgunParam.PreDelayFrame_SquidMain": "", + // "spl__WeaponShelterShotgunParam.RepeatFrame": "", + // "spl__WeaponShelterShotgunParam.ShotGuideFrame": "", + + // spl__WeaponSpGreatBarrierParam + // "spl__WeaponSpGreatBarrierParam.KnockBackParam.ImpactValue": "", + + // spl__WeaponSpMicroLaserParam + // "spl__WeaponSpMicroLaserParam.LaunchParam.LaserBitCenterOffset.X": "", + // "spl__WeaponSpMicroLaserParam.LaunchParam.LaserBitCenterOffset.Y": "", + // "spl__WeaponSpMicroLaserParam.LaunchParam.LaserBitCenterOffset.Z": "", + // "spl__WeaponSpMicroLaserParam.LaunchParam.LaserBitRadius": "", + // "spl__WeaponSpMicroLaserParam.LaunchParam.LockonDeg": "", + // "spl__WeaponSpMicroLaserParam.LaunchParam.LockonRadius": "", + // "spl__WeaponSpMicroLaserParam.PlayerParam.AfterShot_NoBombFrm": "", + // "spl__WeaponSpMicroLaserParam.PlayerParam.AfterShot_NoShotFrm": "", + // "spl__WeaponSpMicroLaserParam.PlayerParam.AfterShot_NoSquidFrm": "", + + // spl__WeaponSpMultiMissileLaunchParam + // "spl__WeaponSpMultiMissileLaunchParam.ShotIntervalTargetArray": "", + // "spl__WeaponSpMultiMissileLaunchParam.ShotNumOneTargetArray": "", + + // spl__WeaponSpMultiMissileLockOnParam + // "spl__WeaponSpMultiMissileLockOnParam.TargetCircleEffectDefaultRadius": "", + // "spl__WeaponSpMultiMissileLockOnParam.TargetInCircleRadius.High": "", + // "spl__WeaponSpMultiMissileLockOnParam.TargetInCircleRadius.Low": "", + // "spl__WeaponSpMultiMissileLockOnParam.TargetInCircleRadius.Mid": "", + + // spl__WeaponSpMultiMissilePlayerParam + // "spl__WeaponSpMultiMissilePlayerParam.JumpVelLimitSearching": "", + // "spl__WeaponSpMultiMissilePlayerParam.MoveVelLimitSearching": "", + + // spl__WeaponSpPogoParam + "spl__WeaponSpPogoParam.Rise_Frame": + "Time in frames spent rising into the air on activation.", + "spl__WeaponSpPogoParam.Rise_NoDamageStartFrame": + "Frame during the rise at which you become able to take damage again.", + "spl__WeaponSpPogoParam.SpecialTotalFrame": + "Total active duration of the special, in frames.", + + // spl__WeaponSpUltraShotParam + // "spl__WeaponSpUltraShotParam.EjectCartridgeAngularVel.X": "", + // "spl__WeaponSpUltraShotParam.EjectCartridgeAngularVel.Y": "", + // "spl__WeaponSpUltraShotParam.EjectCartridgeAngularVel.Z": "", + // "spl__WeaponSpUltraShotParam.EjectCartridgeFadeOutFrame": "", + // "spl__WeaponSpUltraShotParam.EjectCartridgeFrame": "", + // "spl__WeaponSpUltraShotParam.EjectCartridgeInitSpeed": "", + // "spl__WeaponSpUltraShotParam.EjectCartridgeLifeTimeFrame": "", + // "spl__WeaponSpUltraShotParam.HideCartridgeBeforeEjectFrame": "", + // "spl__WeaponSpUltraShotParam.HoldAimFrame": "", + // "spl__WeaponSpUltraShotParam.KnockBackParam.AirBreakRt": "", + // "spl__WeaponSpUltraShotParam.KnockBackParam.ImpactValue": "", + // "spl__WeaponSpUltraShotParam.KnockBackParam.StickDownRt": "", + // "spl__WeaponSpUltraShotParam.MoveSpeed": "", + // "spl__WeaponSpUltraShotParam.MoveSpeedInCharge": "", + // "spl__WeaponSpUltraShotParam.RepeatFrame": "", + // "spl__WeaponSpUltraShotParam.ShotDelayFrame": "", + // "spl__WeaponSpUltraShotParam.SpecialDurationFrame.High": "", + "spl__WeaponSpUltraShotParam.SpecialDurationFrame": + "How long the special lasts, in frames.", + // "spl__WeaponSpUltraShotParam.StartDelayFrame": "", + + // spl__WeaponSpUltraStampParam + // "spl__WeaponSpUltraStampParam.BangDown_VelLimitY": "", + // "spl__WeaponSpUltraStampParam.BangDownSmall_TurnLimitAngleDeg": "", + // "spl__WeaponSpUltraStampParam.HoldSwingKnockBackParam.Accel": "", + // "spl__WeaponSpUltraStampParam.HoldSwingKnockBackParam.Bias": "", + // "spl__WeaponSpUltraStampParam.HoldSwingKnockBackParam.Distance": "", + // "spl__WeaponSpUltraStampParam.SpecialTotalFrame.High": "", + "spl__WeaponSpUltraStampParam.SpecialTotalFrame": + "Total active duration of the special, in frames.", + // "spl__WeaponSpUltraStampParam.VelLimit_NoPaint": "", + + // spl__WeaponStringerParam + // "spl__WeaponStringerParam.ChargeKeepParam.KeepChargeFullFrame": "", + // "spl__WeaponStringerParam.ChargeKeepParam.KeepChargePreDelayFrame": "", + // "spl__WeaponStringerParam.ChargeKeepParam.KeepChargePreDelayFrame_Pre": "", + // "spl__WeaponStringerParam.ChargeParam.AirChargeRateByInkEmpty": "", + // "spl__WeaponStringerParam.ChargeParam.ChargeFrameFullCharge": "", + // "spl__WeaponStringerParam.ChargeParam.ChargeFrameMidCharge": "", + // "spl__WeaponStringerParam.ChargeParam.ChargeFrameMinCharge": "", + // "spl__WeaponStringerParam.ChargeParam.FreezeFrameFullCharge": "", + // "spl__WeaponStringerParam.ChargeParam.FreezeFrameMidCharge": "", + // "spl__WeaponStringerParam.ChargeParam.FreezeFrameMinCharge": "", + // "spl__WeaponStringerParam.ChargeParam.InkConsumeFullCharge": "", + "spl__WeaponStringerParam.ChargeParam.InkConsumeMidCharge": + "Ink consumed by a mid-charge shot, as a fraction of the ink tank.", + "spl__WeaponStringerParam.ChargeParam.InkConsumeMinCharge": + "Ink consumed by a minimum-charge shot, as a fraction of the ink tank.", + // "spl__WeaponStringerParam.ChargeParam.JumpHeightFullCharge": "", + // "spl__WeaponStringerParam.ChargeParam.MoveJumpDownBias": "", + // "spl__WeaponStringerParam.ChargeParam.MoveJumpDownStartChargeRate": "", + "spl__WeaponStringerParam.ChargeParam.MoveSpeedFullCharge": + "Player movement speed while holding a full charge.", + "spl__WeaponStringerParam.ChargeParam.PostDelayFrame": + "Delay in frames after firing during which you cannot act.", + // "spl__WeaponStringerParam.PlayerParam.BowTiltDegRcvInterpRate": "", + // "spl__WeaponStringerParam.ShotGuideParam.GuideDrawFrameFirst": "", + // "spl__WeaponStringerParam.ShotGuideParam.GuideDrawFrameSecond": "", + // "spl__WeaponStringerParam.ShotGuideParam.MainArrowGuideDrawFrame": "", + // "spl__WeaponStringerParam.ShotGuideParam.SubArrowGuideDrawFrame": "", + // "spl__WeaponStringerParam.ShotGuideParam.TiltGuideLength": "", + // "spl__WeaponStringerParam.ShotGuideParam.TiltGuideWidth": "", + "spl__WeaponStringerParam.ShotParam.ArrowAngleMax": + "Angle between the stringer's arrows at maximum charge.", + "spl__WeaponStringerParam.ShotParam.ArrowAngleMid": + "Angle between the stringer's arrows at mid charge.", + "spl__WeaponStringerParam.ShotParam.ArrowAngleMin": + "Angle between the stringer's arrows at minimum charge.", + // "spl__WeaponStringerParam.ShotParam.ArrowMargin": "", + // "spl__WeaponStringerParam.ShotParam.ArrowNum": "", + // "spl__WeaponStringerParam.ShotParam.BowJumpTiltSpeedForward": "", + // "spl__WeaponStringerParam.ShotParam.BowJumpTiltSpeedReverse": "", + // "spl__WeaponStringerParam.ShotParam.BowTiltDegreeMax": "", + // "spl__WeaponStringerParam.ShotParam.BowTiltKeepFrame": "", + // "spl__WeaponStringerParam.ShotParam.BowTiltResetSpeed": "", + + // SplashPaintParam + // "SplashPaintParam.DepthHalfFullCharge": "", + // "SplashPaintParam.DepthHalfMaxCharge": "", + // "SplashPaintParam.DepthHalfMinCharge": "", + // "SplashPaintParam.DepthMaxDropHeight": "", + // "SplashPaintParam.DepthMinDropHeight": "", + // "SplashPaintParam.DepthScaleMax": "", + // "SplashPaintParam.DepthScaleMin": "", + // "SplashPaintParam.LastSplashRateFullCharge": "", + // "SplashPaintParam.LastSplashRateMaxCharge": "", + // "SplashPaintParam.LastSplashRateMinCharge": "", + // "SplashPaintParam.RadiusSpawnNearest": "", + // "SplashPaintParam.WidthHalf": "", + // "SplashPaintParam.WidthHalfFullCharge": "", + // "SplashPaintParam.WidthHalfMaxCharge": "", + // "SplashPaintParam.WidthHalfMinCharge": "", + // "SplashPaintParam.WidthHalfNearest": "", + + // SplashSlosherScatterParam + // "SplashSlosherScatterParam.CollisionParam.EndRadiusForField": "", + // "SplashSlosherScatterParam.CollisionParam.EndRadiusForPlayer": "", + // "SplashSlosherScatterParam.CollisionParam.InitRadiusForField": "", + // "SplashSlosherScatterParam.CollisionParam.InitRadiusForPlayer": "", + // "SplashSlosherScatterParam.PaintRadius": "", + // "SplashSlosherScatterParam.SpawnFirstFrame": "", + // "SplashSlosherScatterParam.SpawnMaxDegree": "", + // "SplashSlosherScatterParam.SpawnMaxNum": "", + // "SplashSlosherScatterParam.SpawnMinDegree": "", + // "SplashSlosherScatterParam.SpawnOffsetMax": "", + // "SplashSlosherScatterParam.SpawnOffsetMin": "", + // "SplashSlosherScatterParam.SpawnSpanChangeEndFrame": "", + // "SplashSlosherScatterParam.SpawnSpanFrameFirst": "", + // "SplashSlosherScatterParam.SpawnSpanFrameLast": "", + // "SplashSlosherScatterParam.SpawnSpeed": "", + + // SplashSlosherSpiralParam + // "SplashSlosherSpiralParam.CollisionParam.EndRadiusForField": "", + // "SplashSlosherSpiralParam.CollisionParam.EndRadiusForPlayer": "", + // "SplashSlosherSpiralParam.CollisionParam.InitRadiusForField": "", + // "SplashSlosherSpiralParam.CollisionParam.InitRadiusForPlayer": "", + // "SplashSlosherSpiralParam.LifeFrame": "", + // "SplashSlosherSpiralParam.RoundSplitNum": "", + // "SplashSlosherSpiralParam.SameTimeSpawnNum": "", + // "SplashSlosherSpiralParam.SpawnSpanChangeEndFrame": "", + // "SplashSlosherSpiralParam.SpawnSpanChangeStartFrame": "", + // "SplashSlosherSpiralParam.SpawnSpanFrameFirst": "", + // "SplashSlosherSpiralParam.SpawnSpanFrameLast": "", + // "SplashSlosherSpiralParam.SpawnSpeedChangeEndFallHeight": "", + // "SplashSlosherSpiralParam.SpawnSpeedChangeStartFallHeight": "", + // "SplashSlosherSpiralParam.SpawnSpeedFirst": "", + // "SplashSlosherSpiralParam.SpawnSpeedLast": "", + + // SplashSpawnLapOverParam + // "SplashSpawnLapOverParam.SpawnBetweenLength": "", + // "SplashSpawnLapOverParam.SpawnNearestLength": "", + // "SplashSpawnLapOverParam.SpawnNum": "", + // "SplashSpawnLapOverParam.SplitNum": "", + + // SplashSpawnParam + // "SplashSpawnParam.ForceSpawnNearestAddNumArray": "", + // "SplashSpawnParam.OnTopRateFullCharge": "", + // "SplashSpawnParam.OnTopRateMaxCharge": "", + // "SplashSpawnParam.OnTopRateMinCharge": "", + // "SplashSpawnParam.RandomSpawnVelXMax": "", + // "SplashSpawnParam.RandomSpawnVelYMax": "", + // "SplashSpawnParam.RandomSpawnVelZMax": "", + // "SplashSpawnParam.RandomSpawnVelZMin": "", + // "SplashSpawnParam.SkipNum": "", + "SplashSpawnParam.SpawnBetweenLength": + "Spacing between the spray droplets a shot drops along its path (the inking at the player's feet is controlled separately).", + // "SplashSpawnParam.SpawnNearestChargeRate": "", + // "SplashSpawnParam.SpawnNearestLength": "", + // "SplashSpawnParam.SpawnNearestMaxOffsetXZ": "", + "SplashSpawnParam.SpawnNum": + "Number of spray droplets a shot creates along its path. The inking that occurs at the player's feet is controlled separately.", + "SplashSpawnParam.SplitNum": + "Affects how likely ink splatter is to fall around the player's feet (higher is likelier)", + + // SplashWallHitParam + // "SplashWallHitParam.SpawnParam.BetweenDistance": "", + // "SplashWallHitParam.SpawnParam.DistanceXZRate": "", + // "SplashWallHitParam.SpawnParam.FirstDistance": "", + // "SplashWallHitParam.SpawnParam.NumMax": "", + // "SplashWallHitParam.SpawnParam.SpawnMaxChargeFrame": "", + // "SplashWallHitParam.SpawnParam.VelocityMinusYRate": "", + // "SplashWallHitParam.WallDropCollisionPaintParam.FallPeriodFirstSecondTargetAlp": "", + // "SplashWallHitParam.WallDropCollisionPaintParam.PaintRadiusFall": "", + // "SplashWallHitParam.WallDropCollisionPaintParam.PaintRadiusFallMaxCharge": "", + // "SplashWallHitParam.WallDropCollisionPaintParam.PaintRadiusFallMinCharge": "", + // "SplashWallHitParam.WallDropCollisionPaintParam.PaintRadiusGround": "", + // "SplashWallHitParam.WallDropCollisionPaintParam.PaintRadiusShock": "", + // "SplashWallHitParam.WallDropCollisionPaintParam.PaintRadiusShockMaxCharge": "", + // "SplashWallHitParam.WallDropCollisionPaintParam.PaintRadiusShockMinCharge": "", + // "SplashWallHitParam.WallDropMoveParam.FallPeriodFirstFrameMax": "", + // "SplashWallHitParam.WallDropMoveParam.FallPeriodFirstFrameMin": "", + // "SplashWallHitParam.WallDropMoveParam.FallPeriodFirstTargetSpeed": "", + // "SplashWallHitParam.WallDropMoveParam.FallPeriodLastFrameMax": "", + // "SplashWallHitParam.WallDropMoveParam.FallPeriodLastFrameMin": "", + // "SplashWallHitParam.WallDropMoveParam.FallPeriodSecondFrame": "", + // "SplashWallHitParam.WallDropMoveParam.FallPeriodSecondTargetSpeed": "", + + // SubWeaponSetting + "SubWeaponSetting.SubInkSaveLv": + "Internal ink-saving tier of the sub weapon. Higher means the sub costs less ink.", + + // SwingBigBlastParam + // "SwingBigBlastParam.CrossPaintCheckLength": "", + // "SwingBigBlastParam.CrossPaintRadius": "", + // "SwingBigBlastParam.DamageOffsetY": "", + // "SwingBigBlastParam.KnockBackParam.Accel": "", + // "SwingBigBlastParam.KnockBackParam.Bias": "", + // "SwingBigBlastParam.KnockBackParam.Distance": "", + // "SwingBigBlastParam.PaintOffsetY": "", + // "SwingBigBlastParam.PaintRadius": "", + + // SwingParam + // "SwingParam.DefiladeHandSideOffsetLength": "", + // "SwingParam.StateSwingUpLateFrame": "", + + // SwingSmallBlastParam + // "SwingSmallBlastParam.CrossPaintCheckLength": "", + // "SwingSmallBlastParam.CrossPaintRadius": "", + // "SwingSmallBlastParam.DamageOffsetY": "", + // "SwingSmallBlastParam.KnockBackParam.Accel": "", + // "SwingSmallBlastParam.KnockBackParam.Bias": "", + // "SwingSmallBlastParam.KnockBackParam.Distance": "", + // "SwingSmallBlastParam.PaintOffsetY": "", + // "SwingSmallBlastParam.PaintRadius": "", + + // SwingUnitGroupParam + // "SwingUnitGroupParam.DamageParam.DamageRejectEndFrame": "", + // "SwingUnitGroupParam.DamageParam.DamageRejectRate": "", + // "SwingUnitGroupParam.DamageParam.DamageRejectStartFrame": "", + // "SwingUnitGroupParam.DamageParam.Inside.DamageHighDistance": "", + // "SwingUnitGroupParam.DamageParam.Inside.DamageHighValue": "", + // "SwingUnitGroupParam.DamageParam.Inside.DamageLowDistance": "", + // "SwingUnitGroupParam.DamageParam.Inside.DamageLowValue": "", + // "SwingUnitGroupParam.DamageParam.Inside.DamageMaxDistance": "", + // "SwingUnitGroupParam.DamageParam.Inside.DamageMaxValue": "", + // "SwingUnitGroupParam.DamageParam.Inside.DamageMinDistance": "", + // "SwingUnitGroupParam.DamageParam.Inside.DamageMinValue": "", + // "SwingUnitGroupParam.DamageParam.Inside.Degree": "", + // "SwingUnitGroupParam.DamageParam.Inside.FinalDamageMinValue": "", + // "SwingUnitGroupParam.DamageParam.Inside.InsideDistanceXZ": "", + // "SwingUnitGroupParam.DamageParam.Outside.DamageHighDistance": "", + // "SwingUnitGroupParam.DamageParam.Outside.DamageHighValue": "", + // "SwingUnitGroupParam.DamageParam.Outside.DamageLowDistance": "", + // "SwingUnitGroupParam.DamageParam.Outside.DamageLowValue": "", + // "SwingUnitGroupParam.DamageParam.Outside.DamageMaxDistance": "", + // "SwingUnitGroupParam.DamageParam.Outside.DamageMaxValue": "", + // "SwingUnitGroupParam.DamageParam.Outside.DamageMinDistance": "", + // "SwingUnitGroupParam.DamageParam.Outside.DamageMinValue": "", + // "SwingUnitGroupParam.DamageParam.Outside.DamageRate": "", + // "SwingUnitGroupParam.DamageParam.Outside.Degree": "", + // "SwingUnitGroupParam.DamageParam.Outside.FinalDamageMinValue": "", + // "SwingUnitGroupParam.PushOutCheckFieldCollisionFrame": "", + // "SwingUnitGroupParam.SplashNearestParam.LoopNum": "", + // "SwingUnitGroupParam.SplashNearestParam.OrderNum": "", + // "SwingUnitGroupParam.SplashNearestParam.SpawnParam.MaxHeight": "", + // "SwingUnitGroupParam.SplashNearestParam.SpawnParam.Offset.X": "", + // "SwingUnitGroupParam.SplashNearestParam.SpawnParam.Offset.Y": "", + // "SwingUnitGroupParam.SplashNearestParam.SpawnParam.Offset.Z": "", + // "SwingUnitGroupParam.SplashNearestParam.SpawnParam.PaintDepthScale": "", + // "SwingUnitGroupParam.SplashNearestParam.SpawnParam.PaintWidthHalf": "", + + // SwingWallDropCollisionPaintParam + // "SwingWallDropCollisionPaintParam.PaintRadiusGround": "", + + // SwingWallDropMoveParam + // "SwingWallDropMoveParam.FallPeriodFirstFrameMax": "", + // "SwingWallDropMoveParam.FallPeriodFirstFrameMin": "", + // "SwingWallDropMoveParam.FallPeriodLastFrameMax": "", + // "SwingWallDropMoveParam.FallPeriodLastFrameMin": "", + // "SwingWallDropMoveParam.FallPeriodSecondFrame": "", + // "SwingWallDropMoveParam.FallPeriodSecondTargetSpeed": "", + + // ThrowBlastParam + // "ThrowBlastParam.CrossPaintCheckLength": "", + // "ThrowBlastParam.CrossPaintRadius": "", + // "ThrowBlastParam.KnockBackParam.Accel": "", + // "ThrowBlastParam.KnockBackParam.Bias": "", + // "ThrowBlastParam.KnockBackParam.Distance": "", + // "ThrowBlastParam.PaintRadius": "", + + // ThrowMoveParam + // "ThrowMoveParam.DirectAccel": "", + // "ThrowMoveParam.DirectDamageValue": "", + // "ThrowMoveParam.FlyGravity": "", + // "ThrowMoveParam.FlyPositionAirResist": "", + // "ThrowMoveParam.GuideHitCollisionType": "", + // "ThrowMoveParam.GuideRadius": "", + // "ThrowMoveParam.SpawnSpeedY": "", + // "ThrowMoveParam.SpawnSpeedYWorldMin": "", + // "ThrowMoveParam.SpawnSpeedZSpecUp.High": "", + // "ThrowMoveParam.SpawnSpeedZSpecUp.Low": "", + // "ThrowMoveParam.SpawnSpeedZSpecUp.Mid": "", + + // UltraShotMoveParam + // "UltraShotMoveParam.OrbitalRadiusEnd": "", + // "UltraShotMoveParam.OrbitalRadiusTransitionFrame": "", + + // VariableCollisionParam + // "VariableCollisionParam.EndRadiusForPlayer": "", + // "VariableCollisionParam.InitRadiusForPlayer": "", + + // VariableDamageParam + // "VariableDamageParam.ReduceEndFrame": "", + // "VariableDamageParam.ReduceStartFrame": "", + // "VariableDamageParam.ValueFullChargeMax": "", + // "VariableDamageParam.ValueMax": "", + // "VariableDamageParam.ValueMin": "", + + // VariableMoveParam + // "VariableMoveParam.GoStraightStateEndMaxSpeed": "", + // "VariableMoveParam.GoStraightToBrakeStateFrame": "", + // "VariableMoveParam.SpawnSpeed": "", + // "VariableMoveParam.SpawnSpeedFirstLastAndSecond": "", + // "VariableMoveParam.SpawnSpeedRandomBias": "", + // "VariableMoveParam.SpawnSpeedRandomRate": "", + + // VariablePaintParam + // "VariablePaintParam.DepthScaleMax": "", + // "VariablePaintParam.DepthScaleMaxBreakFree": "", + // "VariablePaintParam.DepthScaleMin": "", + // "VariablePaintParam.DepthScaleMinBreakFree": "", + // "VariablePaintParam.DistanceFar": "", + // "VariablePaintParam.DistanceMiddle": "", + // "VariablePaintParam.DistanceNear": "", + // "VariablePaintParam.HeightUseDepthScaleMaxBreakFree": "", + // "VariablePaintParam.WidthHalfFar": "", + // "VariablePaintParam.WidthHalfMiddle": "", + // "VariablePaintParam.WidthHalfNear": "", + + // VariableShotParam + // "VariableShotParam.Jump_DegBiasDecreaseStartFrame": "", + // "VariableShotParam.Jump_DegBiasEndFrame": "", + // "VariableShotParam.Jump_DegBiasMax": "", + // "VariableShotParam.Jump_DegSwerve": "", + // "VariableShotParam.MoveSpeed": "", + // "VariableShotParam.PitchDegBias": "", + "VariableShotParam.PitchDegSwerve": + "Random vertical shot spread. Lower is more accurate.", + // "VariableShotParam.RepeatFrame": "", + // "VariableShotParam.Stand_DegBiasMax": "", + "VariableShotParam.Stand_DegSwerve": + "Random shot spread, while standing still. Lower is more accurate.", + // "VariableShotParam.VariableInterpolatedFrame": "", + + // VariableSplashPaintParam + // "VariableSplashPaintParam.DepthScaleMax": "", + // "VariableSplashPaintParam.DepthScaleMin": "", + // "VariableSplashPaintParam.WidthHalf": "", + // "VariableSplashPaintParam.WidthHalfNearest": "", + + // VariableSplashSpawnParam + // "VariableSplashSpawnParam.SpawnBetweenLength": "", + // "VariableSplashSpawnParam.SpawnNearestLength": "", + // "VariableSplashSpawnParam.SpawnNum": "", + // "VariableSplashSpawnParam.SplitNum": "", + + // VariableWeaponParam + // "VariableWeaponParam.BurstAimMoveFrame": "", + // "VariableWeaponParam.InkConsume": "", + // "VariableWeaponParam.Jump_DegBiasDecreaseStartFrame": "", + // "VariableWeaponParam.Jump_DegBiasEndFrame": "", + // "VariableWeaponParam.Jump_DegBiasMax": "", + // "VariableWeaponParam.Jump_DegSwerve": "", + // "VariableWeaponParam.MoveSpeed": "", + // "VariableWeaponParam.PostDelayFrame": "", + // "VariableWeaponParam.RepeatFrame": "", + // "VariableWeaponParam.ShotGuideFrame": "", + // "VariableWeaponParam.Stand_DegBiasDecrease": "", + // "VariableWeaponParam.Stand_DegBiasKf": "", + // "VariableWeaponParam.Stand_DegBiasMin": "", + // "VariableWeaponParam.Stand_DegSwerve": "", + + // VerticalSwingUnitGroupParam + // "VerticalSwingUnitGroupParam.DamageParam.DamageRejectEndFrame": "", + // "VerticalSwingUnitGroupParam.DamageParam.DamageRejectRate": "", + // "VerticalSwingUnitGroupParam.DamageParam.DamageRejectStartFrame": "", + // "VerticalSwingUnitGroupParam.DamageParam.Inside.DamageHighDistance": "", + // "VerticalSwingUnitGroupParam.DamageParam.Inside.DamageHighValue": "", + // "VerticalSwingUnitGroupParam.DamageParam.Inside.DamageLowDistance": "", + // "VerticalSwingUnitGroupParam.DamageParam.Inside.DamageLowValue": "", + // "VerticalSwingUnitGroupParam.DamageParam.Inside.DamageMaxDistance": "", + // "VerticalSwingUnitGroupParam.DamageParam.Inside.DamageMaxValue": "", + // "VerticalSwingUnitGroupParam.DamageParam.Inside.DamageMinDistance": "", + // "VerticalSwingUnitGroupParam.DamageParam.Inside.DamageMinValue": "", + // "VerticalSwingUnitGroupParam.DamageParam.Inside.Degree": "", + // "VerticalSwingUnitGroupParam.DamageParam.Inside.DepletionDamageRate": "", + // "VerticalSwingUnitGroupParam.DamageParam.Inside.FinalDamageMinValue": "", + // "VerticalSwingUnitGroupParam.DamageParam.Inside.InsideDistanceXZ": "", + // "VerticalSwingUnitGroupParam.DamageParam.Outside.DamageHighDistance": "", + // "VerticalSwingUnitGroupParam.DamageParam.Outside.DamageHighValue": "", + // "VerticalSwingUnitGroupParam.DamageParam.Outside.DamageLowDistance": "", + // "VerticalSwingUnitGroupParam.DamageParam.Outside.DamageLowValue": "", + // "VerticalSwingUnitGroupParam.DamageParam.Outside.DamageMaxDistance": "", + // "VerticalSwingUnitGroupParam.DamageParam.Outside.DamageMaxValue": "", + // "VerticalSwingUnitGroupParam.DamageParam.Outside.DamageMinDistance": "", + // "VerticalSwingUnitGroupParam.DamageParam.Outside.DamageMinValue": "", + // "VerticalSwingUnitGroupParam.DamageParam.Outside.DamageRate": "", + // "VerticalSwingUnitGroupParam.DamageParam.Outside.Degree": "", + // "VerticalSwingUnitGroupParam.DamageParam.Outside.DepletionDamageRate": "", + // "VerticalSwingUnitGroupParam.DamageParam.Outside.FinalDamageMinValue": "", + // "VerticalSwingUnitGroupParam.SpawnSplashBetweenLength": "", + // "VerticalSwingUnitGroupParam.SpawnSplashFirstLength": "", + // "VerticalSwingUnitGroupParam.SpawnSplashNum": "", + // "VerticalSwingUnitGroupParam.SplashNearestParam.SpawnParam.MaxHeight": "", + // "VerticalSwingUnitGroupParam.SplashNearestParam.SpawnParam.Offset.X": "", + // "VerticalSwingUnitGroupParam.SplashNearestParam.SpawnParam.Offset.Y": "", + // "VerticalSwingUnitGroupParam.SplashNearestParam.SpawnParam.Offset.Z": "", + // "VerticalSwingUnitGroupParam.SplashNearestParam.SpawnParam.PaintDepthScale": "", + // "VerticalSwingUnitGroupParam.SplashNearestParam.SpawnParam.PaintWidthHalf": "", + // "VerticalSwingUnitGroupParam.SplashPaintParam.DepthScaleMax": "", + // "VerticalSwingUnitGroupParam.SplashPaintParam.DepthScaleMin": "", + // "VerticalSwingUnitGroupParam.SplashPaintParam.WidthHalf": "", + // "VerticalSwingUnitGroupParam.SplashPaintParam.WidthHalfNearest": "", + + // WallDropCollisionPaintParam + // "WallDropCollisionPaintParam.FallPeriodFirstSecondTargetAlp": "", + // "WallDropCollisionPaintParam.PaintRadiusFall": "", + // "WallDropCollisionPaintParam.PaintRadiusFallMaxCharge": "", + // "WallDropCollisionPaintParam.PaintRadiusFallMinCharge": "", + // "WallDropCollisionPaintParam.PaintRadiusGround": "", + // "WallDropCollisionPaintParam.PaintRadiusShock": "", + // "WallDropCollisionPaintParam.PaintRadiusShockMaxCharge": "", + // "WallDropCollisionPaintParam.PaintRadiusShockMinCharge": "", + + // WallDropMoveParam + // "WallDropMoveParam.FallPeriodFirstFrameMax": "", + // "WallDropMoveParam.FallPeriodFirstFrameMin": "", + // "WallDropMoveParam.FallPeriodFirstTargetSpeed": "", + // "WallDropMoveParam.FallPeriodLastFrameMax": "", + // "WallDropMoveParam.FallPeriodLastFrameMin": "", + // "WallDropMoveParam.FallPeriodSecondFrame": "", + // "WallDropMoveParam.FallPeriodSecondTargetSpeed": "", + // "WallDropMoveParam.FreeGravityType": "", + + // WallParam + // "WallParam.ClosingFrame": "", + "WallParam.DamageValue": "Damage dealt by a hit.", + // "WallParam.DebugBlockRotateDistance": "", + // "WallParam.DebugBlockRotateSpeedMax": "", + // "WallParam.DebugBlockRotateSpeedMin": "", + // "WallParam.DebugCircleRadius": "", + // "WallParam.DebugCircleSideOffset": "", + // "WallParam.DebugCircleSlantOffset.X": "", + // "WallParam.DebugCircleSlantOffset.Y": "", + // "WallParam.DebugWallAlpha": "", + // "WallParam.MarkingFrame": "", + // "WallParam.MoveSpeed.High": "", + // "WallParam.MoveSpeed.Low": "", + // "WallParam.MoveSpeed.Mid": "", + // "WallParam.RunningFrame": "", + // "WallParam.SaturationChangeOutFrame": "", + // "WallParam.SaturationFrame": "", + // "WallParam.SaturationTarget": "", + // "WallParam.SplashPaintRadius": "", + // "WallParam.SplashSpawnAllFrame": "", + // "WallParam.SplashSpawnSpan": "", + // "WallParam.StartUpFrame": "", + // "WallParam.TargetSpeedFrame": "", + // "WallParam.WallDepth": "", + // "WallParam.WallHeightDown": "", + // "WallParam.WallHeightUp": "", + // "WallParam.WallWidth": "", + + // WeaponDivideChargerParam + // "WeaponDivideChargerParam.FullChargeDivideNum": "", + // "WeaponDivideChargerParam.MuzzleLocalPos.X": "", + // "WeaponDivideChargerParam.MuzzleLocalPos.Y": "", + // "WeaponDivideChargerParam.MuzzleLocalPos.Z": "", + + // WeaponFullChargeParam + // "WeaponFullChargeParam.MaxShootingFrame_Second": "", + // "WeaponFullChargeParam.RepeatFrame": "", + + // WeaponKeepChargeParam + // "WeaponKeepChargeParam.KeepChargeFullFrame": "", + // "WeaponKeepChargeParam.KeepChargePreDelayFrame": "", + // "WeaponKeepChargeParam.KeepChargePreDelayFrame_Pre": "", + // "WeaponKeepChargeParam.MuzzleLocalPos.X": "", + // "WeaponKeepChargeParam.MuzzleLocalPos.Y": "", + // "WeaponKeepChargeParam.MuzzleLocalPos.Z": "", + + // WeaponParam + // "WeaponParam.AirChargeRateByInkEmpty": "", + // "WeaponParam.ArmorHP": "", + // "WeaponParam.Boost_JumpVel": "", + // "WeaponParam.BurstAimMoveFrame": "", + // "WeaponParam.ChargeFrame": "", + "WeaponParam.ChargeFrame_First": + "Frames until the first charge level finishes. Lower means it reaches the first level faster.", + "WeaponParam.ChargeFrame_Second": + "Frames until the second, full charge level finishes. Lower means it reaches a full charge faster.", + // "WeaponParam.ChargeFrameBlastRate": "", + "WeaponParam.ChargeFrameFullCharge": + "Frames needed to reach a full charge. Lower means the weapon charges faster.", + "WeaponParam.ChargeFrameMidCharge": + "Time in frames needed to reach a mid-level charge.", + // "WeaponParam.ChargeFrameMinCharge": "", + // "WeaponParam.ChargeRateAutoPerFrame.High": "", + // "WeaponParam.ChargeRateAutoPerFrame.Low": "", + // "WeaponParam.ChargeRateAutoPerFrame.Mid": "", + "WeaponParam.ChargeRateNiceFriend": + "How much the special's gauge charges from teammates' Booyahs.", + // "WeaponParam.ChargeRateNiceSelf": "", + // "WeaponParam.ColBullet_OffsetY": "", + // "WeaponParam.ColBullet_OffsetZ_Head": "", + // "WeaponParam.ColBullet_OffsetZ_Tail": "", + // "WeaponParam.ColBullet_Radius": "", + "WeaponParam.Dash_ChargeCancelableFrame": + "Frames into a dash charge after which it can still be canceled.", + "WeaponParam.Dash_ChargeFrame": + "Time in frames needed to charge a dash attack.", + // "WeaponParam.Dash_InvalidFrame": "", + // "WeaponParam.Dash_MoveFrame": "", + // "WeaponParam.Dash_MoveSpeed_Floor_MaxCharge": "", + // "WeaponParam.Dash_MoveSpeed_Floor_MinCharge": "", + // "WeaponParam.Dash_MoveSpeed_Floor_NoPaint": "", + // "WeaponParam.Dash_MoveSpeed_Wall_MaxCharge": "", + // "WeaponParam.Dash_MoveSpeed_Wall_MinCharge": "", + // "WeaponParam.Dash_MoveSpeedCoef_Charged": "", + // "WeaponParam.Dash_MoveSpeedCoef_Charging_Ed": "", + // "WeaponParam.Dash_MoveSpeedCoef_Charging_St": "", + // "WeaponParam.Distance_Afterglow": "", + // "WeaponParam.DokanWarpLmtFrm_FinishSpecial": "", + // "WeaponParam.ExhaleWaitFrame": "", + // "WeaponParam.FinishAlertStartFrame": "", + // "WeaponParam.FrameOffsetDegreeRate": "", + // "WeaponParam.FrameOffsetMaxDegree": "", + // "WeaponParam.FrameOffsetMaxMoveLength": "", + // "WeaponParam.FreezeFrameFullCharge": "", + // "WeaponParam.FreezeFrameMinCharge": "", + // "WeaponParam.GravityKf": "", + // "WeaponParam.InhaleToExhaleWaitFrame": "", + // "WeaponParam.InkCapacityRt": "", + "WeaponParam.InkConsume": + "Ink used per shot, as a fraction of the ink tank (1.0 = the whole tank).", + "WeaponParam.InkConsume_Hook": + "Ink consumed per hook shot, as a fraction of the tank.", + "WeaponParam.InkConsume_PerSec": + "Ink drained per second while active, as a fraction of the tank.", + "WeaponParam.InkConsumeFullCharge": + "Ink used by a fully charged shot, as a fraction of the ink tank (1.0 = the whole tank).", + "WeaponParam.InkConsumeMinCharge": + "Ink used by a tap shot (minimum charge), as a fraction of the ink tank (1.0 = the whole tank).", + // "WeaponParam.InkEmptyChargeTimes": "", + "WeaponParam.InkRecoverStop": + 'Frames after firing before the ink tank starts refilling ("white ink"). Higher means a longer wait before ink recovery begins.', + // "WeaponParam.InkRecoverStopMaxCharge": "", + // "WeaponParam.Jump_DegBiasDecreaseStartFrame": "", + // "WeaponParam.Jump_DegBiasEndFrame": "", + // "WeaponParam.Jump_DegBiasMax": "", + "WeaponParam.Jump_DegSwerve": + "Shot spread in degrees while jumping. Lower is more accurate.", + // "WeaponParam.JumpGnd_Charge": "", + // "WeaponParam.JumpHeightFullCharge": "", + // "WeaponParam.JumpHeightMinCharge": "", + // "WeaponParam.JumpVelExhale": "", + // "WeaponParam.KnockBackKf_Charge_Ed": "", + // "WeaponParam.KnockBackKf_Charge_Ed_Frm": "", + // "WeaponParam.KnockBackKf_Charge_St": "", + // "WeaponParam.KnockBackKf_Dash": "", + // "WeaponParam.KnockBackKf_Std": "", + // "WeaponParam.KnockBackParam.ImpactValue": "", + "WeaponParam.LapOver_DegSwerve": + "Random shot spread, during a roller's vertical flick. Lower is more accurate.", + // "WeaponParam.LapOver_RepeatFrame": "", + // "WeaponParam.MaxChargeFrame": "", + // "WeaponParam.MaxLengthHook": "", + "WeaponParam.MaxShootingFrame_First": + "Firing duration in frames at the first charge level.", + "WeaponParam.MaxShootingFrame_Second": + "Firing duration in frames at the second/full charge level.", + "WeaponParam.MinLengthHook_Floor": + "Minimum zip distance when hooking onto the floor.", + // "WeaponParam.MinLengthHook_Wall": "", + // "WeaponParam.MoveAcc": "", + // "WeaponParam.MoveAccAttack": "", + // "WeaponParam.MoveBrk": "", + // "WeaponParam.MoveCancelableFrame": "", + "WeaponParam.MoveFrame": "Duration, in frames, of the movement.", + // "WeaponParam.MoveFrameOmen": "", + // "WeaponParam.MoveJumpDownBias": "", + // "WeaponParam.MoveJumpDownStartChargeRate": "", + // "WeaponParam.MoveLmtFrame": "", + // "WeaponParam.MoveRotDeg": "", + "WeaponParam.MoveSpeed": + "Player movement speed while firing. Higher means you can strafe faster while shooting.", + // "WeaponParam.MoveSpeed_Aerial": "", + "WeaponParam.MoveSpeed_Charge": + "Player movement speed while charging a shot. Higher means you can strafe faster while charging.", + // "WeaponParam.MoveSpeedAttack_Init": "", + "WeaponParam.MoveSpeedFullCharge": + "Movement speed while charging or firing at full charge.", + // "WeaponParam.MoveSpeedMinCharge": "", + // "WeaponParam.NoDamageFrame_AfterBurst": "", + // "WeaponParam.NoDamageStartFrame_PreMove": "", + // "WeaponParam.NoShotBombFrm_FinishSpecial": "", + // "WeaponParam.NoShotBombReqFrm_FinishSpecial": "", + // "WeaponParam.OffsetLocal_DetectPlayer.X": "", + // "WeaponParam.OffsetLocal_DetectPlayer.Y": "", + // "WeaponParam.OffsetLocal_DetectPlayer.Z": "", + // "WeaponParam.PaintSplashParam.DepthMaxDropHeight": "", + // "WeaponParam.PaintSplashParam.DepthMinDropHeight": "", + // "WeaponParam.PaintSplashParam.DepthScaleMax": "", + // "WeaponParam.PaintSplashParam.DepthScaleMin": "", + // "WeaponParam.PaintSplashParam.WidthHalf": "", + // "WeaponParam.PaintSplashParam.WidthHalfNearest": "", + // "WeaponParam.PaintSplashSpanFrame": "", + // "WeaponParam.PitchDegBias": "", + // "WeaponParam.PitchDegSwerve": "", + // "WeaponParam.PostDelayFrame": "", + "WeaponParam.PostDelayFrame_Blaster": + "Frames of restricted movement after firing a blaster shot. Higher means a longer recovery before you can move freely again.", + // "WeaponParam.PreBurstEmitFrame": "", + // "WeaponParam.PreBurstFrame": "", + // "WeaponParam.PreDelayFrame_HumanShot": "", + // "WeaponParam.PreDelayFrame_SquidShot": "", + // "WeaponParam.PreMoveFrame": "", + // "WeaponParam.Radius_DetectPlayer": "", + "WeaponParam.RepeatFrame": + "Interval in frames between consecutive shots when firing continuously. Lower means a faster fire rate.", + // "WeaponParam.RutPaintRadius": "", + // "WeaponParam.ShotDirXZ_RotDegH": "", + // "WeaponParam.ShotFailedIntervalFrm": "", + // "WeaponParam.ShotGuide.BulletOrderNumInUnit": "", + // "WeaponParam.ShotGuide.Frame": "", + // "WeaponParam.ShotGuide.UnitOrderNum": "", + // "WeaponParam.ShotGuideFrame": "", + // "WeaponParam.ShotPitVel": "", + "WeaponParam.SpecialReduceFrame": + "Frames the special gauge won't recharge after using special. Higher means a longer wait before the special starts recharging.", + // "WeaponParam.SpecialTotalFrame": "", + // "WeaponParam.SpecialTotalFrame.High": "", + // "WeaponParam.SpecialTotalFrame.Low": "", + // "WeaponParam.SpecialTotalFrame.Mid": "", + // "WeaponParam.SquidShotShorteningFrame": "", + // "WeaponParam.Stand_DegBiasDecrease": "", + // "WeaponParam.Stand_DegBiasKf": "", + // "WeaponParam.Stand_DegBiasMax": "", + // "WeaponParam.Stand_DegBiasMin": "", + "WeaponParam.Stand_DegSwerve": + "Shot spread in degrees while standing on the ground. Lower is more accurate.", + // "WeaponParam.StartDelayFrame_NetRecv": "", + // "WeaponParam.StartDelayFrame_NetSend": "", + // "WeaponParam.StickDownRt_OnVLift": "", + // "WeaponParam.SwingLiftAnimFrame": "", + // "WeaponParam.SwingLiftFrame": "", + // "WeaponParam.TargetCenterBias": "", + // "WeaponParam.TargetCenterDistanceMax": "", + // "WeaponParam.TargetCenterDistanceMin": "", + // "WeaponParam.TargetCenterRadius": "", + // "WeaponParam.TargetHeightCheckSpanFrame": "", + // "WeaponParam.ThanksPaintPointMax": "", + // "WeaponParam.ThanksPaintPointOnce": "", + // "WeaponParam.TripleShotSpanFrame": "", + // "WeaponParam.UnrelaxFrame": "", + // "WeaponParam.UseDistanceMinCameraDownRate": "", + // "WeaponParam.UseDistanceMinCameraUpRate": "", + // "WeaponParam.VariableShotRepeatStartFrame": "", + // "WeaponParam.VelGnd_Bias_Charge": "", + // "WeaponParam.VelGnd_DownRt_Charge": "", + // "WeaponParam.WaitFrameShot2Attack": "", + + // WeaponRollParam + "WeaponRollParam.DashFrame": + "Frames of acceleration before reaching top speed while holding ZR to ink and move forward. Lower means you reach top speed sooner.", + "WeaponRollParam.InkConsumeMaxPerFrame": + "Maximum ink consumed per frame while rolling, as a fraction of the ink tank.", + "WeaponRollParam.InkConsumeMinPerFrame": + "Minimum ink consumed per frame while rolling, as a fraction of the ink tank.", + "WeaponRollParam.InkRecoverStop": + "Time in frames after using this before the ink tank starts refilling.", + // "WeaponRollParam.SpeedDash": "", + // "WeaponRollParam.SpeedDashTurnBreak": "", + // "WeaponRollParam.SpeedInkConsumeMax": "", + // "WeaponRollParam.SpeedInkConsumeMin": "", + "WeaponRollParam.SpeedNormal": "Normal rolling movement speed.", + "WeaponRollParam.SwingRepeatFrame": + "Interval in frames between continuous swings. Lower means you can swing again sooner.", + // "WeaponRollParam.ToPaintFrame": "", + + // WeaponScopeParam + // "WeaponScopeParam.CameraFovy": "", + + // WeaponSpChariotParam + // "WeaponSpChariotParam.ArmorHP": "", + // "WeaponSpChariotParam.ArmorHP_BreakScissors": "", + // "WeaponSpChariotParam.CannonNoShotFrame": "", + // "WeaponSpChariotParam.MoveSpeedCoef_Squid": "", + // "WeaponSpChariotParam.MoveSpeedX": "", + // "WeaponSpChariotParam.MoveSpeedX_SpongeEnemy": "", + // "WeaponSpChariotParam.MoveSpeedZ": "", + // "WeaponSpChariotParam.MoveSpeedZ_SpongeEnemy": "", + // "WeaponSpChariotParam.NoShotBombReqFrm_FinishSpecial": "", + // "WeaponSpChariotParam.PreDelayFrm_Squid_ShotBomb": "", + // "WeaponSpChariotParam.RotDegLmt_ToHumanFrm": "", + // "WeaponSpChariotParam.ShooterRepeatFrame_Bias": "", + // "WeaponSpChariotParam.ShooterRepeatFrame_First": "", + // "WeaponSpChariotParam.ShooterRepeatFrame_Term": "", + // "WeaponSpChariotParam.ShotGuideCannonFrame": "", + // "WeaponSpChariotParam.ShotPitVelLmt": "", + // "WeaponSpChariotParam.SpecialTotalFrame.High": "", + "WeaponSpChariotParam.SpecialTotalFrame": + "Total active duration of the special, in frames.", + // "WeaponSpChariotParam.StartDelayFrame_Cannon": "", + // "WeaponSpChariotParam.StartDelayFrame_Shooter": "", + + // WeaponSwingParam + // "WeaponSwingParam.GuideParam.Frame": "", + // "WeaponSwingParam.GuideParam.WidthScale": "", + "WeaponSwingParam.InkConsume": + "Ink used by one brush swing, as a fraction of the ink tank.", + "WeaponSwingParam.InkRecoverStop": + 'Frames after swinging before the ink tank starts refilling ("white ink"). Higher means a longer wait before ink recovery begins.', + // "WeaponSwingParam.SubWeaponSquidDelayFrm": "", + // "WeaponSwingParam.SwingFrame": "", + // "WeaponSwingParam.SwingMoveSpeed": "", + + // WeaponVerticalSwingParam + "WeaponVerticalSwingParam.InkConsume": + "Ink used by one vertical swing, as a fraction of the ink tank.", + // "WeaponVerticalSwingParam.InkConsumeRateDepletion": "", + "WeaponVerticalSwingParam.InkRecoverStop": + 'Frames after vertically swinging before the ink tank starts refilling ("white ink"). Higher means a longer wait before ink recovery begins.', + // "WeaponVerticalSwingParam.SwingFrame": "", + // "WeaponVerticalSwingParam.SwingMoveSpeed": "", + + // WeaponWideSwingParam + // "WeaponWideSwingParam.GuideParam.Frame": "", + // "WeaponWideSwingParam.GuideParam.WidthScale": "", + "WeaponWideSwingParam.InkConsume": + "Ink used by one wide horizontal swing, as a fraction of the ink tank.", + // "WeaponWideSwingParam.InkConsumeRateDepletion": "", + "WeaponWideSwingParam.InkRecoverStop": + 'Frames after horizontally swinging before the ink tank starts refilling ("white ink"). Higher means a longer wait before ink recovery begins.', + // "WeaponWideSwingParam.SubWeaponSquidDelayFrm": "", + // "WeaponWideSwingParam.SwingFrame": "", + // "WeaponWideSwingParam.SwingMoveSpeed": "", + + // WideSwingUnitGroupParam + // "WideSwingUnitGroupParam.DamageParam.DamageRejectEndFrame": "", + // "WideSwingUnitGroupParam.DamageParam.DamageRejectRate": "", + // "WideSwingUnitGroupParam.DamageParam.DamageRejectStartFrame": "", + // "WideSwingUnitGroupParam.DamageParam.Inside.DamageHighDistance": "", + // "WideSwingUnitGroupParam.DamageParam.Inside.DamageHighValue": "", + // "WideSwingUnitGroupParam.DamageParam.Inside.DamageLowDistance": "", + // "WideSwingUnitGroupParam.DamageParam.Inside.DamageLowValue": "", + // "WideSwingUnitGroupParam.DamageParam.Inside.DamageMaxDistance": "", + // "WideSwingUnitGroupParam.DamageParam.Inside.DamageMaxValue": "", + // "WideSwingUnitGroupParam.DamageParam.Inside.DamageMinDistance": "", + // "WideSwingUnitGroupParam.DamageParam.Inside.DamageMinValue": "", + // "WideSwingUnitGroupParam.DamageParam.Inside.Degree": "", + // "WideSwingUnitGroupParam.DamageParam.Inside.DepletionDamageRate": "", + // "WideSwingUnitGroupParam.DamageParam.Inside.FinalDamageMinValue": "", + // "WideSwingUnitGroupParam.DamageParam.Inside.InsideDistanceXZ": "", + // "WideSwingUnitGroupParam.DamageParam.Outside.DamageHighDistance": "", + // "WideSwingUnitGroupParam.DamageParam.Outside.DamageHighValue": "", + // "WideSwingUnitGroupParam.DamageParam.Outside.DamageLowDistance": "", + // "WideSwingUnitGroupParam.DamageParam.Outside.DamageLowValue": "", + // "WideSwingUnitGroupParam.DamageParam.Outside.DamageMaxDistance": "", + // "WideSwingUnitGroupParam.DamageParam.Outside.DamageMaxValue": "", + // "WideSwingUnitGroupParam.DamageParam.Outside.DamageMinDistance": "", + // "WideSwingUnitGroupParam.DamageParam.Outside.DamageMinValue": "", + // "WideSwingUnitGroupParam.DamageParam.Outside.DamageRate": "", + // "WideSwingUnitGroupParam.DamageParam.Outside.Degree": "", + // "WideSwingUnitGroupParam.DamageParam.Outside.DepletionDamageRate": "", + // "WideSwingUnitGroupParam.DamageParam.Outside.FinalDamageMinValue": "", + // "WideSwingUnitGroupParam.SplashNearestParam.SpawnParam.MaxHeight": "", + // "WideSwingUnitGroupParam.SplashNearestParam.SpawnParam.Offset.X": "", + // "WideSwingUnitGroupParam.SplashNearestParam.SpawnParam.Offset.Y": "", + // "WideSwingUnitGroupParam.SplashNearestParam.SpawnParam.Offset.Z": "", + // "WideSwingUnitGroupParam.SplashNearestParam.SpawnParam.PaintDepthScale": "", + // "WideSwingUnitGroupParam.SplashNearestParam.SpawnParam.PaintWidthHalf": "", +}; + +const POWER_UP_LEVEL_SUFFIXES = [".Low", ".Mid", ".High"]; + +/** + * Returns a plain-English description of what a weapon parameter controls, or + * `undefined` if no explanation has been recorded for it yet. + * + * A `.Low` / `.Mid` / `.High` key with no exact entry falls back to its suffix-less base + * key, so one entry covers all three Power Up levels (the legend explains what they mean). + * + * This is the single source of explanation text, so the underlying store can later be + * swapped for a translated source without changing call sites. + */ +export function getParamExplanation( + category: string, + key: string, +): string | undefined { + const fullKey = `${category}.${key}`; + const direct = PARAM_EXPLANATIONS[fullKey]; + if (direct !== undefined) return direct; + + const suffix = POWER_UP_LEVEL_SUFFIXES.find((s) => fullKey.endsWith(s)); + if (suffix) return PARAM_EXPLANATIONS[fullKey.slice(0, -suffix.length)]; + + return undefined; +} diff --git a/app/features/params/data/all-version-special-params.json b/app/features/params/data/all-version-special-params.json new file mode 100644 index 000000000..8bfa776b3 --- /dev/null +++ b/app/features/params/data/all-version-special-params.json @@ -0,0 +1,2169 @@ +{ + "metadata": { + "generatedAt": "2026-06-15T13:59:10.026Z", + "latestVersion": "11.2.0", + "versions": [ + "0.9.9", + "1.0.0", + "1.1.0", + "1.1.1", + "1.2.0", + "2.0.0", + "2.1.0", + "3.0.0", + "3.1.0", + "4.0.0", + "4.1.0", + "5.0.0", + "5.1.0", + "5.2.0", + "6.0.0", + "6.1.0", + "7.0.0", + "7.1.0", + "7.2.0", + "8.0.0", + "8.1.0", + "9.0.0", + "9.1.0", + "9.2.0", + "9.3.0", + "10.0.0", + "10.1.0", + "11.0.0", + "11.0.1", + "11.1.0", + "11.2.0" + ] + }, + "weapons": { + "1": { + "BlastParam": { + "DistanceDamage": [ + { + "Damage": 530, + "Distance": 2.5 + }, + { + "Damage": 350, + "Distance": 4 + } + ], + "KnockBackParam": { + "Accel": 470, + "Bias": 0.8, + "Distance": 8 + }, + "PaintRadius": 3.2, + "SubSpecialSpecUpList": [ + { + "SpecUpType": "PaintRadius", + "Value": { + "High": 4, + "Low": 3.2, + "Mid": 3.6 + } + }, + { + "SpecUpType": "DistanceDamageDistanceRate", + "Value": { + "High": 1.3, + "Low": 1, + "Mid": 1.15 + } + } + ], + "DistanceDamage@9.2.0": [ + { + "Damage": 530, + "Distance": 4 + } + ], + "DistanceDamage@5.0.0": [ + { + "Damage": 600, + "Distance": 4 + } + ], + "DistanceDamage@4.0.0": [ + { + "Damage": 400, + "Distance": 4 + } + ] + }, + "CollisionParam": { + "ChangeFrameForField": 20, + "ChangeFrameForPlayer": 10, + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.75, + "InitRadiusForField": 0.01, + "InitRadiusForPlayer": 0.01 + }, + "DamageParam": { + "DirectHitDamage": 2200 + }, + "MoveParam": { + "BrakeAirResist": 0.09, + "BrakeGravity": 0.09, + "BrakeToFreeStateFrame": 10, + "BrakeToFreeVelocityXZ": 1, + "BrakeToFreeVelocityY": -0.1, + "FreeAirResist": 0.01985, + "FreeGravity": 0.0190565, + "GoStraightStateEndMaxSpeed": 1, + "GoStraightToBrakeStateFrame": 18, + "SpawnSpeed": 1 + }, + "UltraShotMoveParam": { + "OrbitalRadiusEnd": 1, + "OrbitalRadiusTransitionFrame": 10 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "XRate": 0, + "YPlusRate": 0, + "ZRate": 0 + }, + "spl__WeaponSpUltraShotParam": { + "EjectCartridgeAngularVel": { + "X": 35, + "Y": 0, + "Z": 20 + }, + "EjectCartridgeFadeOutFrame": 5, + "EjectCartridgeFrame": 30, + "EjectCartridgeInitSpeed": 5, + "EjectCartridgeLifeTimeFrame": 60, + "HideCartridgeBeforeEjectFrame": 1, + "HoldAimFrame": 55, + "IsReqShotInStartDelay": true, + "KnockBackParam": { + "AirBreakRt": 0.8, + "ImpactValue": 0.04, + "StickDownRt": 5 + }, + "MoveSpeed": 0.07, + "MoveSpeedInCharge": 0.04, + "RepeatFrame": 55, + "ShotDelayFrame": 15, + "SpecialDurationFrame": { + "High": 480, + "Low": 330, + "Mid": 405, + "Low@9.2.0": 360, + "Mid@9.2.0": 420 + }, + "StartDelayFrame": 5 + } + }, + "2": { + "spl__BulletSpGreatBarrierMoveParam": { + "BarrierParam": { + "CanopyKnockBack": 700, + "DamgeRatio": 0.64, + "MaxFieldHP": { + "High": 36864, + "Low": 30720, + "Mid": 33792, + "High@7.1.0": 28800, + "Low@7.1.0": 24000, + "Mid@7.1.0": 26400 + }, + "MaxHP": { + "High": 18432, + "Low": 15360, + "Mid": 16896, + "High@7.1.0": 14400, + "Low@7.1.0": 12000, + "Mid@7.1.0": 13200 + }, + "MaxRadius": 7.5, + "MinRadius": 2.255, + "RadiusRatioCurve": { + "Data": [ + 0.1940299, 0, 0, 0.6522388, 0.3726415, -0.02766653, 0.8723881, + 0.75, 1.1808, 1, 1, 4.740566 + ], + "MaxX": 1, + "Type": "Hermit2DSmooth" + }, + "TimeDamage": 921, + "TimeDamageOnVLift": 1842, + "DamgeRatio@7.1.0": 0.5, + "MaxRadius@3.1.0": 6, + "TimeDamage@7.1.0": 720, + "TimeDamageOnVLift@7.1.0": 1440 + }, + "BaseParam": { + "PaintRadius": 4.5, + "PaintTexture": "Bomb00Height3pnt4" + }, + "DroneParam": { + "AscendCurve": { + "Data": [ + 0, 0, 0, 0.25, 0.1122642, 0.8181818, 0.5, 0.5, 2.926098, + 0.6830189, 0.8556603, 1.395833, 1, 1, 0 + ], + "MaxX": 1, + "Type": "Hermit2DSmooth" + }, + "AscendFrame": 30, + "AscendHeight": 8.5, + "FieldCollisionRadius": 0.4, + "IgnitionFrame": 15, + "OverlapFieldDamage": 5, + "OverlapFieldDamageInterval": 5, + "AscendHeight@3.1.0": 7 + } + }, + "spl__WeaponSpGreatBarrierParam": { + "KnockBackParam": { + "ImpactValue": 0.05 + } + } + }, + "3": { + "BulletBombMoveParam": { + "FlyGravity": 0, + "FlyPositionAirResist": 0, + "GuideHitCollisionType": "SuperHook", + "SpawnSpeedZSpecUp": { + "High": 3.36, + "Low": 3.36, + "Mid": 3.36 + } + }, + "BulletParam": { + "CollisionRadiusForField": 1.6, + "CollisionRadiusForPlayer": 1.2, + "KnockBackParam": { + "Accel": 450, + "Bias": 0, + "Degree": 55, + "DirectionZeroAccelRate": 1, + "Distance": 10 + }, + "PaintDepthScale": 1.5, + "PaintSpanFrame": 2, + "PaintWidthHalf": 1 + }, + "HookBlastParam": { + "CrossPaintCheckLength": 1.4, + "CrossPaintRadius": 1.4, + "DistanceDamage": [ + { + "Damage": 450, + "Distance": 5.25 + }, + { + "Damage": 350, + "Distance": 6 + } + ], + "KnockBackParam": { + "Accel": 470, + "Bias": 0.8, + "Distance": 8 + }, + "DistanceDamage@10.0.0": [ + { + "Damage": 450, + "Distance": 4.8 + }, + { + "Damage": 350, + "Distance": 6 + } + ], + "DistanceDamage@4.1.0": [ + { + "Damage": 350, + "Distance": 3.2 + }, + { + "Damage": 250, + "Distance": 4 + } + ] + }, + "HookCollisionParam": { + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.01, + "InitRadiusForField": 0.5, + "InitRadiusForPlayer": 0.01 + }, + "WeaponParam": { + "InkCapacityRt": 1.5, + "InkConsume_Hook": { + "High": 0.015, + "Low": 0.04, + "Mid": 0.025, + "High@11.1.0": 0.0225, + "High@1.2.0": 0.015, + "High@1.0.0": 0.056, + "High@0.9.9": 0.015, + "Low@11.1.0": 0.06, + "Low@1.2.0": 0.04, + "Low@1.0.0": 0.08, + "Low@0.9.9": 0.04, + "Mid@11.1.0": 0.0375, + "Mid@1.2.0": 0.025, + "Mid@1.0.0": 0.068, + "Mid@0.9.9": 0.025 + }, + "InkConsume_PerSec": { + "High": 0.12, + "Low": 0.15, + "Mid": 0.1305, + "High@1.2.0": 0.08, + "High@1.0.0": 0.056, + "High@0.9.9": 0.08, + "Low@1.2.0": 0.1, + "Low@1.0.0": 0.08, + "Low@0.9.9": 0.1, + "Mid@1.2.0": 0.087, + "Mid@1.0.0": 0.068, + "Mid@0.9.9": 0.087 + }, + "MaxLengthHook": 35, + "MinLengthHook_Floor": 3, + "MinLengthHook_Wall": 0, + "MoveAccAttack": 0.1, + "MoveSpeedAttack_Init": 0.06, + "ShotFailedIntervalFrm": 20, + "SpecialTotalFrame": 540, + "WaitFrameShot2Attack": 12, + "MinLengthHook_Floor@4.1.0": 4 + } + }, + "4": { + "spl__BulletBlastParam": { + "CrossPaintCheckLength": 3, + "DamageOffsetY": 0, + "DistanceDamage": [ + { + "Damage": 1500, + "Distance": 1.1 + }, + { + "Damage": 500, + "Distance": 2.1 + }, + { + "Damage": 300, + "Distance": 4.25 + } + ], + "KnockBackParam": { + "Accel": 700, + "Bias": 0.8, + "Distance": 8 + }, + "PaintOffsetY": 0, + "PaintRadius": 3, + "SubSpecialSpecUpList": [ + { + "Value": { + "High": 3.78, + "Low": 3.15, + "Mid": 3.465 + } + }, + { + "SpecUpType": "CrossPaintRadius", + "Value": { + "High": 2, + "Low": 2, + "Mid": 2 + } + }, + { + "SpecUpType": "CrossPaintCheckLength", + "Value": { + "High": 3, + "Low": 3, + "Mid": 3 + } + } + ], + "DistanceDamage@5.0.0": [ + { + "Damage": 1500, + "Distance": 1.1 + }, + { + "Damage": 500, + "Distance": 2.1 + }, + { + "Damage": 300, + "Distance": 5 + } + ] + }, + "spl__BulletSpMultiMissileDamageParam": {}, + "spl__BulletSpMultiMissileMoveParam": { + "RiseParam": { + "RiseBaseSpeedComeUnderRate": 0.9 + }, + "TargetParam": { + "MultiTargetCircleArray": [ + { + "Num": 0, + "RandomOffset": 4, + "RandomOffsetBias": 0.3 + } + ], + "OneTargetCircleArray": [ + { + "Num": 1, + "Radius": 0, + "RandomOffset": 0 + }, + { + "Num": 9, + "Radius": 3, + "RandomOffset": 0.5, + "RandomOffsetBias": 0.35 + }, + { + "Radius": 5, + "RandomOffset": 0.5, + "RandomOffsetBias": 0.35 + } + ] + } + }, + "spl__WeaponSpMultiMissileLaunchParam": { + "ShotIntervalTargetArray": [4], + "ShotNumOneTargetArray": [10, 5, 4] + }, + "spl__WeaponSpMultiMissileLockOnParam": { + "TargetCircleEffectDefaultRadius": 9.3, + "TargetInCircleRadius": { + "High": 240, + "Low": 140, + "Mid": 190 + } + }, + "spl__WeaponSpMultiMissilePlayerParam": { + "JumpVelLimitSearching": 0.06, + "MoveVelLimitSearching": 0.048 + } + }, + "5": { + "CloudParam": { + "DamageRadius": 10, + "NoPaintRainNum": 0, + "RainNum": 72, + "RainyFrame": { + "High": 600, + "Low": 480, + "Mid": 540 + }, + "WithNoPaintRainNum": 120 + }, + "MoveParam": { + "GuideHitCollisionType": "InkStorm", + "SpawnSpeedY": 0.24, + "SpawnSpeedYWorldMin": -0.4, + "SpawnSpeedZSpecUp": { + "High": 1.68, + "Low": 1.12, + "Mid": 1.4 + }, + "GuideHitCollisionType@1.0.0": "EnemyOffFenceOn", + "GuideHitCollisionType@0.9.9": "InkStorm" + }, + "RainParam": { + "CollisionParam": { + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0 + }, + "MoveParam": { + "BrakeAirResist": 0, + "BrakeGravity": 0, + "BrakeToFreeStateFrame": 0, + "BrakeToFreeVelocityXZ": 0, + "BrakeToFreeVelocityY": 0, + "FreeAirResist": 0.07, + "FreeGravity": 0.02, + "GoStraightStateEndMaxSpeed": 0, + "GoStraightToBrakeStateFrame": 0, + "SpawnSpeed": 0 + } + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "XRate": 1.6, + "YMax": 0.16, + "YPlusRate": 4 + } + }, + "6": { + "BlastParam": { + "CrossPaintCheckLength": 1.5, + "CrossPaintRadius": 1.5, + "DamageOffsetY": -0.2, + "DamageRadiusEnd": 12.6, + "KnockBackParam": { + "Accel": 93.333, + "Bias": 0.8, + "Distance": 8 + }, + "PaintOffsetY": 0.3, + "PaintRadiusEnd": 13.5, + "PaintRotateDegree": 8.5, + "PaintSpanFrame": 6 + }, + "FootSplashParam": { + "PaintRadius": 4.68 + }, + "MoveParam": { + "FlyGravity": 0.021, + "FlyPositionAirResist": 0.045, + "GuideHitCollisionType": "NiceBall", + "SpawnSpeedYWorldMin": -0.4, + "SpawnSpeedZSpecUp": { + "High": 1, + "Low": 1, + "Mid": 1 + } + }, + "WeaponParam": { + "ArmorHP": 4700, + "ChargeRateAutoPerFrame": { + "High": 0.01, + "Low": 0.002, + "Mid": 0.006 + }, + "ChargeRateNiceFriend": [0.088, 0.044, 0.022, 0.011], + "ChargeRateNiceSelf": 0.077, + "ThanksPaintPointMax": 15, + "ThanksPaintPointOnce": [6, 3, 2, 1, 0.5], + "ChargeRateNiceFriend@9.1.0": [0.08, 0.04, 0.02, 0.01] + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "XRate": 0, + "YMinusRate": 0, + "YPlusRate": 0, + "ZRate": 0 + } + }, + "7": { + "spl__BulletInformImpactControlForGeyserParam": { + "AddSpeedPerImpact": 0.06 + }, + "spl__BulletSpShockSonarParam": { + "GeneratorParam": { + "HeadColRadius": 0.75, + "HitDamage": 300, + "HitDamageInterval": 0.5, + "HitKnockback": 400, + "MarkingFrame": 45, + "MarkingGroundFrameRadiusRatio": [ + { + "Frame": 4, + "Ratio": 0.19 + }, + { + "Frame": 10, + "Ratio": 0.4 + }, + { + "Frame": 18, + "Ratio": 0.615 + }, + { + "Frame": 27, + "Ratio": 0.615 + }, + { + "Frame": 37, + "Ratio": 0.615 + }, + { + "Frame": 47, + "Ratio": 0.615 + }, + { + "Frame": 57, + "Ratio": 0.615 + } + ], + "MaxHP": 4800, + "MoveParam": { + "FlyGravity": 0.009, + "FlyPositionAirResist": 0.001, + "GuideHitCollisionType": "Clam", + "SpawnSpeedY": 0.07, + "SpawnSpeedYWorldMin": -0.5, + "SpawnSpeedZSpecUp": { + "High": 0.3, + "Low": 0.3, + "Mid": 0.3 + } + }, + "PoleColHeight": 2.75, + "SphereAnimCurve": { + "Data": [ + 0, 0, 0, 0.1454545, 0, 0, 0.901515, 1, -0.1383645, 1, 0, 0 + ], + "MaxX": 1, + "Type": "Hermit2DSmooth" + }, + "SphereAnimRadius": 0.3, + "WaveEmitFrameArray": [90, 240, 390] + }, + "WaveParam": { + "Damage": 450, + "DamageYMax": 2.8, + "DamageYMin": -5.2, + "MaxFrame": { + "High": 216, + "Low": 160, + "Mid": 192 + }, + "MaxRadius": { + "High": 27, + "Low": 20, + "Mid": 24 + } + } + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "XRate": 0, + "YPlusRate": 0, + "ZRate": 0 + }, + "spl__WeaponSpShockSonarParam": { + "ShotParam": {} + } + }, + "8": { + "ExhaleBlastParamMaxCharge": { + "CrossPaintCheckLength": 6, + "CrossPaintRadius": 9, + "DamageOffsetY": 0.5, + "DistanceDamage": [ + { + "Damage": 2200, + "Distance": 11 + } + ], + "KnockBackParam": { + "Accel": 700, + "Bias": 0.8, + "Distance": 9 + }, + "PaintOffsetY": 0.5, + "PaintRadius": 11, + "DistanceDamage@10.0.0": [ + { + "Damage": 2200, + "Distance": 10 + } + ], + "DistanceDamage@4.0.0": [ + { + "Damage": 2200, + "Distance": 8 + } + ], + "DistanceDamage@1.2.0": [ + { + "Damage": 1200, + "Distance": 8 + } + ], + "PaintRadius@10.0.0": 10, + "PaintRadius@4.0.0": 8 + }, + "ExhaleBlastParamMinCharge": { + "CrossPaintCheckLength": 6, + "CrossPaintRadius": 5.5, + "DamageOffsetY": 0.5, + "DistanceDamage": [ + { + "Damage": 2200, + "Distance": 6 + } + ], + "KnockBackParam": { + "Accel": 700, + "Bias": 0.8, + "DirectionZeroAccelRate": 0, + "Distance": 9 + }, + "PaintOffsetY": 0.5, + "PaintRadius": 6, + "DistanceDamage@4.0.0": [ + { + "Damage": 2200, + "Distance": 4 + } + ], + "DistanceDamage@1.2.0": [ + { + "Damage": 1200, + "Distance": 4 + } + ], + "PaintRadius@4.0.0": 4 + }, + "ExhaleCollisionParam": { + "RadiusForPlayerMinCharge": 0.4 + }, + "ExhaleParam": { + "DirectAccel": 200, + "DirectDamage": 2200, + "FlyGravity": 0.003, + "FlyPositionAirResist": 0.01, + "GuideHitCollisionType": "BlowerExhale", + "GuideRadius": 0.25, + "PaintRadiusMaxCharge": 3.2, + "PaintRadiusMinCharge": 2.4, + "SpawnBlastWaitFrame": 50, + "SpawnSpeedY": 0.08, + "SpawnSpeedYMaxCharge": 0.08, + "SpawnSpeedZMaxCharge": 0.7, + "SpawnSpeedZSpecUp": { + "High": 0.55, + "Low": 0.55, + "Mid": 0.55 + } + }, + "ExhaleSplashPaintSpawnParam": {}, + "InhaleParam": { + "CollisionAccelRateNearest": 2, + "CollisionAccelRatePerDist": 0.01, + "CollisionAirResist": 0.12, + "CollisionAirResistMaxNum": 2, + "CollisionAirResistNum0": 0.02, + "DamagePerFrameByObject": 20, + "EffectRingSpanFrame": 56, + "EffectRingSpeed": { + "Data": [ + 0, 0.55, 0.1832544, 0.0637774, 0.5, 0, 0.4208998, 0.219, 0, 1, + 0.219, 0 + ], + "MaxX": 1, + "Type": "Hermit2D" + }, + "EffectScalePerCollision": { + "Data": [0, 0.28, 2.329197, 0.440625, 1, 0, 1, 1, 0], + "MaxX": 1, + "Type": "Hermit2D" + }, + "EffectSpanForGeyser": 10, + "EffectSpeed": 2, + "LengthAddPerFrame": 0.3334, + "LengthMax": 15, + "MuzzleCollisionOffset": 1, + "MuzzleCollisionRadius": 1.2, + "PaintSplashParam": { + "DepthMaxDropHeight": 1, + "DepthMinDropHeight": 1, + "DepthScaleMax": 2, + "DepthScaleMin": 2, + "WidthHalf": 1.5, + "WidthHalfNearest": 1.5 + }, + "PaintSplashSpanFrame": 20, + "PaintSplashSpawnOffset": { + "X": -0.3, + "Y": -0.7, + "Z": -0.7 + }, + "PoisonMistForPlayer": { + "EffectFrame": 5, + "Level": [ + {}, + { + "NextLevelCount": 4 + }, + { + "Frame": 15, + "NextLevelCount": 0 + } + ], + "SideStepInkConsumeRate": 3.5, + "SpecialWeapon": true + }, + "RadiusMax": { + "High": 4.3, + "Low": 3.3, + "Mid": 3.8, + "High@3.0.0": 4, + "Low@3.0.0": 3, + "Mid@3.0.0": 3.5 + }, + "RadiusMin": { + "High": 1.4, + "Low": 0.8, + "Mid": 1.1 + }, + "ReceiveDamageForGeyser": 10, + "ReceiveDamageForPlayer": 15 + }, + "WeaponParam": { + "ExhaleWaitFrame": 150, + "InhaleToExhaleWaitFrame": 20, + "JumpHeightFullCharge": 0.07, + "JumpHeightMinCharge": 0.115, + "JumpVelExhale": 0.07, + "MoveJumpDownBias": 1, + "MoveJumpDownStartChargeRate": 0.1, + "MoveSpeedFullCharge": 0.07, + "MoveSpeedMinCharge": 0.09, + "ShotDirXZ_RotDegH": 2, + "ShotPitVel": 0.15 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "XRate": 0.1, + "YPlusRate": 0.5, + "ZRate": 0.5 + } + }, + "9": { + "spl__BulletSpMicroLaserBitParam": { + "ChargeParam": { + "ChargeFrame": 36, + "InterpRate": 0.4, + "MaxAngularVel": 30, + "MaxAngularVelChargeStateNoTgt": 1.5 + }, + "FollowParam": { + "LockonEndFrame": 15 + }, + "LaserParam": { + "AfterLaserWaitFrame": 20, + "FreeMoveRotSpeed": 0.3, + "LaserDamage": 35, + "LaserDamageIntervalFrame": 5, + "LaserFrame": { + "High": 240, + "Low": 180, + "Mid": 220, + "Mid@2.1.0": 210 + }, + "LaserDamage@5.0.0": 30 + } + }, + "spl__WeaponSpMicroLaserParam": { + "LaunchParam": { + "EnableDualLaunch": true, + "LaserBitCenterOffset": { + "X": 0, + "Y": 1.7, + "Z": -0.6 + }, + "LaserBitRadius": 1.3, + "LockonDeg": 80, + "LockonRadius": 10 + }, + "PlayerParam": { + "AfterShot_NoBombFrm": 40, + "AfterShot_NoShotFrm": 40, + "AfterShot_NoSquidFrm": 40 + } + } + }, + "10": { + "BlastParam": { + "CrossPaintCheckLength": 0, + "CrossPaintRadius": 0, + "DistanceDamage": [ + { + "Damage": 500, + "Distance": 2.55 + }, + { + "Damage": 300, + "Distance": 5 + } + ], + "KnockBackParam": { + "Accel": 470, + "Bias": 0.6, + "Distance": 8 + }, + "PaintRadius": 3.2, + "SplashAroundParam": { + "Num": 10, + "OffsetY": 0.3, + "PaintRadius": 0.63, + "PitchMax": 30, + "PitchMin": 5, + "VelocityMax": 0.33, + "VelocityMin": 0.49 + }, + "SubSpecialSpecUpList": [ + { + "Value": { + "High": 4, + "Low": 3.2, + "Mid": 3.6 + } + }, + { + "SpecUpType": "DistanceDamageDistanceRate", + "Value": { + "High": 1.3, + "Low": 1, + "Mid": 1.15 + } + }, + { + "SpecUpType": "SplashAroundVelocityMin", + "Value": { + "High": 0.52, + "Low": 0.49, + "Mid": 0.505 + } + }, + { + "SpecUpType": "SplashAroundVelocityMax", + "Value": { + "High": 0.35, + "Low": 0.33, + "Mid": 0.34 + } + }, + { + "SpecUpType": "SplashAroundPaintRadius", + "Value": { + "High": 0.7, + "Low": 0.63, + "Mid": 0.665 + } + } + ], + "DistanceDamage@4.0.0": [ + { + "Damage": 500, + "Distance": 3 + }, + { + "Damage": 300, + "Distance": 5 + } + ], + "DistanceDamage@3.0.0": [ + { + "Damage": 500, + "Distance": 2.1 + }, + { + "Damage": 300, + "Distance": 5 + } + ] + }, + "JetParam": {}, + "LauncherCollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.3, + "FriendThroughFrameForPlayer": 1000, + "InitRadiusForField": 0.3, + "InitRadiusForPlayer": 0.3 + }, + "MoveParam": { + "Distance": 30 + }, + "WeaponParam": { + "Boost_JumpVel": 0.3, + "SpecialTotalFrame": { + "High": 510, + "Low": 450, + "Mid": 480 + } + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "XRate": 0, + "YMax": 100, + "YMinusRate": 0, + "YPlusRate": 0, + "ZRate": 0 + } + }, + "11": { + "SwingBigBlastParam": { + "CrossPaintCheckLength": 0, + "CrossPaintRadius": 0, + "DamageAttackerPriority": true, + "DamageOffsetY": 0.2, + "DistanceDamage": [ + { + "Damage": 400, + "Distance": 4 + } + ], + "KnockBackParam": { + "Accel": 460, + "Bias": 0.8, + "Distance": 8 + }, + "PaintOffsetY": 0, + "PaintRadius": 0, + "DistanceDamage@3.0.0": [ + { + "Damage": 400, + "Distance": 2.8 + } + ] + }, + "SwingBulletWallParam": {}, + "SwingParam": { + "DefiladeHandSideOffsetLength": 0.1, + "StateSwingUpLateFrame": 2 + }, + "SwingSmallBlastParam": { + "CrossPaintCheckLength": 0, + "CrossPaintRadius": 0, + "DamageAttackerPriority": true, + "DamageOffsetY": 0.2, + "DistanceDamage": [ + { + "Damage": 400, + "Distance": 4 + } + ], + "KnockBackParam": { + "Accel": 460, + "Bias": 0.8, + "Distance": 6 + }, + "PaintOffsetY": 0, + "PaintRadius": 0, + "DistanceDamage@3.0.0": [ + { + "Damage": 400, + "Distance": 2.8 + } + ] + }, + "SwingWallDropCollisionPaintParam": { + "PaintRadiusGround": 0.5 + }, + "SwingWallDropMoveParam": { + "FallPeriodFirstFrameMax": 70, + "FallPeriodFirstFrameMin": 50, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.08 + }, + "ThrowBlastParam": { + "CrossPaintCheckLength": 2.5, + "CrossPaintRadius": 2.5, + "DistanceDamage": [ + { + "Damage": 2200, + "Distance": 3.6 + }, + { + "Damage": 600, + "Distance": 8 + } + ], + "KnockBackParam": { + "Accel": 460, + "Bias": 0.8, + "Distance": 8 + }, + "PaintRadius": 5, + "DistanceDamage@11.0.1": [ + { + "Damage": 2200, + "Distance": 4 + }, + { + "Damage": 600, + "Distance": 8 + } + ], + "DistanceDamage@9.2.0": [ + { + "Damage": 600, + "Distance": 4 + }, + { + "Damage": 300, + "Distance": 8 + } + ] + }, + "ThrowMoveParam": { + "DirectAccel": 200, + "DirectDamageValue": 2200, + "FlyGravity": 0.013, + "FlyPositionAirResist": 0.03, + "GuideHitCollisionType": "ThrowUltraStamp", + "GuideRadius": 1.1, + "SpawnSpeedY": 0.17, + "SpawnSpeedYWorldMin": -0.4, + "SpawnSpeedZSpecUp": { + "High": 0.85, + "Low": 0.85, + "Mid": 0.85 + } + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "XRate": 0, + "YPlusRate": 0, + "ZRate": 0 + }, + "spl__WeaponSpUltraStampParam": { + "BangDownSmall_TurnLimitAngleDeg": 6, + "BangDown_VelLimitY": 0.14, + "HoldSwingKnockBackParam": { + "Accel": 500, + "Bias": 0.8, + "Distance": 8 + }, + "SpecialTotalFrame": { + "High": 660, + "Low": 450, + "Mid": 570, + "Low@3.1.0": 540, + "Mid@3.1.0": 600 + }, + "VelLimit_NoPaint": 0.144 + } + }, + "12": { + "AdditionMovePlayerParam": { + "ZRate": 2 + }, + "BodyParam": { + "CollisionRadiusForField": 1.15, + "CollisionRadiusForPlayer": 1.45, + "KnockBackChariotPlayer": { + "AccelMax": 720, + "AccelMin": 480, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 300 + }, + "KnockBackOpponent": { + "AccelMax": 720, + "AccelMin": 480, + "MyVelocityRate": 5400, + "OpponentVelocityRate": 300 + } + }, + "CannonParam": { + "BlastParam": { + "CrossPaintCheckLength": 0, + "CrossPaintRadius": 0, + "DamageOffsetY": 0.2, + "DistanceDamage": [ + { + "Damage": 300, + "Distance": 4.8 + } + ], + "KnockBackParam": { + "Accel": 470, + "Bias": 0.8, + "Distance": 5 + }, + "PaintOffsetY": 0.2, + "PaintRadius": 4.5, + "DistanceDamage@11.1.0": [ + { + "Damage": 300, + "Distance": 5.6 + } + ] + }, + "CollisionParam": { + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.4, + "FriendThroughFrameForPlayer": 1000, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.04 + }, + "DirectDamage": 500, + "DrawSize": 0.7, + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightToBrakeStateFrame": 8 + }, + "SplashParam": { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.1, + "PaintDepthScale": 2, + "PaintWidthHalf": 1.12 + }, + "SpawnParam": { + "SpawnBetweenLength": 3.1, + "SpawnNum": 10 + } + } + }, + "ShooterCollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.2, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.2 + }, + "ShooterDamageParam": { + "ReduceEndFrame": 25, + "ReduceStartFrame": 9, + "ValueMax": 320, + "ValueMin": 160 + }, + "ShooterMoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 2.232, + "GoStraightToBrakeStateFrame": 7, + "SpawnSpeed": 3.36 + }, + "ShooterPaintParam": { + "DistanceMiddle": 1.1, + "WidthHalfFar": 1.5, + "WidthHalfMiddle": 1.6, + "WidthHalfNear": 1.6 + }, + "ShooterSplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "WidthHalf": 1, + "WidthHalfNearest": 2.016 + }, + "ShooterSplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [], + "SpawnBetweenLength": 10, + "SpawnNearestLength": 1, + "SpawnNum": 2.5, + "SplitNum": 8 + }, + "ShooterWallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "ShooterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "WeaponSpChariotParam": { + "ArmorHP": 5000, + "ArmorHP_BreakScissors": 2500, + "CannonNoShotFrame": 32, + "MoveSpeedCoef_Squid": 0.6, + "MoveSpeedX": 0.075, + "MoveSpeedX_SpongeEnemy": 0.024, + "MoveSpeedZ": 0.015, + "MoveSpeedZ_SpongeEnemy": 0.0048, + "NoShotBombReqFrm_FinishSpecial": 25, + "PreDelayFrm_Squid_ShotBomb": 20, + "RotDegLmt_ToHumanFrm": 20, + "ShooterRepeatFrame_Bias": 0.2, + "ShooterRepeatFrame_First": 12, + "ShooterRepeatFrame_Term": 90, + "ShotGuideCannonFrame": 0, + "ShotPitVelLmt": 0.015, + "SpecialTotalFrame": { + "High": 660, + "Low": 480, + "Mid": 570, + "Low@2.0.0": 540, + "Mid@2.0.0": 600 + }, + "StartDelayFrame_Cannon": 20, + "StartDelayFrame_Shooter": 20 + }, + "spl__BulletShooterTailLengthParam": { + "DelayShotFrame": 4, + "EndMaxLength": 2 + }, + "spl__PaintMonitorSetParam": { + "RelabilityMinTime": 0 + } + }, + "13": { + "BulletBlastParam": { + "DamageOffsetY": 0.6, + "DistanceDamage": [ + { + "Damage": 2200, + "Distance": 9 + }, + { + "Damage": 700, + "Distance": 14.9 + } + ], + "KnockBackParam": { + "Accel": 700, + "Bias": 0.8, + "Distance": 12 + }, + "PaintRadius": 0, + "PaintTexture": "Bomb00", + "SplashAroundParam": { + "Num": 15, + "OffsetY": 0.3, + "PaintRadius": 0, + "PitchMax": 30, + "VelocityMax": 0, + "VelocityMin": 0 + }, + "SubSpecialSpecUpList": [ + { + "SpecUpType": "DistanceDamageDistanceRate", + "Value": { + "High": 1.2, + "Low": 1, + "Mid": 1.1 + } + }, + { + "SpecUpType": "PaintRadius", + "Value": { + "High": 9.012, + "Low": 7.51, + "Mid": 8.26 + } + }, + { + "SpecUpType": "SplashAroundVelocityMin", + "Value": { + "High": 0.7, + "Low": 0.6, + "Mid": 0.65 + } + }, + { + "SpecUpType": "SplashAroundVelocityMax", + "Value": { + "High": 0.8, + "Low": 0.7, + "Mid": 0.75 + } + }, + { + "SpecUpType": "SplashAroundPaintRadius", + "Value": { + "High": 1.2, + "Low": 1, + "Mid": 1.1 + } + } + ], + "DamageOffsetY@10.1.0": 0, + "DistanceDamage@10.1.0": [ + { + "Damage": 2200, + "Distance": 7.5 + }, + { + "Damage": 700, + "Distance": 14.9 + } + ], + "DistanceDamage@8.0.0": [ + { + "Damage": 2200, + "Distance": 7.5 + }, + { + "Damage": 700, + "Distance": 13.5 + } + ], + "DistanceDamage@3.0.0": [ + { + "Damage": 2200, + "Distance": 7.5 + }, + { + "Damage": 600, + "Distance": 11.5 + } + ], + "DistanceDamage@1.2.0": [ + { + "Damage": 1800, + "Distance": 7.5 + }, + { + "Damage": 600, + "Distance": 11.5 + } + ], + "SubSpecialSpecUpList@10.1.0": [ + { + "SpecUpType": "DistanceDamageDistanceRate", + "Value": { + "High": 1.2, + "Low": 1, + "Mid": 1.1 + } + }, + { + "SpecUpType": "PaintRadius", + "Value": { + "High": 9.69, + "Low": 8.075, + "Mid": 8.882 + } + }, + { + "SpecUpType": "SplashAroundVelocityMin", + "Value": { + "High": 0.7, + "Low": 0.6, + "Mid": 0.65 + } + }, + { + "SpecUpType": "SplashAroundVelocityMax", + "Value": { + "High": 0.8, + "Low": 0.7, + "Mid": 0.75 + } + }, + { + "SpecUpType": "SplashAroundPaintRadius", + "Value": { + "High": 1.2, + "Low": 1, + "Mid": 1.1 + } + } + ], + "SubSpecialSpecUpList@8.0.0": [ + { + "SpecUpType": "DistanceDamageDistanceRate", + "Value": { + "High": 1.2, + "Low": 1, + "Mid": 1.1 + } + }, + { + "SpecUpType": "PaintRadius", + "Value": { + "High": 10.2, + "Low": 8.5, + "Mid": 9.35 + } + }, + { + "SpecUpType": "SplashAroundVelocityMin", + "Value": { + "High": 0.7, + "Low": 0.6, + "Mid": 0.65 + } + }, + { + "SpecUpType": "SplashAroundVelocityMax", + "Value": { + "High": 0.8, + "Low": 0.7, + "Mid": 0.75 + } + }, + { + "SpecUpType": "SplashAroundPaintRadius", + "Value": { + "High": 1.2, + "Low": 1, + "Mid": 1.1 + } + } + ], + "SubSpecialSpecUpList@3.0.0": [ + { + "SpecUpType": "DistanceDamageDistanceRate", + "Value": { + "High": 1.2, + "Low": 1, + "Mid": 1.1 + } + }, + { + "SpecUpType": "PaintRadius", + "Value": { + "High": 8.4, + "Low": 7, + "Mid": 7.7 + } + }, + { + "SpecUpType": "SplashAroundVelocityMin", + "Value": { + "High": 0.6, + "Low": 0.5, + "Mid": 0.55 + } + }, + { + "SpecUpType": "SplashAroundVelocityMax", + "Value": { + "High": 0.7, + "Low": 0.6, + "Mid": 0.65 + } + }, + { + "SpecUpType": "SplashAroundPaintRadius", + "Value": { + "High": 1.2, + "Low": 1, + "Mid": 1.1 + } + } + ] + }, + "BulletParam": { + "CollisionRadiusForPlayer": 0.8, + "DamageValue": 2200, + "KnockBackLen": 250, + "DamageValue@1.2.0": 1800 + }, + "WeaponParam": { + "ChargeFrame": 0, + "Distance_Afterglow": 5, + "GravityKf": 1.2, + "MoveAcc": 0.031, + "MoveBrk": 0.031, + "MoveCancelableFrame": 15, + "MoveFrame": 54, + "MoveFrameOmen": 27, + "MoveRotDeg": 0.5, + "MoveSpeed": 0.405, + "MoveSpeed_Aerial": 0.22, + "NoDamageFrame_AfterBurst": 28, + "NoDamageStartFrame_PreMove": 25, + "OffsetLocal_DetectPlayer": { + "X": 0, + "Y": 0.8, + "Z": 1 + }, + "PaintSplashParam": { + "DepthMaxDropHeight": 1, + "DepthMinDropHeight": 1, + "DepthScaleMax": 1.8, + "DepthScaleMin": 1.8, + "WidthHalf": 3, + "WidthHalfNearest": 3 + }, + "PaintSplashSpanFrame": 3, + "PreBurstEmitFrame": 15, + "PreBurstFrame": 38, + "PreMoveFrame": 38, + "Radius_DetectPlayer": 1, + "RutPaintRadius": 1.2, + "UnrelaxFrame": 28, + "MoveFrame@10.1.0": 60, + "MoveSpeed@10.1.0": 0.45 + } + }, + "14": { + "BlastParam": { + "DamageHeightUp": 20, + "DamageRadiusEnd": 7.7, + "DamageValueEnd": 75, + "DamageValueStart": 75, + "KnockBackParam": { + "Accel": 93.333, + "Bias": 0.8, + "Distance": 8 + }, + "PaintRadiusEnd": 7, + "PaintRadiusStart": 0.5, + "PaintRotateDegree": 8.5, + "PaintSpanFrame": 2, + "RadiusSpreadFrame": 50, + "DamageRadiusEnd@2.0.0": 7, + "DamageValueEnd@2.0.0": 50, + "PaintRadiusEnd@1.0.0": 6, + "PaintRadiusEnd@0.9.9": 7 + }, + "MissileParam": { + "UseDirect": false, + "XZBias": 0.8 + }, + "MotherParam": { + "TargetHeight": 150 + }, + "MoveParam": { + "GuideHitCollisionType": "TripleTornadoGuideDevice", + "SpawnSpeedY": 0.276, + "SpawnSpeedYWorldMin": -0.4, + "SpawnSpeedZSpecUp": { + "High": 2.6, + "Low": 2, + "Mid": 2.3 + } + }, + "WeaponParam": { + "SpecialTotalFrame": 360 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "XRate": 1.6, + "YMax": 0.16, + "YPlusRate": 4 + } + }, + "15": { + "FridgeParam": { + "PowerUpFrame": { + "High": 1500, + "Low": 1020, + "Mid": 1290, + "Low@3.1.0": 900, + "Mid@3.1.0": 1200 + }, + "PutFrame": 900, + "PutFrameOnYagura": 450, + "ServeAreaHeightDown": 0, + "ServeAreaHeightUp": 3, + "ServeAreaRadius": 7, + "VanishDistance": 1.8, + "ServeAreaRadius@3.0.0": 3.5 + }, + "MoveParam": { + "CanPlaceBoundDegree": 30, + "CanPlaceBoundVel": 0.09, + "CanPlaceCheckLength1": 0, + "CanPlaceCheckLength2": 0, + "CanPlaceHeight": 1, + "FlyGravity": 0.009, + "FlyHitDeg50WallReboundMaxRt": 0.4, + "FlyHitVerticalWallReboundMaxRt": 0.3, + "FlyHitWallPitchToPlane": 5, + "FlyHitWallReboundResetFrame": 12, + "FlyPositionAirResist": 0.001, + "GuideHitCollisionType": "EnemyOffFenceOnBlowerOffShieldOff", + "GuideRadius": 1.35, + "SpawnSpeedY": 0.07, + "SpawnSpeedYWorldMin": -0.5, + "SpawnSpeedZSpecUp": { + "High": 0.4, + "Low": 0.4, + "Mid": 0.4, + "High@3.0.0": 0.3, + "Low@3.0.0": 0.3, + "Mid@3.0.0": 0.3 + } + }, + "WeaponParam": { + "SpecialReduceFrame": 600, + "SpecialReduceFrame@4.1.0": 450 + }, + "spl__BulletInformImpactControlForGeyserParam": { + "AddSpeedPerImpact": 0.03 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "XRate": 0, + "YMax": 100, + "YPlusRate": 0, + "ZRate": 0 + } + }, + "16": { + "IceParam": { + "BlastParam": { + "CrossPaintCheckLength": 2.5, + "CrossPaintRadius": 2.5, + "DamageOffsetY": 0.1, + "DistanceDamage": [ + { + "Damage": 700, + "Distance": 3.6 + }, + { + "Damage": 350, + "Distance": 6 + } + ], + "KnockBackParam": { + "Accel": 700, + "Bias": 0.8, + "Distance": 12 + }, + "PaintHeight": 4, + "PaintOffsetY": 0.1, + "PaintRadius": 3.5, + "SplashAroundParam": { + "PaintRadius": 1.116, + "PitchMax": 45, + "VelocityMax": 0.64 + }, + "SubSpecialSpecUpList": [ + { + "Value": { + "High": 4.1, + "Low": 3.5, + "Mid": 3.8 + } + }, + { + "SpecUpType": "CrossPaintCheckLength", + "Value": { + "High": 3, + "Low": 2.5, + "Mid": 2.75 + } + }, + { + "SpecUpType": "CrossPaintRadius", + "Value": { + "High": 3, + "Low": 2.5, + "Mid": 2.75 + } + }, + { + "SpecUpType": "DistanceDamageDistanceRate", + "Value": { + "High": 1.2, + "Low": 1, + "Mid": 1.1 + } + } + ], + "DistanceDamage@4.0.0": [ + { + "Damage": 600, + "Distance": 2.6 + }, + { + "Damage": 350, + "Distance": 3.8 + }, + { + "Damage": 350, + "Distance": 5 + } + ], + "DistanceDamage@3.1.0": [ + { + "Damage": 600, + "Distance": 2.6 + }, + { + "Damage": 350, + "Distance": 3.8 + }, + { + "Damage": 250, + "Distance": 5 + } + ] + }, + "BurstFrame": 210, + "CollisionRadius": 0.8, + "FlyingFrame": 108, + "GroundOffsetY": 0.9, + "HitPoint": 600, + "InitialScale": 0.1, + "PaintRadius": 2.8, + "RotateDegRatePerFrame": 0.994, + "ScaleResetFrame": 5, + "SpawnRotateDegMax": 4.5, + "SpawnRotateDegMin": 3, + "WarningAnimRestFrame": 140, + "WarningSERestFrame": 60, + "BurstFrame@8.0.0": 240 + }, + "PipeParam": { + "DepthRadius": 10, + "MinBetweenDistance": 5, + "TargetCenterBias": 0.3 + }, + "WeaponParam": { + "SpecialTotalFrame": 635, + "TargetCenterBias": 0.4, + "TargetCenterDistanceMax": 35, + "TargetCenterDistanceMin": 18, + "TargetCenterRadius": 3, + "TargetHeightCheckSpanFrame": 1, + "UseDistanceMinCameraDownRate": 0.25, + "UseDistanceMinCameraUpRate": 0.3, + "TargetCenterDistanceMin@3.1.0": 25 + } + }, + "17": { + "BodyParam": { + "CollisionAttackFrontOffset": 0.5, + "CollisionDashFrontOffset": 2.75, + "CollisionDashRadiusForPlayer": 1.5, + "CollisionJumpRadiusForPlayer": 2.65, + "CollisionPaintAttackFrontOffset": 0.5, + "CollisionPaintDashFrontOffset": 0.8, + "CollisionPaintOffFrontOffset": 0.3, + "CollisionRadiusForField": 1.15, + "CollisionUpperOffset": 0, + "DamageJumpValue": 600, + "DefiladeUpperOffset": 0.1, + "DefiladeYMinusLength": 0.2, + "PaintCheckUpperOffset": 0.4, + "PaintDepthScale": 1.2, + "PaintSpanFrame": 4, + "PaintWidthHalf": 1.2 + }, + "WeaponParam": { + "ColBullet_OffsetY": 0.25, + "ColBullet_OffsetZ_Head": 0.5, + "ColBullet_OffsetZ_Tail": -0.5, + "ColBullet_Radius": 1, + "Dash_ChargeCancelableFrame": 34, + "Dash_ChargeFrame": 35, + "Dash_InvalidFrame": 10, + "Dash_MoveFrame": 35, + "Dash_MoveSpeedCoef_Charged": 0.1, + "Dash_MoveSpeedCoef_Charging_Ed": 0.1, + "Dash_MoveSpeedCoef_Charging_St": 0.2, + "Dash_MoveSpeed_Floor_MaxCharge": 0.3, + "Dash_MoveSpeed_Floor_MinCharge": 0.3, + "Dash_MoveSpeed_Floor_NoPaint": 0.21, + "Dash_MoveSpeed_Wall_MaxCharge": 0.22, + "Dash_MoveSpeed_Wall_MinCharge": 0.22, + "DokanWarpLmtFrm_FinishSpecial": 60, + "FinishAlertStartFrame": 120, + "KnockBackKf_Charge_Ed": 1, + "KnockBackKf_Charge_Ed_Frm": 30, + "KnockBackKf_Charge_St": 3, + "KnockBackKf_Dash": 0, + "KnockBackKf_Std": 3, + "MoveSpeed": 0.192, + "NoShotBombFrm_FinishSpecial": 60, + "NoShotBombReqFrm_FinishSpecial": 40, + "SpecialTotalFrame": { + "High": 600, + "Low": 480, + "Mid": 540 + }, + "StartDelayFrame_NetRecv": 30, + "StartDelayFrame_NetSend": 60, + "StickDownRt_OnVLift": 2, + "Dash_ChargeCancelableFrame@8.0.0": 29, + "Dash_ChargeFrame@8.0.0": 30, + "MoveSpeed@5.0.0": 0.1728 + } + }, + "18": { + "BlastParamDokanWarp": { + "CrossPaintCheckLength": 6, + "CrossPaintRadius": 6, + "CrossPaintTexture": "SprLanding00", + "DistanceDamage": [ + { + "Damage": 2200, + "Distance": 7 + }, + { + "Damage": 600, + "Distance": 10.5 + } + ], + "KnockBackParam": { + "Accel": 420, + "Distance": 15 + }, + "PaintRadius": 9, + "PaintTexture": "SprLanding00", + "PlaneDamage": [ + { + "Damage": 10000, + "Distance": -4.5 + }, + { + "Damage": 10000, + "Distance": 6.4 + } + ], + "SubSpecialSpecUpList": [ + { + "SpecUpType": "DistanceDamageDistanceRate", + "Value": { + "High": 1.1, + "Low": 1, + "Mid": 1.05 + } + }, + { + "SpecUpType": "PaintRadius", + "Value": { + "High": 12, + "Low": 10, + "Mid": 11 + } + } + ], + "DistanceDamage@7.1.0": [ + { + "Damage": 2200, + "Distance": 7 + }, + { + "Damage": 600, + "Distance": 12 + } + ], + "SubSpecialSpecUpList@9.2.0": [ + { + "SpecUpType": "DistanceDamageDistanceRate", + "Value": { + "High": 1.1, + "Low": 1, + "Mid": 1.05 + } + }, + { + "SpecUpType": "PaintRadius", + "Value": { + "High": 10.8, + "Low": 9, + "Mid": 9.9 + } + } + ] + }, + "BlastParamNormal": { + "CrossPaintCheckLength": 6, + "CrossPaintRadius": 6, + "CrossPaintTexture": "SprLanding00", + "DistanceDamage": [ + { + "Damage": 2200, + "Distance": 7 + }, + { + "Damage": 600, + "Distance": 10.5 + } + ], + "KnockBackParam": { + "Accel": 420, + "Distance": 15 + }, + "PaintRadius": 9, + "PaintTexture": "SprLanding00", + "PlaneDamage": [ + { + "Damage": 10000, + "Distance": -4.5 + }, + { + "Damage": 10000, + "Distance": 6.4 + } + ], + "SubSpecialSpecUpList": [ + { + "SpecUpType": "DistanceDamageDistanceRate", + "Value": { + "High": 1.1, + "Low": 1, + "Mid": 1.05 + } + }, + { + "Value": { + "High": 12, + "Low": 10, + "Mid": 11 + } + } + ], + "DistanceDamage@7.1.0": [ + { + "Damage": 2200, + "Distance": 7 + }, + { + "Damage": 600, + "Distance": 12 + } + ], + "SubSpecialSpecUpList@9.2.0": [ + { + "SpecUpType": "DistanceDamageDistanceRate", + "Value": { + "High": 1.1, + "Low": 1, + "Mid": 1.05 + } + }, + { + "Value": { + "High": 10.8, + "Low": 9, + "Mid": 9.9 + } + } + ] + }, + "BulletParam": { + "HitPoint": 1000, + "MoveCollisionHeight": [2, 1.5, 1, 0.5], + "MoveDistance": 6, + "MoveFrame": 15, + "StartInvincibleFrame": 55, + "SuperJumpWaitFrame0": 30, + "SuperJumpWaitFrame1": 60, + "WaitRiseFrame": 0, + "StartInvincibleFrame@7.1.0": 65 + }, + "spl__WeaponSpPogoParam": { + "Rise_Frame": 60, + "Rise_NoDamageStartFrame": 60, + "SpecialTotalFrame": 60, + "Rise_Frame@7.1.0": 70, + "Rise_NoDamageStartFrame@7.1.0": 70, + "SpecialTotalFrame@7.1.0": 70 + } + }, + "19": { + "MoveParam": { + "DamageValueForDamageTag": 4000, + "GuideHitCollisionType": "InkStorm", + "SpawnSpeedY": 0.24, + "SpawnSpeedYWorldMin": -0.4, + "SpawnSpeedZSpecUp": { + "High": 1.7, + "Low": 1.3, + "Mid": 1.5, + "High@11.1.0": 1.68, + "Low@11.1.0": 1.12, + "Mid@11.1.0": 1.4 + } + }, + "WallParam": { + "ClosingFrame": 60, + "DamageValue": 400, + "DebugBlockRotateDistance": 0.5, + "DebugBlockRotateSpeedMax": 1, + "DebugBlockRotateSpeedMin": 0.5, + "DebugCircleRadius": 1, + "DebugCircleSideOffset": 1.5, + "DebugCircleSlantOffset": { + "X": 0.75, + "Y": 1 + }, + "DebugWallAlpha": 0, + "MarkingFrame": 120, + "MoveSpeed": { + "High": 0.06, + "Low": 0.04, + "Mid": 0.053 + }, + "RunningFrame": 560, + "SaturationChangeOutFrame": 120, + "SaturationFrame": 360, + "SaturationTarget": 0.05, + "SplashPaintRadius": 2.5, + "SplashSpawnAllFrame": 10, + "SplashSpawnPosition": [ + { + "X": -5, + "Y": 4.5, + "Z": 0.85 + }, + { + "X": 7, + "Y": 5, + "Z": 0.25 + }, + { + "X": -3, + "Y": 4, + "Z": 1.25 + }, + { + "X": 1, + "Y": 4, + "Z": 1.5 + }, + { + "X": 11, + "Y": 6.5, + "Z": -2 + }, + { + "X": 3, + "Y": 4, + "Z": 1.25 + }, + { + "X": 9, + "Y": 6.5, + "Z": -0.6 + }, + { + "X": -9, + "Y": 6.5, + "Z": -0.6 + }, + { + "X": -1, + "Y": 4, + "Z": 1.5 + }, + { + "X": -7, + "Y": 5, + "Z": 0.25 + }, + { + "X": 5, + "Y": 4.5, + "Z": 0.85 + }, + { + "X": -11, + "Y": 6.5, + "Z": -2 + } + ], + "SplashSpawnSpan": 45, + "StartUpFrame": 60, + "TargetSpeedFrame": 300, + "WallDepth": 0.25, + "WallHeightDown": 4.5, + "WallHeightUp": 4.5, + "WallWidth": 15, + "DamageValue@7.1.0": 300 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "XRate": 1.6, + "YMax": 0.16, + "YPlusRate": 4 + } + } + } +} diff --git a/app/features/params/data/all-version-sub-params.json b/app/features/params/data/all-version-sub-params.json new file mode 100644 index 000000000..f0b221576 --- /dev/null +++ b/app/features/params/data/all-version-sub-params.json @@ -0,0 +1,1052 @@ +{ + "metadata": { + "generatedAt": "2026-06-15T13:59:10.026Z", + "latestVersion": "11.2.0", + "versions": [ + "0.9.9", + "1.0.0", + "1.1.0", + "1.1.1", + "1.2.0", + "2.0.0", + "2.1.0", + "3.0.0", + "3.1.0", + "4.0.0", + "4.1.0", + "5.0.0", + "5.1.0", + "5.2.0", + "6.0.0", + "6.1.0", + "7.0.0", + "7.1.0", + "7.2.0", + "8.0.0", + "8.1.0", + "9.0.0", + "9.1.0", + "9.2.0", + "9.3.0", + "10.0.0", + "10.1.0", + "11.0.0", + "11.0.1", + "11.1.0", + "11.2.0" + ] + }, + "weapons": { + "0": { + "BlastParam": { + "DistanceDamage": [ + { + "Damage": 1800, + "Distance": 3.6 + }, + { + "Damage": 300, + "Distance": 7 + } + ], + "KnockBackParam": { + "Accel": 700, + "Bias": 0.8, + "Distance": 12 + }, + "PaintOffsetY": 0.1, + "SplashAroundParam": { + "Num": 15, + "OffsetY": 0.3, + "PaintRadius": 1.064, + "PitchMax": 45 + } + }, + "MoveParam": { + "BurstFrame": 60, + "CollisionSESpanFrame": 8, + "CollisionSEVelDotGroundNrm": -1, + "ContactDashPanel": { + "AddSpeedPerImpact": 0.15833, + "CrossSaveSpeedRate": 0.9 + }, + "ContactJumpPanel": { + "AddSpeedOneBoundRate": 0.7, + "AddSpeedPerImpact": 0.08333 + }, + "FlyGravity": 0.016, + "FlyRotateAirResist": 0.018, + "GroundGravity": 0.016, + "GroundPositionDeg50AirResist": 0.28, + "GroundPositionHorizonAirResist": 0.19, + "GroundRotateDeg50AirResist": 0.5, + "GroundRotateHorizonAirResist": 0.35, + "GuideRadius": 0.575, + "HitVerticalWallReboundMaxRate": 0.7, + "SpawnRotatePitch": 0.4, + "SpawnRotateRoll": 0.03, + "SpawnSpeedY": 0.24, + "SpawnSpeedYWorldMin": -0.4, + "SpawnSpeedZSpecUp": { + "High": 1.68, + "Low": 1.12, + "Mid": 1.4 + } + }, + "SubWeaponSetting": {}, + "WeaponParam": { + "InkRecoverStop": 60 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "XRate": 1.6, + "YMax": 0.32, + "YPlusRate": 4 + } + }, + "1": { + "BlastParam": { + "CrossPaintCheckLength": 2.5, + "CrossPaintRadius": 2.5, + "DamageOffsetY": 0.6, + "DistanceDamage": [ + { + "Damage": 1800, + "Distance": 4.6 + }, + { + "Damage": 300, + "Distance": 8 + } + ], + "KnockBackParam": { + "Accel": 700, + "Bias": 0.8, + "Distance": 12 + }, + "PaintOffsetY": 0.45, + "PaintRadius": 5, + "SplashAroundParam": { + "Num": 15, + "OffsetY": 0.5, + "PaintRadius": 1.116, + "PitchMax": 45, + "PitchMin": 5, + "VelocityMax": 0.64, + "VelocityMin": 0.48 + } + }, + "MoveParam": { + "GuideHitCollisionType": "EnemyOffFenceOn", + "SpawnSpeedY": 0.24, + "SpawnSpeedYWorldMin": -0.4, + "SpawnSpeedZSpecUp": { + "High": 1.68, + "Low": 1.12, + "Mid": 1.4 + }, + "WarningSERestFrame": 60 + }, + "SubWeaponSetting": {}, + "WeaponParam": { + "InkRecoverStop": 60 + }, + "spl__BulletInformImpactControlForGeyserParam": { + "AddSpeedPerImpact": 0.15 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "XRate": 1.6, + "YMax": 0.32, + "YPlusRate": 4, + "ZRate": 2 + } + }, + "2": { + "BlastParam": { + "CrossPaintCheckLength": 1.4, + "CrossPaintRadius": 1.4, + "DamageAttackerPriority": false, + "DamageLinear": false, + "DistanceDamage": [ + { + "Damage": 350, + "Distance": 2.8 + }, + { + "Damage": 250, + "Distance": 4 + } + ], + "KnockBackParam": { + "Accel": 470, + "Bias": 0.8, + "Distance": 8 + }, + "PaintOffsetY": -0.05, + "PaintRadius": 4, + "SplashAroundParam": { + "Num": 10, + "OffsetY": 0.3, + "PaintRadius": 0.7, + "PitchMax": 30, + "PitchMin": 5, + "VelocityMax": 0.35, + "VelocityMin": 0.52 + } + }, + "MoveParam": { + "GuideHitCollisionType": "EnemyOnFenceOn", + "SpawnRotatePitch": 0.4, + "SpawnSpeedY": 0.24, + "SpawnSpeedYWorldMin": -0.4, + "SpawnSpeedZSpecUp": { + "High": 1.68, + "Low": 1.12, + "Mid": 1.4 + } + }, + "SubWeaponSetting": { + "SubInkSaveLv": 4, + "SubInkSaveLv@3.0.0": 0 + }, + "WeaponParam": { + "InkConsume": 0.45, + "InkRecoverStop": 60, + "InkConsume@3.0.0": 0.4, + "InkRecoverStop@2.1.0": 50 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "XRate": 1.6, + "YMax": 0.32, + "YPlusRate": 4 + } + }, + "3": { + "MoveParam": { + "GuideHitCollisionType": "EnemyOffFenceOnBlowerOffTorpedoOff", + "HitPaintRadius": 2.9, + "PeriodFirst": { + "High": 780, + "Low": 480, + "Mid": 630, + "High@4.0.0": 600, + "Low@4.0.0": 300, + "Mid@4.0.0": 450 + }, + "PeriodSecond": { + "High": 1020, + "Low": 900, + "Mid": 960 + }, + "SpawnSpeedY": 0.24, + "SpawnSpeedYWorldMin": -0.4, + "SpawnSpeedZSpecUp": { + "High": 1.12, + "Low": 1.12, + "Mid": 1.12 + }, + "SpoutInkDrawRadius": 0.25, + "SpoutInkPaintRadiusMaxHeight": 1.5, + "SpoutInkPaintRadiusMaxRate": 1.4, + "SpoutInkPaintRadiusMinHeight": 10, + "SpoutInkPaintRadiusMinRate": 1.4 + }, + "SubWeaponSetting": { + "SubInkSaveLv": 3 + }, + "WeaponParam": { + "InkConsume": 0.6, + "InkRecoverStop": 60 + }, + "spl__BulletInformImpactControlForGeyserParam": { + "AddSpeedPerImpact": 0.15 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "XRate": 1.6, + "YMax": 0.32, + "YPlusRate": 4, + "ZRate": 2 + } + }, + "4": { + "MoveParam": { + "DamageSpanFrame": 30, + "FlyGravity": 0.009, + "FlyPositionAirResist": 0.001, + "MaxHP": { + "High": 15000, + "Low": 8000, + "Mid": 11500 + }, + "SpawnSpeedY": 0.07, + "SpawnSpeedYWorldMin": -0.5, + "SpawnSpeedZSpecUp": { + "High": 0.3, + "Low": 0.3, + "Mid": 0.3 + } + }, + "SubWeaponSetting": {}, + "WeaponParam": { + "InkConsume": 0.6, + "InkRecoverStop": 85 + }, + "spl__BulletInformImpactControlForGeyserParam": { + "AddSpeedPerImpact": 0.06 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "XRate": 0, + "YPlusRate": 0, + "ZRate": 0 + } + }, + "5": { + "MoveParam": { + "BlastParamArray": [ + { + "CrossPaintRadius": 2, + "DistanceDamage": [ + { + "Damage": 500, + "Distance": 1.6 + }, + { + "Damage": 350, + "Distance": 3.8 + } + ], + "KnockBackParam": { + "Accel": 470, + "Bias": 0.8, + "Distance": 8 + }, + "PaintRadius": 3, + "SplashAroundParam": { + "Num": 6, + "OffsetY": 0.3, + "PaintRadius": 0.7, + "PitchMax": 25, + "PitchMin": 10, + "VelocityMax": 0.4, + "VelocityMin": 0.35 + } + }, + { + "CrossPaintRadius": 2, + "DistanceDamage": [ + { + "Damage": 500, + "Distance": 1.95 + }, + { + "Damage": 350, + "Distance": 4.5 + } + ], + "KnockBackParam": { + "Accel": 470, + "Bias": 0.8, + "Distance": 8 + }, + "PaintRadius": 3.4, + "SplashAroundParam": { + "Num": 6, + "OffsetY": 0.3, + "PaintRadius": 0.7, + "PitchMax": 20, + "PitchMin": 10, + "VelocityMax": 0.42, + "VelocityMin": 0.36 + } + }, + { + "CrossPaintRadius": 2, + "DistanceDamage": [ + { + "Damage": 500, + "Distance": 2.6 + }, + { + "Damage": 350, + "Distance": 5.45 + } + ], + "KnockBackParam": { + "Accel": 470, + "Bias": 0.8, + "Distance": 8 + }, + "PaintRadius": 3.8, + "SplashAroundParam": { + "Num": 6, + "OffsetY": 0.3, + "PaintRadius": 0.7, + "PitchMax": 20, + "PitchMin": 10, + "VelocityMax": 0.43, + "VelocityMin": 0.39 + } + } + ], + "BurstSeFrameArray": [10, 7, 7], + "BurstWaitFrameArray": [15, 1, 1], + "BurstWarnFrameArray": [15, 7, 7], + "ChargeFrameArray": [40, 80], + "CollisionSeSilentFrame": 8, + "CollisionSeVelDotGndNrm": -1, + "FlyRotateAirResist": 0.018, + "FlySplashDistanceArray": [2.2, 2.2, 2.2], + "FlySplashPaintParamArray": [ + { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "DepthScaleMax": 1.6, + "DepthScaleMin": 1.6, + "WidthHalf": 1.2, + "WidthHalfNearest": 1.2 + }, + { + "DepthScaleMax": 1.6, + "DepthScaleMin": 1.6, + "WidthHalf": 1.26, + "WidthHalfNearest": 1.26 + }, + { + "DepthScaleMax": 1.6, + "DepthScaleMin": 1.6, + "WidthHalf": 1.32, + "WidthHalfNearest": 1.32 + } + ], + "FlySplashPaintRadiusArray": [0.9, 1, 1.1], + "GroundGravity": 0.016, + "GroundPositionDeg50AirResist": 0.28, + "GroundPositionHorizonAirResist": 0.19, + "GroundRotateDeg50AirResist": 0.5, + "GroundRotateHorizonAirResist": 0.35, + "HopPitchH": 58, + "HopPitchL": 48, + "HopVelH": 0.32, + "HopVelL": 0.24, + "ObjColDamage": 100, + "SpawnSpeedY": 0.24, + "SpawnSpeedZSpecUp": { + "High": 1.84, + "Low": 1.36, + "Mid": 1.6 + }, + "FlySplashPaintParamArray@9.1.0": [ + { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "DepthScaleMax": 1.6, + "DepthScaleMin": 1.6, + "WidthHalf": 1.08, + "WidthHalfNearest": 1.08 + }, + { + "DepthScaleMax": 1.6, + "DepthScaleMin": 1.6, + "WidthHalf": 1.2, + "WidthHalfNearest": 1.2 + }, + { + "DepthScaleMax": 1.6, + "DepthScaleMin": 1.6, + "WidthHalf": 1.32, + "WidthHalfNearest": 1.32 + } + ] + }, + "SubWeaponSetting": { + "SubInkSaveLv": 1 + }, + "WeaponParam": { + "InkConsume": 0.6, + "InkRecoverStop": 85, + "InkRecoverStop@1.1.1": 70 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "XRate": 1.6, + "YMax": 0.32, + "YPlusRate": 4, + "ZRate": 2 + } + }, + "6": { + "BlastParamMaxCharge": { + "CrossPaintCheckLength": 2.1, + "CrossPaintRadius": 2.1, + "DamageAttackerPriority": false, + "DistanceDamage": [ + { + "Damage": 1800, + "Distance": 4.6 + }, + { + "Damage": 300, + "Distance": 8 + } + ], + "KnockBackParam": { + "Accel": 700, + "Bias": 0.8, + "Distance": 9 + }, + "PaintRadius": 5, + "SplashAroundParam": { + "Num": 12, + "PaintRadius": 0.805, + "PitchMax": 33, + "PitchMin": 19, + "VelocityMax": 0.48, + "VelocityMin": 0.4 + } + }, + "BlastParamMinCharge": { + "CrossPaintCheckLength": 1, + "CrossPaintRadius": 1, + "DamageAttackerPriority": false, + "DistanceDamage": [ + { + "Damage": 1800, + "Distance": 1.6 + }, + { + "Damage": 300, + "Distance": 5 + } + ], + "KnockBackParam": { + "Accel": 700, + "Bias": 0.8, + "Distance": 9 + }, + "PaintRadius": 2.133, + "SplashAroundParam": { + "Num": 12, + "PaintRadius": 0.805, + "PitchMax": 33, + "PitchMin": 19, + "VelocityMax": 0.3, + "VelocityMin": 0.25 + } + }, + "MoveParam": { + "BaseSpeedComeOverRate": 0.92, + "BaseSpeedComeUnderRate": 0.96, + "BaseSpeedMinCharge": 0.22, + "BurstFrame": 210, + "BurstTimingSpeedStartRestFrame": 90, + "BurstTimingSpeedStopBias": 0.41, + "ContactDashPanel": { + "AddSpeedPerImpact": 0.22807, + "AddSpeedSequenceFrameRate": 0.95, + "ImpactDirectionSaveSpeedRate": 0 + }, + "ContactJumpPanel": { + "AddSpeedOneBoundRate": 0.5, + "AddSpeedPerImpact": 0.05167, + "MaxBoundNum": 3 + }, + "DamageDirectHit": 200, + "DamageDirectSpanSecond": 0.6667, + "FlyGravity": 0.016, + "FlyPositionAirResist": 0.05866, + "GroundGravity": 0.0016, + "GroundPositionAirResist": 0, + "GuideHitCollisionType": "EnemyOnFenceOn", + "KnockBackParam": { + "Accel": 350, + "Bias": 0, + "Degree": 60, + "Distance": 10 + }, + "ModelRotateHitWall45Degree": 1, + "ModelRotateReduceDegree": 0.005, + "PaintBurstRadiusBias": 0.65, + "PaintCheckHeight": 2, + "PaintRadiusBias": 0.25, + "PaintRadiusMaxCharge": 1.29, + "PaintRadiusMinCharge": 1.075, + "SpawnSpeedY": 0.12, + "SpawnSpeedYMaxCharge": 0.12, + "SpawnSpeedYWorldMin": -0.5, + "SpawnSpeedZMaxCharge": 0.2, + "SpawnSpeedZSpecUp": { + "High": 0.52, + "Low": 0.4, + "Mid": 0.46 + }, + "WarningAnimRestFrame": 90 + }, + "SubWeaponSetting": {}, + "WeaponParam": { + "ChargeFrameBlastRate": 2, + "InkConsume": 0.65, + "InkRecoverStop": 70, + "InkRecoverStopMaxCharge": 30, + "MaxChargeFrame": 60 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "XRate": 0.8, + "YMax": 0.16, + "YMinusRate": 0, + "YPlusRate": 2, + "ZRate": 1.2 + } + }, + "7": { + "BlastParam": { + "CrossPaintCheckLength": 1.75, + "CrossPaintRadius": 1.75, + "DistanceDamage": [ + { + "Damage": 1800, + "Distance": 2.85 + }, + { + "Damage": 300, + "Distance": 6.5 + } + ], + "KnockBackParam": { + "Accel": 470, + "Bias": 0.8, + "Distance": 9 + }, + "SplashAroundParam": { + "Num": 10, + "OffsetY": 0.3, + "PaintRadius": 0.7, + "VelocityMax": 0.35, + "VelocityMin": 0.52 + } + }, + "MoveParam": { + "BeforeRotateFrame": 30, + "ChaseAirAddSpeedXZPerFrame": 0.012, + "ChaseAirMaxSpeedXZ": 0.09, + "ChaseAirMaxSpeedY": 0.18, + "ChaseBurstWaitFrame": 60, + "ChaseFrame": 150, + "ChaseGroundAddSpeedPerFrame": 0.003, + "ChaseGroundMaxSpeed": 0.09, + "ChasePitchDegree": 3, + "ChaseRollDegree": 1.25, + "ChaseYawDegree": 2, + "ContactDashPanel": { + "AddSpeedPerImpact": 0.16667 + }, + "ContactJumpPanel": { + "AddSpeedOneBoundRate": 0.5, + "AddSpeedPerImpact": 0.08333, + "MaxBoundNum": 3 + }, + "DeathTargetApprouchDistance": 0.65, + "FindApproachBurstWaitFrame": 60, + "FindRotateFrame": 10, + "FlyGravity": 0.016, + "FlyHitWallPitchToPlane": 5, + "FlyHitWallReboundResetFrame": 12, + "FlyPositionAirResist": 0.05866, + "FlyRotateAirResist": 0.01985, + "GuideRadius": 0.5, + "NoReceiveTargetBurstWaitFrame": 180, + "SpawnRotatePitch": 0.4, + "SpawnRotateRoll": 0.12, + "SpawnSpeedY": 0.24, + "SpawnSpeedYWorldMin": -0.4, + "SpawnSpeedZSpecUp": { + "High": 1.68, + "Low": 1.12, + "Mid": 1.4 + }, + "UnfindBurstWaitFrame": 60, + "WarningAnimRestFrame": 60, + "WarningSERestFrame": 60 + }, + "SubWeaponSetting": { + "SubInkSaveLv": 1 + }, + "WeaponParam": { + "InkConsume": 0.55, + "InkRecoverStop": 85 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "XRate": 1.6, + "YMax": 0.32, + "YPlusRate": 4, + "ZRate": 2 + } + }, + "8": { + "MoveParam": { + "GuideRadius": 0, + "SpawnSpeedZSpecUp": { + "High": 1.12, + "Low": 1.12, + "Mid": 1.12 + } + }, + "SubWeaponSetting": { + "SubInkSaveLv": 3 + }, + "WeaponParam": { + "InkConsume": 0.75, + "InkRecoverStop": 0, + "KnockBackParam": { + "ImpactValue": 0.05 + } + } + }, + "9": { + "AreaParam": { + "Distance": { + "High": 6, + "Low": 6, + "Mid": 6 + }, + "MarkingFrameSubSpec": { + "High": 960, + "Low": 480, + "Mid": 720 + } + }, + "MoveParam": { + "GuideHitCollisionType": "EnemyOnFenceOnTorpedoOff", + "MarkingFrameSubSpec": { + "High": 960, + "Low": 480, + "Mid": 720 + }, + "SpawnSpeedY": 0.24, + "SpawnSpeedYWorldMin": -0.4, + "SpawnSpeedZSpecUp": { + "High": 1.87, + "Low": 1.38, + "Mid": 1.64 + } + }, + "SubWeaponSetting": { + "SubInkSaveLv": 1 + }, + "WeaponParam": { + "InkConsume": 0.45, + "InkRecoverStop": 75 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "XRate": 1.6, + "YMax": 0.32, + "YPlusRate": 4 + } + }, + "10": { + "AreaParam": { + "AreaOffsetY": 0.45, + "Distance": { + "High": 11, + "Low": 8, + "Mid": 9.5 + }, + "Frame": 1, + "MarkingFrameSubSpec": { + "High": 600, + "Low": 300, + "Mid": 450 + } + }, + "BlastParam": { + "CrossPaintCheckLength": 2.5, + "CrossPaintRadius": 2.5, + "DamageOffsetY": 0.45, + "DistanceDamage": [ + { + "Damage": 450, + "Distance": 3.6 + }, + { + "Damage": 350, + "Distance": 8 + } + ], + "KnockBackParam": { + "Accel": 700, + "Bias": 0.8, + "Distance": 12 + }, + "PaintOffsetY": 0.45, + "PaintRadius": 5, + "PlaneDamage": [ + { + "Damage": 450, + "Distance": -0.5 + }, + { + "Damage": 350, + "Distance": -1.5 + } + ], + "SubSpecialSpecUpList": [ + { + "SpecUpType": "DistanceDamageDistanceRate", + "Value": { + "High": 1.375, + "Low": 1, + "Mid": 1.1875 + } + } + ] + }, + "MoveParam": { + "GuideRadius": 0, + "MaxPlaceNum": 2, + "PlacePaintRadius": 1, + "SensorRadius": { + "High": 4, + "Low": 3, + "Mid": 3.5 + }, + "SpawnSpeedZSpecUp": { + "High": 1.12, + "Low": 1.12, + "Mid": 1.12 + } + }, + "SubWeaponSetting": { + "SubInkSaveLv": 3 + }, + "WeaponParam": { + "InkConsume": 0.6, + "InkRecoverStop": 0, + "KnockBackParam": { + "ImpactValue": 0.015 + } + } + }, + "11": { + "AreaParam": { + "AreaOffsetY": 0, + "DistanceForOff": 5.4, + "EffectParam": { + "Level": [ + { + "Frame": 60, + "NextLevelCount": 3 + }, + { + "Frame": 30, + "NextLevelCount": 4 + }, + { + "Frame": 15, + "NextLevelCount": 0 + } + ] + } + }, + "MoveParam": { + "GuideHitCollisionType": "EnemyOffFenceOnTorpedoOff", + "SpawnSpeedY": 0.24, + "SpawnSpeedYWorldMin": -0.4, + "SpawnSpeedZSpecUp": { + "High": 1.68, + "Low": 1.12, + "Mid": 1.4 + } + }, + "SubWeaponSetting": { + "SubInkSaveLv": 1 + }, + "WeaponParam": { + "InkConsume": 0.55, + "InkRecoverStop": 80, + "InkConsume@9.3.0": 0.6, + "InkRecoverStop@9.3.0": 75 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "XRate": 1.6, + "YMax": 0.32, + "YPlusRate": 4 + } + }, + "12": { + "BlastParam": { + "CollisionRadiusForPaint": 2.2, + "CrossPaintCheckLength": 0, + "CrossPaintRadius": 0, + "DamageAttackerPriority": true, + "KnockBackParam": { + "Accel": 0 + }, + "PaintHeight": 3, + "PaintOffsetY": 0, + "PaintRadius": 2, + "PaintTexture": "BombLineMarker", + "PaintRadius@2.0.0": 1 + }, + "MoveParam": { + "CollisionRadius": 0.25, + "DirectDamage": 400, + "FlyGravity": 0, + "FlyPositionAirResist": 0, + "FlyingFrame": 7, + "GuideHitCollisionType": "EnemyOnFenceOff", + "GuideRadius": 0.25, + "MarkingFrame": { + "High": 600, + "Low": 300, + "Mid": 450 + }, + "PaintRadius": 2.6, + "ReboundGroundBoundRate": 1, + "ReboundGroundReflectAngleRate": 0.1, + "ReboundWallBoundRate": 1, + "ReboundWallReflectAngleRate": 1, + "SpawnSpeedYWorldMin": -100, + "SpawnSpeedZSpecUp": { + "High": 6.8, + "Low": 6.3, + "Mid": 6.55, + "High@9.1.0": 6.48, + "High@1.2.0": 5.4, + "Low@9.1.0": 6, + "Low@1.2.0": 5, + "Mid@9.1.0": 6.24, + "Mid@1.2.0": 5.2 + }, + "TailDamage": 0, + "TailFrame": 90, + "DirectDamage@4.0.0": 350, + "DirectDamage@2.0.0": 300, + "PaintRadius@3.0.0": 1.3, + "PaintRadius@2.0.0": 0.65 + }, + "SubWeaponSetting": { + "SubInkSaveLv": 0 + }, + "WeaponParam": { + "InkConsume": 0.4, + "InkRecoverStop": 50 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "XRate": 0, + "YPlusRate": 0, + "ZRate": 0 + } + }, + "13": { + "BlastParamChase": { + "DistanceDamage": [ + { + "Damage": 600, + "Distance": 2.6 + }, + { + "Damage": 350, + "Distance": 6 + } + ], + "KnockBackParam": { + "Accel": 230, + "Bias": 0.8, + "Distance": 12 + }, + "PaintRadius": 3.5, + "SplashAroundParam": { + "Num": 8, + "PaintRadius": 0, + "PitchMax": 65, + "PitchMin": 65, + "VelocityMax": 0.48, + "VelocityMin": 0.42 + }, + "SplashBlastParam": { + "CrossPaintCheckLength": 1, + "CrossPaintRadius": 1, + "DistanceDamage": [ + { + "Damage": 120, + "Distance": 2.6 + } + ], + "KnockBackParam": { + "Accel": 0 + }, + "PaintRadius": 2 + } + }, + "BlastParamThrow": { + "DistanceDamage": [ + { + "Damage": 600, + "Distance": 2.6 + }, + { + "Damage": 350, + "Distance": 6 + } + ], + "KnockBackParam": { + "Accel": 700, + "Bias": 0.8, + "Distance": 12 + }, + "PaintOffsetY": 0.1, + "PaintRadius": 3.5, + "SplashAroundParam": { + "Num": 0, + "PaintRadius": 0.6, + "PitchMax": 45, + "VelocityMax": 0.35, + "VelocityMin": 0.3 + } + }, + "MoveParam": { + "BetweenRotEndAndStartChaseFrame": 20, + "BurstFrame": 30, + "CollisionSESpanFrame": 8, + "CollisionSEVelDotGroundNrm": -1, + "FindCollisionStartRadiusRate": 0.55555, + "FindSpawnSplashAroundParam": { + "Num": 6, + "PaintRadius": 0.7, + "PitchMax": 45, + "PitchMin": 30, + "VelocityMax": 0.23, + "VelocityMin": 0.15 + }, + "FlyRotateAirResist": 0.018, + "GroundPositionDeg50AirResist": 0.3, + "GroundPositionHorizonAirResist": 0.3, + "GroundRotateDeg50AirResist": 0.5, + "GroundRotateHorizonAirResist": 0.35, + "GuideHitCollisionType": "EnemyOffFenceOn", + "GuideRadius": 0.575, + "HitVerticalWallReboundMaxRate": 0.7, + "SpawnRotateRoll": 0.2, + "SpawnSpeedY": 0.24, + "SpawnSpeedYWorldMin": -0.4, + "SpawnSpeedZSpecUp": { + "High": 1.9, + "Low": 1.4, + "Mid": 1.65, + "High@9.1.0": 1.84, + "Low@9.1.0": 1.36, + "Mid@9.1.0": 1.6 + }, + "WarningSERestFrame": 30 + }, + "SplashNearest": {}, + "SubWeaponSetting": {}, + "WeaponParam": { + "InkConsume": 0.65, + "InkRecoverStop": 88 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "XRate": 1.6, + "YMax": 0.32, + "YPlusRate": 4 + } + } + } +} diff --git a/app/features/params/data/all-version-weapon-params.json b/app/features/params/data/all-version-weapon-params.json new file mode 100644 index 000000000..6d8be0904 --- /dev/null +++ b/app/features/params/data/all-version-weapon-params.json @@ -0,0 +1,27242 @@ +{ + "metadata": { + "generatedAt": "2026-06-15T13:59:10.026Z", + "latestVersion": "11.2.0", + "versions": [ + "0.9.9", + "1.0.0", + "1.1.0", + "1.1.1", + "1.2.0", + "2.0.0", + "2.1.0", + "3.0.0", + "3.1.0", + "4.0.0", + "4.1.0", + "5.0.0", + "5.1.0", + "5.2.0", + "6.0.0", + "6.1.0", + "7.0.0", + "7.1.0", + "7.2.0", + "8.0.0", + "8.1.0", + "9.0.0", + "9.1.0", + "9.2.0", + "9.3.0", + "10.0.0", + "10.1.0", + "11.0.0", + "11.0.1", + "11.1.0", + "11.2.0" + ] + }, + "weapons": { + "0": { + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.335, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.335, + "EndRadiusForPlayer@10.1.0": 0.25, + "EndRadiusForPlayer@7.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.25, + "InitRadiusForPlayer@7.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 22, + "ReduceStartFrame": 6, + "ValueMax": 380, + "ValueMin": 190 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "WeaponAccType": "Fast", + "WeaponSpeedType": "Fast" + }, + "MoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 1.835, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 2.06, + "GoStraightStateEndMaxSpeed@9.2.0": 1.782, + "SpawnSpeed@9.2.0": 2 + }, + "PaintParam": { + "DepthScaleMax": 2.62, + "DepthScaleMaxBreakFree": 2.62, + "DepthScaleMin": 1.31, + "DepthScaleMinBreakFree": 1.12, + "DistanceMiddle": 3.75, + "DistanceNear": 2, + "WidthHalfFar": 1.82, + "WidthHalfMiddle": 2.28, + "WidthHalfNear": 2.57 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "WidthHalf": 1.38, + "WidthHalfNearest": 1.932 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [], + "SpawnBetweenLength": 6, + "SpawnNearestLength": 1.15, + "SpawnNum": 1.4, + "SplitNum": 5 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.56 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "WeaponParam": { + "InkConsume": 0.008, + "InkRecoverStop": 15, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.4, + "Jump_DegSwerve": 17.49, + "MoveSpeed": 0.08, + "PostDelayFrame": 2, + "RepeatFrame": 5, + "ShotGuideFrame": 6, + "SquidShotShorteningFrame": 2, + "Stand_DegBiasDecrease": 0.01, + "Stand_DegBiasKf": 0.02, + "Stand_DegBiasMax": 0.4, + "Stand_DegBiasMin": 0.04, + "Stand_DegSwerve": 11.66, + "Jump_DegSwerve@9.2.0": 18, + "Stand_DegSwerve@9.2.0": 12 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "10": { + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.3, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.3, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 24, + "ReduceStartFrame": 8, + "ValueMax": 280, + "ValueMin": 140 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "WeaponSpeedType": "Fast" + }, + "MoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 1.9513, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 2.266, + "GoStraightStateEndMaxSpeed@9.2.0": 1.8945, + "SpawnSpeed@9.2.0": 2.2 + }, + "PaintParam": { + "DepthScaleMax": 2.62, + "DepthScaleMaxBreakFree": 2.62, + "DepthScaleMin": 1.31, + "DepthScaleMinBreakFree": 1.12, + "DistanceMiddle": 1.1, + "WidthHalfFar": 1.77, + "WidthHalfMiddle": 2.11, + "WidthHalfNear": 2.11 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "WidthHalf": 1.4835, + "WidthHalfNearest": 2.0769 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [3], + "SpawnBetweenLength": 9.5, + "SpawnNearestLength": 1.2, + "SpawnNum": 1.4, + "SplitNum": 7 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.56 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "WeaponParam": { + "InkConsume": 0.0043, + "InkRecoverStop": 15, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.4, + "Jump_DegSwerve": 14.58, + "MoveSpeed": 0.076, + "PostDelayFrame": 2, + "RepeatFrame": 5, + "ShotGuideFrame": 8, + "SquidShotShorteningFrame": 2, + "Stand_DegBiasDecrease": 0.01, + "Stand_DegBiasKf": 0.02, + "Stand_DegBiasMax": 0.4, + "Stand_DegBiasMin": 0.04, + "Stand_DegSwerve": 11.66, + "Jump_DegSwerve@9.2.0": 15, + "MoveSpeed@5.0.0": 0.072, + "Stand_DegSwerve@9.2.0": 12 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "20": { + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.285, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.285, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 20, + "ReduceStartFrame": 4, + "ValueMax": 280, + "ValueMin": 140 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "WeaponSpeedType": "Fast" + }, + "MoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 1.6289, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 4.0376, + "GoStraightStateEndMaxSpeed@10.0.0": 1.5815, + "SpawnSpeed@10.0.0": 3.92 + }, + "PaintParam": { + "DepthScaleMax": 2.02, + "DepthScaleMaxBreakFree": 2.02, + "DepthScaleMin": 1.18, + "DepthScaleMinBreakFree": 1.01, + "DistanceMiddle": 1.1, + "WidthHalfFar": 1.77, + "WidthHalfMiddle": 2.19, + "WidthHalfNear": 2.19, + "DepthScaleMax@3.1.0": 2.24, + "DepthScaleMaxBreakFree@3.1.0": 2.24, + "DepthScaleMin@3.1.0": 1.31, + "DepthScaleMinBreakFree@3.1.0": 1.12 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "WidthHalf": 1.428, + "WidthHalfNearest": 2.0608, + "WidthHalf@10.0.0": 1.472 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [], + "SpawnBetweenLength": 9.5, + "SpawnNearestLength": 1.15, + "SpawnNum": 1.5, + "SplitNum": 6 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.56 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "WeaponParam": { + "InkConsume": 0.008, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.4, + "Jump_DegSwerve": 0, + "MoveSpeed": 0.072, + "PostDelayFrame": 3, + "RepeatFrame": 5, + "ShotGuideFrame": 4, + "SquidShotShorteningFrame": 1, + "Stand_DegBiasDecrease": 0.005, + "Stand_DegBiasKf": 0.01, + "Stand_DegBiasMin": 0.01, + "Stand_DegSwerve": 0 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "30": { + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.3, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.3, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 24, + "ReduceStartFrame": 8, + "ValueMax": 240, + "ValueMin": 120 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "WeaponSpeedType": "Fast" + }, + "MoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 1.9513, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 2.266, + "GoStraightStateEndMaxSpeed@9.2.0": 1.8945, + "SpawnSpeed@9.2.0": 2.2 + }, + "PaintParam": { + "DepthScaleMax": 2.5, + "DepthScaleMaxBreakFree": 2.5, + "DepthScaleMin": 1.25, + "DepthScaleMinBreakFree": 1.07, + "DistanceFar": 15, + "DistanceMiddle": 4.2, + "DistanceNear": 2.1, + "WidthHalfFar": 2.051, + "WidthHalfMiddle": 2.145, + "WidthHalfNear": 2.31, + "WidthHalfFar@8.0.0": 1.99, + "WidthHalfMiddle@8.0.0": 2.08, + "WidthHalfNear@8.0.0": 2.24 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "WidthHalf": 1.52, + "WidthHalfNearest": 1.932, + "WidthHalf@2.0.0": 1.38 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [4], + "SpawnBetweenLength": 12.5, + "SpawnNearestLength": 1.3, + "SpawnNum": 1, + "SplitNum": 8 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.56 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "WeaponParam": { + "InkConsume": 0.005, + "InkRecoverStop": 15, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.4, + "Jump_DegSwerve": 15.54, + "MoveSpeed": 0.072, + "PostDelayFrame": 2, + "RepeatFrame": 4, + "ShotGuideFrame": 8, + "SquidShotShorteningFrame": 2, + "Stand_DegBiasDecrease": 0.01, + "Stand_DegBiasKf": 0.03, + "Stand_DegBiasMax": 0.5, + "Stand_DegBiasMin": 0.06, + "Stand_DegSwerve": 12.63, + "InkConsume@4.0.0": 0.0055, + "Jump_DegSwerve@9.2.0": 16, + "Stand_DegSwerve@9.2.0": 13 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "40": { + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.285, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.285, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 40, + "ReduceStartFrame": 8, + "ValueMax": 360, + "ValueMin": 180 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": {}, + "MoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 1.493, + "GoStraightToBrakeStateFrame": 4, + "SpawnSpeed": 2.266, + "GoStraightStateEndMaxSpeed@9.1.0": 1.4495, + "SpawnSpeed@9.1.0": 2.2 + }, + "PaintParam": { + "DepthScaleMax": 2.24, + "DepthScaleMaxBreakFree": 2.24, + "DepthScaleMin": 1.31, + "DepthScaleMinBreakFree": 1.12, + "DistanceMiddle": 1.1, + "WidthHalfFar": 1.71, + "WidthHalfMiddle": 1.93, + "WidthHalfNear": 1.93 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "WidthHalf": 1.472, + "WidthHalfNearest": 2.0608 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [4], + "SpawnBetweenLength": 9.2, + "SpawnNearestLength": 1.2, + "SpawnNum": 1.5, + "SplitNum": 8 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.56 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "WeaponParam": { + "InkConsume": 0.0092, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.4, + "Jump_DegSwerve": 11.66, + "MoveSpeed": 0.072, + "ShotGuideFrame": 8, + "SquidShotShorteningFrame": 1, + "Stand_DegBiasDecrease": 0.015, + "Stand_DegBiasKf": 0.01, + "Stand_DegBiasMin": 0.01, + "Stand_DegSwerve": 4.86, + "Jump_DegSwerve@9.1.0": 12, + "Stand_DegSwerve@9.1.0": 5, + "Stand_DegSwerve@4.0.0": 6 + }, + "spl__PlayerGearSkillParam_ActionSpecUp_ReduceJumpSwerveRate": {}, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "50": { + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.285, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.285, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 27, + "ReduceStartFrame": 11, + "ValueMax": 520, + "ValueMin": 300 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": {}, + "MoveParam": { + "FreeAirResist": 0.02, + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 1.667, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 3.06, + "GoStraightStateEndMaxSpeed@10.0.0": 1.8472, + "GoStraightToBrakeStateFrame@10.0.0": 4, + "SpawnSpeed@10.0.0": 2.2 + }, + "PaintParam": { + "DepthScaleMax": 2.24, + "DepthScaleMaxBreakFree": 2.24, + "DepthScaleMin": 1.31, + "DepthScaleMinBreakFree": 1.12, + "DistanceMiddle": 1.1, + "WidthHalfFar": 2.25, + "WidthHalfMiddle": 2.11, + "WidthHalfNear": 2.11 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "WidthHalf": 1.495, + "WidthHalfNearest": 2.16775 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [2], + "SpawnBetweenLength": 5.5, + "SpawnNearestLength": 1.3, + "SpawnNum": 2.4, + "SplitNum": 5 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.56 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "WeaponParam": { + "InkConsume": 0.015, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.4, + "Jump_DegSwerve": 12, + "MoveSpeed": 0.06, + "PostDelayFrame": 3, + "RepeatFrame": 9, + "ShotGuideFrame": 11, + "SquidShotShorteningFrame": 1, + "Stand_DegBiasDecrease": 0.015, + "Stand_DegBiasKf": 0.03, + "Stand_DegBiasMin": 0.02, + "Stand_DegSwerve": 6, + "InkConsume@10.0.0": 0.013 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "60": { + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.285, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.285, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 24, + "ReduceStartFrame": 8, + "ValueMax": 300, + "ValueMin": 150, + "ValueMax@6.0.0": 280, + "ValueMin@6.0.0": 140 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "WeaponSpeedType": "Fast" + }, + "MoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 1.4495, + "GoStraightToBrakeStateFrame": 4, + "SpawnSpeed": 2.2 + }, + "PaintParam": { + "DepthScaleMax": 2.24, + "DepthScaleMaxBreakFree": 2.24, + "DepthScaleMin": 1.31, + "DepthScaleMinBreakFree": 1.12, + "DistanceMiddle": 1.1, + "WidthHalfFar": 1.71, + "WidthHalfMiddle": 1.93, + "WidthHalfNear": 1.93 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "WidthHalf": 1.334, + "WidthHalfNearest": 1.97432 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [4, 8], + "SpawnBetweenLength": 11, + "SpawnNearestLength": 1, + "SpawnNum": 1.4, + "SplitNum": 11, + "ForceSpawnNearestAddNumArray@11.1.0": [5] + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.56 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "WeaponParam": { + "InkConsume": 0.008, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.4, + "Jump_DegSwerve": 12, + "MoveSpeed": 0.088, + "PostDelayFrame": 3, + "RepeatFrame": 5, + "ShotGuideFrame": 8, + "SquidShotShorteningFrame": 1, + "Stand_DegBiasDecrease": 0.005, + "Stand_DegBiasKf": 0.005, + "Stand_DegBiasMin": 0.01, + "Stand_DegSwerve": 4.75, + "MoveSpeed@9.2.0": 0.084, + "Stand_DegBiasKf@7.2.0": 0.01, + "Stand_DegSwerve@9.2.0": 5, + "Stand_DegSwerve@4.0.0": 6 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "70": { + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.235, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.235, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 23, + "ReduceStartFrame": 7, + "ValueMax": 450, + "ValueMin": 225, + "ValueMax@7.1.0": 420, + "ValueMin@7.1.0": 210 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "Overwrite_ConsumeRt_Main_High": 0.5, + "Overwrite_ConsumeRt_Main_Mid": 0.7, + "Overwrite_MoveVelRt_Shot_High": -1, + "Overwrite_MoveVelRt_Shot_Mid": -1 + }, + "MoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 2.2698, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 3.833333 + }, + "PaintParam": { + "DepthScaleMax": 2.24, + "DepthScaleMaxBreakFree": 2.24, + "DepthScaleMin": 1.31, + "DepthScaleMinBreakFree": 1.12, + "DistanceMiddle": 1.1, + "WidthHalfFar": 1.84, + "WidthHalfMiddle": 2.08, + "WidthHalfNear": 2.08, + "WidthHalfFar@4.0.0": 1.71, + "WidthHalfMiddle@4.0.0": 1.93, + "WidthHalfNear@4.0.0": 1.93 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "WidthHalf": 1.4375, + "WidthHalfNearest": 2.0125 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [], + "SpawnBetweenLength": 8.8, + "SpawnNearestLength": 0.8, + "SpawnNum": 2, + "SplitNum": 6 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.56 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "WeaponParam": { + "InkConsume": 0.02, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.4, + "Jump_DegSwerve": 6, + "MoveSpeed": 0.055, + "RepeatFrame": 8, + "ShotGuideFrame": 7, + "SquidShotShorteningFrame": 1, + "Stand_DegBiasDecrease": 0.005, + "Stand_DegBiasKf": 0.01, + "Stand_DegBiasMin": 0.01, + "Stand_DegSwerve": 2.5, + "Stand_DegSwerve@9.1.0": 2.7 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "80": { + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.235, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.235, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 25, + "ReduceStartFrame": 9, + "ValueMax": 620, + "ValueMin": 350 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": {}, + "MoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 2.377, + "GoStraightToBrakeStateFrame": 5, + "SpawnSpeed": 2.45 + }, + "PaintParam": { + "DepthScaleMax": 2.24, + "DepthScaleMaxBreakFree": 2.24, + "DepthScaleMin": 1.31, + "DepthScaleMinBreakFree": 1.12, + "DistanceMiddle": 1.1, + "WidthHalfFar": 2.25, + "WidthHalfMiddle": 2.57, + "WidthHalfNear": 2.57 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "WidthHalf": 1.5525, + "WidthHalfNearest": 2.1735 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [], + "SpawnBetweenLength": 6, + "SpawnNearestLength": 1.3, + "SpawnNum": 3.4, + "SplitNum": 5 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.56 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "WeaponParam": { + "InkConsume": 0.023, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.4, + "Jump_DegSwerve": 11.3511, + "MoveSpeed": 0.04, + "RepeatFrame": 12, + "ShotGuideFrame": 9, + "SquidShotShorteningFrame": 1, + "Stand_DegBiasDecrease": 0.02, + "Stand_DegBiasKf": 0.03, + "Stand_DegBiasMax": 0.3, + "Stand_DegBiasMin": 0.04, + "Stand_DegSwerve": 4, + "InkConsume@5.2.0": 0.025 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "90": { + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.225, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.225, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 25, + "ReduceStartFrame": 9, + "ValueMax": 320, + "ValueMin": 160 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": {}, + "MoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 2.232, + "GoStraightToBrakeStateFrame": 5, + "SpawnSpeed": 3.36 + }, + "PaintParam": { + "DepthScaleMax": 2.24, + "DepthScaleMaxBreakFree": 2.24, + "DepthScaleMin": 1.31, + "DepthScaleMinBreakFree": 1.12, + "DistanceMiddle": 1.1, + "WidthHalfFar": 1.88, + "WidthHalfMiddle": 2.12, + "WidthHalfNear": 2.12 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "WidthHalf": 1.38, + "WidthHalfNearest": 1.932 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [], + "SpawnBetweenLength": 10, + "SpawnNearestLength": 1, + "SpawnNum": 3, + "SplitNum": 8 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.56 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "WeaponParam": { + "InkConsume": 0.016, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.4, + "Jump_DegSwerve": 8, + "MoveSpeed": 0.06, + "PostDelayFrame": 4, + "RepeatFrame": 8, + "ShotGuideFrame": 9, + "SquidShotShorteningFrame": 1, + "Stand_DegBiasDecrease": 0.01, + "Stand_DegBiasKf": 0.015, + "Stand_DegBiasMin": 0.02, + "Stand_DegSwerve": 2.5, + "Stand_DegSwerve@2.0.0": 3 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "100": { + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.26, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.26, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 25, + "ReduceStartFrame": 9, + "ValueMax": 240, + "ValueMin": 120, + "ReduceEndFrame@11.0.1": 26, + "ReduceStartFrame@11.0.1": 10 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "WeaponSpeedType": "Mid" + }, + "MoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 2.2698, + "GoStraightToBrakeStateFrame": 4, + "SpawnSpeed": 2.75, + "GoStraightToBrakeStateFrame@11.0.1": 5, + "SpawnSpeed@11.0.1": 2.2 + }, + "PaintParam": { + "DepthScaleMax": 2.24, + "DepthScaleMaxBreakFree": 2.24, + "DepthScaleMin": 1.31, + "DepthScaleMinBreakFree": 1.12, + "DistanceMiddle": 1.1, + "WidthHalfFar": 2.04, + "WidthHalfMiddle": 2.3, + "WidthHalfNear": 2.3, + "WidthHalfFar@2.0.0": 1.71, + "WidthHalfMiddle@2.0.0": 1.93, + "WidthHalfNear@2.0.0": 1.93 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "WidthHalf": 1.334, + "WidthHalfNearest": 1.97432 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [3, 6, 9], + "RandomSpawnVelXMax": 0.055, + "SpawnBetweenLength": 11, + "SpawnNearestLength": 1, + "SpawnNum": 1.4, + "SplitNum": 11, + "ForceSpawnNearestAddNumArray@3.0.0": [5] + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.56 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "WeaponParam": { + "InkConsume": 0.0096, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.4, + "Jump_DegSwerve": 8, + "MoveSpeed": 0.079, + "PostDelayFrame": 3, + "RepeatFrame": 6, + "ShotGuideFrame": 9, + "SquidShotShorteningFrame": 1, + "Stand_DegBiasDecrease": 0.02, + "Stand_DegBiasKf": 0.03, + "Stand_DegBiasMax": 0.25, + "Stand_DegBiasMin": 0.1, + "Stand_DegSwerve": 4.5, + "Jump_DegSwerve@9.2.0": 12, + "MoveSpeed@3.0.0": 0.072, + "ShotGuideFrame@11.0.1": 10, + "Stand_DegSwerve@10.0.0": 5.5, + "Stand_DegSwerve@7.1.0": 6 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "200": { + "BlastParam": { + "CrossPaintCheckLength": 0, + "CrossPaintRadius": 0, + "DamageAttackerPriority": true, + "DamageLinear": true, + "DistanceDamage": [ + { + "Damage": 700, + "Distance": 1.7 + }, + { + "Damage": 500, + "Distance": 3.9 + } + ], + "KnockBackParam": { + "Accel": 700, + "Bias": 0.8, + "Distance": 4, + "Distance@10.1.0": 3.8, + "Distance@9.1.0": 3.2 + }, + "PaintRadius": 0, + "DistanceDamage@11.1.0": [ + { + "Damage": 700, + "Distance": 1.8 + }, + { + "Damage": 500, + "Distance": 4 + } + ], + "DistanceDamage@10.1.0": [ + { + "Damage": 700, + "Distance": 1.6 + }, + { + "Damage": 500, + "Distance": 3.8 + } + ], + "DistanceDamage@9.1.0": [ + { + "Damage": 700, + "Distance": 1.5 + }, + { + "Damage": 500, + "Distance": 3.57 + } + ], + "DistanceDamage@3.0.0": [ + { + "Damage": 700, + "Distance": 1 + }, + { + "Damage": 500, + "Distance": 3.57 + } + ] + }, + "BlasterBurstParam": { + "BurstFrame": 11, + "ShotCollisionHitRadiusRate": 0.4166, + "SplashDropPaintRadius": 3.84, + "SplashDropPaintShotColHitRadius": 2.76, + "SplashPaintRadius": 2.4, + "SplashPaintShotColHitRadius": 1.68, + "SplashRoundAxisXArray": [-90, -45, 0, 45], + "SplashRoundAxisYArray": [0, 30, 60, 90, 120], + "SplashWallDropMoveParam": { + "FallPeriodFirstFrameMax": 1, + "FallPeriodFirstFrameMin": 1, + "FallPeriodFirstTargetSpeed": 0, + "FallPeriodLastFrameMax": 1, + "FallPeriodLastFrameMin": 1, + "FallPeriodSecondFrame": 1, + "FallPeriodSecondTargetSpeed": 0 + }, + "SplashWallDropPaintParam": { + "PaintRadiusFall": 0, + "PaintRadiusGround": 0, + "PaintRadiusShock": 1.2 + }, + "ShotCollisionHitRadiusRate@11.0.0": 0.4687, + "SplashDropPaintShotColHitRadius@7.1.0": 2.3 + }, + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.3, + "FriendThroughFrameForPlayer": 1000, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.3, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 99, + "ReduceStartFrame": -1, + "ValueMax": 1250, + "ValueMin": 1250 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "Overwrite_ConsumeRt_Main_High": 0.5, + "Overwrite_ConsumeRt_Main_Mid": 0.7, + "WeaponSpeedType": "Fast" + }, + "MoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 0.8484, + "GoStraightToBrakeStateFrame": 7, + "SpawnSpeed": 0.87 + }, + "PaintParam": { + "DistanceMiddle": 0, + "WidthHalfFar": 0, + "WidthHalfMiddle": 0, + "WidthHalfNear": 0 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "WidthHalf": 1.56, + "WidthHalfNearest": 2.496 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [], + "SpawnBetweenLength": 1.5, + "SpawnNearestLength": 1, + "SpawnNum": 6, + "SplitNum": 1 + }, + "SplashWallHitParam": { + "SpawnParam": { + "FirstDistance": 1.8, + "VelocityMinusYRate": 0.4 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 0.5, + "PaintRadiusFall": 1, + "PaintRadiusShock": 1.4 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.07, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 35, + "FallPeriodSecondTargetSpeed": 0.04 + } + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 0.5, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.07, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 35, + "FallPeriodSecondTargetSpeed": 0.04 + }, + "WeaponParam": { + "InkConsume": 0.075, + "InkRecoverStop": 55, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.5, + "Jump_DegSwerve": 5.5, + "MoveSpeed": 0.05, + "PostDelayFrame": 4, + "PostDelayFrame_Blaster": 26, + "PreDelayFrame_HumanShot": 10, + "PreDelayFrame_SquidShot": 15, + "RepeatFrame": 40, + "ShotGuideFrame": 11, + "Stand_DegBiasDecrease": 0, + "Stand_DegBiasKf": 0, + "Stand_DegBiasMax": 0, + "Stand_DegBiasMin": 0, + "Stand_DegSwerve": 0, + "Jump_DegSwerve@11.1.0": 6, + "Jump_DegSwerve@4.0.0": 8 + }, + "spl__PlayerGearSkillParam_ActionSpecUp_ReduceJumpSwerveRate": { + "Mid": 0.625, + "Mid@4.0.0": 0.5 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "210": { + "BlastParam": { + "CrossPaintCheckLength": 0, + "CrossPaintRadius": 0, + "DamageAttackerPriority": true, + "DamageLinear": true, + "DistanceDamage": [ + { + "Damage": 700, + "Distance": 1.025 + }, + { + "Damage": 500, + "Distance": 3.385 + } + ], + "KnockBackParam": { + "Accel": 700, + "Bias": 0.8, + "Distance": 3.5, + "Distance@10.1.0": 3.3 + }, + "PaintRadius": 0, + "DistanceDamage@11.1.0": [ + { + "Damage": 700, + "Distance": 1.11 + }, + { + "Damage": 500, + "Distance": 3.47 + } + ], + "DistanceDamage@10.1.0": [ + { + "Damage": 700, + "Distance": 0.94 + }, + { + "Damage": 500, + "Distance": 3.3 + } + ] + }, + "BlasterBurstParam": { + "ShotCollisionHitRadiusRate": 0.4234, + "SplashDropPaintShotColHitRadius": 2.5, + "SplashRoundAxisXArray": [-90, -45, 0, 45], + "SplashRoundAxisYArray": [0, 30, 60, 90, 120], + "SplashWallDropMoveParam": { + "FallPeriodFirstFrameMax": 1, + "FallPeriodFirstFrameMin": 1, + "FallPeriodFirstTargetSpeed": 0, + "FallPeriodLastFrameMax": 1, + "FallPeriodLastFrameMin": 1, + "FallPeriodSecondFrame": 1, + "FallPeriodSecondTargetSpeed": 0 + }, + "SplashWallDropPaintParam": { + "PaintRadiusFall": 0, + "PaintRadiusGround": 0, + "PaintRadiusShock": 1.2 + } + }, + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.285, + "FriendThroughFrameForPlayer": 1000, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.285, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 99, + "ReduceStartFrame": -1, + "ValueMax": 1250, + "ValueMin": 1250 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": {}, + "MoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 0.9131, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0.945 + }, + "PaintParam": { + "DistanceMiddle": 0, + "WidthHalfFar": 0, + "WidthHalfMiddle": 0, + "WidthHalfNear": 0 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "WidthHalf": 1.62, + "WidthHalfNearest": 2.43 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [], + "SpawnBetweenLength": 1.5, + "SpawnNearestLength": 0.5, + "SpawnNum": 7, + "SplitNum": 1 + }, + "SplashWallHitParam": { + "SpawnParam": { + "FirstDistance": 1.8, + "VelocityMinusYRate": 0.4 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 0.5, + "PaintRadiusFall": 1, + "PaintRadiusShock": 1.4 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.07, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 35, + "FallPeriodSecondTargetSpeed": 0.04 + } + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 0.5, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.07, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 35, + "FallPeriodSecondTargetSpeed": 0.04 + }, + "WeaponParam": { + "InkConsume": 0.1, + "InkRecoverStop": 57, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.5, + "Jump_DegSwerve": 10, + "MoveSpeed": 0.045, + "PostDelayFrame": 4, + "PostDelayFrame_Blaster": 22, + "PreDelayFrame_HumanShot": 10, + "PreDelayFrame_SquidShot": 15, + "RepeatFrame": 50, + "ShotGuideFrame": 13, + "Stand_DegBiasDecrease": 0, + "Stand_DegBiasKf": 0, + "Stand_DegBiasMax": 0, + "Stand_DegBiasMin": 0, + "Stand_DegSwerve": 0, + "InkRecoverStop@8.0.0": 60, + "PostDelayFrame_Blaster@11.1.0": 21 + }, + "spl__PlayerGearSkillParam_ActionSpecUp_ReduceJumpSwerveRate": { + "Mid": 0.5 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "220": { + "BlastParam": { + "CrossPaintCheckLength": 0, + "CrossPaintRadius": 0, + "DamageAttackerPriority": true, + "DamageLinear": true, + "DistanceDamage": [ + { + "Damage": 700, + "Distance": 0.975 + }, + { + "Damage": 500, + "Distance": 3.335 + } + ], + "KnockBackParam": { + "Accel": 700, + "Bias": 0.8, + "Distance": 3.45, + "Distance@10.1.0": 3.3, + "Distance@8.1.0": 3.5 + }, + "PaintRadius": 0, + "DistanceDamage@11.1.0": [ + { + "Damage": 700, + "Distance": 1.01 + }, + { + "Damage": 500, + "Distance": 3.37 + } + ], + "DistanceDamage@10.1.0": [ + { + "Damage": 700, + "Distance": 0.94 + }, + { + "Damage": 500, + "Distance": 3.3 + } + ], + "DistanceDamage@8.1.0": [ + { + "Damage": 700, + "Distance": 1 + }, + { + "Damage": 500, + "Distance": 3.5 + } + ] + }, + "BlasterBurstParam": { + "BurstFrame": 15, + "ShotCollisionHitRadiusRate": 0.4653, + "SplashDropPaintRadius": 3.14, + "SplashDropPaintShotColHitRadius": 2.355, + "SplashPaintRadius": 2.093, + "SplashPaintShotColHitRadius": 1.465, + "SplashRoundAxisXArray": [-90, -45, 0, 45], + "SplashRoundAxisYArray": [0, 30, 60, 90, 120], + "SplashWallDropMoveParam": { + "FallPeriodFirstFrameMax": 1, + "FallPeriodFirstFrameMin": 1, + "FallPeriodFirstTargetSpeed": 0, + "FallPeriodLastFrameMax": 1, + "FallPeriodLastFrameMin": 1, + "FallPeriodSecondFrame": 1, + "FallPeriodSecondTargetSpeed": 0 + }, + "SplashWallDropPaintParam": { + "PaintRadiusFall": 0, + "PaintRadiusGround": 0, + "PaintRadiusShock": 1.2 + }, + "SplashDropPaintRadius@8.1.0": 3.45, + "SplashDropPaintRadius@5.2.0": 3, + "SplashDropPaintShotColHitRadius@8.1.0": 2.5875, + "SplashDropPaintShotColHitRadius@5.2.0": 2.25, + "SplashPaintRadius@8.1.0": 2.3, + "SplashPaintShotColHitRadius@8.1.0": 1.61 + }, + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.235, + "FriendThroughFrameForPlayer": 1000, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.235, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 99, + "ReduceStartFrame": -1, + "ValueMax": 1250, + "ValueMin": 1250 + }, + "MainWeaponSetting": {}, + "MoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 1.0073, + "GoStraightToBrakeStateFrame": 11, + "SpawnSpeed": 1.08 + }, + "PaintParam": { + "DistanceMiddle": 0, + "WidthHalfFar": 0, + "WidthHalfMiddle": 0, + "WidthHalfNear": 0 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "WidthHalf": 1.56, + "WidthHalfNearest": 2.184 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [], + "SpawnBetweenLength": 1.9, + "SpawnNearestLength": 1, + "SpawnNum": 9, + "SplitNum": 1 + }, + "SplashWallHitParam": { + "SpawnParam": { + "DistanceXZRate": 0, + "FirstDistance": 2.5, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMin": 30, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 30, + "FallPeriodSecondTargetSpeed": 0.05 + } + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 0.5, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.07, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 35, + "FallPeriodSecondTargetSpeed": 0.04 + }, + "WeaponParam": { + "InkConsume": 0.11, + "InkRecoverStop": 70, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.5, + "Jump_DegSwerve": 8, + "MoveSpeed": 0.04, + "PostDelayFrame": 4, + "PostDelayFrame_Blaster": 30, + "PreDelayFrame_HumanShot": 10, + "PreDelayFrame_SquidShot": 15, + "RepeatFrame": 60, + "ShotGuideFrame": 15, + "Stand_DegBiasDecrease": 0, + "Stand_DegBiasKf": 0, + "Stand_DegBiasMax": 0, + "Stand_DegBiasMin": 0, + "Stand_DegSwerve": 0 + }, + "spl__PlayerGearSkillParam_ActionSpecUp_ReduceJumpSwerveRate": { + "Mid": 0.5 + }, + "spl__PlayerGearSkillParam_MainEffectiveRangeUp": {}, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "230": { + "BlastParam": { + "CrossPaintCheckLength": 0, + "CrossPaintRadius": 0, + "DamageAttackerPriority": true, + "DamageLinear": true, + "DistanceDamage": [ + { + "Damage": 300, + "Distance": 1.17 + }, + { + "Damage": 300, + "Distance": 4.085 + } + ], + "KnockBackParam": { + "Accel": 700, + "Bias": 0.8, + "Distance": 4.2, + "Distance@10.1.0": 4 + }, + "PaintRadius": 0, + "DistanceDamage@11.1.0": [ + { + "Damage": 300, + "Distance": 1.17 + }, + { + "Damage": 300, + "Distance": 4.17 + } + ], + "DistanceDamage@10.1.0": [ + { + "Damage": 300, + "Distance": 1 + }, + { + "Damage": 300, + "Distance": 4 + } + ] + }, + "BlasterBurstParam": { + "BurstFrame": 12, + "MoveLength": 2.4, + "NoOccurRoundYOver90RoundXPlus": true, + "ShotCollisionHitRadiusRate": 0.4273, + "SplashDropPaintRadius": 2.5, + "SplashDropPaintShotColHitRadius": 2.2, + "SplashPaintRadius": 1.8, + "SplashPaintShotColHitRadius": 1.6, + "SplashRoundAxisXArray": [0, 0, 0, -90], + "SplashRoundAxisYArray": [0, 45, 90, 135, 0], + "SplashWallDropMoveParam": { + "FallPeriodFirstFrameMax": 1, + "FallPeriodFirstFrameMin": 1, + "FallPeriodFirstTargetSpeed": 0, + "FallPeriodLastFrameMax": 1, + "FallPeriodLastFrameMin": 1, + "FallPeriodSecondFrame": 1, + "FallPeriodSecondTargetSpeed": 0 + }, + "SplashWallDropPaintParam": { + "PaintRadiusFall": 0, + "PaintRadiusGround": 0, + "PaintRadiusShock": 1.2 + }, + "WallHitPaintRadius": 1.8 + }, + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.285, + "FriendThroughFrameForPlayer": 1000, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.285, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 99, + "ReduceStartFrame": -1, + "ValueMax": 600, + "ValueMin": 600 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "WeaponSpeedType": "Fast" + }, + "MoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 0.92715, + "GoStraightToBrakeStateFrame": 8, + "SpawnSpeed": 0.935 + }, + "PaintParam": { + "DistanceMiddle": 0, + "WidthHalfFar": 0, + "WidthHalfMiddle": 0, + "WidthHalfNear": 0 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "DepthScaleMax": 2.1, + "WidthHalf": 1.45, + "WidthHalfNearest": 1.7976, + "WidthHalf@10.0.0": 1.284 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [], + "SpawnBetweenLength": 3.2, + "SpawnNearestLength": 0.5, + "SpawnNum": 3, + "SplitNum": 2 + }, + "SplashWallHitParam": { + "SpawnParam": { + "DistanceXZRate": 0, + "FirstDistance": 2.5, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMin": 30, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 30, + "FallPeriodSecondTargetSpeed": 0.05 + } + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 0.5, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.07, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 35, + "FallPeriodSecondTargetSpeed": 0.04 + }, + "WeaponParam": { + "InkConsume": 0.04, + "InkRecoverStop": 40, + "Jump_DegBiasDecreaseStartFrame": 40, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.5, + "Jump_DegSwerve": 7, + "MoveSpeed": 0.068, + "PostDelayFrame": 4, + "PostDelayFrame_Blaster": 20, + "PreDelayFrame_HumanShot": 8, + "PreDelayFrame_SquidShot": 12, + "RepeatFrame": 20, + "ShotGuideFrame": 12, + "SquidShotShorteningFrame": 1, + "Stand_DegBiasDecrease": 0, + "Stand_DegBiasKf": 0, + "Stand_DegBiasMax": 0, + "Stand_DegBiasMin": 0, + "Stand_DegSwerve": 0, + "Jump_DegSwerve@11.1.0": 8, + "MoveSpeed@8.0.0": 0.065 + }, + "spl__PlayerGearSkillParam_ActionSpecUp_ReduceJumpSwerveRate": { + "Mid": 0.5 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "240": { + "BlastParam": { + "CrossPaintCheckLength": 0, + "CrossPaintRadius": 0, + "DamageAttackerPriority": true, + "DamageLinear": true, + "DistanceDamage": [ + { + "Damage": 350, + "Distance": 1.01 + }, + { + "Damage": 350, + "Distance": 3.335 + } + ], + "KnockBackParam": { + "Accel": 700, + "Bias": 0.8, + "Distance": 3.4, + "Distance@10.1.0": 3.3 + }, + "PaintRadius": 0, + "DistanceDamage@11.1.0": [ + { + "Damage": 350, + "Distance": 1.01 + }, + { + "Damage": 350, + "Distance": 3.37 + } + ], + "DistanceDamage@10.1.0": [ + { + "Damage": 350, + "Distance": 0.94 + }, + { + "Damage": 350, + "Distance": 3.3 + } + ] + }, + "BlasterBurstParam": { + "BurstFrame": 15, + "MoveLength": 2, + "ShotCollisionHitRadiusRate": 0.4653, + "SplashDropPaintRadius": 2.8, + "SplashDropPaintShotColHitRadius": 2.3, + "SplashRoundAxisXArray": [-90, -45, 0, 45], + "SplashRoundAxisYArray": [0, 30, 60, 90, 120], + "SplashWallDropMoveParam": { + "FallPeriodFirstFrameMax": 1, + "FallPeriodFirstFrameMin": 1, + "FallPeriodFirstTargetSpeed": 0, + "FallPeriodLastFrameMax": 1, + "FallPeriodLastFrameMin": 1, + "FallPeriodSecondFrame": 1, + "FallPeriodSecondTargetSpeed": 0 + }, + "SplashWallDropPaintParam": { + "PaintRadiusFall": 0, + "PaintRadiusGround": 0, + "PaintRadiusShock": 1.2 + }, + "WallHitPaintRadius": 1.9 + }, + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.235, + "FriendThroughFrameForPlayer": 1000, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.235, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 99, + "ReduceStartFrame": -1, + "ValueMax": 850, + "ValueMin": 850 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": {}, + "MoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 1.13305, + "GoStraightToBrakeStateFrame": 11, + "SpawnSpeed": 1.2 + }, + "PaintParam": { + "DistanceMiddle": 0, + "WidthHalfFar": 0, + "WidthHalfMiddle": 0, + "WidthHalfNear": 0 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "WidthHalf": 1.452, + "WidthHalfNearest": 1.848, + "WidthHalf@11.0.0": 1.32 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [], + "SpawnBetweenLength": 1.62, + "SpawnNearestLength": 0.9, + "SpawnNum": 11, + "SplitNum": 1 + }, + "SplashWallHitParam": { + "SpawnParam": { + "DistanceXZRate": 0, + "FirstDistance": 2.5, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMin": 30, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 30, + "FallPeriodSecondTargetSpeed": 0.05 + } + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 0.5, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.07, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 35, + "FallPeriodSecondTargetSpeed": 0.04 + }, + "WeaponParam": { + "InkConsume": 0.07, + "InkRecoverStop": 47, + "Jump_DegBiasDecreaseStartFrame": 40, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.5, + "Jump_DegSwerve": 8, + "MoveSpeed": 0.055, + "PostDelayFrame": 4, + "PostDelayFrame_Blaster": 20, + "PreDelayFrame_HumanShot": 8, + "PreDelayFrame_SquidShot": 12, + "RepeatFrame": 35, + "ShotGuideFrame": 15, + "SquidShotShorteningFrame": 1, + "Stand_DegBiasDecrease": 0, + "Stand_DegBiasKf": 0, + "Stand_DegBiasMax": 0, + "Stand_DegBiasMin": 0, + "Stand_DegSwerve": 0, + "InkRecoverStop@7.2.0": 50 + }, + "spl__PlayerGearSkillParam_ActionSpecUp_ReduceJumpSwerveRate": { + "Mid": 0.5 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "250": { + "BlastParam": { + "CrossPaintCheckLength": 0, + "CrossPaintRadius": 0, + "DamageAttackerPriority": true, + "DamageLinear": true, + "DistanceDamage": [ + { + "Damage": 350, + "Distance": 0.99 + }, + { + "Damage": 350, + "Distance": 3.325 + } + ], + "KnockBackParam": { + "Accel": 700, + "Bias": 0.8, + "Distance": 3.35, + "Distance@10.1.0": 3.3 + }, + "PaintRadius": 0, + "DistanceDamage@11.1.0": [ + { + "Damage": 350, + "Distance": 0.99 + }, + { + "Damage": 350, + "Distance": 3.35 + } + ], + "DistanceDamage@10.1.0": [ + { + "Damage": 350, + "Distance": 0.94 + }, + { + "Damage": 350, + "Distance": 3.3 + } + ] + }, + "BlasterBurstParam": { + "BurstFrame": 15, + "MoveLength": 2, + "ShotCollisionHitRadiusRate": 0.4747, + "SplashDropPaintRadius": 2.8, + "SplashDropPaintShotColHitRadius": 2.22, + "SplashRoundAxisXArray": [-90, -45, 0, 45], + "SplashRoundAxisYArray": [0, 30, 60, 90, 120], + "SplashWallDropMoveParam": { + "FallPeriodFirstFrameMax": 1, + "FallPeriodFirstFrameMin": 1, + "FallPeriodFirstTargetSpeed": 0, + "FallPeriodLastFrameMax": 1, + "FallPeriodLastFrameMin": 1, + "FallPeriodSecondFrame": 1, + "FallPeriodSecondTargetSpeed": 0 + }, + "SplashWallDropPaintParam": { + "PaintRadiusFall": 0, + "PaintRadiusGround": 0, + "PaintRadiusShock": 1.2 + }, + "WallHitPaintRadius": 1.9 + }, + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.225, + "FriendThroughFrameForPlayer": 1000, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.225, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 99, + "ReduceStartFrame": -1, + "ValueMax": 850, + "ValueMin": 850 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": {}, + "MoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 1.3426, + "GoStraightToBrakeStateFrame": 11, + "SpawnSpeed": 1.4 + }, + "PaintParam": { + "DistanceMiddle": 0, + "WidthHalfFar": 0, + "WidthHalfMiddle": 0, + "WidthHalfNear": 0 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "WidthHalf": 1.32, + "WidthHalfNearest": 1.848 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [], + "SpawnBetweenLength": 1.62, + "SpawnNearestLength": 0.9, + "SpawnNum": 12, + "SplitNum": 1 + }, + "SplashWallHitParam": { + "SpawnParam": { + "DistanceXZRate": 0, + "FirstDistance": 2.5, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMin": 30, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 30, + "FallPeriodSecondTargetSpeed": 0.05 + } + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 0.5, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.07, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 35, + "FallPeriodSecondTargetSpeed": 0.04 + }, + "WeaponParam": { + "InkConsume": 0.0912, + "InkRecoverStop": 60, + "Jump_DegBiasDecreaseStartFrame": 40, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.5, + "Jump_DegSwerve": 8, + "MoveSpeed": 0.05, + "PostDelayFrame": 4, + "PostDelayFrame_Blaster": 20, + "PreDelayFrame_HumanShot": 8, + "PreDelayFrame_SquidShot": 12, + "RepeatFrame": 40, + "ShotGuideFrame": 15, + "Stand_DegBiasDecrease": 0, + "Stand_DegBiasKf": 0, + "Stand_DegBiasMax": 0, + "Stand_DegBiasMin": 0, + "Stand_DegSwerve": 0, + "InkConsume@11.0.0": 0.08, + "InkRecoverStop@11.1.0": 50 + }, + "spl__PlayerGearSkillParam_ActionSpecUp_ReduceJumpSwerveRate": { + "Mid": 0.5 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "260": { + "BlastJumpParam": { + "CrossPaintCheckLength": 0, + "CrossPaintRadius": 0, + "DamageAttackerPriority": true, + "DamageLinear": true, + "DistanceDamage": [ + { + "Damage": 700, + "Distance": 0.975 + }, + { + "Damage": 500, + "Distance": 3.635 + } + ], + "KnockBackParam": { + "Accel": 700, + "Bias": 0.8, + "Distance": 3.75, + "Distance@10.1.0": 4 + }, + "PaintRadius": 0, + "DistanceDamage@11.1.0": [ + { + "Damage": 700, + "Distance": 1.06 + }, + { + "Damage": 500, + "Distance": 3.72 + } + ], + "DistanceDamage@10.1.0": [ + { + "Damage": 700, + "Distance": 1 + }, + { + "Damage": 500, + "Distance": 4 + } + ] + }, + "BlastParam": { + "CrossPaintCheckLength": 0, + "CrossPaintRadius": 0, + "DamageAttackerPriority": true, + "DamageLinear": true, + "DistanceDamage": [ + { + "Damage": 700, + "Distance": 1.035 + }, + { + "Damage": 500, + "Distance": 2.035 + } + ], + "KnockBackParam": { + "Accel": 700, + "Bias": 0.8, + "Distance": 2.5 + }, + "PaintRadius": 0, + "DistanceDamage@11.1.0": [ + { + "Damage": 700, + "Distance": 1.07 + }, + { + "Damage": 500, + "Distance": 2.07 + } + ], + "DistanceDamage@10.1.0": [ + { + "Damage": 700, + "Distance": 1 + }, + { + "Damage": 500, + "Distance": 2 + } + ], + "DistanceDamage@7.1.0": [ + { + "Damage": 700, + "Distance": 1 + }, + { + "Damage": 500, + "Distance": 1.8 + } + ] + }, + "BlasterBurstJumpParam": { + "BurstFrame": 11, + "MoveLength": 2.2, + "ShotCollisionHitRadiusRate": 0.4716, + "SplashDropPaintRadius": 3.7, + "SplashDropPaintShotColHitRadius": 2.5, + "SplashPaintRadius": 2.5, + "SplashPaintShotColHitRadius": 1.9, + "SplashRoundAxisXArray": [-90, -45, 0, 45], + "SplashRoundAxisYArray": [0, 30, 60, 90, 120], + "SplashWallDropMoveParam": { + "FallPeriodFirstFrameMax": 1, + "FallPeriodFirstFrameMin": 1, + "FallPeriodFirstTargetSpeed": 0, + "FallPeriodLastFrameMax": 1, + "FallPeriodLastFrameMin": 1, + "FallPeriodSecondFrame": 1, + "FallPeriodSecondTargetSpeed": 0 + }, + "SplashWallDropPaintParam": { + "PaintRadiusFall": 0, + "PaintRadiusGround": 0, + "PaintRadiusShock": 1.2 + }, + "WallHitPaintRadius": 2.7 + }, + "BlasterBurstParam": { + "BurstFrame": 11, + "MoveLength": 1.5, + "ShotCollisionHitRadiusRate": 0.4672, + "SplashDropPaintRadius": 2, + "SplashDropPaintShotColHitRadius": 1.23, + "SplashPaintRadius": 1, + "SplashPaintShotColHitRadius": 0.7, + "SplashRoundAxisXArray": [-90, -45, 0, 45], + "SplashRoundAxisYArray": [0, 30, 60, 90, 120], + "SplashWallDropMoveParam": { + "FallPeriodFirstFrameMax": 1, + "FallPeriodFirstFrameMin": 1, + "FallPeriodFirstTargetSpeed": 0, + "FallPeriodLastFrameMax": 1, + "FallPeriodLastFrameMin": 1, + "FallPeriodSecondFrame": 1, + "FallPeriodSecondTargetSpeed": 0 + }, + "SplashWallDropPaintParam": { + "PaintRadiusFall": 0, + "PaintRadiusGround": 0, + "PaintRadiusShock": 1.2 + }, + "WallHitPaintRadius": 1.9 + }, + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.235, + "FriendThroughFrameForPlayer": 1000, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.235, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageJumpParam": { + "ReduceEndFrame": 99, + "ReduceStartFrame": -1, + "ValueMax": 1250, + "ValueMin": 1250 + }, + "DamageParam": { + "ReduceEndFrame": 99, + "ReduceStartFrame": -1, + "ValueMax": 1250, + "ValueMin": 1250 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "WeaponSpeedType": "Mid" + }, + "MoveJumpParam": { + "GoStraightStateEndMaxSpeed": 0.9, + "GoStraightToBrakeStateFrame": 7, + "SpawnSpeed": 0.92 + }, + "MoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 1.65, + "GoStraightToBrakeStateFrame": 7, + "SpawnSpeed": 1.7 + }, + "PaintParam": { + "DistanceMiddle": 0, + "WidthHalfFar": 0, + "WidthHalfMiddle": 0, + "WidthHalfNear": 0 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "WidthHalf": 1.56, + "WidthHalfNearest": 2.184 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [], + "RandomSpawnVelXMax": 0.055, + "RandomSpawnVelYMax": 0.015, + "RandomSpawnVelZMax": 0.02, + "RandomSpawnVelZMin": 0.01, + "SpawnBetweenLength": 1.9, + "SpawnNearestLength": 0.9, + "SpawnNum": 9, + "SplitNum": 1 + }, + "SplashWallHitParam": { + "SpawnParam": { + "DistanceXZRate": 0, + "FirstDistance": 2.5, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMin": 30, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 30, + "FallPeriodSecondTargetSpeed": 0.05 + } + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 0.5, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.07, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 35, + "FallPeriodSecondTargetSpeed": 0.04 + }, + "WeaponParam": { + "InkConsume": 0.095, + "InkRecoverStop": 60, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.5, + "Jump_DegSwerve": 8, + "MoveSpeed": 0.04, + "PostDelayFrame": 4, + "PostDelayFrame_Blaster": 26, + "PreDelayFrame_HumanShot": 10, + "PreDelayFrame_SquidShot": 15, + "RepeatFrame": 55, + "ShotGuideFrame": 11, + "SquidShotShorteningFrame": 0, + "Stand_DegBiasDecrease": 0, + "Stand_DegBiasKf": 0, + "Stand_DegBiasMax": 0, + "Stand_DegBiasMin": 0, + "Stand_DegSwerve": 0, + "InkConsume@9.3.0": 0.085, + "InkConsume@5.0.0": 0.1, + "PostDelayFrame_Blaster@9.3.0": 23, + "RepeatFrame@8.0.0": 60 + }, + "spl__PlayerGearSkillParam_ActionSpecUp_ReduceJumpSwerveRate": { + "Mid": 0.625, + "Mid@5.0.0": 0.5 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "300": { + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.26, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.26, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 40, + "ReduceStartFrame": 8, + "ValueMax": 310, + "ValueMin": 155, + "ReduceEndFrame@5.0.0": 24, + "ValueMax@7.2.0": 290, + "ValueMin@7.2.0": 145 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": {}, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 1.946, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 3.567, + "GoStraightStateEndMaxSpeed@10.1.0": 1.568, + "GoStraightToBrakeStateFrame@10.1.0": 4, + "SpawnSpeed@11.1.0": 3.413, + "SpawnSpeed@10.1.0": 2.75 + }, + "PaintParam": { + "DepthScaleMax": 2.24, + "DepthScaleMaxBreakFree": 2.24, + "DepthScaleMin": 1.31, + "DepthScaleMinBreakFree": 1.12, + "DistanceMiddle": 1.1, + "WidthHalfFar": 1.7765, + "WidthHalfMiddle": 1.7765, + "WidthHalfNear": 1.7765, + "WidthHalfFar@10.1.0": 2.09, + "WidthHalfMiddle@10.1.0": 2.09, + "WidthHalfNear@10.1.0": 2.09 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "WidthHalf": 1.7825, + "WidthHalfNearest": 2.4955 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [3, 6, 9], + "SpawnBetweenLength": 12, + "SpawnNearestLength": 1, + "SpawnNum": 1.5, + "SplitNum": 12 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.56 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06 + }, + "WeaponParam": { + "BurstAimMoveFrame": 20, + "InkConsume": 0.011, + "InkRecoverStop": 25, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.4, + "Jump_DegSwerve": 6, + "MoveSpeed": 0.08, + "PostDelayFrame": 2, + "RepeatFrame": 4, + "ShotGuideFrame": 8, + "Stand_DegBiasDecrease": 0.005, + "Stand_DegBiasKf": 0.01, + "Stand_DegBiasMin": 0.01, + "Stand_DegSwerve": 1, + "TripleShotSpanFrame": 8, + "InkConsume@9.1.0": 0.0115 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "310": { + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.235, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.235, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 40, + "ReduceStartFrame": 8, + "ValueMax": 450, + "ValueMin": 225, + "ReduceEndFrame@5.0.0": 24, + "ValueMax@10.1.0": 440, + "ValueMax@7.1.0": 410, + "ValueMin@10.1.0": 220, + "ValueMin@7.1.0": 205 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "Overwrite_ConsumeRt_Main_High": 0.5, + "Overwrite_ConsumeRt_Main_Mid": 0.7, + "Overwrite_MoveVelRt_Shot_High": -1, + "Overwrite_MoveVelRt_Shot_Mid": -1 + }, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 2.2698, + "GoStraightToBrakeStateFrame": 4, + "SpawnSpeed": 2.875 + }, + "PaintParam": { + "DepthScaleMax": 2.24, + "DepthScaleMaxBreakFree": 2.24, + "DepthScaleMin": 1.31, + "DepthScaleMinBreakFree": 1.12, + "DistanceMiddle": 1.1, + "WidthHalfFar": 2.25, + "WidthHalfMiddle": 2.25, + "WidthHalfNear": 2.25 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "WidthHalf": 1.633, + "WidthHalfNearest": 2.2862 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [3], + "SpawnBetweenLength": 6, + "SpawnNearestLength": 1.35, + "SpawnNum": 3, + "SplitNum": 5 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.75, + "PaintRadiusShock": 1.92 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 35, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.065, + "FallPeriodLastFrameMax": 40, + "FallPeriodLastFrameMin": 25, + "FallPeriodSecondFrame": 25, + "FallPeriodSecondTargetSpeed": 0.09 + }, + "WeaponParam": { + "BurstAimMoveFrame": 25, + "InkConsume": 0.0208, + "InkRecoverStop": 25, + "Jump_DegBiasDecreaseStartFrame": 20, + "Jump_DegBiasEndFrame": 50, + "Jump_DegBiasMax": 0.4, + "Jump_DegSwerve": 1, + "MoveSpeed": 0.06, + "PostDelayFrame": 2, + "RepeatFrame": 5, + "ShotGuideFrame": 8, + "Stand_DegBiasDecrease": 0.005, + "Stand_DegBiasKf": 0.01, + "Stand_DegBiasMin": 0.01, + "Stand_DegSwerve": 1, + "TripleShotSpanFrame": 20, + "InkConsume@9.1.0": 0.0225 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "400": { + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.225, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.225, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 24, + "ReduceStartFrame": 8, + "ValueMax": 380, + "ValueMin": 190 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": {}, + "MoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 2.8303, + "GoStraightToBrakeStateFrame": 4, + "SpawnSpeed": 3.05, + "GoStraightStateEndMaxSpeed@8.1.0": 2.9695, + "SpawnSpeed@8.1.0": 3.2 + }, + "PaintParam": { + "DepthScaleMax": 2.24, + "DepthScaleMaxBreakFree": 2.24, + "DepthScaleMin": 1.31, + "DepthScaleMinBreakFree": 1.12, + "DistanceFar": 20, + "DistanceMiddle": 0.5, + "DistanceNear": 0.5, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.61, + "WidthHalfMiddle": 2.35, + "WidthHalfNear": 2.35 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "WidthHalf": 1.357, + "WidthHalfNearest": 1.8998 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [4], + "SpawnBetweenLength": 15, + "SpawnNearestLength": 1.25, + "SpawnNum": 1.5, + "SplitNum": 8 + }, + "VariableCollisionParam": { + "EndRadiusForPlayer": 0.225, + "InitRadiusForPlayer": 0.225 + }, + "VariableDamageParam": { + "ReduceEndFrame": 23, + "ReduceStartFrame": 7, + "ValueMax": 300, + "ValueMin": 150 + }, + "VariableMoveParam": { + "GoStraightStateEndMaxSpeed": 2.3032, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 2.4 + }, + "VariablePaintParam": { + "DepthScaleMax": 2.24, + "DepthScaleMaxBreakFree": 2.24, + "DepthScaleMin": 1.31, + "DepthScaleMinBreakFree": 1.12, + "DistanceMiddle": 1.1, + "WidthHalfFar": 1.71, + "WidthHalfMiddle": 1.93, + "WidthHalfNear": 1.93 + }, + "VariableSplashPaintParam": { + "WidthHalf": 1.38, + "WidthHalfNearest": 1.932 + }, + "VariableSplashSpawnParam": { + "SpawnBetweenLength": 8.67, + "SpawnNearestLength": 1.2, + "SpawnNum": 1.5, + "SplitNum": 5, + "SpawnBetweenLength@6.0.0": 6.5, + "SpawnNum@6.0.0": 2 + }, + "VariableWeaponParam": { + "BurstAimMoveFrame": 20, + "InkConsume": 0.0108, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.4, + "Jump_DegSwerve": 13, + "MoveSpeed": 0.072, + "PostDelayFrame": 3, + "RepeatFrame": 7, + "ShotGuideFrame": 7, + "Stand_DegBiasDecrease": 0.005, + "Stand_DegBiasKf": 0.01, + "Stand_DegBiasMin": 0.01, + "Stand_DegSwerve": 8 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "WeaponParam": { + "BurstAimMoveFrame": 20, + "InkConsume": 0.024, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.4, + "Jump_DegSwerve": 0, + "MoveSpeed": 0.066, + "PostDelayFrame": 3, + "RepeatFrame": 8, + "ShotGuideFrame": 8, + "SquidShotShorteningFrame": 0, + "Stand_DegBiasDecrease": 0.005, + "Stand_DegBiasKf": 0.01, + "Stand_DegBiasMin": 0.01, + "Stand_DegSwerve": 0, + "VariableShotRepeatStartFrame": 10, + "InkConsume@6.0.0": 0.022, + "MoveSpeed@8.1.0": 0.072 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "1000": { + "BodyParam": { + "CollisionParam": { + "KnockBackOpponent": { + "AccelMax": 800, + "AccelMin": 420, + "MyVelocityRate": 30, + "OpponentVelocityRate": 4800 + }, + "KnockBackRollerPlayerDamageOff": { + "AccelMax": 280, + "AccelMin": 280, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 30 + }, + "KnockBackRollerPlayerDamageOn": { + "AccelMax": 550, + "AccelMin": 410, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 30 + }, + "Radius": 0.4, + "WidthHalf": 1.4 + }, + "Damage": 700, + "PaintParam": { + "Depth": 1.5, + "SpeedMax": 0.152, + "WidthAddWallCut": 0.4, + "WidthHalfMax": 2.2 + }, + "SideParam": { + "CheckLength": 1.3, + "Radius": 0.75 + } + }, + "BulletAdditionMovePlayerSplashNearestParam": { + "XRate": 0.3, + "YPlusRate": 0, + "ZRate": 0.3 + }, + "KnockBackByCanopyParam": { + "KnockBackRollerPlayerDamageOff": { + "AccelMax": 750, + "AccelMin": 700, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 2000 + }, + "KnockBackRollerPlayerDamageOn": { + "AccelMax": 750, + "AccelMin": 700, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 2000 + } + }, + "MainEffectiveRangeUpParam": { + "Mid": 0.37 + }, + "MainWeaponSetting": { + "WeaponSpeedType": "Fast" + }, + "VerticalSwingUnitGroupParam": { + "DamageParam": { + "DamageRejectEndFrame": 45, + "DamageRejectRate": 0.5, + "DamageRejectStartFrame": 30, + "Inside": { + "DamageHighDistance": 11.2, + "DamageHighValue": 500, + "DamageLowDistance": 11.2, + "DamageLowValue": 500, + "DamageMaxDistance": 4.2, + "DamageMaxValue": 1200, + "DamageMinDistance": 14.2, + "DamageMinValue": 350, + "Degree": 5, + "DepletionDamageRate": 0.5, + "FinalDamageMinValue": 350, + "InsideDistanceXZ": 0 + }, + "Outside": { + "DamageHighDistance": 11.2, + "DamageHighValue": 500, + "DamageLowDistance": 11.2, + "DamageLowValue": 500, + "DamageMaxDistance": 4.2, + "DamageMaxValue": 1200, + "DamageMinDistance": 14.2, + "DamageMinValue": 350, + "DamageRate": 1, + "Degree": 20, + "DepletionDamageRate": 0.5, + "FinalDamageMinValue": 350 + } + }, + "SpawnSplashBetweenLength": 4.2, + "SpawnSplashFirstLength": 1.1, + "SpawnSplashNum": 5, + "SplashNearestParam": { + "SpawnParam": { + "MaxHeight": 0.2, + "Offset": { + "X": 0, + "Y": -2, + "Z": 0.5 + }, + "PaintDepthScale": 1.5, + "PaintWidthHalf": 1.5 + } + }, + "SplashPaintParam": { + "DepthScaleMax": 3, + "DepthScaleMin": 3, + "WidthHalf": 1.25, + "WidthHalfNearest": 1.25 + }, + "Unit": [ + { + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4615, + "FourPetalsPetalRadiusRate": 0.3077, + "SpawnPositionHeight": 0, + "SpawnPositionOffsetHeight": 0.5, + "SpawnRotateXDegreeBase": 7.5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.5166, + "SpawnWideDegree": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.65, + "EndRadiusForPlayer": 0.87, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.124 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 30, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 12, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 2.6, + "WidthHalfNear": 2.2 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.5, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.18, + "BulletNum": 2, + "DepletionBulletNum": 2, + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4615, + "FourPetalsPetalRadiusRate": 0.3077, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": -0.25, + "SpawnRotateXDegreeBase": 5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.3366, + "SpawnSpeedRandom": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.65, + "EndRadiusForPlayer": 0.87, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.124 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 30, + "DegreeUseDepthScaleMax": 10, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DepthScaleMinStraight": 1, + "DistanceFar": 12, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.75, + "WidthHalfNear": 1.45 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.5, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.18, + "BulletNum": 2, + "DepletionBulletNum": 0, + "DepletionSpeedRate": 0.7, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": -1.25, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 0.9766, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.82, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.124 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 30, + "DegreeUseDepthScaleMax": 10, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DepthScaleMinStraight": 1, + "DistanceFar": 12, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.75, + "WidthHalfNear": 1.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.5, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + } + ], + "Unit@10.1.0": [ + { + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4615, + "FourPetalsPetalRadiusRate": 0.3077, + "SpawnPositionHeight": 0, + "SpawnPositionOffsetHeight": 0.5, + "SpawnRotateXDegreeBase": 7.5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.5166, + "SpawnWideDegree": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.65, + "EndRadiusForPlayer": 0.7, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 30, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 12, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 2.6, + "WidthHalfNear": 2.2 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.5, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.18, + "BulletNum": 2, + "DepletionBulletNum": 2, + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4615, + "FourPetalsPetalRadiusRate": 0.3077, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": -0.25, + "SpawnRotateXDegreeBase": 5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.3366, + "SpawnSpeedRandom": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.65, + "EndRadiusForPlayer": 0.7, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 30, + "DegreeUseDepthScaleMax": 10, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DepthScaleMinStraight": 1, + "DistanceFar": 12, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.75, + "WidthHalfNear": 1.45 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.5, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.18, + "BulletNum": 2, + "DepletionBulletNum": 0, + "DepletionSpeedRate": 0.7, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": -1.25, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 0.9766, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.65, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 30, + "DegreeUseDepthScaleMax": 10, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DepthScaleMinStraight": 1, + "DistanceFar": 12, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.75, + "WidthHalfNear": 1.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.5, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + } + ], + "Unit@8.0.0": [ + { + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4615, + "FourPetalsPetalRadiusRate": 0.3077, + "SpawnPositionHeight": 0, + "SpawnPositionOffsetHeight": 0.5, + "SpawnRotateXDegreeBase": 7.5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.5166, + "SpawnWideDegree": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.65, + "EndRadiusForPlayer": 0.65, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 30, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 12, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 2.6, + "WidthHalfNear": 2.2 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.5, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.18, + "BulletNum": 2, + "DepletionBulletNum": 2, + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4615, + "FourPetalsPetalRadiusRate": 0.3077, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": -0.25, + "SpawnRotateXDegreeBase": 5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.3366, + "SpawnSpeedRandom": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.65, + "EndRadiusForPlayer": 0.65, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 30, + "DegreeUseDepthScaleMax": 10, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DepthScaleMinStraight": 1, + "DistanceFar": 12, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.75, + "WidthHalfNear": 1.45 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.5, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.18, + "BulletNum": 2, + "DepletionBulletNum": 0, + "DepletionSpeedRate": 0.7, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": -1.25, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 0.9766, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.6, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 30, + "DegreeUseDepthScaleMax": 10, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DepthScaleMinStraight": 1, + "DistanceFar": 12, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.75, + "WidthHalfNear": 1.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.5, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + } + ] + }, + "WeaponRollParam": { + "DashFrame": 20, + "InkConsumeMaxPerFrame": 0.001, + "InkConsumeMinPerFrame": 0.0002, + "InkRecoverStop": 20, + "SpeedDash": 0.152, + "SpeedDashTurnBreak": 0.128, + "SpeedInkConsumeMax": 0.152, + "SpeedInkConsumeMin": 0.02, + "SpeedNormal": 0.128, + "DashFrame@3.1.0": 30 + }, + "WeaponVerticalSwingParam": { + "InkConsume": 0.0396, + "InkConsumeRateDepletion": 0.5, + "InkRecoverStop": 45, + "SwingFrame": 12, + "SwingMoveSpeed": 0.048 + }, + "WeaponWideSwingParam": { + "GuideParam": { + "Frame": 7, + "WidthScale": 1.2 + }, + "InkConsume": 0.0396, + "InkConsumeRateDepletion": 0.5, + "InkRecoverStop": 40, + "SubWeaponSquidDelayFrm": 8, + "SwingFrame": 10, + "SwingMoveSpeed": 0.06 + }, + "WideSwingUnitGroupParam": { + "DamageParam": { + "DamageRejectEndFrame": 44, + "DamageRejectRate": 0.5, + "DamageRejectStartFrame": 24, + "Inside": { + "DamageHighDistance": 6.7, + "DamageHighValue": 500, + "DamageLowDistance": 6.7, + "DamageLowValue": 500, + "DamageMaxDistance": 4.7, + "DamageMaxValue": 1000, + "DamageMinDistance": 8.7, + "DamageMinValue": 250, + "Degree": 16, + "DepletionDamageRate": 0.25, + "FinalDamageMinValue": 250, + "InsideDistanceXZ": 1.2, + "DamageHighDistance@8.0.0": 6.2, + "DamageLowDistance@8.0.0": 6.2, + "DamageMaxDistance@8.0.0": 4.2, + "DamageMinDistance@8.0.0": 8.2, + "Degree@5.0.0": 12 + }, + "Outside": { + "DamageHighDistance": 5.7, + "DamageHighValue": 500, + "DamageLowDistance": 5.7, + "DamageLowValue": 500, + "DamageMaxDistance": 3.2, + "DamageMaxValue": 1000, + "DamageMinDistance": 7.2, + "DamageMinValue": 250, + "DamageRate": 1, + "Degree": 25, + "DepletionDamageRate": 0.25, + "FinalDamageMinValue": 250, + "DamageHighDistance@8.0.0": 5.2, + "DamageLowDistance@8.0.0": 5.2, + "DamageMaxDistance@8.0.0": 2.7, + "DamageMinDistance@8.0.0": 6.7 + } + }, + "SplashNearestParam": { + "SpawnParam": { + "MaxHeight": 0.2, + "Offset": { + "X": 0, + "Y": -2, + "Z": 0.5 + }, + "PaintDepthScale": 1.5, + "PaintWidthHalf": 1.5 + } + }, + "Unit": [ + { + "BulletNum": 10, + "DepletionBulletNum": 3, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.6, + "SpawnSpeedBase": 0.8, + "SpawnSpeedRandom": 0.26, + "SpawnWideDegree": 18, + "SwerveRateBySpeed": 0.05, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 1, + "ChangeFrameForPlayer": 3, + "DepletionRate": 0.5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.95, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.12 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 45, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 8.5, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.25, + "WidthHalfNear": 1.56 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.5, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 1 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + }, + { + "BulletNum": 2, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.3, + "SpawnSpeedBase": 0.4, + "SpawnSpeedRandom": 0.1, + "SpawnWideDegree": 8, + "SwerveRateBySpeed": 0.1, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 1, + "ChangeFrameForPlayer": 3, + "DepletionRate": 0.5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.95, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.12 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 45, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMax": 10, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DepthScaleMinStraight": 1, + "DistanceFar": 8.5, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.25, + "WidthHalfNear": 1.56 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.5, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 1 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + }, + { + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.3, + "SpawnSpeedBase": 0.24, + "SpawnSpeedRandom": 0.05, + "SpawnWideDegree": 8, + "SwerveRateBySpeed": 0.06, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 1, + "ChangeFrameForPlayer": 3, + "DepletionRate": 0.5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.95, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.12 + }, + "DrawSizeParam": { + "ChangeFrame": 0, + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 45, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMax": 10, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DepthScaleMinStraight": 1, + "DistanceFar": 8.5, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.1, + "WidthHalfNear": 1.4 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.5, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 1 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + } + ], + "Unit@10.1.0": [ + { + "BulletNum": 10, + "DepletionBulletNum": 3, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.6, + "SpawnSpeedBase": 0.8, + "SpawnSpeedRandom": 0.26, + "SpawnWideDegree": 18, + "SwerveRateBySpeed": 0.05, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 1, + "ChangeFrameForPlayer": 3, + "DepletionRate": 0.5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.75, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 45, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 8.5, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.25, + "WidthHalfNear": 1.56 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.5, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 1 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + }, + { + "BulletNum": 2, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.3, + "SpawnSpeedBase": 0.4, + "SpawnSpeedRandom": 0.1, + "SpawnWideDegree": 8, + "SwerveRateBySpeed": 0.1, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 1, + "ChangeFrameForPlayer": 3, + "DepletionRate": 0.5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.75, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 45, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMax": 10, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DepthScaleMinStraight": 1, + "DistanceFar": 8.5, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.25, + "WidthHalfNear": 1.56 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.5, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 1 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + }, + { + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.3, + "SpawnSpeedBase": 0.24, + "SpawnSpeedRandom": 0.05, + "SpawnWideDegree": 8, + "SwerveRateBySpeed": 0.06, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 1, + "ChangeFrameForPlayer": 3, + "DepletionRate": 0.5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.75, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "ChangeFrame": 0, + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 45, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMax": 10, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DepthScaleMinStraight": 1, + "DistanceFar": 8.5, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.1, + "WidthHalfNear": 1.4 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.5, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 1 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + } + ] + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "1010": { + "BodyParam": { + "CollisionParam": { + "KnockBackOpponent": { + "AccelMax": 800, + "AccelMin": 420, + "MyVelocityRate": 30, + "OpponentVelocityRate": 4800 + }, + "KnockBackRollerPlayerDamageOff": { + "AccelMax": 280, + "AccelMin": 280, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 30 + }, + "KnockBackRollerPlayerDamageOn": { + "AccelMax": 550, + "AccelMin": 410, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 30 + }, + "Radius": 0.4, + "WidthHalf": 1.4 + }, + "Damage": 1250, + "PaintParam": { + "SpeedMax": 0.132, + "WidthHalfMax": 2.8 + }, + "SideParam": { + "CheckLength": 1.3, + "Radius": 0.75 + } + }, + "BulletAdditionMovePlayerSplashNearestParam": { + "XRate": 0.3, + "YPlusRate": 0, + "ZRate": 0.3 + }, + "KnockBackByCanopyParam": { + "KnockBackRollerPlayerDamageOff": { + "AccelMax": 750, + "AccelMin": 700, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 2000 + }, + "KnockBackRollerPlayerDamageOn": { + "AccelMax": 750, + "AccelMin": 700, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 2000 + } + }, + "MainEffectiveRangeUpParam": { + "High": 0.7, + "Mid": 0.49 + }, + "MainWeaponSetting": {}, + "VerticalSwingUnitGroupParam": { + "DamageParam": { + "DamageRejectEndFrame": 45, + "DamageRejectRate": 0.5, + "DamageRejectStartFrame": 30, + "Inside": { + "DamageHighDistance": 8.2, + "DamageHighValue": 1000, + "DamageLowDistance": 11.2, + "DamageLowValue": 500, + "DamageMaxDistance": 5.2, + "DamageMaxValue": 1500, + "DamageMinDistance": 13.2, + "DamageMinValue": 400, + "Degree": 5, + "FinalDamageMinValue": 400 + }, + "Outside": { + "DamageHighDistance": 8.2, + "DamageHighValue": 1000, + "DamageLowDistance": 11.2, + "DamageLowValue": 500, + "DamageMaxDistance": 5.2, + "DamageMaxValue": 1500, + "DamageMinDistance": 13.2, + "DamageMinValue": 400, + "DamageRate": 1, + "Degree": 20, + "FinalDamageMinValue": 400 + } + }, + "SpawnSplashBetweenLength": 4.6, + "SpawnSplashFirstLength": 1.2, + "SpawnSplashNum": 5, + "SplashNearestParam": { + "SpawnParam": { + "MaxHeight": 0.2, + "Offset": { + "X": 0, + "Y": -2, + "Z": 0.5 + }, + "PaintDepthScale": 1.462, + "PaintWidthHalf": 1.462 + } + }, + "SplashPaintParam": { + "DepthScaleMax": 3, + "DepthScaleMin": 3, + "WidthHalf": 1.287, + "WidthHalfNearest": 1.287 + }, + "Unit": [ + { + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4667, + "FourPetalsPetalRadiusRate": 0.3333, + "SpawnPositionOffsetHeight": 0.5, + "SpawnRotateXDegreeBase": 7.5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.8338, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.75, + "EndRadiusForPlayer": 0.87, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.116 + }, + "DrawSizeParam": { + "EndRadius": 0.36, + "InitRadius": 0.36 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 30, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.76, + "DepthScaleMaxStraight": 1.76, + "DepthScaleMinBreakFree": 1.32, + "DepthScaleMinStraight": 1.1, + "DistanceFar": 16, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 3.068, + "WidthHalfNear": 2.454 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusGround": 0.65, + "PaintRadiusShock": 1.4 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.2, + "BulletNum": 2, + "DepletionBulletNum": 2, + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4667, + "FourPetalsPetalRadiusRate": 0.3333, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": -0.25, + "SpawnRotateXDegreeBase": 5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.6338, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.75, + "EndRadiusForPlayer": 0.87, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.116 + }, + "DrawSizeParam": { + "EndRadius": 0.36, + "InitRadius": 0.36 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 30, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.76, + "DepthScaleMaxStraight": 1.76, + "DepthScaleMinBreakFree": 1.32, + "DepthScaleMinStraight": 1.1, + "DistanceFar": 16, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 2.045, + "WidthHalfNear": 1.841 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusGround": 0.65, + "PaintRadiusShock": 1.4 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.2, + "BulletNum": 2, + "DepletionBulletNum": 0, + "DepletionSpeedRate": 0.7, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": -1.25, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.2338, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.55, + "EndRadiusForPlayer": 0.82, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.116 + }, + "DrawSizeParam": { + "EndRadius": 0.36, + "InitRadius": 0.36 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 30, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.76, + "DepthScaleMaxStraight": 1.76, + "DepthScaleMinBreakFree": 1.32, + "DepthScaleMinStraight": 1.1, + "DistanceFar": 16, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 2.045, + "WidthHalfNear": 1.841 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusGround": 0.65, + "PaintRadiusShock": 1.4 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + } + ], + "Unit@10.1.0": [ + { + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4667, + "FourPetalsPetalRadiusRate": 0.3333, + "SpawnPositionOffsetHeight": 0.5, + "SpawnRotateXDegreeBase": 7.5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.8338, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.75, + "EndRadiusForPlayer": 0.75, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.36, + "InitRadius": 0.36 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 30, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.76, + "DepthScaleMaxStraight": 1.76, + "DepthScaleMinBreakFree": 1.32, + "DepthScaleMinStraight": 1.1, + "DistanceFar": 16, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 3.068, + "WidthHalfNear": 2.454 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusGround": 0.65, + "PaintRadiusShock": 1.4 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.2, + "BulletNum": 2, + "DepletionBulletNum": 2, + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4667, + "FourPetalsPetalRadiusRate": 0.3333, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": -0.25, + "SpawnRotateXDegreeBase": 5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.6338, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.75, + "EndRadiusForPlayer": 0.75, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.36, + "InitRadius": 0.36 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 30, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.76, + "DepthScaleMaxStraight": 1.76, + "DepthScaleMinBreakFree": 1.32, + "DepthScaleMinStraight": 1.1, + "DistanceFar": 16, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 2.045, + "WidthHalfNear": 1.841 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusGround": 0.65, + "PaintRadiusShock": 1.4 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.2, + "BulletNum": 2, + "DepletionBulletNum": 0, + "DepletionSpeedRate": 0.7, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": -1.25, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.2338, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.55, + "EndRadiusForPlayer": 0.7, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.36, + "InitRadius": 0.36 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 30, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.76, + "DepthScaleMaxStraight": 1.76, + "DepthScaleMinBreakFree": 1.32, + "DepthScaleMinStraight": 1.1, + "DistanceFar": 16, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 2.045, + "WidthHalfNear": 1.841 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusGround": 0.65, + "PaintRadiusShock": 1.4 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + } + ] + }, + "WeaponRollParam": { + "DashFrame": 90, + "InkConsumeMaxPerFrame": 0.001, + "InkConsumeMinPerFrame": 0.0002, + "InkRecoverStop": 20, + "SpeedDash": 0.132, + "SpeedDashTurnBreak": 0.108, + "SpeedInkConsumeMax": 0.132, + "SpeedInkConsumeMin": 0.02, + "SpeedNormal": 0.108 + }, + "WeaponVerticalSwingParam": { + "InkConsume": 0.085, + "InkRecoverStop": 58, + "SwingFrame": 26, + "SwingMoveSpeed": 0.048, + "InkRecoverStop@10.1.0": 60 + }, + "WeaponWideSwingParam": { + "GuideParam": { + "WidthScale": 1.5 + }, + "InkConsume": 0.085, + "InkRecoverStop": 43, + "SwingFrame": 21, + "SwingMoveSpeed": 0.048, + "InkRecoverStop@10.1.0": 45 + }, + "WideSwingUnitGroupParam": { + "DamageParam": { + "DamageRejectEndFrame": 45, + "DamageRejectRate": 0.5, + "DamageRejectStartFrame": 25, + "Inside": { + "DamageHighDistance": 7.2, + "DamageHighValue": 1000, + "DamageLowDistance": 7.2, + "DamageLowValue": 1000, + "DamageMaxDistance": 4.2, + "DamageMaxValue": 1500, + "DamageMinDistance": 10.7, + "DamageMinValue": 350, + "Degree": 16, + "DepletionDamageRate": 0.25, + "FinalDamageMinValue": 350, + "InsideDistanceXZ": 1.2, + "Degree@5.0.0": 12 + }, + "Outside": { + "DamageHighDistance": 7.2, + "DamageHighValue": 500, + "DamageLowDistance": 7.2, + "DamageLowValue": 500, + "DamageMaxDistance": 2, + "DamageMaxValue": 1000, + "DamageMinDistance": 9.2, + "DamageMinValue": 350, + "DamageRate": 1, + "DepletionDamageRate": 0.25, + "FinalDamageMinValue": 350 + } + }, + "SplashNearestParam": { + "SpawnParam": { + "MaxHeight": 0.2, + "Offset": { + "X": 0, + "Y": -2, + "Z": 0.5 + }, + "PaintDepthScale": 1.5, + "PaintWidthHalf": 1.5 + } + }, + "Unit": [ + { + "BulletNum": 12, + "DepletionBulletNum": 3, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.8, + "SpawnSpeedBase": 1.05, + "SpawnSpeedRandom": 0.36, + "SpawnWideDegree": 18, + "SwerveRateBySpeed": 0.05, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.6, + "EndRadiusForPlayer": 1.02, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.12 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 7, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 12, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.6275, + "WidthHalfNear": 1.89 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusGround": 0.5 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + }, + { + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.4, + "SpawnSpeedBase": 0.48, + "SpawnSpeedRandom": 0.11, + "SpawnWideDegree": 4, + "SwerveRateBySpeed": 0.1, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.6, + "EndRadiusForPlayer": 1.02, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.12 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 7, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 12, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.6275, + "WidthHalfNear": 1.89 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.5, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + } + ], + "Unit@10.1.0": [ + { + "BulletNum": 12, + "DepletionBulletNum": 3, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.8, + "SpawnSpeedBase": 1.05, + "SpawnSpeedRandom": 0.36, + "SpawnWideDegree": 18, + "SwerveRateBySpeed": 0.05, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.6, + "EndRadiusForPlayer": 0.85, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 7, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 12, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.6275, + "WidthHalfNear": 1.89 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusGround": 0.5 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + }, + { + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.4, + "SpawnSpeedBase": 0.48, + "SpawnSpeedRandom": 0.11, + "SpawnWideDegree": 4, + "SwerveRateBySpeed": 0.1, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.6, + "EndRadiusForPlayer": 0.85, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 7, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 12, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.6275, + "WidthHalfNear": 1.89 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.5, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + } + ] + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "1020": { + "BodyParam": { + "CollisionParam": { + "KnockBackOpponent": { + "AccelMax": 800, + "AccelMin": 420, + "MyVelocityRate": 30, + "OpponentVelocityRate": 4800 + }, + "KnockBackRollerPlayerDamageOff": { + "AccelMax": 280, + "AccelMin": 280, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 30 + }, + "KnockBackRollerPlayerDamageOn": { + "AccelMax": 550, + "AccelMin": 410, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 30 + }, + "Radius": 0.4, + "WidthHalf": 1.4 + }, + "Damage": 1250, + "PaintParam": { + "SpeedMax": 0.108, + "WidthHalfMax": 3.4 + }, + "SideParam": { + "CheckLength": 1.3, + "Radius": 0.75 + } + }, + "BulletAdditionMovePlayerSplashNearestParam": { + "XRate": 0.3, + "YPlusRate": 0, + "ZRate": 0.3 + }, + "KnockBackByCanopyParam": { + "KnockBackRollerPlayerDamageOff": { + "AccelMax": 750, + "AccelMin": 700, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 2000 + }, + "KnockBackRollerPlayerDamageOn": { + "AccelMax": 750, + "AccelMin": 700, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 2000 + } + }, + "MainEffectiveRangeUpParam": { + "High": 1.57, + "Mid": 0.89 + }, + "MainWeaponSetting": { + "Overwrite_ConsumeRt_Main_High": -1, + "Overwrite_ConsumeRt_Main_Mid": -1, + "WeaponSpeedType": "Slow", + "Overwrite_ConsumeRt_Main_High@11.0.1": 0.5, + "Overwrite_ConsumeRt_Main_Mid@11.0.1": 0.7 + }, + "VerticalSwingUnitGroupParam": { + "DamageParam": { + "DamageRejectEndFrame": 65, + "DamageRejectRate": 0.5, + "DamageRejectStartFrame": 40, + "Inside": { + "DamageHighDistance": 14, + "DamageHighValue": 1000, + "DamageLowDistance": 19.53, + "DamageLowValue": 500, + "DamageMaxDistance": 8.2, + "DamageMaxValue": 1800, + "DamageMinDistance": 20.6, + "DamageMinValue": 400, + "Degree": 5, + "FinalDamageMinValue": 400, + "DamageHighDistance@10.1.0": 12.87, + "DamageHighDistance@2.0.0": 12.2, + "DamageLowDistance@2.0.0": 12.2, + "DamageLowValue@2.0.0": 1000 + }, + "Outside": { + "DamageHighDistance": 14, + "DamageHighValue": 1000, + "DamageLowDistance": 19.53, + "DamageLowValue": 500, + "DamageMaxDistance": 8.2, + "DamageMaxValue": 1800, + "DamageMinDistance": 20.6, + "DamageMinValue": 400, + "DamageRate": 1, + "Degree": 20, + "FinalDamageMinValue": 400, + "DamageHighDistance@10.1.0": 12.87, + "DamageHighDistance@2.0.0": 12.2, + "DamageLowDistance@2.0.0": 12.2, + "DamageLowValue@2.0.0": 1000 + } + }, + "SpawnSplashBetweenLength": 5.2, + "SpawnSplashFirstLength": 1.5, + "SpawnSplashNum": 6, + "SplashNearestParam": { + "SpawnParam": { + "MaxHeight": 0.2, + "Offset": { + "X": 0, + "Y": -2, + "Z": 0.5 + }, + "PaintDepthScale": 1.5, + "PaintWidthHalf": 1.5 + } + }, + "SplashPaintParam": { + "DepthScaleMax": 3, + "DepthScaleMin": 3, + "WidthHalf": 1.8, + "WidthHalfNearest": 1.8 + }, + "Unit": [ + { + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4286, + "FourPetalsPetalRadiusRate": 0.3333, + "SpawnPositionOffsetHeight": 1, + "SpawnRotateXDegreeBase": 7.5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 2.0289, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 6, + "DepletionRate": 0.5, + "EndRadiusForField": 1.05, + "EndRadiusForPlayer": 1.1, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.105 + }, + "DrawSizeParam": { + "EndRadius": 0.52, + "InitRadius": 0.52 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 30, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 4.6, + "WidthHalfNear": 4.37 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.8, + "PaintRadiusShock": 1.6 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.2, + "BulletNum": 2, + "DepletionBulletNum": 2, + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4286, + "FourPetalsPetalRadiusRate": 0.3333, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": 0.25, + "SpawnRotateXDegreeBase": 5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.8289, + "SpawnWideDegree": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 6, + "DepletionRate": 0.5, + "EndRadiusForField": 1.05, + "EndRadiusForPlayer": 1.1, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.105 + }, + "DrawSizeParam": { + "EndRadius": 0.52, + "InitRadius": 0.52 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMax": 10, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DepthScaleMinStraight": 1, + "DistanceFar": 30, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 2.645, + "WidthHalfNear": 2.3 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.8, + "PaintRadiusShock": 1.6 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.2, + "BulletNum": 2, + "DepletionBulletNum": 0, + "DepletionSpeedRate": 0.7, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": -0.75, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.4289, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 5, + "DepletionRate": 0.5, + "EndRadiusForField": 0.7, + "EndRadiusForPlayer": 0.95, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.105 + }, + "DrawSizeParam": { + "EndRadius": 0.52, + "InitRadius": 0.52 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMax": 10, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DepthScaleMinStraight": 1, + "DistanceFar": 30, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 2.645, + "WidthHalfNear": 2.3 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.8, + "PaintRadiusShock": 1.6 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + } + ], + "Unit@10.1.0": [ + { + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4286, + "FourPetalsPetalRadiusRate": 0.3333, + "SpawnPositionOffsetHeight": 1, + "SpawnRotateXDegreeBase": 7.5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 2.0289, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 6, + "DepletionRate": 0.5, + "EndRadiusForField": 1.05, + "EndRadiusForPlayer": 1.05, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.52, + "InitRadius": 0.52 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 30, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 4, + "WidthHalfNear": 3.8 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.8, + "PaintRadiusShock": 1.6 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.2, + "BulletNum": 2, + "DepletionBulletNum": 2, + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4286, + "FourPetalsPetalRadiusRate": 0.3333, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": 0.25, + "SpawnRotateXDegreeBase": 5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.8289, + "SpawnWideDegree": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 6, + "DepletionRate": 0.5, + "EndRadiusForField": 1.05, + "EndRadiusForPlayer": 1.05, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.52, + "InitRadius": 0.52 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMax": 10, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DepthScaleMinStraight": 1, + "DistanceFar": 30, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 2.3, + "WidthHalfNear": 2 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.8, + "PaintRadiusShock": 1.6 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.2, + "BulletNum": 2, + "DepletionBulletNum": 0, + "DepletionSpeedRate": 0.7, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": -0.75, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.4289, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 5, + "DepletionRate": 0.5, + "EndRadiusForField": 0.7, + "EndRadiusForPlayer": 0.9, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.52, + "InitRadius": 0.52 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMax": 10, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DepthScaleMinStraight": 1, + "DistanceFar": 30, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 2.3, + "WidthHalfNear": 2 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.8, + "PaintRadiusShock": 1.6 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + } + ] + }, + "WeaponRollParam": { + "DashFrame": 90, + "InkConsumeMaxPerFrame": 0.001, + "InkConsumeMinPerFrame": 0.0002, + "InkRecoverStop": 20, + "SpeedDash": 0.108, + "SpeedDashTurnBreak": 0.088, + "SpeedInkConsumeMax": 0.108, + "SpeedInkConsumeMin": 0.02, + "SpeedNormal": 0.088 + }, + "WeaponVerticalSwingParam": { + "InkConsume": 0.21, + "InkConsumeRateDepletion": 0.5, + "InkRecoverStop": 70, + "SwingFrame": 55, + "SwingMoveSpeed": 0.024, + "InkConsume@10.1.0": 0.18, + "InkRecoverStop@4.0.0": 80 + }, + "WeaponWideSwingParam": { + "GuideParam": { + "WidthScale": 2 + }, + "InkConsume": 0.21, + "InkConsumeRateDepletion": 0.5, + "InkRecoverStop": 55, + "SwingFrame": 45, + "SwingMoveSpeed": 0.024, + "InkConsume@10.1.0": 0.18, + "InkRecoverStop@4.0.0": 65 + }, + "WideSwingUnitGroupParam": { + "DamageParam": { + "DamageRejectEndFrame": 55, + "DamageRejectRate": 0.5, + "DamageRejectStartFrame": 30, + "Inside": { + "DamageHighDistance": 12.9, + "DamageHighValue": 1000, + "DamageLowDistance": 16.49, + "DamageLowValue": 500, + "DamageMaxDistance": 7.2, + "DamageMaxValue": 1800, + "DamageMinDistance": 17.4, + "DamageMinValue": 400, + "Degree": 14.5, + "DepletionDamageRate": 0.25, + "FinalDamageMinValue": 400, + "InsideDistanceXZ": 1.2, + "DamageHighDistance@10.1.0": 10.77, + "DamageHighDistance@2.0.0": 10.2, + "DamageLowDistance@2.0.0": 10.2, + "DamageLowValue@2.0.0": 1000, + "Degree@6.0.0": 12 + }, + "Outside": { + "DamageHighDistance": 3.38, + "DamageHighValue": 1000, + "DamageLowDistance": 9.91, + "DamageLowValue": 500, + "DamageMaxDistance": 0.2, + "DamageMaxValue": 1200, + "DamageMinDistance": 12.2, + "DamageMinValue": 400, + "DamageRate": 1, + "Degree": 20, + "DepletionDamageRate": 0.25, + "FinalDamageMinValue": 400, + "DamageHighDistance@2.0.0": 9.2, + "DamageHighValue@2.0.0": 500, + "DamageLowDistance@2.0.0": 9.2 + } + }, + "SplashNearestParam": { + "SpawnParam": { + "MaxHeight": 0.2, + "Offset": { + "X": 0, + "Y": -2, + "Z": 0.5 + }, + "PaintDepthScale": 1.5, + "PaintWidthHalf": 1.5 + } + }, + "Unit": [ + { + "BulletNum": 16, + "DepletionBulletNum": 3, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.8, + "SpawnSpeedBase": 1.2, + "SpawnSpeedRandom": 0.4, + "SpawnWideDegree": 18, + "SwerveRateBySpeed": 0.05, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 5, + "DepletionRate": 0.5, + "EndRadiusForField": 0.8, + "EndRadiusForPlayer": 1.27, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1058 + }, + "DrawSizeParam": { + "EndRadius": 0.55, + "InitRadius": 0.55 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.7, + "ChangeWidthEndFrame": 60, + "ChangeWidthStartFrame": 25, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 20, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 2.2425, + "WidthHalfNear": 2.415 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.5 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + }, + { + "BulletNum": 2, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.4, + "SpawnSpeedBase": 0.5, + "SpawnSpeedRandom": 0.1, + "SpawnWideDegree": 4, + "SwerveRateBySpeed": 0, + "UnitDamageRate": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 3, + "DepletionRate": 0.5, + "EndRadiusForField": 0.6, + "EndRadiusForPlayer": 0.67, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1058 + }, + "DrawSizeParam": { + "EndRadius": 0.55, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 8, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.7, + "ChangeWidthEndFrame": 60, + "ChangeWidthStartFrame": 25, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 20, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.725, + "WidthHalfNear": 2.07 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.35, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 70, + "FallPeriodFirstFrameMin": 50, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + } + ], + "Unit@10.1.0": [ + { + "BulletNum": 16, + "DepletionBulletNum": 3, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.8, + "SpawnSpeedBase": 1.2, + "SpawnSpeedRandom": 0.4, + "SpawnWideDegree": 18, + "SwerveRateBySpeed": 0.05, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 5, + "DepletionRate": 0.5, + "EndRadiusForField": 0.8, + "EndRadiusForPlayer": 1.2, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.55, + "InitRadius": 0.55 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.7, + "ChangeWidthEndFrame": 60, + "ChangeWidthStartFrame": 25, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 20, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.95, + "WidthHalfNear": 2.1 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.5 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + }, + { + "BulletNum": 2, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.4, + "SpawnSpeedBase": 0.5, + "SpawnSpeedRandom": 0.1, + "SpawnWideDegree": 4, + "SwerveRateBySpeed": 0, + "UnitDamageRate": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 3, + "DepletionRate": 0.5, + "EndRadiusForField": 0.6, + "EndRadiusForPlayer": 0.6, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.55, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 8, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.7, + "ChangeWidthEndFrame": 60, + "ChangeWidthStartFrame": 25, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 20, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.5, + "WidthHalfNear": 1.8 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.35, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 70, + "FallPeriodFirstFrameMin": 50, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + } + ], + "Unit@8.0.0": [ + { + "BulletNum": 16, + "DepletionBulletNum": 3, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.8, + "SpawnSpeedBase": 1.2, + "SpawnSpeedRandom": 0.52, + "SpawnWideDegree": 18, + "SwerveRateBySpeed": 0.05, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 5, + "DepletionRate": 0.5, + "EndRadiusForField": 0.8, + "EndRadiusForPlayer": 1.2, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.55, + "InitRadius": 0.55 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.7, + "ChangeWidthEndFrame": 60, + "ChangeWidthStartFrame": 25, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 20, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.95, + "WidthHalfNear": 2.1 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.5 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + }, + { + "BulletNum": 2, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.4, + "SpawnSpeedBase": 0.5, + "SpawnSpeedRandom": 0.1, + "SpawnWideDegree": 4, + "SwerveRateBySpeed": 0, + "UnitDamageRate": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 3, + "DepletionRate": 0.5, + "EndRadiusForField": 0.6, + "EndRadiusForPlayer": 0.6, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.55, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 8, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.7, + "ChangeWidthEndFrame": 60, + "ChangeWidthStartFrame": 25, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 20, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.5, + "WidthHalfNear": 1.8 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.35, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 70, + "FallPeriodFirstFrameMin": 50, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + } + ] + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "1030": { + "BodyParam": { + "CollisionParam": { + "KnockBackOpponent": { + "AccelMax": 800, + "AccelMin": 420, + "MyVelocityRate": 30, + "OpponentVelocityRate": 4800 + }, + "KnockBackRollerPlayerDamageOff": { + "AccelMax": 280, + "AccelMin": 280, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 30 + }, + "KnockBackRollerPlayerDamageOn": { + "AccelMax": 550, + "AccelMin": 410, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 30 + }, + "Radius": 0.4, + "WidthHalf": 1.4 + }, + "Damage": 1250, + "PaintParam": { + "SpeedMax": 0.132, + "WidthHalfMax": 2.6 + }, + "SideParam": { + "CheckLength": 1.3, + "Radius": 0.75 + } + }, + "BulletAdditionMovePlayerSplashNearestParam": { + "XRate": 0.3, + "YPlusRate": 0, + "ZRate": 0.3 + }, + "KnockBackByCanopyParam": { + "KnockBackRollerPlayerDamageOff": { + "AccelMax": 750, + "AccelMin": 700, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 2000 + }, + "KnockBackRollerPlayerDamageOn": { + "AccelMax": 750, + "AccelMin": 700, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 2000 + } + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": {}, + "VerticalSwingUnitGroupParam": { + "DamageParam": { + "DamageRejectEndFrame": 65, + "DamageRejectRate": 0.5, + "DamageRejectStartFrame": 40, + "Inside": { + "DamageHighDistance": 10.2, + "DamageHighValue": 1000, + "DamageLowDistance": 10.2, + "DamageLowValue": 1000, + "DamageMaxDistance": 5.2, + "DamageMaxValue": 1500, + "DamageMinDistance": 16.2, + "DamageMinValue": 400, + "Degree": 5, + "FinalDamageMinValue": 400, + "DamageHighDistance@11.0.1": 9.7, + "DamageLowDistance@11.0.1": 9.7, + "DamageMinDistance@11.0.1": 14.5 + }, + "Outside": { + "DamageHighDistance": 10.2, + "DamageHighValue": 1000, + "DamageLowDistance": 10.2, + "DamageLowValue": 1000, + "DamageMaxDistance": 5.2, + "DamageMaxValue": 1500, + "DamageMinDistance": 16.2, + "DamageMinValue": 400, + "DamageRate": 1, + "Degree": 20, + "FinalDamageMinValue": 400, + "DamageHighDistance@11.0.1": 9.7, + "DamageLowDistance@11.0.1": 9.7, + "DamageMinDistance@11.0.1": 14.5 + } + }, + "SpawnSplashBetweenLength": 4.5, + "SpawnSplashFirstLength": 1.2, + "SpawnSplashNum": 5, + "SplashNearestParam": { + "SpawnParam": { + "MaxHeight": 0.2, + "Offset": { + "X": 0, + "Y": -2, + "Z": 0.5 + }, + "PaintDepthScale": 1.5, + "PaintWidthHalf": 1.5 + } + }, + "SplashPaintParam": { + "DepthScaleMax": 2.8, + "DepthScaleMin": 2.8, + "WidthHalf": 1.512, + "WidthHalfNearest": 1.512 + }, + "Unit": [ + { + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4286, + "FourPetalsPetalRadiusRate": 0.3333, + "SpawnPositionOffsetHeight": 1, + "SpawnRotateXDegreeBase": 7.5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.7026, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 6, + "DepletionRate": 0.5, + "EndRadiusForField": 1.05, + "EndRadiusForPlayer": 1.12, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.106 + }, + "DrawSizeParam": { + "EndRadius": 0.48, + "InitRadius": 0.48 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 20, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 4.1, + "WidthHalfNear": 3.9 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.8, + "PaintRadiusShock": 1.6 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.2, + "BulletNum": 2, + "DepletionBulletNum": 2, + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4286, + "FourPetalsPetalRadiusRate": 0.3333, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": 0.25, + "SpawnRotateXDegreeBase": 5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.5026, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 6, + "DepletionRate": 0.5, + "EndRadiusForField": 1.05, + "EndRadiusForPlayer": 1.12, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.106 + }, + "DrawSizeParam": { + "EndRadius": 0.48, + "InitRadius": 0.48 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 20, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 2.65, + "WidthHalfNear": 2.2 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.8, + "PaintRadiusShock": 1.6 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.2, + "BulletNum": 2, + "DepletionBulletNum": 0, + "DepletionSpeedRate": 0.7, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": 0, + "SpawnSpeedBase": 1.1026, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 5, + "DepletionRate": 0.5, + "EndRadiusForField": 0.7, + "EndRadiusForPlayer": 0.97, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.106 + }, + "DrawSizeParam": { + "EndRadius": 0.48, + "InitRadius": 0.48 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 20, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 2.2, + "WidthHalfNear": 1.8 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.8, + "PaintRadiusShock": 1.6 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + }, + { + "AfterOffsetSpawnSpeed": 0, + "BulletNum": 6, + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0, + "FourPetalsPetalRadiusRate": 0, + "PaintOnly": true, + "SpawnPositionHeight": 1, + "SpawnPositionRandomCube": 0, + "SpawnRotateYDegree": 18, + "SpawnSpeedBase": 0.85, + "SpawnSpeedRandom": 0.6, + "SpawnSplash": false, + "SpawnWideDegree": 4, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 1, + "DepletionRate": 0.5, + "EndRadiusForField": 0.7, + "EndRadiusForPlayer": 0.17, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.106 + }, + "DrawSizeParam": { + "EndRadius": 0.08, + "InitRadius": 0.08 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 20, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.05, + "WidthHalfNear": 0.8 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.45, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 18, + "FallPeriodFirstTargetSpeed": 0.03, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 15, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + }, + { + "BulletNum": 6, + "DepletionSpeedRate": 0.7, + "PaintOnly": true, + "SpawnPositionHeight": 1, + "SpawnRotateYDegree": -18, + "SpawnSpeedBase": 0.85, + "SpawnSpeedRandom": 0.6, + "SpawnSplash": false, + "SpawnWideDegree": -4, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 1, + "DepletionRate": 0.5, + "EndRadiusForField": 0.7, + "EndRadiusForPlayer": 0.17, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.106 + }, + "DrawSizeParam": { + "EndRadius": 0.08, + "InitRadius": 0.08 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 20, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.05, + "WidthHalfNear": 0.8 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.45, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 18, + "FallPeriodFirstTargetSpeed": 0.03, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 15, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + } + ], + "Unit@10.1.0": [ + { + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4286, + "FourPetalsPetalRadiusRate": 0.3333, + "SpawnPositionOffsetHeight": 1, + "SpawnRotateXDegreeBase": 7.5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.7026, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 6, + "DepletionRate": 0.5, + "EndRadiusForField": 1.05, + "EndRadiusForPlayer": 1.05, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.48, + "InitRadius": 0.48 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 20, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 4.1, + "WidthHalfNear": 3.9 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.8, + "PaintRadiusShock": 1.6 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.2, + "BulletNum": 2, + "DepletionBulletNum": 2, + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4286, + "FourPetalsPetalRadiusRate": 0.3333, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": 0.25, + "SpawnRotateXDegreeBase": 5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.5026, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 6, + "DepletionRate": 0.5, + "EndRadiusForField": 1.05, + "EndRadiusForPlayer": 1.05, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.48, + "InitRadius": 0.48 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 20, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 2.65, + "WidthHalfNear": 2.2 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.8, + "PaintRadiusShock": 1.6 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.2, + "BulletNum": 2, + "DepletionBulletNum": 0, + "DepletionSpeedRate": 0.7, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": 0, + "SpawnSpeedBase": 1.1026, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 5, + "DepletionRate": 0.5, + "EndRadiusForField": 0.7, + "EndRadiusForPlayer": 0.9, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.48, + "InitRadius": 0.48 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 20, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 2.2, + "WidthHalfNear": 1.8 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.8, + "PaintRadiusShock": 1.6 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + }, + { + "AfterOffsetSpawnSpeed": 0, + "BulletNum": 6, + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0, + "FourPetalsPetalRadiusRate": 0, + "PaintOnly": true, + "SpawnPositionHeight": 1, + "SpawnPositionRandomCube": 0, + "SpawnRotateYDegree": 18, + "SpawnSpeedBase": 0.85, + "SpawnSpeedRandom": 0.6, + "SpawnSplash": false, + "SpawnWideDegree": 4, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 1, + "DepletionRate": 0.5, + "EndRadiusForField": 0.7, + "EndRadiusForPlayer": 0.1, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.08, + "InitRadius": 0.08 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 20, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.05, + "WidthHalfNear": 0.8 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.45, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 18, + "FallPeriodFirstTargetSpeed": 0.03, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 15, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + }, + { + "BulletNum": 6, + "DepletionSpeedRate": 0.7, + "PaintOnly": true, + "SpawnPositionHeight": 1, + "SpawnRotateYDegree": -18, + "SpawnSpeedBase": 0.85, + "SpawnSpeedRandom": 0.6, + "SpawnSplash": false, + "SpawnWideDegree": -4, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 1, + "DepletionRate": 0.5, + "EndRadiusForField": 0.7, + "EndRadiusForPlayer": 0.1, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.08, + "InitRadius": 0.08 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 20, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.05, + "WidthHalfNear": 0.8 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.45, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 18, + "FallPeriodFirstTargetSpeed": 0.03, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 15, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + } + ], + "Unit@7.2.0": [ + { + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4286, + "FourPetalsPetalRadiusRate": 0.3333, + "SpawnPositionOffsetHeight": 1, + "SpawnRotateXDegreeBase": 7.5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.7026, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 6, + "DepletionRate": 0.5, + "EndRadiusForField": 1.05, + "EndRadiusForPlayer": 1.05, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.48, + "InitRadius": 0.48 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 20, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 4.1, + "WidthHalfNear": 3.9 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.8, + "PaintRadiusShock": 1.6 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.2, + "BulletNum": 2, + "DepletionBulletNum": 2, + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4286, + "FourPetalsPetalRadiusRate": 0.3333, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": 0.25, + "SpawnRotateXDegreeBase": 5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.5026, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 6, + "DepletionRate": 0.5, + "EndRadiusForField": 1.05, + "EndRadiusForPlayer": 1.05, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.48, + "InitRadius": 0.48 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 20, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 2.65, + "WidthHalfNear": 2.2 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.8, + "PaintRadiusShock": 1.6 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.2, + "BulletNum": 2, + "DepletionBulletNum": 0, + "DepletionSpeedRate": 0.7, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": 0, + "SpawnSpeedBase": 1.1026, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 5, + "DepletionRate": 0.5, + "EndRadiusForField": 0.7, + "EndRadiusForPlayer": 0.9, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.48, + "InitRadius": 0.48 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 20, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 2.2, + "WidthHalfNear": 1.8 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.8, + "PaintRadiusShock": 1.6 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + }, + { + "AfterOffsetSpawnSpeed": 0, + "BulletNum": 6, + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0, + "FourPetalsPetalRadiusRate": 0, + "PaintOnly": true, + "SpawnPositionHeight": 1, + "SpawnPositionRandomCube": 0, + "SpawnRotateYDegree": 18, + "SpawnSpeedBase": 0.85, + "SpawnSpeedRandom": 0.6, + "SpawnSplash": false, + "SpawnWideDegree": 4, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 1, + "DepletionRate": 0.5, + "EndRadiusForField": 0.7, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.08, + "InitRadius": 0.08 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 20, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.05, + "WidthHalfNear": 0.8 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.45, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 18, + "FallPeriodFirstTargetSpeed": 0.03, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 15, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + }, + { + "BulletNum": 6, + "DepletionSpeedRate": 0.7, + "PaintOnly": true, + "SpawnPositionHeight": 1, + "SpawnRotateYDegree": -18, + "SpawnSpeedBase": 0.85, + "SpawnSpeedRandom": 0.6, + "SpawnSplash": false, + "SpawnWideDegree": -4, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "DepletionRate": 0.5, + "EndRadiusForField": 0.7, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.08, + "InitRadius": 0.08 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.6, + "DepthScaleMaxStraight": 1.6, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 20, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.05, + "WidthHalfNear": 0.8 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.45, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 18, + "FallPeriodFirstTargetSpeed": 0.03, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 15, + "FallPeriodSecondTargetSpeed": 0.08 + } + } + } + ] + }, + "WeaponRollParam": { + "DashFrame": 60, + "InkConsumeMaxPerFrame": 0.001, + "InkConsumeMinPerFrame": 0.0002, + "InkRecoverStop": 20, + "SpeedDash": 0.132, + "SpeedDashTurnBreak": 0.108, + "SpeedInkConsumeMax": 0.132, + "SpeedInkConsumeMin": 0.02, + "SpeedNormal": 0.108 + }, + "WeaponVerticalSwingParam": { + "InkConsume": 0.12, + "InkRecoverStop": 65, + "SwingFrame": 42, + "SwingMoveSpeed": 0.08, + "InkRecoverStop@6.0.0": 70 + }, + "WeaponWideSwingParam": { + "GuideParam": { + "Frame": 7, + "WidthScale": 1.3 + }, + "InkConsume": 0.08, + "InkRecoverStop": 45, + "SwingFrame": 19, + "SwingMoveSpeed": 0.072 + }, + "WideSwingUnitGroupParam": { + "DamageParam": { + "DamageRejectEndFrame": 44, + "DamageRejectRate": 0.5, + "DamageRejectStartFrame": 24, + "Inside": { + "DamageHighDistance": 7.2, + "DamageHighValue": 1000, + "DamageLowDistance": 7.2, + "DamageLowValue": 1000, + "DamageMaxDistance": 4.2, + "DamageMaxValue": 1500, + "DamageMinDistance": 10.96923, + "DamageMinValue": 300, + "Degree": 15, + "DepletionDamageRate": 0.25, + "FinalDamageMinValue": 300, + "InsideDistanceXZ": 1.2, + "Degree@6.0.0": 12 + }, + "Outside": { + "DamageHighDistance": 6.2, + "DamageHighValue": 500, + "DamageLowDistance": 6.2, + "DamageLowValue": 500, + "DamageMaxDistance": 2, + "DamageMaxValue": 1000, + "DamageMinDistance": 8.2, + "DamageMinValue": 300, + "DamageRate": 1, + "Degree": 25, + "FinalDamageMinValue": 300 + } + }, + "SplashNearestParam": { + "SpawnParam": { + "MaxHeight": 0.2, + "Offset": { + "X": 0, + "Y": -2, + "Z": 0.5 + }, + "PaintDepthScale": 1.5, + "PaintWidthHalf": 1.5 + } + }, + "Unit": [ + { + "BulletNum": 10, + "DepletionBulletNum": 3, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.6, + "SpawnSpeedBase": 0.94, + "SpawnSpeedRandom": 0.24, + "SpawnWideDegree": 18, + "SwerveRateBySpeed": 0.05, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.52, + "EndRadiusForPlayer": 0.96, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.126 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 7, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 45, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.28, + "WidthHalfNear": 1.58 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.5, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 1 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + }, + { + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.3, + "SpawnSpeedBase": 0.42, + "SpawnSpeedRandom": 0.09, + "SpawnWideDegree": 6, + "SwerveRateBySpeed": 0.1, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.52, + "EndRadiusForPlayer": 0.96, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.126 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 7, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 45, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.28, + "WidthHalfNear": 1.58 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.5, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 1 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + } + ], + "Unit@10.1.0": [ + { + "BulletNum": 10, + "DepletionBulletNum": 3, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.6, + "SpawnSpeedBase": 0.94, + "SpawnSpeedRandom": 0.24, + "SpawnWideDegree": 18, + "SwerveRateBySpeed": 0.05, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.52, + "EndRadiusForPlayer": 0.76, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 7, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 45, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.28, + "WidthHalfNear": 1.58 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.5, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 1 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + }, + { + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.3, + "SpawnSpeedBase": 0.42, + "SpawnSpeedRandom": 0.09, + "SpawnWideDegree": 6, + "SwerveRateBySpeed": 0.1, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.52, + "EndRadiusForPlayer": 0.76, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 7, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 45, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.28, + "WidthHalfNear": 1.58 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.5, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 1 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + } + ] + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "1040": { + "BodyParam": { + "CollisionParam": { + "KnockBackOpponent": { + "AccelMax": 800, + "AccelMin": 420, + "MyVelocityRate": 30, + "OpponentVelocityRate": 4800 + }, + "KnockBackRollerPlayerDamageOff": { + "AccelMax": 280, + "AccelMin": 280, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 30 + }, + "KnockBackRollerPlayerDamageOn": { + "AccelMax": 550, + "AccelMin": 410, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 30 + }, + "Radius": 0.4, + "WidthHalf": 2.1 + }, + "Damage": 700, + "PaintParam": { + "Depth": 1.5, + "SpeedMax": 0.142, + "WidthAddWallCut": 0.4, + "WidthHalfMax": 3.4 + }, + "SideParam": { + "CheckLength": 1.3, + "Radius": 0.75 + } + }, + "BulletAdditionMovePlayerSplashNearestParam": { + "XRate": 0.3, + "YPlusRate": 0, + "ZRate": 0.3 + }, + "MainEffectiveRangeUpParam": { + "Mid": 0.37 + }, + "MainWeaponSetting": { + "WeaponSpeedType": "Mid" + }, + "VerticalSwingUnitGroupParam": { + "DamageParam": { + "DamageRejectEndFrame": 65, + "DamageRejectRate": 0.5, + "DamageRejectStartFrame": 40, + "Inside": { + "DamageHighDistance": 7.7, + "DamageHighValue": 1000, + "DamageLowDistance": 14.5, + "DamageLowValue": 500, + "DamageMaxDistance": 5.2, + "DamageMaxValue": 1200, + "DamageMinDistance": 16, + "DamageMinValue": 400, + "Degree": 5, + "DepletionDamageRate": 0.5, + "FinalDamageMinValue": 400, + "InsideDistanceXZ": 0, + "DamageHighDistance@3.0.0": 6.7, + "DamageLowDistance@3.0.0": 9.7, + "DamageMinDistance@3.0.0": 13.2 + }, + "Outside": { + "DamageHighDistance": 7.7, + "DamageHighValue": 1000, + "DamageLowDistance": 14.5, + "DamageLowValue": 500, + "DamageMaxDistance": 5.2, + "DamageMaxValue": 1200, + "DamageMinDistance": 16, + "DamageMinValue": 400, + "DamageRate": 1, + "Degree": 20, + "DepletionDamageRate": 0.5, + "FinalDamageMinValue": 400, + "DamageHighDistance@3.0.0": 6.7, + "DamageLowDistance@3.0.0": 9.7, + "DamageMinDistance@3.0.0": 13.2 + } + }, + "SpawnSplashBetweenLength": 4.5, + "SpawnSplashFirstLength": 1.2, + "SpawnSplashNum": 5, + "SplashNearestParam": { + "SpawnParam": { + "MaxHeight": 0.2, + "Offset": { + "X": 0, + "Y": -2, + "Z": 0.5 + }, + "PaintDepthScale": 1.5, + "PaintWidthHalf": 1.5 + } + }, + "SplashPaintParam": { + "DepthScaleMax": 3, + "DepthScaleMin": 3, + "WidthHalf": 1.25, + "WidthHalfNearest": 1.25 + }, + "Unit": [ + { + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4286, + "FourPetalsPetalRadiusRate": 0.3333, + "SpawnPositionHeight": 0, + "SpawnPositionOffsetHeight": 0.5, + "SpawnRotateXDegreeBase": 7.5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 2.2749, + "SpawnWideDegree": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 6, + "DepletionRate": 0.5, + "EndRadiusForField": 0.65, + "EndRadiusForPlayer": 0.77, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.11 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 20, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 2.6, + "WidthHalfNear": 2.2 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusGround": 0.65, + "PaintRadiusShock": 1.4 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.2, + "BulletNum": 2, + "DepletionBulletNum": 2, + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4286, + "FourPetalsPetalRadiusRate": 0.3333, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": -0.25, + "SpawnRotateXDegreeBase": 5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 2.0749, + "SpawnSpeedRandom": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 6, + "DepletionRate": 0.5, + "EndRadiusForField": 0.65, + "EndRadiusForPlayer": 0.77, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.11 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMax": 10, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DepthScaleMinStraight": 1, + "DistanceFar": 20, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.75, + "WidthHalfNear": 1.45 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusGround": 0.65, + "PaintRadiusShock": 1.4 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.2, + "BulletNum": 3, + "DepletionBulletNum": 0, + "DepletionSpeedRate": 0.7, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": -1.25, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.6749, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 5, + "DepletionRate": 0.5, + "EndRadiusForField": 0.65, + "EndRadiusForPlayer": 0.72, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.11 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMax": 10, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DepthScaleMinStraight": 1, + "DistanceFar": 20, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.75, + "WidthHalfNear": 1.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.7, + "PaintRadiusGround": 0.65, + "PaintRadiusShock": 1.4 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + } + ], + "Unit@10.1.0": [ + { + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4286, + "FourPetalsPetalRadiusRate": 0.3333, + "SpawnPositionHeight": 0, + "SpawnPositionOffsetHeight": 0.5, + "SpawnRotateXDegreeBase": 7.5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 2.2749, + "SpawnWideDegree": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 6, + "DepletionRate": 0.5, + "EndRadiusForField": 0.65, + "EndRadiusForPlayer": 0.7, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 20, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 2.6, + "WidthHalfNear": 2.2 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusGround": 0.65, + "PaintRadiusShock": 1.4 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.2, + "BulletNum": 2, + "DepletionBulletNum": 2, + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4286, + "FourPetalsPetalRadiusRate": 0.3333, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": -0.25, + "SpawnRotateXDegreeBase": 5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 2.0749, + "SpawnSpeedRandom": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 6, + "DepletionRate": 0.5, + "EndRadiusForField": 0.65, + "EndRadiusForPlayer": 0.7, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMax": 10, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DepthScaleMinStraight": 1, + "DistanceFar": 20, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.75, + "WidthHalfNear": 1.45 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusGround": 0.65, + "PaintRadiusShock": 1.4 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.2, + "BulletNum": 3, + "DepletionBulletNum": 0, + "DepletionSpeedRate": 0.7, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": -1.25, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.6749, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 5, + "DepletionRate": 0.5, + "EndRadiusForField": 0.65, + "EndRadiusForPlayer": 0.65, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMax": 10, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DepthScaleMinStraight": 1, + "DistanceFar": 20, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.75, + "WidthHalfNear": 1.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.7, + "PaintRadiusGround": 0.65, + "PaintRadiusShock": 1.4 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + } + ], + "Unit@9.2.0": [ + { + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4286, + "FourPetalsPetalRadiusRate": 0.3333, + "SpawnPositionHeight": 0, + "SpawnPositionOffsetHeight": 0.5, + "SpawnRotateXDegreeBase": 7.5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 2.2749, + "SpawnWideDegree": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 6, + "DepletionRate": 0.5, + "EndRadiusForField": 0.65, + "EndRadiusForPlayer": 0.65, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 20, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 2.6, + "WidthHalfNear": 2.2 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusGround": 0.65, + "PaintRadiusShock": 1.4 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.2, + "BulletNum": 2, + "DepletionBulletNum": 2, + "DepletionSpeedRate": 0.7, + "FourPetalsCenterRadiusRate": 0.4286, + "FourPetalsPetalRadiusRate": 0.3333, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": -0.25, + "SpawnRotateXDegreeBase": 5, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 2.0749, + "SpawnSpeedRandom": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 6, + "DepletionRate": 0.5, + "EndRadiusForField": 0.65, + "EndRadiusForPlayer": 0.65, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMax": 10, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DepthScaleMinStraight": 1, + "DistanceFar": 20, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.75, + "WidthHalfNear": 1.45 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusGround": 0.65, + "PaintRadiusShock": 1.4 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + }, + { + "AfterOffsetSpawnRotateXDegree": -2.5, + "AfterOffsetSpawnSpeed": -0.2, + "BulletNum": 3, + "DepletionBulletNum": 0, + "DepletionSpeedRate": 0.7, + "SpawnPositionHeight": 0.25, + "SpawnPositionOffsetHeight": -1.25, + "SpawnRotateYDegree": 0, + "SpawnSpeedBase": 1.6749, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 5, + "DepletionRate": 0.5, + "EndRadiusForField": 0.65, + "EndRadiusForPlayer": 0.6, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 65, + "ChangeWidthStartFrame": 40, + "DegreeUseDepthScaleMax": 10, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DepthScaleMinStraight": 1, + "DistanceFar": 20, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.75, + "WidthHalfNear": 1.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.7, + "PaintRadiusGround": 0.65, + "PaintRadiusShock": 1.4 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.1 + } + } + } + ] + }, + "WeaponRollParam": { + "DashFrame": 30, + "InkConsumeMaxPerFrame": 0.0005, + "InkConsumeMinPerFrame": 0.0001, + "InkRecoverStop": 20, + "SpeedDash": 0.142, + "SpeedDashTurnBreak": 0.118, + "SpeedInkConsumeMax": 0.142, + "SpeedInkConsumeMin": 0.02, + "SpeedNormal": 0.118 + }, + "WeaponVerticalSwingParam": { + "InkConsume": 0.09, + "InkConsumeRateDepletion": 0.5, + "InkRecoverStop": 50, + "SwingFrame": 20, + "SwingMoveSpeed": 0.072, + "InkConsume@6.1.0": 0.1 + }, + "WeaponWideSwingParam": { + "GuideParam": { + "Frame": 7, + "WidthScale": 1.2 + }, + "InkConsume": 0.09, + "InkConsumeRateDepletion": 0.5, + "InkRecoverStop": 45, + "SubWeaponSquidDelayFrm": 8, + "SwingFrame": 18, + "SwingMoveSpeed": 0.072, + "InkConsume@6.1.0": 0.1 + }, + "WideSwingUnitGroupParam": { + "DamageParam": { + "DamageRejectEndFrame": 55, + "DamageRejectRate": 0.5, + "DamageRejectStartFrame": 30, + "Inside": { + "DamageHighDistance": 6.2, + "DamageHighValue": 500, + "DamageLowDistance": 6.2, + "DamageLowValue": 500, + "DamageMaxDistance": 4.2, + "DamageMaxValue": 700, + "DamageMinDistance": 8.2, + "DamageMinValue": 400, + "Degree": 12, + "DepletionDamageRate": 0.25, + "FinalDamageMinValue": 400, + "InsideDistanceXZ": 1.2, + "DamageMinValue@8.0.0": 350, + "DamageMinValue@2.0.0": 300, + "FinalDamageMinValue@8.0.0": 350, + "FinalDamageMinValue@2.0.0": 300 + }, + "Outside": { + "DamageHighDistance": 5.7, + "DamageHighValue": 500, + "DamageLowDistance": 5.7, + "DamageLowValue": 500, + "DamageMaxDistance": 2, + "DamageMaxValue": 700, + "DamageMinDistance": 7.7, + "DamageMinValue": 400, + "DamageRate": 1, + "Degree": 25, + "DepletionDamageRate": 0.25, + "FinalDamageMinValue": 400, + "DamageMinValue@8.0.0": 350, + "DamageMinValue@2.0.0": 300, + "FinalDamageMinValue@8.0.0": 350, + "FinalDamageMinValue@2.0.0": 300 + } + }, + "SplashNearestParam": { + "SpawnParam": { + "MaxHeight": 0.2, + "Offset": { + "X": 0, + "Y": -2, + "Z": 0.5 + }, + "PaintDepthScale": 1.5, + "PaintWidthHalf": 1.5 + } + }, + "Unit": [ + { + "BulletNum": 8, + "DepletionBulletNum": 3, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 1.9, + "SpawnSpeedBase": 1.1, + "SpawnSpeedRandom": 0.2, + "SpawnWideDegree": 18, + "SwerveRateBySpeed": 0.05, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 5, + "DepletionRate": 0.5, + "EndRadiusForField": 0.8, + "EndRadiusForPlayer": 1.37, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.114 + }, + "DrawSizeParam": { + "EndRadius": 0.35, + "InitRadius": 0.35 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 8, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 15, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.85, + "WidthHalfNear": 2 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.5, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + }, + { + "BulletNum": 5, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 1.8, + "SpawnSpeedBase": 0.75, + "SpawnSpeedRandom": 0.15, + "SpawnWideDegree": 12, + "SwerveRateBySpeed": 0.05, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.7, + "EndRadiusForPlayer": 0.97, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.114 + }, + "DrawSizeParam": { + "EndRadius": 0.35, + "InitRadius": 0.35 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 8, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMax": 10, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DepthScaleMinStraight": 1, + "DistanceFar": 15, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.85, + "WidthHalfNear": 2 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.5, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + }, + { + "BulletNum": 3, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 1.2, + "SpawnSpeedBase": 0.4, + "SpawnSpeedRandom": 0.05, + "SpawnWideDegree": 8, + "SwerveRateBySpeed": 0.1, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 3, + "DepletionRate": 0.5, + "EndRadiusForField": 0.6, + "EndRadiusForPlayer": 0.77, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.114 + }, + "DrawSizeParam": { + "ChangeFrame": 0, + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 8, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMax": 10, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DepthScaleMinStraight": 1, + "DistanceFar": 15, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.5, + "WidthHalfNear": 1.7 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.5, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + } + ], + "Unit@10.1.0": [ + { + "BulletNum": 8, + "DepletionBulletNum": 3, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 1.9, + "SpawnSpeedBase": 1.1, + "SpawnSpeedRandom": 0.2, + "SpawnWideDegree": 18, + "SwerveRateBySpeed": 0.05, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 5, + "DepletionRate": 0.5, + "EndRadiusForField": 0.8, + "EndRadiusForPlayer": 1.2, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.35, + "InitRadius": 0.35 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 8, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DistanceFar": 15, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.85, + "WidthHalfNear": 2 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.5, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + }, + { + "BulletNum": 5, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 1.8, + "SpawnSpeedBase": 0.75, + "SpawnSpeedRandom": 0.15, + "SpawnWideDegree": 12, + "SwerveRateBySpeed": 0.05, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.7, + "EndRadiusForPlayer": 0.8, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.35, + "InitRadius": 0.35 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 8, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMax": 10, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DepthScaleMinStraight": 1, + "DistanceFar": 15, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.85, + "WidthHalfNear": 2 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.5, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + }, + { + "BulletNum": 3, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 1.2, + "SpawnSpeedBase": 0.4, + "SpawnSpeedRandom": 0.05, + "SpawnWideDegree": 8, + "SwerveRateBySpeed": 0.1, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 3, + "DepletionRate": 0.5, + "EndRadiusForField": 0.6, + "EndRadiusForPlayer": 0.6, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "ChangeFrame": 0, + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 8, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMax": 10, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1.2, + "DepthScaleMinStraight": 1, + "DistanceFar": 15, + "HeightUseDepthScaleMaxBreakFree": 1.5, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 1.5, + "WidthHalfNear": 1.7 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.5, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + } + ] + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "1100": { + "BodyParam": { + "CollisionParam": { + "DownRayCastLength": 0.65, + "KnockBackDefeat": true, + "KnockBackOpponent": { + "AccelMax": 1000, + "AccelMin": 500, + "MyVelocityRate": 30, + "OpponentVelocityRate": 4800 + }, + "KnockBackRollerPlayerDamageOff": { + "AccelMax": 350, + "AccelMin": 350, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 30 + }, + "KnockBackRollerPlayerDamageOn": { + "AccelMax": 720, + "AccelMin": 540, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 30 + }, + "Radius": 0.4, + "WidthHalf": 0.8 + }, + "Damage": 200, + "PaintParam": { + "SpeedMax": 0.192, + "SpeedMin": 0.12, + "WidthHalfMax": 0.6, + "WidthHalfMin": 0.6 + }, + "SideParam": { + "CheckLength": 0.52, + "Radius": 0.75 + } + }, + "BulletAdditionMovePlayerSplashNearestParam": { + "XRate": 0.3, + "YPlusRate": 0, + "ZRate": 0.3 + }, + "MainEffectiveRangeUpParam": { + "BaseDistance": 12.5 + }, + "MainWeaponSetting": { + "WeaponSpeedType": "Fast" + }, + "SwingUnitGroupParam": { + "DamageParam": { + "DamageRejectEndFrame": 40, + "DamageRejectRate": 0.5, + "DamageRejectStartFrame": 20, + "Inside": { + "DamageHighDistance": 6.8, + "DamageHighValue": 250, + "DamageLowDistance": 10.3, + "DamageLowValue": 150, + "DamageMaxDistance": 4.3, + "DamageMaxValue": 300, + "DamageMinDistance": 10.3, + "DamageMinValue": 150, + "Degree": 60, + "FinalDamageMinValue": 150, + "InsideDistanceXZ": 0 + }, + "Outside": { + "DamageHighDistance": 6.8, + "DamageHighValue": 250, + "DamageLowDistance": 10.3, + "DamageLowValue": 150, + "DamageMaxDistance": 4.3, + "DamageMaxValue": 300, + "DamageMinDistance": 10.3, + "DamageMinValue": 150, + "DamageRate": 1, + "Degree": 80, + "FinalDamageMinValue": 150 + } + }, + "SplashNearestParam": { + "LoopNum": 6, + "OrderNum": 2, + "SpawnParam": { + "MaxHeight": 1000, + "Offset": { + "X": -0.2, + "Y": -1, + "Z": 0.2 + }, + "PaintWidthHalf": 1.5, + "Visible": true + } + }, + "Unit": [ + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "BulletNum": 2, + "DepletionBulletNum": 1, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnRotateYDegreeLeftToRight": -10, + "SpawnRotateYDegreeRightToLeft": 10, + "SpawnSpeedBase": 0.72, + "SpawnSpeedRandom": 0.12, + "SpawnWideDegree": 18, + "SwerveRateBySpeed": 0.1, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 5, + "DepletionRate": 0.5, + "EndRadiusForField": 0.8, + "EndRadiusForPlayer": 1.5, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.115 + }, + "DrawSizeParam": { + "EndRadius": 0.35, + "InitRadius": 0.35 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 7, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 45, + "ChangeWidthStartFrame": 18, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.2, + "DepthScaleMaxStraight": 2.2, + "DepthScaleMinBreakFree": 1.4, + "DepthScaleMinStraight": 1.4, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 2, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 2.551, + "WidthHalfNear": 2.551 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusGround": 0.55, + "PaintRadiusShock": 1.44 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 90, + "FallPeriodFirstFrameMin": 70, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.075 + } + } + }, + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "BulletNum": 1, + "DepletionSpeedRate": 0.5, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnRotateYDegreeLeftToRight": -10, + "SpawnRotateYDegreeRightToLeft": 10, + "SpawnSpeedBase": 0.45, + "SpawnSpeedRandom": 0.12, + "SpawnWideDegree": 22, + "SwerveRateBySpeed": 0.3, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 1, + "ChangeFrameForPlayer": 2, + "DepletionRate": 0.5, + "EndRadiusForField": 0.4, + "EndRadiusForPlayer": 0.9, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.115 + }, + "DrawSizeParam": { + "EndRadius": 0.35, + "InitRadius": 0.2 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 4, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 45, + "ChangeWidthStartFrame": 18, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.2, + "DepthScaleMaxStraight": 2.2, + "DepthScaleMinBreakFree": 1.4, + "DepthScaleMinStraight": 1.4, + "DistanceFar": 5, + "DistanceNear": 1, + "HeightUseDepthScaleMaxBreakFree": 2, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 1.814, + "WidthHalfNear": 1.814 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.5, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + } + ], + "Unit@10.1.0": [ + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "BulletNum": 2, + "DepletionBulletNum": 1, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnRotateYDegreeLeftToRight": -10, + "SpawnRotateYDegreeRightToLeft": 10, + "SpawnSpeedBase": 0.72, + "SpawnSpeedRandom": 0.12, + "SpawnWideDegree": 18, + "SwerveRateBySpeed": 0.1, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 5, + "DepletionRate": 0.5, + "EndRadiusForField": 0.8, + "EndRadiusForPlayer": 1.3, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.35, + "InitRadius": 0.35 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 7, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 45, + "ChangeWidthStartFrame": 18, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.2, + "DepthScaleMaxStraight": 2.2, + "DepthScaleMinBreakFree": 1.4, + "DepthScaleMinStraight": 1.4, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 2, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 2.551, + "WidthHalfNear": 2.551 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusGround": 0.55, + "PaintRadiusShock": 1.44 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 90, + "FallPeriodFirstFrameMin": 70, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.075 + } + } + }, + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "BulletNum": 1, + "DepletionSpeedRate": 0.5, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnRotateYDegreeLeftToRight": -10, + "SpawnRotateYDegreeRightToLeft": 10, + "SpawnSpeedBase": 0.45, + "SpawnSpeedRandom": 0.12, + "SpawnWideDegree": 22, + "SwerveRateBySpeed": 0.3, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 1, + "ChangeFrameForPlayer": 2, + "DepletionRate": 0.5, + "EndRadiusForField": 0.4, + "EndRadiusForPlayer": 0.7, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.35, + "InitRadius": 0.2 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 4, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 45, + "ChangeWidthStartFrame": 18, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.2, + "DepthScaleMaxStraight": 2.2, + "DepthScaleMinBreakFree": 1.4, + "DepthScaleMinStraight": 1.4, + "DistanceFar": 5, + "DistanceNear": 1, + "HeightUseDepthScaleMaxBreakFree": 2, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 1.814, + "WidthHalfNear": 1.814 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.5, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + } + ], + "Unit@8.0.0": [ + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "BulletNum": 2, + "DepletionBulletNum": 1, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnRotateYDegreeLeftToRight": -10, + "SpawnRotateYDegreeRightToLeft": 10, + "SpawnSpeedBase": 0.72, + "SpawnSpeedRandom": 0.12, + "SpawnWideDegree": 18, + "SwerveRateBySpeed": 0.1, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 5, + "DepletionRate": 0.5, + "EndRadiusForField": 0.8, + "EndRadiusForPlayer": 1.2, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.35, + "InitRadius": 0.35 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 7, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 45, + "ChangeWidthStartFrame": 18, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.2, + "DepthScaleMaxStraight": 2.2, + "DepthScaleMinBreakFree": 1.4, + "DepthScaleMinStraight": 1.4, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 2, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 2.551, + "WidthHalfNear": 2.551 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusGround": 0.55, + "PaintRadiusShock": 1.44 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 90, + "FallPeriodFirstFrameMin": 70, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.075 + } + } + }, + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "BulletNum": 1, + "DepletionSpeedRate": 0.5, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnRotateYDegreeLeftToRight": -10, + "SpawnRotateYDegreeRightToLeft": 10, + "SpawnSpeedBase": 0.45, + "SpawnSpeedRandom": 0.12, + "SpawnWideDegree": 22, + "SwerveRateBySpeed": 0.3, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 1, + "ChangeFrameForPlayer": 2, + "DepletionRate": 0.5, + "EndRadiusForField": 0.4, + "EndRadiusForPlayer": 0.6, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.35, + "InitRadius": 0.2 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 4, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 45, + "ChangeWidthStartFrame": 18, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.2, + "DepthScaleMaxStraight": 2.2, + "DepthScaleMinBreakFree": 1.4, + "DepthScaleMinStraight": 1.4, + "DistanceFar": 5, + "DistanceNear": 1, + "HeightUseDepthScaleMaxBreakFree": 2, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 1.814, + "WidthHalfNear": 1.814 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.5, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + } + ], + "Unit@3.0.0": [ + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "BulletNum": 2, + "DepletionBulletNum": 1, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnRotateYDegreeLeftToRight": -10, + "SpawnRotateYDegreeRightToLeft": 10, + "SpawnSpeedBase": 0.72, + "SpawnSpeedRandom": 0.12, + "SpawnWideDegree": 18, + "SwerveRateBySpeed": 0.1, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 6, + "DepletionRate": 0.5, + "EndRadiusForField": 0.8, + "EndRadiusForPlayer": 1.2, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.35, + "InitRadius": 0.35 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 7, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 45, + "ChangeWidthStartFrame": 18, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.2, + "DepthScaleMaxStraight": 2.2, + "DepthScaleMinBreakFree": 1.4, + "DepthScaleMinStraight": 1.4, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 2, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 2.551, + "WidthHalfNear": 2.551 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusGround": 0.55, + "PaintRadiusShock": 1.44 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 90, + "FallPeriodFirstFrameMin": 70, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.075 + } + } + }, + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "BulletNum": 1, + "DepletionSpeedRate": 0.5, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnRotateYDegreeLeftToRight": -10, + "SpawnRotateYDegreeRightToLeft": 10, + "SpawnSpeedBase": 0.45, + "SpawnSpeedRandom": 0.12, + "SpawnWideDegree": 22, + "SwerveRateBySpeed": 0.3, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 1, + "ChangeFrameForPlayer": 3, + "DepletionRate": 0.5, + "EndRadiusForField": 0.4, + "EndRadiusForPlayer": 0.6, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.35, + "InitRadius": 0.2 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 4, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 45, + "ChangeWidthStartFrame": 18, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.2, + "DepthScaleMaxStraight": 2.2, + "DepthScaleMinBreakFree": 1.4, + "DepthScaleMinStraight": 1.4, + "DistanceFar": 5, + "DistanceNear": 1, + "HeightUseDepthScaleMaxBreakFree": 2, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 1.814, + "WidthHalfNear": 1.814 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.5, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + } + ] + }, + "WeaponRollParam": { + "InkConsumeMaxPerFrame": 0.00125, + "InkConsumeMinPerFrame": 0.00125, + "NoOpInkEffect": true, + "SpeedInkConsumeMax": 0.198, + "SpeedInkConsumeMin": 0.198, + "SpeedNormal": 0.198, + "SwingRepeatFrame": 6, + "ToPaintFrame": 12, + "InkConsumeMaxPerFrame@6.0.0": 0.00135, + "InkConsumeMinPerFrame@6.0.0": 0.00135, + "SpeedInkConsumeMax@6.0.0": 0.192, + "SpeedInkConsumeMin@6.0.0": 0.192, + "SpeedNormal@6.0.0": 0.192 + }, + "WeaponSwingParam": { + "GuideParam": { + "Frame": 8, + "WidthScale": 1.2 + }, + "InkConsume": 0.02, + "InkRecoverStop": 30, + "SwingFrame": 1, + "SwingMoveSpeed": 0.05 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "1110": { + "BodyParam": { + "CollisionParam": { + "DownRayCastLength": 0.5, + "KnockBackDefeat": true, + "KnockBackOpponent": { + "AccelMax": 1000, + "AccelMin": 500, + "MyVelocityRate": 30, + "OpponentVelocityRate": 4800 + }, + "KnockBackRollerPlayerDamageOff": { + "AccelMax": 350, + "AccelMin": 350, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 30 + }, + "KnockBackRollerPlayerDamageOn": { + "AccelMax": 720, + "AccelMin": 540, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 30 + }, + "Radius": 0.4, + "WidthHalf": 0.8 + }, + "Damage": 250, + "PaintParam": { + "SpeedMax": 0.132, + "WidthHalfMax": 0.9, + "WidthHalfMin": 0.9 + }, + "SideParam": { + "CheckLength": 1, + "Radius": 0.75 + } + }, + "BulletAdditionMovePlayerSplashNearestParam": { + "XRate": 0.3, + "YPlusRate": 0, + "ZRate": 0.3 + }, + "MainEffectiveRangeUpParam": { + "BaseDistance": 10.5 + }, + "MainWeaponSetting": {}, + "SwingUnitGroupParam": { + "DamageParam": { + "DamageRejectEndFrame": 45, + "DamageRejectRate": 0.5, + "DamageRejectStartFrame": 24, + "Inside": { + "DamageHighDistance": 14.3, + "DamageHighValue": 200, + "DamageLowDistance": 14.3, + "DamageLowValue": 200, + "DamageMaxDistance": 3.3, + "DamageMaxValue": 400, + "DamageMinDistance": 14.3, + "DamageMinValue": 200, + "Degree": 60, + "InsideDistanceXZ": 0 + }, + "Outside": { + "DamageHighDistance": 14.3, + "DamageHighValue": 200, + "DamageLowDistance": 14.3, + "DamageLowValue": 200, + "DamageMaxDistance": 3.3, + "DamageMaxValue": 400, + "DamageMinDistance": 14.3, + "DamageRate": 1, + "Degree": 80 + } + }, + "SplashNearestParam": { + "LoopNum": 6, + "OrderNum": 2, + "SpawnParam": { + "Offset": { + "X": -0.2, + "Y": -1, + "Z": 0.6 + }, + "PaintWidthHalf": 2, + "Visible": true + } + }, + "Unit": [ + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "BulletNum": 3, + "DepletionBulletNum": 1, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnRotateYDegreeRightToLeft": 5, + "SpawnSpeedBase": 0.84, + "SpawnSpeedRandom": 0.13, + "SpawnWideDegree": 24, + "SwerveRateBySpeed": 0.1, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 5, + "DepletionRate": 0.5, + "EndRadiusForField": 0.8, + "EndRadiusForPlayer": 1.47, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.113 + }, + "DrawSizeParam": { + "EndRadius": 0.4, + "InitRadius": 0.4 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 8, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.8, + "DepthScaleMaxStraight": 1.8, + "DepthScaleMinBreakFree": 1.4, + "DepthScaleMinStraight": 1.4, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 2, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 2.028, + "WidthHalfNear": 2.028 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusShock": 1.68 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 90, + "FallPeriodFirstFrameMin": 70, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.075 + } + } + }, + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "BulletNum": 2, + "DepletionSpeedRate": 0.5, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnSpeedBase": 0.5, + "SpawnSpeedRandom": 0.26, + "SpawnWideDegree": 20, + "SwerveRateBySpeed": 0.2, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 1, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.6, + "EndRadiusForPlayer": 1.07, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.113 + }, + "DrawSizeParam": { + "EndRadius": 0.2, + "InitRadius": 0.2 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 5, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.8, + "DepthScaleMaxStraight": 1.8, + "DepthScaleMinBreakFree": 1.4, + "DepthScaleMinStraight": 1.4, + "DistanceFar": 5, + "DistanceNear": 1.2, + "HeightUseDepthScaleMaxBreakFree": 2, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 1.465, + "WidthHalfNear": 1.014 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.5, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + } + ], + "Unit@10.1.0": [ + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "BulletNum": 3, + "DepletionBulletNum": 1, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnRotateYDegreeRightToLeft": 5, + "SpawnSpeedBase": 0.84, + "SpawnSpeedRandom": 0.13, + "SpawnWideDegree": 24, + "SwerveRateBySpeed": 0.1, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 5, + "DepletionRate": 0.5, + "EndRadiusForField": 0.8, + "EndRadiusForPlayer": 1.3, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.4, + "InitRadius": 0.4 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 8, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.8, + "DepthScaleMaxStraight": 1.8, + "DepthScaleMinBreakFree": 1.4, + "DepthScaleMinStraight": 1.4, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 2, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 2.028, + "WidthHalfNear": 2.028 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusShock": 1.68 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 90, + "FallPeriodFirstFrameMin": 70, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.075 + } + } + }, + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "BulletNum": 2, + "DepletionSpeedRate": 0.5, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnSpeedBase": 0.5, + "SpawnSpeedRandom": 0.26, + "SpawnWideDegree": 20, + "SwerveRateBySpeed": 0.2, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 1, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.6, + "EndRadiusForPlayer": 0.9, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.2, + "InitRadius": 0.2 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 5, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.8, + "DepthScaleMaxStraight": 1.8, + "DepthScaleMinBreakFree": 1.4, + "DepthScaleMinStraight": 1.4, + "DistanceFar": 5, + "DistanceNear": 1.2, + "HeightUseDepthScaleMaxBreakFree": 2, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 1.465, + "WidthHalfNear": 1.014 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.5, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + } + ], + "Unit@8.0.0": [ + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "BulletNum": 3, + "DepletionBulletNum": 1, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnRotateYDegreeRightToLeft": 5, + "SpawnSpeedBase": 0.84, + "SpawnSpeedRandom": 0.13, + "SpawnWideDegree": 24, + "SwerveRateBySpeed": 0.1, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 5, + "DepletionRate": 0.5, + "EndRadiusForField": 0.8, + "EndRadiusForPlayer": 1.2, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.4, + "InitRadius": 0.4 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 8, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.8, + "DepthScaleMaxStraight": 1.8, + "DepthScaleMinBreakFree": 1.4, + "DepthScaleMinStraight": 1.4, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 2, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 2.028, + "WidthHalfNear": 2.028 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusShock": 1.68 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 90, + "FallPeriodFirstFrameMin": 70, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.075 + } + } + }, + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "BulletNum": 2, + "DepletionSpeedRate": 0.5, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnSpeedBase": 0.5, + "SpawnSpeedRandom": 0.26, + "SpawnWideDegree": 20, + "SwerveRateBySpeed": 0.2, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 1, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.6, + "EndRadiusForPlayer": 0.8, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.2, + "InitRadius": 0.2 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 5, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.8, + "DepthScaleMaxStraight": 1.8, + "DepthScaleMinBreakFree": 1.4, + "DepthScaleMinStraight": 1.4, + "DistanceFar": 5, + "DistanceNear": 1.2, + "HeightUseDepthScaleMaxBreakFree": 2, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 1.465, + "WidthHalfNear": 1.014 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.5, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + } + ], + "Unit@3.0.0": [ + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "BulletNum": 3, + "DepletionBulletNum": 1, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnRotateYDegreeRightToLeft": 5, + "SpawnSpeedBase": 0.84, + "SpawnSpeedRandom": 0.13, + "SpawnWideDegree": 24, + "SwerveRateBySpeed": 0.1, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 6, + "DepletionRate": 0.5, + "EndRadiusForField": 0.8, + "EndRadiusForPlayer": 1.2, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.4, + "InitRadius": 0.4 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 8, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.8, + "DepthScaleMaxStraight": 1.8, + "DepthScaleMinBreakFree": 1.4, + "DepthScaleMinStraight": 1.4, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 2, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 2.028, + "WidthHalfNear": 2.028 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusShock": 1.68 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 90, + "FallPeriodFirstFrameMin": 70, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.075 + } + } + }, + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "BulletNum": 2, + "DepletionSpeedRate": 0.5, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnSpeedBase": 0.5, + "SpawnSpeedRandom": 0.26, + "SpawnWideDegree": 20, + "SwerveRateBySpeed": 0.2, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.6, + "EndRadiusForPlayer": 0.8, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.2, + "InitRadius": 0.2 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 5, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.8, + "DepthScaleMaxStraight": 1.8, + "DepthScaleMinBreakFree": 1.4, + "DepthScaleMinStraight": 1.4, + "DistanceFar": 5, + "DistanceNear": 1.2, + "HeightUseDepthScaleMaxBreakFree": 2, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 1.465, + "WidthHalfNear": 1.014 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.5, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + } + ] + }, + "WeaponRollParam": { + "InkConsumeMaxPerFrame": 0.0015, + "InkConsumeMinPerFrame": 0.0015, + "InkConsumeMaxPerFrame@3.1.0": 0.00162, + "InkConsumeMinPerFrame@3.1.0": 0.00162 + }, + "WeaponSwingParam": { + "GuideParam": { + "Frame": 10, + "WidthScale": 1.7 + }, + "InkConsume": 0.027, + "InkRecoverStop": 30, + "SwingFrame": 1, + "SwingMoveSpeed": 0.03, + "InkConsume@11.0.1": 0.03, + "InkConsume@3.1.0": 0.032 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "1120": { + "BodyParam": { + "CollisionParam": { + "DownRayCastLength": 0.5, + "KnockBackDefeat": true, + "KnockBackOpponent": { + "AccelMax": 1000, + "AccelMin": 500, + "MyVelocityRate": 30, + "OpponentVelocityRate": 4800 + }, + "KnockBackRollerPlayerDamageOff": { + "AccelMax": 350, + "AccelMin": 350, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 30 + }, + "KnockBackRollerPlayerDamageOn": { + "AccelMax": 720, + "AccelMin": 540, + "MyVelocityRate": 4800, + "OpponentVelocityRate": 30 + }, + "WidthHalf": 1.2 + }, + "Damage": 300, + "PaintParam": { + "SpeedMax": 0.18, + "SpeedMin": 0.12, + "WidthHalfMax": 1.3, + "WidthHalfMin": 1.3, + "WidthHalfMax@7.1.0": 1.1, + "WidthHalfMin@7.1.0": 1.1 + }, + "SideParam": { + "CheckLength": 1, + "Radius": 0.75 + } + }, + "BulletAdditionMovePlayerSplashNearestParam": { + "XRate": 0.3, + "YPlusRate": 0, + "ZRate": 0.3 + }, + "MainEffectiveRangeUpParam": { + "BaseDistance": 10.5 + }, + "MainWeaponSetting": { + "WeaponSpeedType": "Mid" + }, + "SwingUnitGroupParam": { + "DamageParam": { + "DamageRejectEndFrame": 45, + "DamageRejectRate": 0.5, + "DamageRejectStartFrame": 24, + "Inside": { + "DamageHighDistance": 13, + "DamageHighValue": 310, + "DamageLowDistance": 13, + "DamageLowValue": 310, + "DamageMaxDistance": 5, + "DamageMaxValue": 600, + "DamageMinDistance": 13, + "DamageMinValue": 310, + "Degree": 60, + "FinalDamageMinValue": 250, + "InsideDistanceXZ": 0, + "DamageHighValue@5.0.0": 250, + "DamageLowValue@5.0.0": 250, + "DamageMinValue@5.0.0": 250 + }, + "Outside": { + "DamageHighDistance": 13, + "DamageHighValue": 310, + "DamageLowDistance": 13, + "DamageLowValue": 310, + "DamageMaxDistance": 5, + "DamageMaxValue": 600, + "DamageMinDistance": 13, + "DamageMinValue": 310, + "DamageRate": 1, + "Degree": 80, + "FinalDamageMinValue": 250, + "DamageHighValue@5.0.0": 250, + "DamageLowValue@5.0.0": 250, + "DamageMinValue@5.0.0": 250 + } + }, + "PushOutCheckFieldCollisionFrame": 2, + "SplashNearestParam": { + "LoopNum": 4, + "OrderNum": 2, + "SpawnParam": { + "Offset": { + "X": -0.2, + "Y": -1, + "Z": 1 + }, + "PaintDepthScale": 1.5, + "PaintWidthHalf": 2.3, + "Visible": true + } + }, + "Unit": [ + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "BulletNum": 1, + "DepletionBulletNum": 1, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnRotateYDegreeLeftToRight": -1, + "SpawnRotateYDegreeRightToLeft": 1, + "SpawnSpeedBase": 1.05, + "SpawnSpeedRandom": 0.02, + "SpawnWideDegree": 0, + "SwerveRateBySpeed": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 6, + "DepletionRate": 0.5, + "EndRadiusForField": 0.8, + "EndRadiusForPlayer": 1.32, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.11 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.8, + "DepthScaleMaxStraight": 1.8, + "DepthScaleMinBreakFree": 1.4, + "DepthScaleMinStraight": 1.4, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 2, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 2.23, + "WidthHalfNear": 2.23 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusShock": 1.68 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 90, + "FallPeriodFirstFrameMin": 70, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.075 + } + } + }, + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "BulletNum": 2, + "DepletionSpeedRate": 0.5, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnRotateYDegreeLeftToRight": -3, + "SpawnRotateYDegreeRightToLeft": 3, + "SpawnSpeedBase": 1, + "SpawnSpeedRandom": 0.02, + "SpawnWideDegree": 6, + "SwerveRateBySpeed": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 6, + "DepletionRate": 0.5, + "EndRadiusForField": 0.8, + "EndRadiusForPlayer": 1.32, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.11 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.8, + "DepthScaleMaxStraight": 1.8, + "DepthScaleMinBreakFree": 1.4, + "DepthScaleMinStraight": 1.4, + "DistanceNear": 10, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 2.23, + "WidthHalfNear": 2.23 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusShock": 1.68 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 90, + "FallPeriodFirstFrameMin": 70, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.075 + } + } + }, + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "BulletNum": 2, + "DepletionSpeedRate": 0.5, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnRotateYDegreeLeftToRight": -3, + "SpawnRotateYDegreeRightToLeft": 3, + "SpawnSpeedBase": 0.9, + "SpawnSpeedRandom": 0.02, + "SpawnWideDegree": 12, + "SwerveRateBySpeed": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 6, + "DepletionRate": 0.5, + "EndRadiusForField": 0.8, + "EndRadiusForPlayer": 1.32, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.11 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.8, + "DepthScaleMaxStraight": 1.8, + "DepthScaleMinBreakFree": 1.4, + "DepthScaleMinStraight": 1.4, + "DistanceNear": 10, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 2.23, + "WidthHalfNear": 2.23 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusShock": 1.68 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 90, + "FallPeriodFirstFrameMin": 70, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.075 + } + } + }, + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "BulletNum": 2, + "DepletionBulletNum": 1, + "DepletionSpeedRate": 0.5, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnRotateYDegreeLeftToRight": -2, + "SpawnRotateYDegreeRightToLeft": 2, + "SpawnSpeedBase": 0.9, + "SpawnSpeedRandom": 0.1, + "SpawnWideDegree": 6, + "SwerveRateBySpeed": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.6, + "EndRadiusForPlayer": 0.92, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.11 + }, + "DrawSizeParam": { + "EndRadius": 0.2, + "InitRadius": 0.2 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1, + "DepthScaleMinStraight": 1, + "DistanceFar": 5, + "DistanceNear": 1.2, + "HeightUseDepthScaleMaxBreakFree": 2, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 1.7, + "WidthHalfNear": 1.7 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.5, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + }, + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "DepletionBulletNum": 1, + "DepletionSpeedRate": 0.5, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnRotateYDegreeLeftToRight": -2, + "SpawnRotateYDegreeRightToLeft": 2, + "SpawnSpeedBase": 0.9, + "SpawnSpeedRandom": 0.3, + "SpawnWideDegree": 3, + "SwerveRateBySpeed": 0.1, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.6, + "EndRadiusForPlayer": 0.92, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.11 + }, + "DrawSizeParam": { + "EndRadius": 0.2, + "InitRadius": 0.2 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DistanceFar": 5, + "DistanceNear": 1.2, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 1.7, + "WidthHalfNear": 1.7 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.5, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + } + ], + "Unit@10.1.0": [ + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "BulletNum": 1, + "DepletionBulletNum": 1, + "DepletionSpeedRate": 0.5, + "SpawnPositionOffsetHeight": 0, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnRotateYDegreeLeftToRight": -1, + "SpawnRotateYDegreeRightToLeft": 1, + "SpawnSpeedBase": 1.05, + "SpawnSpeedRandom": 0.02, + "SpawnWideDegree": 0, + "SwerveRateBySpeed": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 6, + "DepletionRate": 0.5, + "EndRadiusForField": 0.8, + "EndRadiusForPlayer": 1.2, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.8, + "DepthScaleMaxStraight": 1.8, + "DepthScaleMinBreakFree": 1.4, + "DepthScaleMinStraight": 1.4, + "DistanceNear": 10, + "HeightUseDepthScaleMaxBreakFree": 2, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 2.23, + "WidthHalfNear": 2.23 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusShock": 1.68 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 90, + "FallPeriodFirstFrameMin": 70, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.075 + } + } + }, + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "BulletNum": 2, + "DepletionSpeedRate": 0.5, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnRotateYDegreeLeftToRight": -3, + "SpawnRotateYDegreeRightToLeft": 3, + "SpawnSpeedBase": 1, + "SpawnSpeedRandom": 0.02, + "SpawnWideDegree": 6, + "SwerveRateBySpeed": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 6, + "DepletionRate": 0.5, + "EndRadiusForField": 0.8, + "EndRadiusForPlayer": 1.2, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.8, + "DepthScaleMaxStraight": 1.8, + "DepthScaleMinBreakFree": 1.4, + "DepthScaleMinStraight": 1.4, + "DistanceNear": 10, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 2.23, + "WidthHalfNear": 2.23 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusShock": 1.68 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 90, + "FallPeriodFirstFrameMin": 70, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.075 + } + } + }, + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "BulletNum": 2, + "DepletionSpeedRate": 0.5, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnRotateYDegreeLeftToRight": -3, + "SpawnRotateYDegreeRightToLeft": 3, + "SpawnSpeedBase": 0.9, + "SpawnSpeedRandom": 0.02, + "SpawnWideDegree": 12, + "SwerveRateBySpeed": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 3, + "ChangeFrameForPlayer": 6, + "DepletionRate": 0.5, + "EndRadiusForField": 0.8, + "EndRadiusForPlayer": 1.2, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.3, + "InitRadius": 0.3 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 9, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 1.8, + "DepthScaleMaxStraight": 1.8, + "DepthScaleMinBreakFree": 1.4, + "DepthScaleMinStraight": 1.4, + "DistanceNear": 10, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 2.23, + "WidthHalfNear": 2.23 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.7, + "PaintRadiusShock": 1.68 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 90, + "FallPeriodFirstFrameMin": 70, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.075 + } + } + }, + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "BulletNum": 2, + "DepletionBulletNum": 1, + "DepletionSpeedRate": 0.5, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnRotateYDegreeLeftToRight": -2, + "SpawnRotateYDegreeRightToLeft": 2, + "SpawnSpeedBase": 0.9, + "SpawnSpeedRandom": 0.1, + "SpawnWideDegree": 6, + "SwerveRateBySpeed": 0, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.6, + "EndRadiusForPlayer": 0.8, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.2, + "InitRadius": 0.2 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DepthScaleMinBreakFree": 1, + "DepthScaleMinStraight": 1, + "DistanceFar": 5, + "DistanceNear": 1.2, + "HeightUseDepthScaleMaxBreakFree": 2, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 1.7, + "WidthHalfNear": 1.7 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.5, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + }, + { + "AddSpawnSpeedYRateBySpeed": -0.02, + "DepletionBulletNum": 1, + "DepletionSpeedRate": 0.5, + "SpawnPositionRandomCube": 0.1, + "SpawnPositionWidth": 0.05, + "SpawnRotateYDegreeLeftToRight": -2, + "SpawnRotateYDegreeRightToLeft": 2, + "SpawnSpeedBase": 0.9, + "SpawnSpeedRandom": 0.3, + "SpawnWideDegree": 3, + "SwerveRateBySpeed": 0.1, + "UnitParam": { + "CollisionParam": { + "ChangeFrameForField": 2, + "ChangeFrameForPlayer": 4, + "DepletionRate": 0.5, + "EndRadiusForField": 0.6, + "EndRadiusForPlayer": 0.8, + "FriendThroughFrameForPlayer": 3, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawSizeParam": { + "EndRadius": 0.2, + "InitRadius": 0.2 + }, + "MoveParam": { + "FreeAirResist": 0.1, + "FreeGravity": 0.04, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 0 + }, + "PaintParam": { + "ChangeFrameWidthRate": 0.6, + "ChangeWidthEndFrame": 50, + "ChangeWidthStartFrame": 20, + "DegreeUseDepthScaleMin": 50, + "DepletionDepthWidthRate": 0.5, + "DepthScaleMaxBreakFree": 2.4, + "DepthScaleMaxStraight": 2.4, + "DistanceFar": 5, + "DistanceNear": 1.2, + "HeightUseDepthScaleMinBreakFree": 8, + "WidthHalfFar": 1.7, + "WidthHalfNear": 1.7 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.5, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 80, + "FallPeriodFirstFrameMin": 60, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.07 + } + } + } + ] + }, + "WeaponRollParam": { + "InkConsumeMaxPerFrame": 0.0018, + "InkConsumeMinPerFrame": 0.0018, + "InkRecoverStop": 20, + "SpeedInkConsumeMax": 0.18, + "SpeedInkConsumeMin": 0.18, + "SpeedNormal": 0.18, + "SwingRepeatFrame": 13, + "ToPaintFrame": 14, + "InkConsumeMaxPerFrame@4.0.0": 0.0024, + "InkConsumeMinPerFrame@4.0.0": 0.0024, + "InkRecoverStop@7.1.0": 30, + "SwingRepeatFrame@9.2.0": 15 + }, + "WeaponSwingParam": { + "GuideParam": { + "Frame": 11, + "WidthScale": 1.7 + }, + "InkConsume": 0.048, + "InkRecoverStop": 50, + "SubWeaponSquidDelayFrm": 10, + "SwingFrame": 23, + "SwingMoveSpeed": 0.024, + "InkConsume@4.0.0": 0.064, + "InkRecoverStop@5.0.0": 60 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "2000": { + "CollisionParam": { + "EndRadiusForField": 0.02, + "EndRadiusForPlayer": 0.1375, + "InitRadiusForField": 0.02, + "InitRadiusForPlayer": 0.1375, + "EndRadiusForPlayer@10.1.0": 0.1, + "InitRadiusForPlayer@10.1.0": 0.1 + }, + "DamageParam": { + "ValueFullCharge": 1400, + "ValueMaxCharge": 800, + "ValueMinCharge": 400 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": {}, + "MoveParam": { + "DistanceFullCharge": 16.765, + "DistanceMaxCharge": 16.765, + "DistanceMinCharge": 9.261, + "SpawnSpeedFullCharge": 3.6, + "SpawnSpeedMaxCharge": 3.6, + "SpawnSpeedMinCharge": 2.4 + }, + "PaintParam": { + "RadiusFullCharge": 3.845, + "RadiusMaxCharge": 3.204, + "RadiusMinCharge": 1.068 + }, + "SplashPaintParam": { + "DepthHalfFullCharge": 1.85, + "DepthHalfMaxCharge": 1.85, + "DepthHalfMinCharge": 3.2375, + "LastSplashRateFullCharge": 1.5, + "LastSplashRateMaxCharge": 1.5, + "LastSplashRateMinCharge": 1.5, + "RadiusSpawnNearest": 1.2, + "WidthHalfFullCharge": 1.85, + "WidthHalfMaxCharge": 1.85, + "WidthHalfMinCharge": 0.925 + }, + "SplashSpawnParam": { + "OnTopRateFullCharge": 0.25, + "OnTopRateMaxCharge": 0.225, + "OnTopRateMinCharge": 0.125, + "SkipNum": 1, + "SpawnNearestMaxOffsetXZ": 2.2 + }, + "SplashWallHitParam": { + "SpawnParam": { + "SpawnMaxChargeFrame": 36 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.675, + "PaintRadiusFallMaxCharge": 0.675, + "PaintRadiusFallMinCharge": 0.45, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9, + "PaintRadiusShockMaxCharge": 0.9, + "PaintRadiusShockMinCharge": 0.6 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.04, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondTargetSpeed": 0.05 + } + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 1.2, + "PaintRadiusFallMaxCharge": 1.2, + "PaintRadiusFallMinCharge": 0.8, + "PaintRadiusShock": 1.8, + "PaintRadiusShockMaxCharge": 1.8, + "PaintRadiusShockMinCharge": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.04, + "FallPeriodLastFrameMax": 30, + "FallPeriodSecondTargetSpeed": 0.05 + }, + "WeaponKeepChargeParam": { + "KeepChargeFullFrame": 75, + "KeepChargePreDelayFrame": 19, + "KeepChargePreDelayFrame_Pre": 14, + "MuzzleLocalPos": { + "X": -0.314, + "Y": 0.2055, + "Z": 1.8 + } + }, + "WeaponParam": { + "AirChargeRateByInkEmpty": 4, + "ChargeFrameFullCharge": 45, + "ChargeFrameMinCharge": 8, + "FreezeFrameFullCharge": 1, + "FreezeFrameMinCharge": 1, + "InkConsumeFullCharge": 0.105, + "InkConsumeMinCharge": 0.018667, + "InkEmptyChargeTimes": 4, + "JumpHeightFullCharge": 0.07, + "MoveJumpDownBias": 0.5, + "MoveJumpDownStartChargeRate": 0.2, + "MoveSpeedFullCharge": 0.03 + } + }, + "2010": { + "CollisionParam": { + "EndRadiusForField": 0.02, + "EndRadiusForPlayer": 0.125, + "InitRadiusForField": 0.02, + "InitRadiusForPlayer": 0.125, + "EndRadiusForPlayer@10.1.0": 0.1, + "InitRadiusForPlayer@10.1.0": 0.1 + }, + "DamageParam": { + "ValueFullCharge": 1600, + "ValueMaxCharge": 800, + "ValueMinCharge": 400 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": {}, + "MoveParam": { + "DistanceFullCharge": 24.037, + "DistanceMaxCharge": 24.037, + "DistanceMinCharge": 9.033, + "SpawnSpeedFullCharge": 4.8, + "SpawnSpeedMaxCharge": 4.8, + "SpawnSpeedMinCharge": 2.4 + }, + "PaintParam": { + "RadiusFullCharge": 3.263, + "RadiusMaxCharge": 2.719, + "RadiusMinCharge": 0.906 + }, + "SplashPaintParam": { + "DepthHalfFullCharge": 1.56, + "DepthHalfMaxCharge": 1.56, + "DepthHalfMinCharge": 2.73, + "RadiusSpawnNearest": 1.2, + "WidthHalfFullCharge": 1.56, + "WidthHalfMaxCharge": 1.56, + "WidthHalfMinCharge": 0.78 + }, + "SplashSpawnParam": { + "OnTopRateFullCharge": 0.34, + "OnTopRateMaxCharge": 0.25, + "OnTopRateMinCharge": 0.125, + "SkipNum": 1 + }, + "SplashWallHitParam": { + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.675, + "PaintRadiusFallMaxCharge": 0.675, + "PaintRadiusFallMinCharge": 0.45, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9, + "PaintRadiusShockMaxCharge": 0.9, + "PaintRadiusShockMinCharge": 0.6 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.04, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondTargetSpeed": 0.05 + } + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 1.2, + "PaintRadiusFallMaxCharge": 1.2, + "PaintRadiusFallMinCharge": 0.8, + "PaintRadiusShock": 1.8, + "PaintRadiusShockMaxCharge": 1.8, + "PaintRadiusShockMinCharge": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.04, + "FallPeriodLastFrameMax": 30, + "FallPeriodSecondTargetSpeed": 0.05 + }, + "WeaponKeepChargeParam": { + "KeepChargeFullFrame": 75, + "KeepChargePreDelayFrame": 23, + "KeepChargePreDelayFrame_Pre": 18, + "MuzzleLocalPos": { + "X": -0.314, + "Y": 0.2105, + "Z": 2.0176 + } + }, + "WeaponParam": { + "FreezeFrameFullCharge": 1, + "FreezeFrameMinCharge": 1, + "InkConsumeFullCharge": 0.18, + "InkConsumeMinCharge": 0.0225, + "JumpHeightFullCharge": 0.07, + "MoveJumpDownBias": 0.5, + "MoveSpeedFullCharge": 0.02 + }, + "spl__WeaponChargerGuideShapeParam": {} + }, + "2020": { + "CollisionParam": { + "EndRadiusForField": 0.02, + "EndRadiusForPlayer": 0.125, + "InitRadiusForField": 0.02, + "InitRadiusForPlayer": 0.125, + "EndRadiusForPlayer@10.1.0": 0.1, + "InitRadiusForPlayer@10.1.0": 0.1 + }, + "DamageParam": { + "ValueFullCharge": 1600, + "ValueMaxCharge": 800, + "ValueMinCharge": 400 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": {}, + "MoveParam": { + "DistanceFullCharge": 26.037, + "DistanceMaxCharge": 24.037, + "DistanceMinCharge": 9.033, + "SpawnSpeedFullCharge": 4.8, + "SpawnSpeedMaxCharge": 4.8, + "SpawnSpeedMinCharge": 2.4 + }, + "PaintParam": { + "RadiusFullCharge": 3.085, + "RadiusMaxCharge": 2.719, + "RadiusMinCharge": 0.906 + }, + "SplashPaintParam": { + "DepthHalfFullCharge": 1.4825, + "DepthHalfMaxCharge": 1.56, + "DepthHalfMinCharge": 2.73, + "RadiusSpawnNearest": 1.2, + "WidthHalfFullCharge": 1.4825, + "WidthHalfMaxCharge": 1.56, + "WidthHalfMinCharge": 0.78 + }, + "SplashSpawnParam": { + "OnTopRateFullCharge": 0.34, + "OnTopRateMaxCharge": 0.25, + "OnTopRateMinCharge": 0.125 + }, + "SplashWallHitParam": { + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.675, + "PaintRadiusFallMaxCharge": 0.675, + "PaintRadiusFallMinCharge": 0.45, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9, + "PaintRadiusShockMaxCharge": 0.9, + "PaintRadiusShockMinCharge": 0.6 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.04, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondTargetSpeed": 0.05 + } + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 1.2, + "PaintRadiusFallMaxCharge": 1.2, + "PaintRadiusFallMinCharge": 0.8, + "PaintRadiusShock": 1.8, + "PaintRadiusShockMaxCharge": 1.8, + "PaintRadiusShockMinCharge": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.04, + "FallPeriodLastFrameMax": 30, + "FallPeriodSecondTargetSpeed": 0.05 + }, + "WeaponParam": { + "FreezeFrameFullCharge": 1, + "FreezeFrameMinCharge": 1, + "InkConsumeFullCharge": 0.18, + "InkConsumeMinCharge": 0.0225, + "JumpHeightFullCharge": 0.07, + "MoveJumpDownBias": 0.5, + "MoveSpeedFullCharge": 0.02 + }, + "WeaponScopeParam": {} + }, + "2030": { + "CollisionParam": { + "EndRadiusForField": 0.02, + "EndRadiusForPlayer": 0.1125, + "InitRadiusForField": 0.02, + "InitRadiusForPlayer": 0.1125, + "EndRadiusForPlayer@10.1.0": 0.1, + "InitRadiusForPlayer@10.1.0": 0.1 + }, + "DamageParam": { + "ValueFullCharge": 1800, + "ValueMaxCharge": 800, + "ValueMinCharge": 400 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "Overwrite_ConsumeRt_Main_High": 0.5, + "Overwrite_ConsumeRt_Main_Mid": 0.7, + "WeaponSpeedType": "Slow" + }, + "MoveParam": { + "DistanceFullCharge": 29.05, + "DistanceMaxCharge": 29.05, + "DistanceMinCharge": 9.045, + "SpawnSpeedFullCharge": 9.6, + "SpawnSpeedMaxCharge": 6.4, + "SpawnSpeedMinCharge": 2.4 + }, + "PaintParam": { + "RadiusFullCharge": 3.845, + "RadiusMaxCharge": 3.204, + "RadiusMinCharge": 1.068 + }, + "SplashPaintParam": { + "DepthHalfFullCharge": 1.85, + "DepthHalfMaxCharge": 1.85, + "DepthHalfMinCharge": 3.2375, + "LastSplashRateFullCharge": 1.5, + "LastSplashRateMaxCharge": 1.5, + "LastSplashRateMinCharge": 1.5, + "RadiusSpawnNearest": 1.2, + "WidthHalfFullCharge": 1.85, + "WidthHalfMaxCharge": 1.85, + "WidthHalfMinCharge": 0.925 + }, + "SplashSpawnParam": { + "OnTopRateFullCharge": 0.34, + "OnTopRateMaxCharge": 0.25, + "OnTopRateMinCharge": 0.125, + "SkipNum": 1 + }, + "SplashWallHitParam": { + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.675, + "PaintRadiusFallMaxCharge": 0.675, + "PaintRadiusFallMinCharge": 0.45, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9, + "PaintRadiusShockMaxCharge": 0.9, + "PaintRadiusShockMinCharge": 0.6 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.04, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondTargetSpeed": 0.05 + } + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 1.2, + "PaintRadiusFallMaxCharge": 1.2, + "PaintRadiusFallMinCharge": 0.8, + "PaintRadiusShock": 1.8, + "PaintRadiusShockMaxCharge": 1.8, + "PaintRadiusShockMinCharge": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.04, + "FallPeriodLastFrameMax": 30, + "FallPeriodSecondTargetSpeed": 0.05 + }, + "WeaponKeepChargeParam": { + "KeepChargeFullFrame": 75, + "KeepChargePreDelayFrame": 23, + "KeepChargePreDelayFrame_Pre": 18, + "MuzzleLocalPos": { + "X": -0.314, + "Y": 0.243, + "Z": 2.0175 + } + }, + "WeaponParam": { + "ChargeFrameFullCharge": 92, + "FreezeFrameFullCharge": 1, + "FreezeFrameMinCharge": 1, + "InkConsumeFullCharge": 0.25, + "InkConsumeMinCharge": 0.0225, + "JumpHeightFullCharge": 0.07, + "MoveJumpDownBias": 0.5, + "MoveSpeedFullCharge": 0.015 + } + }, + "2040": { + "CollisionParam": { + "EndRadiusForField": 0.02, + "EndRadiusForPlayer": 0.1125, + "InitRadiusForField": 0.02, + "InitRadiusForPlayer": 0.1125, + "EndRadiusForPlayer@10.1.0": 0.1, + "InitRadiusForPlayer@10.1.0": 0.1 + }, + "DamageParam": { + "ValueFullCharge": 1800, + "ValueMaxCharge": 800, + "ValueMinCharge": 400 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "Overwrite_ConsumeRt_Main_High": 0.5, + "Overwrite_ConsumeRt_Main_Mid": 0.7, + "WeaponSpeedType": "Slow" + }, + "MoveParam": { + "DistanceFullCharge": 31.05, + "DistanceMaxCharge": 29.05, + "DistanceMinCharge": 9.045, + "SpawnSpeedFullCharge": 9.6, + "SpawnSpeedMaxCharge": 6.4, + "SpawnSpeedMinCharge": 2.4 + }, + "PaintParam": { + "RadiusFullCharge": 3.69, + "RadiusMaxCharge": 3.204, + "RadiusMinCharge": 1.068 + }, + "SplashPaintParam": { + "DepthHalfFullCharge": 1.7725, + "DepthHalfMaxCharge": 1.848717, + "DepthHalfMinCharge": 3.232154, + "RadiusSpawnNearest": 1.2, + "WidthHalfFullCharge": 1.7725, + "WidthHalfMaxCharge": 1.848717, + "WidthHalfMinCharge": 0.9234725 + }, + "SplashSpawnParam": { + "OnTopRateFullCharge": 0.34, + "OnTopRateMaxCharge": 0.25, + "OnTopRateMinCharge": 0.125, + "SkipNum": 1 + }, + "SplashWallHitParam": { + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.675, + "PaintRadiusFallMaxCharge": 0.675, + "PaintRadiusFallMinCharge": 0.45, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9, + "PaintRadiusShockMaxCharge": 0.9, + "PaintRadiusShockMinCharge": 0.6 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.04, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondTargetSpeed": 0.05 + } + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 1.2, + "PaintRadiusFallMaxCharge": 1.2, + "PaintRadiusFallMinCharge": 0.8, + "PaintRadiusShock": 1.8, + "PaintRadiusShockMaxCharge": 1.8, + "PaintRadiusShockMinCharge": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.04, + "FallPeriodLastFrameMax": 30, + "FallPeriodSecondTargetSpeed": 0.05 + }, + "WeaponParam": { + "ChargeFrameFullCharge": 92, + "FreezeFrameFullCharge": 1, + "FreezeFrameMinCharge": 1, + "InkConsumeFullCharge": 0.25, + "InkConsumeMinCharge": 0.0225, + "JumpHeightFullCharge": 0.07, + "MoveJumpDownBias": 0.5, + "MoveSpeedFullCharge": 0.015 + }, + "WeaponScopeParam": { + "CameraFovy": 20 + } + }, + "2050": { + "CollisionParam": { + "EndRadiusForField": 0.02, + "EndRadiusForPlayer": 0.2375, + "InitRadiusForField": 0.02, + "InitRadiusForPlayer": 0.2375, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ValueFullCharge": 850, + "ValueMaxCharge": 850, + "ValueMinCharge": 300 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "WeaponSpeedType": "Fast" + }, + "MoveParam": { + "DistanceFullCharge": 19.564, + "DistanceMaxCharge": 19.564, + "DistanceMinCharge": 19.564, + "SpawnSpeedFullCharge": 4, + "SpawnSpeedMaxCharge": 4, + "SpawnSpeedMinCharge": 4, + "ThroughFullCharge": false + }, + "PaintParam": { + "RadiusFullCharge": 2.557, + "RadiusMaxCharge": 2.13, + "RadiusMinCharge": 0.994 + }, + "SplashPaintParam": { + "DepthHalfFullCharge": 3.198, + "DepthHalfMaxCharge": 3.198, + "DepthHalfMinCharge": 2.583, + "RadiusSpawnNearest": 1.2, + "WidthHalfFullCharge": 1.23, + "WidthHalfMaxCharge": 1.23, + "WidthHalfMinCharge": 0.861 + }, + "SplashSpawnParam": { + "OnTopRateFullCharge": 0.7, + "OnTopRateMaxCharge": 0.7, + "OnTopRateMinCharge": 0.466667, + "SkipNum": 3, + "SpawnNearestChargeRate": 1.01 + }, + "SplashWallHitParam": { + "SpawnParam": { + "NumMax": 5, + "SpawnMaxChargeFrame": 20 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.5, + "PaintRadiusFallMaxCharge": 0.5, + "PaintRadiusFallMinCharge": 0.34, + "PaintRadiusGround": 0.27, + "PaintRadiusShock": 0.675, + "PaintRadiusShockMaxCharge": 0.675, + "PaintRadiusShockMinCharge": 0.45 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.04, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondTargetSpeed": 0.05 + } + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.9, + "PaintRadiusFallMaxCharge": 0.9, + "PaintRadiusFallMinCharge": 0.6, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.35, + "PaintRadiusShockMaxCharge": 1.35, + "PaintRadiusShockMinCharge": 1.35 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.04, + "FallPeriodLastFrameMax": 30, + "FallPeriodSecondTargetSpeed": 0.05 + }, + "WeaponParam": { + "AirChargeRateByInkEmpty": 2, + "ChargeFrameFullCharge": 20, + "FreezeFrameFullCharge": 1, + "FreezeFrameMinCharge": 1, + "InkConsumeFullCharge": 0.07, + "InkConsumeMinCharge": 0.028, + "InkEmptyChargeTimes": 5, + "JumpHeightFullCharge": 0.07, + "MoveJumpDownBias": 0.5, + "MoveSpeedFullCharge": 0.068, + "InkConsumeFullCharge@2.0.0": 0.084, + "InkConsumeMinCharge@2.0.0": 0.0336, + "MoveSpeedFullCharge@11.0.1": 0.06 + } + }, + "2060": { + "CollisionParam": { + "EndRadiusForField": 0.02, + "EndRadiusForPlayer": 0.1375, + "InitRadiusForField": 0.02, + "InitRadiusForPlayer": 0.1375, + "EndRadiusForPlayer@10.1.0": 0.1, + "InitRadiusForPlayer@10.1.0": 0.1 + }, + "DamageParam": { + "ValueFullCharge": 1800, + "ValueMaxCharge": 1300, + "ValueMinCharge": 400 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": {}, + "MoveParam": { + "DistanceFullCharge": 19.804, + "DistanceMaxCharge": 18.804, + "DistanceMinCharge": 12.602, + "SpawnSpeedFullCharge": 4.8, + "SpawnSpeedMaxCharge": 4.8, + "SpawnSpeedMinCharge": 2.4 + }, + "PaintParam": { + "RadiusFullCharge": 3.949, + "RadiusMaxCharge": 2.797, + "RadiusMinCharge": 1.097 + }, + "SplashPaintParam": { + "DepthHalfFullCharge": 1.9, + "DepthHalfMaxCharge": 1.615, + "DepthHalfMinCharge": 3.04, + "LastSplashRateFullCharge": 1.5, + "LastSplashRateMinCharge": 1.5, + "RadiusSpawnNearest": 1.2, + "WidthHalfFullCharge": 1.9, + "WidthHalfMaxCharge": 1.615, + "WidthHalfMinCharge": 0.95 + }, + "SplashSpawnParam": { + "OnTopRateFullCharge": 0.3, + "OnTopRateMaxCharge": 0.25, + "OnTopRateMinCharge": 0.175, + "SkipNum": 1, + "SpawnNearestMaxOffsetXZ": 2.3 + }, + "SplashWallHitParam": { + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.675, + "PaintRadiusFallMaxCharge": 0.675, + "PaintRadiusFallMinCharge": 0.45, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9, + "PaintRadiusShockMaxCharge": 0.9, + "PaintRadiusShockMinCharge": 0.6 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.04, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondTargetSpeed": 0.05 + } + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 1.2, + "PaintRadiusFallMaxCharge": 1.2, + "PaintRadiusFallMinCharge": 0.8, + "PaintRadiusShock": 1.8, + "PaintRadiusShockMaxCharge": 1.8, + "PaintRadiusShockMinCharge": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.04, + "FallPeriodLastFrameMax": 30, + "FallPeriodSecondTargetSpeed": 0.05 + }, + "WeaponKeepChargeParam": { + "EnableKeepChargeAnytime": true, + "EnableKeepChargeTransCancel": true, + "KeepChargeFullFrame": 300, + "KeepChargePreDelayFrame": 15, + "KeepChargePreDelayFrame_Pre": 10, + "MuzzleLocalPos": { + "X": -0.314, + "Y": 0.143, + "Z": 1.46 + } + }, + "WeaponParam": { + "ChargeFrameFullCharge": 71, + "ChargeFrameMidCharge": 50, + "FreezeFrameFullCharge": 1, + "FreezeFrameMinCharge": 1, + "InkConsumeFullCharge": 0.15, + "InkConsumeMinCharge": 0.02, + "JumpHeightFullCharge": 0.07, + "MoveJumpDownBias": 0.5, + "MoveSpeedFullCharge": 0.03, + "ChargeFrameFullCharge@9.1.0": 75, + "ChargeFrameMidCharge@9.1.0": 53 + } + }, + "2070": { + "CollisionParam": { + "EndRadiusForField": 0.02, + "EndRadiusForPlayer": 0.225, + "InitRadiusForField": 0.02, + "InitRadiusForPlayer": 0.225, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ValueFullCharge": 680, + "ValueMaxCharge": 680, + "ValueMinCharge": 400, + "ValueFullCharge@3.0.0": 600, + "ValueMaxCharge@3.0.0": 600 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": {}, + "MoveParam": { + "DistanceFullCharge": 26.037, + "DistanceMaxCharge": 24.037, + "DistanceMinCharge": 9.033, + "SpawnSpeedFullCharge": 4.8, + "SpawnSpeedMaxCharge": 4.8, + "SpawnSpeedMinCharge": 2.4, + "ThroughFullCharge": false + }, + "PaintParam": { + "RadiusFullCharge": 2.808, + "RadiusMaxCharge": 2.34, + "RadiusMinCharge": 0.78 + }, + "SplashPaintParam": { + "DepthHalfFullCharge": 3.2, + "DepthHalfMaxCharge": 1.56, + "DepthHalfMinCharge": 2.73, + "RadiusSpawnNearest": 1.2, + "WidthHalfFullCharge": 1, + "WidthHalfMaxCharge": 1, + "WidthHalfMinCharge": 0.78, + "WidthHalfFullCharge@9.2.0": 1.055, + "WidthHalfFullCharge@8.1.0": 1.11, + "WidthHalfMaxCharge@9.2.0": 1.055, + "WidthHalfMaxCharge@8.1.0": 1.11 + }, + "SplashSpawnParam": { + "OnTopRateFullCharge": 0.18, + "OnTopRateMaxCharge": 0.25, + "OnTopRateMinCharge": 0.125, + "SpawnNearestMaxOffsetXZ": 10 + }, + "SplashWallHitParam": { + "SpawnParam": { + "BetweenDistance": 2.1875, + "FirstDistance": 2.1875, + "NumMax": 5 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.675, + "PaintRadiusFallMaxCharge": 0.675, + "PaintRadiusFallMinCharge": 0.45, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9, + "PaintRadiusShockMaxCharge": 0.9, + "PaintRadiusShockMinCharge": 0.6 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.04, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondTargetSpeed": 0.05 + } + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 1.2, + "PaintRadiusFallMaxCharge": 1.2, + "PaintRadiusFallMinCharge": 0.8, + "PaintRadiusShock": 1.8, + "PaintRadiusShockMaxCharge": 1.8, + "PaintRadiusShockMinCharge": 1.2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMin": 25, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 30, + "FallPeriodSecondTargetSpeed": 0.06 + }, + "WeaponDivideChargerParam": { + "FullChargeDivideNum": 5, + "MuzzleLocalPos": { + "X": -0.3125, + "Y": 0.2389, + "Z": 2.0409 + } + }, + "WeaponParam": { + "ChargeFrameFullCharge": 72, + "ChargeFrameMinCharge": 8, + "FreezeFrameFullCharge": 1, + "FreezeFrameMinCharge": 1, + "InkConsumeFullCharge": 0.35, + "InkConsumeMinCharge": 0.0197, + "InkEmptyChargeTimes": 3, + "InkRecoverStop": 20, + "JumpHeightFullCharge": 0.1, + "MoveJumpDownBias": 0.5, + "MoveSpeedFullCharge": 0.068, + "PostDelayFrame": 15, + "InkConsumeFullCharge@3.1.0": 0.4, + "InkConsumeMinCharge@3.1.0": 0.0225, + "MoveSpeedFullCharge@3.1.0": 0.06 + } + }, + "3000": { + "MainEffectiveRangeUpParam": { + "BaseDistance": 14 + }, + "MainWeaponSetting": {}, + "NearestParam": { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "EndRadiusForPlayer": 0, + "InitRadiusForPlayer": 0 + }, + "PaintDepthScale": 1.2, + "PaintWidthHalf": 1.56 + }, + "SpawnOffset": { + "X": 0.25, + "Y": 0 + } + }, + "UnitGroupParam": { + "Unit": [ + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": 0.34, + "AfterPaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.9, + "WidthHalfNear": 1.9 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 0, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0.1, + "AfterOffsetEndRadiusForPlayer": 0.1, + "AfterOffsetInitRadiusForField": 0.01, + "AfterOffsetInitRadiusForPlayer": 0.01, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.75, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.05, + "InitRadiusForPlayer": 0.075 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 700, + "ValueMin": 500 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0.4, + "AfterOffsetInitRadius": 0.4, + "ChangeFrame": 0, + "EndRadius": 1.2, + "InitRadius": 1.2, + "TailID": 0, + "TailLengthMax": 4, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.2, + "DepthScaleNear": 1.2, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.3, + "WidthHalfNear": 1.3 + }, + "RandomRotateYBias": 0.4, + "RandomRotateYDegree": 4.5, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 1.14, + "SpawnSpeedGround": 1.22, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [], + "SplashParam": [], + "SplashWallHitParam": [] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": -0.16, + "AfterPaintParam": { + "DepthScaleFar": 1.2, + "DepthScaleNear": 1.3, + "DistanceXZFar": 12, + "DistanceXZNear": 8.5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.92, + "WidthHalfNear": 1.44 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.585 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 4, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.12, + "AfterOffsetEndRadiusForPlayer": -0.12, + "AfterOffsetInitRadiusForField": -0.012, + "AfterOffsetInitRadiusForPlayer": -0.012, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.8, + "EndRadiusForPlayer": 0.97, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.08, + "InitRadiusForPlayer": 0.097 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 700, + "ValueMin": 500 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.03, + "AfterOffsetInitRadius": -0.05, + "ChangeFrame": 0, + "EndRadius": 1, + "InitRadius": 0.5625, + "TailID": 0, + "TailLengthMax": 4, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [0], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 3.84, + "WidthHalfNear": 4.44 + }, + "RandomRotateYBias": 0.65, + "RandomRotateYDegree": 4.5, + "RandomRotateYOffOrderNum": [0], + "SpawnSpeedAir": 1.6852, + "SpawnSpeedGround": 1.7609, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": -1, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 4 + } + ], + "SplashParam": [], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.3, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.4, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.585 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 2, + "AfterOffsetSpawnSpeed": -0.2, + "AfterPaintParam": { + "DepthScaleFar": 1.4, + "DepthScaleNear": 1.4, + "DistanceXZFar": 8, + "DistanceXZNear": 2, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.14, + "WidthHalfNear": 0.96 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 5, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.05, + "AfterOffsetEndRadiusForPlayer": -0.05, + "AfterOffsetInitRadiusForField": -0.005, + "AfterOffsetInitRadiusForPlayer": -0.005, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.4, + "EndRadiusForPlayer": 0.57, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.04, + "InitRadiusForPlayer": 0.057 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 500, + "ValueMin": 500 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.1, + "AfterOffsetInitRadius": -0.1, + "ChangeFrame": 0, + "EndRadius": 0.6, + "InitRadius": 0.6, + "TailID": 0, + "TailLengthMax": 4, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.4, + "DepthScaleNear": 1.4, + "DistanceXZFar": 8, + "DistanceXZNear": 2, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.2, + "WidthHalfNear": 1.2 + }, + "RandomRotateYBias": 0.65, + "RandomRotateYDegree": 4.5, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 1, + "SpawnSpeedGround": 1.1, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 3, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 1 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.3, + "PaintDepthScale": 2, + "PaintWidthHalf": 0.7 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 0.9, + "FirstSplashRateForLengthMin": 0.7, + "SpawnBetweenLength": 1.5, + "SpawnNum": 1 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.3, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.4, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 4, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + } + ], + "Unit@10.1.0": [ + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": 0.34, + "AfterPaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.9, + "WidthHalfNear": 1.9 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 0, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0.1, + "AfterOffsetEndRadiusForPlayer": 0.1, + "AfterOffsetInitRadiusForField": 0.01, + "AfterOffsetInitRadiusForPlayer": 0.01, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.6, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.05, + "InitRadiusForPlayer": 0.06 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 700, + "ValueMin": 500 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0.4, + "AfterOffsetInitRadius": 0.4, + "ChangeFrame": 0, + "EndRadius": 1.2, + "InitRadius": 1.2, + "TailID": 0, + "TailLengthMax": 4, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.2, + "DepthScaleNear": 1.2, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.3, + "WidthHalfNear": 1.3 + }, + "RandomRotateYBias": 0.4, + "RandomRotateYDegree": 4.5, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 1.14, + "SpawnSpeedGround": 1.22, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [], + "SplashParam": [], + "SplashWallHitParam": [] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": -0.16, + "AfterPaintParam": { + "DepthScaleFar": 1.2, + "DepthScaleNear": 1.3, + "DistanceXZFar": 12, + "DistanceXZNear": 8.5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.92, + "WidthHalfNear": 1.44 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.585 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 4, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.12, + "AfterOffsetEndRadiusForPlayer": -0.12, + "AfterOffsetInitRadiusForField": -0.012, + "AfterOffsetInitRadiusForPlayer": -0.012, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.8, + "EndRadiusForPlayer": 0.85, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.08, + "InitRadiusForPlayer": 0.085 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 700, + "ValueMin": 500 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.03, + "AfterOffsetInitRadius": -0.05, + "ChangeFrame": 0, + "EndRadius": 1, + "InitRadius": 0.5625, + "TailID": 0, + "TailLengthMax": 4, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [0], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 3.84, + "WidthHalfNear": 4.44 + }, + "RandomRotateYBias": 0.65, + "RandomRotateYDegree": 4.5, + "RandomRotateYOffOrderNum": [0], + "SpawnSpeedAir": 1.6852, + "SpawnSpeedGround": 1.7609, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": -1, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 4 + } + ], + "SplashParam": [], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.3, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.4, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.585 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 2, + "AfterOffsetSpawnSpeed": -0.2, + "AfterPaintParam": { + "DepthScaleFar": 1.4, + "DepthScaleNear": 1.4, + "DistanceXZFar": 8, + "DistanceXZNear": 2, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.14, + "WidthHalfNear": 0.96 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 5, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.05, + "AfterOffsetEndRadiusForPlayer": -0.05, + "AfterOffsetInitRadiusForField": -0.005, + "AfterOffsetInitRadiusForPlayer": -0.005, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.4, + "EndRadiusForPlayer": 0.45, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.04, + "InitRadiusForPlayer": 0.045 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 500, + "ValueMin": 500 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.1, + "AfterOffsetInitRadius": -0.1, + "ChangeFrame": 0, + "EndRadius": 0.6, + "InitRadius": 0.6, + "TailID": 0, + "TailLengthMax": 4, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.4, + "DepthScaleNear": 1.4, + "DistanceXZFar": 8, + "DistanceXZNear": 2, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.2, + "WidthHalfNear": 1.2 + }, + "RandomRotateYBias": 0.65, + "RandomRotateYDegree": 4.5, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 1, + "SpawnSpeedGround": 1.1, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 3, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 1 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.3, + "PaintDepthScale": 2, + "PaintWidthHalf": 0.7 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 0.9, + "FirstSplashRateForLengthMin": 0.7, + "SpawnBetweenLength": 1.5, + "SpawnNum": 1 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.3, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.4, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 4, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + } + ], + "Unit@4.1.0": [ + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": 0.34, + "AfterPaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.9, + "WidthHalfNear": 1.9 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 0, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0.1, + "AfterOffsetEndRadiusForPlayer": 0.1, + "AfterOffsetInitRadiusForField": 0.01, + "AfterOffsetInitRadiusForPlayer": 0.01, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.6, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.05, + "InitRadiusForPlayer": 0.06 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 700, + "ValueMin": 500 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0.4, + "AfterOffsetInitRadius": 0.4, + "ChangeFrame": 0, + "EndRadius": 1.2, + "InitRadius": 1.2, + "TailID": 0, + "TailLengthMax": 4, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.2, + "DepthScaleNear": 1.2, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.3, + "WidthHalfNear": 1.3 + }, + "RandomRotateYBias": 0.4, + "RandomRotateYDegree": 4.5, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 1.14, + "SpawnSpeedGround": 1.22, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [], + "SplashParam": [], + "SplashWallHitParam": [] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": -0.16, + "AfterPaintParam": { + "DepthScaleFar": 1.2, + "DepthScaleNear": 1.3, + "DistanceXZFar": 12, + "DistanceXZNear": 8.5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.92, + "WidthHalfNear": 1.44 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.585 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 4, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.12, + "AfterOffsetEndRadiusForPlayer": -0.12, + "AfterOffsetInitRadiusForField": -0.012, + "AfterOffsetInitRadiusForPlayer": -0.012, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.8, + "EndRadiusForPlayer": 0.85, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.08, + "InitRadiusForPlayer": 0.085 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 700, + "ValueMin": 500 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.03, + "AfterOffsetInitRadius": -0.05, + "ChangeFrame": 0, + "EndRadius": 1, + "InitRadius": 0.5625, + "TailID": 0, + "TailLengthMax": 4, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [0], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 3.84, + "WidthHalfNear": 4.44 + }, + "RandomRotateYBias": 0.65, + "RandomRotateYDegree": 4.5, + "RandomRotateYOffOrderNum": [0], + "SpawnSpeedAir": 1.6852, + "SpawnSpeedGround": 1.7609, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": -1, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 4 + } + ], + "SplashParam": [], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.3, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.4, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.585 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 2, + "AfterOffsetSpawnSpeed": -0.2, + "AfterPaintParam": { + "DepthScaleFar": 1.4, + "DepthScaleNear": 1.4, + "DistanceXZFar": 8, + "DistanceXZNear": 2, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.14, + "WidthHalfNear": 0.96 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 5, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.05, + "AfterOffsetEndRadiusForPlayer": -0.05, + "AfterOffsetInitRadiusForField": -0.005, + "AfterOffsetInitRadiusForPlayer": -0.005, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.4, + "EndRadiusForPlayer": 0.45, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.04, + "InitRadiusForPlayer": 0.045 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 500, + "ValueMin": 500 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.1, + "AfterOffsetInitRadius": -0.1, + "ChangeFrame": 0, + "EndRadius": 0.6, + "InitRadius": 0.6, + "TailID": 0, + "TailLengthMax": 4, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.4, + "DepthScaleNear": 1.4, + "DistanceXZFar": 8, + "DistanceXZNear": 2, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.2, + "WidthHalfNear": 1.2 + }, + "RandomRotateYBias": 0.65, + "RandomRotateYDegree": 4.5, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 1, + "SpawnSpeedGround": 1.1, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 3, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 1 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.3, + "PaintDepthScale": 2, + "PaintWidthHalf": 0.7 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 0.9, + "FirstSplashRateForLengthMin": 0.7, + "SpawnBetweenLength": 1.5, + "SpawnNum": 1 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.3, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.4, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 4, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + } + ], + "Unit@3.1.0": [ + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": 0.34, + "AfterPaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.9, + "WidthHalfNear": 1.9 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 0, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0.1, + "AfterOffsetEndRadiusForPlayer": 0.1, + "AfterOffsetInitRadiusForField": 0.01, + "AfterOffsetInitRadiusForPlayer": 0.01, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.6, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.05, + "InitRadiusForPlayer": 0.06 + }, + "DamageParam": { + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 700, + "ValueMin": 500 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0.4, + "AfterOffsetInitRadius": 0.4, + "ChangeFrame": 0, + "EndRadius": 1.2, + "InitRadius": 1.2, + "TailID": 0, + "TailLengthMax": 4, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.2, + "DepthScaleNear": 1.2, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.3, + "WidthHalfNear": 1.3 + }, + "RandomRotateYBias": 0.4, + "RandomRotateYDegree": 4.5, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 1.14, + "SpawnSpeedGround": 1.22, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [], + "SplashParam": [], + "SplashWallHitParam": [] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": -0.16, + "AfterPaintParam": { + "DepthScaleFar": 1.2, + "DepthScaleNear": 1.3, + "DistanceXZFar": 12, + "DistanceXZNear": 8.5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.92, + "WidthHalfNear": 1.44 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.585 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 4, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.12, + "AfterOffsetEndRadiusForPlayer": -0.12, + "AfterOffsetInitRadiusForField": -0.012, + "AfterOffsetInitRadiusForPlayer": -0.012, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.8, + "EndRadiusForPlayer": 0.85, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.08, + "InitRadiusForPlayer": 0.085 + }, + "DamageParam": { + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 700, + "ValueMin": 500 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.03, + "AfterOffsetInitRadius": -0.05, + "ChangeFrame": 0, + "EndRadius": 1, + "InitRadius": 0.5625, + "TailID": 0, + "TailLengthMax": 4, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [0], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 3.84, + "WidthHalfNear": 4.44 + }, + "RandomRotateYBias": 0.65, + "RandomRotateYDegree": 4.5, + "RandomRotateYOffOrderNum": [0], + "SpawnSpeedAir": 1.6852, + "SpawnSpeedGround": 1.7609, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": -1, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 4 + } + ], + "SplashParam": [], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.3, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.4, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.585 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 2, + "AfterOffsetSpawnSpeed": -0.2, + "AfterPaintParam": { + "DepthScaleFar": 1.4, + "DepthScaleNear": 1.4, + "DistanceXZFar": 8, + "DistanceXZNear": 2, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.14, + "WidthHalfNear": 0.96 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 5, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.05, + "AfterOffsetEndRadiusForPlayer": -0.05, + "AfterOffsetInitRadiusForField": -0.005, + "AfterOffsetInitRadiusForPlayer": -0.005, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.4, + "EndRadiusForPlayer": 0.45, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.04, + "InitRadiusForPlayer": 0.045 + }, + "DamageParam": { + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 500, + "ValueMin": 500 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.1, + "AfterOffsetInitRadius": -0.1, + "ChangeFrame": 0, + "EndRadius": 0.6, + "InitRadius": 0.6, + "TailID": 0, + "TailLengthMax": 4, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.4, + "DepthScaleNear": 1.4, + "DistanceXZFar": 8, + "DistanceXZNear": 2, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.2, + "WidthHalfNear": 1.2 + }, + "RandomRotateYBias": 0.65, + "RandomRotateYDegree": 4.5, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 1, + "SpawnSpeedGround": 1.1, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 3, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 1 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.3, + "PaintDepthScale": 2, + "PaintWidthHalf": 0.7 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 0.9, + "FirstSplashRateForLengthMin": 0.7, + "SpawnBetweenLength": 1.5, + "SpawnNum": 1 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.3, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.4, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 4, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + } + ], + "Unit@3.0.0": [ + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": 0.34, + "AfterPaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.9, + "WidthHalfNear": 1.9 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 0, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0.1, + "AfterOffsetEndRadiusForPlayer": 0.1, + "AfterOffsetInitRadiusForField": 0.01, + "AfterOffsetInitRadiusForPlayer": 0.01, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.6, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.05, + "InitRadiusForPlayer": 0.06 + }, + "DamageParam": { + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 700, + "ValueMin": 350 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0.4, + "AfterOffsetInitRadius": 0.4, + "ChangeFrame": 0, + "EndRadius": 1.2, + "InitRadius": 1.2, + "TailID": 0, + "TailLengthMax": 4, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.2, + "DepthScaleNear": 1.2, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.3, + "WidthHalfNear": 1.3 + }, + "RandomRotateYBias": 0.4, + "RandomRotateYDegree": 4.5, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 1.14, + "SpawnSpeedGround": 1.22, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [], + "SplashParam": [], + "SplashWallHitParam": [] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": -0.16, + "AfterPaintParam": { + "DepthScaleFar": 1.2, + "DepthScaleNear": 1.3, + "DistanceXZFar": 12, + "DistanceXZNear": 8.5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.92, + "WidthHalfNear": 1.44 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.585 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 4, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.12, + "AfterOffsetEndRadiusForPlayer": -0.12, + "AfterOffsetInitRadiusForField": -0.012, + "AfterOffsetInitRadiusForPlayer": -0.012, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.8, + "EndRadiusForPlayer": 0.85, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.08, + "InitRadiusForPlayer": 0.085 + }, + "DamageParam": { + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 700, + "ValueMin": 350 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.03, + "AfterOffsetInitRadius": -0.05, + "ChangeFrame": 0, + "EndRadius": 1, + "InitRadius": 0.5625, + "TailID": 0, + "TailLengthMax": 4, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [0], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 3.84, + "WidthHalfNear": 4.44 + }, + "RandomRotateYBias": 0.65, + "RandomRotateYDegree": 4.5, + "RandomRotateYOffOrderNum": [0], + "SpawnSpeedAir": 1.6852, + "SpawnSpeedGround": 1.7609, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": -1, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 4 + } + ], + "SplashParam": [], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.3, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.4, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.585 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 2, + "AfterOffsetSpawnSpeed": -0.2, + "AfterPaintParam": { + "DepthScaleFar": 1.4, + "DepthScaleNear": 1.4, + "DistanceXZFar": 8, + "DistanceXZNear": 2, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.14, + "WidthHalfNear": 0.96 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 5, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.05, + "AfterOffsetEndRadiusForPlayer": -0.05, + "AfterOffsetInitRadiusForField": -0.005, + "AfterOffsetInitRadiusForPlayer": -0.005, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.4, + "EndRadiusForPlayer": 0.45, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.04, + "InitRadiusForPlayer": 0.045 + }, + "DamageParam": { + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 500, + "ValueMin": 250 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.1, + "AfterOffsetInitRadius": -0.1, + "ChangeFrame": 0, + "EndRadius": 0.6, + "InitRadius": 0.6, + "TailID": 0, + "TailLengthMax": 4, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.4, + "DepthScaleNear": 1.4, + "DistanceXZFar": 8, + "DistanceXZNear": 2, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 1.2, + "WidthHalfNear": 1.2 + }, + "RandomRotateYBias": 0.65, + "RandomRotateYDegree": 4.5, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 1, + "SpawnSpeedGround": 1.1, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 3, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 1 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.3, + "PaintDepthScale": 2, + "PaintWidthHalf": 0.7 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 0.9, + "FirstSplashRateForLengthMin": 0.7, + "SpawnBetweenLength": 1.5, + "SpawnNum": 1 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.3, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.4, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 4, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "WeaponParam": { + "InkConsume": 0.076, + "InkRecoverStop": 40, + "MoveSpeed": 0.04, + "RepeatFrame": 29, + "ShotGuide": { + "BulletOrderNumInUnit": 0, + "Frame": 13, + "UnitOrderNum": 1 + }, + "SwingLiftFrame": 12, + "InkConsume@8.1.0": 0.07 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "GuideYMinusZero": true, + "YMinusRate": 1, + "ZRate": 2 + } + }, + "3010": { + "MainEffectiveRangeUpParam": { + "BaseDistance": 11.5 + }, + "MainWeaponSetting": { + "WeaponSpeedType": "Fast" + }, + "NearestParam": { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "EndRadiusForPlayer": 0, + "InitRadiusForPlayer": 0 + }, + "PaintDepthScale": 2, + "PaintWidthHalf": 1.296 + }, + "SpawnOffset": { + "X": 0.2, + "Y": 0.35 + } + }, + "UnitGroupParam": { + "Unit": [ + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": -0.16, + "AfterPaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 0, + "WidthHalfNear": 0 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 0.8 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 4, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.1, + "AfterOffsetEndRadiusForPlayer": -0.1, + "AfterOffsetInitRadiusForField": -0.01, + "AfterOffsetInitRadiusForPlayer": -0.01, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.7, + "EndRadiusForPlayer": 1.07, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.07, + "InitRadiusForPlayer": 0.107 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 8, + "ReduceStartFallDistance": 1.5, + "ValueMax": 620, + "ValueMin": 350 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -1.4, + "AfterOffsetInitRadius": -1.4, + "ChangeFrame": 0, + "EndRadius": 1.4, + "InitRadius": 1.4, + "TailID": 0, + "TailLengthMax": 2, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.15, + "DepthScaleNear": 1.15, + "DistanceXZFar": 12, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 3, + "WidthHalfNear": 3.75 + }, + "RandomRotateYBias": 0.5, + "RandomRotateYDegree": 3, + "RandomRotateYOffOrderNum": [0], + "SpawnSpeedAir": 1.1523, + "SpawnSpeedGround": 1.2229, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": -1, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 3 + } + ], + "SplashParam": [], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.5, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.2, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.8 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 2, + "AfterOffsetSpawnSpeed": -0.25, + "AfterPaintParam": { + "DepthScaleFar": 2.2, + "DepthScaleNear": 2.2, + "DistanceXZFar": 5.8, + "DistanceXZNear": 3.1, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 1.155, + "WidthHalfNear": 1.1 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 0.8 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 3, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.1, + "AfterOffsetEndRadiusForPlayer": -0.1, + "AfterOffsetInitRadiusForField": -0.01, + "AfterOffsetInitRadiusForPlayer": -0.01, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.7, + "EndRadiusForPlayer": 0.97, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.07, + "InitRadiusForPlayer": 0.097 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 8, + "ReduceStartFallDistance": 1.5, + "ValueMax": 620, + "ValueMin": 350 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.1, + "AfterOffsetInitRadius": -0.1, + "ChangeFrame": 0, + "EndRadius": 0.8, + "InitRadius": 0.8, + "TailID": 0, + "TailLengthMax": 2, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 2.2, + "DepthScaleNear": 1.9, + "DistanceXZFar": 8.5, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 1.54, + "WidthHalfNear": 1.76 + }, + "RandomRotateYBias": 0.5, + "RandomRotateYDegree": 3, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.808, + "SpawnSpeedGround": 0.896, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 2, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 1 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.2, + "PaintDepthScale": 2.6, + "PaintWidthHalf": 0.94 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 1, + "FirstSplashRateForLengthMin": 1, + "SpawnBetweenLength": 2.6, + "SpawnNum": 1 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.5, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.2, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 2, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.8 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 0, + "AfterOffsetSpawnSpeed": -0.2, + "AfterPaintParam": { + "DepthScaleFar": 2, + "DepthScaleNear": 2, + "DistanceXZFar": 8, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 1.045, + "WidthHalfNear": 1.045 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 0.8 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 15, + "BulletNum": 1, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.87, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.05, + "InitRadiusForPlayer": 0.087 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 8, + "ReduceStartFallDistance": 1.5, + "ValueMax": 620, + "ValueMin": 350 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 1, + "InitRadius": 1, + "TailID": 1, + "TailLengthMax": 2, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.5, + "DepthScaleNear": 1.5, + "DistanceXZFar": 8, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 1.65, + "WidthHalfNear": 2 + }, + "RandomRotateYBias": 0.5, + "RandomRotateYDegree": 3, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.836, + "SpawnSpeedGround": 0.897, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 1 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.3, + "PaintDepthScale": 2.1, + "PaintWidthHalf": 0.825 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 1, + "FirstSplashRateForLengthMin": 0.6, + "SpawnBetweenLength": 7, + "SpawnNum": 1 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.5, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.2, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 3, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.8 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 0, + "AfterOffsetSpawnSpeed": -0.2, + "AfterPaintParam": { + "DepthScaleFar": 2, + "DepthScaleNear": 2, + "DistanceXZFar": 8, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 1.045, + "WidthHalfNear": 1.045 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 0.8 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": -15, + "BulletNum": 1, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.87, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.05, + "InitRadiusForPlayer": 0.087 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 8, + "ReduceStartFallDistance": 1.5, + "ValueMax": 620, + "ValueMin": 350 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 1, + "InitRadius": 1, + "TailID": 2, + "TailLengthMax": 2, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.5, + "DepthScaleNear": 1.5, + "DistanceXZFar": 8, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 1.65, + "WidthHalfNear": 2 + }, + "RandomRotateYBias": 0.5, + "RandomRotateYDegree": 3, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.836, + "SpawnSpeedGround": 0.897, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 1 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.3, + "PaintDepthScale": 2.1, + "PaintWidthHalf": 0.825 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 1, + "FirstSplashRateForLengthMin": 0.6, + "SpawnBetweenLength": 7, + "SpawnNum": 1 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.5, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.2, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 3, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.8 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + } + } + ], + "Unit@10.1.0": [ + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": -0.16, + "AfterPaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 0, + "WidthHalfNear": 0 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 0.8 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 4, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.1, + "AfterOffsetEndRadiusForPlayer": -0.1, + "AfterOffsetInitRadiusForField": -0.01, + "AfterOffsetInitRadiusForPlayer": -0.01, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.7, + "EndRadiusForPlayer": 0.9, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.07, + "InitRadiusForPlayer": 0.09 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 8, + "ReduceStartFallDistance": 1.5, + "ValueMax": 620, + "ValueMin": 350 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -1.4, + "AfterOffsetInitRadius": -1.4, + "ChangeFrame": 0, + "EndRadius": 1.4, + "InitRadius": 1.4, + "TailID": 0, + "TailLengthMax": 2, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.15, + "DepthScaleNear": 1.15, + "DistanceXZFar": 12, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 3, + "WidthHalfNear": 3.75 + }, + "RandomRotateYBias": 0.5, + "RandomRotateYDegree": 3, + "RandomRotateYOffOrderNum": [0], + "SpawnSpeedAir": 1.1523, + "SpawnSpeedGround": 1.2229, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": -1, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 3 + } + ], + "SplashParam": [], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.5, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.2, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.8 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 2, + "AfterOffsetSpawnSpeed": -0.25, + "AfterPaintParam": { + "DepthScaleFar": 2.2, + "DepthScaleNear": 2.2, + "DistanceXZFar": 5.8, + "DistanceXZNear": 3.1, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 1.155, + "WidthHalfNear": 1.1 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 0.8 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 3, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.1, + "AfterOffsetEndRadiusForPlayer": -0.1, + "AfterOffsetInitRadiusForField": -0.01, + "AfterOffsetInitRadiusForPlayer": -0.01, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.7, + "EndRadiusForPlayer": 0.8, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.07, + "InitRadiusForPlayer": 0.08 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 8, + "ReduceStartFallDistance": 1.5, + "ValueMax": 620, + "ValueMin": 350 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.1, + "AfterOffsetInitRadius": -0.1, + "ChangeFrame": 0, + "EndRadius": 0.8, + "InitRadius": 0.8, + "TailID": 0, + "TailLengthMax": 2, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 2.2, + "DepthScaleNear": 1.9, + "DistanceXZFar": 8.5, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 1.54, + "WidthHalfNear": 1.76 + }, + "RandomRotateYBias": 0.5, + "RandomRotateYDegree": 3, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.808, + "SpawnSpeedGround": 0.896, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 2, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 1 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.2, + "PaintDepthScale": 2.6, + "PaintWidthHalf": 0.94 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 1, + "FirstSplashRateForLengthMin": 1, + "SpawnBetweenLength": 2.6, + "SpawnNum": 1 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.5, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.2, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 2, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.8 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 0, + "AfterOffsetSpawnSpeed": -0.2, + "AfterPaintParam": { + "DepthScaleFar": 2, + "DepthScaleNear": 2, + "DistanceXZFar": 8, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 1.045, + "WidthHalfNear": 1.045 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 0.8 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 15, + "BulletNum": 1, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.7, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.05, + "InitRadiusForPlayer": 0.07 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 8, + "ReduceStartFallDistance": 1.5, + "ValueMax": 620, + "ValueMin": 350 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 1, + "InitRadius": 1, + "TailID": 1, + "TailLengthMax": 2, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.5, + "DepthScaleNear": 1.5, + "DistanceXZFar": 8, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 1.65, + "WidthHalfNear": 2 + }, + "RandomRotateYBias": 0.5, + "RandomRotateYDegree": 3, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.836, + "SpawnSpeedGround": 0.897, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 1 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.3, + "PaintDepthScale": 2.1, + "PaintWidthHalf": 0.825 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 1, + "FirstSplashRateForLengthMin": 0.6, + "SpawnBetweenLength": 7, + "SpawnNum": 1 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.5, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.2, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 3, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.8 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 0, + "AfterOffsetSpawnSpeed": -0.2, + "AfterPaintParam": { + "DepthScaleFar": 2, + "DepthScaleNear": 2, + "DistanceXZFar": 8, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 1.045, + "WidthHalfNear": 1.045 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 0.8 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": -15, + "BulletNum": 1, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.7, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.05, + "InitRadiusForPlayer": 0.07 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 8, + "ReduceStartFallDistance": 1.5, + "ValueMax": 620, + "ValueMin": 350 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 1, + "InitRadius": 1, + "TailID": 2, + "TailLengthMax": 2, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.5, + "DepthScaleNear": 1.5, + "DistanceXZFar": 8, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 1.65, + "WidthHalfNear": 2 + }, + "RandomRotateYBias": 0.5, + "RandomRotateYDegree": 3, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.836, + "SpawnSpeedGround": 0.897, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 1 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.3, + "PaintDepthScale": 2.1, + "PaintWidthHalf": 0.825 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 1, + "FirstSplashRateForLengthMin": 0.6, + "SpawnBetweenLength": 7, + "SpawnNum": 1 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.5, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.2, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 3, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.8 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + } + } + ], + "Unit@4.1.0": [ + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": -0.16, + "AfterPaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 0, + "WidthHalfNear": 0 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 0.8 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 4, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.1, + "AfterOffsetEndRadiusForPlayer": -0.1, + "AfterOffsetInitRadiusForField": -0.01, + "AfterOffsetInitRadiusForPlayer": -0.01, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.7, + "EndRadiusForPlayer": 0.9, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.07, + "InitRadiusForPlayer": 0.09 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 8, + "ReduceStartFallDistance": 1.5, + "ValueMax": 620, + "ValueMin": 350 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -1.4, + "AfterOffsetInitRadius": -1.4, + "ChangeFrame": 0, + "EndRadius": 1.4, + "InitRadius": 1.4, + "TailID": 0, + "TailLengthMax": 2, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.15, + "DepthScaleNear": 1.15, + "DistanceXZFar": 12, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 3, + "WidthHalfNear": 3.75 + }, + "RandomRotateYBias": 0.5, + "RandomRotateYDegree": 3, + "RandomRotateYOffOrderNum": [0], + "SpawnSpeedAir": 1.1523, + "SpawnSpeedGround": 1.2229, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": -1, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 3 + } + ], + "SplashParam": [], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.5, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.2, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.8 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 2, + "AfterOffsetSpawnSpeed": -0.25, + "AfterPaintParam": { + "DepthScaleFar": 2.2, + "DepthScaleNear": 2.2, + "DistanceXZFar": 5.8, + "DistanceXZNear": 3.1, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 1.155, + "WidthHalfNear": 1.1 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 0.8 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 3, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.1, + "AfterOffsetEndRadiusForPlayer": -0.1, + "AfterOffsetInitRadiusForField": -0.01, + "AfterOffsetInitRadiusForPlayer": -0.01, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.7, + "EndRadiusForPlayer": 0.8, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.07, + "InitRadiusForPlayer": 0.08 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 8, + "ReduceStartFallDistance": 1.5, + "ValueMax": 620, + "ValueMin": 350 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.1, + "AfterOffsetInitRadius": -0.1, + "ChangeFrame": 0, + "EndRadius": 0.8, + "InitRadius": 0.8, + "TailID": 0, + "TailLengthMax": 2, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 2.2, + "DepthScaleNear": 1.9, + "DistanceXZFar": 8.5, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 1.54, + "WidthHalfNear": 1.76 + }, + "RandomRotateYBias": 0.5, + "RandomRotateYDegree": 3, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.808, + "SpawnSpeedGround": 0.896, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 2, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 1 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.2, + "PaintDepthScale": 2.6, + "PaintWidthHalf": 0.94 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 1, + "FirstSplashRateForLengthMin": 1, + "SpawnBetweenLength": 2.6, + "SpawnNum": 1 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.5, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.2, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 2, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.8 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 0, + "AfterOffsetSpawnSpeed": -0.2, + "AfterPaintParam": { + "DepthScaleFar": 2, + "DepthScaleNear": 2, + "DistanceXZFar": 8, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 1.045, + "WidthHalfNear": 1.045 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 0.8 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 15, + "BulletNum": 1, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.7, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.05, + "InitRadiusForPlayer": 0.07 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 8, + "ReduceStartFallDistance": 1.5, + "ValueMax": 620, + "ValueMin": 350 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 1, + "InitRadius": 1, + "TailID": 1, + "TailLengthMax": 2, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.5, + "DepthScaleNear": 1.5, + "DistanceXZFar": 8, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 1.65, + "WidthHalfNear": 2 + }, + "RandomRotateYBias": 0.5, + "RandomRotateYDegree": 3, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.836, + "SpawnSpeedGround": 0.897, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 1 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.3, + "PaintDepthScale": 2.1, + "PaintWidthHalf": 0.825 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 1, + "FirstSplashRateForLengthMin": 0.6, + "SpawnBetweenLength": 7, + "SpawnNum": 1 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.5, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.2, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 3, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.8 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 0, + "AfterOffsetSpawnSpeed": -0.2, + "AfterPaintParam": { + "DepthScaleFar": 2, + "DepthScaleNear": 2, + "DistanceXZFar": 8, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 1.045, + "WidthHalfNear": 1.045 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 0.8 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": -15, + "BulletNum": 1, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.7, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.05, + "InitRadiusForPlayer": 0.07 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 8, + "ReduceStartFallDistance": 1.5, + "ValueMax": 620, + "ValueMin": 350 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 1, + "InitRadius": 1, + "TailID": 2, + "TailLengthMax": 2, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.5, + "DepthScaleNear": 1.5, + "DistanceXZFar": 8, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 1.65, + "WidthHalfNear": 2 + }, + "RandomRotateYBias": 0.5, + "RandomRotateYDegree": 3, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.836, + "SpawnSpeedGround": 0.897, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 1 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.3, + "PaintDepthScale": 2.1, + "PaintWidthHalf": 0.825 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 1, + "FirstSplashRateForLengthMin": 0.6, + "SpawnBetweenLength": 7, + "SpawnNum": 1 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.5, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.2, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 3, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.8 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + } + } + ], + "Unit@3.1.0": [ + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": -0.16, + "AfterPaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 0, + "WidthHalfNear": 0 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 0.8 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 4, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.1, + "AfterOffsetEndRadiusForPlayer": -0.1, + "AfterOffsetInitRadiusForField": -0.01, + "AfterOffsetInitRadiusForPlayer": -0.01, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.7, + "EndRadiusForPlayer": 0.9, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.07, + "InitRadiusForPlayer": 0.09 + }, + "DamageParam": { + "ReduceEndFallDistance": 8, + "ReduceStartFallDistance": 1.5, + "ValueMax": 620, + "ValueMin": 350 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -1.4, + "AfterOffsetInitRadius": -1.4, + "ChangeFrame": 0, + "EndRadius": 1.4, + "InitRadius": 1.4, + "TailID": 0, + "TailLengthMax": 2, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.15, + "DepthScaleNear": 1.15, + "DistanceXZFar": 12, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 3, + "WidthHalfNear": 3.75 + }, + "RandomRotateYBias": 0.5, + "RandomRotateYDegree": 3, + "RandomRotateYOffOrderNum": [0], + "SpawnSpeedAir": 1.1523, + "SpawnSpeedGround": 1.2229, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": -1, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 3 + } + ], + "SplashParam": [], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.5, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.2, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.8 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 2, + "AfterOffsetSpawnSpeed": -0.25, + "AfterPaintParam": { + "DepthScaleFar": 2.2, + "DepthScaleNear": 2.2, + "DistanceXZFar": 5.8, + "DistanceXZNear": 3.1, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 1.155, + "WidthHalfNear": 1.1 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 0.8 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 3, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.1, + "AfterOffsetEndRadiusForPlayer": -0.1, + "AfterOffsetInitRadiusForField": -0.01, + "AfterOffsetInitRadiusForPlayer": -0.01, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.7, + "EndRadiusForPlayer": 0.8, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.07, + "InitRadiusForPlayer": 0.08 + }, + "DamageParam": { + "ReduceEndFallDistance": 8, + "ReduceStartFallDistance": 1.5, + "ValueMax": 620, + "ValueMin": 350 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.1, + "AfterOffsetInitRadius": -0.1, + "ChangeFrame": 0, + "EndRadius": 0.8, + "InitRadius": 0.8, + "TailID": 0, + "TailLengthMax": 2, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 2.2, + "DepthScaleNear": 1.9, + "DistanceXZFar": 8.5, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 1.54, + "WidthHalfNear": 1.76 + }, + "RandomRotateYBias": 0.5, + "RandomRotateYDegree": 3, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.808, + "SpawnSpeedGround": 0.896, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 2, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 1 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.2, + "PaintDepthScale": 2.6, + "PaintWidthHalf": 0.94 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 1, + "FirstSplashRateForLengthMin": 1, + "SpawnBetweenLength": 2.6, + "SpawnNum": 1 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.5, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.2, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 2, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.8 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 0, + "AfterOffsetSpawnSpeed": -0.2, + "AfterPaintParam": { + "DepthScaleFar": 2, + "DepthScaleNear": 2, + "DistanceXZFar": 8, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 1.045, + "WidthHalfNear": 1.045 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 0.8 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 15, + "BulletNum": 1, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.7, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.05, + "InitRadiusForPlayer": 0.07 + }, + "DamageParam": { + "ReduceEndFallDistance": 8, + "ReduceStartFallDistance": 1.5, + "ValueMax": 620, + "ValueMin": 350 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 1, + "InitRadius": 1, + "TailID": 1, + "TailLengthMax": 2, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.5, + "DepthScaleNear": 1.5, + "DistanceXZFar": 8, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 1.65, + "WidthHalfNear": 2 + }, + "RandomRotateYBias": 0.5, + "RandomRotateYDegree": 3, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.836, + "SpawnSpeedGround": 0.897, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 1 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.3, + "PaintDepthScale": 2.1, + "PaintWidthHalf": 0.825 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 1, + "FirstSplashRateForLengthMin": 0.6, + "SpawnBetweenLength": 7, + "SpawnNum": 1 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.5, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.2, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 3, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.8 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 0, + "AfterOffsetSpawnSpeed": -0.2, + "AfterPaintParam": { + "DepthScaleFar": 2, + "DepthScaleNear": 2, + "DistanceXZFar": 8, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 1.045, + "WidthHalfNear": 1.045 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 0.8 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": -15, + "BulletNum": 1, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.7, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.05, + "InitRadiusForPlayer": 0.07 + }, + "DamageParam": { + "ReduceEndFallDistance": 8, + "ReduceStartFallDistance": 1.5, + "ValueMax": 620, + "ValueMin": 350 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 1, + "InitRadius": 1, + "TailID": 2, + "TailLengthMax": 2, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.5, + "DepthScaleNear": 1.5, + "DistanceXZFar": 8, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.8, + "WidthHalfFar": 1.65, + "WidthHalfNear": 2 + }, + "RandomRotateYBias": 0.5, + "RandomRotateYDegree": 3, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.836, + "SpawnSpeedGround": 0.897, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 1 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.3, + "PaintDepthScale": 2.1, + "PaintWidthHalf": 0.825 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 1, + "FirstSplashRateForLengthMin": 0.6, + "SpawnBetweenLength": 7, + "SpawnNum": 1 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.5, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.2, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 3, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.8 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.05, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "WeaponParam": { + "FrameOffsetMaxDegree": 1.5, + "FrameOffsetMaxMoveLength": 0.5, + "InkConsume": 0.06, + "InkRecoverStop": 35, + "MoveLmtFrame": 30, + "MoveSpeed": 0.066, + "PostDelayFrame": 10, + "RepeatFrame": 23, + "ShotGuide": { + "BulletOrderNumInUnit": 0, + "Frame": 13, + "UnitOrderNum": 0 + }, + "SwingLiftFrame": 12 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "GuideYMinusZero": true, + "YMinusRate": 1, + "ZRate": 2 + } + }, + "3020": { + "MainEffectiveRangeUpParam": { + "BaseDistance": 14.5 + }, + "MainWeaponSetting": {}, + "NearestParam": { + "DrawSizeCollisionPaintParam": { + "PaintDepthScale": 2, + "PaintWidthHalf": 1 + }, + "SpawnOffset": { + "X": 0.05, + "Y": 0.15 + } + }, + "SplashSlosherScatterParam": { + "CollisionParam": { + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0, + "InitRadiusForField": 0.3, + "InitRadiusForPlayer": 0 + }, + "PaintRadius": 0.5, + "SpawnFirstFrame": 4, + "SpawnMaxDegree": 65, + "SpawnMaxNum": 6, + "SpawnMinDegree": -45, + "SpawnOffsetMax": 1.2, + "SpawnOffsetMin": 0.8, + "SpawnSpanChangeEndFrame": 35, + "SpawnSpanFrameFirst": 6, + "SpawnSpanFrameLast": 12, + "SpawnSpeed": 0.15 + }, + "SplashSlosherSpiralParam": { + "CollisionParam": { + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0 + }, + "LifeFrame": 11, + "RoundSplitNum": 4, + "SameTimeSpawnNum": 3, + "SpawnSpanChangeEndFrame": 45, + "SpawnSpanChangeStartFrame": 18, + "SpawnSpanFrameFirst": 5, + "SpawnSpanFrameLast": 5, + "SpawnSpeedChangeEndFallHeight": 7, + "SpawnSpeedChangeStartFallHeight": 1.5, + "SpawnSpeedFirst": 0.17, + "SpawnSpeedLast": 0.085 + }, + "UnitGroupParam": { + "Unit": [ + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 0, + "AfterOffsetSpawnSpeed": 0, + "AfterPaintParam": { + "DepthScaleFar": 1.5, + "DepthScaleNear": 1.5, + "DistanceXZFar": 10, + "DistanceXZNear": 10, + "ScaleEndFallDistance": 10, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.5, + "WidthHalfFar": 0, + "WidthHalfNear": 0 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.2 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 1, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.1, + "EndRadiusForPlayer": 0.285, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.01, + "InitRadiusForPlayer": 0.0285 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 8.5, + "ReduceStartFallDistance": 1.5, + "ValueMax": 760, + "ValueMin": 520 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 0.1, + "InitRadius": 0.1, + "TailID": 0, + "TailLengthMax": 0.5, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.16, + "FreeGravity": 0.06, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 5, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 0.897, + "DepthScaleNear": 0.897, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 10, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.5, + "WidthHalfFar": 4.156, + "WidthHalfNear": 4.156 + }, + "RandomRotateYBias": 0.45, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 1.4563, + "SpawnSpeedGround": 1.4737, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 4 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.1, + "EndRadiusForPlayer": 0.1, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawRadius": 0.2, + "PaintDepthScale": 2.2, + "PaintWidthHalf": 1.559 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 0.35, + "FirstSplashRateForLengthMin": 0.1, + "SpawnBetweenLength": 3.6, + "SpawnNum": 4 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.25, + "DistanceXZRate": 1.5, + "FirstDistance": 2.5, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [ + { + "CollisionRadius": 0.2, + "DrawRadius": 0.4, + "PaintRadiusRatePerWidthHalf": 0.6, + "SpawnOffsetHitByPlayer": 1, + "SpawnOffsetY": 1.6 + } + ], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.64 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 2, + "AfterOffsetSpawnSpeed": 0, + "AfterPaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 0, + "DistanceXZNear": 0, + "ScaleEndFallDistance": 10, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.5, + "WidthHalfFar": 0, + "WidthHalfNear": 0 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 10, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 20, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 4, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0.47, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0.047, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0, + "EndRadiusForPlayer": 0.59, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0, + "InitRadiusForPlayer": 0.059 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 8.5, + "ReduceStartFallDistance": 1.5, + "ValueMax": 380, + "ValueMin": 380 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 0, + "InitRadius": 0, + "TailID": 0, + "TailLengthMax": 0.5, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.16, + "FreeGravity": 0.06, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 5, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 0, + "DistanceXZNear": 0, + "ScaleEndFallDistance": 10, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.5, + "WidthHalfFar": 0, + "WidthHalfNear": 0 + }, + "RandomRotateYBias": 0.45, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 1.4563, + "SpawnSpeedGround": 1.4737, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [], + "SplashParam": [], + "SplashWallHitParam": [] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 1, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.4 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 10, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 20, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + } + ], + "Unit@10.1.0": [ + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 0, + "AfterOffsetSpawnSpeed": 0, + "AfterPaintParam": { + "DepthScaleFar": 1.5, + "DepthScaleNear": 1.5, + "DistanceXZFar": 10, + "DistanceXZNear": 10, + "ScaleEndFallDistance": 10, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.5, + "WidthHalfFar": 0, + "WidthHalfNear": 0 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.2 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 1, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.1, + "EndRadiusForPlayer": 0.25, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.01, + "InitRadiusForPlayer": 0.025 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 8.5, + "ReduceStartFallDistance": 1.5, + "ValueMax": 760, + "ValueMin": 520 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 0.1, + "InitRadius": 0.1, + "TailID": 0, + "TailLengthMax": 0.5, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.16, + "FreeGravity": 0.06, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 5, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 0.897, + "DepthScaleNear": 0.897, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 10, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.5, + "WidthHalfFar": 4.156, + "WidthHalfNear": 4.156 + }, + "RandomRotateYBias": 0.45, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 1.4563, + "SpawnSpeedGround": 1.4737, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 4 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.1, + "EndRadiusForPlayer": 0.1, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawRadius": 0.2, + "PaintDepthScale": 2.2, + "PaintWidthHalf": 1.559 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 0.35, + "FirstSplashRateForLengthMin": 0.1, + "SpawnBetweenLength": 3.6, + "SpawnNum": 4 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.25, + "DistanceXZRate": 1.5, + "FirstDistance": 2.5, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [ + { + "CollisionRadius": 0.2, + "DrawRadius": 0.4, + "PaintRadiusRatePerWidthHalf": 0.6, + "SpawnOffsetHitByPlayer": 1, + "SpawnOffsetY": 1.6 + } + ], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.64 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 2, + "AfterOffsetSpawnSpeed": 0, + "AfterPaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 0, + "DistanceXZNear": 0, + "ScaleEndFallDistance": 10, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.5, + "WidthHalfFar": 0, + "WidthHalfNear": 0 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 10, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 20, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 4, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0.47, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0.047, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0, + "EndRadiusForPlayer": 0.47, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0, + "InitRadiusForPlayer": 0.047 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 8.5, + "ReduceStartFallDistance": 1.5, + "ValueMax": 380, + "ValueMin": 380 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 0, + "InitRadius": 0, + "TailID": 0, + "TailLengthMax": 0.5, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.16, + "FreeGravity": 0.06, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 5, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 0, + "DistanceXZNear": 0, + "ScaleEndFallDistance": 10, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.5, + "WidthHalfFar": 0, + "WidthHalfNear": 0 + }, + "RandomRotateYBias": 0.45, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 1.4563, + "SpawnSpeedGround": 1.4737, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [], + "SplashParam": [], + "SplashWallHitParam": [] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 1, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.4 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 10, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 20, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + } + ], + "Unit@4.1.0": [ + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 0, + "AfterOffsetSpawnSpeed": 0, + "AfterPaintParam": { + "DepthScaleFar": 1.5, + "DepthScaleNear": 1.5, + "DistanceXZFar": 10, + "DistanceXZNear": 10, + "ScaleEndFallDistance": 10, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.5, + "WidthHalfFar": 0, + "WidthHalfNear": 0 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.2 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 1, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.1, + "EndRadiusForPlayer": 0.25, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.01, + "InitRadiusForPlayer": 0.025 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 8.5, + "ReduceStartFallDistance": 1.5, + "ValueMax": 760, + "ValueMin": 520 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 0.1, + "InitRadius": 0.1, + "TailID": 0, + "TailLengthMax": 0.5, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.16, + "FreeGravity": 0.06, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 5, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 0.897, + "DepthScaleNear": 0.897, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 10, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.5, + "WidthHalfFar": 4.156, + "WidthHalfNear": 4.156 + }, + "RandomRotateYBias": 0.45, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 1.4563, + "SpawnSpeedGround": 1.4737, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 4 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.1, + "EndRadiusForPlayer": 0.1, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawRadius": 0.2, + "PaintDepthScale": 2.2, + "PaintWidthHalf": 1.559 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 0.35, + "FirstSplashRateForLengthMin": 0.1, + "SpawnBetweenLength": 3.6, + "SpawnNum": 4 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.25, + "DistanceXZRate": 1.5, + "FirstDistance": 2.5, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [ + { + "CollisionRadius": 0.2, + "DrawRadius": 0.4, + "PaintRadiusRatePerWidthHalf": 0.6, + "SpawnOffsetHitByPlayer": 1, + "SpawnOffsetY": 1.6 + } + ], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.64 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 2, + "AfterOffsetSpawnSpeed": 0, + "AfterPaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 0, + "DistanceXZNear": 0, + "ScaleEndFallDistance": 10, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.5, + "WidthHalfFar": 0, + "WidthHalfNear": 0 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 10, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 20, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 4, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0.47, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0.047, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0, + "EndRadiusForPlayer": 0.47, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0, + "InitRadiusForPlayer": 0.047 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 8.5, + "ReduceStartFallDistance": 1.5, + "ValueMax": 380, + "ValueMin": 380 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 0, + "InitRadius": 0, + "TailID": 0, + "TailLengthMax": 0.5, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.16, + "FreeGravity": 0.06, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 5, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 0, + "DistanceXZNear": 0, + "ScaleEndFallDistance": 10, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.5, + "WidthHalfFar": 0, + "WidthHalfNear": 0 + }, + "RandomRotateYBias": 0.45, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 1.4563, + "SpawnSpeedGround": 1.4737, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [], + "SplashParam": [], + "SplashWallHitParam": [] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 1, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.4 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 10, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 20, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + } + ], + "Unit@3.1.0": [ + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 0, + "AfterOffsetSpawnSpeed": 0, + "AfterPaintParam": { + "DepthScaleFar": 1.5, + "DepthScaleNear": 1.5, + "DistanceXZFar": 10, + "DistanceXZNear": 10, + "ScaleEndFallDistance": 10, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.5, + "WidthHalfFar": 0, + "WidthHalfNear": 0 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.2 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 1, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.1, + "EndRadiusForPlayer": 0.25, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.01, + "InitRadiusForPlayer": 0.025 + }, + "DamageParam": { + "ReduceEndFallDistance": 8.5, + "ReduceStartFallDistance": 1.5, + "ValueMax": 760, + "ValueMin": 520 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 0.1, + "InitRadius": 0.1, + "TailID": 0, + "TailLengthMax": 0.5, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.16, + "FreeGravity": 0.06, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 5, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 0.897, + "DepthScaleNear": 0.897, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 10, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.5, + "WidthHalfFar": 4.156, + "WidthHalfNear": 4.156 + }, + "RandomRotateYBias": 0.45, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 1.4563, + "SpawnSpeedGround": 1.4737, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 4 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.1, + "EndRadiusForPlayer": 0.1, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DrawRadius": 0.2, + "PaintDepthScale": 2.2, + "PaintWidthHalf": 1.559 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 0.35, + "FirstSplashRateForLengthMin": 0.1, + "SpawnBetweenLength": 3.6, + "SpawnNum": 4 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.25, + "DistanceXZRate": 1.5, + "FirstDistance": 2.5, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [ + { + "CollisionRadius": 0.2, + "DrawRadius": 0.4, + "PaintRadiusRatePerWidthHalf": 0.6, + "SpawnOffsetHitByPlayer": 1, + "SpawnOffsetY": 1.6 + } + ], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.64 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 2, + "AfterOffsetSpawnSpeed": 0, + "AfterPaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 0, + "DistanceXZNear": 0, + "ScaleEndFallDistance": 10, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.5, + "WidthHalfFar": 0, + "WidthHalfNear": 0 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 10, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 20, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 4, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0.47, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0.047, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0, + "EndRadiusForPlayer": 0.47, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0, + "InitRadiusForPlayer": 0.047 + }, + "DamageParam": { + "ReduceEndFallDistance": 8.5, + "ReduceStartFallDistance": 1.5, + "ValueMax": 380, + "ValueMin": 380 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 0, + "InitRadius": 0, + "TailID": 0, + "TailLengthMax": 0.5, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.16, + "FreeGravity": 0.06, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 5, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 0, + "DistanceXZNear": 0, + "ScaleEndFallDistance": 10, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.5, + "WidthHalfFar": 0, + "WidthHalfNear": 0 + }, + "RandomRotateYBias": 0.45, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 1.4563, + "SpawnSpeedGround": 1.4737, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [], + "SplashParam": [], + "SplashWallHitParam": [] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 1, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.4 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 10, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 20, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "WeaponParam": { + "FrameOffsetMaxDegree": 0, + "FrameOffsetMaxMoveLength": 0, + "InkConsume": 0.092, + "InkRecoverStop": 42, + "MoveLmtFrame": 38, + "MoveSpeed": 0.07, + "PostDelayFrame": 10, + "RepeatFrame": 38, + "ShotGuide": { + "Frame": 12 + }, + "SwingLiftFrame": 12, + "InkConsume@2.0.0": 0.084, + "MoveLmtFrame@3.1.0": 33, + "RepeatFrame@3.1.0": 33 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "GuideYMinusZero": true, + "YMinusRate": 1 + } + }, + "3030": { + "BounceGroupParam": { + "BounceParam": [ + { + "PaintRadiusFirstBounce": 1.65 + }, + { + "AfterOffsetPaintRadiusFirstBnce": -0.05, + "BounceAfterMaxSpeed": 0.35, + "PaintRadiusFirstBounce": 1.32, + "UnitOrderNum": 1 + } + ], + "BounceParam@4.0.0": [ + { + "PaintRadiusFirstBounce": 1.5 + }, + { + "AfterOffsetPaintRadiusFirstBnce": -0.05, + "BounceAfterMaxSpeed": 0.35, + "PaintRadiusFirstBounce": 1.2, + "UnitOrderNum": 1 + } + ] + }, + "MainEffectiveRangeUpParam": { + "BaseDistance": 14 + }, + "MainWeaponSetting": {}, + "NearestParam": { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "EndRadiusForPlayer": 0, + "InitRadiusForPlayer": 0 + }, + "PaintDepthScale": 1.2, + "PaintWidthHalf": 2.2 + }, + "SpawnOffset": { + "X": 0.25, + "Y": -0.4 + } + }, + "UnitGroupParam": { + "Unit": [ + { + "AddSpawnSpeedYRateByXZ": 0.2, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": 0, + "AfterPaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 0, + "DistanceXZFar": 0.1, + "DistanceXZNear": 0, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 2.063, + "WidthHalfNear": 0 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1.875 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 1, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.75, + "EndRadiusForPlayer": 0.85, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.075, + "InitRadiusForPlayer": 0.085 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 320, + "ValueMin": 320 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 5, + "EndRadius": 0.8, + "InitRadius": 0.16, + "TailID": 0, + "TailLengthMax": 0, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0, + "TailSolidFrame": 0 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.01, + "BrakeGravity": 0.01, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.01, + "FreeGravity": 0.015, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 1.1, + "DistanceXZFar": 20, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.65, + "WidthHalfNear": 1.65 + }, + "RandomRotateYBias": 1, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.51, + "SpawnSpeedGround": 0.53982, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": -1, + "TotalNum": 5 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0.15, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0.15 + }, + "DrawRadius": 0.2, + "PaintDepthScale": 1.84, + "PaintWidthHalf": 1.645 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 1, + "FirstSplashRateForLengthMin": 1, + "SpawnBetweenLength": 3, + "SpawnNum": 5 + } + } + ], + "SplashWallHitParam": [] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.2, + "AfterOffsetDelayFrame": 5, + "AfterOffsetSpawnSpeed": -0.01, + "AfterPaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 1.1, + "DistanceXZFar": 20, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.142, + "WidthHalfNear": 1.142 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1.875 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 3, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.03, + "AfterOffsetEndRadiusForPlayer": -0.03, + "AfterOffsetInitRadiusForField": -0.003, + "AfterOffsetInitRadiusForPlayer": -0.003, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.57, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.05, + "InitRadiusForPlayer": 0.057 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 320, + "ValueMin": 320 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.03, + "AfterOffsetInitRadius": -0.006, + "ChangeFrame": 5, + "EndRadius": 0.52, + "InitRadius": 0.104, + "TailID": 0, + "TailLengthMax": 0, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0, + "TailSolidFrame": 0 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.01, + "BrakeGravity": 0.01, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.01, + "FreeGravity": 0.015, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 1.1, + "DistanceXZFar": 20, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.19, + "WidthHalfNear": 1.19 + }, + "RandomRotateYBias": 1, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.5, + "SpawnSpeedGround": 0.53, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [], + "SplashParam": [], + "SplashWallHitParam": [] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 5, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1.875 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + } + ], + "Unit@11.0.1": [ + { + "AddSpawnSpeedYRateByXZ": 0.2, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": 0, + "AfterPaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 0, + "DistanceXZFar": 0.1, + "DistanceXZNear": 0, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 2.063, + "WidthHalfNear": 0 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1.875 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 1, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.75, + "EndRadiusForPlayer": 0.85, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.075, + "InitRadiusForPlayer": 0.085 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 300, + "ValueMin": 300 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 5, + "EndRadius": 0.8, + "InitRadius": 0.16, + "TailID": 0, + "TailLengthMax": 0, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0, + "TailSolidFrame": 0 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.01, + "BrakeGravity": 0.01, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.01, + "FreeGravity": 0.015, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 1.1, + "DistanceXZFar": 20, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.65, + "WidthHalfNear": 1.65 + }, + "RandomRotateYBias": 1, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.51, + "SpawnSpeedGround": 0.53982, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": -1, + "TotalNum": 5 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0.15, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0.15 + }, + "DrawRadius": 0.2, + "PaintDepthScale": 1.84, + "PaintWidthHalf": 1.645 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 1, + "FirstSplashRateForLengthMin": 1, + "SpawnBetweenLength": 3, + "SpawnNum": 5 + } + } + ], + "SplashWallHitParam": [] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.2, + "AfterOffsetDelayFrame": 5, + "AfterOffsetSpawnSpeed": -0.01, + "AfterPaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 1.1, + "DistanceXZFar": 20, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.142, + "WidthHalfNear": 1.142 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1.875 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 3, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.03, + "AfterOffsetEndRadiusForPlayer": -0.03, + "AfterOffsetInitRadiusForField": -0.003, + "AfterOffsetInitRadiusForPlayer": -0.003, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.57, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.05, + "InitRadiusForPlayer": 0.057 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 300, + "ValueMin": 300 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.03, + "AfterOffsetInitRadius": -0.006, + "ChangeFrame": 5, + "EndRadius": 0.52, + "InitRadius": 0.104, + "TailID": 0, + "TailLengthMax": 0, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0, + "TailSolidFrame": 0 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.01, + "BrakeGravity": 0.01, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.01, + "FreeGravity": 0.015, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 1.1, + "DistanceXZFar": 20, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.19, + "WidthHalfNear": 1.19 + }, + "RandomRotateYBias": 1, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.5, + "SpawnSpeedGround": 0.53, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [], + "SplashParam": [], + "SplashWallHitParam": [] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 5, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1.875 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + } + ], + "Unit@10.1.0": [ + { + "AddSpawnSpeedYRateByXZ": 0.2, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": 0, + "AfterPaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 0, + "DistanceXZFar": 0.1, + "DistanceXZNear": 0, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 2.063, + "WidthHalfNear": 0 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1.875 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 1, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.75, + "EndRadiusForPlayer": 0.8, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.075, + "InitRadiusForPlayer": 0.08 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 300, + "ValueMin": 300 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 5, + "EndRadius": 0.8, + "InitRadius": 0.16, + "TailID": 0, + "TailLengthMax": 0, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0, + "TailSolidFrame": 0 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.01, + "BrakeGravity": 0.01, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.01, + "FreeGravity": 0.015, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 1.1, + "DistanceXZFar": 20, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.65, + "WidthHalfNear": 1.65 + }, + "RandomRotateYBias": 1, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.51, + "SpawnSpeedGround": 0.53982, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": -1, + "TotalNum": 5 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0.15, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0.15 + }, + "DrawRadius": 0.2, + "PaintDepthScale": 1.84, + "PaintWidthHalf": 1.645 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 1, + "FirstSplashRateForLengthMin": 1, + "SpawnBetweenLength": 3, + "SpawnNum": 5 + } + } + ], + "SplashWallHitParam": [] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.2, + "AfterOffsetDelayFrame": 5, + "AfterOffsetSpawnSpeed": -0.01, + "AfterPaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 1.1, + "DistanceXZFar": 20, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.142, + "WidthHalfNear": 1.142 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1.875 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 3, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.03, + "AfterOffsetEndRadiusForPlayer": -0.03, + "AfterOffsetInitRadiusForField": -0.003, + "AfterOffsetInitRadiusForPlayer": -0.003, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.52, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.05, + "InitRadiusForPlayer": 0.052 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 300, + "ValueMin": 300 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.03, + "AfterOffsetInitRadius": -0.006, + "ChangeFrame": 5, + "EndRadius": 0.52, + "InitRadius": 0.104, + "TailID": 0, + "TailLengthMax": 0, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0, + "TailSolidFrame": 0 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.01, + "BrakeGravity": 0.01, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.01, + "FreeGravity": 0.015, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 1.1, + "DistanceXZFar": 20, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.19, + "WidthHalfNear": 1.19 + }, + "RandomRotateYBias": 1, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.5, + "SpawnSpeedGround": 0.53, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [], + "SplashParam": [], + "SplashWallHitParam": [] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 5, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1.875 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + } + ], + "Unit@4.1.0": [ + { + "AddSpawnSpeedYRateByXZ": 0.2, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": 0, + "AfterPaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 0, + "DistanceXZFar": 0.1, + "DistanceXZNear": 0, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 2.063, + "WidthHalfNear": 0 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1.875 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 1, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.75, + "EndRadiusForPlayer": 0.8, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.075, + "InitRadiusForPlayer": 0.08 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 300, + "ValueMin": 300 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 5, + "EndRadius": 0.8, + "InitRadius": 0.16, + "TailID": 0, + "TailLengthMax": 0, + "TailLengthMin": 0, + "TailSolidFrame": 0 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.01, + "BrakeGravity": 0.01, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.01, + "FreeGravity": 0.015, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 1.1, + "DistanceXZFar": 20, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.65, + "WidthHalfNear": 1.65 + }, + "RandomRotateYBias": 1, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.51, + "SpawnSpeedGround": 0.53982, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": -1, + "TotalNum": 5 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0.15, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0.15 + }, + "DrawRadius": 0.2, + "PaintDepthScale": 1.84, + "PaintWidthHalf": 1.645 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 1, + "FirstSplashRateForLengthMin": 1, + "SpawnBetweenLength": 3, + "SpawnNum": 5 + } + } + ], + "SplashWallHitParam": [] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.2, + "AfterOffsetDelayFrame": 5, + "AfterOffsetSpawnSpeed": -0.01, + "AfterPaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 1.1, + "DistanceXZFar": 20, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.142, + "WidthHalfNear": 1.142 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1.875 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 3, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.03, + "AfterOffsetEndRadiusForPlayer": -0.03, + "AfterOffsetInitRadiusForField": -0.003, + "AfterOffsetInitRadiusForPlayer": -0.003, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.52, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.05, + "InitRadiusForPlayer": 0.052 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 300, + "ValueMin": 300 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.03, + "AfterOffsetInitRadius": -0.006, + "ChangeFrame": 5, + "EndRadius": 0.52, + "InitRadius": 0.104, + "TailID": 0, + "TailLengthMax": 0, + "TailLengthMin": 0, + "TailSolidFrame": 0 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.01, + "BrakeGravity": 0.01, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.01, + "FreeGravity": 0.015, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 1.1, + "DistanceXZFar": 20, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.19, + "WidthHalfNear": 1.19 + }, + "RandomRotateYBias": 1, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.5, + "SpawnSpeedGround": 0.53, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [], + "SplashParam": [], + "SplashWallHitParam": [] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 5, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1.875 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + } + ], + "Unit@4.0.0": [ + { + "AddSpawnSpeedYRateByXZ": 0.2, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": 0, + "AfterPaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 0, + "DistanceXZFar": 0.1, + "DistanceXZNear": 0, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.875, + "WidthHalfNear": 0 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1.875 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 1, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.75, + "EndRadiusForPlayer": 0.8, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.075, + "InitRadiusForPlayer": 0.08 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 300, + "ValueMin": 300 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 5, + "EndRadius": 0.8, + "InitRadius": 0.16, + "TailID": 0, + "TailLengthMax": 0, + "TailLengthMin": 0, + "TailSolidFrame": 0 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.01, + "BrakeGravity": 0.01, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.01, + "FreeGravity": 0.015, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 1.1, + "DistanceXZFar": 20, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.5, + "WidthHalfNear": 1.5 + }, + "RandomRotateYBias": 1, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.51, + "SpawnSpeedGround": 0.53982, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": -1, + "TotalNum": 5 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0.15, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0.15 + }, + "DrawRadius": 0.2, + "PaintDepthScale": 1.84, + "PaintWidthHalf": 1.495 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 1, + "FirstSplashRateForLengthMin": 1, + "SpawnBetweenLength": 3, + "SpawnNum": 5 + } + } + ], + "SplashWallHitParam": [] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.2, + "AfterOffsetDelayFrame": 5, + "AfterOffsetSpawnSpeed": -0.01, + "AfterPaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 1.1, + "DistanceXZFar": 20, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.0375, + "WidthHalfNear": 1.0375 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1.875 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 3, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.03, + "AfterOffsetEndRadiusForPlayer": -0.03, + "AfterOffsetInitRadiusForField": -0.003, + "AfterOffsetInitRadiusForPlayer": -0.003, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.52, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.05, + "InitRadiusForPlayer": 0.052 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 300, + "ValueMin": 300 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.03, + "AfterOffsetInitRadius": -0.006, + "ChangeFrame": 5, + "EndRadius": 0.52, + "InitRadius": 0.104, + "TailID": 0, + "TailLengthMax": 0, + "TailLengthMin": 0, + "TailSolidFrame": 0 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.01, + "BrakeGravity": 0.01, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.01, + "FreeGravity": 0.015, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 1.1, + "DistanceXZFar": 20, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.08125, + "WidthHalfNear": 1.08125 + }, + "RandomRotateYBias": 1, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.5, + "SpawnSpeedGround": 0.53, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [], + "SplashParam": [], + "SplashWallHitParam": [] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 5, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1.875 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + } + ], + "Unit@3.1.0": [ + { + "AddSpawnSpeedYRateByXZ": 0.2, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": 0, + "AfterPaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 0, + "DistanceXZFar": 0.1, + "DistanceXZNear": 0, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.875, + "WidthHalfNear": 0 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1.875 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 1, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.75, + "EndRadiusForPlayer": 0.8, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.075, + "InitRadiusForPlayer": 0.08 + }, + "DamageParam": { + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 300, + "ValueMin": 300 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 5, + "EndRadius": 0.8, + "InitRadius": 0.16, + "TailID": 0, + "TailLengthMax": 0, + "TailLengthMin": 0, + "TailSolidFrame": 0 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.01, + "BrakeGravity": 0.01, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.01, + "FreeGravity": 0.015, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 1.1, + "DistanceXZFar": 20, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.5, + "WidthHalfNear": 1.5 + }, + "RandomRotateYBias": 1, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.51, + "SpawnSpeedGround": 0.53982, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": -1, + "TotalNum": 5 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0.15, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0.15 + }, + "DrawRadius": 0.2, + "PaintDepthScale": 1.84, + "PaintWidthHalf": 1.495 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 1, + "FirstSplashRateForLengthMin": 1, + "SpawnBetweenLength": 3, + "SpawnNum": 5 + } + } + ], + "SplashWallHitParam": [] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.2, + "AfterOffsetDelayFrame": 5, + "AfterOffsetSpawnSpeed": -0.01, + "AfterPaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 1.1, + "DistanceXZFar": 20, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.0375, + "WidthHalfNear": 1.0375 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1.875 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 3, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.03, + "AfterOffsetEndRadiusForPlayer": -0.03, + "AfterOffsetInitRadiusForField": -0.003, + "AfterOffsetInitRadiusForPlayer": -0.003, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.52, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.05, + "InitRadiusForPlayer": 0.052 + }, + "DamageParam": { + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 300, + "ValueMin": 300 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.03, + "AfterOffsetInitRadius": -0.006, + "ChangeFrame": 5, + "EndRadius": 0.52, + "InitRadius": 0.104, + "TailID": 0, + "TailLengthMax": 0, + "TailLengthMin": 0, + "TailSolidFrame": 0 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.01, + "BrakeGravity": 0.01, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.01, + "FreeGravity": 0.015, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 1.1, + "DistanceXZFar": 20, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.08125, + "WidthHalfNear": 1.08125 + }, + "RandomRotateYBias": 1, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.5, + "SpawnSpeedGround": 0.53, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [], + "SplashParam": [], + "SplashWallHitParam": [] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 5, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1.875 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + } + ], + "Unit@1.1.0": [ + { + "AddSpawnSpeedYRateByXZ": 0.2, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": 0, + "AfterPaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 0, + "DistanceXZFar": 0.1, + "DistanceXZNear": 0, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.875, + "WidthHalfNear": 0 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1.875 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 1, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.75, + "EndRadiusForPlayer": 0.8, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.075, + "InitRadiusForPlayer": 0.08 + }, + "DamageParam": { + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 300, + "ValueMin": 300 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 5, + "EndRadius": 0.8, + "InitRadius": 0.16, + "TailID": 0, + "TailLengthMax": 0, + "TailLengthMin": 0, + "TailSolidFrame": 0 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.01, + "BrakeGravity": 0.01, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.01, + "FreeGravity": 0.015, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 1.1, + "DistanceXZFar": 20, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.5, + "WidthHalfNear": 1.5 + }, + "RandomRotateYBias": 1, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.51, + "SpawnSpeedGround": 0.53982, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": -1, + "TotalNum": 5 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0.15, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0.15 + }, + "DrawRadius": 0.2, + "PaintDepthScale": 1.84, + "PaintWidthHalf": 1.495 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 1, + "FirstSplashRateForLengthMin": 1, + "SpawnBetweenLength": 3, + "SpawnNum": 5 + } + } + ], + "SplashWallHitParam": [] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.2, + "AfterOffsetDelayFrame": 5, + "AfterOffsetSpawnSpeed": -0.01, + "AfterPaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 1.1, + "DistanceXZFar": 20, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.0375, + "WidthHalfNear": 1.0375 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1.875 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 3, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.3, + "AfterOffsetEndRadiusForPlayer": -0.3, + "AfterOffsetInitRadiusForField": -0.03, + "AfterOffsetInitRadiusForPlayer": -0.03, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.52, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.05, + "InitRadiusForPlayer": 0.052 + }, + "DamageParam": { + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 300, + "ValueMin": 300 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.03, + "AfterOffsetInitRadius": -0.006, + "ChangeFrame": 5, + "EndRadius": 0.52, + "InitRadius": 0.104, + "TailID": 0, + "TailLengthMax": 0, + "TailLengthMin": 0, + "TailSolidFrame": 0 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.01, + "BrakeGravity": 0.01, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.01, + "FreeGravity": 0.015, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1.1, + "DepthScaleNear": 1.1, + "DistanceXZFar": 20, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.08125, + "WidthHalfNear": 1.08125 + }, + "RandomRotateYBias": 1, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 0.5, + "SpawnSpeedGround": 0.53, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [], + "SplashParam": [], + "SplashWallHitParam": [] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 5, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.6, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1.875 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "WeaponParam": { + "FrameOffsetDegreeRate": 0.3, + "InkConsume": 0.08, + "InkRecoverStop": 40, + "MoveLmtFrame": 32, + "MoveSpeed": 0.05, + "PostDelayFrame": 15, + "RepeatFrame": 32, + "ShotGuide": { + "BulletOrderNumInUnit": 0, + "Frame": 22, + "UnitOrderNum": 0 + }, + "SwingLiftAnimFrame": 2, + "SwingLiftFrame": 6 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "GuideYMinusZero": true, + "YMinusRate": 0, + "YPlusRate": 0, + "ZRate": 0.5 + } + }, + "3040": { + "BlastParam": { + "BlastParam": { + "CollisionRadiusForPaint": 4.5, + "CrossPaintCheckLength": 0, + "CrossPaintRadius": 0, + "DamageAttackerPriority": true, + "DamageOffsetY": 0.2, + "DistanceDamage": [ + { + "Damage": 350, + "Distance": 2.87 + } + ], + "KnockBackParam": { + "Accel": 470, + "Bias": 0.8, + "Distance": 5 + }, + "PaintOffsetY": 0.2, + "PaintRadius": 4.5, + "DistanceDamage@10.1.0": [ + { + "Damage": 350, + "Distance": 2.8 + } + ] + }, + "DistanceFar": 23, + "DistanceNear": 21, + "PaintRadiusFar": 4.095, + "PaintRadiusNear": 4.5 + }, + "MainEffectiveRangeUpParam": { + "BaseDistance": 20.7 + }, + "MainWeaponSetting": { + "WeaponSpeedType": "Slow" + }, + "NearestParam": { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "EndRadiusForPlayer": 0, + "InitRadiusForPlayer": 0 + }, + "PaintDepthScale": 1.4, + "PaintWidthHalf": 1.56 + }, + "SpawnOffset": { + "X": 0.25, + "Y": 0.3 + } + }, + "UnitGroupParam": { + "Unit": [ + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": 0, + "AfterPaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 20, + "DistanceXZNear": 1, + "ScaleEndFallDistance": 10, + "ScaleStartFallDistance": 5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.8, + "WidthHalfNear": 1 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 10, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 20, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 1, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.435, + "FriendThroughFrameForPlayer": 1000, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.0435 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 9, + "ReduceStartFallDistance": 1.5, + "ValueMax": 550, + "ValueMin": 550 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 0.7, + "InitRadius": 0.7, + "TailID": 0, + "TailLengthMax": 4, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0.5, + "TailSolidFrame": 1 + }, + "HitEffectBigOrderNum": [0], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 8, + "SpawnSpeed": 2 + }, + "PaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 2.28, + "WidthHalfNear": 2.28 + }, + "RandomRotateYBias": 0, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 1.38975, + "SpawnSpeedGround": 1.4105, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 7 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.1, + "PaintDepthScale": 2, + "PaintWidthHalf": 1.344 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 0.55, + "FirstSplashRateForLengthMin": 0.5, + "SpawnBetweenLength": 3.1, + "SpawnNum": 7 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 0.6, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.4, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 45, + "FallPeriodFirstFrameMin": 25, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 45, + "FallPeriodLastFrameMin": 25, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.08, + "FreeGravityType": "value_0_008" + } + } + ], + "Unit@10.1.0": [ + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": 0, + "AfterPaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 20, + "DistanceXZNear": 1, + "ScaleEndFallDistance": 10, + "ScaleStartFallDistance": 5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.8, + "WidthHalfNear": 1 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 10, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 20, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 1, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.4, + "FriendThroughFrameForPlayer": 1000, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.04 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 9, + "ReduceStartFallDistance": 1.5, + "ValueMax": 550, + "ValueMin": 550 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 0.7, + "InitRadius": 0.7, + "TailID": 0, + "TailLengthMax": 4, + "TailLengthMaxLastTail": -1, + "TailLengthMin": 0.5, + "TailSolidFrame": 1 + }, + "HitEffectBigOrderNum": [0], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 8, + "SpawnSpeed": 2 + }, + "PaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 2.28, + "WidthHalfNear": 2.28 + }, + "RandomRotateYBias": 0, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 1.38975, + "SpawnSpeedGround": 1.4105, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 7 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.1, + "PaintDepthScale": 2, + "PaintWidthHalf": 1.344 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 0.55, + "FirstSplashRateForLengthMin": 0.5, + "SpawnBetweenLength": 3.1, + "SpawnNum": 7 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 0.6, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.4, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 45, + "FallPeriodFirstFrameMin": 25, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 45, + "FallPeriodLastFrameMin": 25, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.08, + "FreeGravityType": "value_0_008" + } + } + ], + "Unit@4.1.0": [ + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": 0, + "AfterPaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 20, + "DistanceXZNear": 1, + "ScaleEndFallDistance": 10, + "ScaleStartFallDistance": 5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.8, + "WidthHalfNear": 1 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 10, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 20, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 1, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.4, + "FriendThroughFrameForPlayer": 1000, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.04 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 9, + "ReduceStartFallDistance": 1.5, + "ValueMax": 550, + "ValueMin": 550 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 0.7, + "InitRadius": 0.7, + "TailID": 0, + "TailLengthMax": 4, + "TailLengthMin": 0.5, + "TailSolidFrame": 1 + }, + "HitEffectBigOrderNum": [0], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 8, + "SpawnSpeed": 2 + }, + "PaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 2.28, + "WidthHalfNear": 2.28 + }, + "RandomRotateYBias": 0, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 1.38975, + "SpawnSpeedGround": 1.4105, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 7 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.1, + "PaintDepthScale": 2, + "PaintWidthHalf": 1.344 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 0.55, + "FirstSplashRateForLengthMin": 0.5, + "SpawnBetweenLength": 3.1, + "SpawnNum": 7 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 0.6, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.4, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 45, + "FallPeriodFirstFrameMin": 25, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 45, + "FallPeriodLastFrameMin": 25, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.08, + "FreeGravityType": "value_0_008" + } + } + ], + "Unit@3.1.0": [ + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": 0, + "AfterPaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 20, + "DistanceXZNear": 1, + "ScaleEndFallDistance": 10, + "ScaleStartFallDistance": 5, + "WidthDepthScaleFall": 1, + "WidthHalfFar": 1.8, + "WidthHalfNear": 1 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 10, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 20, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 1, + "CollisionParam": { + "AfterOffsetEndRadiusForField": 0, + "AfterOffsetEndRadiusForPlayer": 0, + "AfterOffsetInitRadiusForField": 0, + "AfterOffsetInitRadiusForPlayer": 0, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.4, + "FriendThroughFrameForPlayer": 1000, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.04 + }, + "DamageParam": { + "ReduceEndFallDistance": 9, + "ReduceStartFallDistance": 1.5, + "ValueMax": 550, + "ValueMin": 550 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": 0, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 0.7, + "InitRadius": 0.7, + "TailID": 0, + "TailLengthMax": 4, + "TailLengthMin": 0.5, + "TailSolidFrame": 1 + }, + "HitEffectBigOrderNum": [0], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 8, + "SpawnSpeed": 2 + }, + "PaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 2.28, + "WidthHalfNear": 2.28 + }, + "RandomRotateYBias": 0, + "RandomRotateYDegree": 0, + "RandomRotateYOffOrderNum": [], + "SpawnSpeedAir": 1.38975, + "SpawnSpeedGround": 1.4105, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 7 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.1, + "PaintDepthScale": 2, + "PaintWidthHalf": 1.344 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 0.55, + "FirstSplashRateForLengthMin": 0.5, + "SpawnBetweenLength": 3.1, + "SpawnNum": 7 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 0.6, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.4, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 45, + "FallPeriodFirstFrameMin": 25, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 45, + "FallPeriodLastFrameMin": 25, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.08, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "WeaponParam": { + "InkConsume": 0.117, + "InkRecoverStop": 70, + "MoveLmtFrame": 55, + "MoveSpeed": 0.045, + "PostDelayFrame": 25, + "RepeatFrame": 55, + "ShotGuide": { + "Frame": 18 + }, + "SwingLiftFrame": 16 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "GuideYMinusZero": true, + "XRate": 0.3, + "YMinusRate": 0.5, + "YPlusRate": 0.5, + "ZRate": 1 + } + }, + "3050": { + "MainEffectiveRangeUpParam": { + "BaseDistance": 14 + }, + "MainWeaponSetting": {}, + "NearestParam": { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "EndRadiusForPlayer": 0, + "InitRadiusForPlayer": 0 + }, + "PaintDepthScale": 1.2, + "PaintWidthHalf": 2 + }, + "SpawnOffset": { + "X": 0, + "Y": 0.5 + } + }, + "UnitGroupParam": { + "Unit": [ + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": -0.225, + "AfterPaintParam": { + "DepthScaleFar": 1.2, + "DepthScaleNear": 1.3, + "DistanceXZFar": 14, + "DistanceXZNear": 2, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 2.4, + "WidthHalfNear": 1.2 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.585 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 8, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.085, + "AfterOffsetEndRadiusForPlayer": -0.085, + "AfterOffsetInitRadiusForField": -0.0085, + "AfterOffsetInitRadiusForPlayer": -0.0085, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.9, + "EndRadiusForPlayer": 1.12, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.09, + "InitRadiusForPlayer": 0.112 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 480, + "ValueMin": 350 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.16, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 1.4, + "InitRadius": 0, + "TailID": 0, + "TailLengthMax": 4, + "TailLengthMaxLastTail": 1, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [0], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 3.8, + "WidthHalfNear": 4.4 + }, + "RandomRotateYBias": 0.65, + "RandomRotateYDegree": 4.5, + "RandomRotateYOffOrderNum": [0], + "SpawnSpeedAir": 1.79, + "SpawnSpeedGround": 1.85, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": -1, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 4 + } + ], + "SplashParam": [], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.3, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.4, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.585 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": -0.225, + "AfterPaintParam": { + "DepthScaleFar": 1.2, + "DepthScaleNear": 1.3, + "DistanceXZFar": 14, + "DistanceXZNear": 2, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 2, + "WidthHalfNear": 1 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 8, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.065, + "AfterOffsetEndRadiusForPlayer": -0.065, + "AfterOffsetInitRadiusForField": -0.0065, + "AfterOffsetInitRadiusForPlayer": -0.0065, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.7, + "EndRadiusForPlayer": 0.92, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.07, + "InitRadiusForPlayer": 0.092 + }, + "DamageParam": { + "GroupNum": 1, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 420, + "ValueMin": 350 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.14, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 1.2, + "InitRadius": 0, + "TailID": 1, + "TailLengthMax": 4, + "TailLengthMaxLastTail": 1, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 3.2, + "WidthHalfNear": 3.8 + }, + "RandomRotateYBias": 0.65, + "RandomRotateYDegree": 4.5, + "RandomRotateYOffOrderNum": [0], + "SpawnSpeedAir": 1.79, + "SpawnSpeedGround": 1.85, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 3, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 1 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.3, + "PaintDepthScale": 2, + "PaintWidthHalf": 0.7 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 0.9, + "FirstSplashRateForLengthMin": 0.7, + "SpawnBetweenLength": 1.5, + "SpawnNum": 1 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.3, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.4, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 8, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + } + ], + "Unit@10.1.0": [ + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": -0.225, + "AfterPaintParam": { + "DepthScaleFar": 1.2, + "DepthScaleNear": 1.3, + "DistanceXZFar": 14, + "DistanceXZNear": 2, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 2.4, + "WidthHalfNear": 1.2 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.585 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 8, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.085, + "AfterOffsetEndRadiusForPlayer": -0.085, + "AfterOffsetInitRadiusForField": -0.0085, + "AfterOffsetInitRadiusForPlayer": -0.0085, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.9, + "EndRadiusForPlayer": 1, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.09, + "InitRadiusForPlayer": 0.1 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 480, + "ValueMin": 350 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.16, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 1.4, + "InitRadius": 0, + "TailID": 0, + "TailLengthMax": 4, + "TailLengthMaxLastTail": 1, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [0], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 3.8, + "WidthHalfNear": 4.4 + }, + "RandomRotateYBias": 0.65, + "RandomRotateYDegree": 4.5, + "RandomRotateYOffOrderNum": [0], + "SpawnSpeedAir": 1.79, + "SpawnSpeedGround": 1.85, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": -1, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 4 + } + ], + "SplashParam": [], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.3, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.4, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.585 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": -0.225, + "AfterPaintParam": { + "DepthScaleFar": 1.2, + "DepthScaleNear": 1.3, + "DistanceXZFar": 14, + "DistanceXZNear": 2, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 2, + "WidthHalfNear": 1 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 8, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.065, + "AfterOffsetEndRadiusForPlayer": -0.065, + "AfterOffsetInitRadiusForField": -0.0065, + "AfterOffsetInitRadiusForPlayer": -0.0065, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.7, + "EndRadiusForPlayer": 0.8, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.07, + "InitRadiusForPlayer": 0.08 + }, + "DamageParam": { + "GroupNum": 1, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 420, + "ValueMin": 350 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.14, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 1.2, + "InitRadius": 0, + "TailID": 1, + "TailLengthMax": 4, + "TailLengthMaxLastTail": 1, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 3.2, + "WidthHalfNear": 3.8 + }, + "RandomRotateYBias": 0.65, + "RandomRotateYDegree": 4.5, + "RandomRotateYOffOrderNum": [0], + "SpawnSpeedAir": 1.79, + "SpawnSpeedGround": 1.85, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 3, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 1 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.3, + "PaintDepthScale": 2, + "PaintWidthHalf": 0.7 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 0.9, + "FirstSplashRateForLengthMin": 0.7, + "SpawnBetweenLength": 1.5, + "SpawnNum": 1 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.3, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.4, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 8, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + } + ], + "Unit@8.1.0": [ + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": -0.225, + "AfterPaintParam": { + "DepthScaleFar": 1.2, + "DepthScaleNear": 1.3, + "DistanceXZFar": 14, + "DistanceXZNear": 2, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 2.4, + "WidthHalfNear": 1.2 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.585 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 8, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.085, + "AfterOffsetEndRadiusForPlayer": -0.085, + "AfterOffsetInitRadiusForField": -0.0085, + "AfterOffsetInitRadiusForPlayer": -0.0085, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.9, + "EndRadiusForPlayer": 1, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.09, + "InitRadiusForPlayer": 0.1 + }, + "DamageParam": { + "GroupNum": 0, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 480, + "ValueMin": 350 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.16, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 1.4, + "InitRadius": 0, + "TailID": 0, + "TailLengthMax": 4, + "TailLengthMaxLastTail": 1, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [0], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 3.8, + "WidthHalfNear": 4.4 + }, + "RandomRotateYBias": 0.65, + "RandomRotateYDegree": 4.5, + "RandomRotateYOffOrderNum": [0], + "SpawnSpeedAir": 1.7, + "SpawnSpeedGround": 1.85, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 0, + "SplashArrayOrderNum": -1, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 4 + } + ], + "SplashParam": [], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.3, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.4, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 0, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2.585 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + }, + { + "AddSpawnSpeedYRateByXZ": 0.1, + "AfterOffsetDelayFrame": 1, + "AfterOffsetSpawnSpeed": -0.225, + "AfterPaintParam": { + "DepthScaleFar": 1.2, + "DepthScaleNear": 1.3, + "DistanceXZFar": 14, + "DistanceXZNear": 2, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 2, + "WidthHalfNear": 1 + }, + "AfterWallDropCollisionPaintPrm": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "AfterWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "BaseRotateYDegree": 0, + "BulletNum": 8, + "CollisionParam": { + "AfterOffsetEndRadiusForField": -0.065, + "AfterOffsetEndRadiusForPlayer": -0.065, + "AfterOffsetInitRadiusForField": -0.0065, + "AfterOffsetInitRadiusForPlayer": -0.0065, + "ChangeFrameForField": 4, + "ChangeFrameForPlayer": 5, + "EndRadiusForField": 0.7, + "EndRadiusForPlayer": 0.8, + "FriendThroughFrameForPlayer": 2, + "InitRadiusForField": 0.07, + "InitRadiusForPlayer": 0.08 + }, + "DamageParam": { + "GroupNum": 1, + "ReduceEndFallDistance": 7.625, + "ReduceStartFallDistance": 1.5, + "ValueMax": 420, + "ValueMin": 350 + }, + "DrawSizeParam": { + "AfterOffsetEndRadius": -0.14, + "AfterOffsetInitRadius": 0, + "ChangeFrame": 0, + "EndRadius": 1.2, + "InitRadius": 0, + "TailID": 1, + "TailLengthMax": 4, + "TailLengthMaxLastTail": 1, + "TailLengthMin": 0.5, + "TailSolidFrame": 5 + }, + "HitEffectBigOrderNum": [], + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.12, + "FreeGravity": 0.05, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 2, + "SpawnSpeed": 0 + }, + "PaintParam": { + "DepthScaleFar": 1, + "DepthScaleNear": 1, + "DistanceXZFar": 15, + "DistanceXZNear": 5, + "ScaleEndFallDistance": 12, + "ScaleStartFallDistance": 1.5, + "WidthDepthScaleFall": 0.7, + "WidthHalfFar": 3.2, + "WidthHalfNear": 3.8 + }, + "RandomRotateYBias": 0.65, + "RandomRotateYDegree": 4.5, + "RandomRotateYOffOrderNum": [0], + "SpawnSpeedAir": 1.7, + "SpawnSpeedGround": 1.85, + "SplashAndSplashWallHitSpawnPrm": { + "Combination": [ + { + "OrderNum": 3, + "SplashArrayOrderNum": 0, + "SplashWallHitArrayOrderNum": 0, + "TotalNum": 1 + } + ], + "SplashParam": [ + { + "DrawSizeCollisionPaintParam": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.15, + "EndRadiusForPlayer": 0, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.15, + "InitRadiusForPlayer": 0 + }, + "DrawRadius": 0.3, + "PaintDepthScale": 2, + "PaintWidthHalf": 0.7 + }, + "SpawnParam": { + "FirstSplashRateForLengthMax": 0.9, + "FirstSplashRateForLengthMin": 0.7, + "SpawnBetweenLength": 1.5, + "SpawnNum": 1 + } + } + ], + "SplashWallHitParam": [ + { + "SpawnParam": { + "BetweenDistance": 1.3, + "DistanceXZRate": 1.333333, + "FirstDistance": 2.4, + "VelocityMinusYRate": 0.45 + }, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.4, + "PaintRadiusShock": 0.9 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 20, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.04, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "SplashSlosherHitParam": [], + "UnitDelayFrame": 8, + "WallDropCollisionPaintParam": { + "FallPeriodFirstSecondTargetAlp": 1, + "PaintRadiusFall": 1, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 2 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.05, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 20, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + } + } + ] + }, + "WeaponParam": { + "FrameOffsetDegreeRate": 1, + "FrameOffsetMaxDegree": 4.5, + "InkConsume": 0.09, + "InkRecoverStop": 50, + "MoveLmtFrame": 45, + "MoveSpeed": 0.04, + "PostDelayFrame": 6, + "RepeatFrame": 45, + "ShotGuide": { + "BulletOrderNumInUnit": 0, + "Frame": 13, + "UnitOrderNum": 0 + }, + "SwingLiftFrame": 16, + "InkConsume@5.2.0": 0.1 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "GuideYMinusZero": true, + "YMinusRate": 1, + "ZRate": 2 + } + }, + "4000": { + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.26, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.26, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 19, + "ReduceStartFrame": 11, + "ValueFullChargeMax": 320, + "ValueMax": 320, + "ValueMin": 160 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "Overwrite_MoveVelRt_Shot_High": 1.4, + "Overwrite_MoveVelRt_Shot_Low": 1, + "Overwrite_MoveVelRt_Shot_Mid": 1.2 + }, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 1.105, + "GoStraightToBrakeStateFrame": 8, + "SpawnSpeed": 1.05, + "SpawnSpeedFirstLastAndSecond": 1.5, + "SpawnSpeedRandomBias": 0.2, + "SpawnSpeedRandomRate": 0.1 + }, + "PaintParam": { + "DepthScaleMax": 1.83, + "DepthScaleMaxBreakFree": 1.67, + "DepthScaleMin": 1.17, + "DepthScaleMinBreakFree": 1.17, + "DistanceMiddle": 1, + "DistanceNear": 1, + "HeightUseDepthScaleMaxBreakFree": 3, + "HeightUseDepthScaleMinBreakFree": 10, + "WidthHalfFar": 2.16, + "WidthHalfMiddle": 2.28, + "WidthHalfNear": 2.28 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "DepthScaleMax": 1.4, + "DepthScaleMin": 1.4, + "WidthHalf": 1.449, + "WidthHalfNearest": 1.7388 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [3], + "SpawnBetweenLength": 10, + "SpawnNearestLength": 0, + "SpawnNum": 1.6, + "SplitNum": 6, + "ForceSpawnNearestAddNumArray@6.1.0": [], + "SplitNum@6.1.0": 5 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.06 + }, + "WeaponParam": { + "BurstAimMoveFrame": 0, + "ChargeFrame_First": 18, + "ChargeFrame_Second": 27, + "InkConsume": 0.15, + "InkEmptyChargeTimes": 6, + "InkRecoverStop": 30, + "JumpGnd_Charge": 0.1, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.3, + "Jump_DegSwerve": 8, + "MaxShootingFrame_First": 42, + "MaxShootingFrame_Second": 84, + "MoveSpeed": 0.086, + "MoveSpeed_Charge": 0.072, + "PitchDegBias": 0.4, + "PitchDegSwerve": 1.2, + "PostDelayFrame": 4, + "PreDelayFrame_SquidShot": 4, + "RepeatFrame": 4, + "ShotGuideFrame": 11, + "Stand_DegBiasMax": 0.3, + "Stand_DegBiasMin": 0.1, + "Stand_DegSwerve": 4, + "VelGnd_Bias_Charge": 0.9, + "VelGnd_DownRt_Charge": 0.05, + "ChargeFrame_First@9.2.0": 20, + "ChargeFrame_Second@9.2.0": 30, + "InkConsume@5.0.0": 0.1725, + "MaxShootingFrame_First@3.0.0": 36, + "MaxShootingFrame_Second@3.0.0": 72 + }, + "spl__BulletShooterTailLengthParam": { + "MaxLengthFrame": 3 + }, + "spl__SpawnBulletAdditionMovePlayerParam": {} + }, + "4010": { + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.225, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.225, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 19, + "ReduceStartFrame": 11, + "ValueFullChargeMax": 300, + "ValueMax": 300, + "ValueMin": 150 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "Overwrite_MoveVelRt_Shot_High": 1.35, + "Overwrite_MoveVelRt_Shot_Low": 1, + "Overwrite_MoveVelRt_Shot_Mid": 1.175 + }, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 1.5105, + "GoStraightToBrakeStateFrame": 8, + "SpawnSpeed": 1.05, + "SpawnSpeedFirstLastAndSecond": 2.1, + "SpawnSpeedRandomBias": 0.2, + "SpawnSpeedRandomRate": 0.12 + }, + "PaintParam": { + "DepthScaleMax": 1.83, + "DepthScaleMaxBreakFree": 1.67, + "DepthScaleMin": 1.17, + "DepthScaleMinBreakFree": 1.17, + "DistanceMiddle": 1.1, + "HeightUseDepthScaleMaxBreakFree": 3, + "WidthHalfFar": 2.102, + "WidthHalfMiddle": 2.226, + "WidthHalfNear": 2.226, + "WidthHalfFar@11.1.0": 2.2848, + "WidthHalfFar@10.1.0": 2.04, + "WidthHalfMiddle@11.1.0": 2.4192, + "WidthHalfMiddle@10.1.0": 2.16, + "WidthHalfNear@11.1.0": 2.4192, + "WidthHalfNear@10.1.0": 2.16 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "DepthScaleMax": 1.6, + "DepthScaleMin": 1.6, + "WidthHalf": 1.493, + "WidthHalfNearest": 1.85472, + "WidthHalf@11.1.0": 1.623, + "WidthHalf@10.1.0": 1.449 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [], + "SpawnBetweenLength": 20, + "SpawnNearestLength": 0, + "SpawnNum": 1, + "SplitNum": 8 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.06 + }, + "WeaponParam": { + "ChargeFrame_First": 48, + "ChargeFrame_Second": 72, + "InkConsume": 0.225, + "InkRecoverStop": 40, + "JumpGnd_Charge": 0.08, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.3, + "Jump_DegSwerve": 7, + "MaxShootingFrame_First": 80, + "MaxShootingFrame_Second": 160, + "MoveSpeed": 0.07, + "MoveSpeed_Charge": 0.062, + "PitchDegBias": 0.4, + "PitchDegSwerve": 1.6, + "PostDelayFrame": 4, + "PreDelayFrame_SquidShot": 4, + "RepeatFrame": 4, + "ShotGuideFrame": 11, + "Stand_DegBiasMax": 0.3, + "Stand_DegBiasMin": 0.1, + "Stand_DegSwerve": 3.3, + "VelGnd_Bias_Charge": 0.9, + "VelGnd_DownRt_Charge": 0.05, + "MaxShootingFrame_First@9.2.0": 72, + "MaxShootingFrame_Second@9.2.0": 144 + }, + "spl__BulletShooterTailLengthParam": { + "MaxLengthFrame": 3 + }, + "spl__SpawnBulletAdditionMovePlayerParam": {} + }, + "4020": { + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.225, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.225, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 19, + "ReduceStartFrame": 11, + "ValueFullChargeMax": 400, + "ValueMax": 320, + "ValueMin": 160 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "Overwrite_ConsumeRt_Main_High": 0.5, + "Overwrite_ConsumeRt_Main_Low": 1, + "Overwrite_ConsumeRt_Main_Mid": 0.7, + "Overwrite_MoveVelRt_Shot_High": 1.35, + "Overwrite_MoveVelRt_Shot_Low": 1, + "Overwrite_MoveVelRt_Shot_Mid": 1.175, + "WeaponSpeedType": "Slow" + }, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 1.94, + "GoStraightToBrakeStateFrame": 8, + "SpawnSpeed": 1.05, + "SpawnSpeedFirstLastAndSecond": 2.4, + "SpawnSpeedRandomBias": 0.2, + "SpawnSpeedRandomRate": 0.14 + }, + "PaintParam": { + "DepthScaleMax": 1.83, + "DepthScaleMaxBreakFree": 1.67, + "DepthScaleMin": 1.17, + "DepthScaleMinBreakFree": 1.17, + "DistanceFar": 25, + "DistanceMiddle": 1.1, + "HeightUseDepthScaleMaxBreakFree": 3, + "WidthHalfFar": 1.92, + "WidthHalfMiddle": 2.1, + "WidthHalfNear": 2.1 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "DepthScaleMax": 1.5, + "DepthScaleMin": 1.5, + "WidthHalf": 1.288, + "WidthHalfNearest": 1.5456 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [], + "SpawnBetweenLength": 23.5, + "SpawnNearestLength": 0, + "SpawnNum": 1, + "SplitNum": 8 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.06 + }, + "WeaponParam": { + "ChargeFrame_First": 120, + "ChargeFrame_Second": 150, + "InkConsume": 0.35, + "InkEmptyChargeTimes": 3, + "InkRecoverStop": 40, + "JumpGnd_Charge": 0.06, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.3, + "Jump_DegSwerve": 6, + "MaxShootingFrame_First": 130, + "MaxShootingFrame_Second": 260, + "MoveSpeed": 0.06, + "MoveSpeed_Charge": 0.044, + "PitchDegBias": 0.4, + "PitchDegSwerve": 2, + "PostDelayFrame": 4, + "PreDelayFrame_SquidShot": 4, + "RepeatFrame": 4, + "ShotGuideFrame": 11, + "Stand_DegBiasMax": 0.3, + "Stand_DegBiasMin": 0.1, + "Stand_DegSwerve": 3, + "VelGnd_Bias_Charge": 0.9, + "VelGnd_DownRt_Charge": 0.05, + "MaxShootingFrame_First@5.0.0": 120, + "MaxShootingFrame_Second@5.0.0": 240, + "MoveSpeed_Charge@5.0.0": 0.04 + }, + "spl__BulletShooterTailLengthParam": { + "MaxLengthFrame": 3 + }, + "spl__SpawnBulletAdditionMovePlayerParam": {} + }, + "4030": { + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.225, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.225, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 19, + "ReduceStartFrame": 11, + "ValueFullChargeMax": 280, + "ValueMax": 280, + "ValueMin": 140 + }, + "MainEffectiveRangeUpParam": { + "ValidMinCharge": true + }, + "MainWeaponSetting": { + "Overwrite_MoveVelRt_Shot_High": 1.25, + "Overwrite_MoveVelRt_Shot_Low": 1, + "Overwrite_MoveVelRt_Shot_Mid": 1.125 + }, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 1.027, + "GoStraightToBrakeStateFrame": 8, + "SpawnSpeed": 1.1, + "SpawnSpeedFirstLastAndSecond": 1.1, + "SpawnSpeedRandomBias": 0.2, + "SpawnSpeedRandomRate": 0.12 + }, + "PaintParam": { + "DepthScaleMax": 1.83, + "DepthScaleMaxBreakFree": 1.67, + "DepthScaleMin": 1.17, + "DepthScaleMinBreakFree": 1.17, + "DistanceMiddle": 1.1, + "HeightUseDepthScaleMaxBreakFree": 3, + "WidthHalfFar": 2.16, + "WidthHalfMiddle": 2.28, + "WidthHalfNear": 2.28 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "DepthScaleMax": 1.6, + "DepthScaleMin": 1.6, + "WidthHalf": 1.472, + "WidthHalfNearest": 1.7664 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [], + "SpawnBetweenLength": 11, + "SpawnNearestLength": 0, + "SpawnNum": 1, + "SplitNum": 6 + }, + "VariableDamageParam": { + "ReduceEndFrame": 19, + "ReduceStartFrame": 11, + "ValueFullChargeMax": 300, + "ValueMax": 300, + "ValueMin": 150 + }, + "VariableMoveParam": { + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 8, + "SpawnSpeed": 2.21915, + "SpawnSpeedFirstLastAndSecond": 2.21915, + "SpawnSpeedRandomBias": 0.2, + "SpawnSpeedRandomRate": 0.03 + }, + "VariablePaintParam": { + "DepthScaleMax": 1.83, + "DepthScaleMaxBreakFree": 1.67, + "DepthScaleMin": 1.17, + "DepthScaleMinBreakFree": 1.17, + "DistanceFar": 25, + "DistanceMiddle": 1, + "DistanceNear": 1, + "HeightUseDepthScaleMaxBreakFree": 3, + "WidthHalfFar": 1.66, + "WidthHalfMiddle": 1.88, + "WidthHalfNear": 1.88 + }, + "VariableShotParam": { + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.4, + "Jump_DegSwerve": 4, + "MoveSpeed": 0.05, + "PitchDegBias": 0.2, + "PitchDegSwerve": 0.75, + "RepeatFrame": 5, + "Stand_DegBiasMax": 0.4, + "Stand_DegSwerve": 1.5, + "VariableInterpolatedFrame": 10, + "PitchDegSwerve@6.0.0": 0.5, + "Stand_DegSwerve@6.0.0": 1 + }, + "VariableSplashPaintParam": { + "DepthScaleMax": 1.4, + "DepthScaleMin": 1.4, + "WidthHalf": 1.265, + "WidthHalfNearest": 1.518 + }, + "VariableSplashSpawnParam": { + "SpawnBetweenLength": 24, + "SpawnNum": 1, + "SplitNum": 6 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.06 + }, + "WeaponParam": { + "ChargeFrame_First": 1, + "ChargeFrame_Second": 100, + "EnableRecharge": true, + "InkConsume": 0.25, + "InkEmptyChargeTimes": 6, + "InkRecoverStop": 40, + "JumpGnd_Charge": 0.1, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.4, + "Jump_DegSwerve": 12, + "MaxShootingFrame_First": 1, + "MaxShootingFrame_Second": 200, + "MoveSpeed": 0.086, + "MoveSpeed_Charge": 0.086, + "PitchDegBias": 0.4, + "PitchDegSwerve": 2.5, + "PostDelayFrame": 4, + "PreDelayFrame_SquidShot": 4, + "RepeatFrame": 3, + "ShotGuideFrame": 11, + "Stand_DegBiasMax": 0.4, + "Stand_DegBiasMin": 0.1, + "Stand_DegSwerve": 6, + "VelGnd_Bias_Charge": 0.9, + "VelGnd_DownRt_Charge": 0.05 + }, + "spl__BulletShooterTailLengthParam": { + "MaxLengthFrame": 3 + }, + "spl__SpawnBulletAdditionMovePlayerParam": {} + }, + "4040": { + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.235, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.235, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 15, + "ReduceStartFrame": 7, + "ValueFullChargeMax": 320, + "ValueMax": 320, + "ValueMin": 160 + }, + "MainEffectiveRangeUpParam": { + "ValidMinCharge": true + }, + "MainWeaponSetting": { + "Overwrite_MoveVelRt_Shot_High": 1.3, + "Overwrite_MoveVelRt_Shot_Low": 1, + "Overwrite_MoveVelRt_Shot_Mid": 1.15 + }, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 1.8215, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 4.4333, + "SpawnSpeedFirstLastAndSecond": 4.4333, + "SpawnSpeedRandomBias": 0.2, + "SpawnSpeedRandomRate": 0.11 + }, + "PaintParam": { + "DepthScaleMax": 1.83, + "DepthScaleMaxBreakFree": 1.67, + "DepthScaleMin": 1.17, + "DepthScaleMinBreakFree": 1.17, + "DistanceMiddle": 1.1, + "HeightUseDepthScaleMaxBreakFree": 3, + "WidthHalfFar": 1.68, + "WidthHalfMiddle": 1.98, + "WidthHalfNear": 1.98 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "DepthScaleMax": 1.4, + "DepthScaleMin": 1.3, + "WidthHalf": 1.449, + "WidthHalfNearest": 2.10105 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [4], + "SpawnBetweenLength": 12, + "SpawnNearestLength": 0, + "SpawnNum": 1.5, + "SplitNum": 8 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.06 + }, + "WeaponKeepChargeParam": { + "EnableKeepChargeAnytime": true, + "KeepChargeFullFrame": 200, + "KeepChargePreDelayFrame": 10, + "KeepChargePreDelayFrame_Pre": 5 + }, + "WeaponParam": { + "ChargeFrame_First": 38, + "ChargeFrame_Second": 76, + "EnableRecharge": true, + "InkConsume": 0.15, + "InkEmptyChargeTimes": 5, + "InkRecoverStop": 40, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.3, + "Jump_DegSwerve": 3.6, + "MaxShootingFrame_First": 60, + "MaxShootingFrame_Second": 120, + "MoveSpeed": 0.07, + "MoveSpeed_Charge": 0.04, + "PitchDegBias": 0.4, + "PitchDegSwerve": 1.3, + "PostDelayFrame": 4, + "PreDelayFrame_SquidShot": 4, + "RepeatFrame": 4, + "ShotGuideFrame": 7, + "Stand_DegBiasMax": 0.3, + "Stand_DegBiasMin": 0.1, + "Stand_DegSwerve": 3.3, + "VelGnd_Bias_Charge": 0.9, + "VelGnd_DownRt_Charge": 0.05, + "MaxShootingFrame_First@2.0.0": 52, + "MaxShootingFrame_Second@2.0.0": 104 + }, + "spl__BulletShooterTailLengthParam": { + "MaxLengthFrame": 3 + }, + "spl__SpawnBulletAdditionMovePlayerParam": {} + }, + "4050": { + "CollisionParam": { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.235, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.235, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 19, + "ReduceStartFrame": 11, + "ValueFullChargeMax": 260, + "ValueMax": 260, + "ValueMin": 130 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "Overwrite_ConsumeRt_Main_High": -1, + "Overwrite_ConsumeRt_Main_Low": -1, + "Overwrite_ConsumeRt_Main_Mid": -1, + "Overwrite_MoveVelRt_Shot_High": 1.4, + "Overwrite_MoveVelRt_Shot_Low": 1, + "Overwrite_MoveVelRt_Shot_Mid": 1.2, + "WeaponSpeedType": "Mid" + }, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 1.105, + "GoStraightToBrakeStateFrame": 8, + "SpawnSpeed": 1.05, + "SpawnSpeedFirstLastAndSecond": 1.8, + "SpawnSpeedRandomBias": 0.2, + "SpawnSpeedRandomRate": 0.05 + }, + "PaintParam": { + "DepthScaleMax": 2.2, + "DepthScaleMaxBreakFree": 2.2, + "DepthScaleMin": 1.4, + "DepthScaleMinBreakFree": 1.4, + "DistanceFar": 20, + "DistanceMiddle": 1, + "DistanceNear": 1, + "HeightUseDepthScaleMaxBreakFree": 3, + "WidthHalfFar": 1.75, + "WidthHalfMiddle": 1.85, + "WidthHalfNear": 1.85 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "DepthScaleMax": 1.6, + "DepthScaleMin": 1.6, + "WidthHalf": 1.594, + "WidthHalfNearest": 1.913 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [5], + "SpawnBetweenLength": 24, + "SpawnNearestLength": 0, + "SpawnNum": 0.6, + "SplitNum": 10, + "ForceSpawnNearestAddNumArray@5.2.0": [], + "SpawnBetweenLength@8.1.0": 22, + "SpawnBetweenLength@5.2.0": 30, + "SpawnNum@8.1.0": 0.75, + "SpawnNum@5.2.0": 0.5 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 30, + "FallPeriodFirstFrameMin": 15, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 30, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.06 + }, + "WeaponFullChargeParam": { + "MaxShootingFrame_Second": 180, + "RepeatFrame": 3 + }, + "WeaponParam": { + "ChargeFrame_First": 60, + "ChargeFrame_Second": 120, + "EnableRecharge": false, + "InkConsume": 0.2, + "InkEmptyChargeTimes": 3, + "InkRecoverStop": 40, + "JumpGnd_Charge": 0.1, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.3, + "Jump_DegSwerve": 6, + "MaxShootingFrame_First": 120, + "MaxShootingFrame_Second": 240, + "MoveSpeed": 0.086, + "MoveSpeed_Charge": 0.072, + "PitchDegBias": 0.4, + "PitchDegSwerve": 2.5, + "PostDelayFrame": 4, + "PreDelayFrame_SquidShot": 4, + "RepeatFrame": 4, + "ShotGuideFrame": 11, + "Stand_DegBiasMax": 0.3, + "Stand_DegBiasMin": 0.1, + "Stand_DegSwerve": 3, + "VelGnd_Bias_Charge": 0.9, + "VelGnd_DownRt_Charge": 0.05 + }, + "spl__BulletShooterTailLengthParam": { + "MaxLengthFrame": 3 + }, + "spl__SpawnBulletAdditionMovePlayerParam": {} + }, + "5000": { + "CollisionLapOverParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.335, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.335, + "EndRadiusForPlayer@10.1.0": 0.25, + "InitRadiusForPlayer@10.1.0": 0.25 + }, + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.335, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.335, + "EndRadiusForPlayer@10.1.0": 0.25, + "InitRadiusForPlayer@10.1.0": 0.25 + }, + "DamageParam": { + "ReduceEndFrame": 15, + "ReduceStartFrame": 7, + "ValueMax": 360, + "ValueMin": 180 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "WeaponSpeedType": "Fast" + }, + "MoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 1.81641, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 1.8334, + "GoStraightStateEndMaxSpeed@9.2.0": 1.7635, + "SpawnSpeed@9.2.0": 1.78 + }, + "PaintParam": { + "DegreeUseDepthScaleMin": 35, + "DepthScaleMax": 2.24, + "DepthScaleMaxBreakFree": 2.24, + "DepthScaleMin": 1.31, + "DepthScaleMinBreakFree": 1.12, + "DistanceMiddle": 1.1, + "WidthHalfFar": 1.77, + "WidthHalfMiddle": 1.93, + "WidthHalfNear": 1.93 + }, + "SideStepParam": { + "InkConsume": 0.05, + "InkRecoverStop": 50, + "MoveDist": 3, + "MoveFrame": 8, + "SlipMoveDistAir": 0.6, + "SlipMoveDistGnd": 0.6, + "SlipMoveFrame": 30, + "SplashSlideParam": { + "MoveLength": 4, + "PaintWidthHalf": 1.8 + }, + "UnrelaxFrameMove": 28, + "UnrelaxFrameMove_Last": 28, + "UnrelaxFrameNoSideStep": 28, + "UnrelaxFrameNoSideStep_Last": 28, + "UnrelaxFrameNoSquid": 28, + "UnrelaxFrameNoSquid_Last": 28, + "UnrelaxFrameOneMuzzle": 28, + "UnrelaxFrameOneMuzzle_Last": 28 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "DepthScaleMin": 1, + "WidthHalf": 1.5525, + "WidthHalfNearest": 2.1735 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [], + "SpawnBetweenLength": 11, + "SpawnNearestLength": 1, + "SpawnNum": 1, + "SplitNum": 5 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "WeaponParam": { + "InkConsume": 0.00663, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.4, + "Jump_DegSwerve": 11.66, + "LapOver_DegSwerve": 3.89, + "LapOver_RepeatFrame": 4, + "MoveSpeed": 0.084, + "RepeatFrame": 5, + "ShotGuideFrame": 7, + "Stand_DegBiasDecrease": 0.005, + "Stand_DegBiasKf": 0.03, + "Stand_DegBiasMax": 0.4, + "Stand_DegBiasMin": 0.05, + "Stand_DegSwerve": 6.8, + "Jump_DegSwerve@9.2.0": 12, + "LapOver_DegSwerve@9.2.0": 4, + "MoveSpeed@7.1.0": 0.08, + "Stand_DegSwerve@9.2.0": 7 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "5010": { + "CollisionLapOverParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.335, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.335, + "EndRadiusForPlayer@10.1.0": 0.25, + "InitRadiusForPlayer@10.1.0": 0.25 + }, + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.31, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.31, + "EndRadiusForPlayer@10.1.0": 0.225, + "EndRadiusForPlayer@9.2.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.225, + "InitRadiusForPlayer@9.2.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 15, + "ReduceStartFrame": 7, + "ValueMax": 300, + "ValueMin": 150 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": {}, + "MoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 2.3425, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 2.37 + }, + "PaintParam": { + "DepthScaleMax": 2.24, + "DepthScaleMaxBreakFree": 2.24, + "DepthScaleMin": 1.31, + "DepthScaleMinBreakFree": 1.12, + "DistanceMiddle": 1.1, + "WidthHalfFar": 1.66, + "WidthHalfMiddle": 1.71, + "WidthHalfNear": 1.71 + }, + "SideStepParam": { + "InkConsume": 0.07, + "MoveFrame": 12, + "SplashSlideParam": { + "PaintWidthHalf": 1.8 + }, + "UnrelaxFrameMove": 32, + "UnrelaxFrameMove_Last": 32, + "UnrelaxFrameNoSideStep": 32, + "UnrelaxFrameNoSideStep_Last": 32, + "UnrelaxFrameNoSquid": 32, + "UnrelaxFrameNoSquid_Last": 32, + "UnrelaxFrameOneMuzzle": 32, + "UnrelaxFrameOneMuzzle_Last": 32 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "DepthScaleMin": 1, + "WidthHalf": 1.55825, + "WidthHalfNearest": 2.18155 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [], + "SpawnBetweenLength": 14, + "SpawnNearestLength": 1, + "SpawnNum": 1, + "SplitNum": 7 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "WeaponParam": { + "InkConsume": 0.0072, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.4, + "Jump_DegSwerve": 7.5, + "LapOver_DegSwerve": 0, + "LapOver_RepeatFrame": 4, + "MoveSpeed": 0.08, + "RepeatFrame": 5, + "ShotGuideFrame": 7, + "Stand_DegBiasDecrease": 0.005, + "Stand_DegBiasKf": 0.01, + "Stand_DegBiasMin": 0.01, + "Stand_DegSwerve": 2 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "5020": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.285, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.285, + "EndRadiusForPlayer@10.1.0": 0.25, + "InitRadiusForPlayer@10.1.0": 0.25 + }, + "DamageLapOverParam": { + "ReduceEndFrame": 40, + "ReduceStartFrame": 7, + "ValueMax": 525, + "ValueMin": 263, + "ReduceEndFrame@5.0.0": 15 + }, + "DamageParam": { + "ReduceEndFrame": 40, + "ReduceStartFrame": 7, + "ValueMax": 360, + "ValueMin": 180, + "ReduceEndFrame@5.0.0": 15 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": {}, + "MoveLapOverParam": { + "GoStraightStateEndMaxSpeed": 3.197, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 3.2 + }, + "MoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 2.8115, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 2.85 + }, + "PaintParam": { + "DepthScaleMax": 2.24, + "DepthScaleMaxBreakFree": 2.24, + "DepthScaleMin": 1.31, + "DepthScaleMinBreakFree": 1.12, + "DistanceMiddle": 1.1, + "WidthHalfFar": 1.88, + "WidthHalfMiddle": 2, + "WidthHalfNear": 2, + "WidthHalfFar@6.1.0": 1.71, + "WidthHalfMiddle@6.1.0": 1.82, + "WidthHalfNear@6.1.0": 1.82 + }, + "SideStepParam": { + "InkConsume": 0.08, + "SlipMoveDistAir": 1.2, + "SlipMoveDistGnd": 1.2, + "SplashSlideParam": { + "PaintWidthHalf": 2 + }, + "UnrelaxFrameMove": 40, + "UnrelaxFrameMove_Last": 40, + "UnrelaxFrameNoSideStep": 40, + "UnrelaxFrameNoSideStep_Last": 40, + "UnrelaxFrameNoSquid": 40, + "UnrelaxFrameNoSquid_Last": 40, + "UnrelaxFrameNoWeapon": 8, + "UnrelaxFrameNoWeapon_Last": 8, + "UnrelaxFrameOneMuzzle": 40, + "UnrelaxFrameOneMuzzle_Last": 40 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "DepthScaleMin": 1, + "WidthHalf": 1.518, + "WidthHalfNearest": 2.1252 + }, + "SplashSpawnLapOverParam": { + "SpawnBetweenLength": 7, + "SpawnNearestLength": 1, + "SpawnNum": 3, + "SplitNum": 5 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [], + "SpawnBetweenLength": 7, + "SpawnNearestLength": 1, + "SpawnNum": 2, + "SplitNum": 5 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "WeaponParam": { + "InkConsume": 0.014, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.4, + "Jump_DegSwerve": 8, + "LapOver_DegSwerve": 3, + "LapOver_RepeatFrame": 9, + "MoveSpeed": 0.06, + "PreDelayFrame_SquidShot": 4, + "RepeatFrame": 9, + "ShotGuideFrame": 7, + "Stand_DegBiasDecrease": 0.005, + "Stand_DegBiasKf": 0.03, + "Stand_DegBiasMin": 0.03, + "Stand_DegSwerve": 3.2 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "5030": { + "CollisionLapOverParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.285, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.285, + "EndRadiusForPlayer@10.1.0": 0.25, + "InitRadiusForPlayer@10.1.0": 0.25 + }, + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.235, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.235, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 25, + "ReduceStartFrame": 9, + "ValueMax": 280, + "ValueMin": 140 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": {}, + "MoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 2.2698, + "GoStraightToBrakeStateFrame": 5, + "SpawnSpeed": 2.3 + }, + "PaintParam": { + "DepthScaleMax": 2.24, + "DepthScaleMaxBreakFree": 2.24, + "DepthScaleMin": 1.31, + "DepthScaleMinBreakFree": 1.12, + "DistanceMiddle": 1.1, + "WidthHalfFar": 1.77, + "WidthHalfMiddle": 2.11, + "WidthHalfNear": 2.11 + }, + "SideStepParam": { + "InkConsume": 0.08, + "InkRecoverStop": 60, + "MoveDist": 3.5, + "MoveFrame": 12, + "SlipMoveFrame": 45, + "SplashSlideParam": { + "MoveLength": 4.5, + "PaintWidthHalf": 1.8 + }, + "UnrelaxFrameMove": 8, + "UnrelaxFrameMove_Last": 8, + "UnrelaxFrameNoWeapon": 8, + "UnrelaxFrameNoWeapon_Last": 8 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "DepthScaleMin": 1, + "WidthHalf": 1.38, + "WidthHalfNearest": 1.932 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [], + "SpawnBetweenLength": 9, + "SpawnNearestLength": 1.1, + "SpawnNum": 2, + "SplitNum": 8 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "WeaponParam": { + "InkConsume": 0.012, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.4, + "Jump_DegSwerve": 8, + "LapOver_DegSwerve": 2, + "LapOver_RepeatFrame": 6, + "MoveSpeed": 0.072, + "RepeatFrame": 6, + "ShotGuideFrame": 9, + "Stand_DegBiasDecrease": 0.01, + "Stand_DegBiasKf": 0.02, + "Stand_DegBiasMax": 0.3, + "Stand_DegBiasMin": 0.04, + "Stand_DegSwerve": 4 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "5040": { + "CollisionLapOverParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.31, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.31, + "EndRadiusForPlayer@10.1.0": 0.25, + "InitRadiusForPlayer@10.1.0": 0.25 + }, + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.26, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.26, + "EndRadiusForPlayer@10.1.0": 0.2, + "InitRadiusForPlayer@10.1.0": 0.2 + }, + "DamageParam": { + "ReduceEndFrame": 16, + "ReduceStartFrame": 8, + "ValueMax": 280, + "ValueMin": 140 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": {}, + "MoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 2.631, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 2.637, + "GoStraightStateEndMaxSpeed@10.1.0": 2.205, + "GoStraightToBrakeStateFrame@10.1.0": 4, + "SpawnSpeed@10.1.0": 2.21 + }, + "PaintParam": { + "DepthScaleMax": 2.18, + "DepthScaleMaxBreakFree": 2.18, + "DepthScaleMin": 1.27, + "DepthScaleMinBreakFree": 1.09, + "DistanceMiddle": 1.1, + "WidthHalfFar": 1.71, + "WidthHalfMiddle": 1.76, + "WidthHalfNear": 1.76 + }, + "SideStepParam": { + "ChargeFrame": 5, + "InkConsume": 0.03, + "IsShootableInMove": true, + "MoveDist": 3.5, + "RepeatCnt": 4, + "SplashSlideParam": { + "PaintWidthHalf": 1.8 + }, + "UnrelaxFrameMove": 45, + "UnrelaxFrameMove_Last": 45, + "UnrelaxFrameNoSideStep": 45, + "UnrelaxFrameNoSideStep_Last": 45, + "UnrelaxFrameNoSquid": 45, + "UnrelaxFrameNoSquid_Last": 45, + "UnrelaxFrameNoWeapon": 8, + "UnrelaxFrameNoWeapon_Last": 8, + "UnrelaxFrameOneMuzzle": 45, + "UnrelaxFrameOneMuzzle_Last": 45 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "DepthScaleMin": 1, + "WidthHalf": 1.541, + "WidthHalfNearest": 2.1574 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [], + "SpawnBetweenLength": 13.5, + "SpawnNearestLength": 1, + "SpawnNum": 1.2, + "SplitNum": 7 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "WeaponParam": { + "InkConsume": 0.008, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.4, + "Jump_DegSwerve": 12.8, + "LapOver_DegSwerve": 2.7, + "LapOver_RepeatFrame": 5, + "MoveSpeed": 0.072, + "RepeatFrame": 6, + "ShotGuideFrame": 8, + "Stand_DegBiasDecrease": 0.005, + "Stand_DegBiasKf": 0.04, + "Stand_DegBiasMin": 0.04, + "Stand_DegSwerve": 7.4 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "5050": { + "CollisionParam": { + "ChangeFrameForField": 0, + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.275, + "FriendThroughFrameForPlayer": 0, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.275, + "EndRadiusForPlayer@10.1.0": 0.25, + "InitRadiusForPlayer@10.1.0": 0.25 + }, + "DamageLapOverParam": { + "ReduceEndFrame": 17, + "ReduceStartFrame": 9, + "ValueMax": 255, + "ValueMin": 128 + }, + "DamageParam": { + "ReduceEndFrame": 17, + "ReduceStartFrame": 9, + "ValueMax": 255, + "ValueMin": 128 + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": {}, + "MoveLapOverParam": { + "GoStraightStateEndMaxSpeed": 2.23, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 3.312, + "GoStraightStateEndMaxSpeed@10.0.0": 2.35, + "GoStraightToBrakeStateFrame@10.0.0": 4, + "SpawnSpeed@10.0.0": 2.4 + }, + "MoveParam": { + "FreeGravity": 0.016, + "GoStraightStateEndMaxSpeed": 2.325, + "GoStraightToBrakeStateFrame": 4, + "SpawnSpeed": 3.72, + "GoStraightStateEndMaxSpeed@10.0.0": 2.7, + "GoStraightToBrakeStateFrame@10.0.0": 5, + "SpawnSpeed@10.0.0": 2.8 + }, + "PaintParam": { + "DepthScaleMax": 2.24, + "DepthScaleMaxBreakFree": 2.24, + "DepthScaleMin": 1.31, + "DepthScaleMinBreakFree": 1.12, + "DistanceMiddle": 1.1, + "WidthHalfFar": 1.77, + "WidthHalfMiddle": 1.93, + "WidthHalfNear": 1.93 + }, + "SideStepParam": { + "InkConsume": 0.1, + "MoveDist": 5.5, + "MoveFrame": 16, + "MoveStepKd_Air": 0.98, + "RepeatCnt": 1, + "SlipMoveDistAir": 1.2, + "SlipMoveDistGnd": 1.2, + "SlipMoveFrame": 50, + "SplashSlideParam": { + "PaintWidthHalf": 2 + }, + "UnrelaxFrameMove": 40, + "UnrelaxFrameMove_Last": 40, + "UnrelaxFrameNoSideStep": 40, + "UnrelaxFrameNoSideStep_Last": 40, + "UnrelaxFrameNoSquid": 40, + "UnrelaxFrameNoSquid_Last": 40, + "UnrelaxFrameNoWeapon": 6, + "UnrelaxFrameNoWeapon_Last": 6, + "UnrelaxFrameOneMuzzle": 40, + "UnrelaxFrameOneMuzzle_Last": 40, + "InkConsume@8.0.0": 0.12, + "UnrelaxFrameMove@11.0.1": 42, + "UnrelaxFrameMove@9.1.0": 45, + "UnrelaxFrameMove_Last@11.0.1": 42, + "UnrelaxFrameMove_Last@9.1.0": 45, + "UnrelaxFrameNoSideStep@11.0.1": 42, + "UnrelaxFrameNoSideStep@9.1.0": 45, + "UnrelaxFrameNoSideStep_Last@11.0.1": 42, + "UnrelaxFrameNoSideStep_Last@9.1.0": 45, + "UnrelaxFrameNoSquid@11.0.1": 42, + "UnrelaxFrameNoSquid@9.1.0": 45, + "UnrelaxFrameNoSquid_Last@11.0.1": 42, + "UnrelaxFrameNoSquid_Last@9.1.0": 45, + "UnrelaxFrameOneMuzzle@11.0.1": 42, + "UnrelaxFrameOneMuzzle@9.1.0": 45, + "UnrelaxFrameOneMuzzle_Last@11.0.1": 42, + "UnrelaxFrameOneMuzzle_Last@9.1.0": 45 + }, + "SplashPaintParam": { + "DepthMaxDropHeight": 3, + "DepthMinDropHeight": 10, + "DepthScaleMin": 1, + "WidthHalf": 1.38, + "WidthHalfNearest": 1.932 + }, + "SplashSpawnLapOverParam": { + "SpawnBetweenLength": 9, + "SpawnNearestLength": 1.1, + "SpawnNum": 1.5, + "SplitNum": 8 + }, + "SplashSpawnParam": { + "ForceSpawnNearestAddNumArray": [4], + "SpawnBetweenLength": 10, + "SpawnNearestLength": 1.3, + "SpawnNum": 2, + "SplitNum": 8 + }, + "WallDropCollisionPaintParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15, + "FallPeriodSecondFrame": 10, + "FallPeriodSecondTargetSpeed": 0.06, + "FreeGravityType": "value_0_008" + }, + "WeaponParam": { + "InkConsume": 0.012, + "Jump_DegBiasDecreaseStartFrame": 25, + "Jump_DegBiasEndFrame": 70, + "Jump_DegBiasMax": 0.4, + "Jump_DegSwerve": 8, + "LapOver_DegSwerve": 2.3, + "LapOver_RepeatFrame": 4, + "MoveSpeed": 0.07, + "PreDelayFrame_SquidShot": 4, + "RepeatFrame": 8, + "ShotGuideFrame": 9, + "Stand_DegBiasDecrease": 0.005, + "Stand_DegBiasKf": 0.04, + "Stand_DegBiasMax": 0.3, + "Stand_DegBiasMin": 0.1, + "Stand_DegSwerve": 2.5, + "InkConsume@8.0.0": 0.014 + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + } + }, + "6000": { + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": {}, + "spl__BulletShelterCanopyParam": { + "CanopyGravity": 0.75, + "CanopyInitSpeed": 7.92, + "CanopyNakedFrame": 330, + "CanopySpeedAirAddScaleXZ": 0.72, + "CanopySpeedGroundAddScale": 0.48, + "FootSplashShapeCastOffset": 0.4 + }, + "spl__BulletShelterShotgunParam": { + "DamageEffectiveTotalMax": 810, + "GroupParams": [ + { + "CollisionParam": { + "EndRadiusForPlayer": 0.285, + "InitRadiusForPlayer": 0.285 + }, + "DamageParam": { + "ValueMax": 162, + "ValueMin": 108 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 0, + "HorizontalOffset": 0, + "InitVelRandom": 0, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 1.652, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 2.6 + }, + "PaintParam": { + "WidthHalfFar": 1.68, + "WidthHalfMiddle": 1.68, + "WidthHalfNear": 2.16 + }, + "TotalNum": 1, + "VerticalDegree": 0, + "VerticalOffset": 0 + }, + { + "CollisionParam": { + "EndRadiusForField": 0.1, + "EndRadiusForPlayer": 0.185, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.185 + }, + "DamageParam": { + "ValueMax": 162, + "ValueMin": 108 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 7.2, + "HorizontalOffset": 0.12, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 1.652, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 2.6 + }, + "PaintParam": { + "WidthHalfFar": 1.68, + "WidthHalfMiddle": 1.68, + "WidthHalfNear": 1.68 + }, + "TotalNum": 6, + "VerticalDegree": 4.8, + "VerticalOffset": 0.1 + }, + { + "CollisionParam": { + "EndRadiusForField": 0.1, + "EndRadiusForPlayer": 0.185, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.185 + }, + "DamageParam": { + "ValueMax": 162, + "ValueMin": 108 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 2.4, + "HorizontalOffset": 0.05, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 1.652, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 2.6 + }, + "PaintParam": { + "WidthHalfFar": 1.68, + "WidthHalfMiddle": 1.68, + "WidthHalfNear": 1.68 + }, + "TotalNum": 4, + "VerticalDegree": 3.6, + "VerticalOffset": 0.05 + } + ], + "ShotgunWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15 + }, + "SplashParam": { + "SplashPaintDepthScaleFullActive": 2.1, + "SplashPaintDepthScaleOneActive": 4.7, + "SplashPaintWidthFullActive": 1.8733, + "SplashPaintWidthOneActive": 0.7375, + "SplashPaintWidthFullActive@10.0.0": 1.4986, + "SplashPaintWidthOneActive@10.0.0": 0.59 + }, + "SplashWallDropCollisionParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "SplashWallDropMoveParam": { + "FallPeriodFirstFrameMax": 15, + "FallPeriodFirstTargetSpeed": 0.03, + "FallPeriodLastFrameMax": 25, + "FallPeriodLastFrameMin": 10, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.08 + }, + "GroupParams@10.1.0": [ + { + "DamageParam": { + "ValueMax": 162, + "ValueMin": 108 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 0, + "HorizontalOffset": 0, + "InitVelRandom": 0, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 1.652, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 2.6 + }, + "PaintParam": { + "WidthHalfFar": 1.68, + "WidthHalfMiddle": 1.68, + "WidthHalfNear": 2.16 + }, + "TotalNum": 1, + "VerticalDegree": 0, + "VerticalOffset": 0 + }, + { + "CollisionParam": { + "EndRadiusForField": 0.1, + "EndRadiusForPlayer": 0.1, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DamageParam": { + "ValueMax": 162, + "ValueMin": 108 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 7.2, + "HorizontalOffset": 0.12, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 1.652, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 2.6 + }, + "PaintParam": { + "WidthHalfFar": 1.68, + "WidthHalfMiddle": 1.68, + "WidthHalfNear": 1.68 + }, + "TotalNum": 6, + "VerticalDegree": 4.8, + "VerticalOffset": 0.1 + }, + { + "CollisionParam": { + "EndRadiusForField": 0.1, + "EndRadiusForPlayer": 0.1, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DamageParam": { + "ValueMax": 162, + "ValueMin": 108 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 2.4, + "HorizontalOffset": 0.05, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 1.652, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 2.6 + }, + "PaintParam": { + "WidthHalfFar": 1.68, + "WidthHalfMiddle": 1.68, + "WidthHalfNear": 1.68 + }, + "TotalNum": 4, + "VerticalDegree": 3.6, + "VerticalOffset": 0.05 + } + ], + "GroupParams@10.0.0": [ + { + "DamageParam": { + "ValueMax": 162, + "ValueMin": 108 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 0, + "HorizontalOffset": 0, + "InitVelRandom": 0, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 1.652, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 2.6 + }, + "PaintParam": { + "WidthHalfNear": 1.8 + }, + "TotalNum": 1, + "VerticalDegree": 0, + "VerticalOffset": 0 + }, + { + "CollisionParam": { + "EndRadiusForField": 0.1, + "EndRadiusForPlayer": 0.1, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DamageParam": { + "ValueMax": 162, + "ValueMin": 108 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 6, + "HorizontalOffset": 0.12, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 1.652, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 2.6 + }, + "PaintParam": {}, + "TotalNum": 6, + "VerticalDegree": 4, + "VerticalOffset": 0.1 + }, + { + "CollisionParam": { + "EndRadiusForField": 0.1, + "EndRadiusForPlayer": 0.1, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DamageParam": { + "ValueMax": 162, + "ValueMin": 108 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 2, + "HorizontalOffset": 0.05, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 1.652, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 2.6 + }, + "TotalNum": 4, + "VerticalDegree": 3, + "VerticalOffset": 0.05 + } + ] + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + }, + "spl__WeaponShelterCanopyParam": { + "CanopyNakedFrame": 330, + "CanopyOpenEndOffset": 0, + "CanopyOpenStartOffset": -0.6, + "InkConsumeUmbrella": 0.3, + "CanopyNakedFrame@4.1.0": 390 + }, + "spl__WeaponShelterShotgunParam": { + "InkConsume": 0.05, + "JumpGndCharge": 0.07, + "MoveSpeed": 0.065, + "MoveSpeedCharge": 0.055, + "RepeatFrame": 0, + "InkConsume@10.1.0": 0.055 + } + }, + "6010": { + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "Overwrite_ConsumeRt_Main_High": 0.5, + "Overwrite_ConsumeRt_Main_Mid": 0.7, + "WeaponSpeedType": "Slow" + }, + "spl__BulletShelterCanopyParam": { + "CanopyAttackedDamageRate": 0.6, + "CanopyColRadius": 1, + "CanopyCureHPPerFrame": 5, + "CanopyFrame": 360, + "CanopyGravity": 0.75, + "CanopyHP": 7000, + "CanopyHitOtherCanopyDamage": 8000, + "CanopyHitOtherCanopyVolume": 13, + "CanopyHitShieldAttackDamage": 4000, + "CanopyHitShieldReceiveDamage": 5000, + "CanopyInitSpeed": 4.6, + "CanopyMoveKnockBackSideStepRate": 1, + "CanopyNakedFrame": 340, + "CanopyPaintRadius": 2.4, + "CanopySpeedAirAddScaleXZ": 0.72, + "CanopySpeedGroundAddScale": 0.48, + "FootSplashPaintRadius": 1.8, + "FootSplashShapeCastOffset": 1 + }, + "spl__BulletShelterShotgunParam": { + "DamageEffectiveTotalMax": 1190, + "GroupParams": [ + { + "CollisionParam": { + "EndRadiusForPlayer": 0.235, + "InitRadiusForPlayer": 0.235 + }, + "DamageParam": { + "ReduceEndFrame": 25, + "ReduceStartFrame": 9, + "ValueMax": 170, + "ValueMin": 170 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 0, + "HorizontalOffset": 0, + "InitVelRandom": 0, + "MoveParam": { + "BrakeGravity": 0.07, + "GoStraightStateEndMaxSpeed": 2.3135, + "GoStraightToBrakeStateFrame": 4, + "SpawnSpeed": 2.4 + }, + "PaintParam": { + "WidthHalfFar": 1.5, + "WidthHalfMiddle": 1.5, + "WidthHalfNear": 2.2 + }, + "TotalNum": 1, + "VerticalDegree": 0, + "VerticalOffset": 0 + }, + { + "CollisionParam": { + "EndRadiusForField": 0.1, + "EndRadiusForPlayer": 0.135, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.135 + }, + "DamageParam": { + "ReduceEndFrame": 25, + "ReduceStartFrame": 9, + "ValueMax": 170, + "ValueMin": 170 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 7, + "HorizontalOffset": 0.12, + "InitVelRandom": 0.35, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 2.3135, + "GoStraightToBrakeStateFrame": 4, + "SpawnSpeed": 2.4 + }, + "PaintParam": { + "WidthHalfFar": 1.5, + "WidthHalfMiddle": 1.5, + "WidthHalfNear": 1.5 + }, + "TotalNum": 6, + "VerticalDegree": 4.5, + "VerticalOffset": 0.1 + }, + { + "CollisionParam": { + "EndRadiusForField": 0.1, + "EndRadiusForPlayer": 0.135, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.135 + }, + "DamageParam": { + "ReduceEndFrame": 25, + "ReduceStartFrame": 9, + "ValueMax": 170, + "ValueMin": 170 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 2.5, + "HorizontalOffset": 0.05, + "InitVelRandom": 0.35, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 2.3135, + "GoStraightToBrakeStateFrame": 4, + "SpawnSpeed": 2.4 + }, + "PaintParam": { + "WidthHalfFar": 1.5, + "WidthHalfMiddle": 1.5, + "WidthHalfNear": 1.5 + }, + "TotalNum": 6, + "VerticalDegree": 3, + "VerticalOffset": 0.05 + } + ], + "ShotgunWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15 + }, + "SplashParam": { + "CreateSplashNum": 7, + "SplashPaintDepthScaleFullActive": 1.5, + "SplashPaintDepthScaleOneActive": 3.43, + "SplashPaintWidthFullActive": 1.84, + "SplashPaintWidthOneActive": 0.805 + }, + "SplashWallDropCollisionParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "SplashWallDropMoveParam": { + "FallPeriodFirstFrameMax": 15, + "FallPeriodFirstTargetSpeed": 0.03, + "FallPeriodLastFrameMax": 25, + "FallPeriodLastFrameMin": 10, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.08 + }, + "GroupParams@10.1.0": [ + { + "DamageParam": { + "ReduceEndFrame": 25, + "ReduceStartFrame": 9, + "ValueMax": 170, + "ValueMin": 170 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 0, + "HorizontalOffset": 0, + "InitVelRandom": 0, + "MoveParam": { + "BrakeGravity": 0.07, + "GoStraightStateEndMaxSpeed": 2.3135, + "GoStraightToBrakeStateFrame": 4, + "SpawnSpeed": 2.4 + }, + "PaintParam": { + "WidthHalfFar": 1.5, + "WidthHalfMiddle": 1.5, + "WidthHalfNear": 2.2 + }, + "TotalNum": 1, + "VerticalDegree": 0, + "VerticalOffset": 0 + }, + { + "CollisionParam": { + "EndRadiusForField": 0.1, + "EndRadiusForPlayer": 0.1, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DamageParam": { + "ReduceEndFrame": 25, + "ReduceStartFrame": 9, + "ValueMax": 170, + "ValueMin": 170 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 7, + "HorizontalOffset": 0.12, + "InitVelRandom": 0.35, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 2.3135, + "GoStraightToBrakeStateFrame": 4, + "SpawnSpeed": 2.4 + }, + "PaintParam": { + "WidthHalfFar": 1.5, + "WidthHalfMiddle": 1.5, + "WidthHalfNear": 1.5 + }, + "TotalNum": 6, + "VerticalDegree": 4.5, + "VerticalOffset": 0.1 + }, + { + "CollisionParam": { + "EndRadiusForField": 0.1, + "EndRadiusForPlayer": 0.1, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DamageParam": { + "ReduceEndFrame": 25, + "ReduceStartFrame": 9, + "ValueMax": 170, + "ValueMin": 170 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 2.5, + "HorizontalOffset": 0.05, + "InitVelRandom": 0.35, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 2.3135, + "GoStraightToBrakeStateFrame": 4, + "SpawnSpeed": 2.4 + }, + "PaintParam": { + "WidthHalfFar": 1.5, + "WidthHalfMiddle": 1.5, + "WidthHalfNear": 1.5 + }, + "TotalNum": 6, + "VerticalDegree": 3, + "VerticalOffset": 0.05 + } + ] + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + }, + "spl__WeaponShelterCanopyParam": { + "CanopyChargeFrame": 45, + "CanopyDirXZ_RotDeg_H": 1.6, + "CanopyDirXZ_RotDeg_L": 0.8, + "CanopyNakedFrame": 340, + "CanopyOpenEndOffset": 0, + "CanopyOpenFrame": 30, + "CanopyOpenStartOffset": -0.6, + "CanopyShotFrame": 30, + "InkConsumeUmbrella": 0.23, + "InkConsumeUmbrella@11.0.1": 0.3 + }, + "spl__WeaponShelterShotgunParam": { + "InkConsume": 0.11, + "InkRecoverStop": 70, + "InkRecoverStopCharge": 30, + "JumpGndCharge": 0.06, + "MoveSpeed": 0.05, + "MoveSpeedCharge": 0.04, + "PostDelayFrame_Main": 40, + "PostDelayFrame_MoveLmt": 30, + "PostNoShotReqFrame": 35, + "PreDelayFrame_HumanMain": 10, + "PreDelayFrame_SquidMain": 20, + "RepeatFrame": 0, + "ShotGuideFrame": 9 + } + }, + "6020": { + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "WeaponSpeedType": "Fast" + }, + "spl__BulletShelterCanopyParam": { + "CanopyCureHPPerFrame": 5, + "CanopyDamage": 150, + "CanopyFrame": 100, + "CanopyGravity": 1.102, + "CanopyHP": 2000, + "CanopyHitOtherCanopyDamage": 2000, + "CanopyHitOtherCanopyVolume": 3, + "CanopyHitShieldAttackDamage": 750, + "CanopyInitSpeed": 7.92, + "CanopyMoveKnockBackSideStepRate": 1, + "CanopyNakedFrame": 222, + "CanopyPaintRadius": 1, + "CanopySpeedAirAddScaleXZ": 0.72, + "CanopySpeedGroundAddScale": 0.48, + "FootSplashPaintRadius": 1, + "FootSplashShapeCastOffset": 0.4, + "FootSplashSpanFrame": 0, + "FootSplashWaitFrame": 5, + "CanopyNakedFrame@9.1.0": 240, + "CanopyNakedFrame@4.1.0": 270 + }, + "spl__BulletShelterShotgunParam": { + "DamageEffectiveTotalMax": 400, + "GroupParams": [ + { + "CollisionParam": { + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.335, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.335 + }, + "DamageParam": { + "ValueMax": 120, + "ValueMin": 90 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 0, + "HorizontalOffset": 0, + "InitVelRandom": 0, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 1.9085, + "GoStraightToBrakeStateFrame": 4, + "SpawnSpeed": 2 + }, + "PaintParam": { + "WidthHalfFar": 1.62, + "WidthHalfMiddle": 1.62, + "WidthHalfNear": 1.9 + }, + "TotalNum": 1, + "VerticalDegree": 0, + "VerticalOffset": 0 + }, + { + "AddDegree": 0, + "CollisionParam": { + "EndRadiusForField": 0.16, + "EndRadiusForPlayer": 0.245, + "InitRadiusForField": 0.16, + "InitRadiusForPlayer": 0.245 + }, + "DamageParam": { + "ValueMax": 120, + "ValueMin": 90 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 4, + "HorizontalOffset": 0.12, + "InitVelRandom": 0.2, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 1.9085, + "GoStraightToBrakeStateFrame": 4, + "SpawnSpeed": 2 + }, + "PaintParam": { + "WidthHalfFar": 1.62, + "WidthHalfMiddle": 1.62, + "WidthHalfNear": 1.62 + }, + "TotalNum": 2, + "VerticalDegree": 2.7, + "VerticalOffset": 0.1 + }, + { + "AddDegree": 45, + "CollisionParam": { + "EndRadiusForField": 0.16, + "EndRadiusForPlayer": 0.245, + "InitRadiusForField": 0.16, + "InitRadiusForPlayer": 0.245 + }, + "DamageParam": { + "ValueMax": 120, + "ValueMin": 90 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 2, + "HorizontalOffset": 0.05, + "InitVelRandom": 0.2, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 1.9085, + "GoStraightToBrakeStateFrame": 4 + }, + "PaintParam": { + "WidthHalfFar": 1.62, + "WidthHalfMiddle": 1.62, + "WidthHalfNear": 1.62 + }, + "TotalNum": 4, + "VerticalDegree": 2.6, + "VerticalOffset": 0.05 + } + ], + "ShotgunWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15 + }, + "SplashParam": { + "CreateSplashLength": 3.5, + "CreateSplashNum": 4, + "SplashPaintDepthScaleFullActive": 2.2, + "SplashPaintDepthScaleOneActive": 5.6, + "SplashPaintWidthFullActive": 1.711, + "SplashPaintWidthOneActive": 0.59 + }, + "SplashWallDropCollisionParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "SplashWallDropMoveParam": { + "FallPeriodFirstFrameMax": 15, + "FallPeriodFirstTargetSpeed": 0.03, + "FallPeriodLastFrameMax": 25, + "FallPeriodLastFrameMin": 10, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.08 + }, + "GroupParams@10.1.0": [ + { + "CollisionParam": { + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.25, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.25 + }, + "DamageParam": { + "ValueMax": 120, + "ValueMin": 90 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 0, + "HorizontalOffset": 0, + "InitVelRandom": 0, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 1.9085, + "GoStraightToBrakeStateFrame": 4, + "SpawnSpeed": 2 + }, + "PaintParam": { + "WidthHalfFar": 1.62, + "WidthHalfMiddle": 1.62, + "WidthHalfNear": 1.9 + }, + "TotalNum": 1, + "VerticalDegree": 0, + "VerticalOffset": 0 + }, + { + "AddDegree": 0, + "CollisionParam": { + "EndRadiusForField": 0.16, + "EndRadiusForPlayer": 0.16, + "InitRadiusForField": 0.16, + "InitRadiusForPlayer": 0.16 + }, + "DamageParam": { + "ValueMax": 120, + "ValueMin": 90 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 4, + "HorizontalOffset": 0.12, + "InitVelRandom": 0.2, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 1.9085, + "GoStraightToBrakeStateFrame": 4, + "SpawnSpeed": 2 + }, + "PaintParam": { + "WidthHalfFar": 1.62, + "WidthHalfMiddle": 1.62, + "WidthHalfNear": 1.62 + }, + "TotalNum": 2, + "VerticalDegree": 2.7, + "VerticalOffset": 0.1 + }, + { + "AddDegree": 45, + "CollisionParam": { + "EndRadiusForField": 0.16, + "EndRadiusForPlayer": 0.16, + "InitRadiusForField": 0.16, + "InitRadiusForPlayer": 0.16 + }, + "DamageParam": { + "ValueMax": 120, + "ValueMin": 90 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 2, + "HorizontalOffset": 0.05, + "InitVelRandom": 0.2, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 1.9085, + "GoStraightToBrakeStateFrame": 4 + }, + "PaintParam": { + "WidthHalfFar": 1.62, + "WidthHalfMiddle": 1.62, + "WidthHalfNear": 1.62 + }, + "TotalNum": 4, + "VerticalDegree": 2.6, + "VerticalOffset": 0.05 + } + ] + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + }, + "spl__WeaponShelterCanopyParam": { + "CanopyChargeFrame": 10, + "CanopyDirXZ_DiffDeg_H": 50, + "CanopyDirXZ_DiffDeg_L": 30, + "CanopyDirXZ_RotDegBias": 0.5, + "CanopyDirXZ_RotDeg_H": 20, + "CanopyDirXZ_RotDeg_L": 15, + "CanopyNakedFrame": 222, + "CanopyOpenEndBias": 0.7, + "CanopyOpenEndOffset": 0, + "CanopyOpenFrame": 10, + "CanopyOpenStartOffset": -0.6, + "InkConsumeUmbrella": 0, + "IsCanopyShot": false, + "IsRecoverCanopyByKill": true, + "CanopyNakedFrame@9.1.0": 240, + "CanopyNakedFrame@4.1.0": 270 + }, + "spl__WeaponShelterShotgunParam": { + "InkConsume": 0.037, + "InkRecoverStop": 40, + "InkRecoverStopCharge": 30, + "JumpGndCharge": 0.1, + "MoveSpeed": 0.072, + "MoveSpeedCharge": 0.072, + "RepeatFrame": 26, + "InkConsume@11.1.0": 0.04, + "JumpGndCharge@6.0.0": 0.08 + } + }, + "6030": { + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "WeaponSpeedType": "Mid" + }, + "spl__BulletShelterCanopyParam": { + "CanopyAttackedDamageRate": 0.6, + "CanopyCureHPPerFrame": 5, + "CanopyDamage": 200, + "CanopyFrame": 170, + "CanopyGravity": 0.75, + "CanopyHP": 1500, + "CanopyHitOtherCanopyDamage": 1000, + "CanopyHitOtherCanopyVolume": 1, + "CanopyHitShieldAttackDamage": 750, + "CanopyInitSpeed": 9, + "CanopyMoveKnockBackSideStepRate": 1, + "CanopyNakedFrame": 130, + "CanopyPaintRadius": 2, + "CanopySpeedAirAddScaleXZ": 0.72, + "CanopySpeedGroundAddScale": 0.48, + "FootSplashPaintRadius": 1, + "FootSplashShapeCastOffset": 0.4, + "FootSplashSpanFrame": 4, + "FootSplashWaitFrame": 20, + "CanopyHP@10.0.0": 1000, + "CanopyNakedFrame@8.0.0": 150 + }, + "spl__BulletShelterShotgunParam": { + "DamageEffectiveTotalMax": 900, + "GroupParams": [ + { + "CollisionParam": { + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.26, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.26 + }, + "DamageParam": { + "ValueMax": 150, + "ValueMin": 100 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 0, + "HorizontalOffset": 0, + "InitVelRandom": 0, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 2, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 3 + }, + "PaintParam": { + "WidthHalfFar": 1.3, + "WidthHalfMiddle": 1.3, + "WidthHalfNear": 1.6 + }, + "TotalNum": 1, + "VerticalDegree": 0, + "VerticalOffset": 0 + }, + { + "AddDegree": 0, + "CollisionParam": { + "EndRadiusForField": 0.1, + "EndRadiusForPlayer": 0.16, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.16 + }, + "DamageParam": { + "ValueMax": 150, + "ValueMin": 100 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 3, + "HorizontalOffset": 0.1, + "InitVelRandom": 0.4, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 2, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 3 + }, + "PaintParam": { + "WidthHalfFar": 1.3, + "WidthHalfMiddle": 1.3, + "WidthHalfNear": 1.3 + }, + "TotalNum": 6, + "VerticalDegree": 1.5, + "VerticalOffset": 0.1 + }, + { + "AddDegree": 0, + "CollisionParam": { + "EndRadiusForField": 0.1, + "EndRadiusForPlayer": 0.16, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.16 + }, + "DamageParam": { + "ValueMax": 150, + "ValueMin": 100 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 2, + "HorizontalOffset": 0.05, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 2, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 3 + }, + "PaintParam": { + "WidthHalfFar": 1.3, + "WidthHalfMiddle": 1.3, + "WidthHalfNear": 1.3 + }, + "TotalNum": 4, + "VerticalDegree": 1.5, + "VerticalOffset": 0.05 + } + ], + "ShotgunWallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodFirstTargetSpeed": 0.06, + "FallPeriodLastFrameMax": 35, + "FallPeriodLastFrameMin": 15 + }, + "SplashParam": { + "CreateSplashLength": 3.3, + "CreateSplashNum": 6, + "RandomSpawnVelXMax": 0.025, + "RandomSpawnVelZMax": 0.02, + "RandomSpawnVelZMin": 0.01, + "SplashPaintDepthScaleFullActive": 2.4, + "SplashPaintDepthScaleOneActive": 4.8, + "SplashPaintWidthFullActive": 2, + "SplashPaintWidthOneActive": 0.7, + "SplashPaintWidthFullActive@9.2.0": 1.57 + }, + "SplashWallDropCollisionParam": { + "PaintRadiusFall": 0.65, + "PaintRadiusGround": 0.6, + "PaintRadiusShock": 1.3 + }, + "SplashWallDropMoveParam": { + "FallPeriodFirstFrameMax": 15, + "FallPeriodFirstTargetSpeed": 0.03, + "FallPeriodLastFrameMax": 25, + "FallPeriodLastFrameMin": 10, + "FallPeriodSecondFrame": 5, + "FallPeriodSecondTargetSpeed": 0.08 + }, + "GroupParams@10.1.0": [ + { + "CollisionParam": { + "EndRadiusForField": 0.2, + "EndRadiusForPlayer": 0.2, + "InitRadiusForField": 0.2, + "InitRadiusForPlayer": 0.2 + }, + "DamageParam": { + "ValueMax": 150, + "ValueMin": 100 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 0, + "HorizontalOffset": 0, + "InitVelRandom": 0, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 2, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 3 + }, + "PaintParam": { + "WidthHalfFar": 1.3, + "WidthHalfMiddle": 1.3, + "WidthHalfNear": 1.6 + }, + "TotalNum": 1, + "VerticalDegree": 0, + "VerticalOffset": 0 + }, + { + "AddDegree": 0, + "CollisionParam": { + "EndRadiusForField": 0.1, + "EndRadiusForPlayer": 0.1, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DamageParam": { + "ValueMax": 150, + "ValueMin": 100 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 3, + "HorizontalOffset": 0.1, + "InitVelRandom": 0.4, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 2, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 3 + }, + "PaintParam": { + "WidthHalfFar": 1.3, + "WidthHalfMiddle": 1.3, + "WidthHalfNear": 1.3 + }, + "TotalNum": 6, + "VerticalDegree": 1.5, + "VerticalOffset": 0.1 + }, + { + "AddDegree": 0, + "CollisionParam": { + "EndRadiusForField": 0.1, + "EndRadiusForPlayer": 0.1, + "InitRadiusForField": 0.1, + "InitRadiusForPlayer": 0.1 + }, + "DamageParam": { + "ValueMax": 150, + "ValueMin": 100 + }, + "DrawRadius": 1.325, + "HorizontalDegree": 2, + "HorizontalOffset": 0.05, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 2, + "GoStraightToBrakeStateFrame": 3, + "SpawnSpeed": 3 + }, + "PaintParam": { + "WidthHalfFar": 1.3, + "WidthHalfMiddle": 1.3, + "WidthHalfNear": 1.3 + }, + "TotalNum": 4, + "VerticalDegree": 1.5, + "VerticalOffset": 0.05 + } + ] + }, + "spl__SpawnBulletAdditionMovePlayerParam": { + "ZRate": 2 + }, + "spl__WeaponShelterCanopyParam": { + "CanopyChargeFrame": 10, + "CanopyDirXZ_DiffDeg_H": 30, + "CanopyDirXZ_DiffDeg_L": 1, + "CanopyDirXZ_RotDegBias": 0.5, + "CanopyDirXZ_RotDeg_H": 2, + "CanopyDirXZ_RotDeg_L": 1, + "CanopyNakedFrame": 130, + "CanopyOpenEndBias": 0.7, + "CanopyOpenEndOffset": 0, + "CanopyOpenFrame": 10, + "CanopyOpenStartOffset": -0.6, + "CanopyShotFrame": 20, + "InkConsumeUmbrella": 0.15, + "IsCanopyShot": true, + "IsRecoverCanopyByKill": false, + "CanopyNakedFrame@8.0.0": 150 + }, + "spl__WeaponShelterShotgunParam": { + "InkConsume": 0.06, + "InkRecoverStop": 50, + "InkRecoverStopCanopy": 55, + "InkRecoverStopCharge": 20, + "JumpGndCharge": 0.065, + "MoveSpeed": 0.058, + "MoveSpeedCharge": 0.05, + "PostDelayFrame_Main": 25, + "PostDelayFrame_MoveLmt": 25, + "PostNoShotReqFrame": 20, + "RepeatFrame": 0, + "ShotGuideFrame": 8, + "InkConsume@9.2.0": 0.07 + } + }, + "7010": { + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": {}, + "spl__BulletStringerParam": { + "CollisionParam": { + "EndRadiusForPlayer": 0.205, + "InitRadiusForPlayer": 0.205, + "EndRadiusForPlayer@10.1.0": 0.18, + "InitRadiusForPlayer@10.1.0": 0.18 + }, + "DamageParam": { + "DirectHitDamageMax": 350, + "DirectHitDamageMid": 350, + "DirectHitDamageMin": 300 + }, + "DetonationParam": { + "BlastParam": { + "DamageOffsetY": 0.6, + "DistanceDamage": [ + { + "Damage": 300, + "Distance": 2.05 + } + ], + "KnockBackParam": { + "Distance": 2.05 + }, + "PaintOffsetY": 0.6, + "PaintRadius": 2, + "DistanceDamage@10.1.0": [ + { + "Damage": 300, + "Distance": 2 + } + ], + "DistanceDamage@4.0.0": [ + { + "Damage": 280, + "Distance": 2 + } + ] + }, + "DetonationFrame": 45, + "IsExplosiveBoltMidCharge": true + }, + "DrawParam": { + "CapsuleLength": 1.1, + "CapsuleRadius": 0.2, + "IsDrawCapsule": false, + "IsDrawCollision": false + }, + "Effect1stParam": { + "DelayFrame": 8, + "MaxLen": 13.075 + }, + "Effect2ndParam": { + "SmokeInterval": 0.159375 + }, + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.24, + "FreeGravity": 0.15, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 4, + "SpawnSpeed": 0, + "SpawnSpeedMax": 3.85, + "SpawnSpeedMid": 2.1, + "SpawnSpeedMin": 2.1 + }, + "PaintParam": { + "WidthHalfMax": 3, + "WidthHalfMid": 2.5, + "WidthHalfMin": 2.5 + }, + "SplashPaintParam": { + "DepthScaleMax": 2.7, + "WidthHalf": 1.48, + "WidthHalf@7.2.0": 1.35 + }, + "SplashSpawnParam": { + "DropInterval": 10, + "RandomSpawnVelXMax": 0.02, + "SplashNumMax": 5, + "SplitNum": 5, + "SplitNum@7.2.0": 7 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodLastFrameMax": 35 + } + }, + "spl__WeaponStringerParam": { + "ChargeKeepParam": { + "KeepChargeFullFrame": 1, + "KeepChargePreDelayFrame": 23, + "KeepChargePreDelayFrame_Pre": 18 + }, + "ChargeParam": { + "AirChargeRateByInkEmpty": 1, + "ChargeFrameFullCharge": 72, + "ChargeFrameMidCharge": 30, + "ChargeFrameMinCharge": 9, + "FreezeFrameFullCharge": 15, + "FreezeFrameMidCharge": 15, + "FreezeFrameMinCharge": 12, + "InkConsumeFullCharge": 0.085, + "InkConsumeMidCharge": 0.06, + "InkConsumeMinCharge": 0.05, + "JumpHeightFullCharge": 0.07, + "MoveSpeedFullCharge": 0.068, + "PostDelayFrame": 10, + "MoveSpeedFullCharge@4.0.0": 0.06, + "PostDelayFrame@1.0.0": 2, + "PostDelayFrame@0.9.9": 10 + }, + "IsEnableChargeKeep": false, + "PlayerParam": { + "BowTiltDegRcvInterpRate": 0.2 + }, + "ShotGuideParam": { + "GuideDrawFrameFirst": 8, + "GuideDrawFrameSecond": 8, + "IsDrawTrajectory": false, + "MainArrowGuideDrawFrame": 10, + "SubArrowGuideDrawFrame": 3, + "TiltGuideEnabled": false, + "TiltGuideLength": 0, + "TiltGuideWidth": 4 + }, + "ShotParam": { + "ArrowAngleMax": 8, + "ArrowAngleMid": 8, + "ArrowMargin": 0.4, + "BowJumpTiltSpeedForward": 9, + "BowJumpTiltSpeedReverse": -12, + "BowTiltDegreeMax": 90, + "BowTiltKeepFrame": 45, + "BowTiltResetSpeed": 2 + } + } + }, + "7020": { + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "WeaponSpeedType": "Fast" + }, + "spl__BulletStringerParam": { + "CollisionParam": { + "EndRadiusForPlayer": 0.215, + "InitRadiusForPlayer": 0.215, + "EndRadiusForPlayer@10.1.0": 0.18, + "InitRadiusForPlayer@10.1.0": 0.18 + }, + "DamageParam": { + "DirectHitDamageMax": 450, + "DirectHitDamageMid": 450, + "DirectHitDamageMin": 300 + }, + "DetonationParam": { + "BlastParam": { + "DamageOffsetY": 0.6, + "DistanceDamage": [ + { + "Damage": 280, + "Distance": 2 + } + ], + "PaintOffsetY": 0.6, + "PaintRadius": 2 + }, + "DetonationFrame": 45, + "IsExplosiveBoltMidCharge": false + }, + "DrawParam": { + "CapsuleLength": 1.1, + "CapsuleRadius": 0.2, + "IsDrawCapsule": false, + "IsDrawCollision": false + }, + "Effect1stParam": { + "DelayFrame": 8, + "MaxLen": 13.075 + }, + "Effect2ndParam": { + "SmokeInterval": 0.159375 + }, + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.24, + "FreeGravity": 0.15, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 4, + "SpawnSpeed": 0, + "SpawnSpeedMax": 2.55, + "SpawnSpeedMid": 1.45, + "SpawnSpeedMin": 1.45 + }, + "PaintParam": { + "WidthHalfMax": 2.8, + "WidthHalfMid": 2.8, + "WidthHalfMin": 2.8 + }, + "SplashPaintParam": { + "DepthScaleMax": 1.28, + "WidthHalf": 1.28 + }, + "SplashSpawnParam": { + "DropInterval": 10, + "SplitNum": 7 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodLastFrameMax": 35 + } + }, + "spl__WeaponStringerParam": { + "ChargeKeepParam": { + "KeepChargeFullFrame": 75, + "KeepChargePreDelayFrame": 19, + "KeepChargePreDelayFrame_Pre": 14 + }, + "ChargeParam": { + "AirChargeRateByInkEmpty": 3, + "ChargeFrameFullCharge": 34, + "ChargeFrameMidCharge": 12, + "ChargeFrameMinCharge": 6, + "FreezeFrameFullCharge": 15, + "FreezeFrameMidCharge": 15, + "FreezeFrameMinCharge": 8, + "InkConsumeFullCharge": 0.065, + "InkConsumeMidCharge": 0.0468, + "InkConsumeMinCharge": 0.035, + "JumpHeightFullCharge": 0.07, + "MoveSpeedFullCharge": 0.084, + "PostDelayFrame": 10, + "AirChargeRateByInkEmpty@7.2.0": 1, + "InkConsumeMidCharge@6.1.0": 0.04, + "InkConsumeMinCharge@6.1.0": 0.03, + "MoveSpeedFullCharge@3.0.0": 0.07 + }, + "PlayerParam": { + "BowTiltDegRcvInterpRate": 0.2 + }, + "ShotGuideParam": { + "GuideDrawFrameFirst": 7, + "GuideDrawFrameSecond": 7, + "IsDrawTrajectory": false, + "MainArrowGuideDrawFrame": 10, + "SubArrowGuideDrawFrame": 3, + "TiltGuideEnabled": false, + "TiltGuideLength": 0, + "TiltGuideWidth": 4 + }, + "ShotParam": { + "ArrowAngleMax": 10.5, + "ArrowAngleMid": 5, + "ArrowAngleMin": 0.5, + "ArrowMargin": 0.2, + "ArrowNum": 3, + "BowJumpTiltSpeedForward": 9, + "BowJumpTiltSpeedReverse": -12, + "BowTiltDegreeMax": 90, + "BowTiltKeepFrame": 45, + "BowTiltResetSpeed": 2, + "EnableOldTiltControl": false, + "ArrowAngleMax@4.1.0": 15, + "ArrowAngleMid@4.1.0": 7, + "ArrowAngleMin@3.0.0": 1 + } + } + }, + "7030": { + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "WeaponAccType": "Mid", + "WeaponSpeedType": "Slow" + }, + "spl__BulletStringerParam": { + "CollisionParam": { + "EndRadiusForPlayer": 0.205, + "InitRadiusForPlayer": 0.205, + "EndRadiusForPlayer@10.1.0": 0.18, + "InitRadiusForPlayer@10.1.0": 0.18 + }, + "DamageParam": { + "DirectHitDamageMax": 350, + "DirectHitDamageMid": 240, + "DirectHitDamageMin": 240 + }, + "DetonationParam": { + "BlastParam": { + "DamageOffsetY": 0.6, + "DistanceDamage": [ + { + "Damage": 300, + "Distance": 2.05 + } + ], + "KnockBackParam": { + "Distance": 2.05 + }, + "PaintOffsetY": 0.6, + "PaintRadius": 2, + "DistanceDamage@10.1.0": [ + { + "Damage": 300, + "Distance": 2 + } + ] + }, + "DetonationFrame": 45, + "IsExplosiveBoltMidCharge": true + }, + "DrawParam": { + "CapsuleLength": 1.1, + "CapsuleRadius": 0.2, + "IsDrawCapsule": false, + "IsDrawCollision": false + }, + "Effect1stParam": { + "DelayFrame": 8, + "MaxLen": 13.075 + }, + "Effect2ndParam": { + "SmokeInterval": 0.159375 + }, + "MoveParam": { + "BrakeAirResist": 0.1, + "BrakeGravity": 0.04, + "BrakeToFreeStateFrame": 1, + "BrakeToFreeVelocityXZ": 20, + "BrakeToFreeVelocityY": 10, + "FreeAirResist": 0.24, + "FreeGravity": 0.15, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 4, + "SpawnSpeed": 0, + "SpawnSpeedMax": 3.5, + "SpawnSpeedMid": 2.294, + "SpawnSpeedMin": 1.45 + }, + "PaintParam": { + "WidthHalfMax": 2.76, + "WidthHalfMid": 2.3, + "WidthHalfMin": 2.3, + "WidthHalfMax@8.1.0": 3, + "WidthHalfMid@8.1.0": 2.5, + "WidthHalfMin@8.1.0": 2.5 + }, + "SplashPaintParam": { + "DepthScaleMax": 2.5, + "WidthHalf": 1.48 + }, + "SplashSpawnParam": { + "DropInterval": 12, + "SplashNumMax": 2, + "SplitNum": 5 + }, + "WallDropMoveParam": { + "FallPeriodFirstFrameMax": 40, + "FallPeriodFirstFrameMin": 20, + "FallPeriodLastFrameMax": 35 + } + }, + "spl__WeaponStringerParam": { + "ChargeKeepParam": { + "KeepChargeFullFrame": 1, + "KeepChargePreDelayFrame": 23, + "KeepChargePreDelayFrame_Pre": 18 + }, + "ChargeParam": { + "AirChargeRateByInkEmpty": 1, + "ChargeFrameFullCharge": 80, + "ChargeFrameMidCharge": 40, + "ChargeFrameMinCharge": 12, + "FreezeFrameFullCharge": 15, + "FreezeFrameMidCharge": 15, + "FreezeFrameMinCharge": 12, + "InkConsumeFullCharge": 0.09, + "InkConsumeMidCharge": 0.08, + "InkConsumeMinCharge": 0.07, + "JumpHeightFullCharge": 0.07, + "MoveJumpDownBias": 0.8, + "MoveJumpDownStartChargeRate": 0.05, + "MoveSpeedFullCharge": 0.04, + "PostDelayFrame": 10 + }, + "IsEnableChargeKeep": false, + "PlayerParam": { + "BowTiltDegRcvInterpRate": 0.2 + }, + "ShotGuideParam": { + "GuideDrawFrameFirst": 8, + "GuideDrawFrameSecond": 8, + "IsDrawTrajectory": false, + "MainArrowGuideDrawFrame": 10, + "SubArrowGuideDrawFrame": 3, + "TiltGuideEnabled": false, + "TiltGuideLength": 0, + "TiltGuideWidth": 4 + }, + "ShotParam": { + "ArrowAngleMax": 12, + "ArrowAngleMid": -4, + "ArrowAngleMin": -12, + "ArrowMargin": 0.2, + "ArrowNum": 5, + "BowJumpTiltSpeedForward": 9, + "BowJumpTiltSpeedReverse": -9, + "BowTiltDegreeMax": 90, + "BowTiltKeepFrame": 45, + "BowTiltResetSpeed": 2, + "CheckCollisionSpawnPos": true + } + } + }, + "8000": { + "BulletSaberHorizontalParam": { + "BurstParam": { + "BurstFrame": 6, + "SplashColRadius": 0.1, + "SplashDrawRadius": 0.2, + "SplashPaintRadius": 2.2 + }, + "CollisionParam": { + "CoreIndex": 2, + "OffsetArray": [ + { + "X": -1, + "Y": 0, + "Z": -0.2 + }, + { + "X": -0.5, + "Y": 0, + "Z": -0.1 + }, + { + "X": 0, + "Y": 0, + "Z": 0 + }, + { + "X": 0.5, + "Y": 0, + "Z": -0.1 + }, + { + "X": 1, + "Y": 0, + "Z": -0.2 + } + ], + "ParamArray": [ + { + "ChangeFrameForField": 5, + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.32, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.32 + }, + { + "ChangeFrameForField": 5, + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.345, + "InitRadiusForField": 0.275, + "InitRadiusForPlayer": 0.345 + }, + { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.37, + "InitRadiusForField": 0.3, + "InitRadiusForPlayer": 0.37 + }, + { + "ChangeFrameForField": 5, + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.345, + "InitRadiusForField": 0.275, + "InitRadiusForPlayer": 0.345 + }, + { + "ChangeFrameForField": 5, + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.32, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.32 + } + ], + "CoreIndex@1.2.0": 1, + "OffsetArray@3.1.0": [ + { + "X": -1.2, + "Y": 0, + "Z": -0.2 + }, + { + "X": -0.6, + "Y": 0, + "Z": -0.1 + }, + { + "X": 0, + "Y": 0, + "Z": 0 + }, + { + "X": 0.6, + "Y": 0, + "Z": -0.1 + }, + { + "X": 1.2, + "Y": 0, + "Z": -0.2 + } + ], + "OffsetArray@1.2.0": [ + { + "X": -1.2, + "Y": 0.4, + "Z": -0.2 + }, + { + "X": 0, + "Y": 0, + "Z": 0 + }, + { + "X": 1.2, + "Y": 0.4, + "Z": -0.2 + } + ], + "ParamArray@10.1.0": [ + { + "ChangeFrameForField": 5, + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.25, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.25 + }, + { + "ChangeFrameForField": 5, + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.275, + "InitRadiusForField": 0.275, + "InitRadiusForPlayer": 0.275 + }, + { + "ChangeFrameForField": 0, + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.3, + "InitRadiusForField": 0.3, + "InitRadiusForPlayer": 0.3 + }, + { + "ChangeFrameForField": 5, + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.275, + "InitRadiusForField": 0.275, + "InitRadiusForPlayer": 0.275 + }, + { + "ChangeFrameForField": 5, + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.25, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.25 + } + ], + "ParamArray@1.2.0": [ + { + "ChangeFrameForField": 5, + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.25, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.25 + }, + { + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.3, + "InitRadiusForField": 0.3, + "InitRadiusForPlayer": 0.3 + }, + { + "ChangeFrameForField": 5, + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.25, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.25 + } + ] + }, + "DamageParam": { + "HasGuard": false, + "HitDamage": 350 + }, + "MoveParam": { + "BrakeAirResist": 0, + "BrakeGravity": 0, + "BrakeToFreeStateFrame": 0, + "BrakeToFreeVelocityXZ": 0, + "BrakeToFreeVelocityY": 0, + "FreeAirResist": 0, + "FreeGravity": 0, + "GoStraightToBrakeStateFrame": 5, + "SpawnSpeed": 2.82 + }, + "PaintParam": { + "DepthScaleMax": 1.4, + "DepthScaleMin": 0.4, + "PaintDegreeMax": 60, + "WidthHalf": 2.3 + }, + "SplashPaintParam": { + "WidthHalf": 1.8 + }, + "SplashSpawnParam": { + "DropInterval": 3, + "SplashNumMax": 8 + } + }, + "BulletSaberSlashHorizontalParam": { + "DamageParam": { + "AccelForCastle": 100, + "DamageValue": 200 + }, + "MoveParam": { + "AliveFrame": 4 + }, + "ShapeParam": { + "BoxCenter": { + "X": 0, + "Y": 0, + "Z": 0.4 + }, + "BoxHalfExtents": { + "X": 1.6, + "Y": 0.25, + "Z": 1.4 + }, + "CylinderCenterA": { + "X": 1.5, + "Y": 1.4, + "Z": 1.5 + }, + "CylinderCenterB": { + "X": 1.5, + "Y": 1.4, + "Z": 1.5 + }, + "CylinderRadius": 1.5, + "HasCylinderShape": false + } + }, + "BulletSaberSlashVerticalParam": { + "DamageParam": { + "AccelForCastle": 150, + "DamageValue": 1400 + }, + "MoveParam": { + "AliveFrame": 4 + }, + "ShapeParam": { + "BoxCenter": { + "X": 0, + "Y": 0, + "Z": 0.7 + }, + "BoxHalfExtents": { + "X": 0.5, + "Y": 1.4, + "Z": 0.7 + }, + "CylinderCenterA": { + "X": -0.5, + "Y": 0, + "Z": 1.4 + }, + "CylinderCenterB": { + "X": 0.5, + "Y": 0, + "Z": 1.4 + }, + "CylinderRadius": 1.4, + "HasCylinderShape": true + } + }, + "BulletSaberVerticalParam": { + "BurstParam": { + "BurstFrame": 26, + "SplashColRadius": 0.1, + "SplashDrawRadius": 0.2, + "SplashPaintRadius": 3 + }, + "CollisionParam": { + "CoreIndex": 3, + "OffsetArray": [ + { + "X": 0, + "Y": 1.6, + "Z": 0.1 + }, + { + "X": 0, + "Y": 1.2, + "Z": 0.2 + }, + { + "X": 0, + "Y": 0.6, + "Z": 0.1 + }, + { + "X": 0, + "Y": 0, + "Z": 0 + }, + { + "X": 0, + "Y": -0.6, + "Z": 0.1 + }, + { + "X": 0, + "Y": -1.2, + "Z": 0.2 + }, + { + "X": 0, + "Y": -1.6, + "Z": 0.1 + } + ], + "ParamArray": [ + { + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.35, + "InitRadiusForField": 0.3, + "InitRadiusForPlayer": 0.35 + }, + { + "EndRadiusForField": 0.35, + "EndRadiusForPlayer": 0.4, + "InitRadiusForField": 0.35, + "InitRadiusForPlayer": 0.4 + }, + { + "EndRadiusForField": 0.45, + "EndRadiusForPlayer": 0.5, + "InitRadiusForField": 0.45, + "InitRadiusForPlayer": 0.5 + }, + { + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.55, + "InitRadiusForField": 0.5, + "InitRadiusForPlayer": 0.55 + }, + { + "EndRadiusForField": 0.45, + "EndRadiusForPlayer": 0.5, + "InitRadiusForField": 0.45, + "InitRadiusForPlayer": 0.5 + }, + { + "EndRadiusForField": 0.35, + "EndRadiusForPlayer": 0.4, + "InitRadiusForField": 0.35, + "InitRadiusForPlayer": 0.4 + }, + { + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.35, + "InitRadiusForField": 0.3, + "InitRadiusForPlayer": 0.35 + } + ], + "CoreIndex@1.0.0": 1, + "CoreIndex@0.9.9": 3, + "OffsetArray@1.0.0": [ + { + "X": 0, + "Y": 0.4, + "Z": -0.1 + }, + { + "X": 0, + "Y": 0, + "Z": 0 + }, + { + "X": 0, + "Y": -0.6, + "Z": -0.1 + }, + { + "X": 0, + "Y": -1.2, + "Z": -0.2 + }, + { + "X": 0, + "Y": -1.8, + "Z": -0.1 + }, + { + "X": 0, + "Y": -2.4, + "Z": 0 + }, + { + "X": 0, + "Y": -2.8, + "Z": -0.1 + } + ], + "OffsetArray@0.9.9": [ + { + "X": 0, + "Y": 1.6, + "Z": 0.1 + }, + { + "X": 0, + "Y": 1.2, + "Z": 0.2 + }, + { + "X": 0, + "Y": 0.6, + "Z": 0.1 + }, + { + "X": 0, + "Y": 0, + "Z": 0 + }, + { + "X": 0, + "Y": -0.6, + "Z": 0.1 + }, + { + "X": 0, + "Y": -1.2, + "Z": 0.2 + }, + { + "X": 0, + "Y": -1.6, + "Z": 0.1 + } + ], + "ParamArray@10.1.0": [ + { + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.3, + "InitRadiusForField": 0.3, + "InitRadiusForPlayer": 0.3 + }, + { + "EndRadiusForField": 0.35, + "EndRadiusForPlayer": 0.35, + "InitRadiusForField": 0.35, + "InitRadiusForPlayer": 0.35 + }, + { + "EndRadiusForField": 0.45, + "EndRadiusForPlayer": 0.45, + "InitRadiusForField": 0.45, + "InitRadiusForPlayer": 0.45 + }, + { + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.5, + "InitRadiusForField": 0.5, + "InitRadiusForPlayer": 0.5 + }, + { + "EndRadiusForField": 0.45, + "EndRadiusForPlayer": 0.45, + "InitRadiusForField": 0.45, + "InitRadiusForPlayer": 0.45 + }, + { + "EndRadiusForField": 0.35, + "EndRadiusForPlayer": 0.35, + "InitRadiusForField": 0.35, + "InitRadiusForPlayer": 0.35 + }, + { + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.3, + "InitRadiusForField": 0.3, + "InitRadiusForPlayer": 0.3 + } + ] + }, + "DamageParam": { + "HasGuard": false, + "HitDamage": 700 + }, + "MoveParam": { + "BrakeAirResist": 0, + "BrakeGravity": 0.0027, + "BrakeToFreeStateFrame": 0, + "BrakeToFreeVelocityXZ": 0, + "BrakeToFreeVelocityY": 0, + "FreeAirResist": 0, + "FreeGravity": 0.02, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 22, + "SpawnSpeed": 0.8 + }, + "PaintParam": { + "WidthHalf": 1.8 + }, + "SplashPaintParam": { + "WidthHalf": 1.8, + "WidthHalfNearest": 1.613, + "WidthHalf@6.0.0": 2, + "WidthHalfNearest@6.0.0": 1.792 + }, + "SplashSpawnParam": { + "DropInterval": 2, + "SplashNumMax": 14, + "DropInterval@1.0.0": 1 + } + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": {}, + "spl__WeaponSaberParam": { + "ChargeParam": { + "AirChargeRateByInkEmpty": 3, + "ChargeFrameFullCharge": 20, + "ChargeFrameMinCharge": 5, + "InkConsumeFullCharge": 0.117, + "InkConsumeMinCharge": 0.035, + "InkRecoverStop": 40, + "MoveSpeedFullCharge": 0.4, + "InkConsumeFullCharge@3.1.0": 0.09 + }, + "FootSplashPaintParam": { + "DepthMaxDropHeight": 0, + "DepthMinDropHeight": 0, + "DepthScaleMax": 1, + "DepthScaleMin": 0, + "WidthHalf": 0, + "WidthHalfNearest": 2 + }, + "ShotGuideParam": { + "ChargeStepSwingShotGuideFrame": 21, + "ChargeSwingShotGuideFrame": 9, + "HorizontalSightFrame": 6, + "HorizontalSphereIndex": 2, + "VerticalSightFrame": 26, + "VerticalSphereIndex": 4, + "HorizontalSphereIndex@1.2.0": 1, + "VerticalSphereIndex@1.0.0": 2, + "VerticalSphereIndex@0.9.9": 4 + }, + "SwingParam": { + "ChargeMoveVelLimit": 0.06, + "ChargeSwingFrame": 22, + "ChargeSwingPostDelayFrame": 14, + "ChargeSwingShotBulletFrame": 6, + "ChargeSwingShotSlashFrame": 3, + "ChargeSwingStepShotBulletFrame": 18, + "ChargeSwingStepShotSlashFrame": 15, + "InkConsume": 0.052, + "InkRecoverStop": 40, + "InkRecoverStop_ChargeSwing": 40, + "IsShotEnable": true, + "ReserveAcceptFrame": 11, + "ShotBulletOffset_L": { + "X": 0, + "Y": 1, + "Z": 1.4 + }, + "ShotBulletOffset_R": { + "X": 0, + "Y": 1, + "Z": 1.4 + }, + "ShotBulletOffset_Vertical": { + "X": 0, + "Y": 2.2, + "Z": 0.8, + "Y@1.0.0": 3.4, + "Y@0.9.9": 2.2, + "Z@1.0.0": 0.6, + "Z@0.9.9": 0.8 + }, + "ShotSlashOffset_L": { + "X": 0, + "Y": 0.9, + "Z": 0.3 + }, + "ShotSlashOffset_R": { + "X": 0, + "Y": 0.9, + "Z": 0.3 + }, + "ShotSlashOffset_Vertical": { + "X": 0, + "Y": 1.2, + "Z": 0.5 + }, + "SideStepParam": { + "ChargeFrame": 3, + "InkConsume": 0, + "InkRecoverStop": 0, + "InputReqAcceptFrame": 0, + "MoveDist": 3, + "MoveFrame": 8, + "MoveStepKd": 0.75, + "RepeatCnt": 1, + "SlipMoveDistAir": 1, + "SlipMoveDistGnd": 0, + "SlipMoveFrame": 0, + "TimeScale": 1, + "TimeScaleFrm": 0, + "UnrelaxFrameMove": 6, + "UnrelaxFrameMove_Last": 14, + "UnrelaxFrameNoSideStep": 0, + "UnrelaxFrameNoSideStep_Last": 14, + "UnrelaxFrameNoSquid": 5, + "UnrelaxFrameNoSquid_Last": 14, + "UnrelaxFrameNoWeapon": 5, + "UnrelaxFrameNoWeapon_Last": 19, + "UnrelaxFrameOneMuzzle": 0, + "UnrelaxFrameOneMuzzle_Last": 0 + }, + "StepStartStickHistoryFrame": 5, + "StepStartStickThresholdY": 0.9, + "WeakSwingASFrame": 36, + "WeakSwingFrame": 26, + "WeakSwingMoveVelLimit": 0.06, + "WeakSwingPostDelayFrame": 22, + "WeakSwingShotBulletFrame": 9, + "WeakSwingShotSlashFrame": 6, + "InkConsume@3.1.0": 0.04 + } + } + }, + "8010": { + "BulletSaberHorizontalParam": { + "BurstParam": { + "BurstFrame": 4, + "SplashColRadius": 0.1, + "SplashDrawRadius": 0.2, + "SplashPaintRadius": 2.2 + }, + "CollisionParam": { + "CoreIndex": 1, + "OffsetArray": [ + { + "X": -0.7, + "Y": 0, + "Z": -0.2 + }, + { + "X": 0, + "Y": 0, + "Z": 0 + }, + { + "X": 0.7, + "Y": 0, + "Z": -0.2 + } + ], + "ParamArray": [ + { + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.42, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.37 + }, + { + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.42, + "InitRadiusForField": 0.3, + "InitRadiusForPlayer": 0.42 + }, + { + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.42, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.37 + } + ], + "OffsetArray@1.2.0": [ + { + "X": -0.5, + "Y": 0.4, + "Z": -0.2 + }, + { + "X": 0, + "Y": 0, + "Z": 0 + }, + { + "X": 0.5, + "Y": 0.4, + "Z": -0.2 + } + ], + "ParamArray@10.1.0": [ + { + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.3, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.25 + }, + { + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.3, + "InitRadiusForField": 0.3, + "InitRadiusForPlayer": 0.3 + }, + { + "ChangeFrameForPlayer": 0, + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.3, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.25 + } + ] + }, + "DamageParam": { + "HitDamage": 300 + }, + "MoveParam": { + "BrakeAirResist": 0, + "BrakeGravity": 0, + "BrakeToFreeStateFrame": 0, + "BrakeToFreeVelocityXZ": 0, + "BrakeToFreeVelocityY": 0, + "FreeAirResist": 0, + "FreeGravity": 0, + "GoStraightToBrakeStateFrame": 5, + "SpawnSpeed": 3.3 + }, + "PaintParam": { + "DepthScaleMax": 1.4, + "DepthScaleMin": 0.4, + "PaintDegreeMax": 60, + "WidthHalf": 2.3 + }, + "SplashPaintParam": { + "DepthScaleMax": 3, + "DepthScaleMin": 1, + "WidthHalf": 1.28, + "WidthHalfNearest": 1.792 + }, + "SplashSpawnParam": { + "DropInterval": 2, + "NearestLen": 1.25, + "SplashNumMax": 8, + "SplitNum": 8, + "DropInterval@1.2.0": 3 + } + }, + "BulletSaberSlashHorizontalParam": { + "DamageParam": { + "AccelForCastle": 100, + "DamageValue": 150 + }, + "MoveParam": { + "AliveFrame": 4 + }, + "ShapeParam": { + "BoxCenter": { + "X": 0, + "Y": 0, + "Z": 0.4 + }, + "BoxHalfExtents": { + "X": 1.2, + "Y": 0.15, + "Z": 1 + } + } + }, + "BulletSaberSlashVerticalParam": { + "DamageParam": { + "AccelForCastle": 150, + "DamageValue": 1200 + }, + "MoveParam": { + "AliveFrame": 4 + }, + "ShapeParam": { + "BoxCenter": { + "X": 0, + "Y": 0, + "Z": 0 + }, + "BoxHalfExtents": { + "X": 0.25, + "Y": 1.4, + "Z": 0.7 + }, + "CylinderCenterA": { + "X": -0.25, + "Y": 0, + "Z": 0.7 + }, + "CylinderCenterB": { + "X": 0.25, + "Y": 0, + "Z": 0.7 + }, + "HasCylinderShape": true + } + }, + "BulletSaberVerticalParam": { + "BurstParam": { + "BurstFrame": 14, + "SplashColRadius": 0.1, + "SplashDrawRadius": 0.2, + "SplashPaintRadius": 3 + }, + "CollisionParam": { + "CoreIndex": 3, + "OffsetArray": [ + { + "X": 0, + "Y": 1.2, + "Z": -0.3 + }, + { + "X": 0, + "Y": 0.8, + "Z": -0.2 + }, + { + "X": 0, + "Y": 0.4, + "Z": -0.1 + }, + { + "X": 0, + "Y": 0, + "Z": 0 + }, + { + "X": 0, + "Y": -0.4, + "Z": 0.1 + }, + { + "X": 0, + "Y": -0.8, + "Z": 0.2 + }, + { + "X": 0, + "Y": -1.2, + "Z": 0.3 + } + ], + "ParamArray": [ + { + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.37, + "InitRadiusForField": 0.3, + "InitRadiusForPlayer": 0.37 + }, + { + "EndRadiusForField": 0.35, + "EndRadiusForPlayer": 0.42, + "InitRadiusForField": 0.35, + "InitRadiusForPlayer": 0.42 + }, + { + "EndRadiusForField": 0.45, + "EndRadiusForPlayer": 0.52, + "InitRadiusForField": 0.45, + "InitRadiusForPlayer": 0.52 + }, + { + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.57, + "InitRadiusForField": 0.5, + "InitRadiusForPlayer": 0.57 + }, + { + "EndRadiusForField": 0.45, + "EndRadiusForPlayer": 0.52, + "InitRadiusForField": 0.45, + "InitRadiusForPlayer": 0.52 + }, + { + "EndRadiusForField": 0.35, + "EndRadiusForPlayer": 0.42, + "InitRadiusForField": 0.35, + "InitRadiusForPlayer": 0.42 + }, + { + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.37, + "InitRadiusForField": 0.3, + "InitRadiusForPlayer": 0.37 + } + ], + "ParamArray@10.1.0": [ + { + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.3, + "InitRadiusForField": 0.3, + "InitRadiusForPlayer": 0.3 + }, + { + "EndRadiusForField": 0.35, + "EndRadiusForPlayer": 0.35, + "InitRadiusForField": 0.35, + "InitRadiusForPlayer": 0.35 + }, + { + "EndRadiusForField": 0.45, + "EndRadiusForPlayer": 0.45, + "InitRadiusForField": 0.45, + "InitRadiusForPlayer": 0.45 + }, + { + "EndRadiusForField": 0.5, + "EndRadiusForPlayer": 0.5, + "InitRadiusForField": 0.5, + "InitRadiusForPlayer": 0.5 + }, + { + "EndRadiusForField": 0.45, + "EndRadiusForPlayer": 0.45, + "InitRadiusForField": 0.45, + "InitRadiusForPlayer": 0.45 + }, + { + "EndRadiusForField": 0.35, + "EndRadiusForPlayer": 0.35, + "InitRadiusForField": 0.35, + "InitRadiusForPlayer": 0.35 + }, + { + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.3, + "InitRadiusForField": 0.3, + "InitRadiusForPlayer": 0.3 + } + ] + }, + "DamageParam": { + "HasGuard": false, + "HitDamage": 600 + }, + "MoveParam": { + "BrakeAirResist": 0, + "BrakeGravity": 0.02, + "BrakeToFreeStateFrame": 0, + "BrakeToFreeVelocityXZ": 0, + "BrakeToFreeVelocityY": 0, + "FreeAirResist": 0, + "FreeGravity": 0.1, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 10, + "SpawnSpeed": 1.2 + }, + "SplashPaintParam": { + "DepthScaleMax": 2, + "WidthHalf": 1.28 + }, + "SplashSpawnParam": { + "DropInterval": 1.5, + "SplashNumMax": 14, + "DropInterval@1.2.0": 1 + } + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "WeaponSpeedType": "Fast" + }, + "spl__WeaponSaberParam": { + "ChargeParam": { + "AirChargeRateByInkEmpty": 3, + "ChargeFrameFullCharge": 14, + "ChargeFrameMinCharge": 5, + "InkConsumeFullCharge": 0.06, + "InkConsumeMinCharge": 0.035, + "InkRecoverStop": 30, + "MoveSpeedFullCharge": 0.4, + "ChargeFrameFullCharge@9.1.0": 16 + }, + "FootSplashPaintParam": { + "DepthMaxDropHeight": 0, + "DepthMinDropHeight": 0, + "DepthScaleMax": 1, + "DepthScaleMin": 0, + "WidthHalf": 0, + "WidthHalfNearest": 2 + }, + "ShotGuideParam": { + "ChargeStepSwingShotGuideFrame": 20, + "ChargeSwingShotGuideFrame": 9, + "HorizontalSightFrame": 4, + "HorizontalSphereIndex": 1, + "VerticalSightFrame": 14, + "VerticalSphereIndex": 3 + }, + "SwingParam": { + "ChargeMoveVelLimit": 0.0945, + "ChargeSwingASFrame": 30, + "ChargeSwingFrame": 22, + "ChargeSwingPostDelayFrame": 22, + "ChargeSwingShotBulletFrame": 6, + "ChargeSwingShotSlashFrame": 3, + "ChargeSwingStepShotBulletFrame": 17, + "ChargeSwingStepShotSlashFrame": 14, + "InkConsume": 0.03, + "InkRecoverStop": 30, + "InkRecoverStop_ChargeSwing": 30, + "IsEnableStep": true, + "IsShotEnable": true, + "ReserveAcceptFrame": 14, + "ShotBulletOffset_L": { + "X": 0, + "Y": 1, + "Z": 1.4 + }, + "ShotBulletOffset_R": { + "X": 0, + "Y": 1, + "Z": 1.4 + }, + "ShotBulletOffset_Vertical": { + "X": 0, + "Y": 2.2, + "Z": 0.8 + }, + "ShotSlashOffset_L": { + "X": 0, + "Y": 0.9, + "Z": 0.3 + }, + "ShotSlashOffset_R": { + "X": 0, + "Y": 0.9, + "Z": 0.3 + }, + "ShotSlashOffset_Vertical": { + "X": 0, + "Y": 1.2, + "Z": 0.5 + }, + "SideStepParam": { + "ChargeFrame": 4, + "InkConsume": 0, + "InkRecoverStop": 0, + "InputReqAcceptFrame": 0, + "MoveDist": 2, + "MoveFrame": 3, + "MoveStepKd": 0.3, + "RepeatCnt": 1, + "SlipMoveDistAir": 1, + "SlipMoveFrame": 0, + "TimeScale": 1, + "TimeScaleFrm": 0, + "UnrelaxFrameMove": 0, + "UnrelaxFrameMove_Last": 12, + "UnrelaxFrameNoSideStep": 0, + "UnrelaxFrameNoSideStep_Last": 12, + "UnrelaxFrameNoSquid": 0, + "UnrelaxFrameNoSquid_Last": 12, + "UnrelaxFrameNoWeapon": 0, + "UnrelaxFrameNoWeapon_Last": 26, + "UnrelaxFrameOneMuzzle": 0, + "UnrelaxFrameOneMuzzle_Last": 0 + }, + "StepStartStickHistoryFrame": 5, + "StepStartStickThresholdY": 0.9, + "WeakSwingASFrame": 22, + "WeakSwingFrame": 16, + "WeakSwingMoveVelLimit": 0.0945, + "WeakSwingPostDelayFrame": 15, + "WeakSwingShotBulletFrame": 6, + "WeakSwingShotSlashFrame": 3 + } + } + }, + "8020": { + "BulletSaberHorizontalParam": { + "BurstParam": { + "BurstFrame": 6, + "SplashColRadius": 0.1, + "SplashDrawRadius": 0.2, + "SplashPaintRadius": 2.2 + }, + "CollisionParam": { + "CoreIndex": 3, + "OffsetArray": [ + { + "X": -1.2, + "Y": 0, + "Z": -0.2 + }, + { + "X": -0.8, + "Y": 0, + "Z": -0.125 + }, + { + "X": -0.4, + "Y": 0, + "Z": -0.075 + }, + { + "X": 0, + "Y": 0, + "Z": 0 + }, + { + "X": 0.4, + "Y": 0, + "Z": -0.075 + }, + { + "X": 0.8, + "Y": 0, + "Z": -0.125 + }, + { + "X": 1.2, + "Y": 0, + "Z": -0.2 + } + ], + "ParamArray": [ + { + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.37, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.37 + }, + { + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.37, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.37 + }, + { + "EndRadiusForField": 0.275, + "EndRadiusForPlayer": 0.395, + "InitRadiusForField": 0.275, + "InitRadiusForPlayer": 0.395 + }, + { + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.42, + "InitRadiusForField": 0.3, + "InitRadiusForPlayer": 0.42 + }, + { + "EndRadiusForField": 0.275, + "EndRadiusForPlayer": 0.395, + "InitRadiusForField": 0.275, + "InitRadiusForPlayer": 0.395 + }, + { + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.37, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.37 + }, + { + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.37, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.37 + } + ], + "ParamArray@10.1.0": [ + { + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.25, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.25 + }, + { + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.25, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.25 + }, + { + "EndRadiusForField": 0.275, + "EndRadiusForPlayer": 0.275, + "InitRadiusForField": 0.275, + "InitRadiusForPlayer": 0.275 + }, + { + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.3, + "InitRadiusForField": 0.3, + "InitRadiusForPlayer": 0.3 + }, + { + "EndRadiusForField": 0.275, + "EndRadiusForPlayer": 0.275, + "InitRadiusForField": 0.275, + "InitRadiusForPlayer": 0.275 + }, + { + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.25, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.25 + }, + { + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.25, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.25 + } + ] + }, + "DamageParam": { + "HasGuard": false, + "HitDamage": 400, + "IsSleepAfterDefenceBullet": false + }, + "MoveParam": { + "BrakeAirResist": 0, + "BrakeGravity": 0, + "BrakeToFreeStateFrame": 0, + "BrakeToFreeVelocityXZ": 0, + "BrakeToFreeVelocityY": 0, + "FreeAirResist": 0, + "FreeGravity": 0, + "GoStraightToBrakeStateFrame": 6, + "SpawnSpeed": 2.3 + }, + "PaintParam": { + "DepthScaleMax": 1.4, + "DepthScaleMin": 0.4, + "PaintDegreeMax": 60, + "WidthHalf": 2.6 + }, + "SplashPaintParam": { + "DepthScaleMax": 1.5, + "WidthHalf": 2.112, + "WidthHalfNearest": 1.76, + "WidthHalf@9.2.0": 2.4, + "WidthHalfNearest@9.2.0": 2 + }, + "SplashSpawnParam": { + "DropInterval": 2, + "NearestLen": 1.25, + "RandomSpawnVelXMax": 0.055, + "RandomSpawnVelYMax": 0.015, + "RandomSpawnVelZMax": 0.02, + "RandomSpawnVelZMin": 0.01, + "SplashNumMax": 8, + "SplitNum": 8 + }, + "WallDropMoveParam": { + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodSecondTargetSpeed": 0.08 + }, + "WallDropPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1.55 + } + }, + "BulletSaberSlashHorizontalParam": { + "DamageParam": { + "AccelForCastle": 100, + "DamageValue": 300 + }, + "MoveParam": { + "AliveFrame": 4 + }, + "ShapeParam": { + "BoxCenter": { + "X": 0, + "Y": 0, + "Z": 0.4 + }, + "BoxHalfExtents": { + "X": 1.8, + "Y": 0.25, + "Z": 1.6 + }, + "CylinderCenterA": { + "X": -2.5, + "Y": 0.5, + "Z": 1 + }, + "CylinderCenterB": { + "X": 2.5, + "Y": 0.5, + "Z": 1 + }, + "CylinderRadius": 2.5, + "HasCylinderShape": false + } + }, + "BulletSaberSlashVerticalParam": { + "DamageParam": { + "AccelForCastle": 150, + "DamageValue": 1600 + }, + "MoveParam": { + "AliveFrame": 4 + }, + "ShapeParam": { + "BoxCenter": { + "X": 0, + "Y": 0, + "Z": 0 + }, + "BoxHalfExtents": { + "X": 1.8, + "Y": 0.3, + "Z": 1.7 + }, + "CylinderCenterA": { + "X": 0, + "Y": -0.3, + "Z": 1.7 + }, + "CylinderCenterB": { + "X": 0, + "Y": 0.3, + "Z": 1.7 + }, + "CylinderRadius": 1.8, + "HasCylinderShape": true + } + }, + "BulletSaberVerticalParam": { + "BurstParam": { + "BurstFrame": 21, + "SplashColRadius": 0.1, + "SplashDrawRadius": 0.2, + "SplashPaintRadius": 3 + }, + "CollisionParam": { + "CoreIndex": 3, + "OffsetArray": [ + { + "X": 2.4, + "Y": 0, + "Z": -0.2 + }, + { + "X": 1.6, + "Y": 0, + "Z": -0.125 + }, + { + "X": 0.8, + "Y": 0, + "Z": -0.075 + }, + { + "X": 0, + "Y": 0, + "Z": 0 + }, + { + "X": -0.8, + "Y": 0, + "Z": -0.075 + }, + { + "X": -1.6, + "Y": 0, + "Z": -0.125 + }, + { + "X": -2.4, + "Y": 0, + "Z": -0.2 + } + ], + "ParamArray": [ + { + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.32, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.32 + }, + { + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.32, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.32 + }, + { + "EndRadiusForField": 0.275, + "EndRadiusForPlayer": 0.345, + "InitRadiusForField": 0.275, + "InitRadiusForPlayer": 0.345 + }, + { + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.37, + "InitRadiusForField": 0.3, + "InitRadiusForPlayer": 0.37 + }, + { + "EndRadiusForField": 0.275, + "EndRadiusForPlayer": 0.345, + "InitRadiusForField": 0.275, + "InitRadiusForPlayer": 0.345 + }, + { + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.32, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.32 + }, + { + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.32, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.32 + } + ], + "ParamArray@10.1.0": [ + { + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.25, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.25 + }, + { + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.25, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.25 + }, + { + "EndRadiusForField": 0.275, + "EndRadiusForPlayer": 0.275, + "InitRadiusForField": 0.275, + "InitRadiusForPlayer": 0.275 + }, + { + "EndRadiusForField": 0.3, + "EndRadiusForPlayer": 0.3, + "InitRadiusForField": 0.3, + "InitRadiusForPlayer": 0.3 + }, + { + "EndRadiusForField": 0.275, + "EndRadiusForPlayer": 0.275, + "InitRadiusForField": 0.275, + "InitRadiusForPlayer": 0.275 + }, + { + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.25, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.25 + }, + { + "EndRadiusForField": 0.25, + "EndRadiusForPlayer": 0.25, + "InitRadiusForField": 0.25, + "InitRadiusForPlayer": 0.25 + } + ] + }, + "DamageParam": { + "HasGuard": false, + "HitDamage": 800 + }, + "MoveParam": { + "BrakeAirResist": 0, + "BrakeGravity": 0.02, + "BrakeToFreeStateFrame": 0, + "BrakeToFreeVelocityXZ": 0, + "BrakeToFreeVelocityY": 0, + "FreeAirResist": 0, + "FreeGravity": 0.1, + "GoStraightStateEndMaxSpeed": 10, + "GoStraightToBrakeStateFrame": 21, + "SpawnSpeed": 0.7 + }, + "PaintParam": { + "DepthScaleMax": 1.4, + "DepthScaleMin": 0.4, + "PaintDegreeMax": 60, + "WidthHalf": 2.6 + }, + "SplashPaintParam": { + "WidthHalf": 2.8, + "WidthHalfNearest": 2.4 + }, + "SplashSpawnParam": { + "DropInterval": 2.5, + "SplashNumMax": 14 + }, + "WallDropMoveParam": { + "FallPeriodFirstTargetSpeed": 0.08, + "FallPeriodSecondTargetSpeed": 0.08 + }, + "WallDropPaintParam": { + "PaintRadiusFall": 0.8, + "PaintRadiusGround": 0.7, + "PaintRadiusShock": 1.55 + } + }, + "MainEffectiveRangeUpParam": {}, + "MainWeaponSetting": { + "WeaponAccType": "Mid", + "WeaponSpeedType": "Mid" + }, + "spl__WeaponSaberParam": { + "ChargeParam": { + "AirChargeRateByInkEmpty": 3, + "ChargeFrameFullCharge": 20, + "ChargeFrameMinCharge": 5, + "InkConsumeFullCharge": 0.13, + "InkConsumeMinCharge": 0.035, + "InkRecoverStop": 50, + "MoveSpeedFullCharge": 0.35 + }, + "FootSplashPaintParam": { + "DepthMaxDropHeight": 0, + "DepthMinDropHeight": 0, + "DepthScaleMax": 1, + "DepthScaleMin": 0, + "WidthHalf": 0, + "WidthHalfNearest": 2.4 + }, + "IsEnableChargeKeep": false, + "ShotGuideParam": { + "ChargeStepSwingShotGuideFrame": 40, + "ChargeSwingShotGuideFrame": 26, + "HorizontalSightFrame": 6, + "HorizontalSphereIndex": 3, + "VerticalSightFrame": 21, + "VerticalSphereIndex": 3 + }, + "SwingParam": { + "ChargeMoveVelLimit": 0.055, + "ChargeSwingASFrame": 90, + "ChargeSwingFrame": 32, + "ChargeSwingFrameStepAdd": 23, + "ChargeSwingPostDelayFrame": 30, + "ChargeSwingShotBulletFrame": 23, + "ChargeSwingShotSlashFrame": 20, + "ChargeSwingStepShotBulletFrame": 37, + "ChargeSwingStepShotSlashFrame": 34, + "InkConsume": 0.065, + "InkRecoverStop": 50, + "InkRecoverStop_ChargeSwing": 50, + "IsShotEnable": true, + "ReserveAcceptFrame": 14, + "ShotBulletOffset_L": { + "X": 0, + "Y": 1, + "Z": 1.4 + }, + "ShotBulletOffset_R": { + "X": 0, + "Y": 1, + "Z": 1.4 + }, + "ShotBulletOffset_Vertical": { + "X": 0, + "Y": 1, + "Z": 1.4 + }, + "ShotSlashOffset_L": { + "X": 0, + "Y": 0.9, + "Z": 0.3 + }, + "ShotSlashOffset_R": { + "X": 0, + "Y": 0.9, + "Z": 0.3 + }, + "ShotSlashOffset_Vertical": { + "X": 0, + "Y": 0.9, + "Z": 0.3 + }, + "SideStepParam": { + "ChargeFrame": 10, + "InkConsume": 0, + "InkRecoverStop": 0, + "InputReqAcceptFrame": 0, + "MoveDist": 5.5, + "MoveDistKd_OnSlideGnd": 0.5, + "MoveFrame": 15, + "MoveStepKd": 0.95, + "MoveStepKd_Air": 0.98, + "RepeatCnt": 1, + "SlipMoveDistAir": 1, + "SlipMoveDistGnd": 1, + "SlipMoveFrame": 0, + "TimeScale": 1, + "TimeScaleFrm": 0, + "UnrelaxFrameMove": 0, + "UnrelaxFrameMove_Last": 23, + "UnrelaxFrameNoSideStep": 0, + "UnrelaxFrameNoSideStep_Last": 23, + "UnrelaxFrameNoSquid": 0, + "UnrelaxFrameNoSquid_Last": 23, + "UnrelaxFrameNoWeapon": 0, + "UnrelaxFrameNoWeapon_Last": 23, + "UnrelaxFrameOneMuzzle": 0, + "UnrelaxFrameOneMuzzle_Last": 0, + "ChargeFrame@9.2.0": 8 + }, + "StepStartStickHistoryFrame": 5, + "StepStartStickThresholdY": 0.9, + "WeakSwingASFrame": 40, + "WeakSwingFrame": 30, + "WeakSwingMoveVelLimit": 0.055, + "WeakSwingPostDelayFrame": 27, + "WeakSwingShotBulletFrame": 12, + "WeakSwingShotSlashFrame": 9 + } + } + }, + "40000": { + "CollisionParam": {}, + "MoveParam": { + "GoStraightStateEndMaxSpeed": 1.4495, + "GoStraightToBrakeStateFrame": 4, + "SpawnSpeed": 2.2 + }, + "WeaponParam": { + "ShotGuideFrame": 8 + }, + "spl__PlayerGearSkillParam_MainWeaponSetting": {}, + "spl__SpawnBulletAdditionMovePlayerParam": {} + } + }, + "specialPoints": { + "0": { + "current": 190, + "history": [ + { + "version": "11.0.1", + "value": 180 + } + ] + }, + "1": { + "current": 170, + "history": [ + { + "version": "6.0.0", + "value": 180 + } + ] + }, + "10": { + "current": 180, + "history": [] + }, + "11": { + "current": 190, + "history": [ + { + "version": "2.0.0", + "value": 180 + } + ] + }, + "20": { + "current": 210, + "history": [ + { + "version": "11.0.1", + "value": 200 + } + ] + }, + "21": { + "current": 200, + "history": [ + { + "version": "3.1.0", + "value": 200 + }, + { + "version": "7.1.0", + "value": 210 + } + ] + }, + "22": { + "current": 180, + "history": [] + }, + "30": { + "current": 180, + "history": [ + { + "version": "1.2.0", + "value": 200 + }, + { + "version": "2.1.0", + "value": 190 + } + ] + }, + "31": { + "current": 190, + "history": [ + { + "version": "5.0.0", + "value": 200 + } + ] + }, + "32": { + "current": 180, + "history": [] + }, + "40": { + "current": 200, + "history": [ + { + "version": "2.0.0", + "value": 200 + }, + { + "version": "6.0.0", + "value": 190 + }, + { + "version": "7.1.0", + "value": 200 + }, + { + "version": "11.0.1", + "value": 210 + } + ] + }, + "41": { + "current": 190, + "history": [] + }, + "42": { + "current": 190, + "history": [] + }, + "45": { + "current": 200, + "history": [ + { + "version": "2.0.0", + "value": 200 + }, + { + "version": "6.0.0", + "value": 190 + }, + { + "version": "7.1.0", + "value": 200 + }, + { + "version": "11.0.1", + "value": 210 + } + ] + }, + "46": { + "current": 190, + "history": [] + }, + "47": { + "current": 200, + "history": [ + { + "version": "7.1.0", + "value": 200 + }, + { + "version": "11.0.1", + "value": 210 + } + ] + }, + "50": { + "current": 210, + "history": [ + { + "version": "2.0.0", + "value": 200 + }, + { + "version": "6.1.0", + "value": 190 + }, + { + "version": "11.1.0", + "value": 200 + } + ] + }, + "51": { + "current": 190, + "history": [] + }, + "60": { + "current": 200, + "history": [ + { + "version": "1.2.0", + "value": 200 + }, + { + "version": "2.1.0", + "value": 190 + }, + { + "version": "4.1.0", + "value": 180 + }, + { + "version": "6.0.0", + "value": 190 + } + ] + }, + "61": { + "current": 170, + "history": [ + { + "version": "7.1.0", + "value": 180 + } + ] + }, + "70": { + "current": 190, + "history": [ + { + "version": "1.2.0", + "value": 200 + }, + { + "version": "2.0.0", + "value": 190 + }, + { + "version": "10.1.0", + "value": 180 + } + ] + }, + "71": { + "current": 200, + "history": [ + { + "version": "6.0.0", + "value": 210 + } + ] + }, + "72": { + "current": 190, + "history": [] + }, + "80": { + "current": 190, + "history": [ + { + "version": "2.0.0", + "value": 200 + } + ] + }, + "81": { + "current": 210, + "history": [ + { + "version": "3.0.0", + "value": 200 + } + ] + }, + "82": { + "current": 190, + "history": [] + }, + "90": { + "current": 180, + "history": [ + { + "version": "1.2.0", + "value": 200 + }, + { + "version": "5.2.0", + "value": 190 + } + ] + }, + "91": { + "current": 180, + "history": [] + }, + "92": { + "current": 190, + "history": [] + }, + "100": { + "current": 190, + "history": [ + { + "version": "2.0.0", + "value": 200 + } + ] + }, + "101": { + "current": 210, + "history": [ + { + "version": "4.1.0", + "value": 200 + } + ] + }, + "200": { + "current": 170, + "history": [ + { + "version": "6.0.0", + "value": 180 + } + ] + }, + "201": { + "current": 200, + "history": [ + { + "version": "11.0.1", + "value": 180 + }, + { + "version": "11.1.0", + "value": 190 + } + ] + }, + "205": { + "current": 170, + "history": [] + }, + "210": { + "current": 190, + "history": [ + { + "version": "11.0.1", + "value": 180 + } + ] + }, + "211": { + "current": 190, + "history": [ + { + "version": "11.0.1", + "value": 180 + } + ] + }, + "212": { + "current": 180, + "history": [] + }, + "220": { + "current": 210, + "history": [ + { + "version": "7.1.0", + "value": 200 + } + ] + }, + "221": { + "current": 210, + "history": [ + { + "version": "8.1.0", + "value": 200 + } + ] + }, + "230": { + "current": 180, + "history": [] + }, + "231": { + "current": 170, + "history": [ + { + "version": "4.0.0", + "value": 180 + } + ] + }, + "240": { + "current": 190, + "history": [ + { + "version": "5.0.0", + "value": 200 + } + ] + }, + "241": { + "current": 210, + "history": [ + { + "version": "3.1.0", + "value": 200 + } + ] + }, + "250": { + "current": 180, + "history": [] + }, + "251": { + "current": 200, + "history": [ + { + "version": "4.0.0", + "value": 180 + }, + { + "version": "11.0.1", + "value": 190 + } + ] + }, + "252": { + "current": 200, + "history": [] + }, + "260": { + "current": 180, + "history": [] + }, + "261": { + "current": 210, + "history": [ + { + "version": "9.2.0", + "value": 190 + }, + { + "version": "10.1.0", + "value": 200 + } + ] + }, + "300": { + "current": 190, + "history": [ + { + "version": "5.2.0", + "value": 200 + } + ] + }, + "301": { + "current": 200, + "history": [] + }, + "302": { + "current": 200, + "history": [] + }, + "310": { + "current": 190, + "history": [ + { + "version": "1.2.0", + "value": 200 + } + ] + }, + "311": { + "current": 200, + "history": [] + }, + "312": { + "current": 200, + "history": [] + }, + "400": { + "current": 220, + "history": [ + { + "version": "5.0.0", + "value": 200 + }, + { + "version": "7.1.0", + "value": 210 + } + ] + }, + "401": { + "current": 190, + "history": [] + }, + "1000": { + "current": 160, + "history": [ + { + "version": "4.0.0", + "value": 180 + }, + { + "version": "7.1.0", + "value": 170 + } + ] + }, + "1001": { + "current": 190, + "history": [ + { + "version": "3.0.0", + "value": 200 + } + ] + }, + "1002": { + "current": 170, + "history": [ + { + "version": "10.0.0", + "value": 180 + } + ] + }, + "1010": { + "current": 180, + "history": [] + }, + "1011": { + "current": 170, + "history": [ + { + "version": "8.0.0", + "value": 180 + } + ] + }, + "1015": { + "current": 180, + "history": [] + }, + "1020": { + "current": 210, + "history": [ + { + "version": "11.0.1", + "value": 190 + }, + { + "version": "11.1.0", + "value": 200 + } + ] + }, + "1021": { + "current": 190, + "history": [ + { + "version": "7.1.0", + "value": 190 + }, + { + "version": "11.1.0", + "value": 180 + } + ] + }, + "1022": { + "current": 180, + "history": [] + }, + "1030": { + "current": 210, + "history": [ + { + "version": "1.1.1", + "value": 200 + } + ] + }, + "1031": { + "current": 200, + "history": [] + }, + "1040": { + "current": 180, + "history": [ + { + "version": "5.0.0", + "value": 200 + }, + { + "version": "10.0.0", + "value": 190 + } + ] + }, + "1041": { + "current": 180, + "history": [ + { + "version": "7.2.0", + "value": 200 + }, + { + "version": "10.0.0", + "value": 190 + } + ] + }, + "1042": { + "current": 180, + "history": [] + }, + "1100": { + "current": 180, + "history": [] + }, + "1101": { + "current": 190, + "history": [ + { + "version": "11.0.1", + "value": 180 + } + ] + }, + "1110": { + "current": 190, + "history": [ + { + "version": "9.2.0", + "value": 200 + } + ] + }, + "1111": { + "current": 180, + "history": [] + }, + "1112": { + "current": 190, + "history": [ + { + "version": "10.0.0", + "value": 200 + } + ] + }, + "1115": { + "current": 190, + "history": [ + { + "version": "9.2.0", + "value": 200 + } + ] + }, + "1120": { + "current": 190, + "history": [ + { + "version": "7.2.0", + "value": 200 + } + ] + }, + "1121": { + "current": 190, + "history": [] + }, + "1122": { + "current": 190, + "history": [ + { + "version": "10.0.0", + "value": 180 + } + ] + }, + "2000": { + "current": 190, + "history": [ + { + "version": "0.9.9", + "value": 190 + }, + { + "version": "1.0.0", + "value": 180 + } + ] + }, + "2001": { + "current": 180, + "history": [ + { + "version": "10.1.0", + "value": 200 + }, + { + "version": "11.1.0", + "value": 190 + } + ] + }, + "2010": { + "current": 190, + "history": [ + { + "version": "7.1.0", + "value": 200 + } + ] + }, + "2011": { + "current": 200, + "history": [ + { + "version": "10.1.0", + "value": 210 + } + ] + }, + "2012": { + "current": 200, + "history": [] + }, + "2015": { + "current": 190, + "history": [ + { + "version": "7.1.0", + "value": 200 + } + ] + }, + "2020": { + "current": 190, + "history": [ + { + "version": "7.1.0", + "value": 200 + } + ] + }, + "2021": { + "current": 200, + "history": [ + { + "version": "10.1.0", + "value": 210 + } + ] + }, + "2022": { + "current": 200, + "history": [] + }, + "2030": { + "current": 210, + "history": [ + { + "version": "1.2.0", + "value": 200 + } + ] + }, + "2031": { + "current": 210, + "history": [ + { + "version": "7.2.0", + "value": 200 + } + ] + }, + "2040": { + "current": 210, + "history": [ + { + "version": "1.2.0", + "value": 200 + } + ] + }, + "2041": { + "current": 210, + "history": [ + { + "version": "7.2.0", + "value": 200 + } + ] + }, + "2050": { + "current": 190, + "history": [ + { + "version": "6.0.0", + "value": 200 + } + ] + }, + "2051": { + "current": 190, + "history": [ + { + "version": "10.0.0", + "value": 200 + } + ] + }, + "2060": { + "current": 200, + "history": [ + { + "version": "0.9.9", + "value": 200 + }, + { + "version": "1.0.0", + "value": 180 + } + ] + }, + "2061": { + "current": 200, + "history": [] + }, + "2070": { + "current": 220, + "history": [ + { + "version": "7.1.0", + "value": 200 + }, + { + "version": "9.2.0", + "value": 210 + } + ] + }, + "2071": { + "current": 200, + "history": [ + { + "version": "11.1.0", + "value": 210 + } + ] + }, + "3000": { + "current": 220, + "history": [ + { + "version": "8.1.0", + "value": 200 + }, + { + "version": "11.1.0", + "value": 210 + } + ] + }, + "3001": { + "current": 170, + "history": [ + { + "version": "11.1.0", + "value": 180 + } + ] + }, + "3005": { + "current": 220, + "history": [ + { + "version": "8.1.0", + "value": 200 + }, + { + "version": "11.1.0", + "value": 210 + } + ] + }, + "3010": { + "current": 180, + "history": [ + { + "version": "2.1.0", + "value": 190 + } + ] + }, + "3011": { + "current": 200, + "history": [ + { + "version": "4.0.0", + "value": 180 + }, + { + "version": "5.0.0", + "value": 190 + }, + { + "version": "6.0.0", + "value": 200 + }, + { + "version": "10.1.0", + "value": 210 + } + ] + }, + "3012": { + "current": 180, + "history": [] + }, + "3020": { + "current": 210, + "history": [ + { + "version": "1.1.1", + "value": 200 + }, + { + "version": "2.0.0", + "value": 210 + }, + { + "version": "10.1.0", + "value": 220 + } + ] + }, + "3021": { + "current": 190, + "history": [] + }, + "3030": { + "current": 190, + "history": [] + }, + "3031": { + "current": 190, + "history": [ + { + "version": "8.0.0", + "value": 200 + } + ] + }, + "3040": { + "current": 200, + "history": [] + }, + "3041": { + "current": 190, + "history": [ + { + "version": "10.0.0", + "value": 200 + } + ] + }, + "3050": { + "current": 200, + "history": [ + { + "version": "11.1.0", + "value": 190 + } + ] + }, + "3051": { + "current": 190, + "history": [] + }, + "3052": { + "current": 200, + "history": [] + }, + "4000": { + "current": 200, + "history": [ + { + "version": "4.0.0", + "value": 180 + }, + { + "version": "10.1.0", + "value": 190 + } + ] + }, + "4001": { + "current": 200, + "history": [ + { + "version": "6.0.0", + "value": 200 + }, + { + "version": "9.1.0", + "value": 190 + } + ] + }, + "4002": { + "current": 200, + "history": [ + { + "version": "10.0.0", + "value": 190 + } + ] + }, + "4010": { + "current": 210, + "history": [ + { + "version": "11.0.1", + "value": 200 + } + ] + }, + "4011": { + "current": 200, + "history": [] + }, + "4015": { + "current": 210, + "history": [ + { + "version": "11.0.1", + "value": 200 + } + ] + }, + "4020": { + "current": 190, + "history": [] + }, + "4021": { + "current": 200, + "history": [] + }, + "4022": { + "current": 200, + "history": [] + }, + "4030": { + "current": 210, + "history": [ + { + "version": "2.1.0", + "value": 200 + }, + { + "version": "3.1.0", + "value": 190 + }, + { + "version": "4.0.0", + "value": 200 + } + ] + }, + "4031": { + "current": 200, + "history": [] + }, + "4040": { + "current": 190, + "history": [ + { + "version": "0.9.9", + "value": 190 + }, + { + "version": "1.0.0", + "value": 180 + } + ] + }, + "4041": { + "current": 200, + "history": [ + { + "version": "10.0.0", + "value": 210 + } + ] + }, + "4050": { + "current": 200, + "history": [ + { + "version": "6.0.0", + "value": 190 + } + ] + }, + "4051": { + "current": 200, + "history": [ + { + "version": "11.1.0", + "value": 210 + } + ] + }, + "5000": { + "current": 180, + "history": [ + { + "version": "7.1.0", + "value": 180 + }, + { + "version": "11.0.1", + "value": 170 + } + ] + }, + "5001": { + "current": 190, + "history": [] + }, + "5002": { + "current": 190, + "history": [] + }, + "5010": { + "current": 200, + "history": [ + { + "version": "2.0.0", + "value": 200 + }, + { + "version": "11.0.1", + "value": 190 + } + ] + }, + "5011": { + "current": 190, + "history": [ + { + "version": "6.1.0", + "value": 190 + }, + { + "version": "9.2.0", + "value": 200 + } + ] + }, + "5012": { + "current": 190, + "history": [] + }, + "5015": { + "current": 200, + "history": [ + { + "version": "11.0.1", + "value": 190 + } + ] + }, + "5020": { + "current": 180, + "history": [] + }, + "5021": { + "current": 190, + "history": [] + }, + "5030": { + "current": 200, + "history": [] + }, + "5031": { + "current": 200, + "history": [ + { + "version": "5.0.0", + "value": 200 + }, + { + "version": "10.0.0", + "value": 210 + } + ] + }, + "5032": { + "current": 190, + "history": [] + }, + "5040": { + "current": 200, + "history": [] + }, + "5041": { + "current": 190, + "history": [] + }, + "5050": { + "current": 190, + "history": [ + { + "version": "9.2.0", + "value": 200 + } + ] + }, + "5051": { + "current": 200, + "history": [] + }, + "6000": { + "current": 210, + "history": [ + { + "version": "10.0.0", + "value": 200 + } + ] + }, + "6001": { + "current": 210, + "history": [ + { + "version": "10.0.0", + "value": 190 + } + ] + }, + "6005": { + "current": 210, + "history": [ + { + "version": "10.0.0", + "value": 200 + } + ] + }, + "6010": { + "current": 190, + "history": [] + }, + "6011": { + "current": 200, + "history": [] + }, + "6012": { + "current": 180, + "history": [ + { + "version": "10.0.0", + "value": 190 + } + ] + }, + "6020": { + "current": 180, + "history": [] + }, + "6021": { + "current": 180, + "history": [] + }, + "6022": { + "current": 180, + "history": [] + }, + "6030": { + "current": 190, + "history": [] + }, + "6031": { + "current": 190, + "history": [ + { + "version": "9.2.0", + "value": 200 + } + ] + }, + "7010": { + "current": 190, + "history": [ + { + "version": "2.1.0", + "value": 200 + } + ] + }, + "7011": { + "current": 190, + "history": [] + }, + "7012": { + "current": 200, + "history": [] + }, + "7015": { + "current": 190, + "history": [] + }, + "7020": { + "current": 210, + "history": [ + { + "version": "1.1.1", + "value": 200 + } + ] + }, + "7021": { + "current": 200, + "history": [] + }, + "7022": { + "current": 210, + "history": [ + { + "version": "10.0.0", + "value": 200 + } + ] + }, + "7030": { + "current": 200, + "history": [] + }, + "7031": { + "current": 190, + "history": [ + { + "version": "11.1.0", + "value": 200 + } + ] + }, + "8000": { + "current": 210, + "history": [ + { + "version": "5.0.0", + "value": 200 + } + ] + }, + "8001": { + "current": 210, + "history": [] + }, + "8002": { + "current": 190, + "history": [] + }, + "8005": { + "current": 210, + "history": [] + }, + "8010": { + "current": 190, + "history": [ + { + "version": "2.0.0", + "value": 180 + } + ] + }, + "8011": { + "current": 190, + "history": [] + }, + "8012": { + "current": 190, + "history": [] + }, + "8020": { + "current": 210, + "history": [ + { + "version": "9.1.0", + "value": 200 + } + ] + }, + "8021": { + "current": 200, + "history": [] + } + } +} diff --git a/app/features/params/data/damage-rate-history.json b/app/features/params/data/damage-rate-history.json new file mode 100644 index 000000000..ae2b3a7c2 --- /dev/null +++ b/app/features/params/data/damage-rate-history.json @@ -0,0 +1,837 @@ +{ + "metadata": { + "versions": [ + "0.9.9", + "1.0.0", + "1.1.0", + "1.1.1", + "1.2.0", + "2.0.0", + "2.1.0", + "3.0.0", + "3.1.0", + "4.0.0", + "4.1.0", + "5.0.0", + "5.1.0", + "5.2.0", + "6.0.0", + "6.1.0", + "7.0.0", + "7.1.0", + "7.2.0", + "8.0.0", + "8.1.0", + "9.0.0", + "9.1.0", + "9.2.0", + "9.3.0", + "10.0.0", + "10.1.0", + "11.0.0", + "11.0.1", + "11.1.0", + "11.2.0" + ] + }, + "rows": { + "Blaster_BlasterShort": { + "mainWeaponIds": [200, 201, 205], + "subWeaponIds": [], + "specialWeaponIds": [], + "targets": [ + { + "target": "Wsb_Shield", + "current": 2.2, + "history": [ + { + "version": "7.2.0", + "value": 2 + } + ] + } + ] + }, + "BlowerExhale_BombCore": { + "mainWeaponIds": [], + "subWeaponIds": [], + "specialWeaponIds": [8], + "targets": [ + { + "target": "GreatBarrier_Barrier", + "current": 4.2, + "history": [ + { + "version": "0.9.9", + "value": 5.6 + }, + { + "version": "1.0.0", + "value": 1 + }, + { + "version": "3.1.0", + "value": 5.6 + } + ] + }, + { + "target": "GreatBarrier_WeakPoint", + "current": 2.1, + "history": [ + { + "version": "0.9.9", + "value": 2.8 + }, + { + "version": "1.0.0", + "value": 1 + }, + { + "version": "3.1.0", + "value": 2.8 + } + ] + } + ] + }, + "Bomb_DirectHit": { + "mainWeaponIds": [], + "subWeaponIds": [2, 7, 0], + "specialWeaponIds": [], + "targets": [ + { + "target": "GreatBarrier_WeakPoint", + "current": 1.5, + "history": [ + { + "version": "0.9.9", + "value": 1.5 + }, + { + "version": "1.0.0", + "value": 0.5 + } + ] + } + ] + }, + "Bomb_TorpedoSplashBurst": { + "mainWeaponIds": [], + "subWeaponIds": [13], + "specialWeaponIds": [], + "targets": [ + { + "target": "GreatBarrier_WeakPoint", + "current": 1, + "history": [ + { + "version": "0.9.9", + "value": 1 + }, + { + "version": "1.0.0", + "value": 0.25 + } + ] + } + ] + }, + "BrushSplash": { + "mainWeaponIds": [1100, 1101, 1110, 1111, 1112, 1115], + "subWeaponIds": [], + "specialWeaponIds": [], + "targets": [ + { + "target": "Wsb_Shield", + "current": 1.98, + "history": [ + { + "version": "7.2.0", + "value": 1.8 + } + ] + } + ] + }, + "Castle": { + "mainWeaponIds": [], + "subWeaponIds": [], + "specialWeaponIds": [17], + "targets": [ + { + "target": "GreatBarrier_Barrier", + "current": 2.5, + "history": [ + { + "version": "3.1.0", + "value": 5 + } + ] + }, + { + "target": "GreatBarrier_WeakPoint", + "current": 2.5, + "history": [ + { + "version": "3.1.0", + "value": 5 + } + ] + } + ] + }, + "Jetpack_BombCore": { + "mainWeaponIds": [], + "subWeaponIds": [], + "specialWeaponIds": [10], + "targets": [ + { + "target": "Chariot", + "current": 3.5, + "history": [ + { + "version": "2.1.0", + "value": 1.4 + } + ] + }, + { + "target": "GreatBarrier_Barrier", + "current": 1.82, + "history": [ + { + "version": "3.1.0", + "value": 2.8 + }, + { + "version": "8.0.0", + "value": 2.1 + }, + { + "version": "11.1.0", + "value": 1.4 + } + ] + }, + { + "target": "GreatBarrier_WeakPoint", + "current": 1.365, + "history": [ + { + "version": "3.1.0", + "value": 2.1 + }, + { + "version": "8.0.0", + "value": 1.575 + }, + { + "version": "11.1.0", + "value": 1.05 + } + ] + } + ] + }, + "Jetpack_Bullet": { + "mainWeaponIds": [], + "subWeaponIds": [], + "specialWeaponIds": [10], + "targets": [ + { + "target": "Chariot", + "current": 2.0835, + "history": [ + { + "version": "2.1.0", + "value": 0.8334 + } + ] + }, + { + "target": "GreatBarrier_Barrier", + "current": 1.82, + "history": [ + { + "version": "3.1.0", + "value": 2.8 + }, + { + "version": "8.0.0", + "value": 2.1 + }, + { + "version": "11.1.0", + "value": 1.4 + } + ] + }, + { + "target": "GreatBarrier_WeakPoint", + "current": 1.365, + "history": [ + { + "version": "3.1.0", + "value": 2.1 + }, + { + "version": "8.0.0", + "value": 1.575 + }, + { + "version": "11.1.0", + "value": 1.05 + } + ] + } + ] + }, + "MultiMissile_BombCore": { + "mainWeaponIds": [], + "subWeaponIds": [], + "specialWeaponIds": [4], + "targets": [ + { + "target": "GreatBarrier_Barrier", + "current": 0.5, + "history": [ + { + "version": "3.1.0", + "value": 1 + } + ] + }, + { + "target": "GreatBarrier_WeakPoint", + "current": 0.375, + "history": [ + { + "version": "3.1.0", + "value": 0.75 + } + ] + } + ] + }, + "MultiMissile_Bullet": { + "mainWeaponIds": [], + "subWeaponIds": [], + "specialWeaponIds": [4], + "targets": [ + { + "target": "GreatBarrier_Barrier", + "current": 0.5, + "history": [ + { + "version": "3.1.0", + "value": 1 + } + ] + }, + { + "target": "GreatBarrier_WeakPoint", + "current": 0.375, + "history": [ + { + "version": "3.1.0", + "value": 0.75 + } + ] + } + ] + }, + "NiceBall": { + "mainWeaponIds": [], + "subWeaponIds": [], + "specialWeaponIds": [6], + "targets": [ + { + "target": "Chariot", + "current": 4, + "history": [ + { + "version": "9.3.0", + "value": 2 + } + ] + }, + { + "target": "GreatBarrier_Barrier", + "current": 2, + "history": [ + { + "version": "3.1.0", + "value": 3 + }, + { + "version": "9.1.0", + "value": 1.5 + } + ] + }, + { + "target": "GreatBarrier_WeakPoint", + "current": 2, + "history": [ + { + "version": "3.1.0", + "value": 3 + }, + { + "version": "9.1.0", + "value": 1.5 + } + ] + } + ] + }, + "RollerSplash_Compact": { + "mainWeaponIds": [1000, 1001, 1002], + "subWeaponIds": [], + "specialWeaponIds": [], + "targets": [ + { + "target": "Wsb_Shield", + "current": 2.64, + "history": [ + { + "version": "7.2.0", + "value": 2.4 + } + ] + } + ] + }, + "RollerSplash": { + "mainWeaponIds": [1010, 1011, 1015], + "subWeaponIds": [], + "specialWeaponIds": [], + "targets": [ + { + "target": "Wsb_Shield", + "current": 2.64, + "history": [ + { + "version": "7.2.0", + "value": 2.4 + } + ] + } + ] + }, + "Saber_ChargeShot": { + "mainWeaponIds": [8020, 8021, 8010, 8011, 8012, 8000, 8001, 8002, 8005], + "subWeaponIds": [], + "specialWeaponIds": [], + "targets": [ + { + "target": "NiceBall_Armor", + "current": 1.82, + "history": [ + { + "version": "11.1.0", + "value": 2.6 + } + ] + }, + { + "target": "ShockSonar", + "current": 2.4, + "history": [ + { + "version": "9.3.0", + "value": 4.8 + } + ] + } + ] + }, + "Saber_ChargeSlash": { + "mainWeaponIds": [8020, 8021, 8010, 8011, 8012, 8000, 8001, 8002, 8005], + "subWeaponIds": [], + "specialWeaponIds": [], + "targets": [ + { + "target": "NiceBall_Armor", + "current": 0.455, + "history": [ + { + "version": "11.1.0", + "value": 0.65 + } + ] + } + ] + }, + "Saber_Shot": { + "mainWeaponIds": [8020, 8021, 8010, 8011, 8012, 8000, 8001, 8002, 8005], + "subWeaponIds": [], + "specialWeaponIds": [], + "targets": [ + { + "target": "NiceBall_Armor", + "current": 1.82, + "history": [ + { + "version": "11.1.0", + "value": 2.6 + } + ] + }, + { + "target": "ShockSonar", + "current": 2.4, + "history": [ + { + "version": "9.3.0", + "value": 4.8 + } + ] + } + ] + }, + "Saber_Slash": { + "mainWeaponIds": [8020, 8021, 8010, 8011, 8012, 8000, 8001, 8002, 8005], + "subWeaponIds": [], + "specialWeaponIds": [], + "targets": [ + { + "target": "NiceBall_Armor", + "current": 0.91, + "history": [ + { + "version": "11.1.0", + "value": 1.3 + } + ] + } + ] + }, + "TripleTornado": { + "mainWeaponIds": [], + "subWeaponIds": [], + "specialWeaponIds": [14], + "targets": [ + { + "target": "Chariot", + "current": 3, + "history": [ + { + "version": "9.3.0", + "value": 2 + } + ] + }, + { + "target": "GreatBarrier_Barrier", + "current": 1, + "history": [ + { + "version": "3.1.0", + "value": 2 + } + ] + }, + { + "target": "GreatBarrier_WeakPoint", + "current": 1, + "history": [ + { + "version": "3.1.0", + "value": 2 + } + ] + } + ] + }, + "UltraShot": { + "mainWeaponIds": [], + "subWeaponIds": [], + "specialWeaponIds": [1], + "targets": [ + { + "target": "Chariot", + "current": 1.8, + "history": [ + { + "version": "2.1.0", + "value": 1.5 + } + ] + }, + { + "target": "GreatBarrier_Barrier", + "current": 1.3, + "history": [ + { + "version": "3.1.0", + "value": 2 + }, + { + "version": "8.0.0", + "value": 1.5 + }, + { + "version": "11.1.0", + "value": 1 + } + ] + }, + { + "target": "GreatBarrier_WeakPoint", + "current": 0.975, + "history": [ + { + "version": "3.1.0", + "value": 1.5 + }, + { + "version": "8.0.0", + "value": 1.125 + }, + { + "version": "11.1.0", + "value": 0.75 + } + ] + } + ] + }, + "UltraStamp_Swing": { + "mainWeaponIds": [], + "subWeaponIds": [], + "specialWeaponIds": [11], + "targets": [ + { + "target": "Chariot", + "current": 4.5, + "history": [ + { + "version": "2.1.0", + "value": 1.5 + } + ] + }, + { + "target": "GreatBarrier_Barrier", + "current": 1.5, + "history": [ + { + "version": "3.1.0", + "value": 3 + } + ] + }, + { + "target": "GreatBarrier_WeakPoint", + "current": 1.5, + "history": [ + { + "version": "3.1.0", + "value": 3 + } + ] + } + ] + }, + "UltraStamp_Throw_BombCore": { + "mainWeaponIds": [], + "subWeaponIds": [], + "specialWeaponIds": [11], + "targets": [ + { + "target": "Bomb_TorpedoBullet", + "current": 0.545, + "history": [ + { + "version": "9.2.0", + "value": 1 + } + ] + }, + { + "target": "BulletUmbrellaCanopyCompact", + "current": 4.091, + "history": [ + { + "version": "9.2.0", + "value": 5 + } + ] + }, + { + "target": "BulletUmbrellaCanopyNormal", + "current": 4.091, + "history": [ + { + "version": "9.2.0", + "value": 5 + } + ] + }, + { + "target": "BulletUmbrellaCanopyNormal_Launched", + "current": 4.091, + "history": [ + { + "version": "9.2.0", + "value": 5 + } + ] + }, + { + "target": "BulletShelterCanopyFocus", + "current": 4.091, + "history": [ + { + "version": "9.2.0", + "value": 5 + } + ] + }, + { + "target": "BulletShelterCanopyFocus_Launched", + "current": 4.091, + "history": [ + { + "version": "9.2.0", + "value": 5 + } + ] + }, + { + "target": "BulletUmbrellaCanopyWide", + "current": 4.091, + "history": [ + { + "version": "9.2.0", + "value": 5 + } + ] + }, + { + "target": "BulletUmbrellaCanopyWide_Launched", + "current": 4.091, + "history": [ + { + "version": "9.2.0", + "value": 5 + } + ] + }, + { + "target": "Chariot", + "current": 3.273, + "history": [ + { + "version": "2.1.0", + "value": 2 + }, + { + "version": "9.2.0", + "value": 6 + } + ] + }, + { + "target": "Gachihoko_Barrier", + "current": 1.909, + "history": [ + { + "version": "9.2.0", + "value": 3.5 + } + ] + }, + { + "target": "GreatBarrier_Barrier", + "current": 1.909, + "history": [ + { + "version": "9.2.0", + "value": 3.5 + } + ] + }, + { + "target": "GreatBarrier_WeakPoint", + "current": 1.4318, + "history": [ + { + "version": "9.2.0", + "value": 2.625 + } + ] + }, + { + "target": "NiceBall_Armor", + "current": 1.364, + "history": [ + { + "version": "9.2.0", + "value": 2.5 + } + ] + }, + { + "target": "ShockSonar", + "current": 2.182, + "history": [ + { + "version": "9.2.0", + "value": 4 + } + ] + }, + { + "target": "Wsb_Flag", + "current": 1.636, + "history": [ + { + "version": "9.2.0", + "value": 3 + } + ] + }, + { + "target": "Wsb_Shield", + "current": 2.182, + "history": [ + { + "version": "9.2.0", + "value": 4 + } + ] + }, + { + "target": "Wsb_Sprinkler", + "current": 1.636, + "history": [ + { + "version": "9.2.0", + "value": 3 + } + ] + } + ] + }, + "UltraStamp_Throw": { + "mainWeaponIds": [], + "subWeaponIds": [], + "specialWeaponIds": [11], + "targets": [ + { + "target": "Chariot", + "current": 3.273, + "history": [ + { + "version": "2.1.0", + "value": 1.091 + } + ] + } + ] + } + } +} diff --git a/app/features/params/loaders/params.$slug.server.ts b/app/features/params/loaders/params.$slug.server.ts new file mode 100644 index 000000000..a1a8b7d8a --- /dev/null +++ b/app/features/params/loaders/params.$slug.server.ts @@ -0,0 +1,306 @@ +import type { LoaderFunctionArgs } from "react-router"; +import { mainWeaponParams } from "~/features/build-analyzer/core/utils"; +import { i18next } from "~/modules/i18n/i18next.server"; +import type { + MainWeaponId, + SpecialWeaponId, + SubWeaponId, +} from "~/modules/in-game-lists/types"; +import { + specialWeaponIds, + subWeaponIds, + weaponIdToBaseWeaponId, + weaponIdToType, +} from "~/modules/in-game-lists/weapon-ids"; +import { + specialWeaponNameSlugToId, + subWeaponNameSlugToId, + weaponNameSlugToId, +} from "~/utils/unslugify.server"; +import { mySlugify } from "~/utils/urls"; +import * as WeaponParams from "../core/WeaponParams"; +import specialWeaponParamsData from "../data/all-version-special-params.json"; +import subWeaponParamsData from "../data/all-version-sub-params.json"; +import weaponParamsData from "../data/all-version-weapon-params.json"; +import damageRateHistoryData from "../data/damage-rate-history.json"; +import type { + DamageMultiplierWithHistory, + IncomingDamageMultiplierWithHistory, + SpecialPointWithHistory, + WeaponParamKind, +} from "../weapon-params-types"; + +const mainParamsData = weaponParamsData as WeaponParams.AllVersionParams; +const subParamsData = subWeaponParamsData as WeaponParams.AllVersionParams; +const specialParamsData = + specialWeaponParamsData as WeaponParams.AllVersionParams; + +export const loader = async ({ request, params }: LoaderFunctionArgs) => { + const t = await i18next.getFixedT(request, ["weapons"], { + lng: "en", + }); + + const mainWeaponId = weaponNameSlugToId(params.slug); + if (typeof mainWeaponId === "number") { + if (weaponIdToType(mainWeaponId) === "ALT_SKIN") { + throw new Response(null, { status: 404 }); + } + return mainWeaponData( + mainWeaponId, + t(`weapons:MAIN_${mainWeaponId}`), + mySlugify(t(`weapons:MAIN_${mainWeaponId}`, { lng: "en" })), + ); + } + + const subWeaponId = subWeaponNameSlugToId(params.slug); + if (typeof subWeaponId === "number") { + return subWeaponData( + subWeaponId, + t(`weapons:SUB_${subWeaponId}`), + mySlugify(t(`weapons:SUB_${subWeaponId}`, { lng: "en" })), + ); + } + + const specialWeaponId = specialWeaponNameSlugToId(params.slug); + if (typeof specialWeaponId === "number") { + return specialWeaponData( + specialWeaponId, + t(`weapons:SPECIAL_${specialWeaponId}`), + mySlugify(t(`weapons:SPECIAL_${specialWeaponId}`, { lng: "en" })), + ); + } + + throw new Response(null, { status: 404 }); +}; + +function damageMultipliersByWeapon( + weaponIds: number[], + kind: WeaponParamKind, +): Record { + const rows = damageRateHistoryData.rows as Parameters< + typeof WeaponParams.damageMultipliersForWeapon + >[0]; + + const result: Record = {}; + for (const id of weaponIds) { + const multipliers = WeaponParams.damageMultipliersForWeapon(rows, id, kind); + if (multipliers.length > 0) { + result[String(id)] = multipliers; + } + } + + return result; +} + +function incomingDamageMultipliersByWeapon( + weaponIds: number[], + kind: "sub" | "special", +): Record { + const rows = damageRateHistoryData.rows as Parameters< + typeof WeaponParams.incomingDamageMultipliersForWeapon + >[0]; + + const result: Record = {}; + for (const id of weaponIds) { + const multipliers = WeaponParams.incomingDamageMultipliersForWeapon( + rows, + id, + kind, + ); + if (multipliers.length > 0) { + result[String(id)] = multipliers; + } + } + + return result; +} + +function mainWeaponData( + weaponId: MainWeaponId, + weaponName: string, + slug: string, +) { + const categoryWeaponIds = WeaponParams.categoryWeaponIds(weaponId); + + const kits = WeaponParams.kitSiblingIds(weaponId).map((id) => { + const { subWeaponId, specialWeaponId } = mainWeaponParams(id); + return { weaponId: id, subWeaponId, specialWeaponId }; + }); + + const versions = mainParamsData.metadata.versions; + + const weaponParams = WeaponParams.parseMany( + categoryWeaponIds, + mainParamsData, + weaponIdToBaseWeaponId, + ); + + const allSpecialPoints = mainParamsData.specialPoints; + + const specialPoints: Record = {}; + for (const id of categoryWeaponIds) { + specialPoints[String(id)] = WeaponParams.kitSiblingIds(id).map((kitId) => ({ + weaponId: kitId, + current: mainWeaponParams(kitId).SpecialPoint, + history: allSpecialPoints?.[String(kitId)]?.history ?? [], + })); + } + + const damageMultipliers = damageMultipliersByWeapon( + categoryWeaponIds, + "main", + ); + + const patchHistory = WeaponParams.patchHistory( + weaponParams[String(weaponId)], + versions, + specialPoints[String(weaponId)] ?? [], + damageMultipliers[String(weaponId)] ?? [], + ); + + const subParams = WeaponParams.parseMany( + kits.map((kit) => kit.subWeaponId), + subParamsData, + ); + + const specialParams = WeaponParams.parseMany( + kits.map((kit) => kit.specialWeaponId), + specialParamsData, + ); + + const specialPointsByKit: Record = {}; + for (const { weaponId: kitId } of kits) { + specialPointsByKit[String(kitId)] = { + weaponId: kitId, + current: mainWeaponParams(kitId).SpecialPoint, + history: allSpecialPoints?.[String(kitId)]?.history ?? [], + }; + } + + const kitPatchHistories = WeaponParams.kitPatchHistories({ + mainParsed: weaponParams[String(weaponId)], + versions, + kits, + specialPointsByKit, + mainDamageMultipliers: damageMultipliers[String(weaponId)] ?? [], + subParams, + subDamageMultipliers: damageMultipliersByWeapon( + kits.map((kit) => kit.subWeaponId), + "sub", + ), + subIncomingDamageMultipliers: incomingDamageMultipliersByWeapon( + kits.map((kit) => kit.subWeaponId), + "sub", + ), + specialParams, + specialDamageMultipliers: damageMultipliersByWeapon( + kits.map((kit) => kit.specialWeaponId), + "special", + ), + specialIncomingDamageMultipliers: incomingDamageMultipliersByWeapon( + kits.map((kit) => kit.specialWeaponId), + "special", + ), + }); + + return { + kind: "main" as WeaponParamKind, + weaponId, + weaponName, + slug, + categoryWeaponIds, + kits, + weaponParams, + specialPoints, + damageMultipliers, + patchHistory, + kitPatchHistories, + versions, + }; +} + +function subWeaponData( + weaponId: SubWeaponId, + weaponName: string, + slug: string, +) { + const versions = subParamsData.metadata.versions; + + const weaponParams = WeaponParams.parseMany(subWeaponIds, subParamsData); + + const damageMultipliers = damageMultipliersByWeapon([...subWeaponIds], "sub"); + + const incomingDamageMultipliers = incomingDamageMultipliersByWeapon( + [...subWeaponIds], + "sub", + ); + + const patchHistory = WeaponParams.patchHistory( + weaponParams[String(weaponId)], + versions, + [], + damageMultipliers[String(weaponId)] ?? [], + incomingDamageMultipliers[String(weaponId)] ?? [], + ); + + return { + kind: "sub" as WeaponParamKind, + weaponId, + weaponName, + slug, + categoryWeaponIds: [...subWeaponIds], + kits: undefined, + weaponParams, + specialPoints: undefined, + damageMultipliers, + patchHistory, + kitPatchHistories: undefined, + versions, + }; +} + +function specialWeaponData( + weaponId: SpecialWeaponId, + weaponName: string, + slug: string, +) { + const versions = specialParamsData.metadata.versions; + + const weaponParams = WeaponParams.parseMany( + specialWeaponIds, + specialParamsData, + ); + + const damageMultipliers = damageMultipliersByWeapon( + [...specialWeaponIds], + "special", + ); + + const incomingDamageMultipliers = incomingDamageMultipliersByWeapon( + [...specialWeaponIds], + "special", + ); + + const patchHistory = WeaponParams.patchHistory( + weaponParams[String(weaponId)], + versions, + [], + damageMultipliers[String(weaponId)] ?? [], + incomingDamageMultipliers[String(weaponId)] ?? [], + ); + + return { + kind: "special" as WeaponParamKind, + weaponId, + weaponName, + slug, + categoryWeaponIds: [...specialWeaponIds], + kits: undefined, + weaponParams, + specialPoints: undefined, + damageMultipliers, + patchHistory, + kitPatchHistories: undefined, + versions, + }; +} diff --git a/app/features/params/routes/params.$slug.tsx b/app/features/params/routes/params.$slug.tsx new file mode 100644 index 000000000..0ca6b5461 --- /dev/null +++ b/app/features/params/routes/params.$slug.tsx @@ -0,0 +1,78 @@ +import type { MetaFunction } from "react-router"; +import { useLoaderData } from "react-router"; +import type { + MainWeaponId, + SpecialWeaponId, + SubWeaponId, +} from "~/modules/in-game-lists/types"; +import type { SerializeFrom } from "~/utils/remix"; +import { metaTags } from "~/utils/remix"; +import type { SendouRouteHandle } from "~/utils/remix.server"; +import { + outlinedMainWeaponImageUrl, + specialWeaponImageUrl, + subWeaponImageUrl, + weaponParamsPage, +} from "~/utils/urls"; +import { WeaponParamsView } from "../components/WeaponParamsView"; +import { loader } from "../loaders/params.$slug.server"; +import type { WeaponParamKind } from "../weapon-params-types"; + +export { loader }; + +export const handle: SendouRouteHandle = { + i18n: ["weapons", "common", "analyzer", "params"], + breadcrumb: ({ match }) => { + const data = match.data as SerializeFrom | undefined; + if (!data) return []; + return [ + { + imgPath: weaponImageUrl(data.kind, data.weaponId), + href: weaponParamsPage(data.slug), + type: "IMAGE", + }, + ]; + }, +}; + +export const meta: MetaFunction = (args) => { + if (!args.data) return []; + return metaTags({ + title: `${args.data.weaponName} parameters`, + description: `${args.data.weaponName} parameters with version history compared across ${comparedAcross(args.data.kind)}.`, + location: args.location, + }); +}; + +export default function WeaponParamsPage() { + const data = useLoaderData(); + + return ( + + ); +} + +function weaponImageUrl(kind: WeaponParamKind, weaponId: number) { + if (kind === "sub") return subWeaponImageUrl(weaponId as SubWeaponId); + if (kind === "special") { + return specialWeaponImageUrl(weaponId as SpecialWeaponId); + } + return outlinedMainWeaponImageUrl(weaponId as MainWeaponId); +} + +function comparedAcross(kind: WeaponParamKind) { + if (kind === "sub") return "all sub weapons"; + if (kind === "special") return "all special weapons"; + return "the weapon's category"; +} diff --git a/app/features/params/weapon-params-constants.ts b/app/features/params/weapon-params-constants.ts new file mode 100644 index 000000000..6fafc80fb --- /dev/null +++ b/app/features/params/weapon-params-constants.ts @@ -0,0 +1,48 @@ +import type { DamageReceiver } from "~/features/object-damage-calculator/calculator-types"; + +/** + * Sentinel `category` used for the special points entry in patch change data, since special + * points are not a regular weapon parameter. The matching `key` is also this value. + */ +export const SPECIAL_POINTS_PARAM_KEY = "__specialPoints__"; + +/** + * Sentinel `category` used for damage multiplier (damage rate vs objects) entries in patch + * change data. The `key` of such a change holds the damage receiver target instead. + */ +export const DAMAGE_MULTIPLIER_PARAM_KEY = "__damageMultiplier__"; + +/** + * Sentinel `category` used for incoming damage multiplier entries in patch change data: a change + * to some *other* weapon's damage rate against the page's sub or special weapon (which is itself a + * damageable object). The `key` holds the damage receiver target, and `attackers` holds the + * weapons whose rate changed. + */ +export const INCOMING_DAMAGE_MULTIPLIER_PARAM_KEY = + "__incomingDamageMultiplier__"; + +/** + * Maps a sub or special weapon to the object {@link DAMAGE_RECEIVERS} target(s) that represent it, + * so the patch history can surface changes to other weapons' damage rates *against* the kit's sub + * or special. Only weapons that exist as a damageable object are listed. + */ +export const INCOMING_DAMAGE_RECEIVERS: Record< + "sub" | "special", + Record +> = { + special: { + 2: ["GreatBarrier_Barrier", "GreatBarrier_WeakPoint"], // Big Bubbler + 6: ["NiceBall_Armor"], // Booyah Bomb + 7: ["ShockSonar"], // Wave Breaker + 8: ["BlowerInhale"], // Ink Vac + 12: ["Chariot"], // Crab Tank + 16: ["Decoy"], // Super Chump + 18: ["BulletPogo"], // Triple Splashdown + }, + sub: { + 3: ["Wsb_Sprinkler"], // Sprinkler + 4: ["Wsb_Shield"], // Splash Wall + 8: ["Wsb_Flag"], // Squid Beakon + 13: ["Bomb_TorpedoBullet"], // Torpedo + }, +}; diff --git a/app/features/params/weapon-params-types.ts b/app/features/params/weapon-params-types.ts new file mode 100644 index 000000000..b156e204f --- /dev/null +++ b/app/features/params/weapon-params-types.ts @@ -0,0 +1,136 @@ +import type { + MainWeaponId, + SpecialWeaponId, + SubWeaponId, +} from "~/modules/in-game-lists/types"; +import type { ParamChangeKind } from "./core/param-directions"; + +export interface WeaponKitInfo { + weaponId: MainWeaponId; + subWeaponId: SubWeaponId; + specialWeaponId: SpecialWeaponId; +} + +export interface ParamValueWithHistory { + current: number | string; + history: Array<{ version: string; value: number | string }>; +} + +/** Which set of weapons a params page compares: main weapons, sub weapons or special weapons. */ +export type WeaponParamKind = "main" | "sub" | "special"; + +const WEAPON_PARAM_KIND_KEY_PREFIX: Record = { + main: "MAIN", + sub: "SUB", + special: "SPECIAL", +}; + +/** The i18next `weapons` namespace key for a weapon of the given {@link WeaponParamKind}. */ +export function weaponTranslationKey(kind: WeaponParamKind, id: number) { + return `weapons:${WEAPON_PARAM_KIND_KEY_PREFIX[kind]}_${id}`; +} + +export interface ParsedWeaponParams { + weaponId: number; + categories: Record>; +} + +export interface ParamDefinition { + category: string; + key: string; + fullKey: string; +} + +/** A single weapon's numeric value for one parameter, used by the cross-weapon comparison chart. */ +export interface ParamComparisonEntry { + weaponId: number; + value: number; + name: string; +} + +export interface SpecialPointWithHistory { + weaponId: MainWeaponId; + current: number; + history: Array<{ version: string; value: number }>; +} + +/** + * History of a weapon's damage multiplier against a single object (a {@link DAMAGE_RECEIVERS} + * target), surfaced only in the patch history. `target` is the receiver key used by the object + * damage calculator. + */ +export interface DamageMultiplierWithHistory { + target: string; + current: number; + history: Array<{ version: string; value: number }>; +} + +/** + * The set of weapons whose damage rate against an object changed together. Carried by an incoming + * damage multiplier {@link PatchChange} so the badge can show the attacking weapons' icons. + */ +export interface IncomingDamageAttackers { + mainWeaponIds: MainWeaponId[]; + subWeaponIds: SubWeaponId[]; + specialWeaponIds: SpecialWeaponId[]; +} + +/** + * History of some attacking weapons' shared damage multiplier against a single object + * ({@link DamageMultiplierWithHistory} from the defender's perspective): the page's sub or special + * weapon is the object being damaged. `target` is the receiver key used by the object damage + * calculator. + */ +export interface IncomingDamageMultiplierWithHistory { + target: string; + attackers: IncomingDamageAttackers; + current: number; + history: Array<{ version: string; value: number }>; +} + +export interface PatchChange { + category: string; + key: string; + from: number | string; + to: number | string; + kind: ParamChangeKind; + /** The specific kit a special points change belongs to. Only set for special points. */ + weaponId?: MainWeaponId; + /** + * Which weapon of a kit the change belongs to. Used by the per-kit patch history to group a + * column's changes under a divider per weapon. Only set for kit patch histories. + */ + source?: WeaponParamKind; + /** The weapons whose rate changed. Only set for incoming damage multiplier changes. */ + attackers?: IncomingDamageAttackers; +} + +export interface WeaponPatch { + version: string; + date: string | null; + changes: PatchChange[]; +} + +/** + * Patch history of a single main weapon kit, folding the main weapon's changes together with its + * sub and special weapon's changes. Each {@link PatchChange} carries a `source` so the changes can + * be grouped per weapon within a patch. + */ +export interface KitPatchHistory { + weaponId: MainWeaponId; + subWeaponId: SubWeaponId; + specialWeaponId: SpecialWeaponId; + patches: WeaponPatch[]; +} + +export interface WeaponParamsTableProps { + kind: WeaponParamKind; + currentWeaponId: number; + categoryWeaponIds: number[]; + weaponParams: Record; + /** Special points are only tracked for main weapons. */ + specialPoints?: Record; + /** Damage multipliers (damage rate vs objects), keyed by weapon id. */ + damageMultipliers?: Record; + versions: string[]; +} diff --git a/app/modules/i18n/resources.browser.ts b/app/modules/i18n/resources.browser.ts index e4a47dd69..6788f8465 100644 --- a/app/modules/i18n/resources.browser.ts +++ b/app/modules/i18n/resources.browser.ts @@ -13,6 +13,7 @@ import gameMisc from "../../../locales/en/game-misc.json"; import gear from "../../../locales/en/gear.json"; import lfg from "../../../locales/en/lfg.json"; import org from "../../../locales/en/org.json"; +import params from "../../../locales/en/params.json"; import q from "../../../locales/en/q.json"; import scrims from "../../../locales/en/scrims.json"; import settings from "../../../locales/en/settings.json"; @@ -40,6 +41,7 @@ export const resources = { gear, lfg, org, + params, q, scrims, settings, diff --git a/app/modules/i18n/resources.server.ts b/app/modules/i18n/resources.server.ts index 4a30761b3..a62341a27 100644 --- a/app/modules/i18n/resources.server.ts +++ b/app/modules/i18n/resources.server.ts @@ -14,6 +14,7 @@ import gameMiscDa from "../../../locales/da/game-misc.json"; import gearDa from "../../../locales/da/gear.json"; import lfgDa from "../../../locales/da/lfg.json"; import orgDa from "../../../locales/da/org.json"; +import paramsDa from "../../../locales/da/params.json"; import qDa from "../../../locales/da/q.json"; import scrimsDa from "../../../locales/da/scrims.json"; import settingsDa from "../../../locales/da/settings.json"; @@ -39,6 +40,7 @@ import gameMiscDe from "../../../locales/de/game-misc.json"; import gearDe from "../../../locales/de/gear.json"; import lfgDe from "../../../locales/de/lfg.json"; import orgDe from "../../../locales/de/org.json"; +import paramsDe from "../../../locales/de/params.json"; import qDe from "../../../locales/de/q.json"; import scrimsDe from "../../../locales/de/scrims.json"; import settingsDe from "../../../locales/de/settings.json"; @@ -64,6 +66,7 @@ import gameMisc from "../../../locales/en/game-misc.json"; import gear from "../../../locales/en/gear.json"; import lfg from "../../../locales/en/lfg.json"; import org from "../../../locales/en/org.json"; +import params from "../../../locales/en/params.json"; import q from "../../../locales/en/q.json"; import scrimsEn from "../../../locales/en/scrims.json"; import settings from "../../../locales/en/settings.json"; @@ -89,6 +92,7 @@ import gameMiscEsEs from "../../../locales/es-ES/game-misc.json"; import gearEsEs from "../../../locales/es-ES/gear.json"; import lfgEsEs from "../../../locales/es-ES/lfg.json"; import orgEsEs from "../../../locales/es-ES/org.json"; +import paramsEsEs from "../../../locales/es-ES/params.json"; import qEsEs from "../../../locales/es-ES/q.json"; import scrimsEsEs from "../../../locales/es-ES/scrims.json"; import settingsEsEs from "../../../locales/es-ES/settings.json"; @@ -114,6 +118,7 @@ import gameMiscEsUs from "../../../locales/es-US/game-misc.json"; import gearEsUs from "../../../locales/es-US/gear.json"; import lfgEsUs from "../../../locales/es-US/lfg.json"; import orgEsUs from "../../../locales/es-US/org.json"; +import paramsEsUs from "../../../locales/es-US/params.json"; import qEsUs from "../../../locales/es-US/q.json"; import scrimsEsUs from "../../../locales/es-US/scrims.json"; import settingsEsUs from "../../../locales/es-US/settings.json"; @@ -139,6 +144,7 @@ import gameMiscFrCa from "../../../locales/fr-CA/game-misc.json"; import gearFrCa from "../../../locales/fr-CA/gear.json"; import lfgFrCa from "../../../locales/fr-CA/lfg.json"; import orgFrCa from "../../../locales/fr-CA/org.json"; +import paramsFrCa from "../../../locales/fr-CA/params.json"; import qFrCa from "../../../locales/fr-CA/q.json"; import scrimsFrCa from "../../../locales/fr-CA/scrims.json"; import settingsFrCa from "../../../locales/fr-CA/settings.json"; @@ -164,6 +170,7 @@ import gameMiscFrEu from "../../../locales/fr-EU/game-misc.json"; import gearFrEu from "../../../locales/fr-EU/gear.json"; import lfgFrEu from "../../../locales/fr-EU/lfg.json"; import orgFrEu from "../../../locales/fr-EU/org.json"; +import paramsFrEu from "../../../locales/fr-EU/params.json"; import qFrEu from "../../../locales/fr-EU/q.json"; import scrimsFrEu from "../../../locales/fr-EU/scrims.json"; import settingsFrEu from "../../../locales/fr-EU/settings.json"; @@ -189,6 +196,7 @@ import gameMiscHe from "../../../locales/he/game-misc.json"; import gearHe from "../../../locales/he/gear.json"; import lfgHe from "../../../locales/he/lfg.json"; import orgHe from "../../../locales/he/org.json"; +import paramsHe from "../../../locales/he/params.json"; import qHe from "../../../locales/he/q.json"; import scrimsHe from "../../../locales/he/scrims.json"; import settingsHe from "../../../locales/he/settings.json"; @@ -214,6 +222,7 @@ import gameMiscIt from "../../../locales/it/game-misc.json"; import gearIt from "../../../locales/it/gear.json"; import lfgIt from "../../../locales/it/lfg.json"; import orgIt from "../../../locales/it/org.json"; +import paramsIt from "../../../locales/it/params.json"; import qIt from "../../../locales/it/q.json"; import scrimsIt from "../../../locales/it/scrims.json"; import settingsIt from "../../../locales/it/settings.json"; @@ -239,6 +248,7 @@ import gameMiscJa from "../../../locales/ja/game-misc.json"; import gearJa from "../../../locales/ja/gear.json"; import lfgJa from "../../../locales/ja/lfg.json"; import orgJa from "../../../locales/ja/org.json"; +import paramsJa from "../../../locales/ja/params.json"; import qJa from "../../../locales/ja/q.json"; import scrimsJa from "../../../locales/ja/scrims.json"; import settingsJa from "../../../locales/ja/settings.json"; @@ -264,6 +274,7 @@ import gameMiscKo from "../../../locales/ko/game-misc.json"; import gearKo from "../../../locales/ko/gear.json"; import lfgKo from "../../../locales/ko/lfg.json"; import orgKo from "../../../locales/ko/org.json"; +import paramsKo from "../../../locales/ko/params.json"; import qKo from "../../../locales/ko/q.json"; import scrimsKo from "../../../locales/ko/scrims.json"; import settingsKo from "../../../locales/ko/settings.json"; @@ -289,6 +300,7 @@ import gameMiscNl from "../../../locales/nl/game-misc.json"; import gearNl from "../../../locales/nl/gear.json"; import lfgNl from "../../../locales/nl/lfg.json"; import orgNl from "../../../locales/nl/org.json"; +import paramsNl from "../../../locales/nl/params.json"; import qNl from "../../../locales/nl/q.json"; import scrimsNl from "../../../locales/nl/scrims.json"; import settingsNl from "../../../locales/nl/settings.json"; @@ -314,6 +326,7 @@ import gameMiscPl from "../../../locales/pl/game-misc.json"; import gearPl from "../../../locales/pl/gear.json"; import lfgPl from "../../../locales/pl/lfg.json"; import orgPl from "../../../locales/pl/org.json"; +import paramsPl from "../../../locales/pl/params.json"; import qPl from "../../../locales/pl/q.json"; import scrimsPl from "../../../locales/pl/scrims.json"; import settingsPl from "../../../locales/pl/settings.json"; @@ -339,6 +352,7 @@ import gameMiscPtBr from "../../../locales/pt-BR/game-misc.json"; import gearPtBr from "../../../locales/pt-BR/gear.json"; import lfgPtBr from "../../../locales/pt-BR/lfg.json"; import orgPtBr from "../../../locales/pt-BR/org.json"; +import paramsPtBr from "../../../locales/pt-BR/params.json"; import qPtBr from "../../../locales/pt-BR/q.json"; import scrimsPtBr from "../../../locales/pt-BR/scrims.json"; import settingsPtBr from "../../../locales/pt-BR/settings.json"; @@ -364,6 +378,7 @@ import gameMiscRu from "../../../locales/ru/game-misc.json"; import gearRu from "../../../locales/ru/gear.json"; import lfgRu from "../../../locales/ru/lfg.json"; import orgRu from "../../../locales/ru/org.json"; +import paramsRu from "../../../locales/ru/params.json"; import qRu from "../../../locales/ru/q.json"; import scrimsRu from "../../../locales/ru/scrims.json"; import settingsRu from "../../../locales/ru/settings.json"; @@ -389,6 +404,7 @@ import gameMiscZh from "../../../locales/zh/game-misc.json"; import gearZh from "../../../locales/zh/gear.json"; import lfgZh from "../../../locales/zh/lfg.json"; import orgZh from "../../../locales/zh/org.json"; +import paramsZh from "../../../locales/zh/params.json"; import qZh from "../../../locales/zh/q.json"; import scrimsZh from "../../../locales/zh/scrims.json"; import settingsZh from "../../../locales/zh/settings.json"; @@ -421,6 +437,7 @@ export const resources = { vods: vodsEsUs, calendar: calendarEsUs, org: orgEsUs, + params: paramsEsUs, badges: badgesEsUs, contributions: contributionsEsUs, team: teamEsUs, @@ -448,6 +465,7 @@ export const resources = { vods: vods, calendar: calendar, org: org, + params: params, badges: badges, contributions: contributions, team: team, @@ -475,6 +493,7 @@ export const resources = { vods: vodsKo, calendar: calendarKo, org: orgKo, + params: paramsKo, badges: badgesKo, contributions: contributionsKo, team: teamKo, @@ -502,6 +521,7 @@ export const resources = { vods: vodsDe, calendar: calendarDe, org: orgDe, + params: paramsDe, badges: badgesDe, contributions: contributionsDe, team: teamDe, @@ -529,6 +549,7 @@ export const resources = { vods: vodsNl, calendar: calendarNl, org: orgNl, + params: paramsNl, badges: badgesNl, contributions: contributionsNl, team: teamNl, @@ -556,6 +577,7 @@ export const resources = { vods: vodsPtBr, calendar: calendarPtBr, org: orgPtBr, + params: paramsPtBr, badges: badgesPtBr, contributions: contributionsPtBr, team: teamPtBr, @@ -583,6 +605,7 @@ export const resources = { vods: vodsZh, calendar: calendarZh, org: orgZh, + params: paramsZh, badges: badgesZh, contributions: contributionsZh, team: teamZh, @@ -610,6 +633,7 @@ export const resources = { vods: vodsFrCa, calendar: calendarFrCa, org: orgFrCa, + params: paramsFrCa, badges: badgesFrCa, contributions: contributionsFrCa, team: teamFrCa, @@ -637,6 +661,7 @@ export const resources = { vods: vodsRu, calendar: calendarRu, org: orgRu, + params: paramsRu, badges: badgesRu, contributions: contributionsRu, team: teamRu, @@ -664,6 +689,7 @@ export const resources = { vods: vodsIt, calendar: calendarIt, org: orgIt, + params: paramsIt, badges: badgesIt, contributions: contributionsIt, team: teamIt, @@ -691,6 +717,7 @@ export const resources = { vods: vodsJa, calendar: calendarJa, org: orgJa, + params: paramsJa, badges: badgesJa, contributions: contributionsJa, team: teamJa, @@ -718,6 +745,7 @@ export const resources = { vods: vodsDa, calendar: calendarDa, org: orgDa, + params: paramsDa, badges: badgesDa, contributions: contributionsDa, team: teamDa, @@ -745,6 +773,7 @@ export const resources = { vods: vodsEsEs, calendar: calendarEsEs, org: orgEsEs, + params: paramsEsEs, badges: badgesEsEs, contributions: contributionsEsEs, team: teamEsEs, @@ -772,6 +801,7 @@ export const resources = { vods: vodsHe, calendar: calendarHe, org: orgHe, + params: paramsHe, badges: badgesHe, contributions: contributionsHe, team: teamHe, @@ -799,6 +829,7 @@ export const resources = { vods: vodsFrEu, calendar: calendarFrEu, org: orgFrEu, + params: paramsFrEu, badges: badgesFrEu, contributions: contributionsFrEu, team: teamFrEu, @@ -826,6 +857,7 @@ export const resources = { vods: vodsPl, calendar: calendarPl, org: orgPl, + params: paramsPl, badges: badgesPl, contributions: contributionsPl, team: teamPl, diff --git a/app/routes.ts b/app/routes.ts index 29aba62e3..d90b64654 100644 --- a/app/routes.ts +++ b/app/routes.ts @@ -242,6 +242,8 @@ export default [ route("/weapon-usage", "features/sendouq/routes/weapon-usage.ts"), + route("/params/:slug", "features/params/routes/params.$slug.tsx"), + route("/tiers", "features/sendouq/routes/tiers.tsx"), route( diff --git a/app/utils/i18n.ts b/app/utils/i18n.ts index 68d571585..4e75d6706 100644 --- a/app/utils/i18n.ts +++ b/app/utils/i18n.ts @@ -30,6 +30,7 @@ const ALL_NAMESPACES = [ "front", "friends", "settings", + "params", ] as const; assertType(); assertType<(typeof ALL_NAMESPACES)[number], Namespace>(); diff --git a/app/utils/unslugify.server.ts b/app/utils/unslugify.server.ts index e5aea25ea..e0dade059 100644 --- a/app/utils/unslugify.server.ts +++ b/app/utils/unslugify.server.ts @@ -1,18 +1,40 @@ -import type { MainWeaponId } from "~/modules/in-game-lists/types"; +import type { + MainWeaponId, + SpecialWeaponId, + SubWeaponId, +} from "~/modules/in-game-lists/types"; import weaponTranslations from "../../locales/en/weapons.json"; import { mySlugify } from "./urls"; -const SLUG_TO_WEAPON_ID = Object.fromEntries( - Object.entries(weaponTranslations) - .filter(([id]) => id.startsWith("MAIN")) - .map(([id, name]) => [ - mySlugify(name), - Number(id.replace("MAIN_", "")) as MainWeaponId, - ]), -) as Record; +function buildSlugToIdMap(prefix: string): Record { + return Object.fromEntries( + Object.entries(weaponTranslations) + .filter(([id]) => id.startsWith(`${prefix}_`)) + .map(([id, name]) => [ + mySlugify(name), + Number(id.replace(`${prefix}_`, "")) as T, + ]), + ) as Record; +} + +const SLUG_TO_WEAPON_ID = buildSlugToIdMap("MAIN"); +const SLUG_TO_SUB_WEAPON_ID = buildSlugToIdMap("SUB"); +const SLUG_TO_SPECIAL_WEAPON_ID = buildSlugToIdMap("SPECIAL"); export function weaponNameSlugToId(slug?: string) { if (!slug) return null; return SLUG_TO_WEAPON_ID[slug.toLowerCase()] ?? null; } + +export function subWeaponNameSlugToId(slug?: string) { + if (!slug) return null; + + return SLUG_TO_SUB_WEAPON_ID[slug.toLowerCase()] ?? null; +} + +export function specialWeaponNameSlugToId(slug?: string) { + if (!slug) return null; + + return SLUG_TO_SPECIAL_WEAPON_ID[slug.toLowerCase()] ?? null; +} diff --git a/app/utils/urls.ts b/app/utils/urls.ts index dee133068..872cec882 100644 --- a/app/utils/urls.ts +++ b/app/utils/urls.ts @@ -279,6 +279,7 @@ export const weaponBuildStatsPage = (weaponSlug: string) => `${weaponBuildPage(weaponSlug)}/stats`; export const weaponBuildPopularPage = (weaponSlug: string) => `${weaponBuildPage(weaponSlug)}/popular`; +export const weaponParamsPage = (weaponSlug: string) => `/params/${weaponSlug}`; export const calendarPage = (args?: { filters?: CalendarFilters; diff --git a/docs/dev/scripts.md b/docs/dev/scripts.md index 8e62097e9..ac439baee 100644 --- a/docs/dev/scripts.md +++ b/docs/dev/scripts.md @@ -40,10 +40,7 @@ Note: it only works with Node 16. ## Doing monthly update -1. Fill /scripts/dicts with new data from leanny repository: - - weapon = contents of `weapon` folder - - langs = contents of `language` folder - - Couple of others at the root: `GearInfoClothes.json`, `GearInfoHead.json`, `GearInfoShoes.json`, `spl__DamageRateInfoConfig.pp__CombinationDataTableData.json`, `SplPlayer.game__GameParameterTable.json`, `WeaponInfoMain.json`, `WeaponInfoSpecial.json` and `WeaponInfoSub.json` +1. Drop the whole [splat3 repository](https://github.com/Leanny/splat3) into `/scripts/dicts/splat3` (pull before). 1. Update all `CURRENT_SEASON` constants 1. Update `CURRENT_PATCH` constants 1. Update `PATCHES` constant with the late patch + remove the oldest @@ -52,7 +49,8 @@ Note: it only works with Node 16. 1. `pnpm exec vite-node scripts/create-gear-json.ts` 1. `pnpm exec vite-node scripts/create-analyzer-json.ts` 8a. Double check that no hard-coded special damages changed -1. `pnpm exec vite-node scripts/create-object-dmg-json.ts` +1. `pnpm exec vite-node scripts/create-object-dmg-json.ts` (also writes `damage-rate-history.json` for the params page directly into `app/features/params/data`) +1. `pnpm exec vite-node scripts/sync-weapon-params.ts` (writes the weapon/sub/special param histories for the params page, see [Sync weapon params](#sync-weapon-params)) 1. Fill new weapon IDs by category to `weapon-ids.ts` (easy to take from the diff of English weapons.json) 1. Get gear IDs for each slot from /output folder and update `gear-ids.ts`. 1. Replace `object-dmg.json` with the `object-dmg.json` in /output folder diff --git a/e2e/params.spec.ts b/e2e/params.spec.ts new file mode 100644 index 000000000..ac70e116f --- /dev/null +++ b/e2e/params.spec.ts @@ -0,0 +1,119 @@ +import { ANALYZER_URL } from "~/utils/urls"; +import { + expect, + impersonate, + navigate, + selectWeapon, + test, +} from "./helpers/playwright"; + +test.describe("Weapon parameters", () => { + test("table filtering, comparison bar graph and history rows (via Analyzer)", async ({ + page, + }) => { + await navigate({ page, url: ANALYZER_URL }); + + await selectWeapon({ page, name: "Splattershot" }); + + await page.getByRole("link", { name: /Raw parameters/ }).click(); + await expect(page).toHaveURL(/\/params\/splattershot/); + + // Filtering: hide a weapon column. Wait for a sibling column to render after the client-side + // navigation before counting, otherwise the count can be taken mid-hydration. + const weaponHeaders = page.locator("th[class*='weaponHeader']"); + await expect(weaponHeaders.nth(1)).toBeVisible(); + const initialColumnCount = await weaponHeaders.count(); + expect(initialColumnCount).toBeGreaterThan(1); + + await page.locator("[data-testid^='hide-weapon-']").first().click(); + + const showAllButton = page.getByTestId("show-all-weapons"); + await expect(showAllButton).toBeVisible(); + await expect(weaponHeaders).toHaveCount(initialColumnCount - 1); + expect(page.url()).toMatch(/hidden=\d/); + + // Refresh keeps the hidden selection + await page.reload(); + expect(page.url()).toMatch(/hidden=\d/); + await expect(showAllButton).toBeVisible(); + await expect(weaponHeaders).toHaveCount(initialColumnCount - 1); + + // Restore all weapons + await showAllButton.click(); + await expect(showAllButton).not.toBeVisible(); + await expect(weaponHeaders).toHaveCount(initialColumnCount); + expect(page.url()).not.toMatch(/hidden=\d/); + + // Comparison bar graph + await page.getByTestId("compare-param").first().click(); + const dialog = page.getByRole("dialog"); + await expect(dialog).toBeVisible(); + const bars = dialog.locator("[class*='bars'] [class*='row']"); + expect(await bars.count()).toBeGreaterThanOrEqual(2); + await page.keyboard.press("Escape"); + await expect(dialog).not.toBeVisible(); + + // Collapsing a history row after expanding it. The patch-count badge is shown while the row + // is collapsed and hidden once expanded, so it is a reliable signal for the toggle state. + const expandableRow = page.locator("[class*='expandableRow']").first(); + await expect(expandableRow).toBeVisible(); + const historyBadge = expandableRow + .locator("[class*='historyBadge']") + .first(); + await expect(historyBadge).toBeVisible(); + + await expandableRow.locator("td[class*='paramName']").click(); + await expect(historyBadge).not.toBeVisible(); + + await expandableRow.locator("td[class*='paramName']").click(); + await expect(historyBadge).toBeVisible(); + }); + + test("patch history tab persists across refresh (via weapon search)", async ({ + page, + }) => { + await impersonate(page); + await navigate({ page, url: "/" }); + + const searchDialog = page.getByRole("dialog", { name: "Search" }); + await page.getByRole("button", { name: /Search/ }).click(); + await searchDialog.waitFor({ state: "visible" }); + await page.getByPlaceholder("Search...").fill("splattershot"); + const weaponOption = page.getByRole("option", { + name: "Splattershot", + exact: true, + }); + await weaponOption.waitFor({ state: "visible" }); + await weaponOption.click({ force: true }); + await page.getByRole("option", { name: "Parameters", exact: true }).click(); + await expect(page).toHaveURL(/\/params\/splattershot/); + + // Switch to the patch history tab + const patchesTab = page.getByRole("tab", { name: /Patch history/ }); + await patchesTab.click(); + expect(page.url()).toContain("tab=patches"); + + // Refresh keeps the selected tab + await page.reload(); + expect(page.url()).toContain("tab=patches"); + await expect(patchesTab).toHaveAttribute("aria-selected", "true"); + + // Either patch columns are shown or the empty state + const patchColumns = page.locator("[class*='column']"); + await expect(patchColumns.first()).toBeVisible(); + + // Toggle "Show sub & special changes" and verify it persists on refresh + const subSpecialSwitch = page.getByRole("switch", { + name: /Show sub & special changes/, + }); + await expect(subSpecialSwitch).toBeChecked(); + await subSpecialSwitch.click({ force: true }); + expect(page.url()).toContain("kitExtras=false"); + + await page.reload(); + expect(page.url()).toContain("kitExtras=false"); + await expect( + page.getByRole("switch", { name: /Show sub & special changes/ }), + ).not.toBeChecked(); + }); +}); diff --git a/knip.ts b/knip.ts index 73573da97..fe2d29a9e 100644 --- a/knip.ts +++ b/knip.ts @@ -4,6 +4,7 @@ const config = { type: true, }, tags: ["-lintignore"], + ignore: ["scripts/dicts/**"], entry: [ "app/features/*/routes/**/*.{ts,tsx}", "migrations/**/*.js", diff --git a/locales/da/analyzer.json b/locales/da/analyzer.json index c391cc306..d85a684c1 100644 --- a/locales/da/analyzer.json +++ b/locales/da/analyzer.json @@ -1,5 +1,6 @@ { "weaponSelect.label": "", + "rawParameters": "", "attribute.weight": "Vægt", "attribute.weight.Fast": "Let", "attribute.weight.Slow": "Tung", diff --git a/locales/da/common.json b/locales/da/common.json index ef6ce3438..e53cb14ba 100644 --- a/locales/da/common.json +++ b/locales/da/common.json @@ -20,6 +20,7 @@ "pages.vods": "Videoer", "pages.popularBuilds": "", "pages.abilityStats": "", + "pages.params": "", "pages.xsearch": "X-kamp rangliste", "pages.leaderboards": "Pointtavler", "pages.links": "Link", @@ -152,6 +153,7 @@ "actions.back": "", "actions.viewAll": "", "actions.hide": "", + "actions.showAll": "", "actions.settings": "", "actions.reveal": "", "noResults": "", @@ -390,8 +392,6 @@ "search.noResults": "", "search.hint": "", "search.searching": "", - "dataCredit.lean": "", - "header.parameter": "", "weaponArt.title": "", "tier.tentative": "", "tier.confirmed": "", diff --git a/locales/da/params.json b/locales/da/params.json new file mode 100644 index 000000000..27b54df67 --- /dev/null +++ b/locales/da/params.json @@ -0,0 +1,14 @@ +{ + "tab.params": "", + "tab.patches": "", + "noPatches": "", + "patches.showSubSpecial": "", + "header.parameter": "", + "legend.title": "", + "legend.damage": "", + "legend.frames": "", + "legend.powerUp": "", + "compare.action": "", + "compare.heading": "", + "dataCredit.lean": "" +} diff --git a/locales/de/analyzer.json b/locales/de/analyzer.json index e9a284e40..a331e3225 100644 --- a/locales/de/analyzer.json +++ b/locales/de/analyzer.json @@ -1,5 +1,6 @@ { "weaponSelect.label": "", + "rawParameters": "", "attribute.weight": "Gewicht", "attribute.weight.Fast": "Leicht", "attribute.weight.Slow": "Schwer", diff --git a/locales/de/common.json b/locales/de/common.json index b050c7b92..cac577848 100644 --- a/locales/de/common.json +++ b/locales/de/common.json @@ -20,6 +20,7 @@ "pages.vods": "Videos", "pages.popularBuilds": "", "pages.abilityStats": "", + "pages.params": "", "pages.xsearch": "", "pages.leaderboards": "", "pages.links": "", @@ -152,6 +153,7 @@ "actions.back": "", "actions.viewAll": "", "actions.hide": "", + "actions.showAll": "", "actions.settings": "", "actions.reveal": "", "noResults": "", @@ -390,8 +392,6 @@ "search.noResults": "", "search.hint": "", "search.searching": "", - "dataCredit.lean": "", - "header.parameter": "", "weaponArt.title": "", "tier.tentative": "", "tier.confirmed": "", diff --git a/locales/de/params.json b/locales/de/params.json new file mode 100644 index 000000000..27b54df67 --- /dev/null +++ b/locales/de/params.json @@ -0,0 +1,14 @@ +{ + "tab.params": "", + "tab.patches": "", + "noPatches": "", + "patches.showSubSpecial": "", + "header.parameter": "", + "legend.title": "", + "legend.damage": "", + "legend.frames": "", + "legend.powerUp": "", + "compare.action": "", + "compare.heading": "", + "dataCredit.lean": "" +} diff --git a/locales/en/analyzer.json b/locales/en/analyzer.json index ae54372bb..45feeeaf7 100644 --- a/locales/en/analyzer.json +++ b/locales/en/analyzer.json @@ -1,5 +1,6 @@ { "weaponSelect.label": "Weapon to analyze", + "rawParameters": "Raw parameters", "attribute.weight": "Weight", "attribute.weight.Fast": "Light", "attribute.weight.Slow": "Heavy", diff --git a/locales/en/common.json b/locales/en/common.json index 503cccab1..c93bcf0df 100644 --- a/locales/en/common.json +++ b/locales/en/common.json @@ -20,6 +20,7 @@ "pages.vods": "Videos", "pages.popularBuilds": "Popular Builds", "pages.abilityStats": "Ability Stats", + "pages.params": "Parameters", "pages.xsearch": "Top Search", "pages.leaderboards": "Rankings", "pages.links": "Links", @@ -152,6 +153,7 @@ "actions.back": "Back", "actions.viewAll": "View all", "actions.hide": "Hide", + "actions.showAll": "Show all", "actions.settings": "Settings", "actions.reveal": "Reveal", "noResults": "No results", @@ -390,8 +392,6 @@ "search.noResults": "No results found", "search.hint": "Start typing to search", "search.searching": "Searching...", - "dataCredit.lean": "Data credit: Lean", - "header.parameter": "Parameter", "weaponArt.title": "Community Art", "tier.tentative": "Tentative {{tierName}}-tier (based on series history)", "tier.confirmed": "{{tierName}}-tier tournament", diff --git a/locales/en/params.json b/locales/en/params.json new file mode 100644 index 000000000..d0c2ac327 --- /dev/null +++ b/locales/en/params.json @@ -0,0 +1,14 @@ +{ + "tab.params": "Parameters", + "tab.patches": "Patch history", + "noPatches": "No tracked balance changes for this weapon yet.", + "patches.showSubSpecial": "Show sub & special changes", + "header.parameter": "Parameter", + "legend.title": "Notes", + "legend.damage": "Damage values are stored ×10, so a value of 450 means 45.0 damage.", + "legend.frames": "Times are measured in frames, where 60 frames = 1 second.", + "legend.powerUp": "Low, Mid and High show the same value with none, a moderate amount, and the maximum amount of the relevant Power Up gear ability equipped (Special Power Up for specials, Sub Power Up for subs).", + "compare.action": "Compare across weapons", + "compare.heading": "{{parameter}} across weapons", + "dataCredit.lean": "Data credit: Lean" +} diff --git a/locales/es-ES/analyzer.json b/locales/es-ES/analyzer.json index 3ba45af64..fc9b525b7 100644 --- a/locales/es-ES/analyzer.json +++ b/locales/es-ES/analyzer.json @@ -1,5 +1,6 @@ { "weaponSelect.label": "Arma a analizar", + "rawParameters": "", "attribute.weight": "Peso", "attribute.weight.Fast": "Ligero", "attribute.weight.Slow": "Pesado", diff --git a/locales/es-ES/common.json b/locales/es-ES/common.json index ca8752bf6..33b69ebdf 100644 --- a/locales/es-ES/common.json +++ b/locales/es-ES/common.json @@ -20,6 +20,7 @@ "pages.vods": "Vídeos", "pages.popularBuilds": "", "pages.abilityStats": "", + "pages.params": "", "pages.xsearch": "Top Búsqueda", "pages.leaderboards": "Clasificaciones", "pages.links": "Enlaces", @@ -152,6 +153,7 @@ "actions.back": "Atrás", "actions.viewAll": "", "actions.hide": "Ocultar", + "actions.showAll": "", "actions.settings": "Ajustes", "actions.reveal": "", "noResults": "Sin resultados", @@ -390,8 +392,6 @@ "search.noResults": "", "search.hint": "", "search.searching": "", - "dataCredit.lean": "", - "header.parameter": "", "weaponArt.title": "", "tier.tentative": "Tier {{tierName}} provisional", "tier.confirmed": "Tier {{tierName}} confirmado", diff --git a/locales/es-ES/params.json b/locales/es-ES/params.json new file mode 100644 index 000000000..27b54df67 --- /dev/null +++ b/locales/es-ES/params.json @@ -0,0 +1,14 @@ +{ + "tab.params": "", + "tab.patches": "", + "noPatches": "", + "patches.showSubSpecial": "", + "header.parameter": "", + "legend.title": "", + "legend.damage": "", + "legend.frames": "", + "legend.powerUp": "", + "compare.action": "", + "compare.heading": "", + "dataCredit.lean": "" +} diff --git a/locales/es-US/analyzer.json b/locales/es-US/analyzer.json index 4bbcbc86b..f2921506d 100644 --- a/locales/es-US/analyzer.json +++ b/locales/es-US/analyzer.json @@ -1,5 +1,6 @@ { "weaponSelect.label": "", + "rawParameters": "", "attribute.weight": "Peso", "attribute.weight.Fast": "Ligero", "attribute.weight.Slow": "Pesado", diff --git a/locales/es-US/common.json b/locales/es-US/common.json index 502c83399..3feaea1b2 100644 --- a/locales/es-US/common.json +++ b/locales/es-US/common.json @@ -20,6 +20,7 @@ "pages.vods": "Videos", "pages.popularBuilds": "", "pages.abilityStats": "", + "pages.params": "", "pages.xsearch": "Búsqueda X 500 mejores", "pages.leaderboards": "Tablas de posición", "pages.links": "Enlaces", @@ -152,6 +153,7 @@ "actions.back": "", "actions.viewAll": "", "actions.hide": "", + "actions.showAll": "", "actions.settings": "", "actions.reveal": "", "noResults": "", @@ -390,8 +392,6 @@ "search.noResults": "", "search.hint": "", "search.searching": "", - "dataCredit.lean": "", - "header.parameter": "", "weaponArt.title": "", "tier.tentative": "", "tier.confirmed": "", diff --git a/locales/es-US/params.json b/locales/es-US/params.json new file mode 100644 index 000000000..27b54df67 --- /dev/null +++ b/locales/es-US/params.json @@ -0,0 +1,14 @@ +{ + "tab.params": "", + "tab.patches": "", + "noPatches": "", + "patches.showSubSpecial": "", + "header.parameter": "", + "legend.title": "", + "legend.damage": "", + "legend.frames": "", + "legend.powerUp": "", + "compare.action": "", + "compare.heading": "", + "dataCredit.lean": "" +} diff --git a/locales/fr-CA/analyzer.json b/locales/fr-CA/analyzer.json index 93305cfd1..fd26c6650 100644 --- a/locales/fr-CA/analyzer.json +++ b/locales/fr-CA/analyzer.json @@ -1,5 +1,6 @@ { "weaponSelect.label": "", + "rawParameters": "", "attribute.weight": "Poids", "attribute.weight.Fast": "Léger", "attribute.weight.Slow": "Lourd", diff --git a/locales/fr-CA/common.json b/locales/fr-CA/common.json index 5d3554fed..904c3f02e 100644 --- a/locales/fr-CA/common.json +++ b/locales/fr-CA/common.json @@ -20,6 +20,7 @@ "pages.vods": "Vidéos", "pages.popularBuilds": "", "pages.abilityStats": "", + "pages.params": "", "pages.xsearch": "Top 500", "pages.leaderboards": "Classements", "pages.links": "Liens", @@ -152,6 +153,7 @@ "actions.back": "", "actions.viewAll": "", "actions.hide": "", + "actions.showAll": "", "actions.settings": "", "actions.reveal": "", "noResults": "", @@ -390,8 +392,6 @@ "search.noResults": "", "search.hint": "", "search.searching": "", - "dataCredit.lean": "", - "header.parameter": "", "weaponArt.title": "", "tier.tentative": "", "tier.confirmed": "", diff --git a/locales/fr-CA/params.json b/locales/fr-CA/params.json new file mode 100644 index 000000000..27b54df67 --- /dev/null +++ b/locales/fr-CA/params.json @@ -0,0 +1,14 @@ +{ + "tab.params": "", + "tab.patches": "", + "noPatches": "", + "patches.showSubSpecial": "", + "header.parameter": "", + "legend.title": "", + "legend.damage": "", + "legend.frames": "", + "legend.powerUp": "", + "compare.action": "", + "compare.heading": "", + "dataCredit.lean": "" +} diff --git a/locales/fr-EU/analyzer.json b/locales/fr-EU/analyzer.json index 8e08cb89a..0c153f232 100644 --- a/locales/fr-EU/analyzer.json +++ b/locales/fr-EU/analyzer.json @@ -1,5 +1,6 @@ { "weaponSelect.label": "", + "rawParameters": "", "attribute.weight": "Poids", "attribute.weight.Fast": "Léger", "attribute.weight.Slow": "Lourd", diff --git a/locales/fr-EU/common.json b/locales/fr-EU/common.json index e45e29c5a..d106db226 100644 --- a/locales/fr-EU/common.json +++ b/locales/fr-EU/common.json @@ -20,6 +20,7 @@ "pages.vods": "Vidéos", "pages.popularBuilds": "", "pages.abilityStats": "", + "pages.params": "", "pages.xsearch": "Top 500", "pages.leaderboards": "Classements", "pages.links": "Liens", @@ -152,6 +153,7 @@ "actions.back": "", "actions.viewAll": "", "actions.hide": "", + "actions.showAll": "", "actions.settings": "", "actions.reveal": "", "noResults": "Aucun résultats", @@ -390,8 +392,6 @@ "search.noResults": "", "search.hint": "", "search.searching": "", - "dataCredit.lean": "", - "header.parameter": "", "weaponArt.title": "", "tier.tentative": "", "tier.confirmed": "", diff --git a/locales/fr-EU/params.json b/locales/fr-EU/params.json new file mode 100644 index 000000000..27b54df67 --- /dev/null +++ b/locales/fr-EU/params.json @@ -0,0 +1,14 @@ +{ + "tab.params": "", + "tab.patches": "", + "noPatches": "", + "patches.showSubSpecial": "", + "header.parameter": "", + "legend.title": "", + "legend.damage": "", + "legend.frames": "", + "legend.powerUp": "", + "compare.action": "", + "compare.heading": "", + "dataCredit.lean": "" +} diff --git a/locales/he/analyzer.json b/locales/he/analyzer.json index 34fde8a1b..2c1da30a5 100644 --- a/locales/he/analyzer.json +++ b/locales/he/analyzer.json @@ -1,5 +1,6 @@ { "weaponSelect.label": "", + "rawParameters": "", "attribute.weight": "משקל", "attribute.weight.Fast": "קל", "attribute.weight.Slow": "כבד", diff --git a/locales/he/common.json b/locales/he/common.json index a0829f1d8..c39bdb5ef 100644 --- a/locales/he/common.json +++ b/locales/he/common.json @@ -20,6 +20,7 @@ "pages.vods": "סרטונים", "pages.popularBuilds": "", "pages.abilityStats": "", + "pages.params": "", "pages.xsearch": "חיפוש בטופ", "pages.leaderboards": "לוח תוצאות", "pages.links": "קישורים", @@ -152,6 +153,7 @@ "actions.back": "", "actions.viewAll": "", "actions.hide": "", + "actions.showAll": "", "actions.settings": "", "actions.reveal": "", "noResults": "", @@ -390,8 +392,6 @@ "search.noResults": "", "search.hint": "", "search.searching": "", - "dataCredit.lean": "", - "header.parameter": "", "weaponArt.title": "", "tier.tentative": "", "tier.confirmed": "", diff --git a/locales/he/params.json b/locales/he/params.json new file mode 100644 index 000000000..27b54df67 --- /dev/null +++ b/locales/he/params.json @@ -0,0 +1,14 @@ +{ + "tab.params": "", + "tab.patches": "", + "noPatches": "", + "patches.showSubSpecial": "", + "header.parameter": "", + "legend.title": "", + "legend.damage": "", + "legend.frames": "", + "legend.powerUp": "", + "compare.action": "", + "compare.heading": "", + "dataCredit.lean": "" +} diff --git a/locales/it/analyzer.json b/locales/it/analyzer.json index e46d1beeb..29d5ccc38 100644 --- a/locales/it/analyzer.json +++ b/locales/it/analyzer.json @@ -1,5 +1,6 @@ { "weaponSelect.label": "", + "rawParameters": "", "attribute.weight": "Peso", "attribute.weight.Fast": "Leggero", "attribute.weight.Slow": "Pesante", diff --git a/locales/it/common.json b/locales/it/common.json index 4ed349dd2..ed3fd6142 100644 --- a/locales/it/common.json +++ b/locales/it/common.json @@ -20,6 +20,7 @@ "pages.vods": "Videos", "pages.popularBuilds": "", "pages.abilityStats": "", + "pages.params": "", "pages.xsearch": "Ricerca Top", "pages.leaderboards": "Classifiche", "pages.links": "Links", @@ -152,6 +153,7 @@ "actions.back": "", "actions.viewAll": "", "actions.hide": "", + "actions.showAll": "", "actions.settings": "", "actions.reveal": "", "noResults": "", @@ -390,8 +392,6 @@ "search.noResults": "", "search.hint": "", "search.searching": "", - "dataCredit.lean": "", - "header.parameter": "", "weaponArt.title": "", "tier.tentative": "", "tier.confirmed": "", diff --git a/locales/it/params.json b/locales/it/params.json new file mode 100644 index 000000000..27b54df67 --- /dev/null +++ b/locales/it/params.json @@ -0,0 +1,14 @@ +{ + "tab.params": "", + "tab.patches": "", + "noPatches": "", + "patches.showSubSpecial": "", + "header.parameter": "", + "legend.title": "", + "legend.damage": "", + "legend.frames": "", + "legend.powerUp": "", + "compare.action": "", + "compare.heading": "", + "dataCredit.lean": "" +} diff --git a/locales/ja/analyzer.json b/locales/ja/analyzer.json index b2ff89afa..8579c729e 100644 --- a/locales/ja/analyzer.json +++ b/locales/ja/analyzer.json @@ -1,5 +1,6 @@ { "weaponSelect.label": "武器", + "rawParameters": "", "attribute.weight": "重さ", "attribute.weight.Fast": "軽量級", "attribute.weight.Slow": "重量級", diff --git a/locales/ja/calendar.json b/locales/ja/calendar.json index a87945039..785f0e744 100644 --- a/locales/ja/calendar.json +++ b/locales/ja/calendar.json @@ -9,10 +9,8 @@ "members": "メンバー", "results": "結果", "createMapList": "ステージリストを作成する", - "count.teams_one": "{{count}}チーム", - "count.players_one": "{{count}}名", - "count.teams_other": "{{count}}チーム", - "count.players_other": "{{count}}名", + "count.teams": "{{count}}チーム", + "count.players": "{{count}}名", "forms.dates": "日", "forms.bracketUrl": "対戦表 URL", "forms.discordInvite": "Discord サーバー招待 URL", diff --git a/locales/ja/common.json b/locales/ja/common.json index a3d60acfb..485cc4c9e 100644 --- a/locales/ja/common.json +++ b/locales/ja/common.json @@ -20,6 +20,7 @@ "pages.vods": "動画一覧", "pages.popularBuilds": "", "pages.abilityStats": "", + "pages.params": "", "pages.xsearch": "上位プレイヤー検索", "pages.leaderboards": "スコアボード", "pages.links": "リンク", @@ -152,6 +153,7 @@ "actions.back": "", "actions.viewAll": "", "actions.hide": "", + "actions.showAll": "", "actions.settings": "", "actions.reveal": "", "noResults": "", @@ -390,8 +392,6 @@ "search.noResults": "", "search.hint": "", "search.searching": "", - "dataCredit.lean": "", - "header.parameter": "", "weaponArt.title": "", "tier.tentative": "", "tier.confirmed": "", diff --git a/locales/ja/params.json b/locales/ja/params.json new file mode 100644 index 000000000..27b54df67 --- /dev/null +++ b/locales/ja/params.json @@ -0,0 +1,14 @@ +{ + "tab.params": "", + "tab.patches": "", + "noPatches": "", + "patches.showSubSpecial": "", + "header.parameter": "", + "legend.title": "", + "legend.damage": "", + "legend.frames": "", + "legend.powerUp": "", + "compare.action": "", + "compare.heading": "", + "dataCredit.lean": "" +} diff --git a/locales/ko/analyzer.json b/locales/ko/analyzer.json index bcfa8c9c3..534accada 100644 --- a/locales/ko/analyzer.json +++ b/locales/ko/analyzer.json @@ -1,5 +1,6 @@ { "weaponSelect.label": "", + "rawParameters": "", "attribute.weight": "무게", "attribute.weight.Fast": "가벼움", "attribute.weight.Slow": "무거움", diff --git a/locales/ko/common.json b/locales/ko/common.json index c3905f0ed..61b58ceec 100644 --- a/locales/ko/common.json +++ b/locales/ko/common.json @@ -20,6 +20,7 @@ "pages.vods": "영상", "pages.popularBuilds": "", "pages.abilityStats": "", + "pages.params": "", "pages.xsearch": "랭킹 검색", "pages.leaderboards": "랭킹표", "pages.links": "외부 링크", @@ -152,6 +153,7 @@ "actions.back": "", "actions.viewAll": "", "actions.hide": "", + "actions.showAll": "", "actions.settings": "", "actions.reveal": "", "noResults": "", @@ -390,8 +392,6 @@ "search.noResults": "", "search.hint": "", "search.searching": "", - "dataCredit.lean": "", - "header.parameter": "", "weaponArt.title": "", "tier.tentative": "", "tier.confirmed": "", diff --git a/locales/ko/params.json b/locales/ko/params.json new file mode 100644 index 000000000..27b54df67 --- /dev/null +++ b/locales/ko/params.json @@ -0,0 +1,14 @@ +{ + "tab.params": "", + "tab.patches": "", + "noPatches": "", + "patches.showSubSpecial": "", + "header.parameter": "", + "legend.title": "", + "legend.damage": "", + "legend.frames": "", + "legend.powerUp": "", + "compare.action": "", + "compare.heading": "", + "dataCredit.lean": "" +} diff --git a/locales/nl/analyzer.json b/locales/nl/analyzer.json index ca37a315d..abeed3ded 100644 --- a/locales/nl/analyzer.json +++ b/locales/nl/analyzer.json @@ -1,5 +1,6 @@ { "weaponSelect.label": "", + "rawParameters": "", "attribute.weight": "Gewicht", "attribute.weight.Fast": "Licht", "attribute.weight.Slow": "Zwaar", diff --git a/locales/nl/common.json b/locales/nl/common.json index bd49f4b2a..fcb2f2962 100644 --- a/locales/nl/common.json +++ b/locales/nl/common.json @@ -20,6 +20,7 @@ "pages.vods": "", "pages.popularBuilds": "", "pages.abilityStats": "", + "pages.params": "", "pages.xsearch": "", "pages.leaderboards": "", "pages.links": "", @@ -152,6 +153,7 @@ "actions.back": "", "actions.viewAll": "", "actions.hide": "", + "actions.showAll": "", "actions.settings": "", "actions.reveal": "", "noResults": "", @@ -390,8 +392,6 @@ "search.noResults": "", "search.hint": "", "search.searching": "", - "dataCredit.lean": "", - "header.parameter": "", "weaponArt.title": "", "tier.tentative": "", "tier.confirmed": "", diff --git a/locales/nl/params.json b/locales/nl/params.json new file mode 100644 index 000000000..27b54df67 --- /dev/null +++ b/locales/nl/params.json @@ -0,0 +1,14 @@ +{ + "tab.params": "", + "tab.patches": "", + "noPatches": "", + "patches.showSubSpecial": "", + "header.parameter": "", + "legend.title": "", + "legend.damage": "", + "legend.frames": "", + "legend.powerUp": "", + "compare.action": "", + "compare.heading": "", + "dataCredit.lean": "" +} diff --git a/locales/pl/analyzer.json b/locales/pl/analyzer.json index 0ac2be31f..36fd52c79 100644 --- a/locales/pl/analyzer.json +++ b/locales/pl/analyzer.json @@ -1,5 +1,6 @@ { "weaponSelect.label": "", + "rawParameters": "", "attribute.weight": "Waga", "attribute.weight.Fast": "Lekka", "attribute.weight.Slow": "Ciężka", diff --git a/locales/pl/common.json b/locales/pl/common.json index 82dc442df..2bc704963 100644 --- a/locales/pl/common.json +++ b/locales/pl/common.json @@ -20,6 +20,7 @@ "pages.vods": "", "pages.popularBuilds": "", "pages.abilityStats": "", + "pages.params": "", "pages.xsearch": "", "pages.leaderboards": "", "pages.links": "", @@ -152,6 +153,7 @@ "actions.back": "", "actions.viewAll": "", "actions.hide": "", + "actions.showAll": "", "actions.settings": "", "actions.reveal": "", "noResults": "", @@ -390,8 +392,6 @@ "search.noResults": "", "search.hint": "", "search.searching": "", - "dataCredit.lean": "", - "header.parameter": "", "weaponArt.title": "", "tier.tentative": "", "tier.confirmed": "", diff --git a/locales/pl/params.json b/locales/pl/params.json new file mode 100644 index 000000000..27b54df67 --- /dev/null +++ b/locales/pl/params.json @@ -0,0 +1,14 @@ +{ + "tab.params": "", + "tab.patches": "", + "noPatches": "", + "patches.showSubSpecial": "", + "header.parameter": "", + "legend.title": "", + "legend.damage": "", + "legend.frames": "", + "legend.powerUp": "", + "compare.action": "", + "compare.heading": "", + "dataCredit.lean": "" +} diff --git a/locales/pt-BR/analyzer.json b/locales/pt-BR/analyzer.json index 8e90599f3..75a02d3d7 100644 --- a/locales/pt-BR/analyzer.json +++ b/locales/pt-BR/analyzer.json @@ -1,5 +1,6 @@ { "weaponSelect.label": "", + "rawParameters": "", "attribute.weight": "Peso", "attribute.weight.Fast": "Leve", "attribute.weight.Slow": "Pesado", diff --git a/locales/pt-BR/common.json b/locales/pt-BR/common.json index a1a5cd644..931eaf424 100644 --- a/locales/pt-BR/common.json +++ b/locales/pt-BR/common.json @@ -20,6 +20,7 @@ "pages.vods": "Vídeos", "pages.popularBuilds": "", "pages.abilityStats": "", + "pages.params": "", "pages.xsearch": "Listas dos Top 500", "pages.leaderboards": "Classificações", "pages.links": "Links", @@ -152,6 +153,7 @@ "actions.back": "", "actions.viewAll": "", "actions.hide": "", + "actions.showAll": "", "actions.settings": "", "actions.reveal": "", "noResults": "", @@ -390,8 +392,6 @@ "search.noResults": "", "search.hint": "", "search.searching": "", - "dataCredit.lean": "", - "header.parameter": "", "weaponArt.title": "", "tier.tentative": "", "tier.confirmed": "", diff --git a/locales/pt-BR/params.json b/locales/pt-BR/params.json new file mode 100644 index 000000000..27b54df67 --- /dev/null +++ b/locales/pt-BR/params.json @@ -0,0 +1,14 @@ +{ + "tab.params": "", + "tab.patches": "", + "noPatches": "", + "patches.showSubSpecial": "", + "header.parameter": "", + "legend.title": "", + "legend.damage": "", + "legend.frames": "", + "legend.powerUp": "", + "compare.action": "", + "compare.heading": "", + "dataCredit.lean": "" +} diff --git a/locales/ru/analyzer.json b/locales/ru/analyzer.json index 4d10e4b7b..f70182351 100644 --- a/locales/ru/analyzer.json +++ b/locales/ru/analyzer.json @@ -1,5 +1,6 @@ { "weaponSelect.label": "", + "rawParameters": "", "attribute.weight": "Весовая категория", "attribute.weight.Fast": "Лёгкая", "attribute.weight.Slow": "Тяжелая", diff --git a/locales/ru/common.json b/locales/ru/common.json index 59132d2ba..9d7aa1e5a 100644 --- a/locales/ru/common.json +++ b/locales/ru/common.json @@ -20,6 +20,7 @@ "pages.vods": "Видео", "pages.popularBuilds": "", "pages.abilityStats": "", + "pages.params": "", "pages.xsearch": "Топ по режиму", "pages.leaderboards": "Таблицы лидеров", "pages.links": "Ссылки", @@ -152,6 +153,7 @@ "actions.back": "", "actions.viewAll": "", "actions.hide": "", + "actions.showAll": "", "actions.settings": "", "actions.reveal": "", "noResults": "Нет результатов", @@ -390,8 +392,6 @@ "search.noResults": "", "search.hint": "", "search.searching": "", - "dataCredit.lean": "", - "header.parameter": "", "weaponArt.title": "", "tier.tentative": "", "tier.confirmed": "", diff --git a/locales/ru/params.json b/locales/ru/params.json new file mode 100644 index 000000000..27b54df67 --- /dev/null +++ b/locales/ru/params.json @@ -0,0 +1,14 @@ +{ + "tab.params": "", + "tab.patches": "", + "noPatches": "", + "patches.showSubSpecial": "", + "header.parameter": "", + "legend.title": "", + "legend.damage": "", + "legend.frames": "", + "legend.powerUp": "", + "compare.action": "", + "compare.heading": "", + "dataCredit.lean": "" +} diff --git a/locales/zh/analyzer.json b/locales/zh/analyzer.json index b7af6309e..18bce58f8 100644 --- a/locales/zh/analyzer.json +++ b/locales/zh/analyzer.json @@ -1,5 +1,6 @@ { "weaponSelect.label": "要分析的武器", + "rawParameters": "", "attribute.weight": "量级", "attribute.weight.Fast": "轻量级", "attribute.weight.Slow": "重量级", diff --git a/locales/zh/common.json b/locales/zh/common.json index a05f6551f..a4ebe5bfe 100644 --- a/locales/zh/common.json +++ b/locales/zh/common.json @@ -20,6 +20,7 @@ "pages.vods": "视频", "pages.popularBuilds": "热门配装", "pages.abilityStats": "装备能力数据", + "pages.params": "", "pages.xsearch": "X比赛排行榜", "pages.leaderboards": "排行榜", "pages.links": "链接", @@ -152,6 +153,7 @@ "actions.back": "返回", "actions.viewAll": "查看全部", "actions.hide": "隐藏", + "actions.showAll": "", "actions.settings": "设置", "actions.reveal": "显示", "noResults": "无结果", @@ -390,8 +392,6 @@ "search.noResults": "没有结果", "search.hint": "开始键入以搜索", "search.searching": "正在搜索...", - "dataCredit.lean": "数据鸣谢: Lean", - "header.parameter": "属性", "weaponArt.title": "社区插画", "tier.tentative": "暂定 {{tierName}} 级别(基于过往历史)", "tier.confirmed": "{{tierName}} 级别赛事", diff --git a/locales/zh/params.json b/locales/zh/params.json new file mode 100644 index 000000000..27b54df67 --- /dev/null +++ b/locales/zh/params.json @@ -0,0 +1,14 @@ +{ + "tab.params": "", + "tab.patches": "", + "noPatches": "", + "patches.showSubSpecial": "", + "header.parameter": "", + "legend.title": "", + "legend.damage": "", + "legend.frames": "", + "legend.powerUp": "", + "compare.action": "", + "compare.heading": "", + "dataCredit.lean": "" +} diff --git a/package.json b/package.json index 93a9a5abe..d470efcad 100644 --- a/package.json +++ b/package.json @@ -34,8 +34,7 @@ "checks": "pnpm run biome:fix && pnpm run test:unit:browser && pnpm run check-translation-jsons && pnpm run typecheck && pnpm run knip && pnpm run check-test-db-migrations", "setup": "cross-env DB_PATH=db.sqlite3 vite-node ./scripts/setup.ts", "i18n:sync": "node --experimental-strip-types scripts/collapse-single-plural-keys.ts && i18next-locales-sync -e true -p en -s da de es-ES es-US fr-CA fr-EU he it ja ko nl pl pt-BR ru zh -l locales && pnpm run biome:fix", - "knip": "knip", - "sync-weapon-params": "vite-node scripts/sync-weapon-params.ts" + "knip": "knip" }, "dependencies": { "@aws-sdk/client-s3": "3.1064.0", diff --git a/scripts/create-analyzer-json.ts b/scripts/create-analyzer-json.ts index 0d3ee4c16..c45b62688 100644 --- a/scripts/create-analyzer-json.ts +++ b/scripts/create-analyzer-json.ts @@ -1,9 +1,4 @@ -// To run this script you need from https://github.com/Leanny/leanny.github.io -// 1) WeaponInfoMain.json inside dicts -// 2) WeaponInfoSub.json inside dicts -// 3) WeaponInfoSpecial.json inside dicts -// 4) SplPlayer.game__GameParameterTable.json inside dicts -// 5) params (weapon folder) inside dicts +// To run this script drop the https://github.com/Leanny/splat3 repo into scripts/dicts/splat3 import fs from "node:fs"; import path from "node:path"; @@ -28,19 +23,25 @@ import { } from "~/modules/in-game-lists/weapon-ids"; import invariant from "~/utils/invariant"; import { logger } from "~/utils/logger"; -import playersParams from "./dicts/SplPlayer.game__GameParameterTable.json"; -import weapons from "./dicts/WeaponInfoMain.json"; -import specialWeapons from "./dicts/WeaponInfoSpecial.json"; -import subWeapons from "./dicts/WeaponInfoSub.json"; import { LANG_JSONS_TO_CREATE, loadLangDicts, + loadSplPlayerParams, + loadWeaponInfoMain, + loadWeaponInfoSpecial, + loadWeaponInfoSub, translationJsonFolderName, + weaponParamsDir, } from "./utils"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); +const playersParams = loadSplPlayerParams(); +const weapons = loadWeaponInfoMain(); +const subWeapons = loadWeaponInfoSub(); +const specialWeapons = loadWeaponInfoSpecial(); + const CURRENT_SEASON = 9; type MainWeapon = (typeof weapons)[number]; @@ -1093,7 +1094,7 @@ function loadWeaponParamsObject( ) { return JSON.parse( fs.readFileSync( - path.join(__dirname, "dicts", "weapon", weaponRowIdToFileName(weapon)), + path.join(weaponParamsDir(), weaponRowIdToFileName(weapon)), "utf8", ), ).GameParameters; diff --git a/scripts/create-gear-json.ts b/scripts/create-gear-json.ts index 96f7780dd..da69b3e28 100644 --- a/scripts/create-gear-json.ts +++ b/scripts/create-gear-json.ts @@ -3,11 +3,11 @@ import path from "node:path"; import { fileURLToPath } from "node:url"; import { brandIds } from "~/modules/in-game-lists/brand-ids"; import invariant from "~/utils/invariant"; -import clothes from "./dicts/GearInfoClothes.json"; -import head from "./dicts/GearInfoHead.json"; -import shoes from "./dicts/GearInfoShoes.json"; import { LANG_JSONS_TO_CREATE, + loadGearInfoClothes, + loadGearInfoHead, + loadGearInfoShoes, loadLangDicts, translationJsonFolderName, } from "./utils"; @@ -15,6 +15,10 @@ import { const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); +const clothes = loadGearInfoClothes(); +const head = loadGearInfoHead(); +const shoes = loadGearInfoShoes(); + const CURRENT_SEASON = 9; const OUTPUT_DIR_PATH = path.join(__dirname, "output"); diff --git a/scripts/create-object-dmg-json.ts b/scripts/create-object-dmg-json.ts index eaec40c38..960633ada 100644 --- a/scripts/create-object-dmg-json.ts +++ b/scripts/create-object-dmg-json.ts @@ -12,19 +12,35 @@ import { specialWeaponIds, subWeaponIds, } from "~/modules/in-game-lists/weapon-ids"; -// 1) WeaponInfoMain.json inside dicts -// 2) WeaponInfoSub.json inside dicts -// 3) WeaponInfoSpecial.json inside dicts -// 4) misc/spl__DamageRateInfoConfig.pp__CombinationDataTableData.json -import params from "./dicts/spl__DamageRateInfoConfig.pp__CombinationDataTableData.json"; -import weapons from "./dicts/WeaponInfoMain.json"; -import specialWeapons from "./dicts/WeaponInfoSpecial.json"; -import subWeapons from "./dicts/WeaponInfoSub.json"; +// To run this script drop the https://github.com/Leanny/splat3 repo into scripts/dicts/splat3 +import { + loadDamageRateInfo, + loadWeaponInfoMain, + loadWeaponInfoSpecial, + loadWeaponInfoSub, + PARAMETER_DIR, +} from "./utils"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); +const params = loadDamageRateInfo(); +const weapons = loadWeaponInfoMain(); +const subWeapons = loadWeaponInfoSub(); +const specialWeapons = loadWeaponInfoSpecial(); + const OUTPUT_DIR_PATH = path.join(__dirname, "output"); +const DAMAGE_RATE_CONFIG_FILE_NAME = + "spl__DamageRateInfoConfig.pp__CombinationDataTableData.json"; +const HISTORY_OUTPUT_PATH = path.join( + __dirname, + "..", + "app", + "features", + "params", + "data", + "damage-rate-history.json", +); type DamageReceiver = (typeof DAMAGE_RECEIVERS)[number]; @@ -41,6 +57,21 @@ type DamageRateCell = { DamageRate?: number; }; +type DamageRateConfig = { CellList: Record }; + +type TargetHistory = { + target: string; + current: number; + history: Array<{ version: string; value: number }>; +}; + +type DamageRateHistoryRow = { + mainWeaponIds: MainWeaponId[]; + subWeaponIds: SubWeaponId[]; + specialWeaponIds: SpecialWeaponId[]; + targets: TargetHistory[]; +}; + const weaponParamsToWeaponIds = ( params: typeof weapons | typeof subWeapons | typeof specialWeapons, key: string, @@ -60,75 +91,194 @@ const weaponParamsToWeaponIds = ( const isDamageReceiver = (key: string): key is DamageReceiver => (DAMAGE_RECEIVERS as readonly string[]).includes(key); -const result: Record = {}; -for (const cell of Object.values(params.CellList) as DamageRateCell[]) { - if (!isDamageReceiver(cell.ColumnKey)) continue; - if (!cell.DamageRate) continue; +const mainIdsForRow = (rowKey: string) => + weaponParamsToWeaponIds(weapons, rowKey).filter((id): id is MainWeaponId => + (mainWeaponIds as readonly number[]).includes(id), + ); +const subIdsForRow = (rowKey: string) => + weaponParamsToWeaponIds(subWeapons, rowKey).filter((id): id is SubWeaponId => + (subWeaponIds as readonly number[]).includes(id), + ); +const specialIdsForRow = (rowKey: string) => + weaponParamsToWeaponIds(specialWeapons, rowKey).filter( + (id): id is SpecialWeaponId => + (specialWeaponIds as readonly number[]).includes(id), + ); - if (!result[cell.RowKey]) { - result[cell.RowKey] = { - mainWeaponIds: weaponParamsToWeaponIds(weapons, cell.RowKey).filter( - (id): id is MainWeaponId => - (mainWeaponIds as readonly number[]).includes(id), - ), - subWeaponIds: weaponParamsToWeaponIds(subWeapons, cell.RowKey).filter( - (id): id is SubWeaponId => - (subWeaponIds as readonly number[]).includes(id), - ), - specialWeaponIds: weaponParamsToWeaponIds( - specialWeapons, - cell.RowKey, - ).filter((id): id is SpecialWeaponId => - (specialWeaponIds as readonly number[]).includes(id), - ), - rates: [], - }; +/** + * Resolves the per-target damage rate of every damage rate info row in a single config dump. + * Only the PvP-relevant receivers are kept and the synthetic launched/Recycled Brella canopy + * targets are derived the same way the live object damage calculator expects them. + */ +const damageRatesByRow = ( + config: DamageRateConfig, +): Map> => { + const result = new Map>(); + + for (const cell of Object.values(config.CellList)) { + if (!isDamageReceiver(cell.ColumnKey)) continue; + if (!cell.DamageRate) continue; + + let row = result.get(cell.RowKey); + if (!row) { + row = new Map(); + result.set(cell.RowKey, row); + } + + row.set(cell.ColumnKey, cell.DamageRate); + + // launched versions have double health but share the same rate + if ( + cell.ColumnKey.includes("BulletUmbrellaCanopyNormal") || + cell.ColumnKey.includes("BulletUmbrellaCanopyWide") + ) { + row.set(`${cell.ColumnKey}_Launched`, cell.DamageRate); + } + + // Recycled Brella reuses Splat Brella's special damage rates + if (cell.ColumnKey === "BulletUmbrellaCanopyNormal") { + row.set("BulletShelterCanopyFocus", cell.DamageRate); + row.set("BulletShelterCanopyFocus_Launched", cell.DamageRate); + } } - const entry = result[cell.RowKey]!; + return result; +}; + +const result: Record = {}; +for (const [rowKey, rates] of damageRatesByRow(params)) { + const mainWeaponIdsForRow = mainIdsForRow(rowKey); + const subWeaponIdsForRow = subIdsForRow(rowKey); + const specialWeaponIdsForRow = specialIdsForRow(rowKey); // if it applies to no PvP weapons, we don't care about it if ( - entry.mainWeaponIds.length === 0 && - entry.subWeaponIds.length === 0 && - entry.specialWeaponIds.length === 0 && - cell.RowKey !== "ObjectEffect_Up" + mainWeaponIdsForRow.length === 0 && + subWeaponIdsForRow.length === 0 && + specialWeaponIdsForRow.length === 0 && + rowKey !== "ObjectEffect_Up" ) { - result[cell.RowKey] = undefined; continue; } - entry.rates.push({ - target: cell.ColumnKey, - rate: cell.DamageRate, - }); - - // add a second rate for launched versions, since they have double health - if ( - cell.ColumnKey.includes("BulletUmbrellaCanopyNormal") || - cell.ColumnKey.includes("BulletUmbrellaCanopyWide") - ) { - entry.rates.push({ - target: `${cell.ColumnKey}_Launched`, - rate: cell.DamageRate, - }); - } - - // if it has special damage rates for Splat Brella, add the same value for Recycled Brella - if (cell.ColumnKey === "BulletUmbrellaCanopyNormal") { - entry.rates.push({ - target: "BulletShelterCanopyFocus", - rate: cell.DamageRate, - }); - - entry.rates.push({ - target: "BulletShelterCanopyFocus_Launched", - rate: cell.DamageRate, - }); - } + result[rowKey] = { + mainWeaponIds: mainWeaponIdsForRow, + subWeaponIds: subWeaponIdsForRow, + specialWeaponIds: specialWeaponIdsForRow, + rates: [...rates].map(([target, rate]) => ({ target, rate })), + }; } fs.writeFileSync( path.join(OUTPUT_DIR_PATH, "object-dmg.json"), JSON.stringify(result, null, 2), ); + +writeDamageRateHistory(); + +function versionDirToDisplay(version: string): string { + const num = Number.parseInt(version, 10); + const major = Math.floor(num / 100); + const minor = Math.floor((num % 100) / 10); + const patch = num % 10; + return `${major}.${minor}.${patch}`; +} + +/** + * Builds the per-row, per-target damage rate history across every versioned config dump and + * writes it for the params page to surface in its patch history. Only PvP-relevant rows and + * only targets whose rate actually changed at some point are kept, so the output stays small. + */ +function writeDamageRateHistory() { + const versionDirs = fs + .readdirSync(PARAMETER_DIR) + .filter((dir) => /^\d+$/.test(dir)) + .sort((a, b) => Number.parseInt(a, 10) - Number.parseInt(b, 10)); + + const ratesByVersion = new Map>>(); + for (const version of versionDirs) { + const filePath = path.join( + PARAMETER_DIR, + version, + "misc", + DAMAGE_RATE_CONFIG_FILE_NAME, + ); + if (!fs.existsSync(filePath)) continue; + + const config = JSON.parse( + fs.readFileSync(filePath, "utf8"), + ) as DamageRateConfig; + ratesByVersion.set(version, damageRatesByRow(config)); + } + + const presentVersions = versionDirs.filter((version) => + ratesByVersion.has(version), + ); + const latestVersion = presentVersions[presentVersions.length - 1]; + + const rows: Record = {}; + for (const [rowKey, latestRates] of ratesByVersion.get(latestVersion) ?? []) { + const mainWeaponIdsForRow = mainIdsForRow(rowKey); + const subWeaponIdsForRow = subIdsForRow(rowKey); + const specialWeaponIdsForRow = specialIdsForRow(rowKey); + + if ( + mainWeaponIdsForRow.length === 0 && + subWeaponIdsForRow.length === 0 && + specialWeaponIdsForRow.length === 0 + ) { + continue; + } + + const targets: TargetHistory[] = []; + for (const [target, current] of latestRates) { + const presentForTarget = presentVersions.filter( + (version) => + ratesByVersion.get(version)?.get(rowKey)?.get(target) !== undefined, + ); + + const history: Array<{ version: string; value: number }> = []; + for (let i = 0; i < presentForTarget.length - 1; i++) { + const value = ratesByVersion + .get(presentForTarget[i])! + .get(rowKey)! + .get(target)!; + const nextValue = ratesByVersion + .get(presentForTarget[i + 1])! + .get(rowKey)! + .get(target)!; + if (value !== nextValue) { + history.push({ + version: versionDirToDisplay(presentForTarget[i]), + value, + }); + } + } + + if (history.length > 0) { + targets.push({ target, current, history }); + } + } + + if (targets.length > 0) { + rows[rowKey] = { + mainWeaponIds: mainWeaponIdsForRow, + subWeaponIds: subWeaponIdsForRow, + specialWeaponIds: specialWeaponIdsForRow, + targets, + }; + } + } + + fs.writeFileSync( + HISTORY_OUTPUT_PATH, + JSON.stringify( + { + metadata: { versions: presentVersions.map(versionDirToDisplay) }, + rows, + }, + null, + 2, + ), + ); +} diff --git a/scripts/replace-weapon-names.ts b/scripts/replace-weapon-names.ts index 585a188cf..e0989f87b 100644 --- a/scripts/replace-weapon-names.ts +++ b/scripts/replace-weapon-names.ts @@ -2,11 +2,13 @@ import fs from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; import { logger } from "~/utils/logger"; -import weapons from "./dicts/WeaponInfoMain.json"; +import { loadWeaponInfoMain } from "./utils"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); +const weapons = loadWeaponInfoMain(); + const DIR_PATH_1 = path.join( __dirname, "..", diff --git a/scripts/sync-weapon-params.ts b/scripts/sync-weapon-params.ts index 52f3ee88b..8073d2fc3 100644 --- a/scripts/sync-weapon-params.ts +++ b/scripts/sync-weapon-params.ts @@ -1,22 +1,41 @@ import fs from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; +import { + mainWeaponIds, + specialWeaponIds, + subWeaponIds, +} from "~/modules/in-game-lists/weapon-ids"; import { logger } from "~/utils/logger"; -import weapons from "./dicts/WeaponInfoMain.json"; +import { + loadWeaponInfoMain, + loadWeaponInfoSpecial, + loadWeaponInfoSub, + MUSH_DIR, + PARAMETER_DIR, +} from "./utils"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); -const PARAMETER_DIR = path.join(__dirname, "dicts", "parameter"); +const weapons = loadWeaponInfoMain(); +const subWeapons = loadWeaponInfoSub(); +const specialWeapons = loadWeaponInfoSpecial(); + const OUTPUT_DIR = path.join( __dirname, "..", "app", "features", - "weapons", + "params", "data", ); -const OUTPUT_FILE = path.join(OUTPUT_DIR, "weapon-params.json"); +const OUTPUT_FILE = path.join(OUTPUT_DIR, "all-version-weapon-params.json"); +const SUB_OUTPUT_FILE = path.join(OUTPUT_DIR, "all-version-sub-params.json"); +const SPECIAL_OUTPUT_FILE = path.join( + OUTPUT_DIR, + "all-version-special-params.json", +); const WEAPON_TYPES_TO_IGNORE = [ "Mission", @@ -72,6 +91,31 @@ function buildWeaponFileNameToIdMap(): Map { return map; } +// Sub and special weapons share the per-version `weapon` GameParameterTable dump with main +// weapons, so only the canonical "Versus" entry of each id is kept (Hero/Mission/etc. variants +// of the same weapon are ignored). +function buildSubOrSpecialFileNameToIdMap( + entries: Array<{ Id: number; __RowId: string; Type: string }>, + allowedIds: ReadonlySet, +): Map { + const map = new Map(); + const seenFileNames = new Set(); + + for (const entry of entries) { + if (entry.Type !== "Versus") continue; + if (!allowedIds.has(entry.Id)) continue; + + const fileName = weaponRowIdToFileName(entry.__RowId); + + if (!seenFileNames.has(fileName)) { + seenFileNames.add(fileName); + map.set(fileName, entry.Id); + } + } + + return map; +} + function stripTypeFields(obj: unknown): unknown { if (obj === null || typeof obj !== "object") { return obj; @@ -196,6 +240,133 @@ function mergeWithHistory( return result; } +// SpecialPoint lives in WeaponInfoMain (kit data), which is not part of the per-version weapon +// GameParameterTable dump, so it is read per version from the local mush dir. +function collectSpecialPointsByVersion( + sortedVersions: string[], +): Map> { + const result = new Map>(); + const mainWeaponIdSet = new Set(mainWeaponIds); + + for (const version of sortedVersions) { + const filePath = path.join(MUSH_DIR, version, "WeaponInfoMain.json"); + if (!fs.existsSync(filePath)) continue; + + let entries: MainWeapon[]; + try { + entries = JSON.parse(fs.readFileSync(filePath, "utf8")); + } catch { + logger.warn(`Failed to parse ${filePath}`); + continue; + } + + for (const weapon of entries) { + if (mainWeaponShouldBeSkipped(weapon)) continue; + if (!mainWeaponIdSet.has(weapon.Id)) continue; + if (typeof weapon.SpecialPoint !== "number") continue; + + if (!result.has(weapon.Id)) { + result.set(weapon.Id, new Map()); + } + result.get(weapon.Id)!.set(version, weapon.SpecialPoint); + } + } + + return result; +} + +function buildSpecialPointsHistory( + specialPointsByVersion: Map>, + sortedVersions: string[], +): Record< + string, + { current: number; history: Array<{ version: string; value: number }> } +> { + const result: Record< + string, + { current: number; history: Array<{ version: string; value: number }> } + > = {}; + + for (const [weaponId, byVersion] of specialPointsByVersion) { + const presentVersions = sortedVersions.filter((v) => byVersion.has(v)); + if (presentVersions.length === 0) continue; + + const current = byVersion.get(presentVersions[presentVersions.length - 1])!; + const history: Array<{ version: string; value: number }> = []; + + for (let i = 0; i < presentVersions.length - 1; i++) { + const value = byVersion.get(presentVersions[i])!; + const nextValue = byVersion.get(presentVersions[i + 1])!; + if (value !== nextValue) { + history.push({ + version: parseVersionToDisplay(presentVersions[i]), + value, + }); + } + } + + result[String(weaponId)] = { current, history }; + } + + return result; +} + +// Reads every per-version `weapon` GameParameterTable dump for the given files and folds the +// historical values of each weapon into its latest params using versioned (`Key@version`) keys. +function buildParamsWithHistory( + fileNameToId: Map, + sortedVersions: string[], +): Record> { + const allVersions = new Map>>(); + + for (const version of sortedVersions) { + const weaponDir = path.join(PARAMETER_DIR, version, "weapon"); + if (!fs.existsSync(weaponDir)) continue; + + for (const file of fs.readdirSync(weaponDir)) { + if (!fileNameToId.has(file)) continue; + + const weaponId = fileNameToId.get(file)!; + const filePath = path.join(weaponDir, file); + + try { + const content = JSON.parse(fs.readFileSync(filePath, "utf8")); + const params = stripTypeFields(content.GameParameters) as Record< + string, + unknown + >; + + if (!allVersions.has(weaponId)) { + allVersions.set(weaponId, new Map()); + } + allVersions.get(weaponId)!.set(version, params); + } catch { + logger.warn(`Failed to parse ${filePath}`); + } + } + } + + const output: Record> = {}; + const latestVersion = sortedVersions[sortedVersions.length - 1]; + + for (const [weaponId, versionParams] of allVersions) { + const latestParams = versionParams.get(latestVersion); + if (!latestParams) continue; + + const versionsWithWeapon = sortedVersions.filter((v) => + versionParams.has(v), + ); + + output[String(weaponId)] = mergeWithHistory( + latestParams, + versionParams, + versionsWithWeapon, + ); + } + + return output; +} + async function main() { logger.info("Starting weapon params sync..."); @@ -208,78 +379,62 @@ async function main() { `Found ${sortedVersions.length} versions: ${sortedVersions.map(parseVersionToDisplay).join(", ")}`, ); + const latestVersion = sortedVersions[sortedVersions.length - 1]; + const metadata = { + generatedAt: new Date().toISOString(), + latestVersion: parseVersionToDisplay(latestVersion), + versions: sortedVersions.map(parseVersionToDisplay), + }; + const weaponFileNameToId = buildWeaponFileNameToIdMap(); logger.info(`Processing ${weaponFileNameToId.size} unique weapons`); + const outputWeapons = buildParamsWithHistory( + weaponFileNameToId, + sortedVersions, + ); - const weaponParamsAllVersions = new Map< - number, - Map> - >(); + const specialPoints = buildSpecialPointsHistory( + collectSpecialPointsByVersion(sortedVersions), + sortedVersions, + ); - for (const version of sortedVersions) { - const weaponDir = path.join(PARAMETER_DIR, version, "weapon"); - if (!fs.existsSync(weaponDir)) continue; + const outputSubWeapons = buildParamsWithHistory( + buildSubOrSpecialFileNameToIdMap(subWeapons, new Set(subWeaponIds)), + sortedVersions, + ); - const files = fs.readdirSync(weaponDir); - - for (const file of files) { - if (!weaponFileNameToId.has(file)) continue; - - const weaponId = weaponFileNameToId.get(file)!; - const filePath = path.join(weaponDir, file); - - try { - const content = JSON.parse(fs.readFileSync(filePath, "utf8")); - const params = stripTypeFields(content.GameParameters) as Record< - string, - unknown - >; - - if (!weaponParamsAllVersions.has(weaponId)) { - weaponParamsAllVersions.set(weaponId, new Map()); - } - weaponParamsAllVersions.get(weaponId)!.set(version, params); - } catch { - logger.warn(`Failed to parse ${filePath}`); - } - } - } - - const outputWeapons: Record> = {}; - const latestVersion = sortedVersions[sortedVersions.length - 1]; - - for (const [weaponId, versionParams] of weaponParamsAllVersions) { - const latestParams = versionParams.get(latestVersion); - if (!latestParams) continue; - - const versionsWithWeapon = sortedVersions.filter((v) => - versionParams.has(v), - ); - const paramsWithHistory = mergeWithHistory( - latestParams, - versionParams, - versionsWithWeapon, - ); - - outputWeapons[String(weaponId)] = paramsWithHistory; - } - - const output = { - metadata: { - generatedAt: new Date().toISOString(), - latestVersion: parseVersionToDisplay(latestVersion), - versions: sortedVersions.map(parseVersionToDisplay), - }, - weapons: outputWeapons, - }; + const outputSpecialWeapons = buildParamsWithHistory( + buildSubOrSpecialFileNameToIdMap(specialWeapons, new Set(specialWeaponIds)), + sortedVersions, + ); if (!fs.existsSync(OUTPUT_DIR)) { fs.mkdirSync(OUTPUT_DIR, { recursive: true }); } - fs.writeFileSync(OUTPUT_FILE, JSON.stringify(output, null, 2)); + fs.writeFileSync( + OUTPUT_FILE, + JSON.stringify( + { metadata, weapons: outputWeapons, specialPoints }, + null, + 2, + ), + ); + fs.writeFileSync( + SUB_OUTPUT_FILE, + JSON.stringify({ metadata, weapons: outputSubWeapons }, null, 2), + ); + fs.writeFileSync( + SPECIAL_OUTPUT_FILE, + JSON.stringify({ metadata, weapons: outputSpecialWeapons }, null, 2), + ); + logger.info(`Written to ${OUTPUT_FILE}`); - logger.info(`Total weapons: ${Object.keys(outputWeapons).length}`); + logger.info(`Total main weapons: ${Object.keys(outputWeapons).length}`); + logger.info(`Total sub weapons: ${Object.keys(outputSubWeapons).length}`); + logger.info( + `Total special weapons: ${Object.keys(outputSpecialWeapons).length}`, + ); } main().catch((err) => logger.error(err)); diff --git a/scripts/utils.ts b/scripts/utils.ts index f4689d89c..c08068ce6 100644 --- a/scripts/utils.ts +++ b/scripts/utils.ts @@ -1,12 +1,29 @@ import fs from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; -import type euEn from "./dicts/langs/EUen.json"; +import type euEn from "./dicts/splat3/data/language/EUen.json"; +// The splat3 dump exposes a `latest` symlink to the newest version folder, so these loaders never +// need to hard-code a version. +import type gearInfoClothes from "./dicts/splat3/data/mush/latest/GearInfoClothes.json"; +import type gearInfoHead from "./dicts/splat3/data/mush/latest/GearInfoHead.json"; +import type gearInfoShoes from "./dicts/splat3/data/mush/latest/GearInfoShoes.json"; +import type weaponInfoMain from "./dicts/splat3/data/mush/latest/WeaponInfoMain.json"; +import type weaponInfoSpecial from "./dicts/splat3/data/mush/latest/WeaponInfoSpecial.json"; +import type weaponInfoSub from "./dicts/splat3/data/mush/latest/WeaponInfoSub.json"; +import type splPlayer from "./dicts/splat3/data/parameter/latest/misc/SplPlayer.game__GameParameterTable.json"; +import type damageRateInfo from "./dicts/splat3/data/parameter/latest/misc/spl__DamageRateInfoConfig.pp__CombinationDataTableData.json"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); -const LANG_DICTS_PATH = path.join(__dirname, "dicts", "langs"); +const SPLAT3_DATA_PATH = path.join(__dirname, "dicts", "splat3", "data"); + +/** Per-version weapon/sub/special `GameParameterTable` dumps, keyed by patch version folder. */ +export const PARAMETER_DIR = path.join(SPLAT3_DATA_PATH, "parameter"); +/** Per-version `WeaponInfo`/`GearInfo` dumps, keyed by patch version folder. */ +export const MUSH_DIR = path.join(SPLAT3_DATA_PATH, "mush"); + +const LANG_DICTS_PATH = path.join(SPLAT3_DATA_PATH, "language"); export const LANG_JSONS_TO_CREATE = [ "EUen", @@ -47,3 +64,44 @@ export function translationJsonFolderName(langCode: string) { if (langCode === "USfr") return "fr-CA"; return langCode.slice(2); } + +/** Latest-version directory holding the per-weapon `GameParameterTable` dumps. */ +export function weaponParamsDir() { + return path.join(PARAMETER_DIR, "latest", "weapon"); +} + +export const loadWeaponInfoMain = () => + loadLatestMushJson("WeaponInfoMain"); +export const loadWeaponInfoSub = () => + loadLatestMushJson("WeaponInfoSub"); +export const loadWeaponInfoSpecial = () => + loadLatestMushJson("WeaponInfoSpecial"); +export const loadGearInfoClothes = () => + loadLatestMushJson("GearInfoClothes"); +export const loadGearInfoHead = () => + loadLatestMushJson("GearInfoHead"); +export const loadGearInfoShoes = () => + loadLatestMushJson("GearInfoShoes"); +export const loadSplPlayerParams = () => + loadLatestParameterMiscJson( + "SplPlayer.game__GameParameterTable", + ); +export const loadDamageRateInfo = () => + loadLatestParameterMiscJson( + "spl__DamageRateInfoConfig.pp__CombinationDataTableData", + ); + +function loadLatestMushJson(fileName: string): T { + return JSON.parse( + fs.readFileSync(path.join(MUSH_DIR, "latest", `${fileName}.json`), "utf8"), + ); +} + +function loadLatestParameterMiscJson(fileName: string): T { + return JSON.parse( + fs.readFileSync( + path.join(PARAMETER_DIR, "latest", "misc", `${fileName}.json`), + "utf8", + ), + ); +}