[ { "name": "EffectCreateIn", "options": [ "any environment", "air only", "water only", "space only" ], "type": "enum" }, { "name": "EffectViolenceMode", "options": [ "either mode", "violent mode only", "nonviolent mode only" ], "type": "enum" }, { "name": "EffectCreate", "options": [ "independent of camera mode", "only in first person", "only in third person", "in first person if possible" ], "type": "enum" }, { "name": "EffectDistributionFunction", "options": [ "start", "end", "constant", "buildup", "falloff", "buildup and falloff" ], "type": "enum" }, { "name": "EffectPartFlags", "type": "bitfield", "fields": [ "face down regardless of location decals", { "name": "unused", "cache_only": true }, { "name": "make effect work", "cache_only": true } ], "width": 16 }, { "name": "EffectPartScalesValues", "type": "bitfield", "fields": [ "velocity", "velocity delta", "velocity cone angle", "angular velocity", "angular velocity delta", "type specific scale" ], "width": 32 }, { "name": "EffectParticleFlags", "type": "bitfield", "fields": [ "stay attached to marker", "random initial angle", "tint from object color", "interpolate tint as hsv", "across the long hue path" ], "width": 32 }, { "name": "EffectParticleScalesValues", "type": "bitfield", "fields": [ "velocity", "velocity delta", "velocity cone angle", "angular velocity", "angular velocity delta", "count", "count delta", "distribution radius", "distribution radius delta", "particle radius", "particle radius delta", "tint" ], "width": 32 }, { "name": "EffectFlags", "type": "bitfield", "fields": [ "deleted when attachment deactivates", { "name": "must be deterministic xbox", "cache_only": true }, { "name": "must be deterministic pc", "cache_only": true }, "disabled in anniversary by blood setting" ], "comment": "\"must be deterministic xbox\" was originally \"must be deterministic\", but apparently Gearbox renamed it to \"required for gameplay cannot optimize out\" and bumped the real \"must be deterministic\" flag up, thus special handling is needed for Xbox maps", "width": 32 }, { "name": "EffectLocation", "fields": [ { "name": "marker name", "type": "String32" } ], "type": "struct", "title": "marker name", "size": 32 }, { "name": "EffectPart", "fields": [ { "name": "create in", "type": "EffectCreateIn" }, { "name": "violence mode", "type": "EffectViolenceMode" }, { "name": "location", "type": "Index", "reflexive": "locations", "struct": "Effect" }, { "name": "flags", "type": "EffectPartFlags" }, { "type": "pad", "size": 12 }, { "name": "type class", "type": "uint32", "cache_only": true }, { "name": "type", "type": "TagReference", "groups": [ "damage_effect", "object", "particle_system", "sound", "decal", "light" ] }, { "type": "pad", "size": 24 }, { "name": "velocity bounds", "unit": "world units per second", "bounds": true, "type": "float" }, { "name": "velocity cone angle", "type": "Angle" }, { "name": "angular velocity bounds", "unit": "degrees per second", "bounds": true, "type": "Angle" }, { "name": "radius modifier bounds", "bounds": true, "type": "float" }, { "type": "pad", "size": 4 }, { "name": "a scales values", "type": "EffectPartScalesValues" }, { "name": "b scales values", "type": "EffectPartScalesValues" } ], "type": "struct", "title": "type", "size": 104 }, { "name": "EffectParticle", "fields": [ { "name": "create in", "type": "EffectCreateIn" }, { "name": "violence mode", "type": "EffectViolenceMode" }, { "name": "create", "type": "EffectCreate" }, { "type": "pad", "size": 2 }, { "name": "location", "type": "Index", "reflexive": "locations", "struct": "Effect" }, { "type": "pad", "size": 2 }, { "name": "relative direction", "type": "Euler2D" }, { "name": "relative offset", "type": "Point3D" }, { "name": "relative direction vector", "type": "Vector3D", "cache_only": true }, { "type": "pad", "size": 40 }, { "name": "particle type", "type": "TagReference", "groups": [ "particle" ] }, { "name": "flags", "type": "EffectParticleFlags" }, { "name": "distribution function", "type": "EffectDistributionFunction" }, { "type": "pad", "size": 2 }, { "name": "count", "bounds": true, "type": "int16" }, { "name": "distribution radius", "unit": "world units", "bounds": true, "type": "float" }, { "type": "pad", "size": 12 }, { "name": "velocity", "bounds": true, "unit": "world units per second", "type": "float" }, { "name": "velocity cone angle", "type": "Angle" }, { "name": "angular velocity", "unit": "degrees per second", "bounds": true, "type": "Angle" }, { "type": "pad", "size": 8 }, { "name": "radius", "unit": "world units", "bounds": true, "type": "float" }, { "type": "pad", "size": 8 }, { "name": "tint lower bound", "type": "ColorARGB" }, { "name": "tint upper bound", "type": "ColorARGB" }, { "type": "pad", "size": 16 }, { "name": "a scales values", "type": "EffectParticleScalesValues" }, { "name": "b scales values", "type": "EffectParticleScalesValues" } ], "type": "struct", "title": "particle type", "size": 232, "needs_postprocessed": true }, { "name": "EffectEvent", "fields": [ { "type": "pad", "size": 4 }, { "name": "skip fraction", "type": "Fraction" }, { "name": "delay bounds", "unit": "seconds", "bounds": true, "type": "float" }, { "name": "duration bounds", "unit": "seconds", "bounds": true, "type": "float" }, { "type": "pad", "size": 20 }, { "name": "parts", "type": "Reflexive", "struct": "EffectPart", "maximum": 32 }, { "name": "particles", "type": "Reflexive", "struct": "EffectParticle", "maximum": 32 } ], "type": "struct", "size": 68 }, { "name": "Effect", "fields": [ { "name": "flags", "type": "EffectFlags" }, { "name": "loop start event", "type": "Index", "reflexive": "events", "struct": "Effect" }, { "name": "loop stop event", "type": "Index", "reflexive": "events", "struct": "Effect" }, { "name": "maximum damage radius", "type": "float", "cache_only": true }, { "type": "pad", "size": 28 }, { "name": "locations", "type": "Reflexive", "struct": "EffectLocation", "maximum": 32 }, { "name": "events", "type": "Reflexive", "struct": "EffectEvent", "maximum": 32 } ], "type": "struct", "size": 64, "group": "effect", "needs_postprocessed": true } ]