diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0a34f06..b71bdb1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,27 @@
# Changelog
+## [14.0.0] - 2024-08-07
+
+### Highlights
+- Added `NodeAnimatedRotation` - A function that creates a `NodeSpin` action from a rotation property. Animating the rotation directly is not normally possible, it can only be done by controlling the angular speed. This function makes it possible by converting a rotation property to an angular speed property.
+- Added more utility functions:
+ - `FXRUtility.box` - Creates an outline of a cuboid shape.
+ - `FXRUtility.rect` - Creates a rectangle.
+ - `FXRUtility.ellipse` - Creates an ellipse.
+ - `FXRUtility.ellipsoid` - Creates three ellipses that form the outline of an ellipsoid.
+ - `FXRUtility.cylinder` - Creates an outline of a cylinder.
+ - `FXRUtility.transform` - Wraps a list of nodes in one that has a transform applied to it. The transform is defined by a translation, a direction to align with, and a roll angle. This makes it easier to point nodes in specific directions, or to just move them.
+ - `FXRUtility.outlineEmitters` - Adds outlines for all node and particle emitters in a node.
+ - `FXRUtility.animatedNodeRotation` - Creates a `NodeSpin` action from a rotation property. Animating the rotation directly is not normally possible, it can only be done by controlling the angular speed. This function makes it possible by converting a rotation property to an angular speed property.
+- Added `anyValueDiff` - This function subtracts one `AnyValue` from another. (An `AnyValue` is any scalar or vector value, including all types of properties.) This function simply uses the existing `anyValueSum` and `anyValueMult` functions to do this, so it works very similarly to those.
+- The three box size fields in the force volume actions have been converted to a single vector field.
+- The fallback for distortion and blur colors when applying a color palette has been changed to just white. This fixes partial palettes making some effects have strange-looking, bright or dark rectangles floating around.
+- `DataAction`s now have a new `meta` property with some information about the action type.
+ - `meta.isAppearance` - True if the action is an appearance action.
+ - `meta.isParticle` - True if the action defines a particle appearance.
+ - More is likely to be added to this in the future, if there are other things like this that is useful to have easy access to.
+- All of the position offset, speed, and acceleration fields in the GPU particle actions have been converted to vector fields. This got rid of 68 fields in total, so it can simplify things a lot.
+
## [13.0.0] - 2024-08-04
### Highlights
@@ -32,7 +54,7 @@
- The color multiplier and bloom color fields in the LensFlare action (10014) have been converted to vector fields.
- This fixes a bug where these fields were not changed by the recolor functions in the library.
- Converting point lights between DS3 and the other games should now keep the brightness more like the original. DS3 point lights seem to work a bit differently, so it stil won't be perfectly accurate, but it should be much closer than before.
-- The rate of time can now be adjusted on nodes or actions using the new scaleRateOfTime method.
+- The rate of time can now be adjusted on nodes or actions using the new `scaleRateOfTime` method.
- The rate of time in action 10500 is now automatically applied to everything when writing to DS3. This fixes converting effects from newer games to DS3 causing them to play at a different rate than the original effect if the original had a non-unit value for the rate of time.
- The `FXR.toArrayBuffer` method will now throw if the FXR's ID is invalid.
- Added an `FXR.name` getter function to FXR objects, which returns a file name for the FXR based on its ID.
@@ -115,6 +137,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.
+[14.0.0]: https://github.com/EvenTorset/fxr/compare/v13.0.0...v14.0.0
[13.0.0]: https://github.com/EvenTorset/fxr/compare/v12.2.0...v13.0.0
[12.2.0]: https://github.com/EvenTorset/fxr/compare/v12.1.0...v12.2.0
[12.1.0]: https://github.com/EvenTorset/fxr/compare/v12.0.0...v12.1.0
diff --git a/build/build.js b/build/build.js
index 6df1826..d0ad056 100644
--- a/build/build.js
+++ b/build/build.js
@@ -69,6 +69,13 @@ const timeMap = {
sq: 4,
}
+function toTSString(v) {
+ if (typeof v === 'string' || Array.isArray(v)) {
+ return JSON.stringify(v)
+ }
+ return v.toString()
+}
+
function naturalSorter(as, bs) {
let a, b, a1, b1, i = 0, n, L,
rx = /(\.\d+)|(\d+(\.\d+)?)|([^\d.]+)|(\.\D+)|(\.$)/g
@@ -131,6 +138,10 @@ export default async function(writeToDist = true) {
for (const fn of fs.readdirSync(actionsDir).sort(naturalSorter)) {
const data = yaml.parse(await fs.promises.readFile(path.join(actionsDir, fn), 'utf-8'))
+ if (!('meta' in data)) {
+ throw new Error('Missing meta object in action data: ' + fn)
+ }
+
if ('slot' in data) {
if (!actionSlots.has(data.slot)) {
actionSlots.set(data.slot, [])
@@ -284,7 +295,8 @@ export default async function(writeToDist = true) {
* ${data.desc.trim().replace(/\n/g, '\n * ')}
*/
class ${data.name} extends DataAction {
- declare type: ActionType.${data.name}
+ declare readonly type: ActionType.${data.name}
+ declare readonly meta: ActionMeta & {${Object.entries(data.meta).map(e => `${e[0]}:${toTSString(e[1])}`)}}
${Object.entries(data.properties ?? {}).filter(e => !e[1].omitClassProp).map(([k, v]) => {
return (
'desc' in v ? `
@@ -326,7 +338,7 @@ export default async function(writeToDist = true) {
propNames.length > 1 ? `props: ${data.name}Params = {}` :
`${propNames[0]}: ${data.properties[propNames[0]].type ?? typeMap[data.properties[propNames[0]].field]} = ${defValTS(firstProp)}`
: ''}) {
- super(ActionType.${data.name})${'properties' in data ? `
+ super(ActionType.${data.name}, {${Object.entries(data.meta).map(e => `${e[0]}:${toTSString(e[1])}`)}})${'properties' in data ? `
this.assign(${propNames.length > 1 ? 'props' : `{ ${propNames[0]} }`})` : ''}
}
}
diff --git a/build/docs.js b/build/docs.js
index 2545a98..389d1f8 100644
--- a/build/docs.js
+++ b/build/docs.js
@@ -19,7 +19,10 @@ await fs.rename('docs/functions', 'docs/funcs')
for await (const filePath of getFiles('docs')) {
if (filePath.endsWith('.html')) {
const content = await fs.readFile(filePath, 'utf-8')
- await fs.writeFile(filePath, content.replace(/href="((?:..\/)*)functions/g, 'href="$1funcs'))
+ await fs.writeFile(filePath, content
+ .replace(/href="((?:..\/)*)functions/g, 'href="$1funcs')
+ .replace(/<a href=".+?" class=".*?">(.+?)<\/a>/, '$1')
+ )
}
}
diff --git a/package-lock.json b/package-lock.json
index 89f5a4a..f035842 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@cccode/fxr",
- "version": "13.0.0",
+ "version": "14.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@cccode/fxr",
- "version": "13.0.0",
+ "version": "14.0.0",
"license": "Unlicense",
"devDependencies": {
"@types/node": "^22.0.0",
diff --git a/package.json b/package.json
index 0da4414..c13a342 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@cccode/fxr",
- "version": "13.0.0",
+ "version": "14.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",
diff --git a/src/actions/1.yml b/src/actions/1.yml
index c8ebf81..b955c02 100644
--- a/src/actions/1.yml
+++ b/src/actions/1.yml
@@ -1,6 +1,9 @@
type: 1
name: NodeAcceleration
slot: NodeMovement
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Controls the movement of the node. This is the most basic action for controlling the acceleration of nodes.
properties:
diff --git a/src/actions/10000.yml b/src/actions/10000.yml
index 4bfb7bc..6ed4914 100644
--- a/src/actions/10000.yml
+++ b/src/actions/10000.yml
@@ -1,6 +1,9 @@
type: 10000
name: GPUStandardParticle
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: false
desc: |
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.
@@ -32,36 +35,17 @@ properties:
Controls the shape of the particle emitter. See {@link EmitterShape} for more details.
unk_ds3_f1_5:
field: int
- emitterSizeX:
- field: float
- default: 1
+ emitterSize:
+ field: vec3
+ default: [1, 1, 1]
scale: true
desc: |
- The width of the emitter.
- emitterSizeY:
- field: float
- default: 1
- scale: true
- desc: |
- The height of the emitter.
- emitterSizeZ:
- field: float
- default: 1
- scale: true
- desc: |
- The depth of the emitter.
- emitterRotationX:
- field: float
- desc: |
- The rotation of the emitter around the X-axis.
- emitterRotationY:
- field: float
- desc: |
- The rotation of the emitter around the Y-axis.
- emitterRotationZ:
- field: float
+ The size of the emitter.
+ emitterRotation:
+ field: vec3
+ default: [0, 0, 0]
desc: |
- The rotation of the emitter around the Z-axis.
+ The rotation of the emitter.
unk_ds3_f1_12:
field: float
default: 1
@@ -157,228 +141,100 @@ properties:
field: int
unk_ds3_f1_33:
field: int
- particleOffsetX:
- field: float
- scale: true
- desc: |
- Particle position offset along the X-axis.
- see:
- - particleOffsetXMin
- - particleOffsetXMax
- particleOffsetY:
- field: float
+ particleOffset:
+ field: vec3
+ default: [0, 0, 0]
scale: true
desc: |
- Particle position offset along the Y-axis.
+ Particle position offset.
see:
- - particleOffsetYMin
- - particleOffsetYMax
- particleOffsetZ:
- field: float
- scale: true
- desc: |
- Particle position offset along the Z-axis.
- see:
- - particleOffsetZMin
- - particleOffsetZMax
- particleOffsetXMin:
- field: float
- scale: true
- desc: |
- Minimum particle position offset along the X-axis. A random value between this and {@link particleOffsetXMax} will be added to {@link particleOffsetX} to get the final position offset.
- particleOffsetYMin:
- field: float
- scale: true
- desc: |
- Minimum particle position offset along the Y-axis. A random value between this and {@link particleOffsetYMax} will be added to {@link particleOffsetY} to get the final position offset.
- particleOffsetZMin:
- field: float
- scale: true
- desc: |
- Minimum particle position offset along the Z-axis. A random value between this and {@link particleOffsetZMax} will be added to {@link particleOffsetZ} to get the final position offset.
- particleOffsetXMax:
- field: float
- scale: true
- desc: |
- Maximum particle position offset along the X-axis. A random value between this and {@link particleOffsetXMin} will be added to {@link particleOffsetX} to get the final position offset.
- particleOffsetYMax:
- field: float
- scale: true
- desc: |
- Maximum particle position offset along the Y-axis. A random value between this and {@link particleOffsetYMin} will be added to {@link particleOffsetY} to get the final position offset.
- particleOffsetZMax:
- field: float
+ - particleOffsetMin
+ - particleOffsetMax
+ particleOffsetMin:
+ field: vec3
+ default: [0, 0, 0]
scale: true
desc: |
- Maximum particle position offset along the Z-axis. A random value between this and {@link particleOffsetZMin} will be added to {@link particleOffsetZ} to get the final position offset.
- particleSpeedX:
- field: float
+ Minimum particle position offset. A random value between this and {@link particleOffsetMax} will be added to {@link particleOffset} to get the final position offset.
+ particleOffsetMax:
+ field: vec3
+ default: [0, 0, 0]
scale: true
- time: true
desc: |
- Particle speed along the X-axis.
- see:
- - particleSpeedXMin
- - particleSpeedXMax
- particleSpeedY:
- field: float
+ Maximum particle position offset. A random value between this and {@link particleOffsetMin} will be added to {@link particleOffset} to get the final position offset.
+ particleSpeed:
+ field: vec3
+ default: [0, 0, 0]
scale: true
time: true
desc: |
- Particle speed along the Y-axis.
+ Particle speed.
see:
- - particleSpeedYMin
- - particleSpeedYMax
- particleSpeedZ:
- field: float
- scale: true
- time: true
- desc: |
- Particle speed along the Z-axis.
- see:
- - particleSpeedZMin
- - particleSpeedZMax
- particleSpeedXMin:
- field: float
- scale: true
- time: true
- desc: |
- Minimum particle speed along the X-axis. A random value between this and {@link particleSpeedXMax} will be added to {@link particleSpeedX} to get the final speed.
- particleSpeedYMin:
- field: float
- scale: true
- time: true
- desc: |
- Minimum particle speed along the Y-axis. A random value between this and {@link particleSpeedYMax} will be added to {@link particleSpeedY} to get the final speed.
- particleSpeedZMin:
- field: float
- scale: true
- time: true
- desc: |
- Minimum particle speed along the Z-axis. A random value between this and {@link particleSpeedZMax} will be added to {@link particleSpeedZ} to get the final speed.
- particleSpeedXMax:
- field: float
- scale: true
- time: true
- desc: |
- Maximum particle speed along the X-axis. A random value between this and {@link particleSpeedXMin} will be added to {@link particleSpeedX} to get the final speed.
- particleSpeedYMax:
- field: float
+ - particleSpeedMin
+ - particleSpeedMax
+ particleSpeedMin:
+ field: vec3
+ default: [0, 0, 0]
scale: true
time: true
desc: |
- Maximum particle speed along the Y-axis. A random value between this and {@link particleSpeedYMin} will be added to {@link particleSpeedY} to get the final speed.
- particleSpeedZMax:
- field: float
+ Minimum particle speed. A random value between this and {@link particleSpeedMax} will be added to {@link particleSpeed} to get the final speed.
+ particleSpeedMax:
+ field: vec3
+ default: [0, 0, 0]
scale: true
time: true
desc: |
- Maximum particle speed along the Z-axis. A random value between this and {@link particleSpeedZMin} will be added to {@link particleSpeedZ} to get the final speed.
- particleAccelerationXMin:
- field: float
- scale: true
- time: sq
- desc: |
- Minimum particle acceleration along the X-axis. A random value between this and {@link particleAccelerationXMax} will be added to {@link particleAccelerationX} to get the final acceleration.
- particleAccelerationYMin:
- field: float
- scale: true
- time: sq
- desc: |
- Minimum particle acceleration along the Y-axis. A random value between this and {@link particleAccelerationYMax} will be added to {@link particleAccelerationY} to get the final acceleration.
- particleAccelerationZMin:
- field: float
- scale: true
- time: sq
- desc: |
- Minimum particle acceleration along the Z-axis. A random value between this and {@link particleAccelerationZMax} will be added to {@link particleAccelerationZ} to get the final acceleration.
- particleAccelerationXMax:
- field: float
+ Maximum particle speed. A random value between this and {@link particleSpeedMin} will be added to {@link particleSpeed} to get the final speed.
+ particleAccelerationMin:
+ field: vec3
+ default: [0, 0, 0]
scale: true
time: sq
desc: |
- Maximum particle acceleration along the X-axis. A random value between this and {@link particleAccelerationXMin} will be added to {@link particleAccelerationX} to get the final acceleration.
- particleAccelerationYMax:
- field: float
- scale: true
- time: sq
- desc: |
- Maximum particle acceleration along the Y-axis. A random value between this and {@link particleAccelerationYMin} will be added to {@link particleAccelerationY} to get the final acceleration.
- particleAccelerationZMax:
- field: float
- scale: true
- time: sq
- desc: |
- Maximum particle acceleration along the Z-axis. A random value between this and {@link particleAccelerationZMin} will be added to {@link particleAccelerationZ} to get the final acceleration.
- particleRotationVarianceX:
- field: float
- desc: |
- Maximum amount of random rotation each particle will have around the X-axis in degrees.
- particleRotationVarianceY:
- field: float
- desc: |
- Maximum amount of random rotation each particle will have around the Y-axis in degrees.
- particleRotationVarianceZ:
- field: float
- desc: |
- Maximum amount of random rotation each particle will have around the Z-axis in degrees.
- particleAngularSpeedVarianceX:
- field: float
- time: true
- desc: |
- Maximum amount of random angular speed each particle will have around the X-axis in degrees per second.
- particleAngularSpeedVarianceY:
- field: float
- time: true
- desc: |
- Maximum amount of random angular speed each particle will have around the Y-axis in degrees per second.
- particleAngularSpeedVarianceZ:
- field: float
- time: true
- desc: |
- Maximum amount of random angular speed each particle will have around the Z-axis in degrees per second.
- particleAngularAccelerationXMin:
- field: float
- time: sq
- desc: |
- Minimum amount of random angular acceleration each particle will have around the X-axis in degrees per second squared.
+ Minimum particle acceleration. A random value between this and {@link particleAccelerationMax} will be added to the three acceleration properties to get the final acceleration.
see:
- - particleAngularAccelerationXMax
- particleAngularAccelerationYMin:
- field: float
- time: sq
- desc: |
- Minimum amount of random angular acceleration each particle will have around the Y-axis in degrees per second squared.
- see:
- - particleAngularAccelerationYMax
- particleAngularAccelerationZMin:
- field: float
+ - particleAccelerationX
+ - particleAccelerationY
+ - particleAccelerationZ
+ particleAccelerationMax:
+ field: vec3
+ default: [0, 0, 0]
+ scale: true
time: sq
desc: |
- Minimum amount of random angular acceleration each particle will have around the Z-axis in degrees per second squared.
+ Maximum particle acceleration. A random value between this and {@link particleAccelerationMin} will be added to the three acceleration properties to get the final acceleration.
see:
- - particleAngularAccelerationZMax
- particleAngularAccelerationXMax:
- field: float
- time: sq
+ - particleAccelerationX
+ - particleAccelerationY
+ - particleAccelerationZ
+ particleRotationVariance:
+ field: vec3
+ default: [0, 0, 0]
+ desc: |
+ Maximum amount of random rotation for each particle in degrees.
+ particleAngularSpeedVariance:
+ field: vec3
+ default: [0, 0, 0]
+ time: true
desc: |
- Maximum amount of random angular acceleration each particle will have around the X-axis in degrees per second squared.
- see:
- - particleAngularAccelerationXMin
- particleAngularAccelerationYMax:
- field: float
+ Maximum amount of random angular speed for each particle in degrees per second.
+ particleAngularAccelerationMin:
+ field: vec3
+ default: [0, 0, 0]
time: sq
desc: |
- Maximum amount of random angular acceleration each particle will have around the Y-axis in degrees per second squared.
+ Minimum amount of random angular acceleration for each particle in degrees per second squared.
see:
- - particleAngularAccelerationYMin
- particleAngularAccelerationZMax:
- field: float
+ - particleAngularAccelerationMax
+ particleAngularAccelerationMax:
+ field: vec3
+ default: [0, 0, 0]
time: sq
desc: |
- Maximum amount of random angular acceleration each particle will have around the Z-axis in degrees per second squared.
+ Maximum amount of random angular acceleration for each particle in degrees per second squared.
see:
- - particleAngularAccelerationZMin
+ - particleAngularAccelerationMin
particleUniformScale:
field: bool
default: false
@@ -982,8 +838,8 @@ properties:
desc: |
Particle acceleration along the X-axis.
see:
- - particleAccelerationXMin
- - particleAccelerationXMax
+ - particleAccelerationMin
+ - particleAccelerationMax
particleAccelerationY:
type: ScalarValue
scale: true
@@ -991,8 +847,8 @@ properties:
desc: |
Particle acceleration along the Y-axis.
see:
- - particleAccelerationYMin
- - particleAccelerationYMax
+ - particleAccelerationMin
+ - particleAccelerationMax
particleAccelerationZ:
type: ScalarValue
scale: true
@@ -1000,8 +856,8 @@ properties:
desc: |
Particle acceleration along the Z-axis.
see:
- - particleAccelerationZMin
- - particleAccelerationZMax
+ - particleAccelerationMin
+ - particleAccelerationMax
unk_ds3_p1_7:
type: ScalarValue
unk_ds3_p1_8:
@@ -1012,8 +868,8 @@ properties:
desc: |
Angular acceleration for particles around the Z-axis in degrees per second squared.
see:
- - particleAngularAccelerationZMin
- - particleAngularAccelerationZMax
+ - particleAngularAccelerationMin
+ - particleAngularAccelerationMax
particleGrowthRateX:
type: ScalarValue
scale: true
@@ -1095,12 +951,12 @@ games:
- normalMap
- emitterShape
- unk_ds3_f1_5
- - emitterSizeX
- - emitterSizeY
- - emitterSizeZ
- - emitterRotationX
- - emitterRotationY
- - emitterRotationZ
+ - emitterSize
+ #
+ #
+ - emitterRotation
+ #
+ #
- unk_ds3_f1_12
- unk_ds3_f1_13
- unk_ds3_f1_14
@@ -1123,42 +979,42 @@ games:
- particleDuration
- unk_ds3_f1_32
- unk_ds3_f1_33
- - particleOffsetX
- - particleOffsetY
- - particleOffsetZ
- - particleOffsetXMin
- - particleOffsetYMin
- - particleOffsetZMin
- - particleOffsetXMax
- - particleOffsetYMax
- - particleOffsetZMax
- - particleSpeedX
- - particleSpeedY
- - particleSpeedZ
- - particleSpeedXMin
- - particleSpeedYMin
- - particleSpeedZMin
- - particleSpeedXMax
- - particleSpeedYMax
- - particleSpeedZMax
- - particleAccelerationXMin
- - particleAccelerationYMin
- - particleAccelerationZMin
- - particleAccelerationXMax
- - particleAccelerationYMax
- - particleAccelerationZMax
- - particleRotationVarianceX
- - particleRotationVarianceY
- - particleRotationVarianceZ
- - particleAngularSpeedVarianceX
- - particleAngularSpeedVarianceY
- - particleAngularSpeedVarianceZ
- - particleAngularAccelerationXMin
- - particleAngularAccelerationYMin
- - particleAngularAccelerationZMin
- - particleAngularAccelerationXMax
- - particleAngularAccelerationYMax
- - particleAngularAccelerationZMax
+ - particleOffset
+ #
+ #
+ - particleOffsetMin
+ #
+ #
+ - particleOffsetMax
+ #
+ #
+ - particleSpeed
+ #
+ #
+ - particleSpeedMin
+ #
+ #
+ - particleSpeedMax
+ #
+ #
+ - particleAccelerationMin
+ #
+ #
+ - particleAccelerationMax
+ #
+ #
+ - particleRotationVariance
+ #
+ #
+ - particleAngularSpeedVariance
+ #
+ #
+ - particleAngularAccelerationMin
+ #
+ #
+ - particleAngularAccelerationMax
+ #
+ #
- particleUniformScale
- particleSizeX
- particleSizeY
@@ -1319,12 +1175,12 @@ games:
- normalMap
- emitterShape
- unk_ds3_f1_5
- - emitterSizeX
- - emitterSizeY
- - emitterSizeZ
- - emitterRotationX
- - emitterRotationY
- - emitterRotationZ
+ - emitterSize
+ #
+ #
+ - emitterRotation
+ #
+ #
- unk_ds3_f1_12
- unk_ds3_f1_13
- unk_ds3_f1_14
@@ -1347,42 +1203,42 @@ games:
- particleDuration
- unk_ds3_f1_32
- unk_ds3_f1_33
- - particleOffsetX
- - particleOffsetY
- - particleOffsetZ
- - particleOffsetXMin
- - particleOffsetYMin
- - particleOffsetZMin
- - particleOffsetXMax
- - particleOffsetYMax
- - particleOffsetZMax
- - particleSpeedX
- - particleSpeedY
- - particleSpeedZ
- - particleSpeedXMin
- - particleSpeedYMin
- - particleSpeedZMin
- - particleSpeedXMax
- - particleSpeedYMax
- - particleSpeedZMax
- - particleAccelerationXMin
- - particleAccelerationYMin
- - particleAccelerationZMin
- - particleAccelerationXMax
- - particleAccelerationYMax
- - particleAccelerationZMax
- - particleRotationVarianceX
- - particleRotationVarianceY
- - particleRotationVarianceZ
- - particleAngularSpeedVarianceX
- - particleAngularSpeedVarianceY
- - particleAngularSpeedVarianceZ
- - particleAngularAccelerationXMin
- - particleAngularAccelerationYMin
- - particleAngularAccelerationZMin
- - particleAngularAccelerationXMax
- - particleAngularAccelerationYMax
- - particleAngularAccelerationZMax
+ - particleOffset
+ #
+ #
+ - particleOffsetMin
+ #
+ #
+ - particleOffsetMax
+ #
+ #
+ - particleSpeed
+ #
+ #
+ - particleSpeedMin
+ #
+ #
+ - particleSpeedMax
+ #
+ #
+ - particleAccelerationMin
+ #
+ #
+ - particleAccelerationMax
+ #
+ #
+ - particleRotationVariance
+ #
+ #
+ - particleAngularSpeedVariance
+ #
+ #
+ - particleAngularAccelerationMin
+ #
+ #
+ - particleAngularAccelerationMax
+ #
+ #
- particleUniformScale
- particleSizeX
- particleSizeY
@@ -1530,12 +1386,12 @@ games:
- normalMap
- emitterShape
- unk_ds3_f1_5
- - emitterSizeX
- - emitterSizeY
- - emitterSizeZ
- - emitterRotationX
- - emitterRotationY
- - emitterRotationZ
+ - emitterSize
+ #
+ #
+ - emitterRotation
+ #
+ #
- unk_ds3_f1_12
- unk_ds3_f1_13
- unk_ds3_f1_14
@@ -1558,42 +1414,42 @@ games:
- particleDuration
- unk_ds3_f1_32
- unk_ds3_f1_33
- - particleOffsetX
- - particleOffsetY
- - particleOffsetZ
- - particleOffsetXMin
- - particleOffsetYMin
- - particleOffsetZMin
- - particleOffsetXMax
- - particleOffsetYMax
- - particleOffsetZMax
- - particleSpeedX
- - particleSpeedY
- - particleSpeedZ
- - particleSpeedXMin
- - particleSpeedYMin
- - particleSpeedZMin
- - particleSpeedXMax
- - particleSpeedYMax
- - particleSpeedZMax
- - particleAccelerationXMin
- - particleAccelerationYMin
- - particleAccelerationZMin
- - particleAccelerationXMax
- - particleAccelerationYMax
- - particleAccelerationZMax
- - particleRotationVarianceX
- - particleRotationVarianceY
- - particleRotationVarianceZ
- - particleAngularSpeedVarianceX
- - particleAngularSpeedVarianceY
- - particleAngularSpeedVarianceZ
- - particleAngularAccelerationXMin
- - particleAngularAccelerationYMin
- - particleAngularAccelerationZMin
- - particleAngularAccelerationXMax
- - particleAngularAccelerationYMax
- - particleAngularAccelerationZMax
+ - particleOffset
+ #
+ #
+ - particleOffsetMin
+ #
+ #
+ - particleOffsetMax
+ #
+ #
+ - particleSpeed
+ #
+ #
+ - particleSpeedMin
+ #
+ #
+ - particleSpeedMax
+ #
+ #
+ - particleAccelerationMin
+ #
+ #
+ - particleAccelerationMax
+ #
+ #
+ - particleRotationVariance
+ #
+ #
+ - particleAngularSpeedVariance
+ #
+ #
+ - particleAngularAccelerationMin
+ #
+ #
+ - particleAngularAccelerationMax
+ #
+ #
- particleUniformScale
- particleSizeX
- particleSizeY
diff --git a/src/actions/10001.yml b/src/actions/10001.yml
index 4a64c7a..dab5416 100644
--- a/src/actions/10001.yml
+++ b/src/actions/10001.yml
@@ -1,6 +1,9 @@
type: 10001
name: GPUStandardCorrectParticle
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: false
desc: |
Very similar to {@link ActionType.GPUStandardParticle GPUStandardParticle}, with no known differences.
@@ -32,36 +35,17 @@ properties:
Controls the shape of the particle emitter. See {@link EmitterShape} for more details.
unk_ds3_f1_5:
field: int
- emitterSizeX:
- field: float
- default: 1
- scale: true
- desc: |
- The width of the emitter.
- emitterSizeY:
- field: float
- default: 1
+ emitterSize:
+ field: vec3
+ default: [1, 1, 1]
scale: true
desc: |
- The height of the emitter.
- emitterSizeZ:
- field: float
- default: 1
- scale: true
+ The size of the emitter.
+ emitterRotation:
+ field: vec3
+ default: [0, 0, 0]
desc: |
- The depth of the emitter.
- emitterRotationX:
- field: float
- desc: |
- The rotation of the emitter around the X-axis.
- emitterRotationY:
- field: float
- desc: |
- The rotation of the emitter around the Y-axis.
- emitterRotationZ:
- field: float
- desc: |
- The rotation of the emitter around the Z-axis.
+ The rotation of the emitter.
unk_ds3_f1_12:
field: float
default: 1
@@ -157,228 +141,100 @@ properties:
field: int
unk_ds3_f1_33:
field: int
- particleOffsetX:
- field: float
- scale: true
- desc: |
- Particle position offset along the X-axis.
- see:
- - particleOffsetXMin
- - particleOffsetXMax
- particleOffsetY:
- field: float
- scale: true
- desc: |
- Particle position offset along the Y-axis.
- see:
- - particleOffsetYMin
- - particleOffsetYMax
- particleOffsetZ:
- field: float
+ particleOffset:
+ field: vec3
+ default: [0, 0, 0]
scale: true
desc: |
- Particle position offset along the Z-axis.
+ Particle position offset.
see:
- - particleOffsetZMin
- - particleOffsetZMax
- particleOffsetXMin:
- field: float
- scale: true
- desc: |
- Minimum particle position offset along the X-axis. A random value between this and {@link particleOffsetXMax} will be added to {@link particleOffsetX} to get the final position offset.
- particleOffsetYMin:
- field: float
- scale: true
- desc: |
- Minimum particle position offset along the Y-axis. A random value between this and {@link particleOffsetYMax} will be added to {@link particleOffsetY} to get the final position offset.
- particleOffsetZMin:
- field: float
- scale: true
- desc: |
- Minimum particle position offset along the Z-axis. A random value between this and {@link particleOffsetZMax} will be added to {@link particleOffsetZ} to get the final position offset.
- particleOffsetXMax:
- field: float
- scale: true
- desc: |
- Maximum particle position offset along the X-axis. A random value between this and {@link particleOffsetXMin} will be added to {@link particleOffsetX} to get the final position offset.
- particleOffsetYMax:
- field: float
- scale: true
- desc: |
- Maximum particle position offset along the Y-axis. A random value between this and {@link particleOffsetYMin} will be added to {@link particleOffsetY} to get the final position offset.
- particleOffsetZMax:
- field: float
+ - particleOffsetMin
+ - particleOffsetMax
+ particleOffsetMin:
+ field: vec3
+ default: [0, 0, 0]
scale: true
desc: |
- Maximum particle position offset along the Z-axis. A random value between this and {@link particleOffsetZMin} will be added to {@link particleOffsetZ} to get the final position offset.
- particleSpeedX:
- field: float
+ Minimum particle position offset. A random value between this and {@link particleOffsetMax} will be added to {@link particleOffset} to get the final position offset.
+ particleOffsetMax:
+ field: vec3
+ default: [0, 0, 0]
scale: true
- time: true
desc: |
- Particle speed along the X-axis.
- see:
- - particleSpeedXMin
- - particleSpeedXMax
- particleSpeedY:
- field: float
+ Maximum particle position offset. A random value between this and {@link particleOffsetMin} will be added to {@link particleOffset} to get the final position offset.
+ particleSpeed:
+ field: vec3
+ default: [0, 0, 0]
scale: true
time: true
desc: |
- Particle speed along the Y-axis.
+ Particle speed.
see:
- - particleSpeedYMin
- - particleSpeedYMax
- particleSpeedZ:
- field: float
- scale: true
- time: true
- desc: |
- Particle speed along the Z-axis.
- see:
- - particleSpeedZMin
- - particleSpeedZMax
- particleSpeedXMin:
- field: float
- scale: true
- time: true
- desc: |
- Minimum particle speed along the X-axis. A random value between this and {@link particleSpeedXMax} will be added to {@link particleSpeedX} to get the final speed.
- particleSpeedYMin:
- field: float
- scale: true
- time: true
- desc: |
- Minimum particle speed along the Y-axis. A random value between this and {@link particleSpeedYMax} will be added to {@link particleSpeedY} to get the final speed.
- particleSpeedZMin:
- field: float
- scale: true
- time: true
- desc: |
- Minimum particle speed along the Z-axis. A random value between this and {@link particleSpeedZMax} will be added to {@link particleSpeedZ} to get the final speed.
- particleSpeedXMax:
- field: float
+ - particleSpeedMin
+ - particleSpeedMax
+ particleSpeedMin:
+ field: vec3
+ default: [0, 0, 0]
scale: true
time: true
desc: |
- Maximum particle speed along the X-axis. A random value between this and {@link particleSpeedXMin} will be added to {@link particleSpeedX} to get the final speed.
- particleSpeedYMax:
- field: float
- scale: true
- time: true
- desc: |
- Maximum particle speed along the Y-axis. A random value between this and {@link particleSpeedYMin} will be added to {@link particleSpeedY} to get the final speed.
- particleSpeedZMax:
- field: float
+ Minimum particle speed. A random value between this and {@link particleSpeedMax} will be added to {@link particleSpeed} to get the final speed.
+ particleSpeedMax:
+ field: vec3
+ default: [0, 0, 0]
scale: true
time: true
desc: |
- Maximum particle speed along the Z-axis. A random value between this and {@link particleSpeedZMin} will be added to {@link particleSpeedZ} to get the final speed.
- particleAccelerationXMin:
- field: float
- scale: true
- time: sq
- desc: |
- Minimum particle acceleration along the X-axis. A random value between this and {@link particleAccelerationXMax} will be added to {@link particleAccelerationX} to get the final acceleration.
- particleAccelerationYMin:
- field: float
- scale: true
- time: sq
- desc: |
- Minimum particle acceleration along the Y-axis. A random value between this and {@link particleAccelerationYMax} will be added to {@link particleAccelerationY} to get the final acceleration.
- particleAccelerationZMin:
- field: float
- scale: true
- time: sq
- desc: |
- Minimum particle acceleration along the Z-axis. A random value between this and {@link particleAccelerationZMax} will be added to {@link particleAccelerationZ} to get the final acceleration.
- particleAccelerationXMax:
- field: float
- scale: true
- time: sq
- desc: |
- Maximum particle acceleration along the X-axis. A random value between this and {@link particleAccelerationXMin} will be added to {@link particleAccelerationX} to get the final acceleration.
- particleAccelerationYMax:
- field: float
+ Maximum particle speed. A random value between this and {@link particleSpeedMin} will be added to {@link particleSpeed} to get the final speed.
+ particleAccelerationMin:
+ field: vec3
+ default: [0, 0, 0]
scale: true
time: sq
desc: |
- Maximum particle acceleration along the Y-axis. A random value between this and {@link particleAccelerationYMin} will be added to {@link particleAccelerationY} to get the final acceleration.
- particleAccelerationZMax:
- field: float
- scale: true
- time: sq
- desc: |
- Maximum particle acceleration along the Z-axis. A random value between this and {@link particleAccelerationZMin} will be added to {@link particleAccelerationZ} to get the final acceleration.
- particleRotationVarianceX:
- field: float
- desc: |
- Maximum amount of random rotation each particle will have around the X-axis in degrees.
- particleRotationVarianceY:
- field: float
- desc: |
- Maximum amount of random rotation each particle will have around the Y-axis in degrees.
- particleRotationVarianceZ:
- field: float
- desc: |
- Maximum amount of random rotation each particle will have around the Z-axis in degrees.
- particleAngularSpeedVarianceX:
- field: float
- time: true
- desc: |
- Maximum amount of random angular speed each particle will have around the X-axis in degrees per second.
- particleAngularSpeedVarianceY:
- field: float
- time: true
- desc: |
- Maximum amount of random angular speed each particle will have around the Y-axis in degrees per second.
- particleAngularSpeedVarianceZ:
- field: float
- time: true
- desc: |
- Maximum amount of random angular speed each particle will have around the Z-axis in degrees per second.
- particleAngularAccelerationXMin:
- field: float
- time: sq
- desc: |
- Minimum amount of random angular acceleration each particle will have around the X-axis in degrees per second squared.
- see:
- - particleAngularAccelerationXMax
- particleAngularAccelerationYMin:
- field: float
- time: sq
- desc: |
- Minimum amount of random angular acceleration each particle will have around the Y-axis in degrees per second squared.
+ Minimum particle acceleration. A random value between this and {@link particleAccelerationMax} will be added to the three acceleration properties to get the final acceleration.
see:
- - particleAngularAccelerationYMax
- particleAngularAccelerationZMin:
- field: float
+ - particleAccelerationX
+ - particleAccelerationY
+ - particleAccelerationZ
+ particleAccelerationMax:
+ field: vec3
+ default: [0, 0, 0]
+ scale: true
time: sq
desc: |
- Minimum amount of random angular acceleration each particle will have around the Z-axis in degrees per second squared.
+ Maximum particle acceleration. A random value between this and {@link particleAccelerationMin} will be added to the three acceleration properties to get the final acceleration.
see:
- - particleAngularAccelerationZMax
- particleAngularAccelerationXMax:
- field: float
- time: sq
+ - particleAccelerationX
+ - particleAccelerationY
+ - particleAccelerationZ
+ particleRotationVariance:
+ field: vec3
+ default: [0, 0, 0]
+ desc: |
+ Maximum amount of random rotation for each particle in degrees.
+ particleAngularSpeedVariance:
+ field: vec3
+ default: [0, 0, 0]
+ time: true
desc: |
- Maximum amount of random angular acceleration each particle will have around the X-axis in degrees per second squared.
- see:
- - particleAngularAccelerationXMin
- particleAngularAccelerationYMax:
- field: float
+ Maximum amount of random angular speed for each particle in degrees per second.
+ particleAngularAccelerationMin:
+ field: vec3
+ default: [0, 0, 0]
time: sq
desc: |
- Maximum amount of random angular acceleration each particle will have around the Y-axis in degrees per second squared.
+ Minimum amount of random angular acceleration for each particle in degrees per second squared.
see:
- - particleAngularAccelerationYMin
- particleAngularAccelerationZMax:
- field: float
+ - particleAngularAccelerationMax
+ particleAngularAccelerationMax:
+ field: vec3
+ default: [0, 0, 0]
time: sq
desc: |
- Maximum amount of random angular acceleration each particle will have around the Z-axis in degrees per second squared.
+ Maximum amount of random angular acceleration for each particle in degrees per second squared.
see:
- - particleAngularAccelerationZMin
+ - particleAngularAccelerationMin
particleUniformScale:
field: bool
default: false
@@ -978,8 +834,8 @@ properties:
desc: |
Particle acceleration along the X-axis.
see:
- - particleAccelerationXMin
- - particleAccelerationXMax
+ - particleAccelerationMin
+ - particleAccelerationMax
particleAccelerationY:
type: ScalarValue
scale: true
@@ -987,8 +843,8 @@ properties:
desc: |
Particle acceleration along the Y-axis.
see:
- - particleAccelerationYMin
- - particleAccelerationYMax
+ - particleAccelerationMin
+ - particleAccelerationMax
particleAccelerationZ:
type: ScalarValue
scale: true
@@ -996,8 +852,8 @@ properties:
desc: |
Particle acceleration along the Z-axis.
see:
- - particleAccelerationZMin
- - particleAccelerationZMax
+ - particleAccelerationMin
+ - particleAccelerationMax
unk_ds3_p1_7:
type: ScalarValue
unk_ds3_p1_8:
@@ -1008,8 +864,8 @@ properties:
desc: |
Angular acceleration for particles around the Z-axis in degrees per second squared.
see:
- - particleAngularAccelerationZMin
- - particleAngularAccelerationZMax
+ - particleAngularAccelerationMin
+ - particleAngularAccelerationMax
particleGrowthRateX:
type: ScalarValue
scale: true
@@ -1093,12 +949,12 @@ games:
- normalMap
- emitterShape
- unk_ds3_f1_5
- - emitterSizeX
- - emitterSizeY
- - emitterSizeZ
- - emitterRotationX
- - emitterRotationY
- - emitterRotationZ
+ - emitterSize
+ #
+ #
+ - emitterRotation
+ #
+ #
- unk_ds3_f1_12
- unk_ds3_f1_13
- unk_ds3_f1_14
@@ -1121,42 +977,42 @@ games:
- particleDuration
- unk_ds3_f1_32
- unk_ds3_f1_33
- - particleOffsetX
- - particleOffsetY
- - particleOffsetZ
- - particleOffsetXMin
- - particleOffsetYMin
- - particleOffsetZMin
- - particleOffsetXMax
- - particleOffsetYMax
- - particleOffsetZMax
- - particleSpeedX
- - particleSpeedY
- - particleSpeedZ
- - particleSpeedXMin
- - particleSpeedYMin
- - particleSpeedZMin
- - particleSpeedXMax
- - particleSpeedYMax
- - particleSpeedZMax
- - particleAccelerationXMin
- - particleAccelerationYMin
- - particleAccelerationZMin
- - particleAccelerationXMax
- - particleAccelerationYMax
- - particleAccelerationZMax
- - particleRotationVarianceX
- - particleRotationVarianceY
- - particleRotationVarianceZ
- - particleAngularSpeedVarianceX
- - particleAngularSpeedVarianceY
- - particleAngularSpeedVarianceZ
- - particleAngularAccelerationXMin
- - particleAngularAccelerationYMin
- - particleAngularAccelerationZMin
- - particleAngularAccelerationXMax
- - particleAngularAccelerationYMax
- - particleAngularAccelerationZMax
+ - particleOffset
+ #
+ #
+ - particleOffsetMin
+ #
+ #
+ - particleOffsetMax
+ #
+ #
+ - particleSpeed
+ #
+ #
+ - particleSpeedMin
+ #
+ #
+ - particleSpeedMax
+ #
+ #
+ - particleAccelerationMin
+ #
+ #
+ - particleAccelerationMax
+ #
+ #
+ - particleRotationVariance
+ #
+ #
+ - particleAngularSpeedVariance
+ #
+ #
+ - particleAngularAccelerationMin
+ #
+ #
+ - particleAngularAccelerationMax
+ #
+ #
- particleUniformScale
- particleSizeX
- particleSizeY
diff --git a/src/actions/10003.yml b/src/actions/10003.yml
index 043cec3..f586769 100644
--- a/src/actions/10003.yml
+++ b/src/actions/10003.yml
@@ -1,6 +1,9 @@
type: 10003
name: LightShaft
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: false
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:
diff --git a/src/actions/10008.yml b/src/actions/10008.yml
index 6fc9b4b..cf60a1f 100644
--- a/src/actions/10008.yml
+++ b/src/actions/10008.yml
@@ -1,6 +1,9 @@
type: 10008
name: GPUSparkParticle
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: false
desc: |
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}.
@@ -25,37 +28,17 @@ properties:
Controls the shape of the particle emitter. See {@link EmitterShape} for more details.
unk_ac6_f1_1:
field: int
- default: 0
- emitterSizeX:
- field: float
- default: 1
- scale: true
- desc: |
- The width of the emitter.
- emitterSizeY:
- field: float
- default: 1
- scale: true
- desc: |
- The height of the emitter.
- emitterSizeZ:
- field: float
- default: 1
+ emitterSize:
+ field: vec3
+ default: [1, 1, 1]
scale: true
desc: |
- The depth of the emitter.
- emitterRotationX:
- field: float
+ The size of the emitter.
+ emitterRotation:
+ field: vec3
+ default: [0, 0, 0]
desc: |
- The rotation of the emitter around the X-axis.
- emitterRotationY:
- field: float
- desc: |
- The rotation of the emitter around the Y-axis.
- emitterRotationZ:
- field: float
- desc: |
- The rotation of the emitter around the Z-axis.
+ The rotation of the emitter.
unk_ac6_f1_9:
field: float
default: 1
@@ -154,104 +137,47 @@ properties:
field: int
unk_ac6_f1_29:
field: int
- particleOffsetX:
- field: float
- scale: true
- desc: |
- Particle position offset along the X-axis.
- see:
- - particleOffsetXMin
- - particleOffsetXMax
- particleOffsetY:
- field: float
+ particleOffset:
+ field: vec3
+ default: [0, 0, 0]
scale: true
desc: |
- Particle position offset along the Y-axis.
+ Particle position offset.
see:
- - particleOffsetYMin
- - particleOffsetYMax
- particleOffsetZ:
- field: float
- scale: true
- desc: |
- Particle position offset along the Z-axis.
- see:
- - particleOffsetZMin
- - particleOffsetZMax
- particleOffsetXMin:
- field: float
- scale: true
- desc: |
- Minimum particle position offset along the X-axis. A random value between this and {@link particleOffsetXMax} will be added to {@link particleOffsetX} to get the final position offset.
- particleOffsetYMin:
- field: float
- scale: true
- desc: |
- Minimum particle position offset along the Y-axis. A random value between this and {@link particleOffsetYMax} will be added to {@link particleOffsetY} to get the final position offset.
- particleOffsetZMin:
- field: float
- scale: true
- desc: |
- Minimum particle position offset along the Z-axis. A random value between this and {@link particleOffsetZMax} will be added to {@link particleOffsetZ} to get the final position offset.
- particleOffsetXMax:
- field: float
- scale: true
- desc: |
- Maximum particle position offset along the X-axis. A random value between this and {@link particleOffsetXMin} will be added to {@link particleOffsetX} to get the final position offset.
- particleOffsetYMax:
- field: float
+ - particleOffsetMin
+ - particleOffsetMax
+ particleOffsetMin:
+ field: vec3
+ default: [0, 0, 0]
scale: true
desc: |
- Maximum particle position offset along the Y-axis. A random value between this and {@link particleOffsetYMin} will be added to {@link particleOffsetY} to get the final position offset.
- particleOffsetZMax:
- field: float
+ Minimum particle position offset. A random value between this and {@link particleOffsetMax} will be added to {@link particleOffset} to get the final position offset.
+ particleOffsetMax:
+ field: vec3
+ default: [0, 0, 0]
scale: true
desc: |
- Maximum particle position offset along the Z-axis. A random value between this and {@link particleOffsetZMin} will be added to {@link particleOffsetZ} to get the final position offset.
+ Maximum particle position offset. A random value between this and {@link particleOffsetMin} will be added to {@link particleOffset} to get the final position offset.
unk_ac6_f1_39:
field: int
- particleSpeedXMin:
- field: float
- default: -0.01
- scale: true
- time: true
- desc: |
- Minimum particle speed along the X-axis.
- particleSpeedYMin:
- field: float
- default: -0.01
- scale: true
- time: true
- desc: |
- Minimum particle speed along the Y-axis.
- particleSpeedZMin:
- field: float
- default: -0.01
- scale: true
- time: true
- desc: |
- Minimum particle speed along the Z-axis.
- particleSpeedXMax:
- field: float
- default: 0.01
- scale: true
- time: true
- desc: |
- Maximum particle speed along the X-axis.
- particleSpeedYMax:
- field: float
- default: 0.01
+ particleSpeedMin:
+ field: vec3
+ default: [-0.01, -0.01, -0.01]
scale: true
time: true
desc: |
- Maximum particle speed along the Y-axis.
- particleSpeedZMax:
- field: float
- default: 0.01
+ Minimum particle speed.
+ see:
+ - particleSpeedMax
+ particleSpeedMax:
+ field: vec3
+ default: [0.01, 0.01, 0.01]
scale: true
time: true
desc: |
- Maximum particle speed along the Z-axis.
+ Maximum particle speed.
+ see:
+ - particleSpeedMin
rgbMultiplier:
field: float
default: 1
@@ -275,7 +201,7 @@ properties:
blendMode:
type: BlendMode
field: int
- default: BlendMode.Normal
+ default: BlendMode.Add
desc: |
Blend mode.
unk_ac6_f1_57:
@@ -662,12 +588,8 @@ properties:
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 particleSpeedXMin}
- - {@link particleSpeedYMin}
- - {@link particleSpeedZMin}
- - {@link particleSpeedXMax}
- - {@link particleSpeedYMax}
- - {@link particleSpeedZMax}
+ - {@link particleSpeedMin}
+ - {@link particleSpeedMax}
unk_ac6_p1_11:
type: ScalarValue
particleGravity:
@@ -679,12 +601,8 @@ properties:
Downwards acceleration for particles.
This requires any of the following fields to have a non-zero value:
- - {@link particleSpeedXMin}
- - {@link particleSpeedYMin}
- - {@link particleSpeedZMin}
- - {@link particleSpeedXMax}
- - {@link particleSpeedYMax}
- - {@link particleSpeedZMax}
+ - {@link particleSpeedMin}
+ - {@link particleSpeedMax}
unk_ac6_p1_13:
type: ScalarValue
unk_ac6_p2_0:
@@ -714,12 +632,12 @@ games:
- texture
- emitterShape
- unk_ac6_f1_1
- - emitterSizeX
- - emitterSizeY
- - emitterSizeZ
- - emitterRotationX
- - emitterRotationY
- - emitterRotationZ
+ - emitterSize
+ #
+ #
+ - emitterRotation
+ #
+ #
- unk_ac6_f1_9
- unk_ac6_f1_10
- unk_ac6_f1_11
@@ -741,22 +659,22 @@ games:
- particleDuration
- unk_ac6_f1_28
- unk_ac6_f1_29
- - particleOffsetX
- - particleOffsetY
- - particleOffsetZ
- - particleOffsetXMin
- - particleOffsetYMin
- - particleOffsetZMin
- - particleOffsetXMax
- - particleOffsetYMax
- - particleOffsetZMax
+ - particleOffset
+ #
+ #
+ - particleOffsetMin
+ #
+ #
+ - particleOffsetMax
+ #
+ #
- unk_ac6_f1_39
- - particleSpeedXMin
- - particleSpeedYMin
- - particleSpeedZMin
- - particleSpeedXMax
- - particleSpeedYMax
- - particleSpeedZMax
+ - particleSpeedMin
+ #
+ #
+ - particleSpeedMax
+ #
+ #
- rgbMultiplier
- alphaMultiplier
- colorMin
diff --git a/src/actions/10009.yml b/src/actions/10009.yml
index 926f9ee..3b29341 100644
--- a/src/actions/10009.yml
+++ b/src/actions/10009.yml
@@ -1,6 +1,9 @@
type: 10009
name: GPUSparkCorrectParticle
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: false
desc: |
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.
@@ -26,37 +29,17 @@ properties:
Controls the shape of the particle emitter. See {@link EmitterShape} for more details.
unk_ac6_f1_1:
field: int
- default: 0
- emitterSizeX:
- field: float
- default: 1
- scale: true
- desc: |
- The width of the emitter.
- emitterSizeY:
- field: float
- default: 1
- scale: true
- desc: |
- The height of the emitter.
- emitterSizeZ:
- field: float
- default: 1
+ emitterSize:
+ field: vec3
+ default: [1, 1, 1]
scale: true
desc: |
- The depth of the emitter.
- emitterRotationX:
- field: float
+ The size of the emitter.
+ emitterRotation:
+ field: vec3
+ default: [0, 0, 0]
desc: |
- The rotation of the emitter around the X-axis.
- emitterRotationY:
- field: float
- desc: |
- The rotation of the emitter around the Y-axis.
- emitterRotationZ:
- field: float
- desc: |
- The rotation of the emitter around the Z-axis.
+ The rotation of the emitter.
unk_ac6_f1_9:
field: float
default: 1
@@ -155,104 +138,47 @@ properties:
field: int
unk_ac6_f1_29:
field: int
- particleOffsetX:
- field: float
- scale: true
- desc: |
- Particle position offset along the X-axis.
- see:
- - particleOffsetXMin
- - particleOffsetXMax
- particleOffsetY:
- field: float
+ particleOffset:
+ field: vec3
+ default: [0, 0, 0]
scale: true
desc: |
- Particle position offset along the Y-axis.
+ Particle position offset.
see:
- - particleOffsetYMin
- - particleOffsetYMax
- particleOffsetZ:
- field: float
- scale: true
- desc: |
- Particle position offset along the Z-axis.
- see:
- - particleOffsetZMin
- - particleOffsetZMax
- particleOffsetXMin:
- field: float
- scale: true
- desc: |
- Minimum particle position offset along the X-axis. A random value between this and {@link particleOffsetXMax} will be added to {@link particleOffsetX} to get the final position offset.
- particleOffsetYMin:
- field: float
- scale: true
- desc: |
- Minimum particle position offset along the Y-axis. A random value between this and {@link particleOffsetYMax} will be added to {@link particleOffsetY} to get the final position offset.
- particleOffsetZMin:
- field: float
- scale: true
- desc: |
- Minimum particle position offset along the Z-axis. A random value between this and {@link particleOffsetZMax} will be added to {@link particleOffsetZ} to get the final position offset.
- particleOffsetXMax:
- field: float
- scale: true
- desc: |
- Maximum particle position offset along the X-axis. A random value between this and {@link particleOffsetXMin} will be added to {@link particleOffsetX} to get the final position offset.
- particleOffsetYMax:
- field: float
+ - particleOffsetMin
+ - particleOffsetMax
+ particleOffsetMin:
+ field: vec3
+ default: [0, 0, 0]
scale: true
desc: |
- Maximum particle position offset along the Y-axis. A random value between this and {@link particleOffsetYMin} will be added to {@link particleOffsetY} to get the final position offset.
- particleOffsetZMax:
- field: float
+ Minimum particle position offset. A random value between this and {@link particleOffsetMax} will be added to {@link particleOffset} to get the final position offset.
+ particleOffsetMax:
+ field: vec3
+ default: [0, 0, 0]
scale: true
desc: |
- Maximum particle position offset along the Z-axis. A random value between this and {@link particleOffsetZMin} will be added to {@link particleOffsetZ} to get the final position offset.
+ Maximum particle position offset. A random value between this and {@link particleOffsetMin} will be added to {@link particleOffset} to get the final position offset.
unk_ac6_f1_39:
field: int
- particleSpeedXMin:
- field: float
- default: -0.01
- scale: true
- time: true
- desc: |
- Minimum particle speed along the X-axis.
- particleSpeedYMin:
- field: float
- default: -0.01
- scale: true
- time: true
- desc: |
- Minimum particle speed along the Y-axis.
- particleSpeedZMin:
- field: float
- default: -0.01
- scale: true
- time: true
- desc: |
- Minimum particle speed along the Z-axis.
- particleSpeedXMax:
- field: float
- default: 0.01
- scale: true
- time: true
- desc: |
- Maximum particle speed along the X-axis.
- particleSpeedYMax:
- field: float
- default: 0.01
+ particleSpeedMin:
+ field: vec3
+ default: [-0.01, -0.01, -0.01]
scale: true
time: true
desc: |
- Maximum particle speed along the Y-axis.
- particleSpeedZMax:
- field: float
- default: 0.01
+ Minimum particle speed.
+ see:
+ - particleSpeedMax
+ particleSpeedMax:
+ field: vec3
+ default: [0.01, 0.01, 0.01]
scale: true
time: true
desc: |
- Maximum particle speed along the Z-axis.
+ Maximum particle speed.
+ see:
+ - particleSpeedMin
rgbMultiplier:
field: float
default: 1
@@ -276,7 +202,7 @@ properties:
blendMode:
type: BlendMode
field: int
- default: BlendMode.Normal
+ default: BlendMode.Add
desc: |
Blend mode.
unk_ac6_f1_57:
@@ -663,12 +589,8 @@ properties:
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 particleSpeedXMin}
- - {@link particleSpeedYMin}
- - {@link particleSpeedZMin}
- - {@link particleSpeedXMax}
- - {@link particleSpeedYMax}
- - {@link particleSpeedZMax}
+ - {@link particleSpeedMin}
+ - {@link particleSpeedMax}
unk_ac6_p1_11:
type: ScalarValue
particleGravity:
@@ -680,12 +602,8 @@ properties:
Downwards acceleration for particles.
This requires any of the following fields to have a non-zero value:
- - {@link particleSpeedXMin}
- - {@link particleSpeedYMin}
- - {@link particleSpeedZMin}
- - {@link particleSpeedXMax}
- - {@link particleSpeedYMax}
- - {@link particleSpeedZMax}
+ - {@link particleSpeedMin}
+ - {@link particleSpeedMax}
unk_ac6_p1_13:
type: ScalarValue
unk_ac6_p2_0:
@@ -714,12 +632,12 @@ games:
- texture
- emitterShape
- unk_ac6_f1_1
- - emitterSizeX
- - emitterSizeY
- - emitterSizeZ
- - emitterRotationX
- - emitterRotationY
- - emitterRotationZ
+ - emitterSize
+ #
+ #
+ - emitterRotation
+ #
+ #
- unk_ac6_f1_9
- unk_ac6_f1_10
- unk_ac6_f1_11
@@ -741,22 +659,22 @@ games:
- particleDuration
- unk_ac6_f1_28
- unk_ac6_f1_29
- - particleOffsetX
- - particleOffsetY
- - particleOffsetZ
- - particleOffsetXMin
- - particleOffsetYMin
- - particleOffsetZMin
- - particleOffsetXMax
- - particleOffsetYMax
- - particleOffsetZMax
+ - particleOffset
+ #
+ #
+ - particleOffsetMin
+ #
+ #
+ - particleOffsetMax
+ #
+ #
- unk_ac6_f1_39
- - particleSpeedXMin
- - particleSpeedYMin
- - particleSpeedZMin
- - particleSpeedXMax
- - particleSpeedYMax
- - particleSpeedZMax
+ - particleSpeedMin
+ #
+ #
+ - particleSpeedMax
+ #
+ #
- rgbMultiplier
- alphaMultiplier
- colorMin
diff --git a/src/actions/10012.yml b/src/actions/10012.yml
index 5d67e7e..68726be 100644
--- a/src/actions/10012.yml
+++ b/src/actions/10012.yml
@@ -1,6 +1,9 @@
type: 10012
name: DynamicTracer
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: true
desc: |
Creates a trail behind moving effects.
diff --git a/src/actions/10013.yml b/src/actions/10013.yml
index a4ce4cb..c3b2582 100644
--- a/src/actions/10013.yml
+++ b/src/actions/10013.yml
@@ -1,6 +1,9 @@
type: 10013
name: WaterInteraction
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: false
desc: |
Simulates an interaction with water, allowing effects to create ripples in nearby water. The interaction basically pushes water in a shape controlled by a texture down to a given depth and holds it there for a duration before releasing it.
properties:
diff --git a/src/actions/10014.yml b/src/actions/10014.yml
index 70604b6..de6e3cd 100644
--- a/src/actions/10014.yml
+++ b/src/actions/10014.yml
@@ -1,6 +1,9 @@
type: 10014
name: LensFlare
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: false
desc: |
Creates lens flares with up to 4 textured layers with different colors and sizes.
properties:
diff --git a/src/actions/10015.yml b/src/actions/10015.yml
index 7e2760d..caa8649 100644
--- a/src/actions/10015.yml
+++ b/src/actions/10015.yml
@@ -1,6 +1,9 @@
type: 10015
name: RichModel
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: true
desc: |
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.
diff --git a/src/actions/10100.yml b/src/actions/10100.yml
index 3837a7b..ecad9b0 100644
--- a/src/actions/10100.yml
+++ b/src/actions/10100.yml
@@ -1,6 +1,9 @@
type: 10100
name: Unk10100
slot: Unknown10100
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Unknown root node action.
properties:
diff --git a/src/actions/10200.yml b/src/actions/10200.yml
index fe9f7a4..cbaaaf5 100644
--- a/src/actions/10200.yml
+++ b/src/actions/10200.yml
@@ -1,6 +1,9 @@
type: 10200
name: CancelForce
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: false
desc: |
Cancels all forces in a volume. This includes wind from weather, and forces from the following actions:
- {@link ActionType.WindForce WindForce}
@@ -21,7 +24,7 @@ properties:
|-|-|-|
| {@link ForceVolumeShape.Boundless Boundless} | *n/a* | *n/a* |
| {@link ForceVolumeShape.Sphere Sphere} | {@link sphereRadius} | Center of the sphere |
- | {@link ForceVolumeShape.Box Box} | {@link boxSizeX}, {@link boxSizeY}, {@link boxSizeZ} | Center of the box |
+ | {@link ForceVolumeShape.Box Box} | {@link boxSize} | Center of the box |
| {@link ForceVolumeShape.Cylinder Cylinder} | {@link cylinderHeight}, {@link cylinderRadius} | Center of the cylinder |
| {@link ForceVolumeShape.SquarePrism SquarePrism} | {@link squarePrismHeight}, {@link squarePrismApothem} | Center of the base of the prism |
sphereRadius:
@@ -32,33 +35,14 @@ properties:
The radius of the {@link ForceVolumeShape.Sphere sphere} volume.
see:
- shape
- boxSizeX:
- field: float
- scale: true
- desc: |
- The width of the {@link ForceVolumeShape.Box box} volume.
- see:
- - shape
- - boxSizeY
- - boxSizeZ
- boxSizeY:
- field: float
- scale: true
- desc: |
- The height of the {@link ForceVolumeShape.Box box} volume.
- see:
- - shape
- - boxSizeX
- - boxSizeZ
- boxSizeZ:
- field: float
+ boxSize:
+ field: vec3
+ default: [0, 0, 0]
scale: true
desc: |
- The depth of the {@link ForceVolumeShape.Box box} volume.
+ The size of the {@link ForceVolumeShape.Box box} volume.
see:
- shape
- - boxSizeX
- - boxSizeY
cylinderHeight:
field: float
scale: true
@@ -96,9 +80,9 @@ games:
fields1:
- shape
- sphereRadius
- - boxSizeX
- - boxSizeY
- - boxSizeZ
+ - boxSize
+ #
+ #
- cylinderHeight
- cylinderRadius
- squarePrismHeight
diff --git a/src/actions/10300.yml b/src/actions/10300.yml
index 4ab70e7..5673c71 100644
--- a/src/actions/10300.yml
+++ b/src/actions/10300.yml
@@ -1,6 +1,9 @@
type: 10300
name: WindForce
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: false
desc: |
Creates a directional force in a volume, which is most often useful for creating wind effects. The direction of the force is based on the direction of the node.
@@ -29,7 +32,7 @@ properties:
|-|-|-|
| {@link ForceVolumeShape.Boundless Boundless} | *n/a* | *n/a* |
| {@link ForceVolumeShape.Sphere Sphere} | {@link sphereRadius} | Center of the sphere |
- | {@link ForceVolumeShape.Box Box} | {@link boxSizeX}, {@link boxSizeY}, {@link boxSizeZ} | Center of the box |
+ | {@link ForceVolumeShape.Box Box} | {@link boxSize} | Center of the box |
| {@link ForceVolumeShape.Cylinder Cylinder} | {@link cylinderHeight}, {@link cylinderRadius} | Center of the cylinder |
| {@link ForceVolumeShape.SquarePrism SquarePrism} | {@link squarePrismHeight}, {@link squarePrismApothem} | Center of the base of the prism |
sphereRadius:
@@ -40,33 +43,14 @@ properties:
The radius of the {@link ForceVolumeShape.Sphere sphere} where the force is active.
see:
- shape
- boxSizeX:
- field: float
- scale: true
- desc: |
- The width of the {@link ForceVolumeShape.Box box} where the force is active.
- see:
- - shape
- - boxSizeY
- - boxSizeZ
- boxSizeY:
- field: float
- scale: true
- desc: |
- The height of the {@link ForceVolumeShape.Box box} where the force is active.
- see:
- - shape
- - boxSizeX
- - boxSizeZ
- boxSizeZ:
- field: float
+ boxSize:
+ field: vec3
+ default: [0, 0, 0]
scale: true
desc: |
- The depth of the {@link ForceVolumeShape.Box box} where the force is active.
+ The size of the {@link ForceVolumeShape.Box box} where the force is active.
see:
- shape
- - boxSizeX
- - boxSizeY
cylinderHeight:
field: float
scale: true
@@ -264,9 +248,9 @@ games:
fields1:
- shape
- sphereRadius
- - boxSizeX
- - boxSizeY
- - boxSizeZ
+ - boxSize
+ #
+ #
- cylinderHeight
- cylinderRadius
- squarePrismHeight
@@ -320,9 +304,9 @@ games:
fields1:
- shape
- sphereRadius
- - boxSizeX
- - boxSizeY
- - boxSizeZ
+ - boxSize
+ #
+ #
- cylinderHeight
- cylinderRadius
- squarePrismHeight
diff --git a/src/actions/10301.yml b/src/actions/10301.yml
index 39b4bab..3a2ae0d 100644
--- a/src/actions/10301.yml
+++ b/src/actions/10301.yml
@@ -1,6 +1,9 @@
type: 10301
name: GravityForce
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: false
desc: |
Creates a radial force in a volume. This pulls things towards itself, or pushes away if the force is negative.
@@ -29,7 +32,7 @@ properties:
|-|-|-|-|
| {@link ForceVolumeShape.Boundless Boundless} | *n/a* | *n/a* | Node position |
| {@link ForceVolumeShape.Sphere Sphere} | {@link sphereRadius} | Center of the sphere | Center of the sphere |
- | {@link ForceVolumeShape.Box Box} | {@link boxSizeX}, {@link boxSizeY}, {@link boxSizeZ} | Center of the box | Center of the box |
+ | {@link ForceVolumeShape.Box Box} | {@link boxSize} | Center of the box | Center of the box |
| {@link ForceVolumeShape.Cylinder Cylinder} | {@link cylinderHeight}, {@link cylinderRadius} | Slightly +Z of the center of the cylinder? | Slightly +Z of the origin? |
| {@link ForceVolumeShape.SquarePrism SquarePrism} | {@link squarePrismHeight}, {@link squarePrismApothem} | Center of the base of the prism | Center of the prism |
sphereRadius:
@@ -40,33 +43,14 @@ properties:
The radius of the {@link ForceVolumeShape.Sphere sphere} where the force is active.
see:
- shape
- boxSizeX:
- field: float
- scale: true
- desc: |
- The width of the {@link ForceVolumeShape.Box box} where the force is active.
- see:
- - shape
- - boxSizeY
- - boxSizeZ
- boxSizeY:
- field: float
- scale: true
- desc: |
- The height of the {@link ForceVolumeShape.Box box} where the force is active.
- see:
- - shape
- - boxSizeX
- - boxSizeZ
- boxSizeZ:
- field: float
+ boxSize:
+ field: vec3
+ default: [0, 0, 0]
scale: true
desc: |
- The depth of the {@link ForceVolumeShape.Box box} where the force is active.
+ The size of the {@link ForceVolumeShape.Box box} where the force is active.
see:
- shape
- - boxSizeX
- - boxSizeY
cylinderHeight:
field: float
scale: true
@@ -199,9 +183,9 @@ games:
fields1:
- shape
- sphereRadius
- - boxSizeX
- - boxSizeY
- - boxSizeZ
+ - boxSize
+ #
+ #
- cylinderHeight
- cylinderRadius
- squarePrismHeight
diff --git a/src/actions/10302.yml b/src/actions/10302.yml
index c8cdeb3..d38de99 100644
--- a/src/actions/10302.yml
+++ b/src/actions/10302.yml
@@ -1,6 +1,9 @@
type: 10302
name: ForceCollision
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: false
desc: |
Controls the volume used to detect whether or not the node is inside a force volume.
@@ -18,9 +21,9 @@ properties:
|-|-|
| {@link ForceVolumeShape.Boundless Boundless} | *n/a* |
| {@link ForceVolumeShape.Sphere Sphere} | {@link sphereRadius} |
- | {@link ForceVolumeShape.Box Box} | {@link boxSizeX}, {@link boxSizeY}, {@link boxSizeZ} |
+ | {@link ForceVolumeShape.Box Box} | {@link boxSize} |
| {@link ForceVolumeShape.Cylinder Cylinder} | {@link cylinderHeight}, {@link cylinderRadius} |
-
+
**Note**: The {@link ForceVolumeShape.SquarePrism SquarePrism} shape is not valid for this action.
sphereRadius:
field: float
@@ -30,33 +33,14 @@ properties:
The radius of the {@link ForceVolumeShape.Sphere sphere} volume.
see:
- shape
- boxSizeX:
- field: float
- scale: true
- desc: |
- The width of the {@link ForceVolumeShape.Box box} volume.
- see:
- - shape
- - boxSizeY
- - boxSizeZ
- boxSizeY:
- field: float
- scale: true
- desc: |
- The height of the {@link ForceVolumeShape.Box box} volume.
- see:
- - shape
- - boxSizeX
- - boxSizeZ
- boxSizeZ:
- field: float
+ boxSize:
+ field: vec3
+ default: [0, 0, 0]
scale: true
desc: |
- The depth of the {@link ForceVolumeShape.Box box} volume.
+ The size of the {@link ForceVolumeShape.Box box} volume.
see:
- shape
- - boxSizeX
- - boxSizeY
cylinderHeight:
field: float
scale: true
@@ -78,9 +62,9 @@ games:
fields1:
- shape
- sphereRadius
- - boxSizeX
- - boxSizeY
- - boxSizeZ
+ - boxSize
+ #
+ #
- cylinderHeight
- cylinderRadius
SDT: DS3
diff --git a/src/actions/10303.yml b/src/actions/10303.yml
index 772f0b1..3c1d036 100644
--- a/src/actions/10303.yml
+++ b/src/actions/10303.yml
@@ -1,6 +1,9 @@
type: 10303
name: TurbulenceForce
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: false
desc: |
Creates a chaotic force in a volume.
@@ -55,7 +58,7 @@ properties:
|-|-|-|
| {@link ForceVolumeShape.Boundless Boundless} | *n/a* | *n/a* |
| {@link ForceVolumeShape.Sphere Sphere} | {@link sphereRadius} | Center of the sphere |
- | {@link ForceVolumeShape.Box Box} | {@link boxSizeX}, {@link boxSizeY}, {@link boxSizeZ} | Center of the box |
+ | {@link ForceVolumeShape.Box Box} | {@link boxSize} | Center of the box |
| {@link ForceVolumeShape.Cylinder Cylinder} | {@link cylinderHeight}, {@link cylinderRadius} | Slightly +Z of the center of the cylinder? |
| {@link ForceVolumeShape.SquarePrism SquarePrism} | {@link squarePrismHeight}, {@link squarePrismApothem} | Center of the base of the prism |
sphereRadius:
@@ -66,33 +69,14 @@ properties:
The radius of the {@link ForceVolumeShape.Sphere sphere} where the force is active.
see:
- shape
- boxSizeX:
- field: float
- scale: true
- desc: |
- The width of the {@link ForceVolumeShape.Box box} where the force is active.
- see:
- - shape
- - boxSizeY
- - boxSizeZ
- boxSizeY:
- field: float
- scale: true
- desc: |
- The height of the {@link ForceVolumeShape.Box box} where the force is active.
- see:
- - shape
- - boxSizeX
- - boxSizeZ
- boxSizeZ:
- field: float
+ boxSize:
+ field: vec3
+ default: [0, 0, 0]
scale: true
desc: |
- The depth of the {@link ForceVolumeShape.Box box} where the force is active.
+ The size of the {@link ForceVolumeShape.Box box} where the force is active.
see:
- shape
- - boxSizeX
- - boxSizeY
cylinderHeight:
field: float
scale: true
@@ -248,9 +232,9 @@ games:
fields1:
- shape
- sphereRadius
- - boxSizeX
- - boxSizeY
- - boxSizeZ
+ - boxSize
+ #
+ #
- cylinderHeight
- cylinderRadius
- squarePrismHeight
diff --git a/src/actions/10400.yml b/src/actions/10400.yml
index eb884e1..954ee64 100644
--- a/src/actions/10400.yml
+++ b/src/actions/10400.yml
@@ -1,6 +1,9 @@
type: 10400
name: Unk10400
slot: Unknown10400
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Unknown root node action.
properties:
diff --git a/src/actions/105.yml b/src/actions/105.yml
index d016c90..b69d690 100644
--- a/src/actions/105.yml
+++ b/src/actions/105.yml
@@ -1,6 +1,9 @@
type: 105
name: ParticleAccelerationPartialFollow
slot: ParticleMovement
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Controls the movement of particles. This extends {@link ActionType.ParticleAccelerationRandomTurns ParticleAccelerationRandomTurns} with the ability to make particles partially follow the parent node.
properties:
diff --git a/src/actions/10500.yml b/src/actions/10500.yml
index 2ca554c..cb45b9a 100644
--- a/src/actions/10500.yml
+++ b/src/actions/10500.yml
@@ -1,6 +1,9 @@
type: 10500
name: Unk10500
slot: Unknown10500
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Unknown root node action.
properties:
diff --git a/src/actions/106.yml b/src/actions/106.yml
index 9aeb73b..eaaa12d 100644
--- a/src/actions/106.yml
+++ b/src/actions/106.yml
@@ -1,6 +1,9 @@
type: 106
name: NodeAccelerationPartialFollow
slot: NodeMovement
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Controls the movement of the node. This extends {@link ActionType.NodeAccelerationRandomTurns NodeAccelerationRandomTurns} with the ability to make the node partially follow or exaggerate the parent node's movement.
properties:
diff --git a/src/actions/11000.yml b/src/actions/11000.yml
index 1a95881..9c90ada 100644
--- a/src/actions/11000.yml
+++ b/src/actions/11000.yml
@@ -1,6 +1,9 @@
type: 11000
name: SpotLight
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: false
desc: |
Light source with an elliptic cone shape, a spot light.
properties:
diff --git a/src/actions/113.yml b/src/actions/113.yml
index d54dff8..0b5dd6d 100644
--- a/src/actions/113.yml
+++ b/src/actions/113.yml
@@ -1,6 +1,9 @@
type: 113
name: NodeAccelerationSpin
slot: NodeMovement
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Controls the movement of the node. This extends {@link ActionType.NodeAcceleration NodeAcceleration} with the ability to control the node's angular speed.
properties:
diff --git a/src/actions/120.yml b/src/actions/120.yml
index 52a8242..b2e378c 100644
--- a/src/actions/120.yml
+++ b/src/actions/120.yml
@@ -1,6 +1,9 @@
type: 120
name: NodeSpeed
slot: NodeMovement
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Controls the movement of the node. This is the most basic action for controlling the speed of nodes.
properties:
diff --git a/src/actions/121.yml b/src/actions/121.yml
index e152df9..2496d3f 100644
--- a/src/actions/121.yml
+++ b/src/actions/121.yml
@@ -1,6 +1,9 @@
type: 121
name: NodeSpeedRandomTurns
slot: NodeMovement
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Controls the movement of the node. This extends {@link ActionType.NodeSpeed NodeSpeed} with the ability to make the node turn a random amount at a given interval.
properties:
diff --git a/src/actions/122.yml b/src/actions/122.yml
index e443711..ebce0bd 100644
--- a/src/actions/122.yml
+++ b/src/actions/122.yml
@@ -1,6 +1,9 @@
type: 122
name: NodeSpeedPartialFollow
slot: NodeMovement
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Controls the movement of the node. This extends {@link ActionType.NodeSpeedRandomTurns NodeSpeedRandomTurns} with the ability to make the node partially follow or exaggerate the parent node's movement.
properties:
diff --git a/src/actions/123.yml b/src/actions/123.yml
index c7af7e5..683bc82 100644
--- a/src/actions/123.yml
+++ b/src/actions/123.yml
@@ -1,6 +1,9 @@
type: 123
name: NodeSpeedSpin
slot: NodeMovement
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Controls the movement of the node. This extends {@link ActionType.NodeSpeed NodeSpeed} with the ability to control the node's angular speed.
properties:
diff --git a/src/actions/128.yml b/src/actions/128.yml
index 9d1459b..007c1b1 100644
--- a/src/actions/128.yml
+++ b/src/actions/128.yml
@@ -1,6 +1,9 @@
type: 128
name: NodeAttributes
slot: NodeAttributes
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Controls various things about the node, like its duration, and how it is attached to the parent node.
properties:
diff --git a/src/actions/129.yml b/src/actions/129.yml
index b7d2a4a..883bd46 100644
--- a/src/actions/129.yml
+++ b/src/actions/129.yml
@@ -1,6 +1,9 @@
type: 129
name: ParticleAttributes
slot: ParticleAttributes
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Controls the duration of particles emitted by the node, and how the particles are attached to the node.
properties:
diff --git a/src/actions/130.yml b/src/actions/130.yml
index b0772f7..9cae002 100644
--- a/src/actions/130.yml
+++ b/src/actions/130.yml
@@ -1,6 +1,9 @@
type: 130
name: Unk130
slot: Unknown130
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Unknown action that is in every basic effect in every game, and still literally nothing is known about it.
properties:
diff --git a/src/actions/131.yml b/src/actions/131.yml
index 1d49cf4..d541ab6 100644
--- a/src/actions/131.yml
+++ b/src/actions/131.yml
@@ -1,6 +1,9 @@
type: 131
name: ParticleModifier
slot: ParticleModifier
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Modifies particles in various ways.
diff --git a/src/actions/132.yml b/src/actions/132.yml
index 7d2f632..7ecf8c2 100644
--- a/src/actions/132.yml
+++ b/src/actions/132.yml
@@ -1,5 +1,8 @@
type: 132
name: SFXReference
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
References another SFX by its ID.
properties:
diff --git a/src/actions/133.yml b/src/actions/133.yml
index 9ad14e8..28102d0 100644
--- a/src/actions/133.yml
+++ b/src/actions/133.yml
@@ -1,5 +1,8 @@
type: 133
name: LevelsOfDetailThresholds
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Used in the {@link EffectType.LevelsOfDetail levels of detail effect} to manage the duration and thresholds for the {@link NodeType.LevelsOfDetail levels of detail node}.
properties:
diff --git a/src/actions/15.yml b/src/actions/15.yml
index 3cfd02a..a452308 100644
--- a/src/actions/15.yml
+++ b/src/actions/15.yml
@@ -1,6 +1,9 @@
type: 15
name: NodeTranslation
slot: NodeMovement
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Translates the node using a property, meaning it can be animated. This can be useful if you need the node to follow a specific path.
properties:
diff --git a/src/actions/199.yml b/src/actions/199.yml
index ee8f64b..f4d8c88 100644
--- a/src/actions/199.yml
+++ b/src/actions/199.yml
@@ -1,5 +1,8 @@
type: 199
name: StateEffectMap
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Maps states to effects in the parent node.
properties:
diff --git a/src/actions/200.yml b/src/actions/200.yml
index b795095..f288a15 100644
--- a/src/actions/200.yml
+++ b/src/actions/200.yml
@@ -1,5 +1,8 @@
type: 200
name: SelectAllNodes
slot: NodeSelector
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Used in {@link EffectType.NodeEmitter NodeEmitter effects} to emit all child nodes every emission.
diff --git a/src/actions/201.yml b/src/actions/201.yml
index 3edd299..8d2694a 100644
--- a/src/actions/201.yml
+++ b/src/actions/201.yml
@@ -1,6 +1,9 @@
type: 201
name: SelectRandomNode
slot: NodeSelector
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Used in {@link EffectType.NodeEmitter NodeEmitter effects} to emit a random child node every emission.
properties:
diff --git a/src/actions/300.yml b/src/actions/300.yml
index 76a0237..ebed455 100644
--- a/src/actions/300.yml
+++ b/src/actions/300.yml
@@ -1,7 +1,10 @@
type: 300
name: PeriodicEmitter
slot: Emitter
-desc: >
+meta:
+ isAppearance: false
+ isParticle: false
+desc: |
Emits particles periodically.
properties:
interval:
@@ -9,26 +12,26 @@ properties:
default: 1
argument: EffectAge
time: inv
- desc: >
+ desc: |
Time between emitting new particles in seconds.
perInterval:
type: ScalarValue
default: 1
argument: EffectAge
- desc: >
+ desc: |
The number of particles to emit per interval. They all spawn at the same time per interval.
totalIntervals:
type: ScalarValue
default: -1
argument: EffectAge
- desc: >
+ desc: |
The total number of intervals to emit particles. Once this limit is reached, the emitter is will stop emitting. Can be set to -1 to disable the limit.
maxConcurrent:
type: ScalarValue
field: int
default: -1
argument: EffectAge
- desc: >
+ desc: |
Maximum number of concurrent particles. Can be set to -1 to disable the limit.
unk_ds3_f1_1:
field: int
diff --git a/src/actions/301.yml b/src/actions/301.yml
index c786501..47a9bfb 100644
--- a/src/actions/301.yml
+++ b/src/actions/301.yml
@@ -1,7 +1,10 @@
type: 301
name: EqualDistanceEmitter
slot: Emitter
-desc: >
+meta:
+ isAppearance: false
+ isParticle: false
+desc: |
Emits particles once it has moved a certain distance from where it last emitted particles.
properties:
threshold:
@@ -9,14 +12,14 @@ properties:
default: 0.1
argument: EffectAge
scale: true
- desc: >
+ desc: |
How much the emitter must move to trigger emission.
maxConcurrent:
type: ScalarValue
field: int
default: -1
argument: EffectAge
- desc: >
+ desc: |
Maximum number of concurrent particles. Can be set to -1 to disable the limit.
unk_ds3_f1_1:
field: int
diff --git a/src/actions/34.yml b/src/actions/34.yml
index 26486f0..3ee8d0a 100644
--- a/src/actions/34.yml
+++ b/src/actions/34.yml
@@ -1,6 +1,9 @@
type: 34
name: NodeSpin
slot: NodeMovement
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Controls the angular speed of the node.
properties:
diff --git a/src/actions/35.yml b/src/actions/35.yml
index 148d4c0..2c19fe3 100644
--- a/src/actions/35.yml
+++ b/src/actions/35.yml
@@ -1,6 +1,9 @@
type: 35
name: StaticNodeTransform
slot: NodeTransform
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Controls the translation and rotation of a node.
properties:
diff --git a/src/actions/36.yml b/src/actions/36.yml
index f1351ed..37536ff 100644
--- a/src/actions/36.yml
+++ b/src/actions/36.yml
@@ -1,6 +1,9 @@
type: 36
name: RandomNodeTransform
slot: NodeTransform
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Controls the translation and rotation of a node, and can also randomize them.
properties:
diff --git a/src/actions/399.yml b/src/actions/399.yml
index 77e86aa..1ce4d2a 100644
--- a/src/actions/399.yml
+++ b/src/actions/399.yml
@@ -1,5 +1,8 @@
type: 399
name: OneTimeEmitter
slot: Emitter
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Emits one particle once.
diff --git a/src/actions/400.yml b/src/actions/400.yml
index 40592eb..b0a830a 100644
--- a/src/actions/400.yml
+++ b/src/actions/400.yml
@@ -1,6 +1,9 @@
type: 400
name: PointEmitterShape
slot: EmitterShape
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Makes the emitter a single point.
properties:
diff --git a/src/actions/401.yml b/src/actions/401.yml
index ce1d7cf..ad8f530 100644
--- a/src/actions/401.yml
+++ b/src/actions/401.yml
@@ -1,6 +1,9 @@
type: 401
name: DiskEmitterShape
slot: EmitterShape
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Makes the emitter disk-shaped.
properties:
diff --git a/src/actions/402.yml b/src/actions/402.yml
index e9a8485..2236794 100644
--- a/src/actions/402.yml
+++ b/src/actions/402.yml
@@ -1,6 +1,9 @@
type: 402
name: RectangleEmitterShape
slot: EmitterShape
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Makes the emitter rectangular.
properties:
diff --git a/src/actions/403.yml b/src/actions/403.yml
index 6332c5f..b8fc32a 100644
--- a/src/actions/403.yml
+++ b/src/actions/403.yml
@@ -1,6 +1,9 @@
type: 403
name: SphereEmitterShape
slot: EmitterShape
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Makes the emitter spherical.
properties:
diff --git a/src/actions/404.yml b/src/actions/404.yml
index ec03faa..324dfc3 100644
--- a/src/actions/404.yml
+++ b/src/actions/404.yml
@@ -1,6 +1,9 @@
type: 404
name: BoxEmitterShape
slot: EmitterShape
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Makes the emitter cuboidal.
properties:
diff --git a/src/actions/405.yml b/src/actions/405.yml
index d93bb86..4c8f3cb 100644
--- a/src/actions/405.yml
+++ b/src/actions/405.yml
@@ -1,6 +1,9 @@
type: 405
name: CylinderEmitterShape
slot: EmitterShape
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Makes the emitter cylindrical.
properties:
diff --git a/src/actions/46.yml b/src/actions/46.yml
index 31754ca..efb6dfa 100644
--- a/src/actions/46.yml
+++ b/src/actions/46.yml
@@ -1,6 +1,9 @@
type: 46
name: NodeAttachToCamera
slot: NodeMovement
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Attaches the node to the camera.
properties:
diff --git a/src/actions/500.yml b/src/actions/500.yml
index 752d94d..78a95a8 100644
--- a/src/actions/500.yml
+++ b/src/actions/500.yml
@@ -1,5 +1,8 @@
type: 500
name: NoSpread
slot: DirectionSpread
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Makes all emitted instances have the default initial direction from the emitter. See {@link InitialDirection} for more information.
diff --git a/src/actions/501.yml b/src/actions/501.yml
index 944f493..c449069 100644
--- a/src/actions/501.yml
+++ b/src/actions/501.yml
@@ -1,6 +1,9 @@
type: 501
name: CircularSpread
slot: DirectionSpread
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Gives each emitted instance a random initial direction offset within a circular cone. See {@link InitialDirection} for more information.
properties:
diff --git a/src/actions/502.yml b/src/actions/502.yml
index 388f2ad..e566f92 100644
--- a/src/actions/502.yml
+++ b/src/actions/502.yml
@@ -1,6 +1,9 @@
type: 502
name: EllipticalSpread
slot: DirectionSpread
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Gives each emitted instance a random initial direction offset within an elliptical cone. See {@link InitialDirection} for more information.
properties:
diff --git a/src/actions/503.yml b/src/actions/503.yml
index 92b1db0..5f07a5d 100644
--- a/src/actions/503.yml
+++ b/src/actions/503.yml
@@ -1,6 +1,9 @@
type: 503
name: RectangularSpread
slot: DirectionSpread
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Gives each emitted instance a random initial direction offset within a rectangular cone. See {@link InitialDirection} for more information.
properties:
diff --git a/src/actions/55.yml b/src/actions/55.yml
index f5b5c76..4210e81 100644
--- a/src/actions/55.yml
+++ b/src/actions/55.yml
@@ -1,6 +1,9 @@
type: 55
name: ParticleAcceleration
slot: ParticleMovement
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Controls the movement of particles. This is the most basic action for controlling the acceleration of particles.
properties:
diff --git a/src/actions/60.yml b/src/actions/60.yml
index 081d95e..a7d4c02 100644
--- a/src/actions/60.yml
+++ b/src/actions/60.yml
@@ -1,6 +1,9 @@
type: 60
name: ParticleSpeed
slot: ParticleMovement
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Controls the movement of particles. This is the most basic action for controlling the speed of particles.
properties:
diff --git a/src/actions/600.yml b/src/actions/600.yml
index cad034f..0d198a3 100644
--- a/src/actions/600.yml
+++ b/src/actions/600.yml
@@ -1,6 +1,9 @@
type: 600
name: PointSprite
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: true
desc: |
Very basic point sprite particle. Similar to {@link ActionType.BillboardEx BillboardEx}, but far simpler.
properties:
diff --git a/src/actions/601.yml b/src/actions/601.yml
index 4a23d25..31d6395 100644
--- a/src/actions/601.yml
+++ b/src/actions/601.yml
@@ -1,6 +1,9 @@
type: 601
name: Line
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: true
desc: |
Simple line particle. It automatically rotates to match the direction it's moving.
properties:
diff --git a/src/actions/602.yml b/src/actions/602.yml
index 8d94aa9..8b6d452 100644
--- a/src/actions/602.yml
+++ b/src/actions/602.yml
@@ -1,6 +1,9 @@
type: 602
name: QuadLine
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: true
desc: |
Simple rectangular particle, very similar to {@link ActionType.Line Line particles}, but has properties that control the width as well as the length. It automatically rotates to match the direction it's moving.
properties:
diff --git a/src/actions/603.yml b/src/actions/603.yml
index 91d6b58..f0b9f1f 100644
--- a/src/actions/603.yml
+++ b/src/actions/603.yml
@@ -1,6 +1,9 @@
type: 603
name: BillboardEx
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: true
desc: |
Particle with a texture that may be animated. This is the most common particle type and it has a lot of useful fields and properties.
properties:
diff --git a/src/actions/604.yml b/src/actions/604.yml
index dc32aea..5e81157 100644
--- a/src/actions/604.yml
+++ b/src/actions/604.yml
@@ -1,6 +1,9 @@
type: 604
name: MultiTextureBillboardEx
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: true
desc: |
Particle with multiple textures that can scroll.
properties:
diff --git a/src/actions/605.yml b/src/actions/605.yml
index 2b37bc9..797e47a 100644
--- a/src/actions/605.yml
+++ b/src/actions/605.yml
@@ -1,6 +1,9 @@
type: 605
name: Model
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: true
desc: |
Particle with a 3D model.
diff --git a/src/actions/606.yml b/src/actions/606.yml
index 5db73bc..359e2ab 100644
--- a/src/actions/606.yml
+++ b/src/actions/606.yml
@@ -1,6 +1,9 @@
type: 606
name: Tracer
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: true
desc: |
Creates a trail behind moving effects.
properties:
diff --git a/src/actions/607.yml b/src/actions/607.yml
index a345f2b..186616b 100644
--- a/src/actions/607.yml
+++ b/src/actions/607.yml
@@ -1,6 +1,9 @@
type: 607
name: Distortion
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: true
desc: |
A particle that distorts anything seen through it.
diff --git a/src/actions/608.yml b/src/actions/608.yml
index 8da6599..baab581 100644
--- a/src/actions/608.yml
+++ b/src/actions/608.yml
@@ -1,6 +1,9 @@
type: 608
name: RadialBlur
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: true
desc: |
A particle that applies a radial blur to anything seen through it.
diff --git a/src/actions/609.yml b/src/actions/609.yml
index 53b346e..6ecbbf3 100644
--- a/src/actions/609.yml
+++ b/src/actions/609.yml
@@ -1,6 +1,9 @@
type: 609
name: PointLight
slot: Appearance
+meta:
+ isAppearance: true
+ isParticle: false
desc: |
Point light source.
properties:
diff --git a/src/actions/64.yml b/src/actions/64.yml
index 18705ef..c71d442 100644
--- a/src/actions/64.yml
+++ b/src/actions/64.yml
@@ -1,6 +1,9 @@
type: 64
name: ParticleSpeedRandomTurns
slot: ParticleMovement
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Controls the movement of particles. This extends {@link ActionType.ParticleSpeed ParticleSpeed} with the ability to make particles make random turns at a fixed interval.
properties:
diff --git a/src/actions/65.yml b/src/actions/65.yml
index 88661bb..5a31caf 100644
--- a/src/actions/65.yml
+++ b/src/actions/65.yml
@@ -1,6 +1,9 @@
type: 65
name: ParticleSpeedPartialFollow
slot: ParticleMovement
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Controls the movement of particles. This extends {@link ActionType.ParticleSpeedRandomTurns ParticleSpeedRandomTurns} with the ability to make particles partially follow the parent node.
properties:
diff --git a/src/actions/700.yml b/src/actions/700.yml
index 9276262..cb96392 100644
--- a/src/actions/700.yml
+++ b/src/actions/700.yml
@@ -1,5 +1,8 @@
type: 700
name: Unk700
slot: Unknown70x
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Unknown root node action that was introduced in Elden Ring.
diff --git a/src/actions/701.yml b/src/actions/701.yml
index 7f9b17b..4a518d2 100644
--- a/src/actions/701.yml
+++ b/src/actions/701.yml
@@ -1,6 +1,9 @@
type: 701
name: Unk701
slot: Unknown70x
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Unknown root node action that was introduced in Elden Ring.
properties:
diff --git a/src/actions/702.yml b/src/actions/702.yml
index 1cf2ecc..83a1cb8 100644
--- a/src/actions/702.yml
+++ b/src/actions/702.yml
@@ -1,5 +1,8 @@
type: 702
name: Unk702
slot: Unknown70x
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Unknown root node action that was introduced in Elden Ring.
diff --git a/src/actions/731.yml b/src/actions/731.yml
index f1124c5..d1a83ce 100644
--- a/src/actions/731.yml
+++ b/src/actions/731.yml
@@ -1,6 +1,9 @@
type: 731
name: NodeForceSpeed
slot: NodeForceMovement
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Controls how the node is affected by forces. For more information about forces that can affect nodes and particles, see:
- {@link ActionType.CancelForce CancelForce}
diff --git a/src/actions/732.yml b/src/actions/732.yml
index 209c478..d3add41 100644
--- a/src/actions/732.yml
+++ b/src/actions/732.yml
@@ -1,6 +1,9 @@
type: 732
name: ParticleForceSpeed
slot: ParticleForceMovement
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Controls how the particles emitted by the node is affected by forces. For more information about forces that can affect nodes and particles, see:
- {@link ActionType.CancelForce CancelForce}
diff --git a/src/actions/733.yml b/src/actions/733.yml
index 8ce2f5d..0aa0539 100644
--- a/src/actions/733.yml
+++ b/src/actions/733.yml
@@ -1,6 +1,9 @@
type: 733
name: NodeForceAcceleration
slot: NodeForceMovement
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Controls how the node is affected by forces. For more information about forces that can affect nodes and particles, see:
- {@link ActionType.CancelForce CancelForce}
diff --git a/src/actions/734.yml b/src/actions/734.yml
index f5dc5c2..b00b98f 100644
--- a/src/actions/734.yml
+++ b/src/actions/734.yml
@@ -1,6 +1,9 @@
type: 734
name: ParticleForceAcceleration
slot: ParticleForceMovement
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Controls how the particles emitted by the node is affected by forces. For more information about forces that can affect nodes and particles, see:
- {@link ActionType.CancelForce CancelForce}
diff --git a/src/actions/75.yml b/src/actions/75.yml
index 868d3f4..de9be9a 100644
--- a/src/actions/75.yml
+++ b/src/actions/75.yml
@@ -1,6 +1,9 @@
type: 75
name: NodeSound
slot: NodeAudio
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Plays a sound effect when the node activates that can repeat.
properties:
diff --git a/src/actions/800.yml b/src/actions/800.yml
index 3263d29..873dd24 100644
--- a/src/actions/800.yml
+++ b/src/actions/800.yml
@@ -1,6 +1,9 @@
type: 800
name: Unk800
slot: ParticleForceMovement
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Unknown action that was added in Armored Core 6.
properties:
diff --git a/src/actions/81.yml b/src/actions/81.yml
index 43ca8fd..38aa7f7 100644
--- a/src/actions/81.yml
+++ b/src/actions/81.yml
@@ -1,6 +1,9 @@
type: 81
name: EmissionSound
slot: EmissionAudio
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Plays a sound effect every time the node emits particles. It only plays the sound once per emission, not once per particle.
properties:
diff --git a/src/actions/83.yml b/src/actions/83.yml
index ecb3447..174adcf 100644
--- a/src/actions/83.yml
+++ b/src/actions/83.yml
@@ -1,6 +1,9 @@
type: 83
name: NodeAccelerationRandomTurns
slot: NodeMovement
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Controls the movement of the node. This extends {@link ActionType.NodeAcceleration NodeAcceleration} with the ability to make the node turn a random amount at a given interval.
properties:
diff --git a/src/actions/84.yml b/src/actions/84.yml
index e91525b..b8557db 100644
--- a/src/actions/84.yml
+++ b/src/actions/84.yml
@@ -1,6 +1,9 @@
type: 84
name: ParticleAccelerationRandomTurns
slot: ParticleMovement
+meta:
+ isAppearance: false
+ isParticle: false
desc: |
Controls the movement of particles. This extends {@link ActionType.ParticleAcceleration ParticleAcceleration} with the ability to make particles make random turns at a fixed interval.
properties:
diff --git a/src/fxr.ts b/src/fxr.ts
index 7b4b45f..4164435 100644
--- a/src/fxr.ts
+++ b/src/fxr.ts
@@ -1705,6 +1705,7 @@ export interface IModifiableProperty {
separateComponents(): IModifier[]
}
+export interface ActionMeta {
+ /**
+ * Is `true` if the action is an
+ * {@link ActionSlots.AppearanceAction appearance action}.
+ */
+ isAppearance: boolean
+ /**
+ * Is `true` if the action defines a particle appearance. Particles are
+ * affected by particle-related actions:
+ * - {@link ActionSlots.ParticleModifierAction ParticleModifierAction}
+ * - {@link ActionSlots.ParticleAttributesAction ParticleAttributesAction}
+ * - {@link ActionSlots.ParticleMovementAction ParticleMovementAction}
+ * - {@link ActionSlots.ParticleForceMovementAction ParticleForceMovementAction}
+ *
+ * Particles can be emitted by any of the regular emitters:
+ * - {@link ActionType.OneTimeEmitter OneTimeEmitter}
+ * - {@link ActionType.PeriodicEmitter PeriodicEmitter}
+ * - {@link ActionType.EqualDistanceEmitter EqualDistanceEmitter}
+ *
+ * Non-particles are not affected by the particle-related actions, and can
+ * only be emitted by {@link ActionType.OneTimeEmitter OneTimeEmitter}.
+ *
+ * GPU particles, for example those from
+ * {@link ActionType.GPUStandardParticle GPUStandardParticle}, do not count
+ * as particles in the same way. They are not affected by the
+ * particle-related actions, and the actions that define them also define
+ * their own emitter for the GPU particles instead of using the one in the
+ * node's emitter slot.
+ */
+ isParticle: boolean
+}
+
export type AnyAction = Action | DataAction
export type Vector2 = [x: number, y: number]
export type Vector3 = [x: number, y: number, z: number]
@@ -3772,12 +3805,8 @@ const ActionData: {
normalMap: { default: 0, field: 1, resource: 0, textureType: 'n' },
emitterShape: { default: EmitterShape.Box, field: 1 },
unk_ds3_f1_5: { default: 0, field: 1 },
- emitterSizeX: { default: 1, field: 2, scale: 1 },
- emitterSizeY: { default: 1, field: 2, scale: 1 },
- emitterSizeZ: { default: 1, field: 2, scale: 1 },
- emitterRotationX: { default: 0, field: 2 },
- emitterRotationY: { default: 0, field: 2 },
- emitterRotationZ: { default: 0, field: 2 },
+ emitterSize: { default: [1, 1, 1], field: 4, scale: 1 },
+ emitterRotation: { default: [0, 0, 0], field: 4 },
unk_ds3_f1_12: { default: 1, field: 2 },
unk_ds3_f1_13: { default: 1, field: 2 },
unk_ds3_f1_14: { default: 1, field: 2 },
@@ -3800,42 +3829,18 @@ const ActionData: {
particleDuration: { default: 1, field: 1, time: 2 },
unk_ds3_f1_32: { default: 0, field: 1 },
unk_ds3_f1_33: { default: 0, field: 1 },
- particleOffsetX: { default: 0, field: 2, scale: 1 },
- particleOffsetY: { default: 0, field: 2, scale: 1 },
- particleOffsetZ: { default: 0, field: 2, scale: 1 },
- particleOffsetXMin: { default: 0, field: 2, scale: 1 },
- particleOffsetYMin: { default: 0, field: 2, scale: 1 },
- particleOffsetZMin: { default: 0, field: 2, scale: 1 },
- particleOffsetXMax: { default: 0, field: 2, scale: 1 },
- particleOffsetYMax: { default: 0, field: 2, scale: 1 },
- particleOffsetZMax: { default: 0, field: 2, scale: 1 },
- particleSpeedX: { default: 0, field: 2, scale: 1, time: 1 },
- particleSpeedY: { default: 0, field: 2, scale: 1, time: 1 },
- particleSpeedZ: { default: 0, field: 2, scale: 1, time: 1 },
- particleSpeedXMin: { default: 0, field: 2, scale: 1, time: 1 },
- particleSpeedYMin: { default: 0, field: 2, scale: 1, time: 1 },
- particleSpeedZMin: { default: 0, field: 2, scale: 1, time: 1 },
- particleSpeedXMax: { default: 0, field: 2, scale: 1, time: 1 },
- particleSpeedYMax: { default: 0, field: 2, scale: 1, time: 1 },
- particleSpeedZMax: { default: 0, field: 2, scale: 1, time: 1 },
- particleAccelerationXMin: { default: 0, field: 2, scale: 1, time: 4 },
- particleAccelerationYMin: { default: 0, field: 2, scale: 1, time: 4 },
- particleAccelerationZMin: { default: 0, field: 2, scale: 1, time: 4 },
- particleAccelerationXMax: { default: 0, field: 2, scale: 1, time: 4 },
- particleAccelerationYMax: { default: 0, field: 2, scale: 1, time: 4 },
- particleAccelerationZMax: { default: 0, field: 2, scale: 1, time: 4 },
- particleRotationVarianceX: { default: 0, field: 2 },
- particleRotationVarianceY: { default: 0, field: 2 },
- particleRotationVarianceZ: { default: 0, field: 2 },
- particleAngularSpeedVarianceX: { default: 0, field: 2, time: 1 },
- particleAngularSpeedVarianceY: { default: 0, field: 2, time: 1 },
- particleAngularSpeedVarianceZ: { default: 0, field: 2, time: 1 },
- particleAngularAccelerationXMin: { default: 0, field: 2, time: 4 },
- particleAngularAccelerationYMin: { default: 0, field: 2, time: 4 },
- particleAngularAccelerationZMin: { default: 0, field: 2, time: 4 },
- particleAngularAccelerationXMax: { default: 0, field: 2, time: 4 },
- particleAngularAccelerationYMax: { default: 0, field: 2, time: 4 },
- particleAngularAccelerationZMax: { default: 0, field: 2, time: 4 },
+ particleOffset: { default: [0, 0, 0], field: 4, scale: 1 },
+ particleOffsetMin: { default: [0, 0, 0], field: 4, scale: 1 },
+ particleOffsetMax: { default: [0, 0, 0], field: 4, scale: 1 },
+ particleSpeed: { default: [0, 0, 0], field: 4, scale: 1, time: 1 },
+ particleSpeedMin: { default: [0, 0, 0], field: 4, scale: 1, time: 1 },
+ particleSpeedMax: { default: [0, 0, 0], field: 4, scale: 1, time: 1 },
+ particleAccelerationMin: { default: [0, 0, 0], field: 4, scale: 1, time: 4 },
+ particleAccelerationMax: { default: [0, 0, 0], field: 4, scale: 1, time: 4 },
+ particleRotationVariance: { default: [0, 0, 0], field: 4 },
+ particleAngularSpeedVariance: { default: [0, 0, 0], field: 4, time: 1 },
+ particleAngularAccelerationMin: { default: [0, 0, 0], field: 4, time: 4 },
+ particleAngularAccelerationMax: { default: [0, 0, 0], field: 4, time: 4 },
particleUniformScale: { default: false, field: 0 },
particleSizeX: { default: 1, field: 2, scale: 1 },
particleSizeY: { default: 1, field: 2, scale: 1 },
@@ -3997,19 +4002,19 @@ const ActionData: {
},
games: {
[Game.DarkSouls3]: {
- fields1: ['unk_ds3_f1_0','texture','unk_ds3_f1_2','normalMap','emitterShape','unk_ds3_f1_5','emitterSizeX','emitterSizeY','emitterSizeZ','emitterRotationX','emitterRotationY','emitterRotationZ','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','particleOffsetX','particleOffsetY','particleOffsetZ','particleOffsetXMin','particleOffsetYMin','particleOffsetZMin','particleOffsetXMax','particleOffsetYMax','particleOffsetZMax','particleSpeedX','particleSpeedY','particleSpeedZ','particleSpeedXMin','particleSpeedYMin','particleSpeedZMin','particleSpeedXMax','particleSpeedYMax','particleSpeedZMax','particleAccelerationXMin','particleAccelerationYMin','particleAccelerationZMin','particleAccelerationXMax','particleAccelerationYMax','particleAccelerationZMax','particleRotationVarianceX','particleRotationVarianceY','particleRotationVarianceZ','particleAngularSpeedVarianceX','particleAngularSpeedVarianceY','particleAngularSpeedVarianceZ','particleAngularAccelerationXMin','particleAngularAccelerationYMin','particleAngularAccelerationZMin','particleAngularAccelerationXMax','particleAngularAccelerationYMax','particleAngularAccelerationZMax','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'],
+ 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','emitterSizeX','emitterSizeY','emitterSizeZ','emitterRotationX','emitterRotationY','emitterRotationZ','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','particleOffsetX','particleOffsetY','particleOffsetZ','particleOffsetXMin','particleOffsetYMin','particleOffsetZMin','particleOffsetXMax','particleOffsetYMax','particleOffsetZMax','particleSpeedX','particleSpeedY','particleSpeedZ','particleSpeedXMin','particleSpeedYMin','particleSpeedZMin','particleSpeedXMax','particleSpeedYMax','particleSpeedZMax','particleAccelerationXMin','particleAccelerationYMin','particleAccelerationZMin','particleAccelerationXMax','particleAccelerationYMax','particleAccelerationZMax','particleRotationVarianceX','particleRotationVarianceY','particleRotationVarianceZ','particleAngularSpeedVarianceX','particleAngularSpeedVarianceY','particleAngularSpeedVarianceZ','particleAngularAccelerationXMin','particleAngularAccelerationYMin','particleAngularAccelerationZMin','particleAngularAccelerationXMax','particleAngularAccelerationYMax','particleAngularAccelerationZMax','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'],
+ 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','emitterSizeX','emitterSizeY','emitterSizeZ','emitterRotationX','emitterRotationY','emitterRotationZ','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','particleOffsetX','particleOffsetY','particleOffsetZ','particleOffsetXMin','particleOffsetYMin','particleOffsetZMin','particleOffsetXMax','particleOffsetYMax','particleOffsetZMax','particleSpeedX','particleSpeedY','particleSpeedZ','particleSpeedXMin','particleSpeedYMin','particleSpeedZMin','particleSpeedXMax','particleSpeedYMax','particleSpeedZMax','particleAccelerationXMin','particleAccelerationYMin','particleAccelerationZMin','particleAccelerationXMax','particleAccelerationYMax','particleAccelerationZMax','particleRotationVarianceX','particleRotationVarianceY','particleRotationVarianceZ','particleAngularSpeedVarianceX','particleAngularSpeedVarianceY','particleAngularSpeedVarianceZ','particleAngularAccelerationXMin','particleAngularAccelerationYMin','particleAngularAccelerationZMin','particleAngularAccelerationXMax','particleAngularAccelerationYMax','particleAngularAccelerationZMax','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'],
+ 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
@@ -4025,12 +4030,8 @@ const ActionData: {
normalMap: { default: 0, field: 1, resource: 0, textureType: 'n' },
emitterShape: { default: EmitterShape.Box, field: 1 },
unk_ds3_f1_5: { default: 0, field: 1 },
- emitterSizeX: { default: 1, field: 2, scale: 1 },
- emitterSizeY: { default: 1, field: 2, scale: 1 },
- emitterSizeZ: { default: 1, field: 2, scale: 1 },
- emitterRotationX: { default: 0, field: 2 },
- emitterRotationY: { default: 0, field: 2 },
- emitterRotationZ: { default: 0, field: 2 },
+ emitterSize: { default: [1, 1, 1], field: 4, scale: 1 },
+ emitterRotation: { default: [0, 0, 0], field: 4 },
unk_ds3_f1_12: { default: 1, field: 2 },
unk_ds3_f1_13: { default: 1, field: 2 },
unk_ds3_f1_14: { default: 1, field: 2 },
@@ -4053,42 +4054,18 @@ const ActionData: {
particleDuration: { default: 1, field: 1, time: 2 },
unk_ds3_f1_32: { default: 0, field: 1 },
unk_ds3_f1_33: { default: 0, field: 1 },
- particleOffsetX: { default: 0, field: 2, scale: 1 },
- particleOffsetY: { default: 0, field: 2, scale: 1 },
- particleOffsetZ: { default: 0, field: 2, scale: 1 },
- particleOffsetXMin: { default: 0, field: 2, scale: 1 },
- particleOffsetYMin: { default: 0, field: 2, scale: 1 },
- particleOffsetZMin: { default: 0, field: 2, scale: 1 },
- particleOffsetXMax: { default: 0, field: 2, scale: 1 },
- particleOffsetYMax: { default: 0, field: 2, scale: 1 },
- particleOffsetZMax: { default: 0, field: 2, scale: 1 },
- particleSpeedX: { default: 0, field: 2, scale: 1, time: 1 },
- particleSpeedY: { default: 0, field: 2, scale: 1, time: 1 },
- particleSpeedZ: { default: 0, field: 2, scale: 1, time: 1 },
- particleSpeedXMin: { default: 0, field: 2, scale: 1, time: 1 },
- particleSpeedYMin: { default: 0, field: 2, scale: 1, time: 1 },
- particleSpeedZMin: { default: 0, field: 2, scale: 1, time: 1 },
- particleSpeedXMax: { default: 0, field: 2, scale: 1, time: 1 },
- particleSpeedYMax: { default: 0, field: 2, scale: 1, time: 1 },
- particleSpeedZMax: { default: 0, field: 2, scale: 1, time: 1 },
- particleAccelerationXMin: { default: 0, field: 2, scale: 1, time: 4 },
- particleAccelerationYMin: { default: 0, field: 2, scale: 1, time: 4 },
- particleAccelerationZMin: { default: 0, field: 2, scale: 1, time: 4 },
- particleAccelerationXMax: { default: 0, field: 2, scale: 1, time: 4 },
- particleAccelerationYMax: { default: 0, field: 2, scale: 1, time: 4 },
- particleAccelerationZMax: { default: 0, field: 2, scale: 1, time: 4 },
- particleRotationVarianceX: { default: 0, field: 2 },
- particleRotationVarianceY: { default: 0, field: 2 },
- particleRotationVarianceZ: { default: 0, field: 2 },
- particleAngularSpeedVarianceX: { default: 0, field: 2, time: 1 },
- particleAngularSpeedVarianceY: { default: 0, field: 2, time: 1 },
- particleAngularSpeedVarianceZ: { default: 0, field: 2, time: 1 },
- particleAngularAccelerationXMin: { default: 0, field: 2, time: 4 },
- particleAngularAccelerationYMin: { default: 0, field: 2, time: 4 },
- particleAngularAccelerationZMin: { default: 0, field: 2, time: 4 },
- particleAngularAccelerationXMax: { default: 0, field: 2, time: 4 },
- particleAngularAccelerationYMax: { default: 0, field: 2, time: 4 },
- particleAngularAccelerationZMax: { default: 0, field: 2, time: 4 },
+ particleOffset: { default: [0, 0, 0], field: 4, scale: 1 },
+ particleOffsetMin: { default: [0, 0, 0], field: 4, scale: 1 },
+ particleOffsetMax: { default: [0, 0, 0], field: 4, scale: 1 },
+ particleSpeed: { default: [0, 0, 0], field: 4, scale: 1, time: 1 },
+ particleSpeedMin: { default: [0, 0, 0], field: 4, scale: 1, time: 1 },
+ particleSpeedMax: { default: [0, 0, 0], field: 4, scale: 1, time: 1 },
+ particleAccelerationMin: { default: [0, 0, 0], field: 4, scale: 1, time: 4 },
+ particleAccelerationMax: { default: [0, 0, 0], field: 4, scale: 1, time: 4 },
+ particleRotationVariance: { default: [0, 0, 0], field: 4 },
+ particleAngularSpeedVariance: { default: [0, 0, 0], field: 4, time: 1 },
+ particleAngularAccelerationMin: { default: [0, 0, 0], field: 4, time: 4 },
+ particleAngularAccelerationMax: { default: [0, 0, 0], field: 4, time: 4 },
particleUniformScale: { default: false, field: 0 },
particleSizeX: { default: 1, field: 2, scale: 1 },
particleSizeY: { default: 1, field: 2, scale: 1 },
@@ -4251,7 +4228,7 @@ const ActionData: {
[Game.DarkSouls3]: -2,
[Game.Sekiro]: -2,
[Game.EldenRing]: {
- fields1: ['unk_ds3_f1_0','texture','unk_ds3_f1_2','normalMap','emitterShape','unk_ds3_f1_5','emitterSizeX','emitterSizeY','emitterSizeZ','emitterRotationX','emitterRotationY','emitterRotationZ','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','particleOffsetX','particleOffsetY','particleOffsetZ','particleOffsetXMin','particleOffsetYMin','particleOffsetZMin','particleOffsetXMax','particleOffsetYMax','particleOffsetZMax','particleSpeedX','particleSpeedY','particleSpeedZ','particleSpeedXMin','particleSpeedYMin','particleSpeedZMin','particleSpeedXMax','particleSpeedYMax','particleSpeedZMax','particleAccelerationXMin','particleAccelerationYMin','particleAccelerationZMin','particleAccelerationXMax','particleAccelerationYMax','particleAccelerationZMax','particleRotationVarianceX','particleRotationVarianceY','particleRotationVarianceZ','particleAngularSpeedVarianceX','particleAngularSpeedVarianceY','particleAngularSpeedVarianceZ','particleAngularAccelerationXMin','particleAngularAccelerationYMin','particleAngularAccelerationZMin','particleAngularAccelerationXMax','particleAngularAccelerationYMax','particleAngularAccelerationZMax','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'],
+ 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: ['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']
@@ -4315,12 +4292,8 @@ const ActionData: {
texture: { default: 1, field: 1, resource: 0, textureType: 'a' },
emitterShape: { default: EmitterShape.Box, field: 1 },
unk_ac6_f1_1: { default: 0, field: 1 },
- emitterSizeX: { default: 1, field: 2, scale: 1 },
- emitterSizeY: { default: 1, field: 2, scale: 1 },
- emitterSizeZ: { default: 1, field: 2, scale: 1 },
- emitterRotationX: { default: 0, field: 2 },
- emitterRotationY: { default: 0, field: 2 },
- emitterRotationZ: { default: 0, field: 2 },
+ emitterSize: { default: [1, 1, 1], field: 4, scale: 1 },
+ emitterRotation: { default: [0, 0, 0], field: 4 },
unk_ac6_f1_9: { default: 1, field: 2 },
unk_ac6_f1_10: { default: 1, field: 2 },
unk_ac6_f1_11: { default: 1, field: 2 },
@@ -4342,27 +4315,17 @@ const ActionData: {
particleDuration: { default: 1, field: 1, time: 2 },
unk_ac6_f1_28: { default: 0, field: 1 },
unk_ac6_f1_29: { default: 0, field: 1 },
- particleOffsetX: { default: 0, field: 2, scale: 1 },
- particleOffsetY: { default: 0, field: 2, scale: 1 },
- particleOffsetZ: { default: 0, field: 2, scale: 1 },
- particleOffsetXMin: { default: 0, field: 2, scale: 1 },
- particleOffsetYMin: { default: 0, field: 2, scale: 1 },
- particleOffsetZMin: { default: 0, field: 2, scale: 1 },
- particleOffsetXMax: { default: 0, field: 2, scale: 1 },
- particleOffsetYMax: { default: 0, field: 2, scale: 1 },
- particleOffsetZMax: { default: 0, field: 2, scale: 1 },
+ particleOffset: { default: [0, 0, 0], field: 4, scale: 1 },
+ particleOffsetMin: { default: [0, 0, 0], field: 4, scale: 1 },
+ particleOffsetMax: { default: [0, 0, 0], field: 4, scale: 1 },
unk_ac6_f1_39: { default: 0, field: 1 },
- particleSpeedXMin: { default: -0.01, field: 2, scale: 1, time: 1 },
- particleSpeedYMin: { default: -0.01, field: 2, scale: 1, time: 1 },
- particleSpeedZMin: { default: -0.01, field: 2, scale: 1, time: 1 },
- particleSpeedXMax: { default: 0.01, field: 2, scale: 1, time: 1 },
- particleSpeedYMax: { default: 0.01, field: 2, scale: 1, time: 1 },
- particleSpeedZMax: { default: 0.01, field: 2, scale: 1, time: 1 },
+ particleSpeedMin: { default: [-0.01, -0.01, -0.01], field: 4, scale: 1, time: 1 },
+ particleSpeedMax: { default: [0.01, 0.01, 0.01], field: 4, scale: 1, time: 1 },
rgbMultiplier: { default: 1, field: 2 },
alphaMultiplier: { default: 1, field: 2 },
colorMin: { default: [0, 0, 0, 0], field: 5 },
colorMax: { default: [0, 0, 0, 0], field: 5 },
- blendMode: { default: BlendMode.Normal, field: 1 },
+ blendMode: { default: BlendMode.Add, field: 1 },
unk_ac6_f1_57: { default: -1, field: 1 },
unk_ac6_f1_58: { default: -1, field: 1 },
unk_ac6_f1_59: { default: 0, field: 1 },
@@ -4473,7 +4436,7 @@ const ActionData: {
[Game.Sekiro]: Game.ArmoredCore6,
[Game.EldenRing]: Game.ArmoredCore6,
[Game.ArmoredCore6]: {
- fields1: ['texture','emitterShape','unk_ac6_f1_1','emitterSizeX','emitterSizeY','emitterSizeZ','emitterRotationX','emitterRotationY','emitterRotationZ','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','particleOffsetX','particleOffsetY','particleOffsetZ','particleOffsetXMin','particleOffsetYMin','particleOffsetZMin','particleOffsetXMax','particleOffsetYMax','particleOffsetZMax','unk_ac6_f1_39','particleSpeedXMin','particleSpeedYMin','particleSpeedZMin','particleSpeedXMax','particleSpeedYMax','particleSpeedZMax','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'],
+ 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']
@@ -4485,12 +4448,8 @@ const ActionData: {
texture: { default: 1, field: 1, resource: 0, textureType: 'a' },
emitterShape: { default: EmitterShape.Box, field: 1 },
unk_ac6_f1_1: { default: 0, field: 1 },
- emitterSizeX: { default: 1, field: 2, scale: 1 },
- emitterSizeY: { default: 1, field: 2, scale: 1 },
- emitterSizeZ: { default: 1, field: 2, scale: 1 },
- emitterRotationX: { default: 0, field: 2 },
- emitterRotationY: { default: 0, field: 2 },
- emitterRotationZ: { default: 0, field: 2 },
+ emitterSize: { default: [1, 1, 1], field: 4, scale: 1 },
+ emitterRotation: { default: [0, 0, 0], field: 4 },
unk_ac6_f1_9: { default: 1, field: 2 },
unk_ac6_f1_10: { default: 1, field: 2 },
unk_ac6_f1_11: { default: 1, field: 2 },
@@ -4512,27 +4471,17 @@ const ActionData: {
particleDuration: { default: 1, field: 1, time: 2 },
unk_ac6_f1_28: { default: 0, field: 1 },
unk_ac6_f1_29: { default: 0, field: 1 },
- particleOffsetX: { default: 0, field: 2, scale: 1 },
- particleOffsetY: { default: 0, field: 2, scale: 1 },
- particleOffsetZ: { default: 0, field: 2, scale: 1 },
- particleOffsetXMin: { default: 0, field: 2, scale: 1 },
- particleOffsetYMin: { default: 0, field: 2, scale: 1 },
- particleOffsetZMin: { default: 0, field: 2, scale: 1 },
- particleOffsetXMax: { default: 0, field: 2, scale: 1 },
- particleOffsetYMax: { default: 0, field: 2, scale: 1 },
- particleOffsetZMax: { default: 0, field: 2, scale: 1 },
+ particleOffset: { default: [0, 0, 0], field: 4, scale: 1 },
+ particleOffsetMin: { default: [0, 0, 0], field: 4, scale: 1 },
+ particleOffsetMax: { default: [0, 0, 0], field: 4, scale: 1 },
unk_ac6_f1_39: { default: 0, field: 1 },
- particleSpeedXMin: { default: -0.01, field: 2, scale: 1, time: 1 },
- particleSpeedYMin: { default: -0.01, field: 2, scale: 1, time: 1 },
- particleSpeedZMin: { default: -0.01, field: 2, scale: 1, time: 1 },
- particleSpeedXMax: { default: 0.01, field: 2, scale: 1, time: 1 },
- particleSpeedYMax: { default: 0.01, field: 2, scale: 1, time: 1 },
- particleSpeedZMax: { default: 0.01, field: 2, scale: 1, time: 1 },
+ particleSpeedMin: { default: [-0.01, -0.01, -0.01], field: 4, scale: 1, time: 1 },
+ particleSpeedMax: { default: [0.01, 0.01, 0.01], field: 4, scale: 1, time: 1 },
rgbMultiplier: { default: 1, field: 2 },
alphaMultiplier: { default: 1, field: 2 },
colorMin: { default: [0, 0, 0, 0], field: 5 },
colorMax: { default: [0, 0, 0, 0], field: 5 },
- blendMode: { default: BlendMode.Normal, field: 1 },
+ blendMode: { default: BlendMode.Add, field: 1 },
unk_ac6_f1_57: { default: -1, field: 1 },
unk_ac6_f1_58: { default: -1, field: 1 },
unk_ac6_f1_59: { default: 0, field: 1 },
@@ -4642,7 +4591,7 @@ const ActionData: {
games: {
[Game.EldenRing]: Game.ArmoredCore6,
[Game.ArmoredCore6]: {
- fields1: ['texture','emitterShape','unk_ac6_f1_1','emitterSizeX','emitterSizeY','emitterSizeZ','emitterRotationX','emitterRotationY','emitterRotationZ','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','particleOffsetX','particleOffsetY','particleOffsetZ','particleOffsetXMin','particleOffsetYMin','particleOffsetZMin','particleOffsetXMax','particleOffsetYMax','particleOffsetZMax','unk_ac6_f1_39','particleSpeedXMin','particleSpeedYMin','particleSpeedZMin','particleSpeedXMax','particleSpeedYMax','particleSpeedZMax','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'],
+ 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']
@@ -5100,9 +5049,7 @@ const ActionData: {
props: {
shape: { default: ForceVolumeShape.Sphere, field: 1 },
sphereRadius: { default: 10, field: 2, scale: 1 },
- boxSizeX: { default: 0, field: 2, scale: 1 },
- boxSizeY: { default: 0, field: 2, scale: 1 },
- boxSizeZ: { default: 0, field: 2, scale: 1 },
+ boxSize: { default: [0, 0, 0], field: 4, scale: 1 },
cylinderHeight: { default: 0, field: 2, scale: 1 },
cylinderRadius: { default: 0, field: 2, scale: 1 },
squarePrismHeight: { default: 0, field: 2, scale: 1 },
@@ -5110,7 +5057,7 @@ const ActionData: {
},
games: {
[Game.DarkSouls3]: {
- fields1: ['shape','sphereRadius','boxSizeX','boxSizeY','boxSizeZ','cylinderHeight','cylinderRadius','squarePrismHeight','squarePrismApothem']
+ fields1: ['shape','sphereRadius','boxSize','cylinderHeight','cylinderRadius','squarePrismHeight','squarePrismApothem']
},
[Game.Sekiro]: Game.DarkSouls3,
[Game.EldenRing]: Game.DarkSouls3,
@@ -5122,9 +5069,7 @@ const ActionData: {
force: { default: 1, time: 1 },
shape: { default: ForceVolumeShape.Sphere, field: 1 },
sphereRadius: { default: 10, field: 2, scale: 1 },
- boxSizeX: { default: 0, field: 2, scale: 1 },
- boxSizeY: { default: 0, field: 2, scale: 1 },
- boxSizeZ: { default: 0, field: 2, scale: 1 },
+ boxSize: { default: [0, 0, 0], field: 4, scale: 1 },
cylinderHeight: { default: 0, field: 2, scale: 1 },
cylinderRadius: { default: 0, field: 2, scale: 1 },
squarePrismHeight: { default: 0, field: 2, scale: 1 },
@@ -5185,11 +5130,11 @@ const ActionData: {
},
games: {
[Game.DarkSouls3]: {
- fields1: ['shape','sphereRadius','boxSizeX','boxSizeY','boxSizeZ','cylinderHeight','cylinderRadius','squarePrismHeight','squarePrismApothem','unk_ds3_f1_9','unk_ds3_f1_10','unk_ds3_f1_11','unk_ds3_f1_12','unk_ds3_f1_13','unk_ds3_f1_14','unk_ds3_f1_15','unk_ds3_f1_16','unk_ds3_f1_17','unk_ds3_f1_18','unk_ds3_f1_19','unk_ds3_f1_20','unk_ds3_f1_21','unk_ds3_f1_22','unk_ds3_f1_23','unk_ds3_f1_24','unk_ds3_f1_25','unk_ds3_f1_26','unk_ds3_f1_27','unk_ds3_f1_28','unk_ds3_f1_29','unk_ds3_f1_30','unk_ds3_f1_31','unk_ds3_f1_32','unk_ds3_f1_33','unk_ds3_f1_34','unk_ds3_f1_35','unk_ds3_f1_36','unk_ds3_f1_37','forceRandomMultiplierMin','forceRandomMultiplierMax','unk_ds3_f1_40','unk_ds3_f1_41','unk_ds3_f1_42','unk_ds3_f1_43','unk_ds3_f1_44','unk_ds3_f1_45','forceMultiplier','unk_ds3_f1_47','unk_ds3_f1_48','unk_ds3_f1_49','unk_ds3_f1_50','fadeOutTime'],
+ fields1: ['shape','sphereRadius','boxSize','cylinderHeight','cylinderRadius','squarePrismHeight','squarePrismApothem','unk_ds3_f1_9','unk_ds3_f1_10','unk_ds3_f1_11','unk_ds3_f1_12','unk_ds3_f1_13','unk_ds3_f1_14','unk_ds3_f1_15','unk_ds3_f1_16','unk_ds3_f1_17','unk_ds3_f1_18','unk_ds3_f1_19','unk_ds3_f1_20','unk_ds3_f1_21','unk_ds3_f1_22','unk_ds3_f1_23','unk_ds3_f1_24','unk_ds3_f1_25','unk_ds3_f1_26','unk_ds3_f1_27','unk_ds3_f1_28','unk_ds3_f1_29','unk_ds3_f1_30','unk_ds3_f1_31','unk_ds3_f1_32','unk_ds3_f1_33','unk_ds3_f1_34','unk_ds3_f1_35','unk_ds3_f1_36','unk_ds3_f1_37','forceRandomMultiplierMin','forceRandomMultiplierMax','unk_ds3_f1_40','unk_ds3_f1_41','unk_ds3_f1_42','unk_ds3_f1_43','unk_ds3_f1_44','unk_ds3_f1_45','forceMultiplier','unk_ds3_f1_47','unk_ds3_f1_48','unk_ds3_f1_49','unk_ds3_f1_50','fadeOutTime'],
properties1: ['force']
},
[Game.Sekiro]: {
- fields1: ['shape','sphereRadius','boxSizeX','boxSizeY','boxSizeZ','cylinderHeight','cylinderRadius','squarePrismHeight','squarePrismApothem','unk_ds3_f1_9','unk_ds3_f1_10','unk_ds3_f1_11','unk_ds3_f1_12','unk_ds3_f1_13','unk_ds3_f1_14','unk_ds3_f1_15','unk_ds3_f1_16','unk_ds3_f1_17','unk_ds3_f1_18','unk_ds3_f1_19','unk_ds3_f1_20','unk_ds3_f1_21','unk_ds3_f1_22','unk_ds3_f1_23','unk_ds3_f1_24','unk_ds3_f1_25','unk_ds3_f1_26','unk_ds3_f1_27','unk_ds3_f1_28','unk_ds3_f1_29','unk_ds3_f1_30','unk_ds3_f1_31','unk_ds3_f1_32','unk_ds3_f1_33','unk_ds3_f1_34','unk_ds3_f1_35','unk_ds3_f1_36','unk_ds3_f1_37','forceRandomMultiplierMin','forceRandomMultiplierMax','unk_ds3_f1_40','unk_ds3_f1_41','unk_ds3_f1_42','unk_ds3_f1_44','unk_ds3_f1_45','forceMultiplier','unk_ds3_f1_47','unk_ds3_f1_48','unk_sdt_f1_48','unk_sdt_f1_49','unk_sdt_f1_50','unk_sdt_f1_51','unk_sdt_f1_52','fadeOutTime','unk_sdt_f1_54','unk_sdt_f1_55','unk_sdt_f1_56','unk_sdt_f1_57','unk_sdt_f1_58','unk_ds3_f1_49','unk_ds3_f1_50'],
+ fields1: ['shape','sphereRadius','boxSize','cylinderHeight','cylinderRadius','squarePrismHeight','squarePrismApothem','unk_ds3_f1_9','unk_ds3_f1_10','unk_ds3_f1_11','unk_ds3_f1_12','unk_ds3_f1_13','unk_ds3_f1_14','unk_ds3_f1_15','unk_ds3_f1_16','unk_ds3_f1_17','unk_ds3_f1_18','unk_ds3_f1_19','unk_ds3_f1_20','unk_ds3_f1_21','unk_ds3_f1_22','unk_ds3_f1_23','unk_ds3_f1_24','unk_ds3_f1_25','unk_ds3_f1_26','unk_ds3_f1_27','unk_ds3_f1_28','unk_ds3_f1_29','unk_ds3_f1_30','unk_ds3_f1_31','unk_ds3_f1_32','unk_ds3_f1_33','unk_ds3_f1_34','unk_ds3_f1_35','unk_ds3_f1_36','unk_ds3_f1_37','forceRandomMultiplierMin','forceRandomMultiplierMax','unk_ds3_f1_40','unk_ds3_f1_41','unk_ds3_f1_42','unk_ds3_f1_44','unk_ds3_f1_45','forceMultiplier','unk_ds3_f1_47','unk_ds3_f1_48','unk_sdt_f1_48','unk_sdt_f1_49','unk_sdt_f1_50','unk_sdt_f1_51','unk_sdt_f1_52','fadeOutTime','unk_sdt_f1_54','unk_sdt_f1_55','unk_sdt_f1_56','unk_sdt_f1_57','unk_sdt_f1_58','unk_ds3_f1_49','unk_ds3_f1_50'],
properties1: Game.DarkSouls3
},
[Game.EldenRing]: Game.Sekiro,
@@ -5201,9 +5146,7 @@ const ActionData: {
force: { default: 1, time: 1 },
shape: { default: ForceVolumeShape.Sphere, field: 1 },
sphereRadius: { default: 10, field: 2, scale: 1 },
- boxSizeX: { default: 0, field: 2, scale: 1 },
- boxSizeY: { default: 0, field: 2, scale: 1 },
- boxSizeZ: { default: 0, field: 2, scale: 1 },
+ boxSize: { default: [0, 0, 0], field: 4, scale: 1 },
cylinderHeight: { default: 0, field: 2, scale: 1 },
cylinderRadius: { default: 0, field: 2, scale: 1 },
squarePrismHeight: { default: 0, field: 2, scale: 1 },
@@ -5241,7 +5184,7 @@ const ActionData: {
},
games: {
[Game.DarkSouls3]: {
- fields1: ['shape','sphereRadius','boxSizeX','boxSizeY','boxSizeZ','cylinderHeight','cylinderRadius','squarePrismHeight','squarePrismApothem','unk_ds3_f1_9','unk_ds3_f1_10','unk_ds3_f1_11','unk_ds3_f1_12','unk_ds3_f1_13','unk_ds3_f1_14','unk_ds3_f1_15','unk_ds3_f1_16','unk_ds3_f1_17','unk_ds3_f1_18','unk_ds3_f1_19','unk_ds3_f1_20','unk_ds3_f1_21','unk_ds3_f1_22','unk_ds3_f1_23','unk_ds3_f1_24','unk_ds3_f1_25','unk_ds3_f1_26','unk_ds3_f1_27','forceRandomMultiplierMin','forceRandomMultiplierMax','unk_ds3_f1_30','unk_ds3_f1_31','unk_ds3_f1_32','unk_ds3_f1_33','unk_ds3_f1_34','forceMultiplier','unk_ds3_f1_36','unk_ds3_f1_37','fadeOutTime'],
+ fields1: ['shape','sphereRadius','boxSize','cylinderHeight','cylinderRadius','squarePrismHeight','squarePrismApothem','unk_ds3_f1_9','unk_ds3_f1_10','unk_ds3_f1_11','unk_ds3_f1_12','unk_ds3_f1_13','unk_ds3_f1_14','unk_ds3_f1_15','unk_ds3_f1_16','unk_ds3_f1_17','unk_ds3_f1_18','unk_ds3_f1_19','unk_ds3_f1_20','unk_ds3_f1_21','unk_ds3_f1_22','unk_ds3_f1_23','unk_ds3_f1_24','unk_ds3_f1_25','unk_ds3_f1_26','unk_ds3_f1_27','forceRandomMultiplierMin','forceRandomMultiplierMax','unk_ds3_f1_30','unk_ds3_f1_31','unk_ds3_f1_32','unk_ds3_f1_33','unk_ds3_f1_34','forceMultiplier','unk_ds3_f1_36','unk_ds3_f1_37','fadeOutTime'],
properties1: ['force']
},
[Game.Sekiro]: Game.DarkSouls3,
@@ -5253,15 +5196,13 @@ const ActionData: {
props: {
shape: { default: ForceVolumeShape.Sphere, field: 1 },
sphereRadius: { default: 10, field: 2, scale: 1 },
- boxSizeX: { default: 0, field: 2, scale: 1 },
- boxSizeY: { default: 0, field: 2, scale: 1 },
- boxSizeZ: { default: 0, field: 2, scale: 1 },
+ boxSize: { default: [0, 0, 0], field: 4, scale: 1 },
cylinderHeight: { default: 0, field: 2, scale: 1 },
cylinderRadius: { default: 0, field: 2, scale: 1 },
},
games: {
[Game.DarkSouls3]: {
- fields1: ['shape','sphereRadius','boxSizeX','boxSizeY','boxSizeZ','cylinderHeight','cylinderRadius']
+ fields1: ['shape','sphereRadius','boxSize','cylinderHeight','cylinderRadius']
},
[Game.Sekiro]: Game.DarkSouls3,
[Game.EldenRing]: Game.DarkSouls3,
@@ -5276,9 +5217,7 @@ const ActionData: {
force: { default: 1, time: 1 },
shape: { default: ForceVolumeShape.Sphere, field: 1 },
sphereRadius: { default: 10, field: 2, scale: 1 },
- boxSizeX: { default: 0, field: 2, scale: 1 },
- boxSizeY: { default: 0, field: 2, scale: 1 },
- boxSizeZ: { default: 0, field: 2, scale: 1 },
+ boxSize: { default: [0, 0, 0], field: 4, scale: 1 },
cylinderHeight: { default: 0, field: 2, scale: 1 },
cylinderRadius: { default: 0, field: 2, scale: 1 },
squarePrismHeight: { default: 0, field: 2, scale: 1 },
@@ -5329,7 +5268,7 @@ const ActionData: {
},
games: {
[Game.Sekiro]: {
- fields1: ['shape','sphereRadius','boxSizeX','boxSizeY','boxSizeZ','cylinderHeight','cylinderRadius','squarePrismHeight','squarePrismApothem','unk_unk_f1_9','unk_unk_f1_10','unk_unk_f1_11','unk_unk_f1_12','unk_unk_f1_13','unk_unk_f1_14','unk_unk_f1_15','unk_unk_f1_16','unk_unk_f1_17','unk_unk_f1_18','unk_unk_f1_19','unk_unk_f1_20','unk_unk_f1_21','unk_unk_f1_22','unk_unk_f1_23','forceRandomMultiplierMin','forceRandomMultiplierMax','noiseScale','unk_unk_f1_27','unk_unk_f1_28','enableSoftRadius','softRadius','unk_unk_f1_31','unk_unk_f1_32','unk_unk_f1_33','unk_unk_f1_34','unk_unk_f1_35','unk_unk_f1_36','unk_unk_f1_37','unk_unk_f1_38','unk_unk_f1_39','fadeOutTime','unk_unk_f1_41','unk_unk_f1_42','unk_unk_f1_43','unk_unk_f1_44','unk_unk_f1_45','unk_unk_f1_46','unk_unk_f1_47','unk_unk_f1_48','unk_unk_f1_49','unk_unk_f1_50','unk_unk_f1_51'],
+ fields1: ['shape','sphereRadius','boxSize','cylinderHeight','cylinderRadius','squarePrismHeight','squarePrismApothem','unk_unk_f1_9','unk_unk_f1_10','unk_unk_f1_11','unk_unk_f1_12','unk_unk_f1_13','unk_unk_f1_14','unk_unk_f1_15','unk_unk_f1_16','unk_unk_f1_17','unk_unk_f1_18','unk_unk_f1_19','unk_unk_f1_20','unk_unk_f1_21','unk_unk_f1_22','unk_unk_f1_23','forceRandomMultiplierMin','forceRandomMultiplierMax','noiseScale','unk_unk_f1_27','unk_unk_f1_28','enableSoftRadius','softRadius','unk_unk_f1_31','unk_unk_f1_32','unk_unk_f1_33','unk_unk_f1_34','unk_unk_f1_35','unk_unk_f1_36','unk_unk_f1_37','unk_unk_f1_38','unk_unk_f1_39','fadeOutTime','unk_unk_f1_41','unk_unk_f1_42','unk_unk_f1_43','unk_unk_f1_44','unk_unk_f1_45','unk_unk_f1_46','unk_unk_f1_47','unk_unk_f1_48','unk_unk_f1_49','unk_unk_f1_50','unk_unk_f1_51'],
properties1: ['noiseOffsetX','noiseOffsetY','noiseOffsetZ','force']
},
[Game.EldenRing]: Game.Sekiro,
@@ -6805,15 +6744,15 @@ function readFieldsWithTypes(br: BinaryReader, count: number, types: FieldType[]
break
case FieldType.Vector2:
i += 2
- fields.push(new Vec2Field([ br.readFloat32(), br.readFloat32() ]))
+ fields.push(new Vector2Field([ br.readFloat32(), br.readFloat32() ]))
break
case FieldType.Vector3:
i += 3
- fields.push(new Vec3Field([ br.readFloat32(), br.readFloat32(), br.readFloat32() ]))
+ fields.push(new Vector3Field([ br.readFloat32(), br.readFloat32(), br.readFloat32() ]))
break
case FieldType.Vector4:
i += 4
- fields.push(new Vec4Field([
+ fields.push(new Vector4Field([
br.readFloat32(),
br.readFloat32(),
br.readFloat32(),
@@ -7170,9 +7109,8 @@ function filterMillisecondDiffs(nums: Iterable) {
*
* Multiplying two vectors of different dimensionalities is not supported, but
* a vector and a scalar will work.
- * @param av1
- * @param av2
- * @returns
+ * @param av1 Left operand.
+ * @param av2 Right operand.
*/
function anyValueMult(av1: AnyValue, av2: AnyValue): T {
// If p2 is none of these, it's invalid, likely undefined or null, it must
@@ -7348,9 +7286,8 @@ function anyValueMult(av1: AnyValue, av2: AnyValue): T {
*
* Adding two vectors of different dimensionalities is not supported, but
* a vector and a scalar will work.
- * @param av1
- * @param av2
- * @returns
+ * @param av1 Left operand.
+ * @param av2 Right operand.
*/
function anyValueSum(av1: AnyValue, av2: AnyValue): T {
// If p2 is none of these, it's invalid, likely undefined or null, it must
@@ -7538,6 +7475,19 @@ function anyValueSum(av1: AnyValue, av2: AnyValue): T {
return anyValueSum(av2, av1)
}
+/**
+ * Subtracts one number, vector, or a property of either kind to another
+ * number, vector, or property.
+ *
+ * Subtracting two vectors of different dimensionalities is not supported, but
+ * a vector and a scalar will work.
+ * @param av1 Left operand.
+ * @param av2 Right operand.
+ */
+function anyValueDiff(av1: AnyValue, av2: AnyValue): T {
+ return anyValueSum(av1, anyValueMult(-1, av2))
+}
+
function steppedToLinearProperty(prop: SequenceProperty) {
return new LinearProperty(prop.loop, prop.keyframes.flatMap((kf, i, a) => [
new Keyframe(i === 0 ? 0 : a[i].position - 0.001, kf.value),
@@ -7831,6 +7781,19 @@ function assertValidFXRID(id: number) {
}
}
+function normalizeVector3([x, y, z]: Vector3): Vector3 {
+ const l = Math.sqrt(x * x + y * y + z * z)
+ return [
+ x / l,
+ y / l,
+ z / l,
+ ]
+}
+
+function constantValueOf(v: AnyValue) {
+ return v instanceof Property ? v.valueAt(0) : v
+}
+
const ActionDataConversion = {
[ActionType.StaticNodeTransform]: {
read(props: StaticNodeTransformParams, game: Game) {
@@ -9735,16 +9698,10 @@ abstract class Node {
if (!('distortionParticle' in palette)) {
avgCommonNormal ??= averagePaletteEntries(palette.commonParticleNormal)[0]
palette.distortionParticle = [{
- modifier: avgCommonNormal.modifier,
- color: anyValueMult(
- anyValueMult(
- avgCommonNormal.color1,
- avgCommonNormal.color2
- ),
- avgCommonNormal.color3,
- ),
- rgbMultiplier: avgCommonNormal.rgbMultiplier,
- bloomColor: avgCommonNormal.bloomColor
+ modifier: new ConstantProperty(1, 1, 1, 1),
+ color: new ConstantProperty(1, 1, 1, 1),
+ rgbMultiplier: 1,
+ bloomColor: [1, 1, 1, 0]
}]
}
palette.blurParticle ??= palette.distortionParticle
@@ -10983,6 +10940,8 @@ class NodeEmitterEffect implements IEffect {
//#region Action
class Action implements IAction {
+ readonly meta: ActionMeta & {isAppearance:false,isParticle:false} = {isAppearance:false,isParticle:false}
+
constructor(
public type: ActionType = ActionType.None,
public fields1: Field[] = [],
@@ -11137,7 +11096,11 @@ class Action implements IAction {
*/
class DataAction implements IAction {
- constructor(public readonly type: ActionType) {}
+ /**
+ * @param type The {@link ActionType numeric ID for the type of action} this represents.
+ * @param meta Contains information about the action type.
+ */
+ constructor(public readonly type: ActionType, public readonly meta: ActionMeta) {}
assign(props: any = {}) {
for (const [k, v] of Object.entries(ActionData[this.type].props)) {
@@ -11690,7 +11653,8 @@ export interface NodeAccelerationParams {
* Controls the movement of the node. This is the most basic action for controlling the acceleration of nodes.
*/
class NodeAcceleration extends DataAction {
- declare type: ActionType.NodeAcceleration
+ declare readonly type: ActionType.NodeAcceleration
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* Controls the speed of the node along its Z-axis.
*
@@ -11722,7 +11686,7 @@ class NodeAcceleration extends DataAction {
alignWithMotion: number
unk_ds3_f1_2: number
constructor(props: NodeAccelerationParams = {}) {
- super(ActionType.NodeAcceleration)
+ super(ActionType.NodeAcceleration, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -11751,7 +11715,8 @@ export interface NodeTranslationParams {
* Translates the node using a property, meaning it can be animated. This can be useful if you need the node to follow a specific path.
*/
class NodeTranslation extends DataAction {
- declare type: ActionType.NodeTranslation
+ declare readonly type: ActionType.NodeTranslation
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* An offset for the position of the node.
*
@@ -11763,7 +11728,7 @@ class NodeTranslation extends DataAction {
*/
unk_er_f1_0: number
constructor(props: NodeTranslationParams = {}) {
- super(ActionType.NodeTranslation)
+ super(ActionType.NodeTranslation, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -11841,7 +11806,8 @@ export interface NodeSpinParams {
* Controls the angular speed of the node.
*/
class NodeSpin extends DataAction {
- declare type: ActionType.NodeSpin
+ declare readonly type: ActionType.NodeSpin
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* The node's angular speed around its local X-axis in degrees per second.
*
@@ -11889,7 +11855,7 @@ class NodeSpin extends DataAction {
angularSpeedMultiplierZ: ScalarValue
unk_ds3_f1_0: number
constructor(props: NodeSpinParams = {}) {
- super(ActionType.NodeSpin)
+ super(ActionType.NodeSpin, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -11916,7 +11882,8 @@ export interface StaticNodeTransformParams {
* Controls the translation and rotation of a node.
*/
class StaticNodeTransform extends DataAction {
- declare type: ActionType.StaticNodeTransform
+ declare readonly type: ActionType.StaticNodeTransform
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* Translation of the node.
*/
@@ -11926,7 +11893,7 @@ class StaticNodeTransform extends DataAction {
*/
rotation: Vector3
constructor(props: StaticNodeTransformParams = {}) {
- super(ActionType.StaticNodeTransform)
+ super(ActionType.StaticNodeTransform, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -11965,7 +11932,8 @@ export interface RandomNodeTransformParams {
* Controls the translation and rotation of a node, and can also randomize them.
*/
class RandomNodeTransform extends DataAction {
- declare type: ActionType.RandomNodeTransform
+ declare readonly type: ActionType.RandomNodeTransform
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* Translation of the node.
*/
@@ -11983,7 +11951,7 @@ class RandomNodeTransform extends DataAction {
*/
rotationVariance: Vector3
constructor(props: RandomNodeTransformParams = {}) {
- super(ActionType.RandomNodeTransform)
+ super(ActionType.RandomNodeTransform, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -12010,14 +11978,15 @@ export interface NodeAttachToCameraParams {
* Attaches the node to the camera.
*/
class NodeAttachToCamera extends DataAction {
- declare type: ActionType.NodeAttachToCamera
+ declare readonly type: ActionType.NodeAttachToCamera
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* Disable this to stop the node from following the rotation of the camera.
*/
followRotation: boolean
unk_ds3_f1_1: number
constructor(props: NodeAttachToCameraParams = {}) {
- super(ActionType.NodeAttachToCamera)
+ super(ActionType.NodeAttachToCamera, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -12070,7 +12039,8 @@ export interface ParticleAccelerationParams {
* Controls the movement of particles. This is the most basic action for controlling the acceleration of particles.
*/
class ParticleAcceleration extends DataAction {
- declare type: ActionType.ParticleAcceleration
+ declare readonly type: ActionType.ParticleAcceleration
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* Controls the acceleration of the particle along the global Y-axis. Positive values will make the particles go down, and negative values will go up.
*
@@ -12094,7 +12064,7 @@ class ParticleAcceleration extends DataAction {
unk_ds3_f1_0: number
unk_ds3_f1_1: number
constructor(props: ParticleAccelerationParams = {}) {
- super(ActionType.ParticleAcceleration)
+ super(ActionType.ParticleAcceleration, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -12147,7 +12117,8 @@ export interface ParticleSpeedParams {
* Controls the movement of particles. This is the most basic action for controlling the speed of particles.
*/
class ParticleSpeed extends DataAction {
- declare type: ActionType.ParticleSpeed
+ declare readonly type: ActionType.ParticleSpeed
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* Controls the acceleration of the particle along the global Y-axis. Positive values will make the particles go down, and negative values will go up.
*
@@ -12171,7 +12142,7 @@ class ParticleSpeed extends DataAction {
unk_ds3_f1_0: number
unk_ds3_f1_1: number
constructor(props: ParticleSpeedParams = {}) {
- super(ActionType.ParticleSpeed)
+ super(ActionType.ParticleSpeed, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -12236,7 +12207,8 @@ export interface ParticleSpeedRandomTurnsParams {
* Controls the movement of particles. This extends {@link ActionType.ParticleSpeed ParticleSpeed} with the ability to make particles make random turns at a fixed interval.
*/
class ParticleSpeedRandomTurns extends DataAction {
- declare type: ActionType.ParticleSpeedRandomTurns
+ declare readonly type: ActionType.ParticleSpeedRandomTurns
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* Controls the acceleration of the particle along the global Y-axis. Positive values will make the particles go down, and negative values will go up.
*
@@ -12273,7 +12245,7 @@ class ParticleSpeedRandomTurns extends DataAction {
*/
turnInterval: number
constructor(props: ParticleSpeedRandomTurnsParams = {}) {
- super(ActionType.ParticleSpeedRandomTurns)
+ super(ActionType.ParticleSpeedRandomTurns, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -12355,7 +12327,8 @@ export interface ParticleSpeedPartialFollowParams {
* Controls the movement of particles. This extends {@link ActionType.ParticleSpeedRandomTurns ParticleSpeedRandomTurns} with the ability to make particles partially follow the parent node.
*/
class ParticleSpeedPartialFollow extends DataAction {
- declare type: ActionType.ParticleSpeedPartialFollow
+ declare readonly type: ActionType.ParticleSpeedPartialFollow
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* Controls the acceleration of the particle along the global Y-axis. Positive values will make the particles go down, and negative values will go up.
*
@@ -12405,7 +12378,7 @@ class ParticleSpeedPartialFollow extends DataAction {
*/
followRotation: boolean
constructor(props: ParticleSpeedPartialFollowParams = {}) {
- super(ActionType.ParticleSpeedPartialFollow)
+ super(ActionType.ParticleSpeedPartialFollow, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -12442,7 +12415,8 @@ export interface NodeSoundParams {
* Plays a sound effect when the node activates that can repeat.
*/
class NodeSound extends DataAction {
- declare type: ActionType.NodeSound
+ declare readonly type: ActionType.NodeSound
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* The ID of the sound to play.
*/
@@ -12460,7 +12434,7 @@ class NodeSound extends DataAction {
*/
volume: number
constructor(props: NodeSoundParams = {}) {
- super(ActionType.NodeSound)
+ super(ActionType.NodeSound, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -12487,14 +12461,15 @@ export interface EmissionSoundParams {
* Plays a sound effect every time the node emits particles. It only plays the sound once per emission, not once per particle.
*/
class EmissionSound extends DataAction {
- declare type: ActionType.EmissionSound
+ declare readonly type: ActionType.EmissionSound
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* The ID of the sound to play.
*/
sound: number
unk_ds3_f1_1: number
constructor(props: EmissionSoundParams = {}) {
- super(ActionType.EmissionSound)
+ super(ActionType.EmissionSound, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -12567,7 +12542,8 @@ export interface NodeAccelerationRandomTurnsParams {
* Controls the movement of the node. This extends {@link ActionType.NodeAcceleration NodeAcceleration} with the ability to make the node turn a random amount at a given interval.
*/
class NodeAccelerationRandomTurns extends DataAction {
- declare type: ActionType.NodeAccelerationRandomTurns
+ declare readonly type: ActionType.NodeAccelerationRandomTurns
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* Controls the speed of the node along its Z-axis.
*
@@ -12608,7 +12584,7 @@ class NodeAccelerationRandomTurns extends DataAction {
*/
turnInterval: number
constructor(props: NodeAccelerationRandomTurnsParams = {}) {
- super(ActionType.NodeAccelerationRandomTurns)
+ super(ActionType.NodeAccelerationRandomTurns, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -12673,7 +12649,8 @@ export interface ParticleAccelerationRandomTurnsParams {
* Controls the movement of particles. This extends {@link ActionType.ParticleAcceleration ParticleAcceleration} with the ability to make particles make random turns at a fixed interval.
*/
class ParticleAccelerationRandomTurns extends DataAction {
- declare type: ActionType.ParticleAccelerationRandomTurns
+ declare readonly type: ActionType.ParticleAccelerationRandomTurns
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* Controls the acceleration of the particle along the global Y-axis. Positive values will make the particles go down, and negative values will go up.
*
@@ -12710,7 +12687,7 @@ class ParticleAccelerationRandomTurns extends DataAction {
*/
turnInterval: number
constructor(props: ParticleAccelerationRandomTurnsParams = {}) {
- super(ActionType.ParticleAccelerationRandomTurns)
+ super(ActionType.ParticleAccelerationRandomTurns, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -12792,7 +12769,8 @@ export interface ParticleAccelerationPartialFollowParams {
* Controls the movement of particles. This extends {@link ActionType.ParticleAccelerationRandomTurns ParticleAccelerationRandomTurns} with the ability to make particles partially follow the parent node.
*/
class ParticleAccelerationPartialFollow extends DataAction {
- declare type: ActionType.ParticleAccelerationPartialFollow
+ declare readonly type: ActionType.ParticleAccelerationPartialFollow
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* Controls the acceleration of the particle along the global Y-axis. Positive values will make the particles go down, and negative values will go up.
*
@@ -12842,7 +12820,7 @@ class ParticleAccelerationPartialFollow extends DataAction {
*/
followRotation: boolean
constructor(props: ParticleAccelerationPartialFollowParams = {}) {
- super(ActionType.ParticleAccelerationPartialFollow)
+ super(ActionType.ParticleAccelerationPartialFollow, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -12937,7 +12915,8 @@ export interface NodeAccelerationPartialFollowParams {
* Controls the movement of the node. This extends {@link ActionType.NodeAccelerationRandomTurns NodeAccelerationRandomTurns} with the ability to make the node partially follow or exaggerate the parent node's movement.
*/
class NodeAccelerationPartialFollow extends DataAction {
- declare type: ActionType.NodeAccelerationPartialFollow
+ declare readonly type: ActionType.NodeAccelerationPartialFollow
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* Controls the speed of the node along its Z-axis.
*
@@ -12996,7 +12975,7 @@ class NodeAccelerationPartialFollow extends DataAction {
*/
followRotation: boolean
constructor(props: NodeAccelerationPartialFollowParams = {}) {
- super(ActionType.NodeAccelerationPartialFollow)
+ super(ActionType.NodeAccelerationPartialFollow, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -13124,7 +13103,8 @@ export interface NodeAccelerationSpinParams {
* Controls the movement of the node. This extends {@link ActionType.NodeAcceleration NodeAcceleration} with the ability to control the node's angular speed.
*/
class NodeAccelerationSpin extends DataAction {
- declare type: ActionType.NodeAccelerationSpin
+ declare readonly type: ActionType.NodeAccelerationSpin
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* Controls the speed of the node along its Z-axis.
*
@@ -13202,7 +13182,7 @@ class NodeAccelerationSpin extends DataAction {
alignWithMotion: number
unk_ds3_f1_3: number
constructor(props: NodeAccelerationSpinParams = {}) {
- super(ActionType.NodeAccelerationSpin)
+ super(ActionType.NodeAccelerationSpin, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -13259,7 +13239,8 @@ export interface NodeSpeedParams {
* Controls the movement of the node. This is the most basic action for controlling the speed of nodes.
*/
class NodeSpeed extends DataAction {
- declare type: ActionType.NodeSpeed
+ declare readonly type: ActionType.NodeSpeed
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* Controls the speed of the node along its Z-axis.
*
@@ -13285,7 +13266,7 @@ class NodeSpeed extends DataAction {
alignWithMotion: number
unk_ds3_f1_2: number
constructor(props: NodeSpeedParams = {}) {
- super(ActionType.NodeSpeed)
+ super(ActionType.NodeSpeed, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -13350,7 +13331,8 @@ export interface NodeSpeedRandomTurnsParams {
* Controls the movement of the node. This extends {@link ActionType.NodeSpeed NodeSpeed} with the ability to make the node turn a random amount at a given interval.
*/
class NodeSpeedRandomTurns extends DataAction {
- declare type: ActionType.NodeSpeedRandomTurns
+ declare readonly type: ActionType.NodeSpeedRandomTurns
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* Controls the speed of the node along its Z-axis.
*
@@ -13385,7 +13367,7 @@ class NodeSpeedRandomTurns extends DataAction {
*/
turnInterval: number
constructor(props: NodeSpeedRandomTurnsParams = {}) {
- super(ActionType.NodeSpeedRandomTurns)
+ super(ActionType.NodeSpeedRandomTurns, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -13469,7 +13451,8 @@ export interface NodeSpeedPartialFollowParams {
* Controls the movement of the node. This extends {@link ActionType.NodeSpeedRandomTurns NodeSpeedRandomTurns} with the ability to make the node partially follow or exaggerate the parent node's movement.
*/
class NodeSpeedPartialFollow extends DataAction {
- declare type: ActionType.NodeSpeedPartialFollow
+ declare readonly type: ActionType.NodeSpeedPartialFollow
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* Controls the speed of the node along its Z-axis.
*
@@ -13519,7 +13502,7 @@ class NodeSpeedPartialFollow extends DataAction {
*/
followRotation: boolean
constructor(props: NodeSpeedPartialFollowParams = {}) {
- super(ActionType.NodeSpeedPartialFollow)
+ super(ActionType.NodeSpeedPartialFollow, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -13639,7 +13622,8 @@ export interface NodeSpeedSpinParams {
* Controls the movement of the node. This extends {@link ActionType.NodeSpeed NodeSpeed} with the ability to control the node's angular speed.
*/
class NodeSpeedSpin extends DataAction {
- declare type: ActionType.NodeSpeedSpin
+ declare readonly type: ActionType.NodeSpeedSpin
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* Controls the speed of the node along its Z-axis.
*
@@ -13711,7 +13695,7 @@ class NodeSpeedSpin extends DataAction {
alignWithMotion: number
unk_ds3_f1_3: number
constructor(props: NodeSpeedSpinParams = {}) {
- super(ActionType.NodeSpeedSpin)
+ super(ActionType.NodeSpeedSpin, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -13758,7 +13742,8 @@ export interface NodeAttributesParams {
* Controls various things about the node, like its duration, and how it is attached to the parent node.
*/
class NodeAttributes extends DataAction {
- declare type: ActionType.NodeAttributes
+ declare readonly type: ActionType.NodeAttributes
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* Controls how the node is attached to the parent node.
*/
@@ -13776,7 +13761,7 @@ class NodeAttributes extends DataAction {
unk_ds3_f1_1: number
unk_ds3_f1_3: number
constructor(props: NodeAttributesParams = {}) {
- super(ActionType.NodeAttributes)
+ super(ActionType.NodeAttributes, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -13805,7 +13790,8 @@ export interface ParticleAttributesParams {
* Controls the duration of particles emitted by the node, and how the particles are attached to the node.
*/
class ParticleAttributes extends DataAction {
- declare type: ActionType.ParticleAttributes
+ declare readonly type: ActionType.ParticleAttributes
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* Controls how the particles are attached to the node.
*/
@@ -13817,7 +13803,7 @@ class ParticleAttributes extends DataAction {
*/
duration: ScalarValue
constructor(props: ParticleAttributesParams = {}) {
- super(ActionType.ParticleAttributes)
+ super(ActionType.ParticleAttributes, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -13934,7 +13920,8 @@ export interface Unk130Params {
* Unknown action that is in every basic effect in every game, and still literally nothing is known about it.
*/
class Unk130 extends DataAction {
- declare type: ActionType.Unk130
+ declare readonly type: ActionType.Unk130
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
unk_ds3_f1_0: number
unk_ds3_f1_1: number
unk_ds3_f1_2: number
@@ -13953,7 +13940,7 @@ class Unk130 extends DataAction {
unk_ds3_p1_6: ScalarValue
unk_ds3_p1_7: ScalarValue
constructor(props: Unk130Params = {}) {
- super(ActionType.Unk130)
+ super(ActionType.Unk130, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -14027,7 +14014,8 @@ export interface ParticleModifierParams {
* Note: This is **not** a {@link Modifier property modifier}, it is an action that modifies particles emitted from the same node.
*/
class ParticleModifier extends DataAction {
- declare type: ActionType.ParticleModifier
+ 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.
*
@@ -14074,7 +14062,7 @@ class ParticleModifier extends DataAction {
*/
color: Vector4Value
constructor(props: ParticleModifierParams = {}) {
- super(ActionType.ParticleModifier)
+ super(ActionType.ParticleModifier, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -14085,7 +14073,8 @@ class ParticleModifier extends DataAction {
* References another SFX by its ID.
*/
class SFXReference extends DataAction {
- declare type: ActionType.SFXReference
+ declare readonly type: ActionType.SFXReference
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* The ID of the referenced SFX.
*/
@@ -14096,7 +14085,7 @@ class SFXReference extends DataAction {
* **Default**: `0`
*/
constructor(sfx: number = 0) {
- super(ActionType.SFXReference)
+ super(ActionType.SFXReference, {isAppearance:false,isParticle:false})
this.assign({ sfx })
}
}
@@ -14154,7 +14143,8 @@ export interface LevelsOfDetailThresholdsParams {
* Used in the {@link EffectType.LevelsOfDetail levels of detail effect} to manage the duration and thresholds for the {@link NodeType.LevelsOfDetail levels of detail node}.
*/
class LevelsOfDetailThresholds extends DataAction {
- declare type: ActionType.LevelsOfDetailThresholds
+ declare readonly type: ActionType.LevelsOfDetailThresholds
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* The node duration in seconds. Can be set to -1 to make the node last forever.
*
@@ -14183,7 +14173,7 @@ class LevelsOfDetailThresholds extends DataAction {
threshold4: number
unk_ac6_f1_5: number
constructor(props: LevelsOfDetailThresholdsParams = {}) {
- super(ActionType.LevelsOfDetailThresholds)
+ super(ActionType.LevelsOfDetailThresholds, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -14194,7 +14184,8 @@ class LevelsOfDetailThresholds extends DataAction {
* Maps states to effects in the parent node.
*/
class StateEffectMap extends DataAction {
- declare type: ActionType.StateEffectMap
+ declare readonly type: ActionType.StateEffectMap
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* A list of effect indices.
*
@@ -14209,7 +14200,7 @@ class StateEffectMap extends DataAction {
* **Default**: `[0]`
*/
constructor(effectIndices: number[] = [0]) {
- super(ActionType.StateEffectMap)
+ super(ActionType.StateEffectMap, {isAppearance:false,isParticle:false})
this.assign({ effectIndices })
}
}
@@ -14221,10 +14212,11 @@ class StateEffectMap extends DataAction {
* Used in {@link EffectType.NodeEmitter NodeEmitter effects} to emit all child nodes every emission.
*/
class SelectAllNodes extends DataAction {
- declare type: ActionType.SelectAllNodes
+ declare readonly type: ActionType.SelectAllNodes
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
constructor() {
- super(ActionType.SelectAllNodes)
+ super(ActionType.SelectAllNodes, {isAppearance:false,isParticle:false})
}
}
@@ -14235,7 +14227,8 @@ class SelectAllNodes extends DataAction {
* Used in {@link EffectType.NodeEmitter NodeEmitter effects} to emit a random child node every emission.
*/
class SelectRandomNode extends DataAction {
- declare type: ActionType.SelectRandomNode
+ declare readonly type: ActionType.SelectRandomNode
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* Probability weights for each child node to be selected for emission.
*
@@ -14250,7 +14243,7 @@ class SelectRandomNode extends DataAction {
* **Default**: `[1]`
*/
constructor(weights: number[] = [1]) {
- super(ActionType.SelectRandomNode)
+ super(ActionType.SelectRandomNode, {isAppearance:false,isParticle:false})
this.assign({ weights })
}
}
@@ -14303,7 +14296,8 @@ export interface PeriodicEmitterParams {
* Emits particles periodically.
*/
class PeriodicEmitter extends DataAction {
- declare type: ActionType.PeriodicEmitter
+ declare readonly type: ActionType.PeriodicEmitter
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* Time between emitting new particles in seconds.
*
@@ -14330,7 +14324,7 @@ class PeriodicEmitter extends DataAction {
maxConcurrent: ScalarValue
unk_ds3_f1_1: number
constructor(props: PeriodicEmitterParams = {}) {
- super(ActionType.PeriodicEmitter)
+ super(ActionType.PeriodicEmitter, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -14387,7 +14381,8 @@ export interface EqualDistanceEmitterParams {
* Emits particles once it has moved a certain distance from where it last emitted particles.
*/
class EqualDistanceEmitter extends DataAction {
- declare type: ActionType.EqualDistanceEmitter
+ declare readonly type: ActionType.EqualDistanceEmitter
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* How much the emitter must move to trigger emission.
*
@@ -14405,7 +14400,7 @@ class EqualDistanceEmitter extends DataAction {
unk_ds3_p1_1: ScalarValue
unk_ds3_p1_2: ScalarValue
constructor(props: EqualDistanceEmitterParams = {}) {
- super(ActionType.EqualDistanceEmitter)
+ super(ActionType.EqualDistanceEmitter, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -14417,10 +14412,11 @@ class EqualDistanceEmitter extends DataAction {
* Emits one particle once.
*/
class OneTimeEmitter extends DataAction {
- declare type: ActionType.OneTimeEmitter
+ declare readonly type: ActionType.OneTimeEmitter
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
constructor() {
- super(ActionType.OneTimeEmitter)
+ super(ActionType.OneTimeEmitter, {isAppearance:false,isParticle:false})
}
}
@@ -14431,7 +14427,8 @@ class OneTimeEmitter extends DataAction {
* Makes the emitter a single point.
*/
class PointEmitterShape extends DataAction {
- declare type: ActionType.PointEmitterShape
+ declare readonly type: ActionType.PointEmitterShape
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* Controls the initial direction for particles. See {@link InitialDirection} for more information.
*/
@@ -14442,7 +14439,7 @@ class PointEmitterShape extends DataAction {
* **Default**: {@link InitialDirection.Emitter}
*/
constructor(direction: InitialDirection = InitialDirection.Emitter) {
- super(ActionType.PointEmitterShape)
+ super(ActionType.PointEmitterShape, {isAppearance:false,isParticle:false})
this.assign({ direction })
}
}
@@ -14483,7 +14480,8 @@ export interface DiskEmitterShapeParams {
* Makes the emitter disk-shaped.
*/
class DiskEmitterShape extends DataAction {
- declare type: ActionType.DiskEmitterShape
+ 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.
*/
@@ -14505,7 +14503,7 @@ class DiskEmitterShape extends DataAction {
*/
distribution: ScalarValue
constructor(props: DiskEmitterShapeParams = {}) {
- super(ActionType.DiskEmitterShape)
+ super(ActionType.DiskEmitterShape, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -14554,7 +14552,8 @@ export interface RectangleEmitterShapeParams {
* Makes the emitter rectangular.
*/
class RectangleEmitterShape extends DataAction {
- declare type: ActionType.RectangleEmitterShape
+ 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.
*/
@@ -14582,7 +14581,7 @@ class RectangleEmitterShape extends DataAction {
*/
distribution: ScalarValue
constructor(props: RectangleEmitterShapeParams = {}) {
- super(ActionType.RectangleEmitterShape)
+ super(ActionType.RectangleEmitterShape, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -14611,7 +14610,8 @@ export interface SphereEmitterShapeParams {
* Makes the emitter spherical.
*/
class SphereEmitterShape extends DataAction {
- declare type: ActionType.SphereEmitterShape
+ 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.
*/
@@ -14623,7 +14623,7 @@ class SphereEmitterShape extends DataAction {
*/
radius: ScalarValue
constructor(props: SphereEmitterShapeParams = {}) {
- super(ActionType.SphereEmitterShape)
+ super(ActionType.SphereEmitterShape, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -14674,7 +14674,8 @@ export interface BoxEmitterShapeParams {
* Makes the emitter cuboidal.
*/
class BoxEmitterShape extends DataAction {
- declare type: ActionType.BoxEmitterShape
+ 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.
*/
@@ -14702,7 +14703,7 @@ class BoxEmitterShape extends DataAction {
*/
sizeZ: ScalarValue
constructor(props: BoxEmitterShapeParams = {}) {
- super(ActionType.BoxEmitterShape)
+ super(ActionType.BoxEmitterShape, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -14751,7 +14752,8 @@ export interface CylinderEmitterShapeParams {
* Makes the emitter cylindrical.
*/
class CylinderEmitterShape extends DataAction {
- declare type: ActionType.CylinderEmitterShape
+ 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.
*/
@@ -14777,7 +14779,7 @@ class CylinderEmitterShape extends DataAction {
*/
height: ScalarValue
constructor(props: CylinderEmitterShapeParams = {}) {
- super(ActionType.CylinderEmitterShape)
+ super(ActionType.CylinderEmitterShape, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -14789,10 +14791,11 @@ class CylinderEmitterShape extends DataAction {
* Makes all emitted instances have the default initial direction from the emitter. See {@link InitialDirection} for more information.
*/
class NoSpread extends DataAction {
- declare type: ActionType.NoSpread
+ declare readonly type: ActionType.NoSpread
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
constructor() {
- super(ActionType.NoSpread)
+ super(ActionType.NoSpread, {isAppearance:false,isParticle:false})
}
}
@@ -14833,7 +14836,8 @@ export interface CircularSpreadParams {
* Gives each emitted instance a random initial direction offset within a circular cone. See {@link InitialDirection} for more information.
*/
class CircularSpread extends DataAction {
- declare type: ActionType.CircularSpread
+ 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.
*/
@@ -14856,7 +14860,7 @@ class CircularSpread extends DataAction {
*/
distribution: ScalarValue
constructor(props: CircularSpreadParams = {}) {
- super(ActionType.CircularSpread)
+ super(ActionType.CircularSpread, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -14912,7 +14916,8 @@ export interface EllipticalSpreadParams {
* Gives each emitted instance a random initial direction offset within an elliptical cone. See {@link InitialDirection} for more information.
*/
class EllipticalSpread extends DataAction {
- declare type: ActionType.EllipticalSpread
+ 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.
*/
@@ -14947,7 +14952,7 @@ class EllipticalSpread extends DataAction {
*/
distribution: ScalarValue
constructor(props: EllipticalSpreadParams = {}) {
- super(ActionType.EllipticalSpread)
+ super(ActionType.EllipticalSpread, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -14997,7 +15002,8 @@ export interface RectangularSpreadParams {
* Gives each emitted instance a random initial direction offset within a rectangular cone. See {@link InitialDirection} for more information.
*/
class RectangularSpread extends DataAction {
- declare type: ActionType.RectangularSpread
+ declare readonly type: ActionType.RectangularSpread
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* The maximum change in direction in degrees, one of the angles of the elliptical cone.
*
@@ -15028,7 +15034,7 @@ class RectangularSpread extends DataAction {
*/
distribution: ScalarValue
constructor(props: RectangularSpreadParams = {}) {
- super(ActionType.RectangularSpread)
+ super(ActionType.RectangularSpread, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -15451,7 +15457,8 @@ export interface PointSpriteParams {
* Very basic point sprite particle. Similar to {@link ActionType.BillboardEx BillboardEx}, but far simpler.
*/
class PointSprite extends DataAction {
- declare type: ActionType.PointSprite
+ declare readonly type: ActionType.PointSprite
+ declare readonly meta: ActionMeta & {isAppearance:true,isParticle:true}
/**
* Texture ID.
*
@@ -15634,7 +15641,7 @@ class PointSprite extends DataAction {
unk_er_f1_4: number
unk_er_f2_39: number
constructor(props: PointSpriteParams = {}) {
- super(ActionType.PointSprite)
+ super(ActionType.PointSprite, {isAppearance:true,isParticle:true})
this.assign(props)
}
}
@@ -16066,7 +16073,8 @@ export interface LineParams {
* Simple line particle. It automatically rotates to match the direction it's moving.
*/
class Line extends DataAction {
- declare type: ActionType.Line
+ declare readonly type: ActionType.Line
+ declare readonly meta: ActionMeta & {isAppearance:true,isParticle:true}
/**
* Blend mode.
*
@@ -16267,7 +16275,7 @@ class Line extends DataAction {
unk_er_f1_1: number
unk_er_f1_2: number
constructor(props: LineParams = {}) {
- super(ActionType.Line)
+ super(ActionType.Line, {isAppearance:true,isParticle:true})
this.assign(props)
}
}
@@ -16716,7 +16724,8 @@ export interface QuadLineParams {
* Simple rectangular particle, very similar to {@link ActionType.Line Line particles}, but has properties that control the width as well as the length. It automatically rotates to match the direction it's moving.
*/
class QuadLine extends DataAction {
- declare type: ActionType.QuadLine
+ declare readonly type: ActionType.QuadLine
+ declare readonly meta: ActionMeta & {isAppearance:true,isParticle:true}
/**
* Blend mode.
*
@@ -16927,7 +16936,7 @@ class QuadLine extends DataAction {
unk_er_f1_1: number
unk_er_f1_2: number
constructor(props: QuadLineParams = {}) {
- super(ActionType.QuadLine)
+ super(ActionType.QuadLine, {isAppearance:true,isParticle:true})
this.assign(props)
}
}
@@ -17704,7 +17713,8 @@ export interface BillboardExParams {
* Particle with a texture that may be animated. This is the most common particle type and it has a lot of useful fields and properties.
*/
class BillboardEx extends DataAction {
- declare type: ActionType.BillboardEx
+ declare readonly type: ActionType.BillboardEx
+ declare readonly meta: ActionMeta & {isAppearance:true,isParticle:true}
/**
* Texture ID.
*
@@ -18150,7 +18160,7 @@ class BillboardEx extends DataAction {
unk_sdt_f2_44: number
unk_ac6_f2_45: number
constructor(props: BillboardExParams = {}) {
- super(ActionType.BillboardEx)
+ super(ActionType.BillboardEx, {isAppearance:true,isParticle:true})
this.assign(props)
}
}
@@ -19028,7 +19038,8 @@ export interface MultiTextureBillboardExParams {
* Particle with multiple textures that can scroll.
*/
class MultiTextureBillboardEx extends DataAction {
- declare type: ActionType.MultiTextureBillboardEx
+ 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.
*/
@@ -19523,7 +19534,7 @@ class MultiTextureBillboardEx extends DataAction {
unk_er_f2_45: number
unk_ac6_f2_46: number
constructor(props: MultiTextureBillboardExParams = {}) {
- super(ActionType.MultiTextureBillboardEx)
+ super(ActionType.MultiTextureBillboardEx, {isAppearance:true,isParticle:true})
this.assign(props)
}
}
@@ -20334,7 +20345,8 @@ export interface ModelParams {
* 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.
*/
class Model extends DataAction {
- declare type: ActionType.Model
+ declare readonly type: ActionType.Model
+ declare readonly meta: ActionMeta & {isAppearance:true,isParticle:true}
/**
* Model orientation mode. See {@link ModelOrientationMode} for more information.
*/
@@ -20805,7 +20817,7 @@ class Model extends DataAction {
unk_er_f1_19: number
unk_ac6_f2_38: number
constructor(props: ModelParams = {}) {
- super(ActionType.Model)
+ super(ActionType.Model, {isAppearance:true,isParticle:true})
this.assign(props)
}
}
@@ -21409,7 +21421,8 @@ export interface TracerParams {
* Creates a trail behind moving effects.
*/
class Tracer extends DataAction {
- declare type: ActionType.Tracer
+ declare readonly type: ActionType.Tracer
+ declare readonly meta: ActionMeta & {isAppearance:true,isParticle:true}
/**
* Tracer orientation mode. See {@link TracerOrientationMode} for more information.
*/
@@ -21726,7 +21739,7 @@ class Tracer extends DataAction {
unk_er_f1_16: number
unk_er_f2_39: number
constructor(props: TracerParams = {}) {
- super(ActionType.Tracer)
+ super(ActionType.Tracer, {isAppearance:true,isParticle:true})
this.assign(props)
}
}
@@ -22348,7 +22361,8 @@ export interface DistortionParams {
* Note: This particle is not visible if the "Effects" setting is set to "Low".
*/
class Distortion extends DataAction {
- declare type: ActionType.Distortion
+ 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.
*/
@@ -22680,7 +22694,7 @@ class Distortion extends DataAction {
unk_er_p2_7: ScalarValue
unk_er_p2_8: ScalarValue
constructor(props: DistortionParams = {}) {
- super(ActionType.Distortion)
+ super(ActionType.Distortion, {isAppearance:true,isParticle:true})
this.assign(props)
}
}
@@ -23107,7 +23121,8 @@ export interface RadialBlurParams {
* Note: This particle is not visible if the "Effects" setting is set to "Low".
*/
class RadialBlur extends DataAction {
- declare type: ActionType.RadialBlur
+ 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.
*
@@ -23332,7 +23347,7 @@ class RadialBlur extends DataAction {
unk_er_f1_3: number
unk_er_f1_4: number
constructor(props: RadialBlurParams = {}) {
- super(ActionType.RadialBlur)
+ super(ActionType.RadialBlur, {isAppearance:true,isParticle:true})
this.assign(props)
}
}
@@ -23743,7 +23758,8 @@ export interface PointLightParams {
* Point light source.
*/
class PointLight extends DataAction {
- declare type: ActionType.PointLight
+ declare readonly type: ActionType.PointLight
+ declare readonly meta: ActionMeta & {isAppearance:true,isParticle:false}
/**
* Controls the diffuse color of the light.
*
@@ -23952,7 +23968,7 @@ class PointLight extends DataAction {
unk_er_f2_31: number
unk_er_f2_32: number
constructor(props: PointLightParams = {}) {
- super(ActionType.PointLight)
+ super(ActionType.PointLight, {isAppearance:true,isParticle:false})
this.assign(props)
}
}
@@ -23964,10 +23980,11 @@ class PointLight extends DataAction {
* Unknown root node action that was introduced in Elden Ring.
*/
class Unk700 extends DataAction {
- declare type: ActionType.Unk700
+ declare readonly type: ActionType.Unk700
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
constructor() {
- super(ActionType.Unk700)
+ super(ActionType.Unk700, {isAppearance:false,isParticle:false})
}
}
@@ -23978,7 +23995,8 @@ class Unk700 extends DataAction {
* Unknown root node action that was introduced in Elden Ring.
*/
class Unk701 extends DataAction {
- declare type: ActionType.Unk701
+ declare readonly type: ActionType.Unk701
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
unk_er_p1_0: ScalarValue
/**
* @param unk_er_p1_0 Unknown.
@@ -23986,7 +24004,7 @@ class Unk701 extends DataAction {
* **Default**: `1`
*/
constructor(unk_er_p1_0: ScalarValue = 1) {
- super(ActionType.Unk701)
+ super(ActionType.Unk701, {isAppearance:false,isParticle:false})
this.assign({ unk_er_p1_0 })
}
}
@@ -23998,10 +24016,11 @@ class Unk701 extends DataAction {
* Unknown root node action that was introduced in Elden Ring.
*/
class Unk702 extends DataAction {
- declare type: ActionType.Unk702
+ declare readonly type: ActionType.Unk702
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
constructor() {
- super(ActionType.Unk702)
+ super(ActionType.Unk702, {isAppearance:false,isParticle:false})
}
}
@@ -24042,7 +24061,8 @@ export interface NodeForceSpeedParams {
* - {@link ActionType.TurbulenceForce TurbulenceForce}
*/
class NodeForceSpeed extends DataAction {
- declare type: ActionType.NodeForceSpeed
+ declare readonly type: ActionType.NodeForceSpeed
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* The speed in the direction of the force.
*
@@ -24057,7 +24077,7 @@ class NodeForceSpeed extends DataAction {
speedMultiplier: ScalarValue
unk_sdt_f1_0: number
constructor(props: NodeForceSpeedParams = {}) {
- super(ActionType.NodeForceSpeed)
+ super(ActionType.NodeForceSpeed, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -24105,7 +24125,8 @@ export interface ParticleForceSpeedParams {
* - {@link ActionType.TurbulenceForce TurbulenceForce}
*/
class ParticleForceSpeed extends DataAction {
- declare type: ActionType.ParticleForceSpeed
+ declare readonly type: ActionType.ParticleForceSpeed
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* The speed in the direction of the force.
*
@@ -24124,7 +24145,7 @@ class ParticleForceSpeed extends DataAction {
*/
unk_sdt_f1_1: number
constructor(props: ParticleForceSpeedParams = {}) {
- super(ActionType.ParticleForceSpeed)
+ super(ActionType.ParticleForceSpeed, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -24166,7 +24187,8 @@ export interface NodeForceAccelerationParams {
* - {@link ActionType.TurbulenceForce TurbulenceForce}
*/
class NodeForceAcceleration extends DataAction {
- declare type: ActionType.NodeForceAcceleration
+ declare readonly type: ActionType.NodeForceAcceleration
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* The acceleration in the direction of the force.
*
@@ -24181,7 +24203,7 @@ class NodeForceAcceleration extends DataAction {
accelerationMultiplier: ScalarValue
unk_sdt_f1_0: number
constructor(props: NodeForceAccelerationParams = {}) {
- super(ActionType.NodeForceAcceleration)
+ super(ActionType.NodeForceAcceleration, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -24229,7 +24251,8 @@ export interface ParticleForceAccelerationParams {
* - {@link ActionType.TurbulenceForce TurbulenceForce}
*/
class ParticleForceAcceleration extends DataAction {
- declare type: ActionType.ParticleForceAcceleration
+ declare readonly type: ActionType.ParticleForceAcceleration
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* The acceleration in the direction of the force.
*
@@ -24248,7 +24271,7 @@ class ParticleForceAcceleration extends DataAction {
*/
unk_sdt_f1_1: number
constructor(props: ParticleForceAccelerationParams = {}) {
- super(ActionType.ParticleForceAcceleration)
+ super(ActionType.ParticleForceAcceleration, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -24281,12 +24304,13 @@ export interface Unk800Params {
* Unknown action that was added in Armored Core 6.
*/
class Unk800 extends DataAction {
- declare type: ActionType.Unk800
+ declare readonly type: ActionType.Unk800
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
unk_ac6_f1_0: number
unk_ac6_f1_1: number
unk_ac6_f1_2: number
constructor(props: Unk800Params = {}) {
- super(ActionType.Unk800)
+ super(ActionType.Unk800, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -24329,41 +24353,17 @@ export interface GPUStandardParticleParams {
*/
unk_ds3_f1_5?: number
/**
- * The width of the emitter.
- *
- * **Default**: `1`
- */
- emitterSizeX?: number
- /**
- * The height of the emitter.
- *
- * **Default**: `1`
- */
- emitterSizeY?: number
- /**
- * The depth of the emitter.
- *
- * **Default**: `1`
- */
- emitterSizeZ?: number
- /**
- * The rotation of the emitter around the X-axis.
- *
- * **Default**: `0`
- */
- emitterRotationX?: number
- /**
- * The rotation of the emitter around the Y-axis.
+ * The size of the emitter.
*
- * **Default**: `0`
+ * **Default**: `[1, 1, 1]`
*/
- emitterRotationY?: number
+ emitterSize?: Vector3
/**
- * The rotation of the emitter around the Z-axis.
+ * The rotation of the emitter.
*
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*/
- emitterRotationZ?: number
+ emitterRotation?: Vector3
/**
* Unknown float.
*
@@ -24522,263 +24522,101 @@ export interface GPUStandardParticleParams {
*/
unk_ds3_f1_33?: number
/**
- * Particle position offset along the X-axis.
+ * Particle position offset.
*
- * **Default**: `0`
- *
- * See also:
- * - {@link particleOffsetXMin}
- * - {@link particleOffsetXMax}
- */
- particleOffsetX?: number
- /**
- * Particle position offset along the Y-axis.
- *
- * **Default**: `0`
- *
- * See also:
- * - {@link particleOffsetYMin}
- * - {@link particleOffsetYMax}
- */
- particleOffsetY?: number
- /**
- * Particle position offset along the Z-axis.
- *
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*
* See also:
- * - {@link particleOffsetZMin}
- * - {@link particleOffsetZMax}
- */
- particleOffsetZ?: number
- /**
- * Minimum particle position offset along the X-axis. A random value between this and {@link particleOffsetXMax} will be added to {@link particleOffsetX} to get the final position offset.
- *
- * **Default**: `0`
- */
- particleOffsetXMin?: number
- /**
- * Minimum particle position offset along the Y-axis. A random value between this and {@link particleOffsetYMax} will be added to {@link particleOffsetY} to get the final position offset.
- *
- * **Default**: `0`
+ * - {@link particleOffsetMin}
+ * - {@link particleOffsetMax}
*/
- particleOffsetYMin?: number
+ particleOffset?: Vector3
/**
- * Minimum particle position offset along the Z-axis. A random value between this and {@link particleOffsetZMax} will be added to {@link particleOffsetZ} to get the final position offset.
+ * Minimum particle position offset. A random value between this and {@link particleOffsetMax} will be added to {@link particleOffset} to get the final position offset.
*
- * **Default**: `0`
- */
- particleOffsetZMin?: number
- /**
- * Maximum particle position offset along the X-axis. A random value between this and {@link particleOffsetXMin} will be added to {@link particleOffsetX} to get the final position offset.
- *
- * **Default**: `0`
- */
- particleOffsetXMax?: number
- /**
- * Maximum particle position offset along the Y-axis. A random value between this and {@link particleOffsetYMin} will be added to {@link particleOffsetY} to get the final position offset.
- *
- * **Default**: `0`
- */
- particleOffsetYMax?: number
- /**
- * Maximum particle position offset along the Z-axis. A random value between this and {@link particleOffsetZMin} will be added to {@link particleOffsetZ} to get the final position offset.
- *
- * **Default**: `0`
- */
- particleOffsetZMax?: number
- /**
- * Particle speed along the X-axis.
- *
- * **Default**: `0`
- *
- * See also:
- * - {@link particleSpeedXMin}
- * - {@link particleSpeedXMax}
+ * **Default**: `[0, 0, 0]`
*/
- particleSpeedX?: number
+ particleOffsetMin?: Vector3
/**
- * Particle speed along the Y-axis.
- *
- * **Default**: `0`
+ * Maximum particle position offset. A random value between this and {@link particleOffsetMin} will be added to {@link particleOffset} to get the final position offset.
*
- * See also:
- * - {@link particleSpeedYMin}
- * - {@link particleSpeedYMax}
+ * **Default**: `[0, 0, 0]`
*/
- particleSpeedY?: number
+ particleOffsetMax?: Vector3
/**
- * Particle speed along the Z-axis.
+ * Particle speed.
*
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*
* See also:
- * - {@link particleSpeedZMin}
- * - {@link particleSpeedZMax}
+ * - {@link particleSpeedMin}
+ * - {@link particleSpeedMax}
*/
- particleSpeedZ?: number
+ particleSpeed?: Vector3
/**
- * Minimum particle speed along the X-axis. A random value between this and {@link particleSpeedXMax} will be added to {@link particleSpeedX} to get the final speed.
+ * Minimum particle speed. A random value between this and {@link particleSpeedMax} will be added to {@link particleSpeed} to get the final speed.
*
- * **Default**: `0`
- */
- particleSpeedXMin?: number
- /**
- * Minimum particle speed along the Y-axis. A random value between this and {@link particleSpeedYMax} will be added to {@link particleSpeedY} to get the final speed.
- *
- * **Default**: `0`
- */
- particleSpeedYMin?: number
- /**
- * Minimum particle speed along the Z-axis. A random value between this and {@link particleSpeedZMax} will be added to {@link particleSpeedZ} to get the final speed.
- *
- * **Default**: `0`
- */
- particleSpeedZMin?: number
- /**
- * Maximum particle speed along the X-axis. A random value between this and {@link particleSpeedXMin} will be added to {@link particleSpeedX} to get the final speed.
- *
- * **Default**: `0`
- */
- particleSpeedXMax?: number
- /**
- * Maximum particle speed along the Y-axis. A random value between this and {@link particleSpeedYMin} will be added to {@link particleSpeedY} to get the final speed.
- *
- * **Default**: `0`
- */
- particleSpeedYMax?: number
- /**
- * Maximum particle speed along the Z-axis. A random value between this and {@link particleSpeedZMin} will be added to {@link particleSpeedZ} to get the final speed.
- *
- * **Default**: `0`
- */
- particleSpeedZMax?: number
- /**
- * Minimum particle acceleration along the X-axis. A random value between this and {@link particleAccelerationXMax} will be added to {@link particleAccelerationX} to get the final acceleration.
- *
- * **Default**: `0`
- */
- particleAccelerationXMin?: number
- /**
- * Minimum particle acceleration along the Y-axis. A random value between this and {@link particleAccelerationYMax} will be added to {@link particleAccelerationY} to get the final acceleration.
- *
- * **Default**: `0`
- */
- particleAccelerationYMin?: number
- /**
- * Minimum particle acceleration along the Z-axis. A random value between this and {@link particleAccelerationZMax} will be added to {@link particleAccelerationZ} to get the final acceleration.
- *
- * **Default**: `0`
- */
- particleAccelerationZMin?: number
- /**
- * Maximum particle acceleration along the X-axis. A random value between this and {@link particleAccelerationXMin} will be added to {@link particleAccelerationX} to get the final acceleration.
- *
- * **Default**: `0`
- */
- particleAccelerationXMax?: number
- /**
- * Maximum particle acceleration along the Y-axis. A random value between this and {@link particleAccelerationYMin} will be added to {@link particleAccelerationY} to get the final acceleration.
- *
- * **Default**: `0`
- */
- particleAccelerationYMax?: number
- /**
- * Maximum particle acceleration along the Z-axis. A random value between this and {@link particleAccelerationZMin} will be added to {@link particleAccelerationZ} to get the final acceleration.
- *
- * **Default**: `0`
- */
- particleAccelerationZMax?: number
- /**
- * Maximum amount of random rotation each particle will have around the X-axis in degrees.
- *
- * **Default**: `0`
- */
- particleRotationVarianceX?: number
- /**
- * Maximum amount of random rotation each particle will have around the Y-axis in degrees.
- *
- * **Default**: `0`
- */
- particleRotationVarianceY?: number
- /**
- * Maximum amount of random rotation each particle will have around the Z-axis in degrees.
- *
- * **Default**: `0`
- */
- particleRotationVarianceZ?: number
- /**
- * Maximum amount of random angular speed each particle will have around the X-axis in degrees per second.
- *
- * **Default**: `0`
- */
- particleAngularSpeedVarianceX?: number
- /**
- * Maximum amount of random angular speed each particle will have around the Y-axis in degrees per second.
- *
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*/
- particleAngularSpeedVarianceY?: number
+ particleSpeedMin?: Vector3
/**
- * Maximum amount of random angular speed each particle will have around the Z-axis in degrees per second.
+ * Maximum particle speed. A random value between this and {@link particleSpeedMin} will be added to {@link particleSpeed} to get the final speed.
*
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*/
- particleAngularSpeedVarianceZ?: number
+ particleSpeedMax?: Vector3
/**
- * Minimum amount of random angular acceleration each particle will have around the X-axis in degrees per second squared.
+ * Minimum particle acceleration. A random value between this and {@link particleAccelerationMax} will be added to the three acceleration properties to get the final acceleration.
*
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*
* See also:
- * - {@link particleAngularAccelerationXMax}
+ * - {@link particleAccelerationX}
+ * - {@link particleAccelerationY}
+ * - {@link particleAccelerationZ}
*/
- particleAngularAccelerationXMin?: number
+ particleAccelerationMin?: Vector3
/**
- * Minimum amount of random angular acceleration each particle will have around the Y-axis in degrees per second squared.
+ * Maximum particle acceleration. A random value between this and {@link particleAccelerationMin} will be added to the three acceleration properties to get the final acceleration.
*
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*
* See also:
- * - {@link particleAngularAccelerationYMax}
+ * - {@link particleAccelerationX}
+ * - {@link particleAccelerationY}
+ * - {@link particleAccelerationZ}
*/
- particleAngularAccelerationYMin?: number
+ particleAccelerationMax?: Vector3
/**
- * Minimum amount of random angular acceleration each particle will have around the Z-axis in degrees per second squared.
- *
- * **Default**: `0`
+ * Maximum amount of random rotation for each particle in degrees.
*
- * See also:
- * - {@link particleAngularAccelerationZMax}
+ * **Default**: `[0, 0, 0]`
*/
- particleAngularAccelerationZMin?: number
+ particleRotationVariance?: Vector3
/**
- * Maximum amount of random angular acceleration each particle will have around the X-axis in degrees per second squared.
- *
- * **Default**: `0`
+ * Maximum amount of random angular speed for each particle in degrees per second.
*
- * See also:
- * - {@link particleAngularAccelerationXMin}
+ * **Default**: `[0, 0, 0]`
*/
- particleAngularAccelerationXMax?: number
+ particleAngularSpeedVariance?: Vector3
/**
- * Maximum amount of random angular acceleration each particle will have around the Y-axis in degrees per second squared.
+ * Minimum amount of random angular acceleration for each particle in degrees per second squared.
*
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*
* See also:
- * - {@link particleAngularAccelerationYMin}
+ * - {@link particleAngularAccelerationMax}
*/
- particleAngularAccelerationYMax?: number
+ particleAngularAccelerationMin?: Vector3
/**
- * Maximum amount of random angular acceleration each particle will have around the Z-axis in degrees per second squared.
+ * Maximum amount of random angular acceleration for each particle in degrees per second squared.
*
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*
* See also:
- * - {@link particleAngularAccelerationZMin}
+ * - {@link particleAngularAccelerationMin}
*/
- particleAngularAccelerationZMax?: number
+ particleAngularAccelerationMax?: Vector3
/**
* When enabled, the height of the particles will be based on the {@link particleSizeX width} instead of the {@link particleSizeY height field}, and the height field is ignored.
*
@@ -25728,8 +25566,8 @@ export interface GPUStandardParticleParams {
* **Default**: `0`
*
* See also:
- * - {@link particleAccelerationXMin}
- * - {@link particleAccelerationXMax}
+ * - {@link particleAccelerationMin}
+ * - {@link particleAccelerationMax}
*/
particleAccelerationX?: ScalarValue
/**
@@ -25738,8 +25576,8 @@ export interface GPUStandardParticleParams {
* **Default**: `0`
*
* See also:
- * - {@link particleAccelerationYMin}
- * - {@link particleAccelerationYMax}
+ * - {@link particleAccelerationMin}
+ * - {@link particleAccelerationMax}
*/
particleAccelerationY?: ScalarValue
/**
@@ -25748,8 +25586,8 @@ export interface GPUStandardParticleParams {
* **Default**: `0`
*
* See also:
- * - {@link particleAccelerationZMin}
- * - {@link particleAccelerationZMax}
+ * - {@link particleAccelerationMin}
+ * - {@link particleAccelerationMax}
*/
particleAccelerationZ?: ScalarValue
/**
@@ -25770,8 +25608,8 @@ export interface GPUStandardParticleParams {
* **Default**: `0`
*
* See also:
- * - {@link particleAngularAccelerationZMin}
- * - {@link particleAngularAccelerationZMax}
+ * - {@link particleAngularAccelerationMin}
+ * - {@link particleAngularAccelerationMax}
*/
particleAngularAccelerationZ?: ScalarValue
/**
@@ -25907,7 +25745,8 @@ export interface GPUStandardParticleParams {
* The name of this action is from Elden Ring's RTTI, where it's called "StandardParticle".
*/
class GPUStandardParticle extends DataAction {
- declare type: ActionType.GPUStandardParticle
+ declare readonly type: ActionType.GPUStandardParticle
+ declare readonly meta: ActionMeta & {isAppearance:true,isParticle:false}
unk_ds3_f1_0: number
/**
* The ID of the texture of the particles.
@@ -25921,29 +25760,13 @@ class GPUStandardParticle extends DataAction {
emitterShape: EmitterShape
unk_ds3_f1_5: number
/**
- * The width of the emitter.
- */
- emitterSizeX: number
- /**
- * The height of the emitter.
+ * The size of the emitter.
*/
- emitterSizeY: number
+ emitterSize: Vector3
/**
- * The depth of the emitter.
+ * The rotation of the emitter.
*/
- emitterSizeZ: number
- /**
- * The rotation of the emitter around the X-axis.
- */
- emitterRotationX: number
- /**
- * The rotation of the emitter around the Y-axis.
- */
- emitterRotationY: number
- /**
- * The rotation of the emitter around the Z-axis.
- */
- emitterRotationZ: number
+ emitterRotation: Vector3
unk_ds3_f1_12: number
unk_ds3_f1_13: number
unk_ds3_f1_14: number
@@ -26019,191 +25842,77 @@ class GPUStandardParticle extends DataAction {
unk_ds3_f1_32: number
unk_ds3_f1_33: number
/**
- * Particle position offset along the X-axis.
+ * Particle position offset.
*
* See also:
- * - {@link particleOffsetXMin}
- * - {@link particleOffsetXMax}
+ * - {@link particleOffsetMin}
+ * - {@link particleOffsetMax}
*/
- particleOffsetX: number
+ particleOffset: Vector3
/**
- * Particle position offset along the Y-axis.
- *
- * See also:
- * - {@link particleOffsetYMin}
- * - {@link particleOffsetYMax}
+ * Minimum particle position offset. A random value between this and {@link particleOffsetMax} will be added to {@link particleOffset} to get the final position offset.
*/
- particleOffsetY: number
+ particleOffsetMin: Vector3
/**
- * Particle position offset along the Z-axis.
- *
- * See also:
- * - {@link particleOffsetZMin}
- * - {@link particleOffsetZMax}
- */
- particleOffsetZ: number
- /**
- * Minimum particle position offset along the X-axis. A random value between this and {@link particleOffsetXMax} will be added to {@link particleOffsetX} to get the final position offset.
- */
- particleOffsetXMin: number
- /**
- * Minimum particle position offset along the Y-axis. A random value between this and {@link particleOffsetYMax} will be added to {@link particleOffsetY} to get the final position offset.
- */
- particleOffsetYMin: number
- /**
- * Minimum particle position offset along the Z-axis. A random value between this and {@link particleOffsetZMax} will be added to {@link particleOffsetZ} to get the final position offset.
+ * Maximum particle position offset. A random value between this and {@link particleOffsetMin} will be added to {@link particleOffset} to get the final position offset.
*/
- particleOffsetZMin: number
+ particleOffsetMax: Vector3
/**
- * Maximum particle position offset along the X-axis. A random value between this and {@link particleOffsetXMin} will be added to {@link particleOffsetX} to get the final position offset.
- */
- particleOffsetXMax: number
- /**
- * Maximum particle position offset along the Y-axis. A random value between this and {@link particleOffsetYMin} will be added to {@link particleOffsetY} to get the final position offset.
- */
- particleOffsetYMax: number
- /**
- * Maximum particle position offset along the Z-axis. A random value between this and {@link particleOffsetZMin} will be added to {@link particleOffsetZ} to get the final position offset.
- */
- particleOffsetZMax: number
- /**
- * Particle speed along the X-axis.
- *
- * See also:
- * - {@link particleSpeedXMin}
- * - {@link particleSpeedXMax}
- */
- particleSpeedX: number
- /**
- * Particle speed along the Y-axis.
+ * Particle speed.
*
* See also:
- * - {@link particleSpeedYMin}
- * - {@link particleSpeedYMax}
- */
- particleSpeedY: number
- /**
- * Particle speed along the Z-axis.
- *
- * See also:
- * - {@link particleSpeedZMin}
- * - {@link particleSpeedZMax}
- */
- particleSpeedZ: number
- /**
- * Minimum particle speed along the X-axis. A random value between this and {@link particleSpeedXMax} will be added to {@link particleSpeedX} to get the final speed.
- */
- particleSpeedXMin: number
- /**
- * Minimum particle speed along the Y-axis. A random value between this and {@link particleSpeedYMax} will be added to {@link particleSpeedY} to get the final speed.
- */
- particleSpeedYMin: number
- /**
- * Minimum particle speed along the Z-axis. A random value between this and {@link particleSpeedZMax} will be added to {@link particleSpeedZ} to get the final speed.
- */
- particleSpeedZMin: number
- /**
- * Maximum particle speed along the X-axis. A random value between this and {@link particleSpeedXMin} will be added to {@link particleSpeedX} to get the final speed.
- */
- particleSpeedXMax: number
- /**
- * Maximum particle speed along the Y-axis. A random value between this and {@link particleSpeedYMin} will be added to {@link particleSpeedY} to get the final speed.
- */
- particleSpeedYMax: number
- /**
- * Maximum particle speed along the Z-axis. A random value between this and {@link particleSpeedZMin} will be added to {@link particleSpeedZ} to get the final speed.
- */
- particleSpeedZMax: number
- /**
- * Minimum particle acceleration along the X-axis. A random value between this and {@link particleAccelerationXMax} will be added to {@link particleAccelerationX} to get the final acceleration.
- */
- particleAccelerationXMin: number
- /**
- * Minimum particle acceleration along the Y-axis. A random value between this and {@link particleAccelerationYMax} will be added to {@link particleAccelerationY} to get the final acceleration.
- */
- particleAccelerationYMin: number
- /**
- * Minimum particle acceleration along the Z-axis. A random value between this and {@link particleAccelerationZMax} will be added to {@link particleAccelerationZ} to get the final acceleration.
- */
- particleAccelerationZMin: number
- /**
- * Maximum particle acceleration along the X-axis. A random value between this and {@link particleAccelerationXMin} will be added to {@link particleAccelerationX} to get the final acceleration.
- */
- particleAccelerationXMax: number
- /**
- * Maximum particle acceleration along the Y-axis. A random value between this and {@link particleAccelerationYMin} will be added to {@link particleAccelerationY} to get the final acceleration.
- */
- particleAccelerationYMax: number
- /**
- * Maximum particle acceleration along the Z-axis. A random value between this and {@link particleAccelerationZMin} will be added to {@link particleAccelerationZ} to get the final acceleration.
- */
- particleAccelerationZMax: number
- /**
- * Maximum amount of random rotation each particle will have around the X-axis in degrees.
- */
- particleRotationVarianceX: number
- /**
- * Maximum amount of random rotation each particle will have around the Y-axis in degrees.
- */
- particleRotationVarianceY: number
- /**
- * Maximum amount of random rotation each particle will have around the Z-axis in degrees.
+ * - {@link particleSpeedMin}
+ * - {@link particleSpeedMax}
*/
- particleRotationVarianceZ: number
+ particleSpeed: Vector3
/**
- * Maximum amount of random angular speed each particle will have around the X-axis in degrees per second.
+ * Minimum particle speed. A random value between this and {@link particleSpeedMax} will be added to {@link particleSpeed} to get the final speed.
*/
- particleAngularSpeedVarianceX: number
+ particleSpeedMin: Vector3
/**
- * Maximum amount of random angular speed each particle will have around the Y-axis in degrees per second.
+ * Maximum particle speed. A random value between this and {@link particleSpeedMin} will be added to {@link particleSpeed} to get the final speed.
*/
- particleAngularSpeedVarianceY: number
+ particleSpeedMax: Vector3
/**
- * Maximum amount of random angular speed each particle will have around the Z-axis in degrees per second.
- */
- particleAngularSpeedVarianceZ: number
- /**
- * Minimum amount of random angular acceleration each particle will have around the X-axis in degrees per second squared.
+ * Minimum particle acceleration. A random value between this and {@link particleAccelerationMax} will be added to the three acceleration properties to get the final acceleration.
*
* See also:
- * - {@link particleAngularAccelerationXMax}
+ * - {@link particleAccelerationX}
+ * - {@link particleAccelerationY}
+ * - {@link particleAccelerationZ}
*/
- particleAngularAccelerationXMin: number
+ particleAccelerationMin: Vector3
/**
- * Minimum amount of random angular acceleration each particle will have around the Y-axis in degrees per second squared.
+ * Maximum particle acceleration. A random value between this and {@link particleAccelerationMin} will be added to the three acceleration properties to get the final acceleration.
*
* See also:
- * - {@link particleAngularAccelerationYMax}
+ * - {@link particleAccelerationX}
+ * - {@link particleAccelerationY}
+ * - {@link particleAccelerationZ}
*/
- particleAngularAccelerationYMin: number
+ particleAccelerationMax: Vector3
/**
- * Minimum amount of random angular acceleration each particle will have around the Z-axis in degrees per second squared.
- *
- * See also:
- * - {@link particleAngularAccelerationZMax}
+ * Maximum amount of random rotation for each particle in degrees.
*/
- particleAngularAccelerationZMin: number
+ particleRotationVariance: Vector3
/**
- * Maximum amount of random angular acceleration each particle will have around the X-axis in degrees per second squared.
- *
- * See also:
- * - {@link particleAngularAccelerationXMin}
+ * Maximum amount of random angular speed for each particle in degrees per second.
*/
- particleAngularAccelerationXMax: number
+ particleAngularSpeedVariance: Vector3
/**
- * Maximum amount of random angular acceleration each particle will have around the Y-axis in degrees per second squared.
+ * Minimum amount of random angular acceleration for each particle in degrees per second squared.
*
* See also:
- * - {@link particleAngularAccelerationYMin}
+ * - {@link particleAngularAccelerationMax}
*/
- particleAngularAccelerationYMax: number
+ particleAngularAccelerationMin: Vector3
/**
- * Maximum amount of random angular acceleration each particle will have around the Z-axis in degrees per second squared.
+ * Maximum amount of random angular acceleration for each particle in degrees per second squared.
*
* See also:
- * - {@link particleAngularAccelerationZMin}
+ * - {@link particleAngularAccelerationMin}
*/
- particleAngularAccelerationZMax: number
+ particleAngularAccelerationMax: Vector3
/**
* When enabled, the height of the particles will be based on the {@link particleSizeX width} instead of the {@link particleSizeY height field}, and the height field is ignored.
*
@@ -26640,24 +26349,24 @@ class GPUStandardParticle extends DataAction {
* Particle acceleration along the X-axis.
*
* See also:
- * - {@link particleAccelerationXMin}
- * - {@link particleAccelerationXMax}
+ * - {@link particleAccelerationMin}
+ * - {@link particleAccelerationMax}
*/
particleAccelerationX: ScalarValue
/**
* Particle acceleration along the Y-axis.
*
* See also:
- * - {@link particleAccelerationYMin}
- * - {@link particleAccelerationYMax}
+ * - {@link particleAccelerationMin}
+ * - {@link particleAccelerationMax}
*/
particleAccelerationY: ScalarValue
/**
* Particle acceleration along the Z-axis.
*
* See also:
- * - {@link particleAccelerationZMin}
- * - {@link particleAccelerationZMax}
+ * - {@link particleAccelerationMin}
+ * - {@link particleAccelerationMax}
*/
particleAccelerationZ: ScalarValue
unk_ds3_p1_7: ScalarValue
@@ -26666,8 +26375,8 @@ class GPUStandardParticle extends DataAction {
* Angular acceleration for particles around the Z-axis in degrees per second squared.
*
* See also:
- * - {@link particleAngularAccelerationZMin}
- * - {@link particleAngularAccelerationZMax}
+ * - {@link particleAngularAccelerationMin}
+ * - {@link particleAngularAccelerationMax}
*/
particleAngularAccelerationZ: ScalarValue
/**
@@ -26719,7 +26428,7 @@ class GPUStandardParticle extends DataAction {
unk_ds3_p2_5: Vector4Value
unk_ds3_p2_6: ScalarValue
constructor(props: GPUStandardParticleParams = {}) {
- super(ActionType.GPUStandardParticle)
+ super(ActionType.GPUStandardParticle, {isAppearance:true,isParticle:false})
this.assign(props)
}
}
@@ -26762,41 +26471,17 @@ export interface GPUStandardCorrectParticleParams {
*/
unk_ds3_f1_5?: number
/**
- * The width of the emitter.
- *
- * **Default**: `1`
- */
- emitterSizeX?: number
- /**
- * The height of the emitter.
+ * The size of the emitter.
*
- * **Default**: `1`
+ * **Default**: `[1, 1, 1]`
*/
- emitterSizeY?: number
+ emitterSize?: Vector3
/**
- * The depth of the emitter.
+ * The rotation of the emitter.
*
- * **Default**: `1`
- */
- emitterSizeZ?: number
- /**
- * The rotation of the emitter around the X-axis.
- *
- * **Default**: `0`
- */
- emitterRotationX?: number
- /**
- * The rotation of the emitter around the Y-axis.
- *
- * **Default**: `0`
- */
- emitterRotationY?: number
- /**
- * The rotation of the emitter around the Z-axis.
- *
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*/
- emitterRotationZ?: number
+ emitterRotation?: Vector3
/**
* Unknown float.
*
@@ -26955,263 +26640,101 @@ export interface GPUStandardCorrectParticleParams {
*/
unk_ds3_f1_33?: number
/**
- * Particle position offset along the X-axis.
+ * Particle position offset.
*
- * **Default**: `0`
- *
- * See also:
- * - {@link particleOffsetXMin}
- * - {@link particleOffsetXMax}
- */
- particleOffsetX?: number
- /**
- * Particle position offset along the Y-axis.
- *
- * **Default**: `0`
- *
- * See also:
- * - {@link particleOffsetYMin}
- * - {@link particleOffsetYMax}
- */
- particleOffsetY?: number
- /**
- * Particle position offset along the Z-axis.
- *
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*
* See also:
- * - {@link particleOffsetZMin}
- * - {@link particleOffsetZMax}
- */
- particleOffsetZ?: number
- /**
- * Minimum particle position offset along the X-axis. A random value between this and {@link particleOffsetXMax} will be added to {@link particleOffsetX} to get the final position offset.
- *
- * **Default**: `0`
- */
- particleOffsetXMin?: number
- /**
- * Minimum particle position offset along the Y-axis. A random value between this and {@link particleOffsetYMax} will be added to {@link particleOffsetY} to get the final position offset.
- *
- * **Default**: `0`
- */
- particleOffsetYMin?: number
- /**
- * Minimum particle position offset along the Z-axis. A random value between this and {@link particleOffsetZMax} will be added to {@link particleOffsetZ} to get the final position offset.
- *
- * **Default**: `0`
- */
- particleOffsetZMin?: number
- /**
- * Maximum particle position offset along the X-axis. A random value between this and {@link particleOffsetXMin} will be added to {@link particleOffsetX} to get the final position offset.
- *
- * **Default**: `0`
- */
- particleOffsetXMax?: number
- /**
- * Maximum particle position offset along the Y-axis. A random value between this and {@link particleOffsetYMin} will be added to {@link particleOffsetY} to get the final position offset.
- *
- * **Default**: `0`
+ * - {@link particleOffsetMin}
+ * - {@link particleOffsetMax}
*/
- particleOffsetYMax?: number
+ particleOffset?: Vector3
/**
- * Maximum particle position offset along the Z-axis. A random value between this and {@link particleOffsetZMin} will be added to {@link particleOffsetZ} to get the final position offset.
+ * Minimum particle position offset. A random value between this and {@link particleOffsetMax} will be added to {@link particleOffset} to get the final position offset.
*
- * **Default**: `0`
- */
- particleOffsetZMax?: number
- /**
- * Particle speed along the X-axis.
- *
- * **Default**: `0`
- *
- * See also:
- * - {@link particleSpeedXMin}
- * - {@link particleSpeedXMax}
+ * **Default**: `[0, 0, 0]`
*/
- particleSpeedX?: number
+ particleOffsetMin?: Vector3
/**
- * Particle speed along the Y-axis.
+ * Maximum particle position offset. A random value between this and {@link particleOffsetMin} will be added to {@link particleOffset} to get the final position offset.
*
- * **Default**: `0`
- *
- * See also:
- * - {@link particleSpeedYMin}
- * - {@link particleSpeedYMax}
+ * **Default**: `[0, 0, 0]`
*/
- particleSpeedY?: number
+ particleOffsetMax?: Vector3
/**
- * Particle speed along the Z-axis.
+ * Particle speed.
*
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*
* See also:
- * - {@link particleSpeedZMin}
- * - {@link particleSpeedZMax}
- */
- particleSpeedZ?: number
- /**
- * Minimum particle speed along the X-axis. A random value between this and {@link particleSpeedXMax} will be added to {@link particleSpeedX} to get the final speed.
- *
- * **Default**: `0`
- */
- particleSpeedXMin?: number
- /**
- * Minimum particle speed along the Y-axis. A random value between this and {@link particleSpeedYMax} will be added to {@link particleSpeedY} to get the final speed.
- *
- * **Default**: `0`
- */
- particleSpeedYMin?: number
- /**
- * Minimum particle speed along the Z-axis. A random value between this and {@link particleSpeedZMax} will be added to {@link particleSpeedZ} to get the final speed.
- *
- * **Default**: `0`
- */
- particleSpeedZMin?: number
- /**
- * Maximum particle speed along the X-axis. A random value between this and {@link particleSpeedXMin} will be added to {@link particleSpeedX} to get the final speed.
- *
- * **Default**: `0`
- */
- particleSpeedXMax?: number
- /**
- * Maximum particle speed along the Y-axis. A random value between this and {@link particleSpeedYMin} will be added to {@link particleSpeedY} to get the final speed.
- *
- * **Default**: `0`
- */
- particleSpeedYMax?: number
- /**
- * Maximum particle speed along the Z-axis. A random value between this and {@link particleSpeedZMin} will be added to {@link particleSpeedZ} to get the final speed.
- *
- * **Default**: `0`
- */
- particleSpeedZMax?: number
- /**
- * Minimum particle acceleration along the X-axis. A random value between this and {@link particleAccelerationXMax} will be added to {@link particleAccelerationX} to get the final acceleration.
- *
- * **Default**: `0`
- */
- particleAccelerationXMin?: number
- /**
- * Minimum particle acceleration along the Y-axis. A random value between this and {@link particleAccelerationYMax} will be added to {@link particleAccelerationY} to get the final acceleration.
- *
- * **Default**: `0`
- */
- particleAccelerationYMin?: number
- /**
- * Minimum particle acceleration along the Z-axis. A random value between this and {@link particleAccelerationZMax} will be added to {@link particleAccelerationZ} to get the final acceleration.
- *
- * **Default**: `0`
+ * - {@link particleSpeedMin}
+ * - {@link particleSpeedMax}
*/
- particleAccelerationZMin?: number
+ particleSpeed?: Vector3
/**
- * Maximum particle acceleration along the X-axis. A random value between this and {@link particleAccelerationXMin} will be added to {@link particleAccelerationX} to get the final acceleration.
+ * Minimum particle speed. A random value between this and {@link particleSpeedMax} will be added to {@link particleSpeed} to get the final speed.
*
- * **Default**: `0`
- */
- particleAccelerationXMax?: number
- /**
- * Maximum particle acceleration along the Y-axis. A random value between this and {@link particleAccelerationYMin} will be added to {@link particleAccelerationY} to get the final acceleration.
- *
- * **Default**: `0`
- */
- particleAccelerationYMax?: number
- /**
- * Maximum particle acceleration along the Z-axis. A random value between this and {@link particleAccelerationZMin} will be added to {@link particleAccelerationZ} to get the final acceleration.
- *
- * **Default**: `0`
- */
- particleAccelerationZMax?: number
- /**
- * Maximum amount of random rotation each particle will have around the X-axis in degrees.
- *
- * **Default**: `0`
- */
- particleRotationVarianceX?: number
- /**
- * Maximum amount of random rotation each particle will have around the Y-axis in degrees.
- *
- * **Default**: `0`
- */
- particleRotationVarianceY?: number
- /**
- * Maximum amount of random rotation each particle will have around the Z-axis in degrees.
- *
- * **Default**: `0`
- */
- particleRotationVarianceZ?: number
- /**
- * Maximum amount of random angular speed each particle will have around the X-axis in degrees per second.
- *
- * **Default**: `0`
- */
- particleAngularSpeedVarianceX?: number
- /**
- * Maximum amount of random angular speed each particle will have around the Y-axis in degrees per second.
- *
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*/
- particleAngularSpeedVarianceY?: number
+ particleSpeedMin?: Vector3
/**
- * Maximum amount of random angular speed each particle will have around the Z-axis in degrees per second.
+ * Maximum particle speed. A random value between this and {@link particleSpeedMin} will be added to {@link particleSpeed} to get the final speed.
*
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*/
- particleAngularSpeedVarianceZ?: number
+ particleSpeedMax?: Vector3
/**
- * Minimum amount of random angular acceleration each particle will have around the X-axis in degrees per second squared.
+ * Minimum particle acceleration. A random value between this and {@link particleAccelerationMax} will be added to the three acceleration properties to get the final acceleration.
*
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*
* See also:
- * - {@link particleAngularAccelerationXMax}
+ * - {@link particleAccelerationX}
+ * - {@link particleAccelerationY}
+ * - {@link particleAccelerationZ}
*/
- particleAngularAccelerationXMin?: number
+ particleAccelerationMin?: Vector3
/**
- * Minimum amount of random angular acceleration each particle will have around the Y-axis in degrees per second squared.
+ * Maximum particle acceleration. A random value between this and {@link particleAccelerationMin} will be added to the three acceleration properties to get the final acceleration.
*
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*
* See also:
- * - {@link particleAngularAccelerationYMax}
+ * - {@link particleAccelerationX}
+ * - {@link particleAccelerationY}
+ * - {@link particleAccelerationZ}
*/
- particleAngularAccelerationYMin?: number
+ particleAccelerationMax?: Vector3
/**
- * Minimum amount of random angular acceleration each particle will have around the Z-axis in degrees per second squared.
- *
- * **Default**: `0`
+ * Maximum amount of random rotation for each particle in degrees.
*
- * See also:
- * - {@link particleAngularAccelerationZMax}
+ * **Default**: `[0, 0, 0]`
*/
- particleAngularAccelerationZMin?: number
+ particleRotationVariance?: Vector3
/**
- * Maximum amount of random angular acceleration each particle will have around the X-axis in degrees per second squared.
- *
- * **Default**: `0`
+ * Maximum amount of random angular speed for each particle in degrees per second.
*
- * See also:
- * - {@link particleAngularAccelerationXMin}
+ * **Default**: `[0, 0, 0]`
*/
- particleAngularAccelerationXMax?: number
+ particleAngularSpeedVariance?: Vector3
/**
- * Maximum amount of random angular acceleration each particle will have around the Y-axis in degrees per second squared.
+ * Minimum amount of random angular acceleration for each particle in degrees per second squared.
*
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*
* See also:
- * - {@link particleAngularAccelerationYMin}
+ * - {@link particleAngularAccelerationMax}
*/
- particleAngularAccelerationYMax?: number
+ particleAngularAccelerationMin?: Vector3
/**
- * Maximum amount of random angular acceleration each particle will have around the Z-axis in degrees per second squared.
+ * Maximum amount of random angular acceleration for each particle in degrees per second squared.
*
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*
* See also:
- * - {@link particleAngularAccelerationZMin}
+ * - {@link particleAngularAccelerationMin}
*/
- particleAngularAccelerationZMax?: number
+ particleAngularAccelerationMax?: Vector3
/**
* When enabled, the height of the particles will be based on the {@link particleSizeX width} instead of the {@link particleSizeY height field}, and the height field is ignored.
*
@@ -28155,8 +27678,8 @@ export interface GPUStandardCorrectParticleParams {
* **Default**: `0`
*
* See also:
- * - {@link particleAccelerationXMin}
- * - {@link particleAccelerationXMax}
+ * - {@link particleAccelerationMin}
+ * - {@link particleAccelerationMax}
*/
particleAccelerationX?: ScalarValue
/**
@@ -28165,8 +27688,8 @@ export interface GPUStandardCorrectParticleParams {
* **Default**: `0`
*
* See also:
- * - {@link particleAccelerationYMin}
- * - {@link particleAccelerationYMax}
+ * - {@link particleAccelerationMin}
+ * - {@link particleAccelerationMax}
*/
particleAccelerationY?: ScalarValue
/**
@@ -28175,8 +27698,8 @@ export interface GPUStandardCorrectParticleParams {
* **Default**: `0`
*
* See also:
- * - {@link particleAccelerationZMin}
- * - {@link particleAccelerationZMax}
+ * - {@link particleAccelerationMin}
+ * - {@link particleAccelerationMax}
*/
particleAccelerationZ?: ScalarValue
/**
@@ -28197,8 +27720,8 @@ export interface GPUStandardCorrectParticleParams {
* **Default**: `0`
*
* See also:
- * - {@link particleAngularAccelerationZMin}
- * - {@link particleAngularAccelerationZMax}
+ * - {@link particleAngularAccelerationMin}
+ * - {@link particleAngularAccelerationMax}
*/
particleAngularAccelerationZ?: ScalarValue
/**
@@ -28334,7 +27857,8 @@ export interface GPUStandardCorrectParticleParams {
* 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 type: ActionType.GPUStandardCorrectParticle
+ declare readonly type: ActionType.GPUStandardCorrectParticle
+ declare readonly meta: ActionMeta & {isAppearance:true,isParticle:false}
unk_ds3_f1_0: number
/**
* The ID of the texture of the particles.
@@ -28348,29 +27872,13 @@ class GPUStandardCorrectParticle extends DataAction {
emitterShape: EmitterShape
unk_ds3_f1_5: number
/**
- * The width of the emitter.
- */
- emitterSizeX: number
- /**
- * The height of the emitter.
+ * The size of the emitter.
*/
- emitterSizeY: number
+ emitterSize: Vector3
/**
- * The depth of the emitter.
+ * The rotation of the emitter.
*/
- emitterSizeZ: number
- /**
- * The rotation of the emitter around the X-axis.
- */
- emitterRotationX: number
- /**
- * The rotation of the emitter around the Y-axis.
- */
- emitterRotationY: number
- /**
- * The rotation of the emitter around the Z-axis.
- */
- emitterRotationZ: number
+ emitterRotation: Vector3
unk_ds3_f1_12: number
unk_ds3_f1_13: number
unk_ds3_f1_14: number
@@ -28446,191 +27954,77 @@ class GPUStandardCorrectParticle extends DataAction {
unk_ds3_f1_32: number
unk_ds3_f1_33: number
/**
- * Particle position offset along the X-axis.
+ * Particle position offset.
*
* See also:
- * - {@link particleOffsetXMin}
- * - {@link particleOffsetXMax}
- */
- particleOffsetX: number
- /**
- * Particle position offset along the Y-axis.
- *
- * See also:
- * - {@link particleOffsetYMin}
- * - {@link particleOffsetYMax}
- */
- particleOffsetY: number
- /**
- * Particle position offset along the Z-axis.
- *
- * See also:
- * - {@link particleOffsetZMin}
- * - {@link particleOffsetZMax}
- */
- particleOffsetZ: number
- /**
- * Minimum particle position offset along the X-axis. A random value between this and {@link particleOffsetXMax} will be added to {@link particleOffsetX} to get the final position offset.
- */
- particleOffsetXMin: number
- /**
- * Minimum particle position offset along the Y-axis. A random value between this and {@link particleOffsetYMax} will be added to {@link particleOffsetY} to get the final position offset.
- */
- particleOffsetYMin: number
- /**
- * Minimum particle position offset along the Z-axis. A random value between this and {@link particleOffsetZMax} will be added to {@link particleOffsetZ} to get the final position offset.
- */
- particleOffsetZMin: number
- /**
- * Maximum particle position offset along the X-axis. A random value between this and {@link particleOffsetXMin} will be added to {@link particleOffsetX} to get the final position offset.
+ * - {@link particleOffsetMin}
+ * - {@link particleOffsetMax}
*/
- particleOffsetXMax: number
+ particleOffset: Vector3
/**
- * Maximum particle position offset along the Y-axis. A random value between this and {@link particleOffsetYMin} will be added to {@link particleOffsetY} to get the final position offset.
+ * Minimum particle position offset. A random value between this and {@link particleOffsetMax} will be added to {@link particleOffset} to get the final position offset.
*/
- particleOffsetYMax: number
+ particleOffsetMin: Vector3
/**
- * Maximum particle position offset along the Z-axis. A random value between this and {@link particleOffsetZMin} will be added to {@link particleOffsetZ} to get the final position offset.
- */
- particleOffsetZMax: number
- /**
- * Particle speed along the X-axis.
- *
- * See also:
- * - {@link particleSpeedXMin}
- * - {@link particleSpeedXMax}
+ * Maximum particle position offset. A random value between this and {@link particleOffsetMin} will be added to {@link particleOffset} to get the final position offset.
*/
- particleSpeedX: number
+ particleOffsetMax: Vector3
/**
- * Particle speed along the Y-axis.
+ * Particle speed.
*
* See also:
- * - {@link particleSpeedYMin}
- * - {@link particleSpeedYMax}
- */
- particleSpeedY: number
- /**
- * Particle speed along the Z-axis.
- *
- * See also:
- * - {@link particleSpeedZMin}
- * - {@link particleSpeedZMax}
- */
- particleSpeedZ: number
- /**
- * Minimum particle speed along the X-axis. A random value between this and {@link particleSpeedXMax} will be added to {@link particleSpeedX} to get the final speed.
- */
- particleSpeedXMin: number
- /**
- * Minimum particle speed along the Y-axis. A random value between this and {@link particleSpeedYMax} will be added to {@link particleSpeedY} to get the final speed.
+ * - {@link particleSpeedMin}
+ * - {@link particleSpeedMax}
*/
- particleSpeedYMin: number
+ particleSpeed: Vector3
/**
- * Minimum particle speed along the Z-axis. A random value between this and {@link particleSpeedZMax} will be added to {@link particleSpeedZ} to get the final speed.
+ * Minimum particle speed. A random value between this and {@link particleSpeedMax} will be added to {@link particleSpeed} to get the final speed.
*/
- particleSpeedZMin: number
+ particleSpeedMin: Vector3
/**
- * Maximum particle speed along the X-axis. A random value between this and {@link particleSpeedXMin} will be added to {@link particleSpeedX} to get the final speed.
+ * Maximum particle speed. A random value between this and {@link particleSpeedMin} will be added to {@link particleSpeed} to get the final speed.
*/
- particleSpeedXMax: number
+ particleSpeedMax: Vector3
/**
- * Maximum particle speed along the Y-axis. A random value between this and {@link particleSpeedYMin} will be added to {@link particleSpeedY} to get the final speed.
- */
- particleSpeedYMax: number
- /**
- * Maximum particle speed along the Z-axis. A random value between this and {@link particleSpeedZMin} will be added to {@link particleSpeedZ} to get the final speed.
- */
- particleSpeedZMax: number
- /**
- * Minimum particle acceleration along the X-axis. A random value between this and {@link particleAccelerationXMax} will be added to {@link particleAccelerationX} to get the final acceleration.
- */
- particleAccelerationXMin: number
- /**
- * Minimum particle acceleration along the Y-axis. A random value between this and {@link particleAccelerationYMax} will be added to {@link particleAccelerationY} to get the final acceleration.
- */
- particleAccelerationYMin: number
- /**
- * Minimum particle acceleration along the Z-axis. A random value between this and {@link particleAccelerationZMax} will be added to {@link particleAccelerationZ} to get the final acceleration.
- */
- particleAccelerationZMin: number
- /**
- * Maximum particle acceleration along the X-axis. A random value between this and {@link particleAccelerationXMin} will be added to {@link particleAccelerationX} to get the final acceleration.
- */
- particleAccelerationXMax: number
- /**
- * Maximum particle acceleration along the Y-axis. A random value between this and {@link particleAccelerationYMin} will be added to {@link particleAccelerationY} to get the final acceleration.
- */
- particleAccelerationYMax: number
- /**
- * Maximum particle acceleration along the Z-axis. A random value between this and {@link particleAccelerationZMin} will be added to {@link particleAccelerationZ} to get the final acceleration.
- */
- particleAccelerationZMax: number
- /**
- * Maximum amount of random rotation each particle will have around the X-axis in degrees.
- */
- particleRotationVarianceX: number
- /**
- * Maximum amount of random rotation each particle will have around the Y-axis in degrees.
- */
- particleRotationVarianceY: number
- /**
- * Maximum amount of random rotation each particle will have around the Z-axis in degrees.
- */
- particleRotationVarianceZ: number
- /**
- * Maximum amount of random angular speed each particle will have around the X-axis in degrees per second.
- */
- particleAngularSpeedVarianceX: number
- /**
- * Maximum amount of random angular speed each particle will have around the Y-axis in degrees per second.
- */
- particleAngularSpeedVarianceY: number
- /**
- * Maximum amount of random angular speed each particle will have around the Z-axis in degrees per second.
- */
- particleAngularSpeedVarianceZ: number
- /**
- * Minimum amount of random angular acceleration each particle will have around the X-axis in degrees per second squared.
+ * Minimum particle acceleration. A random value between this and {@link particleAccelerationMax} will be added to the three acceleration properties to get the final acceleration.
*
* See also:
- * - {@link particleAngularAccelerationXMax}
+ * - {@link particleAccelerationX}
+ * - {@link particleAccelerationY}
+ * - {@link particleAccelerationZ}
*/
- particleAngularAccelerationXMin: number
+ particleAccelerationMin: Vector3
/**
- * Minimum amount of random angular acceleration each particle will have around the Y-axis in degrees per second squared.
+ * Maximum particle acceleration. A random value between this and {@link particleAccelerationMin} will be added to the three acceleration properties to get the final acceleration.
*
* See also:
- * - {@link particleAngularAccelerationYMax}
+ * - {@link particleAccelerationX}
+ * - {@link particleAccelerationY}
+ * - {@link particleAccelerationZ}
*/
- particleAngularAccelerationYMin: number
+ particleAccelerationMax: Vector3
/**
- * Minimum amount of random angular acceleration each particle will have around the Z-axis in degrees per second squared.
- *
- * See also:
- * - {@link particleAngularAccelerationZMax}
+ * Maximum amount of random rotation for each particle in degrees.
*/
- particleAngularAccelerationZMin: number
+ particleRotationVariance: Vector3
/**
- * Maximum amount of random angular acceleration each particle will have around the X-axis in degrees per second squared.
- *
- * See also:
- * - {@link particleAngularAccelerationXMin}
+ * Maximum amount of random angular speed for each particle in degrees per second.
*/
- particleAngularAccelerationXMax: number
+ particleAngularSpeedVariance: Vector3
/**
- * Maximum amount of random angular acceleration each particle will have around the Y-axis in degrees per second squared.
+ * Minimum amount of random angular acceleration for each particle in degrees per second squared.
*
* See also:
- * - {@link particleAngularAccelerationYMin}
+ * - {@link particleAngularAccelerationMax}
*/
- particleAngularAccelerationYMax: number
+ particleAngularAccelerationMin: Vector3
/**
- * Maximum amount of random angular acceleration each particle will have around the Z-axis in degrees per second squared.
+ * Maximum amount of random angular acceleration for each particle in degrees per second squared.
*
* See also:
- * - {@link particleAngularAccelerationZMin}
+ * - {@link particleAngularAccelerationMin}
*/
- particleAngularAccelerationZMax: number
+ particleAngularAccelerationMax: Vector3
/**
* When enabled, the height of the particles will be based on the {@link particleSizeX width} instead of the {@link particleSizeY height field}, and the height field is ignored.
*
@@ -29063,24 +28457,24 @@ class GPUStandardCorrectParticle extends DataAction {
* Particle acceleration along the X-axis.
*
* See also:
- * - {@link particleAccelerationXMin}
- * - {@link particleAccelerationXMax}
+ * - {@link particleAccelerationMin}
+ * - {@link particleAccelerationMax}
*/
particleAccelerationX: ScalarValue
/**
* Particle acceleration along the Y-axis.
*
* See also:
- * - {@link particleAccelerationYMin}
- * - {@link particleAccelerationYMax}
+ * - {@link particleAccelerationMin}
+ * - {@link particleAccelerationMax}
*/
particleAccelerationY: ScalarValue
/**
* Particle acceleration along the Z-axis.
*
* See also:
- * - {@link particleAccelerationZMin}
- * - {@link particleAccelerationZMax}
+ * - {@link particleAccelerationMin}
+ * - {@link particleAccelerationMax}
*/
particleAccelerationZ: ScalarValue
unk_ds3_p1_7: ScalarValue
@@ -29089,8 +28483,8 @@ class GPUStandardCorrectParticle extends DataAction {
* Angular acceleration for particles around the Z-axis in degrees per second squared.
*
* See also:
- * - {@link particleAngularAccelerationZMin}
- * - {@link particleAngularAccelerationZMax}
+ * - {@link particleAngularAccelerationMin}
+ * - {@link particleAngularAccelerationMax}
*/
particleAngularAccelerationZ: ScalarValue
/**
@@ -29142,7 +28536,7 @@ class GPUStandardCorrectParticle extends DataAction {
unk_ds3_p2_5: Vector4Value
unk_ds3_p2_6: ScalarValue
constructor(props: GPUStandardCorrectParticleParams = {}) {
- super(ActionType.GPUStandardCorrectParticle)
+ super(ActionType.GPUStandardCorrectParticle, {isAppearance:true,isParticle:false})
this.assign(props)
}
}
@@ -29397,7 +28791,8 @@ export interface LightShaftParams {
* 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.
*/
class LightShaft extends DataAction {
- declare type: ActionType.LightShaft
+ declare readonly type: ActionType.LightShaft
+ declare readonly meta: ActionMeta & {isAppearance:true,isParticle:false}
/**
* Texture ID.
*/
@@ -29448,7 +28843,7 @@ class LightShaft extends DataAction {
unk_ds3_p1_8: ScalarValue
unk_ds3_p1_9: ScalarValue
constructor(props: LightShaftParams = {}) {
- super(ActionType.LightShaft)
+ super(ActionType.LightShaft, {isAppearance:true,isParticle:false})
this.assign(props)
}
}
@@ -29473,41 +28868,17 @@ export interface GPUSparkParticleParams {
*/
unk_ac6_f1_1?: number
/**
- * The width of the emitter.
- *
- * **Default**: `1`
- */
- emitterSizeX?: number
- /**
- * The height of the emitter.
+ * The size of the emitter.
*
- * **Default**: `1`
+ * **Default**: `[1, 1, 1]`
*/
- emitterSizeY?: number
+ emitterSize?: Vector3
/**
- * The depth of the emitter.
+ * The rotation of the emitter.
*
- * **Default**: `1`
- */
- emitterSizeZ?: number
- /**
- * The rotation of the emitter around the X-axis.
- *
- * **Default**: `0`
- */
- emitterRotationX?: number
- /**
- * The rotation of the emitter around the Y-axis.
- *
- * **Default**: `0`
- */
- emitterRotationY?: number
- /**
- * The rotation of the emitter around the Z-axis.
- *
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*/
- emitterRotationZ?: number
+ emitterRotation?: Vector3
/**
* Unknown float.
*
@@ -29666,71 +29037,27 @@ export interface GPUSparkParticleParams {
*/
unk_ac6_f1_29?: number
/**
- * Particle position offset along the X-axis.
- *
- * **Default**: `0`
- *
- * See also:
- * - {@link particleOffsetXMin}
- * - {@link particleOffsetXMax}
- */
- particleOffsetX?: number
- /**
- * Particle position offset along the Y-axis.
- *
- * **Default**: `0`
+ * Particle position offset.
*
- * See also:
- * - {@link particleOffsetYMin}
- * - {@link particleOffsetYMax}
- */
- particleOffsetY?: number
- /**
- * Particle position offset along the Z-axis.
- *
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*
* See also:
- * - {@link particleOffsetZMin}
- * - {@link particleOffsetZMax}
+ * - {@link particleOffsetMin}
+ * - {@link particleOffsetMax}
*/
- particleOffsetZ?: number
+ particleOffset?: Vector3
/**
- * Minimum particle position offset along the X-axis. A random value between this and {@link particleOffsetXMax} will be added to {@link particleOffsetX} to get the final position offset.
+ * Minimum particle position offset. A random value between this and {@link particleOffsetMax} will be added to {@link particleOffset} to get the final position offset.
*
- * **Default**: `0`
- */
- particleOffsetXMin?: number
- /**
- * Minimum particle position offset along the Y-axis. A random value between this and {@link particleOffsetYMax} will be added to {@link particleOffsetY} to get the final position offset.
- *
- * **Default**: `0`
- */
- particleOffsetYMin?: number
- /**
- * Minimum particle position offset along the Z-axis. A random value between this and {@link particleOffsetZMax} will be added to {@link particleOffsetZ} to get the final position offset.
- *
- * **Default**: `0`
- */
- particleOffsetZMin?: number
- /**
- * Maximum particle position offset along the X-axis. A random value between this and {@link particleOffsetXMin} will be added to {@link particleOffsetX} to get the final position offset.
- *
- * **Default**: `0`
- */
- particleOffsetXMax?: number
- /**
- * Maximum particle position offset along the Y-axis. A random value between this and {@link particleOffsetYMin} will be added to {@link particleOffsetY} to get the final position offset.
- *
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*/
- particleOffsetYMax?: number
+ particleOffsetMin?: Vector3
/**
- * Maximum particle position offset along the Z-axis. A random value between this and {@link particleOffsetZMin} will be added to {@link particleOffsetZ} to get the final position offset.
+ * Maximum particle position offset. A random value between this and {@link particleOffsetMin} will be added to {@link particleOffset} to get the final position offset.
*
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*/
- particleOffsetZMax?: number
+ particleOffsetMax?: Vector3
/**
* Unknown integer.
*
@@ -29738,41 +29065,23 @@ export interface GPUSparkParticleParams {
*/
unk_ac6_f1_39?: number
/**
- * Minimum particle speed along the X-axis.
- *
- * **Default**: `-0.01`
- */
- particleSpeedXMin?: number
- /**
- * Minimum particle speed along the Y-axis.
+ * Minimum particle speed.
*
- * **Default**: `-0.01`
- */
- particleSpeedYMin?: number
- /**
- * Minimum particle speed along the Z-axis.
- *
- * **Default**: `-0.01`
- */
- particleSpeedZMin?: number
- /**
- * Maximum particle speed along the X-axis.
+ * **Default**: `[-0.01, -0.01, -0.01]`
*
- * **Default**: `0.01`
+ * See also:
+ * - {@link particleSpeedMax}
*/
- particleSpeedXMax?: number
+ particleSpeedMin?: Vector3
/**
- * Maximum particle speed along the Y-axis.
+ * Maximum particle speed.
*
- * **Default**: `0.01`
- */
- particleSpeedYMax?: number
- /**
- * Maximum particle speed along the Z-axis.
+ * **Default**: `[0.01, 0.01, 0.01]`
*
- * **Default**: `0.01`
+ * See also:
+ * - {@link particleSpeedMin}
*/
- particleSpeedZMax?: number
+ particleSpeedMax?: Vector3
/**
* Scalar multiplier for the color that does not affect the alpha. Effectively a brightness multiplier.
*
@@ -29800,7 +29109,7 @@ export interface GPUSparkParticleParams {
/**
* Blend mode.
*
- * **Default**: {@link BlendMode.Normal}
+ * **Default**: {@link BlendMode.Add}
*/
blendMode?: BlendMode
/**
@@ -30447,12 +29756,8 @@ export interface GPUSparkParticleParams {
* 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 particleSpeedXMin}
- * - {@link particleSpeedYMin}
- * - {@link particleSpeedZMin}
- * - {@link particleSpeedXMax}
- * - {@link particleSpeedYMax}
- * - {@link particleSpeedZMax}
+ * - {@link particleSpeedMin}
+ * - {@link particleSpeedMax}
*
* **Default**: `0`
*/
@@ -30467,12 +29772,8 @@ export interface GPUSparkParticleParams {
* Downwards acceleration for particles.
*
* This requires any of the following fields to have a non-zero value:
- * - {@link particleSpeedXMin}
- * - {@link particleSpeedYMin}
- * - {@link particleSpeedZMin}
- * - {@link particleSpeedXMax}
- * - {@link particleSpeedYMax}
- * - {@link particleSpeedZMax}
+ * - {@link particleSpeedMin}
+ * - {@link particleSpeedMax}
*
* **Default**: `1`
*/
@@ -30540,7 +29841,8 @@ export interface GPUSparkParticleParams {
* 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 type: ActionType.GPUSparkParticle
+ declare readonly type: ActionType.GPUSparkParticle
+ declare readonly meta: ActionMeta & {isAppearance:true,isParticle:false}
/**
* The ID of the texture of the particles.
*/
@@ -30551,29 +29853,13 @@ class GPUSparkParticle extends DataAction {
emitterShape: EmitterShape
unk_ac6_f1_1: number
/**
- * The width of the emitter.
- */
- emitterSizeX: number
- /**
- * The height of the emitter.
- */
- emitterSizeY: number
- /**
- * The depth of the emitter.
+ * The size of the emitter.
*/
- emitterSizeZ: number
+ emitterSize: Vector3
/**
- * The rotation of the emitter around the X-axis.
+ * The rotation of the emitter.
*/
- emitterRotationX: number
- /**
- * The rotation of the emitter around the Y-axis.
- */
- emitterRotationY: number
- /**
- * The rotation of the emitter around the Z-axis.
- */
- emitterRotationZ: number
+ emitterRotation: Vector3
unk_ac6_f1_9: number
unk_ac6_f1_10: number
unk_ac6_f1_11: number
@@ -30657,78 +29943,36 @@ class GPUSparkParticle extends DataAction {
unk_ac6_f1_28: number
unk_ac6_f1_29: number
/**
- * Particle position offset along the X-axis.
- *
- * See also:
- * - {@link particleOffsetXMin}
- * - {@link particleOffsetXMax}
- */
- particleOffsetX: number
- /**
- * Particle position offset along the Y-axis.
+ * Particle position offset.
*
* See also:
- * - {@link particleOffsetYMin}
- * - {@link particleOffsetYMax}
- */
- particleOffsetY: number
- /**
- * Particle position offset along the Z-axis.
- *
- * See also:
- * - {@link particleOffsetZMin}
- * - {@link particleOffsetZMax}
- */
- particleOffsetZ: number
- /**
- * Minimum particle position offset along the X-axis. A random value between this and {@link particleOffsetXMax} will be added to {@link particleOffsetX} to get the final position offset.
- */
- particleOffsetXMin: number
- /**
- * Minimum particle position offset along the Y-axis. A random value between this and {@link particleOffsetYMax} will be added to {@link particleOffsetY} to get the final position offset.
+ * - {@link particleOffsetMin}
+ * - {@link particleOffsetMax}
*/
- particleOffsetYMin: number
+ particleOffset: Vector3
/**
- * Minimum particle position offset along the Z-axis. A random value between this and {@link particleOffsetZMax} will be added to {@link particleOffsetZ} to get the final position offset.
+ * Minimum particle position offset. A random value between this and {@link particleOffsetMax} will be added to {@link particleOffset} to get the final position offset.
*/
- particleOffsetZMin: number
+ particleOffsetMin: Vector3
/**
- * Maximum particle position offset along the X-axis. A random value between this and {@link particleOffsetXMin} will be added to {@link particleOffsetX} to get the final position offset.
+ * Maximum particle position offset. A random value between this and {@link particleOffsetMin} will be added to {@link particleOffset} to get the final position offset.
*/
- particleOffsetXMax: number
- /**
- * Maximum particle position offset along the Y-axis. A random value between this and {@link particleOffsetYMin} will be added to {@link particleOffsetY} to get the final position offset.
- */
- particleOffsetYMax: number
- /**
- * Maximum particle position offset along the Z-axis. A random value between this and {@link particleOffsetZMin} will be added to {@link particleOffsetZ} to get the final position offset.
- */
- particleOffsetZMax: number
+ particleOffsetMax: Vector3
unk_ac6_f1_39: number
/**
- * Minimum particle speed along the X-axis.
- */
- particleSpeedXMin: number
- /**
- * Minimum particle speed along the Y-axis.
- */
- particleSpeedYMin: number
- /**
- * Minimum particle speed along the Z-axis.
- */
- particleSpeedZMin: number
- /**
- * Maximum particle speed along the X-axis.
- */
- particleSpeedXMax: number
- /**
- * Maximum particle speed along the Y-axis.
+ * Minimum particle speed.
+ *
+ * See also:
+ * - {@link particleSpeedMax}
*/
- particleSpeedYMax: number
+ particleSpeedMin: Vector3
/**
- * Maximum particle speed along the Z-axis.
+ * Maximum particle speed.
+ *
+ * See also:
+ * - {@link particleSpeedMin}
*/
- particleSpeedZMax: number
+ particleSpeedMax: Vector3
/**
* Scalar multiplier for the color that does not affect the alpha. Effectively a brightness multiplier.
*/
@@ -31001,12 +30245,8 @@ class GPUSparkParticle extends DataAction {
* 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 particleSpeedXMin}
- * - {@link particleSpeedYMin}
- * - {@link particleSpeedZMin}
- * - {@link particleSpeedXMax}
- * - {@link particleSpeedYMax}
- * - {@link particleSpeedZMax}
+ * - {@link particleSpeedMin}
+ * - {@link particleSpeedMax}
*/
unkParticleAcceleration: ScalarValue
unk_ac6_p1_11: ScalarValue
@@ -31014,12 +30254,8 @@ class GPUSparkParticle extends DataAction {
* Downwards acceleration for particles.
*
* This requires any of the following fields to have a non-zero value:
- * - {@link particleSpeedXMin}
- * - {@link particleSpeedYMin}
- * - {@link particleSpeedZMin}
- * - {@link particleSpeedXMax}
- * - {@link particleSpeedYMax}
- * - {@link particleSpeedZMax}
+ * - {@link particleSpeedMin}
+ * - {@link particleSpeedMax}
*/
particleGravity: ScalarValue
unk_ac6_p1_13: ScalarValue
@@ -31031,7 +30267,7 @@ class GPUSparkParticle extends DataAction {
unk_ac6_p2_5: Vector4Value
unk_ac6_p2_6: ScalarValue
constructor(props: GPUSparkParticleParams = {}) {
- super(ActionType.GPUSparkParticle)
+ super(ActionType.GPUSparkParticle, {isAppearance:true,isParticle:false})
this.assign(props)
}
}
@@ -31056,41 +30292,17 @@ export interface GPUSparkCorrectParticleParams {
*/
unk_ac6_f1_1?: number
/**
- * The width of the emitter.
- *
- * **Default**: `1`
- */
- emitterSizeX?: number
- /**
- * The height of the emitter.
- *
- * **Default**: `1`
- */
- emitterSizeY?: number
- /**
- * The depth of the emitter.
- *
- * **Default**: `1`
- */
- emitterSizeZ?: number
- /**
- * The rotation of the emitter around the X-axis.
+ * The size of the emitter.
*
- * **Default**: `0`
- */
- emitterRotationX?: number
- /**
- * The rotation of the emitter around the Y-axis.
- *
- * **Default**: `0`
+ * **Default**: `[1, 1, 1]`
*/
- emitterRotationY?: number
+ emitterSize?: Vector3
/**
- * The rotation of the emitter around the Z-axis.
+ * The rotation of the emitter.
*
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*/
- emitterRotationZ?: number
+ emitterRotation?: Vector3
/**
* Unknown float.
*
@@ -31249,71 +30461,27 @@ export interface GPUSparkCorrectParticleParams {
*/
unk_ac6_f1_29?: number
/**
- * Particle position offset along the X-axis.
- *
- * **Default**: `0`
- *
- * See also:
- * - {@link particleOffsetXMin}
- * - {@link particleOffsetXMax}
- */
- particleOffsetX?: number
- /**
- * Particle position offset along the Y-axis.
- *
- * **Default**: `0`
- *
- * See also:
- * - {@link particleOffsetYMin}
- * - {@link particleOffsetYMax}
- */
- particleOffsetY?: number
- /**
- * Particle position offset along the Z-axis.
+ * Particle position offset.
*
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*
* See also:
- * - {@link particleOffsetZMin}
- * - {@link particleOffsetZMax}
- */
- particleOffsetZ?: number
- /**
- * Minimum particle position offset along the X-axis. A random value between this and {@link particleOffsetXMax} will be added to {@link particleOffsetX} to get the final position offset.
- *
- * **Default**: `0`
- */
- particleOffsetXMin?: number
- /**
- * Minimum particle position offset along the Y-axis. A random value between this and {@link particleOffsetYMax} will be added to {@link particleOffsetY} to get the final position offset.
- *
- * **Default**: `0`
- */
- particleOffsetYMin?: number
- /**
- * Minimum particle position offset along the Z-axis. A random value between this and {@link particleOffsetZMax} will be added to {@link particleOffsetZ} to get the final position offset.
- *
- * **Default**: `0`
+ * - {@link particleOffsetMin}
+ * - {@link particleOffsetMax}
*/
- particleOffsetZMin?: number
+ particleOffset?: Vector3
/**
- * Maximum particle position offset along the X-axis. A random value between this and {@link particleOffsetXMin} will be added to {@link particleOffsetX} to get the final position offset.
+ * Minimum particle position offset. A random value between this and {@link particleOffsetMax} will be added to {@link particleOffset} to get the final position offset.
*
- * **Default**: `0`
- */
- particleOffsetXMax?: number
- /**
- * Maximum particle position offset along the Y-axis. A random value between this and {@link particleOffsetYMin} will be added to {@link particleOffsetY} to get the final position offset.
- *
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*/
- particleOffsetYMax?: number
+ particleOffsetMin?: Vector3
/**
- * Maximum particle position offset along the Z-axis. A random value between this and {@link particleOffsetZMin} will be added to {@link particleOffsetZ} to get the final position offset.
+ * Maximum particle position offset. A random value between this and {@link particleOffsetMin} will be added to {@link particleOffset} to get the final position offset.
*
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*/
- particleOffsetZMax?: number
+ particleOffsetMax?: Vector3
/**
* Unknown integer.
*
@@ -31321,41 +30489,23 @@ export interface GPUSparkCorrectParticleParams {
*/
unk_ac6_f1_39?: number
/**
- * Minimum particle speed along the X-axis.
- *
- * **Default**: `-0.01`
- */
- particleSpeedXMin?: number
- /**
- * Minimum particle speed along the Y-axis.
+ * Minimum particle speed.
*
- * **Default**: `-0.01`
- */
- particleSpeedYMin?: number
- /**
- * Minimum particle speed along the Z-axis.
- *
- * **Default**: `-0.01`
- */
- particleSpeedZMin?: number
- /**
- * Maximum particle speed along the X-axis.
+ * **Default**: `[-0.01, -0.01, -0.01]`
*
- * **Default**: `0.01`
+ * See also:
+ * - {@link particleSpeedMax}
*/
- particleSpeedXMax?: number
+ particleSpeedMin?: Vector3
/**
- * Maximum particle speed along the Y-axis.
+ * Maximum particle speed.
*
- * **Default**: `0.01`
- */
- particleSpeedYMax?: number
- /**
- * Maximum particle speed along the Z-axis.
+ * **Default**: `[0.01, 0.01, 0.01]`
*
- * **Default**: `0.01`
+ * See also:
+ * - {@link particleSpeedMin}
*/
- particleSpeedZMax?: number
+ particleSpeedMax?: Vector3
/**
* Scalar multiplier for the color that does not affect the alpha. Effectively a brightness multiplier.
*
@@ -31383,7 +30533,7 @@ export interface GPUSparkCorrectParticleParams {
/**
* Blend mode.
*
- * **Default**: {@link BlendMode.Normal}
+ * **Default**: {@link BlendMode.Add}
*/
blendMode?: BlendMode
/**
@@ -32030,12 +31180,8 @@ export interface GPUSparkCorrectParticleParams {
* 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 particleSpeedXMin}
- * - {@link particleSpeedYMin}
- * - {@link particleSpeedZMin}
- * - {@link particleSpeedXMax}
- * - {@link particleSpeedYMax}
- * - {@link particleSpeedZMax}
+ * - {@link particleSpeedMin}
+ * - {@link particleSpeedMax}
*
* **Default**: `0`
*/
@@ -32050,12 +31196,8 @@ export interface GPUSparkCorrectParticleParams {
* Downwards acceleration for particles.
*
* This requires any of the following fields to have a non-zero value:
- * - {@link particleSpeedXMin}
- * - {@link particleSpeedYMin}
- * - {@link particleSpeedZMin}
- * - {@link particleSpeedXMax}
- * - {@link particleSpeedYMax}
- * - {@link particleSpeedZMax}
+ * - {@link particleSpeedMin}
+ * - {@link particleSpeedMax}
*
* **Default**: `1`
*/
@@ -32124,7 +31266,8 @@ export interface GPUSparkCorrectParticleParams {
* The name of this action is from Elden Ring's RTTI, where it's called "SparkCorrectParticle".
*/
class GPUSparkCorrectParticle extends DataAction {
- declare type: ActionType.GPUSparkCorrectParticle
+ declare readonly type: ActionType.GPUSparkCorrectParticle
+ declare readonly meta: ActionMeta & {isAppearance:true,isParticle:false}
/**
* The ID of the texture of the particles.
*/
@@ -32135,29 +31278,13 @@ class GPUSparkCorrectParticle extends DataAction {
emitterShape: EmitterShape
unk_ac6_f1_1: number
/**
- * The width of the emitter.
- */
- emitterSizeX: number
- /**
- * The height of the emitter.
+ * The size of the emitter.
*/
- emitterSizeY: number
+ emitterSize: Vector3
/**
- * The depth of the emitter.
+ * The rotation of the emitter.
*/
- emitterSizeZ: number
- /**
- * The rotation of the emitter around the X-axis.
- */
- emitterRotationX: number
- /**
- * The rotation of the emitter around the Y-axis.
- */
- emitterRotationY: number
- /**
- * The rotation of the emitter around the Z-axis.
- */
- emitterRotationZ: number
+ emitterRotation: Vector3
unk_ac6_f1_9: number
unk_ac6_f1_10: number
unk_ac6_f1_11: number
@@ -32241,78 +31368,36 @@ class GPUSparkCorrectParticle extends DataAction {
unk_ac6_f1_28: number
unk_ac6_f1_29: number
/**
- * Particle position offset along the X-axis.
- *
- * See also:
- * - {@link particleOffsetXMin}
- * - {@link particleOffsetXMax}
- */
- particleOffsetX: number
- /**
- * Particle position offset along the Y-axis.
- *
- * See also:
- * - {@link particleOffsetYMin}
- * - {@link particleOffsetYMax}
- */
- particleOffsetY: number
- /**
- * Particle position offset along the Z-axis.
+ * Particle position offset.
*
* See also:
- * - {@link particleOffsetZMin}
- * - {@link particleOffsetZMax}
- */
- particleOffsetZ: number
- /**
- * Minimum particle position offset along the X-axis. A random value between this and {@link particleOffsetXMax} will be added to {@link particleOffsetX} to get the final position offset.
- */
- particleOffsetXMin: number
- /**
- * Minimum particle position offset along the Y-axis. A random value between this and {@link particleOffsetYMax} will be added to {@link particleOffsetY} to get the final position offset.
- */
- particleOffsetYMin: number
- /**
- * Minimum particle position offset along the Z-axis. A random value between this and {@link particleOffsetZMax} will be added to {@link particleOffsetZ} to get the final position offset.
- */
- particleOffsetZMin: number
- /**
- * Maximum particle position offset along the X-axis. A random value between this and {@link particleOffsetXMin} will be added to {@link particleOffsetX} to get the final position offset.
+ * - {@link particleOffsetMin}
+ * - {@link particleOffsetMax}
*/
- particleOffsetXMax: number
+ particleOffset: Vector3
/**
- * Maximum particle position offset along the Y-axis. A random value between this and {@link particleOffsetYMin} will be added to {@link particleOffsetY} to get the final position offset.
+ * Minimum particle position offset. A random value between this and {@link particleOffsetMax} will be added to {@link particleOffset} to get the final position offset.
*/
- particleOffsetYMax: number
+ particleOffsetMin: Vector3
/**
- * Maximum particle position offset along the Z-axis. A random value between this and {@link particleOffsetZMin} will be added to {@link particleOffsetZ} to get the final position offset.
+ * Maximum particle position offset. A random value between this and {@link particleOffsetMin} will be added to {@link particleOffset} to get the final position offset.
*/
- particleOffsetZMax: number
+ particleOffsetMax: Vector3
unk_ac6_f1_39: number
/**
- * Minimum particle speed along the X-axis.
- */
- particleSpeedXMin: number
- /**
- * Minimum particle speed along the Y-axis.
- */
- particleSpeedYMin: number
- /**
- * Minimum particle speed along the Z-axis.
- */
- particleSpeedZMin: number
- /**
- * Maximum particle speed along the X-axis.
- */
- particleSpeedXMax: number
- /**
- * Maximum particle speed along the Y-axis.
+ * Minimum particle speed.
+ *
+ * See also:
+ * - {@link particleSpeedMax}
*/
- particleSpeedYMax: number
+ particleSpeedMin: Vector3
/**
- * Maximum particle speed along the Z-axis.
+ * Maximum particle speed.
+ *
+ * See also:
+ * - {@link particleSpeedMin}
*/
- particleSpeedZMax: number
+ particleSpeedMax: Vector3
/**
* Scalar multiplier for the color that does not affect the alpha. Effectively a brightness multiplier.
*/
@@ -32585,12 +31670,8 @@ class GPUSparkCorrectParticle extends DataAction {
* 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 particleSpeedXMin}
- * - {@link particleSpeedYMin}
- * - {@link particleSpeedZMin}
- * - {@link particleSpeedXMax}
- * - {@link particleSpeedYMax}
- * - {@link particleSpeedZMax}
+ * - {@link particleSpeedMin}
+ * - {@link particleSpeedMax}
*/
unkParticleAcceleration: ScalarValue
unk_ac6_p1_11: ScalarValue
@@ -32598,12 +31679,8 @@ class GPUSparkCorrectParticle extends DataAction {
* Downwards acceleration for particles.
*
* This requires any of the following fields to have a non-zero value:
- * - {@link particleSpeedXMin}
- * - {@link particleSpeedYMin}
- * - {@link particleSpeedZMin}
- * - {@link particleSpeedXMax}
- * - {@link particleSpeedYMax}
- * - {@link particleSpeedZMax}
+ * - {@link particleSpeedMin}
+ * - {@link particleSpeedMax}
*/
particleGravity: ScalarValue
unk_ac6_p1_13: ScalarValue
@@ -32615,7 +31692,7 @@ class GPUSparkCorrectParticle extends DataAction {
unk_ac6_p2_5: Vector4Value
unk_ac6_p2_6: ScalarValue
constructor(props: GPUSparkCorrectParticleParams = {}) {
- super(ActionType.GPUSparkCorrectParticle)
+ super(ActionType.GPUSparkCorrectParticle, {isAppearance:true,isParticle:false})
this.assign(props)
}
}
@@ -33263,7 +32340,8 @@ export interface DynamicTracerParams {
* 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 type: ActionType.DynamicTracer
+ declare readonly type: ActionType.DynamicTracer
+ declare readonly meta: ActionMeta & {isAppearance:true,isParticle:true}
/**
* Tracer orientation mode. See {@link TracerOrientationMode} for more information.
*/
@@ -33587,7 +32665,7 @@ class DynamicTracer extends DataAction {
unk_sdt_f1_17: number
unk_ac6_f2_41: number
constructor(props: DynamicTracerParams = {}) {
- super(ActionType.DynamicTracer)
+ super(ActionType.DynamicTracer, {isAppearance:true,isParticle:true})
this.assign(props)
}
}
@@ -33632,7 +32710,8 @@ export interface WaterInteractionParams {
* Simulates an interaction with water, allowing effects to create ripples in nearby water. The interaction basically pushes water in a shape controlled by a texture down to a given depth and holds it there for a duration before releasing it.
*/
class WaterInteraction extends DataAction {
- declare type: ActionType.WaterInteraction
+ declare readonly type: ActionType.WaterInteraction
+ declare readonly meta: ActionMeta & {isAppearance:true,isParticle:false}
/**
* The ID for a texture that controls the shape of the interaction.
*/
@@ -33654,7 +32733,7 @@ class WaterInteraction extends DataAction {
*/
duration: number
constructor(props: WaterInteractionParams = {}) {
- super(ActionType.WaterInteraction)
+ super(ActionType.WaterInteraction, {isAppearance:true,isParticle:false})
this.assign(props)
}
}
@@ -34427,7 +33506,8 @@ export interface LensFlareParams {
* Creates lens flares with up to 4 textured layers with different colors and sizes.
*/
class LensFlare extends DataAction {
- declare type: ActionType.LensFlare
+ declare readonly type: ActionType.LensFlare
+ declare readonly meta: ActionMeta & {isAppearance:true,isParticle:false}
/**
* Layer 1 texture ID.
*/
@@ -34794,7 +33874,7 @@ class LensFlare extends DataAction {
unk_ac6_f1_79: number
unk_ac6_f1_80: number
constructor(props: LensFlareParams = {}) {
- super(ActionType.LensFlare)
+ super(ActionType.LensFlare, {isAppearance:true,isParticle:false})
this.assign(props)
}
}
@@ -35637,7 +34717,8 @@ export interface RichModelParams {
* 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 type: ActionType.RichModel
+ declare readonly type: ActionType.RichModel
+ declare readonly meta: ActionMeta & {isAppearance:true,isParticle:true}
/**
* Rich model orientation mode. See {@link RichModelOrientationMode} for more information.
*/
@@ -36064,7 +35145,7 @@ class RichModel extends DataAction {
*/
uvSpeedMultiplier: Vector2Value
constructor(props: RichModelParams = {}) {
- super(ActionType.RichModel)
+ super(ActionType.RichModel, {isAppearance:true,isParticle:true})
this.assign(props)
}
}
@@ -36415,7 +35496,8 @@ export interface Unk10100Params {
* Unknown root node action.
*/
class Unk10100 extends DataAction {
- declare type: ActionType.Unk10100
+ declare readonly type: ActionType.Unk10100
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
unk_ds3_f1_0: number
unk_ds3_f1_1: number
unk_ds3_f1_2: number
@@ -36476,7 +35558,7 @@ class Unk10100 extends DataAction {
unk_ds3_f1_54: number
unk_ds3_f1_55: number
constructor(props: Unk10100Params = {}) {
- super(ActionType.Unk10100)
+ super(ActionType.Unk10100, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -36490,7 +35572,7 @@ export interface CancelForceParams {
* |-|-|-|
* | {@link ForceVolumeShape.Boundless Boundless} | *n/a* | *n/a* |
* | {@link ForceVolumeShape.Sphere Sphere} | {@link sphereRadius} | Center of the sphere |
- * | {@link ForceVolumeShape.Box Box} | {@link boxSizeX}, {@link boxSizeY}, {@link boxSizeZ} | Center of the box |
+ * | {@link ForceVolumeShape.Box Box} | {@link boxSize} | Center of the box |
* | {@link ForceVolumeShape.Cylinder Cylinder} | {@link cylinderHeight}, {@link cylinderRadius} | Center of the cylinder |
* | {@link ForceVolumeShape.SquarePrism SquarePrism} | {@link squarePrismHeight}, {@link squarePrismApothem} | Center of the base of the prism |
*
@@ -36507,38 +35589,14 @@ export interface CancelForceParams {
*/
sphereRadius?: number
/**
- * The width of the {@link ForceVolumeShape.Box box} volume.
- *
- * **Default**: `0`
- *
- * See also:
- * - {@link shape}
- * - {@link boxSizeY}
- * - {@link boxSizeZ}
- */
- boxSizeX?: number
- /**
- * The height of the {@link ForceVolumeShape.Box box} volume.
- *
- * **Default**: `0`
- *
- * See also:
- * - {@link shape}
- * - {@link boxSizeX}
- * - {@link boxSizeZ}
- */
- boxSizeY?: number
- /**
- * The depth of the {@link ForceVolumeShape.Box box} volume.
+ * The size of the {@link ForceVolumeShape.Box box} volume.
*
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*
* See also:
* - {@link shape}
- * - {@link boxSizeX}
- * - {@link boxSizeY}
*/
- boxSizeZ?: number
+ boxSize?: Vector3
/**
* The height of the {@link ForceVolumeShape.Cylinder cylinder} volume.
*
@@ -36593,7 +35651,8 @@ export interface CancelForceParams {
* The name of this action is based on Elden Ring's RTTI, where it's called "ForceFieldCancelArea".
*/
class CancelForce extends DataAction {
- declare type: ActionType.CancelForce
+ declare readonly type: ActionType.CancelForce
+ declare readonly meta: ActionMeta & {isAppearance:true,isParticle:false}
/**
* The shape of the volume.
*
@@ -36602,7 +35661,7 @@ class CancelForce extends DataAction {
* |-|-|-|
* | {@link ForceVolumeShape.Boundless Boundless} | *n/a* | *n/a* |
* | {@link ForceVolumeShape.Sphere Sphere} | {@link sphereRadius} | Center of the sphere |
- * | {@link ForceVolumeShape.Box Box} | {@link boxSizeX}, {@link boxSizeY}, {@link boxSizeZ} | Center of the box |
+ * | {@link ForceVolumeShape.Box Box} | {@link boxSize} | Center of the box |
* | {@link ForceVolumeShape.Cylinder Cylinder} | {@link cylinderHeight}, {@link cylinderRadius} | Center of the cylinder |
* | {@link ForceVolumeShape.SquarePrism SquarePrism} | {@link squarePrismHeight}, {@link squarePrismApothem} | Center of the base of the prism |
*/
@@ -36615,32 +35674,12 @@ class CancelForce extends DataAction {
*/
sphereRadius: number
/**
- * The width of the {@link ForceVolumeShape.Box box} volume.
- *
- * See also:
- * - {@link shape}
- * - {@link boxSizeY}
- * - {@link boxSizeZ}
- */
- boxSizeX: number
- /**
- * The height of the {@link ForceVolumeShape.Box box} volume.
+ * The size of the {@link ForceVolumeShape.Box box} volume.
*
* See also:
* - {@link shape}
- * - {@link boxSizeX}
- * - {@link boxSizeZ}
*/
- boxSizeY: number
- /**
- * The depth of the {@link ForceVolumeShape.Box box} volume.
- *
- * See also:
- * - {@link shape}
- * - {@link boxSizeX}
- * - {@link boxSizeY}
- */
- boxSizeZ: number
+ boxSize: Vector3
/**
* The height of the {@link ForceVolumeShape.Cylinder cylinder} volume.
*
@@ -36674,7 +35713,7 @@ class CancelForce extends DataAction {
*/
squarePrismApothem: number
constructor(props: CancelForceParams = {}) {
- super(ActionType.CancelForce)
+ super(ActionType.CancelForce, {isAppearance:true,isParticle:false})
this.assign(props)
}
}
@@ -36701,7 +35740,7 @@ export interface WindForceParams {
* |-|-|-|
* | {@link ForceVolumeShape.Boundless Boundless} | *n/a* | *n/a* |
* | {@link ForceVolumeShape.Sphere Sphere} | {@link sphereRadius} | Center of the sphere |
- * | {@link ForceVolumeShape.Box Box} | {@link boxSizeX}, {@link boxSizeY}, {@link boxSizeZ} | Center of the box |
+ * | {@link ForceVolumeShape.Box Box} | {@link boxSize} | Center of the box |
* | {@link ForceVolumeShape.Cylinder Cylinder} | {@link cylinderHeight}, {@link cylinderRadius} | Center of the cylinder |
* | {@link ForceVolumeShape.SquarePrism SquarePrism} | {@link squarePrismHeight}, {@link squarePrismApothem} | Center of the base of the prism |
*
@@ -36718,38 +35757,14 @@ export interface WindForceParams {
*/
sphereRadius?: number
/**
- * The width of the {@link ForceVolumeShape.Box box} where the force is active.
- *
- * **Default**: `0`
- *
- * See also:
- * - {@link shape}
- * - {@link boxSizeY}
- * - {@link boxSizeZ}
- */
- boxSizeX?: number
- /**
- * The height of the {@link ForceVolumeShape.Box box} where the force is active.
- *
- * **Default**: `0`
+ * The size of the {@link ForceVolumeShape.Box box} where the force is active.
*
- * See also:
- * - {@link shape}
- * - {@link boxSizeX}
- * - {@link boxSizeZ}
- */
- boxSizeY?: number
- /**
- * The depth of the {@link ForceVolumeShape.Box box} where the force is active.
- *
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*
* See also:
* - {@link shape}
- * - {@link boxSizeX}
- * - {@link boxSizeY}
*/
- boxSizeZ?: number
+ boxSize?: Vector3
/**
* The height of the {@link ForceVolumeShape.Cylinder cylinder} where the force is active.
*
@@ -37144,7 +36159,8 @@ export interface WindForceParams {
* The name of this action is based on Elden Ring's RTTI, where it's called "ForceFieldWindArea".
*/
class WindForce extends DataAction {
- declare type: ActionType.WindForce
+ declare readonly type: ActionType.WindForce
+ declare readonly meta: ActionMeta & {isAppearance:true,isParticle:false}
/**
* The strength of the force applied in the volume.
*
@@ -37164,7 +36180,7 @@ class WindForce extends DataAction {
* |-|-|-|
* | {@link ForceVolumeShape.Boundless Boundless} | *n/a* | *n/a* |
* | {@link ForceVolumeShape.Sphere Sphere} | {@link sphereRadius} | Center of the sphere |
- * | {@link ForceVolumeShape.Box Box} | {@link boxSizeX}, {@link boxSizeY}, {@link boxSizeZ} | Center of the box |
+ * | {@link ForceVolumeShape.Box Box} | {@link boxSize} | Center of the box |
* | {@link ForceVolumeShape.Cylinder Cylinder} | {@link cylinderHeight}, {@link cylinderRadius} | Center of the cylinder |
* | {@link ForceVolumeShape.SquarePrism SquarePrism} | {@link squarePrismHeight}, {@link squarePrismApothem} | Center of the base of the prism |
*/
@@ -37177,32 +36193,12 @@ class WindForce extends DataAction {
*/
sphereRadius: number
/**
- * The width of the {@link ForceVolumeShape.Box box} where the force is active.
- *
- * See also:
- * - {@link shape}
- * - {@link boxSizeY}
- * - {@link boxSizeZ}
- */
- boxSizeX: number
- /**
- * The height of the {@link ForceVolumeShape.Box box} where the force is active.
+ * The size of the {@link ForceVolumeShape.Box box} where the force is active.
*
* See also:
* - {@link shape}
- * - {@link boxSizeX}
- * - {@link boxSizeZ}
*/
- boxSizeY: number
- /**
- * The depth of the {@link ForceVolumeShape.Box box} where the force is active.
- *
- * See also:
- * - {@link shape}
- * - {@link boxSizeX}
- * - {@link boxSizeY}
- */
- boxSizeZ: number
+ boxSize: Vector3
/**
* The height of the {@link ForceVolumeShape.Cylinder cylinder} where the force is active.
*
@@ -37329,7 +36325,7 @@ class WindForce extends DataAction {
unk_ds3_f1_49: number
unk_ds3_f1_50: number
constructor(props: WindForceParams = {}) {
- super(ActionType.WindForce)
+ super(ActionType.WindForce, {isAppearance:true,isParticle:false})
this.assign(props)
}
}
@@ -37356,7 +36352,7 @@ export interface GravityForceParams {
* |-|-|-|-|
* | {@link ForceVolumeShape.Boundless Boundless} | *n/a* | *n/a* | Node position |
* | {@link ForceVolumeShape.Sphere Sphere} | {@link sphereRadius} | Center of the sphere | Center of the sphere |
- * | {@link ForceVolumeShape.Box Box} | {@link boxSizeX}, {@link boxSizeY}, {@link boxSizeZ} | Center of the box | Center of the box |
+ * | {@link ForceVolumeShape.Box Box} | {@link boxSize} | Center of the box | Center of the box |
* | {@link ForceVolumeShape.Cylinder Cylinder} | {@link cylinderHeight}, {@link cylinderRadius} | Slightly +Z of the center of the cylinder? | Slightly +Z of the origin? |
* | {@link ForceVolumeShape.SquarePrism SquarePrism} | {@link squarePrismHeight}, {@link squarePrismApothem} | Center of the base of the prism | Center of the prism |
*
@@ -37373,38 +36369,14 @@ export interface GravityForceParams {
*/
sphereRadius?: number
/**
- * The width of the {@link ForceVolumeShape.Box box} where the force is active.
- *
- * **Default**: `0`
- *
- * See also:
- * - {@link shape}
- * - {@link boxSizeY}
- * - {@link boxSizeZ}
- */
- boxSizeX?: number
- /**
- * The height of the {@link ForceVolumeShape.Box box} where the force is active.
- *
- * **Default**: `0`
- *
- * See also:
- * - {@link shape}
- * - {@link boxSizeX}
- * - {@link boxSizeZ}
- */
- boxSizeY?: number
- /**
- * The depth of the {@link ForceVolumeShape.Box box} where the force is active.
+ * The size of the {@link ForceVolumeShape.Box box} where the force is active.
*
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*
* See also:
* - {@link shape}
- * - {@link boxSizeX}
- * - {@link boxSizeY}
*/
- boxSizeZ?: number
+ boxSize?: Vector3
/**
* The height of the {@link ForceVolumeShape.Cylinder cylinder} where the force is active.
*
@@ -37657,7 +36629,8 @@ export interface GravityForceParams {
* The name of this action is based on Elden Ring's RTTI, where it's called "ForceFieldGravityArea".
*/
class GravityForce extends DataAction {
- declare type: ActionType.GravityForce
+ declare readonly type: ActionType.GravityForce
+ declare readonly meta: ActionMeta & {isAppearance:true,isParticle:false}
/**
* The strength of the force applied in the volume.
*
@@ -37677,7 +36650,7 @@ class GravityForce extends DataAction {
* |-|-|-|-|
* | {@link ForceVolumeShape.Boundless Boundless} | *n/a* | *n/a* | Node position |
* | {@link ForceVolumeShape.Sphere Sphere} | {@link sphereRadius} | Center of the sphere | Center of the sphere |
- * | {@link ForceVolumeShape.Box Box} | {@link boxSizeX}, {@link boxSizeY}, {@link boxSizeZ} | Center of the box | Center of the box |
+ * | {@link ForceVolumeShape.Box Box} | {@link boxSize} | Center of the box | Center of the box |
* | {@link ForceVolumeShape.Cylinder Cylinder} | {@link cylinderHeight}, {@link cylinderRadius} | Slightly +Z of the center of the cylinder? | Slightly +Z of the origin? |
* | {@link ForceVolumeShape.SquarePrism SquarePrism} | {@link squarePrismHeight}, {@link squarePrismApothem} | Center of the base of the prism | Center of the prism |
*/
@@ -37690,32 +36663,12 @@ class GravityForce extends DataAction {
*/
sphereRadius: number
/**
- * The width of the {@link ForceVolumeShape.Box box} where the force is active.
- *
- * See also:
- * - {@link shape}
- * - {@link boxSizeY}
- * - {@link boxSizeZ}
- */
- boxSizeX: number
- /**
- * The height of the {@link ForceVolumeShape.Box box} where the force is active.
- *
- * See also:
- * - {@link shape}
- * - {@link boxSizeX}
- * - {@link boxSizeZ}
- */
- boxSizeY: number
- /**
- * The depth of the {@link ForceVolumeShape.Box box} where the force is active.
+ * The size of the {@link ForceVolumeShape.Box box} where the force is active.
*
* See also:
* - {@link shape}
- * - {@link boxSizeX}
- * - {@link boxSizeY}
*/
- boxSizeZ: number
+ boxSize: Vector3
/**
* The height of the {@link ForceVolumeShape.Cylinder cylinder} where the force is active.
*
@@ -37812,7 +36765,7 @@ class GravityForce extends DataAction {
*/
fadeOutTime: number
constructor(props: GravityForceParams = {}) {
- super(ActionType.GravityForce)
+ super(ActionType.GravityForce, {isAppearance:true,isParticle:false})
this.assign(props)
}
}
@@ -37826,7 +36779,7 @@ export interface ForceCollisionParams {
* |-|-|
* | {@link ForceVolumeShape.Boundless Boundless} | *n/a* |
* | {@link ForceVolumeShape.Sphere Sphere} | {@link sphereRadius} |
- * | {@link ForceVolumeShape.Box Box} | {@link boxSizeX}, {@link boxSizeY}, {@link boxSizeZ} |
+ * | {@link ForceVolumeShape.Box Box} | {@link boxSize} |
* | {@link ForceVolumeShape.Cylinder Cylinder} | {@link cylinderHeight}, {@link cylinderRadius} |
*
* **Note**: The {@link ForceVolumeShape.SquarePrism SquarePrism} shape is not valid for this action.
@@ -37844,38 +36797,14 @@ export interface ForceCollisionParams {
*/
sphereRadius?: number
/**
- * The width of the {@link ForceVolumeShape.Box box} volume.
- *
- * **Default**: `0`
- *
- * See also:
- * - {@link shape}
- * - {@link boxSizeY}
- * - {@link boxSizeZ}
- */
- boxSizeX?: number
- /**
- * The height of the {@link ForceVolumeShape.Box box} volume.
- *
- * **Default**: `0`
- *
- * See also:
- * - {@link shape}
- * - {@link boxSizeX}
- * - {@link boxSizeZ}
- */
- boxSizeY?: number
- /**
- * The depth of the {@link ForceVolumeShape.Box box} volume.
+ * The size of the {@link ForceVolumeShape.Box box} volume.
*
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*
* See also:
* - {@link shape}
- * - {@link boxSizeX}
- * - {@link boxSizeY}
*/
- boxSizeZ?: number
+ boxSize?: Vector3
/**
* The height of the {@link ForceVolumeShape.Cylinder cylinder} volume.
*
@@ -37907,7 +36836,8 @@ export interface ForceCollisionParams {
* The name of this action is based on Elden Ring's RTTI, where it's called "CollisionFieldArea".
*/
class ForceCollision extends DataAction {
- declare type: ActionType.ForceCollision
+ declare readonly type: ActionType.ForceCollision
+ declare readonly meta: ActionMeta & {isAppearance:true,isParticle:false}
/**
* The shape of the volume.
*
@@ -37916,7 +36846,7 @@ class ForceCollision extends DataAction {
* |-|-|
* | {@link ForceVolumeShape.Boundless Boundless} | *n/a* |
* | {@link ForceVolumeShape.Sphere Sphere} | {@link sphereRadius} |
- * | {@link ForceVolumeShape.Box Box} | {@link boxSizeX}, {@link boxSizeY}, {@link boxSizeZ} |
+ * | {@link ForceVolumeShape.Box Box} | {@link boxSize} |
* | {@link ForceVolumeShape.Cylinder Cylinder} | {@link cylinderHeight}, {@link cylinderRadius} |
*
* **Note**: The {@link ForceVolumeShape.SquarePrism SquarePrism} shape is not valid for this action.
@@ -37930,32 +36860,12 @@ class ForceCollision extends DataAction {
*/
sphereRadius: number
/**
- * The width of the {@link ForceVolumeShape.Box box} volume.
- *
- * See also:
- * - {@link shape}
- * - {@link boxSizeY}
- * - {@link boxSizeZ}
- */
- boxSizeX: number
- /**
- * The height of the {@link ForceVolumeShape.Box box} volume.
- *
- * See also:
- * - {@link shape}
- * - {@link boxSizeX}
- * - {@link boxSizeZ}
- */
- boxSizeY: number
- /**
- * The depth of the {@link ForceVolumeShape.Box box} volume.
+ * The size of the {@link ForceVolumeShape.Box box} volume.
*
* See also:
* - {@link shape}
- * - {@link boxSizeX}
- * - {@link boxSizeY}
*/
- boxSizeZ: number
+ boxSize: Vector3
/**
* The height of the {@link ForceVolumeShape.Cylinder cylinder} volume.
*
@@ -37973,7 +36883,7 @@ class ForceCollision extends DataAction {
*/
cylinderRadius: number
constructor(props: ForceCollisionParams = {}) {
- super(ActionType.ForceCollision)
+ super(ActionType.ForceCollision, {isAppearance:true,isParticle:false})
this.assign(props)
}
}
@@ -38035,7 +36945,7 @@ export interface TurbulenceForceParams {
* |-|-|-|
* | {@link ForceVolumeShape.Boundless Boundless} | *n/a* | *n/a* |
* | {@link ForceVolumeShape.Sphere Sphere} | {@link sphereRadius} | Center of the sphere |
- * | {@link ForceVolumeShape.Box Box} | {@link boxSizeX}, {@link boxSizeY}, {@link boxSizeZ} | Center of the box |
+ * | {@link ForceVolumeShape.Box Box} | {@link boxSize} | Center of the box |
* | {@link ForceVolumeShape.Cylinder Cylinder} | {@link cylinderHeight}, {@link cylinderRadius} | Slightly +Z of the center of the cylinder? |
* | {@link ForceVolumeShape.SquarePrism SquarePrism} | {@link squarePrismHeight}, {@link squarePrismApothem} | Center of the base of the prism |
*
@@ -38052,38 +36962,14 @@ export interface TurbulenceForceParams {
*/
sphereRadius?: number
/**
- * The width of the {@link ForceVolumeShape.Box box} where the force is active.
- *
- * **Default**: `0`
- *
- * See also:
- * - {@link shape}
- * - {@link boxSizeY}
- * - {@link boxSizeZ}
- */
- boxSizeX?: number
- /**
- * The height of the {@link ForceVolumeShape.Box box} where the force is active.
- *
- * **Default**: `0`
+ * The size of the {@link ForceVolumeShape.Box box} where the force is active.
*
- * See also:
- * - {@link shape}
- * - {@link boxSizeX}
- * - {@link boxSizeZ}
- */
- boxSizeY?: number
- /**
- * The depth of the {@link ForceVolumeShape.Box box} where the force is active.
- *
- * **Default**: `0`
+ * **Default**: `[0, 0, 0]`
*
* See also:
* - {@link shape}
- * - {@link boxSizeX}
- * - {@link boxSizeY}
*/
- boxSizeZ?: number
+ boxSize?: Vector3
/**
* The height of the {@link ForceVolumeShape.Cylinder cylinder} where the force is active.
*
@@ -38409,7 +37295,8 @@ export interface TurbulenceForceParams {
* The name of this action is based on Elden Ring's RTTI, where it's called "ForceFieldTurbulenceArea".
*/
class TurbulenceForce extends DataAction {
- declare type: ActionType.TurbulenceForce
+ declare readonly type: ActionType.TurbulenceForce
+ declare readonly meta: ActionMeta & {isAppearance:true,isParticle:false}
/**
* Offset along the X-axis for the 3D noise used to control the strength and direction of the force in the volume.
*
@@ -38458,7 +37345,7 @@ class TurbulenceForce extends DataAction {
* |-|-|-|
* | {@link ForceVolumeShape.Boundless Boundless} | *n/a* | *n/a* |
* | {@link ForceVolumeShape.Sphere Sphere} | {@link sphereRadius} | Center of the sphere |
- * | {@link ForceVolumeShape.Box Box} | {@link boxSizeX}, {@link boxSizeY}, {@link boxSizeZ} | Center of the box |
+ * | {@link ForceVolumeShape.Box Box} | {@link boxSize} | Center of the box |
* | {@link ForceVolumeShape.Cylinder Cylinder} | {@link cylinderHeight}, {@link cylinderRadius} | Slightly +Z of the center of the cylinder? |
* | {@link ForceVolumeShape.SquarePrism SquarePrism} | {@link squarePrismHeight}, {@link squarePrismApothem} | Center of the base of the prism |
*/
@@ -38471,32 +37358,12 @@ class TurbulenceForce extends DataAction {
*/
sphereRadius: number
/**
- * The width of the {@link ForceVolumeShape.Box box} where the force is active.
+ * The size of the {@link ForceVolumeShape.Box box} where the force is active.
*
* See also:
* - {@link shape}
- * - {@link boxSizeY}
- * - {@link boxSizeZ}
*/
- boxSizeX: number
- /**
- * The height of the {@link ForceVolumeShape.Box box} where the force is active.
- *
- * See also:
- * - {@link shape}
- * - {@link boxSizeX}
- * - {@link boxSizeZ}
- */
- boxSizeY: number
- /**
- * The depth of the {@link ForceVolumeShape.Box box} where the force is active.
- *
- * See also:
- * - {@link shape}
- * - {@link boxSizeX}
- * - {@link boxSizeY}
- */
- boxSizeZ: number
+ boxSize: Vector3
/**
* The height of the {@link ForceVolumeShape.Cylinder cylinder} where the force is active.
*
@@ -38607,7 +37474,7 @@ class TurbulenceForce extends DataAction {
unk_unk_f1_50: number
unk_unk_f1_51: number
constructor(props: TurbulenceForceParams = {}) {
- super(ActionType.TurbulenceForce)
+ super(ActionType.TurbulenceForce, {isAppearance:true,isParticle:false})
this.assign(props)
}
}
@@ -39012,7 +37879,8 @@ export interface Unk10400Params {
* Unknown root node action.
*/
class Unk10400 extends DataAction {
- declare type: ActionType.Unk10400
+ declare readonly type: ActionType.Unk10400
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
unk_ds3_f1_0: number
unk_ds3_f1_1: number
unk_ds3_f1_2: number
@@ -39079,7 +37947,7 @@ class Unk10400 extends DataAction {
unk_ds3_f1_63: number
unk_ds3_f1_64: number
constructor(props: Unk10400Params = {}) {
- super(ActionType.Unk10400)
+ super(ActionType.Unk10400, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -39168,7 +38036,8 @@ export interface Unk10500Params {
* Unknown root node action.
*/
class Unk10500 extends DataAction {
- declare type: ActionType.Unk10500
+ declare readonly type: ActionType.Unk10500
+ declare readonly meta: ActionMeta & {isAppearance:false,isParticle:false}
/**
* Controls how fast time passes for the entire effect.
*
@@ -39193,7 +38062,7 @@ class Unk10500 extends DataAction {
unk_ds3_f1_8: number
unk_sdt_f1_9: number
constructor(props: Unk10500Params = {}) {
- super(ActionType.Unk10500)
+ super(ActionType.Unk10500, {isAppearance:false,isParticle:false})
this.assign(props)
}
}
@@ -39559,7 +38428,8 @@ export interface SpotLightParams {
* Light source with an elliptic cone shape, a spot light.
*/
class SpotLight extends DataAction {
- declare type: ActionType.SpotLight
+ declare readonly type: ActionType.SpotLight
+ declare readonly meta: ActionMeta & {isAppearance:true,isParticle:false}
/**
* Controls the diffuse color of the light.
*
@@ -39769,7 +38639,7 @@ class SpotLight extends DataAction {
unk_er_f1_26: number
unk_er_f1_27: number
constructor(props: SpotLightParams = {}) {
- super(ActionType.SpotLight)
+ super(ActionType.SpotLight, {isAppearance:true,isParticle:false})
this.assign(props)
}
}
@@ -39871,9 +38741,9 @@ abstract class Field {
case FieldType.Boolean: return new BoolField(value as boolean)
case FieldType.Integer: return new IntField(value as number)
case FieldType.Float: return new FloatField(value as number)
- case FieldType.Vector2: return new Vec2Field(value as Vector2)
- case FieldType.Vector3: return new Vec3Field(value as Vector3)
- case FieldType.Vector4: return new Vec4Field(value as Vector4)
+ case FieldType.Vector2: return new Vector2Field(value as Vector2)
+ case FieldType.Vector3: return new Vector3Field(value as Vector3)
+ case FieldType.Vector4: return new Vector4Field(value as Vector4)
}
}
@@ -39885,9 +38755,9 @@ abstract class Field {
case 'Boolean': return new BoolField(value as boolean)
case 'Integer': return new IntField(value as number)
case 'Float': return new FloatField(value as number)
- case 'Vector2': return new Vec2Field(value as Vector2)
- case 'Vector3': return new Vec3Field(value as Vector3)
- case 'Vector4': return new Vec4Field(value as Vector4)
+ case 'Vector2': return new Vector2Field(value as Vector2)
+ case 'Vector3': return new Vector3Field(value as Vector3)
+ case 'Vector4': return new Vector4Field(value as Vector4)
}
}
@@ -39922,22 +38792,22 @@ class FloatField extends Field {
clone(): Field { return new FloatField(this.value) }
}
-class Vec2Field extends Field {
+class Vector2Field extends Field {
declare readonly type = FieldType.Vector2
constructor(value: Vector2 = [0, 0]) { super(FieldType.Vector2, value) }
- clone(): Field { return new Vec2Field(this.value.slice() as Vector2) }
+ clone(): Field { return new Vector2Field(this.value.slice() as Vector2) }
}
-class Vec3Field extends Field {
+class Vector3Field extends Field {
declare readonly type = FieldType.Vector3
constructor(value: Vector3 = [0, 0, 0]) { super(FieldType.Vector3, value) }
- clone(): Field { return new Vec3Field(this.value.slice() as Vector3) }
+ clone(): Field { return new Vector3Field(this.value.slice() as Vector3) }
}
-class Vec4Field extends Field {
+class Vector4Field extends Field {
declare readonly type = FieldType.Vector4
constructor(value: Vector4 = [0, 0, 0, 0]) { super(FieldType.Vector4, value) }
- clone(): Field { return new Vec4Field(this.value.slice() as Vector4) }
+ clone(): Field { return new Vector4Field(this.value.slice() as Vector4) }
}
//#region Keyframe
@@ -42782,6 +41652,29 @@ namespace FXRUtility {
return rad * 180 / Math.PI
}
+ export function transform(center: Vector3, axis: Vector3, roll: number, nodes: Node[]) {
+ if (axis[0] === 0 && axis[1] === 0 && axis[2] === 0 && roll === 0) {
+ return new BasicNode([
+ NodeTransform({ offset: center })
+ ], nodes)
+ }
+ axis = normalizeVector3(axis)
+ const yaw = -Math.atan2(axis[1], axis[2]) * 180 / Math.PI
+ const pitch = -Math.asin(axis[0]) * 180 / Math.PI
+ return new BasicNode([
+ NodeTransform({
+ offset: center,
+ rotation: [yaw, 0, 0]
+ })
+ ], [
+ new BasicNode([
+ NodeTransform({
+ rotation: [0, pitch, roll]
+ }),
+ ], nodes)
+ ])
+ }
+
/**
* Creates a node with an attached particle that forms a line between two
* given points.
@@ -42838,6 +41731,218 @@ namespace FXRUtility {
])
}
+ /**
+ * Creates a node with a box outline. This can be useful for visualizing box
+ * volumes.
+ * @param pos The center point of the box.
+ * @param size The size of the box.
+ * @param color The color of the box outline.
+ * @param lineWidth The width of the box outline.
+ * @param args Extra arguments for the particle action constructor.
+ */
+ export function box(
+ pos: Vector3 = [0, 0, 0],
+ size: Vector3 = [1, 1, 1],
+ color?: Vector4Value,
+ lineWidth?: ScalarValue,
+ args?: BillboardExParams
+ ) {
+ const x1 = pos[0] - size[0] * 0.5
+ const y1 = pos[1] - size[1] * 0.5
+ const z1 = pos[2] - size[2] * 0.5
+ const x2 = pos[0] + size[0] * 0.5
+ const y2 = pos[1] + size[1] * 0.5
+ const z2 = pos[2] + size[2] * 0.5
+ return new BasicNode([], [
+ line([x1, y1, z1], [x1, y1, z2], color, lineWidth, OrientationMode.LocalYaw, args),
+ line([x1, y1, z2], [x1, y2, z2], color, lineWidth, OrientationMode.LocalYaw, args),
+ line([x1, y1, z1], [x1, y2, z1], color, lineWidth, OrientationMode.LocalYaw, args),
+ line([x1, y2, z1], [x1, y2, z2], color, lineWidth, OrientationMode.LocalYaw, args),
+
+ line([x2, y1, z1], [x2, y1, z2], color, lineWidth, OrientationMode.LocalYaw, args),
+ line([x2, y1, z2], [x2, y2, z2], color, lineWidth, OrientationMode.LocalYaw, args),
+ line([x2, y1, z1], [x2, y2, z1], color, lineWidth, OrientationMode.LocalYaw, args),
+ line([x2, y2, z1], [x2, y2, z2], color, lineWidth, OrientationMode.LocalYaw, args),
+
+ line([x1, y1, z1], [x2, y1, z1], color, lineWidth, OrientationMode.LocalYaw, args),
+ line([x1, y1, z2], [x2, y1, z2], color, lineWidth, OrientationMode.LocalYaw, args),
+ line([x1, y2, z1], [x2, y2, z1], color, lineWidth, OrientationMode.LocalYaw, args),
+ line([x1, y2, z2], [x2, y2, z2], color, lineWidth, OrientationMode.LocalYaw, args),
+ ])
+ }
+
+ /**
+ * Creates a node with a rectangular outline.
+ * @param width The width of the rectangle.
+ * @param height The height of the rectangle.
+ * @param color The color of the outline.
+ * @param lineWidth The width of the outline.
+ * @param args Extra arguments for the particle action constructor.
+ */
+ export function rect(
+ width: number = 1,
+ height: number = 1,
+ color?: Vector4Value,
+ lineWidth?: ScalarValue,
+ args?: BillboardExParams
+ ) {
+ const w = width * 0.5
+ const h = height * 0.5
+ return new BasicNode([], [
+ line([-w, -h, 0], [ w, -h, 0], color, lineWidth, OrientationMode.LocalYaw, args),
+ line([-w, h, 0], [ w, h, 0], color, lineWidth, OrientationMode.LocalYaw, args),
+ line([-w, -h, 0], [-w, h, 0], color, lineWidth, OrientationMode.LocalYaw, args),
+ line([ w, -h, 0], [ w, h, 0], color, lineWidth, OrientationMode.LocalYaw, args),
+ ])
+ }
+
+ /**
+ * Creates a node with an elliptical outline.
+ * @param radiusX The X radius of the ellipse.
+ * @param radiusY The Y radius of the ellipse.
+ * @param segments The number of line segments to use to approximate the
+ * ellipse.
+ * @param color The color of the outline.
+ * @param lineWidth The width of the outline.
+ * @param args Extra arguments for the particle action constructor.
+ */
+ export function ellipse(
+ radiusX: number = 1,
+ radiusY: number = radiusX,
+ segments: number = 16,
+ color?: Vector4Value,
+ lineWidth?: ScalarValue,
+ args?: BillboardExParams,
+ ) {
+ const angleInc = 2 * Math.PI / segments
+ return new BasicNode([], arrayOf(segments, i => {
+ const a1 = i * angleInc
+ const a2 = (i + 1) * angleInc
+ return line(
+ [radiusX * Math.cos(a1), radiusY * Math.sin(a1), 0],
+ [radiusX * Math.cos(a2), radiusY * Math.sin(a2), 0],
+ color,
+ lineWidth,
+ OrientationMode.LocalYaw,
+ args,
+ )
+ }))
+ }
+
+ /**
+ * Creates a node with three elliptical outlines forming an ellipsoid.
+ * @param radiusX The X radius of the ellipsoid.
+ * @param radiusY The Y radius of the ellipsoid.
+ * @param radiusY The Z radius of the ellipsoid.
+ * @param segments The number of line segments to use to approximate the
+ * ellipses.
+ * @param color The color of the outline.
+ * @param lineWidth The width of the outline.
+ * @param args Extra arguments for the particle action constructor.
+ */
+ export function ellipsoid(
+ radiusX: number = 1,
+ radiusY: number = radiusX,
+ radiusZ: number = radiusX,
+ segments: number = 16,
+ color?: Vector4Value,
+ lineWidth?: ScalarValue,
+ args?: BillboardExParams,
+ ) {
+ return new BasicNode([], [
+ ellipse(radiusX, radiusY, segments, color, lineWidth, args),
+ transform([0, 0, 0], [0, 1, 0], 0, ellipse(radiusX, radiusZ, segments, color, lineWidth, args).nodes),
+ transform([0, 0, 0], [1, 0, 0], 0, ellipse(radiusZ, radiusY, segments, color, lineWidth, args).nodes)
+ ])
+ }
+
+ /**
+ * Creates a node with two elliptical outlines and four line segments
+ * connecting them, forming a cylinder.
+ * @param radiusX The X radius of the cylinder.
+ * @param radiusY The Y radius of the cylinder.
+ * @param height The height of the cylinder.
+ * @param segments The number of line segments to use to approximate the
+ * ellipses.
+ * @param color The color of the lines.
+ * @param lineWidth The width of the lines.
+ * @param args Extra arguments for the particle action constructor.
+ */
+ export function cylinder(
+ radiusX: number = 1,
+ radiusY: number = radiusX,
+ height: number = 1,
+ segments: number = 16,
+ color?: Vector4Value,
+ lineWidth?: ScalarValue,
+ args?: BillboardExParams,
+ ) {
+ return new BasicNode([], [
+ transform([0, 0, -height * 0.5], [0, 0, 0], 0, ellipse(radiusX, radiusY, segments, color, lineWidth, args).nodes),
+ transform([0, 0, height * 0.5], [0, 0, 0], 0, ellipse(radiusX, radiusY, segments, color, lineWidth, args).nodes),
+ line([ radiusX, 0, -height * 0.5], [ radiusX, 0, height * 0.5], color, lineWidth, OrientationMode.LocalYaw, args),
+ line([-radiusX, 0, -height * 0.5], [-radiusX, 0, height * 0.5], color, lineWidth, OrientationMode.LocalYaw, args),
+ line([0, radiusY, -height * 0.5], [0, radiusY, height * 0.5], color, lineWidth, OrientationMode.LocalYaw, args),
+ line([0, -radiusY, -height * 0.5], [0, -radiusY, height * 0.5], color, lineWidth, OrientationMode.LocalYaw, args),
+ ])
+ }
+
+ /**
+ * Adds outlines for all particle and node emitters in the node.
+ *
+ * GPU particle emitters are not outlined, as they work very differently, and
+ * adding child nodes to the node with the emitter can seemingly sometimes
+ * affect the rotation of the GPU particle emitter somehow.
+ * @param node The node to add the emitter outlines to.
+ * @param recurse Controls if the outlines should be added to the entire
+ * branch or only to the {@link node}. Defaults to `true`.
+ * @param color The color of the outlines.
+ * @param lineWidth The width of the outlines.
+ * @param args Extra arguments for the particle action constructor.
+ */
+ export function outlineEmitters(
+ node: Node,
+ recurse: boolean = true,
+ color?: Vector4Value,
+ lineWidth?: ScalarValue,
+ args?: BillboardExParams
+ ) {
+ const nodes = recurse ? Array.from(node.walk()) : [node]
+ for (const n of nodes) {
+ if (n instanceof BasicNode || n instanceof NodeEmitterNode) {
+ for (const effect of n.walkEffects(false)) {
+ if (effect instanceof NodeEmitterEffect || (
+ effect instanceof BasicEffect &&
+ effect.appearance instanceof DataAction &&
+ effect.appearance.meta.isParticle
+ )) {
+ const emShape = effect.emitterShape
+ if (emShape instanceof DiskEmitterShape) {
+ const radius = constantValueOf(emShape.radius)
+ n.nodes.push(ellipse(radius, radius, 16, color, lineWidth, args))
+ } else if (emShape instanceof RectangleEmitterShape) {
+ const width = constantValueOf(emShape.sizeX)
+ const height = constantValueOf(emShape.sizeX)
+ n.nodes.push(rect(width, height, color, lineWidth, args))
+ } else if (emShape instanceof SphereEmitterShape) {
+ const radius = constantValueOf(emShape.radius)
+ n.nodes.push(ellipsoid(radius, radius, radius, 16, color, lineWidth, args))
+ } else if (emShape instanceof BoxEmitterShape) {
+ const x = constantValueOf(emShape.sizeX)
+ const y = constantValueOf(emShape.sizeY)
+ const z = constantValueOf(emShape.sizeZ)
+ n.nodes.push(box([0, 0, 0], [x, y, z], color, lineWidth, args))
+ } else if (emShape instanceof CylinderEmitterShape) {
+ const radius = constantValueOf(emShape.radius)
+ const height = constantValueOf(emShape.height)
+ n.nodes.push(cylinder(radius, radius, height, 16, color, lineWidth, args))
+ }
+ }
+ }
+ }
+ }
+ }
+
/**
* Creates a node that represents a string, which contains nodes that
* represent characters. This can be very useful for displaying text in an
@@ -42914,6 +42019,72 @@ namespace FXRUtility {
return new BasicNode([], nodes).scale((options.fontSize ?? 1) / 7)
}
+ /**
+ * Creates a {@link ActionType.NodeSpin NodeSpin} action from an animated
+ * rotation property.
+ *
+ * Normally, to animate the rotation of a node, you would need to use
+ * {@link ActionType.NodeSpin NodeSpin} to animate the angular speed.
+ * Controlling the angular speed instead of the rotation directly can be tricky
+ * if you want the node to point in specific directions at specific times. This
+ * function automatically converts an animated rotation property to an angular
+ * speed property to make this easier.
+ *
+ * **Notes**:
+ * - High angular velocities are not very well supported. Avoid using
+ * this function if you need the rotation to change quickly. Stepped rotation
+ * properties are not supported at all.
+ * - The rotation property must start at `[0, 0, 0]`. To control the initial
+ * rotation, wrap the node in one with that rotation instead.
+ * - This only creates an approximation, it is not perfect. If this is used
+ * with a looping property, the rotation will eventually stray from where it
+ * should be. This is likely due to how the angular speed is applied, which is
+ * also why high speeds break this.
+ * @param rotation The rotation of the node.
+ *
+ * **Default**: `[0, 0, 0]`
+ *
+ * **Argument**: {@link PropertyArgument.EffectAge Effect age}
+ */
+ export function animatedNodeRotation(rotation: Vector3Value): Action | NodeSpin {
+ if (!(rotation instanceof Property) || rotation instanceof ValueProperty) {
+ return new Action
+ }
+
+ if (rotation.function === PropertyFunction.Stepped) {
+ throw new Error(`The 'rotation' parameter for NodeAnimatedRotation cannot be a stepped property.`)
+ }
+
+ const prop: SequenceProperty =
+ rotation instanceof SequenceProperty ? rotation :
+ (rotation as ComponentSequenceProperty).combineComponents()
+ const keyframes = prop.function === PropertyFunction.Linear ?
+ prop.keyframes as Keyframe[] :
+ filterMillisecondDiffs(
+ interpolateSegments(prop.keyframes.map(e => e.position), 0.1, 40)
+ ).map(pos => new Keyframe(pos, prop.valueAt(pos)))
+ const speeds: Keyframe[] = []
+
+ for (let i = 0; i < keyframes.length; i++) {
+ if (i === keyframes.length - 1) {
+ speeds.push({ position: keyframes[i].position, value: [0, 0, 0] })
+ } else {
+ const deltaTime = keyframes[i + 1].position - keyframes[i].position
+ const deltaValue = anyValueDiff(keyframes[i + 1].value, keyframes[i].value)
+ const speed: Vector3 = anyValueMult(1 / deltaTime, deltaValue)
+ speeds.push(new Keyframe(keyframes[i].position, speed))
+ }
+ }
+
+ const angularSpeed = separateComponents(new LinearProperty(prop.loop, speeds))
+
+ return new NodeSpin({
+ angularSpeedX: angularSpeed[0],
+ angularSpeedY: angularSpeed[1],
+ angularSpeedZ: angularSpeed[2],
+ }).minify()
+ }
+
}
export {
@@ -43060,9 +42231,9 @@ export {
BoolField,
IntField,
FloatField,
- Vec2Field,
- Vec3Field,
- Vec4Field,
+ Vector2Field,
+ Vector3Field,
+ Vector4Field,
Keyframe,
BezierKeyframe,
@@ -43083,6 +42254,7 @@ export {
BloodVisibilityProperty,
anyValueMult,
anyValueSum,
+ anyValueDiff,
combineComponents,
separateComponents,
setVectorComponent,