diff --git a/CHANGELOG.md b/CHANGELOG.md index 92e7b69..d15659a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,25 @@ # Changelog +## [15.0.0] - 2024-08-28 + +### Highlights +- Added `Game.Heuristic`, which can be used with `FXR.read` to let the library figure out what game an FXR file is for. + - This is now the default `game` value for the `FXR.read` function. (*Was `Game.EldenRing` previously.*) + - `FXR` objects now have a new `gameHint` property that stores what game the file was parsed as. It defaults to `Game.Generic`, and the only way to set it is using the `FXR.read` function. New effects created with `new FXR` or `FXR.fromJSON` will have the default value. The hint will be `Game.Heuristic` if the `FXR.read` function could not determine what game it was from. + - The `FXR.toArrayBuffer` and `FXR.saveAs` methods now use `Game.Heuristic` as the default game value too (*was also `Game.EldenRing` previously*), which will cause them to use the `gameHint` as the game, unless the hint is `Game.Heuristic`. If the hint is `Game.Heuristic`, they will look for some AC6-specific things, like action 800, and will use that as the game if anything is found. Otherwise, it will throw an error. I highly recommend still giving these methods a specific game, so the library doesn't need to guess. + - `FXR.read` can detect any DS3 or Sekiro effects perfectly, as long as they're not modified in ways that would make the effect invalid for the game. + - It has a pretty high chance of getting it right for ER and AC6, but it is not perfect, because there are a lot of ways to make AC6 effects that would be the same in ER. It will still read the effect correctly, as it doesn't matter if it's for ER or AC6 if they're both the same, but it affects the `gameHint` property, which can then affect `FXR.toArrayBuffer` and `FXR.saveAs`. +- Added a `Recolor.weightedAveragePalette` function, which takes a color palette with weights for each entry and returns a new palette that has the weighted average of all entries for each slot. +- Added a `randomSeed` function for generating random seeds to be used with randomization modifiers. The modifier classes already generated random seeds as default values, but this allows you to easily generate seeds that can be used in multiple properties, synchronizing their randomization. +- Added a `RandomFractionProperty` function. This was the only missing function to generate properties with randomization modifiers. The other two modifiers have had functions like this one for a while now. +- Added a `getValueType` function that returns the `ValueType` of a given value. This works with numbers, vector arrays, and properties. It's probably not super useful for most people, it's just a utility function used internally that I figured might as well be exported. +- All action fields/properties have been sorted in a way to make their order closer to their order in the actual files. It's not going to match exactly, because the actions in the library have all fields and properties from all four of the supported games, and some of the games have things moved around a bit. This order doesn't really affect much in the library or the documentation, but it causes the JSON structure to have the fields/properties in the new order, so it should hopefully make it easier to find and edit unknowns in the JSON. +- Named and documented the `bloom` field (previously `unk_ds3_f2_4`) in actions 600, 601, 602, 603, 604, 606, and 10012. This is simply a boolean field that toggles the extra bloom effect. (*Requires "Effects Quality" to be set to anything but "Low", and the `bloomColor` vector field to have a non-zero alpha.*) +- The behavior of the `unk_ds3_p2_0` property in `PointLight`s has been documented. The property is still unnamed. +- The `hex` template tag now also accepts strings starting with `#`, like `#ff0000`. +- Fixed the return type of the `hex` template tag. It was previously `number[]`, and is now `Vector4` like it should be. +- `BasicEffect` and `NodeEmitterEffect` can now be constructed without any arguments to make a default effect. + ## [14.1.0] - 2024-08-14 ### Highlights @@ -151,6 +171,7 @@ - External values 2000 and 70200 for AC6 have been documented thanks to lugia19. - Fixed action 301 (EqualDistanceEmitter) missing a type for one of its fields, potentially causing issues when writing to DS3's structure. +[15.0.0]: https://github.com/EvenTorset/fxr/compare/v14.1.0...v15.0.0 [14.1.0]: https://github.com/EvenTorset/fxr/compare/v14.0.1...v14.1.0 [14.0.1]: https://github.com/EvenTorset/fxr/compare/v14.0.0...v14.0.1 [14.0.0]: https://github.com/EvenTorset/fxr/compare/v13.0.0...v14.0.0 diff --git a/build/sort_props.js b/build/sort_props.js new file mode 100644 index 0000000..d5e3cd7 --- /dev/null +++ b/build/sort_props.js @@ -0,0 +1,79 @@ +import fs from 'node:fs' +import path from 'node:path' +import { fileURLToPath } from 'node:url' + +import yaml from 'yaml' + +const projectDir = path.dirname(path.dirname(fileURLToPath(import.meta.url))) +const srcDir = path.join(projectDir, 'src') +const actionsDir = path.join(srcDir, 'actions') + +function getLineIndex(str, index) { + if (index < 0 || index > str.length) return -1 + let lineNumber = 1 + let lineIndex = 0 + for (let i = 0; i < index; i++) { + if (str[i] === '\n') { + lineNumber++ + lineIndex = i + 1 + } + } + return lineIndex +} + +const gamesSort = { + DS3: 4e5, + SDT: 3e5, + ER: 2e5, + AC6: 1e5, +} + +for (const fn of fs.readdirSync(actionsDir)) { + const filePath = path.join(actionsDir, fn) + const yamlString = await fs.promises.readFile(filePath, 'utf-8') + const doc = yaml.parseDocument(yamlString) + if (!doc.get('properties')) continue; + + const props = doc.get('properties').items.map(item => ({ + key: item.key.value, + start: getLineIndex(yamlString, item.key.range[0]), + end: getLineIndex(yamlString, item.value.range[2]), + })) + + const propsStart = props[0].start + const propsEnd = props.at(-1).end + + const propIndices = {} + const games = doc.get('games').toJSON() + for (const { key } of props) { + let min = Infinity + for (const [n, game] of Object.entries(games)) { + if (typeof game !== 'object') continue; + if ('properties1' in game && Array.isArray(game.properties1) && game.properties1.includes(key)) { + min = Math.min(min, gamesSort[n] + 0e6 + game.properties1.indexOf(key)) + } + if ('properties2' in game && Array.isArray(game.properties2) && game.properties2.includes(key)) { + min = Math.min(min, gamesSort[n] + 1e6 + game.properties2.indexOf(key)) + } + if ('fields1' in game && Array.isArray(game.fields1) && game.fields1.includes(key)) { + min = Math.min(min, gamesSort[n] + 2e6 + game.fields1.indexOf(key)) + } + if ('fields2' in game && Array.isArray(game.fields2) && game.fields2.includes(key)) { + min = Math.min(min, gamesSort[n] + 3e6 + game.fields2.indexOf(key)) + } + if ('section10s' in game && Array.isArray(game.section10s) && game.section10s.includes(key)) { + min = Math.min(min, gamesSort[n] + 4e6 + game.section10s.indexOf(key)) + } + } + propIndices[key] = min + } + + props.sort((a, b) => propIndices[a.key] - propIndices[b.key]) + + const outputString = + yamlString.slice(0, propsStart) + + props.map(p => yamlString.slice(p.start, p.end)).join('') + + yamlString.slice(propsEnd) + + await fs.promises.writeFile(filePath, outputString) +} diff --git a/package-lock.json b/package-lock.json index 0038379..3d962d4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@cccode/fxr", - "version": "14.1.0", + "version": "15.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@cccode/fxr", - "version": "14.1.0", + "version": "15.0.0", "license": "Unlicense", "devDependencies": { "@types/node": "^22.0.0", @@ -24,12 +24,12 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.2.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.2.0.tgz", - "integrity": "sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==", + "version": "22.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.0.tgz", + "integrity": "sha512-DkFrJOe+rfdHTqqMg0bSNlGlQ85hSoh2TPzZyhHsXnMtligRWpxUySiyw8FY14ITt24HVCiQPWxS3KO/QlGmWg==", "dev": true, "dependencies": { - "undici-types": "~6.13.0" + "undici-types": "~6.19.2" } }, "node_modules/ansi-styles": { @@ -471,9 +471,9 @@ } }, "node_modules/typedoc": { - "version": "0.26.5", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.26.5.tgz", - "integrity": "sha512-Vn9YKdjKtDZqSk+by7beZ+xzkkr8T8CYoiasqyt4TTRFy5+UHzL/mF/o4wGBjRF+rlWQHDb0t6xCpA3JNL5phg==", + "version": "0.26.6", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.26.6.tgz", + "integrity": "sha512-SfEU3SH3wHNaxhFPjaZE2kNl/NFtLNW5c1oHsg7mti7GjmUj1Roq6osBQeMd+F4kL0BoRBBr8gQAuqBlfFu8LA==", "dev": true, "dependencies": { "lunr": "^2.3.9", @@ -512,9 +512,9 @@ "dev": true }, "node_modules/undici-types": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz", - "integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==", + "version": "6.19.6", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.6.tgz", + "integrity": "sha512-e/vggGopEfTKSvj4ihnOLTsqhrKRN3LeO6qSN/GxohhuRv8qH9bNQ4B8W7e/vFL+0XTnmHPB4/kegunZGA4Org==", "dev": true }, "node_modules/which": { diff --git a/package.json b/package.json index cd6c52d..cd04682 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@cccode/fxr", - "version": "14.1.0", + "version": "15.0.0", "description": "JavaScript library for creating and editing FXR files for Dark Souls 3, Sekiro, Elden Ring, and Armored Core 6.", "author": "CCCode", "type": "module", @@ -13,6 +13,7 @@ "types": "./dist/esm/fxr.d.ts", "scripts": { "build:yaml": "node build/run.js", + "build:sort-props": "node build/sort_props.js", "build:ts:esm": "npx tsc --p tsconfig-esm.json", "build:ts:cjs": "npx tsc --p tsconfig-cjs.json && echo {\"type\":\"commonjs\"} > dist/cjs/package.json", "build:ts": "npm-run-all --parallel build:ts:*", diff --git a/src/actions/10000.yml b/src/actions/10000.yml index 6ed4914..d49c9f9 100644 --- a/src/actions/10000.yml +++ b/src/actions/10000.yml @@ -11,6 +11,127 @@ desc: | The name of this action is from Elden Ring's RTTI, where it's called "StandardParticle". properties: + particleFollowFactor: + type: ScalarValue + desc: | + Controls how well the particles follow the node if it moves. + unk_ds3_p1_1: + type: ScalarValue + unk_ds3_p1_2: + type: ScalarValue + unk_ds3_p1_3: + type: ScalarValue + particleAccelerationX: + type: ScalarValue + scale: true + time: sq + desc: | + Particle acceleration along the X-axis. + see: + - particleAccelerationMin + - particleAccelerationMax + particleAccelerationY: + type: ScalarValue + scale: true + time: sq + desc: | + Particle acceleration along the Y-axis. + see: + - particleAccelerationMin + - particleAccelerationMax + particleAccelerationZ: + type: ScalarValue + scale: true + time: sq + desc: | + Particle acceleration along the Z-axis. + see: + - particleAccelerationMin + - particleAccelerationMax + unk_ds3_p1_7: + type: ScalarValue + unk_ds3_p1_8: + type: ScalarValue + particleAngularAccelerationZ: + type: ScalarValue + time: sq + desc: | + Angular acceleration for particles around the Z-axis in degrees per second squared. + see: + - particleAngularAccelerationMin + - particleAngularAccelerationMax + particleGrowthRateX: + type: ScalarValue + scale: true + time: true + desc: | + The rate of change for the width of the particles. + see: + - particleGrowthRateXStatic + particleGrowthRateY: + type: ScalarValue + scale: true + time: true + desc: | + The rate of change for the height of the particles. + see: + - particleGrowthRateYStatic + unk_ds3_p1_12: + type: ScalarValue + color: + type: Vector4Value + default: [1, 1, 1, 1] + argument: ParticleAge + color: true + desc: | + Color multiplier. + unk_ds3_p1_14: + type: ScalarValue + default: 1 + unk_ds3_p1_15: + type: ScalarValue + unkParticleAcceleration: + type: ScalarValue + scale: true + time: sq + desc: | + Seemingly identical to {@link particleAccelerationZ}? + unk_ds3_p1_17: + type: ScalarValue + particleGravity: + type: ScalarValue + scale: true + time: sq + desc: | + Downwards acceleration for particles. + particleRandomTurnAngle: + type: ScalarValue + desc: | + Maximum random turn angle for particles. Requires {@link particleRandomTurns} to be enabled. + see: + - particleRandomTurns + - particleRandomTurnIntervalMax + unk_ds3_p1_20: + type: ScalarValue + unk_ds3_p2_0: + type: ScalarValue + default: 1 + unk_ds3_p2_1: + type: ScalarValue + default: 1 + unk_ds3_p2_2: + type: ScalarValue + unk_ds3_p2_3: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_4: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_5: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_6: + type: ScalarValue unk_ds3_f1_0: field: int default: 1005 @@ -603,10 +724,6 @@ properties: - This does not affect the natural bloom effect from high color values. see: - bloom - desaturate: - field: float - desc: | - Desaturates the particles, making them more grayscale. At 0, the particles will have their regular colors. At 1, they will be entirely grayscale. unk_sdt_f1_160: field: float default: 1 @@ -629,6 +746,10 @@ properties: unk_er_f1_167: field: float default: 1 + desaturate: + field: float + desc: | + Desaturates the particles, making them more grayscale. At 0, the particles will have their regular colors. At 1, they will be entirely grayscale. unk_ds3_f2_0: field: int unk_ds3_f2_1: @@ -662,32 +783,32 @@ properties: field: int unk_ds3_f2_13: field: int - minDistance: + minFadeDistance: field: float default: -1 scale: ifNotMinusOne desc: | - Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - - This requires {@link minFadeDistance} to be set to something other than -1. + This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. - This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. see: - - minFadeDistance + - minDistance - maxFadeDistance - maxDistance - minDistanceThreshold - maxDistanceThreshold - minFadeDistance: + minDistance: field: float default: -1 scale: ifNotMinusOne desc: | - This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + This requires {@link minFadeDistance} to be set to something other than -1. + + This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. see: - - minDistance + - minFadeDistance - maxFadeDistance - maxDistance - minDistanceThreshold @@ -821,127 +942,6 @@ properties: - glossiness unk_er_f2_39: field: int - particleFollowFactor: - type: ScalarValue - desc: | - Controls how well the particles follow the node if it moves. - unk_ds3_p1_1: - type: ScalarValue - unk_ds3_p1_2: - type: ScalarValue - unk_ds3_p1_3: - type: ScalarValue - particleAccelerationX: - type: ScalarValue - scale: true - time: sq - desc: | - Particle acceleration along the X-axis. - see: - - particleAccelerationMin - - particleAccelerationMax - particleAccelerationY: - type: ScalarValue - scale: true - time: sq - desc: | - Particle acceleration along the Y-axis. - see: - - particleAccelerationMin - - particleAccelerationMax - particleAccelerationZ: - type: ScalarValue - scale: true - time: sq - desc: | - Particle acceleration along the Z-axis. - see: - - particleAccelerationMin - - particleAccelerationMax - unk_ds3_p1_7: - type: ScalarValue - unk_ds3_p1_8: - type: ScalarValue - particleAngularAccelerationZ: - type: ScalarValue - time: sq - desc: | - Angular acceleration for particles around the Z-axis in degrees per second squared. - see: - - particleAngularAccelerationMin - - particleAngularAccelerationMax - particleGrowthRateX: - type: ScalarValue - scale: true - time: true - desc: | - The rate of change for the width of the particles. - see: - - particleGrowthRateXStatic - particleGrowthRateY: - type: ScalarValue - scale: true - time: true - desc: | - The rate of change for the height of the particles. - see: - - particleGrowthRateYStatic - unk_ds3_p1_12: - type: ScalarValue - color: - type: Vector4Value - default: [1, 1, 1, 1] - argument: ParticleAge - color: true - desc: | - Color multiplier. - unk_ds3_p1_14: - type: ScalarValue - default: 1 - unk_ds3_p1_15: - type: ScalarValue - unkParticleAcceleration: - type: ScalarValue - scale: true - time: sq - desc: | - Seemingly identical to {@link particleAccelerationZ}? - unk_ds3_p1_17: - type: ScalarValue - particleGravity: - type: ScalarValue - scale: true - time: sq - desc: | - Downwards acceleration for particles. - particleRandomTurnAngle: - type: ScalarValue - desc: | - Maximum random turn angle for particles. Requires {@link particleRandomTurns} to be enabled. - see: - - particleRandomTurns - - particleRandomTurnIntervalMax - unk_ds3_p1_20: - type: ScalarValue - unk_ds3_p2_0: - type: ScalarValue - default: 1 - unk_ds3_p2_1: - type: ScalarValue - default: 1 - unk_ds3_p2_2: - type: ScalarValue - unk_ds3_p2_3: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_4: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_5: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_6: - type: ScalarValue games: DS3: fields1: diff --git a/src/actions/10001.yml b/src/actions/10001.yml index dab5416..db7cb0b 100644 --- a/src/actions/10001.yml +++ b/src/actions/10001.yml @@ -11,6 +11,127 @@ desc: | Note: This action does not exist in Dark Souls 3 or Sekiro, but it still has unknown fields and properties named after those games. This is because it makes the conversion between this action and {@link ActionType.GPUStandardParticle GPUStandardParticle} much simpler. When written for those two games, this action will be converted to the other action automatically. properties: + particleFollowFactor: + type: ScalarValue + desc: | + Controls how well the particles follow the node if it moves. + unk_ds3_p1_1: + type: ScalarValue + unk_ds3_p1_2: + type: ScalarValue + unk_ds3_p1_3: + type: ScalarValue + particleAccelerationX: + type: ScalarValue + scale: true + time: sq + desc: | + Particle acceleration along the X-axis. + see: + - particleAccelerationMin + - particleAccelerationMax + particleAccelerationY: + type: ScalarValue + scale: true + time: sq + desc: | + Particle acceleration along the Y-axis. + see: + - particleAccelerationMin + - particleAccelerationMax + particleAccelerationZ: + type: ScalarValue + scale: true + time: sq + desc: | + Particle acceleration along the Z-axis. + see: + - particleAccelerationMin + - particleAccelerationMax + unk_ds3_p1_7: + type: ScalarValue + unk_ds3_p1_8: + type: ScalarValue + particleAngularAccelerationZ: + type: ScalarValue + time: sq + desc: | + Angular acceleration for particles around the Z-axis in degrees per second squared. + see: + - particleAngularAccelerationMin + - particleAngularAccelerationMax + particleGrowthRateX: + type: ScalarValue + scale: true + time: true + desc: | + The rate of change for the width of the particles. + see: + - particleGrowthRateXStatic + particleGrowthRateY: + type: ScalarValue + scale: true + time: true + desc: | + The rate of change for the height of the particles. + see: + - particleGrowthRateYStatic + unk_ds3_p1_12: + type: ScalarValue + color: + type: Vector4Value + default: [1, 1, 1, 1] + argument: ParticleAge + color: true + desc: | + Color multiplier. + unk_ds3_p1_14: + type: ScalarValue + default: 1 + unk_ds3_p1_15: + type: ScalarValue + unkParticleAcceleration: + type: ScalarValue + scale: true + time: sq + desc: | + Seemingly identical to {@link particleAccelerationZ}? + unk_ds3_p1_17: + type: ScalarValue + particleGravity: + type: ScalarValue + scale: true + time: sq + desc: | + Downwards acceleration for particles. + particleRandomTurnAngle: + type: ScalarValue + desc: | + Maximum random turn angle for particles. Requires {@link particleRandomTurns} to be enabled. + see: + - particleRandomTurns + - particleRandomTurnIntervalMax + unk_ds3_p1_20: + type: ScalarValue + unk_ds3_p2_0: + type: ScalarValue + default: 1 + unk_ds3_p2_1: + type: ScalarValue + default: 1 + unk_ds3_p2_2: + type: ScalarValue + unk_ds3_p2_3: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_4: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_5: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_6: + type: ScalarValue unk_ds3_f1_0: field: int default: 1005 @@ -658,32 +779,32 @@ properties: field: int unk_ds3_f2_13: field: int - minDistance: + minFadeDistance: field: float default: -1 scale: ifNotMinusOne desc: | - Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - - This requires {@link minFadeDistance} to be set to something other than -1. + This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. - This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. see: - - minFadeDistance + - minDistance - maxFadeDistance - maxDistance - minDistanceThreshold - maxDistanceThreshold - minFadeDistance: + minDistance: field: float default: -1 scale: ifNotMinusOne desc: | - This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + This requires {@link minFadeDistance} to be set to something other than -1. + + This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. see: - - minDistance + - minFadeDistance - maxFadeDistance - maxDistance - minDistanceThreshold @@ -817,127 +938,6 @@ properties: - glossiness unk_er_f2_39: field: int - particleFollowFactor: - type: ScalarValue - desc: | - Controls how well the particles follow the node if it moves. - unk_ds3_p1_1: - type: ScalarValue - unk_ds3_p1_2: - type: ScalarValue - unk_ds3_p1_3: - type: ScalarValue - particleAccelerationX: - type: ScalarValue - scale: true - time: sq - desc: | - Particle acceleration along the X-axis. - see: - - particleAccelerationMin - - particleAccelerationMax - particleAccelerationY: - type: ScalarValue - scale: true - time: sq - desc: | - Particle acceleration along the Y-axis. - see: - - particleAccelerationMin - - particleAccelerationMax - particleAccelerationZ: - type: ScalarValue - scale: true - time: sq - desc: | - Particle acceleration along the Z-axis. - see: - - particleAccelerationMin - - particleAccelerationMax - unk_ds3_p1_7: - type: ScalarValue - unk_ds3_p1_8: - type: ScalarValue - particleAngularAccelerationZ: - type: ScalarValue - time: sq - desc: | - Angular acceleration for particles around the Z-axis in degrees per second squared. - see: - - particleAngularAccelerationMin - - particleAngularAccelerationMax - particleGrowthRateX: - type: ScalarValue - scale: true - time: true - desc: | - The rate of change for the width of the particles. - see: - - particleGrowthRateXStatic - particleGrowthRateY: - type: ScalarValue - scale: true - time: true - desc: | - The rate of change for the height of the particles. - see: - - particleGrowthRateYStatic - unk_ds3_p1_12: - type: ScalarValue - color: - type: Vector4Value - default: [1, 1, 1, 1] - argument: ParticleAge - color: true - desc: | - Color multiplier. - unk_ds3_p1_14: - type: ScalarValue - default: 1 - unk_ds3_p1_15: - type: ScalarValue - unkParticleAcceleration: - type: ScalarValue - scale: true - time: sq - desc: | - Seemingly identical to {@link particleAccelerationZ}? - unk_ds3_p1_17: - type: ScalarValue - particleGravity: - type: ScalarValue - scale: true - time: sq - desc: | - Downwards acceleration for particles. - particleRandomTurnAngle: - type: ScalarValue - desc: | - Maximum random turn angle for particles. Requires {@link particleRandomTurns} to be enabled. - see: - - particleRandomTurns - - particleRandomTurnIntervalMax - unk_ds3_p1_20: - type: ScalarValue - unk_ds3_p2_0: - type: ScalarValue - default: 1 - unk_ds3_p2_1: - type: ScalarValue - default: 1 - unk_ds3_p2_2: - type: ScalarValue - unk_ds3_p2_3: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_4: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_5: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_6: - type: ScalarValue games: DS3: fallback SDT: fallback diff --git a/src/actions/10003.yml b/src/actions/10003.yml index f586769..5ed1806 100644 --- a/src/actions/10003.yml +++ b/src/actions/10003.yml @@ -7,6 +7,38 @@ meta: desc: | A pretty simple light shafts effect only used in Dark Souls 3. It shows up if converted for Sekiro, but it doesn't seem to work correctly in that game. It does not seem to work at all in Elden Ring or Armored Core 6. properties: + width: + type: ScalarValue + default: 1 + scale: true + height: + type: ScalarValue + default: 1 + scale: true + color1: + type: Vector4Value + default: [1, 1, 1, 1] + color: true + color2: + type: Vector4Value + default: [1, 1, 1, 1] + color: true + color3: + type: Vector4Value + default: [1, 1, 1, 1] + color: true + unk_ds3_p1_5: + type: ScalarValue + unk_ds3_p1_6: + type: ScalarValue + unk_ds3_p1_7: + type: ScalarValue + unk_ds3_p1_8: + type: ScalarValue + default: 1 + unk_ds3_p1_9: + type: ScalarValue + default: 1 texture: field: int resource: texture @@ -99,38 +131,6 @@ properties: default: -1 unk_ds3_f1_29: field: int - width: - type: ScalarValue - default: 1 - scale: true - height: - type: ScalarValue - default: 1 - scale: true - color1: - type: Vector4Value - default: [1, 1, 1, 1] - color: true - color2: - type: Vector4Value - default: [1, 1, 1, 1] - color: true - color3: - type: Vector4Value - default: [1, 1, 1, 1] - color: true - unk_ds3_p1_5: - type: ScalarValue - unk_ds3_p1_6: - type: ScalarValue - unk_ds3_p1_7: - type: ScalarValue - unk_ds3_p1_8: - type: ScalarValue - default: 1 - unk_ds3_p1_9: - type: ScalarValue - default: 1 games: DS3: fields1: diff --git a/src/actions/10008.yml b/src/actions/10008.yml index cf60a1f..c9d955b 100644 --- a/src/actions/10008.yml +++ b/src/actions/10008.yml @@ -13,6 +13,92 @@ desc: | This action was first used in Armored Core 6, but definitely also works in Sekiro and Elden Ring. It might work in Dark Souls 3, but its structure is at least somewhat different there, and what that structure looks like is unknown. AC6's structure is compatible with Sekiro and ER, but some features may not work due to having been added in later versions. properties: + particleFollowFactor: + type: ScalarValue + desc: | + Controls how well the particles follow the node if it moves. + unk_ac6_p1_1: + type: ScalarValue + unk_ac6_p1_2: + type: ScalarValue + unk_ac6_p1_3: + type: ScalarValue + particleAccelerationX: + type: ScalarValue + scale: true + time: sq + desc: | + Particle acceleration along the X-axis. + particleAccelerationY: + type: ScalarValue + scale: true + time: sq + desc: | + Particle acceleration along the Y-axis. + particleAccelerationZ: + type: ScalarValue + scale: true + time: sq + desc: | + Particle acceleration along the Z-axis. + color: + type: Vector4Value + default: [1, 1, 1, 1] + argument: ParticleAge + color: true + desc: | + Color multiplier. + particleLength: + type: ScalarValue + default: 1 + time: inv + particleWidth: + type: ScalarValue + default: 0.1 + unkParticleAcceleration: + type: ScalarValue + scale: true + time: sq + desc: | + Similar to {@link particleAccelerationZ}, but this does not go exactly north? + + This requires any of the following fields to have a non-zero value: + - {@link particleSpeedMin} + - {@link particleSpeedMax} + unk_ac6_p1_11: + type: ScalarValue + particleGravity: + type: ScalarValue + default: 1 + scale: true + time: sq + desc: | + Downwards acceleration for particles. + + This requires any of the following fields to have a non-zero value: + - {@link particleSpeedMin} + - {@link particleSpeedMax} + unk_ac6_p1_13: + type: ScalarValue + unk_ac6_p2_0: + type: ScalarValue + default: 1 + unk_ac6_p2_1: + type: ScalarValue + default: 1 + unk_ac6_p2_2: + type: ScalarValue + unk_ac6_p2_3: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ac6_p2_4: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ac6_p2_5: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ac6_p2_6: + type: ScalarValue texture: field: int default: 1 @@ -538,92 +624,6 @@ properties: field: float unk_ac6_f2_39: field: int - particleFollowFactor: - type: ScalarValue - desc: | - Controls how well the particles follow the node if it moves. - unk_ac6_p1_1: - type: ScalarValue - unk_ac6_p1_2: - type: ScalarValue - unk_ac6_p1_3: - type: ScalarValue - particleAccelerationX: - type: ScalarValue - scale: true - time: sq - desc: | - Particle acceleration along the X-axis. - particleAccelerationY: - type: ScalarValue - scale: true - time: sq - desc: | - Particle acceleration along the Y-axis. - particleAccelerationZ: - type: ScalarValue - scale: true - time: sq - desc: | - Particle acceleration along the Z-axis. - color: - type: Vector4Value - default: [1, 1, 1, 1] - argument: ParticleAge - color: true - desc: | - Color multiplier. - particleLength: - type: ScalarValue - default: 1 - time: inv - particleWidth: - type: ScalarValue - default: 0.1 - unkParticleAcceleration: - type: ScalarValue - scale: true - time: sq - desc: | - Similar to {@link particleAccelerationZ}, but this does not go exactly north? - - This requires any of the following fields to have a non-zero value: - - {@link particleSpeedMin} - - {@link particleSpeedMax} - unk_ac6_p1_11: - type: ScalarValue - particleGravity: - type: ScalarValue - default: 1 - scale: true - time: sq - desc: | - Downwards acceleration for particles. - - This requires any of the following fields to have a non-zero value: - - {@link particleSpeedMin} - - {@link particleSpeedMax} - unk_ac6_p1_13: - type: ScalarValue - unk_ac6_p2_0: - type: ScalarValue - default: 1 - unk_ac6_p2_1: - type: ScalarValue - default: 1 - unk_ac6_p2_2: - type: ScalarValue - unk_ac6_p2_3: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ac6_p2_4: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ac6_p2_5: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ac6_p2_6: - type: ScalarValue games: SDT: AC6 ER: AC6 diff --git a/src/actions/10009.yml b/src/actions/10009.yml index 3b29341..f873286 100644 --- a/src/actions/10009.yml +++ b/src/actions/10009.yml @@ -14,6 +14,92 @@ desc: | The name of this action is from Elden Ring's RTTI, where it's called "SparkCorrectParticle". properties: + particleFollowFactor: + type: ScalarValue + desc: | + Controls how well the particles follow the node if it moves. + unk_ac6_p1_1: + type: ScalarValue + unk_ac6_p1_2: + type: ScalarValue + unk_ac6_p1_3: + type: ScalarValue + particleAccelerationX: + type: ScalarValue + scale: true + time: sq + desc: | + Particle acceleration along the X-axis. + particleAccelerationY: + type: ScalarValue + scale: true + time: sq + desc: | + Particle acceleration along the Y-axis. + particleAccelerationZ: + type: ScalarValue + scale: true + time: sq + desc: | + Particle acceleration along the Z-axis. + color: + type: Vector4Value + default: [1, 1, 1, 1] + argument: ParticleAge + color: true + desc: | + Color multiplier. + particleLength: + type: ScalarValue + default: 1 + time: inv + particleWidth: + type: ScalarValue + default: 0.1 + unkParticleAcceleration: + type: ScalarValue + scale: true + time: sq + desc: | + Similar to {@link particleAccelerationZ}, but this does not go exactly north? + + This requires any of the following fields to have a non-zero value: + - {@link particleSpeedMin} + - {@link particleSpeedMax} + unk_ac6_p1_11: + type: ScalarValue + particleGravity: + type: ScalarValue + default: 1 + scale: true + time: sq + desc: | + Downwards acceleration for particles. + + This requires any of the following fields to have a non-zero value: + - {@link particleSpeedMin} + - {@link particleSpeedMax} + unk_ac6_p1_13: + type: ScalarValue + unk_ac6_p2_0: + type: ScalarValue + default: 1 + unk_ac6_p2_1: + type: ScalarValue + default: 1 + unk_ac6_p2_2: + type: ScalarValue + unk_ac6_p2_3: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ac6_p2_4: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ac6_p2_5: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ac6_p2_6: + type: ScalarValue texture: field: int default: 1 @@ -539,92 +625,6 @@ properties: field: float unk_ac6_f2_39: field: int - particleFollowFactor: - type: ScalarValue - desc: | - Controls how well the particles follow the node if it moves. - unk_ac6_p1_1: - type: ScalarValue - unk_ac6_p1_2: - type: ScalarValue - unk_ac6_p1_3: - type: ScalarValue - particleAccelerationX: - type: ScalarValue - scale: true - time: sq - desc: | - Particle acceleration along the X-axis. - particleAccelerationY: - type: ScalarValue - scale: true - time: sq - desc: | - Particle acceleration along the Y-axis. - particleAccelerationZ: - type: ScalarValue - scale: true - time: sq - desc: | - Particle acceleration along the Z-axis. - color: - type: Vector4Value - default: [1, 1, 1, 1] - argument: ParticleAge - color: true - desc: | - Color multiplier. - particleLength: - type: ScalarValue - default: 1 - time: inv - particleWidth: - type: ScalarValue - default: 0.1 - unkParticleAcceleration: - type: ScalarValue - scale: true - time: sq - desc: | - Similar to {@link particleAccelerationZ}, but this does not go exactly north? - - This requires any of the following fields to have a non-zero value: - - {@link particleSpeedMin} - - {@link particleSpeedMax} - unk_ac6_p1_11: - type: ScalarValue - particleGravity: - type: ScalarValue - default: 1 - scale: true - time: sq - desc: | - Downwards acceleration for particles. - - This requires any of the following fields to have a non-zero value: - - {@link particleSpeedMin} - - {@link particleSpeedMax} - unk_ac6_p1_13: - type: ScalarValue - unk_ac6_p2_0: - type: ScalarValue - default: 1 - unk_ac6_p2_1: - type: ScalarValue - default: 1 - unk_ac6_p2_2: - type: ScalarValue - unk_ac6_p2_3: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ac6_p2_4: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ac6_p2_5: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ac6_p2_6: - type: ScalarValue games: ER: AC6 AC6: diff --git a/src/actions/10012.yml b/src/actions/10012.yml index 68726be..89dcabc 100644 --- a/src/actions/10012.yml +++ b/src/actions/10012.yml @@ -9,107 +9,6 @@ desc: | This is slightly different from {@link Tracer}, as the trail from this is less visible when it's moving slower. properties: - orientation: - type: TracerOrientationMode - field: int - default: TracerOrientationMode.LocalZ - desc: | - Tracer orientation mode. See {@link TracerOrientationMode} for more information. - normalMap: - field: int - default: 0 - resource: texture - textureType: 'n' - desc: | - Normal map texture ID. - - This is used to control the distortion effect of the trail. - see: - - distortionIntensity - segmentInterval: - field: float - default: 0 - time: inv - desc: | - The trail is made up of multiple quads, or *segments*. This controls how many seconds to wait between new segments being created. Lower values produce a smoother trail. - segmentDuration: - field: float - default: 1 - time: inv - desc: | - The trail is made up of multiple quads, or *segments*. This controls how long each segment should last in seconds. - concurrentSegments: - field: int - default: 100 - desc: | - The trail is made up of multiple quads, or *segments*. This controls how many segments may exist at the same time. - columns: - field: int - default: 1 - desc: | - To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. - see: - - totalFrames - totalFrames: - field: int - default: 1 - desc: | - To split the texture into multiple animation frames, this value must be set to the total number of frames in the texture. - see: - - columns - attachedUV: - field: bool - default: true - desc: | - Controls whether or not the UV of the trail should be attached to the node or not. If it is attached, the texture will slide along the segments to follow the source wherever it moves, as if it was a flag attached to a pole. If it is not attached, the texture will stay where it was when the segment was created, like a skid mark on a road where the road is the segments and the mark is the texture, it wouldn't follow the car/node that made it. - bloomColor: - field: vec4 - default: [1, 1, 1, 0] - color: true - desc: | - Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. - - Note: - - This has no effect if the "Effects Quality" setting is set to "Low". - - This does not affect the natural bloom effect from high color values. - shadowDarkness: - field: float - desc: | - Controls how dark shaded parts of the trail are. - specular: - field: int - resource: texture - textureType: 3m - desc: | - Specular texture ID. - see: - - lighting - - glossiness - - specularity - glossiness: - field: float - default: 0.25 - desc: | - Controls how sharp the specular highlights are. - see: - - lighting - - specular - - specularity - lighting: - type: LightingMode - field: int - default: LightingMode.Unlit - desc: | - Controls how the trail is lit. See {@link LightingMode} for more information. - specularity: - field: float - default: 0.5 - desc: | - Controls how bright the specular highlights are. - see: - - lighting - - specular - - glossiness texture: type: ScalarValue field: int @@ -139,6 +38,10 @@ properties: argument: EmissionTime desc: | Multiplier for {@link width}. + unk_ds3_p1_2: + type: ScalarValue + unk_ds3_p1_3: + type: ScalarValue color1: type: Vector4Value default: [1, 1, 1, 1] @@ -196,6 +99,9 @@ properties: argument: ParticleAge desc: | Controls how much the UV coordinates should be randomly offset by per segment. + unk_ds3_p1_13: + type: ScalarValue + default: -1 rgbMultiplier: type: ScalarValue default: 1 @@ -208,12 +114,88 @@ properties: argument: EffectAge desc: | Alpha multiplier. + distortionIntensity: + type: ScalarValue + argument: EffectAge + desc: | + Controls the intensity of the distortion effect. At 0, there is no distortion at all. + see: + - normalMap + unk_ds3_p2_3: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_4: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_5: + type: Vector4Value + default: [1, 1, 1, 1] + alphaThreshold: + type: ScalarValue + argument: EffectAge + desc: | + Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. + + This threshold creates a hard cut-off between visible and not visible, which is unlike the {@link alphaFadeThreshold}. + orientation: + type: TracerOrientationMode + field: int + default: TracerOrientationMode.LocalZ + desc: | + Tracer orientation mode. See {@link TracerOrientationMode} for more information. + normalMap: + field: int + default: 0 + resource: texture + textureType: 'n' + desc: | + Normal map texture ID. + + This is used to control the distortion effect of the trail. + see: + - distortionIntensity + segmentInterval: + field: float + default: 0 + time: inv + desc: | + The trail is made up of multiple quads, or *segments*. This controls how many seconds to wait between new segments being created. Lower values produce a smoother trail. + segmentDuration: + field: float + default: 1 + time: inv + desc: | + The trail is made up of multiple quads, or *segments*. This controls how long each segment should last in seconds. + concurrentSegments: + field: int + default: 100 + desc: | + The trail is made up of multiple quads, or *segments*. This controls how many segments may exist at the same time. unk_ds3_f1_7: field: int unk_ds3_f1_8: field: float unk_ds3_f1_9: field: float + columns: + field: int + default: 1 + desc: | + To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. + see: + - totalFrames + totalFrames: + field: int + default: 1 + desc: | + To split the texture into multiple animation frames, this value must be set to the total number of frames in the texture. + see: + - columns + attachedUV: + field: bool + default: true + desc: | + Controls whether or not the UV of the trail should be attached to the node or not. If it is attached, the texture will slide along the segments to follow the source wherever it moves, as if it was a flag attached to a pole. If it is not attached, the texture will stay where it was when the segment was created, like a skid mark on a road where the road is the segments and the mark is the texture, it wouldn't follow the car/node that made it. unk_ds3_f1_13: field: int default: -1 @@ -222,6 +204,28 @@ properties: default: -1 unk_ds3_f1_15: field: int + unk_sdt_f1_14: + field: int + default: 1 + unk_sdt_f1_15: + field: float + default: 1 + unk_sdt_f1_16: + field: float + default: 1 + unk_sdt_f1_17: + field: float + default: 1 + unk_er_f1_18: + field: int + default: 1 + unk_er_f1_19: + field: int + default: 1 + unk_er_f1_20: + field: int + unk_er_f1_21: + field: float unk_ds3_f2_0: field: int unk_ds3_f2_1: @@ -231,9 +235,29 @@ properties: default: 8 unk_ds3_f2_3: field: int - unk_ds3_f2_4: - field: int - default: 1 + bloom: + field: bool + default: true + desc: | + Controls whether or not the particles have an additional bloom effect controlled by {@link bloomColor}. + + Note: + - This has no effect if the "Effects Quality" setting is set to "Low". + - This does not affect the natural bloom effect from high color values. + see: + - bloomColor + bloomColor: + field: vec4 + default: [1, 1, 1, 0] + color: true + desc: | + Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + + Note: + - This has no effect if the "Effects Quality" setting is set to "Low". + - This does not affect the natural bloom effect from high color values. + see: + - bloom unk_ds3_f2_9: field: int unk_ds3_f2_10: @@ -244,32 +268,32 @@ properties: field: int unk_ds3_f2_13: field: int - minDistance: + minFadeDistance: field: float default: -1 scale: ifNotMinusOne desc: | - Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - - This requires {@link minFadeDistance} to be set to something other than -1. + This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. - This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. see: - - minFadeDistance + - minDistance - maxFadeDistance - maxDistance - minDistanceThreshold - maxDistanceThreshold - minFadeDistance: + minDistance: field: float default: -1 scale: ifNotMinusOne desc: | - This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + This requires {@link minFadeDistance} to be set to something other than -1. + + This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. see: - - minDistance + - minFadeDistance - maxFadeDistance - maxDistance - minDistanceThreshold @@ -352,73 +376,59 @@ properties: unk_ds3_f2_29: field: float default: 5 - unk_ds3_p1_2: - type: ScalarValue - unk_ds3_p1_3: - type: ScalarValue - unk_ds3_p1_13: - type: ScalarValue - default: -1 - distortionIntensity: - type: ScalarValue - argument: EffectAge - desc: | - Controls the intensity of the distortion effect. At 0, there is no distortion at all. - see: - - normalMap - unk_ds3_p2_3: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_4: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_5: - type: Vector4Value - default: [1, 1, 1, 1] - alphaThreshold: - type: ScalarValue - argument: EffectAge + shadowDarkness: + field: float desc: | - Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - - This threshold creates a hard cut-off between visible and not visible, which is unlike the {@link alphaFadeThreshold}. + Controls how dark shaded parts of the trail are. unk_sdt_f2_31: field: int unk_sdt_f2_32: field: int default: 1 + specular: + field: int + resource: texture + textureType: 3m + desc: | + Specular texture ID. + see: + - lighting + - glossiness + - specularity + glossiness: + field: float + default: 0.25 + desc: | + Controls how sharp the specular highlights are. + see: + - lighting + - specular + - specularity + lighting: + type: LightingMode + field: int + default: LightingMode.Unlit + desc: | + Controls how the trail is lit. See {@link LightingMode} for more information. unk_sdt_f2_36: field: int default: -2 unk_sdt_f2_37: field: int - unk_er_f1_18: - field: int - default: 1 - unk_er_f1_19: - field: int - default: 1 - unk_er_f1_20: - field: int - unk_er_f1_21: + specularity: field: float + default: 0.5 + desc: | + Controls how bright the specular highlights are. + see: + - lighting + - specular + - glossiness unk_er_f2_39: field: int unk_er_f2_40: field: float default: 1 - unk_sdt_f1_14: - field: int - default: 1 - unk_sdt_f1_15: - field: float - default: 1 - unk_sdt_f1_16: - field: float - default: 1 - unk_sdt_f1_17: - field: float - default: 1 unk_ac6_f2_41: field: float games: @@ -445,7 +455,7 @@ games: - unk_ds3_f2_1 - unk_ds3_f2_2 - unk_ds3_f2_3 - - unk_ds3_f2_4 + - bloom - bloomColor # # @@ -519,7 +529,7 @@ games: - unk_ds3_f2_1 - unk_ds3_f2_2 - unk_ds3_f2_3 - - unk_ds3_f2_4 + - bloom - bloomColor # # @@ -601,7 +611,7 @@ games: - unk_ds3_f2_1 - unk_ds3_f2_2 - unk_ds3_f2_3 - - unk_ds3_f2_4 + - bloom - bloomColor # # @@ -647,7 +657,7 @@ games: - unk_ds3_f2_1 - unk_ds3_f2_2 - unk_ds3_f2_3 - - unk_ds3_f2_4 + - bloom - bloomColor # # diff --git a/src/actions/10014.yml b/src/actions/10014.yml index de6e3cd..c305cce 100644 --- a/src/actions/10014.yml +++ b/src/actions/10014.yml @@ -7,13 +7,6 @@ meta: desc: | Creates lens flares with up to 4 textured layers with different colors and sizes. properties: - layer1: - field: int - default: 1 - resource: texture - textureType: a - desc: | - Layer 1 texture ID. layer1Width: type: ScalarValue default: 1 @@ -32,6 +25,112 @@ properties: color: true desc: | Layer 1 color. + layer2Width: + type: ScalarValue + default: 1 + scale: true + desc: | + Layer 2 width. + layer2Height: + type: ScalarValue + default: 1 + scale: true + desc: | + Layer 2 height. + layer2Color: + type: Vector4Value + default: [1, 1, 1, 1] + color: true + desc: | + Layer 2 color. + layer3Width: + type: ScalarValue + default: 1 + scale: true + desc: | + Layer 3 width. + layer3Height: + type: ScalarValue + default: 1 + scale: true + desc: | + Layer 3 height. + layer3Color: + type: Vector4Value + default: [1, 1, 1, 1] + color: true + desc: | + Layer 3 color. + layer4Width: + type: ScalarValue + default: 1 + scale: true + desc: | + Layer 4 width. + layer4Height: + type: ScalarValue + default: 1 + scale: true + desc: | + Layer 4 height. + layer4Color: + type: Vector4Value + default: [1, 1, 1, 1] + color: true + desc: | + Layer 4 color. + layer1: + field: int + default: 1 + resource: texture + textureType: a + desc: | + Layer 1 texture ID. + layer2: + field: int + default: 0 + resource: texture + textureType: a + desc: | + Layer 2 texture ID. + layer3: + field: int + default: 0 + resource: texture + textureType: a + desc: | + Layer 3 texture ID. + layer4: + field: int + default: 0 + resource: texture + textureType: a + desc: | + Layer 4 texture ID. + + This layer seems to work a bit differently from the others in Sekiro. + blendMode: + type: BlendMode + field: int + default: BlendMode.Add + desc: | + Blend mode. + unk_er_f1_4: + field: int + sourceSize: + field: float + default: 1 + desc: | + Diameter of the lens flare source sphere. + + The opacity of the lens flare depends on how much of the source is in view. + opacityTransitionDuration: + field: float + default: 1 + desc: | + The time in seconds it takes for the opacity of the lens flare to transition when the source comes more into or goes more out of view. + unk_er_f1_8: + field: int layer1Count: field: int default: 1 @@ -78,40 +177,16 @@ properties: Multiplier for the {@link layer1Color layer's color}. see: - layer1Color - layer1BloomColor: - field: vec4 - default: [1, 1, 1, 1] - color: true - desc: | - The bloom color for layer 1. This is multiplied with the {@link layer1Color layer's color} to get the final color for the bloom. - see: - - bloom - - layer1Color - layer2: + unk_er_f1_17: field: int - default: 0 - resource: texture - textureType: a - desc: | - Layer 2 texture ID. - layer2Width: - type: ScalarValue - default: 1 - scale: true - desc: | - Layer 2 width. - layer2Height: - type: ScalarValue + unk_er_f1_18: + field: float + unk_er_f1_19: + field: float default: 1 - scale: true - desc: | - Layer 2 height. - layer2Color: - type: Vector4Value - default: [1, 1, 1, 1] - color: true - desc: | - Layer 2 color. + unk_er_f1_20: + field: float + default: -1 layer2Count: field: int default: 1 @@ -158,40 +233,16 @@ properties: Multiplier for the {@link layer2Color layer's color}. see: - layer2Color - layer2BloomColor: - field: vec4 - default: [1, 1, 1, 1] - color: true - desc: | - The bloom color for layer 2. This is multiplied with the {@link layer2Color layer's color} to get the final color for the bloom. - see: - - bloom - - layer2Color - layer3: + unk_er_f1_29: field: int - default: 0 - resource: texture - textureType: a - desc: | - Layer 3 texture ID. - layer3Width: - type: ScalarValue - default: 1 - scale: true - desc: | - Layer 3 width. - layer3Height: - type: ScalarValue + unk_er_f1_30: + field: float + unk_er_f1_31: + field: float default: 1 - scale: true - desc: | - Layer 3 height. - layer3Color: - type: Vector4Value - default: [1, 1, 1, 1] - color: true - desc: | - Layer 3 color. + unk_er_f1_32: + field: float + default: -1 layer3Count: field: int default: 1 @@ -238,42 +289,16 @@ properties: Multiplier for the {@link layer3Color layer's color}. see: - layer3Color - layer3BloomColor: - field: vec4 - default: [1, 1, 1, 1] - color: true - desc: | - The bloom color for layer 3. This is multiplied with the {@link layer3Color layer's color} to get the final color for the bloom. - see: - - bloom - - layer3Color - layer4: + unk_er_f1_41: field: int - default: 0 - resource: texture - textureType: a - desc: | - Layer 4 texture ID. - - This layer seems to work a bit differently from the others in Sekiro. - layer4Width: - type: ScalarValue - default: 1 - scale: true - desc: | - Layer 4 width. - layer4Height: - type: ScalarValue + unk_er_f1_42: + field: float + unk_er_f1_43: + field: float default: 1 - scale: true - desc: | - Layer 4 height. - layer4Color: - type: Vector4Value - default: [1, 1, 1, 1] - color: true - desc: | - Layer 4 color. + unk_er_f1_44: + field: float + default: -1 layer4Count: field: int default: 1 @@ -320,33 +345,18 @@ properties: Multiplier for the {@link layer4Color layer's color}. see: - layer4Color - layer4BloomColor: - field: vec4 - default: [1, 1, 1, 1] - color: true - desc: | - The bloom color for layer 4. This is multiplied with the {@link layer4Color layer's color} to get the final color for the bloom. - see: - - bloom - - layer4Color - blendMode: - type: BlendMode + unk_er_f1_53: field: int - default: BlendMode.Add - desc: | - Blend mode. - sourceSize: + unk_er_f1_54: field: float - default: 1 - desc: | - Diameter of the lens flare source sphere. - - The opacity of the lens flare depends on how much of the source is in view. - opacityTransitionDuration: + unk_er_f1_55: field: float default: 1 - desc: | - The time in seconds it takes for the opacity of the lens flare to transition when the source comes more into or goes more out of view. + unk_er_f1_56: + field: float + default: -1 + unk_er_f1_57: + field: int bloom: field: bool default: false @@ -359,52 +369,60 @@ properties: - layer2BloomColor - layer3BloomColor - layer4BloomColor - unk_er_f1_4: - field: int - unk_er_f1_8: - field: int - unk_er_f1_17: - field: int - unk_er_f1_18: - field: float - unk_er_f1_19: - field: float - default: 1 - unk_er_f1_20: + layer1BloomColor: + field: vec4 + default: [1, 1, 1, 1] + color: true + desc: | + The bloom color for layer 1. This is multiplied with the {@link layer1Color layer's color} to get the final color for the bloom. + see: + - bloom + - layer1Color + layer2BloomColor: + field: vec4 + default: [1, 1, 1, 1] + color: true + desc: | + The bloom color for layer 2. This is multiplied with the {@link layer2Color layer's color} to get the final color for the bloom. + see: + - bloom + - layer2Color + layer3BloomColor: + field: vec4 + default: [1, 1, 1, 1] + color: true + desc: | + The bloom color for layer 3. This is multiplied with the {@link layer3Color layer's color} to get the final color for the bloom. + see: + - bloom + - layer3Color + layer4BloomColor: + field: vec4 + default: [1, 1, 1, 1] + color: true + desc: | + The bloom color for layer 4. This is multiplied with the {@link layer4Color layer's color} to get the final color for the bloom. + see: + - bloom + - layer4Color + unk_ac6_f1_75: field: float default: -1 - unk_er_f1_29: - field: int - unk_er_f1_30: - field: float - unk_er_f1_31: - field: float - default: 1 - unk_er_f1_32: + unk_ac6_f1_76: field: float default: -1 - unk_er_f1_41: - field: int - unk_er_f1_42: - field: float - unk_er_f1_43: - field: float - default: 1 - unk_er_f1_44: + unk_ac6_f1_77: field: float default: -1 - unk_er_f1_53: - field: int - unk_er_f1_54: + unk_ac6_f1_78: field: float - unk_er_f1_55: + default: -1 + unk_ac6_f1_79: field: float - default: 1 - unk_er_f1_56: + default: -1 + unk_ac6_f1_80: field: float default: -1 - unk_er_f1_57: - field: int unk_er_f2_0: field: int unk_er_f2_1: @@ -478,24 +496,6 @@ properties: unk_er_f2_36: field: int default: -2 - unk_ac6_f1_75: - field: float - default: -1 - unk_ac6_f1_76: - field: float - default: -1 - unk_ac6_f1_77: - field: float - default: -1 - unk_ac6_f1_78: - field: float - default: -1 - unk_ac6_f1_79: - field: float - default: -1 - unk_ac6_f1_80: - field: float - default: -1 games: SDT: ER # This action works in Sekiro, but it's not used in vanilla ER: diff --git a/src/actions/10015.yml b/src/actions/10015.yml index caa8649..07e27dc 100644 --- a/src/actions/10015.yml +++ b/src/actions/10015.yml @@ -9,64 +9,6 @@ desc: | Some models only work properly with this action and not with the Model action for some unknown reason. A good example of this is the Carian greatsword model in Elden Ring (88300), which gets horribly stretched and distorted when used with the other action, but it works fine with this one. properties: - orientation: - type: RichModelOrientationMode - field: int - default: RichModelOrientationMode.ParticleDirection - desc: | - Rich model orientation mode. See {@link RichModelOrientationMode} for more information. - scaleVariationX: - field: float - default: 1 - desc: | - Each particle will pick a random number between this value and 1, and the width of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly thinner, down to half width. Setting it to 2 will make them randomly wider, up to double width. - - If {@link uniformScale} is enabled, this also affects the height. - see: - - scaleVariationY - - scaleVariationZ - scaleVariationY: - field: float - default: 1 - desc: | - Each particle will pick a random number between this value and 1, and the height of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shorter, down to half height. Setting it to 2 will make them randomly taller, up to double height. - - If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the height, and this field is ignored. - see: - - scaleVariationX - - scaleVariationZ - scaleVariationZ: - field: float - default: 1 - desc: | - Each particle will pick a random number between this value and 1, and the depth of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shallower, down to half depth. Setting it to 2 will make them randomly deeper, up to double depth. - - If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the depth, and this field is ignored. - see: - - scaleVariationX - - scaleVariationY - uniformScale: - field: bool - default: false - desc: | - If enabled, the particle X scale-related properties and fields will control the scale in all axes, and the Y and Z counterparts will be ignored. - see: - - sizeX - - sizeY - - sizeZ - - scaleVariationX - - scaleVariationY - - scaleVariationZ - bloomColor: - field: vec4 - default: [1, 1, 1, 0] - color: true - desc: | - Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. - - Note: - - This has no effect if the "Effects Quality" setting is set to "Low". - - This does not affect the natural bloom effect from high color values. model: type: ScalarValue default: 80201 @@ -146,40 +88,40 @@ properties: see: - rotationX - angularSpeedMultiplierX - angularSpeedY: + angularSpeedMultiplierX: type: ScalarValue + default: 1 argument: ParticleAge - time: true desc: | - Angular speed around the Y-axis in degrees per second. + Multiplier for {@link angularSpeedX}. see: - - rotationY - - angularSpeedMultiplierY - angularSpeedZ: + - rotationX + angularSpeedY: type: ScalarValue argument: ParticleAge time: true desc: | - Angular speed around the Z-axis in degrees per second. + Angular speed around the Y-axis in degrees per second. see: - - rotationZ - - angularSpeedMultiplierZ - angularSpeedMultiplierX: + - rotationY + - angularSpeedMultiplierY + angularSpeedMultiplierY: type: ScalarValue default: 1 argument: ParticleAge desc: | - Multiplier for {@link angularSpeedX}. + Multiplier for {@link angularSpeedY}. see: - - rotationX - angularSpeedMultiplierY: + - rotationY + angularSpeedZ: type: ScalarValue - default: 1 argument: ParticleAge + time: true desc: | - Multiplier for {@link angularSpeedY}. + Angular speed around the Z-axis in degrees per second. see: - - rotationY + - rotationZ + - angularSpeedMultiplierZ angularSpeedMultiplierZ: type: ScalarValue default: 1 @@ -209,6 +151,43 @@ properties: color: true desc: | Color multiplier for the particle. + unk_er_p1_16: + type: ScalarValue + unk_er_p1_17: + type: ScalarValue + rgbMultiplier2: + type: ScalarValue + default: 1 + argument: EffectAge + desc: | + Seemingly identical to {@link rgbMultiplier}? + unk_er_p1_19: + type: ScalarValue + unk_er_p1_20: + type: ScalarValue + uvOffset: + type: Vector2Value + default: [0, 0] + argument: Constant0 + desc: | + Offset for the UV coordinates of the model. + see: + - uvSpeed + uvSpeed: + type: Vector2Value + default: [0, 0] + argument: ParticleAge + time: true + desc: | + Scroll speed for the model's texture. + see: + - uvSpeedMultiplier + uvSpeedMultiplier: + type: Vector2Value + default: [1, 1] + argument: ParticleAge + desc: | + Multiplier for {@link uvSpeed} uOffset: omitClassProp: true type: ScalarValue @@ -272,6 +251,81 @@ properties: argument: EffectAge desc: | Alpha multiplier. + unk_er_p2_2: + type: ScalarValue + unk_er_p2_3: + type: Vector4Value + default: [1, 1, 1, 1] + unk_er_p2_4: + type: Vector4Value + default: [1, 1, 1, 1] + unk_er_p2_5: + type: Vector4Value + default: [1, 1, 1, 1] + unk_er_p2_6: + type: ScalarValue + orientation: + type: RichModelOrientationMode + field: int + default: RichModelOrientationMode.ParticleDirection + desc: | + Rich model orientation mode. See {@link RichModelOrientationMode} for more information. + scaleVariationX: + field: float + default: 1 + desc: | + Each particle will pick a random number between this value and 1, and the width of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly thinner, down to half width. Setting it to 2 will make them randomly wider, up to double width. + + If {@link uniformScale} is enabled, this also affects the height. + see: + - scaleVariationY + - scaleVariationZ + scaleVariationY: + field: float + default: 1 + desc: | + Each particle will pick a random number between this value and 1, and the height of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shorter, down to half height. Setting it to 2 will make them randomly taller, up to double height. + + If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the height, and this field is ignored. + see: + - scaleVariationX + - scaleVariationZ + scaleVariationZ: + field: float + default: 1 + desc: | + Each particle will pick a random number between this value and 1, and the depth of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shallower, down to half depth. Setting it to 2 will make them randomly deeper, up to double depth. + + If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the depth, and this field is ignored. + see: + - scaleVariationX + - scaleVariationY + uniformScale: + field: bool + default: false + desc: | + If enabled, the particle X scale-related properties and fields will control the scale in all axes, and the Y and Z counterparts will be ignored. + see: + - sizeX + - sizeY + - sizeZ + - scaleVariationX + - scaleVariationY + - scaleVariationZ + unk_er_f1_5: + field: int + default: 1 + unk_er_f1_6: + field: int + default: 1 + unk_er_f1_7: + field: int + unk_er_f1_8: + field: int + default: -2 + unk_er_f1_9: + field: int + default: -2 anibnd: field: int resource: anibnd @@ -308,20 +362,6 @@ properties: - anibnd - animation - loopAnimation - unk_er_f1_5: - field: int - default: 1 - unk_er_f1_6: - field: int - default: 1 - unk_er_f1_7: - field: int - unk_er_f1_8: - field: int - default: -2 - unk_er_f1_9: - field: int - default: -2 unk_er_f1_14: field: float unk_er_f1_15: @@ -342,6 +382,33 @@ properties: field: int unk_er_f1_23: field: int + unk_ac6_f1_24: + field: float + unk_ac6_f1_25: + field: float + default: -1 + unk_ac6_f1_26: + field: float + default: -1 + unk_ac6_f1_27: + field: float + default: -1 + unk_ac6_f1_28: + field: float + default: -1 + unk_ac6_f1_29: + field: int + unk_ac6_f1_30: + field: int + unk_ac6_f1_31: + field: float + unk_ac6_f1_32: + field: int + unk_ac6_f1_33: + field: int + default: 1 + unk_ac6_f1_34: + field: int unk_er_f1_24: field: float unk_er_f1_25: @@ -356,6 +423,16 @@ properties: default: 8 unk_er_f2_3: field: int + bloomColor: + field: vec4 + default: [1, 1, 1, 0] + color: true + desc: | + Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + + Note: + - This has no effect if the "Effects Quality" setting is set to "Low". + - This does not affect the natural bloom effect from high color values. unk_er_f2_8: field: int unk_er_f2_9: @@ -368,32 +445,32 @@ properties: field: int unk_er_f2_13: field: int - minDistance: + minFadeDistance: field: float default: -1 scale: ifNotMinusOne desc: | - Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - - This requires {@link minFadeDistance} to be set to something other than -1. + This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. - This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. see: - - minFadeDistance + - minDistance - maxFadeDistance - maxDistance - minDistanceThreshold - maxDistanceThreshold - minFadeDistance: + minDistance: field: float default: -1 scale: ifNotMinusOne desc: | - This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + This requires {@link minFadeDistance} to be set to something other than -1. + + This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. see: - - minDistance + - minFadeDistance - maxFadeDistance - maxDistance - minDistanceThreshold @@ -495,83 +572,6 @@ properties: default: -2 unk_er_f2_37: field: int - unk_er_p1_16: - type: ScalarValue - unk_er_p1_17: - type: ScalarValue - rgbMultiplier2: - type: ScalarValue - default: 1 - argument: EffectAge - desc: | - Seemingly identical to {@link rgbMultiplier}? - unk_er_p1_19: - type: ScalarValue - unk_er_p1_20: - type: ScalarValue - unk_er_p2_2: - type: ScalarValue - unk_er_p2_3: - type: Vector4Value - default: [1, 1, 1, 1] - unk_er_p2_4: - type: Vector4Value - default: [1, 1, 1, 1] - unk_er_p2_5: - type: Vector4Value - default: [1, 1, 1, 1] - unk_er_p2_6: - type: ScalarValue - unk_ac6_f1_24: - field: float - unk_ac6_f1_25: - field: float - default: -1 - unk_ac6_f1_26: - field: float - default: -1 - unk_ac6_f1_27: - field: float - default: -1 - unk_ac6_f1_28: - field: float - default: -1 - unk_ac6_f1_29: - field: int - unk_ac6_f1_30: - field: int - unk_ac6_f1_31: - field: float - unk_ac6_f1_32: - field: int - unk_ac6_f1_33: - field: int - default: 1 - unk_ac6_f1_34: - field: int - uvOffset: - type: Vector2Value - default: [0, 0] - argument: Constant0 - desc: | - Offset for the UV coordinates of the model. - see: - - uvSpeed - uvSpeed: - type: Vector2Value - default: [0, 0] - argument: ParticleAge - time: true - desc: | - Scroll speed for the model's texture. - see: - - uvSpeedMultiplier - uvSpeedMultiplier: - type: Vector2Value - default: [1, 1] - argument: ParticleAge - desc: | - Multiplier for {@link uvSpeed} games: ER: fields1: diff --git a/src/actions/10300.yml b/src/actions/10300.yml index 5673c71..7cc2a5f 100644 --- a/src/actions/10300.yml +++ b/src/actions/10300.yml @@ -180,9 +180,6 @@ properties: unk_ds3_f1_42: field: float default: 1 - unk_ds3_f1_43: - field: float - default: 1 unk_ds3_f1_44: field: float default: 1 @@ -243,6 +240,9 @@ properties: unk_ds3_f1_50: field: float default: 60 + unk_ds3_f1_43: + field: float + default: 1 games: DS3: fields1: diff --git a/src/actions/10500.yml b/src/actions/10500.yml index cb45b9a..c8ff2da 100644 --- a/src/actions/10500.yml +++ b/src/actions/10500.yml @@ -33,14 +33,14 @@ properties: field: float unk_ds3_f1_6: field: int - unk_ds3_f1_7: - field: int unk_ac6_f1_7: field: float unk_ds3_f1_8: field: int unk_sdt_f1_9: field: int + unk_ds3_f1_7: + field: int games: DS3: fields1: diff --git a/src/actions/11000.yml b/src/actions/11000.yml index 9c90ada..6f91ce9 100644 --- a/src/actions/11000.yml +++ b/src/actions/11000.yml @@ -69,6 +69,17 @@ properties: scale: true desc: | The Y radius for the elliptic base of the cone. + unk_ds3_p1_6: + type: ScalarValue + default: 1 + unk_ds3_p1_7: + type: ScalarValue + default: 1 + unk_sdt_p1_10: + type: ScalarValue + default: 1 + unk_sdt_f1_0: + field: int jitterAndFlicker: field: bool default: false @@ -94,6 +105,8 @@ properties: - jitterX - jitterY - jitterZ + unk_sdt_f1_3: + field: float jitterX: field: float scale: true @@ -169,6 +182,17 @@ properties: - specularColor - diffuseMultiplier - specularMultiplier + shadowDarkness: + field: float + default: 1 + desc: | + Controls how dark shadows from this light source are. At 0, the shadows will be entirely invisible. + unk_ds3_f1_3: + field: int + default: 2 + unk_ds3_f1_4: + field: int + default: 1 fadeOutTime: field: int default: 0 @@ -177,11 +201,13 @@ properties: The number of seconds the light takes to fade to nothing after being destroyed. Due to how the field this represents works, the time will be rounded to the nearest multiple of 1/30s. - shadowDarkness: + unk_sdt_f1_16: + field: int + default: 100 + unk_sdt_f1_17: + field: int + unk_sdt_f1_18: field: float - default: 1 - desc: | - Controls how dark shadows from this light source are. At 0, the shadows will be entirely invisible. volumeDensity: field: float default: 0 @@ -190,6 +216,8 @@ properties: see: - phaseFunction - asymmetryParam + unk_sdt_f1_20: + field: float phaseFunction: field: bool default: true @@ -212,54 +240,26 @@ properties: Controls the falloff exponent of the light. Note: This is possibly something else, but the behavior is pretty similar to a falloff exponent in a few ways. - unk_ds3_f1_0: - field: int - default: 1 - unk_ds3_f1_3: - field: int - default: 2 - unk_ds3_f1_4: + unk_er_f1_24: field: int default: 1 - unk_ds3_f1_5: + unk_er_f1_25: field: float default: 1 - unk_ds3_f1_7: - field: int - unk_ds3_f1_8: + unk_er_f1_26: field: int - unk_ds3_p1_6: - type: ScalarValue - default: 1 - unk_ds3_p1_7: - type: ScalarValue default: 1 - unk_sdt_f1_0: - field: int - unk_sdt_f1_3: - field: float - unk_sdt_f1_16: - field: int - default: 100 - unk_sdt_f1_17: + unk_er_f1_27: field: int - unk_sdt_f1_18: - field: float - unk_sdt_f1_20: - field: float - unk_sdt_p1_10: - type: ScalarValue - default: 1 - unk_er_f1_24: + unk_ds3_f1_0: field: int default: 1 - unk_er_f1_25: + unk_ds3_f1_5: field: float default: 1 - unk_er_f1_26: + unk_ds3_f1_7: field: int - default: 1 - unk_er_f1_27: + unk_ds3_f1_8: field: int games: DS3: diff --git a/src/actions/128.yml b/src/actions/128.yml index 007c1b1..2fa98e2 100644 --- a/src/actions/128.yml +++ b/src/actions/128.yml @@ -7,12 +7,6 @@ meta: desc: | Controls various things about the node, like its duration, and how it is attached to the parent node. properties: - attachment: - type: AttachMode - field: int - default: AttachMode.Parent - desc: | - Controls how the node is attached to the parent node. duration: type: ScalarValue default: -1 @@ -27,6 +21,12 @@ properties: unk_ds3_f1_1: field: int default: 1 + attachment: + type: AttachMode + field: int + default: AttachMode.Parent + desc: | + Controls how the node is attached to the parent node. unk_ds3_f1_3: field: float games: diff --git a/src/actions/129.yml b/src/actions/129.yml index 883bd46..332e9e5 100644 --- a/src/actions/129.yml +++ b/src/actions/129.yml @@ -7,12 +7,6 @@ meta: desc: | Controls the duration of particles emitted by the node, and how the particles are attached to the node. properties: - attachment: - type: AttachMode - field: int - default: AttachMode.Parent - desc: | - Controls how the particles are attached to the node. duration: type: ScalarValue default: -1 @@ -20,6 +14,12 @@ properties: time: invIfPositive desc: | The particle duration in seconds. Can be set to -1 to make particles last forever. + attachment: + type: AttachMode + field: int + default: AttachMode.Parent + desc: | + Controls how the particles are attached to the node. games: DS3: fields1: diff --git a/src/actions/130.yml b/src/actions/130.yml index 9cae002..f29a778 100644 --- a/src/actions/130.yml +++ b/src/actions/130.yml @@ -7,6 +7,22 @@ meta: desc: | Unknown action that is in every basic effect in every game, and still literally nothing is known about it. properties: + unk_ds3_p1_0: + type: ScalarValue + unk_ds3_p1_1: + type: ScalarValue + unk_ds3_p1_2: + type: ScalarValue + unk_ds3_p1_3: + type: ScalarValue + unk_ds3_p1_4: + type: ScalarValue + unk_ds3_p1_5: + type: ScalarValue + unk_ds3_p1_6: + type: ScalarValue + unk_ds3_p1_7: + type: ScalarValue unk_ds3_f1_0: field: int default: 1 @@ -26,22 +42,6 @@ properties: field: int unk_ds3_f1_8: field: int - unk_ds3_p1_0: - type: ScalarValue - unk_ds3_p1_1: - type: ScalarValue - unk_ds3_p1_2: - type: ScalarValue - unk_ds3_p1_3: - type: ScalarValue - unk_ds3_p1_4: - type: ScalarValue - unk_ds3_p1_5: - type: ScalarValue - unk_ds3_p1_6: - type: ScalarValue - unk_ds3_p1_7: - type: ScalarValue games: DS3: fields1: diff --git a/src/actions/131.yml b/src/actions/131.yml index d541ab6..a7a7ec5 100644 --- a/src/actions/131.yml +++ b/src/actions/131.yml @@ -9,15 +9,6 @@ desc: | Note: This is **not** a {@link Modifier property modifier}, it is an action that modifies particles emitted from the same node. properties: - uniformScale: - field: bool - default: false - desc: | - Scales the particles emitted from this node uniformly based on {@link scaleX}. The other scale properties in this action have no effect when this is enabled. - see: - - scaleX - - scaleY - - scaleZ speed: type: ScalarValue argument: EffectAge @@ -56,6 +47,15 @@ properties: color: true desc: | Color multiplier for the particles emitted from this node. + uniformScale: + field: bool + default: false + desc: | + Scales the particles emitted from this node uniformly based on {@link scaleX}. The other scale properties in this action have no effect when this is enabled. + see: + - scaleX + - scaleY + - scaleZ games: DS3: fields1: diff --git a/src/actions/301.yml b/src/actions/301.yml index 47a9bfb..454e640 100644 --- a/src/actions/301.yml +++ b/src/actions/301.yml @@ -14,6 +14,10 @@ properties: scale: true desc: | How much the emitter must move to trigger emission. + unk_ds3_p1_2: + type: ScalarValue + default: -1 + argument: EffectAge maxConcurrent: type: ScalarValue field: int @@ -21,19 +25,15 @@ properties: argument: EffectAge desc: | Maximum number of concurrent particles. Can be set to -1 to disable the limit. + unk_ds3_p1_1: + type: ScalarValue + default: 1 unk_ds3_f1_1: field: int default: 1 unk_sdt_f1_1: field: int default: 0 - unk_ds3_p1_1: - type: ScalarValue - default: 1 - unk_ds3_p1_2: - type: ScalarValue - default: -1 - argument: EffectAge games: DS3: fields1: diff --git a/src/actions/401.yml b/src/actions/401.yml index ad8f530..58978a5 100644 --- a/src/actions/401.yml +++ b/src/actions/401.yml @@ -7,12 +7,6 @@ meta: desc: | Makes the emitter disk-shaped. properties: - direction: - type: InitialDirection - field: int - default: InitialDirection.Emitter - desc: | - Controls the initial direction for particles. See {@link InitialDirection} for more information. radius: type: ScalarValue default: 1 @@ -30,6 +24,12 @@ properties: - At 1, particles have a 100% chance of being emitted from the center point. - At -1, particles have a 100% chance of being emitted from the perimeter circle of the disk. - Values between these smoothly blend between them. + direction: + type: InitialDirection + field: int + default: InitialDirection.Emitter + desc: | + Controls the initial direction for particles. See {@link InitialDirection} for more information. games: DS3: fields1: diff --git a/src/actions/402.yml b/src/actions/402.yml index 2236794..cb90b6e 100644 --- a/src/actions/402.yml +++ b/src/actions/402.yml @@ -7,12 +7,6 @@ meta: desc: | Makes the emitter rectangular. properties: - direction: - type: InitialDirection - field: int - default: InitialDirection.Emitter - desc: | - Controls the initial direction for particles. See {@link InitialDirection} for more information. sizeX: type: ScalarValue default: 1 @@ -37,6 +31,12 @@ properties: - At 1, particles have a 100% chance of being emitted from the center point. - At -1, particles have a 100% chance of being emitted from the perimeter of the rectangle. - Values between these smoothly blend between them. + direction: + type: InitialDirection + field: int + default: InitialDirection.Emitter + desc: | + Controls the initial direction for particles. See {@link InitialDirection} for more information. games: DS3: fields1: diff --git a/src/actions/403.yml b/src/actions/403.yml index b8fc32a..a0aa2ca 100644 --- a/src/actions/403.yml +++ b/src/actions/403.yml @@ -7,11 +7,6 @@ meta: desc: | Makes the emitter spherical. properties: - emitInside: - field: bool - default: true - desc: | - If true, particles will be emitted from anywhere within the sphere. Otherwise the particles will be emitted only from the surface of the sphere. radius: type: ScalarValue default: 1 @@ -19,6 +14,11 @@ properties: scale: true desc: | Radius of the sphere. + emitInside: + field: bool + default: true + desc: | + If true, particles will be emitted from anywhere within the sphere. Otherwise the particles will be emitted only from the surface of the sphere. games: DS3: fields1: diff --git a/src/actions/404.yml b/src/actions/404.yml index 324dfc3..0e41930 100644 --- a/src/actions/404.yml +++ b/src/actions/404.yml @@ -7,17 +7,6 @@ meta: desc: | Makes the emitter cuboidal. properties: - direction: - type: InitialDirection - field: int - default: InitialDirection.Emitter - desc: | - Controls the initial direction for particles. See {@link InitialDirection} for more information. - emitInside: - field: bool - default: true - desc: | - If true, particles will be emitted from anywhere within the cuboid. Otherwise the particles will be emitted only from the surface of the cuboid. sizeX: type: ScalarValue default: 1 @@ -39,6 +28,17 @@ properties: scale: true desc: | Depth of the cuboid. + direction: + type: InitialDirection + field: int + default: InitialDirection.Emitter + desc: | + Controls the initial direction for particles. See {@link InitialDirection} for more information. + emitInside: + field: bool + default: true + desc: | + If true, particles will be emitted from anywhere within the cuboid. Otherwise the particles will be emitted only from the surface of the cuboid. games: DS3: fields1: diff --git a/src/actions/405.yml b/src/actions/405.yml index 4c8f3cb..e13e625 100644 --- a/src/actions/405.yml +++ b/src/actions/405.yml @@ -7,6 +7,20 @@ meta: desc: | Makes the emitter cylindrical. properties: + radius: + type: ScalarValue + default: 1 + argument: EffectAge + scale: true + desc: | + The radius of the cylinder. + height: + type: ScalarValue + default: 1 + argument: EffectAge + scale: true + desc: | + The height of the cylinder. direction: type: InitialDirection field: int @@ -23,20 +37,6 @@ properties: default: true desc: | If true, the cylinder will be aligned with the Y-axis instead of the Z-axis. - radius: - type: ScalarValue - default: 1 - argument: EffectAge - scale: true - desc: | - The radius of the cylinder. - height: - type: ScalarValue - default: 1 - argument: EffectAge - scale: true - desc: | - The height of the cylinder. games: SDT: fields1: diff --git a/src/actions/501.yml b/src/actions/501.yml index c449069..433e134 100644 --- a/src/actions/501.yml +++ b/src/actions/501.yml @@ -7,11 +7,6 @@ meta: desc: | Gives each emitted instance a random initial direction offset within a circular cone. See {@link InitialDirection} for more information. properties: - unk_er_f1_0: - field: bool - default: false - desc: | - No so much unknown, just unnamed. If enabled, this limits the possible directions to only positive values on one axis, effectively cutting the cone of possible directions in half. angle: type: ScalarValue default: 30 @@ -29,6 +24,11 @@ properties: - At -1, the maximum change in direction is guaranteed, meaning the chosen direction will always be a fixed number of degrees away from the default direction based on {@link angle}. - Values between these values smoothly blend between them. - Values outside of the -1 to 1 range also work, but may do some unexpected things. + unk_er_f1_0: + field: bool + default: false + desc: | + No so much unknown, just unnamed. If enabled, this limits the possible directions to only positive values on one axis, effectively cutting the cone of possible directions in half. games: DS3: properties1: diff --git a/src/actions/502.yml b/src/actions/502.yml index e566f92..950c869 100644 --- a/src/actions/502.yml +++ b/src/actions/502.yml @@ -7,11 +7,6 @@ meta: desc: | Gives each emitted instance a random initial direction offset within an elliptical cone. See {@link InitialDirection} for more information. properties: - unk_er_f1_0: - field: bool - default: false - desc: | - No so much unknown, just unnamed. If enabled, this limits the possible directions to only positive values on one axis, effectively cutting the cone of possible directions in half. angleX: type: ScalarValue default: 30 @@ -39,6 +34,11 @@ properties: - At -1, the maximum change in direction is guaranteed, meaning the chosen direction will always be a fixed number of degrees away from the default direction based on {@link angleX} and {@link angleY}. - Values between these values smoothly blend between them. - Values outside of the -1 to 1 range also work, but may do some unexpected things. + unk_er_f1_0: + field: bool + default: false + desc: | + No so much unknown, just unnamed. If enabled, this limits the possible directions to only positive values on one axis, effectively cutting the cone of possible directions in half. games: DS3: properties1: diff --git a/src/actions/600.yml b/src/actions/600.yml index 0d198a3..fc1adbf 100644 --- a/src/actions/600.yml +++ b/src/actions/600.yml @@ -63,16 +63,25 @@ properties: argument: EffectAge desc: | Alpha multiplier. - bloomColor: - field: vec4 - default: [1, 1, 1, 0] - color: true + unk_ds3_p2_2: + type: ScalarValue + default: 0 + unk_ds3_p2_3: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_4: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_5: + type: Vector4Value + default: [1, 1, 1, 1] + alphaThreshold: + type: ScalarValue + argument: EffectAge desc: | - Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - Note: - - This has no effect if the "Effects Quality" setting is set to "Low". - - This does not affect the natural bloom effect from high color values. + This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. unk_ds3_f1_2: field: int default: -2 @@ -82,6 +91,12 @@ properties: unk_ds3_f1_4: field: int default: 0 + unk_er_f1_3: + field: int + default: 1 + unk_er_f1_4: + field: int + default: 1 unk_ds3_f2_0: field: int default: 0 @@ -94,9 +109,29 @@ properties: unk_ds3_f2_3: field: int default: 0 - unk_ds3_f2_4: - field: int - default: 1 + bloom: + field: bool + default: true + desc: | + Controls whether or not the particles have an additional bloom effect controlled by {@link bloomColor}. + + Note: + - This has no effect if the "Effects Quality" setting is set to "Low". + - This does not affect the natural bloom effect from high color values. + see: + - bloomColor + bloomColor: + field: vec4 + default: [1, 1, 1, 0] + color: true + desc: | + Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + + Note: + - This has no effect if the "Effects Quality" setting is set to "Low". + - This does not affect the natural bloom effect from high color values. + see: + - bloom unk_ds3_f2_9: field: float unk_ds3_f2_10: @@ -111,32 +146,32 @@ properties: unk_ds3_f2_13: field: int default: 0 - minDistance: + minFadeDistance: field: float default: -1 scale: ifNotMinusOne desc: | - Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - - This requires {@link minFadeDistance} to be set to something other than -1. + This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. - This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. see: - - minFadeDistance + - minDistance - maxFadeDistance - maxDistance - minDistanceThreshold - maxDistanceThreshold - minFadeDistance: + minDistance: field: float default: -1 scale: ifNotMinusOne desc: | - This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + This requires {@link minFadeDistance} to be set to something other than -1. + + This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. see: - - minDistance + - minFadeDistance - maxFadeDistance - maxDistance - minDistanceThreshold @@ -225,25 +260,6 @@ properties: default: 0 unk_ds3_f2_29: field: float - unk_ds3_p2_2: - type: ScalarValue - default: 0 - unk_ds3_p2_3: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_4: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_5: - type: Vector4Value - default: [1, 1, 1, 1] - alphaThreshold: - type: ScalarValue - argument: EffectAge - desc: | - Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - - This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. unk_sdt_f2_30: field: float unk_sdt_f2_31: @@ -270,12 +286,6 @@ properties: unk_sdt_f2_38: field: int default: 0 - unk_er_f1_3: - field: int - default: 1 - unk_er_f1_4: - field: int - default: 1 unk_er_f2_39: field: int default: 0 @@ -292,7 +302,7 @@ games: - unk_ds3_f2_1 - unk_ds3_f2_2 - unk_ds3_f2_3 - - unk_ds3_f2_4 + - bloom - bloomColor # # @@ -341,7 +351,7 @@ games: - unk_ds3_f2_1 - unk_ds3_f2_2 - unk_ds3_f2_3 - - unk_ds3_f2_4 + - bloom - bloomColor # # @@ -396,7 +406,7 @@ games: - unk_ds3_f2_1 - unk_ds3_f2_2 - unk_ds3_f2_3 - - unk_ds3_f2_4 + - bloom - bloomColor # # diff --git a/src/actions/601.yml b/src/actions/601.yml index 31d6395..49ab247 100644 --- a/src/actions/601.yml +++ b/src/actions/601.yml @@ -76,19 +76,34 @@ properties: argument: EffectAge desc: | Alpha multiplier. - bloomColor: - field: vec4 - default: [1, 1, 1, 0] - color: true + unk_ds3_p2_2: + type: ScalarValue + default: 0 + unk_ds3_p2_3: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_4: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_5: + type: Vector4Value + default: [1, 1, 1, 1] + alphaThreshold: + type: ScalarValue + argument: EffectAge desc: | - Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - Note: - - This has no effect if the "Effects Quality" setting is set to "Low". - - This does not affect the natural bloom effect from high color values. + This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. unk_ds3_f1_1: field: int default: -1 + unk_er_f1_1: + field: int + default: 1 + unk_er_f1_2: + field: int + default: 1 unk_ds3_f2_0: field: int default: 0 @@ -101,9 +116,29 @@ properties: unk_ds3_f2_3: field: int default: 0 - unk_ds3_f2_4: - field: int - default: 1 + bloom: + field: bool + default: true + desc: | + Controls whether or not the particles have an additional bloom effect controlled by {@link bloomColor}. + + Note: + - This has no effect if the "Effects Quality" setting is set to "Low". + - This does not affect the natural bloom effect from high color values. + see: + - bloomColor + bloomColor: + field: vec4 + default: [1, 1, 1, 0] + color: true + desc: | + Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + + Note: + - This has no effect if the "Effects Quality" setting is set to "Low". + - This does not affect the natural bloom effect from high color values. + see: + - bloom unk_ds3_f2_9: field: float unk_ds3_f2_10: @@ -118,32 +153,32 @@ properties: unk_ds3_f2_13: field: int default: 0 - minDistance: + minFadeDistance: field: float default: -1 scale: ifNotMinusOne desc: | - Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - - This requires {@link minFadeDistance} to be set to something other than -1. + This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. - This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. see: - - minFadeDistance + - minDistance - maxFadeDistance - maxDistance - minDistanceThreshold - maxDistanceThreshold - minFadeDistance: + minDistance: field: float default: -1 scale: ifNotMinusOne desc: | - This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + This requires {@link minFadeDistance} to be set to something other than -1. + + This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. see: - - minDistance + - minFadeDistance - maxFadeDistance - maxDistance - minDistanceThreshold @@ -232,25 +267,6 @@ properties: default: 0 unk_ds3_f2_29: field: float - unk_ds3_p2_2: - type: ScalarValue - default: 0 - unk_ds3_p2_3: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_4: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_5: - type: Vector4Value - default: [1, 1, 1, 1] - alphaThreshold: - type: ScalarValue - argument: EffectAge - desc: | - Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - - This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. unk_sdt_f2_30: field: int default: 0 @@ -284,12 +300,6 @@ properties: unk_sdt_f2_39: field: int default: 0 - unk_er_f1_1: - field: int - default: 1 - unk_er_f1_2: - field: int - default: 1 games: DS3: fields1: @@ -300,7 +310,7 @@ games: - unk_ds3_f2_1 - unk_ds3_f2_2 - unk_ds3_f2_3 - - unk_ds3_f2_4 + - bloom - bloomColor # # @@ -350,7 +360,7 @@ games: - unk_ds3_f2_1 - unk_ds3_f2_2 - unk_ds3_f2_3 - - unk_ds3_f2_4 + - bloom - bloomColor # # diff --git a/src/actions/602.yml b/src/actions/602.yml index 8b6d452..9b8c8ec 100644 --- a/src/actions/602.yml +++ b/src/actions/602.yml @@ -91,19 +91,34 @@ properties: argument: EffectAge desc: | Alpha multiplier. - bloomColor: - field: vec4 - default: [1, 1, 1, 0] - color: true + unk_ds3_p2_2: + type: ScalarValue + default: 0 + unk_ds3_p2_3: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_4: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_5: + type: Vector4Value + default: [1, 1, 1, 1] + alphaThreshold: + type: ScalarValue + argument: EffectAge desc: | - Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - Note: - - This has no effect if the "Effects Quality" setting is set to "Low". - - This does not affect the natural bloom effect from high color values. + This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. unk_ds3_f1_1: field: int default: -1 + unk_er_f1_1: + field: int + default: 1 + unk_er_f1_2: + field: int + default: 1 unk_ds3_f2_0: field: int default: 0 @@ -116,9 +131,29 @@ properties: unk_ds3_f2_3: field: int default: 0 - unk_ds3_f2_4: - field: int - default: 1 + bloom: + field: bool + default: true + desc: | + Controls whether or not the particles have an additional bloom effect controlled by {@link bloomColor}. + + Note: + - This has no effect if the "Effects Quality" setting is set to "Low". + - This does not affect the natural bloom effect from high color values. + see: + - bloomColor + bloomColor: + field: vec4 + default: [1, 1, 1, 0] + color: true + desc: | + Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + + Note: + - This has no effect if the "Effects Quality" setting is set to "Low". + - This does not affect the natural bloom effect from high color values. + see: + - bloom unk_ds3_f2_9: field: float unk_ds3_f2_10: @@ -133,32 +168,32 @@ properties: unk_ds3_f2_13: field: int default: 0 - minDistance: + minFadeDistance: field: float default: -1 scale: ifNotMinusOne desc: | - Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - - This requires {@link minFadeDistance} to be set to something other than -1. + This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. - This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. see: - - minFadeDistance + - minDistance - maxFadeDistance - maxDistance - minDistanceThreshold - maxDistanceThreshold - minFadeDistance: + minDistance: field: float default: -1 scale: ifNotMinusOne desc: | - This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + This requires {@link minFadeDistance} to be set to something other than -1. + + This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. see: - - minDistance + - minFadeDistance - maxFadeDistance - maxDistance - minDistanceThreshold @@ -247,25 +282,6 @@ properties: default: 0 unk_ds3_f2_29: field: float - unk_ds3_p2_2: - type: ScalarValue - default: 0 - unk_ds3_p2_3: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_4: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_5: - type: Vector4Value - default: [1, 1, 1, 1] - alphaThreshold: - type: ScalarValue - argument: EffectAge - desc: | - Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - - This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. unk_sdt_f2_30: field: float unk_sdt_f2_31: @@ -295,12 +311,6 @@ properties: unk_sdt_f2_39: field: int default: 0 - unk_er_f1_1: - field: int - default: 1 - unk_er_f1_2: - field: int - default: 1 games: DS3: fields1: @@ -311,7 +321,7 @@ games: - unk_ds3_f2_1 - unk_ds3_f2_2 - unk_ds3_f2_3 - - unk_ds3_f2_4 + - bloom - bloomColor # # @@ -363,7 +373,7 @@ games: - unk_ds3_f2_1 - unk_ds3_f2_2 - unk_ds3_f2_3 - - unk_ds3_f2_4 + - bloom - bloomColor # # diff --git a/src/actions/603.yml b/src/actions/603.yml index f0b9f1f..c6fafb2 100644 --- a/src/actions/603.yml +++ b/src/actions/603.yml @@ -124,40 +124,40 @@ properties: see: - rotationX - angularSpeedMultiplierX - angularSpeedY: + angularSpeedMultiplierX: type: ScalarValue + default: 1 argument: ParticleAge - time: true desc: | - Angular speed around the Y-axis in degrees per second. + Multiplier for {@link angularSpeedX}. see: - - rotationY - - angularSpeedMultiplierY - angularSpeedZ: + - rotationX + angularSpeedY: type: ScalarValue argument: ParticleAge time: true desc: | - Angular speed around the Z-axis in degrees per second. + Angular speed around the Y-axis in degrees per second. see: - - rotationZ - - angularSpeedMultiplierZ - angularSpeedMultiplierX: + - rotationY + - angularSpeedMultiplierY + angularSpeedMultiplierY: type: ScalarValue default: 1 argument: ParticleAge desc: | - Multiplier for {@link angularSpeedX}. + Multiplier for {@link angularSpeedY}. see: - - rotationX - angularSpeedMultiplierY: + - rotationY + angularSpeedZ: type: ScalarValue - default: 1 argument: ParticleAge + time: true desc: | - Multiplier for {@link angularSpeedY}. + Angular speed around the Z-axis in degrees per second. see: - - rotationY + - rotationZ + - angularSpeedMultiplierZ angularSpeedMultiplierZ: type: ScalarValue default: 1 @@ -184,6 +184,10 @@ properties: argument: ParticleAge desc: | Seemingly identical to {@link frameIndex}? The sum of these two properties is the actual frame index that gets used. + unk_ds3_p1_21: + type: ScalarValue + unk_ds3_p1_22: + type: ScalarValue rgbMultiplier: type: ScalarValue default: 1 @@ -196,6 +200,24 @@ properties: argument: EffectAge desc: | Alpha multiplier. + unk_ds3_p2_2: + type: ScalarValue + unk_ds3_p2_3: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_4: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_5: + type: Vector4Value + default: [1, 1, 1, 1] + alphaThreshold: + type: ScalarValue + argument: EffectAge + desc: | + Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. + + This threshold creates a hard cut-off between visible and not visible, which is unlike the {@link alphaFadeThreshold}. orientation: type: OrientationMode field: int @@ -236,6 +258,8 @@ properties: - height - scaleVariationX - scaleVariationY + unk_ds3_f1_7: + field: int columns: field: int default: 1 @@ -260,56 +284,6 @@ properties: see: - frameIndex - frameIndexOffset - bloomColor: - field: vec4 - default: [1, 1, 1, 0] - color: true - desc: | - Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. - - Note: - - This has no effect if the "Effects Quality" setting is set to "Low". - - This does not affect the natural bloom effect from high color values. - shadowDarkness: - field: float - desc: | - Controls how dark shaded parts of the particle are. - specular: - field: int - resource: texture - textureType: 3m - desc: | - Specular texture ID. - see: - - lighting - - glossiness - - specularity - glossiness: - field: float - default: 0.25 - desc: | - Controls how sharp the specular highlights are. - see: - - lighting - - specular - - specularity - lighting: - type: LightingMode - field: int - default: LightingMode.Unlit - desc: | - Controls how the particles are lit. See {@link LightingMode} for more information. - specularity: - field: float - default: 0.5 - desc: | - Controls how bright the specular highlights are. - see: - - lighting - - specular - - glossiness - unk_ds3_f1_7: - field: int unk_ds3_f1_11: field: int unk_ds3_f1_12: @@ -329,6 +303,14 @@ properties: Controls the shape of the particles. If disabled, the particles will be rectangular. If enabled, they will be octagonal. unk_ds3_f1_16: field: int + unk_sdt_f1_15: + field: int + default: 1 + unk_sdt_f1_16: + field: int + default: 1 + unk_sdt_f1_17: + field: int unk_ds3_f2_0: field: int unk_ds3_f2_1: @@ -338,9 +320,29 @@ properties: default: 8 unk_ds3_f2_3: field: float - unk_ds3_f2_4: - field: int - default: 1 + bloom: + field: bool + default: true + desc: | + Controls whether or not the particles have an additional bloom effect controlled by {@link bloomColor}. + + Note: + - This has no effect if the "Effects Quality" setting is set to "Low". + - This does not affect the natural bloom effect from high color values. + see: + - bloomColor + bloomColor: + field: vec4 + default: [1, 1, 1, 0] + color: true + desc: | + Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + + Note: + - This has no effect if the "Effects Quality" setting is set to "Low". + - This does not affect the natural bloom effect from high color values. + see: + - bloom unk_ds3_f2_9: field: float unk_ds3_f2_10: @@ -351,32 +353,32 @@ properties: field: int unk_ds3_f2_13: field: int - minDistance: + minFadeDistance: field: float default: -1 scale: ifNotMinusOne desc: | - Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - - This requires {@link minFadeDistance} to be set to something other than -1. + This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. - This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. see: - - minFadeDistance + - minDistance - maxFadeDistance - maxDistance - minDistanceThreshold - maxDistanceThreshold - minFadeDistance: + minDistance: field: float default: -1 scale: ifNotMinusOne desc: | - This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + This requires {@link minFadeDistance} to be set to something other than -1. + + This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. see: - - minDistance + - minFadeDistance - maxFadeDistance - maxDistance - minDistanceThreshold @@ -459,36 +461,10 @@ properties: unk_ds3_f2_29: field: float default: 5 - unk_ds3_p1_21: - type: ScalarValue - unk_ds3_p1_22: - type: ScalarValue - unk_ds3_p2_2: - type: ScalarValue - unk_ds3_p2_3: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_4: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_5: - type: Vector4Value - default: [1, 1, 1, 1] - alphaThreshold: - type: ScalarValue - argument: EffectAge + shadowDarkness: + field: float desc: | - Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - - This threshold creates a hard cut-off between visible and not visible, which is unlike the {@link alphaFadeThreshold}. - unk_sdt_f1_15: - field: int - default: 1 - unk_sdt_f1_16: - field: int - default: 1 - unk_sdt_f1_17: - field: int + Controls how dark shaded parts of the particle are. unkHideIndoors: field: int desc: | @@ -498,11 +474,45 @@ properties: unk_sdt_f2_32: field: int default: 1 + specular: + field: int + resource: texture + textureType: 3m + desc: | + Specular texture ID. + see: + - lighting + - glossiness + - specularity + glossiness: + field: float + default: 0.25 + desc: | + Controls how sharp the specular highlights are. + see: + - lighting + - specular + - specularity + lighting: + type: LightingMode + field: int + default: LightingMode.Unlit + desc: | + Controls how the particles are lit. See {@link LightingMode} for more information. unk_sdt_f2_36: field: int default: -2 unk_sdt_f2_37: field: int + specularity: + field: float + default: 0.5 + desc: | + Controls how bright the specular highlights are. + see: + - lighting + - specular + - glossiness unk_sdt_f2_39: field: int default: 1 @@ -543,7 +553,7 @@ games: - unk_ds3_f2_1 - unk_ds3_f2_2 - unk_ds3_f2_3 - - unk_ds3_f2_4 + - bloom - bloomColor # # @@ -626,7 +636,7 @@ games: - unk_ds3_f2_1 - unk_ds3_f2_2 - unk_ds3_f2_3 - - unk_ds3_f2_4 + - bloom - bloomColor # # @@ -702,7 +712,7 @@ games: - unk_ds3_f2_1 - unk_ds3_f2_2 - unk_ds3_f2_3 - - unk_ds3_f2_4 + - bloom - bloomColor # # diff --git a/src/actions/604.yml b/src/actions/604.yml index 5e81157..7371cff 100644 --- a/src/actions/604.yml +++ b/src/actions/604.yml @@ -7,115 +7,6 @@ meta: desc: | Particle with multiple textures that can scroll. properties: - orientation: - type: OrientationMode - field: int - default: OrientationMode.CameraPlane - desc: | - Controls the orientation mode for the particles. See {@link OrientationMode} for more information. - mask: - field: int - default: 1 - resource: texture - textureType: a - desc: | - Mask texture ID. - layer1: - field: int - default: 1 - resource: texture - textureType: a - desc: | - Layer 1 texture ID. - layer2: - field: int - default: 1 - resource: texture - textureType: a - desc: | - Layer 2 texture ID. - uniformScale: - field: bool - default: false - desc: | - If enabled, the particle width-related properties and fields will control both the width and height of the particles, and the height counterparts will be ignored. - see: - - width - - height - columns: - field: int - default: 1 - desc: | - To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. - see: - - totalFrames - totalFrames: - field: int - default: 1 - desc: | - To split the texture into multiple animation frames, this value must be set to the total number of frames in the texture. - see: - - columns - interpolateFrames: - field: bool - default: true - desc: | - If enabled, the texture animation will use linear interpolation to mix frames when the frame index is not a whole number. For example, if the frame index is 0.5, enabling this will cause the average of the first two frames to be shown instead of just the first frame. - - If disabled, the frame index will be truncated to get a whole number. - see: - - frameIndex - - frameIndexOffset - depthBlend: - field: bool - default: true - desc: | - Controls how the particles should render when behind something else. If disabled, the particles will simply be drawn behind anything they are behind in the world. If enabled, they will instead display in front of the object if they are close enough, and will fade out with distance from the object's surface that is blocking the view of the particle. - octagonal: - field: bool - default: false - desc: | - Controls the shape of the particles. If disabled, the particles will be rectangular. If enabled, they will be octagonal. - bloomColor: - field: vec4 - default: [1, 1, 1, 0] - color: true - desc: | - Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. - - Note: - - This has no effect if the "Effects Quality" setting is set to "Low". - - This does not affect the natural bloom effect from high color values. - shadowDarkness: - field: float - desc: | - Controls how dark shaded parts of the particle are. - specular: - field: int - resource: texture - textureType: 3m - desc: | - Specular texture ID. - see: - - lighting - - glossiness - glossiness: - field: float - default: 0.25 - desc: | - Controls how sharp the specular highlights are. - see: - - lighting - - specular - lighting: - type: LightingMode - field: int - default: LightingMode.Unlit - desc: | - Controls how the particles are lit. See {@link LightingMode} for more information. - unk_sdt_f2_38: - field: int - default: 1 blendMode: type: BlendMode | ScalarProperty field: int @@ -192,40 +83,40 @@ properties: see: - rotationX - angularSpeedMultiplierX - angularSpeedY: + angularSpeedMultiplierX: type: ScalarValue + default: 1 argument: ParticleAge - time: true desc: | - Angular speed around the Y-axis in degrees per second. + Multiplier for {@link angularSpeedX}. see: - - rotationY - - angularSpeedMultiplierY - angularSpeedZ: + - rotationX + angularSpeedY: type: ScalarValue argument: ParticleAge time: true desc: | - Angular speed around the Z-axis in degrees per second. + Angular speed around the Y-axis in degrees per second. see: - - rotationZ - - angularSpeedMultiplierZ - angularSpeedMultiplierX: + - rotationY + - angularSpeedMultiplierY + angularSpeedMultiplierY: type: ScalarValue default: 1 argument: ParticleAge desc: | - Multiplier for {@link angularSpeedX}. + Multiplier for {@link angularSpeedY}. see: - - rotationX - angularSpeedMultiplierY: + - rotationY + angularSpeedZ: type: ScalarValue - default: 1 argument: ParticleAge + time: true desc: | - Multiplier for {@link angularSpeedY}. + Angular speed around the Z-axis in degrees per second. see: - - rotationY + - rotationZ + - angularSpeedMultiplierZ angularSpeedMultiplierZ: type: ScalarValue default: 1 @@ -295,6 +186,20 @@ properties: argument: ParticleAge desc: | Seemingly identical to {@link frameIndex}? The sum of these two properties is the actual frame index that gets used. + unk_ds3_p1_23: + type: ScalarValue + unk_ds3_p1_24: + type: ScalarValue + unk_ds3_p1_25: + type: ScalarValue + unk_ds3_p1_26: + type: ScalarValue + unk_ds3_p1_27: + type: ScalarValue + default: 1 + unk_ds3_p1_28: + type: ScalarValue + default: 1 layer1SpeedU: type: ScalarValue default: 0 @@ -379,16 +284,111 @@ properties: argument: EffectAge desc: | Alpha multiplier. + unk_ds3_p2_2: + type: ScalarValue + unk_ds3_p2_3: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_4: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_5: + type: Vector4Value + default: [1, 1, 1, 1] + alphaThreshold: + type: ScalarValue + argument: EffectAge + desc: | + Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. + + This threshold creates a hard cut-off between visible and not visible, which is unlike the {@link alphaFadeThreshold}. + orientation: + type: OrientationMode + field: int + default: OrientationMode.CameraPlane + desc: | + Controls the orientation mode for the particles. See {@link OrientationMode} for more information. + mask: + field: int + default: 1 + resource: texture + textureType: a + desc: | + Mask texture ID. + layer1: + field: int + default: 1 + resource: texture + textureType: a + desc: | + Layer 1 texture ID. + layer2: + field: int + default: 1 + resource: texture + textureType: a + desc: | + Layer 2 texture ID. + uniformScale: + field: bool + default: false + desc: | + If enabled, the particle width-related properties and fields will control both the width and height of the particles, and the height counterparts will be ignored. + see: + - width + - height unk_ds3_f1_6: field: int + columns: + field: int + default: 1 + desc: | + To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. + see: + - totalFrames + totalFrames: + field: int + default: 1 + desc: | + To split the texture into multiple animation frames, this value must be set to the total number of frames in the texture. + see: + - columns + interpolateFrames: + field: bool + default: true + desc: | + If enabled, the texture animation will use linear interpolation to mix frames when the frame index is not a whole number. For example, if the frame index is 0.5, enabling this will cause the average of the first two frames to be shown instead of just the first frame. + + If disabled, the frame index will be truncated to get a whole number. + see: + - frameIndex + - frameIndexOffset unk_ds3_f1_10: field: int default: -2 unk_ds3_f1_11: field: int default: -2 + depthBlend: + field: bool + default: true + desc: | + Controls how the particles should render when behind something else. If disabled, the particles will simply be drawn behind anything they are behind in the world. If enabled, they will instead display in front of the object if they are close enough, and will fade out with distance from the object's surface that is blocking the view of the particle. + octagonal: + field: bool + default: false + desc: | + Controls the shape of the particles. If disabled, the particles will be rectangular. If enabled, they will be octagonal. unk_ds3_f1_14: field: int + unk_er_f1_14: + field: int + default: 1 + unk_er_f1_15: + field: int + default: 1 + unk_er_f1_16: + field: int unk_ds3_f2_0: field: int unk_ds3_f2_1: @@ -398,9 +398,29 @@ properties: default: 8 unk_ds3_f2_3: field: float - unk_ds3_f2_4: - field: int - default: 1 + bloom: + field: bool + default: true + desc: | + Controls whether or not the particles have an additional bloom effect controlled by {@link bloomColor}. + + Note: + - This has no effect if the "Effects Quality" setting is set to "Low". + - This does not affect the natural bloom effect from high color values. + see: + - bloomColor + bloomColor: + field: vec4 + default: [1, 1, 1, 0] + color: true + desc: | + Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + + Note: + - This has no effect if the "Effects Quality" setting is set to "Low". + - This does not affect the natural bloom effect from high color values. + see: + - bloom unk_ds3_f2_9: field: float unk_ds3_f2_10: @@ -411,32 +431,32 @@ properties: field: int unk_ds3_f2_13: field: int - minDistance: + minFadeDistance: field: float default: -1 scale: ifNotMinusOne desc: | - Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - - This requires {@link minFadeDistance} to be set to something other than -1. + This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. - This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. see: - - minFadeDistance + - minDistance - maxFadeDistance - maxDistance - minDistanceThreshold - maxDistanceThreshold - minFadeDistance: + minDistance: field: float default: -1 scale: ifNotMinusOne desc: | - This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + This requires {@link minFadeDistance} to be set to something other than -1. + + This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. see: - - minDistance + - minFadeDistance - maxFadeDistance - maxDistance - minDistanceThreshold @@ -519,48 +539,46 @@ properties: unk_ds3_f2_29: field: float default: 5 - unk_ds3_p1_23: - type: ScalarValue - unk_ds3_p1_24: - type: ScalarValue - unk_ds3_p1_25: - type: ScalarValue - unk_ds3_p1_26: - type: ScalarValue - unk_ds3_p1_27: - type: ScalarValue - default: 1 - unk_ds3_p1_28: - type: ScalarValue - default: 1 - unk_ds3_p2_2: - type: ScalarValue - unk_ds3_p2_3: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_4: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_5: - type: Vector4Value - default: [1, 1, 1, 1] - alphaThreshold: - type: ScalarValue - argument: EffectAge + shadowDarkness: + field: float desc: | - Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - - This threshold creates a hard cut-off between visible and not visible, which is unlike the {@link alphaFadeThreshold}. + Controls how dark shaded parts of the particle are. unk_sdt_f2_31: field: int unk_sdt_f2_32: field: int default: 1 + specular: + field: int + resource: texture + textureType: 3m + desc: | + Specular texture ID. + see: + - lighting + - glossiness + glossiness: + field: float + default: 0.25 + desc: | + Controls how sharp the specular highlights are. + see: + - lighting + - specular + lighting: + type: LightingMode + field: int + default: LightingMode.Unlit + desc: | + Controls how the particles are lit. See {@link LightingMode} for more information. unk_sdt_f2_36: field: int default: -2 unk_sdt_f2_37: field: int + unk_sdt_f2_38: + field: int + default: 1 unk_sdt_f2_39: field: int default: 1 @@ -568,14 +586,6 @@ properties: field: int unk_sdt_f2_41: field: int - unk_er_f1_14: - field: int - default: 1 - unk_er_f1_15: - field: int - default: 1 - unk_er_f1_16: - field: int unk_er_f2_42: field: int unk_er_f2_43: @@ -609,7 +619,7 @@ games: - unk_ds3_f2_1 - unk_ds3_f2_2 - unk_ds3_f2_3 - - unk_ds3_f2_4 + - bloom - bloomColor # # @@ -706,7 +716,7 @@ games: - unk_ds3_f2_1 - unk_ds3_f2_2 - unk_ds3_f2_3 - - unk_ds3_f2_4 + - bloom - bloomColor # # @@ -812,7 +822,7 @@ games: - unk_ds3_f2_1 - unk_ds3_f2_2 - unk_ds3_f2_3 - - unk_ds3_f2_4 + - bloom - bloomColor # # @@ -863,7 +873,7 @@ games: - unk_ds3_f2_1 - unk_ds3_f2_2 - unk_ds3_f2_3 - - unk_ds3_f2_4 + - bloom - bloomColor # # diff --git a/src/actions/605.yml b/src/actions/605.yml index 797e47a..fa740e8 100644 --- a/src/actions/605.yml +++ b/src/actions/605.yml @@ -9,78 +9,6 @@ desc: | Some models don't work properly with this action for some reason. For example, the Carian greatsword model in Elden Ring (88300), gets horribly stretched and distorted when used with this action. If you find a model like this that you want to use, try using the {@link ActionType.RichModel RichModel action} instead. properties: - orientation: - type: ModelOrientationMode - field: int - default: ModelOrientationMode.ParticleDirection - desc: | - Model orientation mode. See {@link ModelOrientationMode} for more information. - scaleVariationX: - field: float - default: 1 - desc: | - Each particle will pick a random number between this value and 1, and the width of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly thinner, down to half width. Setting it to 2 will make them randomly wider, up to double width. - - If {@link uniformScale} is enabled, this also affects the height. - see: - - scaleVariationY - - scaleVariationZ - scaleVariationY: - field: float - default: 1 - desc: | - Each particle will pick a random number between this value and 1, and the height of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shorter, down to half height. Setting it to 2 will make them randomly taller, up to double height. - - If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the height, and this field is ignored. - see: - - scaleVariationX - - scaleVariationZ - scaleVariationZ: - field: float - default: 1 - desc: | - Each particle will pick a random number between this value and 1, and the depth of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shallower, down to half depth. Setting it to 2 will make them randomly deeper, up to double depth. - - If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the depth, and this field is ignored. - see: - - scaleVariationX - - scaleVariationY - uniformScale: - field: bool - default: false - desc: | - If enabled, the particle X scale-related properties and fields will control the scale in all axes, and the Y and Z counterparts will be ignored. - see: - - sizeX - - sizeY - - sizeZ - - scaleVariationX - - scaleVariationY - - scaleVariationZ - columns: - field: int - default: 1 - desc: | - To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. - see: - - totalFrames - totalFrames: - field: int - default: 1 - desc: | - To split the texture into multiple animation frames, this value must be set to the total number of frames in the texture. - see: - - columns - bloomColor: - field: vec4 - default: [1, 1, 1, 0] - color: true - desc: | - Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. - - Note: - - This has no effect if the "Effects Quality" setting is set to "Low". - - This does not affect the natural bloom effect from high color values. model: type: ScalarValue field: int @@ -161,40 +89,40 @@ properties: see: - rotationX - angularSpeedMultiplierX - angularSpeedY: + angularSpeedMultiplierX: type: ScalarValue + default: 1 argument: ParticleAge - time: true desc: | - Angular speed around the Y-axis in degrees per second. + Multiplier for {@link angularSpeedX}. see: - - rotationY - - angularSpeedMultiplierY - angularSpeedZ: + - rotationX + angularSpeedY: type: ScalarValue argument: ParticleAge time: true desc: | - Angular speed around the Z-axis in degrees per second. + Angular speed around the Y-axis in degrees per second. see: - - rotationZ - - angularSpeedMultiplierZ - angularSpeedMultiplierX: + - rotationY + - angularSpeedMultiplierY + angularSpeedMultiplierY: type: ScalarValue default: 1 argument: ParticleAge desc: | - Multiplier for {@link angularSpeedX}. + Multiplier for {@link angularSpeedY}. see: - - rotationX - angularSpeedMultiplierY: + - rotationY + angularSpeedZ: type: ScalarValue - default: 1 argument: ParticleAge + time: true desc: | - Multiplier for {@link angularSpeedY}. + Angular speed around the Z-axis in degrees per second. see: - - rotationY + - rotationZ + - angularSpeedMultiplierZ angularSpeedMultiplierZ: type: ScalarValue default: 1 @@ -233,6 +161,8 @@ properties: color: true desc: | Color multiplier for the particle. + unk_ds3_p1_15: + type: ScalarValue frameIndex: type: ScalarValue argument: ParticleAge @@ -300,6 +230,8 @@ properties: argument: ParticleAge desc: | Multiplier for {@link speedV}. + unk_ds3_p1_24: + type: ScalarValue rgbMultiplier: type: ScalarValue default: 1 @@ -312,6 +244,83 @@ properties: argument: EffectAge desc: | Alpha multiplier. + unk_ds3_p2_2: + type: ScalarValue + unk_ds3_p2_3: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_4: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_5: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_6: + type: ScalarValue + unk_ds3_p2_7: + type: ScalarValue + orientation: + type: ModelOrientationMode + field: int + default: ModelOrientationMode.ParticleDirection + desc: | + Model orientation mode. See {@link ModelOrientationMode} for more information. + scaleVariationX: + field: float + default: 1 + desc: | + Each particle will pick a random number between this value and 1, and the width of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly thinner, down to half width. Setting it to 2 will make them randomly wider, up to double width. + + If {@link uniformScale} is enabled, this also affects the height. + see: + - scaleVariationY + - scaleVariationZ + scaleVariationY: + field: float + default: 1 + desc: | + Each particle will pick a random number between this value and 1, and the height of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shorter, down to half height. Setting it to 2 will make them randomly taller, up to double height. + + If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the height, and this field is ignored. + see: + - scaleVariationX + - scaleVariationZ + scaleVariationZ: + field: float + default: 1 + desc: | + Each particle will pick a random number between this value and 1, and the depth of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shallower, down to half depth. Setting it to 2 will make them randomly deeper, up to double depth. + + If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the depth, and this field is ignored. + see: + - scaleVariationX + - scaleVariationY + uniformScale: + field: bool + default: false + desc: | + If enabled, the particle X scale-related properties and fields will control the scale in all axes, and the Y and Z counterparts will be ignored. + see: + - sizeX + - sizeY + - sizeZ + - scaleVariationX + - scaleVariationY + - scaleVariationZ + columns: + field: int + default: 1 + desc: | + To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. + see: + - totalFrames + totalFrames: + field: int + default: 1 + desc: | + To split the texture into multiple animation frames, this value must be set to the total number of frames in the texture. + see: + - columns unk_ds3_f1_9: field: int default: -2 @@ -365,6 +374,14 @@ properties: - loopAnimation unk_ds3_f1_18: field: int + unk_er_f1_17: + field: int + default: 1 + unk_er_f1_18: + field: int + default: 1 + unk_er_f1_19: + field: int unk_ds3_f2_0: field: int unk_ds3_f2_1: @@ -377,6 +394,16 @@ properties: unk_ds3_f2_4: field: int default: 1 + bloomColor: + field: vec4 + default: [1, 1, 1, 0] + color: true + desc: | + Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + + Note: + - This has no effect if the "Effects Quality" setting is set to "Low". + - This does not affect the natural bloom effect from high color values. unk_ds3_f2_9: field: float unk_ds3_f2_10: @@ -387,32 +414,32 @@ properties: field: int unk_ds3_f2_13: field: int - minDistance: + minFadeDistance: field: float default: -1 scale: ifNotMinusOne desc: | - Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - - This requires {@link minFadeDistance} to be set to something other than -1. + This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. - This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. see: - - minFadeDistance + - minDistance - maxFadeDistance - maxDistance - minDistanceThreshold - maxDistanceThreshold - minFadeDistance: + minDistance: field: float default: -1 scale: ifNotMinusOne desc: | - This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + This requires {@link minFadeDistance} to be set to something other than -1. + + This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. see: - - minDistance + - minFadeDistance - maxFadeDistance - maxDistance - minDistanceThreshold @@ -492,27 +519,6 @@ properties: default: 1 unk_ds3_f2_27: field: int - unk_ds3_f2_28: - field: float - unk_ds3_p1_15: - type: ScalarValue - unk_ds3_p1_24: - type: ScalarValue - unk_ds3_p2_2: - type: ScalarValue - unk_ds3_p2_3: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_4: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_5: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_6: - type: ScalarValue - unk_ds3_p2_7: - type: ScalarValue unk_sdt_f2_29: field: float unk_sdt_f2_30: @@ -534,16 +540,10 @@ properties: default: -2 unk_sdt_f2_37: field: int - unk_er_f1_17: - field: int - default: 1 - unk_er_f1_18: - field: int - default: 1 - unk_er_f1_19: - field: int unk_ac6_f2_38: field: int + unk_ds3_f2_28: + field: float games: DS3: fields1: diff --git a/src/actions/606.yml b/src/actions/606.yml index 359e2ab..d4f52f5 100644 --- a/src/actions/606.yml +++ b/src/actions/606.yml @@ -7,107 +7,6 @@ meta: desc: | Creates a trail behind moving effects. properties: - orientation: - type: TracerOrientationMode - field: int - default: TracerOrientationMode.LocalZ - desc: | - Tracer orientation mode. See {@link TracerOrientationMode} for more information. - normalMap: - field: int - default: 0 - resource: texture - textureType: 'n' - desc: | - Normal map texture ID. - - This is used to control the distortion effect of the trail. - see: - - distortionIntensity - segmentInterval: - field: float - default: 0 - time: inv - desc: | - The trail is made up of multiple quads, or *segments*. This controls how many seconds to wait between new segments being created. Lower values produce a smoother trail. - segmentDuration: - field: float - default: 1 - time: inv - desc: | - The trail is made up of multiple quads, or *segments*. This controls how long each segment should last in seconds. - concurrentSegments: - field: int - default: 100 - desc: | - The trail is made up of multiple quads, or *segments*. This controls how many segments may exist at the same time. - columns: - field: int - default: 1 - desc: | - To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. - see: - - totalFrames - totalFrames: - field: int - default: 1 - desc: | - To split the texture into multiple animation frames, this value must be set to the total number of frames in the texture. - see: - - columns - attachedUV: - field: bool - default: true - desc: | - Controls whether or not the UV of the trail should be attached to the node or not. If it is attached, the texture will slide along the segments to follow the source wherever it moves, as if it was a flag attached to a pole. If it is not attached, the texture will stay where it was when the segment was created, like a skid mark on a road where the road is the segments and the mark is the texture, it wouldn't follow the car/node that made it. - bloomColor: - field: vec4 - default: [1, 1, 1, 0] - color: true - desc: | - Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. - - Note: - - This has no effect if the "Effects Quality" setting is set to "Low". - - This does not affect the natural bloom effect from high color values. - shadowDarkness: - field: float - desc: | - Controls how dark shaded parts of the trail are. - specular: - field: int - resource: texture - textureType: 3m - desc: | - Specular texture ID. - see: - - lighting - - glossiness - - specularity - glossiness: - field: float - default: 0.25 - desc: | - Controls how sharp the specular highlights are. - see: - - lighting - - specular - - specularity - lighting: - type: LightingMode - field: int - default: LightingMode.Unlit - desc: | - Controls how the trail is lit. See {@link LightingMode} for more information. - specularity: - field: float - default: 0.5 - desc: | - Controls how bright the specular highlights are. - see: - - lighting - - specular - - glossiness texture: type: ScalarValue field: int @@ -137,6 +36,10 @@ properties: argument: EmissionTime desc: | Multiplier for {@link width}. + unk_ds3_p1_2: + type: ScalarValue + unk_ds3_p1_3: + type: ScalarValue color1: type: Vector4Value default: [1, 1, 1, 1] @@ -194,6 +97,9 @@ properties: argument: ParticleAge desc: | Controls how much the UV coordinates should be randomly offset by per segment. + unk_ds3_p1_13: + type: ScalarValue + default: -1 rgbMultiplier: type: ScalarValue default: 1 @@ -206,12 +112,88 @@ properties: argument: EffectAge desc: | Alpha multiplier. + distortionIntensity: + type: ScalarValue + argument: EffectAge + desc: | + Controls the intensity of the distortion effect. At 0, there is no distortion at all. + see: + - normalMap + unk_ds3_p2_3: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_4: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_5: + type: Vector4Value + default: [1, 1, 1, 1] + alphaThreshold: + type: ScalarValue + argument: EffectAge + desc: | + Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. + + This threshold creates a hard cut-off between visible and not visible, which is unlike the {@link alphaFadeThreshold}. + orientation: + type: TracerOrientationMode + field: int + default: TracerOrientationMode.LocalZ + desc: | + Tracer orientation mode. See {@link TracerOrientationMode} for more information. + normalMap: + field: int + default: 0 + resource: texture + textureType: 'n' + desc: | + Normal map texture ID. + + This is used to control the distortion effect of the trail. + see: + - distortionIntensity + segmentInterval: + field: float + default: 0 + time: inv + desc: | + The trail is made up of multiple quads, or *segments*. This controls how many seconds to wait between new segments being created. Lower values produce a smoother trail. + segmentDuration: + field: float + default: 1 + time: inv + desc: | + The trail is made up of multiple quads, or *segments*. This controls how long each segment should last in seconds. + concurrentSegments: + field: int + default: 100 + desc: | + The trail is made up of multiple quads, or *segments*. This controls how many segments may exist at the same time. unk_ds3_f1_7: field: int unk_ds3_f1_8: field: float unk_ds3_f1_9: field: float + columns: + field: int + default: 1 + desc: | + To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. + see: + - totalFrames + totalFrames: + field: int + default: 1 + desc: | + To split the texture into multiple animation frames, this value must be set to the total number of frames in the texture. + see: + - columns + attachedUV: + field: bool + default: true + desc: | + Controls whether or not the UV of the trail should be attached to the node or not. If it is attached, the texture will slide along the segments to follow the source wherever it moves, as if it was a flag attached to a pole. If it is not attached, the texture will stay where it was when the segment was created, like a skid mark on a road where the road is the segments and the mark is the texture, it wouldn't follow the car/node that made it. unk_ds3_f1_13: field: int default: -1 @@ -220,6 +202,14 @@ properties: default: -1 unk_ds3_f1_15: field: int + unk_er_f1_14: + field: int + default: 1 + unk_er_f1_15: + field: int + default: 1 + unk_er_f1_16: + field: int unk_ds3_f2_0: field: int unk_ds3_f2_1: @@ -229,9 +219,29 @@ properties: default: 8 unk_ds3_f2_3: field: int - unk_ds3_f2_4: - field: int - default: 1 + bloom: + field: bool + default: true + desc: | + Controls whether or not the particles have an additional bloom effect controlled by {@link bloomColor}. + + Note: + - This has no effect if the "Effects Quality" setting is set to "Low". + - This does not affect the natural bloom effect from high color values. + see: + - bloomColor + bloomColor: + field: vec4 + default: [1, 1, 1, 0] + color: true + desc: | + Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + + Note: + - This has no effect if the "Effects Quality" setting is set to "Low". + - This does not affect the natural bloom effect from high color values. + see: + - bloom unk_ds3_f2_9: field: float unk_ds3_f2_10: @@ -242,32 +252,32 @@ properties: field: int unk_ds3_f2_13: field: int - minDistance: + minFadeDistance: field: float default: -1 scale: ifNotMinusOne desc: | - Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - - This requires {@link minFadeDistance} to be set to something other than -1. + This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. - This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. see: - - minFadeDistance + - minDistance - maxFadeDistance - maxDistance - minDistanceThreshold - maxDistanceThreshold - minFadeDistance: + minDistance: field: float default: -1 scale: ifNotMinusOne desc: | - This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + This requires {@link minFadeDistance} to be set to something other than -1. + + This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. see: - - minDistance + - minFadeDistance - maxFadeDistance - maxDistance - minDistanceThreshold @@ -350,54 +360,54 @@ properties: unk_ds3_f2_29: field: float default: 5 - unk_ds3_p1_2: - type: ScalarValue - unk_ds3_p1_3: - type: ScalarValue - unk_ds3_p1_13: - type: ScalarValue - default: -1 - distortionIntensity: - type: ScalarValue - argument: EffectAge - desc: | - Controls the intensity of the distortion effect. At 0, there is no distortion at all. - see: - - normalMap - unk_ds3_p2_3: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_4: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_5: - type: Vector4Value - default: [1, 1, 1, 1] - alphaThreshold: - type: ScalarValue - argument: EffectAge + shadowDarkness: + field: float desc: | - Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - - This threshold creates a hard cut-off between visible and not visible, which is unlike the {@link alphaFadeThreshold}. + Controls how dark shaded parts of the trail are. unk_sdt_f2_31: field: int unk_sdt_f2_32: field: int default: 1 + specular: + field: int + resource: texture + textureType: 3m + desc: | + Specular texture ID. + see: + - lighting + - glossiness + - specularity + glossiness: + field: float + default: 0.25 + desc: | + Controls how sharp the specular highlights are. + see: + - lighting + - specular + - specularity + lighting: + type: LightingMode + field: int + default: LightingMode.Unlit + desc: | + Controls how the trail is lit. See {@link LightingMode} for more information. unk_sdt_f2_36: field: int default: -2 unk_sdt_f2_37: field: int - unk_er_f1_14: - field: int - default: 1 - unk_er_f1_15: - field: int - default: 1 - unk_er_f1_16: - field: int + specularity: + field: float + default: 0.5 + desc: | + Controls how bright the specular highlights are. + see: + - lighting + - specular + - glossiness unk_er_f2_39: field: int games: @@ -424,7 +434,7 @@ games: - unk_ds3_f2_1 - unk_ds3_f2_2 - unk_ds3_f2_3 - - unk_ds3_f2_4 + - bloom - bloomColor # # @@ -494,7 +504,7 @@ games: - unk_ds3_f2_1 - unk_ds3_f2_2 - unk_ds3_f2_3 - - unk_ds3_f2_4 + - bloom - bloomColor # # @@ -571,7 +581,7 @@ games: - unk_ds3_f2_1 - unk_ds3_f2_2 - unk_ds3_f2_3 - - unk_ds3_f2_4 + - bloom - bloomColor # # diff --git a/src/actions/607.yml b/src/actions/607.yml index 186616b..ebe2b42 100644 --- a/src/actions/607.yml +++ b/src/actions/607.yml @@ -9,101 +9,6 @@ desc: | Note: This particle is not visible if the "Effects" setting is set to "Low". properties: - mode: - type: DistortionMode - field: int - default: DistortionMode.NormalMap - desc: | - Controls what type of distortion to apply. See {@link DistortionMode} for more details. - shape: - type: DistortionShape - field: int - default: DistortionShape.Rectangle - desc: | - Controls the shape of the particle. See {@link DistortionShape} for more information. - orientation: - type: OrientationMode - field: int - default: OrientationMode.CameraPlane - desc: | - Controls the orientation mode for the particles. See {@link OrientationMode} for more information. - texture: - field: int - default: 0 - resource: texture - textureType: a - desc: | - Texture ID. - - This texture seems to completely hide the distortion effect. It's probably best to just leave it at 0 unless you are trying to figure out how to use it properly. - normalMap: - field: int - default: 0 - resource: texture - textureType: 'n' - desc: | - Normal map texture ID. - - Only used if the distortion {@link mode} is set to something that uses it. - mask: - field: int - default: 0 - resource: texture - textureType: a - desc: | - Mask texture ID. This texture is used to control the color and opacity of the particle. - scaleVariationX: - field: float - default: 1 - desc: | - Each particle will pick a random number between this value and 1, and the width of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly thinner, down to half width. Setting it to 2 will make them randomly wider, up to double width. - - If {@link uniformScale} is enabled, this also affects the height. - see: - - scaleVariationY - - scaleVariationZ - scaleVariationY: - field: float - default: 1 - desc: | - Each particle will pick a random number between this value and 1, and the height of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shorter, down to half height. Setting it to 2 will make them randomly taller, up to double height. - - If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the height, and this field is ignored. - see: - - scaleVariationX - - scaleVariationZ - scaleVariationZ: - field: float - default: 1 - desc: | - Each particle will pick a random number between this value and 1, and the depth of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shallower, down to half depth. Setting it to 2 will make them randomly deeper, up to double depth. - - If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the depth, and this field is ignored. - see: - - scaleVariationX - - scaleVariationY - uniformScale: - field: bool - default: false - desc: | - If enabled, the particle X scale-related properties and fields will control the scale in all axes, and the Y and Z counterparts will be ignored. - see: - - sizeX - - sizeY - - sizeZ - - scaleVariationX - - scaleVariationY - - scaleVariationZ - bloomColor: - field: vec4 - default: [1, 1, 1, 0] - color: true - desc: | - Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. - - Note: - - This has no effect if the "Effects Quality" setting is set to "Low". - - This does not affect the natural bloom effect from high color values. blendMode: type: BlendMode | ScalarProperty field: int @@ -177,12 +82,17 @@ properties: color: true desc: | Color multiplier. + unk_ds3_p1_7: + type: Vector4Value + default: [1, 1, 1, 1] intensity: type: ScalarValue default: 1 argument: ParticleAge desc: | Controls the intensity of the distortion effect. At 0, there is no distortion at all. + unk_ds3_p1_9: + type: ScalarValue stirSpeed: type: ScalarValue default: 60 @@ -230,11 +140,126 @@ properties: argument: EffectAge desc: | Alpha multiplier. + unk_ds3_p2_2: + type: ScalarValue + unk_ds3_p2_3: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_4: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_5: + type: Vector4Value + default: [1, 1, 1, 1] + alphaThreshold: + type: ScalarValue + argument: EffectAge + desc: | + Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. + + This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. + unk_er_p2_7: + type: ScalarValue + default: 1 + unk_er_p2_8: + type: ScalarValue + default: 1 + mode: + type: DistortionMode + field: int + default: DistortionMode.NormalMap + desc: | + Controls what type of distortion to apply. See {@link DistortionMode} for more details. + shape: + type: DistortionShape + field: int + default: DistortionShape.Rectangle + desc: | + Controls the shape of the particle. See {@link DistortionShape} for more information. + orientation: + type: OrientationMode + field: int + default: OrientationMode.CameraPlane + desc: | + Controls the orientation mode for the particles. See {@link OrientationMode} for more information. + texture: + field: int + default: 0 + resource: texture + textureType: a + desc: | + Texture ID. + + This texture seems to completely hide the distortion effect. It's probably best to just leave it at 0 unless you are trying to figure out how to use it properly. + normalMap: + field: int + default: 0 + resource: texture + textureType: 'n' + desc: | + Normal map texture ID. + + Only used if the distortion {@link mode} is set to something that uses it. + mask: + field: int + default: 0 + resource: texture + textureType: a + desc: | + Mask texture ID. This texture is used to control the color and opacity of the particle. + scaleVariationX: + field: float + default: 1 + desc: | + Each particle will pick a random number between this value and 1, and the width of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly thinner, down to half width. Setting it to 2 will make them randomly wider, up to double width. + + If {@link uniformScale} is enabled, this also affects the height. + see: + - scaleVariationY + - scaleVariationZ + scaleVariationY: + field: float + default: 1 + desc: | + Each particle will pick a random number between this value and 1, and the height of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shorter, down to half height. Setting it to 2 will make them randomly taller, up to double height. + + If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the height, and this field is ignored. + see: + - scaleVariationX + - scaleVariationZ + scaleVariationZ: + field: float + default: 1 + desc: | + Each particle will pick a random number between this value and 1, and the depth of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shallower, down to half depth. Setting it to 2 will make them randomly deeper, up to double depth. + + If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the depth, and this field is ignored. + see: + - scaleVariationX + - scaleVariationY + uniformScale: + field: bool + default: false + desc: | + If enabled, the particle X scale-related properties and fields will control the scale in all axes, and the Y and Z counterparts will be ignored. + see: + - sizeX + - sizeY + - sizeZ + - scaleVariationX + - scaleVariationY + - scaleVariationZ unk_ds3_f1_11: field: int default: -2 unk_ds3_f1_12: field: int + unk_er_f1_12: + field: int + default: 1 + unk_er_f1_13: + field: int + default: 1 unk_ds3_f2_0: field: int unk_ds3_f2_1: @@ -247,6 +272,16 @@ properties: default: 1 unk_ds3_f2_4: field: int + bloomColor: + field: vec4 + default: [1, 1, 1, 0] + color: true + desc: | + Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + + Note: + - This has no effect if the "Effects Quality" setting is set to "Low". + - This does not affect the natural bloom effect from high color values. unk_ds3_f2_9: field: int unk_ds3_f2_10: @@ -257,32 +292,32 @@ properties: field: int unk_ds3_f2_13: field: int - minDistance: + minFadeDistance: field: float default: -1 scale: ifNotMinusOne desc: | - Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - - This requires {@link minFadeDistance} to be set to something other than -1. + This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. - This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. see: - - minFadeDistance + - minDistance - maxFadeDistance - maxDistance - minDistanceThreshold - maxDistanceThreshold - minFadeDistance: + minDistance: field: float default: -1 scale: ifNotMinusOne desc: | - This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + This requires {@link minFadeDistance} to be set to something other than -1. + + This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. see: - - minDistance + - minFadeDistance - maxFadeDistance - maxDistance - minDistanceThreshold @@ -365,29 +400,6 @@ properties: field: int unk_ds3_f2_29: field: int - unk_ds3_p1_7: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p1_9: - type: ScalarValue - unk_ds3_p2_2: - type: ScalarValue - unk_ds3_p2_3: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_4: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_5: - type: Vector4Value - default: [1, 1, 1, 1] - alphaThreshold: - type: ScalarValue - argument: EffectAge - desc: | - Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - - This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. unk_sdt_f2_30: field: float unk_sdt_f2_31: @@ -408,18 +420,6 @@ properties: field: int unk_sdt_f2_38: field: float - unk_er_f1_12: - field: int - default: 1 - unk_er_f1_13: - field: int - default: 1 - unk_er_p2_7: - type: ScalarValue - default: 1 - unk_er_p2_8: - type: ScalarValue - default: 1 games: DS3: fields1: diff --git a/src/actions/608.yml b/src/actions/608.yml index baab581..3355fd0 100644 --- a/src/actions/608.yml +++ b/src/actions/608.yml @@ -9,29 +9,6 @@ desc: | Note: This particle is not visible if the "Effects" setting is set to "Low". properties: - uniformScale: - field: bool - default: false - desc: | - If enabled, the particle width-related properties and fields will control both the width and height of the particles, and the height counterparts will be ignored. - see: - - width - - height - iterations: - field: int - default: 1 - desc: | - Controls how many times to apply the effect. Higher values can have a significant impact on performance. - bloomColor: - field: vec4 - default: [1, 1, 1, 0] - color: true - desc: | - Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. - - Note: - - This has no effect if the "Effects Quality" setting is set to "Low". - - This does not affect the natural bloom effect from high color values. blendMode: type: BlendMode | ScalarProperty field: int @@ -104,6 +81,9 @@ properties: color: true desc: | Color multiplier. + unk_ds3_p1_6: + type: Vector4Value + default: [1, 1, 1, 1] blurRadius: type: ScalarValue default: 0.5 @@ -122,8 +102,45 @@ properties: argument: EffectAge desc: | Alpha multiplier. + unk_ds3_p2_2: + type: ScalarValue + unk_ds3_p2_3: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_4: + type: Vector4Value + default: [1, 1, 1, 1] + unk_ds3_p2_5: + type: Vector4Value + default: [1, 1, 1, 1] + alphaThreshold: + type: ScalarValue + argument: EffectAge + desc: | + Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. + + This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. + uniformScale: + field: bool + default: false + desc: | + If enabled, the particle width-related properties and fields will control both the width and height of the particles, and the height counterparts will be ignored. + see: + - width + - height + iterations: + field: int + default: 1 + desc: | + Controls how many times to apply the effect. Higher values can have a significant impact on performance. unk_ds3_f1_4: field: int + unk_er_f1_3: + field: int + default: 1 + unk_er_f1_4: + field: int + default: 1 unk_ds3_f2_0: field: int unk_ds3_f2_1: @@ -136,6 +153,16 @@ properties: default: 1 unk_ds3_f2_4: field: int + bloomColor: + field: vec4 + default: [1, 1, 1, 0] + color: true + desc: | + Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + + Note: + - This has no effect if the "Effects Quality" setting is set to "Low". + - This does not affect the natural bloom effect from high color values. unk_ds3_f2_9: field: int unk_ds3_f2_10: @@ -146,32 +173,32 @@ properties: field: int unk_ds3_f2_13: field: int - minDistance: + minFadeDistance: field: float default: -1 scale: ifNotMinusOne desc: | - Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - - This requires {@link minFadeDistance} to be set to something other than -1. + This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. - This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. see: - - minFadeDistance + - minDistance - maxFadeDistance - maxDistance - minDistanceThreshold - maxDistanceThreshold - minFadeDistance: + minDistance: field: float default: -1 scale: ifNotMinusOne desc: | - This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + This requires {@link minFadeDistance} to be set to something other than -1. + + This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. see: - - minDistance + - minFadeDistance - maxFadeDistance - maxDistance - minDistanceThreshold @@ -255,35 +282,8 @@ properties: field: int unk_ds3_f2_29: field: float - unk_ds3_p1_6: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_2: - type: ScalarValue - unk_ds3_p2_3: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_4: - type: Vector4Value - default: [1, 1, 1, 1] - unk_ds3_p2_5: - type: Vector4Value - default: [1, 1, 1, 1] - alphaThreshold: - type: ScalarValue - argument: EffectAge - desc: | - Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - - This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. unk_sdt_f2_30: field: float - unk_er_f1_3: - field: int - default: 1 - unk_er_f1_4: - field: int - default: 1 games: DS3: fields1: diff --git a/src/actions/609.yml b/src/actions/609.yml index 6ecbbf3..e85ab86 100644 --- a/src/actions/609.yml +++ b/src/actions/609.yml @@ -34,6 +34,40 @@ properties: scale: true desc: | The maximum distance that the light may travel from the source, and the radius of the sphere in which other effects caused by the light source (for example {@link volumeDensity} and its related fields) may act. + unk_ds3_p1_3: + type: ScalarValue + unk_ds3_p1_4: + type: ScalarValue + unk_ds3_p1_5: + type: ScalarValue + unk_ds3_p1_6: + type: ScalarValue + unk_ds3_p1_7: + type: ScalarValue + default: 10 + unk_ds3_p1_8: + type: ScalarValue + default: 10 + unk_ds3_p1_9: + type: ScalarValue + default: 10 + unk_ds3_p2_0: + type: ScalarValue + default: 1 + desc: | + Affects the falloff of the light in some way, and how the normal of surfaces affect the intensity of the light. + - At 0 or negative values, this completely disabled the light. + - At 1, the light behaves like you would expect. + - At values between 0 and 1, it seemingly makes the falloff of the light over distance stronger, so the light will sooner fade to nothing. + - At values greater than 1, it will make the falloff weaker until near the {@link radius maximum distance}, and then it will very quickly fade to nothing. It also makes the normal of the surfaces hit by the light matter less. At very high values, anything within the radius basically becomes full bright. + see: + - falloffExponent + unk_ds3_p2_1: + type: ScalarValue + default: 1 + unk_sdt_p2_2: + type: ScalarValue + default: 1 diffuseMultiplier: type: ScalarValue default: 1 @@ -50,6 +84,12 @@ properties: A scalar multiplier for the {@link specularColor specular color}. If {@link separateSpecular} is disabled, this property is ignored. + unk_ds3_f1_0: + field: int + unk_ds3_f1_1: + field: float + unk_ds3_f2_0: + field: int jitterAndFlicker: field: bool default: false @@ -75,6 +115,8 @@ properties: - jitterX - jitterY - jitterZ + unk_ds3_f2_3: + field: float jitterX: field: float scale: true @@ -163,6 +205,29 @@ properties: default: 1 desc: | Controls how dark shadows from this light source are. At 0, the shadows will be entirely invisible. + unk_ds3_f2_15: + field: int + unk_ds3_f2_16: + field: int + default: 2 + unk_ds3_f2_17: + field: int + default: 1 + unk_ds3_f2_18: + field: float + unk_ds3_f2_19: + field: float + unk_ds3_f2_20: + field: float + unk_ds3_f2_21: + field: int + unk_ds3_f2_22: + field: int + default: 100 + unk_ds3_f2_23: + field: int + unk_ds3_f2_24: + field: float volumeDensity: field: float default: 0 @@ -171,6 +236,8 @@ properties: see: - phaseFunction - asymmetryParam + unk_sdt_f2_25: + field: float phaseFunction: field: bool default: true @@ -193,70 +260,8 @@ properties: Controls the falloff exponent of the light. Note: This is possibly something else, but the behavior is pretty similar to a falloff exponent in a few ways. - unk_ds3_f1_0: - field: int - unk_ds3_f1_1: - field: float - unk_ds3_f2_0: - field: int - unk_ds3_f2_3: - field: float - unk_ds3_f2_12: - field: float - default: 1 - desc: | - Unknown. Only used in Dark Souls 3. - unk_ds3_f2_15: - field: int - unk_ds3_f2_16: - field: int - default: 2 - unk_ds3_f2_17: - field: int - default: 1 - unk_ds3_f2_18: - field: float - unk_ds3_f2_19: - field: float - unk_ds3_f2_20: - field: float - unk_ds3_f2_21: - field: int - unk_ds3_f2_22: - field: int - default: 100 - unk_ds3_f2_23: - field: int - unk_ds3_f2_24: - field: float - unk_ds3_p1_3: - type: ScalarValue - unk_ds3_p1_4: - type: ScalarValue - unk_ds3_p1_5: - type: ScalarValue - unk_ds3_p1_6: - type: ScalarValue - unk_ds3_p1_7: - type: ScalarValue - default: 10 - unk_ds3_p1_8: - type: ScalarValue - default: 10 - unk_ds3_p1_9: - type: ScalarValue - default: 10 - unk_ds3_p2_0: - type: ScalarValue - default: 1 - unk_ds3_p2_1: - type: ScalarValue - default: 1 - unk_sdt_f2_25: - field: float - unk_sdt_p2_2: - type: ScalarValue - default: 1 + see: + - unk_ds3_p2_0 unk_er_f2_29: field: int default: 1 @@ -268,6 +273,11 @@ properties: default: 1 unk_er_f2_32: field: int + unk_ds3_f2_12: + field: float + default: 1 + desc: | + Unknown. Only used in Dark Souls 3. games: DS3: fields1: diff --git a/src/actions/75.yml b/src/actions/75.yml index de9be9a..fa953ab 100644 --- a/src/actions/75.yml +++ b/src/actions/75.yml @@ -12,19 +12,19 @@ properties: resource: sound desc: | The ID of the sound to play. - repeat: - field: bool - default: false - desc: | - Controls whether the sound will repeat or not. - - Does not seem to work in Elden Ring, and probably doesn't in Armored Core 6 either. volume: field: float default: 1 desc: | Volume multiplier. + Does not seem to work in Elden Ring, and probably doesn't in Armored Core 6 either. + repeat: + field: bool + default: false + desc: | + Controls whether the sound will repeat or not. + Does not seem to work in Elden Ring, and probably doesn't in Armored Core 6 either. games: DS3: diff --git a/src/fxr.ts b/src/fxr.ts index 84a0f39..088a252 100644 --- a/src/fxr.ts +++ b/src/fxr.ts @@ -8,10 +8,21 @@ declare global { } enum Game { + /** + * Using this with the {@link FXR.read} function will cause it to try to find + * out what game the FXR is for automatically. + * + * Using it with the {@link FXR.toArrayBuffer} and {@link FXR.saveAs} methods + * will cause them to use the {@link FXR.gameHint game hint}, unless the hint + * is {@link Game.Heuristic}, in which case they will check if the FXR + * contains anything AC6-specific, and then use {@link Game.ArmoredCore6} if + * it does, and otherwise throw an error. + */ + Heuristic = -2, /** * Does not represent any specific game. * - * Using this with the {@link FXR.read} method will cause it to parse + * Using this with the {@link FXR.read} function will cause it to parse * everything as generic classes. This means that none of the methods in the * library that manipulate things that depend on the game version will work, * like the {@link Node.scale} and {@link Node.recolor} methods. It also @@ -21,9 +32,10 @@ enum Game { * This is intended to be used only for research or for parsing modded files * that may not be structured correctly. * - * Note that this does not work with the {@link FXR.toArrayBuffer} method - * unless the FXR only contains generic classes. If it contains any node - * classes other than {@link GenericNode}, or any {@link DataAction}s, it + * Note that this does not work with the {@link FXR.toArrayBuffer} and + * {@link FXR.saveAs} methods unless the FXR only contains generic classes. + * If it contains any node classes other than {@link GenericNode}, any + * effect classes other than {@link Effect}, or any {@link DataAction}s, it * must be given a specific game to write to. */ Generic = -1, @@ -1970,6 +1982,13 @@ export type ActionGameDataEntry = { properties2?: string[] | Game section10s?: string[] | Game } +export type FilledActionGameDataEntry = { + fields1?: string[] & { fieldsCount?: number } + fields2?: string[] & { fieldsCount?: number } + properties1?: string[] + properties2?: string[] + section10s?: string[] +} const ActionData: { [x: string]: { props?: { @@ -2173,8 +2192,8 @@ const ActionData: { [ActionType.NodeSound]: { props: { sound: { default: 0, field: 1, resource: 3 }, - repeat: { default: false, field: 0 }, volume: { default: 1, field: 2 }, + repeat: { default: false, field: 0 }, }, games: { [Game.DarkSouls3]: { @@ -2399,10 +2418,10 @@ const ActionData: { }, [ActionType.NodeAttributes]: { props: { - attachment: { default: AttachMode.Parent, field: 1 }, duration: { default: -1, time: 3 }, delay: { default: 0, field: 2 }, unk_ds3_f1_1: { default: 1, field: 1 }, + attachment: { default: AttachMode.Parent, field: 1 }, unk_ds3_f1_3: { default: 0, field: 2 }, }, games: { @@ -2417,8 +2436,8 @@ const ActionData: { }, [ActionType.ParticleAttributes]: { props: { - attachment: { default: AttachMode.Parent, field: 1 }, duration: { default: -1, time: 3 }, + attachment: { default: AttachMode.Parent, field: 1 }, }, games: { [Game.DarkSouls3]: { @@ -2432,6 +2451,14 @@ const ActionData: { }, [ActionType.Unk130]: { props: { + unk_ds3_p1_0: { default: 0 }, + unk_ds3_p1_1: { default: 0 }, + unk_ds3_p1_2: { default: 0 }, + unk_ds3_p1_3: { default: 0 }, + unk_ds3_p1_4: { default: 0 }, + unk_ds3_p1_5: { default: 0 }, + unk_ds3_p1_6: { default: 0 }, + unk_ds3_p1_7: { default: 0 }, unk_ds3_f1_0: { default: 1, field: 1 }, unk_ds3_f1_1: { default: 0, field: 1 }, unk_ds3_f1_2: { default: 0, field: 1 }, @@ -2441,14 +2468,6 @@ const ActionData: { unk_ds3_f1_6: { default: 0, field: 1 }, unk_ds3_f1_7: { default: 0, field: 1 }, unk_ds3_f1_8: { default: 0, field: 1 }, - unk_ds3_p1_0: { default: 0 }, - unk_ds3_p1_1: { default: 0 }, - unk_ds3_p1_2: { default: 0 }, - unk_ds3_p1_3: { default: 0 }, - unk_ds3_p1_4: { default: 0 }, - unk_ds3_p1_5: { default: 0 }, - unk_ds3_p1_6: { default: 0 }, - unk_ds3_p1_7: { default: 0 }, }, games: { [Game.DarkSouls3]: { @@ -2462,12 +2481,12 @@ const ActionData: { }, [ActionType.ParticleModifier]: { props: { - uniformScale: { default: false, field: 0 }, speed: { default: 0, scale: 1, time: 1 }, scaleX: { default: 1 }, scaleY: { default: 1 }, scaleZ: { default: 1 }, color: { default: [1, 1, 1, 1], color: 1 }, + uniformScale: { default: false, field: 0 }, }, games: { [Game.DarkSouls3]: { @@ -2566,11 +2585,11 @@ const ActionData: { [ActionType.EqualDistanceEmitter]: { props: { threshold: { default: 0.1, scale: 1 }, + unk_ds3_p1_2: { default: -1 }, maxConcurrent: { default: -1, field: 1 }, + unk_ds3_p1_1: { default: 1 }, unk_ds3_f1_1: { default: 1, field: 1 }, unk_sdt_f1_1: { default: 0, field: 1 }, - unk_ds3_p1_1: { default: 1 }, - unk_ds3_p1_2: { default: -1 }, }, games: { [Game.DarkSouls3]: { @@ -2601,9 +2620,9 @@ const ActionData: { }, [ActionType.DiskEmitterShape]: { props: { - direction: { default: InitialDirection.Emitter, field: 1 }, radius: { default: 1, scale: 1 }, distribution: { default: 0 }, + direction: { default: InitialDirection.Emitter, field: 1 }, }, games: { [Game.DarkSouls3]: { @@ -2617,10 +2636,10 @@ const ActionData: { }, [ActionType.RectangleEmitterShape]: { props: { - direction: { default: InitialDirection.Emitter, field: 1 }, sizeX: { default: 1, scale: 1 }, sizeY: { default: 1, scale: 1 }, distribution: { default: 0 }, + direction: { default: InitialDirection.Emitter, field: 1 }, }, games: { [Game.DarkSouls3]: { @@ -2634,8 +2653,8 @@ const ActionData: { }, [ActionType.SphereEmitterShape]: { props: { - emitInside: { default: true, field: 0 }, radius: { default: 1, scale: 1 }, + emitInside: { default: true, field: 0 }, }, games: { [Game.DarkSouls3]: { @@ -2649,11 +2668,11 @@ const ActionData: { }, [ActionType.BoxEmitterShape]: { props: { - direction: { default: InitialDirection.Emitter, field: 1 }, - emitInside: { default: true, field: 0 }, sizeX: { default: 1, scale: 1 }, sizeY: { default: 1, scale: 1 }, sizeZ: { default: 1, scale: 1 }, + direction: { default: InitialDirection.Emitter, field: 1 }, + emitInside: { default: true, field: 0 }, }, games: { [Game.DarkSouls3]: { @@ -2667,11 +2686,11 @@ const ActionData: { }, [ActionType.CylinderEmitterShape]: { props: { + radius: { default: 1, scale: 1 }, + height: { default: 1, scale: 1 }, direction: { default: InitialDirection.Emitter, field: 1 }, emitInside: { default: true, field: 0 }, yAxis: { default: true, field: 0 }, - radius: { default: 1, scale: 1 }, - height: { default: 1, scale: 1 }, }, games: { [Game.Sekiro]: { @@ -2685,9 +2704,9 @@ const ActionData: { [ActionType.NoSpread]: {}, [ActionType.CircularSpread]: { props: { - unk_er_f1_0: { default: false, field: 0 }, angle: { default: 30 }, distribution: { default: 0 }, + unk_er_f1_0: { default: false, field: 0 }, }, games: { [Game.DarkSouls3]: { @@ -2703,10 +2722,10 @@ const ActionData: { }, [ActionType.EllipticalSpread]: { props: { - unk_er_f1_0: { default: false, field: 0 }, angleX: { default: 30 }, angleY: { default: 30 }, distribution: { default: 0 }, + unk_er_f1_0: { default: false, field: 0 }, }, games: { [Game.DarkSouls3]: { @@ -2745,22 +2764,29 @@ const ActionData: { color3: { default: [1, 1, 1, 1], color: 1 }, rgbMultiplier: { default: 1 }, alphaMultiplier: { default: 1 }, - bloomColor: { default: [1, 1, 1, 0], field: 5, color: 1 }, + unk_ds3_p2_2: { default: 0 }, + unk_ds3_p2_3: { default: [1, 1, 1, 1] }, + unk_ds3_p2_4: { default: [1, 1, 1, 1] }, + unk_ds3_p2_5: { default: [1, 1, 1, 1] }, + alphaThreshold: { default: 0 }, unk_ds3_f1_2: { default: -2, field: 1 }, unk_ds3_f1_3: { default: -2, field: 1 }, unk_ds3_f1_4: { default: 0, field: 1 }, + unk_er_f1_3: { default: 1, field: 1 }, + unk_er_f1_4: { default: 1, field: 1 }, unk_ds3_f2_0: { default: 0, field: 1 }, unk_ds3_f2_1: { default: 0, field: 1 }, unk_ds3_f2_2: { default: 8, field: 1 }, unk_ds3_f2_3: { default: 0, field: 1 }, - unk_ds3_f2_4: { default: 1, field: 1 }, + bloom: { default: true, field: 0 }, + bloomColor: { default: [1, 1, 1, 0], field: 5, color: 1 }, unk_ds3_f2_9: { default: 0, field: 2 }, unk_ds3_f2_10: { default: 0, field: 1 }, unk_ds3_f2_11: { default: 0, field: 1 }, unk_ds3_f2_12: { default: 0, field: 1 }, unk_ds3_f2_13: { default: 0, field: 1 }, - minDistance: { default: -1, field: 2, scale: 2 }, minFadeDistance: { default: -1, field: 2, scale: 2 }, + minDistance: { default: -1, field: 2, scale: 2 }, maxFadeDistance: { default: -1, field: 2, scale: 2 }, maxDistance: { default: -1, field: 2, scale: 2 }, minDistanceThreshold: { default: -1, field: 2, scale: 2 }, @@ -2775,11 +2801,6 @@ const ActionData: { unk_ds3_f2_27: { default: 0, field: 1 }, unk_ds3_f2_28: { default: 0, field: 1 }, unk_ds3_f2_29: { default: 0, field: 2 }, - unk_ds3_p2_2: { default: 0 }, - unk_ds3_p2_3: { default: [1, 1, 1, 1] }, - unk_ds3_p2_4: { default: [1, 1, 1, 1] }, - unk_ds3_p2_5: { default: [1, 1, 1, 1] }, - alphaThreshold: { default: 0 }, unk_sdt_f2_30: { default: 0, field: 2 }, unk_sdt_f2_31: { default: 0, field: 1 }, unk_sdt_f2_32: { default: 0, field: 1 }, @@ -2789,26 +2810,24 @@ const ActionData: { unk_sdt_f2_36: { default: -2, field: 1 }, unk_sdt_f2_37: { default: 0, field: 1 }, unk_sdt_f2_38: { default: 0, field: 1 }, - unk_er_f1_3: { default: 1, field: 1 }, - unk_er_f1_4: { default: 1, field: 1 }, unk_er_f2_39: { default: 0, field: 1 }, }, games: { [Game.DarkSouls3]: { fields1: ['texture','blendMode','unk_ds3_f1_2','unk_ds3_f1_3','unk_ds3_f1_4'], - fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29'], + fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','bloom','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29'], properties1: ['size','color1','color2','color3'], properties2: ['rgbMultiplier','alphaMultiplier','unk_ds3_p2_2','unk_ds3_p2_3','unk_ds3_p2_4','unk_ds3_p2_5','alphaThreshold'] }, [Game.Sekiro]: { fields1: ['unk_ds3_f1_2','unk_ds3_f1_3','unk_ds3_f1_4'], - fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','unk_sdt_f2_30','unk_sdt_f2_31','unk_sdt_f2_32','unk_sdt_f2_33','unk_sdt_f2_34','unk_sdt_f2_35','unk_sdt_f2_36','unk_sdt_f2_37','unk_sdt_f2_38'], + fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','bloom','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','unk_sdt_f2_30','unk_sdt_f2_31','unk_sdt_f2_32','unk_sdt_f2_33','unk_sdt_f2_34','unk_sdt_f2_35','unk_sdt_f2_36','unk_sdt_f2_37','unk_sdt_f2_38'], properties1: ['texture','blendMode','size','color1','color2','color3'], properties2: Game.DarkSouls3 }, [Game.EldenRing]: { fields1: ['unk_ds3_f1_2','unk_ds3_f1_3','unk_ds3_f1_4','unk_er_f1_3','unk_er_f1_4'], - fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','unk_sdt_f2_30','unk_sdt_f2_31','unk_sdt_f2_32','unk_sdt_f2_33','unk_sdt_f2_34','unk_sdt_f2_35','unk_sdt_f2_36','unk_sdt_f2_37','unk_sdt_f2_38','unk_er_f2_39'], + fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','bloom','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','unk_sdt_f2_30','unk_sdt_f2_31','unk_sdt_f2_32','unk_sdt_f2_33','unk_sdt_f2_34','unk_sdt_f2_35','unk_sdt_f2_36','unk_sdt_f2_37','unk_sdt_f2_38','unk_er_f2_39'], properties1: Game.Sekiro, properties2: Game.DarkSouls3 }, @@ -2827,20 +2846,27 @@ const ActionData: { color3: { default: [1, 1, 1, 1], color: 1 }, rgbMultiplier: { default: 1 }, alphaMultiplier: { default: 1 }, - bloomColor: { default: [1, 1, 1, 0], field: 5, color: 1 }, + unk_ds3_p2_2: { default: 0 }, + unk_ds3_p2_3: { default: [1, 1, 1, 1] }, + unk_ds3_p2_4: { default: [1, 1, 1, 1] }, + unk_ds3_p2_5: { default: [1, 1, 1, 1] }, + alphaThreshold: { default: 0 }, unk_ds3_f1_1: { default: -1, field: 1 }, + unk_er_f1_1: { default: 1, field: 1 }, + unk_er_f1_2: { default: 1, field: 1 }, unk_ds3_f2_0: { default: 0, field: 1 }, unk_ds3_f2_1: { default: 0, field: 1 }, unk_ds3_f2_2: { default: 8, field: 1 }, unk_ds3_f2_3: { default: 0, field: 1 }, - unk_ds3_f2_4: { default: 1, field: 1 }, + bloom: { default: true, field: 0 }, + bloomColor: { default: [1, 1, 1, 0], field: 5, color: 1 }, unk_ds3_f2_9: { default: 0, field: 2 }, unk_ds3_f2_10: { default: 0, field: 1 }, unk_ds3_f2_11: { default: 0, field: 1 }, unk_ds3_f2_12: { default: 0, field: 1 }, unk_ds3_f2_13: { default: 0, field: 1 }, - minDistance: { default: -1, field: 2, scale: 2 }, minFadeDistance: { default: -1, field: 2, scale: 2 }, + minDistance: { default: -1, field: 2, scale: 2 }, maxFadeDistance: { default: -1, field: 2, scale: 2 }, maxDistance: { default: -1, field: 2, scale: 2 }, minDistanceThreshold: { default: -1, field: 2, scale: 2 }, @@ -2855,11 +2881,6 @@ const ActionData: { unk_ds3_f2_27: { default: 0, field: 1 }, unk_ds3_f2_28: { default: 0, field: 1 }, unk_ds3_f2_29: { default: 0, field: 2 }, - unk_ds3_p2_2: { default: 0 }, - unk_ds3_p2_3: { default: [1, 1, 1, 1] }, - unk_ds3_p2_4: { default: [1, 1, 1, 1] }, - unk_ds3_p2_5: { default: [1, 1, 1, 1] }, - alphaThreshold: { default: 0 }, unk_sdt_f2_30: { default: 0, field: 1 }, unkHideIndoors: { default: 0, field: 1 }, unk_sdt_f2_32: { default: 0, field: 1 }, @@ -2870,19 +2891,17 @@ const ActionData: { unk_sdt_f2_37: { default: 0, field: 1 }, unk_sdt_f2_38: { default: 0, field: 1 }, unk_sdt_f2_39: { default: 0, field: 1 }, - unk_er_f1_1: { default: 1, field: 1 }, - unk_er_f1_2: { default: 1, field: 1 }, }, games: { [Game.DarkSouls3]: { fields1: ['blendMode','unk_ds3_f1_1'], - fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29'], + fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','bloom','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29'], properties1: ['length','color1','color2','startColor','endColor','lengthMultiplier','color3'], properties2: ['rgbMultiplier','alphaMultiplier','unk_ds3_p2_2','unk_ds3_p2_3','unk_ds3_p2_4','unk_ds3_p2_5','alphaThreshold'] }, [Game.Sekiro]: { fields1: ['unk_ds3_f1_1'], - fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','unk_sdt_f2_30','unkHideIndoors','unk_sdt_f2_32','unk_sdt_f2_33','unk_sdt_f2_34','unk_sdt_f2_35','unk_sdt_f2_36','unk_sdt_f2_37','unk_sdt_f2_38','unk_sdt_f2_39'], + fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','bloom','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','unk_sdt_f2_30','unkHideIndoors','unk_sdt_f2_32','unk_sdt_f2_33','unk_sdt_f2_34','unk_sdt_f2_35','unk_sdt_f2_36','unk_sdt_f2_37','unk_sdt_f2_38','unk_sdt_f2_39'], properties1: ['blendMode','length','color1','color2','startColor','endColor','lengthMultiplier','color3'], properties2: Game.DarkSouls3 }, @@ -2909,20 +2928,27 @@ const ActionData: { color3: { default: [1, 1, 1, 1], color: 1 }, rgbMultiplier: { default: 1 }, alphaMultiplier: { default: 1 }, - bloomColor: { default: [1, 1, 1, 0], field: 5, color: 1 }, + unk_ds3_p2_2: { default: 0 }, + unk_ds3_p2_3: { default: [1, 1, 1, 1] }, + unk_ds3_p2_4: { default: [1, 1, 1, 1] }, + unk_ds3_p2_5: { default: [1, 1, 1, 1] }, + alphaThreshold: { default: 0 }, unk_ds3_f1_1: { default: -1, field: 1 }, + unk_er_f1_1: { default: 1, field: 1 }, + unk_er_f1_2: { default: 1, field: 1 }, unk_ds3_f2_0: { default: 0, field: 1 }, unk_ds3_f2_1: { default: 0, field: 1 }, unk_ds3_f2_2: { default: 8, field: 1 }, unk_ds3_f2_3: { default: 0, field: 1 }, - unk_ds3_f2_4: { default: 1, field: 1 }, + bloom: { default: true, field: 0 }, + bloomColor: { default: [1, 1, 1, 0], field: 5, color: 1 }, unk_ds3_f2_9: { default: 0, field: 2 }, unk_ds3_f2_10: { default: 0, field: 1 }, unk_ds3_f2_11: { default: 0, field: 1 }, unk_ds3_f2_12: { default: 0, field: 1 }, unk_ds3_f2_13: { default: 0, field: 1 }, - minDistance: { default: -1, field: 2, scale: 2 }, minFadeDistance: { default: -1, field: 2, scale: 2 }, + minDistance: { default: -1, field: 2, scale: 2 }, maxFadeDistance: { default: -1, field: 2, scale: 2 }, maxDistance: { default: -1, field: 2, scale: 2 }, minDistanceThreshold: { default: -1, field: 2, scale: 2 }, @@ -2937,11 +2963,6 @@ const ActionData: { unk_ds3_f2_27: { default: 0, field: 1 }, unk_ds3_f2_28: { default: 0, field: 1 }, unk_ds3_f2_29: { default: 0, field: 2 }, - unk_ds3_p2_2: { default: 0 }, - unk_ds3_p2_3: { default: [1, 1, 1, 1] }, - unk_ds3_p2_4: { default: [1, 1, 1, 1] }, - unk_ds3_p2_5: { default: [1, 1, 1, 1] }, - alphaThreshold: { default: 0 }, unk_sdt_f2_30: { default: 0, field: 2 }, unk_sdt_f2_31: { default: 0, field: 1 }, unk_sdt_f2_32: { default: 0, field: 1 }, @@ -2952,19 +2973,17 @@ const ActionData: { unk_sdt_f2_37: { default: 0, field: 1 }, unk_sdt_f2_38: { default: 0, field: 1 }, unk_sdt_f2_39: { default: 0, field: 1 }, - unk_er_f1_1: { default: 1, field: 1 }, - unk_er_f1_2: { default: 1, field: 1 }, }, games: { [Game.DarkSouls3]: { fields1: ['blendMode','unk_ds3_f1_1'], - fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29'], + fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','bloom','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29'], properties1: ['width','length','color1','color2','startColor','endColor','widthMultiplier','lengthMultiplier','color3'], properties2: ['rgbMultiplier','alphaMultiplier','unk_ds3_p2_2','unk_ds3_p2_3','unk_ds3_p2_4','unk_ds3_p2_5','alphaThreshold'] }, [Game.Sekiro]: { fields1: ['unk_ds3_f1_1'], - fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','unk_sdt_f2_30','unk_sdt_f2_31','unk_sdt_f2_32','unk_sdt_f2_33','unk_sdt_f2_34','unk_sdt_f2_35','unk_sdt_f2_36','unk_sdt_f2_37','unk_sdt_f2_38','unk_sdt_f2_39'], + fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','bloom','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','unk_sdt_f2_30','unk_sdt_f2_31','unk_sdt_f2_32','unk_sdt_f2_33','unk_sdt_f2_34','unk_sdt_f2_35','unk_sdt_f2_36','unk_sdt_f2_37','unk_sdt_f2_38','unk_sdt_f2_39'], properties1: ['blendMode','width','length','color1','color2','startColor','endColor','widthMultiplier','lengthMultiplier','color3'], properties2: Game.DarkSouls3 }, @@ -2994,49 +3013,54 @@ const ActionData: { rotationY: { default: 0 }, rotationZ: { default: 0 }, angularSpeedX: { default: 0, time: 1 }, - angularSpeedY: { default: 0, time: 1 }, - angularSpeedZ: { default: 0, time: 1 }, angularSpeedMultiplierX: { default: 1 }, + angularSpeedY: { default: 0, time: 1 }, angularSpeedMultiplierY: { default: 1 }, + angularSpeedZ: { default: 0, time: 1 }, angularSpeedMultiplierZ: { default: 1 }, depthOffset: { default: 0, scale: 1 }, frameIndex: { default: 0 }, frameIndexOffset: { default: 0 }, + unk_ds3_p1_21: { default: 0 }, + unk_ds3_p1_22: { default: 0 }, rgbMultiplier: { default: 1 }, alphaMultiplier: { default: 1 }, + unk_ds3_p2_2: { default: 0 }, + unk_ds3_p2_3: { default: [1, 1, 1, 1] }, + unk_ds3_p2_4: { default: [1, 1, 1, 1] }, + unk_ds3_p2_5: { default: [1, 1, 1, 1] }, + alphaThreshold: { default: 0 }, orientation: { default: OrientationMode.CameraPlane, field: 1 }, normalMap: { default: 0, field: 1, resource: 0, textureType: 'n' }, scaleVariationX: { default: 1, field: 2 }, scaleVariationY: { default: 1, field: 2 }, uniformScale: { default: false, field: 0 }, + unk_ds3_f1_7: { default: 0, field: 1 }, columns: { default: 1, field: 1 }, totalFrames: { default: 1, field: 1 }, interpolateFrames: { default: true, field: 0 }, - bloomColor: { default: [1, 1, 1, 0], field: 5, color: 1 }, - shadowDarkness: { default: 0, field: 2 }, - specular: { default: 0, field: 1, resource: 0, textureType: '3m' }, - glossiness: { default: 0.25, field: 2 }, - lighting: { default: LightingMode.Unlit, field: 1 }, - specularity: { default: 0.5, field: 2 }, - unk_ds3_f1_7: { default: 0, field: 1 }, unk_ds3_f1_11: { default: 0, field: 1 }, unk_ds3_f1_12: { default: 0, field: 1 }, unk_ds3_f1_13: { default: -1, field: 2 }, depthBlend: { default: true, field: 0 }, octagonal: { default: false, field: 0 }, unk_ds3_f1_16: { default: 0, field: 1 }, + unk_sdt_f1_15: { default: 1, field: 1 }, + unk_sdt_f1_16: { default: 1, field: 1 }, + unk_sdt_f1_17: { default: 0, field: 1 }, unk_ds3_f2_0: { default: 0, field: 1 }, unk_ds3_f2_1: { default: 0, field: 0 }, unk_ds3_f2_2: { default: 8, field: 1 }, unk_ds3_f2_3: { default: 0, field: 2 }, - unk_ds3_f2_4: { default: 1, field: 1 }, + bloom: { default: true, field: 0 }, + bloomColor: { default: [1, 1, 1, 0], field: 5, color: 1 }, unk_ds3_f2_9: { default: 0, field: 2 }, unk_ds3_f2_10: { default: 0, field: 1 }, unk_ds3_f2_11: { default: 0, field: 1 }, unk_ds3_f2_12: { default: 0, field: 1 }, unk_ds3_f2_13: { default: 0, field: 1 }, - minDistance: { default: -1, field: 2, scale: 2 }, minFadeDistance: { default: -1, field: 2, scale: 2 }, + minDistance: { default: -1, field: 2, scale: 2 }, maxFadeDistance: { default: -1, field: 2, scale: 2 }, maxDistance: { default: -1, field: 2, scale: 2 }, minDistanceThreshold: { default: -1, field: 2, scale: 2 }, @@ -3051,20 +3075,15 @@ const ActionData: { unk_ds3_f2_27: { default: 1, field: 1 }, unk_ds3_f2_28: { default: 0, field: 1 }, unk_ds3_f2_29: { default: 5, field: 2 }, - unk_ds3_p1_21: { default: 0 }, - unk_ds3_p1_22: { default: 0 }, - unk_ds3_p2_2: { default: 0 }, - unk_ds3_p2_3: { default: [1, 1, 1, 1] }, - unk_ds3_p2_4: { default: [1, 1, 1, 1] }, - unk_ds3_p2_5: { default: [1, 1, 1, 1] }, - alphaThreshold: { default: 0 }, - unk_sdt_f1_15: { default: 1, field: 1 }, - unk_sdt_f1_16: { default: 1, field: 1 }, - unk_sdt_f1_17: { default: 0, field: 1 }, + shadowDarkness: { default: 0, field: 2 }, unkHideIndoors: { default: 0, field: 1 }, unk_sdt_f2_32: { default: 1, field: 1 }, + specular: { default: 0, field: 1, resource: 0, textureType: '3m' }, + glossiness: { default: 0.25, field: 2 }, + lighting: { default: LightingMode.Unlit, field: 1 }, unk_sdt_f2_36: { default: -2, field: 1 }, unk_sdt_f2_37: { default: 0, field: 1 }, + specularity: { default: 0.5, field: 2 }, unk_sdt_f2_39: { default: 1, field: 1 }, unk_sdt_f2_40: { default: 0, field: 1 }, unk_sdt_f2_41: { default: 0, field: 1 }, @@ -3076,20 +3095,20 @@ const ActionData: { games: { [Game.DarkSouls3]: { fields1: ['orientation','texture','normalMap','blendMode','scaleVariationX','scaleVariationY','uniformScale','unk_ds3_f1_7','columns','totalFrames','interpolateFrames','unk_ds3_f1_11','unk_ds3_f1_12','unk_ds3_f1_13','depthBlend','octagonal','unk_ds3_f1_16'], - fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29'], + fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','bloom','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29'], properties1: ['offsetX','offsetY','offsetZ','width','height','color1','color2','color3','alphaFadeThreshold','rotationX','rotationY','rotationZ','angularSpeedX','angularSpeedMultiplierX','angularSpeedY','angularSpeedMultiplierY','angularSpeedZ','angularSpeedMultiplierZ','depthOffset','frameIndex','frameIndexOffset','unk_ds3_p1_21','unk_ds3_p1_22'], properties2: ['rgbMultiplier','alphaMultiplier','unk_ds3_p2_2','unk_ds3_p2_3','unk_ds3_p2_4','unk_ds3_p2_5','alphaThreshold'] }, [Game.Sekiro]: { fields1: ['orientation','normalMap','scaleVariationX','scaleVariationY','uniformScale','unk_ds3_f1_7','columns','totalFrames','interpolateFrames','unk_ds3_f1_11','unk_ds3_f1_12','unk_ds3_f1_13','depthBlend','octagonal','unk_ds3_f1_16','unk_sdt_f1_15','unk_sdt_f1_16','unk_sdt_f1_17'], - fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','shadowDarkness','unkHideIndoors','unk_sdt_f2_32','specular','glossiness','lighting','unk_sdt_f2_36','unk_sdt_f2_37','specularity','unk_sdt_f2_39','unk_sdt_f2_40','unk_sdt_f2_41','unk_sdt_f2_42','unk_sdt_f2_43','unk_sdt_f2_44'], + fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','bloom','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','shadowDarkness','unkHideIndoors','unk_sdt_f2_32','specular','glossiness','lighting','unk_sdt_f2_36','unk_sdt_f2_37','specularity','unk_sdt_f2_39','unk_sdt_f2_40','unk_sdt_f2_41','unk_sdt_f2_42','unk_sdt_f2_43','unk_sdt_f2_44'], properties1: ['texture','blendMode','offsetX','offsetY','offsetZ','width','height','color1','color2','color3','alphaFadeThreshold','rotationX','rotationY','rotationZ','angularSpeedX','angularSpeedMultiplierX','angularSpeedY','angularSpeedMultiplierY','angularSpeedZ','angularSpeedMultiplierZ','depthOffset','frameIndex','frameIndexOffset','unk_ds3_p1_21','unk_ds3_p1_22'], properties2: Game.DarkSouls3 }, [Game.EldenRing]: Game.Sekiro, [Game.ArmoredCore6]: { fields1: Game.Sekiro, - fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','shadowDarkness','unkHideIndoors','unk_sdt_f2_32','specular','glossiness','lighting','unk_sdt_f2_36','unk_sdt_f2_37','specularity','unk_sdt_f2_39','unk_sdt_f2_40','unk_sdt_f2_41','unk_sdt_f2_42','unk_sdt_f2_43','unk_sdt_f2_44','unk_ac6_f2_45'], + fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','bloom','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','shadowDarkness','unkHideIndoors','unk_sdt_f2_32','specular','glossiness','lighting','unk_sdt_f2_36','unk_sdt_f2_37','specularity','unk_sdt_f2_39','unk_sdt_f2_40','unk_sdt_f2_41','unk_sdt_f2_42','unk_sdt_f2_43','unk_sdt_f2_44','unk_ac6_f2_45'], properties1: Game.Sekiro, properties2: Game.DarkSouls3 } @@ -3097,22 +3116,6 @@ const ActionData: { }, [ActionType.MultiTextureBillboardEx]: { props: { - orientation: { default: OrientationMode.CameraPlane, field: 1 }, - mask: { default: 1, field: 1, resource: 0, textureType: 'a' }, - layer1: { default: 1, field: 1, resource: 0, textureType: 'a' }, - layer2: { default: 1, field: 1, resource: 0, textureType: 'a' }, - uniformScale: { default: false, field: 0 }, - columns: { default: 1, field: 1 }, - totalFrames: { default: 1, field: 1 }, - interpolateFrames: { default: true, field: 0 }, - depthBlend: { default: true, field: 0 }, - octagonal: { default: false, field: 0 }, - bloomColor: { default: [1, 1, 1, 0], field: 5, color: 1 }, - shadowDarkness: { default: 0, field: 2 }, - specular: { default: 0, field: 1, resource: 0, textureType: '3m' }, - glossiness: { default: 0.25, field: 2 }, - lighting: { default: LightingMode.Unlit, field: 1 }, - unk_sdt_f2_38: { default: 1, field: 1 }, blendMode: { default: BlendMode.Normal, field: 1 }, offsetX: { default: 0, scale: 1 }, offsetY: { default: 0, scale: 1 }, @@ -3123,10 +3126,10 @@ const ActionData: { rotationY: { default: 0 }, rotationZ: { default: 0 }, angularSpeedX: { default: 0, time: 1 }, - angularSpeedY: { default: 0, time: 1 }, - angularSpeedZ: { default: 0, time: 1 }, angularSpeedMultiplierX: { default: 1 }, + angularSpeedY: { default: 0, time: 1 }, angularSpeedMultiplierY: { default: 1 }, + angularSpeedZ: { default: 0, time: 1 }, angularSpeedMultiplierZ: { default: 1 }, color1: { default: [1, 1, 1, 1], color: 1 }, color2: { default: [1, 1, 1, 1], color: 1 }, @@ -3137,6 +3140,12 @@ const ActionData: { alphaFadeThreshold: { default: 0 }, frameIndex: { default: 0 }, frameIndexOffset: { default: 0 }, + unk_ds3_p1_23: { default: 0 }, + unk_ds3_p1_24: { default: 0 }, + unk_ds3_p1_25: { default: 0 }, + unk_ds3_p1_26: { default: 0 }, + unk_ds3_p1_27: { default: 1 }, + unk_ds3_p1_28: { default: 1 }, layer1SpeedU: { default: 0 }, layer1SpeedV: { default: 0 }, layer1OffsetU: { default: 0 }, @@ -3151,22 +3160,41 @@ const ActionData: { layer2ScaleV: { default: 1 }, rgbMultiplier: { default: 1 }, alphaMultiplier: { default: 1 }, + unk_ds3_p2_2: { default: 0 }, + unk_ds3_p2_3: { default: [1, 1, 1, 1] }, + unk_ds3_p2_4: { default: [1, 1, 1, 1] }, + unk_ds3_p2_5: { default: [1, 1, 1, 1] }, + alphaThreshold: { default: 0 }, + orientation: { default: OrientationMode.CameraPlane, field: 1 }, + mask: { default: 1, field: 1, resource: 0, textureType: 'a' }, + layer1: { default: 1, field: 1, resource: 0, textureType: 'a' }, + layer2: { default: 1, field: 1, resource: 0, textureType: 'a' }, + uniformScale: { default: false, field: 0 }, unk_ds3_f1_6: { default: 0, field: 1 }, + columns: { default: 1, field: 1 }, + totalFrames: { default: 1, field: 1 }, + interpolateFrames: { default: true, field: 0 }, unk_ds3_f1_10: { default: -2, field: 1 }, unk_ds3_f1_11: { default: -2, field: 1 }, + depthBlend: { default: true, field: 0 }, + octagonal: { default: false, field: 0 }, unk_ds3_f1_14: { default: 0, field: 1 }, + unk_er_f1_14: { default: 1, field: 1 }, + unk_er_f1_15: { default: 1, field: 1 }, + unk_er_f1_16: { default: 0, field: 1 }, unk_ds3_f2_0: { default: 0, field: 1 }, unk_ds3_f2_1: { default: 0, field: 1 }, unk_ds3_f2_2: { default: 8, field: 1 }, unk_ds3_f2_3: { default: 0, field: 2 }, - unk_ds3_f2_4: { default: 1, field: 1 }, + bloom: { default: true, field: 0 }, + bloomColor: { default: [1, 1, 1, 0], field: 5, color: 1 }, unk_ds3_f2_9: { default: 0, field: 2 }, unk_ds3_f2_10: { default: 0, field: 1 }, unk_ds3_f2_11: { default: 0, field: 1 }, unk_ds3_f2_12: { default: 0, field: 1 }, unk_ds3_f2_13: { default: 0, field: 1 }, - minDistance: { default: -1, field: 2, scale: 2 }, minFadeDistance: { default: -1, field: 2, scale: 2 }, + minDistance: { default: -1, field: 2, scale: 2 }, maxFadeDistance: { default: -1, field: 2, scale: 2 }, maxDistance: { default: -1, field: 2, scale: 2 }, minDistanceThreshold: { default: -1, field: 2, scale: 2 }, @@ -3181,27 +3209,18 @@ const ActionData: { unk_ds3_f2_27: { default: 1, field: 1 }, unk_ds3_f2_28: { default: 0, field: 1 }, unk_ds3_f2_29: { default: 5, field: 2 }, - unk_ds3_p1_23: { default: 0 }, - unk_ds3_p1_24: { default: 0 }, - unk_ds3_p1_25: { default: 0 }, - unk_ds3_p1_26: { default: 0 }, - unk_ds3_p1_27: { default: 1 }, - unk_ds3_p1_28: { default: 1 }, - unk_ds3_p2_2: { default: 0 }, - unk_ds3_p2_3: { default: [1, 1, 1, 1] }, - unk_ds3_p2_4: { default: [1, 1, 1, 1] }, - unk_ds3_p2_5: { default: [1, 1, 1, 1] }, - alphaThreshold: { default: 0 }, + shadowDarkness: { default: 0, field: 2 }, unk_sdt_f2_31: { default: 0, field: 1 }, unk_sdt_f2_32: { default: 1, field: 1 }, + specular: { default: 0, field: 1, resource: 0, textureType: '3m' }, + glossiness: { default: 0.25, field: 2 }, + lighting: { default: LightingMode.Unlit, field: 1 }, unk_sdt_f2_36: { default: -2, field: 1 }, unk_sdt_f2_37: { default: 0, field: 1 }, + unk_sdt_f2_38: { default: 1, field: 1 }, unk_sdt_f2_39: { default: 1, field: 1 }, unk_sdt_f2_40: { default: 0, field: 1 }, unk_sdt_f2_41: { default: 0, field: 1 }, - unk_er_f1_14: { default: 1, field: 1 }, - unk_er_f1_15: { default: 1, field: 1 }, - unk_er_f1_16: { default: 0, field: 1 }, unk_er_f2_42: { default: 0, field: 1 }, unk_er_f2_43: { default: 0, field: 1 }, unk_er_f2_44: { default: 0, field: 2 }, @@ -3211,25 +3230,25 @@ const ActionData: { games: { [Game.DarkSouls3]: { fields1: ['orientation','mask','layer1','layer2','blendMode','uniformScale','unk_ds3_f1_6','columns','totalFrames','interpolateFrames','unk_ds3_f1_10','unk_ds3_f1_11','depthBlend','octagonal','unk_ds3_f1_14'], - fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29'], + fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','bloom','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29'], properties1: ['offsetX','offsetY','offsetZ','width','height','rotationX','rotationY','rotationZ','angularSpeedX','angularSpeedMultiplierX','angularSpeedY','angularSpeedMultiplierY','angularSpeedZ','angularSpeedMultiplierZ','color1','color2','color3','layersColor','layer1Color','layer2Color','alphaFadeThreshold','frameIndex','frameIndexOffset','unk_ds3_p1_23','unk_ds3_p1_24','unk_ds3_p1_25','unk_ds3_p1_26','unk_ds3_p1_27','unk_ds3_p1_28','layer1SpeedU','layer1SpeedV','layer1OffsetU','layer1OffsetV','layer1ScaleU','layer1ScaleV','layer2SpeedU','layer2SpeedV','layer2OffsetU','layer2OffsetV','layer2ScaleU','layer2ScaleV'], properties2: ['rgbMultiplier','alphaMultiplier','unk_ds3_p2_2','unk_ds3_p2_3','unk_ds3_p2_4','unk_ds3_p2_5','alphaThreshold'] }, [Game.Sekiro]: { fields1: ['orientation','mask','layer1','layer2','uniformScale','unk_ds3_f1_6','columns','totalFrames','interpolateFrames','unk_ds3_f1_10','unk_ds3_f1_11','depthBlend','octagonal','unk_ds3_f1_14'], - fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','shadowDarkness','unk_sdt_f2_31','unk_sdt_f2_32','specular','glossiness','lighting','unk_sdt_f2_36','unk_sdt_f2_37','unk_sdt_f2_38','unk_sdt_f2_39','unk_sdt_f2_40','unk_sdt_f2_41'], + fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','bloom','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','shadowDarkness','unk_sdt_f2_31','unk_sdt_f2_32','specular','glossiness','lighting','unk_sdt_f2_36','unk_sdt_f2_37','unk_sdt_f2_38','unk_sdt_f2_39','unk_sdt_f2_40','unk_sdt_f2_41'], properties1: ['blendMode','offsetX','offsetY','offsetZ','width','height','rotationX','rotationY','rotationZ','angularSpeedX','angularSpeedMultiplierX','angularSpeedY','angularSpeedMultiplierY','angularSpeedZ','angularSpeedMultiplierZ','color1','color2','color3','layersColor','layer1Color','layer2Color','alphaFadeThreshold','frameIndex','frameIndexOffset','unk_ds3_p1_23','unk_ds3_p1_24','unk_ds3_p1_25','unk_ds3_p1_26','unk_ds3_p1_27','unk_ds3_p1_28','layer1SpeedU','layer1SpeedV','layer1OffsetU','layer1OffsetV','layer1ScaleU','layer1ScaleV','layer2SpeedU','layer2SpeedV','layer2OffsetU','layer2OffsetV','layer2ScaleU','layer2ScaleV'], properties2: Game.DarkSouls3 }, [Game.EldenRing]: { fields1: ['orientation','mask','layer1','layer2','uniformScale','unk_ds3_f1_6','columns','totalFrames','interpolateFrames','unk_ds3_f1_10','unk_ds3_f1_11','depthBlend','octagonal','unk_ds3_f1_14','unk_er_f1_14','unk_er_f1_15','unk_er_f1_16'], - fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','shadowDarkness','unk_sdt_f2_31','unk_sdt_f2_32','specular','glossiness','lighting','unk_sdt_f2_36','unk_sdt_f2_37','unk_sdt_f2_38','unk_sdt_f2_39','unk_sdt_f2_40','unk_sdt_f2_41','unk_er_f2_42','unk_er_f2_43','unk_er_f2_44','unk_er_f2_45'], + fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','bloom','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','shadowDarkness','unk_sdt_f2_31','unk_sdt_f2_32','specular','glossiness','lighting','unk_sdt_f2_36','unk_sdt_f2_37','unk_sdt_f2_38','unk_sdt_f2_39','unk_sdt_f2_40','unk_sdt_f2_41','unk_er_f2_42','unk_er_f2_43','unk_er_f2_44','unk_er_f2_45'], properties1: Game.Sekiro, properties2: Game.DarkSouls3 }, [Game.ArmoredCore6]: { fields1: Game.EldenRing, - fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','shadowDarkness','unk_sdt_f2_31','unk_sdt_f2_32','specular','glossiness','lighting','unk_sdt_f2_36','unk_sdt_f2_37','unk_sdt_f2_38','unk_sdt_f2_39','unk_sdt_f2_40','unk_sdt_f2_41','unk_er_f2_42','unk_er_f2_43','unk_er_f2_44','unk_er_f2_45','unk_ac6_f2_46'], + fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','bloom','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','shadowDarkness','unk_sdt_f2_31','unk_sdt_f2_32','specular','glossiness','lighting','unk_sdt_f2_36','unk_sdt_f2_37','unk_sdt_f2_38','unk_sdt_f2_39','unk_sdt_f2_40','unk_sdt_f2_41','unk_er_f2_42','unk_er_f2_43','unk_er_f2_44','unk_er_f2_45','unk_ac6_f2_46'], properties1: Game.Sekiro, properties2: Game.DarkSouls3 } @@ -3237,14 +3256,6 @@ const ActionData: { }, [ActionType.Model]: { props: { - orientation: { default: ModelOrientationMode.ParticleDirection, field: 1 }, - scaleVariationX: { default: 1, field: 2 }, - scaleVariationY: { default: 1, field: 2 }, - scaleVariationZ: { default: 1, field: 2 }, - uniformScale: { default: false, field: 0 }, - columns: { default: 1, field: 1 }, - totalFrames: { default: 1, field: 1 }, - bloomColor: { default: [1, 1, 1, 0], field: 5, color: 1 }, model: { default: 80201, field: 1, resource: 1 }, sizeX: { default: 1, scale: 1 }, sizeY: { default: 1, scale: 1 }, @@ -3253,15 +3264,16 @@ const ActionData: { rotationY: { default: 0 }, rotationZ: { default: 0 }, angularSpeedX: { default: 0, time: 1 }, - angularSpeedY: { default: 0, time: 1 }, - angularSpeedZ: { default: 0, time: 1 }, angularSpeedMultiplierX: { default: 1 }, + angularSpeedY: { default: 0, time: 1 }, angularSpeedMultiplierY: { default: 1 }, + angularSpeedZ: { default: 0, time: 1 }, angularSpeedMultiplierZ: { default: 1 }, blendMode: { default: BlendMode.Normal, field: 1 }, color1: { default: [1, 1, 1, 1], color: 1 }, color2: { default: [1, 1, 1, 1], color: 1 }, color3: { default: [1, 1, 1, 1], color: 1 }, + unk_ds3_p1_15: { default: 0 }, frameIndex: { default: 0 }, frameIndexOffset: { default: 0 }, offsetU: { default: 0 }, @@ -3270,8 +3282,22 @@ const ActionData: { speedMultiplierU: { default: 0 }, speedV: { default: 0, time: 1 }, speedMultiplierV: { default: 0 }, + unk_ds3_p1_24: { default: 0 }, rgbMultiplier: { default: 1 }, alphaMultiplier: { default: 1 }, + unk_ds3_p2_2: { default: 0 }, + unk_ds3_p2_3: { default: [1, 1, 1, 1] }, + unk_ds3_p2_4: { default: [1, 1, 1, 1] }, + unk_ds3_p2_5: { default: [1, 1, 1, 1] }, + unk_ds3_p2_6: { default: 0 }, + unk_ds3_p2_7: { default: 0 }, + orientation: { default: ModelOrientationMode.ParticleDirection, field: 1 }, + scaleVariationX: { default: 1, field: 2 }, + scaleVariationY: { default: 1, field: 2 }, + scaleVariationZ: { default: 1, field: 2 }, + uniformScale: { default: false, field: 0 }, + columns: { default: 1, field: 1 }, + totalFrames: { default: 1, field: 1 }, unk_ds3_f1_9: { default: -2, field: 1 }, unk_ds3_f1_10: { default: -2, field: 1 }, unk_ds3_f1_11: { default: true, field: 0 }, @@ -3282,18 +3308,22 @@ const ActionData: { loopAnimation: { default: true, field: 0 }, animationSpeed: { default: 1, field: 2, time: 1 }, unk_ds3_f1_18: { default: 0, field: 1 }, + unk_er_f1_17: { default: 1, field: 1 }, + unk_er_f1_18: { default: 1, field: 1 }, + unk_er_f1_19: { default: 0, field: 1 }, unk_ds3_f2_0: { default: 0, field: 1 }, unk_ds3_f2_1: { default: 0, field: 1 }, unk_ds3_f2_2: { default: 8, field: 1 }, unk_ds3_f2_3: { default: 0, field: 1 }, unk_ds3_f2_4: { default: 1, field: 1 }, + bloomColor: { default: [1, 1, 1, 0], field: 5, color: 1 }, unk_ds3_f2_9: { default: 0, field: 2 }, unk_ds3_f2_10: { default: 0, field: 1 }, unk_ds3_f2_11: { default: 0, field: 1 }, unk_ds3_f2_12: { default: 0, field: 1 }, unk_ds3_f2_13: { default: 0, field: 1 }, - minDistance: { default: -1, field: 2, scale: 2 }, minFadeDistance: { default: -1, field: 2, scale: 2 }, + minDistance: { default: -1, field: 2, scale: 2 }, maxFadeDistance: { default: -1, field: 2, scale: 2 }, maxDistance: { default: -1, field: 2, scale: 2 }, minDistanceThreshold: { default: -1, field: 2, scale: 2 }, @@ -3307,15 +3337,6 @@ const ActionData: { unkDepthBlend2: { default: 0, field: 2, scale: 1 }, unk_ds3_f2_26: { default: 1, field: 1 }, unk_ds3_f2_27: { default: 0, field: 1 }, - unk_ds3_f2_28: { default: 0, field: 2 }, - unk_ds3_p1_15: { default: 0 }, - unk_ds3_p1_24: { default: 0 }, - unk_ds3_p2_2: { default: 0 }, - unk_ds3_p2_3: { default: [1, 1, 1, 1] }, - unk_ds3_p2_4: { default: [1, 1, 1, 1] }, - unk_ds3_p2_5: { default: [1, 1, 1, 1] }, - unk_ds3_p2_6: { default: 0 }, - unk_ds3_p2_7: { default: 0 }, unk_sdt_f2_29: { default: 0, field: 2 }, unk_sdt_f2_30: { default: 0, field: 2 }, unk_sdt_f2_31: { default: 0, field: 1 }, @@ -3325,10 +3346,8 @@ const ActionData: { unk_sdt_f2_35: { default: -2, field: 1 }, unk_sdt_f2_36: { default: -2, field: 1 }, unk_sdt_f2_37: { default: 0, field: 1 }, - unk_er_f1_17: { default: 1, field: 1 }, - unk_er_f1_18: { default: 1, field: 1 }, - unk_er_f1_19: { default: 0, field: 1 }, unk_ac6_f2_38: { default: 0, field: 1 }, + unk_ds3_f2_28: { default: 0, field: 2 }, }, games: { [Game.DarkSouls3]: { @@ -3359,24 +3378,12 @@ const ActionData: { }, [ActionType.Tracer]: { props: { - orientation: { default: TracerOrientationMode.LocalZ, field: 1 }, - normalMap: { default: 0, field: 1, resource: 0, textureType: 'n' }, - segmentInterval: { default: 0, field: 2, time: 2 }, - segmentDuration: { default: 1, field: 2, time: 2 }, - concurrentSegments: { default: 100, field: 1 }, - columns: { default: 1, field: 1 }, - totalFrames: { default: 1, field: 1 }, - attachedUV: { default: true, field: 0 }, - bloomColor: { default: [1, 1, 1, 0], field: 5, color: 1 }, - shadowDarkness: { default: 0, field: 2 }, - specular: { default: 0, field: 1, resource: 0, textureType: '3m' }, - glossiness: { default: 0.25, field: 2 }, - lighting: { default: LightingMode.Unlit, field: 1 }, - specularity: { default: 0.5, field: 2 }, texture: { default: 1, field: 1, resource: 0, textureType: 'a' }, blendMode: { default: BlendMode.Normal, field: 1 }, width: { default: 1, scale: 1 }, widthMultiplier: { default: 1 }, + unk_ds3_p1_2: { default: 0 }, + unk_ds3_p1_3: { default: 0 }, color1: { default: [1, 1, 1, 1], color: 1 }, color2: { default: [1, 1, 1, 1], color: 1 }, color3: { default: [1, 1, 1, 1], color: 1 }, @@ -3386,26 +3393,44 @@ const ActionData: { textureFraction: { default: 0.1 }, speedU: { default: 0, time: 1 }, varianceV: { default: 0 }, + unk_ds3_p1_13: { default: -1 }, rgbMultiplier: { default: 1 }, alphaMultiplier: { default: 1 }, + distortionIntensity: { default: 0 }, + unk_ds3_p2_3: { default: [1, 1, 1, 1] }, + unk_ds3_p2_4: { default: [1, 1, 1, 1] }, + unk_ds3_p2_5: { default: [1, 1, 1, 1] }, + alphaThreshold: { default: 0 }, + orientation: { default: TracerOrientationMode.LocalZ, field: 1 }, + normalMap: { default: 0, field: 1, resource: 0, textureType: 'n' }, + segmentInterval: { default: 0, field: 2, time: 2 }, + segmentDuration: { default: 1, field: 2, time: 2 }, + concurrentSegments: { default: 100, field: 1 }, unk_ds3_f1_7: { default: 0, field: 1 }, unk_ds3_f1_8: { default: 0, field: 2 }, unk_ds3_f1_9: { default: 0, field: 2 }, + columns: { default: 1, field: 1 }, + totalFrames: { default: 1, field: 1 }, + attachedUV: { default: true, field: 0 }, unk_ds3_f1_13: { default: -1, field: 1 }, unk_ds3_f1_14: { default: -1, field: 1 }, unk_ds3_f1_15: { default: 0, field: 1 }, + unk_er_f1_14: { default: 1, field: 1 }, + unk_er_f1_15: { default: 1, field: 1 }, + unk_er_f1_16: { default: 0, field: 1 }, unk_ds3_f2_0: { default: 0, field: 1 }, unk_ds3_f2_1: { default: 0, field: 0 }, unk_ds3_f2_2: { default: 8, field: 1 }, unk_ds3_f2_3: { default: 0, field: 1 }, - unk_ds3_f2_4: { default: 1, field: 1 }, + bloom: { default: true, field: 0 }, + bloomColor: { default: [1, 1, 1, 0], field: 5, color: 1 }, unk_ds3_f2_9: { default: 0, field: 2 }, unk_ds3_f2_10: { default: 0, field: 1 }, unk_ds3_f2_11: { default: 0, field: 1 }, unk_ds3_f2_12: { default: 0, field: 1 }, unk_ds3_f2_13: { default: 0, field: 1 }, - minDistance: { default: -1, field: 2, scale: 2 }, minFadeDistance: { default: -1, field: 2, scale: 2 }, + minDistance: { default: -1, field: 2, scale: 2 }, maxFadeDistance: { default: -1, field: 2, scale: 2 }, maxDistance: { default: -1, field: 2, scale: 2 }, minDistanceThreshold: { default: -1, field: 2, scale: 2 }, @@ -3420,39 +3445,33 @@ const ActionData: { unk_ds3_f2_27: { default: 1, field: 1 }, unk_ds3_f2_28: { default: 0, field: 1 }, unk_ds3_f2_29: { default: 5, field: 2 }, - unk_ds3_p1_2: { default: 0 }, - unk_ds3_p1_3: { default: 0 }, - unk_ds3_p1_13: { default: -1 }, - distortionIntensity: { default: 0 }, - unk_ds3_p2_3: { default: [1, 1, 1, 1] }, - unk_ds3_p2_4: { default: [1, 1, 1, 1] }, - unk_ds3_p2_5: { default: [1, 1, 1, 1] }, - alphaThreshold: { default: 0 }, + shadowDarkness: { default: 0, field: 2 }, unk_sdt_f2_31: { default: 0, field: 1 }, unk_sdt_f2_32: { default: 1, field: 1 }, + specular: { default: 0, field: 1, resource: 0, textureType: '3m' }, + glossiness: { default: 0.25, field: 2 }, + lighting: { default: LightingMode.Unlit, field: 1 }, unk_sdt_f2_36: { default: -2, field: 1 }, unk_sdt_f2_37: { default: 0, field: 1 }, - unk_er_f1_14: { default: 1, field: 1 }, - unk_er_f1_15: { default: 1, field: 1 }, - unk_er_f1_16: { default: 0, field: 1 }, + specularity: { default: 0.5, field: 2 }, unk_er_f2_39: { default: 0, field: 1 }, }, games: { [Game.DarkSouls3]: { fields1: ['orientation','texture','normalMap','blendMode','segmentInterval','segmentDuration','concurrentSegments','unk_ds3_f1_7','unk_ds3_f1_8','unk_ds3_f1_9','columns','totalFrames','attachedUV','unk_ds3_f1_13','unk_ds3_f1_14','unk_ds3_f1_15'], - fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29'], + fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','bloom','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29'], properties1: ['width','widthMultiplier','unk_ds3_p1_2','unk_ds3_p1_3','color1','color2','color3','alphaFadeThreshold','frameIndex','frameIndexOffset','textureFraction','speedU','varianceV','unk_ds3_p1_13'], properties2: ['rgbMultiplier','alphaMultiplier','distortionIntensity','unk_ds3_p2_3','unk_ds3_p2_4','unk_ds3_p2_5','alphaThreshold'] }, [Game.Sekiro]: { fields1: ['orientation','normalMap','segmentInterval','segmentDuration','concurrentSegments','unk_ds3_f1_7','unk_ds3_f1_8','unk_ds3_f1_9','columns','totalFrames','attachedUV','unk_ds3_f1_13','unk_ds3_f1_14','unk_ds3_f1_15'], - fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','shadowDarkness','unk_sdt_f2_31','unk_sdt_f2_32','specular','glossiness','lighting','unk_sdt_f2_36','unk_sdt_f2_37','specularity'], + fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','bloom','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','shadowDarkness','unk_sdt_f2_31','unk_sdt_f2_32','specular','glossiness','lighting','unk_sdt_f2_36','unk_sdt_f2_37','specularity'], properties1: ['texture','blendMode','width','widthMultiplier','unk_ds3_p1_2','unk_ds3_p1_3','color1','color2','color3','alphaFadeThreshold','frameIndex','frameIndexOffset','textureFraction','speedU','varianceV','unk_ds3_p1_13'], properties2: Game.DarkSouls3 }, [Game.EldenRing]: { fields1: ['orientation','normalMap','segmentInterval','segmentDuration','concurrentSegments','unk_ds3_f1_7','unk_ds3_f1_8','unk_ds3_f1_9','columns','totalFrames','attachedUV','unk_ds3_f1_13','unk_ds3_f1_14','unk_ds3_f1_15','unk_er_f1_14','unk_er_f1_15','unk_er_f1_16'], - fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','shadowDarkness','unk_sdt_f2_31','unk_sdt_f2_32','specular','glossiness','lighting','unk_sdt_f2_36','unk_sdt_f2_37','specularity','unk_er_f2_39'], + fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','bloom','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','shadowDarkness','unk_sdt_f2_31','unk_sdt_f2_32','specular','glossiness','lighting','unk_sdt_f2_36','unk_sdt_f2_37','specularity','unk_er_f2_39'], properties1: Game.Sekiro, properties2: Game.DarkSouls3 }, @@ -3461,17 +3480,6 @@ const ActionData: { }, [ActionType.Distortion]: { props: { - mode: { default: DistortionMode.NormalMap, field: 1 }, - shape: { default: DistortionShape.Rectangle, field: 1 }, - orientation: { default: OrientationMode.CameraPlane, field: 1 }, - texture: { default: 0, field: 1, resource: 0, textureType: 'a' }, - normalMap: { default: 0, field: 1, resource: 0, textureType: 'n' }, - mask: { default: 0, field: 1, resource: 0, textureType: 'a' }, - scaleVariationX: { default: 1, field: 2 }, - scaleVariationY: { default: 1, field: 2 }, - scaleVariationZ: { default: 1, field: 2 }, - uniformScale: { default: false, field: 0 }, - bloomColor: { default: [1, 1, 1, 0], field: 5, color: 1 }, blendMode: { default: BlendMode.Normal, field: 1 }, offsetX: { default: 0, scale: 1 }, offsetY: { default: 0, scale: 1 }, @@ -3480,7 +3488,9 @@ const ActionData: { sizeY: { default: 1, scale: 1 }, sizeZ: { default: 1, scale: 1 }, color: { default: [1, 1, 1, 1], color: 1 }, + unk_ds3_p1_7: { default: [1, 1, 1, 1] }, intensity: { default: 1 }, + unk_ds3_p1_9: { default: 0 }, stirSpeed: { default: 60, time: 1 }, radius: { default: 1 }, normalMapOffsetU: { default: 0 }, @@ -3489,20 +3499,40 @@ const ActionData: { normalMapSpeedV: { default: 0, time: 1 }, rgbMultiplier: { default: 1 }, alphaMultiplier: { default: 1 }, + unk_ds3_p2_2: { default: 0 }, + unk_ds3_p2_3: { default: [1, 1, 1, 1] }, + unk_ds3_p2_4: { default: [1, 1, 1, 1] }, + unk_ds3_p2_5: { default: [1, 1, 1, 1] }, + alphaThreshold: { default: 0 }, + unk_er_p2_7: { default: 1 }, + unk_er_p2_8: { default: 1 }, + mode: { default: DistortionMode.NormalMap, field: 1 }, + shape: { default: DistortionShape.Rectangle, field: 1 }, + orientation: { default: OrientationMode.CameraPlane, field: 1 }, + texture: { default: 0, field: 1, resource: 0, textureType: 'a' }, + normalMap: { default: 0, field: 1, resource: 0, textureType: 'n' }, + mask: { default: 0, field: 1, resource: 0, textureType: 'a' }, + scaleVariationX: { default: 1, field: 2 }, + scaleVariationY: { default: 1, field: 2 }, + scaleVariationZ: { default: 1, field: 2 }, + uniformScale: { default: false, field: 0 }, unk_ds3_f1_11: { default: -2, field: 1 }, unk_ds3_f1_12: { default: 0, field: 1 }, + unk_er_f1_12: { default: 1, field: 1 }, + unk_er_f1_13: { default: 1, field: 1 }, unk_ds3_f2_0: { default: 0, field: 1 }, unk_ds3_f2_1: { default: 0, field: 1 }, unk_ds3_f2_2: { default: 8, field: 1 }, unk_ds3_f2_3: { default: 1, field: 2 }, unk_ds3_f2_4: { default: 0, field: 1 }, + bloomColor: { default: [1, 1, 1, 0], field: 5, color: 1 }, unk_ds3_f2_9: { default: 0, field: 1 }, unk_ds3_f2_10: { default: 0, field: 1 }, unk_ds3_f2_11: { default: 0, field: 1 }, unk_ds3_f2_12: { default: 0, field: 1 }, unk_ds3_f2_13: { default: 0, field: 1 }, - minDistance: { default: -1, field: 2, scale: 2 }, minFadeDistance: { default: -1, field: 2, scale: 2 }, + minDistance: { default: -1, field: 2, scale: 2 }, maxFadeDistance: { default: -1, field: 2, scale: 2 }, maxDistance: { default: -1, field: 2, scale: 2 }, minDistanceThreshold: { default: -1, field: 2, scale: 2 }, @@ -3517,13 +3547,6 @@ const ActionData: { unk_ds3_f2_27: { default: 1, field: 1 }, unk_ds3_f2_28: { default: 0, field: 1 }, unk_ds3_f2_29: { default: 0, field: 1 }, - unk_ds3_p1_7: { default: [1, 1, 1, 1] }, - unk_ds3_p1_9: { default: 0 }, - unk_ds3_p2_2: { default: 0 }, - unk_ds3_p2_3: { default: [1, 1, 1, 1] }, - unk_ds3_p2_4: { default: [1, 1, 1, 1] }, - unk_ds3_p2_5: { default: [1, 1, 1, 1] }, - alphaThreshold: { default: 0 }, unk_sdt_f2_30: { default: 0, field: 2 }, unk_sdt_f2_31: { default: 0, field: 1 }, unk_sdt_f2_32: { default: 0, field: 1 }, @@ -3533,10 +3556,6 @@ const ActionData: { unk_sdt_f2_36: { default: -2, field: 1 }, unk_sdt_f2_37: { default: 0, field: 1 }, unk_sdt_f2_38: { default: 0, field: 2 }, - unk_er_f1_12: { default: 1, field: 1 }, - unk_er_f1_13: { default: 1, field: 1 }, - unk_er_p2_7: { default: 1 }, - unk_er_p2_8: { default: 1 }, }, games: { [Game.DarkSouls3]: { @@ -3562,9 +3581,6 @@ const ActionData: { }, [ActionType.RadialBlur]: { props: { - uniformScale: { default: false, field: 0 }, - iterations: { default: 1, field: 1 }, - bloomColor: { default: [1, 1, 1, 0], field: 5, color: 1 }, blendMode: { default: BlendMode.Normal, field: 1 }, mask: { default: 1, field: 1, resource: 0, textureType: 'a' }, offsetX: { default: 0, scale: 1 }, @@ -3573,22 +3589,33 @@ const ActionData: { width: { default: 1, scale: 1 }, height: { default: 1, scale: 1 }, color: { default: [1, 1, 1, 1], color: 1 }, + unk_ds3_p1_6: { default: [1, 1, 1, 1] }, blurRadius: { default: 0.5 }, rgbMultiplier: { default: 1 }, alphaMultiplier: { default: 1 }, + unk_ds3_p2_2: { default: 0 }, + unk_ds3_p2_3: { default: [1, 1, 1, 1] }, + unk_ds3_p2_4: { default: [1, 1, 1, 1] }, + unk_ds3_p2_5: { default: [1, 1, 1, 1] }, + alphaThreshold: { default: 0 }, + uniformScale: { default: false, field: 0 }, + iterations: { default: 1, field: 1 }, unk_ds3_f1_4: { default: 0, field: 1 }, + unk_er_f1_3: { default: 1, field: 1 }, + unk_er_f1_4: { default: 1, field: 1 }, unk_ds3_f2_0: { default: 0, field: 1 }, unk_ds3_f2_1: { default: 0, field: 1 }, unk_ds3_f2_2: { default: 8, field: 1 }, unk_ds3_f2_3: { default: 1, field: 2 }, unk_ds3_f2_4: { default: 0, field: 1 }, + bloomColor: { default: [1, 1, 1, 0], field: 5, color: 1 }, unk_ds3_f2_9: { default: 0, field: 1 }, unk_ds3_f2_10: { default: 0, field: 1 }, unk_ds3_f2_11: { default: 0, field: 1 }, unk_ds3_f2_12: { default: 0, field: 1 }, unk_ds3_f2_13: { default: 0, field: 1 }, - minDistance: { default: -1, field: 2, scale: 2 }, minFadeDistance: { default: -1, field: 2, scale: 2 }, + minDistance: { default: -1, field: 2, scale: 2 }, maxFadeDistance: { default: -1, field: 2, scale: 2 }, maxDistance: { default: -1, field: 2, scale: 2 }, minDistanceThreshold: { default: -1, field: 2, scale: 2 }, @@ -3603,15 +3630,7 @@ const ActionData: { unk_ds3_f2_27: { default: 1, field: 1 }, unk_ds3_f2_28: { default: 0, field: 1 }, unk_ds3_f2_29: { default: 0, field: 2 }, - unk_ds3_p1_6: { default: [1, 1, 1, 1] }, - unk_ds3_p2_2: { default: 0 }, - unk_ds3_p2_3: { default: [1, 1, 1, 1] }, - unk_ds3_p2_4: { default: [1, 1, 1, 1] }, - unk_ds3_p2_5: { default: [1, 1, 1, 1] }, - alphaThreshold: { default: 0 }, unk_sdt_f2_30: { default: 0, field: 2 }, - unk_er_f1_3: { default: 1, field: 1 }, - unk_er_f1_4: { default: 1, field: 1 }, }, games: { [Game.DarkSouls3]: { @@ -3640,10 +3659,24 @@ const ActionData: { diffuseColor: { default: [1, 1, 1, 1], color: 1 }, specularColor: { default: [1, 1, 1, 1], color: 1 }, radius: { default: 10, scale: 1 }, + unk_ds3_p1_3: { default: 0 }, + unk_ds3_p1_4: { default: 0 }, + unk_ds3_p1_5: { default: 0 }, + unk_ds3_p1_6: { default: 0 }, + unk_ds3_p1_7: { default: 10 }, + unk_ds3_p1_8: { default: 10 }, + unk_ds3_p1_9: { default: 10 }, + unk_ds3_p2_0: { default: 1 }, + unk_ds3_p2_1: { default: 1 }, + unk_sdt_p2_2: { default: 1 }, diffuseMultiplier: { default: 1 }, specularMultiplier: { default: 1 }, + unk_ds3_f1_0: { default: 0, field: 1 }, + unk_ds3_f1_1: { default: 0, field: 2 }, + unk_ds3_f2_0: { default: 0, field: 1 }, jitterAndFlicker: { default: false, field: 0 }, jitterAcceleration: { default: 1, field: 2, scale: 1, time: 4 }, + unk_ds3_f2_3: { default: 0, field: 2 }, jitterX: { default: 0, field: 2, scale: 1 }, jitterY: { default: 0, field: 2, scale: 1 }, jitterZ: { default: 0, field: 2, scale: 1 }, @@ -3654,15 +3687,6 @@ const ActionData: { separateSpecular: { default: false, field: 0 }, fadeOutTime: { default: 0, field: 1, time: 2 }, shadowDarkness: { default: 1, field: 2 }, - volumeDensity: { default: 0, field: 2 }, - phaseFunction: { default: true, field: 0 }, - asymmetryParam: { default: 0.75, field: 2 }, - falloffExponent: { default: 1, field: 2 }, - unk_ds3_f1_0: { default: 0, field: 1 }, - unk_ds3_f1_1: { default: 0, field: 2 }, - unk_ds3_f2_0: { default: 0, field: 1 }, - unk_ds3_f2_3: { default: 0, field: 2 }, - unk_ds3_f2_12: { default: 1, field: 2 }, unk_ds3_f2_15: { default: 0, field: 1 }, unk_ds3_f2_16: { default: 2, field: 1 }, unk_ds3_f2_17: { default: 1, field: 1 }, @@ -3673,21 +3697,16 @@ const ActionData: { unk_ds3_f2_22: { default: 100, field: 1 }, unk_ds3_f2_23: { default: 0, field: 1 }, unk_ds3_f2_24: { default: 0, field: 2 }, - unk_ds3_p1_3: { default: 0 }, - unk_ds3_p1_4: { default: 0 }, - unk_ds3_p1_5: { default: 0 }, - unk_ds3_p1_6: { default: 0 }, - unk_ds3_p1_7: { default: 10 }, - unk_ds3_p1_8: { default: 10 }, - unk_ds3_p1_9: { default: 10 }, - unk_ds3_p2_0: { default: 1 }, - unk_ds3_p2_1: { default: 1 }, + volumeDensity: { default: 0, field: 2 }, unk_sdt_f2_25: { default: 0, field: 2 }, - unk_sdt_p2_2: { default: 1 }, + phaseFunction: { default: true, field: 0 }, + asymmetryParam: { default: 0.75, field: 2 }, + falloffExponent: { default: 1, field: 2 }, unk_er_f2_29: { default: 1, field: 1 }, unk_er_f2_30: { default: 1, field: 2 }, unk_er_f2_31: { default: 1, field: 1 }, unk_er_f2_32: { default: 0, field: 1 }, + unk_ds3_f2_12: { default: 1, field: 2 }, }, games: { [Game.DarkSouls3]: { @@ -3800,6 +3819,34 @@ const ActionData: { }, [ActionType.GPUStandardParticle]: { props: { + particleFollowFactor: { default: 0 }, + unk_ds3_p1_1: { default: 0 }, + unk_ds3_p1_2: { default: 0 }, + unk_ds3_p1_3: { default: 0 }, + particleAccelerationX: { default: 0, scale: 1, time: 4 }, + particleAccelerationY: { default: 0, scale: 1, time: 4 }, + particleAccelerationZ: { default: 0, scale: 1, time: 4 }, + unk_ds3_p1_7: { default: 0 }, + unk_ds3_p1_8: { default: 0 }, + particleAngularAccelerationZ: { default: 0, time: 4 }, + particleGrowthRateX: { default: 0, scale: 1, time: 1 }, + particleGrowthRateY: { default: 0, scale: 1, time: 1 }, + unk_ds3_p1_12: { default: 0 }, + color: { default: [1, 1, 1, 1], color: 1 }, + unk_ds3_p1_14: { default: 1 }, + unk_ds3_p1_15: { default: 0 }, + unkParticleAcceleration: { default: 0, scale: 1, time: 4 }, + unk_ds3_p1_17: { default: 0 }, + particleGravity: { default: 0, scale: 1, time: 4 }, + particleRandomTurnAngle: { default: 0 }, + unk_ds3_p1_20: { default: 0 }, + unk_ds3_p2_0: { default: 1 }, + unk_ds3_p2_1: { default: 1 }, + unk_ds3_p2_2: { default: 0 }, + unk_ds3_p2_3: { default: [1, 1, 1, 1] }, + unk_ds3_p2_4: { default: [1, 1, 1, 1] }, + unk_ds3_p2_5: { default: [1, 1, 1, 1] }, + unk_ds3_p2_6: { default: 0 }, unk_ds3_f1_0: { default: 1005, field: 1 }, texture: { default: 1, field: 1, resource: 0, textureType: 'a' }, unk_ds3_f1_2: { default: 0, field: 1 }, @@ -3923,7 +3970,6 @@ const ActionData: { unk_ds3_f1_154: { default: 0, field: 1 }, bloom: { default: false, field: 0 }, bloomColor: { default: [1, 1, 1, 0], field: 5, color: 1 }, - desaturate: { default: 0, field: 2 }, unk_sdt_f1_160: { default: 1, field: 2 }, unk_sdt_f1_161: { default: 0, field: 1 }, unk_sdt_f1_162: { default: 1, field: 2 }, @@ -3932,6 +3978,7 @@ const ActionData: { unk_sdt_f1_165: { default: 0, field: 1 }, unk_sdt_f1_166: { default: 1, field: 2 }, unk_er_f1_167: { default: 1, field: 2 }, + desaturate: { default: 0, field: 2 }, unk_ds3_f2_0: { default: 0, field: 1 }, unk_ds3_f2_1: { default: 0, field: 1 }, unk_ds3_f2_2: { default: 8, field: 1 }, @@ -3946,8 +3993,8 @@ const ActionData: { unk_ds3_f2_11: { default: 0, field: 1 }, unk_ds3_f2_12: { default: 0, field: 1 }, unk_ds3_f2_13: { default: 0, field: 1 }, - minDistance: { default: -1, field: 2, scale: 2 }, minFadeDistance: { default: -1, field: 2, scale: 2 }, + minDistance: { default: -1, field: 2, scale: 2 }, maxFadeDistance: { default: -1, field: 2, scale: 2 }, maxDistance: { default: -1, field: 2, scale: 2 }, minDistanceThreshold: { default: -1, field: 2, scale: 2 }, @@ -3972,6 +4019,31 @@ const ActionData: { unk_sdt_f2_37: { default: 0, field: 1 }, specularity: { default: 0.5, field: 2 }, unk_er_f2_39: { default: 0, field: 1 }, + }, + games: { + [Game.DarkSouls3]: { + fields1: ['unk_ds3_f1_0','texture','unk_ds3_f1_2','normalMap','emitterShape','unk_ds3_f1_5','emitterSize','emitterRotation','unk_ds3_f1_12','unk_ds3_f1_13','unk_ds3_f1_14','emitterDistribution','unk_ds3_f1_16','unk_ds3_f1_17','unk_ds3_f1_18','unk_ds3_f1_19','unk_ds3_f1_20','unk_ds3_f1_21','emissionParticleCount','emissionParticleCountMin','emissionParticleCountMax','unk_ds3_f1_25','emissionIntervalMin','emissionIntervalMax','limitEmissionCount','emissionCountLimit','unk_ds3_f1_30','particleDuration','unk_ds3_f1_32','unk_ds3_f1_33','particleOffset','particleOffsetMin','particleOffsetMax','particleSpeed','particleSpeedMin','particleSpeedMax','particleAccelerationMin','particleAccelerationMax','particleRotationVariance','particleAngularSpeedVariance','particleAngularAccelerationMin','particleAngularAccelerationMax','particleUniformScale','particleSizeX','particleSizeY','unk_ds3_f1_73','particleSizeXMin','particleSizeYMin','unk_ds3_f1_76','particleSizeXMax','particleSizeYMax','unk_ds3_f1_79','particleGrowthRateXStatic','particleGrowthRateYStatic','unk_ds3_f1_82','particleGrowthRateXMin','particleGrowthRateYMin','unk_ds3_f1_85','particleGrowthRateXMax','particleGrowthRateYMax','unk_ds3_f1_88','particleGrowthAccelerationXMin','particleGrowthAccelerationYMin','unk_ds3_f1_91','particleGrowthAccelerationXMax','particleGrowthAccelerationYMax','unk_ds3_f1_94','rgbMultiplier','alphaMultiplier','colorMin','colorMax','blendMode','columns','totalFrames','randomTextureFrame','unk_ds3_f1_109','maxFrameIndex','unk_ds3_f1_111','unk_ds3_f1_112','unk_ds3_f1_113','unk_ds3_f1_114','unk_ds3_f1_115','unk_ds3_f1_116','unk_ds3_f1_117','unk_ds3_f1_118','particleDurationMultiplier','unk_ds3_f1_120','particleSizeMultiplier','unk_ds3_f1_122','unk_ds3_f1_123','unk_ds3_f1_124','unk_ds3_f1_125','unk_ds3_f1_126','unk_ds3_f1_127','unk_ds3_f1_128','unk_ds3_f1_129','unk_ds3_f1_130','unk_ds3_f1_131','unk_ds3_f1_132','unk_ds3_f1_133','unk_ds3_f1_134','unk_ds3_f1_135','unk_ds3_f1_136','unk_ds3_f1_137','unk_ds3_f1_138','unk_ds3_f1_139','unk_ds3_f1_140','unk_ds3_f1_141','limitUpdateDistance','updateDistance','particleCollision','particleBounciness','particleRandomTurns','particleRandomTurnIntervalMax','traceParticles','unk_ds3_f1_149','particleTraceLength','traceParticlesThreshold','traceParticleHead','unk_ds3_f1_153','unk_ds3_f1_154','bloom','bloomColor','desaturate'], + fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','unk_ds3_f2_5','unk_ds3_f2_6','unk_ds3_f2_7','unk_ds3_f2_8','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_28'], + properties1: ['particleFollowFactor','unk_ds3_p1_1','unk_ds3_p1_2','unk_ds3_p1_3','particleAccelerationX','particleAccelerationY','particleAccelerationZ','unk_ds3_p1_7','unk_ds3_p1_8','particleAngularAccelerationZ','particleGrowthRateX','particleGrowthRateY','unk_ds3_p1_12','color','unk_ds3_p1_14','unk_ds3_p1_15','unkParticleAcceleration','unk_ds3_p1_17','particleGravity','particleRandomTurnAngle','unk_ds3_p1_20'], + properties2: ['unk_ds3_p2_0','unk_ds3_p2_1','unk_ds3_p2_2','unk_ds3_p2_3','unk_ds3_p2_4','unk_ds3_p2_5','unk_ds3_p2_6'] + }, + [Game.Sekiro]: { + fields1: ['unk_ds3_f1_0','texture','unk_ds3_f1_2','normalMap','emitterShape','unk_ds3_f1_5','emitterSize','emitterRotation','unk_ds3_f1_12','unk_ds3_f1_13','unk_ds3_f1_14','emitterDistribution','unk_ds3_f1_16','unk_ds3_f1_17','unk_ds3_f1_18','unk_ds3_f1_19','unk_ds3_f1_20','unk_ds3_f1_21','emissionParticleCount','emissionParticleCountMin','emissionParticleCountMax','unk_ds3_f1_25','emissionIntervalMin','emissionIntervalMax','limitEmissionCount','emissionCountLimit','unk_ds3_f1_30','particleDuration','unk_ds3_f1_32','unk_ds3_f1_33','particleOffset','particleOffsetMin','particleOffsetMax','particleSpeed','particleSpeedMin','particleSpeedMax','particleAccelerationMin','particleAccelerationMax','particleRotationVariance','particleAngularSpeedVariance','particleAngularAccelerationMin','particleAngularAccelerationMax','particleUniformScale','particleSizeX','particleSizeY','unk_ds3_f1_73','particleSizeXMin','particleSizeYMin','unk_ds3_f1_76','particleSizeXMax','particleSizeYMax','unk_ds3_f1_79','particleGrowthRateXStatic','particleGrowthRateYStatic','unk_ds3_f1_82','particleGrowthRateXMin','particleGrowthRateYMin','unk_ds3_f1_85','particleGrowthRateXMax','particleGrowthRateYMax','unk_ds3_f1_88','particleGrowthAccelerationXMin','particleGrowthAccelerationYMin','unk_ds3_f1_91','particleGrowthAccelerationXMax','particleGrowthAccelerationYMax','unk_ds3_f1_94','rgbMultiplier','alphaMultiplier','colorMin','colorMax','blendMode','columns','totalFrames','randomTextureFrame','unk_ds3_f1_109','maxFrameIndex','unk_ds3_f1_111','unk_ds3_f1_112','unk_ds3_f1_113','unk_ds3_f1_114','unk_ds3_f1_115','unk_ds3_f1_116','unk_ds3_f1_117','unk_ds3_f1_118','particleDurationMultiplier','unk_ds3_f1_120','particleSizeMultiplier','unk_ds3_f1_122','unk_ds3_f1_123','unk_ds3_f1_124','unk_ds3_f1_125','unk_ds3_f1_126','unk_ds3_f1_127','unk_ds3_f1_128','unk_ds3_f1_129','unk_ds3_f1_130','unk_ds3_f1_131','unk_ds3_f1_132','unk_ds3_f1_133','unk_ds3_f1_134','unk_ds3_f1_135','unk_ds3_f1_136','unk_ds3_f1_137','unk_ds3_f1_138','unk_ds3_f1_139','unk_ds3_f1_140','unk_ds3_f1_141','limitUpdateDistance','updateDistance','particleCollision','particleBounciness','particleRandomTurns','particleRandomTurnIntervalMax','traceParticles','unk_ds3_f1_149','particleTraceLength','traceParticlesThreshold','traceParticleHead','unk_ds3_f1_153','unk_ds3_f1_154','bloom','bloomColor','unk_sdt_f1_160','unk_sdt_f1_161','unk_sdt_f1_162','unk_sdt_f1_163','unk_sdt_f1_164','unk_sdt_f1_165','unk_sdt_f1_166'], + fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','unk_ds3_f2_5','unk_ds3_f2_6','unk_ds3_f2_7','unk_ds3_f2_8','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_sdt_f2_29','shadowDarkness','unkHideIndoors','unk_sdt_f2_32','specular','glossiness','lighting','unk_sdt_f2_36','unk_sdt_f2_37','specularity'], + properties1: Game.DarkSouls3, + properties2: Game.DarkSouls3 + }, + [Game.EldenRing]: { + fields1: ['unk_ds3_f1_0','texture','unk_ds3_f1_2','normalMap','emitterShape','unk_ds3_f1_5','emitterSize','emitterRotation','unk_ds3_f1_12','unk_ds3_f1_13','unk_ds3_f1_14','emitterDistribution','unk_ds3_f1_16','unk_ds3_f1_17','unk_ds3_f1_18','unk_ds3_f1_19','unk_ds3_f1_20','unk_ds3_f1_21','emissionParticleCount','emissionParticleCountMin','emissionParticleCountMax','unk_ds3_f1_25','emissionIntervalMin','emissionIntervalMax','limitEmissionCount','emissionCountLimit','unk_ds3_f1_30','particleDuration','unk_ds3_f1_32','unk_ds3_f1_33','particleOffset','particleOffsetMin','particleOffsetMax','particleSpeed','particleSpeedMin','particleSpeedMax','particleAccelerationMin','particleAccelerationMax','particleRotationVariance','particleAngularSpeedVariance','particleAngularAccelerationMin','particleAngularAccelerationMax','particleUniformScale','particleSizeX','particleSizeY','unk_ds3_f1_73','particleSizeXMin','particleSizeYMin','unk_ds3_f1_76','particleSizeXMax','particleSizeYMax','unk_ds3_f1_79','particleGrowthRateXStatic','particleGrowthRateYStatic','unk_ds3_f1_82','particleGrowthRateXMin','particleGrowthRateYMin','unk_ds3_f1_85','particleGrowthRateXMax','particleGrowthRateYMax','unk_ds3_f1_88','particleGrowthAccelerationXMin','particleGrowthAccelerationYMin','unk_ds3_f1_91','particleGrowthAccelerationXMax','particleGrowthAccelerationYMax','unk_ds3_f1_94','rgbMultiplier','alphaMultiplier','colorMin','colorMax','blendMode','columns','totalFrames','randomTextureFrame','unk_ds3_f1_109','maxFrameIndex','unk_ds3_f1_111','unk_ds3_f1_112','unk_ds3_f1_113','unk_ds3_f1_114','unk_ds3_f1_115','unk_ds3_f1_116','unk_ds3_f1_117','unk_ds3_f1_118','particleDurationMultiplier','unk_ds3_f1_120','particleSizeMultiplier','unk_ds3_f1_122','unk_ds3_f1_123','unk_ds3_f1_124','unk_ds3_f1_125','unk_ds3_f1_126','unk_ds3_f1_127','unk_ds3_f1_128','unk_ds3_f1_129','unk_ds3_f1_130','unk_ds3_f1_131','unk_ds3_f1_132','unk_ds3_f1_133','unk_ds3_f1_134','unk_ds3_f1_135','unk_ds3_f1_136','unk_ds3_f1_137','unk_ds3_f1_138','unk_ds3_f1_139','unk_ds3_f1_140','unk_ds3_f1_141','limitUpdateDistance','updateDistance','particleCollision','particleBounciness','particleRandomTurns','particleRandomTurnIntervalMax','traceParticles','unk_ds3_f1_149','particleTraceLength','traceParticlesThreshold','traceParticleHead','unk_ds3_f1_153','unk_ds3_f1_154','bloom','bloomColor','unk_sdt_f1_160','unk_sdt_f1_161','unk_sdt_f1_162','unk_sdt_f1_163','unk_sdt_f1_164','unk_sdt_f1_165','unk_sdt_f1_166','unk_er_f1_167'], + fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','unk_ds3_f2_5','unk_ds3_f2_6','unk_ds3_f2_7','unk_ds3_f2_8','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_sdt_f2_29','shadowDarkness','unkHideIndoors','unk_sdt_f2_32','specular','glossiness','lighting','unk_sdt_f2_36','unk_sdt_f2_37','specularity','unk_er_f2_39'], + properties1: Game.DarkSouls3, + properties2: Game.DarkSouls3 + }, + [Game.ArmoredCore6]: Game.EldenRing + } + }, + [ActionType.GPUStandardCorrectParticle]: { + props: { particleFollowFactor: { default: 0 }, unk_ds3_p1_1: { default: 0 }, unk_ds3_p1_2: { default: 0 }, @@ -4000,31 +4072,6 @@ const ActionData: { unk_ds3_p2_4: { default: [1, 1, 1, 1] }, unk_ds3_p2_5: { default: [1, 1, 1, 1] }, unk_ds3_p2_6: { default: 0 }, - }, - games: { - [Game.DarkSouls3]: { - fields1: ['unk_ds3_f1_0','texture','unk_ds3_f1_2','normalMap','emitterShape','unk_ds3_f1_5','emitterSize','emitterRotation','unk_ds3_f1_12','unk_ds3_f1_13','unk_ds3_f1_14','emitterDistribution','unk_ds3_f1_16','unk_ds3_f1_17','unk_ds3_f1_18','unk_ds3_f1_19','unk_ds3_f1_20','unk_ds3_f1_21','emissionParticleCount','emissionParticleCountMin','emissionParticleCountMax','unk_ds3_f1_25','emissionIntervalMin','emissionIntervalMax','limitEmissionCount','emissionCountLimit','unk_ds3_f1_30','particleDuration','unk_ds3_f1_32','unk_ds3_f1_33','particleOffset','particleOffsetMin','particleOffsetMax','particleSpeed','particleSpeedMin','particleSpeedMax','particleAccelerationMin','particleAccelerationMax','particleRotationVariance','particleAngularSpeedVariance','particleAngularAccelerationMin','particleAngularAccelerationMax','particleUniformScale','particleSizeX','particleSizeY','unk_ds3_f1_73','particleSizeXMin','particleSizeYMin','unk_ds3_f1_76','particleSizeXMax','particleSizeYMax','unk_ds3_f1_79','particleGrowthRateXStatic','particleGrowthRateYStatic','unk_ds3_f1_82','particleGrowthRateXMin','particleGrowthRateYMin','unk_ds3_f1_85','particleGrowthRateXMax','particleGrowthRateYMax','unk_ds3_f1_88','particleGrowthAccelerationXMin','particleGrowthAccelerationYMin','unk_ds3_f1_91','particleGrowthAccelerationXMax','particleGrowthAccelerationYMax','unk_ds3_f1_94','rgbMultiplier','alphaMultiplier','colorMin','colorMax','blendMode','columns','totalFrames','randomTextureFrame','unk_ds3_f1_109','maxFrameIndex','unk_ds3_f1_111','unk_ds3_f1_112','unk_ds3_f1_113','unk_ds3_f1_114','unk_ds3_f1_115','unk_ds3_f1_116','unk_ds3_f1_117','unk_ds3_f1_118','particleDurationMultiplier','unk_ds3_f1_120','particleSizeMultiplier','unk_ds3_f1_122','unk_ds3_f1_123','unk_ds3_f1_124','unk_ds3_f1_125','unk_ds3_f1_126','unk_ds3_f1_127','unk_ds3_f1_128','unk_ds3_f1_129','unk_ds3_f1_130','unk_ds3_f1_131','unk_ds3_f1_132','unk_ds3_f1_133','unk_ds3_f1_134','unk_ds3_f1_135','unk_ds3_f1_136','unk_ds3_f1_137','unk_ds3_f1_138','unk_ds3_f1_139','unk_ds3_f1_140','unk_ds3_f1_141','limitUpdateDistance','updateDistance','particleCollision','particleBounciness','particleRandomTurns','particleRandomTurnIntervalMax','traceParticles','unk_ds3_f1_149','particleTraceLength','traceParticlesThreshold','traceParticleHead','unk_ds3_f1_153','unk_ds3_f1_154','bloom','bloomColor','desaturate'], - fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','unk_ds3_f2_5','unk_ds3_f2_6','unk_ds3_f2_7','unk_ds3_f2_8','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_28'], - properties1: ['particleFollowFactor','unk_ds3_p1_1','unk_ds3_p1_2','unk_ds3_p1_3','particleAccelerationX','particleAccelerationY','particleAccelerationZ','unk_ds3_p1_7','unk_ds3_p1_8','particleAngularAccelerationZ','particleGrowthRateX','particleGrowthRateY','unk_ds3_p1_12','color','unk_ds3_p1_14','unk_ds3_p1_15','unkParticleAcceleration','unk_ds3_p1_17','particleGravity','particleRandomTurnAngle','unk_ds3_p1_20'], - properties2: ['unk_ds3_p2_0','unk_ds3_p2_1','unk_ds3_p2_2','unk_ds3_p2_3','unk_ds3_p2_4','unk_ds3_p2_5','unk_ds3_p2_6'] - }, - [Game.Sekiro]: { - fields1: ['unk_ds3_f1_0','texture','unk_ds3_f1_2','normalMap','emitterShape','unk_ds3_f1_5','emitterSize','emitterRotation','unk_ds3_f1_12','unk_ds3_f1_13','unk_ds3_f1_14','emitterDistribution','unk_ds3_f1_16','unk_ds3_f1_17','unk_ds3_f1_18','unk_ds3_f1_19','unk_ds3_f1_20','unk_ds3_f1_21','emissionParticleCount','emissionParticleCountMin','emissionParticleCountMax','unk_ds3_f1_25','emissionIntervalMin','emissionIntervalMax','limitEmissionCount','emissionCountLimit','unk_ds3_f1_30','particleDuration','unk_ds3_f1_32','unk_ds3_f1_33','particleOffset','particleOffsetMin','particleOffsetMax','particleSpeed','particleSpeedMin','particleSpeedMax','particleAccelerationMin','particleAccelerationMax','particleRotationVariance','particleAngularSpeedVariance','particleAngularAccelerationMin','particleAngularAccelerationMax','particleUniformScale','particleSizeX','particleSizeY','unk_ds3_f1_73','particleSizeXMin','particleSizeYMin','unk_ds3_f1_76','particleSizeXMax','particleSizeYMax','unk_ds3_f1_79','particleGrowthRateXStatic','particleGrowthRateYStatic','unk_ds3_f1_82','particleGrowthRateXMin','particleGrowthRateYMin','unk_ds3_f1_85','particleGrowthRateXMax','particleGrowthRateYMax','unk_ds3_f1_88','particleGrowthAccelerationXMin','particleGrowthAccelerationYMin','unk_ds3_f1_91','particleGrowthAccelerationXMax','particleGrowthAccelerationYMax','unk_ds3_f1_94','rgbMultiplier','alphaMultiplier','colorMin','colorMax','blendMode','columns','totalFrames','randomTextureFrame','unk_ds3_f1_109','maxFrameIndex','unk_ds3_f1_111','unk_ds3_f1_112','unk_ds3_f1_113','unk_ds3_f1_114','unk_ds3_f1_115','unk_ds3_f1_116','unk_ds3_f1_117','unk_ds3_f1_118','particleDurationMultiplier','unk_ds3_f1_120','particleSizeMultiplier','unk_ds3_f1_122','unk_ds3_f1_123','unk_ds3_f1_124','unk_ds3_f1_125','unk_ds3_f1_126','unk_ds3_f1_127','unk_ds3_f1_128','unk_ds3_f1_129','unk_ds3_f1_130','unk_ds3_f1_131','unk_ds3_f1_132','unk_ds3_f1_133','unk_ds3_f1_134','unk_ds3_f1_135','unk_ds3_f1_136','unk_ds3_f1_137','unk_ds3_f1_138','unk_ds3_f1_139','unk_ds3_f1_140','unk_ds3_f1_141','limitUpdateDistance','updateDistance','particleCollision','particleBounciness','particleRandomTurns','particleRandomTurnIntervalMax','traceParticles','unk_ds3_f1_149','particleTraceLength','traceParticlesThreshold','traceParticleHead','unk_ds3_f1_153','unk_ds3_f1_154','bloom','bloomColor','unk_sdt_f1_160','unk_sdt_f1_161','unk_sdt_f1_162','unk_sdt_f1_163','unk_sdt_f1_164','unk_sdt_f1_165','unk_sdt_f1_166'], - fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','unk_ds3_f2_5','unk_ds3_f2_6','unk_ds3_f2_7','unk_ds3_f2_8','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_sdt_f2_29','shadowDarkness','unkHideIndoors','unk_sdt_f2_32','specular','glossiness','lighting','unk_sdt_f2_36','unk_sdt_f2_37','specularity'], - properties1: Game.DarkSouls3, - properties2: Game.DarkSouls3 - }, - [Game.EldenRing]: { - fields1: ['unk_ds3_f1_0','texture','unk_ds3_f1_2','normalMap','emitterShape','unk_ds3_f1_5','emitterSize','emitterRotation','unk_ds3_f1_12','unk_ds3_f1_13','unk_ds3_f1_14','emitterDistribution','unk_ds3_f1_16','unk_ds3_f1_17','unk_ds3_f1_18','unk_ds3_f1_19','unk_ds3_f1_20','unk_ds3_f1_21','emissionParticleCount','emissionParticleCountMin','emissionParticleCountMax','unk_ds3_f1_25','emissionIntervalMin','emissionIntervalMax','limitEmissionCount','emissionCountLimit','unk_ds3_f1_30','particleDuration','unk_ds3_f1_32','unk_ds3_f1_33','particleOffset','particleOffsetMin','particleOffsetMax','particleSpeed','particleSpeedMin','particleSpeedMax','particleAccelerationMin','particleAccelerationMax','particleRotationVariance','particleAngularSpeedVariance','particleAngularAccelerationMin','particleAngularAccelerationMax','particleUniformScale','particleSizeX','particleSizeY','unk_ds3_f1_73','particleSizeXMin','particleSizeYMin','unk_ds3_f1_76','particleSizeXMax','particleSizeYMax','unk_ds3_f1_79','particleGrowthRateXStatic','particleGrowthRateYStatic','unk_ds3_f1_82','particleGrowthRateXMin','particleGrowthRateYMin','unk_ds3_f1_85','particleGrowthRateXMax','particleGrowthRateYMax','unk_ds3_f1_88','particleGrowthAccelerationXMin','particleGrowthAccelerationYMin','unk_ds3_f1_91','particleGrowthAccelerationXMax','particleGrowthAccelerationYMax','unk_ds3_f1_94','rgbMultiplier','alphaMultiplier','colorMin','colorMax','blendMode','columns','totalFrames','randomTextureFrame','unk_ds3_f1_109','maxFrameIndex','unk_ds3_f1_111','unk_ds3_f1_112','unk_ds3_f1_113','unk_ds3_f1_114','unk_ds3_f1_115','unk_ds3_f1_116','unk_ds3_f1_117','unk_ds3_f1_118','particleDurationMultiplier','unk_ds3_f1_120','particleSizeMultiplier','unk_ds3_f1_122','unk_ds3_f1_123','unk_ds3_f1_124','unk_ds3_f1_125','unk_ds3_f1_126','unk_ds3_f1_127','unk_ds3_f1_128','unk_ds3_f1_129','unk_ds3_f1_130','unk_ds3_f1_131','unk_ds3_f1_132','unk_ds3_f1_133','unk_ds3_f1_134','unk_ds3_f1_135','unk_ds3_f1_136','unk_ds3_f1_137','unk_ds3_f1_138','unk_ds3_f1_139','unk_ds3_f1_140','unk_ds3_f1_141','limitUpdateDistance','updateDistance','particleCollision','particleBounciness','particleRandomTurns','particleRandomTurnIntervalMax','traceParticles','unk_ds3_f1_149','particleTraceLength','traceParticlesThreshold','traceParticleHead','unk_ds3_f1_153','unk_ds3_f1_154','bloom','bloomColor','unk_sdt_f1_160','unk_sdt_f1_161','unk_sdt_f1_162','unk_sdt_f1_163','unk_sdt_f1_164','unk_sdt_f1_165','unk_sdt_f1_166','unk_er_f1_167'], - fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','unk_ds3_f2_5','unk_ds3_f2_6','unk_ds3_f2_7','unk_ds3_f2_8','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_sdt_f2_29','shadowDarkness','unkHideIndoors','unk_sdt_f2_32','specular','glossiness','lighting','unk_sdt_f2_36','unk_sdt_f2_37','specularity','unk_er_f2_39'], - properties1: Game.DarkSouls3, - properties2: Game.DarkSouls3 - }, - [Game.ArmoredCore6]: Game.EldenRing - } - }, - [ActionType.GPUStandardCorrectParticle]: { - props: { unk_ds3_f1_0: { default: 1005, field: 1 }, texture: { default: 1, field: 1, resource: 0, textureType: 'a' }, unk_ds3_f1_2: { default: 0, field: 1 }, @@ -4170,8 +4217,8 @@ const ActionData: { unk_ds3_f2_11: { default: 0, field: 1 }, unk_ds3_f2_12: { default: 0, field: 1 }, unk_ds3_f2_13: { default: 0, field: 1 }, - minDistance: { default: -1, field: 2, scale: 2 }, minFadeDistance: { default: -1, field: 2, scale: 2 }, + minDistance: { default: -1, field: 2, scale: 2 }, maxFadeDistance: { default: -1, field: 2, scale: 2 }, maxDistance: { default: -1, field: 2, scale: 2 }, minDistanceThreshold: { default: -1, field: 2, scale: 2 }, @@ -4196,34 +4243,6 @@ const ActionData: { unk_sdt_f2_37: { default: 0, field: 1 }, specularity: { default: 0.5, field: 2 }, unk_er_f2_39: { default: 0, field: 1 }, - particleFollowFactor: { default: 0 }, - unk_ds3_p1_1: { default: 0 }, - unk_ds3_p1_2: { default: 0 }, - unk_ds3_p1_3: { default: 0 }, - particleAccelerationX: { default: 0, scale: 1, time: 4 }, - particleAccelerationY: { default: 0, scale: 1, time: 4 }, - particleAccelerationZ: { default: 0, scale: 1, time: 4 }, - unk_ds3_p1_7: { default: 0 }, - unk_ds3_p1_8: { default: 0 }, - particleAngularAccelerationZ: { default: 0, time: 4 }, - particleGrowthRateX: { default: 0, scale: 1, time: 1 }, - particleGrowthRateY: { default: 0, scale: 1, time: 1 }, - unk_ds3_p1_12: { default: 0 }, - color: { default: [1, 1, 1, 1], color: 1 }, - unk_ds3_p1_14: { default: 1 }, - unk_ds3_p1_15: { default: 0 }, - unkParticleAcceleration: { default: 0, scale: 1, time: 4 }, - unk_ds3_p1_17: { default: 0 }, - particleGravity: { default: 0, scale: 1, time: 4 }, - particleRandomTurnAngle: { default: 0 }, - unk_ds3_p1_20: { default: 0 }, - unk_ds3_p2_0: { default: 1 }, - unk_ds3_p2_1: { default: 1 }, - unk_ds3_p2_2: { default: 0 }, - unk_ds3_p2_3: { default: [1, 1, 1, 1] }, - unk_ds3_p2_4: { default: [1, 1, 1, 1] }, - unk_ds3_p2_5: { default: [1, 1, 1, 1] }, - unk_ds3_p2_6: { default: 0 }, }, games: { [Game.DarkSouls3]: -2, @@ -4239,6 +4258,16 @@ const ActionData: { }, [ActionType.LightShaft]: { props: { + width: { default: 1, scale: 1 }, + height: { default: 1, scale: 1 }, + color1: { default: [1, 1, 1, 1], color: 1 }, + color2: { default: [1, 1, 1, 1], color: 1 }, + color3: { default: [1, 1, 1, 1], color: 1 }, + unk_ds3_p1_5: { default: 0 }, + unk_ds3_p1_6: { default: 0 }, + unk_ds3_p1_7: { default: 0 }, + unk_ds3_p1_8: { default: 1 }, + unk_ds3_p1_9: { default: 1 }, texture: { default: 0, field: 1, resource: 0, textureType: 'a' }, blendMode: { default: BlendMode.Add, field: 1 }, unk_ds3_f1_2: { default: 0.75, field: 2 }, @@ -4269,16 +4298,6 @@ const ActionData: { unk_ds3_f1_27: { default: 1, field: 2 }, unk_ds3_f1_28: { default: -1, field: 2 }, unk_ds3_f1_29: { default: 0, field: 1 }, - width: { default: 1, scale: 1 }, - height: { default: 1, scale: 1 }, - color1: { default: [1, 1, 1, 1], color: 1 }, - color2: { default: [1, 1, 1, 1], color: 1 }, - color3: { default: [1, 1, 1, 1], color: 1 }, - unk_ds3_p1_5: { default: 0 }, - unk_ds3_p1_6: { default: 0 }, - unk_ds3_p1_7: { default: 0 }, - unk_ds3_p1_8: { default: 1 }, - unk_ds3_p1_9: { default: 1 }, }, games: { [Game.DarkSouls3]: { @@ -4290,6 +4309,27 @@ const ActionData: { }, [ActionType.GPUSparkParticle]: { props: { + particleFollowFactor: { default: 0 }, + unk_ac6_p1_1: { default: 0 }, + unk_ac6_p1_2: { default: 0 }, + unk_ac6_p1_3: { default: 0 }, + particleAccelerationX: { default: 0, scale: 1, time: 4 }, + particleAccelerationY: { default: 0, scale: 1, time: 4 }, + particleAccelerationZ: { default: 0, scale: 1, time: 4 }, + color: { default: [1, 1, 1, 1], color: 1 }, + particleLength: { default: 1, time: 2 }, + particleWidth: { default: 0.1 }, + unkParticleAcceleration: { default: 0, scale: 1, time: 4 }, + unk_ac6_p1_11: { default: 0 }, + particleGravity: { default: 1, scale: 1, time: 4 }, + unk_ac6_p1_13: { default: 0 }, + unk_ac6_p2_0: { default: 1 }, + unk_ac6_p2_1: { default: 1 }, + unk_ac6_p2_2: { default: 0 }, + unk_ac6_p2_3: { default: [1, 1, 1, 1] }, + unk_ac6_p2_4: { default: [1, 1, 1, 1] }, + unk_ac6_p2_5: { default: [1, 1, 1, 1] }, + unk_ac6_p2_6: { default: 0 }, texture: { default: 1, field: 1, resource: 0, textureType: 'a' }, emitterShape: { default: EmitterShape.Box, field: 1 }, unk_ac6_f1_1: { default: 0, field: 1 }, @@ -4411,6 +4451,20 @@ const ActionData: { unk_ac6_f2_37: { default: 0, field: 1 }, unk_ac6_f2_38: { default: 0, field: 2 }, unk_ac6_f2_39: { default: 0, field: 1 }, + }, + games: { + [Game.Sekiro]: Game.ArmoredCore6, + [Game.EldenRing]: Game.ArmoredCore6, + [Game.ArmoredCore6]: { + fields1: ['texture','emitterShape','unk_ac6_f1_1','emitterSize','emitterRotation','unk_ac6_f1_9','unk_ac6_f1_10','unk_ac6_f1_11','emitterDistribution','unk_ac6_f1_13','unk_ac6_f1_14','unk_ac6_f1_15','unk_ac6_f1_16','unk_ac6_f1_17','emissionParticleCount','emissionParticleCountMin','emissionParticleCountMax','emissionInterval','emissionIntervalMin','emissionIntervalMax','limitConcurrentEmissions','concurrentEmissionsLimit','unk_ac6_f1_26','particleDuration','unk_ac6_f1_28','unk_ac6_f1_29','particleOffset','particleOffsetMin','particleOffsetMax','unk_ac6_f1_39','particleSpeedMin','particleSpeedMax','rgbMultiplier','alphaMultiplier','colorMin','colorMax','blendMode','unk_ac6_f1_57','unk_ac6_f1_58','unk_ac6_f1_59','unk_ac6_f1_60','unk_ac6_f1_61','unk_ac6_f1_62','particleLengthMin','particleLengthMax','particleWidthMin','particleWidthMax','unk_ac6_f1_67','unk_ac6_f1_68','particleDurationMultiplier','unk_ac6_f1_70','unk_ac6_f1_71','unk_ac6_f1_72','unk_ac6_f1_73','unk_ac6_f1_74','unk_ac6_f1_75','unk_ac6_f1_76','unk_ac6_f1_77','unk_ac6_f1_78','unk_ac6_f1_79','unk_ac6_f1_80','unk_ac6_f1_81','unk_ac6_f1_82','unk_ac6_f1_83','unk_ac6_f1_84','unk_ac6_f1_85','unk_ac6_f1_86','unk_ac6_f1_87','unk_ac6_f1_88','unk_ac6_f1_89','limitUpdateDistance','updateDistance','particleCollision','particleBounciness','unk_ac6_f1_94','unk_ac6_f1_95','bloom','bloomColor','unk_ac6_f1_101','unk_ac6_f1_102','unk_ac6_f1_103'], + fields2: ['unk_ac6_f2_0','unk_ac6_f2_1','unk_ac6_f2_2','unk_ac6_f2_3','unk_ac6_f2_4','unk_ac6_f2_5','unk_ac6_f2_6','unk_ac6_f2_7','unk_ac6_f2_8','unk_ac6_f2_9','unk_ac6_f2_10','unk_ac6_f2_11','unk_ac6_f2_12','unk_ac6_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ac6_f2_20','unk_ac6_f2_21','unk_ac6_f2_22','unk_ac6_f2_23','unk_ac6_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ac6_f2_27','unk_ac6_f2_28','unk_ac6_f2_29','shadowDarkness','unkHideIndoors','unk_ac6_f2_32','unk_ac6_f2_33','unk_ac6_f2_34','lighting','unk_ac6_f2_36','unk_ac6_f2_37','unk_ac6_f2_38','unk_ac6_f2_39'], + properties1: ['particleFollowFactor','unk_ac6_p1_1','unk_ac6_p1_2','unk_ac6_p1_3','particleAccelerationX','particleAccelerationY','particleAccelerationZ','color','particleLength','particleWidth','unkParticleAcceleration','unk_ac6_p1_11','particleGravity','unk_ac6_p1_13'], + properties2: ['unk_ac6_p2_0','unk_ac6_p2_1','unk_ac6_p2_2','unk_ac6_p2_3','unk_ac6_p2_4','unk_ac6_p2_5','unk_ac6_p2_6'] + } + } + }, + [ActionType.GPUSparkCorrectParticle]: { + props: { particleFollowFactor: { default: 0 }, unk_ac6_p1_1: { default: 0 }, unk_ac6_p1_2: { default: 0 }, @@ -4432,20 +4486,6 @@ const ActionData: { unk_ac6_p2_4: { default: [1, 1, 1, 1] }, unk_ac6_p2_5: { default: [1, 1, 1, 1] }, unk_ac6_p2_6: { default: 0 }, - }, - games: { - [Game.Sekiro]: Game.ArmoredCore6, - [Game.EldenRing]: Game.ArmoredCore6, - [Game.ArmoredCore6]: { - fields1: ['texture','emitterShape','unk_ac6_f1_1','emitterSize','emitterRotation','unk_ac6_f1_9','unk_ac6_f1_10','unk_ac6_f1_11','emitterDistribution','unk_ac6_f1_13','unk_ac6_f1_14','unk_ac6_f1_15','unk_ac6_f1_16','unk_ac6_f1_17','emissionParticleCount','emissionParticleCountMin','emissionParticleCountMax','emissionInterval','emissionIntervalMin','emissionIntervalMax','limitConcurrentEmissions','concurrentEmissionsLimit','unk_ac6_f1_26','particleDuration','unk_ac6_f1_28','unk_ac6_f1_29','particleOffset','particleOffsetMin','particleOffsetMax','unk_ac6_f1_39','particleSpeedMin','particleSpeedMax','rgbMultiplier','alphaMultiplier','colorMin','colorMax','blendMode','unk_ac6_f1_57','unk_ac6_f1_58','unk_ac6_f1_59','unk_ac6_f1_60','unk_ac6_f1_61','unk_ac6_f1_62','particleLengthMin','particleLengthMax','particleWidthMin','particleWidthMax','unk_ac6_f1_67','unk_ac6_f1_68','particleDurationMultiplier','unk_ac6_f1_70','unk_ac6_f1_71','unk_ac6_f1_72','unk_ac6_f1_73','unk_ac6_f1_74','unk_ac6_f1_75','unk_ac6_f1_76','unk_ac6_f1_77','unk_ac6_f1_78','unk_ac6_f1_79','unk_ac6_f1_80','unk_ac6_f1_81','unk_ac6_f1_82','unk_ac6_f1_83','unk_ac6_f1_84','unk_ac6_f1_85','unk_ac6_f1_86','unk_ac6_f1_87','unk_ac6_f1_88','unk_ac6_f1_89','limitUpdateDistance','updateDistance','particleCollision','particleBounciness','unk_ac6_f1_94','unk_ac6_f1_95','bloom','bloomColor','unk_ac6_f1_101','unk_ac6_f1_102','unk_ac6_f1_103'], - fields2: ['unk_ac6_f2_0','unk_ac6_f2_1','unk_ac6_f2_2','unk_ac6_f2_3','unk_ac6_f2_4','unk_ac6_f2_5','unk_ac6_f2_6','unk_ac6_f2_7','unk_ac6_f2_8','unk_ac6_f2_9','unk_ac6_f2_10','unk_ac6_f2_11','unk_ac6_f2_12','unk_ac6_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ac6_f2_20','unk_ac6_f2_21','unk_ac6_f2_22','unk_ac6_f2_23','unk_ac6_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ac6_f2_27','unk_ac6_f2_28','unk_ac6_f2_29','shadowDarkness','unkHideIndoors','unk_ac6_f2_32','unk_ac6_f2_33','unk_ac6_f2_34','lighting','unk_ac6_f2_36','unk_ac6_f2_37','unk_ac6_f2_38','unk_ac6_f2_39'], - properties1: ['particleFollowFactor','unk_ac6_p1_1','unk_ac6_p1_2','unk_ac6_p1_3','particleAccelerationX','particleAccelerationY','particleAccelerationZ','color','particleLength','particleWidth','unkParticleAcceleration','unk_ac6_p1_11','particleGravity','unk_ac6_p1_13'], - properties2: ['unk_ac6_p2_0','unk_ac6_p2_1','unk_ac6_p2_2','unk_ac6_p2_3','unk_ac6_p2_4','unk_ac6_p2_5','unk_ac6_p2_6'] - } - } - }, - [ActionType.GPUSparkCorrectParticle]: { - props: { texture: { default: 1, field: 1, resource: 0, textureType: 'a' }, emitterShape: { default: EmitterShape.Box, field: 1 }, unk_ac6_f1_1: { default: 0, field: 1 }, @@ -4567,27 +4607,6 @@ const ActionData: { unk_ac6_f2_37: { default: 0, field: 1 }, unk_ac6_f2_38: { default: 0, field: 2 }, unk_ac6_f2_39: { default: 0, field: 1 }, - particleFollowFactor: { default: 0 }, - unk_ac6_p1_1: { default: 0 }, - unk_ac6_p1_2: { default: 0 }, - unk_ac6_p1_3: { default: 0 }, - particleAccelerationX: { default: 0, scale: 1, time: 4 }, - particleAccelerationY: { default: 0, scale: 1, time: 4 }, - particleAccelerationZ: { default: 0, scale: 1, time: 4 }, - color: { default: [1, 1, 1, 1], color: 1 }, - particleLength: { default: 1, time: 2 }, - particleWidth: { default: 0.1 }, - unkParticleAcceleration: { default: 0, scale: 1, time: 4 }, - unk_ac6_p1_11: { default: 0 }, - particleGravity: { default: 1, scale: 1, time: 4 }, - unk_ac6_p1_13: { default: 0 }, - unk_ac6_p2_0: { default: 1 }, - unk_ac6_p2_1: { default: 1 }, - unk_ac6_p2_2: { default: 0 }, - unk_ac6_p2_3: { default: [1, 1, 1, 1] }, - unk_ac6_p2_4: { default: [1, 1, 1, 1] }, - unk_ac6_p2_5: { default: [1, 1, 1, 1] }, - unk_ac6_p2_6: { default: 0 }, }, games: { [Game.EldenRing]: Game.ArmoredCore6, @@ -4601,24 +4620,12 @@ const ActionData: { }, [ActionType.DynamicTracer]: { props: { - orientation: { default: TracerOrientationMode.LocalZ, field: 1 }, - normalMap: { default: 0, field: 1, resource: 0, textureType: 'n' }, - segmentInterval: { default: 0, field: 2, time: 2 }, - segmentDuration: { default: 1, field: 2, time: 2 }, - concurrentSegments: { default: 100, field: 1 }, - columns: { default: 1, field: 1 }, - totalFrames: { default: 1, field: 1 }, - attachedUV: { default: true, field: 0 }, - bloomColor: { default: [1, 1, 1, 0], field: 5, color: 1 }, - shadowDarkness: { default: 0, field: 2 }, - specular: { default: 0, field: 1, resource: 0, textureType: '3m' }, - glossiness: { default: 0.25, field: 2 }, - lighting: { default: LightingMode.Unlit, field: 1 }, - specularity: { default: 0.5, field: 2 }, texture: { default: 1, field: 1, resource: 0, textureType: 'a' }, blendMode: { default: BlendMode.Normal, field: 1 }, width: { default: 1, scale: 1 }, widthMultiplier: { default: 1 }, + unk_ds3_p1_2: { default: 0 }, + unk_ds3_p1_3: { default: 0 }, color1: { default: [1, 1, 1, 1], color: 1 }, color2: { default: [1, 1, 1, 1], color: 1 }, color3: { default: [1, 1, 1, 1], color: 1 }, @@ -4628,26 +4635,49 @@ const ActionData: { textureFraction: { default: 0.1 }, speedU: { default: 0, time: 1 }, varianceV: { default: 0 }, + unk_ds3_p1_13: { default: -1 }, rgbMultiplier: { default: 1 }, alphaMultiplier: { default: 1 }, + distortionIntensity: { default: 0 }, + unk_ds3_p2_3: { default: [1, 1, 1, 1] }, + unk_ds3_p2_4: { default: [1, 1, 1, 1] }, + unk_ds3_p2_5: { default: [1, 1, 1, 1] }, + alphaThreshold: { default: 0 }, + orientation: { default: TracerOrientationMode.LocalZ, field: 1 }, + normalMap: { default: 0, field: 1, resource: 0, textureType: 'n' }, + segmentInterval: { default: 0, field: 2, time: 2 }, + segmentDuration: { default: 1, field: 2, time: 2 }, + concurrentSegments: { default: 100, field: 1 }, unk_ds3_f1_7: { default: 0, field: 1 }, unk_ds3_f1_8: { default: 0, field: 2 }, unk_ds3_f1_9: { default: 0, field: 2 }, + columns: { default: 1, field: 1 }, + totalFrames: { default: 1, field: 1 }, + attachedUV: { default: true, field: 0 }, unk_ds3_f1_13: { default: -1, field: 1 }, unk_ds3_f1_14: { default: -1, field: 1 }, unk_ds3_f1_15: { default: 0, field: 1 }, + unk_sdt_f1_14: { default: 1, field: 1 }, + unk_sdt_f1_15: { default: 1, field: 2 }, + unk_sdt_f1_16: { default: 1, field: 2 }, + unk_sdt_f1_17: { default: 1, field: 2 }, + unk_er_f1_18: { default: 1, field: 1 }, + unk_er_f1_19: { default: 1, field: 1 }, + unk_er_f1_20: { default: 0, field: 1 }, + unk_er_f1_21: { default: 0, field: 2 }, unk_ds3_f2_0: { default: 0, field: 1 }, unk_ds3_f2_1: { default: 0, field: 0 }, unk_ds3_f2_2: { default: 8, field: 1 }, unk_ds3_f2_3: { default: 0, field: 1 }, - unk_ds3_f2_4: { default: 1, field: 1 }, + bloom: { default: true, field: 0 }, + bloomColor: { default: [1, 1, 1, 0], field: 5, color: 1 }, unk_ds3_f2_9: { default: 0, field: 1 }, unk_ds3_f2_10: { default: 0, field: 1 }, unk_ds3_f2_11: { default: 0, field: 1 }, unk_ds3_f2_12: { default: 0, field: 1 }, unk_ds3_f2_13: { default: 0, field: 1 }, - minDistance: { default: -1, field: 2, scale: 2 }, minFadeDistance: { default: -1, field: 2, scale: 2 }, + minDistance: { default: -1, field: 2, scale: 2 }, maxFadeDistance: { default: -1, field: 2, scale: 2 }, maxDistance: { default: -1, field: 2, scale: 2 }, minDistanceThreshold: { default: -1, field: 2, scale: 2 }, @@ -4662,52 +4692,41 @@ const ActionData: { unk_ds3_f2_27: { default: 1, field: 1 }, unk_ds3_f2_28: { default: 0, field: 1 }, unk_ds3_f2_29: { default: 5, field: 2 }, - unk_ds3_p1_2: { default: 0 }, - unk_ds3_p1_3: { default: 0 }, - unk_ds3_p1_13: { default: -1 }, - distortionIntensity: { default: 0 }, - unk_ds3_p2_3: { default: [1, 1, 1, 1] }, - unk_ds3_p2_4: { default: [1, 1, 1, 1] }, - unk_ds3_p2_5: { default: [1, 1, 1, 1] }, - alphaThreshold: { default: 0 }, + shadowDarkness: { default: 0, field: 2 }, unk_sdt_f2_31: { default: 0, field: 1 }, unk_sdt_f2_32: { default: 1, field: 1 }, + specular: { default: 0, field: 1, resource: 0, textureType: '3m' }, + glossiness: { default: 0.25, field: 2 }, + lighting: { default: LightingMode.Unlit, field: 1 }, unk_sdt_f2_36: { default: -2, field: 1 }, unk_sdt_f2_37: { default: 0, field: 1 }, - unk_er_f1_18: { default: 1, field: 1 }, - unk_er_f1_19: { default: 1, field: 1 }, - unk_er_f1_20: { default: 0, field: 1 }, - unk_er_f1_21: { default: 0, field: 2 }, + specularity: { default: 0.5, field: 2 }, unk_er_f2_39: { default: 0, field: 1 }, unk_er_f2_40: { default: 1, field: 2 }, - unk_sdt_f1_14: { default: 1, field: 1 }, - unk_sdt_f1_15: { default: 1, field: 2 }, - unk_sdt_f1_16: { default: 1, field: 2 }, - unk_sdt_f1_17: { default: 1, field: 2 }, unk_ac6_f2_41: { default: 0, field: 2 }, }, games: { [Game.DarkSouls3]: { fields1: ['orientation','texture','normalMap','blendMode','segmentInterval','segmentDuration','concurrentSegments','unk_ds3_f1_7','unk_ds3_f1_8','unk_ds3_f1_9','columns','totalFrames','attachedUV','unk_ds3_f1_13','unk_ds3_f1_14','unk_ds3_f1_15'], - fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29'], + fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','bloom','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29'], properties1: ['width','widthMultiplier','unk_ds3_p1_2','unk_ds3_p1_3','color1','color2','color3','alphaFadeThreshold','frameIndex','frameIndexOffset','textureFraction','speedU','varianceV','unk_ds3_p1_13'], properties2: ['rgbMultiplier','alphaMultiplier','distortionIntensity','unk_ds3_p2_3','unk_ds3_p2_4','unk_ds3_p2_5','alphaThreshold'] }, [Game.Sekiro]: { fields1: ['orientation','normalMap','segmentInterval','segmentDuration','concurrentSegments','unk_ds3_f1_7','unk_ds3_f1_8','unk_ds3_f1_9','columns','totalFrames','attachedUV','unk_ds3_f1_13','unk_ds3_f1_14','unk_ds3_f1_15','unk_sdt_f1_14','unk_sdt_f1_15','unk_sdt_f1_16','unk_sdt_f1_17'], - fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','shadowDarkness','unk_sdt_f2_31','unk_sdt_f2_32','specular','glossiness','lighting','unk_sdt_f2_36','unk_sdt_f2_37','specularity'], + fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','bloom','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','shadowDarkness','unk_sdt_f2_31','unk_sdt_f2_32','specular','glossiness','lighting','unk_sdt_f2_36','unk_sdt_f2_37','specularity'], properties1: ['texture','blendMode','width','widthMultiplier','unk_ds3_p1_2','unk_ds3_p1_3','color1','color2','color3','alphaFadeThreshold','frameIndex','frameIndexOffset','textureFraction','speedU','varianceV','unk_ds3_p1_13'], properties2: Game.DarkSouls3 }, [Game.EldenRing]: { fields1: ['orientation','normalMap','segmentInterval','segmentDuration','concurrentSegments','unk_ds3_f1_7','unk_ds3_f1_8','unk_ds3_f1_9','columns','totalFrames','attachedUV','unk_ds3_f1_13','unk_ds3_f1_14','unk_ds3_f1_15','unk_sdt_f1_14','unk_sdt_f1_15','unk_sdt_f1_16','unk_sdt_f1_17','unk_er_f1_18','unk_er_f1_19','unk_er_f1_20','unk_er_f1_21'], - fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','shadowDarkness','unk_sdt_f2_31','unk_sdt_f2_32','specular','glossiness','lighting','unk_sdt_f2_36','unk_sdt_f2_37','specularity','unk_er_f2_39','unk_er_f2_40'], + fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','bloom','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','shadowDarkness','unk_sdt_f2_31','unk_sdt_f2_32','specular','glossiness','lighting','unk_sdt_f2_36','unk_sdt_f2_37','specularity','unk_er_f2_39','unk_er_f2_40'], properties1: Game.Sekiro, properties2: Game.DarkSouls3 }, [Game.ArmoredCore6]: { fields1: Game.EldenRing, - fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','unk_ds3_f2_4','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','shadowDarkness','unk_sdt_f2_31','unk_sdt_f2_32','specular','glossiness','lighting','unk_sdt_f2_36','unk_sdt_f2_37','specularity','unk_er_f2_39','unk_er_f2_40','unk_ac6_f2_41'], + fields2: ['unk_ds3_f2_0','unk_ds3_f2_1','unk_ds3_f2_2','unk_ds3_f2_3','bloom','bloomColor','unk_ds3_f2_9','unk_ds3_f2_10','unk_ds3_f2_11','unk_ds3_f2_12','unk_ds3_f2_13','minFadeDistance','minDistance','maxFadeDistance','maxDistance','minDistanceThreshold','maxDistanceThreshold','unk_ds3_f2_20','unk_ds3_f2_21','unk_ds3_f2_22','unk_ds3_f2_23','unk_ds3_f2_24','unkDepthBlend1','unkDepthBlend2','unk_ds3_f2_27','unk_ds3_f2_28','unk_ds3_f2_29','shadowDarkness','unk_sdt_f2_31','unk_sdt_f2_32','specular','glossiness','lighting','unk_sdt_f2_36','unk_sdt_f2_37','specularity','unk_er_f2_39','unk_er_f2_40','unk_ac6_f2_41'], properties1: Game.Sekiro, properties2: Game.DarkSouls3 } @@ -4731,69 +4750,75 @@ const ActionData: { }, [ActionType.LensFlare]: { props: { - layer1: { default: 1, field: 1, resource: 0, textureType: 'a' }, layer1Width: { default: 1, scale: 1 }, layer1Height: { default: 1, scale: 1 }, layer1Color: { default: [1, 1, 1, 1], color: 1 }, - layer1Count: { default: 1, field: 1 }, - layer1ScaleVariationX: { default: 1, field: 2 }, - layer1ScaleVariationY: { default: 1, field: 2 }, - layer1UniformScale: { default: false, field: 0 }, - layer1ColorMultiplier: { default: [1, 1, 1, 1], field: 5, color: 1 }, - layer1BloomColor: { default: [1, 1, 1, 1], field: 5, color: 1 }, - layer2: { default: 0, field: 1, resource: 0, textureType: 'a' }, layer2Width: { default: 1, scale: 1 }, layer2Height: { default: 1, scale: 1 }, layer2Color: { default: [1, 1, 1, 1], color: 1 }, - layer2Count: { default: 1, field: 1 }, - layer2ScaleVariationX: { default: 1, field: 2 }, - layer2ScaleVariationY: { default: 1, field: 2 }, - layer2UniformScale: { default: false, field: 0 }, - layer2ColorMultiplier: { default: [1, 1, 1, 1], field: 5, color: 1 }, - layer2BloomColor: { default: [1, 1, 1, 1], field: 5, color: 1 }, - layer3: { default: 0, field: 1, resource: 0, textureType: 'a' }, layer3Width: { default: 1, scale: 1 }, layer3Height: { default: 1, scale: 1 }, layer3Color: { default: [1, 1, 1, 1], color: 1 }, - layer3Count: { default: 1, field: 1 }, - layer3ScaleVariationX: { default: 1, field: 2 }, - layer3ScaleVariationY: { default: 1, field: 2 }, - layer3UniformScale: { default: false, field: 0 }, - layer3ColorMultiplier: { default: [1, 1, 1, 1], field: 5, color: 1 }, - layer3BloomColor: { default: [1, 1, 1, 1], field: 5, color: 1 }, - layer4: { default: 0, field: 1, resource: 0, textureType: 'a' }, layer4Width: { default: 1, scale: 1 }, layer4Height: { default: 1, scale: 1 }, layer4Color: { default: [1, 1, 1, 1], color: 1 }, - layer4Count: { default: 1, field: 1 }, - layer4ScaleVariationX: { default: 1, field: 2 }, - layer4ScaleVariationY: { default: 1, field: 2 }, - layer4UniformScale: { default: false, field: 0 }, - layer4ColorMultiplier: { default: [1, 1, 1, 1], field: 5, color: 1 }, - layer4BloomColor: { default: [1, 1, 1, 1], field: 5, color: 1 }, + layer1: { default: 1, field: 1, resource: 0, textureType: 'a' }, + layer2: { default: 0, field: 1, resource: 0, textureType: 'a' }, + layer3: { default: 0, field: 1, resource: 0, textureType: 'a' }, + layer4: { default: 0, field: 1, resource: 0, textureType: 'a' }, blendMode: { default: BlendMode.Add, field: 1 }, + unk_er_f1_4: { default: 0, field: 1 }, sourceSize: { default: 1, field: 2 }, opacityTransitionDuration: { default: 1, field: 2 }, - bloom: { default: false, field: 0 }, - unk_er_f1_4: { default: 0, field: 1 }, unk_er_f1_8: { default: 0, field: 1 }, + layer1Count: { default: 1, field: 1 }, + layer1ScaleVariationX: { default: 1, field: 2 }, + layer1ScaleVariationY: { default: 1, field: 2 }, + layer1UniformScale: { default: false, field: 0 }, + layer1ColorMultiplier: { default: [1, 1, 1, 1], field: 5, color: 1 }, unk_er_f1_17: { default: 0, field: 1 }, unk_er_f1_18: { default: 0, field: 2 }, unk_er_f1_19: { default: 1, field: 2 }, unk_er_f1_20: { default: -1, field: 2 }, + layer2Count: { default: 1, field: 1 }, + layer2ScaleVariationX: { default: 1, field: 2 }, + layer2ScaleVariationY: { default: 1, field: 2 }, + layer2UniformScale: { default: false, field: 0 }, + layer2ColorMultiplier: { default: [1, 1, 1, 1], field: 5, color: 1 }, unk_er_f1_29: { default: 0, field: 1 }, unk_er_f1_30: { default: 0, field: 2 }, unk_er_f1_31: { default: 1, field: 2 }, unk_er_f1_32: { default: -1, field: 2 }, + layer3Count: { default: 1, field: 1 }, + layer3ScaleVariationX: { default: 1, field: 2 }, + layer3ScaleVariationY: { default: 1, field: 2 }, + layer3UniformScale: { default: false, field: 0 }, + layer3ColorMultiplier: { default: [1, 1, 1, 1], field: 5, color: 1 }, unk_er_f1_41: { default: 0, field: 1 }, unk_er_f1_42: { default: 0, field: 2 }, unk_er_f1_43: { default: 1, field: 2 }, unk_er_f1_44: { default: -1, field: 2 }, + layer4Count: { default: 1, field: 1 }, + layer4ScaleVariationX: { default: 1, field: 2 }, + layer4ScaleVariationY: { default: 1, field: 2 }, + layer4UniformScale: { default: false, field: 0 }, + layer4ColorMultiplier: { default: [1, 1, 1, 1], field: 5, color: 1 }, unk_er_f1_53: { default: 0, field: 1 }, unk_er_f1_54: { default: 0, field: 2 }, unk_er_f1_55: { default: 1, field: 2 }, unk_er_f1_56: { default: -1, field: 2 }, unk_er_f1_57: { default: 0, field: 1 }, + bloom: { default: false, field: 0 }, + layer1BloomColor: { default: [1, 1, 1, 1], field: 5, color: 1 }, + layer2BloomColor: { default: [1, 1, 1, 1], field: 5, color: 1 }, + layer3BloomColor: { default: [1, 1, 1, 1], field: 5, color: 1 }, + layer4BloomColor: { default: [1, 1, 1, 1], field: 5, color: 1 }, + unk_ac6_f1_75: { default: -1, field: 2 }, + unk_ac6_f1_76: { default: -1, field: 2 }, + unk_ac6_f1_77: { default: -1, field: 2 }, + unk_ac6_f1_78: { default: -1, field: 2 }, + unk_ac6_f1_79: { default: -1, field: 2 }, + unk_ac6_f1_80: { default: -1, field: 2 }, unk_er_f2_0: { default: 0, field: 1 }, unk_er_f2_1: { default: 0, field: 1 }, unk_er_f2_2: { default: 0, field: 1 }, @@ -4830,12 +4855,6 @@ const ActionData: { unk_er_f2_34: { default: 0, field: 1 }, unk_er_f2_35: { default: 0, field: 1 }, unk_er_f2_36: { default: -2, field: 1 }, - unk_ac6_f1_75: { default: -1, field: 2 }, - unk_ac6_f1_76: { default: -1, field: 2 }, - unk_ac6_f1_77: { default: -1, field: 2 }, - unk_ac6_f1_78: { default: -1, field: 2 }, - unk_ac6_f1_79: { default: -1, field: 2 }, - unk_ac6_f1_80: { default: -1, field: 2 }, }, games: { [Game.Sekiro]: Game.EldenRing, @@ -4853,12 +4872,6 @@ const ActionData: { }, [ActionType.RichModel]: { props: { - orientation: { default: RichModelOrientationMode.ParticleDirection, field: 1 }, - scaleVariationX: { default: 1, field: 2 }, - scaleVariationY: { default: 1, field: 2 }, - scaleVariationZ: { default: 1, field: 2 }, - uniformScale: { default: false, field: 0 }, - bloomColor: { default: [1, 1, 1, 0], field: 5, color: 1 }, model: { default: 80201, resource: 1 }, sizeX: { default: 1, scale: 1 }, sizeY: { default: 1, scale: 1 }, @@ -4867,14 +4880,22 @@ const ActionData: { rotationY: { default: 0 }, rotationZ: { default: 0 }, angularSpeedX: { default: 0, time: 1 }, - angularSpeedY: { default: 0, time: 1 }, - angularSpeedZ: { default: 0, time: 1 }, angularSpeedMultiplierX: { default: 1 }, + angularSpeedY: { default: 0, time: 1 }, angularSpeedMultiplierY: { default: 1 }, + angularSpeedZ: { default: 0, time: 1 }, angularSpeedMultiplierZ: { default: 1 }, color1: { default: [1, 1, 1, 1], color: 1 }, color2: { default: [1, 1, 1, 1], color: 1 }, color3: { default: [1, 1, 1, 1], color: 1 }, + unk_er_p1_16: { default: 0 }, + unk_er_p1_17: { default: 0 }, + rgbMultiplier2: { default: 1 }, + unk_er_p1_19: { default: 0 }, + unk_er_p1_20: { default: 0 }, + uvOffset: { default: [0, 0] }, + uvSpeed: { default: [0, 0], time: 1 }, + uvSpeedMultiplier: { default: [1, 1] }, uOffset: { default: 0, omit: 1 }, vOffset: { default: 0, omit: 1 }, uSpeed: { default: 0, omit: 1 }, @@ -4883,15 +4904,25 @@ const ActionData: { vSpeedMultiplier: { default: 0, omit: 1 }, rgbMultiplier: { default: 1 }, alphaMultiplier: { default: 1 }, - anibnd: { default: 0, field: 1, resource: 2 }, - animation: { default: 0, field: 1 }, - loopAnimation: { default: true, field: 0 }, - animationSpeed: { default: 1, field: 2, time: 1 }, + unk_er_p2_2: { default: 0 }, + unk_er_p2_3: { default: [1, 1, 1, 1] }, + unk_er_p2_4: { default: [1, 1, 1, 1] }, + unk_er_p2_5: { default: [1, 1, 1, 1] }, + unk_er_p2_6: { default: 0 }, + orientation: { default: RichModelOrientationMode.ParticleDirection, field: 1 }, + scaleVariationX: { default: 1, field: 2 }, + scaleVariationY: { default: 1, field: 2 }, + scaleVariationZ: { default: 1, field: 2 }, + uniformScale: { default: false, field: 0 }, unk_er_f1_5: { default: 1, field: 1 }, unk_er_f1_6: { default: 1, field: 1 }, unk_er_f1_7: { default: 0, field: 1 }, unk_er_f1_8: { default: -2, field: 1 }, unk_er_f1_9: { default: -2, field: 1 }, + anibnd: { default: 0, field: 1, resource: 2 }, + animation: { default: 0, field: 1 }, + loopAnimation: { default: true, field: 0 }, + animationSpeed: { default: 1, field: 2, time: 1 }, unk_er_f1_14: { default: 0, field: 2 }, unk_er_f1_15: { default: 0, field: 1 }, unk_er_f1_16: { default: 0, field: 1 }, @@ -4902,20 +4933,32 @@ const ActionData: { unk_er_f1_21: { default: 0, field: 1 }, unk_er_f1_22: { default: 0, field: 1 }, unk_er_f1_23: { default: 0, field: 1 }, + unk_ac6_f1_24: { default: 0, field: 2 }, + unk_ac6_f1_25: { default: -1, field: 2 }, + unk_ac6_f1_26: { default: -1, field: 2 }, + unk_ac6_f1_27: { default: -1, field: 2 }, + unk_ac6_f1_28: { default: -1, field: 2 }, + unk_ac6_f1_29: { default: 0, field: 1 }, + unk_ac6_f1_30: { default: 0, field: 1 }, + unk_ac6_f1_31: { default: 0, field: 2 }, + unk_ac6_f1_32: { default: 0, field: 1 }, + unk_ac6_f1_33: { default: 1, field: 1 }, + unk_ac6_f1_34: { default: 0, field: 1 }, unk_er_f1_24: { default: 0, field: 2 }, unk_er_f1_25: { default: 1, field: 1 }, unk_er_f2_0: { default: 0, field: 1 }, unk_er_f2_1: { default: 0, field: 1 }, unk_er_f2_2: { default: 8, field: 1 }, unk_er_f2_3: { default: 0, field: 1 }, + bloomColor: { default: [1, 1, 1, 0], field: 5, color: 1 }, unk_er_f2_8: { default: 0, field: 1 }, unk_er_f2_9: { default: 0, field: 1 }, unk_er_f2_10: { default: 0, field: 1 }, unk_er_f2_11: { default: 0, field: 1 }, unk_er_f2_12: { default: 0, field: 1 }, unk_er_f2_13: { default: 0, field: 1 }, - minDistance: { default: -1, field: 2, scale: 2 }, minFadeDistance: { default: -1, field: 2, scale: 2 }, + minDistance: { default: -1, field: 2, scale: 2 }, maxFadeDistance: { default: -1, field: 2, scale: 2 }, maxDistance: { default: -1, field: 2, scale: 2 }, minDistanceThreshold: { default: -1, field: 2, scale: 2 }, @@ -4938,30 +4981,6 @@ const ActionData: { unk_er_f2_35: { default: -2, field: 1 }, unk_er_f2_36: { default: -2, field: 1 }, unk_er_f2_37: { default: 0, field: 1 }, - unk_er_p1_16: { default: 0 }, - unk_er_p1_17: { default: 0 }, - rgbMultiplier2: { default: 1 }, - unk_er_p1_19: { default: 0 }, - unk_er_p1_20: { default: 0 }, - unk_er_p2_2: { default: 0 }, - unk_er_p2_3: { default: [1, 1, 1, 1] }, - unk_er_p2_4: { default: [1, 1, 1, 1] }, - unk_er_p2_5: { default: [1, 1, 1, 1] }, - unk_er_p2_6: { default: 0 }, - unk_ac6_f1_24: { default: 0, field: 2 }, - unk_ac6_f1_25: { default: -1, field: 2 }, - unk_ac6_f1_26: { default: -1, field: 2 }, - unk_ac6_f1_27: { default: -1, field: 2 }, - unk_ac6_f1_28: { default: -1, field: 2 }, - unk_ac6_f1_29: { default: 0, field: 1 }, - unk_ac6_f1_30: { default: 0, field: 1 }, - unk_ac6_f1_31: { default: 0, field: 2 }, - unk_ac6_f1_32: { default: 0, field: 1 }, - unk_ac6_f1_33: { default: 1, field: 1 }, - unk_ac6_f1_34: { default: 0, field: 1 }, - uvOffset: { default: [0, 0] }, - uvSpeed: { default: [0, 0], time: 1 }, - uvSpeedMultiplier: { default: [1, 1] }, }, games: { [Game.EldenRing]: { @@ -5109,7 +5128,6 @@ const ActionData: { unk_ds3_f1_40: { default: 1, field: 2 }, unk_ds3_f1_41: { default: 1, field: 2 }, unk_ds3_f1_42: { default: 1, field: 2 }, - unk_ds3_f1_43: { default: 1, field: 2 }, unk_ds3_f1_44: { default: 1, field: 2 }, unk_ds3_f1_45: { default: 1, field: 2 }, forceMultiplier: { default: 1, field: 2 }, @@ -5128,6 +5146,7 @@ const ActionData: { unk_sdt_f1_58: { default: 1, field: 2 }, unk_ds3_f1_49: { default: 10, field: 2 }, unk_ds3_f1_50: { default: 60, field: 2 }, + unk_ds3_f1_43: { default: 1, field: 2 }, }, games: { [Game.DarkSouls3]: { @@ -5363,10 +5382,10 @@ const ActionData: { unk_ds3_f1_4: { default: 0, field: 2 }, unk_ds3_f1_5: { default: 0, field: 2 }, unk_ds3_f1_6: { default: 0, field: 1 }, - unk_ds3_f1_7: { default: 0, field: 1 }, unk_ac6_f1_7: { default: 0, field: 2 }, unk_ds3_f1_8: { default: 0, field: 1 }, unk_sdt_f1_9: { default: 0, field: 1 }, + unk_ds3_f1_7: { default: 0, field: 1 }, }, games: { [Game.DarkSouls3]: { @@ -5395,8 +5414,13 @@ const ActionData: { far: { default: 50, scale: 1 }, radiusX: { default: 50, scale: 1 }, radiusY: { default: 50, scale: 1 }, + unk_ds3_p1_6: { default: 1 }, + unk_ds3_p1_7: { default: 1 }, + unk_sdt_p1_10: { default: 1 }, + unk_sdt_f1_0: { default: 0, field: 1 }, jitterAndFlicker: { default: false, field: 0 }, jitterAcceleration: { default: 1, field: 2, scale: 1, time: 4 }, + unk_sdt_f1_3: { default: 0, field: 2 }, jitterX: { default: 0, field: 2, scale: 1 }, jitterY: { default: 0, field: 2, scale: 1 }, jitterZ: { default: 0, field: 2, scale: 1 }, @@ -5405,31 +5429,26 @@ const ActionData: { flickerBrightness: { default: 0.5, field: 2 }, shadows: { default: false, field: 0 }, separateSpecular: { default: false, field: 0 }, - fadeOutTime: { default: 0, field: 1, time: 2 }, shadowDarkness: { default: 1, field: 2 }, - volumeDensity: { default: 0, field: 2 }, - phaseFunction: { default: true, field: 0 }, - asymmetryParam: { default: 0.75, field: 2 }, - falloffExponent: { default: 1, field: 2 }, - unk_ds3_f1_0: { default: 1, field: 1 }, unk_ds3_f1_3: { default: 2, field: 1 }, unk_ds3_f1_4: { default: 1, field: 1 }, - unk_ds3_f1_5: { default: 1, field: 2 }, - unk_ds3_f1_7: { default: 0, field: 1 }, - unk_ds3_f1_8: { default: 0, field: 1 }, - unk_ds3_p1_6: { default: 1 }, - unk_ds3_p1_7: { default: 1 }, - unk_sdt_f1_0: { default: 0, field: 1 }, - unk_sdt_f1_3: { default: 0, field: 2 }, + fadeOutTime: { default: 0, field: 1, time: 2 }, unk_sdt_f1_16: { default: 100, field: 1 }, unk_sdt_f1_17: { default: 0, field: 1 }, unk_sdt_f1_18: { default: 0, field: 2 }, + volumeDensity: { default: 0, field: 2 }, unk_sdt_f1_20: { default: 0, field: 2 }, - unk_sdt_p1_10: { default: 1 }, + phaseFunction: { default: true, field: 0 }, + asymmetryParam: { default: 0.75, field: 2 }, + falloffExponent: { default: 1, field: 2 }, unk_er_f1_24: { default: 1, field: 1 }, unk_er_f1_25: { default: 1, field: 2 }, unk_er_f1_26: { default: 1, field: 1 }, unk_er_f1_27: { default: 0, field: 1 }, + unk_ds3_f1_0: { default: 1, field: 1 }, + unk_ds3_f1_5: { default: 1, field: 2 }, + unk_ds3_f1_7: { default: 0, field: 1 }, + unk_ds3_f1_8: { default: 0, field: 1 }, }, games: { [Game.DarkSouls3]: { @@ -5646,7 +5665,7 @@ const EffectActionSlots = { ] } -function getActionGameData(type: ActionType, game: Game) { +function getActionGameData(type: ActionType, game: Game): FilledActionGameDataEntry { const adt = ActionData[type] if (!('props' in adt)) { return { @@ -5681,19 +5700,12 @@ function getActionGameData(type: ActionType, game: Game) { if (typeof data.section10s === 'number') { data.section10s = (adt.games[data.section10s] as ActionGameDataEntry).section10s } - return data as { - fields1: string[] & { fieldsCount: number } - fields2: string[] & { fieldsCount: number } - properties1: string[] - properties2: string[] - section10s: string[] - } + return data as FilledActionGameDataEntry } //#region Functions - Property function readProperty | IModifiableProperty>( br: BinaryReader, - game: Game, modifierProp: T extends IModifiableProperty ? false : true ): T { const typeEnumA = br.readInt16() @@ -5715,7 +5727,7 @@ function readProperty | IModifiableProperty | IModifiableProperty, bw: BinaryWriter, index: //#region Functions - Action function readAction( br: BinaryReader, - game: Game, type: number, fieldCount1: number, propertyCount1: number, @@ -5818,10 +5832,10 @@ function readAction( const properties1: AnyProperty[] = [] const properties2: AnyProperty[] = [] for (let i = 0; i < propertyCount1; ++i) { - properties1.push(readProperty(br, game, false)) + properties1.push(readProperty(br, false)) } for (let i = 0; i < propertyCount2; ++i) { - properties2.push(readProperty(br, game, false)) + properties2.push(readProperty(br, false)) } br.stepOut() @@ -5900,7 +5914,7 @@ function writeActionFields(action: Action, bw: BinaryWriter, index: number): num //#region Functions - DataAction function readDataAction( br: BinaryReader, - game: Game, + gameData: FilledActionGameDataEntry, type: ActionType, fieldCount1: number, propertyCount1: number, @@ -5908,6 +5922,7 @@ function readDataAction( propertyCount2: number, section10Count: number ): DataAction { + const game = br.game === Game.Heuristic ? Game.EldenRing : br.game const fieldOffset = br.readInt32() br.assertInt32(0) const section10Offset = br.readInt32() @@ -5938,10 +5953,10 @@ function readDataAction( br.stepIn(propertyOffset) for (let i = 0; i < propertyCount1; ++i) { - c.properties1.push(readProperty(br, game, false)) + c.properties1.push(readProperty(br, false)) } for (let i = 0; i < propertyCount2; ++i) { - c.properties2.push(readProperty(br, game, false)) + c.properties2.push(readProperty(br, false)) } br.stepOut() @@ -5952,7 +5967,6 @@ function readDataAction( br.stepOut() br.stepIn(fieldOffset) - const gameData = getActionGameData(type, game) if ('fields1' in gameData) { c.fields1 = readFieldsWithTypes(br, fieldCount1, gameData.fields1.map((e: string) => adt.props[e].field), null) } @@ -6071,7 +6085,7 @@ function writeDataActionFields(action: DataAction, bw: BinaryWriter, game: Game, } //#region Functions - AnyAction -function readAnyAction(br: BinaryReader, game: Game): AnyAction { +function readAnyAction(br: BinaryReader): AnyAction { const type = br.readInt16() br.position += 6 // br.readUint8() // Unk02 @@ -6084,7 +6098,62 @@ function readAnyAction(br: BinaryReader, game: Game): AnyAction { br.assertInt32(0) const propertyCount2 = br.readInt32() - if (game !== Game.Generic && type in ActionData) { + if (br.game !== Game.Generic && type in ActionData) { + let game = br.game + heuristic: if (game === Game.Heuristic) { + if (type === ActionType.Unk800) { + game = br.game = Game.ArmoredCore6 + break heuristic + } + if (type === ActionType.Unk10500) { + if (propertyCount1 === 0) { + game = br.game = Game.Sekiro + break heuristic + } + const f7 = br.getInt32(br.position + 4 * 7) + if (f7 < 0 || f7 >= 1e6) { + game = br.game = Game.ArmoredCore6 + break heuristic + } + } + if (type === ActionType.LevelsOfDetailThresholds && fieldCount1 === 6) { + game = br.game = Game.ArmoredCore6 + break heuristic + } + if (type === ActionType.BillboardEx && fieldCount2 === 46) { + game = br.game = Game.ArmoredCore6 + break heuristic + } + if (type === ActionType.MultiTextureBillboardEx && fieldCount2 === 47) { + game = br.game = Game.ArmoredCore6 + break heuristic + } + if (type === ActionType.Model && fieldCount2 === 39) { + game = br.game = Game.ArmoredCore6 + break heuristic + } + if (type === ActionType.DynamicTracer && fieldCount2 === 42) { + game = br.game = Game.ArmoredCore6 + break heuristic + } + if (type === ActionType.LensFlare) { + if (fieldCount1 > 75) { + game = br.game = Game.ArmoredCore6 + } else { + game = br.game = Game.EldenRing + } + break heuristic + } + if (type === ActionType.RichModel) { + if (fieldCount1 > 26 || propertyCount1 === 24) { + game = br.game = Game.ArmoredCore6 + } else { + game = br.game = Game.EldenRing + } + break heuristic + } + game = Game.EldenRing + } const data = getActionGameData(type, game) if ( section10Count <= data.section10s.length && @@ -6098,12 +6167,12 @@ function readAnyAction(br: BinaryReader, game: Game): AnyAction { propertyCount1 <= data.properties1.length && propertyCount2 <= data.properties2.length ) { - return readDataAction(br, game, type, fieldCount1, propertyCount1, fieldCount2, propertyCount2, section10Count) + return readDataAction(br, data, type, fieldCount1, propertyCount1, fieldCount2, propertyCount2, section10Count) } else { - return readAction(br, game, type, fieldCount1, propertyCount1, fieldCount2, propertyCount2, section10Count) + return readAction(br, type, fieldCount1, propertyCount1, fieldCount2, propertyCount2, section10Count) } } else { - return readAction(br, game, type, fieldCount1, propertyCount1, fieldCount2, propertyCount2, section10Count) + return readAction(br, type, fieldCount1, propertyCount1, fieldCount2, propertyCount2, section10Count) } } @@ -6144,7 +6213,7 @@ function writeAnyActionFields(action: AnyAction, bw: BinaryWriter, game: Game, i } //#region Functions - Node -function readNode(br: BinaryReader, game: Game): Node { +function readNode(br: BinaryReader): Node { const type = br.readInt16() br.assertUint8(0) br.assertUint8(1) @@ -6162,27 +6231,27 @@ function readNode(br: BinaryReader, game: Game): Node { br.stepIn(nodeOffset) const nodes = [] for (let i = 0; i < nodeCount; ++i) { - nodes.push(readNode(br, game)) + nodes.push(readNode(br)) } br.stepOut() br.stepIn(effectOffset) const effects = [] for (let i = 0; i < effectCount; ++i) { - effects.push(readEffect(br, game)) + effects.push(readEffect(br)) } br.stepOut() br.stepIn(actionOffset) const actions = [] for (let i = 0; i < actionCount; ++i) { - actions.push(readAnyAction(br, game)) + actions.push(readAnyAction(br)) } br.stepOut() - if (game !== Game.Generic) switch (type) { + if (br.game !== Game.Generic) switch (type) { case NodeType.Root: - if (effectCount === 0 && actionCount === (game === Game.DarkSouls3 || game === Game.Sekiro ? 3 : 4)) { + if (effectCount === 0 && actionCount === (br.game === Game.DarkSouls3 || br.game === Game.Sekiro ? 3 : 4)) { return new RootNode( nodes, - game === Game.DarkSouls3 || game === Game.Sekiro ? null : + br.game === Game.DarkSouls3 || br.game === Game.Sekiro ? null : actions.find(e => e.type >= 700 && e.type <= 702) ?? new Action(ActionType.Unk700), actions.find(e => e.type === ActionType.Unk10100), actions.find(e => e.type === ActionType.Unk10400), @@ -6304,7 +6373,7 @@ function writeNodeActions(node: Node, bw: BinaryWriter, game: Game, index: numbe } //#region Functions - Effect -function readEffect(br: BinaryReader, game: Game): IEffect { +function readEffect(br: BinaryReader): IEffect { const type = br.readInt16() br.assertUint8(0) br.assertUint8(1) @@ -6318,10 +6387,10 @@ function readEffect(br: BinaryReader, game: Game): IEffect { br.stepIn(actionOffset) const actions = [] for (let i = 0; i < actionCount; ++i) { - actions.push(readAnyAction(br, game)) + actions.push(readAnyAction(br)) } br.stepOut() - if (game === Game.Generic) { + if (br.game === Game.Generic) { return new Effect(type, actions) } else if (type === EffectType.LevelsOfDetail && actionCount === 1 && actions[0] instanceof LevelsOfDetailThresholds) { const lod = actions[0] @@ -6362,7 +6431,7 @@ function writeEffectActions(effect: IEffect, bw: BinaryWriter, game: Game, index } //#region Functions - Modifier -function readModifier(br: BinaryReader, game: Game): IModifier { +function readModifier(br: BinaryReader): IModifier { const typeEnumA = br.readUint16() const modifierType = Modifier.enumAToType(typeEnumA) if (!(modifierType in ModifierType)) { @@ -6384,10 +6453,10 @@ function readModifier(br: BinaryReader, game: Game): IModifier { br.stepIn(propertyOffset) const properties = [] for (let i = 0; i < propertyCount; ++i) { - properties.push(readProperty(br, game, true)) + properties.push(readProperty(br, true)) } br.stepOut() - if (game === Game.Generic) { + if (br.game === Game.Generic) { const fields = readFieldsAt(br, fieldOffset, fieldCount, this) return new GenericModifier(modifierType, valueType, fields, properties) } else switch (modifierType) { @@ -6810,7 +6879,11 @@ function arrayOf(size: number, func: (index: number) => T): T[] { } function randomInt32() { - return Math.random() * 2**32 | 0 + let v: number + do { + v = Math.random() * 2**32 | 0 + } while (Math.abs(v) < 1000) + return v } function uniqueArray(a: T[]) { @@ -7629,8 +7702,20 @@ function fieldsCount(fields: Field[]) { return count } -function getComponentCount(v: AnyValue): number { - return isVector(v) ? v.length : isVectorValue(v) ? v.componentCount : 1 +function getComponentCount(v: AnyValue): 1 | 2 | 3 | 4 { + const vt = isVector(v) ? v.length : isVectorValue(v) ? v.componentCount : 1 + if (vt < 1 || vt > 4) { + throw new Error('Invalid value.') + } + return vt +} + +/** + * Gets the {@link ValueType} of a given value. + * @param v The value to get the type of. + */ +function getValueType(v: TypeMap.Property[T] | TypeMap.PropertyValue[T]): T { + return (getComponentCount(v) - 1) as T } function setVectorComponent(vec: VectorValue, componentIndex: number, value: ScalarValue): VectorValue { @@ -7733,8 +7818,10 @@ function hsvToRgb(h: number, s: number, v: number): Vector3 { * ]) * ``` */ -function hex(strings: TemplateStringsArray, ...values: any[]): number[] { - let hexStr = strings.reduce((result, str, i) => result + str + (values[i] || ''), '') +function hex(strings: TemplateStringsArray, ...values: any[]): Vector4 { + let hexStr = strings + .reduce((result, str, i) => result + str + (values[i] || ''), '') + .replace(/^#/, '') if (hexStr.length === 3) { hexStr = hexStr.split('').map(char => char + char).join('') } else if (hexStr.length === 4) { @@ -7941,6 +8028,57 @@ function propValueEqual(a: PropertyValue, b: PropertyValue) { return false } +function anyMatch(iterator: Iterable, predicate: (value: T) => boolean): boolean { + for (const value of iterator) { + if (predicate(value)) { + return true + } + } + return false +} + +/** + * Generates a random seed of the given type. + * + * The function can be useful together with the randomization modifiers for + * properties: + * - {@link RandomDeltaModifier} + * - {@link RandomRangeModifier} + * - {@link RandomFractionModifier} + * + * Or the functions that generate simple properties with these modifiers: + * - {@link RandomDeltaProperty} + * - {@link RandomRangeProperty} + * - {@link RandomFractionProperty} + * + * To link multiple random values, so that they change the same amount if + * randomized at the same time, you can use this function to generate a seed + * that you can use multiple times. For example: + * ```js + * const seed = randomSeed(ValueType.Vector4) + * new PointLight({ + * separateSpecular: true, + * diffuseColor: RandomDeltaProperty([1, 1, 1, 1], [0.5, 0.5, 0.5, 0], seed), + * specularColor: RandomDeltaProperty([1, 1, 1, 1], [0.5, 0.5, 0.5, 0], seed), + * }) + * ``` + * Here, the point light that was created will randomize to have the same + * specular color as its diffuse color. This example is not the best, because + * this could also have been done by setting + * {@link PointLightParams.separateSpecular separateSpecular} to false, but it + * should at least show how this functions. + * @param type The type of seed to generate. + */ +function randomSeed(type: ValueType = ValueType.Scalar): TypeMap.PropertyValue[typeof type] { + switch (type) { + case ValueType.Scalar: return randomInt32() + case ValueType.Vector2: return [randomInt32(), randomInt32()] + case ValueType.Vector3: return [randomInt32(), randomInt32(), randomInt32()] + case ValueType.Vector4: return [randomInt32(), randomInt32(), randomInt32(), randomInt32()] + default: throw new Error(`Invalid value type: ${type}`) + } +} + const ActionDataConversion = { [ActionType.StaticNodeTransform]: { read(props: StaticNodeTransformParams, game: Game) { @@ -8335,6 +8473,7 @@ class BinaryReader extends DataView { position: number = 0 littleEndian: boolean = true round: boolean = false + game: Game = Game.Heuristic steps: number[] = [] getInt16(offset: number) { @@ -8689,6 +8828,8 @@ export interface FXRReadOptions { */ class FXR { + #gameHint: Game = Game.Generic + constructor( public id: number, public root: RootNode | GenericNode = new RootNode, @@ -8719,7 +8860,18 @@ class FXR { * Parses an FXR file. * @param buffer {@link ArrayBuffer} or {@link ArrayBufferView} of the * contents of the FXR file to parse. - * @param game The game the FXR file is for. + * @param game The game the FXR file is for. Defaults to + * {@link Game.Heuristic}, which will make the function try to figure out + * what it is for automatically. + * + * Accuracy of {@link Game.Heuristic} (with valid FXRs): + * - Dark Souls 3: **Perfect, 100%** + * - Sekiro: **Perfect, 100%** + * - Elden Ring: **Low** + * - Armored Core 6: **Low** + * + * For Elden Ring and Armored Core 6, it will still correctly parse the file, + * but {@link gameHint} will be *very* unreliable. */ static read( this: T, @@ -8737,7 +8889,7 @@ class FXR { static read( this: T, input: string | ArrayBuffer | ArrayBufferView, - game: Game = Game.EldenRing, + game: Game = Game.Heuristic, { round }: FXRReadOptions = {} ): Promise> | InstanceType { round ??= false @@ -8751,14 +8903,18 @@ class FXR { } const br = new BinaryReader(input) br.round = round + br.game = game br.assertASCII('FXR\0') br.assertInt16(0) - if (game === Game.Generic) { - br.assertInt16( + if (game === Game.Generic || game === Game.Heuristic) { + const version = br.assertInt16( FXRVersion.DarkSouls3, FXRVersion.Sekiro ) + if (game === Game.Heuristic && version === FXRVersion.DarkSouls3) { + br.game = game = Game.DarkSouls3 + } } else { br.assertInt16(GameVersionMap[game]) } @@ -8827,9 +8983,9 @@ class FXR { br.stepOut() br.position = nodeOffset - const rootNode = readNode(br, game) as RootNode | GenericNode + const rootNode = readNode(br) as RootNode | GenericNode - return new this( + const fxr = new this( id, rootNode, states, @@ -8838,14 +8994,37 @@ class FXR { // externalValues2, // unkEmpty, ) as InstanceType + + fxr.#gameHint = br.game + + return fxr } /** * Serialize to the FXR file format. * @param game The game to write this FXR for. + * + * Defaults to {@link Game.Heuristic}, which means it will use the + * {@link gameHint game hint}, unless the hint is also + * {@link Game.Heuristic}, in which case it will check if the FXR contains + * anything AC6-specific, and then use {@link Game.ArmoredCore6} if it does, + * and otherwise throw an error, because the game is unknowable. * @returns ArrayBuffer containing the contents of the FXR file. */ - toArrayBuffer(game: Game = Game.EldenRing) { + toArrayBuffer(game: Game = Game.Heuristic) { + heuristic: if (game === Game.Heuristic) { + if (this.#gameHint === Game.Heuristic) { + if ( + anyMatch(this.root.walkActions(), a => a.type === ActionType.Unk800) || + anyMatch(this.root.walkProperties(), p => p instanceof ComponentSequenceProperty) + ) { + game = Game.ArmoredCore6 + break heuristic + } + throw new Error('What game this FXR is for is unknowable. Please provide a game to write the FXR for.') + } + game = this.#gameHint + } assertValidFXRID(this.id) const version = GameVersionMap[game] const bw = new BinaryWriter @@ -9064,29 +9243,29 @@ class FXR { await fs.writeFile(path, new Uint8Array(this.toArrayBuffer(game))) } - static fromJSON(obj: { + static fromJSON(this: T, obj: { id: number states?: (string | string[])[] root?: any } | { version: string fxr: any - }) { - if (obj instanceof FXR) { - return obj + }): InstanceType { + if (obj instanceof this) { + return obj as InstanceType } if ('fxr' in obj) { - return new FXR( + return new this( obj.fxr.id, 'root' in obj.fxr ? Node.fromJSON(obj.fxr.root) as RootNode | GenericNode : undefined, 'states' in obj.fxr ? obj.fxr.states.map(state => State.from(state)) : undefined, - ) + ) as InstanceType } - return new FXR( + return new this( obj.id, 'root' in obj ? Node.fromJSON(obj.root) as RootNode | GenericNode : undefined, 'states' in obj ? obj.states.map(state => State.from(state)) : undefined, - ) + ) as InstanceType } toJSON() { @@ -9291,6 +9470,20 @@ class FXR { return current } + /** + * The game hint is set by {@link FXR.read} to keep track of what game the + * FXR file it read was for. It is used by {@link FXR.toArrayBuffer} and + * {@link FXR.saveAs} when they are called with {@link Game.Heuristic}. + * + * For FXR objects created in any other way, the game hint will always be + * {@link Game.Generic}. + * + * This value can be checked to find out what game the {@link FXR.read} + * function read it as, which might be useful if it was called with + * {@link Game.Heuristic}. + */ + get gameHint() { return this.#gameHint } + } //#region State @@ -9975,6 +10168,9 @@ abstract class Node { if (isVectorValue(c[k]) && getComponentCount(c[k] as AnyValue) === 4) { ;(c[k] as any) = setVectorComponent(c[k] as any, 3, alpha) } + if (c[k] instanceof Property) { + ;(c[k] as VectorProperty) = c[k].minify() + } } else { if (isVectorValue(c[k])) { ;(c[k] as VectorValue) = setVectorComponent( @@ -9984,6 +10180,9 @@ abstract class Node { ) as VectorValue, 3, separateComponents(c[k])[3] ) + if (c[k] instanceof Property) { + ;(c[k] as VectorProperty) = c[k].minify() + } } else { ;(c[k] as any) = ( paletteProp instanceof Property ? paletteProp.clone() : @@ -10820,7 +11019,7 @@ class BasicEffect implements IEffect { nodeForceMovement: ActionSlots.NodeForceMovementAction = new Action particleForceMovement: ActionSlots.ParticleForceMovementAction = new Action - constructor(params: BasicEffectParams | AnyAction[]) { + constructor(params: BasicEffectParams | AnyAction[] = []) { if (Array.isArray(params)) { for (const action of params) { const index = EffectActionSlots[EffectType.Basic].findIndex(a => a.includes(action.type)) @@ -11012,7 +11211,7 @@ class NodeEmitterEffect implements IEffect { emissionAudio: ActionSlots.EmissionAudioAction = new Action nodeForceMovement: ActionSlots.NodeForceMovementAction = new Action - constructor(params: NodeEmitterEffectParams | AnyAction[]) { + constructor(params: NodeEmitterEffectParams | AnyAction[] = []) { if (Array.isArray(params)) { for (const action of params) { const index = EffectActionSlots[EffectType.NodeEmitter].findIndex(a => a.includes(action.type)) @@ -12578,21 +12777,21 @@ export interface NodeSoundParams { */ sound?: number /** - * Controls whether the sound will repeat or not. + * Volume multiplier. * * Does not seem to work in Elden Ring, and probably doesn't in Armored Core 6 either. * - * **Default**: `false` + * **Default**: `1` */ - repeat?: boolean + volume?: number /** - * Volume multiplier. + * Controls whether the sound will repeat or not. * * Does not seem to work in Elden Ring, and probably doesn't in Armored Core 6 either. * - * **Default**: `1` + * **Default**: `false` */ - volume?: number + repeat?: boolean } /** @@ -12609,17 +12808,17 @@ class NodeSound extends DataAction { */ sound: number /** - * Controls whether the sound will repeat or not. + * Volume multiplier. * * Does not seem to work in Elden Ring, and probably doesn't in Armored Core 6 either. */ - repeat: boolean + volume: number /** - * Volume multiplier. + * Controls whether the sound will repeat or not. * * Does not seem to work in Elden Ring, and probably doesn't in Armored Core 6 either. */ - volume: number + repeat: boolean constructor(props: NodeSoundParams = {}) { super(ActionType.NodeSound, {isAppearance:false,isParticle:false}) this.assign(props) @@ -13888,12 +14087,6 @@ class NodeSpeedSpin extends DataAction { } export interface NodeAttributesParams { - /** - * Controls how the node is attached to the parent node. - * - * **Default**: {@link AttachMode.Parent} - */ - attachment?: AttachMode /** * The node duration in seconds. Can be set to -1 to make the node last forever. * @@ -13914,6 +14107,12 @@ export interface NodeAttributesParams { * **Default**: `1` */ unk_ds3_f1_1?: number + /** + * Controls how the node is attached to the parent node. + * + * **Default**: {@link AttachMode.Parent} + */ + attachment?: AttachMode /** * Unknown float. * @@ -13931,10 +14130,6 @@ export interface NodeAttributesParams { class NodeAttributes extends DataAction { declare readonly type: ActionType.NodeAttributes declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false} - /** - * Controls how the node is attached to the parent node. - */ - attachment: AttachMode /** * The node duration in seconds. Can be set to -1 to make the node last forever. * @@ -13946,6 +14141,10 @@ class NodeAttributes extends DataAction { */ delay: number unk_ds3_f1_1: number + /** + * Controls how the node is attached to the parent node. + */ + attachment: AttachMode unk_ds3_f1_3: number constructor(props: NodeAttributesParams = {}) { super(ActionType.NodeAttributes, {isAppearance:false,isParticle:false}) @@ -13954,12 +14153,6 @@ class NodeAttributes extends DataAction { } export interface ParticleAttributesParams { - /** - * Controls how the particles are attached to the node. - * - * **Default**: {@link AttachMode.Parent} - */ - attachment?: AttachMode /** * The particle duration in seconds. Can be set to -1 to make particles last forever. * @@ -13968,6 +14161,12 @@ export interface ParticleAttributesParams { * **Argument**: {@link PropertyArgument.Constant0 Constant 0} */ duration?: ScalarValue + /** + * Controls how the particles are attached to the node. + * + * **Default**: {@link AttachMode.Parent} + */ + attachment?: AttachMode } /** @@ -13979,16 +14178,16 @@ export interface ParticleAttributesParams { class ParticleAttributes extends DataAction { declare readonly type: ActionType.ParticleAttributes declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false} - /** - * Controls how the particles are attached to the node. - */ - attachment: AttachMode /** * The particle duration in seconds. Can be set to -1 to make particles last forever. * * **Argument**: {@link PropertyArgument.Constant0 Constant 0} */ duration: ScalarValue + /** + * Controls how the particles are attached to the node. + */ + attachment: AttachMode constructor(props: ParticleAttributesParams = {}) { super(ActionType.ParticleAttributes, {isAppearance:false,isParticle:false}) this.assign(props) @@ -13997,107 +14196,107 @@ class ParticleAttributes extends DataAction { export interface Unk130Params { /** - * Unknown integer. + * Unknown. * - * **Default**: `1` + * **Default**: `0` */ - unk_ds3_f1_0?: number + unk_ds3_p1_0?: ScalarValue /** - * Unknown integer. + * Unknown. * * **Default**: `0` */ - unk_ds3_f1_1?: number + unk_ds3_p1_1?: ScalarValue /** - * Unknown integer. + * Unknown. * * **Default**: `0` */ - unk_ds3_f1_2?: number + unk_ds3_p1_2?: ScalarValue /** - * Unknown integer. + * Unknown. * * **Default**: `0` */ - unk_ds3_f1_3?: number + unk_ds3_p1_3?: ScalarValue /** - * Unknown integer. + * Unknown. * * **Default**: `0` */ - unk_ds3_f1_4?: number + unk_ds3_p1_4?: ScalarValue /** - * Unknown integer. + * Unknown. * * **Default**: `0` */ - unk_ds3_f1_5?: number + unk_ds3_p1_5?: ScalarValue /** - * Unknown integer. + * Unknown. * * **Default**: `0` */ - unk_ds3_f1_6?: number + unk_ds3_p1_6?: ScalarValue /** - * Unknown integer. + * Unknown. * * **Default**: `0` */ - unk_ds3_f1_7?: number + unk_ds3_p1_7?: ScalarValue /** * Unknown integer. * - * **Default**: `0` + * **Default**: `1` */ - unk_ds3_f1_8?: number + unk_ds3_f1_0?: number /** - * Unknown. + * Unknown integer. * * **Default**: `0` */ - unk_ds3_p1_0?: ScalarValue + unk_ds3_f1_1?: number /** - * Unknown. + * Unknown integer. * * **Default**: `0` */ - unk_ds3_p1_1?: ScalarValue + unk_ds3_f1_2?: number /** - * Unknown. + * Unknown integer. * * **Default**: `0` */ - unk_ds3_p1_2?: ScalarValue + unk_ds3_f1_3?: number /** - * Unknown. + * Unknown integer. * * **Default**: `0` */ - unk_ds3_p1_3?: ScalarValue + unk_ds3_f1_4?: number /** - * Unknown. + * Unknown integer. * * **Default**: `0` */ - unk_ds3_p1_4?: ScalarValue + unk_ds3_f1_5?: number /** - * Unknown. + * Unknown integer. * * **Default**: `0` */ - unk_ds3_p1_5?: ScalarValue + unk_ds3_f1_6?: number /** - * Unknown. + * Unknown integer. * * **Default**: `0` */ - unk_ds3_p1_6?: ScalarValue + unk_ds3_f1_7?: number /** - * Unknown. + * Unknown integer. * * **Default**: `0` */ - unk_ds3_p1_7?: ScalarValue + unk_ds3_f1_8?: number } /** @@ -14109,6 +14308,14 @@ export interface Unk130Params { class Unk130 extends DataAction { declare readonly type: ActionType.Unk130 declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false} + unk_ds3_p1_0: ScalarValue + unk_ds3_p1_1: ScalarValue + unk_ds3_p1_2: ScalarValue + unk_ds3_p1_3: ScalarValue + unk_ds3_p1_4: ScalarValue + unk_ds3_p1_5: ScalarValue + unk_ds3_p1_6: ScalarValue + unk_ds3_p1_7: ScalarValue unk_ds3_f1_0: number unk_ds3_f1_1: number unk_ds3_f1_2: number @@ -14118,14 +14325,6 @@ class Unk130 extends DataAction { unk_ds3_f1_6: number unk_ds3_f1_7: number unk_ds3_f1_8: number - unk_ds3_p1_0: ScalarValue - unk_ds3_p1_1: ScalarValue - unk_ds3_p1_2: ScalarValue - unk_ds3_p1_3: ScalarValue - unk_ds3_p1_4: ScalarValue - unk_ds3_p1_5: ScalarValue - unk_ds3_p1_6: ScalarValue - unk_ds3_p1_7: ScalarValue constructor(props: Unk130Params = {}) { super(ActionType.Unk130, {isAppearance:false,isParticle:false}) this.assign(props) @@ -14133,17 +14332,6 @@ class Unk130 extends DataAction { } export interface ParticleModifierParams { - /** - * Scales the particles emitted from this node uniformly based on {@link scaleX}. The other scale properties in this action have no effect when this is enabled. - * - * **Default**: `false` - * - * See also: - * - {@link scaleX} - * - {@link scaleY} - * - {@link scaleZ} - */ - uniformScale?: boolean /** * Controls the speed of the particles emitted from this node, but only if the effect has an action in the {@link ActionSlots.ParticleMovementAction ParticleMovement slot} that enables acceleration of particles. The direction is the particle's {@link InitialDirection initial direction}. * @@ -14190,6 +14378,17 @@ export interface ParticleModifierParams { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ color?: Vector4Value + /** + * Scales the particles emitted from this node uniformly based on {@link scaleX}. The other scale properties in this action have no effect when this is enabled. + * + * **Default**: `false` + * + * See also: + * - {@link scaleX} + * - {@link scaleY} + * - {@link scaleZ} + */ + uniformScale?: boolean } /** @@ -14203,15 +14402,6 @@ export interface ParticleModifierParams { class ParticleModifier extends DataAction { declare readonly type: ActionType.ParticleModifier declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false} - /** - * Scales the particles emitted from this node uniformly based on {@link scaleX}. The other scale properties in this action have no effect when this is enabled. - * - * See also: - * - {@link scaleX} - * - {@link scaleY} - * - {@link scaleZ} - */ - uniformScale: boolean /** * Controls the speed of the particles emitted from this node, but only if the effect has an action in the {@link ActionSlots.ParticleMovementAction ParticleMovement slot} that enables acceleration of particles. The direction is the particle's {@link InitialDirection initial direction}. * @@ -14248,6 +14438,15 @@ class ParticleModifier extends DataAction { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ color: Vector4Value + /** + * Scales the particles emitted from this node uniformly based on {@link scaleX}. The other scale properties in this action have no effect when this is enabled. + * + * See also: + * - {@link scaleX} + * - {@link scaleY} + * - {@link scaleZ} + */ + uniformScale: boolean constructor(props: ParticleModifierParams = {}) { super(ActionType.ParticleModifier, {isAppearance:false,isParticle:false}) this.assign(props) @@ -14526,25 +14725,21 @@ export interface EqualDistanceEmitterParams { */ threshold?: ScalarValue /** - * Maximum number of concurrent particles. Can be set to -1 to disable the limit. + * Unknown. * * **Default**: `-1` * * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ - maxConcurrent?: ScalarValue + unk_ds3_p1_2?: ScalarValue /** - * Unknown integer. + * Maximum number of concurrent particles. Can be set to -1 to disable the limit. * - * **Default**: `1` - */ - unk_ds3_f1_1?: number - /** - * Unknown integer. + * **Default**: `-1` * - * **Default**: `0` + * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ - unk_sdt_f1_1?: number + maxConcurrent?: ScalarValue /** * Unknown. * @@ -14552,13 +14747,17 @@ export interface EqualDistanceEmitterParams { */ unk_ds3_p1_1?: ScalarValue /** - * Unknown. + * Unknown integer. * - * **Default**: `-1` + * **Default**: `1` + */ + unk_ds3_f1_1?: number + /** + * Unknown integer. * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} + * **Default**: `0` */ - unk_ds3_p1_2?: ScalarValue + unk_sdt_f1_1?: number } /** @@ -14576,16 +14775,16 @@ class EqualDistanceEmitter extends DataAction { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ threshold: ScalarValue + unk_ds3_p1_2: ScalarValue /** * Maximum number of concurrent particles. Can be set to -1 to disable the limit. * * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ maxConcurrent: ScalarValue + unk_ds3_p1_1: ScalarValue unk_ds3_f1_1: number unk_sdt_f1_1: number - unk_ds3_p1_1: ScalarValue - unk_ds3_p1_2: ScalarValue constructor(props: EqualDistanceEmitterParams = {}) { super(ActionType.EqualDistanceEmitter, {isAppearance:false,isParticle:false}) this.assign(props) @@ -14632,12 +14831,6 @@ class PointEmitterShape extends DataAction { } export interface DiskEmitterShapeParams { - /** - * Controls the initial direction for particles. See {@link InitialDirection} for more information. - * - * **Default**: {@link InitialDirection.Emitter} - */ - direction?: InitialDirection /** * Radius of the disk. * @@ -14658,6 +14851,12 @@ export interface DiskEmitterShapeParams { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ distribution?: ScalarValue + /** + * Controls the initial direction for particles. See {@link InitialDirection} for more information. + * + * **Default**: {@link InitialDirection.Emitter} + */ + direction?: InitialDirection } /** @@ -14669,10 +14868,6 @@ export interface DiskEmitterShapeParams { class DiskEmitterShape extends DataAction { declare readonly type: ActionType.DiskEmitterShape declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false} - /** - * Controls the initial direction for particles. See {@link InitialDirection} for more information. - */ - direction: InitialDirection /** * Radius of the disk. * @@ -14689,6 +14884,10 @@ class DiskEmitterShape extends DataAction { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ distribution: ScalarValue + /** + * Controls the initial direction for particles. See {@link InitialDirection} for more information. + */ + direction: InitialDirection constructor(props: DiskEmitterShapeParams = {}) { super(ActionType.DiskEmitterShape, {isAppearance:false,isParticle:false}) this.assign(props) @@ -14696,12 +14895,6 @@ class DiskEmitterShape extends DataAction { } export interface RectangleEmitterShapeParams { - /** - * Controls the initial direction for particles. See {@link InitialDirection} for more information. - * - * **Default**: {@link InitialDirection.Emitter} - */ - direction?: InitialDirection /** * Width of the rectangle. * @@ -14730,6 +14923,12 @@ export interface RectangleEmitterShapeParams { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ distribution?: ScalarValue + /** + * Controls the initial direction for particles. See {@link InitialDirection} for more information. + * + * **Default**: {@link InitialDirection.Emitter} + */ + direction?: InitialDirection } /** @@ -14741,10 +14940,6 @@ export interface RectangleEmitterShapeParams { class RectangleEmitterShape extends DataAction { declare readonly type: ActionType.RectangleEmitterShape declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false} - /** - * Controls the initial direction for particles. See {@link InitialDirection} for more information. - */ - direction: InitialDirection /** * Width of the rectangle. * @@ -14767,6 +14962,10 @@ class RectangleEmitterShape extends DataAction { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ distribution: ScalarValue + /** + * Controls the initial direction for particles. See {@link InitialDirection} for more information. + */ + direction: InitialDirection constructor(props: RectangleEmitterShapeParams = {}) { super(ActionType.RectangleEmitterShape, {isAppearance:false,isParticle:false}) this.assign(props) @@ -14774,12 +14973,6 @@ class RectangleEmitterShape extends DataAction { } export interface SphereEmitterShapeParams { - /** - * If true, particles will be emitted from anywhere within the sphere. Otherwise the particles will be emitted only from the surface of the sphere. - * - * **Default**: `true` - */ - emitInside?: boolean /** * Radius of the sphere. * @@ -14788,6 +14981,12 @@ export interface SphereEmitterShapeParams { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ radius?: ScalarValue + /** + * If true, particles will be emitted from anywhere within the sphere. Otherwise the particles will be emitted only from the surface of the sphere. + * + * **Default**: `true` + */ + emitInside?: boolean } /** @@ -14799,16 +14998,16 @@ export interface SphereEmitterShapeParams { class SphereEmitterShape extends DataAction { declare readonly type: ActionType.SphereEmitterShape declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false} - /** - * If true, particles will be emitted from anywhere within the sphere. Otherwise the particles will be emitted only from the surface of the sphere. - */ - emitInside: boolean /** * Radius of the sphere. * * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ radius: ScalarValue + /** + * If true, particles will be emitted from anywhere within the sphere. Otherwise the particles will be emitted only from the surface of the sphere. + */ + emitInside: boolean constructor(props: SphereEmitterShapeParams = {}) { super(ActionType.SphereEmitterShape, {isAppearance:false,isParticle:false}) this.assign(props) @@ -14816,18 +15015,6 @@ class SphereEmitterShape extends DataAction { } export interface BoxEmitterShapeParams { - /** - * Controls the initial direction for particles. See {@link InitialDirection} for more information. - * - * **Default**: {@link InitialDirection.Emitter} - */ - direction?: InitialDirection - /** - * If true, particles will be emitted from anywhere within the cuboid. Otherwise the particles will be emitted only from the surface of the cuboid. - * - * **Default**: `true` - */ - emitInside?: boolean /** * Width of the cuboid. * @@ -14852,6 +15039,18 @@ export interface BoxEmitterShapeParams { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ sizeZ?: ScalarValue + /** + * Controls the initial direction for particles. See {@link InitialDirection} for more information. + * + * **Default**: {@link InitialDirection.Emitter} + */ + direction?: InitialDirection + /** + * If true, particles will be emitted from anywhere within the cuboid. Otherwise the particles will be emitted only from the surface of the cuboid. + * + * **Default**: `true` + */ + emitInside?: boolean } /** @@ -14863,14 +15062,6 @@ export interface BoxEmitterShapeParams { class BoxEmitterShape extends DataAction { declare readonly type: ActionType.BoxEmitterShape declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false} - /** - * Controls the initial direction for particles. See {@link InitialDirection} for more information. - */ - direction: InitialDirection - /** - * If true, particles will be emitted from anywhere within the cuboid. Otherwise the particles will be emitted only from the surface of the cuboid. - */ - emitInside: boolean /** * Width of the cuboid. * @@ -14889,6 +15080,14 @@ class BoxEmitterShape extends DataAction { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ sizeZ: ScalarValue + /** + * Controls the initial direction for particles. See {@link InitialDirection} for more information. + */ + direction: InitialDirection + /** + * If true, particles will be emitted from anywhere within the cuboid. Otherwise the particles will be emitted only from the surface of the cuboid. + */ + emitInside: boolean constructor(props: BoxEmitterShapeParams = {}) { super(ActionType.BoxEmitterShape, {isAppearance:false,isParticle:false}) this.assign(props) @@ -14896,6 +15095,22 @@ class BoxEmitterShape extends DataAction { } export interface CylinderEmitterShapeParams { + /** + * The radius of the cylinder. + * + * **Default**: `1` + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + */ + radius?: ScalarValue + /** + * The height of the cylinder. + * + * **Default**: `1` + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + */ + height?: ScalarValue /** * Controls the initial direction for particles. See {@link InitialDirection} for more information. * @@ -14914,22 +15129,6 @@ export interface CylinderEmitterShapeParams { * **Default**: `true` */ yAxis?: boolean - /** - * The radius of the cylinder. - * - * **Default**: `1` - * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} - */ - radius?: ScalarValue - /** - * The height of the cylinder. - * - * **Default**: `1` - * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} - */ - height?: ScalarValue } /** @@ -14941,18 +15140,6 @@ export interface CylinderEmitterShapeParams { class CylinderEmitterShape extends DataAction { declare readonly type: ActionType.CylinderEmitterShape declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false} - /** - * Controls the initial direction for particles. See {@link InitialDirection} for more information. - */ - direction: InitialDirection - /** - * If true, particles will be emitted from anywhere within the cylinder. Otherwise the particles will be emitted only from the surface of the cylinder, excluding the ends. - */ - emitInside: boolean - /** - * If true, the cylinder will be aligned with the Y-axis instead of the Z-axis. - */ - yAxis: boolean /** * The radius of the cylinder. * @@ -14965,6 +15152,18 @@ class CylinderEmitterShape extends DataAction { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ height: ScalarValue + /** + * Controls the initial direction for particles. See {@link InitialDirection} for more information. + */ + direction: InitialDirection + /** + * If true, particles will be emitted from anywhere within the cylinder. Otherwise the particles will be emitted only from the surface of the cylinder, excluding the ends. + */ + emitInside: boolean + /** + * If true, the cylinder will be aligned with the Y-axis instead of the Z-axis. + */ + yAxis: boolean constructor(props: CylinderEmitterShapeParams = {}) { super(ActionType.CylinderEmitterShape, {isAppearance:false,isParticle:false}) this.assign(props) @@ -14987,12 +15186,6 @@ class NoSpread extends DataAction { } export interface CircularSpreadParams { - /** - * No so much unknown, just unnamed. If enabled, this limits the possible directions to only positive values on one axis, effectively cutting the cone of possible directions in half. - * - * **Default**: `false` - */ - unk_er_f1_0?: boolean /** * The maximum change in direction in degrees, the angle of the cone. * @@ -15014,6 +15207,12 @@ export interface CircularSpreadParams { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ distribution?: ScalarValue + /** + * No so much unknown, just unnamed. If enabled, this limits the possible directions to only positive values on one axis, effectively cutting the cone of possible directions in half. + * + * **Default**: `false` + */ + unk_er_f1_0?: boolean } /** @@ -15025,10 +15224,6 @@ export interface CircularSpreadParams { class CircularSpread extends DataAction { declare readonly type: ActionType.CircularSpread declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false} - /** - * No so much unknown, just unnamed. If enabled, this limits the possible directions to only positive values on one axis, effectively cutting the cone of possible directions in half. - */ - unk_er_f1_0: boolean /** * The maximum change in direction in degrees, the angle of the cone. * @@ -15046,6 +15241,10 @@ class CircularSpread extends DataAction { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ distribution: ScalarValue + /** + * No so much unknown, just unnamed. If enabled, this limits the possible directions to only positive values on one axis, effectively cutting the cone of possible directions in half. + */ + unk_er_f1_0: boolean constructor(props: CircularSpreadParams = {}) { super(ActionType.CircularSpread, {isAppearance:false,isParticle:false}) this.assign(props) @@ -15053,12 +15252,6 @@ class CircularSpread extends DataAction { } export interface EllipticalSpreadParams { - /** - * No so much unknown, just unnamed. If enabled, this limits the possible directions to only positive values on one axis, effectively cutting the cone of possible directions in half. - * - * **Default**: `false` - */ - unk_er_f1_0?: boolean /** * The maximum change in direction in degrees, one of the angles of the elliptical cone. * @@ -15094,6 +15287,12 @@ export interface EllipticalSpreadParams { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ distribution?: ScalarValue + /** + * No so much unknown, just unnamed. If enabled, this limits the possible directions to only positive values on one axis, effectively cutting the cone of possible directions in half. + * + * **Default**: `false` + */ + unk_er_f1_0?: boolean } /** @@ -15105,10 +15304,6 @@ export interface EllipticalSpreadParams { class EllipticalSpread extends DataAction { declare readonly type: ActionType.EllipticalSpread declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false} - /** - * No so much unknown, just unnamed. If enabled, this limits the possible directions to only positive values on one axis, effectively cutting the cone of possible directions in half. - */ - unk_er_f1_0: boolean /** * The maximum change in direction in degrees, one of the angles of the elliptical cone. * @@ -15138,6 +15333,10 @@ class EllipticalSpread extends DataAction { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ distribution: ScalarValue + /** + * No so much unknown, just unnamed. If enabled, this limits the possible directions to only positive values on one axis, effectively cutting the cone of possible directions in half. + */ + unk_er_f1_0: boolean constructor(props: EllipticalSpreadParams = {}) { super(ActionType.EllipticalSpread, {isAppearance:false,isParticle:false}) this.assign(props) @@ -15292,15 +15491,39 @@ export interface PointSpriteParams { */ alphaMultiplier?: ScalarValue /** - * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * Unknown. * - * Note: - * - This has no effect if the "Effects Quality" setting is set to "Low". - * - This does not affect the natural bloom effect from high color values. + * **Default**: `0` + */ + unk_ds3_p2_2?: ScalarValue + /** + * Unknown. * - * **Default**: `[1, 1, 1, 0]` + * **Default**: `[1, 1, 1, 1]` */ - bloomColor?: Vector4 + unk_ds3_p2_3?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_4?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_5?: Vector4Value + /** + * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. + * + * This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. + * + * **Default**: `0` + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + */ + alphaThreshold?: ScalarValue /** * Unknown integer. * @@ -15319,6 +15542,18 @@ export interface PointSpriteParams { * **Default**: `0` */ unk_ds3_f1_4?: number + /** + * Unknown integer. + * + * **Default**: `1` + */ + unk_er_f1_3?: number + /** + * Unknown integer. + * + * **Default**: `1` + */ + unk_er_f1_4?: number /** * Unknown integer. * @@ -15344,11 +15579,31 @@ export interface PointSpriteParams { */ unk_ds3_f2_3?: number /** - * Unknown integer. + * Controls whether or not the particles have an additional bloom effect controlled by {@link bloomColor}. * - * **Default**: `1` + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * **Default**: `true` + * + * See also: + * - {@link bloomColor} */ - unk_ds3_f2_4?: number + bloom?: boolean + /** + * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * **Default**: `[1, 1, 1, 0]` + * + * See also: + * - {@link bloom} + */ + bloomColor?: Vector4 /** * Unknown float. * @@ -15380,37 +15635,37 @@ export interface PointSpriteParams { */ unk_ds3_f2_13?: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * **Default**: `-1` * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance?: number + minFadeDistance?: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * **Default**: `-1` * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance?: number + minDistance?: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -15529,40 +15784,6 @@ export interface PointSpriteParams { * **Default**: `0` */ unk_ds3_f2_29?: number - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p2_2?: ScalarValue - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_3?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_4?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_5?: Vector4Value - /** - * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - * - * This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. - * - * **Default**: `0` - * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} - */ - alphaThreshold?: ScalarValue /** * Unknown float. * @@ -15617,18 +15838,6 @@ export interface PointSpriteParams { * **Default**: `0` */ unk_sdt_f2_38?: number - /** - * Unknown integer. - * - * **Default**: `1` - */ - unk_er_f1_3?: number - /** - * Unknown integer. - * - * **Default**: `1` - */ - unk_er_f1_4?: number /** * Unknown integer. * @@ -15694,55 +15903,82 @@ class PointSprite extends DataAction { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ alphaMultiplier: ScalarValue + unk_ds3_p2_2: ScalarValue + unk_ds3_p2_3: Vector4Value + unk_ds3_p2_4: Vector4Value + unk_ds3_p2_5: Vector4Value /** - * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. * - * Note: - * - This has no effect if the "Effects Quality" setting is set to "Low". - * - This does not affect the natural bloom effect from high color values. + * This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ - bloomColor: Vector4 + alphaThreshold: ScalarValue unk_ds3_f1_2: number unk_ds3_f1_3: number unk_ds3_f1_4: number + unk_er_f1_3: number + unk_er_f1_4: number unk_ds3_f2_0: number unk_ds3_f2_1: number unk_ds3_f2_2: number unk_ds3_f2_3: number - unk_ds3_f2_4: number + /** + * Controls whether or not the particles have an additional bloom effect controlled by {@link bloomColor}. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * See also: + * - {@link bloomColor} + */ + bloom: boolean + /** + * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * See also: + * - {@link bloom} + */ + bloomColor: Vector4 unk_ds3_f2_9: number unk_ds3_f2_10: number unk_ds3_f2_11: number unk_ds3_f2_12: number unk_ds3_f2_13: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance: number + minFadeDistance: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance: number + minDistance: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -15803,18 +16039,6 @@ class PointSprite extends DataAction { unk_ds3_f2_27: number unk_ds3_f2_28: number unk_ds3_f2_29: number - unk_ds3_p2_2: ScalarValue - unk_ds3_p2_3: Vector4Value - unk_ds3_p2_4: Vector4Value - unk_ds3_p2_5: Vector4Value - /** - * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - * - * This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. - * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} - */ - alphaThreshold: ScalarValue unk_sdt_f2_30: number unk_sdt_f2_31: number unk_sdt_f2_32: number @@ -15824,8 +16048,6 @@ class PointSprite extends DataAction { unk_sdt_f2_36: number unk_sdt_f2_37: number unk_sdt_f2_38: number - unk_er_f1_3: number - unk_er_f1_4: number unk_er_f2_39: number constructor(props: PointSpriteParams = {}) { super(ActionType.PointSprite, {isAppearance:true,isParticle:true}) @@ -15918,21 +16140,57 @@ export interface LineParams { */ alphaMultiplier?: ScalarValue /** - * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * Unknown. * - * Note: - * - This has no effect if the "Effects Quality" setting is set to "Low". - * - This does not affect the natural bloom effect from high color values. + * **Default**: `0` + */ + unk_ds3_p2_2?: ScalarValue + /** + * Unknown. * - * **Default**: `[1, 1, 1, 0]` + * **Default**: `[1, 1, 1, 1]` */ - bloomColor?: Vector4 + unk_ds3_p2_3?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_4?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_5?: Vector4Value + /** + * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. + * + * This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. + * + * **Default**: `0` + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + */ + alphaThreshold?: ScalarValue /** * Unknown integer. * * **Default**: `-1` */ unk_ds3_f1_1?: number + /** + * Unknown integer. + * + * **Default**: `1` + */ + unk_er_f1_1?: number + /** + * Unknown integer. + * + * **Default**: `1` + */ + unk_er_f1_2?: number /** * Unknown integer. * @@ -15958,11 +16216,31 @@ export interface LineParams { */ unk_ds3_f2_3?: number /** - * Unknown integer. + * Controls whether or not the particles have an additional bloom effect controlled by {@link bloomColor}. * - * **Default**: `1` + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * **Default**: `true` + * + * See also: + * - {@link bloomColor} */ - unk_ds3_f2_4?: number + bloom?: boolean + /** + * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * **Default**: `[1, 1, 1, 0]` + * + * See also: + * - {@link bloom} + */ + bloomColor?: Vector4 /** * Unknown float. * @@ -15994,37 +16272,37 @@ export interface LineParams { */ unk_ds3_f2_13?: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * **Default**: `-1` * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance?: number + minFadeDistance?: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * **Default**: `-1` * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance?: number + minDistance?: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -16143,40 +16421,6 @@ export interface LineParams { * **Default**: `0` */ unk_ds3_f2_29?: number - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p2_2?: ScalarValue - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_3?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_4?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_5?: Vector4Value - /** - * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - * - * This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. - * - * **Default**: `0` - * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} - */ - alphaThreshold?: ScalarValue /** * Unknown integer. * @@ -16239,18 +16483,6 @@ export interface LineParams { * **Default**: `0` */ unk_sdt_f2_39?: number - /** - * Unknown integer. - * - * **Default**: `1` - */ - unk_er_f1_1?: number - /** - * Unknown integer. - * - * **Default**: `1` - */ - unk_er_f1_2?: number } /** @@ -16325,53 +16557,80 @@ class Line extends DataAction { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ alphaMultiplier: ScalarValue + unk_ds3_p2_2: ScalarValue + unk_ds3_p2_3: Vector4Value + unk_ds3_p2_4: Vector4Value + unk_ds3_p2_5: Vector4Value /** - * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. * - * Note: - * - This has no effect if the "Effects Quality" setting is set to "Low". - * - This does not affect the natural bloom effect from high color values. + * This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ - bloomColor: Vector4 + alphaThreshold: ScalarValue unk_ds3_f1_1: number + unk_er_f1_1: number + unk_er_f1_2: number unk_ds3_f2_0: number unk_ds3_f2_1: number unk_ds3_f2_2: number unk_ds3_f2_3: number - unk_ds3_f2_4: number + /** + * Controls whether or not the particles have an additional bloom effect controlled by {@link bloomColor}. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * See also: + * - {@link bloomColor} + */ + bloom: boolean + /** + * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * See also: + * - {@link bloom} + */ + bloomColor: Vector4 unk_ds3_f2_9: number unk_ds3_f2_10: number unk_ds3_f2_11: number unk_ds3_f2_12: number unk_ds3_f2_13: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance: number + minFadeDistance: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance: number + minDistance: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -16432,18 +16691,6 @@ class Line extends DataAction { unk_ds3_f2_27: number unk_ds3_f2_28: number unk_ds3_f2_29: number - unk_ds3_p2_2: ScalarValue - unk_ds3_p2_3: Vector4Value - unk_ds3_p2_4: Vector4Value - unk_ds3_p2_5: Vector4Value - /** - * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - * - * This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. - * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} - */ - alphaThreshold: ScalarValue unk_sdt_f2_30: number /** * When set to 1, this stops the particles from being shown indoors. @@ -16459,8 +16706,6 @@ class Line extends DataAction { unk_sdt_f2_37: number unk_sdt_f2_38: number unk_sdt_f2_39: number - unk_er_f1_1: number - unk_er_f1_2: number constructor(props: LineParams = {}) { super(ActionType.Line, {isAppearance:true,isParticle:true}) this.assign(props) @@ -16571,21 +16816,57 @@ export interface QuadLineParams { */ alphaMultiplier?: ScalarValue /** - * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * Unknown. * - * Note: - * - This has no effect if the "Effects Quality" setting is set to "Low". - * - This does not affect the natural bloom effect from high color values. + * **Default**: `0` + */ + unk_ds3_p2_2?: ScalarValue + /** + * Unknown. * - * **Default**: `[1, 1, 1, 0]` + * **Default**: `[1, 1, 1, 1]` */ - bloomColor?: Vector4 + unk_ds3_p2_3?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_4?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_5?: Vector4Value + /** + * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. + * + * This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. + * + * **Default**: `0` + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + */ + alphaThreshold?: ScalarValue /** * Unknown integer. * * **Default**: `-1` */ unk_ds3_f1_1?: number + /** + * Unknown integer. + * + * **Default**: `1` + */ + unk_er_f1_1?: number + /** + * Unknown integer. + * + * **Default**: `1` + */ + unk_er_f1_2?: number /** * Unknown integer. * @@ -16611,11 +16892,31 @@ export interface QuadLineParams { */ unk_ds3_f2_3?: number /** - * Unknown integer. + * Controls whether or not the particles have an additional bloom effect controlled by {@link bloomColor}. * - * **Default**: `1` + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * **Default**: `true` + * + * See also: + * - {@link bloomColor} */ - unk_ds3_f2_4?: number + bloom?: boolean + /** + * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * **Default**: `[1, 1, 1, 0]` + * + * See also: + * - {@link bloom} + */ + bloomColor?: Vector4 /** * Unknown float. * @@ -16647,37 +16948,37 @@ export interface QuadLineParams { */ unk_ds3_f2_13?: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * **Default**: `-1` * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance?: number + minFadeDistance?: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * **Default**: `-1` * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance?: number + minDistance?: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -16796,40 +17097,6 @@ export interface QuadLineParams { * **Default**: `0` */ unk_ds3_f2_29?: number - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p2_2?: ScalarValue - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_3?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_4?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_5?: Vector4Value - /** - * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - * - * This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. - * - * **Default**: `0` - * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} - */ - alphaThreshold?: ScalarValue /** * Unknown float. * @@ -16890,18 +17157,6 @@ export interface QuadLineParams { * **Default**: `0` */ unk_sdt_f2_39?: number - /** - * Unknown integer. - * - * **Default**: `1` - */ - unk_er_f1_1?: number - /** - * Unknown integer. - * - * **Default**: `1` - */ - unk_er_f1_2?: number } /** @@ -16991,53 +17246,80 @@ class QuadLine extends DataAction { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ alphaMultiplier: ScalarValue + unk_ds3_p2_2: ScalarValue + unk_ds3_p2_3: Vector4Value + unk_ds3_p2_4: Vector4Value + unk_ds3_p2_5: Vector4Value /** - * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. * - * Note: - * - This has no effect if the "Effects Quality" setting is set to "Low". - * - This does not affect the natural bloom effect from high color values. + * This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ - bloomColor: Vector4 + alphaThreshold: ScalarValue unk_ds3_f1_1: number + unk_er_f1_1: number + unk_er_f1_2: number unk_ds3_f2_0: number unk_ds3_f2_1: number unk_ds3_f2_2: number unk_ds3_f2_3: number - unk_ds3_f2_4: number + /** + * Controls whether or not the particles have an additional bloom effect controlled by {@link bloomColor}. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * See also: + * - {@link bloomColor} + */ + bloom: boolean + /** + * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * See also: + * - {@link bloom} + */ + bloomColor: Vector4 unk_ds3_f2_9: number unk_ds3_f2_10: number unk_ds3_f2_11: number unk_ds3_f2_12: number unk_ds3_f2_13: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance: number + minFadeDistance: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance: number + minDistance: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -17098,18 +17380,6 @@ class QuadLine extends DataAction { unk_ds3_f2_27: number unk_ds3_f2_28: number unk_ds3_f2_29: number - unk_ds3_p2_2: ScalarValue - unk_ds3_p2_3: Vector4Value - unk_ds3_p2_4: Vector4Value - unk_ds3_p2_5: Vector4Value - /** - * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - * - * This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. - * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} - */ - alphaThreshold: ScalarValue unk_sdt_f2_30: number unk_sdt_f2_31: number unk_sdt_f2_32: number @@ -17120,8 +17390,6 @@ class QuadLine extends DataAction { unk_sdt_f2_37: number unk_sdt_f2_38: number unk_sdt_f2_39: number - unk_er_f1_1: number - unk_er_f1_2: number constructor(props: QuadLineParams = {}) { super(ActionType.QuadLine, {isAppearance:true,isParticle:true}) this.assign(props) @@ -17278,51 +17546,51 @@ export interface BillboardExParams { */ angularSpeedX?: ScalarValue /** - * Angular speed around the Y-axis in degrees per second. + * Multiplier for {@link angularSpeedX}. * - * **Default**: `0` + * **Default**: `1` * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link rotationY} - * - {@link angularSpeedMultiplierY} + * - {@link rotationX} */ - angularSpeedY?: ScalarValue + angularSpeedMultiplierX?: ScalarValue /** - * Angular speed around the Z-axis in degrees per second. + * Angular speed around the Y-axis in degrees per second. * * **Default**: `0` * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link rotationZ} - * - {@link angularSpeedMultiplierZ} + * - {@link rotationY} + * - {@link angularSpeedMultiplierY} */ - angularSpeedZ?: ScalarValue + angularSpeedY?: ScalarValue /** - * Multiplier for {@link angularSpeedX}. + * Multiplier for {@link angularSpeedY}. * * **Default**: `1` * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link rotationX} + * - {@link rotationY} */ - angularSpeedMultiplierX?: ScalarValue + angularSpeedMultiplierY?: ScalarValue /** - * Multiplier for {@link angularSpeedY}. + * Angular speed around the Z-axis in degrees per second. * - * **Default**: `1` + * **Default**: `0` * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link rotationY} + * - {@link rotationZ} + * - {@link angularSpeedMultiplierZ} */ - angularSpeedMultiplierY?: ScalarValue + angularSpeedZ?: ScalarValue /** * Multiplier for {@link angularSpeedZ}. * @@ -17360,6 +17628,18 @@ export interface BillboardExParams { * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ frameIndexOffset?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_21?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_22?: ScalarValue /** * Scalar multiplier for the color that does not affect the alpha. Effectively a brightness multiplier. * @@ -17376,6 +17656,40 @@ export interface BillboardExParams { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ alphaMultiplier?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p2_2?: ScalarValue + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_3?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_4?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_5?: Vector4Value + /** + * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. + * + * This threshold creates a hard cut-off between visible and not visible, which is unlike the {@link alphaFadeThreshold}. + * + * **Default**: `0` + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + */ + alphaThreshold?: ScalarValue /** * Controls the orientation mode for the particles. See {@link OrientationMode} for more information. * @@ -17422,6 +17736,12 @@ export interface BillboardExParams { * - {@link scaleVariationY} */ uniformScale?: boolean + /** + * Unknown integer. + * + * **Default**: `0` + */ + unk_ds3_f1_7?: number /** * To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. * @@ -17452,67 +17772,6 @@ export interface BillboardExParams { * - {@link frameIndexOffset} */ interpolateFrames?: boolean - /** - * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. - * - * Note: - * - This has no effect if the "Effects Quality" setting is set to "Low". - * - This does not affect the natural bloom effect from high color values. - * - * **Default**: `[1, 1, 1, 0]` - */ - bloomColor?: Vector4 - /** - * Controls how dark shaded parts of the particle are. - * - * **Default**: `0` - */ - shadowDarkness?: number - /** - * Specular texture ID. - * - * **Default**: `0` - * - * See also: - * - {@link lighting} - * - {@link glossiness} - * - {@link specularity} - */ - specular?: number - /** - * Controls how sharp the specular highlights are. - * - * **Default**: `0.25` - * - * See also: - * - {@link lighting} - * - {@link specular} - * - {@link specularity} - */ - glossiness?: number - /** - * Controls how the particles are lit. See {@link LightingMode} for more information. - * - * **Default**: {@link LightingMode.Unlit} - */ - lighting?: LightingMode - /** - * Controls how bright the specular highlights are. - * - * **Default**: `0.5` - * - * See also: - * - {@link lighting} - * - {@link specular} - * - {@link glossiness} - */ - specularity?: number - /** - * Unknown integer. - * - * **Default**: `0` - */ - unk_ds3_f1_7?: number /** * Unknown integer. * @@ -17549,6 +17808,24 @@ export interface BillboardExParams { * **Default**: `0` */ unk_ds3_f1_16?: number + /** + * Unknown integer. + * + * **Default**: `1` + */ + unk_sdt_f1_15?: number + /** + * Unknown integer. + * + * **Default**: `1` + */ + unk_sdt_f1_16?: number + /** + * Unknown integer. + * + * **Default**: `0` + */ + unk_sdt_f1_17?: number /** * Unknown integer. * @@ -17574,11 +17851,31 @@ export interface BillboardExParams { */ unk_ds3_f2_3?: number /** - * Unknown integer. + * Controls whether or not the particles have an additional bloom effect controlled by {@link bloomColor}. * - * **Default**: `1` + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * **Default**: `true` + * + * See also: + * - {@link bloomColor} */ - unk_ds3_f2_4?: number + bloom?: boolean + /** + * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * **Default**: `[1, 1, 1, 0]` + * + * See also: + * - {@link bloom} + */ + bloomColor?: Vector4 /** * Unknown float. * @@ -17610,37 +17907,37 @@ export interface BillboardExParams { */ unk_ds3_f2_13?: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * **Default**: `-1` * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance?: number + minFadeDistance?: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * **Default**: `-1` * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance?: number + minDistance?: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -17760,83 +18057,53 @@ export interface BillboardExParams { */ unk_ds3_f2_29?: number /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_21?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_22?: ScalarValue - /** - * Unknown. + * Controls how dark shaded parts of the particle are. * * **Default**: `0` */ - unk_ds3_p2_2?: ScalarValue - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_3?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_4?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_5?: Vector4Value + shadowDarkness?: number /** - * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. + * When set to 1, this stops the particles from being shown indoors. * - * This threshold creates a hard cut-off between visible and not visible, which is unlike the {@link alphaFadeThreshold}. + * Other values are used in AC6, but what they do is unknown. * * **Default**: `0` - * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ - alphaThreshold?: ScalarValue - /** - * Unknown integer. - * - * **Default**: `1` - */ - unk_sdt_f1_15?: number + unkHideIndoors?: number /** * Unknown integer. * * **Default**: `1` */ - unk_sdt_f1_16?: number + unk_sdt_f2_32?: number /** - * Unknown integer. + * Specular texture ID. * * **Default**: `0` + * + * See also: + * - {@link lighting} + * - {@link glossiness} + * - {@link specularity} */ - unk_sdt_f1_17?: number + specular?: number /** - * When set to 1, this stops the particles from being shown indoors. + * Controls how sharp the specular highlights are. * - * Other values are used in AC6, but what they do is unknown. + * **Default**: `0.25` * - * **Default**: `0` + * See also: + * - {@link lighting} + * - {@link specular} + * - {@link specularity} */ - unkHideIndoors?: number + glossiness?: number /** - * Unknown integer. + * Controls how the particles are lit. See {@link LightingMode} for more information. * - * **Default**: `1` + * **Default**: {@link LightingMode.Unlit} */ - unk_sdt_f2_32?: number + lighting?: LightingMode /** * Unknown integer. * @@ -17849,6 +18116,17 @@ export interface BillboardExParams { * **Default**: `0` */ unk_sdt_f2_37?: number + /** + * Controls how bright the specular highlights are. + * + * **Default**: `0.5` + * + * See also: + * - {@link lighting} + * - {@link specular} + * - {@link glossiness} + */ + specularity?: number /** * Unknown integer. * @@ -18021,43 +18299,43 @@ class BillboardEx extends DataAction { */ angularSpeedX: ScalarValue /** - * Angular speed around the Y-axis in degrees per second. + * Multiplier for {@link angularSpeedX}. * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link rotationY} - * - {@link angularSpeedMultiplierY} + * - {@link rotationX} */ - angularSpeedY: ScalarValue + angularSpeedMultiplierX: ScalarValue /** - * Angular speed around the Z-axis in degrees per second. + * Angular speed around the Y-axis in degrees per second. * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link rotationZ} - * - {@link angularSpeedMultiplierZ} + * - {@link rotationY} + * - {@link angularSpeedMultiplierY} */ - angularSpeedZ: ScalarValue + angularSpeedY: ScalarValue /** - * Multiplier for {@link angularSpeedX}. + * Multiplier for {@link angularSpeedY}. * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link rotationX} + * - {@link rotationY} */ - angularSpeedMultiplierX: ScalarValue + angularSpeedMultiplierY: ScalarValue /** - * Multiplier for {@link angularSpeedY}. + * Angular speed around the Z-axis in degrees per second. * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link rotationY} + * - {@link rotationZ} + * - {@link angularSpeedMultiplierZ} */ - angularSpeedMultiplierY: ScalarValue + angularSpeedZ: ScalarValue /** * Multiplier for {@link angularSpeedZ}. * @@ -18087,6 +18365,8 @@ class BillboardEx extends DataAction { * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ frameIndexOffset: ScalarValue + unk_ds3_p1_21: ScalarValue + unk_ds3_p1_22: ScalarValue /** * Scalar multiplier for the color that does not affect the alpha. Effectively a brightness multiplier. * @@ -18099,6 +18379,18 @@ class BillboardEx extends DataAction { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ alphaMultiplier: ScalarValue + unk_ds3_p2_2: ScalarValue + unk_ds3_p2_3: Vector4Value + unk_ds3_p2_4: Vector4Value + unk_ds3_p2_5: Vector4Value + /** + * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. + * + * This threshold creates a hard cut-off between visible and not visible, which is unlike the {@link alphaFadeThreshold}. + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + */ + alphaThreshold: ScalarValue /** * Controls the orientation mode for the particles. See {@link OrientationMode} for more information. */ @@ -18135,6 +18427,7 @@ class BillboardEx extends DataAction { * - {@link scaleVariationY} */ uniformScale: boolean + unk_ds3_f1_7: number /** * To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. * @@ -18159,18 +18452,151 @@ class BillboardEx extends DataAction { * - {@link frameIndexOffset} */ interpolateFrames: boolean + unk_ds3_f1_11: number + unk_ds3_f1_12: number + unk_ds3_f1_13: number + /** + * Controls how the particles should render when behind something else. If disabled, the particles will simply be drawn behind anything they are behind in the world. If enabled, they will instead display in front of the object if they are close enough, and will fade out with distance from the object's surface that is blocking the view of the particle. + */ + depthBlend: boolean + /** + * Controls the shape of the particles. If disabled, the particles will be rectangular. If enabled, they will be octagonal. + */ + octagonal: boolean + unk_ds3_f1_16: number + unk_sdt_f1_15: number + unk_sdt_f1_16: number + unk_sdt_f1_17: number + unk_ds3_f2_0: number + unk_ds3_f2_1: boolean + unk_ds3_f2_2: number + unk_ds3_f2_3: number + /** + * Controls whether or not the particles have an additional bloom effect controlled by {@link bloomColor}. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * See also: + * - {@link bloomColor} + */ + bloom: boolean /** * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. * * Note: * - This has no effect if the "Effects Quality" setting is set to "Low". * - This does not affect the natural bloom effect from high color values. + * + * See also: + * - {@link bloom} */ bloomColor: Vector4 + unk_ds3_f2_9: number + unk_ds3_f2_10: number + unk_ds3_f2_11: number + unk_ds3_f2_12: number + unk_ds3_f2_13: number + /** + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * + * See also: + * - {@link minDistance} + * - {@link maxFadeDistance} + * - {@link maxDistance} + * - {@link minDistanceThreshold} + * - {@link maxDistanceThreshold} + */ + minFadeDistance: number + /** + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. + * + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * + * See also: + * - {@link minFadeDistance} + * - {@link maxFadeDistance} + * - {@link maxDistance} + * - {@link minDistanceThreshold} + * - {@link maxDistanceThreshold} + */ + minDistance: number + /** + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * + * This requires {@link maxDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * + * See also: + * - {@link minFadeDistance} + * - {@link minDistance} + * - {@link maxDistance} + * - {@link minDistanceThreshold} + * - {@link maxDistanceThreshold} + */ + maxFadeDistance: number + /** + * Minimum view distance. If a particle is farther away than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. + * + * This requires {@link maxFadeDistance} to be set to something other than -1. + * + * This is different from {@link maxDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * + * See also: + * - {@link minFadeDistance} + * - {@link minDistance} + * - {@link maxFadeDistance} + * - {@link minDistanceThreshold} + * - {@link maxDistanceThreshold} + */ + maxDistance: number + /** + * A hard cut-off point for the distance between the camera and the particle. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. + * + * See also: + * - {@link minFadeDistance} + * - {@link minDistance} + * - {@link maxFadeDistance} + * - {@link maxDistance} + * - {@link maxDistanceThreshold} + */ + minDistanceThreshold: number + /** + * A hard cut-off point for the distance between the camera and the particle. If a particle is farther away than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. + * + * See also: + * - {@link minFadeDistance} + * - {@link minDistance} + * - {@link maxFadeDistance} + * - {@link maxDistance} + * - {@link minDistanceThreshold} + */ + maxDistanceThreshold: number + unk_ds3_f2_20: number + unk_ds3_f2_21: number + unk_ds3_f2_22: number + unk_ds3_f2_23: number + unk_ds3_f2_24: number + unkDepthBlend1: number + unkDepthBlend2: number + unk_ds3_f2_27: number + unk_ds3_f2_28: number + unk_ds3_f2_29: number /** * Controls how dark shaded parts of the particle are. */ shadowDarkness: number + /** + * When set to 1, this stops the particles from being shown indoors. + * + * Other values are used in AC6, but what they do is unknown. + */ + unkHideIndoors: number + unk_sdt_f2_32: number /** * Specular texture ID. * @@ -18193,6 +18619,8 @@ class BillboardEx extends DataAction { * Controls how the particles are lit. See {@link LightingMode} for more information. */ lighting: LightingMode + unk_sdt_f2_36: number + unk_sdt_f2_37: number /** * Controls how bright the specular highlights are. * @@ -18202,143 +18630,6 @@ class BillboardEx extends DataAction { * - {@link glossiness} */ specularity: number - unk_ds3_f1_7: number - unk_ds3_f1_11: number - unk_ds3_f1_12: number - unk_ds3_f1_13: number - /** - * Controls how the particles should render when behind something else. If disabled, the particles will simply be drawn behind anything they are behind in the world. If enabled, they will instead display in front of the object if they are close enough, and will fade out with distance from the object's surface that is blocking the view of the particle. - */ - depthBlend: boolean - /** - * Controls the shape of the particles. If disabled, the particles will be rectangular. If enabled, they will be octagonal. - */ - octagonal: boolean - unk_ds3_f1_16: number - unk_ds3_f2_0: number - unk_ds3_f2_1: boolean - unk_ds3_f2_2: number - unk_ds3_f2_3: number - unk_ds3_f2_4: number - unk_ds3_f2_9: number - unk_ds3_f2_10: number - unk_ds3_f2_11: number - unk_ds3_f2_12: number - unk_ds3_f2_13: number - /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. - * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. - * - * See also: - * - {@link minFadeDistance} - * - {@link maxFadeDistance} - * - {@link maxDistance} - * - {@link minDistanceThreshold} - * - {@link maxDistanceThreshold} - */ - minDistance: number - /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. - * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. - * - * See also: - * - {@link minDistance} - * - {@link maxFadeDistance} - * - {@link maxDistance} - * - {@link minDistanceThreshold} - * - {@link maxDistanceThreshold} - */ - minFadeDistance: number - /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. - * - * This requires {@link maxDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. - * - * See also: - * - {@link minFadeDistance} - * - {@link minDistance} - * - {@link maxDistance} - * - {@link minDistanceThreshold} - * - {@link maxDistanceThreshold} - */ - maxFadeDistance: number - /** - * Minimum view distance. If a particle is farther away than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link maxFadeDistance} to be set to something other than -1. - * - * This is different from {@link maxDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. - * - * See also: - * - {@link minFadeDistance} - * - {@link minDistance} - * - {@link maxFadeDistance} - * - {@link minDistanceThreshold} - * - {@link maxDistanceThreshold} - */ - maxDistance: number - /** - * A hard cut-off point for the distance between the camera and the particle. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * See also: - * - {@link minFadeDistance} - * - {@link minDistance} - * - {@link maxFadeDistance} - * - {@link maxDistance} - * - {@link maxDistanceThreshold} - */ - minDistanceThreshold: number - /** - * A hard cut-off point for the distance between the camera and the particle. If a particle is farther away than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * See also: - * - {@link minFadeDistance} - * - {@link minDistance} - * - {@link maxFadeDistance} - * - {@link maxDistance} - * - {@link minDistanceThreshold} - */ - maxDistanceThreshold: number - unk_ds3_f2_20: number - unk_ds3_f2_21: number - unk_ds3_f2_22: number - unk_ds3_f2_23: number - unk_ds3_f2_24: number - unkDepthBlend1: number - unkDepthBlend2: number - unk_ds3_f2_27: number - unk_ds3_f2_28: number - unk_ds3_f2_29: number - unk_ds3_p1_21: ScalarValue - unk_ds3_p1_22: ScalarValue - unk_ds3_p2_2: ScalarValue - unk_ds3_p2_3: Vector4Value - unk_ds3_p2_4: Vector4Value - unk_ds3_p2_5: Vector4Value - /** - * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - * - * This threshold creates a hard cut-off between visible and not visible, which is unlike the {@link alphaFadeThreshold}. - * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} - */ - alphaThreshold: ScalarValue - unk_sdt_f1_15: number - unk_sdt_f1_16: number - unk_sdt_f1_17: number - /** - * When set to 1, this stops the particles from being shown indoors. - * - * Other values are used in AC6, but what they do is unknown. - */ - unkHideIndoors: number - unk_sdt_f2_32: number - unk_sdt_f2_36: number - unk_sdt_f2_37: number unk_sdt_f2_39: number unk_sdt_f2_40: number unk_sdt_f2_41: number @@ -18353,130 +18644,6 @@ class BillboardEx extends DataAction { } export interface MultiTextureBillboardExParams { - /** - * Controls the orientation mode for the particles. See {@link OrientationMode} for more information. - * - * **Default**: {@link OrientationMode.CameraPlane} - */ - orientation?: OrientationMode - /** - * Mask texture ID. - * - * **Default**: `1` - */ - mask?: number - /** - * Layer 1 texture ID. - * - * **Default**: `1` - */ - layer1?: number - /** - * Layer 2 texture ID. - * - * **Default**: `1` - */ - layer2?: number - /** - * If enabled, the particle width-related properties and fields will control both the width and height of the particles, and the height counterparts will be ignored. - * - * **Default**: `false` - * - * See also: - * - {@link width} - * - {@link height} - */ - uniformScale?: boolean - /** - * To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. - * - * **Default**: `1` - * - * See also: - * - {@link totalFrames} - */ - columns?: number - /** - * To split the texture into multiple animation frames, this value must be set to the total number of frames in the texture. - * - * **Default**: `1` - * - * See also: - * - {@link columns} - */ - totalFrames?: number - /** - * If enabled, the texture animation will use linear interpolation to mix frames when the frame index is not a whole number. For example, if the frame index is 0.5, enabling this will cause the average of the first two frames to be shown instead of just the first frame. - * - * If disabled, the frame index will be truncated to get a whole number. - * - * **Default**: `true` - * - * See also: - * - {@link frameIndex} - * - {@link frameIndexOffset} - */ - interpolateFrames?: boolean - /** - * Controls how the particles should render when behind something else. If disabled, the particles will simply be drawn behind anything they are behind in the world. If enabled, they will instead display in front of the object if they are close enough, and will fade out with distance from the object's surface that is blocking the view of the particle. - * - * **Default**: `true` - */ - depthBlend?: boolean - /** - * Controls the shape of the particles. If disabled, the particles will be rectangular. If enabled, they will be octagonal. - * - * **Default**: `false` - */ - octagonal?: boolean - /** - * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. - * - * Note: - * - This has no effect if the "Effects Quality" setting is set to "Low". - * - This does not affect the natural bloom effect from high color values. - * - * **Default**: `[1, 1, 1, 0]` - */ - bloomColor?: Vector4 - /** - * Controls how dark shaded parts of the particle are. - * - * **Default**: `0` - */ - shadowDarkness?: number - /** - * Specular texture ID. - * - * **Default**: `0` - * - * See also: - * - {@link lighting} - * - {@link glossiness} - */ - specular?: number - /** - * Controls how sharp the specular highlights are. - * - * **Default**: `0.25` - * - * See also: - * - {@link lighting} - * - {@link specular} - */ - glossiness?: number - /** - * Controls how the particles are lit. See {@link LightingMode} for more information. - * - * **Default**: {@link LightingMode.Unlit} - */ - lighting?: LightingMode - /** - * Unknown integer. - * - * **Default**: `1` - */ - unk_sdt_f2_38?: number /** * Blend mode. * @@ -18578,51 +18745,51 @@ export interface MultiTextureBillboardExParams { */ angularSpeedX?: ScalarValue /** - * Angular speed around the Y-axis in degrees per second. + * Multiplier for {@link angularSpeedX}. * - * **Default**: `0` + * **Default**: `1` * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link rotationY} - * - {@link angularSpeedMultiplierY} + * - {@link rotationX} */ - angularSpeedY?: ScalarValue + angularSpeedMultiplierX?: ScalarValue /** - * Angular speed around the Z-axis in degrees per second. + * Angular speed around the Y-axis in degrees per second. * * **Default**: `0` * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link rotationZ} - * - {@link angularSpeedMultiplierZ} + * - {@link rotationY} + * - {@link angularSpeedMultiplierY} */ - angularSpeedZ?: ScalarValue + angularSpeedY?: ScalarValue /** - * Multiplier for {@link angularSpeedX}. + * Multiplier for {@link angularSpeedY}. * * **Default**: `1` * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link rotationX} + * - {@link rotationY} */ - angularSpeedMultiplierX?: ScalarValue + angularSpeedMultiplierY?: ScalarValue /** - * Multiplier for {@link angularSpeedY}. + * Angular speed around the Z-axis in degrees per second. * - * **Default**: `1` + * **Default**: `0` * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link rotationY} + * - {@link rotationZ} + * - {@link angularSpeedMultiplierZ} */ - angularSpeedMultiplierY?: ScalarValue + angularSpeedZ?: ScalarValue /** * Multiplier for {@link angularSpeedZ}. * @@ -18710,6 +18877,42 @@ export interface MultiTextureBillboardExParams { * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ frameIndexOffset?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_23?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_24?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_25?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_26?: ScalarValue + /** + * Unknown. + * + * **Default**: `1` + */ + unk_ds3_p1_27?: ScalarValue + /** + * Unknown. + * + * **Default**: `1` + */ + unk_ds3_p1_28?: ScalarValue /** * Horiztonal scroll speed for Layer 1. * @@ -18822,12 +19025,110 @@ export interface MultiTextureBillboardExParams { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ alphaMultiplier?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p2_2?: ScalarValue + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_3?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_4?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_5?: Vector4Value + /** + * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. + * + * This threshold creates a hard cut-off between visible and not visible, which is unlike the {@link alphaFadeThreshold}. + * + * **Default**: `0` + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + */ + alphaThreshold?: ScalarValue + /** + * Controls the orientation mode for the particles. See {@link OrientationMode} for more information. + * + * **Default**: {@link OrientationMode.CameraPlane} + */ + orientation?: OrientationMode + /** + * Mask texture ID. + * + * **Default**: `1` + */ + mask?: number + /** + * Layer 1 texture ID. + * + * **Default**: `1` + */ + layer1?: number + /** + * Layer 2 texture ID. + * + * **Default**: `1` + */ + layer2?: number + /** + * If enabled, the particle width-related properties and fields will control both the width and height of the particles, and the height counterparts will be ignored. + * + * **Default**: `false` + * + * See also: + * - {@link width} + * - {@link height} + */ + uniformScale?: boolean /** * Unknown integer. * * **Default**: `0` */ unk_ds3_f1_6?: number + /** + * To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. + * + * **Default**: `1` + * + * See also: + * - {@link totalFrames} + */ + columns?: number + /** + * To split the texture into multiple animation frames, this value must be set to the total number of frames in the texture. + * + * **Default**: `1` + * + * See also: + * - {@link columns} + */ + totalFrames?: number + /** + * If enabled, the texture animation will use linear interpolation to mix frames when the frame index is not a whole number. For example, if the frame index is 0.5, enabling this will cause the average of the first two frames to be shown instead of just the first frame. + * + * If disabled, the frame index will be truncated to get a whole number. + * + * **Default**: `true` + * + * See also: + * - {@link frameIndex} + * - {@link frameIndexOffset} + */ + interpolateFrames?: boolean /** * Unknown integer. * @@ -18840,12 +19141,42 @@ export interface MultiTextureBillboardExParams { * **Default**: `-2` */ unk_ds3_f1_11?: number + /** + * Controls how the particles should render when behind something else. If disabled, the particles will simply be drawn behind anything they are behind in the world. If enabled, they will instead display in front of the object if they are close enough, and will fade out with distance from the object's surface that is blocking the view of the particle. + * + * **Default**: `true` + */ + depthBlend?: boolean + /** + * Controls the shape of the particles. If disabled, the particles will be rectangular. If enabled, they will be octagonal. + * + * **Default**: `false` + */ + octagonal?: boolean /** * Unknown integer. * * **Default**: `0` */ unk_ds3_f1_14?: number + /** + * Unknown integer. + * + * **Default**: `1` + */ + unk_er_f1_14?: number + /** + * Unknown integer. + * + * **Default**: `1` + */ + unk_er_f1_15?: number + /** + * Unknown integer. + * + * **Default**: `0` + */ + unk_er_f1_16?: number /** * Unknown integer. * @@ -18871,11 +19202,31 @@ export interface MultiTextureBillboardExParams { */ unk_ds3_f2_3?: number /** - * Unknown integer. + * Controls whether or not the particles have an additional bloom effect controlled by {@link bloomColor}. * - * **Default**: `1` + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * **Default**: `true` + * + * See also: + * - {@link bloomColor} */ - unk_ds3_f2_4?: number + bloom?: boolean + /** + * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * **Default**: `[1, 1, 1, 0]` + * + * See also: + * - {@link bloom} + */ + bloomColor?: Vector4 /** * Unknown float. * @@ -18907,37 +19258,37 @@ export interface MultiTextureBillboardExParams { */ unk_ds3_f2_13?: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * **Default**: `-1` * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance?: number + minFadeDistance?: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * **Default**: `-1` * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance?: number + minDistance?: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -19057,87 +19408,49 @@ export interface MultiTextureBillboardExParams { */ unk_ds3_f2_29?: number /** - * Unknown. + * Controls how dark shaded parts of the particle are. * * **Default**: `0` */ - unk_ds3_p1_23?: ScalarValue + shadowDarkness?: number /** - * Unknown. + * Unknown integer. * * **Default**: `0` */ - unk_ds3_p1_24?: ScalarValue + unk_sdt_f2_31?: number /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_25?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_26?: ScalarValue - /** - * Unknown. - * - * **Default**: `1` - */ - unk_ds3_p1_27?: ScalarValue - /** - * Unknown. + * Unknown integer. * * **Default**: `1` */ - unk_ds3_p1_28?: ScalarValue + unk_sdt_f2_32?: number /** - * Unknown. + * Specular texture ID. * * **Default**: `0` - */ - unk_ds3_p2_2?: ScalarValue - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_3?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_4?: Vector4Value - /** - * Unknown. * - * **Default**: `[1, 1, 1, 1]` + * See also: + * - {@link lighting} + * - {@link glossiness} */ - unk_ds3_p2_5?: Vector4Value + specular?: number /** - * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - * - * This threshold creates a hard cut-off between visible and not visible, which is unlike the {@link alphaFadeThreshold}. - * - * **Default**: `0` + * Controls how sharp the specular highlights are. * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} - */ - alphaThreshold?: ScalarValue - /** - * Unknown integer. + * **Default**: `0.25` * - * **Default**: `0` + * See also: + * - {@link lighting} + * - {@link specular} */ - unk_sdt_f2_31?: number + glossiness?: number /** - * Unknown integer. + * Controls how the particles are lit. See {@link LightingMode} for more information. * - * **Default**: `1` + * **Default**: {@link LightingMode.Unlit} */ - unk_sdt_f2_32?: number + lighting?: LightingMode /** * Unknown integer. * @@ -19155,37 +19468,25 @@ export interface MultiTextureBillboardExParams { * * **Default**: `1` */ - unk_sdt_f2_39?: number - /** - * Unknown integer. - * - * **Default**: `0` - */ - unk_sdt_f2_40?: number - /** - * Unknown integer. - * - * **Default**: `0` - */ - unk_sdt_f2_41?: number + unk_sdt_f2_38?: number /** * Unknown integer. * * **Default**: `1` */ - unk_er_f1_14?: number + unk_sdt_f2_39?: number /** * Unknown integer. * - * **Default**: `1` + * **Default**: `0` */ - unk_er_f1_15?: number + unk_sdt_f2_40?: number /** * Unknown integer. * * **Default**: `0` */ - unk_er_f1_16?: number + unk_sdt_f2_41?: number /** * Unknown integer. * @@ -19227,95 +19528,6 @@ export interface MultiTextureBillboardExParams { class MultiTextureBillboardEx extends DataAction { declare readonly type: ActionType.MultiTextureBillboardEx declare readonly meta: ActionMeta & {isAppearance:true,isParticle:true} - /** - * Controls the orientation mode for the particles. See {@link OrientationMode} for more information. - */ - orientation: OrientationMode - /** - * Mask texture ID. - */ - mask: number - /** - * Layer 1 texture ID. - */ - layer1: number - /** - * Layer 2 texture ID. - */ - layer2: number - /** - * If enabled, the particle width-related properties and fields will control both the width and height of the particles, and the height counterparts will be ignored. - * - * See also: - * - {@link width} - * - {@link height} - */ - uniformScale: boolean - /** - * To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. - * - * See also: - * - {@link totalFrames} - */ - columns: number - /** - * To split the texture into multiple animation frames, this value must be set to the total number of frames in the texture. - * - * See also: - * - {@link columns} - */ - totalFrames: number - /** - * If enabled, the texture animation will use linear interpolation to mix frames when the frame index is not a whole number. For example, if the frame index is 0.5, enabling this will cause the average of the first two frames to be shown instead of just the first frame. - * - * If disabled, the frame index will be truncated to get a whole number. - * - * See also: - * - {@link frameIndex} - * - {@link frameIndexOffset} - */ - interpolateFrames: boolean - /** - * Controls how the particles should render when behind something else. If disabled, the particles will simply be drawn behind anything they are behind in the world. If enabled, they will instead display in front of the object if they are close enough, and will fade out with distance from the object's surface that is blocking the view of the particle. - */ - depthBlend: boolean - /** - * Controls the shape of the particles. If disabled, the particles will be rectangular. If enabled, they will be octagonal. - */ - octagonal: boolean - /** - * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. - * - * Note: - * - This has no effect if the "Effects Quality" setting is set to "Low". - * - This does not affect the natural bloom effect from high color values. - */ - bloomColor: Vector4 - /** - * Controls how dark shaded parts of the particle are. - */ - shadowDarkness: number - /** - * Specular texture ID. - * - * See also: - * - {@link lighting} - * - {@link glossiness} - */ - specular: number - /** - * Controls how sharp the specular highlights are. - * - * See also: - * - {@link lighting} - * - {@link specular} - */ - glossiness: number - /** - * Controls how the particles are lit. See {@link LightingMode} for more information. - */ - lighting: LightingMode - unk_sdt_f2_38: number /** * Blend mode. * @@ -19397,43 +19609,43 @@ class MultiTextureBillboardEx extends DataAction { */ angularSpeedX: ScalarValue /** - * Angular speed around the Y-axis in degrees per second. + * Multiplier for {@link angularSpeedX}. * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link rotationY} - * - {@link angularSpeedMultiplierY} + * - {@link rotationX} */ - angularSpeedY: ScalarValue + angularSpeedMultiplierX: ScalarValue /** - * Angular speed around the Z-axis in degrees per second. + * Angular speed around the Y-axis in degrees per second. * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link rotationZ} - * - {@link angularSpeedMultiplierZ} + * - {@link rotationY} + * - {@link angularSpeedMultiplierY} */ - angularSpeedZ: ScalarValue + angularSpeedY: ScalarValue /** - * Multiplier for {@link angularSpeedX}. + * Multiplier for {@link angularSpeedY}. * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link rotationX} + * - {@link rotationY} */ - angularSpeedMultiplierX: ScalarValue + angularSpeedMultiplierY: ScalarValue /** - * Multiplier for {@link angularSpeedY}. + * Angular speed around the Z-axis in degrees per second. * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link rotationY} + * - {@link rotationZ} + * - {@link angularSpeedMultiplierZ} */ - angularSpeedMultiplierY: ScalarValue + angularSpeedZ: ScalarValue /** * Multiplier for {@link angularSpeedZ}. * @@ -19501,6 +19713,12 @@ class MultiTextureBillboardEx extends DataAction { * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ frameIndexOffset: ScalarValue + unk_ds3_p1_23: ScalarValue + unk_ds3_p1_24: ScalarValue + unk_ds3_p1_25: ScalarValue + unk_ds3_p1_26: ScalarValue + unk_ds3_p1_27: ScalarValue + unk_ds3_p1_28: ScalarValue /** * Horiztonal scroll speed for Layer 1. * @@ -19585,48 +19803,140 @@ class MultiTextureBillboardEx extends DataAction { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ alphaMultiplier: ScalarValue + unk_ds3_p2_2: ScalarValue + unk_ds3_p2_3: Vector4Value + unk_ds3_p2_4: Vector4Value + unk_ds3_p2_5: Vector4Value + /** + * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. + * + * This threshold creates a hard cut-off between visible and not visible, which is unlike the {@link alphaFadeThreshold}. + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + */ + alphaThreshold: ScalarValue + /** + * Controls the orientation mode for the particles. See {@link OrientationMode} for more information. + */ + orientation: OrientationMode + /** + * Mask texture ID. + */ + mask: number + /** + * Layer 1 texture ID. + */ + layer1: number + /** + * Layer 2 texture ID. + */ + layer2: number + /** + * If enabled, the particle width-related properties and fields will control both the width and height of the particles, and the height counterparts will be ignored. + * + * See also: + * - {@link width} + * - {@link height} + */ + uniformScale: boolean unk_ds3_f1_6: number + /** + * To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. + * + * See also: + * - {@link totalFrames} + */ + columns: number + /** + * To split the texture into multiple animation frames, this value must be set to the total number of frames in the texture. + * + * See also: + * - {@link columns} + */ + totalFrames: number + /** + * If enabled, the texture animation will use linear interpolation to mix frames when the frame index is not a whole number. For example, if the frame index is 0.5, enabling this will cause the average of the first two frames to be shown instead of just the first frame. + * + * If disabled, the frame index will be truncated to get a whole number. + * + * See also: + * - {@link frameIndex} + * - {@link frameIndexOffset} + */ + interpolateFrames: boolean unk_ds3_f1_10: number unk_ds3_f1_11: number + /** + * Controls how the particles should render when behind something else. If disabled, the particles will simply be drawn behind anything they are behind in the world. If enabled, they will instead display in front of the object if they are close enough, and will fade out with distance from the object's surface that is blocking the view of the particle. + */ + depthBlend: boolean + /** + * Controls the shape of the particles. If disabled, the particles will be rectangular. If enabled, they will be octagonal. + */ + octagonal: boolean unk_ds3_f1_14: number + unk_er_f1_14: number + unk_er_f1_15: number + unk_er_f1_16: number unk_ds3_f2_0: number unk_ds3_f2_1: number unk_ds3_f2_2: number unk_ds3_f2_3: number - unk_ds3_f2_4: number + /** + * Controls whether or not the particles have an additional bloom effect controlled by {@link bloomColor}. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * See also: + * - {@link bloomColor} + */ + bloom: boolean + /** + * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * See also: + * - {@link bloom} + */ + bloomColor: Vector4 unk_ds3_f2_9: number unk_ds3_f2_10: number unk_ds3_f2_11: number unk_ds3_f2_12: number unk_ds3_f2_13: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance: number + minFadeDistance: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance: number + minDistance: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -19687,34 +19997,38 @@ class MultiTextureBillboardEx extends DataAction { unk_ds3_f2_27: number unk_ds3_f2_28: number unk_ds3_f2_29: number - unk_ds3_p1_23: ScalarValue - unk_ds3_p1_24: ScalarValue - unk_ds3_p1_25: ScalarValue - unk_ds3_p1_26: ScalarValue - unk_ds3_p1_27: ScalarValue - unk_ds3_p1_28: ScalarValue - unk_ds3_p2_2: ScalarValue - unk_ds3_p2_3: Vector4Value - unk_ds3_p2_4: Vector4Value - unk_ds3_p2_5: Vector4Value /** - * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - * - * This threshold creates a hard cut-off between visible and not visible, which is unlike the {@link alphaFadeThreshold}. - * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} + * Controls how dark shaded parts of the particle are. */ - alphaThreshold: ScalarValue + shadowDarkness: number unk_sdt_f2_31: number unk_sdt_f2_32: number + /** + * Specular texture ID. + * + * See also: + * - {@link lighting} + * - {@link glossiness} + */ + specular: number + /** + * Controls how sharp the specular highlights are. + * + * See also: + * - {@link lighting} + * - {@link specular} + */ + glossiness: number + /** + * Controls how the particles are lit. See {@link LightingMode} for more information. + */ + lighting: LightingMode unk_sdt_f2_36: number unk_sdt_f2_37: number + unk_sdt_f2_38: number unk_sdt_f2_39: number unk_sdt_f2_40: number unk_sdt_f2_41: number - unk_er_f1_14: number - unk_er_f1_15: number - unk_er_f1_16: number unk_er_f2_42: number unk_er_f2_43: number unk_er_f2_44: number @@ -19727,90 +20041,6 @@ class MultiTextureBillboardEx extends DataAction { } export interface ModelParams { - /** - * Model orientation mode. See {@link ModelOrientationMode} for more information. - * - * **Default**: {@link ModelOrientationMode.ParticleDirection} - */ - orientation?: ModelOrientationMode - /** - * Each particle will pick a random number between this value and 1, and the width of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly thinner, down to half width. Setting it to 2 will make them randomly wider, up to double width. - * - * If {@link uniformScale} is enabled, this also affects the height. - * - * **Default**: `1` - * - * See also: - * - {@link scaleVariationY} - * - {@link scaleVariationZ} - */ - scaleVariationX?: number - /** - * Each particle will pick a random number between this value and 1, and the height of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shorter, down to half height. Setting it to 2 will make them randomly taller, up to double height. - * - * If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the height, and this field is ignored. - * - * **Default**: `1` - * - * See also: - * - {@link scaleVariationX} - * - {@link scaleVariationZ} - */ - scaleVariationY?: number - /** - * Each particle will pick a random number between this value and 1, and the depth of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shallower, down to half depth. Setting it to 2 will make them randomly deeper, up to double depth. - * - * If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the depth, and this field is ignored. - * - * **Default**: `1` - * - * See also: - * - {@link scaleVariationX} - * - {@link scaleVariationY} - */ - scaleVariationZ?: number - /** - * If enabled, the particle X scale-related properties and fields will control the scale in all axes, and the Y and Z counterparts will be ignored. - * - * **Default**: `false` - * - * See also: - * - {@link sizeX} - * - {@link sizeY} - * - {@link sizeZ} - * - {@link scaleVariationX} - * - {@link scaleVariationY} - * - {@link scaleVariationZ} - */ - uniformScale?: boolean - /** - * To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. - * - * **Default**: `1` - * - * See also: - * - {@link totalFrames} - */ - columns?: number - /** - * To split the texture into multiple animation frames, this value must be set to the total number of frames in the texture. - * - * **Default**: `1` - * - * See also: - * - {@link columns} - */ - totalFrames?: number - /** - * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. - * - * Note: - * - This has no effect if the "Effects Quality" setting is set to "Low". - * - This does not affect the natural bloom effect from high color values. - * - * **Default**: `[1, 1, 1, 0]` - */ - bloomColor?: Vector4 /** * Model ID. * @@ -19913,51 +20143,51 @@ export interface ModelParams { */ angularSpeedX?: ScalarValue /** - * Angular speed around the Y-axis in degrees per second. + * Multiplier for {@link angularSpeedX}. * - * **Default**: `0` + * **Default**: `1` * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link rotationY} - * - {@link angularSpeedMultiplierY} + * - {@link rotationX} */ - angularSpeedY?: ScalarValue + angularSpeedMultiplierX?: ScalarValue /** - * Angular speed around the Z-axis in degrees per second. + * Angular speed around the Y-axis in degrees per second. * * **Default**: `0` * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link rotationZ} - * - {@link angularSpeedMultiplierZ} + * - {@link rotationY} + * - {@link angularSpeedMultiplierY} */ - angularSpeedZ?: ScalarValue + angularSpeedY?: ScalarValue /** - * Multiplier for {@link angularSpeedX}. + * Multiplier for {@link angularSpeedY}. * * **Default**: `1` * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link rotationX} + * - {@link rotationY} */ - angularSpeedMultiplierX?: ScalarValue + angularSpeedMultiplierY?: ScalarValue /** - * Multiplier for {@link angularSpeedY}. + * Angular speed around the Z-axis in degrees per second. * - * **Default**: `1` + * **Default**: `0` * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link rotationY} + * - {@link rotationZ} + * - {@link angularSpeedMultiplierZ} */ - angularSpeedMultiplierY?: ScalarValue + angularSpeedZ?: ScalarValue /** * Multiplier for {@link angularSpeedZ}. * @@ -20003,6 +20233,12 @@ export interface ModelParams { * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ color3?: Vector4Value + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_15?: ScalarValue /** * The index of the frame to show from the texture atlas. Can be animated using a {@link PropertyFunction.Linear linear property} or similar. * @@ -20089,6 +20325,12 @@ export interface ModelParams { * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ speedMultiplierV?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_24?: ScalarValue /** * Scalar multiplier for the color that does not affect the alpha. Effectively a brightness multiplier. * @@ -20106,19 +20348,129 @@ export interface ModelParams { */ alphaMultiplier?: ScalarValue /** - * Unknown integer. + * Unknown. * - * **Default**: `-2` + * **Default**: `0` */ - unk_ds3_f1_9?: number + unk_ds3_p2_2?: ScalarValue /** - * Unknown integer. + * Unknown. * - * **Default**: `-2` + * **Default**: `[1, 1, 1, 1]` */ - unk_ds3_f1_10?: number + unk_ds3_p2_3?: Vector4Value /** - * Unknown boolean. + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_4?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_5?: Vector4Value + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p2_6?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p2_7?: ScalarValue + /** + * Model orientation mode. See {@link ModelOrientationMode} for more information. + * + * **Default**: {@link ModelOrientationMode.ParticleDirection} + */ + orientation?: ModelOrientationMode + /** + * Each particle will pick a random number between this value and 1, and the width of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly thinner, down to half width. Setting it to 2 will make them randomly wider, up to double width. + * + * If {@link uniformScale} is enabled, this also affects the height. + * + * **Default**: `1` + * + * See also: + * - {@link scaleVariationY} + * - {@link scaleVariationZ} + */ + scaleVariationX?: number + /** + * Each particle will pick a random number between this value and 1, and the height of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shorter, down to half height. Setting it to 2 will make them randomly taller, up to double height. + * + * If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the height, and this field is ignored. + * + * **Default**: `1` + * + * See also: + * - {@link scaleVariationX} + * - {@link scaleVariationZ} + */ + scaleVariationY?: number + /** + * Each particle will pick a random number between this value and 1, and the depth of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shallower, down to half depth. Setting it to 2 will make them randomly deeper, up to double depth. + * + * If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the depth, and this field is ignored. + * + * **Default**: `1` + * + * See also: + * - {@link scaleVariationX} + * - {@link scaleVariationY} + */ + scaleVariationZ?: number + /** + * If enabled, the particle X scale-related properties and fields will control the scale in all axes, and the Y and Z counterparts will be ignored. + * + * **Default**: `false` + * + * See also: + * - {@link sizeX} + * - {@link sizeY} + * - {@link sizeZ} + * - {@link scaleVariationX} + * - {@link scaleVariationY} + * - {@link scaleVariationZ} + */ + uniformScale?: boolean + /** + * To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. + * + * **Default**: `1` + * + * See also: + * - {@link totalFrames} + */ + columns?: number + /** + * To split the texture into multiple animation frames, this value must be set to the total number of frames in the texture. + * + * **Default**: `1` + * + * See also: + * - {@link columns} + */ + totalFrames?: number + /** + * Unknown integer. + * + * **Default**: `-2` + */ + unk_ds3_f1_9?: number + /** + * Unknown integer. + * + * **Default**: `-2` + */ + unk_ds3_f1_10?: number + /** + * Unknown boolean. * * **Default**: `true` */ @@ -20185,6 +20537,24 @@ export interface ModelParams { * **Default**: `0` */ unk_ds3_f1_18?: number + /** + * Unknown integer. + * + * **Default**: `1` + */ + unk_er_f1_17?: number + /** + * Unknown integer. + * + * **Default**: `1` + */ + unk_er_f1_18?: number + /** + * Unknown integer. + * + * **Default**: `0` + */ + unk_er_f1_19?: number /** * Unknown integer. * @@ -20215,6 +20585,16 @@ export interface ModelParams { * **Default**: `1` */ unk_ds3_f2_4?: number + /** + * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * **Default**: `[1, 1, 1, 0]` + */ + bloomColor?: Vector4 /** * Unknown float. * @@ -20246,37 +20626,37 @@ export interface ModelParams { */ unk_ds3_f2_13?: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * **Default**: `-1` * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance?: number + minFadeDistance?: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * **Default**: `-1` * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance?: number + minDistance?: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -20389,60 +20769,6 @@ export interface ModelParams { * **Default**: `0` */ unk_ds3_f2_27?: number - /** - * Unknown float. - * - * **Default**: `0` - */ - unk_ds3_f2_28?: number - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_15?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_24?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p2_2?: ScalarValue - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_3?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_4?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_5?: Vector4Value - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p2_6?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p2_7?: ScalarValue /** * Unknown float. * @@ -20497,30 +20823,18 @@ export interface ModelParams { * **Default**: `0` */ unk_sdt_f2_37?: number - /** - * Unknown integer. - * - * **Default**: `1` - */ - unk_er_f1_17?: number - /** - * Unknown integer. - * - * **Default**: `1` - */ - unk_er_f1_18?: number /** * Unknown integer. * * **Default**: `0` */ - unk_er_f1_19?: number + unk_ac6_f2_38?: number /** - * Unknown integer. + * Unknown float. * * **Default**: `0` */ - unk_ac6_f2_38?: number + unk_ds3_f2_28?: number } /** @@ -20534,74 +20848,6 @@ export interface ModelParams { class Model extends DataAction { declare readonly type: ActionType.Model declare readonly meta: ActionMeta & {isAppearance:true,isParticle:true} - /** - * Model orientation mode. See {@link ModelOrientationMode} for more information. - */ - orientation: ModelOrientationMode - /** - * Each particle will pick a random number between this value and 1, and the width of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly thinner, down to half width. Setting it to 2 will make them randomly wider, up to double width. - * - * If {@link uniformScale} is enabled, this also affects the height. - * - * See also: - * - {@link scaleVariationY} - * - {@link scaleVariationZ} - */ - scaleVariationX: number - /** - * Each particle will pick a random number between this value and 1, and the height of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shorter, down to half height. Setting it to 2 will make them randomly taller, up to double height. - * - * If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the height, and this field is ignored. - * - * See also: - * - {@link scaleVariationX} - * - {@link scaleVariationZ} - */ - scaleVariationY: number - /** - * Each particle will pick a random number between this value and 1, and the depth of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shallower, down to half depth. Setting it to 2 will make them randomly deeper, up to double depth. - * - * If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the depth, and this field is ignored. - * - * See also: - * - {@link scaleVariationX} - * - {@link scaleVariationY} - */ - scaleVariationZ: number - /** - * If enabled, the particle X scale-related properties and fields will control the scale in all axes, and the Y and Z counterparts will be ignored. - * - * See also: - * - {@link sizeX} - * - {@link sizeY} - * - {@link sizeZ} - * - {@link scaleVariationX} - * - {@link scaleVariationY} - * - {@link scaleVariationZ} - */ - uniformScale: boolean - /** - * To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. - * - * See also: - * - {@link totalFrames} - */ - columns: number - /** - * To split the texture into multiple animation frames, this value must be set to the total number of frames in the texture. - * - * See also: - * - {@link columns} - */ - totalFrames: number - /** - * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. - * - * Note: - * - This has no effect if the "Effects Quality" setting is set to "Low". - * - This does not affect the natural bloom effect from high color values. - */ - bloomColor: Vector4 /** * Model ID. * @@ -20688,43 +20934,43 @@ class Model extends DataAction { */ angularSpeedX: ScalarValue /** - * Angular speed around the Y-axis in degrees per second. + * Multiplier for {@link angularSpeedX}. * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link rotationY} - * - {@link angularSpeedMultiplierY} + * - {@link rotationX} */ - angularSpeedY: ScalarValue + angularSpeedMultiplierX: ScalarValue /** - * Angular speed around the Z-axis in degrees per second. + * Angular speed around the Y-axis in degrees per second. * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link rotationZ} - * - {@link angularSpeedMultiplierZ} + * - {@link rotationY} + * - {@link angularSpeedMultiplierY} */ - angularSpeedZ: ScalarValue + angularSpeedY: ScalarValue /** - * Multiplier for {@link angularSpeedX}. + * Multiplier for {@link angularSpeedY}. * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link rotationX} + * - {@link rotationY} */ - angularSpeedMultiplierX: ScalarValue + angularSpeedMultiplierY: ScalarValue /** - * Multiplier for {@link angularSpeedY}. + * Angular speed around the Z-axis in degrees per second. * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link rotationY} + * - {@link rotationZ} + * - {@link angularSpeedMultiplierZ} */ - angularSpeedMultiplierY: ScalarValue + angularSpeedZ: ScalarValue /** * Multiplier for {@link angularSpeedZ}. * @@ -20760,6 +21006,7 @@ class Model extends DataAction { * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ color3: Vector4Value + unk_ds3_p1_15: ScalarValue /** * The index of the frame to show from the texture atlas. Can be animated using a {@link PropertyFunction.Linear linear property} or similar. * @@ -20830,6 +21077,7 @@ class Model extends DataAction { * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ speedMultiplierV: ScalarValue + unk_ds3_p1_24: ScalarValue /** * Scalar multiplier for the color that does not affect the alpha. Effectively a brightness multiplier. * @@ -20842,6 +21090,72 @@ class Model extends DataAction { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ alphaMultiplier: ScalarValue + unk_ds3_p2_2: ScalarValue + unk_ds3_p2_3: Vector4Value + unk_ds3_p2_4: Vector4Value + unk_ds3_p2_5: Vector4Value + unk_ds3_p2_6: ScalarValue + unk_ds3_p2_7: ScalarValue + /** + * Model orientation mode. See {@link ModelOrientationMode} for more information. + */ + orientation: ModelOrientationMode + /** + * Each particle will pick a random number between this value and 1, and the width of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly thinner, down to half width. Setting it to 2 will make them randomly wider, up to double width. + * + * If {@link uniformScale} is enabled, this also affects the height. + * + * See also: + * - {@link scaleVariationY} + * - {@link scaleVariationZ} + */ + scaleVariationX: number + /** + * Each particle will pick a random number between this value and 1, and the height of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shorter, down to half height. Setting it to 2 will make them randomly taller, up to double height. + * + * If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the height, and this field is ignored. + * + * See also: + * - {@link scaleVariationX} + * - {@link scaleVariationZ} + */ + scaleVariationY: number + /** + * Each particle will pick a random number between this value and 1, and the depth of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shallower, down to half depth. Setting it to 2 will make them randomly deeper, up to double depth. + * + * If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the depth, and this field is ignored. + * + * See also: + * - {@link scaleVariationX} + * - {@link scaleVariationY} + */ + scaleVariationZ: number + /** + * If enabled, the particle X scale-related properties and fields will control the scale in all axes, and the Y and Z counterparts will be ignored. + * + * See also: + * - {@link sizeX} + * - {@link sizeY} + * - {@link sizeZ} + * - {@link scaleVariationX} + * - {@link scaleVariationY} + * - {@link scaleVariationZ} + */ + uniformScale: boolean + /** + * To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. + * + * See also: + * - {@link totalFrames} + */ + columns: number + /** + * To split the texture into multiple animation frames, this value must be set to the total number of frames in the texture. + * + * See also: + * - {@link columns} + */ + totalFrames: number unk_ds3_f1_9: number unk_ds3_f1_10: number unk_ds3_f1_11: boolean @@ -20884,44 +21198,55 @@ class Model extends DataAction { */ animationSpeed: number unk_ds3_f1_18: number + unk_er_f1_17: number + unk_er_f1_18: number + unk_er_f1_19: number unk_ds3_f2_0: number unk_ds3_f2_1: number unk_ds3_f2_2: number unk_ds3_f2_3: number unk_ds3_f2_4: number + /** + * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + */ + bloomColor: Vector4 unk_ds3_f2_9: number unk_ds3_f2_10: number unk_ds3_f2_11: number unk_ds3_f2_12: number unk_ds3_f2_13: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance: number + minFadeDistance: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance: number + minDistance: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -20981,15 +21306,6 @@ class Model extends DataAction { unkDepthBlend2: number unk_ds3_f2_26: number unk_ds3_f2_27: number - unk_ds3_f2_28: number - unk_ds3_p1_15: ScalarValue - unk_ds3_p1_24: ScalarValue - unk_ds3_p2_2: ScalarValue - unk_ds3_p2_3: Vector4Value - unk_ds3_p2_4: Vector4Value - unk_ds3_p2_5: Vector4Value - unk_ds3_p2_6: ScalarValue - unk_ds3_p2_7: ScalarValue unk_sdt_f2_29: number unk_sdt_f2_30: number unk_sdt_f2_31: number @@ -20999,10 +21315,8 @@ class Model extends DataAction { unk_sdt_f2_35: number unk_sdt_f2_36: number unk_sdt_f2_37: number - unk_er_f1_17: number - unk_er_f1_18: number - unk_er_f1_19: number unk_ac6_f2_38: number + unk_ds3_f2_28: number constructor(props: ModelParams = {}) { super(ActionType.Model, {isAppearance:true,isParticle:true}) this.assign(props) @@ -21010,120 +21324,6 @@ class Model extends DataAction { } export interface TracerParams { - /** - * Tracer orientation mode. See {@link TracerOrientationMode} for more information. - * - * **Default**: {@link TracerOrientationMode.LocalZ} - */ - orientation?: TracerOrientationMode - /** - * Normal map texture ID. - * - * This is used to control the distortion effect of the trail. - * - * **Default**: `0` - * - * See also: - * - {@link distortionIntensity} - */ - normalMap?: number - /** - * The trail is made up of multiple quads, or *segments*. This controls how many seconds to wait between new segments being created. Lower values produce a smoother trail. - * - * **Default**: `0` - */ - segmentInterval?: number - /** - * The trail is made up of multiple quads, or *segments*. This controls how long each segment should last in seconds. - * - * **Default**: `1` - */ - segmentDuration?: number - /** - * The trail is made up of multiple quads, or *segments*. This controls how many segments may exist at the same time. - * - * **Default**: `100` - */ - concurrentSegments?: number - /** - * To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. - * - * **Default**: `1` - * - * See also: - * - {@link totalFrames} - */ - columns?: number - /** - * To split the texture into multiple animation frames, this value must be set to the total number of frames in the texture. - * - * **Default**: `1` - * - * See also: - * - {@link columns} - */ - totalFrames?: number - /** - * Controls whether or not the UV of the trail should be attached to the node or not. If it is attached, the texture will slide along the segments to follow the source wherever it moves, as if it was a flag attached to a pole. If it is not attached, the texture will stay where it was when the segment was created, like a skid mark on a road where the road is the segments and the mark is the texture, it wouldn't follow the car/node that made it. - * - * **Default**: `true` - */ - attachedUV?: boolean - /** - * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. - * - * Note: - * - This has no effect if the "Effects Quality" setting is set to "Low". - * - This does not affect the natural bloom effect from high color values. - * - * **Default**: `[1, 1, 1, 0]` - */ - bloomColor?: Vector4 - /** - * Controls how dark shaded parts of the trail are. - * - * **Default**: `0` - */ - shadowDarkness?: number - /** - * Specular texture ID. - * - * **Default**: `0` - * - * See also: - * - {@link lighting} - * - {@link glossiness} - * - {@link specularity} - */ - specular?: number - /** - * Controls how sharp the specular highlights are. - * - * **Default**: `0.25` - * - * See also: - * - {@link lighting} - * - {@link specular} - * - {@link specularity} - */ - glossiness?: number - /** - * Controls how the trail is lit. See {@link LightingMode} for more information. - * - * **Default**: {@link LightingMode.Unlit} - */ - lighting?: LightingMode - /** - * Controls how bright the specular highlights are. - * - * **Default**: `0.5` - * - * See also: - * - {@link lighting} - * - {@link specular} - * - {@link glossiness} - */ - specularity?: number /** * Texture ID. * @@ -21156,6 +21356,18 @@ export interface TracerParams { * **Argument**: {@link PropertyArgument.EmissionTime Emission time} */ widthMultiplier?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_2?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_3?: ScalarValue /** * Color multiplier. * @@ -21232,6 +21444,12 @@ export interface TracerParams { * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ varianceV?: ScalarValue + /** + * Unknown. + * + * **Default**: `-1` + */ + unk_ds3_p1_13?: ScalarValue /** * Scalar multiplier for the color that does not affect the alpha. Effectively a brightness multiplier. * @@ -21248,6 +21466,80 @@ export interface TracerParams { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ alphaMultiplier?: ScalarValue + /** + * Controls the intensity of the distortion effect. At 0, there is no distortion at all. + * + * **Default**: `0` + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + * + * See also: + * - {@link normalMap} + */ + distortionIntensity?: ScalarValue + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_3?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_4?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_5?: Vector4Value + /** + * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. + * + * This threshold creates a hard cut-off between visible and not visible, which is unlike the {@link alphaFadeThreshold}. + * + * **Default**: `0` + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + */ + alphaThreshold?: ScalarValue + /** + * Tracer orientation mode. See {@link TracerOrientationMode} for more information. + * + * **Default**: {@link TracerOrientationMode.LocalZ} + */ + orientation?: TracerOrientationMode + /** + * Normal map texture ID. + * + * This is used to control the distortion effect of the trail. + * + * **Default**: `0` + * + * See also: + * - {@link distortionIntensity} + */ + normalMap?: number + /** + * The trail is made up of multiple quads, or *segments*. This controls how many seconds to wait between new segments being created. Lower values produce a smoother trail. + * + * **Default**: `0` + */ + segmentInterval?: number + /** + * The trail is made up of multiple quads, or *segments*. This controls how long each segment should last in seconds. + * + * **Default**: `1` + */ + segmentDuration?: number + /** + * The trail is made up of multiple quads, or *segments*. This controls how many segments may exist at the same time. + * + * **Default**: `100` + */ + concurrentSegments?: number /** * Unknown integer. * @@ -21266,6 +21558,30 @@ export interface TracerParams { * **Default**: `0` */ unk_ds3_f1_9?: number + /** + * To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. + * + * **Default**: `1` + * + * See also: + * - {@link totalFrames} + */ + columns?: number + /** + * To split the texture into multiple animation frames, this value must be set to the total number of frames in the texture. + * + * **Default**: `1` + * + * See also: + * - {@link columns} + */ + totalFrames?: number + /** + * Controls whether or not the UV of the trail should be attached to the node or not. If it is attached, the texture will slide along the segments to follow the source wherever it moves, as if it was a flag attached to a pole. If it is not attached, the texture will stay where it was when the segment was created, like a skid mark on a road where the road is the segments and the mark is the texture, it wouldn't follow the car/node that made it. + * + * **Default**: `true` + */ + attachedUV?: boolean /** * Unknown integer. * @@ -21284,6 +21600,24 @@ export interface TracerParams { * **Default**: `0` */ unk_ds3_f1_15?: number + /** + * Unknown integer. + * + * **Default**: `1` + */ + unk_er_f1_14?: number + /** + * Unknown integer. + * + * **Default**: `1` + */ + unk_er_f1_15?: number + /** + * Unknown integer. + * + * **Default**: `0` + */ + unk_er_f1_16?: number /** * Unknown integer. * @@ -21309,11 +21643,31 @@ export interface TracerParams { */ unk_ds3_f2_3?: number /** - * Unknown integer. + * Controls whether or not the particles have an additional bloom effect controlled by {@link bloomColor}. * - * **Default**: `1` + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * **Default**: `true` + * + * See also: + * - {@link bloomColor} */ - unk_ds3_f2_4?: number + bloom?: boolean + /** + * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * **Default**: `[1, 1, 1, 0]` + * + * See also: + * - {@link bloom} + */ + bloomColor?: Vector4 /** * Unknown float. * @@ -21345,37 +21699,37 @@ export interface TracerParams { */ unk_ds3_f2_13?: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * **Default**: `-1` * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance?: number + minFadeDistance?: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * **Default**: `-1` * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance?: number + minDistance?: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -21495,74 +21849,51 @@ export interface TracerParams { */ unk_ds3_f2_29?: number /** - * Unknown. + * Controls how dark shaded parts of the trail are. * * **Default**: `0` */ - unk_ds3_p1_2?: ScalarValue + shadowDarkness?: number /** - * Unknown. + * Unknown integer. * * **Default**: `0` */ - unk_ds3_p1_3?: ScalarValue + unk_sdt_f2_31?: number /** - * Unknown. + * Unknown integer. * - * **Default**: `-1` + * **Default**: `1` */ - unk_ds3_p1_13?: ScalarValue + unk_sdt_f2_32?: number /** - * Controls the intensity of the distortion effect. At 0, there is no distortion at all. + * Specular texture ID. * * **Default**: `0` * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} - * * See also: - * - {@link normalMap} - */ - distortionIntensity?: ScalarValue - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_3?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_4?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` + * - {@link lighting} + * - {@link glossiness} + * - {@link specularity} */ - unk_ds3_p2_5?: Vector4Value + specular?: number /** - * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - * - * This threshold creates a hard cut-off between visible and not visible, which is unlike the {@link alphaFadeThreshold}. - * - * **Default**: `0` + * Controls how sharp the specular highlights are. * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} - */ - alphaThreshold?: ScalarValue - /** - * Unknown integer. + * **Default**: `0.25` * - * **Default**: `0` + * See also: + * - {@link lighting} + * - {@link specular} + * - {@link specularity} */ - unk_sdt_f2_31?: number + glossiness?: number /** - * Unknown integer. + * Controls how the trail is lit. See {@link LightingMode} for more information. * - * **Default**: `1` + * **Default**: {@link LightingMode.Unlit} */ - unk_sdt_f2_32?: number + lighting?: LightingMode /** * Unknown integer. * @@ -21576,23 +21907,16 @@ export interface TracerParams { */ unk_sdt_f2_37?: number /** - * Unknown integer. - * - * **Default**: `1` - */ - unk_er_f1_14?: number - /** - * Unknown integer. + * Controls how bright the specular highlights are. * - * **Default**: `1` - */ - unk_er_f1_15?: number - /** - * Unknown integer. + * **Default**: `0.5` * - * **Default**: `0` + * See also: + * - {@link lighting} + * - {@link specular} + * - {@link glossiness} */ - unk_er_f1_16?: number + specularity?: number /** * Unknown integer. * @@ -21611,107 +21935,21 @@ class Tracer extends DataAction { declare readonly type: ActionType.Tracer declare readonly meta: ActionMeta & {isAppearance:true,isParticle:true} /** - * Tracer orientation mode. See {@link TracerOrientationMode} for more information. + * Texture ID. + * + * **Argument**: {@link PropertyArgument.Constant0 Constant 0} */ - orientation: TracerOrientationMode + texture: ScalarValue /** - * Normal map texture ID. - * - * This is used to control the distortion effect of the trail. + * Blend mode. * - * See also: - * - {@link distortionIntensity} + * **Argument**: {@link PropertyArgument.Constant0 Constant 0} */ - normalMap: number + blendMode: BlendMode | ScalarProperty /** - * The trail is made up of multiple quads, or *segments*. This controls how many seconds to wait between new segments being created. Lower values produce a smoother trail. - */ - segmentInterval: number - /** - * The trail is made up of multiple quads, or *segments*. This controls how long each segment should last in seconds. - */ - segmentDuration: number - /** - * The trail is made up of multiple quads, or *segments*. This controls how many segments may exist at the same time. - */ - concurrentSegments: number - /** - * To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. - * - * See also: - * - {@link totalFrames} - */ - columns: number - /** - * To split the texture into multiple animation frames, this value must be set to the total number of frames in the texture. - * - * See also: - * - {@link columns} - */ - totalFrames: number - /** - * Controls whether or not the UV of the trail should be attached to the node or not. If it is attached, the texture will slide along the segments to follow the source wherever it moves, as if it was a flag attached to a pole. If it is not attached, the texture will stay where it was when the segment was created, like a skid mark on a road where the road is the segments and the mark is the texture, it wouldn't follow the car/node that made it. - */ - attachedUV: boolean - /** - * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. - * - * Note: - * - This has no effect if the "Effects Quality" setting is set to "Low". - * - This does not affect the natural bloom effect from high color values. - */ - bloomColor: Vector4 - /** - * Controls how dark shaded parts of the trail are. - */ - shadowDarkness: number - /** - * Specular texture ID. - * - * See also: - * - {@link lighting} - * - {@link glossiness} - * - {@link specularity} - */ - specular: number - /** - * Controls how sharp the specular highlights are. - * - * See also: - * - {@link lighting} - * - {@link specular} - * - {@link specularity} - */ - glossiness: number - /** - * Controls how the trail is lit. See {@link LightingMode} for more information. - */ - lighting: LightingMode - /** - * Controls how bright the specular highlights are. - * - * See also: - * - {@link lighting} - * - {@link specular} - * - {@link glossiness} - */ - specularity: number - /** - * Texture ID. - * - * **Argument**: {@link PropertyArgument.Constant0 Constant 0} - */ - texture: ScalarValue - /** - * Blend mode. - * - * **Argument**: {@link PropertyArgument.Constant0 Constant 0} - */ - blendMode: BlendMode | ScalarProperty - /** - * The width of the trail. - * - * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + * The width of the trail. + * + * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ width: ScalarValue /** @@ -21720,6 +21958,8 @@ class Tracer extends DataAction { * **Argument**: {@link PropertyArgument.EmissionTime Emission time} */ widthMultiplier: ScalarValue + unk_ds3_p1_2: ScalarValue + unk_ds3_p1_3: ScalarValue /** * Color multiplier. * @@ -21778,6 +22018,7 @@ class Tracer extends DataAction { * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ varianceV: ScalarValue + unk_ds3_p1_13: ScalarValue /** * Scalar multiplier for the color that does not affect the alpha. Effectively a brightness multiplier. * @@ -21790,50 +22031,137 @@ class Tracer extends DataAction { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ alphaMultiplier: ScalarValue + /** + * Controls the intensity of the distortion effect. At 0, there is no distortion at all. + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + * + * See also: + * - {@link normalMap} + */ + distortionIntensity: ScalarValue + unk_ds3_p2_3: Vector4Value + unk_ds3_p2_4: Vector4Value + unk_ds3_p2_5: Vector4Value + /** + * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. + * + * This threshold creates a hard cut-off between visible and not visible, which is unlike the {@link alphaFadeThreshold}. + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + */ + alphaThreshold: ScalarValue + /** + * Tracer orientation mode. See {@link TracerOrientationMode} for more information. + */ + orientation: TracerOrientationMode + /** + * Normal map texture ID. + * + * This is used to control the distortion effect of the trail. + * + * See also: + * - {@link distortionIntensity} + */ + normalMap: number + /** + * The trail is made up of multiple quads, or *segments*. This controls how many seconds to wait between new segments being created. Lower values produce a smoother trail. + */ + segmentInterval: number + /** + * The trail is made up of multiple quads, or *segments*. This controls how long each segment should last in seconds. + */ + segmentDuration: number + /** + * The trail is made up of multiple quads, or *segments*. This controls how many segments may exist at the same time. + */ + concurrentSegments: number unk_ds3_f1_7: number unk_ds3_f1_8: number unk_ds3_f1_9: number + /** + * To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. + * + * See also: + * - {@link totalFrames} + */ + columns: number + /** + * To split the texture into multiple animation frames, this value must be set to the total number of frames in the texture. + * + * See also: + * - {@link columns} + */ + totalFrames: number + /** + * Controls whether or not the UV of the trail should be attached to the node or not. If it is attached, the texture will slide along the segments to follow the source wherever it moves, as if it was a flag attached to a pole. If it is not attached, the texture will stay where it was when the segment was created, like a skid mark on a road where the road is the segments and the mark is the texture, it wouldn't follow the car/node that made it. + */ + attachedUV: boolean unk_ds3_f1_13: number unk_ds3_f1_14: number unk_ds3_f1_15: number + unk_er_f1_14: number + unk_er_f1_15: number + unk_er_f1_16: number unk_ds3_f2_0: number unk_ds3_f2_1: boolean unk_ds3_f2_2: number unk_ds3_f2_3: number - unk_ds3_f2_4: number + /** + * Controls whether or not the particles have an additional bloom effect controlled by {@link bloomColor}. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * See also: + * - {@link bloomColor} + */ + bloom: boolean + /** + * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * See also: + * - {@link bloom} + */ + bloomColor: Vector4 unk_ds3_f2_9: number unk_ds3_f2_10: number unk_ds3_f2_11: number unk_ds3_f2_12: number unk_ds3_f2_13: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance: number + minFadeDistance: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance: number + minDistance: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -21894,144 +22222,53 @@ class Tracer extends DataAction { unk_ds3_f2_27: number unk_ds3_f2_28: number unk_ds3_f2_29: number - unk_ds3_p1_2: ScalarValue - unk_ds3_p1_3: ScalarValue - unk_ds3_p1_13: ScalarValue /** - * Controls the intensity of the distortion effect. At 0, there is no distortion at all. - * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} - * - * See also: - * - {@link normalMap} - */ - distortionIntensity: ScalarValue - unk_ds3_p2_3: Vector4Value - unk_ds3_p2_4: Vector4Value - unk_ds3_p2_5: Vector4Value - /** - * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - * - * This threshold creates a hard cut-off between visible and not visible, which is unlike the {@link alphaFadeThreshold}. - * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} + * Controls how dark shaded parts of the trail are. */ - alphaThreshold: ScalarValue + shadowDarkness: number unk_sdt_f2_31: number unk_sdt_f2_32: number - unk_sdt_f2_36: number - unk_sdt_f2_37: number - unk_er_f1_14: number - unk_er_f1_15: number - unk_er_f1_16: number - unk_er_f2_39: number - constructor(props: TracerParams = {}) { - super(ActionType.Tracer, {isAppearance:true,isParticle:true}) - this.assign(props) - } -} - -export interface DistortionParams { - /** - * Controls what type of distortion to apply. See {@link DistortionMode} for more details. - * - * **Default**: {@link DistortionMode.NormalMap} - */ - mode?: DistortionMode - /** - * Controls the shape of the particle. See {@link DistortionShape} for more information. - * - * **Default**: {@link DistortionShape.Rectangle} - */ - shape?: DistortionShape - /** - * Controls the orientation mode for the particles. See {@link OrientationMode} for more information. - * - * **Default**: {@link OrientationMode.CameraPlane} - */ - orientation?: OrientationMode /** - * Texture ID. - * - * This texture seems to completely hide the distortion effect. It's probably best to just leave it at 0 unless you are trying to figure out how to use it properly. - * - * **Default**: `0` - */ - texture?: number - /** - * Normal map texture ID. - * - * Only used if the distortion {@link mode} is set to something that uses it. - * - * **Default**: `0` - */ - normalMap?: number - /** - * Mask texture ID. This texture is used to control the color and opacity of the particle. - * - * **Default**: `0` - */ - mask?: number - /** - * Each particle will pick a random number between this value and 1, and the width of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly thinner, down to half width. Setting it to 2 will make them randomly wider, up to double width. - * - * If {@link uniformScale} is enabled, this also affects the height. - * - * **Default**: `1` + * Specular texture ID. * * See also: - * - {@link scaleVariationY} - * - {@link scaleVariationZ} + * - {@link lighting} + * - {@link glossiness} + * - {@link specularity} */ - scaleVariationX?: number + specular: number /** - * Each particle will pick a random number between this value and 1, and the height of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shorter, down to half height. Setting it to 2 will make them randomly taller, up to double height. - * - * If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the height, and this field is ignored. - * - * **Default**: `1` + * Controls how sharp the specular highlights are. * * See also: - * - {@link scaleVariationX} - * - {@link scaleVariationZ} + * - {@link lighting} + * - {@link specular} + * - {@link specularity} */ - scaleVariationY?: number + glossiness: number /** - * Each particle will pick a random number between this value and 1, and the depth of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shallower, down to half depth. Setting it to 2 will make them randomly deeper, up to double depth. - * - * If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the depth, and this field is ignored. - * - * **Default**: `1` - * - * See also: - * - {@link scaleVariationX} - * - {@link scaleVariationY} + * Controls how the trail is lit. See {@link LightingMode} for more information. */ - scaleVariationZ?: number + lighting: LightingMode + unk_sdt_f2_36: number + unk_sdt_f2_37: number /** - * If enabled, the particle X scale-related properties and fields will control the scale in all axes, and the Y and Z counterparts will be ignored. - * - * **Default**: `false` + * Controls how bright the specular highlights are. * * See also: - * - {@link sizeX} - * - {@link sizeY} - * - {@link sizeZ} - * - {@link scaleVariationX} - * - {@link scaleVariationY} - * - {@link scaleVariationZ} - */ - uniformScale?: boolean - /** - * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. - * - * Note: - * - This has no effect if the "Effects Quality" setting is set to "Low". - * - This does not affect the natural bloom effect from high color values. - * - * **Default**: `[1, 1, 1, 0]` + * - {@link lighting} + * - {@link specular} + * - {@link glossiness} */ - bloomColor?: Vector4 + specularity: number + unk_er_f2_39: number + constructor(props: TracerParams = {}) { + super(ActionType.Tracer, {isAppearance:true,isParticle:true}) + this.assign(props) + } +} + +export interface DistortionParams { /** * Blend mode. * @@ -22119,6 +22356,12 @@ export interface DistortionParams { * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ color?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p1_7?: Vector4Value /** * Controls the intensity of the distortion effect. At 0, there is no distortion at all. * @@ -22127,6 +22370,12 @@ export interface DistortionParams { * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ intensity?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_9?: ScalarValue /** * Controls the speed of the stirring effect in degrees per second. Requires {@link mode} to be set to {@link DistortionMode.Stir}. * @@ -22191,6 +22440,142 @@ export interface DistortionParams { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ alphaMultiplier?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p2_2?: ScalarValue + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_3?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_4?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_5?: Vector4Value + /** + * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. + * + * This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. + * + * **Default**: `0` + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + */ + alphaThreshold?: ScalarValue + /** + * Unknown. + * + * **Default**: `1` + */ + unk_er_p2_7?: ScalarValue + /** + * Unknown. + * + * **Default**: `1` + */ + unk_er_p2_8?: ScalarValue + /** + * Controls what type of distortion to apply. See {@link DistortionMode} for more details. + * + * **Default**: {@link DistortionMode.NormalMap} + */ + mode?: DistortionMode + /** + * Controls the shape of the particle. See {@link DistortionShape} for more information. + * + * **Default**: {@link DistortionShape.Rectangle} + */ + shape?: DistortionShape + /** + * Controls the orientation mode for the particles. See {@link OrientationMode} for more information. + * + * **Default**: {@link OrientationMode.CameraPlane} + */ + orientation?: OrientationMode + /** + * Texture ID. + * + * This texture seems to completely hide the distortion effect. It's probably best to just leave it at 0 unless you are trying to figure out how to use it properly. + * + * **Default**: `0` + */ + texture?: number + /** + * Normal map texture ID. + * + * Only used if the distortion {@link mode} is set to something that uses it. + * + * **Default**: `0` + */ + normalMap?: number + /** + * Mask texture ID. This texture is used to control the color and opacity of the particle. + * + * **Default**: `0` + */ + mask?: number + /** + * Each particle will pick a random number between this value and 1, and the width of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly thinner, down to half width. Setting it to 2 will make them randomly wider, up to double width. + * + * If {@link uniformScale} is enabled, this also affects the height. + * + * **Default**: `1` + * + * See also: + * - {@link scaleVariationY} + * - {@link scaleVariationZ} + */ + scaleVariationX?: number + /** + * Each particle will pick a random number between this value and 1, and the height of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shorter, down to half height. Setting it to 2 will make them randomly taller, up to double height. + * + * If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the height, and this field is ignored. + * + * **Default**: `1` + * + * See also: + * - {@link scaleVariationX} + * - {@link scaleVariationZ} + */ + scaleVariationY?: number + /** + * Each particle will pick a random number between this value and 1, and the depth of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shallower, down to half depth. Setting it to 2 will make them randomly deeper, up to double depth. + * + * If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the depth, and this field is ignored. + * + * **Default**: `1` + * + * See also: + * - {@link scaleVariationX} + * - {@link scaleVariationY} + */ + scaleVariationZ?: number + /** + * If enabled, the particle X scale-related properties and fields will control the scale in all axes, and the Y and Z counterparts will be ignored. + * + * **Default**: `false` + * + * See also: + * - {@link sizeX} + * - {@link sizeY} + * - {@link sizeZ} + * - {@link scaleVariationX} + * - {@link scaleVariationY} + * - {@link scaleVariationZ} + */ + uniformScale?: boolean /** * Unknown integer. * @@ -22203,6 +22588,18 @@ export interface DistortionParams { * **Default**: `0` */ unk_ds3_f1_12?: number + /** + * Unknown integer. + * + * **Default**: `1` + */ + unk_er_f1_12?: number + /** + * Unknown integer. + * + * **Default**: `1` + */ + unk_er_f1_13?: number /** * Unknown integer. * @@ -22233,6 +22630,16 @@ export interface DistortionParams { * **Default**: `0` */ unk_ds3_f2_4?: number + /** + * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * **Default**: `[1, 1, 1, 0]` + */ + bloomColor?: Vector4 /** * Unknown integer. * @@ -22264,37 +22671,37 @@ export interface DistortionParams { */ unk_ds3_f2_13?: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * **Default**: `-1` * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance?: number + minFadeDistance?: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * **Default**: `-1` * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance?: number + minDistance?: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -22413,52 +22820,6 @@ export interface DistortionParams { * **Default**: `0` */ unk_ds3_f2_29?: number - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p1_7?: Vector4Value - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_9?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p2_2?: ScalarValue - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_3?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_4?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_5?: Vector4Value - /** - * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - * - * This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. - * - * **Default**: `0` - * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} - */ - alphaThreshold?: ScalarValue /** * Unknown float. * @@ -22513,30 +22874,6 @@ export interface DistortionParams { * **Default**: `0` */ unk_sdt_f2_38?: number - /** - * Unknown integer. - * - * **Default**: `1` - */ - unk_er_f1_12?: number - /** - * Unknown integer. - * - * **Default**: `1` - */ - unk_er_f1_13?: number - /** - * Unknown. - * - * **Default**: `1` - */ - unk_er_p2_7?: ScalarValue - /** - * Unknown. - * - * **Default**: `1` - */ - unk_er_p2_8?: ScalarValue } /** @@ -22550,84 +22887,6 @@ export interface DistortionParams { class Distortion extends DataAction { declare readonly type: ActionType.Distortion declare readonly meta: ActionMeta & {isAppearance:true,isParticle:true} - /** - * Controls what type of distortion to apply. See {@link DistortionMode} for more details. - */ - mode: DistortionMode - /** - * Controls the shape of the particle. See {@link DistortionShape} for more information. - */ - shape: DistortionShape - /** - * Controls the orientation mode for the particles. See {@link OrientationMode} for more information. - */ - orientation: OrientationMode - /** - * Texture ID. - * - * This texture seems to completely hide the distortion effect. It's probably best to just leave it at 0 unless you are trying to figure out how to use it properly. - */ - texture: number - /** - * Normal map texture ID. - * - * Only used if the distortion {@link mode} is set to something that uses it. - */ - normalMap: number - /** - * Mask texture ID. This texture is used to control the color and opacity of the particle. - */ - mask: number - /** - * Each particle will pick a random number between this value and 1, and the width of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly thinner, down to half width. Setting it to 2 will make them randomly wider, up to double width. - * - * If {@link uniformScale} is enabled, this also affects the height. - * - * See also: - * - {@link scaleVariationY} - * - {@link scaleVariationZ} - */ - scaleVariationX: number - /** - * Each particle will pick a random number between this value and 1, and the height of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shorter, down to half height. Setting it to 2 will make them randomly taller, up to double height. - * - * If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the height, and this field is ignored. - * - * See also: - * - {@link scaleVariationX} - * - {@link scaleVariationZ} - */ - scaleVariationY: number - /** - * Each particle will pick a random number between this value and 1, and the depth of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shallower, down to half depth. Setting it to 2 will make them randomly deeper, up to double depth. - * - * If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the depth, and this field is ignored. - * - * See also: - * - {@link scaleVariationX} - * - {@link scaleVariationY} - */ - scaleVariationZ: number - /** - * If enabled, the particle X scale-related properties and fields will control the scale in all axes, and the Y and Z counterparts will be ignored. - * - * See also: - * - {@link sizeX} - * - {@link sizeY} - * - {@link sizeZ} - * - {@link scaleVariationX} - * - {@link scaleVariationY} - * - {@link scaleVariationZ} - */ - uniformScale: boolean - /** - * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. - * - * Note: - * - This has no effect if the "Effects Quality" setting is set to "Low". - * - This does not affect the natural bloom effect from high color values. - */ - bloomColor: Vector4 /** * Blend mode. * @@ -22699,12 +22958,14 @@ class Distortion extends DataAction { * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ color: Vector4Value + unk_ds3_p1_7: Vector4Value /** * Controls the intensity of the distortion effect. At 0, there is no distortion at all. * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ intensity: ScalarValue + unk_ds3_p1_9: ScalarValue /** * Controls the speed of the stirring effect in degrees per second. Requires {@link mode} to be set to {@link DistortionMode.Stir}. * @@ -22753,46 +23014,140 @@ class Distortion extends DataAction { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ alphaMultiplier: ScalarValue + unk_ds3_p2_2: ScalarValue + unk_ds3_p2_3: Vector4Value + unk_ds3_p2_4: Vector4Value + unk_ds3_p2_5: Vector4Value + /** + * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. + * + * This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + */ + alphaThreshold: ScalarValue + unk_er_p2_7: ScalarValue + unk_er_p2_8: ScalarValue + /** + * Controls what type of distortion to apply. See {@link DistortionMode} for more details. + */ + mode: DistortionMode + /** + * Controls the shape of the particle. See {@link DistortionShape} for more information. + */ + shape: DistortionShape + /** + * Controls the orientation mode for the particles. See {@link OrientationMode} for more information. + */ + orientation: OrientationMode + /** + * Texture ID. + * + * This texture seems to completely hide the distortion effect. It's probably best to just leave it at 0 unless you are trying to figure out how to use it properly. + */ + texture: number + /** + * Normal map texture ID. + * + * Only used if the distortion {@link mode} is set to something that uses it. + */ + normalMap: number + /** + * Mask texture ID. This texture is used to control the color and opacity of the particle. + */ + mask: number + /** + * Each particle will pick a random number between this value and 1, and the width of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly thinner, down to half width. Setting it to 2 will make them randomly wider, up to double width. + * + * If {@link uniformScale} is enabled, this also affects the height. + * + * See also: + * - {@link scaleVariationY} + * - {@link scaleVariationZ} + */ + scaleVariationX: number + /** + * Each particle will pick a random number between this value and 1, and the height of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shorter, down to half height. Setting it to 2 will make them randomly taller, up to double height. + * + * If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the height, and this field is ignored. + * + * See also: + * - {@link scaleVariationX} + * - {@link scaleVariationZ} + */ + scaleVariationY: number + /** + * Each particle will pick a random number between this value and 1, and the depth of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shallower, down to half depth. Setting it to 2 will make them randomly deeper, up to double depth. + * + * If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the depth, and this field is ignored. + * + * See also: + * - {@link scaleVariationX} + * - {@link scaleVariationY} + */ + scaleVariationZ: number + /** + * If enabled, the particle X scale-related properties and fields will control the scale in all axes, and the Y and Z counterparts will be ignored. + * + * See also: + * - {@link sizeX} + * - {@link sizeY} + * - {@link sizeZ} + * - {@link scaleVariationX} + * - {@link scaleVariationY} + * - {@link scaleVariationZ} + */ + uniformScale: boolean unk_ds3_f1_11: number unk_ds3_f1_12: number + unk_er_f1_12: number + unk_er_f1_13: number unk_ds3_f2_0: number unk_ds3_f2_1: number unk_ds3_f2_2: number unk_ds3_f2_3: number unk_ds3_f2_4: number + /** + * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + */ + bloomColor: Vector4 unk_ds3_f2_9: number unk_ds3_f2_10: number unk_ds3_f2_11: number unk_ds3_f2_12: number unk_ds3_f2_13: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance: number + minFadeDistance: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance: number + minDistance: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -22853,20 +23208,6 @@ class Distortion extends DataAction { unk_ds3_f2_27: number unk_ds3_f2_28: number unk_ds3_f2_29: number - unk_ds3_p1_7: Vector4Value - unk_ds3_p1_9: ScalarValue - unk_ds3_p2_2: ScalarValue - unk_ds3_p2_3: Vector4Value - unk_ds3_p2_4: Vector4Value - unk_ds3_p2_5: Vector4Value - /** - * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - * - * This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. - * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} - */ - alphaThreshold: ScalarValue unk_sdt_f2_30: number unk_sdt_f2_31: number unk_sdt_f2_32: number @@ -22876,10 +23217,6 @@ class Distortion extends DataAction { unk_sdt_f2_36: number unk_sdt_f2_37: number unk_sdt_f2_38: number - unk_er_f1_12: number - unk_er_f1_13: number - unk_er_p2_7: ScalarValue - unk_er_p2_8: ScalarValue constructor(props: DistortionParams = {}) { super(ActionType.Distortion, {isAppearance:true,isParticle:true}) this.assign(props) @@ -22887,32 +23224,6 @@ class Distortion extends DataAction { } export interface RadialBlurParams { - /** - * If enabled, the particle width-related properties and fields will control both the width and height of the particles, and the height counterparts will be ignored. - * - * **Default**: `false` - * - * See also: - * - {@link width} - * - {@link height} - */ - uniformScale?: boolean - /** - * Controls how many times to apply the effect. Higher values can have a significant impact on performance. - * - * **Default**: `1` - */ - iterations?: number - /** - * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. - * - * Note: - * - This has no effect if the "Effects Quality" setting is set to "Low". - * - This does not affect the natural bloom effect from high color values. - * - * **Default**: `[1, 1, 1, 0]` - */ - bloomColor?: Vector4 /** * Blend mode. * @@ -22999,6 +23310,12 @@ export interface RadialBlurParams { * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ color?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p1_6?: Vector4Value /** * Controls the amount of blur to apply. Values greater than 1 may appear glitchy. * @@ -23023,12 +23340,74 @@ export interface RadialBlurParams { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ alphaMultiplier?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p2_2?: ScalarValue + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_3?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_4?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_5?: Vector4Value + /** + * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. + * + * This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. + * + * **Default**: `0` + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + */ + alphaThreshold?: ScalarValue + /** + * If enabled, the particle width-related properties and fields will control both the width and height of the particles, and the height counterparts will be ignored. + * + * **Default**: `false` + * + * See also: + * - {@link width} + * - {@link height} + */ + uniformScale?: boolean + /** + * Controls how many times to apply the effect. Higher values can have a significant impact on performance. + * + * **Default**: `1` + */ + iterations?: number /** * Unknown integer. * * **Default**: `0` */ unk_ds3_f1_4?: number + /** + * Unknown integer. + * + * **Default**: `1` + */ + unk_er_f1_3?: number + /** + * Unknown integer. + * + * **Default**: `1` + */ + unk_er_f1_4?: number /** * Unknown integer. * @@ -23059,6 +23438,16 @@ export interface RadialBlurParams { * **Default**: `0` */ unk_ds3_f2_4?: number + /** + * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * **Default**: `[1, 1, 1, 0]` + */ + bloomColor?: Vector4 /** * Unknown integer. * @@ -23090,37 +23479,37 @@ export interface RadialBlurParams { */ unk_ds3_f2_13?: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * **Default**: `-1` * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance?: number + minFadeDistance?: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * **Default**: `-1` * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance?: number + minDistance?: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -23239,64 +23628,12 @@ export interface RadialBlurParams { * **Default**: `0` */ unk_ds3_f2_29?: number - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p1_6?: Vector4Value - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p2_2?: ScalarValue - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_3?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_4?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_5?: Vector4Value - /** - * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - * - * This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. - * - * **Default**: `0` - * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} - */ - alphaThreshold?: ScalarValue /** * Unknown float. * * **Default**: `0` */ unk_sdt_f2_30?: number - /** - * Unknown integer. - * - * **Default**: `1` - */ - unk_er_f1_3?: number - /** - * Unknown integer. - * - * **Default**: `1` - */ - unk_er_f1_4?: number } /** @@ -23310,26 +23647,6 @@ export interface RadialBlurParams { class RadialBlur extends DataAction { declare readonly type: ActionType.RadialBlur declare readonly meta: ActionMeta & {isAppearance:true,isParticle:true} - /** - * If enabled, the particle width-related properties and fields will control both the width and height of the particles, and the height counterparts will be ignored. - * - * See also: - * - {@link width} - * - {@link height} - */ - uniformScale: boolean - /** - * Controls how many times to apply the effect. Higher values can have a significant impact on performance. - */ - iterations: number - /** - * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. - * - * Note: - * - This has no effect if the "Effects Quality" setting is set to "Low". - * - This does not affect the natural bloom effect from high color values. - */ - bloomColor: Vector4 /** * Blend mode. * @@ -23400,6 +23717,7 @@ class RadialBlur extends DataAction { * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ color: Vector4Value + unk_ds3_p1_6: Vector4Value /** * Controls the amount of blur to apply. Values greater than 1 may appear glitchy. * @@ -23418,45 +23736,79 @@ class RadialBlur extends DataAction { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ alphaMultiplier: ScalarValue + unk_ds3_p2_2: ScalarValue + unk_ds3_p2_3: Vector4Value + unk_ds3_p2_4: Vector4Value + unk_ds3_p2_5: Vector4Value + /** + * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. + * + * This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + */ + alphaThreshold: ScalarValue + /** + * If enabled, the particle width-related properties and fields will control both the width and height of the particles, and the height counterparts will be ignored. + * + * See also: + * - {@link width} + * - {@link height} + */ + uniformScale: boolean + /** + * Controls how many times to apply the effect. Higher values can have a significant impact on performance. + */ + iterations: number unk_ds3_f1_4: number + unk_er_f1_3: number + unk_er_f1_4: number unk_ds3_f2_0: number unk_ds3_f2_1: number unk_ds3_f2_2: number unk_ds3_f2_3: number unk_ds3_f2_4: number + /** + * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + */ + bloomColor: Vector4 unk_ds3_f2_9: number unk_ds3_f2_10: number unk_ds3_f2_11: number unk_ds3_f2_12: number unk_ds3_f2_13: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance: number + minFadeDistance: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance: number + minDistance: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -23517,22 +23869,7 @@ class RadialBlur extends DataAction { unk_ds3_f2_27: number unk_ds3_f2_28: number unk_ds3_f2_29: number - unk_ds3_p1_6: Vector4Value - unk_ds3_p2_2: ScalarValue - unk_ds3_p2_3: Vector4Value - unk_ds3_p2_4: Vector4Value - unk_ds3_p2_5: Vector4Value - /** - * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - * - * This threshold creates a hard cut-off between visible and not visible, which is unlike the alpha *fade* threshold properties in some similar actions. - * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} - */ - alphaThreshold: ScalarValue unk_sdt_f2_30: number - unk_er_f1_3: number - unk_er_f1_4: number constructor(props: RadialBlurParams = {}) { super(ActionType.RadialBlur, {isAppearance:true,isParticle:true}) this.assign(props) @@ -23571,6 +23908,73 @@ export interface PointLightParams { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ radius?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_3?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_4?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_5?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_6?: ScalarValue + /** + * Unknown. + * + * **Default**: `10` + */ + unk_ds3_p1_7?: ScalarValue + /** + * Unknown. + * + * **Default**: `10` + */ + unk_ds3_p1_8?: ScalarValue + /** + * Unknown. + * + * **Default**: `10` + */ + unk_ds3_p1_9?: ScalarValue + /** + * Affects the falloff of the light in some way, and how the normal of surfaces affect the intensity of the light. + * - At 0 or negative values, this completely disabled the light. + * - At 1, the light behaves like you would expect. + * - At values between 0 and 1, it seemingly makes the falloff of the light over distance stronger, so the light will sooner fade to nothing. + * - At values greater than 1, it will make the falloff weaker until near the {@link radius maximum distance}, and then it will very quickly fade to nothing. It also makes the normal of the surfaces hit by the light matter less. At very high values, anything within the radius basically becomes full bright. + * + * **Default**: `1` + * + * See also: + * - {@link falloffExponent} + */ + unk_ds3_p2_0?: ScalarValue + /** + * Unknown. + * + * **Default**: `1` + */ + unk_ds3_p2_1?: ScalarValue + /** + * Unknown. + * + * **Default**: `1` + */ + unk_sdt_p2_2?: ScalarValue /** * A scalar multiplier for the {@link diffuseColor diffuse color}. Good for easily adjusting the brightness of the light without changing the color. * @@ -23591,6 +23995,24 @@ export interface PointLightParams { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ specularMultiplier?: ScalarValue + /** + * Unknown integer. + * + * **Default**: `0` + */ + unk_ds3_f1_0?: number + /** + * Unknown float. + * + * **Default**: `0` + */ + unk_ds3_f1_1?: number + /** + * Unknown integer. + * + * **Default**: `0` + */ + unk_ds3_f2_0?: number /** * Toggles the jitter and flicker animations for the light. * @@ -23618,6 +24040,12 @@ export interface PointLightParams { * - {@link jitterZ} */ jitterAcceleration?: number + /** + * Unknown float. + * + * **Default**: `0` + */ + unk_ds3_f2_3?: number /** * Controls how much the light should move around randomly on the X-axis. * @@ -23721,71 +24149,6 @@ export interface PointLightParams { * **Default**: `1` */ shadowDarkness?: number - /** - * Controls the density of some sort of fake fog in the volume hit by the light. The fog does not affect the actual light produced by the source and is not affected by shadows. - * - * **Default**: `0` - * - * See also: - * - {@link phaseFunction} - * - {@link asymmetryParam} - */ - volumeDensity?: number - /** - * Controls whether or not {@link asymmetryParam} affects the fake fog from {@link volumeDensity}. - * - * **Default**: `true` - */ - phaseFunction?: boolean - /** - * Controls how the fake fog from {@link volumeDensity} scatters the light. This value is ignored if {@link phaseFunction} is disabled, and the fog will scatter the light equally in all directions. - * - * - At 0, the light is scattered equally in every direction. - * - As the value approaches 1, the light is scattered more and more forward, in the same direction as the light was already traveling. This means that the fake fog will be less visible from the side or behind, and more visible from in front of the light. - * - At 1, the fog will not scatter the light at all, so it will be entirely invisible. - * - Values above 1 produce unnatural-looking effects where the light darkens the fog instead. - * - * **Default**: `0.75` - */ - asymmetryParam?: number - /** - * Controls the falloff exponent of the light. - * - * Note: This is possibly something else, but the behavior is pretty similar to a falloff exponent in a few ways. - * - * **Default**: `1` - */ - falloffExponent?: number - /** - * Unknown integer. - * - * **Default**: `0` - */ - unk_ds3_f1_0?: number - /** - * Unknown float. - * - * **Default**: `0` - */ - unk_ds3_f1_1?: number - /** - * Unknown integer. - * - * **Default**: `0` - */ - unk_ds3_f2_0?: number - /** - * Unknown float. - * - * **Default**: `0` - */ - unk_ds3_f2_3?: number - /** - * Unknown. Only used in Dark Souls 3. - * - * **Default**: `1` - */ - unk_ds3_f2_12?: number /** * Unknown integer. * @@ -23847,71 +24210,49 @@ export interface PointLightParams { */ unk_ds3_f2_24?: number /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_3?: ScalarValue - /** - * Unknown. + * Controls the density of some sort of fake fog in the volume hit by the light. The fog does not affect the actual light produced by the source and is not affected by shadows. * * **Default**: `0` - */ - unk_ds3_p1_4?: ScalarValue - /** - * Unknown. * - * **Default**: `0` + * See also: + * - {@link phaseFunction} + * - {@link asymmetryParam} */ - unk_ds3_p1_5?: ScalarValue + volumeDensity?: number /** - * Unknown. + * Unknown float. * * **Default**: `0` */ - unk_ds3_p1_6?: ScalarValue + unk_sdt_f2_25?: number /** - * Unknown. + * Controls whether or not {@link asymmetryParam} affects the fake fog from {@link volumeDensity}. * - * **Default**: `10` + * **Default**: `true` */ - unk_ds3_p1_7?: ScalarValue + phaseFunction?: boolean /** - * Unknown. + * Controls how the fake fog from {@link volumeDensity} scatters the light. This value is ignored if {@link phaseFunction} is disabled, and the fog will scatter the light equally in all directions. * - * **Default**: `10` - */ - unk_ds3_p1_8?: ScalarValue - /** - * Unknown. + * - At 0, the light is scattered equally in every direction. + * - As the value approaches 1, the light is scattered more and more forward, in the same direction as the light was already traveling. This means that the fake fog will be less visible from the side or behind, and more visible from in front of the light. + * - At 1, the fog will not scatter the light at all, so it will be entirely invisible. + * - Values above 1 produce unnatural-looking effects where the light darkens the fog instead. * - * **Default**: `10` + * **Default**: `0.75` */ - unk_ds3_p1_9?: ScalarValue + asymmetryParam?: number /** - * Unknown. + * Controls the falloff exponent of the light. * - * **Default**: `1` - */ - unk_ds3_p2_0?: ScalarValue - /** - * Unknown. + * Note: This is possibly something else, but the behavior is pretty similar to a falloff exponent in a few ways. * * **Default**: `1` - */ - unk_ds3_p2_1?: ScalarValue - /** - * Unknown float. * - * **Default**: `0` - */ - unk_sdt_f2_25?: number - /** - * Unknown. - * - * **Default**: `1` + * See also: + * - {@link unk_ds3_p2_0} */ - unk_sdt_p2_2?: ScalarValue + falloffExponent?: number /** * Unknown integer. * @@ -23936,6 +24277,12 @@ export interface PointLightParams { * **Default**: `0` */ unk_er_f2_32?: number + /** + * Unknown. Only used in Dark Souls 3. + * + * **Default**: `1` + */ + unk_ds3_f2_12?: number } /** @@ -23972,6 +24319,26 @@ class PointLight extends DataAction { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ radius: ScalarValue + unk_ds3_p1_3: ScalarValue + unk_ds3_p1_4: ScalarValue + unk_ds3_p1_5: ScalarValue + unk_ds3_p1_6: ScalarValue + unk_ds3_p1_7: ScalarValue + unk_ds3_p1_8: ScalarValue + unk_ds3_p1_9: ScalarValue + /** + * Affects the falloff of the light in some way, and how the normal of surfaces affect the intensity of the light. + * - At 0 or negative values, this completely disabled the light. + * - At 1, the light behaves like you would expect. + * - At values between 0 and 1, it seemingly makes the falloff of the light over distance stronger, so the light will sooner fade to nothing. + * - At values greater than 1, it will make the falloff weaker until near the {@link radius maximum distance}, and then it will very quickly fade to nothing. It also makes the normal of the surfaces hit by the light matter less. At very high values, anything within the radius basically becomes full bright. + * + * See also: + * - {@link falloffExponent} + */ + unk_ds3_p2_0: ScalarValue + unk_ds3_p2_1: ScalarValue + unk_sdt_p2_2: ScalarValue /** * A scalar multiplier for the {@link diffuseColor diffuse color}. Good for easily adjusting the brightness of the light without changing the color. * @@ -23988,6 +24355,9 @@ class PointLight extends DataAction { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ specularMultiplier: ScalarValue + unk_ds3_f1_0: number + unk_ds3_f1_1: number + unk_ds3_f2_0: number /** * Toggles the jitter and flicker animations for the light. * @@ -24011,6 +24381,7 @@ class PointLight extends DataAction { * - {@link jitterZ} */ jitterAcceleration: number + unk_ds3_f2_3: number /** * Controls how much the light should move around randomly on the X-axis. * @@ -24094,6 +24465,16 @@ class PointLight extends DataAction { * Controls how dark shadows from this light source are. At 0, the shadows will be entirely invisible. */ shadowDarkness: number + unk_ds3_f2_15: number + unk_ds3_f2_16: number + unk_ds3_f2_17: number + unk_ds3_f2_18: number + unk_ds3_f2_19: number + unk_ds3_f2_20: number + unk_ds3_f2_21: number + unk_ds3_f2_22: number + unk_ds3_f2_23: number + unk_ds3_f2_24: number /** * Controls the density of some sort of fake fog in the volume hit by the light. The fog does not affect the actual light produced by the source and is not affected by shadows. * @@ -24102,6 +24483,7 @@ class PointLight extends DataAction { * - {@link asymmetryParam} */ volumeDensity: number + unk_sdt_f2_25: number /** * Controls whether or not {@link asymmetryParam} affects the fake fog from {@link volumeDensity}. */ @@ -24119,41 +24501,19 @@ class PointLight extends DataAction { * Controls the falloff exponent of the light. * * Note: This is possibly something else, but the behavior is pretty similar to a falloff exponent in a few ways. + * + * See also: + * - {@link unk_ds3_p2_0} */ falloffExponent: number - unk_ds3_f1_0: number - unk_ds3_f1_1: number - unk_ds3_f2_0: number - unk_ds3_f2_3: number - /** - * Unknown. Only used in Dark Souls 3. - */ - unk_ds3_f2_12: number - unk_ds3_f2_15: number - unk_ds3_f2_16: number - unk_ds3_f2_17: number - unk_ds3_f2_18: number - unk_ds3_f2_19: number - unk_ds3_f2_20: number - unk_ds3_f2_21: number - unk_ds3_f2_22: number - unk_ds3_f2_23: number - unk_ds3_f2_24: number - unk_ds3_p1_3: ScalarValue - unk_ds3_p1_4: ScalarValue - unk_ds3_p1_5: ScalarValue - unk_ds3_p1_6: ScalarValue - unk_ds3_p1_7: ScalarValue - unk_ds3_p1_8: ScalarValue - unk_ds3_p1_9: ScalarValue - unk_ds3_p2_0: ScalarValue - unk_ds3_p2_1: ScalarValue - unk_sdt_f2_25: number - unk_sdt_p2_2: ScalarValue unk_er_f2_29: number unk_er_f2_30: number unk_er_f2_31: number unk_er_f2_32: number + /** + * Unknown. Only used in Dark Souls 3. + */ + unk_ds3_f2_12: number constructor(props: PointLightParams = {}) { super(ActionType.PointLight, {isAppearance:true,isParticle:false}) this.assign(props) @@ -24503,6 +24863,202 @@ class Unk800 extends DataAction { } export interface GPUStandardParticleParams { + /** + * Controls how well the particles follow the node if it moves. + * + * **Default**: `0` + */ + particleFollowFactor?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_1?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_2?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_3?: ScalarValue + /** + * Particle acceleration along the X-axis. + * + * **Default**: `0` + * + * See also: + * - {@link particleAccelerationMin} + * - {@link particleAccelerationMax} + */ + particleAccelerationX?: ScalarValue + /** + * Particle acceleration along the Y-axis. + * + * **Default**: `0` + * + * See also: + * - {@link particleAccelerationMin} + * - {@link particleAccelerationMax} + */ + particleAccelerationY?: ScalarValue + /** + * Particle acceleration along the Z-axis. + * + * **Default**: `0` + * + * See also: + * - {@link particleAccelerationMin} + * - {@link particleAccelerationMax} + */ + particleAccelerationZ?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_7?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_8?: ScalarValue + /** + * Angular acceleration for particles around the Z-axis in degrees per second squared. + * + * **Default**: `0` + * + * See also: + * - {@link particleAngularAccelerationMin} + * - {@link particleAngularAccelerationMax} + */ + particleAngularAccelerationZ?: ScalarValue + /** + * The rate of change for the width of the particles. + * + * **Default**: `0` + * + * See also: + * - {@link particleGrowthRateXStatic} + */ + particleGrowthRateX?: ScalarValue + /** + * The rate of change for the height of the particles. + * + * **Default**: `0` + * + * See also: + * - {@link particleGrowthRateYStatic} + */ + particleGrowthRateY?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_12?: ScalarValue + /** + * Color multiplier. + * + * **Default**: `[1, 1, 1, 1]` + * + * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + */ + color?: Vector4Value + /** + * Unknown. + * + * **Default**: `1` + */ + unk_ds3_p1_14?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_15?: ScalarValue + /** + * Seemingly identical to {@link particleAccelerationZ}? + * + * **Default**: `0` + */ + unkParticleAcceleration?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_17?: ScalarValue + /** + * Downwards acceleration for particles. + * + * **Default**: `0` + */ + particleGravity?: ScalarValue + /** + * Maximum random turn angle for particles. Requires {@link particleRandomTurns} to be enabled. + * + * **Default**: `0` + * + * See also: + * - {@link particleRandomTurns} + * - {@link particleRandomTurnIntervalMax} + */ + particleRandomTurnAngle?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_20?: ScalarValue + /** + * Unknown. + * + * **Default**: `1` + */ + unk_ds3_p2_0?: ScalarValue + /** + * Unknown. + * + * **Default**: `1` + */ + unk_ds3_p2_1?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p2_2?: ScalarValue + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_3?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_4?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_5?: Vector4Value + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p2_6?: ScalarValue /** * Unknown integer. * @@ -25358,12 +25914,6 @@ export interface GPUStandardParticleParams { * - {@link bloom} */ bloomColor?: Vector4 - /** - * Desaturates the particles, making them more grayscale. At 0, the particles will have their regular colors. At 1, they will be entirely grayscale. - * - * **Default**: `0` - */ - desaturate?: number /** * Unknown float. * @@ -25412,6 +25962,12 @@ export interface GPUStandardParticleParams { * **Default**: `1` */ unk_er_f1_167?: number + /** + * Desaturates the particles, making them more grayscale. At 0, the particles will have their regular colors. At 1, they will be entirely grayscale. + * + * **Default**: `0` + */ + desaturate?: number /** * Unknown integer. * @@ -25497,37 +26053,37 @@ export interface GPUStandardParticleParams { */ unk_ds3_f2_13?: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * **Default**: `-1` * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance?: number + minFadeDistance?: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * **Default**: `-1` * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance?: number + minDistance?: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -25723,217 +26279,110 @@ export interface GPUStandardParticleParams { * **Default**: `0` */ unk_er_f2_39?: number +} + +/** + * ### {@link ActionType.GPUStandardParticle Action 10000 - GPUStandardParticle} + * **Slot**: {@link ActionSlots.AppearanceAction Appearance} + * + * An entire particle system in a single action. This emits GPU particles, which means thousands of particles can be rendered without much impact on performance. + * + * Note that while this emits particles, it is itself not a particle, and the particles emitted by this action are not affected by everything that affects regular particles. + * + * The name of this action is from Elden Ring's RTTI, where it's called "StandardParticle". + */ +class GPUStandardParticle extends DataAction { + declare readonly type: ActionType.GPUStandardParticle + declare readonly meta: ActionMeta & {isAppearance:true,isParticle:false} /** * Controls how well the particles follow the node if it moves. - * - * **Default**: `0` - */ - particleFollowFactor?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_1?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_2?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` */ - unk_ds3_p1_3?: ScalarValue + particleFollowFactor: ScalarValue + unk_ds3_p1_1: ScalarValue + unk_ds3_p1_2: ScalarValue + unk_ds3_p1_3: ScalarValue /** * Particle acceleration along the X-axis. * - * **Default**: `0` - * * See also: * - {@link particleAccelerationMin} * - {@link particleAccelerationMax} */ - particleAccelerationX?: ScalarValue + particleAccelerationX: ScalarValue /** * Particle acceleration along the Y-axis. * - * **Default**: `0` - * * See also: * - {@link particleAccelerationMin} * - {@link particleAccelerationMax} */ - particleAccelerationY?: ScalarValue + particleAccelerationY: ScalarValue /** * Particle acceleration along the Z-axis. * - * **Default**: `0` - * * See also: * - {@link particleAccelerationMin} * - {@link particleAccelerationMax} */ - particleAccelerationZ?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_7?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_8?: ScalarValue + particleAccelerationZ: ScalarValue + unk_ds3_p1_7: ScalarValue + unk_ds3_p1_8: ScalarValue /** * Angular acceleration for particles around the Z-axis in degrees per second squared. * - * **Default**: `0` - * * See also: * - {@link particleAngularAccelerationMin} * - {@link particleAngularAccelerationMax} */ - particleAngularAccelerationZ?: ScalarValue + particleAngularAccelerationZ: ScalarValue /** * The rate of change for the width of the particles. * - * **Default**: `0` - * * See also: * - {@link particleGrowthRateXStatic} */ - particleGrowthRateX?: ScalarValue + particleGrowthRateX: ScalarValue /** * The rate of change for the height of the particles. * - * **Default**: `0` - * * See also: * - {@link particleGrowthRateYStatic} */ - particleGrowthRateY?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_12?: ScalarValue + particleGrowthRateY: ScalarValue + unk_ds3_p1_12: ScalarValue /** * Color multiplier. * - * **Default**: `[1, 1, 1, 1]` - * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ - color?: Vector4Value - /** - * Unknown. - * - * **Default**: `1` - */ - unk_ds3_p1_14?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_15?: ScalarValue + color: Vector4Value + unk_ds3_p1_14: ScalarValue + unk_ds3_p1_15: ScalarValue /** * Seemingly identical to {@link particleAccelerationZ}? - * - * **Default**: `0` - */ - unkParticleAcceleration?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` */ - unk_ds3_p1_17?: ScalarValue + unkParticleAcceleration: ScalarValue + unk_ds3_p1_17: ScalarValue /** * Downwards acceleration for particles. - * - * **Default**: `0` */ - particleGravity?: ScalarValue + particleGravity: ScalarValue /** * Maximum random turn angle for particles. Requires {@link particleRandomTurns} to be enabled. * - * **Default**: `0` - * * See also: * - {@link particleRandomTurns} * - {@link particleRandomTurnIntervalMax} */ - particleRandomTurnAngle?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_20?: ScalarValue - /** - * Unknown. - * - * **Default**: `1` - */ - unk_ds3_p2_0?: ScalarValue - /** - * Unknown. - * - * **Default**: `1` - */ - unk_ds3_p2_1?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p2_2?: ScalarValue - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_3?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_4?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_5?: Vector4Value - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p2_6?: ScalarValue -} - -/** - * ### {@link ActionType.GPUStandardParticle Action 10000 - GPUStandardParticle} - * **Slot**: {@link ActionSlots.AppearanceAction Appearance} - * - * An entire particle system in a single action. This emits GPU particles, which means thousands of particles can be rendered without much impact on performance. - * - * Note that while this emits particles, it is itself not a particle, and the particles emitted by this action are not affected by everything that affects regular particles. - * - * The name of this action is from Elden Ring's RTTI, where it's called "StandardParticle". - */ -class GPUStandardParticle extends DataAction { - declare readonly type: ActionType.GPUStandardParticle - declare readonly meta: ActionMeta & {isAppearance:true,isParticle:false} + particleRandomTurnAngle: ScalarValue + unk_ds3_p1_20: ScalarValue + unk_ds3_p2_0: ScalarValue + unk_ds3_p2_1: ScalarValue + unk_ds3_p2_2: ScalarValue + unk_ds3_p2_3: Vector4Value + unk_ds3_p2_4: Vector4Value + unk_ds3_p2_5: Vector4Value + unk_ds3_p2_6: ScalarValue unk_ds3_f1_0: number /** * The ID of the texture of the particles. @@ -26369,10 +26818,6 @@ class GPUStandardParticle extends DataAction { * - {@link bloom} */ bloomColor: Vector4 - /** - * Desaturates the particles, making them more grayscale. At 0, the particles will have their regular colors. At 1, they will be entirely grayscale. - */ - desaturate: number unk_sdt_f1_160: number unk_sdt_f1_161: number unk_sdt_f1_162: number @@ -26381,6 +26826,10 @@ class GPUStandardParticle extends DataAction { unk_sdt_f1_165: number unk_sdt_f1_166: number unk_er_f1_167: number + /** + * Desaturates the particles, making them more grayscale. At 0, the particles will have their regular colors. At 1, they will be entirely grayscale. + */ + desaturate: number unk_ds3_f2_0: number unk_ds3_f2_1: number unk_ds3_f2_2: number @@ -26396,33 +26845,33 @@ class GPUStandardParticle extends DataAction { unk_ds3_f2_12: number unk_ds3_f2_13: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance: number + minFadeDistance: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance: number + minDistance: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -26525,102 +26974,209 @@ class GPUStandardParticle extends DataAction { */ specularity: number unk_er_f2_39: number + constructor(props: GPUStandardParticleParams = {}) { + super(ActionType.GPUStandardParticle, {isAppearance:true,isParticle:false}) + this.assign(props) + } +} + +export interface GPUStandardCorrectParticleParams { /** * Controls how well the particles follow the node if it moves. + * + * **Default**: `0` */ - particleFollowFactor: ScalarValue - unk_ds3_p1_1: ScalarValue - unk_ds3_p1_2: ScalarValue - unk_ds3_p1_3: ScalarValue + particleFollowFactor?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_1?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_2?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_3?: ScalarValue /** * Particle acceleration along the X-axis. * + * **Default**: `0` + * * See also: * - {@link particleAccelerationMin} * - {@link particleAccelerationMax} */ - particleAccelerationX: ScalarValue + particleAccelerationX?: ScalarValue /** * Particle acceleration along the Y-axis. * + * **Default**: `0` + * * See also: * - {@link particleAccelerationMin} * - {@link particleAccelerationMax} */ - particleAccelerationY: ScalarValue + particleAccelerationY?: ScalarValue /** * Particle acceleration along the Z-axis. * + * **Default**: `0` + * * See also: * - {@link particleAccelerationMin} * - {@link particleAccelerationMax} */ - particleAccelerationZ: ScalarValue - unk_ds3_p1_7: ScalarValue - unk_ds3_p1_8: ScalarValue + particleAccelerationZ?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_7?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_8?: ScalarValue /** * Angular acceleration for particles around the Z-axis in degrees per second squared. * + * **Default**: `0` + * * See also: * - {@link particleAngularAccelerationMin} * - {@link particleAngularAccelerationMax} */ - particleAngularAccelerationZ: ScalarValue + particleAngularAccelerationZ?: ScalarValue /** * The rate of change for the width of the particles. * + * **Default**: `0` + * * See also: * - {@link particleGrowthRateXStatic} */ - particleGrowthRateX: ScalarValue + particleGrowthRateX?: ScalarValue /** * The rate of change for the height of the particles. * + * **Default**: `0` + * * See also: * - {@link particleGrowthRateYStatic} */ - particleGrowthRateY: ScalarValue - unk_ds3_p1_12: ScalarValue + particleGrowthRateY?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_12?: ScalarValue /** * Color multiplier. * + * **Default**: `[1, 1, 1, 1]` + * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ - color: Vector4Value - unk_ds3_p1_14: ScalarValue - unk_ds3_p1_15: ScalarValue + color?: Vector4Value + /** + * Unknown. + * + * **Default**: `1` + */ + unk_ds3_p1_14?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_15?: ScalarValue /** * Seemingly identical to {@link particleAccelerationZ}? + * + * **Default**: `0` */ - unkParticleAcceleration: ScalarValue - unk_ds3_p1_17: ScalarValue + unkParticleAcceleration?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_17?: ScalarValue /** * Downwards acceleration for particles. + * + * **Default**: `0` */ - particleGravity: ScalarValue + particleGravity?: ScalarValue /** * Maximum random turn angle for particles. Requires {@link particleRandomTurns} to be enabled. * + * **Default**: `0` + * * See also: * - {@link particleRandomTurns} * - {@link particleRandomTurnIntervalMax} */ - particleRandomTurnAngle: ScalarValue - unk_ds3_p1_20: ScalarValue - unk_ds3_p2_0: ScalarValue - unk_ds3_p2_1: ScalarValue - unk_ds3_p2_2: ScalarValue - unk_ds3_p2_3: Vector4Value - unk_ds3_p2_4: Vector4Value - unk_ds3_p2_5: Vector4Value - unk_ds3_p2_6: ScalarValue - constructor(props: GPUStandardParticleParams = {}) { - super(ActionType.GPUStandardParticle, {isAppearance:true,isParticle:false}) - this.assign(props) - } -} - -export interface GPUStandardCorrectParticleParams { + particleRandomTurnAngle?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_20?: ScalarValue + /** + * Unknown. + * + * **Default**: `1` + */ + unk_ds3_p2_0?: ScalarValue + /** + * Unknown. + * + * **Default**: `1` + */ + unk_ds3_p2_1?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p2_2?: ScalarValue + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_3?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_4?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_5?: Vector4Value + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p2_6?: ScalarValue /** * Unknown integer. * @@ -27609,37 +28165,37 @@ export interface GPUStandardCorrectParticleParams { */ unk_ds3_f2_13?: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * **Default**: `-1` * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance?: number + minFadeDistance?: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * **Default**: `-1` * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance?: number + minDistance?: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -27835,217 +28391,110 @@ export interface GPUStandardCorrectParticleParams { * **Default**: `0` */ unk_er_f2_39?: number +} + +/** + * ### {@link ActionType.GPUStandardCorrectParticle Action 10001 - GPUStandardCorrectParticle} + * **Slot**: {@link ActionSlots.AppearanceAction Appearance} + * + * Very similar to {@link ActionType.GPUStandardParticle GPUStandardParticle}, with no known differences. + * + * The name of this action is from Elden Ring's RTTI, where it's called "StandardCorrectParticle". An action with the same ID had the name "WanderingVision" in Dark Souls 3, and that action could still exist in DS3, but it is not found in the vanilla game, so testing it is difficult. + * + * Note: This action does not exist in Dark Souls 3 or Sekiro, but it still has unknown fields and properties named after those games. This is because it makes the conversion between this action and {@link ActionType.GPUStandardParticle GPUStandardParticle} much simpler. When written for those two games, this action will be converted to the other action automatically. + */ +class GPUStandardCorrectParticle extends DataAction { + declare readonly type: ActionType.GPUStandardCorrectParticle + declare readonly meta: ActionMeta & {isAppearance:true,isParticle:false} /** * Controls how well the particles follow the node if it moves. - * - * **Default**: `0` - */ - particleFollowFactor?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` */ - unk_ds3_p1_1?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_2?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_3?: ScalarValue + particleFollowFactor: ScalarValue + unk_ds3_p1_1: ScalarValue + unk_ds3_p1_2: ScalarValue + unk_ds3_p1_3: ScalarValue /** * Particle acceleration along the X-axis. * - * **Default**: `0` - * * See also: * - {@link particleAccelerationMin} * - {@link particleAccelerationMax} */ - particleAccelerationX?: ScalarValue + particleAccelerationX: ScalarValue /** * Particle acceleration along the Y-axis. * - * **Default**: `0` - * * See also: * - {@link particleAccelerationMin} * - {@link particleAccelerationMax} */ - particleAccelerationY?: ScalarValue + particleAccelerationY: ScalarValue /** * Particle acceleration along the Z-axis. * - * **Default**: `0` - * * See also: * - {@link particleAccelerationMin} * - {@link particleAccelerationMax} */ - particleAccelerationZ?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_7?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_8?: ScalarValue + particleAccelerationZ: ScalarValue + unk_ds3_p1_7: ScalarValue + unk_ds3_p1_8: ScalarValue /** * Angular acceleration for particles around the Z-axis in degrees per second squared. * - * **Default**: `0` - * * See also: * - {@link particleAngularAccelerationMin} * - {@link particleAngularAccelerationMax} */ - particleAngularAccelerationZ?: ScalarValue + particleAngularAccelerationZ: ScalarValue /** * The rate of change for the width of the particles. * - * **Default**: `0` - * * See also: * - {@link particleGrowthRateXStatic} */ - particleGrowthRateX?: ScalarValue + particleGrowthRateX: ScalarValue /** * The rate of change for the height of the particles. * - * **Default**: `0` - * * See also: * - {@link particleGrowthRateYStatic} */ - particleGrowthRateY?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_12?: ScalarValue + particleGrowthRateY: ScalarValue + unk_ds3_p1_12: ScalarValue /** * Color multiplier. * - * **Default**: `[1, 1, 1, 1]` - * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ - color?: Vector4Value - /** - * Unknown. - * - * **Default**: `1` - */ - unk_ds3_p1_14?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_15?: ScalarValue + color: Vector4Value + unk_ds3_p1_14: ScalarValue + unk_ds3_p1_15: ScalarValue /** * Seemingly identical to {@link particleAccelerationZ}? - * - * **Default**: `0` */ - unkParticleAcceleration?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_17?: ScalarValue + unkParticleAcceleration: ScalarValue + unk_ds3_p1_17: ScalarValue /** * Downwards acceleration for particles. - * - * **Default**: `0` */ - particleGravity?: ScalarValue + particleGravity: ScalarValue /** * Maximum random turn angle for particles. Requires {@link particleRandomTurns} to be enabled. * - * **Default**: `0` - * * See also: * - {@link particleRandomTurns} * - {@link particleRandomTurnIntervalMax} */ - particleRandomTurnAngle?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_20?: ScalarValue - /** - * Unknown. - * - * **Default**: `1` - */ - unk_ds3_p2_0?: ScalarValue - /** - * Unknown. - * - * **Default**: `1` - */ - unk_ds3_p2_1?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p2_2?: ScalarValue - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_3?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_4?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_5?: Vector4Value - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p2_6?: ScalarValue -} - -/** - * ### {@link ActionType.GPUStandardCorrectParticle Action 10001 - GPUStandardCorrectParticle} - * **Slot**: {@link ActionSlots.AppearanceAction Appearance} - * - * Very similar to {@link ActionType.GPUStandardParticle GPUStandardParticle}, with no known differences. - * - * The name of this action is from Elden Ring's RTTI, where it's called "StandardCorrectParticle". An action with the same ID had the name "WanderingVision" in Dark Souls 3, and that action could still exist in DS3, but it is not found in the vanilla game, so testing it is difficult. - * - * Note: This action does not exist in Dark Souls 3 or Sekiro, but it still has unknown fields and properties named after those games. This is because it makes the conversion between this action and {@link ActionType.GPUStandardParticle GPUStandardParticle} much simpler. When written for those two games, this action will be converted to the other action automatically. - */ -class GPUStandardCorrectParticle extends DataAction { - declare readonly type: ActionType.GPUStandardCorrectParticle - declare readonly meta: ActionMeta & {isAppearance:true,isParticle:false} + particleRandomTurnAngle: ScalarValue + unk_ds3_p1_20: ScalarValue + unk_ds3_p2_0: ScalarValue + unk_ds3_p2_1: ScalarValue + unk_ds3_p2_2: ScalarValue + unk_ds3_p2_3: Vector4Value + unk_ds3_p2_4: Vector4Value + unk_ds3_p2_5: Vector4Value + unk_ds3_p2_6: ScalarValue unk_ds3_f1_0: number /** * The ID of the texture of the particles. @@ -28504,33 +28953,33 @@ class GPUStandardCorrectParticle extends DataAction { unk_ds3_f2_12: number unk_ds3_f2_13: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance: number + minFadeDistance: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance: number + minDistance: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -28633,102 +29082,73 @@ class GPUStandardCorrectParticle extends DataAction { */ specularity: number unk_er_f2_39: number + constructor(props: GPUStandardCorrectParticleParams = {}) { + super(ActionType.GPUStandardCorrectParticle, {isAppearance:true,isParticle:false}) + this.assign(props) + } +} + +export interface LightShaftParams { /** - * Controls how well the particles follow the node if it moves. - */ - particleFollowFactor: ScalarValue - unk_ds3_p1_1: ScalarValue - unk_ds3_p1_2: ScalarValue - unk_ds3_p1_3: ScalarValue - /** - * Particle acceleration along the X-axis. + * Unknown. * - * See also: - * - {@link particleAccelerationMin} - * - {@link particleAccelerationMax} + * **Default**: `1` */ - particleAccelerationX: ScalarValue + width?: ScalarValue /** - * Particle acceleration along the Y-axis. + * Unknown. * - * See also: - * - {@link particleAccelerationMin} - * - {@link particleAccelerationMax} + * **Default**: `1` */ - particleAccelerationY: ScalarValue + height?: ScalarValue /** - * Particle acceleration along the Z-axis. + * Unknown. * - * See also: - * - {@link particleAccelerationMin} - * - {@link particleAccelerationMax} + * **Default**: `[1, 1, 1, 1]` */ - particleAccelerationZ: ScalarValue - unk_ds3_p1_7: ScalarValue - unk_ds3_p1_8: ScalarValue + color1?: Vector4Value /** - * Angular acceleration for particles around the Z-axis in degrees per second squared. + * Unknown. * - * See also: - * - {@link particleAngularAccelerationMin} - * - {@link particleAngularAccelerationMax} + * **Default**: `[1, 1, 1, 1]` */ - particleAngularAccelerationZ: ScalarValue + color2?: Vector4Value /** - * The rate of change for the width of the particles. + * Unknown. * - * See also: - * - {@link particleGrowthRateXStatic} + * **Default**: `[1, 1, 1, 1]` */ - particleGrowthRateX: ScalarValue + color3?: Vector4Value /** - * The rate of change for the height of the particles. + * Unknown. * - * See also: - * - {@link particleGrowthRateYStatic} + * **Default**: `0` */ - particleGrowthRateY: ScalarValue - unk_ds3_p1_12: ScalarValue + unk_ds3_p1_5?: ScalarValue /** - * Color multiplier. + * Unknown. * - * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + * **Default**: `0` */ - color: Vector4Value - unk_ds3_p1_14: ScalarValue - unk_ds3_p1_15: ScalarValue + unk_ds3_p1_6?: ScalarValue /** - * Seemingly identical to {@link particleAccelerationZ}? + * Unknown. + * + * **Default**: `0` */ - unkParticleAcceleration: ScalarValue - unk_ds3_p1_17: ScalarValue + unk_ds3_p1_7?: ScalarValue /** - * Downwards acceleration for particles. + * Unknown. + * + * **Default**: `1` */ - particleGravity: ScalarValue + unk_ds3_p1_8?: ScalarValue /** - * Maximum random turn angle for particles. Requires {@link particleRandomTurns} to be enabled. + * Unknown. * - * See also: - * - {@link particleRandomTurns} - * - {@link particleRandomTurnIntervalMax} + * **Default**: `1` */ - particleRandomTurnAngle: ScalarValue - unk_ds3_p1_20: ScalarValue - unk_ds3_p2_0: ScalarValue - unk_ds3_p2_1: ScalarValue - unk_ds3_p2_2: ScalarValue - unk_ds3_p2_3: Vector4Value - unk_ds3_p2_4: Vector4Value - unk_ds3_p2_5: Vector4Value - unk_ds3_p2_6: ScalarValue - constructor(props: GPUStandardCorrectParticleParams = {}) { - super(ActionType.GPUStandardCorrectParticle, {isAppearance:true,isParticle:false}) - this.assign(props) - } -} - -export interface LightShaftParams { + unk_ds3_p1_9?: ScalarValue /** * Texture ID. * @@ -28909,66 +29329,6 @@ export interface LightShaftParams { * **Default**: `0` */ unk_ds3_f1_29?: number - /** - * Unknown. - * - * **Default**: `1` - */ - width?: ScalarValue - /** - * Unknown. - * - * **Default**: `1` - */ - height?: ScalarValue - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - color1?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - color2?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - color3?: Vector4Value - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_5?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_6?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ds3_p1_7?: ScalarValue - /** - * Unknown. - * - * **Default**: `1` - */ - unk_ds3_p1_8?: ScalarValue - /** - * Unknown. - * - * **Default**: `1` - */ - unk_ds3_p1_9?: ScalarValue } /** @@ -28980,6 +29340,16 @@ export interface LightShaftParams { class LightShaft extends DataAction { declare readonly type: ActionType.LightShaft declare readonly meta: ActionMeta & {isAppearance:true,isParticle:false} + width: ScalarValue + height: ScalarValue + color1: Vector4Value + color2: Vector4Value + color3: Vector4Value + unk_ds3_p1_5: ScalarValue + unk_ds3_p1_6: ScalarValue + unk_ds3_p1_7: ScalarValue + unk_ds3_p1_8: ScalarValue + unk_ds3_p1_9: ScalarValue /** * Texture ID. */ @@ -29019,16 +29389,6 @@ class LightShaft extends DataAction { unk_ds3_f1_27: number unk_ds3_f1_28: number unk_ds3_f1_29: number - width: ScalarValue - height: ScalarValue - color1: Vector4Value - color2: Vector4Value - color3: Vector4Value - unk_ds3_p1_5: ScalarValue - unk_ds3_p1_6: ScalarValue - unk_ds3_p1_7: ScalarValue - unk_ds3_p1_8: ScalarValue - unk_ds3_p1_9: ScalarValue constructor(props: LightShaftParams = {}) { super(ActionType.LightShaft, {isAppearance:true,isParticle:false}) this.assign(props) @@ -29036,6 +29396,142 @@ class LightShaft extends DataAction { } export interface GPUSparkParticleParams { + /** + * Controls how well the particles follow the node if it moves. + * + * **Default**: `0` + */ + particleFollowFactor?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ac6_p1_1?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ac6_p1_2?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ac6_p1_3?: ScalarValue + /** + * Particle acceleration along the X-axis. + * + * **Default**: `0` + */ + particleAccelerationX?: ScalarValue + /** + * Particle acceleration along the Y-axis. + * + * **Default**: `0` + */ + particleAccelerationY?: ScalarValue + /** + * Particle acceleration along the Z-axis. + * + * **Default**: `0` + */ + particleAccelerationZ?: ScalarValue + /** + * Color multiplier. + * + * **Default**: `[1, 1, 1, 1]` + * + * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + */ + color?: Vector4Value + /** + * Unknown. + * + * **Default**: `1` + */ + particleLength?: ScalarValue + /** + * Unknown. + * + * **Default**: `0.1` + */ + particleWidth?: ScalarValue + /** + * Similar to {@link particleAccelerationZ}, but this does not go exactly north? + * + * This requires any of the following fields to have a non-zero value: + * - {@link particleSpeedMin} + * - {@link particleSpeedMax} + * + * **Default**: `0` + */ + unkParticleAcceleration?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ac6_p1_11?: ScalarValue + /** + * Downwards acceleration for particles. + * + * This requires any of the following fields to have a non-zero value: + * - {@link particleSpeedMin} + * - {@link particleSpeedMax} + * + * **Default**: `1` + */ + particleGravity?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ac6_p1_13?: ScalarValue + /** + * Unknown. + * + * **Default**: `1` + */ + unk_ac6_p2_0?: ScalarValue + /** + * Unknown. + * + * **Default**: `1` + */ + unk_ac6_p2_1?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ac6_p2_2?: ScalarValue + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ac6_p2_3?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ac6_p2_4?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ac6_p2_5?: Vector4Value + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ac6_p2_6?: ScalarValue /** * The ID of the texture of the particles. * @@ -29877,159 +30373,75 @@ export interface GPUSparkParticleParams { * **Default**: `0` */ unk_ac6_f2_39?: number +} + +/** + * ### {@link ActionType.GPUSparkParticle Action 10008 - GPUSparkParticle} + * **Slot**: {@link ActionSlots.AppearanceAction Appearance} + * + * Similar to {@link ActionType.GPUStandardParticle GPUStandardParticle}, this is essentially an entire particle system in a single action. It defines everything about an emitter as well as the particles it emits. The particles emitted by this action are GPU particles, which means that a lot of them can be rendered at the same time without much impact on performance. The particles are also not affected by most things that affect regular particles, like {@link ActionSlots.ParticleMovementAction ParticleMovement actions}. + * + * What makes this different from {@link ActionType.GPUStandardParticle GPUStandardParticle} is that this actions seems to be designed specifically for effects that create sparks. While the other action's particles is more like billboard particles from, for example, {@link ActionType.BillboardEx BillboardEx}, this action's particles are more like {@link ActionType.QuadLine QuadLine} or {@link ActionType.Tracer Tracer} particles. They bend and rotate to align with the direction they are traveling, and they stretch based on how fast they're moving. + * + * The name of this action is from Elden Ring's RTTI, where it's called "SparkParticle". + * + * This action was first used in Armored Core 6, but definitely also works in Sekiro and Elden Ring. It might work in Dark Souls 3, but its structure is at least somewhat different there, and what that structure looks like is unknown. AC6's structure is compatible with Sekiro and ER, but some features may not work due to having been added in later versions. + */ +class GPUSparkParticle extends DataAction { + declare readonly type: ActionType.GPUSparkParticle + declare readonly meta: ActionMeta & {isAppearance:true,isParticle:false} /** * Controls how well the particles follow the node if it moves. - * - * **Default**: `0` */ - particleFollowFactor?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ac6_p1_1?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ac6_p1_2?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ac6_p1_3?: ScalarValue + particleFollowFactor: ScalarValue + unk_ac6_p1_1: ScalarValue + unk_ac6_p1_2: ScalarValue + unk_ac6_p1_3: ScalarValue /** * Particle acceleration along the X-axis. - * - * **Default**: `0` */ - particleAccelerationX?: ScalarValue + particleAccelerationX: ScalarValue /** * Particle acceleration along the Y-axis. - * - * **Default**: `0` */ - particleAccelerationY?: ScalarValue + particleAccelerationY: ScalarValue /** * Particle acceleration along the Z-axis. - * - * **Default**: `0` */ - particleAccelerationZ?: ScalarValue + particleAccelerationZ: ScalarValue /** * Color multiplier. * - * **Default**: `[1, 1, 1, 1]` - * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ - color?: Vector4Value - /** - * Unknown. - * - * **Default**: `1` - */ - particleLength?: ScalarValue - /** - * Unknown. - * - * **Default**: `0.1` - */ - particleWidth?: ScalarValue + color: Vector4Value + particleLength: ScalarValue + particleWidth: ScalarValue /** * Similar to {@link particleAccelerationZ}, but this does not go exactly north? * * This requires any of the following fields to have a non-zero value: * - {@link particleSpeedMin} * - {@link particleSpeedMax} - * - * **Default**: `0` - */ - unkParticleAcceleration?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` */ - unk_ac6_p1_11?: ScalarValue + unkParticleAcceleration: ScalarValue + unk_ac6_p1_11: ScalarValue /** * Downwards acceleration for particles. * * This requires any of the following fields to have a non-zero value: * - {@link particleSpeedMin} * - {@link particleSpeedMax} - * - * **Default**: `1` - */ - particleGravity?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ac6_p1_13?: ScalarValue - /** - * Unknown. - * - * **Default**: `1` - */ - unk_ac6_p2_0?: ScalarValue - /** - * Unknown. - * - * **Default**: `1` */ - unk_ac6_p2_1?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ac6_p2_2?: ScalarValue - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ac6_p2_3?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ac6_p2_4?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ac6_p2_5?: Vector4Value - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ac6_p2_6?: ScalarValue -} - -/** - * ### {@link ActionType.GPUSparkParticle Action 10008 - GPUSparkParticle} - * **Slot**: {@link ActionSlots.AppearanceAction Appearance} - * - * Similar to {@link ActionType.GPUStandardParticle GPUStandardParticle}, this is essentially an entire particle system in a single action. It defines everything about an emitter as well as the particles it emits. The particles emitted by this action are GPU particles, which means that a lot of them can be rendered at the same time without much impact on performance. The particles are also not affected by most things that affect regular particles, like {@link ActionSlots.ParticleMovementAction ParticleMovement actions}. - * - * What makes this different from {@link ActionType.GPUStandardParticle GPUStandardParticle} is that this actions seems to be designed specifically for effects that create sparks. While the other action's particles is more like billboard particles from, for example, {@link ActionType.BillboardEx BillboardEx}, this action's particles are more like {@link ActionType.QuadLine QuadLine} or {@link ActionType.Tracer Tracer} particles. They bend and rotate to align with the direction they are traveling, and they stretch based on how fast they're moving. - * - * The name of this action is from Elden Ring's RTTI, where it's called "SparkParticle". - * - * This action was first used in Armored Core 6, but definitely also works in Sekiro and Elden Ring. It might work in Dark Souls 3, but its structure is at least somewhat different there, and what that structure looks like is unknown. AC6's structure is compatible with Sekiro and ER, but some features may not work due to having been added in later versions. - */ -class GPUSparkParticle extends DataAction { - declare readonly type: ActionType.GPUSparkParticle - declare readonly meta: ActionMeta & {isAppearance:true,isParticle:false} + particleGravity: ScalarValue + unk_ac6_p1_13: ScalarValue + unk_ac6_p2_0: ScalarValue + unk_ac6_p2_1: ScalarValue + unk_ac6_p2_2: ScalarValue + unk_ac6_p2_3: Vector4Value + unk_ac6_p2_4: Vector4Value + unk_ac6_p2_5: Vector4Value + unk_ac6_p2_6: ScalarValue /** * The ID of the texture of the particles. */ @@ -30401,65 +30813,149 @@ class GPUSparkParticle extends DataAction { unk_ac6_f2_37: number unk_ac6_f2_38: number unk_ac6_f2_39: number + constructor(props: GPUSparkParticleParams = {}) { + super(ActionType.GPUSparkParticle, {isAppearance:true,isParticle:false}) + this.assign(props) + } +} + +export interface GPUSparkCorrectParticleParams { /** * Controls how well the particles follow the node if it moves. + * + * **Default**: `0` */ - particleFollowFactor: ScalarValue - unk_ac6_p1_1: ScalarValue - unk_ac6_p1_2: ScalarValue - unk_ac6_p1_3: ScalarValue + particleFollowFactor?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ac6_p1_1?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ac6_p1_2?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ac6_p1_3?: ScalarValue /** * Particle acceleration along the X-axis. + * + * **Default**: `0` */ - particleAccelerationX: ScalarValue + particleAccelerationX?: ScalarValue /** * Particle acceleration along the Y-axis. + * + * **Default**: `0` */ - particleAccelerationY: ScalarValue + particleAccelerationY?: ScalarValue /** * Particle acceleration along the Z-axis. + * + * **Default**: `0` */ - particleAccelerationZ: ScalarValue + particleAccelerationZ?: ScalarValue /** * Color multiplier. * + * **Default**: `[1, 1, 1, 1]` + * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ - color: Vector4Value - particleLength: ScalarValue - particleWidth: ScalarValue + color?: Vector4Value + /** + * Unknown. + * + * **Default**: `1` + */ + particleLength?: ScalarValue + /** + * Unknown. + * + * **Default**: `0.1` + */ + particleWidth?: ScalarValue /** * Similar to {@link particleAccelerationZ}, but this does not go exactly north? * * This requires any of the following fields to have a non-zero value: * - {@link particleSpeedMin} * - {@link particleSpeedMax} + * + * **Default**: `0` */ - unkParticleAcceleration: ScalarValue - unk_ac6_p1_11: ScalarValue + unkParticleAcceleration?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ac6_p1_11?: ScalarValue /** * Downwards acceleration for particles. * * This requires any of the following fields to have a non-zero value: * - {@link particleSpeedMin} * - {@link particleSpeedMax} + * + * **Default**: `1` */ - particleGravity: ScalarValue - unk_ac6_p1_13: ScalarValue - unk_ac6_p2_0: ScalarValue - unk_ac6_p2_1: ScalarValue - unk_ac6_p2_2: ScalarValue - unk_ac6_p2_3: Vector4Value - unk_ac6_p2_4: Vector4Value - unk_ac6_p2_5: Vector4Value - unk_ac6_p2_6: ScalarValue - constructor(props: GPUSparkParticleParams = {}) { - super(ActionType.GPUSparkParticle, {isAppearance:true,isParticle:false}) - this.assign(props) - } -} - -export interface GPUSparkCorrectParticleParams { + particleGravity?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ac6_p1_13?: ScalarValue + /** + * Unknown. + * + * **Default**: `1` + */ + unk_ac6_p2_0?: ScalarValue + /** + * Unknown. + * + * **Default**: `1` + */ + unk_ac6_p2_1?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ac6_p2_2?: ScalarValue + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ac6_p2_3?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ac6_p2_4?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ac6_p2_5?: Vector4Value + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ac6_p2_6?: ScalarValue /** * The ID of the texture of the particles. * @@ -31301,160 +31797,76 @@ export interface GPUSparkCorrectParticleParams { * **Default**: `0` */ unk_ac6_f2_39?: number +} + +/** + * ### {@link ActionType.GPUSparkCorrectParticle Action 10009 - GPUSparkCorrectParticle} + * **Slot**: {@link ActionSlots.AppearanceAction Appearance} + * + * Very similar to {@link ActionType.GPUSparkParticle GPUSparkParticle}, just like how {@link ActionType.GPUStandardCorrectParticle GPUStandardCorrectParticle} is similar to {@link ActionType.GPUStandardParticle GPUStandardParticle}, except these two spark actions have some known differences. + * + * Not all of the differences have been documented yet, but here are some: + * - This action seems to have swapped some axes of rotation, causing some confusing things to happen when the node is spinning. + * - The particles from this action are smaller. + * - The particles from this action move slower. It's possible that this action uses a different unit of distance, since that would explain both the slower movement and the smaller particles. + * + * The name of this action is from Elden Ring's RTTI, where it's called "SparkCorrectParticle". + */ +class GPUSparkCorrectParticle extends DataAction { + declare readonly type: ActionType.GPUSparkCorrectParticle + declare readonly meta: ActionMeta & {isAppearance:true,isParticle:false} /** * Controls how well the particles follow the node if it moves. - * - * **Default**: `0` - */ - particleFollowFactor?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ac6_p1_1?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` */ - unk_ac6_p1_2?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ac6_p1_3?: ScalarValue + particleFollowFactor: ScalarValue + unk_ac6_p1_1: ScalarValue + unk_ac6_p1_2: ScalarValue + unk_ac6_p1_3: ScalarValue /** * Particle acceleration along the X-axis. - * - * **Default**: `0` */ - particleAccelerationX?: ScalarValue + particleAccelerationX: ScalarValue /** * Particle acceleration along the Y-axis. - * - * **Default**: `0` */ - particleAccelerationY?: ScalarValue + particleAccelerationY: ScalarValue /** * Particle acceleration along the Z-axis. - * - * **Default**: `0` */ - particleAccelerationZ?: ScalarValue + particleAccelerationZ: ScalarValue /** * Color multiplier. * - * **Default**: `[1, 1, 1, 1]` - * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ - color?: Vector4Value - /** - * Unknown. - * - * **Default**: `1` - */ - particleLength?: ScalarValue - /** - * Unknown. - * - * **Default**: `0.1` - */ - particleWidth?: ScalarValue + color: Vector4Value + particleLength: ScalarValue + particleWidth: ScalarValue /** * Similar to {@link particleAccelerationZ}, but this does not go exactly north? * * This requires any of the following fields to have a non-zero value: * - {@link particleSpeedMin} * - {@link particleSpeedMax} - * - * **Default**: `0` - */ - unkParticleAcceleration?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` */ - unk_ac6_p1_11?: ScalarValue + unkParticleAcceleration: ScalarValue + unk_ac6_p1_11: ScalarValue /** * Downwards acceleration for particles. * * This requires any of the following fields to have a non-zero value: * - {@link particleSpeedMin} * - {@link particleSpeedMax} - * - * **Default**: `1` */ - particleGravity?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ac6_p1_13?: ScalarValue - /** - * Unknown. - * - * **Default**: `1` - */ - unk_ac6_p2_0?: ScalarValue - /** - * Unknown. - * - * **Default**: `1` - */ - unk_ac6_p2_1?: ScalarValue - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ac6_p2_2?: ScalarValue - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ac6_p2_3?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ac6_p2_4?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ac6_p2_5?: Vector4Value - /** - * Unknown. - * - * **Default**: `0` - */ - unk_ac6_p2_6?: ScalarValue -} - -/** - * ### {@link ActionType.GPUSparkCorrectParticle Action 10009 - GPUSparkCorrectParticle} - * **Slot**: {@link ActionSlots.AppearanceAction Appearance} - * - * Very similar to {@link ActionType.GPUSparkParticle GPUSparkParticle}, just like how {@link ActionType.GPUStandardCorrectParticle GPUStandardCorrectParticle} is similar to {@link ActionType.GPUStandardParticle GPUStandardParticle}, except these two spark actions have some known differences. - * - * Not all of the differences have been documented yet, but here are some: - * - This action seems to have swapped some axes of rotation, causing some confusing things to happen when the node is spinning. - * - The particles from this action are smaller. - * - The particles from this action move slower. It's possible that this action uses a different unit of distance, since that would explain both the slower movement and the smaller particles. - * - * The name of this action is from Elden Ring's RTTI, where it's called "SparkCorrectParticle". - */ -class GPUSparkCorrectParticle extends DataAction { - declare readonly type: ActionType.GPUSparkCorrectParticle - declare readonly meta: ActionMeta & {isAppearance:true,isParticle:false} + particleGravity: ScalarValue + unk_ac6_p1_13: ScalarValue + unk_ac6_p2_0: ScalarValue + unk_ac6_p2_1: ScalarValue + unk_ac6_p2_2: ScalarValue + unk_ac6_p2_3: Vector4Value + unk_ac6_p2_4: Vector4Value + unk_ac6_p2_5: Vector4Value + unk_ac6_p2_6: ScalarValue /** * The ID of the texture of the particles. */ @@ -31758,247 +32170,81 @@ class GPUSparkCorrectParticle extends DataAction { * - {@link minDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} - * - {@link maxDistanceThreshold} - */ - maxFadeDistance: number - /** - * Minimum view distance. If a particle is farther away than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link maxFadeDistance} to be set to something other than -1. - * - * This is different from {@link maxDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. - * - * See also: - * - {@link minFadeDistance} - * - {@link minDistance} - * - {@link maxFadeDistance} - * - {@link minDistanceThreshold} - * - {@link maxDistanceThreshold} - */ - maxDistance: number - /** - * A hard cut-off point for the distance between the camera and the particle. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * See also: - * - {@link minFadeDistance} - * - {@link minDistance} - * - {@link maxFadeDistance} - * - {@link maxDistance} - * - {@link maxDistanceThreshold} - */ - minDistanceThreshold: number - /** - * A hard cut-off point for the distance between the camera and the particle. If a particle is farther away than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * See also: - * - {@link minFadeDistance} - * - {@link minDistance} - * - {@link maxFadeDistance} - * - {@link maxDistance} - * - {@link minDistanceThreshold} - */ - maxDistanceThreshold: number - unk_ac6_f2_20: number - unk_ac6_f2_21: number - unk_ac6_f2_22: number - unk_ac6_f2_23: number - unk_ac6_f2_24: number - unkDepthBlend1: number - unkDepthBlend2: number - unk_ac6_f2_27: number - unk_ac6_f2_28: number - unk_ac6_f2_29: number - /** - * Controls how dark shaded parts of the particle are. - */ - shadowDarkness: number - /** - * When set to 1, this stops the particles from being shown indoors. - * - * Other values are used in AC6, but what they do is unknown. - */ - unkHideIndoors: number - unk_ac6_f2_32: number - unk_ac6_f2_33: number - unk_ac6_f2_34: number - lighting: LightingMode - unk_ac6_f2_36: number - unk_ac6_f2_37: number - unk_ac6_f2_38: number - unk_ac6_f2_39: number - /** - * Controls how well the particles follow the node if it moves. - */ - particleFollowFactor: ScalarValue - unk_ac6_p1_1: ScalarValue - unk_ac6_p1_2: ScalarValue - unk_ac6_p1_3: ScalarValue - /** - * Particle acceleration along the X-axis. - */ - particleAccelerationX: ScalarValue - /** - * Particle acceleration along the Y-axis. - */ - particleAccelerationY: ScalarValue - /** - * Particle acceleration along the Z-axis. - */ - particleAccelerationZ: ScalarValue - /** - * Color multiplier. - * - * **Argument**: {@link PropertyArgument.ParticleAge Particle age} - */ - color: Vector4Value - particleLength: ScalarValue - particleWidth: ScalarValue - /** - * Similar to {@link particleAccelerationZ}, but this does not go exactly north? - * - * This requires any of the following fields to have a non-zero value: - * - {@link particleSpeedMin} - * - {@link particleSpeedMax} - */ - unkParticleAcceleration: ScalarValue - unk_ac6_p1_11: ScalarValue - /** - * Downwards acceleration for particles. - * - * This requires any of the following fields to have a non-zero value: - * - {@link particleSpeedMin} - * - {@link particleSpeedMax} - */ - particleGravity: ScalarValue - unk_ac6_p1_13: ScalarValue - unk_ac6_p2_0: ScalarValue - unk_ac6_p2_1: ScalarValue - unk_ac6_p2_2: ScalarValue - unk_ac6_p2_3: Vector4Value - unk_ac6_p2_4: Vector4Value - unk_ac6_p2_5: Vector4Value - unk_ac6_p2_6: ScalarValue - constructor(props: GPUSparkCorrectParticleParams = {}) { - super(ActionType.GPUSparkCorrectParticle, {isAppearance:true,isParticle:false}) - this.assign(props) - } -} - -export interface DynamicTracerParams { - /** - * Tracer orientation mode. See {@link TracerOrientationMode} for more information. - * - * **Default**: {@link TracerOrientationMode.LocalZ} - */ - orientation?: TracerOrientationMode - /** - * Normal map texture ID. - * - * This is used to control the distortion effect of the trail. - * - * **Default**: `0` - * - * See also: - * - {@link distortionIntensity} - */ - normalMap?: number - /** - * The trail is made up of multiple quads, or *segments*. This controls how many seconds to wait between new segments being created. Lower values produce a smoother trail. - * - * **Default**: `0` - */ - segmentInterval?: number - /** - * The trail is made up of multiple quads, or *segments*. This controls how long each segment should last in seconds. - * - * **Default**: `1` - */ - segmentDuration?: number - /** - * The trail is made up of multiple quads, or *segments*. This controls how many segments may exist at the same time. - * - * **Default**: `100` - */ - concurrentSegments?: number - /** - * To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. - * - * **Default**: `1` - * - * See also: - * - {@link totalFrames} - */ - columns?: number - /** - * To split the texture into multiple animation frames, this value must be set to the total number of frames in the texture. - * - * **Default**: `1` - * - * See also: - * - {@link columns} - */ - totalFrames?: number - /** - * Controls whether or not the UV of the trail should be attached to the node or not. If it is attached, the texture will slide along the segments to follow the source wherever it moves, as if it was a flag attached to a pole. If it is not attached, the texture will stay where it was when the segment was created, like a skid mark on a road where the road is the segments and the mark is the texture, it wouldn't follow the car/node that made it. - * - * **Default**: `true` - */ - attachedUV?: boolean - /** - * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. - * - * Note: - * - This has no effect if the "Effects Quality" setting is set to "Low". - * - This does not affect the natural bloom effect from high color values. - * - * **Default**: `[1, 1, 1, 0]` - */ - bloomColor?: Vector4 - /** - * Controls how dark shaded parts of the trail are. - * - * **Default**: `0` + * - {@link maxDistanceThreshold} */ - shadowDarkness?: number + maxFadeDistance: number /** - * Specular texture ID. + * Minimum view distance. If a particle is farther away than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * **Default**: `0` + * This requires {@link maxFadeDistance} to be set to something other than -1. + * + * This is different from {@link maxDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * See also: - * - {@link lighting} - * - {@link glossiness} - * - {@link specularity} + * - {@link minFadeDistance} + * - {@link minDistance} + * - {@link maxFadeDistance} + * - {@link minDistanceThreshold} + * - {@link maxDistanceThreshold} */ - specular?: number + maxDistance: number /** - * Controls how sharp the specular highlights are. - * - * **Default**: `0.25` + * A hard cut-off point for the distance between the camera and the particle. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * * See also: - * - {@link lighting} - * - {@link specular} - * - {@link specularity} + * - {@link minFadeDistance} + * - {@link minDistance} + * - {@link maxFadeDistance} + * - {@link maxDistance} + * - {@link maxDistanceThreshold} */ - glossiness?: number + minDistanceThreshold: number /** - * Controls how the trail is lit. See {@link LightingMode} for more information. + * A hard cut-off point for the distance between the camera and the particle. If a particle is farther away than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * **Default**: {@link LightingMode.Unlit} + * See also: + * - {@link minFadeDistance} + * - {@link minDistance} + * - {@link maxFadeDistance} + * - {@link maxDistance} + * - {@link minDistanceThreshold} */ - lighting?: LightingMode + maxDistanceThreshold: number + unk_ac6_f2_20: number + unk_ac6_f2_21: number + unk_ac6_f2_22: number + unk_ac6_f2_23: number + unk_ac6_f2_24: number + unkDepthBlend1: number + unkDepthBlend2: number + unk_ac6_f2_27: number + unk_ac6_f2_28: number + unk_ac6_f2_29: number /** - * Controls how bright the specular highlights are. - * - * **Default**: `0.5` + * Controls how dark shaded parts of the particle are. + */ + shadowDarkness: number + /** + * When set to 1, this stops the particles from being shown indoors. * - * See also: - * - {@link lighting} - * - {@link specular} - * - {@link glossiness} + * Other values are used in AC6, but what they do is unknown. */ - specularity?: number + unkHideIndoors: number + unk_ac6_f2_32: number + unk_ac6_f2_33: number + unk_ac6_f2_34: number + lighting: LightingMode + unk_ac6_f2_36: number + unk_ac6_f2_37: number + unk_ac6_f2_38: number + unk_ac6_f2_39: number + constructor(props: GPUSparkCorrectParticleParams = {}) { + super(ActionType.GPUSparkCorrectParticle, {isAppearance:true,isParticle:false}) + this.assign(props) + } +} + +export interface DynamicTracerParams { /** * Texture ID. * @@ -32031,6 +32277,18 @@ export interface DynamicTracerParams { * **Argument**: {@link PropertyArgument.EmissionTime Emission time} */ widthMultiplier?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_2?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_ds3_p1_3?: ScalarValue /** * Color multiplier. * @@ -32107,6 +32365,12 @@ export interface DynamicTracerParams { * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ varianceV?: ScalarValue + /** + * Unknown. + * + * **Default**: `-1` + */ + unk_ds3_p1_13?: ScalarValue /** * Scalar multiplier for the color that does not affect the alpha. Effectively a brightness multiplier. * @@ -32123,6 +32387,80 @@ export interface DynamicTracerParams { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ alphaMultiplier?: ScalarValue + /** + * Controls the intensity of the distortion effect. At 0, there is no distortion at all. + * + * **Default**: `0` + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + * + * See also: + * - {@link normalMap} + */ + distortionIntensity?: ScalarValue + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_3?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_4?: Vector4Value + /** + * Unknown. + * + * **Default**: `[1, 1, 1, 1]` + */ + unk_ds3_p2_5?: Vector4Value + /** + * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. + * + * This threshold creates a hard cut-off between visible and not visible, which is unlike the {@link alphaFadeThreshold}. + * + * **Default**: `0` + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + */ + alphaThreshold?: ScalarValue + /** + * Tracer orientation mode. See {@link TracerOrientationMode} for more information. + * + * **Default**: {@link TracerOrientationMode.LocalZ} + */ + orientation?: TracerOrientationMode + /** + * Normal map texture ID. + * + * This is used to control the distortion effect of the trail. + * + * **Default**: `0` + * + * See also: + * - {@link distortionIntensity} + */ + normalMap?: number + /** + * The trail is made up of multiple quads, or *segments*. This controls how many seconds to wait between new segments being created. Lower values produce a smoother trail. + * + * **Default**: `0` + */ + segmentInterval?: number + /** + * The trail is made up of multiple quads, or *segments*. This controls how long each segment should last in seconds. + * + * **Default**: `1` + */ + segmentDuration?: number + /** + * The trail is made up of multiple quads, or *segments*. This controls how many segments may exist at the same time. + * + * **Default**: `100` + */ + concurrentSegments?: number /** * Unknown integer. * @@ -32141,6 +32479,30 @@ export interface DynamicTracerParams { * **Default**: `0` */ unk_ds3_f1_9?: number + /** + * To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. + * + * **Default**: `1` + * + * See also: + * - {@link totalFrames} + */ + columns?: number + /** + * To split the texture into multiple animation frames, this value must be set to the total number of frames in the texture. + * + * **Default**: `1` + * + * See also: + * - {@link columns} + */ + totalFrames?: number + /** + * Controls whether or not the UV of the trail should be attached to the node or not. If it is attached, the texture will slide along the segments to follow the source wherever it moves, as if it was a flag attached to a pole. If it is not attached, the texture will stay where it was when the segment was created, like a skid mark on a road where the road is the segments and the mark is the texture, it wouldn't follow the car/node that made it. + * + * **Default**: `true` + */ + attachedUV?: boolean /** * Unknown integer. * @@ -32159,6 +32521,54 @@ export interface DynamicTracerParams { * **Default**: `0` */ unk_ds3_f1_15?: number + /** + * Unknown integer. + * + * **Default**: `1` + */ + unk_sdt_f1_14?: number + /** + * Unknown float. + * + * **Default**: `1` + */ + unk_sdt_f1_15?: number + /** + * Unknown float. + * + * **Default**: `1` + */ + unk_sdt_f1_16?: number + /** + * Unknown float. + * + * **Default**: `1` + */ + unk_sdt_f1_17?: number + /** + * Unknown integer. + * + * **Default**: `1` + */ + unk_er_f1_18?: number + /** + * Unknown integer. + * + * **Default**: `1` + */ + unk_er_f1_19?: number + /** + * Unknown integer. + * + * **Default**: `0` + */ + unk_er_f1_20?: number + /** + * Unknown float. + * + * **Default**: `0` + */ + unk_er_f1_21?: number /** * Unknown integer. * @@ -32184,11 +32594,31 @@ export interface DynamicTracerParams { */ unk_ds3_f2_3?: number /** - * Unknown integer. + * Controls whether or not the particles have an additional bloom effect controlled by {@link bloomColor}. * - * **Default**: `1` + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * **Default**: `true` + * + * See also: + * - {@link bloomColor} */ - unk_ds3_f2_4?: number + bloom?: boolean + /** + * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * **Default**: `[1, 1, 1, 0]` + * + * See also: + * - {@link bloom} + */ + bloomColor?: Vector4 /** * Unknown integer. * @@ -32220,37 +32650,37 @@ export interface DynamicTracerParams { */ unk_ds3_f2_13?: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * **Default**: `-1` * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance?: number + minFadeDistance?: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * **Default**: `-1` * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance?: number + minDistance?: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -32370,74 +32800,51 @@ export interface DynamicTracerParams { */ unk_ds3_f2_29?: number /** - * Unknown. + * Controls how dark shaded parts of the trail are. * * **Default**: `0` */ - unk_ds3_p1_2?: ScalarValue + shadowDarkness?: number /** - * Unknown. + * Unknown integer. * * **Default**: `0` */ - unk_ds3_p1_3?: ScalarValue + unk_sdt_f2_31?: number /** - * Unknown. + * Unknown integer. * - * **Default**: `-1` + * **Default**: `1` */ - unk_ds3_p1_13?: ScalarValue + unk_sdt_f2_32?: number /** - * Controls the intensity of the distortion effect. At 0, there is no distortion at all. + * Specular texture ID. * * **Default**: `0` * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} - * * See also: - * - {@link normalMap} - */ - distortionIntensity?: ScalarValue - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_3?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` - */ - unk_ds3_p2_4?: Vector4Value - /** - * Unknown. - * - * **Default**: `[1, 1, 1, 1]` + * - {@link lighting} + * - {@link glossiness} + * - {@link specularity} */ - unk_ds3_p2_5?: Vector4Value + specular?: number /** - * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - * - * This threshold creates a hard cut-off between visible and not visible, which is unlike the {@link alphaFadeThreshold}. - * - * **Default**: `0` + * Controls how sharp the specular highlights are. * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} - */ - alphaThreshold?: ScalarValue - /** - * Unknown integer. + * **Default**: `0.25` * - * **Default**: `0` + * See also: + * - {@link lighting} + * - {@link specular} + * - {@link specularity} */ - unk_sdt_f2_31?: number + glossiness?: number /** - * Unknown integer. + * Controls how the trail is lit. See {@link LightingMode} for more information. * - * **Default**: `1` + * **Default**: {@link LightingMode.Unlit} */ - unk_sdt_f2_32?: number + lighting?: LightingMode /** * Unknown integer. * @@ -32451,29 +32858,16 @@ export interface DynamicTracerParams { */ unk_sdt_f2_37?: number /** - * Unknown integer. - * - * **Default**: `1` - */ - unk_er_f1_18?: number - /** - * Unknown integer. - * - * **Default**: `1` - */ - unk_er_f1_19?: number - /** - * Unknown integer. + * Controls how bright the specular highlights are. * - * **Default**: `0` - */ - unk_er_f1_20?: number - /** - * Unknown float. + * **Default**: `0.5` * - * **Default**: `0` + * See also: + * - {@link lighting} + * - {@link specular} + * - {@link glossiness} */ - unk_er_f1_21?: number + specularity?: number /** * Unknown integer. * @@ -32486,135 +32880,25 @@ export interface DynamicTracerParams { * **Default**: `1` */ unk_er_f2_40?: number - /** - * Unknown integer. - * - * **Default**: `1` - */ - unk_sdt_f1_14?: number - /** - * Unknown float. - * - * **Default**: `1` - */ - unk_sdt_f1_15?: number - /** - * Unknown float. - * - * **Default**: `1` - */ - unk_sdt_f1_16?: number - /** - * Unknown float. - * - * **Default**: `1` - */ - unk_sdt_f1_17?: number /** * Unknown float. - * - * **Default**: `0` - */ - unk_ac6_f2_41?: number -} - -/** - * ### {@link ActionType.DynamicTracer Action 10012 - DynamicTracer} - * **Slot**: {@link ActionSlots.AppearanceAction Appearance} - * - * Creates a trail behind moving effects. - * - * This is slightly different from {@link Tracer}, as the trail from this is less visible when it's moving slower. - */ -class DynamicTracer extends DataAction { - declare readonly type: ActionType.DynamicTracer - declare readonly meta: ActionMeta & {isAppearance:true,isParticle:true} - /** - * Tracer orientation mode. See {@link TracerOrientationMode} for more information. - */ - orientation: TracerOrientationMode - /** - * Normal map texture ID. - * - * This is used to control the distortion effect of the trail. - * - * See also: - * - {@link distortionIntensity} - */ - normalMap: number - /** - * The trail is made up of multiple quads, or *segments*. This controls how many seconds to wait between new segments being created. Lower values produce a smoother trail. - */ - segmentInterval: number - /** - * The trail is made up of multiple quads, or *segments*. This controls how long each segment should last in seconds. - */ - segmentDuration: number - /** - * The trail is made up of multiple quads, or *segments*. This controls how many segments may exist at the same time. - */ - concurrentSegments: number - /** - * To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. - * - * See also: - * - {@link totalFrames} - */ - columns: number - /** - * To split the texture into multiple animation frames, this value must be set to the total number of frames in the texture. - * - * See also: - * - {@link columns} - */ - totalFrames: number - /** - * Controls whether or not the UV of the trail should be attached to the node or not. If it is attached, the texture will slide along the segments to follow the source wherever it moves, as if it was a flag attached to a pole. If it is not attached, the texture will stay where it was when the segment was created, like a skid mark on a road where the road is the segments and the mark is the texture, it wouldn't follow the car/node that made it. - */ - attachedUV: boolean - /** - * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. - * - * Note: - * - This has no effect if the "Effects Quality" setting is set to "Low". - * - This does not affect the natural bloom effect from high color values. - */ - bloomColor: Vector4 - /** - * Controls how dark shaded parts of the trail are. - */ - shadowDarkness: number - /** - * Specular texture ID. - * - * See also: - * - {@link lighting} - * - {@link glossiness} - * - {@link specularity} - */ - specular: number - /** - * Controls how sharp the specular highlights are. - * - * See also: - * - {@link lighting} - * - {@link specular} - * - {@link specularity} - */ - glossiness: number - /** - * Controls how the trail is lit. See {@link LightingMode} for more information. - */ - lighting: LightingMode - /** - * Controls how bright the specular highlights are. - * - * See also: - * - {@link lighting} - * - {@link specular} - * - {@link glossiness} + * + * **Default**: `0` */ - specularity: number + unk_ac6_f2_41?: number +} + +/** + * ### {@link ActionType.DynamicTracer Action 10012 - DynamicTracer} + * **Slot**: {@link ActionSlots.AppearanceAction Appearance} + * + * Creates a trail behind moving effects. + * + * This is slightly different from {@link Tracer}, as the trail from this is less visible when it's moving slower. + */ +class DynamicTracer extends DataAction { + declare readonly type: ActionType.DynamicTracer + declare readonly meta: ActionMeta & {isAppearance:true,isParticle:true} /** * Texture ID. * @@ -32639,6 +32923,8 @@ class DynamicTracer extends DataAction { * **Argument**: {@link PropertyArgument.EmissionTime Emission time} */ widthMultiplier: ScalarValue + unk_ds3_p1_2: ScalarValue + unk_ds3_p1_3: ScalarValue /** * Color multiplier. * @@ -32697,6 +32983,7 @@ class DynamicTracer extends DataAction { * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ varianceV: ScalarValue + unk_ds3_p1_13: ScalarValue /** * Scalar multiplier for the color that does not affect the alpha. Effectively a brightness multiplier. * @@ -32709,50 +32996,142 @@ class DynamicTracer extends DataAction { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ alphaMultiplier: ScalarValue + /** + * Controls the intensity of the distortion effect. At 0, there is no distortion at all. + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + * + * See also: + * - {@link normalMap} + */ + distortionIntensity: ScalarValue + unk_ds3_p2_3: Vector4Value + unk_ds3_p2_4: Vector4Value + unk_ds3_p2_5: Vector4Value + /** + * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. + * + * This threshold creates a hard cut-off between visible and not visible, which is unlike the {@link alphaFadeThreshold}. + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + */ + alphaThreshold: ScalarValue + /** + * Tracer orientation mode. See {@link TracerOrientationMode} for more information. + */ + orientation: TracerOrientationMode + /** + * Normal map texture ID. + * + * This is used to control the distortion effect of the trail. + * + * See also: + * - {@link distortionIntensity} + */ + normalMap: number + /** + * The trail is made up of multiple quads, or *segments*. This controls how many seconds to wait between new segments being created. Lower values produce a smoother trail. + */ + segmentInterval: number + /** + * The trail is made up of multiple quads, or *segments*. This controls how long each segment should last in seconds. + */ + segmentDuration: number + /** + * The trail is made up of multiple quads, or *segments*. This controls how many segments may exist at the same time. + */ + concurrentSegments: number unk_ds3_f1_7: number unk_ds3_f1_8: number unk_ds3_f1_9: number + /** + * To split the texture into multiple animation frames, this value must be set to the number of columns in the texture. It should equal `textureWidth / frameWidth`. + * + * See also: + * - {@link totalFrames} + */ + columns: number + /** + * To split the texture into multiple animation frames, this value must be set to the total number of frames in the texture. + * + * See also: + * - {@link columns} + */ + totalFrames: number + /** + * Controls whether or not the UV of the trail should be attached to the node or not. If it is attached, the texture will slide along the segments to follow the source wherever it moves, as if it was a flag attached to a pole. If it is not attached, the texture will stay where it was when the segment was created, like a skid mark on a road where the road is the segments and the mark is the texture, it wouldn't follow the car/node that made it. + */ + attachedUV: boolean unk_ds3_f1_13: number unk_ds3_f1_14: number unk_ds3_f1_15: number + unk_sdt_f1_14: number + unk_sdt_f1_15: number + unk_sdt_f1_16: number + unk_sdt_f1_17: number + unk_er_f1_18: number + unk_er_f1_19: number + unk_er_f1_20: number + unk_er_f1_21: number unk_ds3_f2_0: number unk_ds3_f2_1: boolean unk_ds3_f2_2: number unk_ds3_f2_3: number - unk_ds3_f2_4: number + /** + * Controls whether or not the particles have an additional bloom effect controlled by {@link bloomColor}. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * See also: + * - {@link bloomColor} + */ + bloom: boolean + /** + * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * See also: + * - {@link bloom} + */ + bloomColor: Vector4 unk_ds3_f2_9: number unk_ds3_f2_10: number unk_ds3_f2_11: number unk_ds3_f2_12: number unk_ds3_f2_13: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance: number + minFadeDistance: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance: number + minDistance: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -32813,43 +33192,47 @@ class DynamicTracer extends DataAction { unk_ds3_f2_27: number unk_ds3_f2_28: number unk_ds3_f2_29: number - unk_ds3_p1_2: ScalarValue - unk_ds3_p1_3: ScalarValue - unk_ds3_p1_13: ScalarValue /** - * Controls the intensity of the distortion effect. At 0, there is no distortion at all. - * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} + * Controls how dark shaded parts of the trail are. + */ + shadowDarkness: number + unk_sdt_f2_31: number + unk_sdt_f2_32: number + /** + * Specular texture ID. * * See also: - * - {@link normalMap} + * - {@link lighting} + * - {@link glossiness} + * - {@link specularity} */ - distortionIntensity: ScalarValue - unk_ds3_p2_3: Vector4Value - unk_ds3_p2_4: Vector4Value - unk_ds3_p2_5: Vector4Value + specular: number /** - * Parts of the particle with less opacity than this threshold will be invisible. The range is 0-255. - * - * This threshold creates a hard cut-off between visible and not visible, which is unlike the {@link alphaFadeThreshold}. + * Controls how sharp the specular highlights are. * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} + * See also: + * - {@link lighting} + * - {@link specular} + * - {@link specularity} */ - alphaThreshold: ScalarValue - unk_sdt_f2_31: number - unk_sdt_f2_32: number + glossiness: number + /** + * Controls how the trail is lit. See {@link LightingMode} for more information. + */ + lighting: LightingMode unk_sdt_f2_36: number unk_sdt_f2_37: number - unk_er_f1_18: number - unk_er_f1_19: number - unk_er_f1_20: number - unk_er_f1_21: number + /** + * Controls how bright the specular highlights are. + * + * See also: + * - {@link lighting} + * - {@link specular} + * - {@link glossiness} + */ + specularity: number unk_er_f2_39: number unk_er_f2_40: number - unk_sdt_f1_14: number - unk_sdt_f1_15: number - unk_sdt_f1_16: number - unk_sdt_f1_17: number unk_ac6_f2_41: number constructor(props: DynamicTracerParams = {}) { super(ActionType.DynamicTracer, {isAppearance:true,isParticle:true}) @@ -32926,12 +33309,6 @@ class WaterInteraction extends DataAction { } export interface LensFlareParams { - /** - * Layer 1 texture ID. - * - * **Default**: `1` - */ - layer1?: number /** * Layer 1 width. * @@ -32950,6 +33327,118 @@ export interface LensFlareParams { * **Default**: `[1, 1, 1, 1]` */ layer1Color?: Vector4Value + /** + * Layer 2 width. + * + * **Default**: `1` + */ + layer2Width?: ScalarValue + /** + * Layer 2 height. + * + * **Default**: `1` + */ + layer2Height?: ScalarValue + /** + * Layer 2 color. + * + * **Default**: `[1, 1, 1, 1]` + */ + layer2Color?: Vector4Value + /** + * Layer 3 width. + * + * **Default**: `1` + */ + layer3Width?: ScalarValue + /** + * Layer 3 height. + * + * **Default**: `1` + */ + layer3Height?: ScalarValue + /** + * Layer 3 color. + * + * **Default**: `[1, 1, 1, 1]` + */ + layer3Color?: Vector4Value + /** + * Layer 4 width. + * + * **Default**: `1` + */ + layer4Width?: ScalarValue + /** + * Layer 4 height. + * + * **Default**: `1` + */ + layer4Height?: ScalarValue + /** + * Layer 4 color. + * + * **Default**: `[1, 1, 1, 1]` + */ + layer4Color?: Vector4Value + /** + * Layer 1 texture ID. + * + * **Default**: `1` + */ + layer1?: number + /** + * Layer 2 texture ID. + * + * **Default**: `0` + */ + layer2?: number + /** + * Layer 3 texture ID. + * + * **Default**: `0` + */ + layer3?: number + /** + * Layer 4 texture ID. + * + * This layer seems to work a bit differently from the others in Sekiro. + * + * **Default**: `0` + */ + layer4?: number + /** + * Blend mode. + * + * **Default**: {@link BlendMode.Add} + */ + blendMode?: BlendMode + /** + * Unknown integer. + * + * **Default**: `0` + */ + unk_er_f1_4?: number + /** + * Diameter of the lens flare source sphere. + * + * The opacity of the lens flare depends on how much of the source is in view. + * + * **Default**: `1` + */ + sourceSize?: number + /** + * The time in seconds it takes for the opacity of the lens flare to transition when the source comes more into or goes more out of view. + * + * **Default**: `1` + */ + opacityTransitionDuration?: number + /** + * Unknown integer. + * + * **Default**: `0` + */ + unk_er_f1_8?: number /** * Number of copies of layer 1. Why this exists is unknown, they all just stack on top of each other. * @@ -33006,39 +33495,29 @@ export interface LensFlareParams { */ layer1ColorMultiplier?: Vector4 /** - * The bloom color for layer 1. This is multiplied with the {@link layer1Color layer's color} to get the final color for the bloom. - * - * **Default**: `[1, 1, 1, 1]` - * - * See also: - * - {@link bloom} - * - {@link layer1Color} - */ - layer1BloomColor?: Vector4 - /** - * Layer 2 texture ID. + * Unknown integer. * * **Default**: `0` */ - layer2?: number + unk_er_f1_17?: number /** - * Layer 2 width. + * Unknown float. * - * **Default**: `1` + * **Default**: `0` */ - layer2Width?: ScalarValue + unk_er_f1_18?: number /** - * Layer 2 height. + * Unknown float. * * **Default**: `1` */ - layer2Height?: ScalarValue + unk_er_f1_19?: number /** - * Layer 2 color. + * Unknown float. * - * **Default**: `[1, 1, 1, 1]` + * **Default**: `-1` */ - layer2Color?: Vector4Value + unk_er_f1_20?: number /** * Number of copies of layer 2. Why this exists is unknown, they all just stack on top of each other. * @@ -33095,39 +33574,29 @@ export interface LensFlareParams { */ layer2ColorMultiplier?: Vector4 /** - * The bloom color for layer 2. This is multiplied with the {@link layer2Color layer's color} to get the final color for the bloom. - * - * **Default**: `[1, 1, 1, 1]` - * - * See also: - * - {@link bloom} - * - {@link layer2Color} - */ - layer2BloomColor?: Vector4 - /** - * Layer 3 texture ID. + * Unknown integer. * * **Default**: `0` */ - layer3?: number + unk_er_f1_29?: number /** - * Layer 3 width. + * Unknown float. * - * **Default**: `1` + * **Default**: `0` */ - layer3Width?: ScalarValue + unk_er_f1_30?: number /** - * Layer 3 height. + * Unknown float. * * **Default**: `1` */ - layer3Height?: ScalarValue + unk_er_f1_31?: number /** - * Layer 3 color. + * Unknown float. * - * **Default**: `[1, 1, 1, 1]` + * **Default**: `-1` */ - layer3Color?: Vector4Value + unk_er_f1_32?: number /** * Number of copies of layer 3. Why this exists is unknown, they all just stack on top of each other. * @@ -33184,41 +33653,29 @@ export interface LensFlareParams { */ layer3ColorMultiplier?: Vector4 /** - * The bloom color for layer 3. This is multiplied with the {@link layer3Color layer's color} to get the final color for the bloom. - * - * **Default**: `[1, 1, 1, 1]` - * - * See also: - * - {@link bloom} - * - {@link layer3Color} - */ - layer3BloomColor?: Vector4 - /** - * Layer 4 texture ID. - * - * This layer seems to work a bit differently from the others in Sekiro. + * Unknown integer. * * **Default**: `0` */ - layer4?: number + unk_er_f1_41?: number /** - * Layer 4 width. + * Unknown float. * - * **Default**: `1` + * **Default**: `0` */ - layer4Width?: ScalarValue + unk_er_f1_42?: number /** - * Layer 4 height. + * Unknown float. * * **Default**: `1` */ - layer4Height?: ScalarValue + unk_er_f1_43?: number /** - * Layer 4 color. + * Unknown float. * - * **Default**: `[1, 1, 1, 1]` + * **Default**: `-1` */ - layer4Color?: Vector4Value + unk_er_f1_44?: number /** * Number of copies of layer 4. Why this exists is unknown, they all just stack on top of each other. * @@ -33275,35 +33732,35 @@ export interface LensFlareParams { */ layer4ColorMultiplier?: Vector4 /** - * The bloom color for layer 4. This is multiplied with the {@link layer4Color layer's color} to get the final color for the bloom. - * - * **Default**: `[1, 1, 1, 1]` + * Unknown integer. * - * See also: - * - {@link bloom} - * - {@link layer4Color} + * **Default**: `0` */ - layer4BloomColor?: Vector4 + unk_er_f1_53?: number /** - * Blend mode. + * Unknown float. * - * **Default**: {@link BlendMode.Add} + * **Default**: `0` */ - blendMode?: BlendMode + unk_er_f1_54?: number /** - * Diameter of the lens flare source sphere. - * - * The opacity of the lens flare depends on how much of the source is in view. + * Unknown float. * * **Default**: `1` */ - sourceSize?: number + unk_er_f1_55?: number /** - * The time in seconds it takes for the opacity of the lens flare to transition when the source comes more into or goes more out of view. + * Unknown float. * - * **Default**: `1` + * **Default**: `-1` */ - opacityTransitionDuration?: number + unk_er_f1_56?: number + /** + * Unknown integer. + * + * **Default**: `0` + */ + unk_er_f1_57?: number /** * When enabled, this allows the lens flare to have a bloom effect. * @@ -33319,119 +33776,81 @@ export interface LensFlareParams { */ bloom?: boolean /** - * Unknown integer. - * - * **Default**: `0` - */ - unk_er_f1_4?: number - /** - * Unknown integer. - * - * **Default**: `0` - */ - unk_er_f1_8?: number - /** - * Unknown integer. - * - * **Default**: `0` - */ - unk_er_f1_17?: number - /** - * Unknown float. - * - * **Default**: `0` - */ - unk_er_f1_18?: number - /** - * Unknown float. - * - * **Default**: `1` - */ - unk_er_f1_19?: number - /** - * Unknown float. - * - * **Default**: `-1` - */ - unk_er_f1_20?: number - /** - * Unknown integer. + * The bloom color for layer 1. This is multiplied with the {@link layer1Color layer's color} to get the final color for the bloom. * - * **Default**: `0` - */ - unk_er_f1_29?: number - /** - * Unknown float. + * **Default**: `[1, 1, 1, 1]` * - * **Default**: `0` + * See also: + * - {@link bloom} + * - {@link layer1Color} */ - unk_er_f1_30?: number + layer1BloomColor?: Vector4 /** - * Unknown float. + * The bloom color for layer 2. This is multiplied with the {@link layer2Color layer's color} to get the final color for the bloom. * - * **Default**: `1` - */ - unk_er_f1_31?: number - /** - * Unknown float. + * **Default**: `[1, 1, 1, 1]` * - * **Default**: `-1` + * See also: + * - {@link bloom} + * - {@link layer2Color} */ - unk_er_f1_32?: number + layer2BloomColor?: Vector4 /** - * Unknown integer. + * The bloom color for layer 3. This is multiplied with the {@link layer3Color layer's color} to get the final color for the bloom. * - * **Default**: `0` - */ - unk_er_f1_41?: number - /** - * Unknown float. + * **Default**: `[1, 1, 1, 1]` * - * **Default**: `0` + * See also: + * - {@link bloom} + * - {@link layer3Color} */ - unk_er_f1_42?: number + layer3BloomColor?: Vector4 /** - * Unknown float. + * The bloom color for layer 4. This is multiplied with the {@link layer4Color layer's color} to get the final color for the bloom. * - * **Default**: `1` + * **Default**: `[1, 1, 1, 1]` + * + * See also: + * - {@link bloom} + * - {@link layer4Color} */ - unk_er_f1_43?: number + layer4BloomColor?: Vector4 /** * Unknown float. * * **Default**: `-1` */ - unk_er_f1_44?: number + unk_ac6_f1_75?: number /** - * Unknown integer. + * Unknown float. * - * **Default**: `0` + * **Default**: `-1` */ - unk_er_f1_53?: number + unk_ac6_f1_76?: number /** * Unknown float. * - * **Default**: `0` + * **Default**: `-1` */ - unk_er_f1_54?: number + unk_ac6_f1_77?: number /** * Unknown float. * - * **Default**: `1` + * **Default**: `-1` */ - unk_er_f1_55?: number + unk_ac6_f1_78?: number /** * Unknown float. * * **Default**: `-1` */ - unk_er_f1_56?: number + unk_ac6_f1_79?: number /** - * Unknown integer. + * Unknown float. * - * **Default**: `0` + * **Default**: `-1` */ - unk_er_f1_57?: number + unk_ac6_f1_80?: number /** * Unknown integer. * @@ -33648,42 +34067,6 @@ export interface LensFlareParams { * **Default**: `-2` */ unk_er_f2_36?: number - /** - * Unknown float. - * - * **Default**: `-1` - */ - unk_ac6_f1_75?: number - /** - * Unknown float. - * - * **Default**: `-1` - */ - unk_ac6_f1_76?: number - /** - * Unknown float. - * - * **Default**: `-1` - */ - unk_ac6_f1_77?: number - /** - * Unknown float. - * - * **Default**: `-1` - */ - unk_ac6_f1_78?: number - /** - * Unknown float. - * - * **Default**: `-1` - */ - unk_ac6_f1_79?: number - /** - * Unknown float. - * - * **Default**: `-1` - */ - unk_ac6_f1_80?: number } /** @@ -33695,10 +34078,6 @@ export interface LensFlareParams { class LensFlare extends DataAction { declare readonly type: ActionType.LensFlare declare readonly meta: ActionMeta & {isAppearance:true,isParticle:false} - /** - * Layer 1 texture ID. - */ - layer1: number /** * Layer 1 width. */ @@ -33711,6 +34090,76 @@ class LensFlare extends DataAction { * Layer 1 color. */ layer1Color: Vector4Value + /** + * Layer 2 width. + */ + layer2Width: ScalarValue + /** + * Layer 2 height. + */ + layer2Height: ScalarValue + /** + * Layer 2 color. + */ + layer2Color: Vector4Value + /** + * Layer 3 width. + */ + layer3Width: ScalarValue + /** + * Layer 3 height. + */ + layer3Height: ScalarValue + /** + * Layer 3 color. + */ + layer3Color: Vector4Value + /** + * Layer 4 width. + */ + layer4Width: ScalarValue + /** + * Layer 4 height. + */ + layer4Height: ScalarValue + /** + * Layer 4 color. + */ + layer4Color: Vector4Value + /** + * Layer 1 texture ID. + */ + layer1: number + /** + * Layer 2 texture ID. + */ + layer2: number + /** + * Layer 3 texture ID. + */ + layer3: number + /** + * Layer 4 texture ID. + * + * This layer seems to work a bit differently from the others in Sekiro. + */ + layer4: number + /** + * Blend mode. + */ + blendMode: BlendMode + unk_er_f1_4: number + /** + * Diameter of the lens flare source sphere. + * + * The opacity of the lens flare depends on how much of the source is in view. + */ + sourceSize: number + /** + * The time in seconds it takes for the opacity of the lens flare to transition when the source comes more into or goes more out of view. + */ + opacityTransitionDuration: number + unk_er_f1_8: number /** * Number of copies of layer 1. Why this exists is unknown, they all just stack on top of each other. * @@ -33756,30 +34205,10 @@ class LensFlare extends DataAction { * - {@link layer1Color} */ layer1ColorMultiplier: Vector4 - /** - * The bloom color for layer 1. This is multiplied with the {@link layer1Color layer's color} to get the final color for the bloom. - * - * See also: - * - {@link bloom} - * - {@link layer1Color} - */ - layer1BloomColor: Vector4 - /** - * Layer 2 texture ID. - */ - layer2: number - /** - * Layer 2 width. - */ - layer2Width: ScalarValue - /** - * Layer 2 height. - */ - layer2Height: ScalarValue - /** - * Layer 2 color. - */ - layer2Color: Vector4Value + unk_er_f1_17: number + unk_er_f1_18: number + unk_er_f1_19: number + unk_er_f1_20: number /** * Number of copies of layer 2. Why this exists is unknown, they all just stack on top of each other. * @@ -33825,30 +34254,10 @@ class LensFlare extends DataAction { * - {@link layer2Color} */ layer2ColorMultiplier: Vector4 - /** - * The bloom color for layer 2. This is multiplied with the {@link layer2Color layer's color} to get the final color for the bloom. - * - * See also: - * - {@link bloom} - * - {@link layer2Color} - */ - layer2BloomColor: Vector4 - /** - * Layer 3 texture ID. - */ - layer3: number - /** - * Layer 3 width. - */ - layer3Width: ScalarValue - /** - * Layer 3 height. - */ - layer3Height: ScalarValue - /** - * Layer 3 color. - */ - layer3Color: Vector4Value + unk_er_f1_29: number + unk_er_f1_30: number + unk_er_f1_31: number + unk_er_f1_32: number /** * Number of copies of layer 3. Why this exists is unknown, they all just stack on top of each other. * @@ -33894,32 +34303,10 @@ class LensFlare extends DataAction { * - {@link layer3Color} */ layer3ColorMultiplier: Vector4 - /** - * The bloom color for layer 3. This is multiplied with the {@link layer3Color layer's color} to get the final color for the bloom. - * - * See also: - * - {@link bloom} - * - {@link layer3Color} - */ - layer3BloomColor: Vector4 - /** - * Layer 4 texture ID. - * - * This layer seems to work a bit differently from the others in Sekiro. - */ - layer4: number - /** - * Layer 4 width. - */ - layer4Width: ScalarValue - /** - * Layer 4 height. - */ - layer4Height: ScalarValue - /** - * Layer 4 color. - */ - layer4Color: Vector4Value + unk_er_f1_41: number + unk_er_f1_42: number + unk_er_f1_43: number + unk_er_f1_44: number /** * Number of copies of layer 4. Why this exists is unknown, they all just stack on top of each other. * @@ -33965,59 +34352,61 @@ class LensFlare extends DataAction { * - {@link layer4Color} */ layer4ColorMultiplier: Vector4 + unk_er_f1_53: number + unk_er_f1_54: number + unk_er_f1_55: number + unk_er_f1_56: number + unk_er_f1_57: number /** - * The bloom color for layer 4. This is multiplied with the {@link layer4Color layer's color} to get the final color for the bloom. + * When enabled, this allows the lens flare to have a bloom effect. + * + * Does not seem to work in Sekiro. * * See also: - * - {@link bloom} - * - {@link layer4Color} + * - {@link layer1BloomColor} + * - {@link layer2BloomColor} + * - {@link layer3BloomColor} + * - {@link layer4BloomColor} */ - layer4BloomColor: Vector4 + bloom: boolean /** - * Blend mode. + * The bloom color for layer 1. This is multiplied with the {@link layer1Color layer's color} to get the final color for the bloom. + * + * See also: + * - {@link bloom} + * - {@link layer1Color} */ - blendMode: BlendMode + layer1BloomColor: Vector4 /** - * Diameter of the lens flare source sphere. + * The bloom color for layer 2. This is multiplied with the {@link layer2Color layer's color} to get the final color for the bloom. * - * The opacity of the lens flare depends on how much of the source is in view. + * See also: + * - {@link bloom} + * - {@link layer2Color} */ - sourceSize: number + layer2BloomColor: Vector4 /** - * The time in seconds it takes for the opacity of the lens flare to transition when the source comes more into or goes more out of view. + * The bloom color for layer 3. This is multiplied with the {@link layer3Color layer's color} to get the final color for the bloom. + * + * See also: + * - {@link bloom} + * - {@link layer3Color} */ - opacityTransitionDuration: number + layer3BloomColor: Vector4 /** - * When enabled, this allows the lens flare to have a bloom effect. - * - * Does not seem to work in Sekiro. + * The bloom color for layer 4. This is multiplied with the {@link layer4Color layer's color} to get the final color for the bloom. * * See also: - * - {@link layer1BloomColor} - * - {@link layer2BloomColor} - * - {@link layer3BloomColor} - * - {@link layer4BloomColor} + * - {@link bloom} + * - {@link layer4Color} */ - bloom: boolean - unk_er_f1_4: number - unk_er_f1_8: number - unk_er_f1_17: number - unk_er_f1_18: number - unk_er_f1_19: number - unk_er_f1_20: number - unk_er_f1_29: number - unk_er_f1_30: number - unk_er_f1_31: number - unk_er_f1_32: number - unk_er_f1_41: number - unk_er_f1_42: number - unk_er_f1_43: number - unk_er_f1_44: number - unk_er_f1_53: number - unk_er_f1_54: number - unk_er_f1_55: number - unk_er_f1_56: number - unk_er_f1_57: number + layer4BloomColor: Vector4 + unk_ac6_f1_75: number + unk_ac6_f1_76: number + unk_ac6_f1_77: number + unk_ac6_f1_78: number + unk_ac6_f1_79: number + unk_ac6_f1_80: number unk_er_f2_0: number unk_er_f2_1: number unk_er_f2_2: number @@ -34054,12 +34443,6 @@ class LensFlare extends DataAction { unk_er_f2_34: number unk_er_f2_35: number unk_er_f2_36: number - unk_ac6_f1_75: number - unk_ac6_f1_76: number - unk_ac6_f1_77: number - unk_ac6_f1_78: number - unk_ac6_f1_79: number - unk_ac6_f1_80: number constructor(props: LensFlareParams = {}) { super(ActionType.LensFlare, {isAppearance:true,isParticle:false}) this.assign(props) @@ -34068,269 +34451,381 @@ class LensFlare extends DataAction { export interface RichModelParams { /** - * Rich model orientation mode. See {@link RichModelOrientationMode} for more information. + * Model ID. * - * **Default**: {@link RichModelOrientationMode.ParticleDirection} + * **Default**: `80201` + * + * **Argument**: {@link PropertyArgument.Constant0 Constant 0} */ - orientation?: RichModelOrientationMode + model?: ScalarValue /** - * Each particle will pick a random number between this value and 1, and the width of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly thinner, down to half width. Setting it to 2 will make them randomly wider, up to double width. + * The width of the particle. * - * If {@link uniformScale} is enabled, this also affects the height. + * If {@link uniformScale} is enabled, this also controls the height and depth. * * **Default**: `1` * + * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + * * See also: - * - {@link scaleVariationY} - * - {@link scaleVariationZ} + * - {@link scaleVariationX} + * - {@link sizeY} + * - {@link sizeZ} */ - scaleVariationX?: number + sizeX?: ScalarValue /** - * Each particle will pick a random number between this value and 1, and the height of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shorter, down to half height. Setting it to 2 will make them randomly taller, up to double height. + * The height of the particle. * - * If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the height, and this field is ignored. + * If {@link uniformScale} is enabled, {@link sizeX} also controls the height, and this property is ignored. * * **Default**: `1` * + * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + * * See also: - * - {@link scaleVariationX} - * - {@link scaleVariationZ} + * - {@link scaleVariationY} + * - {@link sizeX} + * - {@link sizeZ} */ - scaleVariationY?: number + sizeY?: ScalarValue /** - * Each particle will pick a random number between this value and 1, and the depth of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shallower, down to half depth. Setting it to 2 will make them randomly deeper, up to double depth. + * The depth of the particle. * - * If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the depth, and this field is ignored. + * If {@link uniformScale} is enabled, {@link sizeX} also controls the depth, and this property is ignored. * * **Default**: `1` * + * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + * * See also: - * - {@link scaleVariationX} - * - {@link scaleVariationY} + * - {@link scaleVariationZ} + * - {@link sizeX} + * - {@link sizeY} */ - scaleVariationZ?: number + sizeZ?: ScalarValue /** - * If enabled, the particle X scale-related properties and fields will control the scale in all axes, and the Y and Z counterparts will be ignored. + * Rotation around the X-axis in degrees. * - * **Default**: `false` + * **Default**: `0` + * + * **Argument**: {@link PropertyArgument.Constant0 Constant 0} * * See also: - * - {@link sizeX} - * - {@link sizeY} - * - {@link sizeZ} - * - {@link scaleVariationX} - * - {@link scaleVariationY} - * - {@link scaleVariationZ} + * - {@link angularSpeedX} + * - {@link angularSpeedMultiplierX} */ - uniformScale?: boolean + rotationX?: ScalarValue /** - * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * Rotation around the Y-axis in degrees. * - * Note: - * - This has no effect if the "Effects Quality" setting is set to "Low". - * - This does not affect the natural bloom effect from high color values. + * **Default**: `0` * - * **Default**: `[1, 1, 1, 0]` + * **Argument**: {@link PropertyArgument.Constant0 Constant 0} + * + * See also: + * - {@link angularSpeedY} + * - {@link angularSpeedMultiplierY} */ - bloomColor?: Vector4 + rotationY?: ScalarValue /** - * Model ID. + * Rotation around the Z-axis in degrees. * - * **Default**: `80201` + * **Default**: `0` * * **Argument**: {@link PropertyArgument.Constant0 Constant 0} + * + * See also: + * - {@link angularSpeedZ} + * - {@link angularSpeedMultiplierZ} */ - model?: ScalarValue + rotationZ?: ScalarValue /** - * The width of the particle. + * Angular speed around the X-axis in degrees per second. * - * If {@link uniformScale} is enabled, this also controls the height and depth. + * **Default**: `0` + * + * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + * + * See also: + * - {@link rotationX} + * - {@link angularSpeedMultiplierX} + */ + angularSpeedX?: ScalarValue + /** + * Multiplier for {@link angularSpeedX}. * * **Default**: `1` * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link scaleVariationX} - * - {@link sizeY} - * - {@link sizeZ} + * - {@link rotationX} */ - sizeX?: ScalarValue + angularSpeedMultiplierX?: ScalarValue /** - * The height of the particle. + * Angular speed around the Y-axis in degrees per second. * - * If {@link uniformScale} is enabled, {@link sizeX} also controls the height, and this property is ignored. + * **Default**: `0` + * + * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + * + * See also: + * - {@link rotationY} + * - {@link angularSpeedMultiplierY} + */ + angularSpeedY?: ScalarValue + /** + * Multiplier for {@link angularSpeedY}. * * **Default**: `1` * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link scaleVariationY} - * - {@link sizeX} - * - {@link sizeZ} + * - {@link rotationY} */ - sizeY?: ScalarValue + angularSpeedMultiplierY?: ScalarValue /** - * The depth of the particle. + * Angular speed around the Z-axis in degrees per second. * - * If {@link uniformScale} is enabled, {@link sizeX} also controls the depth, and this property is ignored. + * **Default**: `0` + * + * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + * + * See also: + * - {@link rotationZ} + * - {@link angularSpeedMultiplierZ} + */ + angularSpeedZ?: ScalarValue + /** + * Multiplier for {@link angularSpeedZ}. * * **Default**: `1` * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link scaleVariationZ} - * - {@link sizeX} - * - {@link sizeY} + * - {@link rotationZ} */ - sizeZ?: ScalarValue + angularSpeedMultiplierZ?: ScalarValue /** - * Rotation around the X-axis in degrees. + * Color multiplier for the particle. + * + * **Default**: `[1, 1, 1, 1]` + * + * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + */ + color1?: Vector4Value + /** + * Color multiplier for the particle. + * + * **Default**: `[1, 1, 1, 1]` + * + * **Argument**: {@link PropertyArgument.EmissionTime Emission time} + */ + color2?: Vector4Value + /** + * Color multiplier for the particle. + * + * **Default**: `[1, 1, 1, 1]` + * + * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + */ + color3?: Vector4Value + /** + * Unknown. + * + * **Default**: `0` + */ + unk_er_p1_16?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_er_p1_17?: ScalarValue + /** + * Seemingly identical to {@link rgbMultiplier}? + * + * **Default**: `1` + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + */ + rgbMultiplier2?: ScalarValue + /** + * Unknown. + * + * **Default**: `0` + */ + unk_er_p1_19?: ScalarValue + /** + * Unknown. * * **Default**: `0` - * - * **Argument**: {@link PropertyArgument.Constant0 Constant 0} - * - * See also: - * - {@link angularSpeedX} - * - {@link angularSpeedMultiplierX} */ - rotationX?: ScalarValue + unk_er_p1_20?: ScalarValue /** - * Rotation around the Y-axis in degrees. + * Offset for the UV coordinates of the model. * - * **Default**: `0` + * **Default**: `[0, 0]` * * **Argument**: {@link PropertyArgument.Constant0 Constant 0} * * See also: - * - {@link angularSpeedY} - * - {@link angularSpeedMultiplierY} + * - {@link uvSpeed} */ - rotationY?: ScalarValue + uvOffset?: Vector2Value /** - * Rotation around the Z-axis in degrees. + * Scroll speed for the model's texture. * - * **Default**: `0` + * **Default**: `[0, 0]` * - * **Argument**: {@link PropertyArgument.Constant0 Constant 0} + * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: - * - {@link angularSpeedZ} - * - {@link angularSpeedMultiplierZ} + * - {@link uvSpeedMultiplier} */ - rotationZ?: ScalarValue + uvSpeed?: Vector2Value /** - * Angular speed around the X-axis in degrees per second. + * Multiplier for {@link uvSpeed} * - * **Default**: `0` + * **Default**: `[1, 1]` * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} - * - * See also: - * - {@link rotationX} - * - {@link angularSpeedMultiplierX} */ - angularSpeedX?: ScalarValue + uvSpeedMultiplier?: Vector2Value /** - * Angular speed around the Y-axis in degrees per second. + * Scalar multiplier for the color that does not affect the alpha. Effectively a brightness multiplier. * - * **Default**: `0` + * **Default**: `1` * - * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + */ + rgbMultiplier?: ScalarValue + /** + * Alpha multiplier. * - * See also: - * - {@link rotationY} - * - {@link angularSpeedMultiplierY} + * **Default**: `1` + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ - angularSpeedY?: ScalarValue + alphaMultiplier?: ScalarValue /** - * Angular speed around the Z-axis in degrees per second. + * Unknown. * * **Default**: `0` + */ + unk_er_p2_2?: ScalarValue + /** + * Unknown. * - * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + * **Default**: `[1, 1, 1, 1]` + */ + unk_er_p2_3?: Vector4Value + /** + * Unknown. * - * See also: - * - {@link rotationZ} - * - {@link angularSpeedMultiplierZ} + * **Default**: `[1, 1, 1, 1]` */ - angularSpeedZ?: ScalarValue + unk_er_p2_4?: Vector4Value /** - * Multiplier for {@link angularSpeedX}. + * Unknown. * - * **Default**: `1` + * **Default**: `[1, 1, 1, 1]` + */ + unk_er_p2_5?: Vector4Value + /** + * Unknown. * - * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + * **Default**: `0` + */ + unk_er_p2_6?: ScalarValue + /** + * Rich model orientation mode. See {@link RichModelOrientationMode} for more information. * - * See also: - * - {@link rotationX} + * **Default**: {@link RichModelOrientationMode.ParticleDirection} */ - angularSpeedMultiplierX?: ScalarValue + orientation?: RichModelOrientationMode /** - * Multiplier for {@link angularSpeedY}. + * Each particle will pick a random number between this value and 1, and the width of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly thinner, down to half width. Setting it to 2 will make them randomly wider, up to double width. * - * **Default**: `1` + * If {@link uniformScale} is enabled, this also affects the height. * - * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + * **Default**: `1` * * See also: - * - {@link rotationY} + * - {@link scaleVariationY} + * - {@link scaleVariationZ} */ - angularSpeedMultiplierY?: ScalarValue + scaleVariationX?: number /** - * Multiplier for {@link angularSpeedZ}. + * Each particle will pick a random number between this value and 1, and the height of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shorter, down to half height. Setting it to 2 will make them randomly taller, up to double height. * - * **Default**: `1` + * If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the height, and this field is ignored. * - * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + * **Default**: `1` * * See also: - * - {@link rotationZ} + * - {@link scaleVariationX} + * - {@link scaleVariationZ} */ - angularSpeedMultiplierZ?: ScalarValue + scaleVariationY?: number /** - * Color multiplier for the particle. + * Each particle will pick a random number between this value and 1, and the depth of the particle will be multiplied by this number. For example, setting this to 0.5 will make the particles randomly shallower, down to half depth. Setting it to 2 will make them randomly deeper, up to double depth. * - * **Default**: `[1, 1, 1, 1]` + * If {@link uniformScale} is enabled, {@link scaleVariationX} also affects the depth, and this field is ignored. * - * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + * **Default**: `1` + * + * See also: + * - {@link scaleVariationX} + * - {@link scaleVariationY} */ - color1?: Vector4Value + scaleVariationZ?: number /** - * Color multiplier for the particle. + * If enabled, the particle X scale-related properties and fields will control the scale in all axes, and the Y and Z counterparts will be ignored. * - * **Default**: `[1, 1, 1, 1]` + * **Default**: `false` * - * **Argument**: {@link PropertyArgument.EmissionTime Emission time} + * See also: + * - {@link sizeX} + * - {@link sizeY} + * - {@link sizeZ} + * - {@link scaleVariationX} + * - {@link scaleVariationY} + * - {@link scaleVariationZ} */ - color2?: Vector4Value + uniformScale?: boolean /** - * Color multiplier for the particle. - * - * **Default**: `[1, 1, 1, 1]` + * Unknown integer. * - * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + * **Default**: `1` */ - color3?: Vector4Value + unk_er_f1_5?: number /** - * Scalar multiplier for the color that does not affect the alpha. Effectively a brightness multiplier. + * Unknown integer. * * **Default**: `1` + */ + unk_er_f1_6?: number + /** + * Unknown integer. * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} + * **Default**: `0` */ - rgbMultiplier?: ScalarValue + unk_er_f1_7?: number /** - * Alpha multiplier. + * Unknown integer. * - * **Default**: `1` + * **Default**: `-2` + */ + unk_er_f1_8?: number + /** + * Unknown integer. * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} + * **Default**: `-2` */ - alphaMultiplier?: ScalarValue + unk_er_f1_9?: number /** * Anibnd ID. * @@ -34376,95 +34871,131 @@ export interface RichModelParams { */ animationSpeed?: number /** - * Unknown integer. + * Unknown float. * - * **Default**: `1` + * **Default**: `0` */ - unk_er_f1_5?: number + unk_er_f1_14?: number /** * Unknown integer. * - * **Default**: `1` + * **Default**: `0` */ - unk_er_f1_6?: number + unk_er_f1_15?: number /** * Unknown integer. * * **Default**: `0` */ - unk_er_f1_7?: number + unk_er_f1_16?: number /** * Unknown integer. * - * **Default**: `-2` + * **Default**: `0` */ - unk_er_f1_8?: number + unk_er_f1_17?: number /** * Unknown integer. * - * **Default**: `-2` + * **Default**: `0` */ - unk_er_f1_9?: number + unk_er_f1_18?: number /** - * Unknown float. + * Unknown integer. * * **Default**: `0` */ - unk_er_f1_14?: number + unk_er_f1_19?: number /** * Unknown integer. * * **Default**: `0` */ - unk_er_f1_15?: number + unk_er_f1_20?: number /** * Unknown integer. * * **Default**: `0` */ - unk_er_f1_16?: number + unk_er_f1_21?: number /** * Unknown integer. * * **Default**: `0` */ - unk_er_f1_17?: number + unk_er_f1_22?: number /** * Unknown integer. * * **Default**: `0` */ - unk_er_f1_18?: number + unk_er_f1_23?: number /** - * Unknown integer. + * Unknown float. * * **Default**: `0` */ - unk_er_f1_19?: number + unk_ac6_f1_24?: number + /** + * Unknown float. + * + * **Default**: `-1` + */ + unk_ac6_f1_25?: number + /** + * Unknown float. + * + * **Default**: `-1` + */ + unk_ac6_f1_26?: number + /** + * Unknown float. + * + * **Default**: `-1` + */ + unk_ac6_f1_27?: number + /** + * Unknown float. + * + * **Default**: `-1` + */ + unk_ac6_f1_28?: number /** * Unknown integer. * * **Default**: `0` */ - unk_er_f1_20?: number + unk_ac6_f1_29?: number /** * Unknown integer. * * **Default**: `0` */ - unk_er_f1_21?: number + unk_ac6_f1_30?: number + /** + * Unknown float. + * + * **Default**: `0` + */ + unk_ac6_f1_31?: number /** * Unknown integer. * * **Default**: `0` */ - unk_er_f1_22?: number + unk_ac6_f1_32?: number + /** + * Unknown integer. + * + * **Default**: `1` + */ + unk_ac6_f1_33?: number /** * Unknown integer. * * **Default**: `0` */ - unk_er_f1_23?: number + unk_ac6_f1_34?: number /** * Unknown float. * @@ -34501,6 +35032,16 @@ export interface RichModelParams { * **Default**: `0` */ unk_er_f2_3?: number + /** + * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + * + * **Default**: `[1, 1, 1, 0]` + */ + bloomColor?: Vector4 /** * Unknown integer. * @@ -34538,37 +35079,37 @@ export interface RichModelParams { */ unk_er_f2_13?: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * **Default**: `-1` * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance?: number + minFadeDistance?: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * **Default**: `-1` * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance?: number + minDistance?: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -34735,177 +35276,220 @@ export interface RichModelParams { * **Default**: `0` */ unk_er_f2_37?: number +} + +/** + * ### {@link ActionType.RichModel Action 10015 - RichModel} + * **Slot**: {@link ActionSlots.AppearanceAction Appearance} + * + * Particle with a 3D model. Similar to {@link ActionType.Model Model}, but with some different options and seemingly no way to change the blend mode. + * + * Some models only work properly with this action and not with the Model action for some unknown reason. A good example of this is the Carian greatsword model in Elden Ring (88300), which gets horribly stretched and distorted when used with the other action, but it works fine with this one. + */ +class RichModel extends DataAction { + declare readonly type: ActionType.RichModel + declare readonly meta: ActionMeta & {isAppearance:true,isParticle:true} /** - * Unknown. + * Model ID. * - * **Default**: `0` + * **Argument**: {@link PropertyArgument.Constant0 Constant 0} */ - unk_er_p1_16?: ScalarValue + model: ScalarValue /** - * Unknown. + * The width of the particle. * - * **Default**: `0` - */ - unk_er_p1_17?: ScalarValue - /** - * Seemingly identical to {@link rgbMultiplier}? + * If {@link uniformScale} is enabled, this also controls the height and depth. * - * **Default**: `1` + * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} + * See also: + * - {@link scaleVariationX} + * - {@link sizeY} + * - {@link sizeZ} */ - rgbMultiplier2?: ScalarValue + sizeX: ScalarValue /** - * Unknown. + * The height of the particle. * - * **Default**: `0` - */ - unk_er_p1_19?: ScalarValue - /** - * Unknown. + * If {@link uniformScale} is enabled, {@link sizeX} also controls the height, and this property is ignored. * - * **Default**: `0` - */ - unk_er_p1_20?: ScalarValue - /** - * Unknown. + * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * - * **Default**: `0` + * See also: + * - {@link scaleVariationY} + * - {@link sizeX} + * - {@link sizeZ} */ - unk_er_p2_2?: ScalarValue + sizeY: ScalarValue /** - * Unknown. + * The depth of the particle. * - * **Default**: `[1, 1, 1, 1]` - */ - unk_er_p2_3?: Vector4Value - /** - * Unknown. + * If {@link uniformScale} is enabled, {@link sizeX} also controls the depth, and this property is ignored. * - * **Default**: `[1, 1, 1, 1]` + * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + * + * See also: + * - {@link scaleVariationZ} + * - {@link sizeX} + * - {@link sizeY} */ - unk_er_p2_4?: Vector4Value + sizeZ: ScalarValue /** - * Unknown. + * Rotation around the X-axis in degrees. * - * **Default**: `[1, 1, 1, 1]` + * **Argument**: {@link PropertyArgument.Constant0 Constant 0} + * + * See also: + * - {@link angularSpeedX} + * - {@link angularSpeedMultiplierX} */ - unk_er_p2_5?: Vector4Value + rotationX: ScalarValue /** - * Unknown. + * Rotation around the Y-axis in degrees. * - * **Default**: `0` + * **Argument**: {@link PropertyArgument.Constant0 Constant 0} + * + * See also: + * - {@link angularSpeedY} + * - {@link angularSpeedMultiplierY} */ - unk_er_p2_6?: ScalarValue + rotationY: ScalarValue /** - * Unknown float. + * Rotation around the Z-axis in degrees. * - * **Default**: `0` + * **Argument**: {@link PropertyArgument.Constant0 Constant 0} + * + * See also: + * - {@link angularSpeedZ} + * - {@link angularSpeedMultiplierZ} */ - unk_ac6_f1_24?: number + rotationZ: ScalarValue /** - * Unknown float. + * Angular speed around the X-axis in degrees per second. * - * **Default**: `-1` + * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + * + * See also: + * - {@link rotationX} + * - {@link angularSpeedMultiplierX} */ - unk_ac6_f1_25?: number + angularSpeedX: ScalarValue /** - * Unknown float. + * Multiplier for {@link angularSpeedX}. * - * **Default**: `-1` + * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + * + * See also: + * - {@link rotationX} */ - unk_ac6_f1_26?: number + angularSpeedMultiplierX: ScalarValue /** - * Unknown float. + * Angular speed around the Y-axis in degrees per second. * - * **Default**: `-1` + * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + * + * See also: + * - {@link rotationY} + * - {@link angularSpeedMultiplierY} */ - unk_ac6_f1_27?: number + angularSpeedY: ScalarValue /** - * Unknown float. + * Multiplier for {@link angularSpeedY}. * - * **Default**: `-1` + * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + * + * See also: + * - {@link rotationY} */ - unk_ac6_f1_28?: number + angularSpeedMultiplierY: ScalarValue /** - * Unknown integer. + * Angular speed around the Z-axis in degrees per second. * - * **Default**: `0` + * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + * + * See also: + * - {@link rotationZ} + * - {@link angularSpeedMultiplierZ} */ - unk_ac6_f1_29?: number + angularSpeedZ: ScalarValue /** - * Unknown integer. + * Multiplier for {@link angularSpeedZ}. * - * **Default**: `0` + * **Argument**: {@link PropertyArgument.ParticleAge Particle age} + * + * See also: + * - {@link rotationZ} */ - unk_ac6_f1_30?: number + angularSpeedMultiplierZ: ScalarValue /** - * Unknown float. + * Color multiplier for the particle. * - * **Default**: `0` + * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ - unk_ac6_f1_31?: number + color1: Vector4Value /** - * Unknown integer. + * Color multiplier for the particle. * - * **Default**: `0` + * **Argument**: {@link PropertyArgument.EmissionTime Emission time} */ - unk_ac6_f1_32?: number + color2: Vector4Value /** - * Unknown integer. + * Color multiplier for the particle. * - * **Default**: `1` + * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ - unk_ac6_f1_33?: number + color3: Vector4Value + unk_er_p1_16: ScalarValue + unk_er_p1_17: ScalarValue /** - * Unknown integer. + * Seemingly identical to {@link rgbMultiplier}? * - * **Default**: `0` + * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ - unk_ac6_f1_34?: number + rgbMultiplier2: ScalarValue + unk_er_p1_19: ScalarValue + unk_er_p1_20: ScalarValue /** * Offset for the UV coordinates of the model. * - * **Default**: `[0, 0]` - * * **Argument**: {@link PropertyArgument.Constant0 Constant 0} * * See also: * - {@link uvSpeed} */ - uvOffset?: Vector2Value + uvOffset: Vector2Value /** * Scroll speed for the model's texture. * - * **Default**: `[0, 0]` - * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} * * See also: * - {@link uvSpeedMultiplier} */ - uvSpeed?: Vector2Value + uvSpeed: Vector2Value /** * Multiplier for {@link uvSpeed} * - * **Default**: `[1, 1]` - * * **Argument**: {@link PropertyArgument.ParticleAge Particle age} */ - uvSpeedMultiplier?: Vector2Value -} - -/** - * ### {@link ActionType.RichModel Action 10015 - RichModel} - * **Slot**: {@link ActionSlots.AppearanceAction Appearance} - * - * Particle with a 3D model. Similar to {@link ActionType.Model Model}, but with some different options and seemingly no way to change the blend mode. - * - * Some models only work properly with this action and not with the Model action for some unknown reason. A good example of this is the Carian greatsword model in Elden Ring (88300), which gets horribly stretched and distorted when used with the other action, but it works fine with this one. - */ -class RichModel extends DataAction { - declare readonly type: ActionType.RichModel - declare readonly meta: ActionMeta & {isAppearance:true,isParticle:true} + uvSpeedMultiplier: Vector2Value + /** + * Scalar multiplier for the color that does not affect the alpha. Effectively a brightness multiplier. + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + */ + rgbMultiplier: ScalarValue + /** + * Alpha multiplier. + * + * **Argument**: {@link PropertyArgument.EffectAge Effect age} + */ + alphaMultiplier: ScalarValue + unk_er_p2_2: ScalarValue + unk_er_p2_3: Vector4Value + unk_er_p2_4: Vector4Value + unk_er_p2_5: Vector4Value + unk_er_p2_6: ScalarValue /** * Rich model orientation mode. See {@link RichModelOrientationMode} for more information. */ @@ -34952,176 +35536,11 @@ class RichModel extends DataAction { * - {@link scaleVariationZ} */ uniformScale: boolean - /** - * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. - * - * Note: - * - This has no effect if the "Effects Quality" setting is set to "Low". - * - This does not affect the natural bloom effect from high color values. - */ - bloomColor: Vector4 - /** - * Model ID. - * - * **Argument**: {@link PropertyArgument.Constant0 Constant 0} - */ - model: ScalarValue - /** - * The width of the particle. - * - * If {@link uniformScale} is enabled, this also controls the height and depth. - * - * **Argument**: {@link PropertyArgument.ParticleAge Particle age} - * - * See also: - * - {@link scaleVariationX} - * - {@link sizeY} - * - {@link sizeZ} - */ - sizeX: ScalarValue - /** - * The height of the particle. - * - * If {@link uniformScale} is enabled, {@link sizeX} also controls the height, and this property is ignored. - * - * **Argument**: {@link PropertyArgument.ParticleAge Particle age} - * - * See also: - * - {@link scaleVariationY} - * - {@link sizeX} - * - {@link sizeZ} - */ - sizeY: ScalarValue - /** - * The depth of the particle. - * - * If {@link uniformScale} is enabled, {@link sizeX} also controls the depth, and this property is ignored. - * - * **Argument**: {@link PropertyArgument.ParticleAge Particle age} - * - * See also: - * - {@link scaleVariationZ} - * - {@link sizeX} - * - {@link sizeY} - */ - sizeZ: ScalarValue - /** - * Rotation around the X-axis in degrees. - * - * **Argument**: {@link PropertyArgument.Constant0 Constant 0} - * - * See also: - * - {@link angularSpeedX} - * - {@link angularSpeedMultiplierX} - */ - rotationX: ScalarValue - /** - * Rotation around the Y-axis in degrees. - * - * **Argument**: {@link PropertyArgument.Constant0 Constant 0} - * - * See also: - * - {@link angularSpeedY} - * - {@link angularSpeedMultiplierY} - */ - rotationY: ScalarValue - /** - * Rotation around the Z-axis in degrees. - * - * **Argument**: {@link PropertyArgument.Constant0 Constant 0} - * - * See also: - * - {@link angularSpeedZ} - * - {@link angularSpeedMultiplierZ} - */ - rotationZ: ScalarValue - /** - * Angular speed around the X-axis in degrees per second. - * - * **Argument**: {@link PropertyArgument.ParticleAge Particle age} - * - * See also: - * - {@link rotationX} - * - {@link angularSpeedMultiplierX} - */ - angularSpeedX: ScalarValue - /** - * Angular speed around the Y-axis in degrees per second. - * - * **Argument**: {@link PropertyArgument.ParticleAge Particle age} - * - * See also: - * - {@link rotationY} - * - {@link angularSpeedMultiplierY} - */ - angularSpeedY: ScalarValue - /** - * Angular speed around the Z-axis in degrees per second. - * - * **Argument**: {@link PropertyArgument.ParticleAge Particle age} - * - * See also: - * - {@link rotationZ} - * - {@link angularSpeedMultiplierZ} - */ - angularSpeedZ: ScalarValue - /** - * Multiplier for {@link angularSpeedX}. - * - * **Argument**: {@link PropertyArgument.ParticleAge Particle age} - * - * See also: - * - {@link rotationX} - */ - angularSpeedMultiplierX: ScalarValue - /** - * Multiplier for {@link angularSpeedY}. - * - * **Argument**: {@link PropertyArgument.ParticleAge Particle age} - * - * See also: - * - {@link rotationY} - */ - angularSpeedMultiplierY: ScalarValue - /** - * Multiplier for {@link angularSpeedZ}. - * - * **Argument**: {@link PropertyArgument.ParticleAge Particle age} - * - * See also: - * - {@link rotationZ} - */ - angularSpeedMultiplierZ: ScalarValue - /** - * Color multiplier for the particle. - * - * **Argument**: {@link PropertyArgument.ParticleAge Particle age} - */ - color1: Vector4Value - /** - * Color multiplier for the particle. - * - * **Argument**: {@link PropertyArgument.EmissionTime Emission time} - */ - color2: Vector4Value - /** - * Color multiplier for the particle. - * - * **Argument**: {@link PropertyArgument.ParticleAge Particle age} - */ - color3: Vector4Value - /** - * Scalar multiplier for the color that does not affect the alpha. Effectively a brightness multiplier. - * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} - */ - rgbMultiplier: ScalarValue - /** - * Alpha multiplier. - * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} - */ - alphaMultiplier: ScalarValue + unk_er_f1_5: number + unk_er_f1_6: number + unk_er_f1_7: number + unk_er_f1_8: number + unk_er_f1_9: number /** * Anibnd ID. * @@ -35158,11 +35577,6 @@ class RichModel extends DataAction { * - {@link loopAnimation} */ animationSpeed: number - unk_er_f1_5: number - unk_er_f1_6: number - unk_er_f1_7: number - unk_er_f1_8: number - unk_er_f1_9: number unk_er_f1_14: number unk_er_f1_15: number unk_er_f1_16: number @@ -35173,12 +35587,31 @@ class RichModel extends DataAction { unk_er_f1_21: number unk_er_f1_22: number unk_er_f1_23: number + unk_ac6_f1_24: number + unk_ac6_f1_25: number + unk_ac6_f1_26: number + unk_ac6_f1_27: number + unk_ac6_f1_28: number + unk_ac6_f1_29: number + unk_ac6_f1_30: number + unk_ac6_f1_31: number + unk_ac6_f1_32: number + unk_ac6_f1_33: number + unk_ac6_f1_34: number unk_er_f1_24: number unk_er_f1_25: number unk_er_f2_0: number unk_er_f2_1: number unk_er_f2_2: number unk_er_f2_3: number + /** + * Controls the color of the additional bloom effect. The colors of the particle will be multiplied with this color to get the final color of the bloom effect. + * + * Note: + * - This has no effect if the "Effects Quality" setting is set to "Low". + * - This does not affect the natural bloom effect from high color values. + */ + bloomColor: Vector4 unk_er_f2_8: number unk_er_f2_9: number unk_er_f2_10: number @@ -35186,33 +35619,33 @@ class RichModel extends DataAction { unk_er_f2_12: number unk_er_f2_13: number /** - * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. - * - * This requires {@link minFadeDistance} to be set to something other than -1. + * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * - * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. + * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. * * See also: - * - {@link minFadeDistance} + * - {@link minDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minDistance: number + minFadeDistance: number /** - * This controls a point where the opacity of a particle will start to fade to 0 near the {@link minDistance minimum view distance}. At {@link minDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. + * Minimum view distance. If a particle is closer than this distance from the camera, it will be hidden. Can be set to -1 to disable the limit. * - * This requires {@link minDistance} to be set to something other than -1. This distance limit can be disabled by setting this and minDistance to -1. + * This requires {@link minFadeDistance} to be set to something other than -1. + * + * This is different from {@link minDistanceThreshold}, as this controls the start of a distance range that has smooth transitions at each end, while the threshold value is a hard cut-off. * * See also: - * - {@link minDistance} + * - {@link minFadeDistance} * - {@link maxFadeDistance} * - {@link maxDistance} * - {@link minDistanceThreshold} * - {@link maxDistanceThreshold} */ - minFadeDistance: number + minDistance: number /** * This controls a point where the opacity of a particle will start to fade to 0 near the {@link maxDistance maximum view distance}. At {@link maxDistance}, the opacity will be 0, and it will linearly approach 1 as the distance between the camera and the particle approaches this distance. * @@ -35281,56 +35714,6 @@ class RichModel extends DataAction { unk_er_f2_35: number unk_er_f2_36: number unk_er_f2_37: number - unk_er_p1_16: ScalarValue - unk_er_p1_17: ScalarValue - /** - * Seemingly identical to {@link rgbMultiplier}? - * - * **Argument**: {@link PropertyArgument.EffectAge Effect age} - */ - rgbMultiplier2: ScalarValue - unk_er_p1_19: ScalarValue - unk_er_p1_20: ScalarValue - unk_er_p2_2: ScalarValue - unk_er_p2_3: Vector4Value - unk_er_p2_4: Vector4Value - unk_er_p2_5: Vector4Value - unk_er_p2_6: ScalarValue - unk_ac6_f1_24: number - unk_ac6_f1_25: number - unk_ac6_f1_26: number - unk_ac6_f1_27: number - unk_ac6_f1_28: number - unk_ac6_f1_29: number - unk_ac6_f1_30: number - unk_ac6_f1_31: number - unk_ac6_f1_32: number - unk_ac6_f1_33: number - unk_ac6_f1_34: number - /** - * Offset for the UV coordinates of the model. - * - * **Argument**: {@link PropertyArgument.Constant0 Constant 0} - * - * See also: - * - {@link uvSpeed} - */ - uvOffset: Vector2Value - /** - * Scroll speed for the model's texture. - * - * **Argument**: {@link PropertyArgument.ParticleAge Particle age} - * - * See also: - * - {@link uvSpeedMultiplier} - */ - uvSpeed: Vector2Value - /** - * Multiplier for {@link uvSpeed} - * - * **Argument**: {@link PropertyArgument.ParticleAge Particle age} - */ - uvSpeedMultiplier: Vector2Value constructor(props: RichModelParams = {}) { super(ActionType.RichModel, {isAppearance:true,isParticle:true}) this.assign(props) @@ -36214,12 +36597,6 @@ export interface WindForceParams { * **Default**: `1` */ unk_ds3_f1_42?: number - /** - * Unknown float. - * - * **Default**: `1` - */ - unk_ds3_f1_43?: number /** * Unknown float. * @@ -36335,6 +36712,12 @@ export interface WindForceParams { * **Default**: `60` */ unk_ds3_f1_50?: number + /** + * Unknown float. + * + * **Default**: `1` + */ + unk_ds3_f1_43?: number } /** @@ -36479,7 +36862,6 @@ class WindForce extends DataAction { unk_ds3_f1_40: number unk_ds3_f1_41: number unk_ds3_f1_42: number - unk_ds3_f1_43: number unk_ds3_f1_44: number unk_ds3_f1_45: number /** @@ -36511,6 +36893,7 @@ class WindForce extends DataAction { unk_sdt_f1_58: number unk_ds3_f1_49: number unk_ds3_f1_50: number + unk_ds3_f1_43: number constructor(props: WindForceParams = {}) { super(ActionType.WindForce, {isAppearance:true,isParticle:false}) this.assign(props) @@ -38190,12 +38573,6 @@ export interface Unk10500Params { * **Default**: `0` */ unk_ds3_f1_6?: number - /** - * Unknown integer. - * - * **Default**: `0` - */ - unk_ds3_f1_7?: number /** * Unknown float. * @@ -38214,6 +38591,12 @@ export interface Unk10500Params { * **Default**: `0` */ unk_sdt_f1_9?: number + /** + * Unknown integer. + * + * **Default**: `0` + */ + unk_ds3_f1_7?: number } /** @@ -38244,10 +38627,10 @@ class Unk10500 extends DataAction { unk_ds3_f1_4: number unk_ds3_f1_5: number unk_ds3_f1_6: number - unk_ds3_f1_7: number unk_ac6_f1_7: number unk_ds3_f1_8: number unk_sdt_f1_9: number + unk_ds3_f1_7: number constructor(props: Unk10500Params = {}) { super(ActionType.Unk10500, {isAppearance:false,isParticle:false}) this.assign(props) @@ -38327,6 +38710,30 @@ export interface SpotLightParams { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ radiusY?: ScalarValue + /** + * Unknown. + * + * **Default**: `1` + */ + unk_ds3_p1_6?: ScalarValue + /** + * Unknown. + * + * **Default**: `1` + */ + unk_ds3_p1_7?: ScalarValue + /** + * Unknown. + * + * **Default**: `1` + */ + unk_sdt_p1_10?: ScalarValue + /** + * Unknown integer. + * + * **Default**: `0` + */ + unk_sdt_f1_0?: number /** * Toggles the jitter and flicker animations for the light. * @@ -38354,6 +38761,12 @@ export interface SpotLightParams { * - {@link jitterZ} */ jitterAcceleration?: number + /** + * Unknown float. + * + * **Default**: `0` + */ + unk_sdt_f1_3?: number /** * Controls how much the light should move around randomly on the X-axis. * @@ -38443,6 +38856,24 @@ export interface SpotLightParams { * - {@link specularMultiplier} */ separateSpecular?: boolean + /** + * Controls how dark shadows from this light source are. At 0, the shadows will be entirely invisible. + * + * **Default**: `1` + */ + shadowDarkness?: number + /** + * Unknown integer. + * + * **Default**: `2` + */ + unk_ds3_f1_3?: number + /** + * Unknown integer. + * + * **Default**: `1` + */ + unk_ds3_f1_4?: number /** * The number of seconds the light takes to fade to nothing after being destroyed. * @@ -38452,11 +38883,23 @@ export interface SpotLightParams { */ fadeOutTime?: number /** - * Controls how dark shadows from this light source are. At 0, the shadows will be entirely invisible. + * Unknown integer. * - * **Default**: `1` + * **Default**: `100` */ - shadowDarkness?: number + unk_sdt_f1_16?: number + /** + * Unknown integer. + * + * **Default**: `0` + */ + unk_sdt_f1_17?: number + /** + * Unknown float. + * + * **Default**: `0` + */ + unk_sdt_f1_18?: number /** * Controls the density of some sort of fake fog in the volume hit by the light. The fog does not affect the actual light produced by the source and is not affected by shadows. * @@ -38467,6 +38910,12 @@ export interface SpotLightParams { * - {@link asymmetryParam} */ volumeDensity?: number + /** + * Unknown float. + * + * **Default**: `0` + */ + unk_sdt_f1_20?: number /** * Controls whether or not {@link asymmetryParam} affects the fake fog from {@link volumeDensity}. * @@ -38497,115 +38946,49 @@ export interface SpotLightParams { * * **Default**: `1` */ - unk_ds3_f1_0?: number - /** - * Unknown integer. - * - * **Default**: `2` - */ - unk_ds3_f1_3?: number - /** - * Unknown integer. - * - * **Default**: `1` - */ - unk_ds3_f1_4?: number + unk_er_f1_24?: number /** * Unknown float. * * **Default**: `1` */ - unk_ds3_f1_5?: number - /** - * Unknown integer. - * - * **Default**: `0` - */ - unk_ds3_f1_7?: number + unk_er_f1_25?: number /** * Unknown integer. * - * **Default**: `0` - */ - unk_ds3_f1_8?: number - /** - * Unknown. - * - * **Default**: `1` - */ - unk_ds3_p1_6?: ScalarValue - /** - * Unknown. - * * **Default**: `1` */ - unk_ds3_p1_7?: ScalarValue - /** - * Unknown integer. - * - * **Default**: `0` - */ - unk_sdt_f1_0?: number - /** - * Unknown float. - * - * **Default**: `0` - */ - unk_sdt_f1_3?: number - /** - * Unknown integer. - * - * **Default**: `100` - */ - unk_sdt_f1_16?: number + unk_er_f1_26?: number /** * Unknown integer. * * **Default**: `0` */ - unk_sdt_f1_17?: number - /** - * Unknown float. - * - * **Default**: `0` - */ - unk_sdt_f1_18?: number - /** - * Unknown float. - * - * **Default**: `0` - */ - unk_sdt_f1_20?: number - /** - * Unknown. - * - * **Default**: `1` - */ - unk_sdt_p1_10?: ScalarValue + unk_er_f1_27?: number /** * Unknown integer. * * **Default**: `1` */ - unk_er_f1_24?: number + unk_ds3_f1_0?: number /** * Unknown float. * * **Default**: `1` */ - unk_er_f1_25?: number + unk_ds3_f1_5?: number /** * Unknown integer. * - * **Default**: `1` + * **Default**: `0` */ - unk_er_f1_26?: number + unk_ds3_f1_7?: number /** * Unknown integer. * * **Default**: `0` */ - unk_er_f1_27?: number + unk_ds3_f1_8?: number } /** @@ -38673,6 +39056,10 @@ class SpotLight extends DataAction { * **Argument**: {@link PropertyArgument.EffectAge Effect age} */ radiusY: ScalarValue + unk_ds3_p1_6: ScalarValue + unk_ds3_p1_7: ScalarValue + unk_sdt_p1_10: ScalarValue + unk_sdt_f1_0: number /** * Toggles the jitter and flicker animations for the light. * @@ -38696,6 +39083,7 @@ class SpotLight extends DataAction { * - {@link jitterZ} */ jitterAcceleration: number + unk_sdt_f1_3: number /** * Controls how much the light should move around randomly on the X-axis. * @@ -38769,16 +39157,21 @@ class SpotLight extends DataAction { * - {@link specularMultiplier} */ separateSpecular: boolean + /** + * Controls how dark shadows from this light source are. At 0, the shadows will be entirely invisible. + */ + shadowDarkness: number + unk_ds3_f1_3: number + unk_ds3_f1_4: number /** * The number of seconds the light takes to fade to nothing after being destroyed. * * Due to how the field this represents works, the time will be rounded to the nearest multiple of 1/30s. */ fadeOutTime: number - /** - * Controls how dark shadows from this light source are. At 0, the shadows will be entirely invisible. - */ - shadowDarkness: number + unk_sdt_f1_16: number + unk_sdt_f1_17: number + unk_sdt_f1_18: number /** * Controls the density of some sort of fake fog in the volume hit by the light. The fog does not affect the actual light produced by the source and is not affected by shadows. * @@ -38787,6 +39180,7 @@ class SpotLight extends DataAction { * - {@link asymmetryParam} */ volumeDensity: number + unk_sdt_f1_20: number /** * Controls whether or not {@link asymmetryParam} affects the fake fog from {@link volumeDensity}. */ @@ -38806,25 +39200,14 @@ class SpotLight extends DataAction { * Note: This is possibly something else, but the behavior is pretty similar to a falloff exponent in a few ways. */ falloffExponent: number - unk_ds3_f1_0: number - unk_ds3_f1_3: number - unk_ds3_f1_4: number - unk_ds3_f1_5: number - unk_ds3_f1_7: number - unk_ds3_f1_8: number - unk_ds3_p1_6: ScalarValue - unk_ds3_p1_7: ScalarValue - unk_sdt_f1_0: number - unk_sdt_f1_3: number - unk_sdt_f1_16: number - unk_sdt_f1_17: number - unk_sdt_f1_18: number - unk_sdt_f1_20: number - unk_sdt_p1_10: ScalarValue unk_er_f1_24: number unk_er_f1_25: number unk_er_f1_26: number unk_er_f1_27: number + unk_ds3_f1_0: number + unk_ds3_f1_5: number + unk_ds3_f1_7: number + unk_ds3_f1_8: number constructor(props: SpotLightParams = {}) { super(ActionType.SpotLight, {isAppearance:true,isParticle:false}) this.assign(props) @@ -40106,8 +40489,9 @@ class HermiteProperty extends SequenceProperty( mean: TypeMap.PropertyValue[T], @@ -40127,8 +40511,9 @@ function RandomDeltaProperty( * @param maxValue The upper bound of the range of possible values for the * property. * @param seed A seed or set of seeds for the random number generator to use - * to generate the random property values. - * @returns + * to generate the random property values. Leave this empty if you want a + * random seed. See {@link randomSeed} if you want a random seed *and* to link + * multiple values together. */ function RandomRangeProperty( minValue: TypeMap.PropertyValue[T], @@ -40142,6 +40527,28 @@ function RandomRangeProperty( ) } +/** + * Creates a property with a {@link RandomFractionModifier} and a mean value, + * effectively creating a property with a random values around a mean based on + * a fraction of that mean value. + * @param mean The average value. Used as the value for the property itself. + * @param devationFract How far away from the mean the values generated by the + * property can be, as a fraction of the {@link mean} value. + * @param seed A seed or set of seeds for the random number generator to use + * to generate the random property values. Leave this empty if you want a + * random seed. See {@link randomSeed} if you want a random seed *and* to link + * multiple values together. + */ +function RandomFractionProperty( + mean: TypeMap.PropertyValue[T], + devationFract: TypeMap.PropertyValue[T], + seed?: TypeMap.PropertyValue[T] +): ConstantProperty { + return new ConstantProperty(...(typeof mean === 'number' ? [mean] : mean as Vector)).withModifiers( + new RandomFractionModifier(devationFract, seed) + ) +} + /** * Generates a rainbow color animation property with a configurable duration. * @param duration How long it takes to go around the entire hue circle in @@ -40455,16 +40862,11 @@ class RandomDeltaModifier implements IModifier { constructor( public max: TypeMap.PropertyValue[T], - public seed: TypeMap.PropertyValue[T] = ( - typeof max === 'number' ? - randomInt32() : - max.map(() => randomInt32()) - ) as TypeMap.PropertyValue[T] + public seed: TypeMap.PropertyValue[T] = randomSeed(getValueType(max)) as TypeMap.PropertyValue[T] ) { - if (typeof max === 'number') { - this.valueType = ValueType.Scalar as T - } else { - this.valueType = (max.length - 1) as T + this.valueType = getValueType(max) + if (this.valueType !== getValueType(seed)) { + throw new Error('Invalid seed type. Seed type must match value type.') } } @@ -40534,16 +40936,11 @@ class RandomRangeModifier implements IModifier { constructor( public min: TypeMap.PropertyValue[T], public max: TypeMap.PropertyValue[T], - public seed: TypeMap.PropertyValue[T] = ( - typeof min === 'number' ? - randomInt32() : - min.map(() => randomInt32()) - ) as TypeMap.PropertyValue[T] + public seed: TypeMap.PropertyValue[T] = randomSeed(getValueType(min)) as TypeMap.PropertyValue[T] ) { - if (typeof min === 'number') { - this.valueType = ValueType.Scalar as T - } else { - this.valueType = (min.length - 1) as T + this.valueType = getValueType(min) + if (this.valueType !== getValueType(seed)) { + throw new Error('Invalid seed type. Seed type must match value type.') } } @@ -40619,16 +41016,11 @@ class RandomFractionModifier implements IModifier { constructor( public max: TypeMap.PropertyValue[T], - public seed: TypeMap.PropertyValue[T] = ( - typeof max === 'number' ? - randomInt32() : - max.map(() => randomInt32()) - ) as TypeMap.PropertyValue[T] + public seed: TypeMap.PropertyValue[T] = randomSeed(getValueType(max)) as TypeMap.PropertyValue[T] ) { - if (typeof max === 'number') { - this.valueType = ValueType.Scalar as T - } else { - this.valueType = (max.length - 1) as T + this.valueType = getValueType(max) + if (this.valueType !== getValueType(seed)) { + throw new Error('Invalid seed type. Seed type must match value type.') } } @@ -40915,6 +41307,48 @@ namespace Recolor { lensFlare?: PaletteSlots['LensFlare'][] } + export type WeightedColorPalette = { + [K in keyof ColorPalette]: ColorPalette[K] extends (infer U)[] + ? (U & { weight?: number })[] + : ColorPalette[K] + } + + /** + * Create a new palette with the average of the entries in the given palette. + * Each entry in the input palette may have a `weight` property that controls + * how much the entry affects the average. + * @param palette A color palette, with optional weights. The weights default + * to 1 if not set. + */ + export function weightedAveragePalette(palette: WeightedColorPalette): ColorPalette { + const p: ColorPalette = {} + for (const [k, v] of Object.entries(palette) as Entries) { + const entries = [] + for (const entry of v) { + entries.push({ + weight: 1, + ...entry + }) + } + if (entries.length === 1) { + p[k] = entries + continue + } + const weightSum = entries.reduce((a, e) => a + e.weight!, 0) + const obj: any = {} + for (const entry of entries) { + for (const p of Object.keys(entry)) if (p !== 'weight') { + obj[p] = anyValueSum( + Property.fromJSON(obj[p] ?? 0), + anyValueMult(entry.weight / weightSum, Property.fromJSON(entry[p])) + ).toJSON() + } + } + p[k] = [obj] + } + return p + } + /** * Generates a color palette that can be used to recolor other nodes based on * the colors in the given nodes and their descendants. @@ -40945,9 +41379,6 @@ namespace Recolor { } return (val instanceof Property ? val.clone().minify() : val) as T } - function sum(p: T, n: keyof T, o: AnyValue) { - ;(p[n] as AnyValue) = anyValueSum(p[n] as AnyValue, normalize(o)) - } function nonWhiteVisible(color: Vector4Value) { return ( color instanceof SequenceProperty || @@ -40955,12 +41386,12 @@ namespace Recolor { ( Array.isArray(color) && color[3] !== 0 && - color.some(e => e !== 1) + color.some(e => !f32Equal(e, 1)) ) || ( color instanceof ValueProperty && (color.value as Vector4)[3] !== 0 && - (color.value as Vector4).some(e => e !== 1) + (color.value as Vector4).some(e => !f32Equal(e, 1)) ) ) } @@ -42341,6 +42772,15 @@ export { ActionData, DataActions, + anyValueMult, + anyValueSum, + anyValueDiff, + combineComponents, + separateComponents, + setVectorComponent, + randomSeed, + getValueType, + FXR, State, @@ -42471,14 +42911,9 @@ export { HermiteProperty, RandomDeltaProperty, RandomRangeProperty, + RandomFractionProperty, RainbowProperty, BloodVisibilityProperty, - anyValueMult, - anyValueSum, - anyValueDiff, - combineComponents, - separateComponents, - setVectorComponent, Modifier, GenericModifier,