export declare namespace Crashlands2 { /** * This file was automatically generated by json-schema-to-typescript. * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, * and run json-schema-to-typescript to regenerate this file. */ /** * If this mote is a draft, it will be unavailable to players and won't be part of the localization system. 'Review' means it is still a draft, but ready to have a final pass for staging. If it is staged, it will be localized but still unavailable to players. */ type Staging = "Draft" | "Review" | "Staged"; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup = string; type StrangeGroup = string; type NameInternal = string; type UnlockedBy1 = string; type EnglishText = string; /** * If checked, this text will not be exported for localization. */ type Skip = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText = string; type NameInternal1 = string; type UnlockedBy3 = string; type EnglishText1 = string; /** * If checked, this text will not be exported for localization. */ type Skip1 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText1 = string; /** * The primary sprite of the tile. */ type MainSprite = string; type Green = number; type Red = number; type Blue = number; /** * The sound to play when the player walks on this tile. */ type FootstepSound = string; /** * The sprite to use when displaying the tile in the UI (e.g. Build Mode). */ type Icon = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup1 = string; /** * The sprite to draw below the main sprite. Subimages must correspond with the Sprite. */ type UnderSprite = string; type Green1 = number; type Red1 = number; type Blue1 = number; /** * The probability of a given tile having Dapples on it. */ type SpawnChance = number; /** * If this tile is against water, the Shoreline Water Sprite will be drawn in the water to convey how the tile interacts with the water. */ type ShorelineUnderwaterSprite = string; /** * This is a large sprite that will be drawn underwater if this tile is at a shoreline. It helps create a sense of the water getting deeper. */ type ShelfUnderwaterSprite = string; type EnglishText2 = string; /** * If checked, this text will not be exported for localization. */ type Skip2 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText2 = string; /** * Whether the tile should be X-flipped randomly when placed. */ type Flippable = boolean; /** * The sound to play when this tile is placed in the editor or in Build Mode. */ type PlacementSound = string; type EnglishText3 = string; /** * If checked, this text will not be exported for localization. */ type Skip3 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText3 = string; /** * The primary sprite of the tile. */ type MainSprite1 = string; type Green2 = number; type Red2 = number; type Blue2 = number; /** * The sound to play when the player walks on this tile. */ type FootstepSound1 = string; /** * The sprite to use when displaying the tile in the UI (e.g. Build Mode). */ type Icon1 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup2 = string; /** * The sprite to draw below the main sprite. Subimages must correspond with the Sprite. */ type UnderSprite1 = string; type Green3 = number; type Red3 = number; type Blue3 = number; /** * The probability of a given tile having Dapples on it. */ type SpawnChance1 = number; type ResearchNode = string; type ChangePerPoint = number; /** * What workstation the player must be near to craft this recipe. */ type Station = string; /** * Change this number to increase or decrease the number of materials required to craft this item. */ type EffortModifier = number; type UnlockedBy4 = string; type OutputQuantity = number; type ResearchNode1 = string; type ChangePerPoint1 = number; type Style = "Additive" | "Multiplicative"; type EnglishText4 = string; /** * If checked, this text will not be exported for localization. */ type Skip4 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText4 = string; /** * Whether the tile should be X-flipped randomly when placed. */ type Flippable1 = boolean; /** * The sound to play when this tile is placed in the editor or in Build Mode. */ type PlacementSound1 = string; /** * If set, this world element will be considered a variant of another world element. Its recipe will be rolled together with that item, and they will share crafting efficiencies. */ type VariantParent = string; type EnglishText5 = string; /** * If checked, this text will not be exported for localization. */ type Skip5 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText5 = string; /** * The primary sprite of the tile. */ type MainSprite2 = string; type Green4 = number; type Red4 = number; type Blue4 = number; /** * The sound to play when the player walks on this tile. */ type FootstepSound2 = string; /** * The sprite to use when displaying the tile in the UI (e.g. Build Mode). */ type Icon2 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup3 = string; /** * The sprite to draw below the main sprite. Subimages must correspond with the Sprite. */ type UnderSprite2 = string; type Green5 = number; type Red5 = number; type Blue5 = number; /** * The probability of a given tile having Dapples on it. */ type SpawnChance2 = number; type ResearchNode2 = string; type ChangePerPoint2 = number; /** * What workstation the player must be near to craft this recipe. */ type Station1 = string; /** * Change this number to increase or decrease the number of materials required to craft this item. */ type EffortModifier1 = number; type UnlockedBy5 = string; type OutputQuantity1 = number; type ResearchNode3 = string; type ChangePerPoint3 = number; type Style1 = "Additive" | "Multiplicative"; /** * If this tile is against water, the Shoreline Water Sprite will be drawn in the water to convey how the tile interacts with the water. */ type ShorelineUnderwaterSprite1 = string; /** * This is a large sprite that will be drawn underwater if this tile is at a shoreline. It helps create a sense of the water getting deeper. */ type ShelfUnderwaterSprite1 = string; type EnglishText6 = string; /** * If checked, this text will not be exported for localization. */ type Skip6 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText6 = string; /** * The sound to play when this tile is placed in the editor or in Build Mode. */ type PlacementSound2 = string; /** * Whether the tile should be X-flipped randomly when placed. */ type Flippable2 = boolean; /** * If set, this world element will be considered a variant of another world element. Its recipe will be rolled together with that item, and they will share crafting efficiencies. */ type VariantParent1 = string; type State = string; /** * Relative to the object's origin */ type XOffset = number; /** * If set, the particle will anchor to this spine bone, and the X and Y offsets will be relative to the bone's position */ type SpineBone = string; /** * Relative to the object's origin */ type YOffset = number; /** * If set, the particle system will be drawn behind the object */ type Behind = boolean; type EmitterScale = number; type ParticleSystem = string; /** * Whether the player walks over the top of this item. */ type Underfoot = boolean; type EnglishText7 = string; /** * If checked, this text will not be exported for localization. */ type Skip7 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText7 = string; /** * Change this if the in-game shadow ends up too big or too small for the object. */ type ScaleModifier = number; type Sprite = string; /** * If true, this item will not be shown in the progression map. */ type IgnoreInProgressionMap = boolean; /** * Whether the object can be passed through or not. Solid objects cannot move, and they use the grid for collisions. So if a solid object is much smaller than a grid space, it will cause visual confusion. If the item is larger than a grid space, it will become a 2x2 or 3x3, etc... to fit. */ type Solid = boolean; type Height = number; type Width = number; /** * The type of hitbox to use. This will influence collisions, as well as how the object intercepts mouse clicks. */ type Type = "Cylinder" | "Cone" | "Box" | "Pyramid"; /** * If false, the object will always render itself at its normal color and won't be darkened or brightened by lighting. */ type UseLighting = boolean; type Object = string; type UIIcon = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup4 = string; type ResearchNode4 = string; type ChangePerPoint4 = number; /** * What workstation the player must be near to craft this recipe. */ type Station2 = string; /** * Change this number to increase or decrease the number of materials required to craft this item. */ type EffortModifier2 = number; type UnlockedBy6 = string; type OutputQuantity2 = number; type ResearchNode5 = string; type ChangePerPoint5 = number; type Style2 = "Additive" | "Multiplicative"; /** * A brief decription about this group for internal reference. */ type PriorityGroupNameInternal = string; type Condition = { abilities?: Abilities; casting_state: Casting; condition_type?: "Ability"; } | { datafield_evaluation: Evaluation; condition_type?: "Datafield"; } | { daytime: DuringDaytime; condition_type?: "Daylight"; } | { condition_type?: "Combat"; combat: InCombat; } | { insight_modifier?: InsightModifier; timestamp: Timestamp; condition_type?: "Timestamp"; evaluation: "==" | "!=" | "<" | "<=" | ">" | ">="; minutes_passed: MinutesSinceTimestamp; } | { moon: ActiveMoon; condition_type?: "Moon"; } | { quest: QuestToCheck; condition_type?: "Quest"; quest_status: QuestStatus; } | { following: Following; condition_type?: "Artisan Following"; artisan: Buddy; } | { prerequisite: Insight1; unlock_text?: InsightTooltip; condition_type?: "Insight"; } | { proximity_range: DistanceRequiredGridSpaces; proximity_targets: Targets; proximity_ignores_stealth: IgnoreStealthedTargets; condition_type?: "Proximity"; proximity_quantity: NumberOfTargets; } | { hp_evaluation: HealthEvaluation; condition_type?: "Health"; } | { require_all: RequireAll2; condition_type?: "Item Equipped"; items: Items2; } | { condition_type?: "Item Wielding"; items: Items3; } | { condition_type?: "Wearing Equipment Set"; set_evaluation: PiecesEquipped; } | { condition_type?: "Buffs"; buff_exclusive?: Exclusive; buff_require_all: RequireAll3; buff_check_self: CheckSelf; buff_own_only: OwnBuffsOnly; buff_num_targets?: NumberOfTargets1; buff_target_filter?: BuffTargetFilter; buff_proximity?: BuffTargetRange; buff_stack_evaluation?: Stacks4; buffs: Buffs8; buff_target: TargetEntity; } | { condition_type?: "Boss Defeated"; boss: Boss; } | { comparison: NumberSummoned; condition_type?: "Summoned Entities"; summoned_filter?: SummonedEntitiesFilter; } | { areas: Areas; condition_type?: "Area"; } | { condition_type?: "Weather"; weather_ids: Weather; } | { condition_type?: "Boss Phase"; phase: Phase; } | { scene: Scene; condition_type?: "Scene"; exclusive?: Exclusive1; } | { following: Following1; condition_type?: "Pet"; pet_item_id: Pet; }; /** * If set, the ability's casting state must match this checkbox. */ type Casting = boolean; type DuringDaytime = boolean; type InCombat = boolean; /** * How much the 'Minutes Since Timestamp' should be adjusted (up or down) for each point invested in the Insight. */ type ChangePerPoint6 = number; type Insight = string; type Timestamp = string; /** * If greater than 0, then this many minutes will have passed since the timestamp was set. If less than 0, the timestamp will be this many minutes from now. */ type MinutesSinceTimestamp = number; type ActiveMoon = string; /** * The quest whose status we are querying. */ type QuestToCheck = string; type QuestStatus = "Complete" | "Started" | "Not Started"; type Following = boolean; type Buddy = string; type Insight1 = string; type EnglishText8 = string; /** * If checked, this text will not be exported for localization. */ type Skip8 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText8 = string; type Min = number; type Max = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll = boolean; type Quantity = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude1 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll1 = boolean; type Quantity1 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants1 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags1 = boolean; /** * If checked, the proximity check will fail on targets that are stealthed. */ type IgnoreStealthedTargets = boolean; type Evaluation1 = "==" | "!=" | "<" | "<=" | ">" | ">="; type Quantity2 = number; /** * If checked, this condition will only be met if ALL of the items listed are equipped at the same time. */ type RequireAll2 = boolean; type EquipmentSet = string; /** * If checked, this condition will only be considered met if the defined conditions are NOT met. */ type Exclusive = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on yourself at the same time. */ type RequireAll3 = boolean; /** * Obsolete--delete. */ type CheckSelf = boolean; /** * If checked, only buffs created by you will be checked. Otherwise, all buffs will be checked. */ type OwnBuffsOnly = boolean; type Quantity3 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude2 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll4 = boolean; type Quantity4 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants2 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags2 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude3 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll5 = boolean; type Quantity5 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants3 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags3 = boolean; type Min1 = number; type Max1 = number; type Quantity6 = number; /** * Which entity's buffs to query. */ type TargetEntity = "Self" | "Other" | "All Entities"; type Boss = string; type Quantity7 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude4 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll6 = boolean; type Quantity8 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants4 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags4 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude5 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll7 = boolean; type Quantity9 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants5 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags5 = boolean; type Phase = string; /** * The target entity must belong to this scene. */ type Scene = string; /** * If checked, the condition will be met if the entity is NOT from the scene. */ type Exclusive1 = boolean; /** * If checked, the pet must be following you. Otherwise, the pet must NOT be following you. */ type Following1 = boolean; /** * Which pet to check. */ type Pet = string; /** * If true, then every condition must be met. If false, then only one of the conditions must be met. */ type RequireAllConditions = boolean; type State1 = string; type Condition1 = { abilities?: Abilities1; casting_state: Casting1; condition_type?: "Ability"; } | { datafield_evaluation: Evaluation2; condition_type?: "Datafield"; } | { daytime: DuringDaytime1; condition_type?: "Daylight"; } | { condition_type?: "Combat"; combat: InCombat1; } | { insight_modifier?: InsightModifier1; timestamp: Timestamp1; condition_type?: "Timestamp"; evaluation: "==" | "!=" | "<" | "<=" | ">" | ">="; minutes_passed: MinutesSinceTimestamp1; } | { condition_type?: "Moon"; moon: ActiveMoon1; } | { quest: QuestToCheck1; condition_type?: "Quest"; quest_status: QuestStatus1; } | { following: Following2; condition_type?: "Artisan Following"; artisan: Buddy1; } | { prerequisite: Insight3; unlock_text?: InsightTooltip1; condition_type?: "Insight"; } | { proximity_range: DistanceRequiredGridSpaces1; proximity_targets: Targets1; proximity_ignores_stealth: IgnoreStealthedTargets1; condition_type?: "Proximity"; proximity_quantity: NumberOfTargets2; } | { hp_evaluation: HealthEvaluation1; condition_type?: "Health"; } | { require_all: RequireAll10; condition_type?: "Item Equipped"; items: Items10; } | { condition_type?: "Item Wielding"; items: Items11; } | { condition_type?: "Wearing Equipment Set"; set_evaluation: PiecesEquipped1; } | { condition_type?: "Buffs"; buff_exclusive?: Exclusive2; buff_require_all: RequireAll11; buff_check_self: CheckSelf1; buff_own_only: OwnBuffsOnly1; buff_num_targets?: NumberOfTargets3; buff_target_filter?: BuffTargetFilter1; buff_proximity?: BuffTargetRange1; buff_stack_evaluation?: Stacks11; buffs: Buffs21; buff_target: TargetEntity1; } | { condition_type?: "Boss Defeated"; boss: Boss1; } | { comparison: NumberSummoned1; condition_type?: "Summoned Entities"; summoned_filter?: SummonedEntitiesFilter1; } | { areas: Areas1; condition_type?: "Area"; } | { condition_type?: "Weather"; weather_ids: Weather1; } | { condition_type?: "Boss Phase"; phase: Phase1; } | { scene: Scene1; condition_type?: "Scene"; exclusive?: Exclusive3; } | { following: Following3; condition_type?: "Pet"; pet_item_id: Pet1; }; /** * If set, the ability's casting state must match this checkbox. */ type Casting1 = boolean; type DuringDaytime1 = boolean; type InCombat1 = boolean; /** * How much the 'Minutes Since Timestamp' should be adjusted (up or down) for each point invested in the Insight. */ type ChangePerPoint7 = number; type Insight2 = string; type Timestamp1 = string; /** * If greater than 0, then this many minutes will have passed since the timestamp was set. If less than 0, the timestamp will be this many minutes from now. */ type MinutesSinceTimestamp1 = number; type ActiveMoon1 = string; /** * The quest whose status we are querying. */ type QuestToCheck1 = string; type QuestStatus1 = "Complete" | "Started" | "Not Started"; type Following2 = boolean; type Buddy1 = string; type Insight3 = string; type EnglishText9 = string; /** * If checked, this text will not be exported for localization. */ type Skip9 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText9 = string; type Min2 = number; type Max2 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude6 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll8 = boolean; type Quantity10 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants6 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags6 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude7 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll9 = boolean; type Quantity11 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants7 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags7 = boolean; /** * If checked, the proximity check will fail on targets that are stealthed. */ type IgnoreStealthedTargets1 = boolean; type Evaluation3 = "==" | "!=" | "<" | "<=" | ">" | ">="; type Quantity12 = number; /** * If checked, this condition will only be met if ALL of the items listed are equipped at the same time. */ type RequireAll10 = boolean; type EquipmentSet1 = string; /** * If checked, this condition will only be considered met if the defined conditions are NOT met. */ type Exclusive2 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on yourself at the same time. */ type RequireAll11 = boolean; /** * Obsolete--delete. */ type CheckSelf1 = boolean; /** * If checked, only buffs created by you will be checked. Otherwise, all buffs will be checked. */ type OwnBuffsOnly1 = boolean; type Quantity13 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude8 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll12 = boolean; type Quantity14 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants8 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags8 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude9 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll13 = boolean; type Quantity15 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants9 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags9 = boolean; type Min3 = number; type Max3 = number; type Quantity16 = number; /** * Which entity's buffs to query. */ type TargetEntity1 = "Self" | "Other" | "All Entities"; type Boss1 = string; type Quantity17 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude10 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll14 = boolean; type Quantity18 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants10 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags10 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude11 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll15 = boolean; type Quantity19 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants11 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags11 = boolean; type Phase1 = string; /** * The target entity must belong to this scene. */ type Scene1 = string; /** * If checked, the condition will be met if the entity is NOT from the scene. */ type Exclusive3 = boolean; /** * If checked, the pet must be following you. Otherwise, the pet must NOT be following you. */ type Following3 = boolean; /** * Which pet to check. */ type Pet1 = string; /** * If true, then every condition must be met. If false, then only one of the conditions must be met. */ type RequireAllConditions1 = boolean; type State3 = string; /** * This is the name of the variable used for the state in the game's code. Only lowercase letters and underscores. */ type StateNameInternal = string; type Duration = { time: TimeSeconds; duration_type?: "Time"; } | { duration_type?: "Animation"; } | { duration_type?: "Indefinite"; }; type Min4 = number; type Max4 = number; /** * If true, then the default babbler will be overridden when the entity is in this state. */ type OverrideBabbler = boolean; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler = string; type Track = number; type Name3 = string; type Min5 = number; type Max5 = number; type Looping = boolean; type RandomizedStart = boolean; /** * Whether this item can be X-flipped in the Editor. */ type Flippable3 = boolean; /** * The sound to play when this is placed in the editor or in Build Mode. */ type PlacementSound3 = string; /** * If true, this resource will snap to the grid when placed. Only applies to non-solid objects. */ type GridSnapping = boolean; type Green6 = number; type Red6 = number; type Blue6 = number; /** * If true, this item stop rendering while underneath a building's roof. */ type HideUnderRoof = boolean; type WorldSprite = string; type EnglishText10 = string; /** * If checked, this text will not be exported for localization. */ type Skip10 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText10 = string; /** * If true, this item can be flipped horizontally in Build Mode. */ type BuildModeFlippable = boolean; /** * If set, this world element will be considered a variant of another world element. Its recipe will be rolled together with that item, and they will share crafting efficiencies. */ type VariantParent2 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler1 = string; /** * Whether this item must have a floor under it to be validly placed in the world. */ type RequiresFloor = boolean; /** * The number of tiles that the light will illuminate (although it does fade out at the edges). */ type TileRadius = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed1 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude = number; type Affects = "Brightness" | "Radius"; type Green7 = number; type Red7 = number; type Blue7 = number; type Brightness = number; type Green8 = number; type Red8 = number; type Blue8 = number; type EnglishText11 = string; /** * If checked, this text will not be exported for localization. */ type Skip11 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText11 = string; type WorldSprite1 = string; type UIIcon1 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup5 = string; type ResearchNode6 = string; type ChangePerPoint8 = number; /** * What workstation the player must be near to craft this recipe. */ type Station3 = string; /** * Change this number to increase or decrease the number of materials required to craft this item. */ type EffortModifier3 = number; type UnlockedBy7 = string; type OutputQuantity3 = number; type ResearchNode7 = string; type ChangePerPoint9 = number; type Style3 = "Additive" | "Multiplicative"; type EnglishText12 = string; /** * If checked, this text will not be exported for localization. */ type Skip12 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText12 = string; /** * The sound to play when this is placed in the editor or in Build Mode. */ type PlacementSound4 = string; /** * Structural base items will vote on their preferred roof. The roof type with the most votes will be displayed. */ type PreferredRoof = string; /** * If set, this world element will be considered a variant of another world element. Its recipe will be rolled together with that item, and they will share crafting efficiencies. */ type VariantParent3 = string; /** * How many tiles away this pillar can support walls or doors. */ type PillarSupportDistance = number; type EnglishText13 = string; /** * If checked, this text will not be exported for localization. */ type Skip13 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText13 = string; /** * If checked, this door won't open until the player is out of combat. */ type ClosedDuringCombat = boolean; type WorldSprite2 = string; /** * This sound will play when the door is unlocked, but it will be overridden if the key being used has a custom unlock sound. */ type DoorUnlockSound = string; /** * Entities that the door will open for (like the player) must at least this far away (in grid spaces) before the door will close. */ type CloseDistance = number; type UIIcon2 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup6 = string; type ResearchNode8 = string; type ChangePerPoint10 = number; /** * What workstation the player must be near to craft this recipe. */ type Station4 = string; /** * Change this number to increase or decrease the number of materials required to craft this item. */ type EffortModifier4 = number; type UnlockedBy8 = string; type OutputQuantity4 = number; type ResearchNode9 = string; type ChangePerPoint11 = number; type Style4 = "Additive" | "Multiplicative"; type EnglishText14 = string; /** * If checked, this text will not be exported for localization. */ type Skip14 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText14 = string; /** * The sound to play when this is placed in the editor or in Build Mode. */ type PlacementSound5 = string; /** * Structural base items will vote on their preferred roof. The roof type with the most votes will be displayed. */ type PreferredRoof1 = string; /** * If set, this world element will be considered a variant of another world element. Its recipe will be rolled together with that item, and they will share crafting efficiencies. */ type VariantParent4 = string; type DoorOpenSound = string; type DoorCloseSound = string; type WorldSprite3 = string; type UIIcon3 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup7 = string; type EnglishText15 = string; /** * If checked, this text will not be exported for localization. */ type Skip15 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText15 = string; type ResearchNode10 = string; type ChangePerPoint12 = number; /** * What workstation the player must be near to craft this recipe. */ type Station5 = string; /** * Change this number to increase or decrease the number of materials required to craft this item. */ type EffortModifier5 = number; type UnlockedBy9 = string; type OutputQuantity5 = number; type ResearchNode11 = string; type ChangePerPoint13 = number; type Style5 = "Additive" | "Multiplicative"; type EnglishText16 = string; /** * If checked, this text will not be exported for localization. */ type Skip16 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText16 = string; /** * The sound to play when this is placed in the editor or in Build Mode. */ type PlacementSound6 = string; /** * Structural base items will vote on their preferred roof. The roof type with the most votes will be displayed. */ type PreferredRoof2 = string; /** * If set, this world element will be considered a variant of another world element. Its recipe will be rolled together with that item, and they will share crafting efficiencies. */ type VariantParent5 = string; type Green9 = number; type Red9 = number; type Blue9 = number; type AssemblyUIStartSound = string; /** * If false, then crafted items in the Progression Map will not display this station as a prerequisite. Useful to resolve 'infinite looping' issues, for example with the Basic Workstation, which is required to construct itself. */ type CountAsProgressionRequirement = boolean; type EnglishText17 = string; /** * If checked, this text will not be exported for localization. */ type Skip17 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText17 = string; /** * If false, the object will always render itself at its normal color and won't be darkened or brightened by lighting. */ type UseLighting1 = boolean; type Object1 = string; /** * Overrides the default collection jingle when picking up this item. */ type JingleOverride = string; type UIIcon4 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup8 = string; type ResearchNode12 = string; type ChangePerPoint14 = number; /** * What workstation the player must be near to craft this recipe. */ type Station6 = string; /** * Change this number to increase or decrease the number of materials required to craft this item. */ type EffortModifier6 = number; type UnlockedBy10 = string; type OutputQuantity6 = number; type ResearchNode13 = string; type ChangePerPoint15 = number; type Style6 = "Additive" | "Multiplicative"; /** * Whether the tile should be X-flipped randomly when placed. */ type Flippable4 = boolean; /** * The sound to play when this is placed in the editor or in Build Mode. */ type PlacementSound7 = string; /** * If true, this item stop rendering while underneath a building's roof. */ type HideUnderRoof1 = boolean; type WorldSprite4 = string; /** * If using a Spine sprite, the object will try to play an animation with this name when it is spawned. */ type SpineIdle = string; type EnglishText18 = string; /** * If checked, this text will not be exported for localization. */ type Skip18 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText18 = string; /** * If true, this item can be flipped horizontally in Build Mode. */ type BuildModeFlippable1 = boolean; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler2 = string; /** * Whether this item must have a floor under it to be validly placed in the world. */ type RequiresFloor1 = boolean; type State4 = string; /** * Relative to the object's origin */ type XOffset1 = number; /** * If set, the particle will anchor to this spine bone, and the X and Y offsets will be relative to the bone's position */ type SpineBone1 = string; /** * Relative to the object's origin */ type YOffset1 = number; /** * If set, the particle system will be drawn behind the object */ type Behind1 = boolean; type EmitterScale1 = number; type ParticleSystem1 = string; type Height1 = number; type Width1 = number; type EnglishText19 = string; /** * If checked, this text will not be exported for localization. */ type Skip19 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText19 = string; /** * If false, the object will always render itself at its normal color and won't be darkened or brightened by lighting. */ type UseLighting2 = boolean; type WorldSprite5 = string; type UIIcon5 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup9 = string; type ResearchNode14 = string; type ChangePerPoint16 = number; /** * What workstation the player must be near to craft this recipe. */ type Station7 = string; /** * Change this number to increase or decrease the number of materials required to craft this item. */ type EffortModifier7 = number; type UnlockedBy11 = string; type OutputQuantity7 = number; type ResearchNode15 = string; type ChangePerPoint17 = number; type Style7 = "Additive" | "Multiplicative"; type EnglishText20 = string; /** * If checked, this text will not be exported for localization. */ type Skip20 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText20 = string; /** * The height of the hitbox for this fence. Important for making the fence easily clickable via the Editor or build mode. */ type HitboxHeight = number; type EnglishText21 = string; /** * If checked, this text will not be exported for localization. */ type Skip21 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText21 = string; /** * If false, the object will always render itself at its normal color and won't be darkened or brightened by lighting. */ type UseLighting3 = boolean; type Green10 = number; type Red10 = number; type Blue10 = number; /** * If false, this item can be placed in water. */ type RequiresLand = boolean; type WorldSprite6 = string; type UIIcon6 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup10 = string; type ResearchNode16 = string; type ChangePerPoint18 = number; /** * What workstation the player must be near to craft this recipe. */ type Station8 = string; /** * Change this number to increase or decrease the number of materials required to craft this item. */ type EffortModifier8 = number; type UnlockedBy12 = string; type OutputQuantity8 = number; type ResearchNode17 = string; type ChangePerPoint19 = number; type Style8 = "Additive" | "Multiplicative"; type EnglishText22 = string; /** * If checked, this text will not be exported for localization. */ type Skip22 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText22 = string; /** * If set, this world element will be considered a variant of another world element. Its recipe will be rolled together with that item, and they will share crafting efficiencies. */ type VariantParent6 = string; /** * If true, this item will prevent abilities from targeting things through it via telegraphs. */ type BlocksAbilities = boolean; type Green11 = number; type Red11 = number; type Blue11 = number; /** * A world element that can be harvested or picked up. */ type Resource = Resource1 & Resource2; /** * Whether the player walks over the top of this resource. */ type Underfoot1 = boolean; /** * Where this item comes from. */ type Source = string; /** * This source will be listed once this unlock is met. */ type UnlockedBy13 = string; /** * A unique sound to be played when this item is collected into your body. */ type CollectionSound = string; /** * If false, the object will always render itself at its normal color and won't be darkened or brightened by lighting. */ type UseLighting4 = boolean; type Object2 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup11 = string; /** * Whether this resource can be picked up by the player. If pickupable, the resource cannot be damaged and cannot drop loot. */ type Pickupable = boolean; /** * When destroyed, this world element will respawn using the base respawn minutes combined with this multiplier. Higher multiplier means longer time between respawns. */ type RespawnTimeMultiplier = number; /** * Whether this item will randomly X-flip when placed in the world editor. Defaults to true if unset. */ type Flippable5 = boolean; /** * When not destroyed, this item can still have its position and health reset based on the base respawn time combined with this multiplier. */ type ResetTimeMultiplier = number; /** * If true, this resource will snap to the grid when placed. Only applies to non-solid objects. */ type GridSnapping1 = boolean; /** * If true, this item will not appear in the world editor. */ type EditorExcluded = boolean; /** * If true, this item will be fully reset after its respawn timer expires, even if it wasn't destroyed. This only applies to entities that were created in the world editor and not during gameplay. */ type CanReset = boolean; /** * If true, this the player will be able to fish up whoppers from this resrouce. */ type WhopperPool = boolean; type WorldSprite7 = string; type EnglishText23 = string; /** * If checked, this text will not be exported for localization. */ type Skip23 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText23 = string; type ScaleModifier1 = number; type EnglishText24 = string; /** * If checked, this text will not be exported for localization. */ type Skip24 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText24 = string; /** * This source will be listed once this unlock is met. */ type UnlockedBy14 = string; /** * If set, this game element will adjust its level to match the player's level at the time it is spawned, plus this number. */ type RelativeLevel = number; /** * If the game element has a relative level, this is the minimum it can be. */ type RelativeLevelMinimum = number; type EnglishText25 = string; /** * If checked, this text will not be exported for localization. */ type Skip25 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText25 = string; type SpineSkin = string; /** * This source will be listed once this unlock is met. */ type UnlockedBy15 = string; type Item = string; /** * If set, this quest will be used to gauge whether you've harvested a shiny version of this resource and display that fact in the Compendium. */ type ShinyQuest = string; /** * If set, dynamically-spawned versions of this item will disappear after this much time has passed since it was created. */ type DynamicExpirationMinutes = number; /** * If true, this item will face its move direction if it's a drifting resource. */ type XFlipWhenDrifting = boolean; /** * If true, this item will draw under terrain but above water, and it cannot be placed on land. */ type WaterLayer = boolean; type UIIcon7 = string; /** * The chance that this reaction occurs when triggered. */ type ReactionChance = number; type Trigger = { health_threshold?: HealthThreshold; attacker_distance?: AttackerDistance; damage_types?: DamageTypes; target_filter?: TargetFilter; critical_damage?: CriticalHit; items_used?: ItemsUsed; direct_damage?: DirectDamage; abilities_used?: AbilitiesUsed; damage_types_exclusive?: ExclusiveDamageTypes; trigger_type?: "Take Damage"; } | { trigger_type?: "Kill"; target_filter?: TargetFilter1; } | { seconds: Seconds; trigger_type?: "Interval"; } | { trigger_type?: "Creation"; } | { trigger_type?: "Death"; target_filter?: MyKillerTargetFilter; } | { trigger_type?: "Spawn"; } | { datafield: Datafield; trigger_type?: "Datafield Change"; } | { transition: TriggerTime; trigger_type?: "Daylight Change"; } | { health_threshold?: HealthThreshold1; attacker_distance?: TargetDistance; damage_types?: DamageTypes1; target_filter?: TargetFilter2; critical_damage?: CriticalHit1; items_used?: ItemsUsed1; direct_damage?: DirectDamage1; abilities_used?: AbilitiesUsed1; trigger_type?: "Deal Damage"; } | { trigger_type?: "Ability Cast"; items_used?: ItemsUsed2; abilities_used?: Abilities2; target_filter?: TargetFilter3; } | { trigger_type: "Buff Application"; apply_to_other: AppliedToOther; buffs: Buffs46; target_filter?: TargetFilter4; } | { target_filter?: TargetFilter5; trigger_type: "Buff Expiration"; buff_on_other: CheckBuffsOnOther; buffs: Buffs55; buff_on_self: CheckBuffsOnSelf; } | { direct_healing?: DirectHealing; trigger_type: "Healing Received"; } | { direct_healing?: DirectHealing1; trigger_type: "Healing Sent"; } | { boss_phase: BossPhase; trigger_type: "Boss Phase Start"; } | { trigger_type: "Buff Stack Change"; on_loss: TriggerOnStackLoss; each_stack: TriggerOnEachStack; buffs: Buffs56; on_gain: TriggerOnStackGain; } | { trigger_type: "Thrift"; } | { interval_seconds: Seconds1; interval_offset: Offset; trigger_type?: "Fixed Interval"; } | { trigger_type?: "Ability Cast On Me"; items_used?: ItemsUsed3; abilities_used?: Abilities3; target_filter?: TargetFilter6; } | { items_consumed?: ItemsConsumed; trigger_type?: "Consume"; } | { anglers_luck?: AnglerSLuck; trigger_type?: "Catch Fish"; } | { trigger_type?: "Pet Ability"; }; /** * If set, this trigger will only occur if the damage taken drops your health below this percent. */ type HealthThreshold = number; type Min6 = number; type Max6 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude12 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll16 = boolean; type Quantity20 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants12 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags12 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude13 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll17 = boolean; type Quantity21 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants13 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags13 = boolean; /** * If set, this trigger will only occur if receiving critical damage that matches this checkbox. */ type CriticalHit = boolean; /** * If set, this trigger will only occur if the kind of damage received matches this checkbox (direct or periodic). */ type DirectDamage = boolean; /** * If set, then all damage types must match. If not set, then only one damage type must match. */ type ExclusiveDamageTypes = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude14 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll18 = boolean; type Quantity22 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants14 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags14 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude15 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll19 = boolean; type Quantity23 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants15 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags15 = boolean; type Min7 = number; type Max7 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude16 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll20 = boolean; type Quantity24 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants16 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags16 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude17 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll21 = boolean; type Quantity25 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants17 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags17 = boolean; type Datafield = string; type TriggerTime = "Day Start" | "Night Start" | "Both"; /** * If set, this trigger will only occur if the damage dealt drops the target's health below this percent. */ type HealthThreshold1 = number; type Min8 = number; type Max8 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude18 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll22 = boolean; type Quantity26 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants18 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags18 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude19 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll23 = boolean; type Quantity27 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants19 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags19 = boolean; /** * If set, this trigger will only occur if receiving critical damage that matches this checkbox. */ type CriticalHit1 = boolean; /** * If set, this trigger will only occur if the kind of damage received matches this checkbox (direct or periodic). */ type DirectDamage1 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude20 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll24 = boolean; type Quantity28 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants20 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags20 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude21 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll25 = boolean; type Quantity29 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants21 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags21 = boolean; /** * If set, this trigger will occur when the caster applies a buff to something else, as opposed to the caster gaining the buff. */ type AppliedToOther = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude22 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll26 = boolean; type Quantity30 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants22 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags22 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude23 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll27 = boolean; type Quantity31 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants23 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags23 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude24 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll28 = boolean; type Quantity32 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants24 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags24 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude25 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll29 = boolean; type Quantity33 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants25 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags25 = boolean; /** * If set, buffs you have applied to other targets will be checked. */ type CheckBuffsOnOther = boolean; /** * If set, buffs expiring on yourself will be checked. */ type CheckBuffsOnSelf = boolean; /** * If set, then the healing must match this checkbox. Indirect healing comes from buffs, while direct healing comes from all other sources. */ type DirectHealing = boolean; /** * If set, then the healing must match this checkbox. Indirect healing comes from buffs, while direct healing comes from all other sources. */ type DirectHealing1 = boolean; type BossPhase = string; /** * If set, this trigger will occur when the buff stack count decreases. */ type TriggerOnStackLoss = boolean; /** * If true, this trigger will occur for each stack that is gained or lost in one go. If false, this trigger will only occur once, regardless of how many stacks are gained or lost. */ type TriggerOnEachStack = boolean; /** * If set, this trigger will occur when the buff stack count increases. */ type TriggerOnStackGain = boolean; /** * How many seconds between this interval firing. This interval is synchronized to the game clock. */ type Seconds1 = { number: number; style?: "Number"; } | { datafield: string; style?: "Datafield"; }; /** * How many seconds to offset the interval by. */ type Offset = { number: number; style?: "Number"; } | { datafield: string; style?: "Datafield"; }; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude26 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll30 = boolean; type Quantity34 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants26 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags26 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude27 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll31 = boolean; type Quantity35 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants27 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags27 = boolean; /** * If set, this trigger will only occur when the player triggers the Angler's Luck proc. */ type AnglerSLuck = boolean; type Action = { blame?: Blame; ability: Ability; target_entity: AbilityTarget; action_type?: "Cast Ability"; } | { ability?: Ability1; action_type?: "Finish Ability"; } | { ability?: Ability2; action_type?: "Stop Ability"; } | { sound: Sound; voice?: PlayAsVoice; target_entity: SoundLocation; action_type?: "Play a Sound"; } | { stacks: Stacks30; absorb_percentage?: AbsorbPercentage; healing_percentage?: HealingPercentage; action_type?: "Buff"; buff: Buff; target_entity: TargetEntity2; damage_modifier?: DamageModifier; } | { spawn_location?: NewEntityLocation; summoned?: EntityIsSummoned; distance_range?: SpawnDistance; action_type?: "Create Entity"; require_line_of_sight?: RequireLineOfSight; non_overlap: AttemptNonOverlap; inherits_threat?: InheritThreat; forced_spawning?: IgnoreAllConflicts; spawn_item: ThingToSpawn; } | { counts_as_death: CountsAsDeath; target_entity: TargetEntity3; drop_loot: DropLoot; action_type?: "Destroy"; } | { timestamp: Timestamp2; offset: OffsetMinutes; target_entity?: TargetEntity4; action_type?: "Set Timestamp"; } | { timestamp: Timestamp3; target_entity?: TargetEntity5; minutes: IncrementMinutes; action_type?: "Increment Timestamp"; } | { datafield: Datafield1; value: Value; target_entity?: TargetEntity6; action_type?: "Set Datafield"; } | { datafield: Datafield2; value: Value1; target_entity?: TargetEntity7; action_type?: "Increment Datafield"; } | { damage_profile: DamageProfile; badge_modifiers?: InsightDamageModifiers; damage_success_sound?: ImpactSound; damage_failure_sound?: FailureSound; action_type?: "Damage"; target_filter?: TargetFilters; direct_damage?: DirectDamage3; target_entity: TargetEntity8; datafield_modifiers?: DatafieldMultipliers; } | { action_type?: "Refresh State"; } | { datafield: Datafield3; target_entity: DatafieldOwner1; action_type?: "Copy Datafield"; } | { healing_percentage: HealingPercentage1; target_entity: HealingTarget; action_type?: "Heal"; } | { boss_phase: NewBossPhase; action_type?: "Boss Phase Change"; } | { negative?: RemoveNegativeBuffs; stacks?: Stacks33; action_type?: "Remove Buff"; positive?: RemovePositiveBuffs; target_entity: TargetEntity9; buff_to_remove?: Buff3; } | { ability?: Ability3; target_entity: TargetEntity10; charges?: Charges; action_type?: "Restore Charge"; } | { loot_items: LootItems; action_type?: "Drop Loot"; } | { visual_effect: VisualEffect; action_type: "Visual Effect"; } | { datafield: Datafield4; value0: Value0; value1: Value11; target_entity: TargetEntity11; action_type: "Toggle Datafield"; }; /** * If this ability causes threat, should the threat be attributed to myself, or the 'other' entity (from the trigger)? */ type Blame = "Self" | "Other"; /** * Which ability to cast. Won't cast if already casting it. */ type Ability = string; /** * Which entity to cast this ability on. */ type AbilityTarget = "Self" | "Other" | "Other Direction"; /** * Which ability to finish casting, if it's already casting. Won't do anything if the ability is not already casting. If unset, will finish whatever ability is currently casting. */ type Ability1 = string; /** * Which ability to stop casting, if it's already casting. Won't do anything if the ability is not already casting. If unset, will stop whatever ability is currently casting. */ type Ability2 = string; type Sound = string; /** * Only one 'Voice' sound can be playing at a time per Entity. */ type PlayAsVoice = boolean; /** * Where to play the sound at. */ type SoundLocation = "Self" | "Other"; /** * How many stacks of the buff to apply. */ type Stacks30 = number; /** * If set, and if the buff can absorb damage, this will set how much damage it can absorb (based on the level of the user). */ type AbsorbPercentage = number; /** * If set, and if the buff can heal, this will set how much health it restores (based on the level of the user). */ type HealingPercentage = number; type Buff = string; /** * Which entity to cast this buff on. */ type TargetEntity2 = "Self" | "Other" | "Summoner"; /** * If set, and if the buff deals damage, this will modify its damage. */ type DamageModifier = number; /** * Where the new entity will be created. */ type NewEntityLocation = "Self" | "Other"; /** * 'Summoned' entities exist on behalf of their creators, and their actions will cast blame to the creator. Defaults to false. */ type EntityIsSummoned = boolean; type Min9 = number; type Max9 = number; /** * If false, the new entity can spawn just about anywhere, including in other buildings. */ type RequireLineOfSight = boolean; /** * Whether spawning will attempt to find a clear space. */ type AttemptNonOverlap = boolean; /** * If true, the new entity will inherit its creator's 'Threat' situation, putting it in combat with whatever created it.. */ type InheritThreat = boolean; /** * If set, this entity will spawn wherever you say, regardless of whether that is allowed. */ type IgnoreAllConflicts = boolean; type ThingToSpawn = string; /** * If false, the destroyed entity will just stop existing. If true, the entity will trigger any Death events and play its death animations. */ type CountsAsDeath = boolean; /** * Which entity to destroy. */ type TargetEntity3 = "Self" | "Other"; /** * Whether the destroyed entity should drop loot as if it were killed by the player (if possible). */ type DropLoot = boolean; type Timestamp2 = string; /** * By default, the timestamp will be set to the current playtime minutes. You can add an offset to this, so the timestamp will be earlier or later than the current time. */ type OffsetMinutes = number; /** * Which entity's timestamp to set. */ type TargetEntity4 = "Self" | "Other"; type Timestamp3 = string; /** * Which entity's timestamp to set. */ type TargetEntity5 = "Self" | "Other"; type IncrementMinutes = number; type Datafield1 = string; type Value = number; /** * Which entity's datafield to set. */ type TargetEntity6 = "Self" | "Other"; type Datafield2 = string; type Value1 = number; /** * Which entity's datafield to increment. */ type TargetEntity7 = "Self" | "Other"; type DamageAmount = number; type DamageType = string; /** * If true, only buffs created by the caster will be used for damage calculations. */ type OwnOnly = boolean; /** * The multiplier to apply for each stack of the buff. */ type PerStackMultiplier = number; /** * The base multiplier to apply to the damage dealt by this ability. */ type BaseMultiplier = number; type Buff1 = string; /** * The maximum number of stacks to use for the multiplier. If the buff has more stacks than this, it will be capped at this value. */ type MaximumStacks = number; /** * Which entity the buff is on. */ type BuffTarget = "All Entities" | "Self" | "Target Entity" | "Summoner"; /** * If true, only buffs created by the caster will be used for damage calculations. */ type OwnOnly1 = boolean; /** * Which entity the buff is on. */ type BuffTarget1 = "All Entities" | "Self" | "Target Entity" | "Summoner"; type Amount = number; type Buff2 = string; /** * If set, this will consume damage from the buff's pool. */ type ConsumeDamage = boolean; /** * Even if not direct damage, you can force this damage profile to cause a slomo burst if it injures the player. */ type CausesSlomoBurst = boolean; /** * Whether to force-set this damage as direct or indirect. */ type DirectDamage2 = boolean; /** * If true, this damage will ignore the target's toughness and vulnerability stats. */ type IgnoreToughnessVulnerability = boolean; /** * If false, this damage will never crit. */ type CanCrit = boolean; type Modifier = number; type Filter28 = string; type Insight4 = string; type ChangePerPoint20 = number; type EnglishText26 = string; /** * If checked, this text will not be exported for localization. */ type Skip26 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText26 = string; /** * This sound will only play if damage is dealt. */ type ImpactSound = string; /** * This sound will play if no targets were damaged. */ type FailureSound = string; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude28 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll32 = boolean; type Quantity36 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants28 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags28 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude29 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll33 = boolean; type Quantity37 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants29 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags29 = boolean; /** * Whether to force-set this damage as direct or indirect. */ type DirectDamage3 = boolean; /** * Which entity to deal damage to. */ type TargetEntity8 = "Self" | "Other"; type DatafieldOwner = "Self" | "Target Entity"; type DataField = string; type Datafield3 = string; /** * The entity from which to copy the data. */ type DatafieldOwner1 = "Summoner" | "Other"; /** * How much health to restore, based on % of typical max health for things of that level. */ type HealingPercentage1 = number; /** * The entity from which to copy the data. */ type HealingTarget = "Self" | "Other"; /** * Which boss phase to change to. This will only work if you are currently fighting the boss to whom this phase belongs. */ type NewBossPhase = string; type RemoveNegativeBuffs = boolean; /** * How many stacks of the buff to remove. If unset, all stacks will be removed. */ type Stacks33 = number; type RemovePositiveBuffs = boolean; /** * Which entity to cast this buff on. */ type TargetEntity9 = "Self" | "Other"; type Buff3 = string; /** * This ability will have its charges restored. */ type Ability3 = string; /** * The entity for which to restore ability charges. */ type TargetEntity10 = "Self" | "Other"; /** * How many charges of the ability to restore. */ type Charges = number; type Chance = number; type Min10 = number; type Max10 = number; type Item1 = string; type VisualEffect = { electric_arc_source: Source1; electric_arc_source_spine_bone?: SourceSpineBone; electric_arc_destination: Destination; electric_arc_color: Color1; electric_arc_source_distance?: DistanceFromSourcePixels; electric_arc_destination_distance?: DistanceFromDestinationPixels; effect_type: "Electric Arc"; } | { decal_duration?: DecalDurationSeconds; decal_sprite: DecalSprite; decal_scale?: DecalScale; decal_location: Location; effect_type: "Ground Decal"; decal_max_alpha?: MaxAlpha; } | { explosion_random_delay?: RandomDelaySeconds; explosion_debris?: DebrisParticles; explosion_location: Location1; effect_type: "Explosion"; explosion_y_offset?: YOffset2; explosion_z_offset?: ZOffset; explosion_color: BaseColor; explosion_sound?: Sound1; explosion_slomo_burst: SlowMotionPulse; explosion_highlight_color?: HighlightColor; explosion_camera_shake?: CameraShake; explosion_smoke?: ShowSmoke; explosion_scale?: ExplosionScale; explosion_random_distance?: RandomDistanceGridSpaces; } | { smokeburst_location: Location2; smokeburst_color?: SmokeColor; smokeburst_zoffset?: ZOffset1; smokeburst_spawn_on_ground?: SpawnOnGround; smokeburst_yoffset?: YOffset3; smokeburst_speed?: ExpansionSpeed; smokeburst_radius?: RadiusPixels; smokeburst_scale?: Scale; effect_type: "Smoke Burst"; } | { burst_particle: Particle; bursts: Bursts; effect_type: "Particle Burst"; } | { particle_system_y_offset?: YOffset5; particle_system_z_offset?: ZOffset3; particle_system: ParticleSystem2; particle_system_emitter_scale?: EmitterScale2; particle_system_location: Location3; effect_type: "Particle System Burst"; } | { lightning_distance: DistanceGrid; lightning_color: Color3; lightning_aim_offset?: AimOffset; lightning_num_bolts?: NumberOfBolts; lightning_spread?: SpreadDegrees; lightning_z_offset?: ZOffset4; effect_type: "Lightning"; lightning_source: Source3; } | { slomo_amount: GameSpeed; slomo_duration: Seconds2; effect_type: "Slomo Burst"; } | { skybeam_color: SkybeamColor; skybeam_sound?: Sound2; skybeam_width?: SkybeamPixelWidth; skybeam_location: Location4; effect_type: "Skybeam"; } | { ering_location: Location5; ering_y_offset?: YOffset6; ering_z_offset?: ZOffset5; ering_color1?: Color11; ering_color2?: Color21; ering_sound?: Sound3; ering_grid_radius: GridRadius; ering_spawn_on_ground?: SpawnOnGround2; ering_show_internal_ring?: ShowInternalRing; effect_type: "Electric Ring"; } | { skylightning_color: LightningColor; skylightning_shake?: CameraShake1; skylightning_sound?: Sound4; skylightning_width?: LightningPixelWidth; skylightning_slomo_flash?: SlowMotionFlash; skylightning_location: Location6; effect_type: "Sky Lightning"; }; type Source1 = "Self" | "Ground Target" | "Target Entity" | "Summoner"; /** * If the source is an entity, this is the bone to spawn the arc from. */ type SourceSpineBone = string; type Destination = "Self" | "Ground Target" | "Target Entity" | "Summoner"; type Green12 = number; type Red12 = number; type Blue12 = number; type DistanceFromSourcePixels = number; type DistanceFromDestinationPixels = number; type Min11 = number; type Max11 = number; /** * This sprite will be drawn subtractively. */ type DecalSprite = string; type Min12 = number; type Max12 = number; type Location = "Self" | "Ground Target" | "Target Entity" | "Summoner"; type MaxAlpha = number; type Min13 = number; type Max13 = number; type NumberOfParticles = number; type ParticleScale = number; /** * The sprite to use for the debris. */ type Sprite1 = string; type Location1 = "Self" | "Ground Target" | "Target Entity" | "Summoner"; /** * Can be useful for depth-sorting. For example, a Y offset of 1 will spawn the explosion in front of whatever is explosing. */ type YOffset2 = number; /** * If spawning on the ground, this will be height above ground. If spawning on targets, it will spawn at their height midpoints, plus this offset. */ type ZOffset = number; type Green13 = number; type Red13 = number; type Blue13 = number; /** * There is a default explosion sound, but you can override it here. */ type Sound1 = string; /** * If true, there will be a brief slow-down of the game when the explosion occurs to make it feel more impactful. Use sparingly. */ type SlowMotionPulse = boolean; type Green14 = number; type Red14 = number; type Blue14 = number; /** * If true, the camera will shake when the explosion occurs. */ type CameraShake = boolean; /** * If true, smoke will be spawned at the explosion location. */ type ShowSmoke = boolean; type Min14 = number; type Max14 = number; type Min15 = number; type Max15 = number; type Location2 = "Self" | "Ground Target" | "Target Entity" | "Summoner"; type Green15 = number; type Red15 = number; type Blue15 = number; /** * If spawning on the ground, this will be height above ground. If spawning on targets, it will spawn at their height midpoints, plus this offset. */ type ZOffset1 = number; /** * If true, the smoke will spawn at the ground level. */ type SpawnOnGround = boolean; /** * Can be useful for depth-sorting. For example, a Y offset of 1 will spawn the smoke in front of whatever is explosing. */ type YOffset3 = number; /** * How fast the smoke will expand. */ type ExpansionSpeed = number; type Min16 = number; type Max16 = number; /** * The scale of the smoke particles. */ type Scale = number; type Min17 = number; type Max17 = number; /** * Whether the particles should shrink over the course of their lifetimes. */ type Shrinking = boolean; type AlphaValue = number; type Min18 = number; type Max18 = number; type Lighting = "Lit" | "Unlit" | "Additive"; /** * Will be ignored if Sprite is set. */ type Shape = "Pixel" | "Disk" | "Square" | "Line" | "Star" | "Circle" | "Ring" | "Sphere" | "Flare" | "Spark" | "Explosion" | "Cloud" | "Smoke" | "Snow"; type XScale = number; type YScale = number; /** * Note that this will be ignored if you set the particle to 'Shrinking'. */ type SizeChangePerSecond = number; /** * This is an amount that will be randomly added or removed from the particle's size each step. */ type SizeWiggle = number; type Min19 = number; type Max19 = number; /** * If true, the particle will rotate relative to the direction it is moving. */ type OrientationRelative = boolean; type OrientationChangeSec = number; /** * This is an amount that will be randomly added or removed from the particle's rotation each step. */ type OrientationWiggle = number; /** * How much speed the particles should gain or lose per second. */ type Acceleration = number; /** * This is proportional to the game's base gravity. */ type Gravity = number; /** * The direction gravity pulls on the particles. */ type GravityDirection = number; type Green16 = number; type Red16 = number; type Blue16 = number; type Min20 = number; type Max20 = number; /** * The particles can change direction as they fly. */ type DirectionChangeDegreesSec = number; type Sprite2 = string; type ParticleNameInternal = string; type Min21 = number; type Max21 = number; /** * If set, this particle will use the properties of the parent particle, but will override any values you have specified here. */ type Parent = string; /** * If checked, the particles will spawn at z=0 instead of on a target or caster. */ type SpawnOnGround1 = boolean; type Source2 = "Self" | "Ground Target" | "Target Entity" | "Summoner"; /** * If set, the burst will use the direction the ability cast is aiming as its baseline direction. */ type UseAimDirection = boolean; type Min22 = number; type Max22 = number; type Min23 = number; type Max23 = number; /** * If set, the radius of the spawning will scale relative to the caster's 'scale' modifier. Useful for keeping particles lined up with telegraphs. */ type ScaledSpawnRadius = boolean; /** * If set, the particles will always move away from the center of the source. */ type BlastOutward = boolean; type Min24 = number; type Max24 = number; /** * If set, the spawn radius will be treated as grid spaces instead of pixels. */ type SpawnRadiusAsGrid = boolean; /** * If spawning on the ground, this will be height above ground. If spawning on targets, it will spawn at their height midpoints, plus this offset. */ type ZOffset2 = number; /** * This is the distance above the target's y position that the particles will spawn. Useful for affecting depth. */ type YOffset4 = number; /** * Billboard bursts are good for shooting things up and out. Ground bursts are good for making smoke rings and such. */ type Perspective = "Billboard" | "Isometric"; /** * Can be useful for depth-sorting. For example, a Y offset of 1 will spawn the explosion in front of whatever is explosing. */ type YOffset5 = number; /** * If spawning on the ground, this will be height above ground. If spawning on targets, it will spawn at their height midpoints, plus this offset. */ type ZOffset3 = number; type ParticleSystem2 = string; type EmitterScale2 = number; type Location3 = "Self" | "Ground Target" | "Target Entity" | "Summoner"; type Min25 = number; type Max25 = number; type Green17 = number; type Red17 = number; type Blue17 = number; type AimOffset = number; type Min26 = number; type Max26 = number; /** * The total angle the bolts will cover. 360 means a full circle. */ type SpreadDegrees = number; /** * If spawning on the ground, this will be height above ground. If spawning on targets, it will spawn at their height midpoints, plus this offset. */ type ZOffset4 = number; type Source3 = "Self" | "Ground Target" | "Target Entity" | "Summoner"; type GameSpeed = number; /** * How long the slow-mo effect will last. */ type Seconds2 = number; type Green18 = number; type Red18 = number; type Blue18 = number; /** * What sound this sky beam should play when it appears. */ type Sound2 = string; /** * If targeting an entity, the skybeam will be based on the entity's width unless this field is set. */ type SkybeamPixelWidth = number; type Location4 = "Self" | "Ground Target" | "Target Entity" | "Summoner"; type Location5 = "Self" | "Ground Target" | "Target Entity" | "Summoner"; /** * Can be useful for depth-sorting. For example, a Y offset of 1 will spawn the explosion in front of whatever is explosing. */ type YOffset6 = number; /** * If spawning on the ground, this will be height above ground. If spawning on targets, it will spawn at their height midpoints, plus this offset. */ type ZOffset5 = number; type Green19 = number; type Red19 = number; type Blue19 = number; type Green20 = number; type Red20 = number; type Blue20 = number; /** * There is a default sound, but you can override it here. */ type Sound3 = string; type Min27 = number; type Max27 = number; /** * If true, the ring will spawn at the ground level. */ type SpawnOnGround2 = boolean; /** * Defaults to true. If false, only one ring will be shown. */ type ShowInternalRing = boolean; type Green21 = number; type Red21 = number; type Blue21 = number; /** * How much the camera should shake when the lightning appears. */ type CameraShake1 = number; /** * What sound this lightning should play when it appears. */ type Sound4 = string; /** * If targeting an entity, the lightning will be based on the entity's width unless this field is set. */ type LightningPixelWidth = number; /** * If true, the game will briefly slow down when the lightning appears. */ type SlowMotionFlash = boolean; type Location6 = "Self" | "Ground Target" | "Target Entity" | "Summoner"; type Datafield4 = string; type Value0 = number; type Value11 = number; /** * Which entity's datafield to increment. */ type TargetEntity11 = "Self" | "Other"; type EnglishText27 = string; /** * If checked, this text will not be exported for localization. */ type Skip27 = boolean; type NameInternal2 = string; type Condition2 = { abilities?: Abilities4; casting_state: Casting2; target_entity: TargetEntity12; condition_type?: "Ability"; } | { datafield_evaluation: Evaluation4; target_entity: TargetEntity13; condition_type?: "Datafield"; } | { daytime: DuringDaytime2; condition_type?: "Daylight"; } | { condition_type?: "Combat"; combat: InCombat2; } | { insight_modifier?: InsightModifier2; timestamp: Timestamp4; condition_type?: "Timestamp"; evaluation: "==" | "!=" | "<" | "<=" | ">" | ">="; minutes_passed: MinutesSinceTimestamp2; } | { moon: ActiveMoon2; condition_type?: "Moon"; } | { quest: QuestToCheck2; condition_type?: "Quest"; quest_status: QuestStatus2; } | { following: Following4; condition_type?: "Artisan Following"; artisan: Buddy2; } | { prerequisite: Insight6; unlock_text?: InsightTooltip2; condition_type?: "Insight"; } | { proximity_range: DistanceRequiredGridSpaces2; proximity_targets: Targets2; proximity_ignores_stealth: IgnoreStealthedTargets2; condition_type?: "Proximity"; proximity_quantity: NumberOfTargets4; } | { hp_evaluation: HealthEvaluation2; target_entity: TargetEntity14; condition_type?: "Health"; } | { require_all: RequireAll36; condition_type?: "Item Equipped"; items: Items36; } | { condition_type?: "Item Wielding"; items: Items37; } | { condition_type?: "Wearing Equipment Set"; set_evaluation: PiecesEquipped2; } | { condition_type?: "Buffs"; buff_exclusive?: Exclusive4; buff_require_all: RequireAll37; buff_check_self: CheckSelf2; buff_own_only: OwnBuffsOnly2; buff_num_targets?: NumberOfTargets5; buff_target_filter?: BuffTargetFilter2; buff_proximity?: BuffTargetRange2; buff_stack_evaluation?: Stacks38; buffs: Buffs73; buff_target: TargetEntity15; } | { condition_type?: "Boss Defeated"; boss: Boss2; } | { comparison: NumberSummoned2; condition_type?: "Summoned Entities"; summoned_filter?: SummonedEntitiesFilter2; } | { areas: Areas2; condition_type?: "Area"; } | { condition_type?: "Weather"; weather_ids: Weather2; } | { condition_type?: "Boss Phase"; phase: Phase2; } | { scene: Scene2; target_entity: TargetEntity16; condition_type?: "Scene"; exclusive?: Exclusive5; } | { following: Following5; condition_type?: "Pet"; pet_item_id: Pet2; }; /** * If set, the ability's casting state must match this checkbox. */ type Casting2 = boolean; /** * Which entity's ability to query. */ type TargetEntity12 = "Self" | "Other"; /** * Which entity's data fields to query. */ type TargetEntity13 = "Self" | "Other"; type DuringDaytime2 = boolean; type InCombat2 = boolean; /** * How much the 'Minutes Since Timestamp' should be adjusted (up or down) for each point invested in the Insight. */ type ChangePerPoint21 = number; type Insight5 = string; type Timestamp4 = string; /** * If greater than 0, then this many minutes will have passed since the timestamp was set. If less than 0, the timestamp will be this many minutes from now. */ type MinutesSinceTimestamp2 = number; type ActiveMoon2 = string; /** * The quest whose status we are querying. */ type QuestToCheck2 = string; type QuestStatus2 = "Complete" | "Started" | "Not Started"; type Following4 = boolean; type Buddy2 = string; type Insight6 = string; type EnglishText28 = string; /** * If checked, this text will not be exported for localization. */ type Skip28 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText27 = string; type Min28 = number; type Max28 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude30 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll34 = boolean; type Quantity39 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants30 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags30 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude31 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll35 = boolean; type Quantity40 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants31 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags31 = boolean; /** * If checked, the proximity check will fail on targets that are stealthed. */ type IgnoreStealthedTargets2 = boolean; type Evaluation5 = "==" | "!=" | "<" | "<=" | ">" | ">="; type Quantity41 = number; /** * Which entity's health to query. */ type TargetEntity14 = "Self" | "Other"; /** * If checked, this condition will only be met if ALL of the items listed are equipped at the same time. */ type RequireAll36 = boolean; type EquipmentSet2 = string; /** * If checked, this condition will only be considered met if the defined conditions are NOT met. */ type Exclusive4 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on yourself at the same time. */ type RequireAll37 = boolean; /** * Obsolete--delete. */ type CheckSelf2 = boolean; /** * If checked, only buffs created by you will be checked. Otherwise, all buffs will be checked. */ type OwnBuffsOnly2 = boolean; type Quantity42 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude32 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll38 = boolean; type Quantity43 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants32 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags32 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude33 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll39 = boolean; type Quantity44 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants33 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags33 = boolean; type Min29 = number; type Max29 = number; type Quantity45 = number; /** * Which entity's buffs to query. */ type TargetEntity15 = "Self" | "Other" | "All Entities"; type Boss2 = string; type Quantity46 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude34 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll40 = boolean; type Quantity47 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants34 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags34 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude35 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll41 = boolean; type Quantity48 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants35 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags35 = boolean; type Phase2 = string; /** * The target entity must belong to this scene. */ type Scene2 = string; /** * Which entity's health to query. */ type TargetEntity16 = "Self" | "Other"; /** * If checked, the condition will be met if the entity is NOT from the scene. */ type Exclusive5 = boolean; /** * If checked, the pet must be following you. Otherwise, the pet must NOT be following you. */ type Following5 = boolean; /** * Which pet to check. */ type Pet2 = string; /** * If false, then any of the conditions can be met for the actions to occur. */ type RequireAllConditions2 = boolean; /** * If true, this reaction will not log debug information when it triggers. */ type HideDebugLogs = boolean; /** * Whether to show the celebration UI when acquiring this item. */ type CelebratePickup = boolean; /** * If set to false, this world element will not respawn once it has been destroyed. Defaults to true if unset. */ type Respawnable = boolean; type IgnoreInLevelViewer = boolean; /** * The width of the beam. */ type Width2 = number; type Green22 = number; type Red22 = number; type Blue22 = number; /** * The height of the beam. */ type Height2 = number; type Green23 = number; type Red23 = number; type Blue23 = number; /** * Where the beam draws vertically relative to the object. */ type ZOffset6 = number; /** * What proportion of this tile should spawn this resource. */ type Coverage = number; type Green24 = number; type Red24 = number; type Blue24 = number; /** * If true, this item stop rendering while underneath a building's roof. */ type HideUnderRoof2 = boolean; /** * The smallest version of this resource. Used for automatic editor merging. */ type AutoMergeRootItem = string; /** * If false, this item can be placed in water. */ type RequiresLand1 = boolean; /** * If true, this item can be zapped by the Zapper. */ type Zappable = boolean; /** * When first spawned in the world, this thing can randomly scale itself down (to a minimum) to add variety. This scale should be preserved between sessions, so this will only apply to newly-created instances of this asset. */ type RandomScalingMinimum = number; type KnowledgeGroup = string; /** * If true, this item will randomly select a skin from its available skins when spawned. */ type RandomizedSpineSkin = boolean; /** * A number that is connected to the relative power level of this thing. */ type Level = number; /** * Whether this world element can be struck by bullet-style projectiles. Solid world elements will always be struck by bullets. */ type BulletInteraction = "All Bullets" | "Passthrough Only" | "No Bullets"; /** * If true, the player will automatically pick up loot dropped by this item or caused by this item. */ type AlwaysAutocollectLoot = boolean; type CanExistOnFloors = boolean; /** * Higher effort items are considered more rare or harder to reach, and recipes will call for fewer of them. Lower effort items will be considered 'cheap', and therefore recipes will demand more of them. */ type EffortModifier9 = number; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler3 = string; type Green25 = number; type Red25 = number; type Blue25 = number; type Resource2 = { manual_pickup?: ManualPickup; pickupable?: true; } | { death_sounds?: DestructionSounds; pickupable?: false; injury_sounds?: InjurySounds; resistance_profile?: ResistanceProfile; hp_modifier?: HPModifier; loot?: Loot; }; /** * If true, the player must manually interact with the resource to pick it up. */ type ManualPickup = boolean; /** * Plays when receiving damage that has been mitigated. */ type Minor = string; /** * Plays when receiving damage that hasn't been mitigated. */ type Major = string; type Chance1 = number; type ResistanceProfile = string; /** * By default, this world element will have a max HP relative to its level. Change this value to further customize its max HP. */ type HPModifier = number; /** * If unlocked by an insight, whether to show this loot group in the insight's tooltip. Defaults to true. */ type ShowInInsight = boolean; /** * If true, this loot group will be considered a 'bonus' and will not be counted as part of the normal effort calculations. */ type ConsiderAsBonus = boolean; /** * If true, this loot group will not be shown in the progression map. */ type IgnoreInProgressionMap1 = boolean; type Min30 = number; type Max30 = number; /** * When this loot group is able to drop. */ type TimeOfDay = "Always" | "Day" | "Night"; type UnlockedBy16 = string; /** * What event will cause this loot to drop. */ type Trigger1 = "Death" | "Damage"; /** * The probability for this loot group to occur. */ type DropChance = number; /** * If set, the 'Drop Quantity' value will multiply against the value retrieved from this data field. */ type DatafieldQuantityLink = string; type ShowInCompendium = boolean; /** * Whether to include this loot group when listing the 'sources' of an item in its tooltip. */ type IncludeAsSource = boolean; /** * A multiplier to the effort required to get this loot group to drop. Higher effort means it is considered more rare. */ type EffortModifier10 = number; /** * The frequency of this item will be multiplied by this number. E.g. 200% means this item will be considered twice as common as the item it is inheriting from. */ type FrequencyMultiplier = number; type InheritFrom = string; /** * Where this item comes from. */ type Source4 = string; /** * This source will be listed once this unlock is met. */ type UnlockedBy17 = string; /** * If false, the object will always render itself at its normal color and won't be darkened or brightened by lighting. */ type UseLighting5 = boolean; type Object3 = string; /** * If true, this creature will not trigger the infostream when it enters combat. */ type SuppressInfostreamAggro = boolean; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup12 = string; /** * When destroyed, this world element will respawn using the base respawn minutes combined with this multiplier. Higher multiplier means longer time between respawns. */ type RespawnTimeMultiplier1 = number; /** * If true, this item will not appear in the world editor. */ type EditorExcluded1 = boolean; /** * Whether this creature is a strange creature. Strange creatures are special and can be spawned by strange spawners. */ type Strange = boolean; type Height3 = number; type Width3 = number; /** * If true, this item will be fully reset after its respawn timer expires, even if it wasn't destroyed. This only applies to entities that were created in the world editor and not during gameplay. */ type CanReset1 = boolean; type WorldSprite8 = string; type EnglishText29 = string; /** * If checked, this text will not be exported for localization. */ type Skip29 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText28 = string; type ScaleModifier2 = number; type EnglishText30 = string; /** * If checked, this text will not be exported for localization. */ type Skip30 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText29 = string; /** * This source will be listed once this unlock is met. */ type UnlockedBy18 = string; /** * If set, this game element will adjust its level to match the player's level at the time it is spawned, plus this number. */ type RelativeLevel1 = number; /** * If the game element has a relative level, this is the minimum it can be. */ type RelativeLevelMinimum1 = number; /** * How the actor animates while not actively moving. */ type StationaryVisuals = { animation?: Animation; babbler?: Babbler4; style?: "Stand"; } | { z_baseline: BaselineAltitudePixels; style: "Fly"; z_sine?: AltitudeSineWave; flaps?: FlappingVerticalMovements; animation?: Animation1; babbler?: Babbler5; }; /** * Defaults to 'idle. */ type Animation = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler4 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed3 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude1 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds = number; /** * Flapping will move the creature vertically. */ type VerticalDistance = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds = number; /** * Defaults to 'fly' but can be overridden. */ type Animation1 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler5 = string; /** * Relative to the global movement speed. */ type MovementSpeed = number; type MovementVisuals = { hop_speed: HopVerticalSpeed; hop_anticipation?: HopAnticipationSeconds; hop_followthrough?: PostHopFollowthroughSeconds; style: "Hop"; animation?: HopAnimationName; babbler?: Babbler6; } | { animation?: RunAnimationName; babbler?: Babbler7; run_vertical_speed: RunVerticalBounceSpeed; smoke_bones?: SmokePoofBones; style: "Run"; } | { animation?: CrawlAnimationName; babbler?: Babbler8; style: "Crawl"; } | { z_baseline: BaselineAltitudePixels1; style: "Fly"; z_sine?: AltitudeSineWave1; flaps?: FlappingVerticalMovements1; animation?: Animation2; babbler?: Babbler9; }; /** * As a percentage of base gravity. This is fairly sensitive. */ type HopVerticalSpeed = number; /** * How long to hold before rising off the ground, to make room for a pre-hop animation. */ type HopAnticipationSeconds = number; /** * How long to hold after landing on the ground from a hop, to make room for animations. */ type PostHopFollowthroughSeconds = number; /** * Defaults to 'hop' but can be overridden. */ type HopAnimationName = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler6 = string; /** * Defaults to 'run' but can be overridden. */ type RunAnimationName = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler7 = string; /** * How fast the character should pop up off the ground with each leg movement. As a percentage of base gravity. This is fairly sensitive. */ type RunVerticalBounceSpeed = number; type BoneName = string; /** * Defaults to 'crawl' but can be overridden. */ type CrawlAnimationName = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler8 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels1 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed4 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude2 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds1 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance1 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds1 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation2 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler9 = string; type SpineSkin1 = string; type EnglishText31 = string; /** * If checked, this text will not be exported for localization. */ type Skip31 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText30 = string; /** * Plays when receiving damage that has been mitigated. */ type Minor1 = string; /** * Plays when receiving damage that hasn't been mitigated. */ type Major1 = string; type Chance2 = number; type ResistanceProfile1 = string; /** * If set, this thing cannot be stunned. Only applies to creatures, since nothing else can be stunned by default. */ type Stun = boolean; /** * By default, max HP is relative to the level of the creature. Change this value to further customize its max HP. */ type HPModifier1 = number; type Family = string; type AggroRadius = number; type DeaggroRadius = number; /** * How long the creature must be outside the deaggro radius before exiting combat. */ type DeaggroDuration = number; /** * How close (in grid spaces) you need to be to another creature of the same family who is in combat before you also get involved to help them. */ type FriendlyHelpRange = number; /** * If true, this creature will respond angrily if something destroys the items it wants to protect. */ type RespondToDestruction = boolean; /** * If true, this creature will respond angrily if something damages the items it wants to protect. */ type RespondToDamage = boolean; /** * If set, dynamically-spawned versions of this item will disappear after this much time has passed since it was created. */ type DynamicExpirationMinutes1 = number; /** * Move the health bar up or down to better position it relative to the world element's visual size. Positive numbers go up. */ type HealthBarVerticalOffset = number; type UIIcon8 = string; /** * The chance the creature looks for an repellant instead of just roaming around. */ type RepelProbability = number; /** * How far away the creature will notice things to be repelled by. */ type DetectionRange = number; /** * How the actor animates while not actively moving. */ type StationaryVisuals1 = { animation?: Animation3; babbler?: Babbler10; style?: "Stand"; } | { z_baseline: BaselineAltitudePixels2; style: "Fly"; z_sine?: AltitudeSineWave2; flaps?: FlappingVerticalMovements2; animation?: Animation4; babbler?: Babbler11; }; /** * Defaults to 'idle. */ type Animation3 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler10 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels2 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed5 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude3 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds2 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance2 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds2 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation4 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler11 = string; /** * Relative to the global movement speed. */ type MovementSpeed1 = number; type MovementVisuals1 = { hop_speed: HopVerticalSpeed1; hop_anticipation?: HopAnticipationSeconds1; hop_followthrough?: PostHopFollowthroughSeconds1; style: "Hop"; animation?: HopAnimationName1; babbler?: Babbler12; } | { animation?: RunAnimationName1; babbler?: Babbler13; run_vertical_speed: RunVerticalBounceSpeed1; smoke_bones?: SmokePoofBones1; style: "Run"; } | { animation?: CrawlAnimationName1; babbler?: Babbler14; style: "Crawl"; } | { z_baseline: BaselineAltitudePixels3; style: "Fly"; z_sine?: AltitudeSineWave3; flaps?: FlappingVerticalMovements3; animation?: Animation5; babbler?: Babbler15; }; /** * As a percentage of base gravity. This is fairly sensitive. */ type HopVerticalSpeed1 = number; /** * How long to hold before rising off the ground, to make room for a pre-hop animation. */ type HopAnticipationSeconds1 = number; /** * How long to hold after landing on the ground from a hop, to make room for animations. */ type PostHopFollowthroughSeconds1 = number; /** * Defaults to 'hop' but can be overridden. */ type HopAnimationName1 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler12 = string; /** * Defaults to 'run' but can be overridden. */ type RunAnimationName1 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler13 = string; /** * How fast the character should pop up off the ground with each leg movement. As a percentage of base gravity. This is fairly sensitive. */ type RunVerticalBounceSpeed1 = number; type BoneName1 = string; /** * Defaults to 'crawl' but can be overridden. */ type CrawlAnimationName1 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler14 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels3 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed6 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude4 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds3 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance3 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds3 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation5 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler15 = string; /** * How strongly the creature is repelled by these targets. */ type Weight = number; /** * How far away the creature will be attracted to these targets. Overrides baseline detection range. */ type DetectionRange1 = number; /** * How the actor animates while not actively moving. */ type StationaryVisuals2 = { animation?: Animation6; babbler?: Babbler16; style?: "Stand"; } | { z_baseline: BaselineAltitudePixels4; style: "Fly"; z_sine?: AltitudeSineWave4; flaps?: FlappingVerticalMovements4; animation?: Animation7; babbler?: Babbler17; }; /** * Defaults to 'idle. */ type Animation6 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler16 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels4 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed7 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude5 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds4 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance4 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds4 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation7 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler17 = string; /** * Relative to the global movement speed. */ type MovementSpeed2 = number; type MovementVisuals2 = { hop_speed: HopVerticalSpeed2; hop_anticipation?: HopAnticipationSeconds2; hop_followthrough?: PostHopFollowthroughSeconds2; style: "Hop"; animation?: HopAnimationName2; babbler?: Babbler18; } | { animation?: RunAnimationName2; babbler?: Babbler19; run_vertical_speed: RunVerticalBounceSpeed2; smoke_bones?: SmokePoofBones2; style: "Run"; } | { animation?: CrawlAnimationName2; babbler?: Babbler20; style: "Crawl"; } | { z_baseline: BaselineAltitudePixels5; style: "Fly"; z_sine?: AltitudeSineWave5; flaps?: FlappingVerticalMovements5; animation?: Animation8; babbler?: Babbler21; }; /** * As a percentage of base gravity. This is fairly sensitive. */ type HopVerticalSpeed2 = number; /** * How long to hold before rising off the ground, to make room for a pre-hop animation. */ type HopAnticipationSeconds2 = number; /** * How long to hold after landing on the ground from a hop, to make room for animations. */ type PostHopFollowthroughSeconds2 = number; /** * Defaults to 'hop' but can be overridden. */ type HopAnimationName2 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler18 = string; /** * Defaults to 'run' but can be overridden. */ type RunAnimationName2 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler19 = string; /** * How fast the character should pop up off the ground with each leg movement. As a percentage of base gravity. This is fairly sensitive. */ type RunVerticalBounceSpeed2 = number; type BoneName2 = string; /** * Defaults to 'crawl' but can be overridden. */ type CrawlAnimationName2 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler20 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels5 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed8 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude6 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds5 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance5 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds5 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation8 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler21 = string; /** * Affects the probability of choosing the Roaming state. */ type Weight1 = number; /** * How the actor animates while not actively moving. */ type StationaryVisuals3 = { animation?: Animation9; babbler?: Babbler22; style?: "Stand"; } | { z_baseline: BaselineAltitudePixels6; style: "Fly"; z_sine?: AltitudeSineWave6; flaps?: FlappingVerticalMovements6; animation?: Animation10; babbler?: Babbler23; }; /** * Defaults to 'idle. */ type Animation9 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler22 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels6 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed9 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude7 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds6 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance6 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds6 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation10 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler23 = string; /** * Relative to the global movement speed. */ type MovementSpeed3 = number; type MovementVisuals3 = { hop_speed: HopVerticalSpeed3; hop_anticipation?: HopAnticipationSeconds3; hop_followthrough?: PostHopFollowthroughSeconds3; style: "Hop"; animation?: HopAnimationName3; babbler?: Babbler24; } | { animation?: RunAnimationName3; babbler?: Babbler25; run_vertical_speed: RunVerticalBounceSpeed3; smoke_bones?: SmokePoofBones3; style: "Run"; } | { animation?: CrawlAnimationName3; babbler?: Babbler26; style: "Crawl"; } | { z_baseline: BaselineAltitudePixels7; style: "Fly"; z_sine?: AltitudeSineWave7; flaps?: FlappingVerticalMovements7; animation?: Animation11; babbler?: Babbler27; }; /** * As a percentage of base gravity. This is fairly sensitive. */ type HopVerticalSpeed3 = number; /** * How long to hold before rising off the ground, to make room for a pre-hop animation. */ type HopAnticipationSeconds3 = number; /** * How long to hold after landing on the ground from a hop, to make room for animations. */ type PostHopFollowthroughSeconds3 = number; /** * Defaults to 'hop' but can be overridden. */ type HopAnimationName3 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler24 = string; /** * Defaults to 'run' but can be overridden. */ type RunAnimationName3 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler25 = string; /** * How fast the character should pop up off the ground with each leg movement. As a percentage of base gravity. This is fairly sensitive. */ type RunVerticalBounceSpeed3 = number; type BoneName3 = string; /** * Defaults to 'crawl' but can be overridden. */ type CrawlAnimationName3 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler26 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels7 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed10 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude8 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds7 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance7 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds7 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation11 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler27 = string; type Min31 = number; type Max31 = number; /** * If unchecked, the creature will go back to idle when done roaming. Otherwise, it will sometimes roam again. */ type Repeatable = boolean; /** * The chance the creature looks for an attractant instead of just roaming around. */ type AttractionProbability = number; /** * How far away the creature will notice things to be attracted to. */ type DetectionRange2 = number; /** * How the actor animates while not actively moving. */ type StationaryVisuals4 = { animation?: Animation12; babbler?: Babbler28; style?: "Stand"; } | { z_baseline: BaselineAltitudePixels8; style: "Fly"; z_sine?: AltitudeSineWave8; flaps?: FlappingVerticalMovements8; animation?: Animation13; babbler?: Babbler29; }; /** * Defaults to 'idle. */ type Animation12 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler28 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels8 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed11 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude9 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds8 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance8 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds8 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation13 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler29 = string; /** * Relative to the global movement speed. */ type MovementSpeed4 = number; type MovementVisuals4 = { hop_speed: HopVerticalSpeed4; hop_anticipation?: HopAnticipationSeconds4; hop_followthrough?: PostHopFollowthroughSeconds4; style: "Hop"; animation?: HopAnimationName4; babbler?: Babbler30; } | { animation?: RunAnimationName4; babbler?: Babbler31; run_vertical_speed: RunVerticalBounceSpeed4; smoke_bones?: SmokePoofBones4; style: "Run"; } | { animation?: CrawlAnimationName4; babbler?: Babbler32; style: "Crawl"; } | { z_baseline: BaselineAltitudePixels9; style: "Fly"; z_sine?: AltitudeSineWave9; flaps?: FlappingVerticalMovements9; animation?: Animation14; babbler?: Babbler33; }; /** * As a percentage of base gravity. This is fairly sensitive. */ type HopVerticalSpeed4 = number; /** * How long to hold before rising off the ground, to make room for a pre-hop animation. */ type HopAnticipationSeconds4 = number; /** * How long to hold after landing on the ground from a hop, to make room for animations. */ type PostHopFollowthroughSeconds4 = number; /** * Defaults to 'hop' but can be overridden. */ type HopAnimationName4 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler30 = string; /** * Defaults to 'run' but can be overridden. */ type RunAnimationName4 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler31 = string; /** * How fast the character should pop up off the ground with each leg movement. As a percentage of base gravity. This is fairly sensitive. */ type RunVerticalBounceSpeed4 = number; type BoneName4 = string; /** * Defaults to 'crawl' but can be overridden. */ type CrawlAnimationName4 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler32 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels9 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed12 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude10 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds9 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance9 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds9 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation14 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler33 = string; /** * How strongly the creature is attracted to these targets. */ type Weight2 = number; /** * How far away the creature will be attracted to these targets. Overrides baseline detection range. */ type DetectionRange3 = number; /** * How the actor animates while not actively moving. */ type StationaryVisuals5 = { animation?: Animation15; babbler?: Babbler34; style?: "Stand"; } | { z_baseline: BaselineAltitudePixels10; style: "Fly"; z_sine?: AltitudeSineWave10; flaps?: FlappingVerticalMovements10; animation?: Animation16; babbler?: Babbler35; }; /** * Defaults to 'idle. */ type Animation15 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler34 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels10 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed13 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude11 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds10 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance10 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds10 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation16 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler35 = string; /** * Relative to the global movement speed. */ type MovementSpeed5 = number; type MovementVisuals5 = { hop_speed: HopVerticalSpeed5; hop_anticipation?: HopAnticipationSeconds5; hop_followthrough?: PostHopFollowthroughSeconds5; style: "Hop"; animation?: HopAnimationName5; babbler?: Babbler36; } | { animation?: RunAnimationName5; babbler?: Babbler37; run_vertical_speed: RunVerticalBounceSpeed5; smoke_bones?: SmokePoofBones5; style: "Run"; } | { animation?: CrawlAnimationName5; babbler?: Babbler38; style: "Crawl"; } | { z_baseline: BaselineAltitudePixels11; style: "Fly"; z_sine?: AltitudeSineWave11; flaps?: FlappingVerticalMovements11; animation?: Animation17; babbler?: Babbler39; }; /** * As a percentage of base gravity. This is fairly sensitive. */ type HopVerticalSpeed5 = number; /** * How long to hold before rising off the ground, to make room for a pre-hop animation. */ type HopAnticipationSeconds5 = number; /** * How long to hold after landing on the ground from a hop, to make room for animations. */ type PostHopFollowthroughSeconds5 = number; /** * Defaults to 'hop' but can be overridden. */ type HopAnimationName5 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler36 = string; /** * Defaults to 'run' but can be overridden. */ type RunAnimationName5 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler37 = string; /** * How fast the character should pop up off the ground with each leg movement. As a percentage of base gravity. This is fairly sensitive. */ type RunVerticalBounceSpeed5 = number; type BoneName5 = string; /** * Defaults to 'crawl' but can be overridden. */ type CrawlAnimationName5 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler38 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels11 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed14 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude12 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds11 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance11 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds11 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation17 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler39 = string; /** * Affects the probability of choosing the Idle state over other states. */ type Weight3 = number; type Min32 = number; type Max32 = number; /** * If unchecked, the creature will try to go to a different state when this one ends. */ type Repeatable1 = boolean; /** * How far away the creature will look to find a viable target or location to use this ability (in grid spaces) */ type DetectionRadius = number; type Min33 = number; type Max33 = number; /** * Affects the probability of choosing this state. */ type Weight4 = number; /** * The ability the creature will attempt to cast. */ type Ability4 = string; /** * How the actor animates while not actively moving. */ type StationaryVisuals6 = { animation?: Animation18; babbler?: Babbler40; style?: "Stand"; } | { z_baseline: BaselineAltitudePixels12; style: "Fly"; z_sine?: AltitudeSineWave12; flaps?: FlappingVerticalMovements12; animation?: Animation19; babbler?: Babbler41; }; /** * Defaults to 'idle. */ type Animation18 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler40 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels12 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed15 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude13 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds12 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance12 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds12 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation19 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler41 = string; /** * Relative to the global movement speed. */ type MovementSpeed6 = number; type MovementVisuals6 = { hop_speed: HopVerticalSpeed6; hop_anticipation?: HopAnticipationSeconds6; hop_followthrough?: PostHopFollowthroughSeconds6; style: "Hop"; animation?: HopAnimationName6; babbler?: Babbler42; } | { animation?: RunAnimationName6; babbler?: Babbler43; run_vertical_speed: RunVerticalBounceSpeed6; smoke_bones?: SmokePoofBones6; style: "Run"; } | { animation?: CrawlAnimationName6; babbler?: Babbler44; style: "Crawl"; } | { z_baseline: BaselineAltitudePixels13; style: "Fly"; z_sine?: AltitudeSineWave13; flaps?: FlappingVerticalMovements13; animation?: Animation20; babbler?: Babbler45; }; /** * As a percentage of base gravity. This is fairly sensitive. */ type HopVerticalSpeed6 = number; /** * How long to hold before rising off the ground, to make room for a pre-hop animation. */ type HopAnticipationSeconds6 = number; /** * How long to hold after landing on the ground from a hop, to make room for animations. */ type PostHopFollowthroughSeconds6 = number; /** * Defaults to 'hop' but can be overridden. */ type HopAnimationName6 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler42 = string; /** * Defaults to 'run' but can be overridden. */ type RunAnimationName6 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler43 = string; /** * How fast the character should pop up off the ground with each leg movement. As a percentage of base gravity. This is fairly sensitive. */ type RunVerticalBounceSpeed6 = number; type BoneName6 = string; /** * Defaults to 'crawl' but can be overridden. */ type CrawlAnimationName6 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler44 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels13 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed16 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude14 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds13 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance13 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds13 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation20 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler45 = string; type NameInternal3 = string; /** * If unchecked, the creature will try to go to a different state when this one ends. */ type Repeatable2 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude36 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll42 = boolean; type Quantity49 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants36 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags36 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude37 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll43 = boolean; type Quantity50 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants37 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags37 = boolean; type IgnoreInLevelViewer1 = boolean; /** * If unlocked by an insight, whether to show this loot group in the insight's tooltip. Defaults to true. */ type ShowInInsight1 = boolean; /** * If true, this loot group will be considered a 'bonus' and will not be counted as part of the normal effort calculations. */ type ConsiderAsBonus1 = boolean; /** * If true, this loot group will not be shown in the progression map. */ type IgnoreInProgressionMap2 = boolean; type Min34 = number; type Max34 = number; /** * When this loot group is able to drop. */ type TimeOfDay1 = "Always" | "Day" | "Night"; type UnlockedBy19 = string; /** * What event will cause this loot to drop. */ type Trigger2 = "Death" | "Damage"; /** * The probability for this loot group to occur. */ type DropChance1 = number; /** * If set, the 'Drop Quantity' value will multiply against the value retrieved from this data field. */ type DatafieldQuantityLink1 = string; type ShowInCompendium1 = boolean; /** * Whether to include this loot group when listing the 'sources' of an item in its tooltip. */ type IncludeAsSource1 = boolean; /** * A multiplier to the effort required to get this loot group to drop. Higher effort means it is considered more rare. */ type EffortModifier11 = number; /** * The sound the creature will make when it begins attacking something */ type AggroSound = string; /** * Whether the creature will attack the player when the player gets into aggro range. */ type AggroOntoPlayer = boolean; /** * How the actor animates while not actively moving. */ type StationaryVisuals7 = { animation?: Animation21; babbler?: Babbler46; style?: "Stand"; } | { z_baseline: BaselineAltitudePixels14; style: "Fly"; z_sine?: AltitudeSineWave14; flaps?: FlappingVerticalMovements14; animation?: Animation22; babbler?: Babbler47; }; /** * Defaults to 'idle. */ type Animation21 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler46 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels14 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed17 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude15 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds14 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance14 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds14 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation22 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler47 = string; /** * Relative to the global movement speed. */ type MovementSpeed7 = number; type MovementVisuals7 = { hop_speed: HopVerticalSpeed7; hop_anticipation?: HopAnticipationSeconds7; hop_followthrough?: PostHopFollowthroughSeconds7; style: "Hop"; animation?: HopAnimationName7; babbler?: Babbler48; } | { animation?: RunAnimationName7; babbler?: Babbler49; run_vertical_speed: RunVerticalBounceSpeed7; smoke_bones?: SmokePoofBones7; style: "Run"; } | { animation?: CrawlAnimationName7; babbler?: Babbler50; style: "Crawl"; } | { z_baseline: BaselineAltitudePixels15; style: "Fly"; z_sine?: AltitudeSineWave15; flaps?: FlappingVerticalMovements15; animation?: Animation23; babbler?: Babbler51; }; /** * As a percentage of base gravity. This is fairly sensitive. */ type HopVerticalSpeed7 = number; /** * How long to hold before rising off the ground, to make room for a pre-hop animation. */ type HopAnticipationSeconds7 = number; /** * How long to hold after landing on the ground from a hop, to make room for animations. */ type PostHopFollowthroughSeconds7 = number; /** * Defaults to 'hop' but can be overridden. */ type HopAnimationName7 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler48 = string; /** * Defaults to 'run' but can be overridden. */ type RunAnimationName7 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler49 = string; /** * How fast the character should pop up off the ground with each leg movement. As a percentage of base gravity. This is fairly sensitive. */ type RunVerticalBounceSpeed7 = number; type BoneName7 = string; /** * Defaults to 'crawl' but can be overridden. */ type CrawlAnimationName7 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler50 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels15 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed18 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude16 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds15 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance15 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds15 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation23 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler51 = string; /** * Affects how frequently this ability is chosen. */ type Weight5 = number; type Ability5 = string; /** * If possible, the creature can add some randomness to the direction of this ability's cast (in degrees). */ type DirectionRandomness = number; /** * The creature can randomly ignore the post-ability pause, and instead go right into the next ability. */ type PostAbilityPauseIgnoreChance = number; /** * How the actor animates while not actively moving. */ type StationaryVisuals8 = { animation?: Animation24; babbler?: Babbler52; style?: "Stand"; } | { z_baseline: BaselineAltitudePixels16; style: "Fly"; z_sine?: AltitudeSineWave16; flaps?: FlappingVerticalMovements16; animation?: Animation25; babbler?: Babbler53; }; /** * Defaults to 'idle. */ type Animation24 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler52 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels16 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed19 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude17 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds16 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance16 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds16 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation25 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler53 = string; /** * Relative to the global movement speed. */ type MovementSpeed8 = number; type MovementVisuals8 = { hop_speed: HopVerticalSpeed8; hop_anticipation?: HopAnticipationSeconds8; hop_followthrough?: PostHopFollowthroughSeconds8; style: "Hop"; animation?: HopAnimationName8; babbler?: Babbler54; } | { animation?: RunAnimationName8; babbler?: Babbler55; run_vertical_speed: RunVerticalBounceSpeed8; smoke_bones?: SmokePoofBones8; style: "Run"; } | { animation?: CrawlAnimationName8; babbler?: Babbler56; style: "Crawl"; } | { z_baseline: BaselineAltitudePixels17; style: "Fly"; z_sine?: AltitudeSineWave17; flaps?: FlappingVerticalMovements17; animation?: Animation26; babbler?: Babbler57; }; /** * As a percentage of base gravity. This is fairly sensitive. */ type HopVerticalSpeed8 = number; /** * How long to hold before rising off the ground, to make room for a pre-hop animation. */ type HopAnticipationSeconds8 = number; /** * How long to hold after landing on the ground from a hop, to make room for animations. */ type PostHopFollowthroughSeconds8 = number; /** * Defaults to 'hop' but can be overridden. */ type HopAnimationName8 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler54 = string; /** * Defaults to 'run' but can be overridden. */ type RunAnimationName8 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler55 = string; /** * How fast the character should pop up off the ground with each leg movement. As a percentage of base gravity. This is fairly sensitive. */ type RunVerticalBounceSpeed8 = number; type BoneName8 = string; /** * Defaults to 'crawl' but can be overridden. */ type CrawlAnimationName8 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler56 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels17 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed20 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude18 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds17 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance17 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds17 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation26 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler57 = string; type MinSeconds = number; type MaxSeconds = number; /** * The probability that this ability will be cast after the prior ability. */ type Chance3 = number; /** * The weight choosing this followup ability relative to the other followup abilities in this list. */ type Weight6 = number; type Ability6 = string; /** * If set, the creature will always cast this ability instantly after finishing the prior ability, ignoring normal behavioral cooldowns. */ type Instant = boolean; type MinSeconds1 = number; type MaxSeconds1 = number; type MinSeconds2 = number; type MaxSeconds2 = number; /** * If possible, the creature can aim at a random location near its intended target, within this distance (in grid spaces). */ type DistanceRandomness = number; type MinSeconds3 = number; type MaxSeconds3 = number; /** * The sound the creature will make when it begins running away from something. */ type FleeSound = string; /** * When the creature's health drops below this threshold, it can flee. */ type HealthThreshold2 = number; /** * How likely it is for the creature to flee when its health drops below the threshold. */ type Probablity = number; type Min35 = number; type Max35 = number; /** * Relative to the global movement speed. */ type MovementSpeed9 = number; type MovementVisuals9 = { hop_speed: HopVerticalSpeed9; hop_anticipation?: HopAnticipationSeconds9; hop_followthrough?: PostHopFollowthroughSeconds9; style: "Hop"; animation?: HopAnimationName9; babbler?: Babbler58; } | { animation?: RunAnimationName9; babbler?: Babbler59; run_vertical_speed: RunVerticalBounceSpeed9; smoke_bones?: SmokePoofBones9; style: "Run"; } | { animation?: CrawlAnimationName9; babbler?: Babbler60; style: "Crawl"; } | { z_baseline: BaselineAltitudePixels18; style: "Fly"; z_sine?: AltitudeSineWave18; flaps?: FlappingVerticalMovements18; animation?: Animation27; babbler?: Babbler61; }; /** * As a percentage of base gravity. This is fairly sensitive. */ type HopVerticalSpeed9 = number; /** * How long to hold before rising off the ground, to make room for a pre-hop animation. */ type HopAnticipationSeconds9 = number; /** * How long to hold after landing on the ground from a hop, to make room for animations. */ type PostHopFollowthroughSeconds9 = number; /** * Defaults to 'hop' but can be overridden. */ type HopAnimationName9 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler58 = string; /** * Defaults to 'run' but can be overridden. */ type RunAnimationName9 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler59 = string; /** * How fast the character should pop up off the ground with each leg movement. As a percentage of base gravity. This is fairly sensitive. */ type RunVerticalBounceSpeed9 = number; type BoneName9 = string; /** * Defaults to 'crawl' but can be overridden. */ type CrawlAnimationName9 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler60 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels18 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed21 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude19 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds18 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance18 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds18 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation27 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler61 = string; type Green26 = number; type Red26 = number; type Blue26 = number; /** * If true, this item stop rendering while underneath a building's roof. */ type HideUnderRoof3 = boolean; type KnowledgeGroup1 = string; /** * When first spawned in the world, this thing can randomly scale itself down (to a minimum) to add variety. This scale should be preserved between sessions, so this will only apply to newly-created instances of this asset. */ type RandomScalingMinimum1 = number; /** * A number that is connected to the relative power level of this thing. */ type Level1 = number; /** * Whether this world element can be struck by bullet-style projectiles. Solid world elements will always be struck by bullets. */ type BulletInteraction1 = "All Bullets" | "Passthrough Only" | "No Bullets"; /** * Higher effort items are considered more rare or harder to reach, and recipes will call for fewer of them. Lower effort items will be considered 'cheap', and therefore recipes will demand more of them. */ type EffortModifier12 = number; /** * The particle burst to play when the boss dies. */ type ParticleBurst = string; /** * The animation to play when the boss dies. */ type Animation28 = string; /** * The sound to play when the boss dies. */ type DeathSound = string; /** * The Z value to lerp to when the boss dies. */ type ZTarget = number; type VisualEffect1 = { decal_duration?: DecalDurationSeconds1; decal_sprite: DecalSprite1; decal_scale?: DecalScale1; effect_type: "Ground Decal"; decal_max_alpha?: MaxAlpha1; } | { explosion_random_delay?: RandomDelaySeconds1; explosion_debris?: DebrisParticles2; effect_type: "Explosion"; explosion_y_offset?: YOffset7; explosion_z_offset?: ZOffset7; explosion_color: BaseColor1; explosion_sound?: Sound5; explosion_slomo_burst: SlowMotionPulse1; explosion_highlight_color?: HighlightColor1; explosion_camera_shake?: CameraShake2; explosion_smoke?: ShowSmoke1; explosion_scale?: ExplosionScale1; explosion_random_distance?: RandomDistanceGridSpaces1; } | { particle_system_z_offset?: ZOffset8; particle_system: ParticleSystem3; particle_system_emitter_scale?: EmitterScale3; effect_type: "Particle System Burst"; particle_system_y_offset?: YOffset8; } | { skybeam_color: SkybeamColor1; skybeam_sound?: Sound6; skybeam_width?: SkybeamPixelWidth1; effect_type: "Skybeam"; } | { smokeburst_color?: SmokeColor1; smokeburst_zoffset?: ZOffset9; smokeburst_spawn_on_ground?: SpawnOnGround3; smokeburst_yoffset?: YOffset9; smokeburst_speed?: ExpansionSpeed1; smokeburst_radius?: RadiusPixels1; smokeburst_scale?: Scale1; effect_type: "Smoke Burst"; } | { ering_y_offset?: YOffset10; ering_z_offset?: ZOffset10; ering_color1?: Color12; ering_color2?: Color22; ering_sound?: Sound7; ering_grid_radius: GridRadius1; ering_spawn_on_ground?: SpawnOnGround4; ering_show_internal_ring?: ShowInternalRing1; effect_type: "Electric Ring"; } | { skylightning_color: LightningColor1; skylightning_shake?: CameraShake3; skylightning_sound?: Sound8; skylightning_width?: LightningPixelWidth1; skylightning_slomo_flash?: SlowMotionFlash1; effect_type: "Sky Lightning"; }; type Min36 = number; type Max36 = number; /** * This sprite will be drawn subtractively. */ type DecalSprite1 = string; type Min37 = number; type Max37 = number; type MaxAlpha1 = number; type Min38 = number; type Max38 = number; type NumberOfParticles2 = number; type ParticleScale1 = number; /** * The sprite to use for the debris. */ type Sprite3 = string; /** * Can be useful for depth-sorting. For example, a Y offset of 1 will spawn the explosion in front of whatever is explosing. */ type YOffset7 = number; /** * If spawning on the ground, this will be height above ground. If spawning on targets, it will spawn at their height midpoints, plus this offset. */ type ZOffset7 = number; type Green27 = number; type Red27 = number; type Blue27 = number; /** * There is a default explosion sound, but you can override it here. */ type Sound5 = string; /** * If true, there will be a brief slow-down of the game when the explosion occurs to make it feel more impactful. Use sparingly. */ type SlowMotionPulse1 = boolean; type Green28 = number; type Red28 = number; type Blue28 = number; /** * If true, the camera will shake when the explosion occurs. */ type CameraShake2 = boolean; /** * If true, smoke will be spawned at the explosion location. */ type ShowSmoke1 = boolean; type Min39 = number; type Max39 = number; type Min40 = number; type Max40 = number; /** * If spawning on the ground, this will be height above ground. If spawning on targets, it will spawn at their height midpoints, plus this offset. */ type ZOffset8 = number; type ParticleSystem3 = string; type EmitterScale3 = number; /** * Can be useful for depth-sorting. For example, a Y offset of 1 will spawn the explosion in front of whatever is explosing. */ type YOffset8 = number; type Green29 = number; type Red29 = number; type Blue29 = number; /** * What sound this sky beam should play when it appears. */ type Sound6 = string; /** * If targeting an entity, the skybeam will be based on the entity's width unless this field is set. */ type SkybeamPixelWidth1 = number; type Green30 = number; type Red30 = number; type Blue30 = number; /** * If spawning on the ground, this will be height above ground. If spawning on targets, it will spawn at their height midpoints, plus this offset. */ type ZOffset9 = number; /** * If true, the smoke will spawn at the ground level. */ type SpawnOnGround3 = boolean; /** * Can be useful for depth-sorting. For example, a Y offset of 1 will spawn the smoke in front of whatever is explosing. */ type YOffset9 = number; /** * How fast the smoke will expand. */ type ExpansionSpeed1 = number; type Min41 = number; type Max41 = number; /** * The scale of the smoke particles. */ type Scale1 = number; /** * Can be useful for depth-sorting. For example, a Y offset of 1 will spawn the explosion in front of whatever is explosing. */ type YOffset10 = number; /** * If spawning on the ground, this will be height above ground. If spawning on targets, it will spawn at their height midpoints, plus this offset. */ type ZOffset10 = number; type Green31 = number; type Red31 = number; type Blue31 = number; type Green32 = number; type Red32 = number; type Blue32 = number; /** * There is a default sound, but you can override it here. */ type Sound7 = string; type Min42 = number; type Max42 = number; /** * If true, the ring will spawn at the ground level. */ type SpawnOnGround4 = boolean; /** * Defaults to true. If false, only one ring will be shown. */ type ShowInternalRing1 = boolean; type Green33 = number; type Red33 = number; type Blue33 = number; /** * How much the camera should shake when the lightning appears. */ type CameraShake3 = number; /** * What sound this lightning should play when it appears. */ type Sound8 = string; /** * If targeting an entity, the lightning will be based on the entity's width unless this field is set. */ type LightningPixelWidth1 = number; /** * If true, the game will briefly slow down when the lightning appears. */ type SlowMotionFlash1 = boolean; /** * How long after the boss dies before we change scene phases and check quests. Defaults to 2 seconds. */ type PostDeathPauseSeconds = number; /** * Celebratory music to play when the boss dies. */ type DeathJingle = string; type ScaleModifier3 = number; /** * If set, this game element will adjust its level to match the player's level at the time it is spawned, plus this number. */ type RelativeLevel2 = number; /** * If the game element has a relative level, this is the minimum it can be. */ type RelativeLevelMinimum2 = number; type Quantity51 = number; type Item2 = string; /** * How the actor animates while not actively moving. */ type StationaryVisuals9 = { animation?: Animation29; babbler?: Babbler62; style?: "Stand"; } | { z_baseline: BaselineAltitudePixels19; style: "Fly"; z_sine?: AltitudeSineWave19; flaps?: FlappingVerticalMovements19; animation?: Animation30; babbler?: Babbler63; }; /** * Defaults to 'idle. */ type Animation29 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler62 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels19 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed22 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude20 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds19 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance19 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds19 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation30 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler63 = string; /** * Relative to the global movement speed. */ type MovementSpeed10 = number; type MovementVisuals10 = { hop_speed: HopVerticalSpeed10; hop_anticipation?: HopAnticipationSeconds10; hop_followthrough?: PostHopFollowthroughSeconds10; style: "Hop"; animation?: HopAnimationName10; babbler?: Babbler64; } | { animation?: RunAnimationName10; babbler?: Babbler65; run_vertical_speed: RunVerticalBounceSpeed10; smoke_bones?: SmokePoofBones10; style: "Run"; } | { animation?: CrawlAnimationName10; babbler?: Babbler66; style: "Crawl"; } | { z_baseline: BaselineAltitudePixels20; style: "Fly"; z_sine?: AltitudeSineWave20; flaps?: FlappingVerticalMovements20; animation?: Animation31; babbler?: Babbler67; }; /** * As a percentage of base gravity. This is fairly sensitive. */ type HopVerticalSpeed10 = number; /** * How long to hold before rising off the ground, to make room for a pre-hop animation. */ type HopAnticipationSeconds10 = number; /** * How long to hold after landing on the ground from a hop, to make room for animations. */ type PostHopFollowthroughSeconds10 = number; /** * Defaults to 'hop' but can be overridden. */ type HopAnimationName10 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler64 = string; /** * Defaults to 'run' but can be overridden. */ type RunAnimationName10 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler65 = string; /** * How fast the character should pop up off the ground with each leg movement. As a percentage of base gravity. This is fairly sensitive. */ type RunVerticalBounceSpeed10 = number; type BoneName10 = string; /** * Defaults to 'crawl' but can be overridden. */ type CrawlAnimationName10 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler66 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels20 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed23 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude21 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds20 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance20 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds20 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation31 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler67 = string; type SpineSkin2 = string; /** * Plays when receiving damage that has been mitigated. */ type Minor2 = string; /** * Plays when receiving damage that hasn't been mitigated. */ type Major2 = string; type Chance4 = number; type ResistanceProfile2 = string; /** * Baseline boss HP is defined in the Game Balance motes. Change this value to further customize its max HP. */ type HPModifier2 = number; /** * If false, the object will always render itself at its normal color and won't be darkened or brightened by lighting. */ type UseLighting6 = boolean; type Green34 = number; type Red34 = number; type Blue34 = number; type UIIcon9 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup13 = string; type Height4 = number; type Width4 = number; type BossDialogueMoment = { speech: { text: { text: EnglishText32; skip?: Skip32; }; speaker: Speaker; emotion?: Emoji; }; requirements?: MomentRequirements; style: "Dialogue"; } | { emotes: Emotes; requirements?: MomentRequirements; style: "Emote"; } | { pause_duration: PauseSeconds; requirements?: MomentRequirements; style: "Pause"; } | { camera_target: CameraTargetEntity; style: "Camera Target Set"; } | { style: "Camera Target Unset"; } | { style: "Camera Zoom"; zoom_amount: ZoomAmount; } | { music: Music; style: "Music Begin"; } | { style: "Music End"; } | { look_targets: LookTargets; requirements?: MomentRequirements; style: "Look Target Set"; } | { style: "Look Target Unset"; requirements?: MomentRequirements; actors?: Actors; }; type EnglishText32 = string; /** * If checked, this text will not be exported for localization. */ type Skip32 = boolean; type Speaker = string; type Emoji = string; type Requirement = { style: "Quest"; quest: QuestToCheck3; quest_status: QuestStatus3; } | { item: Item3; style: "Equipped"; } | { time: Time; style: "Time"; } | { items_owned: Items47; style: "Items Owned"; } | { insight: Insight7; style: "Insight"; insight_status: InsightStatus; } | { style: "Artisan Following"; following: Following6; artisan?: Artisan; } | { comfort: Comfort; comfort_status: ComfortStatus; style: "Comfort"; } | { comparisons: InventoryEvaluation; style: "Inventory Evaluation"; } | { style: "Area"; area: AreaToCheck; item_id: Entity; exclusive?: Exclude38; } | { teleporter_area?: TeleporterArea; teleporter_active: ActiveState; style: "Teleporter Active"; } | { require_all: RequireAll44; invert: Invert; group_requirements: MomentRequirements1; style: "Requirement Group"; } | { stage?: PetStage; following?: Following7; pet?: Pet3; style: "Pet"; } | { style: "Boss Defeated"; boss: Boss4; } | { infusion: Infusion; infusion_status: InfusionStatus; style: "Infusion"; } | { mutators: Mutators; require_all_mutators?: RequireAll45; style: "Mutators"; } | { same_room: SameRoom; exclusive?: Exclusive6; distance: Distance; item_ids: Entities; style: "Entity Proximity"; }; /** * The quest whose status we are querying. */ type QuestToCheck3 = string; type QuestStatus3 = "Complete" | "Started" | "Not Started"; /** * The player must be wearing this item. */ type Item3 = string; type Time = "Day" | "Night"; type Quantity52 = number; type Insight7 = string; type InsightStatus = "Complete" | "Available" | "Locked"; /** * If false, then this will only trigger if the artisan is not following. */ type Following6 = boolean; /** * Leave unset to query whether any artisans are either following or not following. Otherwise, this will query the specific artisan you have chosen. */ type Artisan = string; type Comfort = string; type ComfortStatus = "Complete" | "Available"; type Item4 = string; type Quantity53 = number; type AreaToCheck = string; /** * The entity that must be in the area for the requirement to pass. */ type Entity = string; /** * If true, then this requirement will only pass if the entity is NOT in the area. */ type Exclude38 = boolean; /** * If not set, this requirement will check for 'any' teleporters. */ type TeleporterArea = string; /** * The teleporter must be in this state. */ type ActiveState = boolean; /** * If set to false, then this requirement group will pass if any of its requirements are met. */ type RequireAll44 = boolean; /** * If set, then this requirement group will 'pass' if its requirements are NOT met. */ type Invert = boolean; /** * If set, then this will only trigger if the pet's following state matches this. */ type Following7 = boolean; /** * If unset, then this requirement will be met if any of your pets match it. */ type Pet3 = string; type Boss4 = string; type Infusion = string; type InfusionStatus = "Complete" | "Available" | "Locked"; type Mutator = "Scramble" | "Hardcore"; type Active = boolean; /** * If true, all of the mutators must match what is set here. Otherwise, any of them must match. */ type RequireAll45 = boolean; /** * If true, this requirement will check whether the entity is in the same room as the player. If outdoors, it will use distance. */ type SameRoom = boolean; /** * Only consider this requirement met if NONE of the listed entities are within the range. */ type Exclusive6 = boolean; /** * How far from the player (in grid spaces) the entity should be for this requirement to be met. */ type Distance = number; type EntityType = string; type Emoji1 = string; type Character = string; /** * How long to pause before moving to the next quest moment. */ type PauseSeconds = number; type CameraTargetEntity = string; /** * Higher number means you can see more. */ type ZoomAmount = number; type Music = string; type LooksAt = string; /** * If set, the boss will play this spine animation during the dialogue sequence. */ type BossSpineAnimation = string; /** * If unchecked, the boss will not X-flip during this dialogue to face the player or speakers. */ type AllowXFlip = boolean; type WorldSprite9 = string; /** * A number that is connected to the relative power level of this thing. */ type Level2 = number; type Height5 = number; type Width5 = number; type EnglishText33 = string; /** * If checked, this text will not be exported for localization. */ type Skip33 = boolean; /** * For identifiaction in the Game Changer */ type FamilyNameInternal = string; /** * A number that is connected to the relative power level of this thing. */ type Level3 = number; /** * For identification in the Game Changer */ type IconInternal = string; type Icon3 = string; type Pet4 = string; type SortOrder = number; type EnglishText34 = string; /** * If checked, this text will not be exported for localization. */ type Skip34 = boolean; /** * The stage of the pet's life that this mastery becomes available. */ type PetStage1 = "Adult" | "Embiggened"; type EnglishText35 = string; /** * If checked, this text will not be exported for localization. */ type Skip35 = boolean; /** * Components default to a scale of 0.5, but you can override this here. */ type Scale2 = number; type EnglishText36 = string; /** * If checked, this text will not be exported for localization. */ type Skip36 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText31 = string; /** * This source will be listed once this unlock is met. */ type UnlockedBy20 = string; type EnglishText37 = string; /** * If checked, this text will not be exported for localization. */ type Skip37 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText32 = string; /** * If set, this component won't expire after being dynamically spawned. Components by default expire after an hour of gameplay. */ type NoExpiration = boolean; /** * If true or unset, this item can be lost in the DED dummy. */ type CanGoIntoDed = boolean; /** * Where this item comes from. */ type Source5 = string; /** * This source will be listed once this unlock is met. */ type UnlockedBy21 = string; /** * A unique sound to be played when this item is collected into your body. */ type CollectionSound1 = string; /** * If false, the object will always render itself at its normal color and won't be darkened or brightened by lighting. */ type UseLighting7 = boolean; /** * If set, this component will be considered 'bait'. This number represents how many additional fish you will catch when using it. */ type BaitPower = number; /** * If true, and this has a set Bait Power, the bait will boost Whopper catches instead of normal fish. */ type WhopperBait = boolean; /** * If true, only one of this item will drop for the player. */ type Singleton = boolean; type UIIcon10 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup14 = string; type ResearchNode18 = string; type ChangePerPoint22 = number; /** * What workstation the player must be near to craft this recipe. */ type Station9 = string; /** * Change this number to increase or decrease the number of materials required to craft this item. */ type EffortModifier13 = number; type UnlockedBy22 = string; type OutputQuantity9 = number; type ResearchNode19 = string; type ChangePerPoint23 = number; type Style9 = "Additive" | "Multiplicative"; /** * If set, this item will not be fishable if the player has already acquired one. */ type Singleton1 = boolean; /** * Singletons by default will use weights to determine their chances, but you can force-set their chance here. */ type SingletonChance = number; /** * Higher number means it is more common to find this item when fishing. */ type Frequency = number; /** * Where the player must be standing to catch this fish. Includes all children of this area. */ type Area = string; /** * If set, the fish will not be catchable in this area (and its children) */ type Exclude39 = boolean; /** * If set, this fish will be considered a 'whopper' and will only be catchable via special Whopper Pools. */ type Whopper = boolean; type UnlockedBy24 = string; type EnglishText38 = string; /** * If checked, this text will not be exported for localization. */ type Skip38 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText33 = string; type WorldSprite10 = string; type EnglishText39 = string; /** * If checked, this text will not be exported for localization. */ type Skip39 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText34 = string; /** * Higher effort items are considered more rare or harder to reach, and recipes will call for fewer of them. Lower effort items will be considered 'cheap', and therefore recipes will demand more of them. */ type EffortModifier14 = number; type Height6 = number; type Width6 = number; type EnglishText40 = string; /** * If checked, this text will not be exported for localization. */ type Skip40 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText35 = string; /** * If false, the object will always render itself at its normal color and won't be darkened or brightened by lighting. */ type UseLighting8 = boolean; type WorldSprite11 = string; type ScrambleUIIcon = string; type UIIcon11 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup15 = string; type NestRequirement = string; type HatchingGlowOverlay = string; type ScrambleWorldSprite = string; type EnglishText41 = string; /** * If checked, this text will not be exported for localization. */ type Skip41 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText36 = string; type ScaleModifier4 = number; /** * A unique sound to be played when this item is collected into your body. */ type CollectionSound2 = string; /** * If false, the object will always render itself at its normal color and won't be darkened or brightened by lighting. */ type UseLighting9 = boolean; /** * If this item unlocks a door, it will play this sound. */ type DoorUnlockSound1 = string; /** * Overrides the default collection jingle when picking up this item. */ type JingleOverride1 = string; type UIIcon12 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup16 = string; /** * Whether to show the celebration UI when acquiring this item. */ type CelebratePickup1 = boolean; type IgnoreInLevelViewer2 = boolean; /** * If true, this resource will snap to the grid when placed. Only applies to non-solid objects. */ type GridSnapping2 = boolean; /** * If true, this item will always be visible on the minimap. Useful for items spawned by scene transitions that the player must pick up. */ type AlwaysShowOnMap = boolean; type Height7 = number; type Width7 = number; type Green35 = number; type Red35 = number; type Blue35 = number; /** * If false, this item can be placed in water. */ type RequiresLand2 = boolean; type WorldSprite12 = string; /** * If using a Spine sprite, the object will try to play an animation with this name when it is spawned. */ type SpineIdle1 = string; type CanExistOnFloors1 = boolean; type EnglishText42 = string; /** * If checked, this text will not be exported for localization. */ type Skip42 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText37 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler68 = string; /** * The egg will periodically jiggle and make a sound while hatching. */ type EggSounds = string; type EnglishText43 = string; /** * If checked, this text will not be exported for localization. */ type Skip43 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText38 = string; /** * If checked, this requirement will be ignored in Scramble mode. */ type ScrambleExcluded = boolean; type Condition3 = { floor_tile: Floor; type?: "Standing on Tile Type"; dock_tile: Dock; terrain_tile: Terrain; } | { type?: "Room Size"; interior_tiles: InteriorTileArea; } | { type?: "Be Indoors"; } | { item_tally: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: Items48; value1?: number; }; type?: "Item Tally"; whole_building: WholeBuilding; } | { type?: "Number of Rooms"; num_rooms: NumberOfRooms; } | { source_items: SourceItems; type?: "Item Relationships"; distance: TileDistance; destination_items: TargetItems; whole_building: WholeBuilding1; }; type Floor = boolean; type Dock = boolean; type Terrain = boolean; /** * If true, the entire building will be checked instead of just the Artisan's room. */ type WholeBuilding = boolean; /** * If true, the entire building will be checked instead of just the Artisan's room. */ type WholeBuilding1 = boolean; type EnglishText44 = string; /** * If checked, this text will not be exported for localization. */ type Skip44 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText39 = string; type Egg = string; /** * A small sound the creature can make at random, for added personality. */ type ChirpSound = string; /** * The sound the pet will make when you open its UI (once it is hatched). */ type UIOpenSound = string; /** * How the actor animates while not actively moving. */ type StationaryVisuals10 = { animation?: Animation32; babbler?: Babbler69; style?: "Stand"; } | { z_baseline: BaselineAltitudePixels21; style: "Fly"; z_sine?: AltitudeSineWave21; flaps?: FlappingVerticalMovements21; animation?: Animation33; babbler?: Babbler70; }; /** * Defaults to 'idle. */ type Animation32 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler69 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels21 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed24 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude22 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds21 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance21 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds21 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation33 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler70 = string; /** * Relative to the global movement speed. */ type MovementSpeed11 = number; type MovementVisuals11 = { hop_speed: HopVerticalSpeed11; hop_anticipation?: HopAnticipationSeconds11; hop_followthrough?: PostHopFollowthroughSeconds11; style: "Hop"; animation?: HopAnimationName11; babbler?: Babbler71; } | { animation?: RunAnimationName11; babbler?: Babbler72; run_vertical_speed: RunVerticalBounceSpeed11; smoke_bones?: SmokePoofBones11; style: "Run"; } | { animation?: CrawlAnimationName11; babbler?: Babbler73; style: "Crawl"; } | { z_baseline: BaselineAltitudePixels22; style: "Fly"; z_sine?: AltitudeSineWave22; flaps?: FlappingVerticalMovements22; animation?: Animation34; babbler?: Babbler74; }; /** * As a percentage of base gravity. This is fairly sensitive. */ type HopVerticalSpeed11 = number; /** * How long to hold before rising off the ground, to make room for a pre-hop animation. */ type HopAnticipationSeconds11 = number; /** * How long to hold after landing on the ground from a hop, to make room for animations. */ type PostHopFollowthroughSeconds11 = number; /** * Defaults to 'hop' but can be overridden. */ type HopAnimationName11 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler71 = string; /** * Defaults to 'run' but can be overridden. */ type RunAnimationName11 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler72 = string; /** * How fast the character should pop up off the ground with each leg movement. As a percentage of base gravity. This is fairly sensitive. */ type RunVerticalBounceSpeed11 = number; type BoneName11 = string; /** * Defaults to 'crawl' but can be overridden. */ type CrawlAnimationName11 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler73 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels22 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed25 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude23 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds22 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance22 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds22 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation34 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler74 = string; type EnglishText45 = string; /** * If checked, this text will not be exported for localization. */ type Skip45 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText40 = string; /** * The sound the pet will make when you tell it to begin following you. */ type FollowSound = string; /** * This is to show the preview image in the Game Changer. */ type PreviewSkin = string; type Ability7 = string; /** * How the actor animates while not actively moving. */ type StationaryVisuals11 = { animation?: Animation35; babbler?: Babbler75; style?: "Stand"; } | { z_baseline: BaselineAltitudePixels23; style: "Fly"; z_sine?: AltitudeSineWave23; flaps?: FlappingVerticalMovements23; animation?: Animation36; babbler?: Babbler76; }; /** * Defaults to 'idle. */ type Animation35 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler75 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels23 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed26 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude24 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds23 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance23 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds23 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation36 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler76 = string; /** * Relative to the global movement speed. */ type MovementSpeed12 = number; type MovementVisuals12 = { hop_speed: HopVerticalSpeed12; hop_anticipation?: HopAnticipationSeconds12; hop_followthrough?: PostHopFollowthroughSeconds12; style: "Hop"; animation?: HopAnimationName12; babbler?: Babbler77; } | { animation?: RunAnimationName12; babbler?: Babbler78; run_vertical_speed: RunVerticalBounceSpeed12; smoke_bones?: SmokePoofBones12; style: "Run"; } | { animation?: CrawlAnimationName12; babbler?: Babbler79; style: "Crawl"; } | { z_baseline: BaselineAltitudePixels24; style: "Fly"; z_sine?: AltitudeSineWave24; flaps?: FlappingVerticalMovements24; animation?: Animation37; babbler?: Babbler80; }; /** * As a percentage of base gravity. This is fairly sensitive. */ type HopVerticalSpeed12 = number; /** * How long to hold before rising off the ground, to make room for a pre-hop animation. */ type HopAnticipationSeconds12 = number; /** * How long to hold after landing on the ground from a hop, to make room for animations. */ type PostHopFollowthroughSeconds12 = number; /** * Defaults to 'hop' but can be overridden. */ type HopAnimationName12 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler77 = string; /** * Defaults to 'run' but can be overridden. */ type RunAnimationName12 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler78 = string; /** * How fast the character should pop up off the ground with each leg movement. As a percentage of base gravity. This is fairly sensitive. */ type RunVerticalBounceSpeed12 = number; type BoneName12 = string; /** * Defaults to 'crawl' but can be overridden. */ type CrawlAnimationName12 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler79 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels24 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed27 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude25 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds24 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance24 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds24 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation37 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler80 = string; type MinSeconds4 = number; type MaxSeconds4 = number; /** * If checked, the pet will be unable to use their attack unless they can find a path to the target. */ type AbilityRequiresMelee = boolean; /** * The sound the pet will make when its ability is activated. */ type AbilityActivationSound = string; type EnglishText46 = string; /** * If checked, this text will not be exported for localization. */ type Skip46 = boolean; type EnglishText47 = string; /** * If checked, this text will not be exported for localization. */ type Skip47 = boolean; /** * If false, the object will always render itself at its normal color and won't be darkened or brightened by lighting. */ type UseLighting10 = boolean; type Baby = number; type Embiggened = number; type Stat = string; /** * Whether this buff changes this stat additively or multiplicatively. */ type ModifierStyle = "Add" | "Multiply"; type Mastery = string; type MasteryDeactivatesSynergy = boolean; type UIIcon13 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup17 = string; type AbilityCooldownSeconds = number; /** * Whether this item can be scrambled in Scramble Mode. */ type CanScramble = boolean; type Height8 = number; type Width8 = number; /** * The sound the pet will make when you tell it to go back to its nest. */ type StopFollowingSound = string; type Scale3 = number; type SkinName = string; /** * The icon that will represent this appearance in the pet interface. */ type Icon4 = string; /** * The order in which this pet will appear in the GC sidebar. */ type SortOrder1 = number; type Green36 = number; type Red36 = number; type Blue36 = number; type WorldSprite13 = string; /** * This enablement will be met if the pet is at least at this stage of growth. */ type Stage = "Baby" | "Adult" | "Embiggened"; /** * If checked, this ability will be enabled when the stage and mastery requirements are met. If unchecked, the ability will be disabled if the criteria are met. */ type Enables = boolean; /** * This enablement will be met if this mastery is active. */ type Mastery1 = string; type Ability9 = string; /** * How the actor animates while not actively moving. */ type StationaryVisuals12 = { animation?: Animation38; babbler?: Babbler81; style?: "Stand"; } | { z_baseline: BaselineAltitudePixels25; style: "Fly"; z_sine?: AltitudeSineWave25; flaps?: FlappingVerticalMovements25; animation?: Animation39; babbler?: Babbler82; }; /** * Defaults to 'idle. */ type Animation38 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler81 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels25 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed28 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude26 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds25 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance25 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds25 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation39 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler82 = string; /** * Relative to the global movement speed. */ type MovementSpeed13 = number; type MovementVisuals13 = { hop_speed: HopVerticalSpeed13; hop_anticipation?: HopAnticipationSeconds13; hop_followthrough?: PostHopFollowthroughSeconds13; style: "Hop"; animation?: HopAnimationName13; babbler?: Babbler83; } | { animation?: RunAnimationName13; babbler?: Babbler84; run_vertical_speed: RunVerticalBounceSpeed13; smoke_bones?: SmokePoofBones13; style: "Run"; } | { animation?: CrawlAnimationName13; babbler?: Babbler85; style: "Crawl"; } | { z_baseline: BaselineAltitudePixels26; style: "Fly"; z_sine?: AltitudeSineWave26; flaps?: FlappingVerticalMovements26; animation?: Animation40; babbler?: Babbler86; }; /** * As a percentage of base gravity. This is fairly sensitive. */ type HopVerticalSpeed13 = number; /** * How long to hold before rising off the ground, to make room for a pre-hop animation. */ type HopAnticipationSeconds13 = number; /** * How long to hold after landing on the ground from a hop, to make room for animations. */ type PostHopFollowthroughSeconds13 = number; /** * Defaults to 'hop' but can be overridden. */ type HopAnimationName13 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler83 = string; /** * Defaults to 'run' but can be overridden. */ type RunAnimationName13 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler84 = string; /** * How fast the character should pop up off the ground with each leg movement. As a percentage of base gravity. This is fairly sensitive. */ type RunVerticalBounceSpeed13 = number; type BoneName13 = string; /** * Defaults to 'crawl' but can be overridden. */ type CrawlAnimationName13 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler85 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels26 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed29 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude27 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds26 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance26 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds26 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation40 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler86 = string; type MinSeconds5 = number; type MaxSeconds5 = number; /** * Who the creature will attempt to cast this ability on. */ type Target = "Enemy" | "Player"; /** * If checked, this ability fall back to Enabled if no 'Enablement' criteria are met. If unchecked, it will default to disabled. */ type EnabledByDefault = boolean; type EnglishText48 = string; /** * If checked, this text will not be exported for localization. */ type Skip48 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText41 = string; /** * This chance only applies if the Insight is fully researched (it doesn't apply point by point if the Insight has multiple points. */ type AddedChance = number; type Insight8 = string; type EnglishText49 = string; /** * If checked, this text will not be exported for localization. */ type Skip49 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText42 = string; /** * If false, the object will always render itself at its normal color and won't be darkened or brightened by lighting. */ type UseLighting11 = boolean; /** * How many times this seedpack will regrow into the target plant after it is first planted. */ type NumberOfRegrows = number; type RegrowsPerPoint = number; type Insight9 = string; /** * The baseline chance for a fertilized seedpack of this type to turn into a 'shiny' version of the plant. This opens access to bonus loot groups. */ type ShinyChance = number; type MinutesToGrow = number; type WorldSprite14 = string; type FreeRegrowInsight = string; /** * Every time the seed pack grows up, it will have this chance to not consume a Regrow. */ type FreeRegrowChance = number; type UIIcon14 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup18 = string; type GardenBed1 = string; type GrowsInto = string; type ResearchNode20 = string; type ChangePerPoint24 = number; /** * What workstation the player must be near to craft this recipe. */ type Station10 = string; /** * Change this number to increase or decrease the number of materials required to craft this item. */ type EffortModifier15 = number; type UnlockedBy25 = string; type OutputQuantity10 = number; type ResearchNode21 = string; type ChangePerPoint25 = number; type Style10 = "Additive" | "Multiplicative"; type EnglishText50 = string; /** * If checked, this text will not be exported for localization. */ type Skip50 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText43 = string; /** * How much the regrowth time should be adjusted for each point invested in the Insight. */ type ChangePerPoint26 = number; type Insight10 = string; type EnglishText51 = string; /** * If checked, this text will not be exported for localization. */ type Skip51 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText44 = string; type ArmorType = string; /** * A text string used to choose which image to display. */ type SpineKeyword = string; /** * Overrides the default collection jingle when picking up this item. */ type JingleOverride2 = string; /** * A number that is connected to the relative power level of this thing. */ type Level4 = number; type UIIcon15 = string; type EquipmentSet3 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup19 = string; /** * The sound this item makes when being placed in the inventory. */ type InventorySound = string; type ResearchNode22 = string; type ChangePerPoint27 = number; /** * What workstation the player must be near to craft this recipe. */ type Station11 = string; /** * Change this number to increase or decrease the number of materials required to craft this item. */ type EffortModifier16 = number; type UnlockedBy26 = string; type EnglishText52 = string; /** * If checked, this text will not be exported for localization. */ type Skip52 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText45 = string; type EnglishText53 = string; /** * If checked, this text will not be exported for localization. */ type Skip53 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText46 = string; /** * If true, only one of this item will drop for the player. */ type Singleton2 = boolean; /** * Overrides the default collection jingle when picking up this item. */ type JingleOverride3 = string; type UIIcon16 = string; type EquipmentSet4 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup20 = string; /** * The sound this item makes when being placed in the inventory. */ type InventorySound1 = string; type ResearchNode23 = string; type ChangePerPoint28 = number; /** * What workstation the player must be near to craft this recipe. */ type Station12 = string; /** * Change this number to increase or decrease the number of materials required to craft this item. */ type EffortModifier17 = number; type UnlockedBy27 = string; type IgnoreInLevelViewer3 = boolean; /** * Whether this item can be scrambled in Scramble Mode. */ type CanScramble1 = boolean; /** * If false, this item will be shown in the Special Items section of the Compendium. Defaults to true. */ type ShowInSpecialItems = boolean; type Min43 = number; type Max43 = number; /** * If true, this item will always be visible on the minimap. Useful for items spawned by scene transitions that the player must pick up. */ type AlwaysShowOnMap1 = boolean; /** * A number that is connected to the relative power level of this thing. */ type Level5 = number; type EnglishText54 = string; /** * If checked, this text will not be exported for localization. */ type Skip54 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText47 = string; type ScaleModifier5 = number; /** * If set, this game element will adjust its level to match the player's level at the time it is spawned, plus this number. */ type RelativeLevel3 = number; type EnglishText55 = string; /** * If checked, this text will not be exported for localization. */ type Skip55 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText48 = string; /** * A unique sound to be played when this item is collected into your body. */ type CollectionSound3 = string; /** * By default, wieldables cannot be stacked in the inventory. To conserve space, you can make some wieldables stackable if they are consumable. */ type Stackable = boolean; /** * The sound this thing makes when used (fired, swung, etc). */ type UseSound = string; /** * The sound this item makes when brought out into the player's hand. */ type WieldSound = string; /** * By default, we will attempt to use the mote ID. */ type SpineAttachmentName = string; /** * If true, only one of this item will drop for the player. */ type Singleton3 = boolean; /** * If set, dynamically-spawned versions of this item will disappear after this much time has passed since it was created. */ type DynamicExpirationMinutes2 = number; /** * Overrides the default collection jingle when picking up this item. */ type JingleOverride4 = string; type EquipmentSet5 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup21 = string; type UIIcon17 = string; /** * The sound this item makes when being placed in the inventory. */ type InventorySound2 = string; type ResearchNode24 = string; type ChangePerPoint29 = number; /** * What workstation the player must be near to craft this recipe. */ type Station13 = string; /** * Change this number to increase or decrease the number of materials required to craft this item. */ type EffortModifier18 = number; type UnlockedBy28 = string; type OutputQuantity11 = number; type ResearchNode25 = string; type ChangePerPoint30 = number; type Style11 = "Additive" | "Multiplicative"; /** * By default, wieldable items require the player to manually pick them up off the ground. You can uncheck this box to make the items auto-pickup instead. */ type ManualPickup1 = boolean; type IgnoreInLevelViewer4 = boolean; /** * Whether this item can be scrambled in Scramble Mode. */ type CanScramble2 = boolean; type Min44 = number; type Max44 = number; /** * If false, this item will be shown in the Special Items section of the Compendium. Defaults to true. */ type ShowInSpecialItems1 = boolean; type Type1 = string; type WorldSprite15 = string; type Ability10 = string; /** * A number that is connected to the relative power level of this thing. */ type Level6 = number; type EnglishText56 = string; /** * If checked, this text will not be exported for localization. */ type Skip56 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText49 = string; /** * If this is a fishing pole, how many fish it pulls up per cast. */ type FishingPower = number; type EnglishText57 = string; /** * If checked, this text will not be exported for localization. */ type Skip57 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText50 = string; type Effect = { type?: "Heal"; unlocked_by?: UnlockedBy29; healing_percentage: Healing; } | { type?: "Buff"; buff: BuffToApply; unlocked_by?: UnlockedBy31; healing_percentage?: Healing1; }; type UnlockedBy30 = string; type EnglishText58 = string; /** * If checked, this text will not be exported for localization. */ type Skip58 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText51 = string; /** * The healing amount will be automatically calculated based on the level of the item. */ type Healing = number; type BuffToApply = string; type UnlockedBy32 = string; type EnglishText59 = string; /** * If checked, this text will not be exported for localization. */ type Skip59 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText52 = string; /** * If the buff can heal, heal with this amount. The healing amount will be automatically calculated based on the level of the item. */ type Healing1 = number; /** * If set, dynamically-spawned versions of this item will disappear after this much time has passed since it was created. */ type DynamicExpirationMinutes3 = number; type Type2 = string; /** * The sound this item makes when consumed. */ type ConsumeSound = string; type WorldSprite16 = string; /** * A number that is connected to the relative power level of this thing. */ type Level7 = number; type UIIcon18 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup22 = string; /** * The sound this item makes when being placed in the inventory. */ type InventorySound3 = string; type ResearchNode26 = string; type ChangePerPoint31 = number; /** * What workstation the player must be near to craft this recipe. */ type Station14 = string; /** * Change this number to increase or decrease the number of materials required to craft this item. */ type EffortModifier19 = number; type UnlockedBy33 = string; type OutputQuantity12 = number; type ResearchNode27 = string; type ChangePerPoint32 = number; type Style12 = "Additive" | "Multiplicative"; type EnglishText60 = string; /** * If checked, this text will not be exported for localization. */ type Skip60 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText53 = string; type Green37 = number; type Red37 = number; type Blue37 = number; type State5 = string; /** * Relative to the object's origin */ type XOffset2 = number; /** * If set, the particle will anchor to this spine bone, and the X and Y offsets will be relative to the bone's position */ type SpineBone2 = string; /** * Relative to the object's origin */ type YOffset11 = number; /** * If set, the particle system will be drawn behind the object */ type Behind2 = boolean; type EmitterScale4 = number; type ParticleSystem4 = string; /** * Whether the player walks over the top of this item. */ type Underfoot2 = boolean; /** * If false, the object will always render itself at its normal color and won't be darkened or brightened by lighting. */ type UseLighting12 = boolean; type Object4 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup23 = string; /** * Whether the item should be X-flipped randomly when placed. */ type Flippable6 = boolean; /** * If true, this resource will snap to the grid when placed. Only applies to non-solid objects. */ type GridSnapping3 = boolean; type WorldSprite17 = string; type EnglishText61 = string; /** * If checked, this text will not be exported for localization. */ type Skip61 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText54 = string; /** * If true, this item will prevent abilities from targeting things through it via telegraphs. */ type BlocksAbilities1 = boolean; type ScaleModifier6 = number; /** * If set, this game element will adjust its level to match the player's level at the time it is spawned, plus this number. */ type RelativeLevel4 = number; /** * If the game element has a relative level, this is the minimum it can be. */ type RelativeLevelMinimum3 = number; type EnglishText62 = string; /** * If checked, this text will not be exported for localization. */ type Skip62 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText55 = string; type SpineSkin3 = string; /** * If set, dynamically-spawned versions of this item will disappear after this much time has passed since it was created. */ type DynamicExpirationMinutes4 = number; type UIIcon19 = string; /** * If set to true, this world element will respawn once it has been destroyed. Defaults to false if unset. */ type Respawnable1 = boolean; type Green38 = number; type Red38 = number; type Blue38 = number; /** * If true, this item stop rendering while underneath a building's roof. */ type HideUnderRoof4 = boolean; /** * The smallest version of this resource. Used for automatic editor merging. */ type AutoMergeRootItem1 = string; /** * If false, this item can be placed in water. */ type RequiresLand3 = boolean; /** * If true, this item can be zapped by the Zapper. */ type Zappable1 = boolean; /** * When first spawned in the world, this thing can randomly scale itself down (to a minimum) to add variety. This scale should be preserved between sessions, so this will only apply to newly-created instances of this asset. */ type RandomScalingMinimum2 = number; type KnowledgeGroup2 = string; /** * If true, this item will randomly select a skin from its available skins when spawned. */ type RandomizedSpineSkin1 = boolean; /** * A number that is connected to the relative power level of this thing. */ type Level8 = number; /** * Whether this world element can be struck by bullet-style projectiles. Solid world elements will always be struck by bullets. */ type BulletInteraction2 = "All Bullets" | "Passthrough Only" | "No Bullets"; /** * If true, this item will not be rendered, but it will still exist and perform mechanics. */ type Invisible = boolean; /** * If set, the subimages will be modifiable via the Editor. Doesn't apply to world elements using Spine sprites. */ type EditableSubimages = boolean; /** * If using a Spine sprite, the environmental object will try to play an animation with this name when it is spawned. */ type SpineIdle2 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler87 = string; /** * The category this item will be placed in when using the editor. Defaults to 'Structures'. */ type EditorCategoryOverride = string; type NameInternal4 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup24 = string; type Height9 = number; type Width9 = number; type BuildModePlacementSound = string; type BuildModePickupSound = string; /** * Plays when receiving damage that has been mitigated. */ type Minor3 = string; /** * Plays when receiving damage that hasn't been mitigated. */ type Major3 = string; type Chance5 = number; type Green39 = number; type Red39 = number; type Blue39 = number; type WorldSprite18 = string; type UIIcon20 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup25 = string; type Height10 = number; type Width10 = number; type EnglishText63 = string; /** * If checked, this text will not be exported for localization. */ type Skip63 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText56 = string; /** * If set, Juicebox will follow the player once this thing is finished. */ type FollowingUnlock = string; type Height11 = number; type Width11 = number; type WorldSprite19 = string; type Green40 = number; type Red40 = number; type Blue40 = number; type UIIcon21 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup26 = string; type EnglishText64 = string; /** * If checked, this text will not be exported for localization. */ type Skip64 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText57 = string; /** * If false, the object will always render itself at its normal color and won't be darkened or brightened by lighting. */ type UseLighting13 = boolean; /** * If true, this item stop rendering while underneath a building's roof. */ type HideUnderRoof5 = boolean; type Object5 = string; /** * If false, this item can be placed in water. */ type RequiresLand4 = boolean; /** * When first spawned in the world, this thing can randomly scale itself down (to a minimum) to add variety. This scale should be preserved between sessions, so this will only apply to newly-created instances of this asset. */ type RandomScalingMinimum3 = number; type WorldSprite20 = string; type UIIcon22 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup27 = string; type EnglishText65 = string; /** * If checked, this text will not be exported for localization. */ type Skip65 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText58 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler88 = string; /** * A unique character that lives in the game world. */ type Character1 = Character2 & Character3; /** * If true, this item will not appear in the world editor. */ type EditorExcluded2 = boolean; type Species = string; /** * Higher % means higher pitch. Pitch also affects audio playback speed. */ type VocalPitch = number; /** * A handful of words for a quick overview of the character */ type Brief = string; type Pronouns = string; type Personality = string; /** * Normally, characters have a 20 second cooldown between initiating chats. This can be overridden here. */ type ChatCooldownSecondsOverride = number; type Green41 = number; type Red41 = number; type Blue41 = number; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup28 = string; type EnglishText66 = string; /** * If checked, this text will not be exported for localization. */ type Skip66 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText59 = string; type TopicNameInternal = string; type GroupNameInternal = string; type EnglishText67 = string; /** * If checked, this text will not be exported for localization. */ type Skip67 = boolean; type Emoji2 = string; type Requirement1 = { style: "Quest"; quest: QuestToCheck4; quest_status: QuestStatus4; } | { item: Item5; style: "Equipped"; } | { time: Time1; style: "Time"; } | { items_owned: Items49; style: "Items Owned"; } | { insight: Insight11; style: "Insight"; insight_status: InsightStatus1; } | { style: "Artisan Following"; following: Following8; artisan?: Artisan1; } | { comfort: Comfort1; comfort_status: ComfortStatus1; style: "Comfort"; } | { comparisons: InventoryEvaluation1; style: "Inventory Evaluation"; } | { style: "Area"; area: AreaToCheck1; item_id: Entity1; exclusive?: Exclude40; } | { teleporter_area?: TeleporterArea1; teleporter_active: ActiveState1; style: "Teleporter Active"; } | { require_all: RequireAll46; invert: Invert1; group_requirements: Requirements2; style: "Requirement Group"; } | { stage?: PetStage2; following?: Following9; pet?: Pet6; style: "Pet"; } | { style: "Boss Defeated"; boss: Boss5; } | { infusion: Infusion1; infusion_status: InfusionStatus1; style: "Infusion"; } | { mutators: Mutators1; require_all_mutators?: RequireAll47; style: "Mutators"; }; /** * The quest whose status we are querying. */ type QuestToCheck4 = string; type QuestStatus4 = "Complete" | "Started" | "Not Started"; /** * The player must be wearing this item. */ type Item5 = string; type Time1 = "Day" | "Night"; type Quantity54 = number; type Insight11 = string; type InsightStatus1 = "Complete" | "Available" | "Locked"; /** * If false, then this will only trigger if the artisan is not following. */ type Following8 = boolean; /** * Leave unset to query whether any artisans are either following or not following. Otherwise, this will query the specific artisan you have chosen. */ type Artisan1 = string; type Comfort1 = string; type ComfortStatus1 = "Complete" | "Available"; type Item6 = string; type Quantity55 = number; type AreaToCheck1 = string; /** * The entity that must be in the area for the requirement to pass. */ type Entity1 = string; /** * If true, then this requirement will only pass if the entity is NOT in the area. */ type Exclude40 = boolean; /** * If not set, this requirement will check for 'any' teleporters. */ type TeleporterArea1 = string; /** * The teleporter must be in this state. */ type ActiveState1 = boolean; /** * If set to false, then this requirement group will pass if any of its requirements are met. */ type RequireAll46 = boolean; /** * If set, then this requirement group will 'pass' if its requirements are NOT met. */ type Invert1 = boolean; /** * If set, then this will only trigger if the pet's following state matches this. */ type Following9 = boolean; /** * If unset, then this requirement will be met if any of your pets match it. */ type Pet6 = string; type Boss5 = string; type Infusion1 = string; type InfusionStatus1 = "Complete" | "Available" | "Locked"; type Mutator1 = "Scramble" | "Hardcore"; type Active1 = boolean; /** * If true, all of the mutators must match what is set here. Otherwise, any of them must match. */ type RequireAll47 = boolean; type Character3 = { scale: Scale4; spine_attachments?: SpineAttachments; spine_skin: SpineSkin4; species?: "species_tendraam"; face: Face; front_horn: FrontHorn; back_horn: BackHorn; head_scale: HeadScale; } | { species?: "species_quadropus"; scale: Scale5; spine_skin: SpineSkin5; } | { species: "species_brubus"; scale: Scale6; spine_attachments: SpineAttachments1; head_scale: HeadScale1; spine_skin: SpineSkin6; } | { horn_scale: HornScale; scale: Scale7; spine_attachments: SpineAttachments2; spine_skin: SpineSkin7; species: "species_polari"; head_scale: HeadScale2; } | { species?: "species_cultist"; scale: Scale8; }; type Scale4 = number; type Bag = string; type Wieldable1 = string; type Mask = string; type Necklace = string; type SpineSkin4 = string; type Face = "Cute" | "Angsty" | "Strong" | "Leafy" | "Drab"; type FrontHorn = "Slope Dope" | "Tall Bull" | "Leia Blossom" | "Freshly Shorn" | "Yak Flex"; type BackHorn = "Slope Dope" | "Tall Bull" | "Leia Blossom" | "Freshly Shorn" | "Yak Flex"; type HeadScale = number; type Scale5 = number; type SpineSkin5 = string; type Scale6 = number; type Backpack = string; type Necklace1 = string; type Hat = string; type FrillJaw = string; type FrillForehead = string; type Eyes = string; type Beak = string; type Armwrap = string; type HeadScale1 = number; type SpineSkin6 = string; type HornScale = number; type Scale7 = number; type Backaccessory = string; type Markings = string; type Horn = string; type Jaw = string; type Melon = string; type Wield = string; type Eyes1 = string; type SpineSkin7 = string; type HeadScale2 = number; type Scale8 = number; /** * Whether items that have this tag are able to take damage. */ type Invulnerable = boolean; /** * Any items with this tag will also be given the parent tag. E.g. 'Sword' tag would have a parent tag of 'Weapon,' because all swords are weapons. */ type ParentTag = string; /** * Recipes with this tag will go into this category. */ type RecipeCategory = string; type UIIcon23 = string; /** * If an item has multiple tags, the highest priority tag will be displayed on interfaces. For example, you may want something with 'Plant' and 'Component' to just always display 'Component.' In this case, the 'Component' tag should have a higher priority. */ type TagPriority = number; /** * The sound this item makes when being placed in the inventory. */ type InventorySound4 = string; /** * If unchecked, this tag will not be present on items in the game world. Useful for tags that only exist to aggregate other tags for editor purposes. */ type SettableOnItems = boolean; type EnglishText68 = string; /** * If checked, this text will not be exported for localization. */ type Skip68 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText60 = string; /** * Items with this tag will multiply the baseline crafting effort by this amount when calculating their component requirements. */ type CraftingEffortMultiplier = number; /** * If true, items with this tag will be visible in the Build Mode selector and placeable in Build Mode. */ type BuildModeAccessible = boolean; /** * Items with this tag will appear in this editor category. */ type EditorCategory = string; /** * How many times this item should be crafted to gain the first crafting efficiency level. */ type NumCraftsForFirstSkillLevel = number; /** * Whether items that have this tag will respawn after destroyed in the world. */ type Respawnable2 = boolean; type Name30 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup29 = string; type EnglishText69 = string; /** * If checked, this text will not be exported for localization. */ type Skip69 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText61 = string; /** * What this insight is unlocked by (if anything) */ type UnlockedBy34 = string; /** * If set, this insight will not be researchable in the demo version of the game. */ type DemoBlocked = boolean; /** * Adjust the baseline time to research this insight by changing this number. E.g. a multiplier of 0.5 will cut the research time in half. */ type TimeModifier = number; type Icon5 = string; /** * Change this number to increase or decrease the number of materials required to research this Insight. */ type EffortModifier20 = number; type Artisan2 = string; type EnglishText70 = string; /** * If checked, this text will not be exported for localization. */ type Skip70 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText62 = string; /** * The maximum number of points that can be invested into this Insight. */ type MaximumPoints = number; /** * If true, this quest will not be shown in the progression map. */ type IgnoreInProgressionMap3 = boolean; type QuestMoment = { speech: { text: { text: EnglishText71; skip?: Skip71; }; speaker: Speaker1; emotion?: Emoji3; }; dialogue_sound_override?: DialogueSoundOverride; fixed_duration?: FixedDurationSeconds; requirements?: MomentRequirements; style: "Dialogue"; } | { emotes: Emotes1; fixed_duration?: FixedDurationSeconds1; requirements?: MomentRequirements; style: "Emote"; } | { style: "Gain Item"; items: ItemsToGain; bonus?: ItemsAreBonus; requirements?: MomentRequirements; } | { style: "Pin"; pin: WhatToPin; } | { style: "Artisan Follow"; artisan: Buddy3; } | { style: "Drop Item"; drops: Drops; bonus?: ItemsAreBonus1; requirements?: MomentRequirements; } | { style: "Artisan Stop Following"; artisan: Artisan3; } | { area: Area1; style: "Set Area Discovered"; } | { style: "Close a Quest"; quest_to_close: Quest1; requirements?: MomentRequirements; } | { pause_duration: PauseSeconds1; requirements?: MomentRequirements; style: "Pause"; } | { camera_target: CameraTargetEntity1; style: "Camera Target Set"; } | { style: "Camera Target Unset"; } | { style: "Camera Zoom"; zoom_amount: ZoomAmount1; } | { music: Music1; style: "Music Begin"; } | { style: "Music End"; } | { look_targets: LookTargets1; requirements?: MomentRequirements; style: "Look Target Set"; } | { style: "Look Target Unset"; requirements?: MomentRequirements; actors?: Actors1; } | { recipe_to_archive: RecipeToArchive; requirements?: MomentRequirements; style: "Archive Recipe"; } | { area_id: Area2; requirements?: MomentRequirements; style: "Unlock Teleporter"; }; type EnglishText71 = string; /** * If checked, this text will not be exported for localization. */ type Skip71 = boolean; type Speaker1 = string; type Emoji3 = string; /** * If set, this sound will play instead of the default dialogue sound. */ type DialogueSoundOverride = string; /** * If set, this moment will be unskippable and will last for a specific amount of time. */ type FixedDurationSeconds = number; type Emoji4 = string; type Character4 = string; /** * If set, this moment will be unskippable and will last for a specific amount of time. */ type FixedDurationSeconds1 = number; type Quantity56 = number; /** * If checked, these items will not be included in the progression map. */ type ItemsAreBonus = boolean; type WhatToPin = string; type Buddy3 = string; type Quantity57 = number; type Item7 = string; /** * Who or what will drop these items. If not present, the items will fly out of the player. */ type Dropper = string; /** * If checked, these items will not be included in the progression map. */ type ItemsAreBonus1 = boolean; type Artisan3 = string; type Area1 = string; /** * This quest will be set as 'complete', regardless of whether it has been started or not. Its end moments will be skipped. */ type Quest1 = string; /** * How long to pause before moving to the next quest moment. */ type PauseSeconds1 = number; type CameraTargetEntity1 = string; /** * Higher number means you can see more. */ type ZoomAmount1 = number; type Music1 = string; type LooksAt1 = string; type RecipeToArchive = string; /** * The teleporter will be unlocked in this area. */ type Area2 = string; type Blocked = "Yep"; type EnglishText72 = string; /** * If checked, this text will not be exported for localization. */ type Skip72 = boolean; /** * If the requirements are met, this interactor will be shown on the world map. */ type ShowOnMap = boolean; /** * If set, the quest giver must be in the specified area. */ type AreaRequirement = string; /** * The interactor can optionally check for distance to an entity other than the player. */ type AutomaticInteractionTarget = string; /** * How far away from the interaction target (in grid spaces) the quest giver will automatically begin speaking. */ type AutomaticInteractionProximity = number; /** * Who or what must be present for this quest to advance. */ type Initiator = string; /** * For automatic interactions, whether this interaction will only occur if it is in the same room as the interaction target. */ type RequireSameRoom = boolean; type EnglishText73 = string; /** * If checked, this text will not be exported for localization. */ type Skip73 = boolean; /** * If the requirements are met, this interactor will be shown on the world map. */ type ShowOnMap1 = boolean; /** * If set, the quest giver must be in the specified area. */ type AreaRequirement1 = string; /** * The interactor can optionally check for distance to an entity other than the player. */ type AutomaticInteractionTarget1 = string; /** * How far away from the interaction target (in grid spaces) the quest giver will automatically begin speaking. */ type AutomaticInteractionProximity1 = number; /** * Who or what must be present for this quest to advance. */ type Initiator1 = string; /** * For automatic interactions, whether this interaction will only occur if it is in the same room as the interaction target. */ type RequireSameRoom1 = boolean; type EnglishText74 = string; /** * If checked, this text will not be exported for localization. */ type Skip74 = boolean; type QuestMarker1 = string; /** * If 0, this text will just display next to a point on the map. Otherwise, it will appear inside a radius. */ type RadiusGridSpaces = number; /** * If checked, this quest will not be able to be accepted by the player or completed in the game (even retroactively). */ type Blocked1 = boolean; type EnglishText75 = string; /** * If checked, this text will not be exported for localization. */ type Skip75 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText63 = string; /** * If set, this sprite will be drawn alongside the quest marker text. */ type Sprite4 = string; /** * If set, the text will only appear if the player is within this distance of the quest marker. */ type Proximity = number; type Green42 = number; type Red42 = number; type Blue42 = number; type QuestMarker2 = string; type Storyline = string; type Objective = { items: Items50; tracking?: TrackProgress; style: "Turn-in Items"; } | { ability_sources?: AbilitySources; tracking_text?: ProgressTrackingDescription; objective_id: ObjectiveID; ability_quantity?: NumberOfTimes; ability: AbilityToUse; style: "Ability Usage"; ability_requirements?: AbilityUsageRequirements; progress_infostream?: ProgressInfostream; ability_targets?: TargetS; } | { destroy_quantity?: Quantity62; style: "Destroy"; require_player: RequirePlayerInvolvement; destroy_sources?: DestructionSources; destroy_requirements?: DestructionRequirements; destroy_targets: TargetS1; target_home?: TargetHome; exclusive_home?: ExcludeHome; destroy_target_scene?: TargetScene; objective_id: ObjectiveID1; progress_infostream?: ProgressInfostream1; tracking_text?: ProgressTrackingDescription1; } | { objective_id: ObjectiveID2; consume_items: ItemsToConsume; style: "Consume Item"; consume_quantity: Quantity68; progress_infostream?: ProgressInfostream2; tracking_text?: ProgressTrackingDescription2; } | { objective_id: ObjectiveID3; interface: Interface; style: "Open Interface"; } | { tracking?: TrackProgress1; map_markers?: MapMarkers1; tracking_text?: ProgressTrackingDescription3; objective_id: ObjectiveID4; style: "Place Item"; placement_quantity: Quantity69; placement_area?: RequiredArea; placement_item: Item10; marker_proximity?: QuestMarkerProximity; progress_infostream?: ProgressInfostream3; } | { objective_id: ObjectiveID5; style: "Craft Item"; craft_quantity: Quantity70; item_to_craft: ItemToCraft; tracking?: TrackProgress2; progress_infostream?: ProgressInfostream4; } | { style: "Get Custom Loot"; custom_loot: CustomLootDrops; show_in_progression_map?: ShowInProgressionMap; items: ItemsToDrop1; tracking?: TrackProgress3; } | { interact_quantity?: Quantity72; style: "Interact"; interact_text?: InteractionText; interact_color?: InteractionBarColor; interact_duration?: InteractionDuration; interact_targets: TargetS2; interact_sound?: InteractionFinishSound; interact_target_home?: TargetHome1; interact_target_scene?: TargetScene1; objective_id: ObjectiveID6; interact_requirements?: Requirements5; interact_outcomes?: InteractionOutcomes; progress_infostream?: ProgressInfostream5; tracking_text?: ProgressTrackingDescription4; } | { progress_infostream?: ProgressInfostream6; acquire_requirements?: AcquisitionRequirements; acquire_requirements_all?: AllRequirementsMustBeMet; objective_id: ObjectiveID7; style: "Acquire Item"; quantity: Quantity77; item: Item13; tracking?: TrackProgress4; } | { tracking_text?: ProgressTrackingDescription5; style: "Deal Damage"; damage_goal: Goal; damage_requires_player: RequirePlayerInvolvement1; damage_direct?: DirectDamage4; damage_crit?: CritRequirement; damage_abilities_used?: AbilitiesUsed2; objective_id: ObjectiveID8; damage_items_used?: ItemsUsed7; damage_types?: DamageTypes3; damage_targets?: DamageTargets; damage_target_home?: TargetHome2; damage_tracking_type: TrackingType; damage_exclusive_home?: ExcludeHome1; damage_target_scene?: TargetScene2; progress_infostream?: ProgressInfostream7; damage_sources?: DamageSources; }; /** * How many of this item to turn in. */ type Quantity58 = number; /** * If checked, this objective's progress will be tracked in the Quest log page. The quest must have a log summary for this to appear. */ type TrackProgress = boolean; type EnglishText76 = string; /** * If checked, this text will not be exported for localization. */ type Skip76 = boolean; /** * A unique number used to save and load this objective's progress to/from disk. */ type ObjectiveID = number; /** * How many times the ability must be used to meet the quest objective. */ type NumberOfTimes = number; /** * This ability must be used to meet the quest objective. */ type AbilityToUse = string; type AbilityUsageRequirement = { time: Time2; style: "Time"; } | { style: "Artisan Following"; following: Following10; artisan?: Artisan4; } | { item: Item8; style: "Equipped"; } | { items_owned: Items51; style: "Items Owned"; } | { exclusive?: Exclude41; item_id: Entity2; area: AreaToCheck2; style: "Area"; } | { stage?: PetStage3; following?: Following11; pet?: Pet7; style: "Pet"; }; type Time2 = "Day" | "Night"; /** * If false, then this will only trigger if the artisan is not following. */ type Following10 = boolean; /** * Leave unset to query whether any artisans are either following or not following. Otherwise, this will query the specific artisan you have chosen. */ type Artisan4 = string; /** * The player must be wearing this item. */ type Item8 = string; type Quantity59 = number; /** * If true, then this requirement will only pass if the entity is NOT in the area. */ type Exclude41 = boolean; /** * The entity that must be in the area for the requirement to pass. */ type Entity2 = string; type AreaToCheck2 = string; /** * If set, then this will only trigger if the pet's following state matches this. */ type Following11 = boolean; /** * If unset, then this requirement will be met if any of your pets match it. */ type Pet7 = string; /** * If set, a counter will pop up in the Infostream indicating your progress toward this objective as you increment it. */ type ProgressInfostream = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude42 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll48 = boolean; type Quantity60 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants38 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags38 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude43 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll49 = boolean; type Quantity61 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants39 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags39 = boolean; /** * How many things must be destroyed. */ type Quantity62 = number; /** * If checked, this will require the player (or something the player created/owns) to destroy the target. Otherwise, any kind of destruction will count. */ type RequirePlayerInvolvement = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude44 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll50 = boolean; type Quantity63 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants40 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags40 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude45 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll51 = boolean; type Quantity64 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants41 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags41 = boolean; type DestructionRequirement = { time: Time3; style: "Time"; } | { style: "Artisan Following"; following: Following12; artisan?: Artisan5; } | { item: Item9; style: "Equipped"; } | { ability: Ability11; style: "Ability Used"; } | { items_owned: Items56; style: "Items Owned"; } | { exclusive?: Exclude46; item_id: Entity3; area: AreaToCheck3; style: "Area"; } | { stage?: PetStage4; following?: Following13; pet?: Pet8; style: "Pet"; }; type Time3 = "Day" | "Night"; /** * If false, then this will only trigger if the artisan is not following. */ type Following12 = boolean; /** * Leave unset to query whether any artisans are either following or not following. Otherwise, this will query the specific artisan you have chosen. */ type Artisan5 = string; /** * The player must be wearing this item. */ type Item9 = string; /** * The destruction will only count if this ability is used to do it. */ type Ability11 = string; type Quantity65 = number; /** * If true, then this requirement will only pass if the entity is NOT in the area. */ type Exclude46 = boolean; /** * The entity that must be in the area for the requirement to pass. */ type Entity3 = string; type AreaToCheck3 = string; /** * If set, then this will only trigger if the pet's following state matches this. */ type Following13 = boolean; /** * If unset, then this requirement will be met if any of your pets match it. */ type Pet8 = string; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude47 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll52 = boolean; type Quantity66 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants42 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags42 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude48 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll53 = boolean; type Quantity67 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants43 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags43 = boolean; /** * If set, destruction will only count if the target is originally from this area, even if the target has wandered away. */ type TargetHome = string; /** * If checked, the target must be from somewhere other than the home area that is set. */ type ExcludeHome = boolean; /** * If set, destruction will only count if the target is from this scene. */ type TargetScene = string; /** * A unique number used to save and load this objective's progress to/from disk. */ type ObjectiveID1 = number; /** * If set, a counter will pop up in the Infostream indicating your progress toward this objective as you increment it. */ type ProgressInfostream1 = boolean; type EnglishText77 = string; /** * If checked, this text will not be exported for localization. */ type Skip77 = boolean; /** * A unique number used to save and load this objective's progress to/from disk. */ type ObjectiveID2 = number; /** * How many items must be consumed. */ type Quantity68 = number; /** * If set, a counter will pop up in the Infostream indicating your progress toward this objective as you increment it. */ type ProgressInfostream2 = boolean; type EnglishText78 = string; /** * If checked, this text will not be exported for localization. */ type Skip78 = boolean; /** * A unique number used to save and load this objective's progress to/from disk. */ type ObjectiveID3 = number; /** * Once the player has viewed this interface, the quest objective will be completed. */ type Interface = "Build Mode" | "Insights" | "Crafting" | "Comforts" | "Home" | "Death" | "Quests" | "Equipment" | "Map" | "Teleport List" | "Teleport Sequence" | "Pet" | "Death to Boss" | "Infinisuit"; /** * If checked, this objective's progress will be tracked in the Quest log page. The quest must have a log summary for this to appear. */ type TrackProgress1 = boolean; type EnglishText79 = string; /** * If checked, this text will not be exported for localization. */ type Skip79 = boolean; type QuestMarker3 = string; /** * If 0, this text will just display next to a point on the map. Otherwise, it will appear inside a radius. */ type RadiusGridSpaces1 = number; type EnglishText80 = string; /** * If checked, this text will not be exported for localization. */ type Skip80 = boolean; /** * A unique number used to save and load this objective's progress to/from disk. */ type ObjectiveID4 = number; /** * How many of this item must be placed. */ type Quantity69 = number; /** * Where this item must be placed. */ type RequiredArea = string; type Item10 = string; type ProximityGridSpaces = number; /** * If set, a counter will pop up in the Infostream indicating your progress toward this objective as you increment it. */ type ProgressInfostream3 = boolean; /** * A unique number used to save and load this objective's progress to/from disk. */ type ObjectiveID5 = number; /** * How many of this item must be crafted. */ type Quantity70 = number; type ItemToCraft = string; /** * If checked, this objective's progress will be tracked in the Quest log page. The quest must have a log summary for this to appear. */ type TrackProgress2 = boolean; /** * If set, a counter will pop up in the Infostream indicating your progress toward this objective as you increment it. */ type ProgressInfostream4 = boolean; /** * If true, this loot group will be considered a 'bonus' and will not be counted as part of the normal effort calculations. Custom loot drops from quests count as bonus loot by default. */ type ConsiderAsBonus2 = boolean; type Min45 = number; type Max45 = number; /** * When this loot group is able to drop. */ type TimeOfDay2 = "Always" | "Day" | "Night"; /** * What event will cause this loot to drop. */ type Trigger3 = "Death" | "Damage"; /** * The probability for this loot group to occur. */ type DropChance2 = number; type ShowInProgressionMap = boolean; /** * How many of this item will drop. Once the player has all of these items, this objective will be considered complete. */ type Quantity71 = number; /** * If checked, this objective's progress will be tracked in the Quest log page. The quest must have a log summary for this to appear. */ type TrackProgress3 = boolean; /** * How many times the player must perform this interaction. */ type Quantity72 = number; type EnglishText81 = string; /** * If checked, this text will not be exported for localization. */ type Skip81 = boolean; type Green43 = number; type Red43 = number; type Blue43 = number; /** * How long the player must interact with the target to complete this objective. */ type InteractionDuration = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude49 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll54 = boolean; type Quantity73 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants44 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags44 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude50 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll55 = boolean; type Quantity74 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants45 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags45 = boolean; /** * The sound that will play when the player finishes interacting with the target. */ type InteractionFinishSound = string; /** * If set, interaction will only count if the target is originally from this area, even if the target has wandered away. */ type TargetHome1 = string; /** * If set, interaction will only count if the target is in this scene. */ type TargetScene1 = string; /** * A unique number used to save and load this objective's progress to/from disk. */ type ObjectiveID6 = number; type QuestInteractionOutcome = { type: "Set Datafield"; datafield: Datafield5; value: Value2; } | { type: "Destroy"; } | { type: "Lose Items"; items: ItemsToLose; } | { type: "Pickup Item"; }; type Datafield5 = string; /** * The new value to set the datafield to. */ type Value2 = number; type Quantity75 = number; type Item11 = string; /** * If set, a counter will pop up in the Infostream indicating your progress toward this objective as you increment it. */ type ProgressInfostream5 = boolean; type EnglishText82 = string; /** * If checked, this text will not be exported for localization. */ type Skip82 = boolean; /** * If set, a counter will pop up in the Infostream indicating your progress toward this objective as you increment it. */ type ProgressInfostream6 = boolean; type AcquisitionRequirement = { time: Time4; style: "Time"; } | { style: "Artisan Following"; following: Following14; artisan?: Artisan6; } | { item: Item12; style: "Equipped"; } | { items_owned: Items61; style: "Items Owned"; } | { exclusive?: Exclude51; item_id: Entity4; area: AreaToCheck4; style: "Area"; } | { stage?: PetStage5; following?: Following15; pet?: Pet9; style: "Pet"; }; type Time4 = "Day" | "Night"; /** * If false, then this will only trigger if the artisan is not following. */ type Following14 = boolean; /** * Leave unset to query whether any artisans are either following or not following. Otherwise, this will query the specific artisan you have chosen. */ type Artisan6 = string; /** * The player must be wearing this item. */ type Item12 = string; type Quantity76 = number; /** * If true, then this requirement will only pass if the entity is NOT in the area. */ type Exclude51 = boolean; /** * The entity that must be in the area for the requirement to pass. */ type Entity4 = string; type AreaToCheck4 = string; /** * If set, then this will only trigger if the pet's following state matches this. */ type Following15 = boolean; /** * If unset, then this requirement will be met if any of your pets match it. */ type Pet9 = string; /** * If checked, all of the requirements below must be met at the time of acquiring the item. If unchecked, only one requirement must be met. */ type AllRequirementsMustBeMet = boolean; /** * A unique number used to save and load this objective's progress to/from disk. */ type ObjectiveID7 = number; /** * How many of this item to acquire. */ type Quantity77 = number; /** * Which item must be acquired. Note that this objective only counts items acquired after you have started the quest. */ type Item13 = string; /** * If checked, this objective's progress will be tracked in the Quest log page. The quest must have a log summary for this to appear. */ type TrackProgress4 = boolean; type EnglishText83 = string; /** * If checked, this text will not be exported for localization. */ type Skip83 = boolean; /** * The amount of damage or number of times damage is dealt to complete this objective. */ type Goal = number; /** * If checked, the player must be the one to deal the damage. */ type RequirePlayerInvolvement1 = boolean; /** * If checked, only direct damage will count toward this objective. If unchecked, only indirect counts. If unset, all damage counts. */ type DirectDamage4 = boolean; /** * If checked, only critical hits will count toward this objective. If unchecked, only non-critical hits count. If unset, all hits count. */ type CritRequirement = boolean; /** * A unique number used to save and load this objective's progress to/from disk. */ type ObjectiveID8 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude52 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll56 = boolean; type Quantity78 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants46 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags46 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude53 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll57 = boolean; type Quantity79 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants47 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags47 = boolean; /** * If set, damage will only count if the target is originally from this area, even if the target has wandered away. */ type TargetHome2 = string; /** * How to track damage for this objective. */ type TrackingType = "Total Amount" | "Number of Hits"; /** * If checked, the target must be from somewhere other than the home area that is set. */ type ExcludeHome1 = boolean; /** * If set, destruction will only count if the target is from this scene. */ type TargetScene2 = string; /** * If set, a counter will pop up in the Infostream indicating your progress toward this objective as you increment it. */ type ProgressInfostream7 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude54 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll58 = boolean; type Quantity80 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants48 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags48 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude55 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll59 = boolean; type Quantity81 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants49 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags49 = boolean; type QuestMoment1 = { speech: { text: { text: EnglishText84; skip?: Skip84; }; speaker: Speaker2; emotion?: Emoji5; }; dialogue_sound_override?: DialogueSoundOverride1; fixed_duration?: FixedDurationSeconds2; requirements?: MomentRequirements; style: "Dialogue"; } | { emotes: Emotes2; fixed_duration?: FixedDurationSeconds3; requirements?: MomentRequirements; style: "Emote"; } | { style: "Gain Item"; items: ItemsToGain1; bonus?: ItemsAreBonus2; requirements?: MomentRequirements; } | { style: "Pin"; pin: WhatToPin1; } | { style: "Artisan Follow"; artisan: Buddy4; } | { style: "Drop Item"; drops: Drops1; bonus?: ItemsAreBonus3; requirements?: MomentRequirements; } | { style: "Artisan Stop Following"; artisan: Artisan7; } | { area: Area3; style: "Set Area Discovered"; } | { style: "Close a Quest"; quest_to_close: Quest2; requirements?: MomentRequirements; } | { pause_duration: PauseSeconds2; requirements?: MomentRequirements; style: "Pause"; } | { camera_target: CameraTargetEntity2; style: "Camera Target Set"; } | { style: "Camera Target Unset"; } | { style: "Camera Zoom"; zoom_amount: ZoomAmount2; } | { music: Music2; style: "Music Begin"; } | { style: "Music End"; } | { look_targets: LookTargets2; requirements?: MomentRequirements; style: "Look Target Set"; } | { style: "Look Target Unset"; requirements?: MomentRequirements; actors?: Actors2; } | { recipe_to_archive: RecipeToArchive1; requirements?: MomentRequirements; style: "Archive Recipe"; } | { area_id: Area4; requirements?: MomentRequirements; style: "Unlock Teleporter"; }; type EnglishText84 = string; /** * If checked, this text will not be exported for localization. */ type Skip84 = boolean; type Speaker2 = string; type Emoji5 = string; /** * If set, this sound will play instead of the default dialogue sound. */ type DialogueSoundOverride1 = string; /** * If set, this moment will be unskippable and will last for a specific amount of time. */ type FixedDurationSeconds2 = number; type Emoji6 = string; type Character5 = string; /** * If set, this moment will be unskippable and will last for a specific amount of time. */ type FixedDurationSeconds3 = number; type Quantity82 = number; /** * If checked, these items will not be included in the progression map. */ type ItemsAreBonus2 = boolean; type WhatToPin1 = string; type Buddy4 = string; type Quantity83 = number; type Item14 = string; /** * Who or what will drop these items. If not present, the items will fly out of the player. */ type Dropper1 = string; /** * If checked, these items will not be included in the progression map. */ type ItemsAreBonus3 = boolean; type Artisan7 = string; type Area3 = string; /** * This quest will be set as 'complete', regardless of whether it has been started or not. Its end moments will be skipped. */ type Quest2 = string; /** * How long to pause before moving to the next quest moment. */ type PauseSeconds2 = number; type CameraTargetEntity2 = string; /** * Higher number means you can see more. */ type ZoomAmount2 = number; type Music2 = string; type LooksAt2 = string; type RecipeToArchive1 = string; /** * The teleporter will be unlocked in this area. */ type Area4 = string; type QuestMoment2 = { speech: { text: { text: EnglishText85; skip?: Skip85; }; speaker: Speaker3; emotion?: Emoji7; }; dialogue_sound_override?: DialogueSoundOverride2; fixed_duration?: FixedDurationSeconds4; requirements?: MomentRequirements; style: "Dialogue"; } | { emotes: Emotes3; fixed_duration?: FixedDurationSeconds5; requirements?: MomentRequirements; style: "Emote"; } | { style: "Gain Item"; items: ItemsToGain2; bonus?: ItemsAreBonus4; requirements?: MomentRequirements; } | { style: "Pin"; pin: WhatToPin2; } | { style: "Artisan Follow"; artisan: Buddy5; } | { style: "Drop Item"; drops: Drops2; bonus?: ItemsAreBonus5; requirements?: MomentRequirements; } | { style: "Artisan Stop Following"; artisan: Artisan8; } | { area: Area5; style: "Set Area Discovered"; } | { style: "Close a Quest"; quest_to_close: Quest3; requirements?: MomentRequirements; } | { pause_duration: PauseSeconds3; requirements?: MomentRequirements; style: "Pause"; } | { camera_target: CameraTargetEntity3; style: "Camera Target Set"; } | { style: "Camera Target Unset"; } | { style: "Camera Zoom"; zoom_amount: ZoomAmount3; } | { music: Music3; style: "Music Begin"; } | { style: "Music End"; } | { look_targets: LookTargets3; requirements?: MomentRequirements; style: "Look Target Set"; } | { style: "Look Target Unset"; requirements?: MomentRequirements; actors?: Actors3; } | { recipe_to_archive: RecipeToArchive2; requirements?: MomentRequirements; style: "Archive Recipe"; } | { area_id: Area6; requirements?: MomentRequirements; style: "Unlock Teleporter"; }; type EnglishText85 = string; /** * If checked, this text will not be exported for localization. */ type Skip85 = boolean; type Speaker3 = string; type Emoji7 = string; /** * If set, this sound will play instead of the default dialogue sound. */ type DialogueSoundOverride2 = string; /** * If set, this moment will be unskippable and will last for a specific amount of time. */ type FixedDurationSeconds4 = number; type Emoji8 = string; type Character6 = string; /** * If set, this moment will be unskippable and will last for a specific amount of time. */ type FixedDurationSeconds5 = number; type Quantity84 = number; /** * If checked, these items will not be included in the progression map. */ type ItemsAreBonus4 = boolean; type WhatToPin2 = string; type Buddy5 = string; type Quantity85 = number; type Item15 = string; /** * Who or what will drop these items. If not present, the items will fly out of the player. */ type Dropper2 = string; /** * If checked, these items will not be included in the progression map. */ type ItemsAreBonus5 = boolean; type Artisan8 = string; type Area5 = string; /** * This quest will be set as 'complete', regardless of whether it has been started or not. Its end moments will be skipped. */ type Quest3 = string; /** * How long to pause before moving to the next quest moment. */ type PauseSeconds3 = number; type CameraTargetEntity3 = string; /** * Higher number means you can see more. */ type ZoomAmount3 = number; type Music3 = string; type LooksAt3 = string; type RecipeToArchive2 = string; /** * The teleporter will be unlocked in this area. */ type Area6 = string; type EnglishText86 = string; /** * If checked, this text will not be exported for localization. */ type Skip86 = boolean; /** * If true, this quest will be excluded in the Scramble Mutator. */ type ScrambleExcluded1 = boolean; type Pet10 = string; /** * If true, the pet must be following you for the quest to complete. */ type RequiresFollowing = boolean; /** * What stage of the pet's life this quest is available during. */ type PetStage6 = "Baby" | "Adult"; type Speaker4 = string; type EnglishText87 = string; /** * If checked, this text will not be exported for localization. */ type Skip87 = boolean; type Emoji9 = string; /** * For sorting in the Game Changer. */ type Order = number; type Name31 = string; /** * If false, the object will always render itself at its normal color and won't be darkened or brightened by lighting. */ type UseLighting14 = boolean; /** * A handful of words for a quick overview of the character */ type Brief1 = string; type Pronouns1 = string; type Personality1 = string; /** * Normally, characters have a 20 second cooldown between initiating chats. This can be overridden here. */ type ChatCooldownSecondsOverride1 = number; /** * Whether the buddy's sprite should flip to face the player during dialogue. */ type LooksAtPlayer = boolean; /** * The GMS object to use for the buddy in the world. */ type WorldObject = string; /** * If set, the artisan will not follow the player unless this thing is finished. */ type FollowingUnlock1 = string; /** * Once this quest is complete, the Buddy's insights will be visible. */ type InsightUnlocker = string; type Green44 = number; type Red44 = number; type Blue44 = number; type UIIcon24 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup30 = string; type Green45 = number; type Red45 = number; type Blue45 = number; type Green46 = number; type Red46 = number; type Blue46 = number; /** * The quest that will unlock the ability to convert this buddy to another buddy. */ type ConvertAfterQuest = string; /** * The buddy that this buddy will become after the quest is complete. The new buddy will inherit the current buddy's insights. */ type ConvertTo = string; type TopicNameInternal1 = string; type GroupNameInternal1 = string; type EnglishText88 = string; /** * If checked, this text will not be exported for localization. */ type Skip88 = boolean; type Emoji10 = string; type ResearchStart = string; type ResearchCollected = string; type ComfortGained = string; type ComfortLost = string; type Interact = string; type FollowStart = string; type FollowEnd = string; /** * For example, when you ask them to follow you, but they can't because they are researching. */ type ActionBlocked = string; /** * The sprite to use for the buddy's banner in the Home UI. */ type BannerPortrait = string; /** * The sprite to use behind the buddy's banner in the Home UI. */ type BannerBackground = string; type WorldSprite21 = string; type EnglishText89 = string; /** * If checked, this text will not be exported for localization. */ type Skip89 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText64 = string; /** * If set, this sprite will be masked in demo versions of the game, making it non-viewable. */ type DemoMasked = boolean; /** * For your internal reference. */ type TrackName = string; /** * The name of the attachment slot (from Spine). */ type SlotName = string; /** * If this Spine has multiple tracks, which track must these animations be playing on? */ type AnimationTrack = number; /** * The name of the attachment slot (from Spine). */ type Slot = string; type Active2 = string; type Inactive = string; type Active3 = number; type Inactive1 = number; /** * The name of the sprite in the GMS project. */ type Name32 = string; /** * Whether this is a Spine sprite. */ type Spine = boolean; /** * The object that members of this species will use. */ type Object6 = string; type Green47 = number; type Red47 = number; type Blue47 = number; type Height12 = number; type Width12 = number; type WorldSprite22 = string; type UIIcon25 = string; type EnglishText90 = string; /** * If checked, this text will not be exported for localization. */ type Skip90 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText65 = string; type WorldSprite23 = string; type UIIcon26 = string; type EnglishText91 = string; /** * If checked, this text will not be exported for localization. */ type Skip91 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText66 = string; type EnglishText92 = string; /** * If checked, this text will not be exported for localization. */ type Skip92 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText67 = string; /** * Whether the item can be flipped in the Editor. If set, it will also randomly flip when placed. */ type Flippable7 = boolean; type DoorOpenSound1 = string; type DoorCloseSound1 = string; type Min46 = number; type Max46 = number; /** * For previewing the ability in the Game Changer. */ type PreviewSprite = string; /** * If checked, the caster will finish casting this ability before dying, even if it has reached zero health. Useful for on-death abilities. */ type PostponesDeath = boolean; type EnglishText93 = string; /** * If checked, this text will not be exported for localization. */ type Skip93 = boolean; type UsableInCombat = boolean; type UIIcon27 = string; /** * How many seconds it takes for each charge to come back. */ type RechargeSeconds = number; type MaxCharges = number; /** * If set, this stat will be used to modify the maximum number of charges this ability has. */ type MaxChargesModifierStat = string; type ModifierType = "Add" | "Multiply"; type Stat1 = string; type Min47 = number; type Max47 = number; type Buff4 = string; type Stacks55 = number; type Condition4 = { daytime: DuringDaytime3; condition_type?: "Daylight"; } | { moon: ActiveMoon3; condition_type?: "Moon"; } | { quest: QuestToCheck5; condition_type?: "Quest"; quest_status: QuestStatus5; } | { following: Following16; condition_type?: "Artisan Following"; artisan: Buddy7; } | { prerequisite: Insight13; unlock_text?: InsightTooltip3; condition_type?: "Insight"; } | { datafield_evaluation: Evaluation6; condition_type?: "Datafield"; } | { scene: Scene3; condition_type?: "Scene"; exclusive?: Exclusive7; }; type DuringDaytime3 = boolean; type ActiveMoon3 = string; /** * The quest whose status we are querying. */ type QuestToCheck5 = string; type QuestStatus5 = "Complete" | "Started" | "Not Started"; type Following16 = boolean; type Buddy7 = string; type Insight13 = string; type EnglishText94 = string; /** * If checked, this text will not be exported for localization. */ type Skip94 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText68 = string; /** * The target entity must belong to this scene. */ type Scene3 = string; /** * If checked, the condition will be met if the entity is NOT from the scene. */ type Exclusive7 = boolean; /** * If the conditions are met at the start of the cast, the telegraph scale will be multiplied by this amount. */ type Multiplier = number; type RequireAllConditions3 = boolean; type JukeChargesRequired = number; /** * If true, this ability can be cast while the caster is being moved by an external force. */ type UsableDuringForcedMovement = boolean; type ModifierType1 = "Add" | "Multiply"; type Stat2 = string; /** * If true, the ability will always incur its cooldown, even if the ability fails to hit a valid target. */ type AlwaysIncurCooldown = boolean; type CooldownSeconds = number; /** * At what point in the cast the cooldown will trigger. */ type CooldownTriggerPercentage = number; /** * If set, this will force-draw the ability's telegraph as either helpful or harmful. */ type TelegraphDrawsAsHarmful = boolean; /** * Which buff to use for the hotbar display. */ type Buff5 = string; /** * The number will be multiplied against this number when displayed. */ type Multiplier1 = number; type Type3 = "Damage" | "Stacks"; type Start = number; type End = number; type Start1 = number; type End1 = number; type AnimationName = string; type CastDurationSeconds = number; /** * Whether this ability stops other abilities' casting when it is used. If false, this ability must be instant-cast with no animation. */ type StopsOtherCasts = boolean; /** * If true, this ability will always allow swinging your weapon after without needing to re-press the button. By default, instant abilities don't allow chained attacks. */ type AllowChainedAttacks = boolean; /** * This sound will play the instant the ability begins casting. */ type StartCastSound = string; /** * How the channeling animation will be played. */ type AnimationStyle = "Loop" | "Tick" | "Stretch"; /** * While channeling, you can constrain how much the player can move this target reticle. This is relative to the game's base move speed. */ type PlayerTargetingGroundSpeedLimit = number; /** * This ability can automatically smoothly change aim direction over the course of the channel. */ type DirectionChangeDuringChannel = number; /** * This sound will play the instant the ability begins channeling. */ type ChannelStartSound = string; /** * The spine animation to play while channeling. */ type ChannelingAnimation = string; /** * If true, the player or creature can themselves change the targeting position of the ability while it is channeling. */ type PlayerReTargetingDuringChannel = boolean; type ChannelEffect = { beam_start_sound?: BeamStartSound; beam_loop_sound?: BeamLoopingSound; beam_end_sound?: BeamEndSound; effect_type: "Beam"; beam_color: BeamColor; beam_thickness?: BeamThickness; beam_source: Source6; beam_source_spine_bone?: SourceSpineBone1; beam_source_zoffset?: SourceBeamZOffsetPixels; beam_target: Target1; beam_target_zoffset?: TargetBeamZOffsetPixels; }; /** * A one-shot sound for the beam to play when it begins. */ type BeamStartSound = string; /** * A looping sound for the beam to play while it is active. */ type BeamLoopingSound = string; /** * A one-shot sound for the beam to play when it ends. */ type BeamEndSound = string; type Green48 = number; type Red48 = number; type Blue48 = number; /** * The thickness of the beam (only applies to lasers). */ type BeamThickness = number; type Source6 = "Self" | "Ground Target" | "Target Entity" | "Summoner"; /** * The bone on the source entity from which the beam will originate (if it has this bone). */ type SourceSpineBone1 = string; type SourceBeamZOffsetPixels = number; type Target1 = "Self" | "Ground Target" | "Target Entity" | "Summoner"; type TargetBeamZOffsetPixels = number; /** * How fast the targeting position will move towards the target, relative to the game's base move speed. */ type ConstantGroundSpeed = number; type Min48 = number; type Max48 = number; /** * If true, the range of the ability will be constrained to the targeting range while channeling. Defaults to true. */ type ConstrainRangeWhileChanneling = boolean; type TickTimings = { duration: ChannelDuration; num_ticks: NumberOfTicks; style: "Automatic"; } | { tick_times: TickTimes; style: "Manual"; }; /** * The number of seconds the ability will channel for. */ type ChannelDuration = number; /** * The number of times the channel will perform its actions It always performs at the start and end of the channel. */ type NumberOfTicks = number; type TickTime = number; type Min49 = number; type Max49 = number; /** * The chance that this action group will occur. */ type Chance6 = number; /** * An action to be performed on the targets that have been captured by this Action Group. For example, targets caught in a telegraph, yourself, etc... */ type Action1 = { chance?: ActionProbability; damage_entity?: EntityToDamage; badge_modifiers?: InsightModifiers; damage_steal_health?: StealHealth; damage_success_sound?: ImpactSound1; damage_failure_sound?: FailureSound1; action_type?: "Damage"; target_filter?: TargetFilters1; unlocked_by?: UnlockedBy35; damage_profile: DamageProfile; damage_followup?: FollowupActions; target_whitelist?: TargetWhitelist; datafield_modifiers?: DatafieldMultipliers1; } | { chance?: ActionProbability1; heal_target_filter?: TargetFilters3; healing_entity?: EntityToHeal; healing_percentage: Healing2; action_type?: "Heal"; heal_success_sound?: HealSound; heal_failure_sound?: FailureSound2; unlocked_by?: UnlockedBy37; } | { grid_size?: Radius; action_type?: "Clear Terrain"; } | { move_particle_stream?: ParticleStream; move_entity: EntityBeingMoved; move_destination: EntityDestination; move_ignores_solids_while_moving?: IgnoreSolidsWhileMoving; move_direction?: Direction1; move_direction_randomness?: DirectionRandomness1; move_sounds?: MovementSounds; move_grid_distance: MovementDistanceGridSpaces; move_speed: Speed30; move_animations?: MovementAnimations; move_speed_fixed?: FixedSpeed; move_style?: MovementStyle; move_invulnerable?: InvulnerableWhileMoving; unlocked_by?: UnlockedBy39; move_invulnerable_gamemodes?: InvulnerableInGameModes; move_to_entity_edge?: MoveToEntityEdge; move_end_actions_forced?: ForceEndActions; show_in_tooltip?: ShowEndActionsInTooltip; visual_tether?: VisualTether; premove_effect?: PreMoveEffect; telegraph_pullthrough?: ShowTelegraphDuringCast; move_end_action_groups?: ActionGroups1; chance?: ActionProbability2; traverses_water: MoveOverWater; action_type?: "Move"; move_distance_modifier?: MoveDistanceStatModifiers; move_speed_stat_modifier?: MoveSpeedStatModifiers; } | { action_type?: "Play Sound"; sound_id: Sound10; sound_location: SoundLocation1; sound_probability: SoundProbability; sound_as_voice?: PlayAsVoice1; unlocked_by?: UnlockedBy41; } | { chance?: ActionProbability3; destroy_entity: EntityToDestroy; drop_loot?: DropLoot1; counts_as_death?: CountsAsDeath1; action_type?: "Destroy"; destroy_target_filter?: TargetFilters4; unlocked_by?: UnlockedBy43; } | { camera_shake_amount: CameraShakeAmount; unlocked_by?: UnlockedBy45; action_type?: "Shake Camera"; } | { visual_effect: VisualEffect2; action_type: "Visual Effect"; } | { chance?: ActionProbability4; items_to_lose: ItemsToLose1; show_on_tooltip?: ShowOnTooltip; action_type?: "Lose Items"; } | { chance?: ActionProbability5; items_to_gain: ItemsToGain3; action_type?: "Gain Items"; unlocked_by?: UnlockedBy47; play_celebration?: PlayPickupCelebration; per_target?: PerTarget; } | { pickup_target_filter?: PickupTargetFilter; unlocked_by?: UnlockedBy49; action_type?: "Pickup"; } | { chance?: ActionProbability6; num_pool_ticks?: PoolTicksTooltipOverride; buffs: BuffsToApply; target_filter?: TargetFilters5; action_type?: "Buff"; unlocked_by?: UnlockedBy51; } | { datafield_id: DataField2; action_type?: "Change Datafield"; datafield_target_filter?: DatafieldTargetFilter; datafield_change_target: DatafieldOwner3; datafield_change_type: ChangeType; unlocked_by?: UnlockedBy53; datafield_change_value: Value3; } | { action_type?: "Create Entity"; spawn_location?: NewEntityLocation1; summoned?: EntityIsSummoned1; distance_range?: SpawnDistance1; require_line_of_sight?: RequireLineOfSight1; non_overlap: AttemptNonOverlap1; tooltip_pullthrough?: TooltipPullthrough; pickup_if_player_created?: AutoPickupIfPlayerCaused; inherits_threat?: InheritThreat1; forced_spawning?: IgnoreAllConflicts1; spawn_item: EntityToCreate; } | { unlocked_by?: UnlockedBy55; projectile: Projectile; action_type?: "Fire Projectile"; } | { action_type?: "Fishing"; } | { chance?: ActionProbability7; negative?: RemoveNegativeBuffs1; stacks?: Stacks98; action_type?: "Remove Buff"; target_filter?: TargetFilters6; positive?: RemovePositiveBuffs1; buffs_to_remove?: BuffsToRemove; buff_target: Target2; unlocked_by?: UnlockedBy57; } | { chance?: ActionProbability8; charges: ChargeIncrementAmount; action_type?: "Change Juke Charges"; } | { traverses_water?: LeapTraversesWater; move_destination: LeapDestination; leap_start_sounds?: LeapStartSounds; leap_land_sounds?: LeapLandingSounds; action_type?: "Leap"; leap_impact_action_groups?: ActionGroups5; leap_followthrough_seconds?: FollowthroughSeconds; leap_distance_randomness?: DistanceRandomness1; gravity_modifier?: GravityModifier; move_animations?: MovementAnimations1; telegraph_pullthrough: ShowTelegraphDuringCast1; leap_duration: LeapDuration; } | { knock_speed?: KnockSpeedModifier; knock_end_actions?: ActionGroups6; chance?: ActionProbability9; knock_direction_datafield?: DirectionDatafield; action_type?: "Knockback"; knock_distance: DistanceGridSpaces; unlocked_by?: UnlockedBy59; knocked_entity: EntityToKnockBack; knock_target_filter?: KnockbackTargetFilter; knock_direction_offset?: DirectionOffset1; knock_direction_randomness?: DirectionRandomness2; knock_sounds?: KnockSounds; } | { chance?: ActionProbability10; pool: AbilityPool; action_type?: "Create Pool"; } | { chance?: ActionProbability11; action_type: "Lose Wield Item"; } | { datafield_toggle_target: DatafieldOwner4; datafield_toggle_value0: Value01; datafield_id: DataField3; datafield_toggle_value1: Value12; action_type: "Toggle Datafield"; datafield_target_filter?: DatafieldTargetFilter1; unlocked_by?: UnlockedBy61; }; /** * The chance that this action will occur. */ type Chance7 = number; type EntityToDamage = "Target Entity" | "Self" | "Summoner"; type Insight14 = string; type ChangePerPoint33 = number; type EnglishText95 = string; /** * If checked, this text will not be exported for localization. */ type Skip95 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText69 = string; /** * This will steal health from the target and give it to the caster, proportional to the damage dealt. */ type StealHealth = number; /** * This sound will only play if damage is dealt. */ type ImpactSound1 = string; /** * This sound will play if no targets were damaged. */ type FailureSound1 = string; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude56 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll60 = boolean; type Quantity86 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants50 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags50 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude57 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll61 = boolean; type Quantity87 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants51 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags51 = boolean; type UnlockedBy36 = string; type EnglishText96 = string; /** * If checked, this text will not be exported for localization. */ type Skip96 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText70 = string; /** * If set, the followup action will only apply to targets that had this outcome. */ type FollowupTargetConstraint = "Damaged" | "Critically Hit" | "Uncritically Hit"; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude58 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll62 = boolean; type Quantity88 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants52 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags52 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude59 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll63 = boolean; type Quantity89 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants53 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags53 = boolean; type Condition5 = { abilities?: Abilities5; casting_state: Casting3; target_entity: TargetEntity17; condition_type?: "Ability"; } | { datafield_evaluation: Evaluation7; target_entity: TargetEntity18; condition_type?: "Datafield"; } | { daytime: DuringDaytime4; condition_type?: "Daylight"; } | { condition_type?: "Combat"; combat: InCombat3; } | { insight_modifier?: InsightModifier3; timestamp: Timestamp5; condition_type?: "Timestamp"; evaluation: "==" | "!=" | "<" | "<=" | ">" | ">="; minutes_passed: MinutesSinceTimestamp3; } | { moon: ActiveMoon4; condition_type?: "Moon"; } | { quest: QuestToCheck6; condition_type?: "Quest"; quest_status: QuestStatus6; } | { following: Following17; condition_type?: "Artisan Following"; artisan: Buddy8; } | { prerequisite: Insight16; unlock_text?: InsightTooltip4; condition_type?: "Insight"; } | { proximity_range: DistanceRequiredGridSpaces3; proximity_targets: Targets5; proximity_ignores_stealth: IgnoreStealthedTargets3; condition_type?: "Proximity"; proximity_quantity: NumberOfTargets6; } | { hp_evaluation: HealthEvaluation3; target_entity: TargetEntity19; condition_type?: "Health"; } | { require_all: RequireAll66; condition_type?: "Item Equipped"; items: Items72; } | { condition_type?: "Item Wielding"; items: Items73; } | { condition_type?: "Wearing Equipment Set"; set_evaluation: PiecesEquipped3; } | { condition_type?: "Buffs"; buff_exclusive?: Exclusive8; buff_require_all: RequireAll67; buff_check_self: CheckSelf3; buff_own_only: OwnBuffsOnly3; buff_num_targets?: NumberOfTargets7; buff_target_filter?: BuffTargetFilter3; buff_proximity?: BuffTargetRange3; buff_stack_evaluation?: Stacks64; buffs: Buffs123; buff_target: TargetEntity20; } | { condition_type?: "Boss Defeated"; boss: Boss6; } | { comparison: NumberSummoned3; condition_type?: "Summoned Entities"; summoned_filter?: SummonedEntitiesFilter3; } | { areas: Areas6; condition_type?: "Area"; } | { condition_type?: "Weather"; weather_ids: Weather3; } | { condition_type?: "Boss Phase"; phase: Phase3; } | { scene: Scene4; target_entity: TargetEntity21; condition_type?: "Scene"; exclusive?: Exclusive9; } | { following: Following18; condition_type?: "Pet"; pet_item_id: Pet11; }; /** * If set, the ability's casting state must match this checkbox. */ type Casting3 = boolean; /** * Which entity's ability to query. */ type TargetEntity17 = "Self" | "Other"; /** * Which entity's data fields to query. */ type TargetEntity18 = "Self" | "Other"; type DuringDaytime4 = boolean; type InCombat3 = boolean; /** * How much the 'Minutes Since Timestamp' should be adjusted (up or down) for each point invested in the Insight. */ type ChangePerPoint34 = number; type Insight15 = string; type Timestamp5 = string; /** * If greater than 0, then this many minutes will have passed since the timestamp was set. If less than 0, the timestamp will be this many minutes from now. */ type MinutesSinceTimestamp3 = number; type ActiveMoon4 = string; /** * The quest whose status we are querying. */ type QuestToCheck6 = string; type QuestStatus6 = "Complete" | "Started" | "Not Started"; type Following17 = boolean; type Buddy8 = string; type Insight16 = string; type EnglishText97 = string; /** * If checked, this text will not be exported for localization. */ type Skip97 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText71 = string; type Min50 = number; type Max50 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude60 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll64 = boolean; type Quantity90 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants54 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags54 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude61 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll65 = boolean; type Quantity91 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants55 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags55 = boolean; /** * If checked, the proximity check will fail on targets that are stealthed. */ type IgnoreStealthedTargets3 = boolean; type Evaluation8 = "==" | "!=" | "<" | "<=" | ">" | ">="; type Quantity92 = number; /** * Which entity's health to query. */ type TargetEntity19 = "Self" | "Other"; /** * If checked, this condition will only be met if ALL of the items listed are equipped at the same time. */ type RequireAll66 = boolean; type EquipmentSet6 = string; /** * If checked, this condition will only be considered met if the defined conditions are NOT met. */ type Exclusive8 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on yourself at the same time. */ type RequireAll67 = boolean; /** * Obsolete--delete. */ type CheckSelf3 = boolean; /** * If checked, only buffs created by you will be checked. Otherwise, all buffs will be checked. */ type OwnBuffsOnly3 = boolean; type Quantity93 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude62 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll68 = boolean; type Quantity94 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants56 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags56 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude63 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll69 = boolean; type Quantity95 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants57 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags57 = boolean; type Min51 = number; type Max51 = number; type Quantity96 = number; /** * Which entity's buffs to query. */ type TargetEntity20 = "Self" | "Other" | "All Entities"; type Boss6 = string; type Quantity97 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude64 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll70 = boolean; type Quantity98 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants58 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags58 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude65 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll71 = boolean; type Quantity99 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants59 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags59 = boolean; type Phase3 = string; /** * The target entity must belong to this scene. */ type Scene4 = string; /** * Which entity's health to query. */ type TargetEntity21 = "Self" | "Other"; /** * If checked, the condition will be met if the entity is NOT from the scene. */ type Exclusive9 = boolean; /** * If checked, the pet must be following you. Otherwise, the pet must NOT be following you. */ type Following18 = boolean; /** * Which pet to check. */ type Pet11 = string; /** * If true, all conditions must be true for this followup action to occur. */ type RequireAllConditions4 = boolean; /** * If set, this followup action will only be performed on up to this number of targets. */ type FollowupTargetLimit = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude66 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll72 = boolean; type Quantity100 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants60 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags60 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude67 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll73 = boolean; type Quantity101 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants61 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags61 = boolean; type DatafieldOwner2 = "Self" | "Target Entity"; type DataField1 = string; /** * The chance that this action will occur. */ type Chance8 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude68 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll74 = boolean; type Quantity102 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants62 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags62 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude69 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll75 = boolean; type Quantity103 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants63 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags63 = boolean; type EntityToHeal = "Target Entity" | "Self" | "Summoner"; /** * The healing amount will be automatically calculated based on the level of the user. */ type Healing2 = number; /** * This sound will only play if healing occurred (the recipient was below maximum health). */ type HealSound = string; /** * This sound will play if no targets were healed. */ type FailureSound2 = string; type UnlockedBy38 = string; type EnglishText98 = string; /** * If checked, this text will not be exported for localization. */ type Skip98 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText72 = string; /** * The radius of the terrain to clear. */ type Radius = number; /** * The time between each particle emission. Note that this can dramatically effect performance as you ramp up the rate of particle emission, so use with caution. */ type StreamEmitIntervalSeconds = number; /** * If checked, the particles will spawn at z=0 instead of on a target or caster. */ type SpawnOnGround5 = boolean; type Source7 = "Self" | "Ground Target" | "Target Entity" | "Summoner"; /** * If set, the burst will use the direction the ability cast is aiming as its baseline direction. */ type RelativeDirection = boolean; type Min52 = number; type Max52 = number; type Min53 = number; type Max53 = number; /** * If set, the radius of the spawning will scale relative to the caster's 'scale' modifier. Useful for keeping particles lined up with telegraphs. */ type ScaledSpawnRadius1 = boolean; /** * If set, the particles will always move away from the center of the source. */ type BlastOutward1 = boolean; type Min54 = number; type Max54 = number; /** * If set, the spawn radius will be treated as grid spaces instead of pixels. */ type SpawnRadiusAsGrid1 = boolean; /** * If spawning on the ground, this will be height above ground. If spawning on targets, it will spawn at their height midpoints, plus this offset. */ type ZOffset11 = number; /** * This is the distance above the target's y position that the particles will spawn. Useful for affecting depth. */ type YOffset12 = number; /** * Billboard bursts are good for shooting things up and out. Ground bursts are good for making smoke rings and such. */ type Perspective1 = "Billboard" | "Isometric"; type EntityBeingMoved = "Self" | "Target Entity" | "Summoner"; type EntityDestination = "Ground Target" | "Target Entity" | "Self" | "Summoner"; /** * If true, the mover will move through solid objects while being force-moved. */ type IgnoreSolidsWhileMoving = boolean; /** * In degrees. 0 is towards the destination, 180 is away from the destination. */ type Direction1 = number; /** * The movement direction will be randomly modified (up or down) by up to this amount. */ type DirectionRandomness1 = number; type ChanceOfPlaying = number; type Sound9 = string; type Min55 = number; type Max55 = number; /** * How much faster you will travel the distance, compared to your baseline speed. If zero, you will instantly teleport. */ type Speed30 = number; type AnimationName1 = string; type Looping1 = boolean; /** * If true, the move speed will be unaffected by stats. */ type FixedSpeed = boolean; type MovementStyle = "Ease In" | "Linear" | "Instant"; /** * If true, the mover will be invulnerable while moving. */ type InvulnerableWhileMoving = boolean; type UnlockedBy40 = string; type EnglishText99 = string; /** * If checked, this text will not be exported for localization. */ type Skip99 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText73 = string; type Invulnerable1 = boolean; type GameMode = string; /** * If moving to an entity, this will move the caster to the edge of the entity, rather than the center. */ type MoveToEntityEdge = boolean; /** * If true, the end actions will be forced to occur, even if no movement occurs due to obstructions. */ type ForceEndActions = boolean; /** * If true, this movement's action groups will be shown in the tooltip. */ type ShowEndActionsInTooltip = boolean; /** * If set, this sprite will be placed at the end of the tether. Useful for making a grappling hook type effect. */ type EndSprite = string; /** * How much to scale the end sprite. */ type EndSpriteScale = number; /** * The sprite to use for the tether. */ type Sprite6 = string; /** * If true, the tether will be drawn from the destination to the source. */ type Inverted = boolean; /** * How much to scale the sprite. */ type SpriteScale = number; /** * An effect that will occur before the movement of the ability. The mover will still be under 'forced movement' for this duration and won't be able to move themselves or take most actions */ type PreMoveEffect = { grapple_speed: GrappleSpeedPxSec; grapple_sound?: GrappleSound; effect_type: "Grapple"; }; /** * How fast the grapple will fire outwards. */ type GrappleSpeedPxSec = number; /** * This sound will play when the grapple hooks onto something. */ type GrappleSound = string; /** * If checked, the telegraph for this movement outcome will be drawn during the initial ability cast. */ type ShowTelegraphDuringCast = boolean; /** * The chance that this action will occur. */ type Chance9 = number; /** * If true, you will move over water, even if you normally cannot. */ type MoveOverWater = boolean; type ModifierType2 = "Add" | "Multiply"; type Stat3 = string; type ModifierType3 = "Add" | "Multiply"; type Stat4 = string; type Sound10 = string; type SoundLocation1 = "Self" | "Ground Target" | "Target Entity" | "Summoner" | "Global"; type SoundProbability = number; /** * If true, then this will be considered a 'voice' sound. Each entity can only play one 'Voice' sound at a time. */ type PlayAsVoice1 = boolean; type UnlockedBy42 = string; type EnglishText100 = string; /** * If checked, this text will not be exported for localization. */ type Skip100 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText74 = string; /** * The chance that this action will occur. */ type Chance10 = number; type EntityToDestroy = "Target Entity" | "Self" | "Summoner"; /** * If true, and the destroyed entity has loot tables, it will drop loot as if it were destroyed by the player dealing damage to it. */ type DropLoot1 = boolean; /** * If false, the destroyed entity will just stop existing. If true, the entity will trigger any Death events and play its death animations. */ type CountsAsDeath1 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude70 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll76 = boolean; type Quantity104 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants64 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags64 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude71 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll77 = boolean; type Quantity105 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants65 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags65 = boolean; type UnlockedBy44 = string; type EnglishText101 = string; /** * If checked, this text will not be exported for localization. */ type Skip101 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText75 = string; type CameraShakeAmount = number; type UnlockedBy46 = string; type EnglishText102 = string; /** * If checked, this text will not be exported for localization. */ type Skip102 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText76 = string; type VisualEffect2 = { electric_arc_source: Source8; electric_arc_source_spine_bone?: SourceSpineBone2; electric_arc_destination: Destination1; electric_arc_color: Color5; electric_arc_source_distance?: DistanceFromSourcePixels1; electric_arc_destination_distance?: DistanceFromDestinationPixels1; effect_type: "Electric Arc"; } | { decal_duration?: DecalDurationSeconds2; decal_sprite: DecalSprite2; decal_scale?: DecalScale2; decal_location: Location7; effect_type: "Ground Decal"; decal_max_alpha?: MaxAlpha2; } | { explosion_random_delay?: RandomDelaySeconds2; explosion_debris?: DebrisParticles4; explosion_location: Location8; effect_type: "Explosion"; explosion_y_offset?: YOffset13; explosion_z_offset?: ZOffset12; explosion_color: BaseColor2; explosion_sound?: Sound11; explosion_slomo_burst: SlowMotionPulse2; explosion_highlight_color?: HighlightColor2; explosion_camera_shake?: CameraShake4; explosion_smoke?: ShowSmoke2; explosion_scale?: ExplosionScale2; explosion_random_distance?: RandomDistanceGridSpaces2; } | { smokeburst_location: Location9; smokeburst_color?: SmokeColor2; smokeburst_zoffset?: ZOffset13; smokeburst_spawn_on_ground?: SpawnOnGround6; smokeburst_yoffset?: YOffset14; smokeburst_speed?: ExpansionSpeed2; smokeburst_radius?: RadiusPixels2; smokeburst_scale?: Scale9; effect_type: "Smoke Burst"; } | { burst_particle: Particle; bursts: Bursts1; effect_type: "Particle Burst"; } | { particle_system_y_offset?: YOffset16; particle_system_z_offset?: ZOffset15; particle_system: ParticleSystem5; particle_system_emitter_scale?: EmitterScale5; particle_system_location: Location10; effect_type: "Particle System Burst"; } | { lightning_distance: DistanceGrid1; lightning_color: Color6; lightning_aim_offset?: AimOffset1; lightning_num_bolts?: NumberOfBolts1; lightning_spread?: SpreadDegrees1; lightning_z_offset?: ZOffset16; effect_type: "Lightning"; lightning_source: Source10; } | { slomo_amount: GameSpeed1; slomo_duration: Seconds3; effect_type: "Slomo Burst"; } | { skybeam_color: SkybeamColor2; skybeam_sound?: Sound12; skybeam_width?: SkybeamPixelWidth2; skybeam_location: Location11; effect_type: "Skybeam"; } | { ering_location: Location12; ering_y_offset?: YOffset17; ering_z_offset?: ZOffset17; ering_color1?: Color13; ering_color2?: Color23; ering_sound?: Sound13; ering_grid_radius: GridRadius2; ering_spawn_on_ground?: SpawnOnGround8; ering_show_internal_ring?: ShowInternalRing2; effect_type: "Electric Ring"; } | { skylightning_color: LightningColor2; skylightning_shake?: CameraShake5; skylightning_sound?: Sound14; skylightning_width?: LightningPixelWidth2; skylightning_slomo_flash?: SlowMotionFlash2; skylightning_location: Location13; effect_type: "Sky Lightning"; }; type Source8 = "Self" | "Ground Target" | "Target Entity" | "Summoner"; /** * If the source is an entity, this is the bone to spawn the arc from. */ type SourceSpineBone2 = string; type Destination1 = "Self" | "Ground Target" | "Target Entity" | "Summoner"; type Green49 = number; type Red49 = number; type Blue49 = number; type DistanceFromSourcePixels1 = number; type DistanceFromDestinationPixels1 = number; type Min56 = number; type Max56 = number; /** * This sprite will be drawn subtractively. */ type DecalSprite2 = string; type Min57 = number; type Max57 = number; type Location7 = "Self" | "Ground Target" | "Target Entity" | "Summoner"; type MaxAlpha2 = number; type Min58 = number; type Max58 = number; type NumberOfParticles4 = number; type ParticleScale2 = number; /** * The sprite to use for the debris. */ type Sprite7 = string; type Location8 = "Self" | "Ground Target" | "Target Entity" | "Summoner"; /** * Can be useful for depth-sorting. For example, a Y offset of 1 will spawn the explosion in front of whatever is explosing. */ type YOffset13 = number; /** * If spawning on the ground, this will be height above ground. If spawning on targets, it will spawn at their height midpoints, plus this offset. */ type ZOffset12 = number; type Green50 = number; type Red50 = number; type Blue50 = number; /** * There is a default explosion sound, but you can override it here. */ type Sound11 = string; /** * If true, there will be a brief slow-down of the game when the explosion occurs to make it feel more impactful. Use sparingly. */ type SlowMotionPulse2 = boolean; type Green51 = number; type Red51 = number; type Blue51 = number; /** * If true, the camera will shake when the explosion occurs. */ type CameraShake4 = boolean; /** * If true, smoke will be spawned at the explosion location. */ type ShowSmoke2 = boolean; type Min59 = number; type Max59 = number; type Min60 = number; type Max60 = number; type Location9 = "Self" | "Ground Target" | "Target Entity" | "Summoner"; type Green52 = number; type Red52 = number; type Blue52 = number; /** * If spawning on the ground, this will be height above ground. If spawning on targets, it will spawn at their height midpoints, plus this offset. */ type ZOffset13 = number; /** * If true, the smoke will spawn at the ground level. */ type SpawnOnGround6 = boolean; /** * Can be useful for depth-sorting. For example, a Y offset of 1 will spawn the smoke in front of whatever is explosing. */ type YOffset14 = number; /** * How fast the smoke will expand. */ type ExpansionSpeed2 = number; type Min61 = number; type Max61 = number; /** * The scale of the smoke particles. */ type Scale9 = number; /** * If checked, the particles will spawn at z=0 instead of on a target or caster. */ type SpawnOnGround7 = boolean; type Source9 = "Self" | "Ground Target" | "Target Entity" | "Summoner"; /** * If set, the burst will use the direction the ability cast is aiming as its baseline direction. */ type UseAimDirection1 = boolean; type Min62 = number; type Max62 = number; type Min63 = number; type Max63 = number; /** * If set, the radius of the spawning will scale relative to the caster's 'scale' modifier. Useful for keeping particles lined up with telegraphs. */ type ScaledSpawnRadius2 = boolean; /** * If set, the particles will always move away from the center of the source. */ type BlastOutward2 = boolean; type Min64 = number; type Max64 = number; /** * If set, the spawn radius will be treated as grid spaces instead of pixels. */ type SpawnRadiusAsGrid2 = boolean; /** * If spawning on the ground, this will be height above ground. If spawning on targets, it will spawn at their height midpoints, plus this offset. */ type ZOffset14 = number; /** * This is the distance above the target's y position that the particles will spawn. Useful for affecting depth. */ type YOffset15 = number; /** * Billboard bursts are good for shooting things up and out. Ground bursts are good for making smoke rings and such. */ type Perspective2 = "Billboard" | "Isometric"; /** * Can be useful for depth-sorting. For example, a Y offset of 1 will spawn the explosion in front of whatever is explosing. */ type YOffset16 = number; /** * If spawning on the ground, this will be height above ground. If spawning on targets, it will spawn at their height midpoints, plus this offset. */ type ZOffset15 = number; type ParticleSystem5 = string; type EmitterScale5 = number; type Location10 = "Self" | "Ground Target" | "Target Entity" | "Summoner"; type Min65 = number; type Max65 = number; type Green53 = number; type Red53 = number; type Blue53 = number; type AimOffset1 = number; type Min66 = number; type Max66 = number; /** * The total angle the bolts will cover. 360 means a full circle. */ type SpreadDegrees1 = number; /** * If spawning on the ground, this will be height above ground. If spawning on targets, it will spawn at their height midpoints, plus this offset. */ type ZOffset16 = number; type Source10 = "Self" | "Ground Target" | "Target Entity" | "Summoner"; type GameSpeed1 = number; /** * How long the slow-mo effect will last. */ type Seconds3 = number; type Green54 = number; type Red54 = number; type Blue54 = number; /** * What sound this sky beam should play when it appears. */ type Sound12 = string; /** * If targeting an entity, the skybeam will be based on the entity's width unless this field is set. */ type SkybeamPixelWidth2 = number; type Location11 = "Self" | "Ground Target" | "Target Entity" | "Summoner"; type Location12 = "Self" | "Ground Target" | "Target Entity" | "Summoner"; /** * Can be useful for depth-sorting. For example, a Y offset of 1 will spawn the explosion in front of whatever is explosing. */ type YOffset17 = number; /** * If spawning on the ground, this will be height above ground. If spawning on targets, it will spawn at their height midpoints, plus this offset. */ type ZOffset17 = number; type Green55 = number; type Red55 = number; type Blue55 = number; type Green56 = number; type Red56 = number; type Blue56 = number; /** * There is a default sound, but you can override it here. */ type Sound13 = string; type Min67 = number; type Max67 = number; /** * If true, the ring will spawn at the ground level. */ type SpawnOnGround8 = boolean; /** * Defaults to true. If false, only one ring will be shown. */ type ShowInternalRing2 = boolean; type Green57 = number; type Red57 = number; type Blue57 = number; /** * How much the camera should shake when the lightning appears. */ type CameraShake5 = number; /** * What sound this lightning should play when it appears. */ type Sound14 = string; /** * If targeting an entity, the lightning will be based on the entity's width unless this field is set. */ type LightningPixelWidth2 = number; /** * If true, the game will briefly slow down when the lightning appears. */ type SlowMotionFlash2 = boolean; type Location13 = "Self" | "Ground Target" | "Target Entity" | "Summoner"; /** * The chance that this action will occur. */ type Chance11 = number; type Quantity106 = number; type Item16 = string; type ShowOnTooltip = boolean; /** * The chance that this action will occur. */ type Chance12 = number; type Min68 = number; type Max68 = number; type Item17 = string; type UnlockedBy48 = string; type EnglishText103 = string; /** * If checked, this text will not be exported for localization. */ type Skip103 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText77 = string; /** * By default, the pickup celebration will play if the item requires it. You can disable that behavior here. */ type PlayPickupCelebration = boolean; /** * If true, the items will be gained for each target captured by this action group. */ type PerTarget = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude72 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll78 = boolean; type Quantity108 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants66 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags66 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude73 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll79 = boolean; type Quantity109 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants67 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags67 = boolean; type UnlockedBy50 = string; type EnglishText104 = string; /** * If checked, this text will not be exported for localization. */ type Skip104 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText78 = string; /** * The chance that this action will occur. */ type Chance13 = number; /** * If in an ability pool, we assume each tick applies the buff when displaying its tooltip. You can override the number of ticks shown that apply the buff here. */ type PoolTicksTooltipOverride = number; /** * How many stacks of the buff to apply. Stacks will build up within instances of buffs, and then will overflow into new instances if the maximum stacks are reached for the current instance. */ type Stacks75 = number; /** * The number of stacks applied can be multiplied by the number of targets captured. */ type MultiplyStacksByTargets = boolean; /** * If set, and if the buff can absorb damage, this will set how much damage it can absorb (based on the level of the user). */ type AbsorbPercentage1 = number; /** * If set, and if the buff can heal, this will set how much health it restores (based on the level of the user). */ type HealingPercentage2 = number; type BuffTarget2 = "Self" | "Summoner" | "Target Entity"; /** * If set, and if the buff deals damage, this will modify its damage. */ type DamageModifier1 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude74 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll80 = boolean; type Quantity110 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants68 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags68 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude75 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll81 = boolean; type Quantity111 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants69 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags69 = boolean; type UnlockedBy52 = string; type EnglishText105 = string; /** * If checked, this text will not be exported for localization. */ type Skip105 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText79 = string; type DataField2 = string; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude76 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll82 = boolean; type Quantity112 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants70 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags70 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude77 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll83 = boolean; type Quantity113 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants71 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags71 = boolean; type DatafieldOwner3 = "Self" | "Target Entity" | "Summoner"; type ChangeType = "Set" | "Increment"; type UnlockedBy54 = string; type EnglishText106 = string; /** * If checked, this text will not be exported for localization. */ type Skip106 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText80 = string; type Value3 = number; /** * Where the new entity will be created. */ type NewEntityLocation1 = "Ground Target" | "Self" | "Target Entity" | "Summoner"; /** * 'Summoned' entities exist on behalf of their creators, and their actions will cast blame to the creator. Defaults to false. */ type EntityIsSummoned1 = boolean; type Min69 = number; type Max69 = number; /** * If false, the new entity can spawn just about anywhere, including THROUGH WALLS! */ type RequireLineOfSight1 = boolean; /** * Whether spawning will attempt to find a clear space. */ type AttemptNonOverlap1 = boolean; /** * Defaults to True. If True, the tooltip for the spawned entity will be shown on the tooltip of this ability. */ type TooltipPullthrough = boolean; /** * If true, the player will automatically pick up the item if they caused the entity to be created. */ type AutoPickupIfPlayerCaused = boolean; /** * If true, the new entity will inherit its creator's 'Threat' situation, putting it in the same combat as whatever created it. */ type InheritThreat1 = boolean; /** * If set, this entity will spawn wherever you say, regardless of whether that is allowed. */ type IgnoreAllConflicts1 = boolean; type EntityToCreate = string; type UnlockedBy56 = string; type EnglishText107 = string; /** * If checked, this text will not be exported for localization. */ type Skip107 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText81 = string; type Projectile = { use_fallback?: UseFallbackTarget; direction_offset?: AimOffset2; style?: "Lob"; ground_impact_action_groups?: ActionGroups2; time_in_flight: FlightTimeSeconds; multiples?: LobMultipleProjectiles; } | { bullet_multiples?: ProjectileBatches; width: HitboxWidthPixels; style?: "Bullet"; acceleration?: AccelerationPixelsSec2; z_behavior?: ZBehavior; bullet_impact_action_groups?: ActionGroups3; pass_through_filter?: PassThroughFilter; show_aim_telegraphs?: ShowAimTelegraphs; lifetime_range: LifetimeSeconds; speed_range: SpeedPixelsSec; expiration_action_groups?: ActionGroups4; homing?: HomingBehavior; }; /** * If true, and the lobbed projectile has no valid destination, it will search for valid locations to hit. */ type UseFallbackTarget = boolean; /** * This will aim the lobbed projectile the same distance as the intended target, but will shift the aim direction by this amount. */ type AimOffset2 = number; type Min70 = number; type Max70 = number; /** * The probability of this batch of projectiles firing. */ type BatchChance = number; /** * This will aim the lobbed projectile the same distance as the intended target, but will shift the aim direction by this amount. */ type BatchAimOffset = number; type Min71 = number; type Max71 = number; type Min72 = number; type Max72 = number; type Condition6 = { abilities?: Abilities6; casting_state: Casting4; condition_type?: "Ability"; } | { datafield_evaluation: Evaluation9; condition_type?: "Datafield"; } | { daytime: DuringDaytime5; condition_type?: "Daylight"; } | { condition_type?: "Combat"; combat: InCombat4; } | { insight_modifier?: InsightModifier4; timestamp: Timestamp6; condition_type?: "Timestamp"; evaluation: "==" | "!=" | "<" | "<=" | ">" | ">="; minutes_passed: MinutesSinceTimestamp4; } | { moon: ActiveMoon5; condition_type?: "Moon"; } | { quest: QuestToCheck7; condition_type?: "Quest"; quest_status: QuestStatus7; } | { following: Following19; condition_type?: "Artisan Following"; artisan: Buddy9; } | { prerequisite: Insight18; unlock_text?: InsightTooltip5; condition_type?: "Insight"; } | { proximity_range: DistanceRequiredGridSpaces4; proximity_targets: Targets6; proximity_ignores_stealth: IgnoreStealthedTargets4; condition_type?: "Proximity"; proximity_quantity: NumberOfTargets8; } | { hp_evaluation: HealthEvaluation4; condition_type?: "Health"; } | { require_all: RequireAll86; condition_type?: "Item Equipped"; items: Items92; } | { condition_type?: "Item Wielding"; items: Items93; } | { condition_type?: "Wearing Equipment Set"; set_evaluation: PiecesEquipped4; } | { condition_type?: "Buffs"; buff_exclusive?: Exclusive10; buff_require_all: RequireAll87; buff_check_self: CheckSelf4; buff_own_only: OwnBuffsOnly4; buff_num_targets?: NumberOfTargets9; buff_target_filter?: BuffTargetFilter4; buff_proximity?: BuffTargetRange4; buff_stack_evaluation?: Stacks84; buffs: Buffs160; buff_target: TargetEntity22; } | { condition_type?: "Boss Defeated"; boss: Boss7; } | { comparison: NumberSummoned4; condition_type?: "Summoned Entities"; summoned_filter?: SummonedEntitiesFilter4; } | { areas: Areas7; condition_type?: "Area"; } | { condition_type?: "Weather"; weather_ids: Weather4; } | { condition_type?: "Boss Phase"; phase: Phase4; } | { scene: Scene5; condition_type?: "Scene"; exclusive?: Exclusive11; } | { following: Following20; condition_type?: "Pet"; pet_item_id: Pet12; }; /** * If set, the ability's casting state must match this checkbox. */ type Casting4 = boolean; type DuringDaytime5 = boolean; type InCombat4 = boolean; /** * How much the 'Minutes Since Timestamp' should be adjusted (up or down) for each point invested in the Insight. */ type ChangePerPoint35 = number; type Insight17 = string; type Timestamp6 = string; /** * If greater than 0, then this many minutes will have passed since the timestamp was set. If less than 0, the timestamp will be this many minutes from now. */ type MinutesSinceTimestamp4 = number; type ActiveMoon5 = string; /** * The quest whose status we are querying. */ type QuestToCheck7 = string; type QuestStatus7 = "Complete" | "Started" | "Not Started"; type Following19 = boolean; type Buddy9 = string; type Insight18 = string; type EnglishText108 = string; /** * If checked, this text will not be exported for localization. */ type Skip108 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText82 = string; type Min73 = number; type Max73 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude78 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll84 = boolean; type Quantity114 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants72 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags72 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude79 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll85 = boolean; type Quantity115 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants73 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags73 = boolean; /** * If checked, the proximity check will fail on targets that are stealthed. */ type IgnoreStealthedTargets4 = boolean; type Evaluation10 = "==" | "!=" | "<" | "<=" | ">" | ">="; type Quantity116 = number; /** * If checked, this condition will only be met if ALL of the items listed are equipped at the same time. */ type RequireAll86 = boolean; type EquipmentSet7 = string; /** * If checked, this condition will only be considered met if the defined conditions are NOT met. */ type Exclusive10 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on yourself at the same time. */ type RequireAll87 = boolean; /** * Obsolete--delete. */ type CheckSelf4 = boolean; /** * If checked, only buffs created by you will be checked. Otherwise, all buffs will be checked. */ type OwnBuffsOnly4 = boolean; type Quantity117 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude80 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll88 = boolean; type Quantity118 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants74 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags74 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude81 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll89 = boolean; type Quantity119 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants75 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags75 = boolean; type Min74 = number; type Max74 = number; type Quantity120 = number; /** * Which entity's buffs to query. */ type TargetEntity22 = "Self" | "Other" | "All Entities"; type Boss7 = string; type Quantity121 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude82 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll90 = boolean; type Quantity122 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants76 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags76 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude83 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll91 = boolean; type Quantity123 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants77 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags77 = boolean; type Phase4 = string; /** * The target entity must belong to this scene. */ type Scene5 = string; /** * If checked, the condition will be met if the entity is NOT from the scene. */ type Exclusive11 = boolean; /** * If checked, the pet must be following you. Otherwise, the pet must NOT be following you. */ type Following20 = boolean; /** * Which pet to check. */ type Pet12 = string; type Min75 = number; type Max75 = number; /** * If true, then every condition must be met. If false, then only one of the conditions must be met. Defaults to true. */ type RequireAllConditions5 = boolean; /** * The probability of this batch of projectiles firing. */ type BatchChance1 = number; type Min76 = number; type Max76 = number; type Condition7 = { abilities?: Abilities7; casting_state: Casting5; condition_type?: "Ability"; } | { datafield_evaluation: Evaluation11; condition_type?: "Datafield"; } | { daytime: DuringDaytime6; condition_type?: "Daylight"; } | { condition_type?: "Combat"; combat: InCombat5; } | { insight_modifier?: InsightModifier5; timestamp: Timestamp7; condition_type?: "Timestamp"; evaluation: "==" | "!=" | "<" | "<=" | ">" | ">="; minutes_passed: MinutesSinceTimestamp5; } | { moon: ActiveMoon6; condition_type?: "Moon"; } | { quest: QuestToCheck8; condition_type?: "Quest"; quest_status: QuestStatus8; } | { following: Following21; condition_type?: "Artisan Following"; artisan: Buddy10; } | { prerequisite: Insight20; unlock_text?: InsightTooltip6; condition_type?: "Insight"; } | { proximity_range: DistanceRequiredGridSpaces5; proximity_targets: Targets7; proximity_ignores_stealth: IgnoreStealthedTargets5; condition_type?: "Proximity"; proximity_quantity: NumberOfTargets10; } | { hp_evaluation: HealthEvaluation5; condition_type?: "Health"; } | { require_all: RequireAll94; condition_type?: "Item Equipped"; items: Items100; } | { condition_type?: "Item Wielding"; items: Items101; } | { condition_type?: "Wearing Equipment Set"; set_evaluation: PiecesEquipped5; } | { condition_type?: "Buffs"; buff_exclusive?: Exclusive12; buff_require_all: RequireAll95; buff_check_self: CheckSelf5; buff_own_only: OwnBuffsOnly5; buff_num_targets?: NumberOfTargets11; buff_target_filter?: BuffTargetFilter5; buff_proximity?: BuffTargetRange5; buff_stack_evaluation?: Stacks91; buffs: Buffs173; buff_target: TargetEntity23; } | { condition_type?: "Boss Defeated"; boss: Boss8; } | { comparison: NumberSummoned5; condition_type?: "Summoned Entities"; summoned_filter?: SummonedEntitiesFilter5; } | { areas: Areas8; condition_type?: "Area"; } | { condition_type?: "Weather"; weather_ids: Weather5; } | { condition_type?: "Boss Phase"; phase: Phase5; } | { scene: Scene6; condition_type?: "Scene"; exclusive?: Exclusive13; } | { following: Following22; condition_type?: "Pet"; pet_item_id: Pet13; }; /** * If set, the ability's casting state must match this checkbox. */ type Casting5 = boolean; type DuringDaytime6 = boolean; type InCombat5 = boolean; /** * How much the 'Minutes Since Timestamp' should be adjusted (up or down) for each point invested in the Insight. */ type ChangePerPoint36 = number; type Insight19 = string; type Timestamp7 = string; /** * If greater than 0, then this many minutes will have passed since the timestamp was set. If less than 0, the timestamp will be this many minutes from now. */ type MinutesSinceTimestamp5 = number; type ActiveMoon6 = string; /** * The quest whose status we are querying. */ type QuestToCheck8 = string; type QuestStatus8 = "Complete" | "Started" | "Not Started"; type Following21 = boolean; type Buddy10 = string; type Insight20 = string; type EnglishText109 = string; /** * If checked, this text will not be exported for localization. */ type Skip109 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText83 = string; type Min77 = number; type Max77 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude84 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll92 = boolean; type Quantity125 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants78 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags78 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude85 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll93 = boolean; type Quantity126 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants79 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags79 = boolean; /** * If checked, the proximity check will fail on targets that are stealthed. */ type IgnoreStealthedTargets5 = boolean; type Evaluation12 = "==" | "!=" | "<" | "<=" | ">" | ">="; type Quantity127 = number; /** * If checked, this condition will only be met if ALL of the items listed are equipped at the same time. */ type RequireAll94 = boolean; type EquipmentSet8 = string; /** * If checked, this condition will only be considered met if the defined conditions are NOT met. */ type Exclusive12 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on yourself at the same time. */ type RequireAll95 = boolean; /** * Obsolete--delete. */ type CheckSelf5 = boolean; /** * If checked, only buffs created by you will be checked. Otherwise, all buffs will be checked. */ type OwnBuffsOnly5 = boolean; type Quantity128 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude86 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll96 = boolean; type Quantity129 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants80 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags80 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude87 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll97 = boolean; type Quantity130 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants81 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags81 = boolean; type Min78 = number; type Max78 = number; type Quantity131 = number; /** * Which entity's buffs to query. */ type TargetEntity23 = "Self" | "Other" | "All Entities"; type Boss8 = string; type Quantity132 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude88 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll98 = boolean; type Quantity133 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants82 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags82 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude89 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll99 = boolean; type Quantity134 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants83 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags83 = boolean; type Phase5 = string; /** * The target entity must belong to this scene. */ type Scene6 = string; /** * If checked, the condition will be met if the entity is NOT from the scene. */ type Exclusive13 = boolean; /** * If checked, the pet must be following you. Otherwise, the pet must NOT be following you. */ type Following22 = boolean; /** * Which pet to check. */ type Pet13 = string; type Min79 = number; type Max79 = number; /** * If true, then every condition must be met. If false, then only one of the conditions must be met. Defaults to true. */ type RequireAllConditions6 = boolean; type HitboxWidthPixels = number; type AccelerationPixelsSec2 = number; /** * How high the bullet will end up being off the ground (in pixels). */ type ZTarget1 = number; /** * What proportion of the projectile's life it takes to reach the Z target.. */ type ZTime = number; type ZStyle = "Linear" | "Cubic"; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude90 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll100 = boolean; type Quantity136 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants84 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags84 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude91 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll101 = boolean; type Quantity137 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants85 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags85 = boolean; /** * If true, the game will draw a line from the bullet's origin to its destination. */ type ShowAimTelegraphs = boolean; type Min80 = number; type Max80 = number; type Min81 = number; type Max81 = number; /** * How quickly the bullet can adjust its direction. */ type TurnSpeedDegreesSec = number; /** * Whether the bullet can home in on its own source entity. */ type AllowSelfHoming = boolean; /** * The homing can kick in after a certain duration. */ type HomingStartSeconds = number; /** * When deciding what to home onto, the bullet can use its starting point instead of its current location. */ type HomingDirectionFromOrigin = boolean; /** * When deciding what to home onto, the bullet can use the base cast direction instead of its current direction. */ type HomingDirectionUsesBaseCast = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude92 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll102 = boolean; type Quantity138 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants86 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags86 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude93 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll103 = boolean; type Quantity139 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants87 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags87 = boolean; /** * The chance that this action will occur. */ type Chance14 = number; type RemoveNegativeBuffs1 = boolean; /** * How many stacks of the buff to remove. If unset, all stacks will be removed. */ type Stacks98 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude94 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll104 = boolean; type Quantity140 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants88 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags88 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude95 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll105 = boolean; type Quantity141 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants89 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags89 = boolean; type RemovePositiveBuffs1 = boolean; type Buff6 = string; type Target2 = "Self" | "Summoner" | "Target Entity"; type UnlockedBy58 = string; type EnglishText110 = string; /** * If checked, this text will not be exported for localization. */ type Skip110 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText84 = string; /** * The chance that this action will occur. */ type Chance15 = number; /** * How many charges of Juke to change. */ type ChargeIncrementAmount = number; /** * If true, the leaper will not be stopped by water. */ type LeapTraversesWater = boolean; type LeapDestination = "Ground Target" | "Target Entity" | "Self" | "Summoner"; type ChanceOfPlaying1 = number; type Sound15 = string; type ChanceOfPlaying2 = number; type Sound16 = string; /** * You can give some time after the leap for an animation to play. The leaping entity will be immobile while this animation plays. */ type FollowthroughSeconds = number; /** * The leap can target a random location within this many grid spaces. */ type DistanceRandomness1 = number; /** * If your leap is going too high, turn gravity down. */ type GravityModifier = number; type AnimationName2 = string; type Looping2 = boolean; /** * If checked, the telegraph for this movement outcome will be drawn during the initial ability cast, not just while the entity is midair. */ type ShowTelegraphDuringCast1 = boolean; /** * How many seconds the leaper will be airborne. */ type LeapDuration = number; /** * How much faster or slower the knockback will be, compared to the baseline speed. */ type KnockSpeedModifier = number; /** * The chance that this action will occur. */ type Chance16 = number; /** * If true, the knock direction will be settable in the editor the 'Knockback Direction' datafield. This means the knockback won't be away from the caster by default. */ type DirectionDatafield = boolean; /** * How far the entity will be knocked back. */ type DistanceGridSpaces = number; type UnlockedBy60 = string; type EnglishText111 = string; /** * If checked, this text will not be exported for localization. */ type Skip111 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText85 = string; type EntityToKnockBack = "Target Entity" | "Self" | "Summoner"; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude96 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll106 = boolean; type Quantity142 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants90 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags90 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude97 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll107 = boolean; type Quantity143 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants91 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags91 = boolean; /** * In degrees. 0 is away from the caster, 180 is toward the caster. */ type DirectionOffset1 = number; /** * The knock direction will be randomly modified (up or down) by up to this amount. */ type DirectionRandomness2 = number; type ChanceOfPlaying3 = number; type Sound17 = string; /** * The chance that this action will occur. */ type Chance17 = number; type Location14 = "Target Entity" | "Self" | "Summoner" | "Ground Target"; type Start2 = number; type End2 = number; type StartTime = number; type EndTime = number; type EnglishText112 = string; /** * If checked, this text will not be exported for localization. */ type Skip112 = boolean; type EnglishText113 = string; /** * If checked, this text will not be exported for localization. */ type Skip113 = boolean; type Green58 = number; type Red58 = number; type Blue58 = number; type TooltipIcon = string; /** * The sound that will play when the pool is spawned */ type SpawnSound = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler89 = string; /** * If set, the telegraph for this pool will show while the ability that spawns the pool is being cast. */ type ShowTelegraphDuringCast2 = boolean; type Seconds4 = number; /** * The gap in time between emitting particles. If set to 0, it will emit particles every frame (but at a performance cost. */ type EmitIntervalSeconds = number; type Min82 = number; type Max82 = number; type Min83 = number; type Max83 = number; /** * If set, the radius of the spawning will scale relative to the pool's 'scale' modifier. Useful for keeping particles lined up with telegraphs. */ type ScaledSpawnRadius3 = boolean; /** * If set, the particles will use the world element as an anchor point, so they will no longer be 'left behind' if the world element moves. */ type Local = boolean; /** * If set, the particles will always move away from the center of the emitter. */ type BlastOutward3 = boolean; type Min84 = number; type Max84 = number; /** * If set, the spawn radius will be treated as grid spaces instead of pixels. */ type SpawnRadiusAsGrid3 = boolean; /** * If spawning on the ground, this will be height above ground. If spawning on targets, it will spawn at their height midpoints, plus this offset. */ type ZOffset18 = number; /** * The chance that this action will occur. */ type Chance18 = number; type DatafieldOwner4 = "Self" | "Target Entity" | "Summoner"; /** * If the datafield isn't equal to this value, it will be set to it. */ type Value01 = number; type DataField3 = string; /** * If the datafield isn't equal to this value, it will be set to it. */ type Value12 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude98 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll108 = boolean; type Quantity144 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants92 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags92 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude99 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll109 = boolean; type Quantity145 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants93 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags93 = boolean; type UnlockedBy62 = string; type EnglishText114 = string; /** * If checked, this text will not be exported for localization. */ type Skip114 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText86 = string; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude100 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll110 = boolean; type Quantity146 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants94 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags94 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude101 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll111 = boolean; type Quantity147 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants95 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags95 = boolean; type Shape1 = { scale?: ScaleModifier7; arc?: Arc; offset?: Offset1; shape?: "circle"; color?: EditorColor; name?: NameInternal5; mirror?: Mirror; rotational_mirror?: RotationalMirror; radius: Radius1; } | { scale?: ScaleModifier8; offset?: Offset2; shape?: "triangles"; color?: EditorColor1; name?: NameInternal6; points: Points; mirror?: Mirror1; rotational_mirror?: RotationalMirror1; }; type ScaleModifier7 = number; type SpreadDegrees2 = number; type DirectionDegrees = number; type X = number; type Y = number; type Green59 = number; type Red59 = number; type Blue59 = number; type NameInternal5 = string; type X1 = boolean; type Y1 = boolean; /** * How many times to mirror this shape or shape collection. */ type Count = number; type Inner = number; type Outer = number; type ScaleModifier8 = number; type X2 = number; type Y2 = number; type Green60 = number; type Red60 = number; type Blue60 = number; type NameInternal6 = string; type X3 = number; type Y3 = number; type X4 = boolean; type Y4 = boolean; /** * How many times to mirror this shape or shape collection. */ type Count1 = number; type ScaleModifier9 = number; type X5 = number; type Y5 = number; type NameInternal7 = string; type X6 = boolean; type Y6 = boolean; /** * How many times to mirror this shape or shape collection. */ type Count2 = number; type RotateWithAimDirection = boolean; /** * If true, the caster will be included as a target if the caster is inside the telegraph. */ type IncludeCasterAsViableTarget = boolean; /** * This can be used to reduce the visibility of a telegraph. */ type AlphaModifier = number; /** * This will be the scale before the animation begins. The scale will always end at 1, so the telegraph matches reality when the animation is finished. */ type ScaleStart = number; type Start3 = number; type End3 = number; type Style13 = "Ease Out Elastic" | "Ease Out Back" | "Ease Out Cubic" | "Linear"; type Start4 = number; type End4 = number; type Start5 = number; type End5 = number; type NameInternal8 = string; /** * If the ability is single-targeted, it will normally always hit its target, even if the target isn't in a telegraph. If set to false, target will still aim at the single target, but the single target will need to be within the telegraph to be struck. */ type AlwaysHitSingleTarget = boolean; /** * If true, the actions in this action group will always attempt to be performed on the caster. */ type CastOnSelf = boolean; type UnlockedBy64 = string; type EnglishText115 = string; /** * If checked, this text will not be exported for localization. */ type Skip115 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText87 = string; /** * This ability can automatically jump aim direction after each tick by a certain amount. */ type DirectionJumpPerTick = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude102 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll112 = boolean; type Quantity148 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants96 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags96 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude103 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll113 = boolean; type Quantity149 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants97 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags97 = boolean; type Min85 = number; type Max85 = number; /** * If true, the player only needs to aim directionally to find a single target while using a mouse, rather than mousing over the target. */ type DirectionalTargetingForPlayer = boolean; /** * What this ability is called. */ type Name35 = string; /** * If set, the camera will use this zoom level while locked on to this camera anchor. Higher values mean you can see more. */ type Zoom = number; /** * 100% means the camera goes all the way to the anchor. 50% keeps it halfway between the player and the anchor. */ type BiasAmount = number; type NameInternal9 = string; /** * How high the camera should be above the anchor. */ type CameraZOffset = number; /** * How close the player must get for the camera anchor to lock in. */ type RadiusGrid = number; /** * The music to play when the player is near this anchor. */ type Music4 = string; type Name36 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup31 = string; /** * The distance from the anchor at which the music will start to play. */ type GridRange = number; type EnglishText116 = string; /** * If checked, this text will not be exported for localization. */ type Skip116 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText88 = string; /** * If set, this icon will display next to the storyline in the sidebar while in Scramble. */ type ScrambleIcon = string; type Order1 = number; /** * If set, this icon will display next to the storyline in the sidebar */ type Icon6 = string; type EnglishText117 = string; /** * If checked, this text will not be exported for localization. */ type Skip117 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText89 = string; type EnglishText118 = string; /** * If checked, this text will not be exported for localization. */ type Skip118 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText90 = string; type Green61 = number; type Red61 = number; type Blue61 = number; type EnglishText119 = string; /** * If checked, this text will not be exported for localization. */ type Skip119 = boolean; /** * How many days it takes for this moon to come around again. Moons can overlap. One moon must have a 1-day cycle -- that will be the default moon, and will determine the default night colors. */ type DaysPerCycle = number; type Green62 = number; type Red62 = number; type Blue62 = number; type ColorGrading = string; /** * This sound must be part of the 'Ambience' earparty group. */ type AmbientSound = string; type NameInternal10 = string; type Darkness = number; type ParticlesSecond = number; type ShowOnLand = boolean; type ShowOnWater = boolean; type ParticleSystem6 = string; type Scale11 = number; type Sprite8 = string; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed31 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude28 = number; type SpeedPixelsSec1 = number; type Green63 = number; type Red63 = number; type Blue63 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed32 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude29 = number; type SpeedPixelsSec2 = number; type Alpha2 = number; type MoteNameInternal = string; type EnglishText120 = string; /** * If checked, this text will not be exported for localization. */ type Skip120 = boolean; type EnglishText121 = string; /** * If checked, this text will not be exported for localization. */ type Skip121 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText91 = string; type Icon7 = string; /** * If this damage type is reduced by a stat, link to that stat here. */ type ResistanceStat = string; type Green64 = number; type Red64 = number; type Blue64 = number; /** * If true, this damage type exists as a 'roll up' to categorize other damage types, but isn't usable as a type of damage itself. */ type Aggregator = boolean; /** * If set, this will dictate if this boost only applies to direct or periodic damage. If unset, it will apply to all damage. */ type DirectDamage5 = boolean; /** * If the entity dealing damage has this stat, the damage will be boosted by it. */ type BoostingStat = string; /** * Whether the stat should be used as a multiplier or added to the damage. Multipliers will assume the stat is a percentage and will use the formula (1+Stat)*Damage. */ type BoostStyle = "Add" | "Multiply"; type EnglishText122 = string; /** * If checked, this text will not be exported for localization. */ type Skip122 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText92 = string; /** * If set, then this damage will be counted as a subset of the parent. */ type ParentDamageType = string; /** * A human-readable name for this timestamp. */ type Name41 = string; type UIIcon28 = string; /** * An explanation of what this data field is intended to be used for. */ type Description23 = string; /** * Order in which this infusion will appear in its tier. */ type SubOrder = number; type UIIcon29 = string; type EnglishText123 = string; /** * If checked, this text will not be exported for localization. */ type Skip123 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText93 = string; /** * Whether this infusion is an empowerment infusion. Empowerments auto-unlock once you have accumulated enough jems. */ type Empowerment = boolean; type EnglishText124 = string; /** * If checked, this text will not be exported for localization. */ type Skip124 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText94 = string; type Value4 = number; type Stat5 = string; /** * Which row this infusion will appear in. Jem costs go up each tier. */ type Tier = number; type EnglishText125 = string; /** * If checked, this text will not be exported for localization. */ type Skip125 = boolean; /** * If checked, then only one buff of this type can be active at a time. */ type Exclusive14 = boolean; /** * The name of this group of sounds. */ type Name44 = string; /** * This group can inherit gain from a parent group. */ type ParentGroup = string; type Min86 = number; type Max86 = number; /** * All sounds in this group will have their gain multiplied by this number at all times. This will also multiply with parent groups. So for example, if this group has a gain modifier of 0.5, and its parent also has a gain modifier of 0.5, then sounds in this group will have a final gain of 0.25. */ type GainModifier = number; /** * The starting point of this stat, all else equal. */ type ValueDefault = number; /** * If checked, the decimal precision will be enforced, and any trailing zeroes will be removed. */ type TruncateEndingZeroes = boolean; /** * How many decimals to display. */ type DecimalPrecision = number; type DisplayAsPercent = boolean; type EnglishText126 = string; /** * If checked, this text will not be exported for localization. */ type Skip126 = boolean; type EnglishText127 = string; /** * If checked, this text will not be exported for localization. */ type Skip127 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText95 = string; type UsableOnEquipment = boolean; /** * The order in which the stats appear in a stat breakdown. */ type Order2 = number; /** * If checked, the stat will be treated as though its baseline value is 100%, for the sake of multiplying against buffs. */ type IsModifier = boolean; /** * When equipment gets 'stat points', each stat point will boost this stat by this amount. */ type ValuePoint = number; type ShowOnPlayerUI = boolean; type ArmorValuePoint = number; /** * The lowest this stat can go. */ type ValueMin = number; type ArmorValueLevelChange = number; /** * The highest this stat can go. */ type ValueMax = number; type UsableOnBuffs = boolean; type EnglishText128 = string; /** * If checked, this text will not be exported for localization. */ type Skip128 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText96 = string; /** * This stat will be indented under its parent where possible. */ type ParentStat = string; /** * If true, this data field can be edited in the World Editor. */ type Editable = boolean; type Min87 = number; type Max87 = number; /** * The UID pool that this data field should pull from in the Editor. */ type EditorUIDPool = "cl2_items"; /** * An explanation of what this data field is intended to be used for. */ type Description26 = string; /** * How this data is stored in a buffer. */ type DataType = "u8" | "u16" | "u32" | "s8" | "s16" | "s32" | "f32"; /** * If you pick up a world element that has this data field, the data field can be preserved when the item is in your inventory. */ type SaveToInventory = boolean; /** * If true, this data field will be preserved as it exists in the World Editor on each instance. */ type SaveToBaseWorld = boolean; /** * If a world element has this data field and exists out in the world, the data field will be preserved between game sessions as the player saves and loads. */ type SaveToGameplay = boolean; type UIIcon30 = string; /** * A human-readable name for this data field. */ type Name46 = string; type EnglishText129 = string; /** * If checked, this text will not be exported for localization. */ type Skip129 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText97 = string; type Green65 = number; type Red65 = number; type Blue65 = number; /** * The order in which this group will be displayed in the knowledge UI. */ type Order3 = number; /** * A song or collection of songs that can play in a given context. */ type Music5 = Music6 & Music7; /** * For internal reference */ type Name48 = string; type Style14 = "Looping" | "Playlist"; type Music7 = { intro?: Intro; intro_combat?: IntroCombatOverlay; loop: Loop; style?: "Looping"; loop_in_seconds?: LoopInSeconds; name?: Name49; loop_combat?: LoopCombatOverlay; pause_seconds?: PauseSeconds4; } | { style?: "Playlist"; name?: Name50; tracks: Tracks; }; /** * The sound that plays before the loop. */ type Intro = string; /** * A track to play synchronized with the Intro track while in combat. */ type IntroCombatOverlay = string; /** * The main part of the track that will play on a loop. */ type Loop = string; /** * The amount of time after the Intro begins playing for the loop to start. By default, the loop will begin playing when the Intro ends, but you can have them overlap by setting this value. */ type LoopInSeconds = number; /** * For internal reference */ type Name49 = string; /** * A track to play synchronized with the Combat track while in combat. */ type LoopCombatOverlay = string; /** * If this track stops and then resumes within this time frame, it will pick up where it left off and continue looping. Otherwise, it will start over, replaying its its intro. */ type PauseSeconds4 = number; /** * For internal reference */ type Name50 = string; /** * When in this editor category, how the editor should select things and interact with the world. */ type SpawnMode = "Items" | "Tiles" | "Areas" | "Scenes"; type Green66 = number; type Red66 = number; type Blue66 = number; /** * The order in which this thing should appear in the Editor selector. */ type Order4 = number; type Icon8 = string; type Name51 = string; /** * Name of this damage profile. For internal use. */ type Name52 = string; type DamageAmount1 = number; type DamageType2 = string; type Modifier5 = number; type Filter99 = string; type Name53 = string; /** * If no animation information is present for this state, it can fall back to another state. */ type FallbackState = string; /** * Unless otherwise specified, we will try to play the animation using this Spine name when we enter this animation state. */ type DefaultSpineAnimationName = string; /** * Describe scenarios in which this animation state is used. */ type Description27 = string; /** * The particle system's string ID in the Game Maker project. */ type Name54 = string; /** * During dialogue moments, this emoji will play this sound when displayed. */ type Sound18 = string; type NameInternal11 = string; type Sprite9 = string; type EnglishText130 = string; /** * If checked, this text will not be exported for localization. */ type Skip130 = boolean; type Emoji12 = string; type NameInternal12 = string; type ProfileNameInternal = string; type Brightness1 = number; type Saturation = number; type RedMultiplier = number; type GreenMultiplier = number; type BlueMultiplier = number; type DarkLevels = number; type LightLevels = number; type ShadowThreshold = number; type ShadowMultiplier = number; type HighlightThreshold = number; type HighlightMultiplier = number; /** * A human-readable name for this timestamp. */ type MoteNameInternal1 = string; /** * The name of the spine slot that this data field is intended to be used for. */ type SlotName1 = string; /** * If true, there will always be an image chosen in this slot. */ type Required = boolean; /** * The spine sprite that this slot is intended to be used for. */ type SpineSprite = string; /** * How the actor animates while not actively moving. */ type StationaryVisuals13 = { animation?: Animation41; babbler?: Babbler90; style?: "Stand"; } | { z_baseline: BaselineAltitudePixels27; style: "Fly"; z_sine?: AltitudeSineWave27; flaps?: FlappingVerticalMovements27; animation?: Animation42; babbler?: Babbler91; }; /** * Defaults to 'idle. */ type Animation41 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler90 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels27 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed33 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude30 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds27 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance27 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds27 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation42 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler91 = string; /** * Relative to the global movement speed. */ type MovementSpeed14 = number; type MovementVisuals14 = { hop_speed: HopVerticalSpeed14; hop_anticipation?: HopAnticipationSeconds14; hop_followthrough?: PostHopFollowthroughSeconds14; style: "Hop"; animation?: HopAnimationName14; babbler?: Babbler92; } | { animation?: RunAnimationName14; babbler?: Babbler93; run_vertical_speed: RunVerticalBounceSpeed14; smoke_bones?: SmokePoofBones14; style: "Run"; } | { animation?: CrawlAnimationName14; babbler?: Babbler94; style: "Crawl"; } | { z_baseline: BaselineAltitudePixels28; style: "Fly"; z_sine?: AltitudeSineWave28; flaps?: FlappingVerticalMovements28; animation?: Animation43; babbler?: Babbler95; }; /** * As a percentage of base gravity. This is fairly sensitive. */ type HopVerticalSpeed14 = number; /** * How long to hold before rising off the ground, to make room for a pre-hop animation. */ type HopAnticipationSeconds14 = number; /** * How long to hold after landing on the ground from a hop, to make room for animations. */ type PostHopFollowthroughSeconds14 = number; /** * Defaults to 'hop' but can be overridden. */ type HopAnimationName14 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler92 = string; /** * Defaults to 'run' but can be overridden. */ type RunAnimationName14 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler93 = string; /** * How fast the character should pop up off the ground with each leg movement. As a percentage of base gravity. This is fairly sensitive. */ type RunVerticalBounceSpeed14 = number; type BoneName14 = string; /** * Defaults to 'crawl' but can be overridden. */ type CrawlAnimationName14 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler94 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels28 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed34 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude31 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds28 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance28 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds28 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation43 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler95 = string; type DescriptionInternal = string; /** * Used for sorting the phases in the GC sidebar. */ type Order5 = number; /** * Higher number means you can see more. */ type ZoomLevel = number; type Boss9 = string; /** * If set, this music will play during this phase. If unset, there will be no music during this phase. */ type Music8 = string; type NameInternal13 = string; type Ability13 = string; type Targeting = { direction: Direction2; style: "Fixed Direction"; } | { targets: PotentialTargets; choose_random?: ChooseRandom; range?: Range; filter_targets_near_entities?: FilterTargetsNearEntities; style: "Toward Entity"; }; /** * The direction (in degrees) that the boss will cast this ability. */ type Direction2 = number; /** * If set, the boss will choose a random quest marker from the list, instead of the nearest one. */ type ChooseRandom = boolean; type Min88 = number; type Max88 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude104 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll114 = boolean; type Quantity150 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants98 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags98 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude105 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll115 = boolean; type Quantity151 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants99 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags99 = boolean; /** * If set, the boss will exclude targets that are within the range of the listed entities, instead of including them. */ type Exclude106 = boolean; type Min89 = number; type Max89 = number; /** * If set, the boss will choose a random quest marker from the list, instead of the nearest one. */ type ChooseRandom1 = boolean; type Min90 = number; type Max90 = number; /** * How the actor animates while not actively moving. */ type StationaryVisuals14 = { animation?: Animation44; babbler?: Babbler96; style?: "Stand"; } | { z_baseline: BaselineAltitudePixels29; style: "Fly"; z_sine?: AltitudeSineWave29; flaps?: FlappingVerticalMovements29; animation?: Animation45; babbler?: Babbler97; }; /** * Defaults to 'idle. */ type Animation44 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler96 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels29 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed35 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude32 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds29 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance29 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds29 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation45 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler97 = string; /** * Relative to the global movement speed. */ type MovementSpeed15 = number; type MovementVisuals15 = { hop_speed: HopVerticalSpeed15; hop_anticipation?: HopAnticipationSeconds15; hop_followthrough?: PostHopFollowthroughSeconds15; style: "Hop"; animation?: HopAnimationName15; babbler?: Babbler98; } | { animation?: RunAnimationName15; babbler?: Babbler99; run_vertical_speed: RunVerticalBounceSpeed15; smoke_bones?: SmokePoofBones15; style: "Run"; } | { animation?: CrawlAnimationName15; babbler?: Babbler100; style: "Crawl"; } | { z_baseline: BaselineAltitudePixels30; style: "Fly"; z_sine?: AltitudeSineWave30; flaps?: FlappingVerticalMovements30; animation?: Animation46; babbler?: Babbler101; }; /** * As a percentage of base gravity. This is fairly sensitive. */ type HopVerticalSpeed15 = number; /** * How long to hold before rising off the ground, to make room for a pre-hop animation. */ type HopAnticipationSeconds15 = number; /** * How long to hold after landing on the ground from a hop, to make room for animations. */ type PostHopFollowthroughSeconds15 = number; /** * Defaults to 'hop' but can be overridden. */ type HopAnimationName15 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler98 = string; /** * Defaults to 'run' but can be overridden. */ type RunAnimationName15 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler99 = string; /** * How fast the character should pop up off the ground with each leg movement. As a percentage of base gravity. This is fairly sensitive. */ type RunVerticalBounceSpeed15 = number; type BoneName15 = string; /** * Defaults to 'crawl' but can be overridden. */ type CrawlAnimationName15 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler100 = string; /** * How high off the ground it should fly by default. */ type BaselineAltitudePixels30 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed36 = number; /** * How high/low the the sine wave goes (in pixels). The higher this number, the farther it will move up and down. */ type Amplitude33 = number; /** * How many seconds it takes for the creature to reach the distance of this flap. */ type ImpulseDurationSeconds30 = number; /** * Flapping will move the creature vertically. */ type VerticalDistance30 = number; /** * How many seconds after the distance is reached for the creature to recover to its normal flight. */ type RecoveryDurationSeconds30 = number; /** * Defaults to 'fly' but can be overridden. */ type Animation46 = string; /** * This world element can passively play a continuously looping sound. Only Earparty sounds marked as 'looping' are eligible for this field. */ type Babbler101 = string; /** * The boss can randomly ignore the post-ability pause, and instead go right into the next ability. */ type PostAbilityPauseIgnoreChance1 = number; type MinSeconds6 = number; type MaxSeconds6 = number; type Condition8 = { abilities?: Abilities9; casting_state: Casting6; condition_type?: "Ability"; } | { datafield_evaluation: Evaluation13; condition_type?: "Datafield"; } | { daytime: DuringDaytime7; condition_type?: "Daylight"; } | { condition_type?: "Combat"; combat: InCombat6; } | { insight_modifier?: InsightModifier6; timestamp: Timestamp9; condition_type?: "Timestamp"; evaluation: "==" | "!=" | "<" | "<=" | ">" | ">="; minutes_passed: MinutesSinceTimestamp6; } | { moon: ActiveMoon7; condition_type?: "Moon"; } | { quest: QuestToCheck9; condition_type?: "Quest"; quest_status: QuestStatus9; } | { following: Following23; condition_type?: "Artisan Following"; artisan: Buddy11; } | { prerequisite: Insight22; unlock_text?: InsightTooltip7; condition_type?: "Insight"; } | { proximity_range: DistanceRequiredGridSpaces6; proximity_targets: Targets8; proximity_ignores_stealth: IgnoreStealthedTargets6; condition_type?: "Proximity"; proximity_quantity: NumberOfTargets12; } | { hp_evaluation: HealthEvaluation6; condition_type?: "Health"; } | { require_all: RequireAll118; condition_type?: "Item Equipped"; items: Items124; } | { condition_type?: "Item Wielding"; items: Items125; } | { condition_type?: "Wearing Equipment Set"; set_evaluation: PiecesEquipped6; } | { condition_type?: "Buffs"; buff_exclusive?: Exclusive15; buff_require_all: RequireAll119; buff_check_self: CheckSelf6; buff_own_only: OwnBuffsOnly6; buff_num_targets?: NumberOfTargets13; buff_target_filter?: BuffTargetFilter6; buff_proximity?: BuffTargetRange6; buff_stack_evaluation?: Stacks115; buffs: Buffs218; buff_target: TargetEntity24; } | { condition_type?: "Boss Defeated"; boss: Boss10; } | { comparison: NumberSummoned6; condition_type?: "Summoned Entities"; summoned_filter?: SummonedEntitiesFilter6; } | { areas: Areas9; condition_type?: "Area"; } | { condition_type?: "Weather"; weather_ids: Weather6; } | { condition_type?: "Boss Phase"; phase: Phase6; } | { scene: Scene7; condition_type?: "Scene"; exclusive?: Exclusive16; } | { following: Following24; condition_type?: "Pet"; pet_item_id: Pet14; }; /** * If set, the ability's casting state must match this checkbox. */ type Casting6 = boolean; type DuringDaytime7 = boolean; type InCombat6 = boolean; /** * How much the 'Minutes Since Timestamp' should be adjusted (up or down) for each point invested in the Insight. */ type ChangePerPoint37 = number; type Insight21 = string; type Timestamp9 = string; /** * If greater than 0, then this many minutes will have passed since the timestamp was set. If less than 0, the timestamp will be this many minutes from now. */ type MinutesSinceTimestamp6 = number; type ActiveMoon7 = string; /** * The quest whose status we are querying. */ type QuestToCheck9 = string; type QuestStatus9 = "Complete" | "Started" | "Not Started"; type Following23 = boolean; type Buddy11 = string; type Insight22 = string; type EnglishText131 = string; /** * If checked, this text will not be exported for localization. */ type Skip131 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText98 = string; type Min91 = number; type Max91 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude107 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll116 = boolean; type Quantity152 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants100 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags100 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude108 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll117 = boolean; type Quantity153 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants101 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags101 = boolean; /** * If checked, the proximity check will fail on targets that are stealthed. */ type IgnoreStealthedTargets6 = boolean; type Evaluation14 = "==" | "!=" | "<" | "<=" | ">" | ">="; type Quantity154 = number; /** * If checked, this condition will only be met if ALL of the items listed are equipped at the same time. */ type RequireAll118 = boolean; type EquipmentSet9 = string; /** * If checked, this condition will only be considered met if the defined conditions are NOT met. */ type Exclusive15 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on yourself at the same time. */ type RequireAll119 = boolean; /** * Obsolete--delete. */ type CheckSelf6 = boolean; /** * If checked, only buffs created by you will be checked. Otherwise, all buffs will be checked. */ type OwnBuffsOnly6 = boolean; type Quantity155 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude109 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll120 = boolean; type Quantity156 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants102 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags102 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude110 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll121 = boolean; type Quantity157 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants103 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags103 = boolean; type Min92 = number; type Max92 = number; type Quantity158 = number; /** * Which entity's buffs to query. */ type TargetEntity24 = "Self" | "Other" | "All Entities"; type Boss10 = string; type Quantity159 = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude111 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll122 = boolean; type Quantity160 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants104 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags104 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude112 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll123 = boolean; type Quantity161 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants105 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags105 = boolean; type Phase6 = string; /** * The target entity must belong to this scene. */ type Scene7 = string; /** * If checked, the condition will be met if the entity is NOT from the scene. */ type Exclusive16 = boolean; /** * If checked, the pet must be following you. Otherwise, the pet must NOT be following you. */ type Following24 = boolean; /** * Which pet to check. */ type Pet14 = string; /** * If true, then every condition must be met. If false, then only one of the conditions must be met. */ type RequireAllConditions7 = boolean; /** * The weight choosing this followup ability relative to the other followup abilities in this list. */ type Weight7 = number; type Ability14 = string; /** * If set, the boss will always cast this ability instantly after finishing the prior ability, ignoring normal behavioral cooldowns and range requirements. */ type Instant1 = boolean; /** * Affects how frequently this ability is chosen. */ type Weight8 = number; /** * The number of seconds that must pass after the phase starts before the boss can use this ability. */ type AvailableAfterPhaseSeconds = number; /** * If set, the boss will cast the followup abilities in the order they are listed, instead of choosing one at random. */ type FollowupAbilitiesAsSequence = boolean; /** * The boss can add some randomness to the direction of this ability's cast (in degrees). */ type DirectionRandomness3 = number; /** * Abilities with higher priority will always be chosen if they are off cooldown. */ type Priority = number; /** * The number of seconds that must pass before the boss can use this ability again. */ type CooldownSeconds1 = number; type EnglishText132 = string; /** * If checked, this text will not be exported for localization. */ type Skip132 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText99 = string; /** * How many pieces of the set the user must be wearing to gain this bonus. */ type Pieces = number; type Amount1 = number; type Stat7 = string; type EnglishText133 = string; /** * If checked, this text will not be exported for localization. */ type Skip133 = boolean; type Green67 = number; type Red67 = number; type Blue67 = number; type EnglishText134 = string; /** * If checked, this text will not be exported for localization. */ type Skip134 = boolean; type NameInternal14 = string; type Green68 = number; type Red68 = number; type Blue68 = number; type EnglishText135 = string; /** * If checked, this text will not be exported for localization. */ type Skip135 = boolean; type CreditsEntry = { type: "Gap"; } | { type: "Single Entry"; name: { use_cjk?: CJK; name?: string; }; role?: Role; } | { type: "Group"; names: Names; role: Role1; }; type CJK = boolean; type EnglishText136 = string; /** * If checked, this text will not be exported for localization. */ type Skip136 = boolean; type CJK1 = boolean; type EnglishText137 = string; /** * If checked, this text will not be exported for localization. */ type Skip137 = boolean; type EnglishText138 = string; /** * If checked, this text will not be exported for localization. */ type Skip138 = boolean; /** * If true, the player can enter build mode in this area. Tru by default. */ type BuildModeAllowed = boolean; /** * If set, this area will be blocked off in the demo. The player will be teleported out when they enter. */ type DemoBlocked2 = boolean; type Green69 = number; type Red69 = number; type Blue69 = number; type Green70 = number; type Red70 = number; type Blue70 = number; /** * Uncheck this to have no ambience play in this zone. */ type PlayAmbience = boolean; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup32 = string; /** * The sounds that should play if the player is outdoors in the day. */ type AmbientDayTrack = string; /** * The sounds that should play if the player is not indoors. */ type AmbientNightTrack = string; type Green71 = number; type Red71 = number; type Blue71 = number; type Green72 = number; type Red72 = number; type Blue72 = number; type Green73 = number; type Red73 = number; type Blue73 = number; type Green74 = number; type Red74 = number; type Blue74 = number; type ColorGradingProfile = string; type Vignette = string; /** * If true, regular docks cannot be built in this area. */ type DeepWater = boolean; /** * If true, docks will always be buildable in this area no matter how far from shore they are. */ type ShallowWater = boolean; /** * If unchecked, music won't play in this area. */ type PlayMusic = boolean; type Condition9 = { daytime: DuringDaytime8; condition_type?: "Daylight"; } | { moon: ActiveMoon8; condition_type?: "Moon"; } | { quest: QuestToCheck10; condition_type?: "Quest"; quest_status: QuestStatus10; } | { following: Following25; condition_type?: "Artisan Following"; artisan: Buddy12; } | { prerequisite: Insight23; unlock_text?: InsightTooltip8; condition_type?: "Insight"; } | { condition_type?: "Wearing Equipment Set"; set_evaluation: PiecesEquipped7; } | { require_all: RequireAll124; condition_type?: "Item Equipped"; items: Items130; }; type DuringDaytime8 = boolean; type ActiveMoon8 = string; /** * The quest whose status we are querying. */ type QuestToCheck10 = string; type QuestStatus10 = "Complete" | "Started" | "Not Started"; type Following25 = boolean; type Buddy12 = string; type Insight23 = string; type EnglishText139 = string; /** * If checked, this text will not be exported for localization. */ type Skip139 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText100 = string; type EquipmentSet11 = string; /** * If checked, this condition will only be met if ALL of the items listed are equipped at the same time. */ type RequireAll124 = boolean; type Weather7 = string; type RequireAllConditions8 = boolean; /** * If true, the outdoor music will play indoors as well, overriding normal indoor music. */ type UseOutdoorMusicIndoors = boolean; /** * You can have the camera default to a closer field of view in this area. */ type DefaultZoom = number; /** * If true, this area will display its name on the world map once discovered. */ type Discoverable = boolean; /** * The icon that should be used for the teleporter in this area. */ type TeleporterIcon = string; type OutdoorMusicDay = string; type OutdoorMusicNight = string; type IndoorMusic = string; /** * The sprite that should be used for the water in this area. */ type WaterSprite = string; /** * The sprite used for the color blending of the waves. */ type WavesSprite = string; /** * If true, this unlocker will enable build mode in this area. If false, it will disable build mode. */ type EnablesBuildMode = boolean; /** * The gameplay unlocker that must be unlocked for this to take effect. */ type UnlockedBy65 = string; /** * If true, the player can use build mode to take NPC-owned items in this area. */ type AllowsStealing = boolean; /** * When the player enters this area, whether the name of the area should appear on-screen. */ type ShowNameUponEntering = boolean; type EnglishText140 = string; /** * If checked, this text will not be exported for localization. */ type Skip140 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText101 = string; /** * An area that this area can inherit certain properties from, like music and ambience. */ type ParentArea = string; /** * A collection of rules about how a certain kind of data is structured, accessed, and validated. */ type Schema = Schema1 & Schema2; type Name57 = string; type Type4 = "Collection" | "List" | "Text" | "Number" | "Choice" | "Constant" | "Schema Reference" | "Mote Reference"; type Description29 = string; type Schema2 = { exclusiveMinimum?: MinimumIsExclusive; type?: "number"; minimumValue?: MinimumValue; maximumValue?: MaximumValue; exclusiveMaximum?: MaximumIsExclusive; _type?: "Number"; multipleOf?: MultipleOf; } | { properties?: PropertyDefinitions; type?: "object"; minProperties?: MinimumProperties; maxProperties?: MaximumProperties; _type?: "Collection"; }; /** * If true, the number cannot equal the minimum value -- it must be greater. */ type MinimumIsExclusive = boolean; /** * The lowest allowed value for this number. */ type MinimumValue = number; /** * The highest allowed value for this number. */ type MaximumValue = number; /** * If true, the number cannot equal the maximum value -- it must be less. */ type MaximumIsExclusive = boolean; /** * If set, the number in the data must be a multiple of this number. */ type MultipleOf = number; type MinimumProperties = number; type MaximumProperties = number; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup33 = string; /** * If true, destroyed entities that normally would not respawn will respawn in this scene. */ type AllowRespawning = boolean; type Green75 = number; type Red75 = number; type Blue75 = number; /** * Describe what this scene is for (for other developers). */ type DescriptionInternal1 = string; type SceneNameInternal = string; type PhaseNameInternal = string; /** * For saving in the binary file. This does not affect phase order -- it is only for saving/loading. */ type UniqueID = number; /** * A quest that must be completed to unlock this phase. */ type UnlockedBy66 = string; type TransitionVisuals = { transition_proportion?: TransitionProportion; fade_end_seconds: FadeEndSeconds; text_overlay?: TextOverlay; color: FullscreenColor; fullscreen: true; fade_start_seconds: FadeStartSeconds; fade_hold_seconds: FadeHoldSeconds; } | { fullscreen: false; effects?: Effects2; }; /** * The proportion of the fade hold time at which the transition will occur. Defaults to halfway through (50%). */ type TransitionProportion = number; /** * How long to fade back to normal view. */ type FadeEndSeconds = number; type EnglishText141 = string; /** * If checked, this text will not be exported for localization. */ type Skip141 = boolean; type Green76 = number; type Red76 = number; type Blue76 = number; /** * How long to fade to the designated color. */ type FadeStartSeconds = number; /** * How long to hold the vew on the designated color. The scene transition will occur halfway through this hold, unless otherwise specified. */ type FadeHoldSeconds = number; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude113 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll125 = boolean; type Quantity162 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants106 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags106 = boolean; /** * If true, world elements that match this filter will *not* be targeted. */ type Exclude114 = boolean; /** * If checked, this condition will only be met if ALL of the buffs listed are present on the target at the same time. */ type RequireAll126 = boolean; type Quantity163 = number; /** * If set, only 'entities marked as 'Combatants' will pass the filter. These are entites that can be engaged in combat, like creatures, bosses, or the player. */ type Combatants107 = boolean; /** * If any of the items are tags, you can require that the targeted item have every tag in the list. */ type RequireAllTags107 = boolean; /** * The chance that the effect will play on a given target. */ type Chance19 = number; /** * If checked, these transition effects will play on entities that have changed. */ type PlayOnEntities = boolean; /** * If checked, these transition effects will play on tiles that have changed. */ type PlayOnTiles = boolean; type VisualEffect3 = { decal_duration?: DecalDurationSeconds3; decal_sprite: DecalSprite3; decal_scale?: DecalScale3; effect_type: "Ground Decal"; decal_max_alpha?: MaxAlpha3; } | { explosion_random_delay?: RandomDelaySeconds3; explosion_debris?: DebrisParticles6; effect_type: "Explosion"; explosion_y_offset?: YOffset18; explosion_z_offset?: ZOffset19; explosion_color: BaseColor3; explosion_sound?: Sound19; explosion_slomo_burst: SlowMotionPulse3; explosion_highlight_color?: HighlightColor3; explosion_camera_shake?: CameraShake6; explosion_smoke?: ShowSmoke3; explosion_scale?: ExplosionScale3; explosion_random_distance?: RandomDistanceGridSpaces3; } | { particle_system_z_offset?: ZOffset20; particle_system: ParticleSystem8; particle_system_emitter_scale?: EmitterScale6; effect_type: "Particle System Burst"; particle_system_y_offset?: YOffset19; } | { skybeam_color: SkybeamColor3; skybeam_sound?: Sound20; skybeam_width?: SkybeamPixelWidth3; effect_type: "Skybeam"; } | { smokeburst_color?: SmokeColor3; smokeburst_zoffset?: ZOffset21; smokeburst_spawn_on_ground?: SpawnOnGround9; smokeburst_yoffset?: YOffset20; smokeburst_speed?: ExpansionSpeed3; smokeburst_radius?: RadiusPixels3; smokeburst_scale?: Scale12; effect_type: "Smoke Burst"; } | { ering_y_offset?: YOffset21; ering_z_offset?: ZOffset22; ering_color1?: Color16; ering_color2?: Color24; ering_sound?: Sound21; ering_grid_radius: GridRadius3; ering_spawn_on_ground?: SpawnOnGround10; ering_show_internal_ring?: ShowInternalRing3; effect_type: "Electric Ring"; } | { skylightning_color: LightningColor3; skylightning_shake?: CameraShake7; skylightning_sound?: Sound22; skylightning_width?: LightningPixelWidth3; skylightning_slomo_flash?: SlowMotionFlash3; effect_type: "Sky Lightning"; }; type Min93 = number; type Max93 = number; /** * This sprite will be drawn subtractively. */ type DecalSprite3 = string; type Min94 = number; type Max94 = number; type MaxAlpha3 = number; type Min95 = number; type Max95 = number; type NumberOfParticles7 = number; type ParticleScale3 = number; /** * The sprite to use for the debris. */ type Sprite10 = string; /** * Can be useful for depth-sorting. For example, a Y offset of 1 will spawn the explosion in front of whatever is explosing. */ type YOffset18 = number; /** * If spawning on the ground, this will be height above ground. If spawning on targets, it will spawn at their height midpoints, plus this offset. */ type ZOffset19 = number; type Green77 = number; type Red77 = number; type Blue77 = number; /** * There is a default explosion sound, but you can override it here. */ type Sound19 = string; /** * If true, there will be a brief slow-down of the game when the explosion occurs to make it feel more impactful. Use sparingly. */ type SlowMotionPulse3 = boolean; type Green78 = number; type Red78 = number; type Blue78 = number; /** * If true, the camera will shake when the explosion occurs. */ type CameraShake6 = boolean; /** * If true, smoke will be spawned at the explosion location. */ type ShowSmoke3 = boolean; type Min96 = number; type Max96 = number; type Min97 = number; type Max97 = number; /** * If spawning on the ground, this will be height above ground. If spawning on targets, it will spawn at their height midpoints, plus this offset. */ type ZOffset20 = number; type ParticleSystem8 = string; type EmitterScale6 = number; /** * Can be useful for depth-sorting. For example, a Y offset of 1 will spawn the explosion in front of whatever is explosing. */ type YOffset19 = number; type Green79 = number; type Red79 = number; type Blue79 = number; /** * What sound this sky beam should play when it appears. */ type Sound20 = string; /** * If targeting an entity, the skybeam will be based on the entity's width unless this field is set. */ type SkybeamPixelWidth3 = number; type Green80 = number; type Red80 = number; type Blue80 = number; /** * If spawning on the ground, this will be height above ground. If spawning on targets, it will spawn at their height midpoints, plus this offset. */ type ZOffset21 = number; /** * If true, the smoke will spawn at the ground level. */ type SpawnOnGround9 = boolean; /** * Can be useful for depth-sorting. For example, a Y offset of 1 will spawn the smoke in front of whatever is explosing. */ type YOffset20 = number; /** * How fast the smoke will expand. */ type ExpansionSpeed3 = number; type Min98 = number; type Max98 = number; /** * The scale of the smoke particles. */ type Scale12 = number; /** * Can be useful for depth-sorting. For example, a Y offset of 1 will spawn the explosion in front of whatever is explosing. */ type YOffset21 = number; /** * If spawning on the ground, this will be height above ground. If spawning on targets, it will spawn at their height midpoints, plus this offset. */ type ZOffset22 = number; type Green81 = number; type Red81 = number; type Blue81 = number; type Green82 = number; type Red82 = number; type Blue82 = number; /** * There is a default sound, but you can override it here. */ type Sound21 = string; type Min99 = number; type Max99 = number; /** * If true, the ring will spawn at the ground level. */ type SpawnOnGround10 = boolean; /** * Defaults to true. If false, only one ring will be shown. */ type ShowInternalRing3 = boolean; type Green83 = number; type Red83 = number; type Blue83 = number; /** * How much the camera should shake when the lightning appears. */ type CameraShake7 = number; /** * What sound this lightning should play when it appears. */ type Sound22 = string; /** * If targeting an entity, the lightning will be based on the entity's width unless this field is set. */ type LightningPixelWidth3 = number; /** * If true, the game will briefly slow down when the lightning appears. */ type SlowMotionFlash3 = boolean; type LoopingAnimationName = string; /** * 0% is the foot of the entity, 100% is the very top of its hitbox. */ type VerticalPosition = number; type SpineSprite1 = string; /** * Positive goes up, negative goes down. You can move the sprite up or down relative to its anchor by a fixed number of pixels. */ type ZOffsetPixels = number; /** * At 100% scale, the emitter will roughly match the hitbox of the world element that it is attached to. However, you can grow or shrink the emitter to make the particles more tightly packed or farther apart. */ type EmitterScale7 = number; /** * The gap in time between emitting particles. If set to 0, it will emit particles every frame (but at a performance cost. */ type EmitIntervalSeconds1 = number; type Min100 = number; type Max100 = number; /** * If set, the particles will use the world element as an anchor point, so they will no longer be 'left behind' if the world element moves. */ type Local1 = boolean; /** * If set, the particles will always move away from the center of the emitter. */ type BlastOutward4 = boolean; /** * If set, an object will spawn that plays this sprite's spine animation when the buff is applied. */ type ApplicationSpineSprite = string; /** * The speed in degrees per second to rotate the sprite. */ type RotationSpeed = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed37 = number; /** * How high/low the the sine wave goes. The higher this number, the farther it will move up and down. */ type Amplitude34 = number; /** * If set, the sprite will scale in the x direction. */ type XScale1 = boolean; /** * If set, the sprite will scale in the y direction. */ type YScale1 = boolean; /** * The sprite will scale to fit the hitbox of the world element, but you can scale it up or down from there using this modifier. */ type ScaleModifier10 = number; type Sprite11 = string; type Green84 = number; type Red84 = number; type Blue84 = number; /** * 0% is the foot of the entity, 100% is the very top of its hitbox. */ type HeightPosition = number; /** * The angle in degrees to rotate the sprite. */ type Rotation = number; type Blending = "Normal" | "Add" | "Subtract"; /** * Positive goes up, negative goes down. You can move the sprite up or down relative to its anchor by a fixed number of pixels. */ type ZOffsetPixels1 = number; /** * How fast the sine wave should move through its peaks and valleys. */ type Speed38 = number; /** * How high/low the the sine wave goes. The higher this number, the farther it will move up and down. */ type Amplitude35 = number; /** * The sprite will scale to fit the hitbox of the world element, but you can scale it up or down from there using this modifier. */ type ScaleModifier11 = number; /** * When scaling to match the size of the entity, the underlay won't get smaller than this (if set). */ type MinPixels = number; type Sprite12 = string; /** * If set, the sprite will be squished to match the world perspective. */ type PerspectiveSquish = boolean; type Green85 = number; type Red85 = number; type Blue85 = number; type StartValue = number; type EndValue = number; type EasingStyle = "Linear" | "Ease In Cubic" | "Ease Out Cubic"; /** * If set, each draw in this looping effect will be rotationally offset by this many degrees from the prior draw. */ type RotationOffsetPerDraw = number; /** * How many times to draw the sprite in a loop. */ type NumberOfDraws = number; /** * How long it should take to complete one loop. */ type LoopTimeSeconds = number; type StartValue1 = number; type EndValue1 = number; type EasingStyle1 = "Linear" | "Ease In Cubic" | "Ease Out Cubic"; /** * The angle in degrees to rotate the sprite. */ type Rotation1 = number; type Blending1 = "Normal" | "Add" | "Subtract"; /** * The speed in degrees per second to rotate the sprite. */ type RotationSpeed1 = number; type CustomVFXObject = string; type ExpiresUponDeath = boolean; /** * How many independent applications of this buff can be present on an entity at one time. If unset, then there is no limit. */ type MaximumInstances = number; type MaximumStacks1 = number; /** * When attempting to apply the buff to a target that already has the maximum instances of the buff, you can purge the oldest instance of the buff to apply a new instance. */ type ReplaceOldest = boolean; /** * If true, this buff will stun the target, rendering it unable to do anything for the duration. */ type Stun1 = boolean; type Green86 = number; type Red86 = number; type Blue86 = number; /** * If true, this buff can stun all enemies, including bosses. */ type BossStun = boolean; type EnglishText142 = string; /** * If checked, this text will not be exported for localization. */ type Skip142 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText102 = string; /** * If true, negative buffs cannot be applied to a world element who has this buff. */ type PreventsNegativeBuffs = boolean; type UIIcon31 = string; type Stat8 = string; /** * Whether this buff changes this stat additively or multiplicatively. */ type ModifierStyle1 = "Add" | "Multiply"; /** * If true, then the stat bonus will be mutliplied by the number of stacks. */ type MultiplyByStacks = boolean; /** * How much to modify the stat by. */ type Amount2 = number; /** * If true, then the other stat will be mutliplied by the number of stacks before being applied. */ type MultiplyByStacks1 = boolean; /** * If set, the boosting stat will be multiplied against this value before being used to boost the primary stat. */ type StatMultiplier = number; /** * When pulling the Other Stat, whether we should use the stats of the entity that sent the buff, or the entity that received the buff. */ type StatSource = "Sender" | "Receiver"; type Stat9 = string; /** * Whether this to boost the main stat by adding this stat to it, or by multiplying this stat with it. */ type ModifierStyle2 = "Add" | "Multiply"; /** * If set, this stat will be shown on the buff's tooltip. Defaults to true. */ type ShowOnTooltip1 = boolean; /** * If set, the buff will show the amount of damage absorbed in it instead of the number of stacks. */ type ShowAbsorbInsteadOfStacks = boolean; type Type5 = string; /** * If set, the buff will show the amount of damage stored in it instead of the number of stacks. */ type ShowDamageInsteadOfStacks = boolean; type Effect1 = { damage_pool: DamagePool; consume_stored_damage: ConsumeStoredDamage; damage_profile: DamageProfile; outcome?: "Damage"; } | { healing_pool: HealingPool; consume_stored_healing: ConsumeStoredDamage1; outcome?: "Heal"; healing_percentage: HealingPercent; } | { buff: BuffToApply1; outcome?: "Buff"; } | { outcome?: "Expire"; } | { stack_change_style: Style15; amount: AmountToChange; outcome?: "Change Stacks"; } | { amount: AmountToSet; outcome?: "Set Stacks"; } | { outcome?: "Remove Buff"; buff_to_remove: BuffToRemove; } | { timer_change_style: Style16; amount: AmountToChangeBy; outcome?: "Change Timer"; } | { outcome?: "Set Timer"; new_timer: TimerSecondsToSet; } | { burst_particle: Particle; bursts: Bursts2; outcome?: "Particle Burst"; } | { burst_particle_system: ParticleSystem9; system_scale?: EmitterScale8; outcome?: "Particle System Burst"; }; /** * Whether this damage is based on the total damage that has ever been stored into this buff, or whether to use the remaining damage after consumption. */ type DamagePool = "Total" | "Remaining"; /** * Whenever a buff is applied, it can have damage and healing values stored in it. */ type ConsumeStoredDamage = boolean; /** * Whether this damage is based on the total healing that has ever been stored into this buff, or whether to use the remaining healing after consumption. */ type HealingPool = "Total" | "Remaining"; /** * Whenever a buff is applied, it can have damage and healing values stored in it. */ type ConsumeStoredDamage1 = boolean; /** * Multiplies against the healing pool and then heals the user for this amount. */ type HealingPercent = number; /** * This new buff will be applied to the entity afflicted by the current buff. */ type BuffToApply1 = string; /** * Whether change the existing stacks by adding or multiplying. */ type Style15 = "Add" | "Multiply"; type AmountToChange = number; type AmountToSet = number; /** * This will remove a buff if it is present. */ type BuffToRemove = string; /** * How to change the buff's timer. */ type Style16 = "Add" | "Multiply"; type AmountToChangeBy = number; /** * This will change the buff's remaining timer to this value. */ type TimerSecondsToSet = number; /** * If checked, the particles will spawn at z=0 instead of on a target or caster. */ type SpawnOnGround11 = boolean; type Min101 = number; type Max101 = number; type Min102 = number; type Max102 = number; /** * If set, the radius of the spawning will scale relative to the caster's 'scale' modifier. Useful for keeping particles lined up with telegraphs. */ type ScaledSpawnRadius4 = boolean; /** * If set, the particles will always move away from the center of the source. */ type BlastOutward5 = boolean; type Min103 = number; type Max103 = number; /** * If set, the spawn radius will be treated as grid spaces instead of pixels. */ type SpawnRadiusAsGrid4 = boolean; /** * If spawning on the ground, this will be height above ground. If spawning on targets, it will spawn at their height midpoints, plus this offset. */ type ZOffset23 = number; /** * Billboard bursts are good for shooting things up and out. Ground bursts are good for making smoke rings and such. */ type Perspective3 = "Billboard" | "Isometric"; type ParticleSystem9 = string; /** * If set, At 100% scale, the emitter will roughly match the hitbox of the world element that it is attached to. However, you can grow or shrink the emitter to make the particles more tightly packed or farther apart. */ type EmitterScale8 = number; /** * This number will be multiplied against the base duration of the buff to get the final duration. */ type DurationModifier = number; type GameMode1 = string; type DurationSeconds1 = number; type EnglishText143 = string; /** * If checked, this text will not be exported for localization. */ type Skip143 = boolean; type Green87 = number; type Red87 = number; type Blue87 = number; type ApplicationSound = string; type Green88 = number; type Red88 = number; type Blue88 = number; type ReapplicationSound = string; type Positive = boolean; /** * If set, this buff will only show the text description and won't show any other information. */ type OnlyShowDescription = boolean; type ParticleSystem11 = string; /** * If set, the particles will use the world element as an anchor point, so they will no longer be 'left behind' if the world element moves. */ type Local2 = boolean; /** * If set, At 100% scale, the emitter will roughly match the hitbox of the world element that it is attached to. However, you can grow or shrink the emitter to make the particles more tightly packed or farther apart. */ type EmitterScale9 = number; /** * The emitter will normally constantly emit as defined. Alternatively, you can have it burst at timed intervals by setting this value. */ type BurstIntervalSeconds = number; type EnglishText144 = string; /** * If checked, this text will not be exported for localization. */ type Skip144 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText103 = string; /** * While the player has this buff, an additional sound can be added in to the player's swing sound. */ type SwingSoundOverlay = string; /** * When this buff gets applied where there is an existing buff, and either we are at the maximum instances or we are adding stacks, what happens to the timer of the existing buff? */ type TimerRefreshBehavior = { seconds: Seconds5; extension_max?: ExtensionMaxDuration; style?: "Extend"; } | { style?: "Refresh"; } | { style?: "None"; }; /** * Each time this buff is reapplied, its timer will be extended by this many seconds. */ type Seconds5 = number; /** * How many seconds the buff can be extended to. Can go beyond the baseline duration. */ type ExtensionMaxDuration = number; type ExpirationSound = string; type EnglishText145 = string; /** * If checked, this text will not be exported for localization. */ type Skip145 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText104 = string; /** * The primary sprite of the tile. */ type MainSprite3 = string; type Green89 = number; type Red89 = number; type Blue89 = number; /** * The sound to play when the player walks on this tile. */ type FootstepSound3 = string; /** * The sprite to use when displaying the tile in the UI (e.g. Build Mode). */ type Icon9 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup34 = string; /** * The sprite to draw below the main sprite. Subimages must correspond with the Sprite. */ type UnderSprite3 = string; type Green90 = number; type Red90 = number; type Blue90 = number; /** * The probability of a given tile having Dapples on it. */ type SpawnChance3 = number; type ResearchNode28 = string; type ChangePerPoint38 = number; /** * What workstation the player must be near to craft this recipe. */ type Station15 = string; /** * Change this number to increase or decrease the number of materials required to craft this item. */ type EffortModifier21 = number; type UnlockedBy67 = string; type OutputQuantity13 = number; type ResearchNode29 = string; type ChangePerPoint39 = number; type Style17 = "Additive" | "Multiplicative"; type EnglishText146 = string; /** * If checked, this text will not be exported for localization. */ type Skip146 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText105 = string; /** * Whether the tile should be X-flipped randomly when placed. */ type Flippable8 = boolean; /** * The sound to play when this tile is placed in the editor or in Build Mode. */ type PlacementSound8 = string; /** * If set, this world element will be considered a variant of another world element. Its recipe will be rolled together with that item, and they will share crafting efficiencies. */ type VariantParent7 = string; type Resistance = number; type DamageType3 = string; /** * Name of this damage profile. For internal use. */ type Name60 = string; type EnglishText147 = string; /** * If checked, this text will not be exported for localization. */ type Skip147 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText106 = string; /** * The primary sprite of the tile. */ type MainSprite4 = string; type Green91 = number; type Red91 = number; type Blue91 = number; /** * The sound to play when the player walks on this tile. */ type FootstepSound4 = string; /** * The sprite to use when displaying the tile in the UI (e.g. Build Mode). */ type Icon10 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup35 = string; /** * The sprite to draw below the main sprite. Subimages must correspond with the Sprite. */ type UnderSprite4 = string; type Green92 = number; type Red92 = number; type Blue92 = number; /** * The probability of a given tile having Dapples on it. */ type SpawnChance4 = number; type ResearchNode30 = string; type ChangePerPoint40 = number; /** * What workstation the player must be near to craft this recipe. */ type Station16 = string; /** * Change this number to increase or decrease the number of materials required to craft this item. */ type EffortModifier22 = number; type UnlockedBy68 = string; type OutputQuantity14 = number; type ResearchNode31 = string; type ChangePerPoint41 = number; type Style18 = "Additive" | "Multiplicative"; /** * If this tile is against water, the Shoreline Water Sprite will be drawn in the water to convey how the tile interacts with the water. */ type ShorelineUnderwaterSprite2 = string; /** * This is a large sprite that will be drawn underwater if this tile is at a shoreline. It helps create a sense of the water getting deeper. */ type ShelfUnderwaterSprite2 = string; type EnglishText148 = string; /** * If checked, this text will not be exported for localization. */ type Skip148 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText107 = string; /** * The sound to play when this tile is placed in the editor or in Build Mode. */ type PlacementSound9 = string; /** * Whether the tile should be X-flipped randomly when placed. */ type Flippable9 = boolean; /** * If set, this world element will be considered a variant of another world element. Its recipe will be rolled together with that item, and they will share crafting efficiencies. */ type VariantParent8 = string; type EnglishText149 = string; /** * If checked, this text will not be exported for localization. */ type Skip149 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText108 = string; /** * If checked, this requirement will be ignored in Scramble mode. */ type ScrambleExcluded2 = boolean; type Condition10 = { floor_tile: Floor2; type?: "Standing on Tile Type"; dock_tile: Dock2; terrain_tile: Terrain1; } | { type?: "Room Size"; interior_tiles: InteriorTileArea1; } | { type?: "Be Indoors"; } | { item_tally: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: Items133; value1?: number; }; type?: "Item Tally"; whole_building: WholeBuilding2; } | { type?: "Number of Rooms"; num_rooms: NumberOfRooms1; } | { source_items: SourceItems1; type?: "Item Relationships"; distance: TileDistance1; destination_items: TargetItems1; whole_building: WholeBuilding3; }; type Floor2 = boolean; type Dock2 = boolean; type Terrain1 = boolean; /** * If true, the entire building will be checked instead of just the Artisan's room. */ type WholeBuilding2 = boolean; /** * If true, the entire building will be checked instead of just the Artisan's room. */ type WholeBuilding3 = boolean; type EnglishText150 = string; /** * If checked, this text will not be exported for localization. */ type Skip150 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText109 = string; /** * Which buddy this comfort belongs to. */ type Buddy13 = string; type EnglishText151 = string; /** * If checked, this text will not be exported for localization. */ type Skip151 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText110 = string; type EnglishText152 = string; /** * If checked, this text will not be exported for localization. */ type Skip152 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText111 = string; /** * If true, this loot group will not be shown in the progression map. */ type IgnoreInProgressionMap4 = boolean; type UnlockedBy69 = string; type UIIcon32 = string; /** * Used to order this comfort in the Artisan's list. */ type OrderIndex = number; type EnglishText153 = string; /** * If checked, this text will not be exported for localization. */ type Skip153 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText112 = string; /** * Cleared terrain tiles will allow floors to be placed on them by default. You can override this default behavior. */ type DisallowFloors = boolean; /** * Determines how this tile will be depth-sorted against other terrain tiles. */ type DepthPriority = number; /** * If this group is chosen, this is the chance that it will actually spawn its spice. */ type SpawnChance5 = number; type Neighbor = string; /** * When this tile gets cleared, you can customize the sprite that will blast off of it. If not specified, it will just make a smoke blast. */ type ClearTileParticleSprite = string; /** * If this tile ends up touching water, it will be replaced with this tile. */ type ShoreTile = string; /** * The primary sprite of the tile. */ type MainSprite5 = string; type Green93 = number; type Red93 = number; type Blue93 = number; /** * The sound to play when the player walks on this tile. */ type FootstepSound5 = string; /** * The sprite to use when displaying the tile in the UI (e.g. Build Mode). */ type Icon11 = string; /** * Creates a folder in the World Editor sidebar for this item. */ type EditorGroup36 = string; /** * The sprite to draw below the main sprite. Subimages must correspond with the Sprite. */ type UnderSprite5 = string; type Green94 = number; type Red94 = number; type Blue94 = number; /** * The probability of a given tile having Dapples on it. */ type SpawnChance6 = number; /** * If this tile is against water, the Shoreline Water Sprite will be drawn in the water to convey how the tile interacts with the water. */ type ShorelineUnderwaterSprite3 = string; /** * This is a large sprite that will be drawn underwater if this tile is at a shoreline. It helps create a sense of the water getting deeper. */ type ShelfUnderwaterSprite3 = string; type EnglishText154 = string; /** * If checked, this text will not be exported for localization. */ type Skip154 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText113 = string; /** * Whether the tile should be X-flipped randomly when placed. */ type Flippable10 = boolean; /** * The sound to play when this tile is placed in the editor or in Build Mode. */ type PlacementSound10 = string; /** * If this tile gets cleared via Build Mode, it will be replaced with its 'Cleared Tile' version temporarily. If a tile has a 'Cleared Tile' then it cannot be built on until it is cleared. */ type ClearedTile = string; type DEDRecoverySeconds = number; type FishingWhopperSpeed = number; type PlayerHealth = number; /** * The proportion of the player's items that will go into the DED dummy. */ type DEDItemLoss = number; type EnglishText155 = string; /** * If checked, this text will not be exported for localization. */ type Skip155 = boolean; type HardcoreScoreLevel = number; type HealingCooldown = number; type Green95 = number; type Red95 = number; type Blue95 = number; type Order6 = number; type Icon12 = string; /** * How many seconds your pet attacks after you've dealt damage to something. */ type PetAttackDuration = number; type EnemyAttackSpeed = number; type EnglishText156 = string; /** * If checked, this text will not be exported for localization. */ type Skip156 = boolean; type EnemyRunSpeedModifier = number; type EnemyHealth = number; /** * Requires 9 subimages, going from farthest back slope to the peak (with 1, 2, and 3 fillers) and then the front slope. */ type RoofSprite = string; type VerticalFiller = string; type CenterPeak = string; type BackSlope = string; type FrontSlope = string; type EnglishText157 = string; /** * If checked, this text will not be exported for localization. */ type Skip157 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText114 = string; type BackEdge = string; type FrontEdge = string; type EnglishText158 = string; /** * If checked, this text will not be exported for localization. */ type Skip158 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText115 = string; /** * The order in which this group will be displayed in the knowledge UI. */ type Order7 = number; type EnglishText159 = string; /** * If checked, this text will not be exported for localization. */ type Skip159 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText116 = string; /** * The minimum 'Effort' for items to be considered of this quality. */ type Effort = number; type Green96 = number; type Red96 = number; type Blue96 = number; type Green97 = number; type Red97 = number; type Blue97 = number; /** * The object's string ID in the Game Maker project. */ type Name68 = string; /** * The path to the video in the Game Maker project's included files. */ type VideoFilePath = string; /** * Make this cutscene quieter or louder. */ type AudioGainModifier = number; type TimestampSeconds = number; type Green98 = number; type Red98 = number; type Blue98 = number; type ProgressBarAlpha = number; type Green99 = number; type Red99 = number; type Blue99 = number; /** * For developer use. */ type VideoName = string; type ProgressBarBackgroundAlpha = number; type ProgressBarHeightPixels = number; type Green100 = number; type Red100 = number; type Blue100 = number; type EnglishText160 = string; /** * If checked, this text will not be exported for localization. */ type Skip160 = boolean; type HomeTeleportCooldownSeconds = number; type Weapon = number; type Trinket1 = number; type Helm = number; type Suit = number; type Boots = number; type Gloves = number; type Tool = number; /** * How many real-world minutes it takes to go through a full day-night cycle in-game. */ type MinutesPerGameDay = number; /** * How many real-world minutes it takes for a typical world element to respawn after being destroyed. */ type WorldElementRespawnMinutes = number; /** * How many real-world minutes it takes for a cleared terrain tile to respawn after being destroyed. */ type ClearedTileRespawnMinutes = number; /** * The default number of times the player must craft an item to reach the first skill level. */ type NumCraftsForLevel1 = number; /** * How many more items must be crafted each skill level, relative to the prior skill level. 100% means double. */ type CostGrowthPerSkillLevel = number; type OutputIncrease = number; type CostReduction = number; /** * How fast things move baseline in tiles per second. */ type BaseGameplayMoveSpeed = number; /** * Compounding increase in Damage Per Second per level. */ type DPSGrowthLevel = number; /** * The amount of effort (materials) it takes per component to craft an item. More effort means more components. Item tags add categorical multipliers. */ type CraftingEffortPerComponent = number; /** * Linear increase in crafting cost per level. */ type CraftingCostGrowthPerLevel = number; /** * Linear increase in crafting cost for items that have pre-set qualities, such as armor that has built-in stats. */ type CraftingCostGrowthPerQuality = number; type MaxSeconds7 = number; type SecondsAtLevel1 = number; type SecondsChangePerLevel = number; type MinSeconds7 = number; type MaxSeconds8 = number; type SecondsAtLevel11 = number; type SecondsChangePerLevel1 = number; type MinSeconds8 = number; type MaxSeconds9 = number; type SecondsAtLevel12 = number; type SecondsChangePerLevel2 = number; type MinSeconds9 = number; /** * This is a compounding percentage growth per level. */ type GrowthPerLevel = number; type SecondsAtLevel13 = number; /** * How many seconds it takes to kill a standard boss. */ type BossTimeToKill = number; /** * All healing items have the same cooldown. Adjust it here. */ type HealingCooldownSeconds = number; /** * Seconds to research a starting node for an Artisan. */ type ResearchBaseSeconds = number; /** * How many more seconds each reseach node takes as you go deeper in the tree. */ type ResearchTimeGrowthPerLevel = number; /** * This will be the tier at which Insights stop taking longer. All Insights beyond this tier will be at the maximum time. */ type ResearchMaximumTier = number; type EnglishText161 = string; /** * If checked, this text will not be exported for localization. */ type Skip161 = boolean; /** * Explain this text to help with localization and development. */ type TranslatorHelperText117 = string; /** * Insights will take this long at the maximum tier, scaling quadratically. */ type ResearchMaximumTime = number; /** * The amount of effort (materials) it takes per component of a research node. More effort means more components. */ type ResearchEffortPerComponent = number; /** * If a Buddy has full Comforts, how much time research will take compared to baseline. */ type MaxComfortResearchTime = number; /** * At level 1, the player won't have full HP until their armor is equipped. This number represents the proportion of their 'armored' healt the player will start with. */ type PlayerBaseHP = number; /** * How many grid spaces away the player can build. */ type BuildModeRange = number; type Min104 = number; type Max104 = number; type EarpartyGroup1 = string; /** * Whether the sound should play as a loop. */ type Looping3 = boolean; /** * If the game has run out of sound channels, lower priority sounds will be stopped to play higher priority sounds. */ type Priority1 = number; /** * The baseline volume of the sound. */ type Gain = number; /** * To prevent auditory blowout/spam, sound effects can have a cooldown between plays. */ type CooldownSeconds2 = number; /** * The sound's pitch will randomly fluctuate each time it is played by +/- this percentage. */ type Variability = number; /** * Each time the Earparty sound is played, EarParty will choose a new variation of the sound this many times before repeating the same variation. */ type NonRepeatingInterval = number; type NameFromGMSProject = string; /** * A random roll to cause the sound effect to sometimes not play when the code calls for it. */ type PlayChance = number; /** * If set, this sound will automatically increment or decrement pitch each time it is played within a certain time frame. If not played for a while, its pitch will reset. Good for making sparkly collection sounds. */ type AutoPitch = { pitchup_per_event?: number; pitchup_max: AutoPitchMaximum; } | { pitchup_min: AutoPitchMinimum; pitchup_per_event?: number; } | { pitchup_per_event?: 0; }; /** * During auto-pitching, Earparty won't allow the pitch to go above this number. */ type AutoPitchMaximum = number; /** * During auto-pitching, Earparty won't allow the pitch to go below this number. */ type AutoPitchMinimum = number; type Green101 = number; type Red101 = number; type Blue101 = number; /** * The order in which this thing should appear in the crafting menu. */ type Order8 = number; type Icon13 = string; type Name70 = string; type Green102 = number; type Red102 = number; type Blue102 = number; interface Schemas { cl2_strange_creature_spawner: StrangeSpawner; cl2_strange_creature_group: StrangeGroup1; impassable_tile: ImpassableTile; garden_bed: GardenBed; garden_dock: GardenDock; cl2_decor: Decor; cl2_pillar: BuildingPillar; cl2_door: BuildingDoor; cl2_wall: BuildingWall; cl2_station: CraftingStation; cl2_nest: PetNest; cl2_fence: Fence; resource: Resource; cl2_creature: Creature; cl2_boss: Boss3; cl2_creature_family: CreatureFamily; cl2_mastery: PetMastery; cl2_item_component: Component; cl2_pet_egg: PetEgg; cl2_key_item: KeyItem; cl2_pet: Pet5; seed_pack: SeedPack; cl2_armor: Armor; cl2_trinket: Trinket; cl2_wieldable: Wieldable; cl2_consumable: Consumable; cl2_env_item: EnvironmentalObject; cl2_schematic: Schematic; cl2_player: Player; cl2_juicebox: Juicebox; cl2_chest: Chest; cl2_npc: Character1; cl2_item_tag: ItemTag; cl2_quest_marker: QuestMarker; research_node: Insight12; cl2_quest: Quest; artisan: Buddy6; gms_sprite: Sprite5; cl2_npc_species: CharacterSpecies; cl2_boss_gate: BossGate; cl2_ability: Ability12; cl2_telegraph: Telegraph; cl2_camera_anchor: CameraAnchor; cl2_music_anchor: MusicAnchor; cl2_storyline: Storyline1; cl2_fishing: Fishing; cl2_moon: Moon; cl2_immunities: Immunities; weather: WeatherEffect; cl2_loading_tips: LoadingTips; cl2_shadow: Shadow; cl2_wip_item: UnimplementedItem; cl2_damage_type: DamageType1; cl2_timestamp: Timestamp8; cl2_infusion: Infusion2; cl2_progression_priors: ProgressionPriors; cl2_ability_action_groups: ActionGroups8; cl2_quest_requirement: Requirements8; cl2_quest_moment_requirement: MomentRequirements; cl2_buff_type: BuffType; earparty_group: EarpartyGroup; cl2_entity_states: EntityStates; cl2_stats: Stat6; cl2_datafield: Datafield6; schema_id_cl2_knowledge_group: KnowledgeGroup3; cl2_particle_stream: ParticleStream2; cl2_music: Music5; cl2_editor_category: EditorCategory1; cl2_damage_profile: DamageProfile1; cl2_particle_type: Particle; cl2_hitbox: Hitbox; cl2_animstate: AnimationState; gms_particle_asset: ParticleSystem7; cl2_emoji: Emoji11; cl2_chat: Chat; cl2_colorgrade_profile: ColorGrading1; cl2_spineslot: SpineSlot; cl2_boss_phase: BossPhase1; cl2_equipment_set: EquipmentSet10; cl2_credits: Credits; cl2_area: Area7; cl2_sub_damage_profile: DamageProfile; schema2: Schema; cl2_boss_dialogue: BossDialogueSequence4; cl2_reactions: Reactions; cl2_outpost: Scene8; cl2_buff: Buff7; gc_wip: WIP; floor_tile: Floor1; cl2_resistance_profile: ResistanceProfile3; dock_tile: Dock1; cl2_artisan_glads: Comfort2; terrain_tile: Terrain2; cl2_game_mode: GameMode2; cl2_roof: BuildingRoof; cl2_gamestats: GameStats; cl2_item_quality: ItemQuality; gms_object: Object7; video: Video; cl2_game_balance: GameBalance; earparty_sound: EarpartySound; recipe_category: RecipeCategory1; glowbeam: GlowBeam; light_emitter: LightEmitter; } /** * A spawner that creates strange creatures. */ interface StrangeSpawner { wip?: WIP; editor_group?: EditorGroup; strange_spawns: StrangeSpawns; strange_group: StrangeGroup; name: NameInternal; strange_unlocked_by?: UnlockedBy; } /** * Here you can indicate aspects of this element that should be considered a 'work in progress.' This means that it has elements that are either unfinished or need to be reworked. */ interface WIP { staging?: Staging; notes?: Notes; } /** * Developers can leave notes on this mote to indicate to what is left to do to finish this mote. */ interface Notes { [k: string]: { element: { author: string; timestamp: number; text: string; }; order: number; }; } /** * A list of strange creatures that this spawner can create at its location. */ interface StrangeSpawns { [k: string]: { element: string; order: number; }; } interface UnlockedBy { prerequisite: UnlockedBy1; unlock_text?: UnlockDescription; } /** * If unlocked by research, this description will appear in the Research Node. */ interface UnlockDescription { text: EnglishText; skip?: Skip; description?: TranslatorHelperText; } /** * A group of strange spawners. */ interface StrangeGroup1 { name: NameInternal1; wip?: WIP; unlocked_by?: UnlockedBy2; } interface UnlockedBy2 { prerequisite: UnlockedBy3; unlock_text?: UnlockDescription1; } /** * If unlocked by research, this description will appear in the Research Node. */ interface UnlockDescription1 { text: EnglishText1; skip?: Skip1; description?: TranslatorHelperText1; } interface ImpassableTile { wip?: WIP; sprite: MainSprite; map_color: MapColor; footstep_sound: FootstepSound; uicon: Icon; editor_group?: EditorGroup1; undersprite?: UnderSprite; dapples?: SunlightDappling; shore_interaction?: WaterInteraction; name: Name; flippable: Flippable; placement_sound?: PlacementSound; } /** * The color to draw this tile on the map. */ interface MapColor { g: Green; r: Red; b: Blue; } interface SunlightDappling { dapple_colors: Colors; dapple_chance: SpawnChance; } /** * The color to use for the sunlight dapples. */ interface Colors { [k: string]: { element: { g: Green1; r: Red1; b: Blue1; }; order: number; }; } /** * If set, this tile will be allowed to touch water. */ interface WaterInteraction { shore_sprite: ShorelineUnderwaterSprite; shelf_sprite?: ShelfUnderwaterSprite; } interface Name { text: EnglishText2; skip?: Skip2; description?: TranslatorHelperText2; } interface GardenBed { description?: Description; planted_sprites: PlantedSprites; wip?: WIP; sprite: MainSprite1; map_color: MapColor1; footstep_sound: FootstepSound1; uicon: Icon1; editor_group?: EditorGroup2; undersprite?: UnderSprite1; dapples?: SunlightDappling1; recipe?: Recipe; name: Name1; flippable: Flippable1; placement_sound?: PlacementSound1; variant_parent?: VariantParent; } interface Description { text: EnglishText3; skip?: Skip3; description?: TranslatorHelperText3; } /** * Each sprite in this list will be for a larger plot. E.g. the first entry will be 1x1, the second entry will be 2x2, etc... */ interface PlantedSprites { [k: string]: { element: string; order: number; }; } /** * The color to draw this tile on the map. */ interface MapColor1 { g: Green2; r: Red2; b: Blue2; } interface SunlightDappling1 { dapple_colors: Colors1; dapple_chance: SpawnChance1; } /** * The color to use for the sunlight dapples. */ interface Colors1 { [k: string]: { element: { g: Green3; r: Red3; b: Blue3; }; order: number; }; } interface Recipe { badge_cost_modifiers?: CostModifiedByResearch; station: Station; artisans?: ArtisansRequired; components: Ingredients; effort_modifier?: EffortModifier; source?: UnlockedBy4; optional_stations?: OptionalStations; output_quantity?: OutputQuantity; badge_output_modifiers?: OutputModifiedByResearch; } interface CostModifiedByResearch { [k: string]: { element: { badge_id: ResearchNode; value: ChangePerPoint; }; order: number; }; } interface ArtisansRequired { [k: string]: { element: string; order: number; }; } interface Ingredients { [k: string]: { element: string; order: number; }; } /** * Other stations that can be used to craft this recipe. */ interface OptionalStations { [k: string]: { element: string; order: number; }; } interface OutputModifiedByResearch { [k: string]: { element: { badge_id: ResearchNode1; value: ChangePerPoint1; style: Style; }; order: number; }; } interface Name1 { text: EnglishText4; skip?: Skip4; description?: TranslatorHelperText4; } interface GardenDock { description?: Description1; wip?: WIP; sprite: MainSprite2; map_color: MapColor2; footstep_sound: FootstepSound2; uicon: Icon2; editor_group?: EditorGroup3; undersprite?: UnderSprite2; dapples?: SunlightDappling2; recipe?: Recipe1; shore_interaction?: WaterInteraction1; name: Name2; placement_sound?: PlacementSound2; flippable: Flippable2; variant_parent: VariantParent1; } interface Description1 { text: EnglishText5; skip?: Skip5; description?: TranslatorHelperText5; } /** * The color to draw this tile on the map. */ interface MapColor2 { g: Green4; r: Red4; b: Blue4; } interface SunlightDappling2 { dapple_colors: Colors2; dapple_chance: SpawnChance2; } /** * The color to use for the sunlight dapples. */ interface Colors2 { [k: string]: { element: { g: Green5; r: Red5; b: Blue5; }; order: number; }; } interface Recipe1 { badge_cost_modifiers?: CostModifiedByResearch1; station: Station1; artisans?: ArtisansRequired1; components: Ingredients1; effort_modifier?: EffortModifier1; source?: UnlockedBy5; optional_stations?: OptionalStations1; output_quantity?: OutputQuantity1; badge_output_modifiers?: OutputModifiedByResearch1; } interface CostModifiedByResearch1 { [k: string]: { element: { badge_id: ResearchNode2; value: ChangePerPoint2; }; order: number; }; } interface ArtisansRequired1 { [k: string]: { element: string; order: number; }; } interface Ingredients1 { [k: string]: { element: string; order: number; }; } /** * Other stations that can be used to craft this recipe. */ interface OptionalStations1 { [k: string]: { element: string; order: number; }; } interface OutputModifiedByResearch1 { [k: string]: { element: { badge_id: ResearchNode3; value: ChangePerPoint3; style: Style1; }; order: number; }; } /** * If set, this tile will be allowed to touch water. */ interface WaterInteraction1 { shore_sprite: ShorelineUnderwaterSprite1; shelf_sprite?: ShelfUnderwaterSprite1; } interface Name2 { text: EnglishText6; skip?: Skip6; description?: TranslatorHelperText6; } interface Decor { particle_emitters?: ParticleEmitters; underfoot?: Underfoot; description: Description2; shadow?: Shadow; ignore_in_progression_map?: IgnoreInProgressionMap; hitbox: Hitbox; using_lighting: UseLighting; priors?: ProgressionPriors; object?: Object; wip?: WIP; uicon: UIIcon; editor_group?: EditorGroup4; tags: Categories; recipe?: Recipe2; states?: EntityStates; flippable?: Flippable3; placement_sound: PlacementSound3; grid_snapping?: GridSnapping; editor_hitbox_color?: EditorHitboxColor; hide_under_roof?: HideUnderRoof; sprite: WorldSprite; name: Name4; buildmode_flippable?: BuildModeFlippable; variant_parent?: VariantParent2; babbler?: Babbler1; requires_floor: RequiresFloor; light_emitter?: LightEmitter; worldmap_tile_color?: WorldMapTileColor; } interface ParticleEmitters { [k: string]: { element: ParticleEmitter; order: number; }; } interface ParticleEmitter { states?: RequiredStates; x_offset: XOffset; spine_bone?: SpineBone; y_offset: YOffset; behind?: Behind; emitter_scale?: EmitterScale; particle_system: ParticleSystem; } /** * If set, the particle system will only emit if the object is in one of these states */ interface RequiredStates { [k: string]: { element: State; order: number; }; } interface Description2 { text: EnglishText7; skip?: Skip7; description?: TranslatorHelperText7; } interface Shadow { scale?: ScaleModifier; sprite?: Sprite; } interface Hitbox { solid: Solid; size: Size; mask: Type; } interface Size { height: Height; width: Width; } /** * When viewing the progression tree, are there certain items you would consider to be prerequisites to this item? */ interface ProgressionPriors { [k: string]: { element: string; order: number; }; } interface Categories { [k: string]: { element: string; order: number; }; } interface Recipe2 { badge_cost_modifiers?: CostModifiedByResearch2; station: Station2; artisans?: ArtisansRequired2; components: Ingredients2; effort_modifier?: EffortModifier2; source?: UnlockedBy6; optional_stations?: OptionalStations2; output_quantity?: OutputQuantity2; badge_output_modifiers?: OutputModifiedByResearch2; } interface CostModifiedByResearch2 { [k: string]: { element: { badge_id: ResearchNode4; value: ChangePerPoint4; }; order: number; }; } interface ArtisansRequired2 { [k: string]: { element: string; order: number; }; } interface Ingredients2 { [k: string]: { element: string; order: number; }; } /** * Other stations that can be used to craft this recipe. */ interface OptionalStations2 { [k: string]: { element: string; order: number; }; } interface OutputModifiedByResearch2 { [k: string]: { element: { badge_id: ResearchNode5; value: ChangePerPoint5; style: Style2; }; order: number; }; } /** * Define the animations and logic for how this entity enters and exits various states. These states can be interacted with via the Reactions system. */ interface EntityStates { priorities?: StatePriorities; states: StateDefinitions; } /** * On first spawn and on state refresh, this priority list will be checked. The first priority group whose conditions are met will be chosen. If no conditions are met, the Default State will be used. */ interface StatePriorities { [k: string]: { element: StatePriorityGroup; order: number; }; } interface StatePriorityGroup { name: PriorityGroupNameInternal; conditions?: PriorityGroupConditions; states: States; } /** * If these conditions are met, then one of the states in this priority group will be chosen. */ interface PriorityGroupConditions { conditions: Conditions; require_all_conditions: RequireAllConditions; } interface Conditions { [k: string]: { element: Condition; order: number; }; } /** * Which abilities are we evaluating? */ interface Abilities { [k: string]: { element?: string; order?: number; }; } interface Evaluation { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; } /** * The 'minutes since timestamp' value can be modified up or down based on an Insight. */ interface InsightModifier { amount?: ChangePerPoint6; insight?: Insight; } /** * If set, this description will appear on the Research Node to explain what it is unlocking. */ interface InsightTooltip { text: EnglishText8; skip?: Skip8; description?: TranslatorHelperText8; } interface DistanceRequiredGridSpaces { value0?: Min; value1?: Max; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface Targets { [k: string]: { element?: Filter; order?: number; }; } interface Filter { exclude?: Exclude; buffs?: Buffs; combatants_only?: Combatants; require_all_tags?: RequireAllTags; datafield_evaluations?: DatafieldEvaluations; scenes?: Scenes; items?: Items; sub_filters?: SubFilters; } interface Buffs { require_all: RequireAll; stacks?: Stacks; buffs: Buffs1; } /** * The buffs found must match this stack requirement. */ interface Stacks { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity; } interface Buffs1 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes { [k: string]: { element?: string; order?: number; }; } interface Items { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters { [k: string]: { element?: Filter1; order?: number; }; } interface Filter1 { exclude?: Exclude1; buffs?: Buffs2; combatants_only?: Combatants1; require_all_tags?: RequireAllTags1; datafield_evaluations?: DatafieldEvaluations1; scenes?: Scenes1; items?: Items1; } interface Buffs2 { require_all: RequireAll1; stacks?: Stacks1; buffs: Buffs3; } /** * The buffs found must match this stack requirement. */ interface Stacks1 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity1; } interface Buffs3 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations1 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes1 { [k: string]: { element?: string; order?: number; }; } interface Items1 { [k: string]: { element?: string; order?: number; }; } interface NumberOfTargets { comparison?: Evaluation1; quantity?: Quantity2; } interface HealthEvaluation { hp_percentage?: number; comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; } interface Items2 { [k: string]: { element?: string; order?: number; }; } /** * The condition will be met if the player is wielding any of these items. */ interface Items3 { [k: string]: { element?: string; order?: number; }; } interface PiecesEquipped { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: EquipmentSet; value1?: number; } /** * If set, then targets other than yourself will be evaluated. */ interface NumberOfTargets1 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity3; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface BuffTargetFilter { [k: string]: { element?: Filter2; order?: number; }; } interface Filter2 { exclude?: Exclude2; buffs?: Buffs4; combatants_only?: Combatants2; require_all_tags?: RequireAllTags2; datafield_evaluations?: DatafieldEvaluations2; scenes?: Scenes2; items?: Items4; sub_filters?: SubFilters1; } interface Buffs4 { require_all: RequireAll4; stacks?: Stacks2; buffs: Buffs5; } /** * The buffs found must match this stack requirement. */ interface Stacks2 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity4; } interface Buffs5 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations2 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes2 { [k: string]: { element?: string; order?: number; }; } interface Items4 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters1 { [k: string]: { element?: Filter3; order?: number; }; } interface Filter3 { exclude?: Exclude3; buffs?: Buffs6; combatants_only?: Combatants3; require_all_tags?: RequireAllTags3; datafield_evaluations?: DatafieldEvaluations3; scenes?: Scenes3; items?: Items5; } interface Buffs6 { require_all: RequireAll5; stacks?: Stacks3; buffs: Buffs7; } /** * The buffs found must match this stack requirement. */ interface Stacks3 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity5; } interface Buffs7 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations3 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes3 { [k: string]: { element?: string; order?: number; }; } interface Items5 { [k: string]: { element?: string; order?: number; }; } /** * How close or far (in grid spaces) the entities must be to be considered for this condition. */ interface BuffTargetRange { value0?: Min1; value1?: Max1; } interface Stacks4 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity6; } interface Buffs8 { [k: string]: { element?: string; order?: number; }; } interface NumberSummoned { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity7; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface SummonedEntitiesFilter { [k: string]: { element?: Filter4; order?: number; }; } interface Filter4 { exclude?: Exclude4; buffs?: Buffs9; combatants_only?: Combatants4; require_all_tags?: RequireAllTags4; datafield_evaluations?: DatafieldEvaluations4; scenes?: Scenes4; items?: Items6; sub_filters?: SubFilters2; } interface Buffs9 { require_all: RequireAll6; stacks?: Stacks5; buffs: Buffs10; } /** * The buffs found must match this stack requirement. */ interface Stacks5 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity8; } interface Buffs10 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations4 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes4 { [k: string]: { element?: string; order?: number; }; } interface Items6 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters2 { [k: string]: { element?: Filter5; order?: number; }; } interface Filter5 { exclude?: Exclude5; buffs?: Buffs11; combatants_only?: Combatants5; require_all_tags?: RequireAllTags5; datafield_evaluations?: DatafieldEvaluations5; scenes?: Scenes5; items?: Items7; } interface Buffs11 { require_all: RequireAll7; stacks?: Stacks6; buffs: Buffs12; } /** * The buffs found must match this stack requirement. */ interface Stacks6 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity9; } interface Buffs12 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations5 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes5 { [k: string]: { element?: string; order?: number; }; } interface Items7 { [k: string]: { element?: string; order?: number; }; } /** * The reactor must be in one of these areas for the reaction to occur. */ interface Areas { [k: string]: { element?: string; order?: number; }; } /** * The reactor must be in one of these weather conditions for the reaction to occur. */ interface Weather { [k: string]: { element?: string; order?: number; }; } /** * One of these states will be chosen at random. */ interface States { [k: string]: { element: State1; order: number; }; } /** * The first state in this list will be the Default State. */ interface StateDefinitions { [k: string]: { element: State2; order: number; }; } /** * The first state in the list will be the starting state when this first spawns. */ interface State2 { next_state?: NextStates; name: StateNameInternal; duration: Duration; babbler_override?: BabblerOverride; animations?: Animations; } interface NextStates { [k: string]: { element: NextStatePriorityGroup; order: number; }; } interface NextStatePriorityGroup { conditions?: PriorityGroupConditions1; states: States1; } /** * If these conditions are met, then one of the states in this priority group will be chosen. */ interface PriorityGroupConditions1 { conditions: Conditions1; require_all_conditions: RequireAllConditions1; } interface Conditions1 { [k: string]: { element: Condition1; order: number; }; } /** * Which abilities are we evaluating? */ interface Abilities1 { [k: string]: { element?: string; order?: number; }; } interface Evaluation2 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; } /** * The 'minutes since timestamp' value can be modified up or down based on an Insight. */ interface InsightModifier1 { amount?: ChangePerPoint7; insight?: Insight2; } /** * If set, this description will appear on the Research Node to explain what it is unlocking. */ interface InsightTooltip1 { text: EnglishText9; skip?: Skip9; description?: TranslatorHelperText9; } interface DistanceRequiredGridSpaces1 { value0?: Min2; value1?: Max2; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface Targets1 { [k: string]: { element?: Filter6; order?: number; }; } interface Filter6 { exclude?: Exclude6; buffs?: Buffs13; combatants_only?: Combatants6; require_all_tags?: RequireAllTags6; datafield_evaluations?: DatafieldEvaluations6; scenes?: Scenes6; items?: Items8; sub_filters?: SubFilters3; } interface Buffs13 { require_all: RequireAll8; stacks?: Stacks7; buffs: Buffs14; } /** * The buffs found must match this stack requirement. */ interface Stacks7 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity10; } interface Buffs14 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations6 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes6 { [k: string]: { element?: string; order?: number; }; } interface Items8 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters3 { [k: string]: { element?: Filter7; order?: number; }; } interface Filter7 { exclude?: Exclude7; buffs?: Buffs15; combatants_only?: Combatants7; require_all_tags?: RequireAllTags7; datafield_evaluations?: DatafieldEvaluations7; scenes?: Scenes7; items?: Items9; } interface Buffs15 { require_all: RequireAll9; stacks?: Stacks8; buffs: Buffs16; } /** * The buffs found must match this stack requirement. */ interface Stacks8 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity11; } interface Buffs16 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations7 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes7 { [k: string]: { element?: string; order?: number; }; } interface Items9 { [k: string]: { element?: string; order?: number; }; } interface NumberOfTargets2 { comparison?: Evaluation3; quantity?: Quantity12; } interface HealthEvaluation1 { hp_percentage?: number; comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; } interface Items10 { [k: string]: { element?: string; order?: number; }; } /** * The condition will be met if the player is wielding any of these items. */ interface Items11 { [k: string]: { element?: string; order?: number; }; } interface PiecesEquipped1 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: EquipmentSet1; value1?: number; } /** * If set, then targets other than yourself will be evaluated. */ interface NumberOfTargets3 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity13; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface BuffTargetFilter1 { [k: string]: { element?: Filter8; order?: number; }; } interface Filter8 { exclude?: Exclude8; buffs?: Buffs17; combatants_only?: Combatants8; require_all_tags?: RequireAllTags8; datafield_evaluations?: DatafieldEvaluations8; scenes?: Scenes8; items?: Items12; sub_filters?: SubFilters4; } interface Buffs17 { require_all: RequireAll12; stacks?: Stacks9; buffs: Buffs18; } /** * The buffs found must match this stack requirement. */ interface Stacks9 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity14; } interface Buffs18 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations8 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes8 { [k: string]: { element?: string; order?: number; }; } interface Items12 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters4 { [k: string]: { element?: Filter9; order?: number; }; } interface Filter9 { exclude?: Exclude9; buffs?: Buffs19; combatants_only?: Combatants9; require_all_tags?: RequireAllTags9; datafield_evaluations?: DatafieldEvaluations9; scenes?: Scenes9; items?: Items13; } interface Buffs19 { require_all: RequireAll13; stacks?: Stacks10; buffs: Buffs20; } /** * The buffs found must match this stack requirement. */ interface Stacks10 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity15; } interface Buffs20 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations9 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes9 { [k: string]: { element?: string; order?: number; }; } interface Items13 { [k: string]: { element?: string; order?: number; }; } /** * How close or far (in grid spaces) the entities must be to be considered for this condition. */ interface BuffTargetRange1 { value0?: Min3; value1?: Max3; } interface Stacks11 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity16; } interface Buffs21 { [k: string]: { element?: string; order?: number; }; } interface NumberSummoned1 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity17; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface SummonedEntitiesFilter1 { [k: string]: { element?: Filter10; order?: number; }; } interface Filter10 { exclude?: Exclude10; buffs?: Buffs22; combatants_only?: Combatants10; require_all_tags?: RequireAllTags10; datafield_evaluations?: DatafieldEvaluations10; scenes?: Scenes10; items?: Items14; sub_filters?: SubFilters5; } interface Buffs22 { require_all: RequireAll14; stacks?: Stacks12; buffs: Buffs23; } /** * The buffs found must match this stack requirement. */ interface Stacks12 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity18; } interface Buffs23 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations10 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes10 { [k: string]: { element?: string; order?: number; }; } interface Items14 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters5 { [k: string]: { element?: Filter11; order?: number; }; } interface Filter11 { exclude?: Exclude11; buffs?: Buffs24; combatants_only?: Combatants11; require_all_tags?: RequireAllTags11; datafield_evaluations?: DatafieldEvaluations11; scenes?: Scenes11; items?: Items15; } interface Buffs24 { require_all: RequireAll15; stacks?: Stacks13; buffs: Buffs25; } /** * The buffs found must match this stack requirement. */ interface Stacks13 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity19; } interface Buffs25 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations11 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes11 { [k: string]: { element?: string; order?: number; }; } interface Items15 { [k: string]: { element?: string; order?: number; }; } /** * The reactor must be in one of these areas for the reaction to occur. */ interface Areas1 { [k: string]: { element?: string; order?: number; }; } /** * The reactor must be in one of these weather conditions for the reaction to occur. */ interface Weather1 { [k: string]: { element?: string; order?: number; }; } /** * One of these states will be chosen at random. */ interface States1 { [k: string]: { element: State3; order: number; }; } interface TimeSeconds { value0?: Min4; value1?: Max4; } /** * Allows for force-playing a certain babbler in this state, or playing no babbler at all in this state. */ interface BabblerOverride { override: OverrideBabbler; babbler?: Babbler; } /** * All of these animations will play. Unused tracks will have their animations cleared. */ interface Animations { [k: string]: { element: SpineAnimation; order: number; }; } interface SpineAnimation { track?: Track; animation_name: Name3; additional_animations?: AdditionalAnimations; speed?: Speed; looping: Looping; randomized_start?: RandomizedStart; } /** * If set, the entity will choose a random animation including the ones in this list when entering this state. */ interface AdditionalAnimations { [k: string]: { element: string; order: number; }; } interface Speed { value0: Min5; value1: Max5; } /** * For overriding the default hitbox color in the editor. */ interface EditorHitboxColor { g: Green6; r: Red6; b: Blue6; } interface Name4 { text: EnglishText10; skip?: Skip10; description?: TranslatorHelperText10; } interface LightEmitter { datafield_evaluation?: DatafieldEvaluation; grid_range: TileRadius; sine_waves?: SineWaves; color: Color; alpha: Brightness; } /** * Only display this light emitter if a data field on this object matches a criteria. */ interface DatafieldEvaluation { comparison: "==" | "!=" | "<" | "<=" | ">" | ">="; value0: string; value1: number; } /** * You can add sine waves to make the light emitter flicker or fade in and out. */ interface SineWaves { [k: string]: { element: SineWave; order: number; }; } /** * This will produce a fluctuating number that will be added to its specified property. */ interface SineWave { speed: Speed1; amplitude: Amplitude; affects: Affects; } /** * Because lighting colors add together when blended, bear in mind that using partial RGB values (e.g. 100 instead of 255) will end up stacking if these lights are placed in proximity to one another. So two orange lights will create yellow in the intermediate space between them. */ interface Color { g: Green7; r: Red7; b: Blue7; } /** * If set, this item will be drawn on the world map as a colored tile. */ interface WorldMapTileColor { g: Green8; r: Red8; b: Blue8; } interface BuildingPillar { description: Description3; wip?: WIP; sprite: WorldSprite1; uicon: UIIcon1; editor_group?: EditorGroup5; recipe?: Recipe3; name: Name5; placement_sound: PlacementSound4; roof_vote: PreferredRoof; variant_parent?: VariantParent3; pillar_distance: PillarSupportDistance; } interface Description3 { text: EnglishText11; skip?: Skip11; description?: TranslatorHelperText11; } interface Recipe3 { badge_cost_modifiers?: CostModifiedByResearch3; station: Station3; artisans?: ArtisansRequired3; components: Ingredients3; effort_modifier?: EffortModifier3; source?: UnlockedBy7; optional_stations?: OptionalStations3; output_quantity?: OutputQuantity3; badge_output_modifiers?: OutputModifiedByResearch3; } interface CostModifiedByResearch3 { [k: string]: { element: { badge_id: ResearchNode6; value: ChangePerPoint8; }; order: number; }; } interface ArtisansRequired3 { [k: string]: { element: string; order: number; }; } interface Ingredients3 { [k: string]: { element: string; order: number; }; } /** * Other stations that can be used to craft this recipe. */ interface OptionalStations3 { [k: string]: { element: string; order: number; }; } interface OutputModifiedByResearch3 { [k: string]: { element: { badge_id: ResearchNode7; value: ChangePerPoint9; style: Style3; }; order: number; }; } interface Name5 { text: EnglishText12; skip?: Skip12; description?: TranslatorHelperText12; } interface BuildingDoor { description: Description4; closed_during_combat?: ClosedDuringCombat; wip?: WIP; sprite: WorldSprite2; door_unlock_sound?: DoorUnlockSound; door_close_distance?: CloseDistance; uicon: UIIcon2; editor_group?: EditorGroup6; recipe?: Recipe4; name: Name6; placement_sound: PlacementSound5; roof_vote: PreferredRoof1; variant_parent?: VariantParent4; door_open_sound: DoorOpenSound; door_close_sound: DoorCloseSound; } interface Description4 { text: EnglishText13; skip?: Skip13; description?: TranslatorHelperText13; } interface Recipe4 { badge_cost_modifiers?: CostModifiedByResearch4; station: Station4; artisans?: ArtisansRequired4; components: Ingredients4; effort_modifier?: EffortModifier4; source?: UnlockedBy8; optional_stations?: OptionalStations4; output_quantity?: OutputQuantity4; badge_output_modifiers?: OutputModifiedByResearch4; } interface CostModifiedByResearch4 { [k: string]: { element: { badge_id: ResearchNode8; value: ChangePerPoint10; }; order: number; }; } interface ArtisansRequired4 { [k: string]: { element: string; order: number; }; } interface Ingredients4 { [k: string]: { element: string; order: number; }; } /** * Other stations that can be used to craft this recipe. */ interface OptionalStations4 { [k: string]: { element: string; order: number; }; } interface OutputModifiedByResearch4 { [k: string]: { element: { badge_id: ResearchNode9; value: ChangePerPoint11; style: Style4; }; order: number; }; } interface Name6 { text: EnglishText14; skip?: Skip14; description?: TranslatorHelperText14; } interface BuildingWall { wip?: WIP; sprite: WorldSprite3; uicon: UIIcon3; editor_group?: EditorGroup7; description: Description5; recipe?: Recipe5; name: Name7; placement_sound: PlacementSound6; roof_vote: PreferredRoof2; variant_parent?: VariantParent5; } interface Description5 { text: EnglishText15; skip?: Skip15; description?: TranslatorHelperText15; } interface Recipe5 { badge_cost_modifiers?: CostModifiedByResearch5; station: Station5; artisans?: ArtisansRequired5; components: Ingredients5; effort_modifier?: EffortModifier5; source?: UnlockedBy9; optional_stations?: OptionalStations5; output_quantity?: OutputQuantity5; badge_output_modifiers?: OutputModifiedByResearch5; } interface CostModifiedByResearch5 { [k: string]: { element: { badge_id: ResearchNode10; value: ChangePerPoint12; }; order: number; }; } interface ArtisansRequired5 { [k: string]: { element: string; order: number; }; } interface Ingredients5 { [k: string]: { element: string; order: number; }; } /** * Other stations that can be used to craft this recipe. */ interface OptionalStations5 { [k: string]: { element: string; order: number; }; } interface OutputModifiedByResearch5 { [k: string]: { element: { badge_id: ResearchNode11; value: ChangePerPoint13; style: Style5; }; order: number; }; } interface Name7 { text: EnglishText16; skip?: Skip16; description?: TranslatorHelperText16; } interface CraftingStation { worldmap_tile_color?: WorldMapTileColor1; station_open_sound?: AssemblyUIStartSound; station_assembly_sounds?: AssemblySounds; use_as_prior: CountAsProgressionRequirement; description: Description6; shadow?: Shadow; hitbox: Hitbox; using_lighting: UseLighting1; priors?: ProgressionPriors; object?: Object1; wip?: WIP; jingle_override?: JingleOverride; uicon: UIIcon4; editor_group?: EditorGroup8; recipe?: Recipe6; states?: EntityStates; flippable?: Flippable4; placement_sound: PlacementSound7; hide_under_roof?: HideUnderRoof1; sprite: WorldSprite4; spine_idle?: SpineIdle; name: Name8; buildmode_flippable?: BuildModeFlippable1; babbler?: Babbler2; requires_floor: RequiresFloor1; light_emitter?: LightEmitter; particle_emitters?: ParticleEmitters1; } /** * If set, this item will be drawn on the world map as a colored tile. */ interface WorldMapTileColor1 { g: Green9; r: Red9; b: Blue9; } /** * Order them from least intense to most intense. */ interface AssemblySounds { [k: string]: { element: string; order: number; }; } interface Description6 { text: EnglishText17; skip?: Skip17; description?: TranslatorHelperText17; } interface Recipe6 { badge_cost_modifiers?: CostModifiedByResearch6; station: Station6; artisans?: ArtisansRequired6; components: Ingredients6; effort_modifier?: EffortModifier6; source?: UnlockedBy10; optional_stations?: OptionalStations6; output_quantity?: OutputQuantity6; badge_output_modifiers?: OutputModifiedByResearch6; } interface CostModifiedByResearch6 { [k: string]: { element: { badge_id: ResearchNode12; value: ChangePerPoint14; }; order: number; }; } interface ArtisansRequired6 { [k: string]: { element: string; order: number; }; } interface Ingredients6 { [k: string]: { element: string; order: number; }; } /** * Other stations that can be used to craft this recipe. */ interface OptionalStations6 { [k: string]: { element: string; order: number; }; } interface OutputModifiedByResearch6 { [k: string]: { element: { badge_id: ResearchNode13; value: ChangePerPoint15; style: Style6; }; order: number; }; } interface Name8 { text: EnglishText18; skip?: Skip18; description?: TranslatorHelperText18; } interface ParticleEmitters1 { [k: string]: { element: ParticleEmitter1; order: number; }; } interface ParticleEmitter1 { states?: RequiredStates1; x_offset: XOffset1; spine_bone?: SpineBone1; y_offset: YOffset1; behind?: Behind1; emitter_scale?: EmitterScale1; particle_system: ParticleSystem1; } /** * If set, the particle system will only emit if the object is in one of these states */ interface RequiredStates1 { [k: string]: { element: State4; order: number; }; } interface PetNest { size: Size1; description?: Description7; using_lighting: UseLighting2; priors?: ProgressionPriors; wip?: WIP; sprite: WorldSprite5; uicon: UIIcon5; editor_group?: EditorGroup9; recipe?: Recipe7; name: Name9; light_emitter?: LightEmitter; } interface Size1 { height: Height1; width: Width1; } interface Description7 { text: EnglishText19; skip?: Skip19; description?: TranslatorHelperText19; } interface Recipe7 { badge_cost_modifiers?: CostModifiedByResearch7; station: Station7; artisans?: ArtisansRequired7; components: Ingredients7; effort_modifier?: EffortModifier7; source?: UnlockedBy11; optional_stations?: OptionalStations7; output_quantity?: OutputQuantity7; badge_output_modifiers?: OutputModifiedByResearch7; } interface CostModifiedByResearch7 { [k: string]: { element: { badge_id: ResearchNode14; value: ChangePerPoint16; }; order: number; }; } interface ArtisansRequired7 { [k: string]: { element: string; order: number; }; } interface Ingredients7 { [k: string]: { element: string; order: number; }; } /** * Other stations that can be used to craft this recipe. */ interface OptionalStations7 { [k: string]: { element: string; order: number; }; } interface OutputModifiedByResearch7 { [k: string]: { element: { badge_id: ResearchNode15; value: ChangePerPoint17; style: Style7; }; order: number; }; } interface Name9 { text: EnglishText20; skip?: Skip20; description?: TranslatorHelperText20; } /** * A dynamic fence that will automatically orient itself and display as posts or walls depending on its surroundings. */ interface Fence { height: HitboxHeight; description?: Description8; shadow?: Shadow; data_fields?: DataFields; using_lighting: UseLighting3; editor_hitbox_color?: EditorHitboxColor1; requires_land?: RequiresLand; wip?: WIP; sprite: WorldSprite6; uicon: UIIcon6; editor_group?: EditorGroup10; recipe?: Recipe8; name: Name10; variant_parent?: VariantParent6; blocks_abilities?: BlocksAbilities; light_emitter?: LightEmitter; worldmap_tile_color?: WorldMapTileColor2; } interface Description8 { text: EnglishText21; skip?: Skip21; description?: TranslatorHelperText21; } /** * Attaching data fields to this world element will make them readable by other game mechanics/elements. Can be used to store custom data on a world element. */ interface DataFields { [k: string]: { element: string; order: number; }; } /** * For overriding the default hitbox color in the editor. */ interface EditorHitboxColor1 { g: Green10; r: Red10; b: Blue10; } interface Recipe8 { badge_cost_modifiers?: CostModifiedByResearch8; station: Station8; artisans?: ArtisansRequired8; components: Ingredients8; effort_modifier?: EffortModifier8; source?: UnlockedBy12; optional_stations?: OptionalStations8; output_quantity?: OutputQuantity8; badge_output_modifiers?: OutputModifiedByResearch8; } interface CostModifiedByResearch8 { [k: string]: { element: { badge_id: ResearchNode16; value: ChangePerPoint18; }; order: number; }; } interface ArtisansRequired8 { [k: string]: { element: string; order: number; }; } interface Ingredients8 { [k: string]: { element: string; order: number; }; } /** * Other stations that can be used to craft this recipe. */ interface OptionalStations8 { [k: string]: { element: string; order: number; }; } interface OutputModifiedByResearch8 { [k: string]: { element: { badge_id: ResearchNode17; value: ChangePerPoint19; style: Style8; }; order: number; }; } interface Name10 { text: EnglishText22; skip?: Skip22; description?: TranslatorHelperText22; } /** * If set, this item will be drawn on the world map as a colored tile. */ interface WorldMapTileColor2 { g: Green11; r: Red11; b: Blue11; } interface Resource1 { underfoot: Underfoot1; material_tags: Materials; manual_sources?: ManualSources; hitbox: Hitbox; collection_sound?: CollectionSound; using_lighting?: UseLighting4; object: Object2; editor_group?: EditorGroup11; pickupable: Pickupable; respawn_multiplier?: RespawnTimeMultiplier; flippable?: Flippable5; reset_multiplier?: ResetTimeMultiplier; grid_snapping?: GridSnapping1; editor_excluded?: EditorExcluded; can_reset?: CanReset; whopper_pool?: WhopperPool; sprite: WorldSprite7; name: Name11; scale_modifier?: ScaleModifier1; source_text?: SourceText; relative_level?: RelativeLevel; relative_level_minimum?: RelativeLevelMinimum; description?: Description9; spine_skin?: SpineSkin; shadow?: Shadow; data_fields?: DataFields1; special_drops?: SpecialDrops; shiny_quest?: ShinyQuest; priors?: ProgressionPriors; expiration_minutes?: DynamicExpirationMinutes; wip?: WIP; drift_xflip?: XFlipWhenDrifting; water_layer?: WaterLayer; uicon: UIIcon7; states?: EntityStates; reactions?: Reactions; celebrate_pickup?: CelebratePickup; respawnable?: Respawnable; level_viewer_ignore?: IgnoreInLevelViewer; glowbeam?: GlowBeam; spawns?: Spawning; editor_hitbox_color?: EditorHitboxColor2; hide_under_roof?: HideUnderRoof2; merge_root?: AutoMergeRootItem; requires_land?: RequiresLand1; zappable?: Zappable; random_scaling: RandomScalingMinimum; knowledge_group?: KnowledgeGroup; randomized_skin?: RandomizedSpineSkin; level: Level; bullet_interaction?: BulletInteraction; always_autoloot?: AlwaysAutocollectLoot; can_exist_on_floors?: CanExistOnFloors; effort_modifier?: EffortModifier9; babbler?: Babbler3; light_emitter?: LightEmitter; worldmap_tile_color?: WorldMapTileColor3; } /** * What is this thing made of? This is used for categorization and can otherwise be used by abilities, fulfillments, etc... to broadly categorize interactions. */ interface Materials { [k: string]: { element: string; order: number; }; } /** * A list of manually-set sources for this item. */ interface ManualSources { [k: string]: { element: ManualSource; order: number; }; } /** * A manual listing of this item source. Useful for items that have more complex acquisition methods. */ interface ManualSource { source: Source; unlocked_by?: UnlockedBy13; } interface Name11 { text: EnglishText23; skip?: Skip23; description?: TranslatorHelperText23; } /** * An explanation of how to get this item, in the even that it's complicated. */ interface SourceText { source_text: SourceText1; unlocked_by?: UnlockedBy14; } interface SourceText1 { text: EnglishText24; skip?: Skip24; description?: TranslatorHelperText24; } interface Description9 { text: EnglishText25; skip?: Skip25; description?: TranslatorHelperText25; } /** * Attaching data fields to this world element will make them readable by other game mechanics/elements. Can be used to store custom data on a world element. */ interface DataFields1 { [k: string]: { element: string; order: number; }; } /** * A list of manually-set special drops for this item to be listed in the Compendium. */ interface SpecialDrops { [k: string]: { element: SpecialDrop; order: number; }; } /** * A manual listing for the compendium. */ interface SpecialDrop { unlocked_by?: UnlockedBy15; item: Item; } interface Reactions { [k: string]: { element: Reaction; order: number; }; } interface Reaction { chance?: ReactionChance; triggers: Triggers; actions: Actions; description?: TooltipDescription; name: NameInternal2; conditions?: Conditions2; require_all_conditions: RequireAllConditions2; hide_debug_logs?: HideDebugLogs; } interface Triggers { [k: string]: { element: Trigger; order: number; }; } /** * If set, this trigger will only occur if the attacker is within this many grid spaces. */ interface AttackerDistance { value0?: Min6; value1?: Max6; } /** * If set, this trigger will only occur if one of these damage types is used to harm me. */ interface DamageTypes { [k: string]: { element?: string; order?: number; }; } /** * My attacker must match one of these filters. */ interface TargetFilter { [k: string]: { element?: Filter12; order?: number; }; } interface Filter12 { exclude?: Exclude12; buffs?: Buffs26; combatants_only?: Combatants12; require_all_tags?: RequireAllTags12; datafield_evaluations?: DatafieldEvaluations12; scenes?: Scenes12; items?: Items16; sub_filters?: SubFilters6; } interface Buffs26 { require_all: RequireAll16; stacks?: Stacks14; buffs: Buffs27; } /** * The buffs found must match this stack requirement. */ interface Stacks14 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity20; } interface Buffs27 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations12 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes12 { [k: string]: { element?: string; order?: number; }; } interface Items16 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters6 { [k: string]: { element?: Filter13; order?: number; }; } interface Filter13 { exclude?: Exclude13; buffs?: Buffs28; combatants_only?: Combatants13; require_all_tags?: RequireAllTags13; datafield_evaluations?: DatafieldEvaluations13; scenes?: Scenes13; items?: Items17; } interface Buffs28 { require_all: RequireAll17; stacks?: Stacks15; buffs: Buffs29; } /** * The buffs found must match this stack requirement. */ interface Stacks15 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity21; } interface Buffs29 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations13 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes13 { [k: string]: { element?: string; order?: number; }; } interface Items17 { [k: string]: { element?: string; order?: number; }; } /** * If set, this trigger will only occur if one of these items were used to deal damage to me. */ interface ItemsUsed { [k: string]: { element?: string; order?: number; }; } /** * If set, this trigger will only occur if one of these abilities were used to deal damage to me. */ interface AbilitiesUsed { [k: string]: { element?: string; order?: number; }; } /** * The thing I killed must match one of these filters. */ interface TargetFilter1 { [k: string]: { element?: Filter14; order?: number; }; } interface Filter14 { exclude?: Exclude14; buffs?: Buffs30; combatants_only?: Combatants14; require_all_tags?: RequireAllTags14; datafield_evaluations?: DatafieldEvaluations14; scenes?: Scenes14; items?: Items18; sub_filters?: SubFilters7; } interface Buffs30 { require_all: RequireAll18; stacks?: Stacks16; buffs: Buffs31; } /** * The buffs found must match this stack requirement. */ interface Stacks16 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity22; } interface Buffs31 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations14 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes14 { [k: string]: { element?: string; order?: number; }; } interface Items18 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters7 { [k: string]: { element?: Filter15; order?: number; }; } interface Filter15 { exclude?: Exclude15; buffs?: Buffs32; combatants_only?: Combatants15; require_all_tags?: RequireAllTags15; datafield_evaluations?: DatafieldEvaluations15; scenes?: Scenes15; items?: Items19; } interface Buffs32 { require_all: RequireAll19; stacks?: Stacks17; buffs: Buffs33; } /** * The buffs found must match this stack requirement. */ interface Stacks17 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity23; } interface Buffs33 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations15 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes15 { [k: string]: { element?: string; order?: number; }; } interface Items19 { [k: string]: { element?: string; order?: number; }; } /** * How many seconds will pass between this trigger occurring. */ interface Seconds { value0?: Min7; value1?: Max7; } /** * The thing that killed me must match one of these filters. */ interface MyKillerTargetFilter { [k: string]: { element?: Filter16; order?: number; }; } interface Filter16 { exclude?: Exclude16; buffs?: Buffs34; combatants_only?: Combatants16; require_all_tags?: RequireAllTags16; datafield_evaluations?: DatafieldEvaluations16; scenes?: Scenes16; items?: Items20; sub_filters?: SubFilters8; } interface Buffs34 { require_all: RequireAll20; stacks?: Stacks18; buffs: Buffs35; } /** * The buffs found must match this stack requirement. */ interface Stacks18 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity24; } interface Buffs35 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations16 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes16 { [k: string]: { element?: string; order?: number; }; } interface Items20 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters8 { [k: string]: { element?: Filter17; order?: number; }; } interface Filter17 { exclude?: Exclude17; buffs?: Buffs36; combatants_only?: Combatants17; require_all_tags?: RequireAllTags17; datafield_evaluations?: DatafieldEvaluations17; scenes?: Scenes17; items?: Items21; } interface Buffs36 { require_all: RequireAll21; stacks?: Stacks19; buffs: Buffs37; } /** * The buffs found must match this stack requirement. */ interface Stacks19 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity25; } interface Buffs37 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations17 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes17 { [k: string]: { element?: string; order?: number; }; } interface Items21 { [k: string]: { element?: string; order?: number; }; } /** * If set, this trigger will only occur if the target is within this many grid spaces. */ interface TargetDistance { value0?: Min8; value1?: Max8; } /** * If set, this trigger will only occur if one of these damage types is used. */ interface DamageTypes1 { [k: string]: { element?: string; order?: number; }; } /** * My attacker must match one of these filters. */ interface TargetFilter2 { [k: string]: { element?: Filter18; order?: number; }; } interface Filter18 { exclude?: Exclude18; buffs?: Buffs38; combatants_only?: Combatants18; require_all_tags?: RequireAllTags18; datafield_evaluations?: DatafieldEvaluations18; scenes?: Scenes18; items?: Items22; sub_filters?: SubFilters9; } interface Buffs38 { require_all: RequireAll22; stacks?: Stacks20; buffs: Buffs39; } /** * The buffs found must match this stack requirement. */ interface Stacks20 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity26; } interface Buffs39 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations18 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes18 { [k: string]: { element?: string; order?: number; }; } interface Items22 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters9 { [k: string]: { element?: Filter19; order?: number; }; } interface Filter19 { exclude?: Exclude19; buffs?: Buffs40; combatants_only?: Combatants19; require_all_tags?: RequireAllTags19; datafield_evaluations?: DatafieldEvaluations19; scenes?: Scenes19; items?: Items23; } interface Buffs40 { require_all: RequireAll23; stacks?: Stacks21; buffs: Buffs41; } /** * The buffs found must match this stack requirement. */ interface Stacks21 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity27; } interface Buffs41 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations19 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes19 { [k: string]: { element?: string; order?: number; }; } interface Items23 { [k: string]: { element?: string; order?: number; }; } /** * If set, this trigger will only occur if one of these items were used to deal damage. */ interface ItemsUsed1 { [k: string]: { element?: string; order?: number; }; } /** * If set, this trigger will only occur if one of these abilities were used to deal damage. */ interface AbilitiesUsed1 { [k: string]: { element?: string; order?: number; }; } /** * If set, this trigger will only occur if one of these items were used to cast an ability. */ interface ItemsUsed2 { [k: string]: { element?: string; order?: number; }; } /** * This trigger will only occur when one of these abilities are cast. */ interface Abilities2 { [k: string]: { element?: string; order?: number; }; } /** * This trigger will only be met if the ability has a target that matches this filter. */ interface TargetFilter3 { [k: string]: { element?: Filter20; order?: number; }; } interface Filter20 { exclude?: Exclude20; buffs?: Buffs42; combatants_only?: Combatants20; require_all_tags?: RequireAllTags20; datafield_evaluations?: DatafieldEvaluations20; scenes?: Scenes20; items?: Items24; sub_filters?: SubFilters10; } interface Buffs42 { require_all: RequireAll24; stacks?: Stacks22; buffs: Buffs43; } /** * The buffs found must match this stack requirement. */ interface Stacks22 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity28; } interface Buffs43 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations20 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes20 { [k: string]: { element?: string; order?: number; }; } interface Items24 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters10 { [k: string]: { element?: Filter21; order?: number; }; } interface Filter21 { exclude?: Exclude21; buffs?: Buffs44; combatants_only?: Combatants21; require_all_tags?: RequireAllTags21; datafield_evaluations?: DatafieldEvaluations21; scenes?: Scenes21; items?: Items25; } interface Buffs44 { require_all: RequireAll25; stacks?: Stacks23; buffs: Buffs45; } /** * The buffs found must match this stack requirement. */ interface Stacks23 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity29; } interface Buffs45 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations21 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes21 { [k: string]: { element?: string; order?: number; }; } interface Items25 { [k: string]: { element?: string; order?: number; }; } /** * This trigger will only occur if one of these buffs get applied to the target. */ interface Buffs46 { [k: string]: { element?: string; order?: number; }; } /** * If applying a buff to another target, the target must match this filter. If receiving a buff from a target, that target must match this filter. */ interface TargetFilter4 { [k: string]: { element?: Filter22; order?: number; }; } interface Filter22 { exclude?: Exclude22; buffs?: Buffs47; combatants_only?: Combatants22; require_all_tags?: RequireAllTags22; datafield_evaluations?: DatafieldEvaluations22; scenes?: Scenes22; items?: Items26; sub_filters?: SubFilters11; } interface Buffs47 { require_all: RequireAll26; stacks?: Stacks24; buffs: Buffs48; } /** * The buffs found must match this stack requirement. */ interface Stacks24 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity30; } interface Buffs48 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations22 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes22 { [k: string]: { element?: string; order?: number; }; } interface Items26 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters11 { [k: string]: { element?: Filter23; order?: number; }; } interface Filter23 { exclude?: Exclude23; buffs?: Buffs49; combatants_only?: Combatants23; require_all_tags?: RequireAllTags23; datafield_evaluations?: DatafieldEvaluations23; scenes?: Scenes23; items?: Items27; } interface Buffs49 { require_all: RequireAll27; stacks?: Stacks25; buffs: Buffs50; } /** * The buffs found must match this stack requirement. */ interface Stacks25 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity31; } interface Buffs50 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations23 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes23 { [k: string]: { element?: string; order?: number; }; } interface Items27 { [k: string]: { element?: string; order?: number; }; } /** * The target of the buff must match this filter. If receiving a buff from a target, that target must match this filter. */ interface TargetFilter5 { [k: string]: { element?: Filter24; order?: number; }; } interface Filter24 { exclude?: Exclude24; buffs?: Buffs51; combatants_only?: Combatants24; require_all_tags?: RequireAllTags24; datafield_evaluations?: DatafieldEvaluations24; scenes?: Scenes24; items?: Items28; sub_filters?: SubFilters12; } interface Buffs51 { require_all: RequireAll28; stacks?: Stacks26; buffs: Buffs52; } /** * The buffs found must match this stack requirement. */ interface Stacks26 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity32; } interface Buffs52 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations24 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes24 { [k: string]: { element?: string; order?: number; }; } interface Items28 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters12 { [k: string]: { element?: Filter25; order?: number; }; } interface Filter25 { exclude?: Exclude25; buffs?: Buffs53; combatants_only?: Combatants25; require_all_tags?: RequireAllTags25; datafield_evaluations?: DatafieldEvaluations25; scenes?: Scenes25; items?: Items29; } interface Buffs53 { require_all: RequireAll29; stacks?: Stacks27; buffs: Buffs54; } /** * The buffs found must match this stack requirement. */ interface Stacks27 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity33; } interface Buffs54 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations25 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes25 { [k: string]: { element?: string; order?: number; }; } interface Items29 { [k: string]: { element?: string; order?: number; }; } interface Buffs55 { [k: string]: { element?: string; order?: number; }; } interface Buffs56 { [k: string]: { element?: string; order?: number; }; } /** * If set, this trigger will only occur if one of these items were used to cast an ability on me. */ interface ItemsUsed3 { [k: string]: { element?: string; order?: number; }; } /** * This trigger will only occur when one of these abilities are cast on me. */ interface Abilities3 { [k: string]: { element?: string; order?: number; }; } /** * This trigger will only be met if the ability caster matches this filter. */ interface TargetFilter6 { [k: string]: { element?: Filter26; order?: number; }; } interface Filter26 { exclude?: Exclude26; buffs?: Buffs57; combatants_only?: Combatants26; require_all_tags?: RequireAllTags26; datafield_evaluations?: DatafieldEvaluations26; scenes?: Scenes26; items?: Items30; sub_filters?: SubFilters13; } interface Buffs57 { require_all: RequireAll30; stacks?: Stacks28; buffs: Buffs58; } /** * The buffs found must match this stack requirement. */ interface Stacks28 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity34; } interface Buffs58 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations26 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes26 { [k: string]: { element?: string; order?: number; }; } interface Items30 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters13 { [k: string]: { element?: Filter27; order?: number; }; } interface Filter27 { exclude?: Exclude27; buffs?: Buffs59; combatants_only?: Combatants27; require_all_tags?: RequireAllTags27; datafield_evaluations?: DatafieldEvaluations27; scenes?: Scenes27; items?: Items31; } interface Buffs59 { require_all: RequireAll31; stacks?: Stacks29; buffs: Buffs60; } /** * The buffs found must match this stack requirement. */ interface Stacks29 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity35; } interface Buffs60 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations27 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes27 { [k: string]: { element?: string; order?: number; }; } interface Items31 { [k: string]: { element?: string; order?: number; }; } /** * If set, this trigger will only occur if one of these items were consumed. */ interface ItemsConsumed { [k: string]: { element?: string; order?: number; }; } interface Actions { [k: string]: { element: Action; order: number; }; } /** * The new entity will spawn a random range away from the chosen location, up to this number of grid spaces. */ interface SpawnDistance { value0?: Min9; value1?: Max9; } interface DamageProfile { damage_types: DamageTypes2; buff_stack_multiplier?: BuffStackMultiplier; buff_damage_source?: BuffDamageSource; causes_slomo_burst?: CausesSlomoBurst; direct_damage?: DirectDamage2; ignore_toughness_vuln?: IgnoreToughnessVulnerability; can_crit?: CanCrit; modifiers?: Modifiers; } /** * What kind of damage to deal, and what percent of the 'normal' amount to deal. The actual damage dealt will be calculated based on factors such as the level of the user (or item used), cast times, and stats of the attacker. */ interface DamageTypes2 { [k: string]: { element: { value: DamageAmount; key: DamageType; }; order: number; }; } /** * If set, this will multiply the damage dealt by the number of stacks of the buff applied to the target. */ interface BuffStackMultiplier { own_only: OwnOnly; per_stack_multiplier: PerStackMultiplier; base_multiplier: BaseMultiplier; buff_id: Buff1; maximum_stacks?: MaximumStacks; buff_target: BuffTarget; } /** * If set, you can pull damage from the damage pool of a buff, and use that amount to calculate this ability's damage outcome. */ interface BuffDamageSource { own_only: OwnOnly1; buff_target: BuffTarget1; amount: Amount; buff_id: Buff2; consume: ConsumeDamage; } /** * Whether to deal extra or reduced damage to certain things, or certain kinds of things. */ interface Modifiers { [k: string]: { element: { value: Modifier; key: Filter28; }; order: number; }; } /** * How much this damage is boosted or suppressed by points spent in Insights. */ interface InsightDamageModifiers { [k: string]: { element?: { badge_id: Insight4; value: ChangePerPoint20; tooltip_text?: InsightTooltipText; }; order?: number; }; } /** * Explain how the insight changes the damage of this ability. This text will appear on the Insight's tooltip page. */ interface InsightTooltipText { text: EnglishText26; skip?: Skip26; description?: TranslatorHelperText26; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface TargetFilters { [k: string]: { element?: Filter29; order?: number; }; } interface Filter29 { exclude?: Exclude28; buffs?: Buffs61; combatants_only?: Combatants28; require_all_tags?: RequireAllTags28; datafield_evaluations?: DatafieldEvaluations28; scenes?: Scenes28; items?: Items32; sub_filters?: SubFilters14; } interface Buffs61 { require_all: RequireAll32; stacks?: Stacks31; buffs: Buffs62; } /** * The buffs found must match this stack requirement. */ interface Stacks31 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity36; } interface Buffs62 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations28 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes28 { [k: string]: { element?: string; order?: number; }; } interface Items32 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters14 { [k: string]: { element?: Filter30; order?: number; }; } interface Filter30 { exclude?: Exclude29; buffs?: Buffs63; combatants_only?: Combatants29; require_all_tags?: RequireAllTags29; datafield_evaluations?: DatafieldEvaluations29; scenes?: Scenes29; items?: Items33; } interface Buffs63 { require_all: RequireAll33; stacks?: Stacks32; buffs: Buffs64; } /** * The buffs found must match this stack requirement. */ interface Stacks32 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity37; } interface Buffs64 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations29 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes29 { [k: string]: { element?: string; order?: number; }; } interface Items33 { [k: string]: { element?: string; order?: number; }; } /** * Deal more or less damage, depending on data fields. */ interface DatafieldMultipliers { [k: string]: { element?: { datafield_owner?: DatafieldOwner; datafield_id?: DataField; }; order?: number; }; } interface LootItems { [k: string]: { element?: { probability?: Chance; quantity?: Quantity38; item?: Item1; }; order?: number; }; } interface Quantity38 { value0?: Min10; value1?: Max10; } interface Color1 { g?: Green12; r?: Red12; b?: Blue12; } interface DecalDurationSeconds { value0?: Min11; value1?: Max11; } /** * The decal will choose a random scale between these numbers. */ interface DecalScale { value0?: Min12; value1?: Max12; } /** * Set this to spawn the explosion a random delay. */ interface RandomDelaySeconds { value0?: Min13; value1?: Max13; } /** * These are the particles that will shoot out from the explosion. */ interface DebrisParticles { [k: string]: { element?: DebrisParticles1; order?: number; }; } interface DebrisParticles1 { num_particles?: NumberOfParticles; particle_scale?: ParticleScale; sprite?: Sprite1; } interface BaseColor { g?: Green13; r?: Red13; b?: Blue13; } interface HighlightColor { g?: Green14; r?: Red14; b?: Blue14; } interface ExplosionScale { value0?: Min14; value1?: Max14; } /** * Set this to spawn the explosion a random distance away. */ interface RandomDistanceGridSpaces { value0?: Min15; value1?: Max15; } interface SmokeColor { g?: Green15; r?: Red15; b?: Blue15; } /** * The starting radius of the smoke burst. */ interface RadiusPixels { value0?: Min16; value1?: Max16; } interface Particle { speed?: Speed2; shrinking?: Shrinking; alpha?: Alpha; wip?: WIP; size?: Size2; lighting_style?: Lighting; shape?: Shape; x_scale?: XScale; y_scale?: YScale; size_increase?: SizeChangePerSecond; size_wiggle?: SizeWiggle; orientation?: Orientation; orientation_relative?: OrientationRelative; orientation_increase?: OrientationChangeSec; orientation_wiggle?: OrientationWiggle; acceleration?: Acceleration; p_gravity?: Gravity; p_gravity_direction?: GravityDirection; colors?: Colors3; p_direction?: Direction; p_direction_increase?: DirectionChangeDegreesSec; sprite?: Sprite2; name?: ParticleNameInternal; life?: LifeSeconds; parent?: Parent; } /** * How fast (in pixels per second) the particles should blast out. */ interface Speed2 { value0: Min17; value1: Max17; } /** * How the particles should change their alpha values over their lifetime. */ interface Alpha { [k: string]: { element: AlphaValue; order: number; }; } interface Size2 { value0: Min18; value1: Max18; } /** * The rotations of the individual particles (in degrees) */ interface Orientation { value0: Min19; value1: Max19; } /** * How the particles should cycle through colors over their lifetime. */ interface Colors3 { [k: string]: { element: Color2; order: number; }; } interface Color2 { g: Green16; r: Red16; b: Blue16; } /** * The direction the particles should go at their defined speed. */ interface Direction { value0: Min20; value1: Max20; } interface LifeSeconds { value0: Min21; value1: Max21; } interface Bursts { [k: string]: { element?: Burst; order?: number; }; } interface Burst { spawn_at_ground?: SpawnOnGround1; location: Source2; use_aim_direction?: UseAimDirection; num_particles: NumberOfParticles1; direction?: BurstDirection; scaled_radius?: ScaledSpawnRadius; outward_blast: BlastOutward; spawn_radius: SpawnRadiusPixels; radius_as_grid?: SpawnRadiusAsGrid; z_offset?: ZOffset2; y_offset?: YOffset4; perspective: Perspective; } interface NumberOfParticles1 { value0?: Min22; value1?: Max22; } interface BurstDirection { value0?: Min23; value1?: Max23; } /** * How far from the source the particles will spawn. */ interface SpawnRadiusPixels { value0?: Min24; value1?: Max24; } interface DistanceGrid { value0?: Min25; value1?: Max25; } interface Color3 { g?: Green17; r?: Red17; b?: Blue17; } interface NumberOfBolts { value0?: Min26; value1?: Max26; } interface SkybeamColor { g?: Green18; r?: Red18; b?: Blue18; } interface Color11 { g?: Green19; r?: Red19; b?: Blue19; } interface Color21 { g?: Green20; r?: Red20; b?: Blue20; } /** * The ring will spawn at a random size between these two radii. */ interface GridRadius { value0?: Min27; value1?: Max27; } interface LightningColor { g?: Green21; r?: Red21; b?: Blue21; } /** * Describe this reaction, so it can be displayed in a tooltip. If a description is given, then the tooltip will also pull up any available information about this reaction's ability casts, buffs, damage, etc... */ interface TooltipDescription { text: EnglishText27; skip?: Skip27; } interface Conditions2 { [k: string]: { element: Condition2; order: number; }; } /** * Which abilities are we evaluating? */ interface Abilities4 { [k: string]: { element?: string; order?: number; }; } interface Evaluation4 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; } /** * The 'minutes since timestamp' value can be modified up or down based on an Insight. */ interface InsightModifier2 { amount?: ChangePerPoint21; insight?: Insight5; } /** * If set, this description will appear on the Research Node to explain what it is unlocking. */ interface InsightTooltip2 { text: EnglishText28; skip?: Skip28; description?: TranslatorHelperText27; } interface DistanceRequiredGridSpaces2 { value0?: Min28; value1?: Max28; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface Targets2 { [k: string]: { element?: Filter31; order?: number; }; } interface Filter31 { exclude?: Exclude30; buffs?: Buffs65; combatants_only?: Combatants30; require_all_tags?: RequireAllTags30; datafield_evaluations?: DatafieldEvaluations30; scenes?: Scenes30; items?: Items34; sub_filters?: SubFilters15; } interface Buffs65 { require_all: RequireAll34; stacks?: Stacks34; buffs: Buffs66; } /** * The buffs found must match this stack requirement. */ interface Stacks34 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity39; } interface Buffs66 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations30 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes30 { [k: string]: { element?: string; order?: number; }; } interface Items34 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters15 { [k: string]: { element?: Filter32; order?: number; }; } interface Filter32 { exclude?: Exclude31; buffs?: Buffs67; combatants_only?: Combatants31; require_all_tags?: RequireAllTags31; datafield_evaluations?: DatafieldEvaluations31; scenes?: Scenes31; items?: Items35; } interface Buffs67 { require_all: RequireAll35; stacks?: Stacks35; buffs: Buffs68; } /** * The buffs found must match this stack requirement. */ interface Stacks35 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity40; } interface Buffs68 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations31 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes31 { [k: string]: { element?: string; order?: number; }; } interface Items35 { [k: string]: { element?: string; order?: number; }; } interface NumberOfTargets4 { comparison?: Evaluation5; quantity?: Quantity41; } interface HealthEvaluation2 { hp_percentage?: number; comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; } interface Items36 { [k: string]: { element?: string; order?: number; }; } /** * The condition will be met if the player is wielding any of these items. */ interface Items37 { [k: string]: { element?: string; order?: number; }; } interface PiecesEquipped2 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: EquipmentSet2; value1?: number; } /** * If set, then targets other than yourself will be evaluated. */ interface NumberOfTargets5 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity42; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface BuffTargetFilter2 { [k: string]: { element?: Filter33; order?: number; }; } interface Filter33 { exclude?: Exclude32; buffs?: Buffs69; combatants_only?: Combatants32; require_all_tags?: RequireAllTags32; datafield_evaluations?: DatafieldEvaluations32; scenes?: Scenes32; items?: Items38; sub_filters?: SubFilters16; } interface Buffs69 { require_all: RequireAll38; stacks?: Stacks36; buffs: Buffs70; } /** * The buffs found must match this stack requirement. */ interface Stacks36 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity43; } interface Buffs70 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations32 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes32 { [k: string]: { element?: string; order?: number; }; } interface Items38 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters16 { [k: string]: { element?: Filter34; order?: number; }; } interface Filter34 { exclude?: Exclude33; buffs?: Buffs71; combatants_only?: Combatants33; require_all_tags?: RequireAllTags33; datafield_evaluations?: DatafieldEvaluations33; scenes?: Scenes33; items?: Items39; } interface Buffs71 { require_all: RequireAll39; stacks?: Stacks37; buffs: Buffs72; } /** * The buffs found must match this stack requirement. */ interface Stacks37 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity44; } interface Buffs72 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations33 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes33 { [k: string]: { element?: string; order?: number; }; } interface Items39 { [k: string]: { element?: string; order?: number; }; } /** * How close or far (in grid spaces) the entities must be to be considered for this condition. */ interface BuffTargetRange2 { value0?: Min29; value1?: Max29; } interface Stacks38 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity45; } interface Buffs73 { [k: string]: { element?: string; order?: number; }; } interface NumberSummoned2 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity46; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface SummonedEntitiesFilter2 { [k: string]: { element?: Filter35; order?: number; }; } interface Filter35 { exclude?: Exclude34; buffs?: Buffs74; combatants_only?: Combatants34; require_all_tags?: RequireAllTags34; datafield_evaluations?: DatafieldEvaluations34; scenes?: Scenes34; items?: Items40; sub_filters?: SubFilters17; } interface Buffs74 { require_all: RequireAll40; stacks?: Stacks39; buffs: Buffs75; } /** * The buffs found must match this stack requirement. */ interface Stacks39 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity47; } interface Buffs75 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations34 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes34 { [k: string]: { element?: string; order?: number; }; } interface Items40 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters17 { [k: string]: { element?: Filter36; order?: number; }; } interface Filter36 { exclude?: Exclude35; buffs?: Buffs76; combatants_only?: Combatants35; require_all_tags?: RequireAllTags35; datafield_evaluations?: DatafieldEvaluations35; scenes?: Scenes35; items?: Items41; } interface Buffs76 { require_all: RequireAll41; stacks?: Stacks40; buffs: Buffs77; } /** * The buffs found must match this stack requirement. */ interface Stacks40 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity48; } interface Buffs77 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations35 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes35 { [k: string]: { element?: string; order?: number; }; } interface Items41 { [k: string]: { element?: string; order?: number; }; } /** * The reactor must be in one of these areas for the reaction to occur. */ interface Areas2 { [k: string]: { element?: string; order?: number; }; } /** * The reactor must be in one of these weather conditions for the reaction to occur. */ interface Weather2 { [k: string]: { element?: string; order?: number; }; } /** * A beam of glowing light that emanates upward from the object. Useful for highlighting important things. */ interface GlowBeam { width: Width2; center_color?: CenterColor; height: Height2; color: Color4; z_offset?: ZOffset6; } /** * Optionally draw another beam inside this one to brighten its center. */ interface CenterColor { g: Green22; r: Red22; b: Blue22; } /** * The color of the beam. */ interface Color4 { g: Green23; r: Red23; b: Blue23; } /** * How this thing spawns in the world. */ interface Spawning { [k: string]: { element: { chance: Coverage; tile: string; }; order: number; }; } /** * For overriding the default hitbox color in the editor. */ interface EditorHitboxColor2 { g: Green24; r: Red24; b: Blue24; } /** * If set, this item will be drawn on the world map as a colored tile. */ interface WorldMapTileColor3 { g: Green25; r: Red25; b: Blue25; } /** * Sound effects to play when this thing is destroyed. */ interface DestructionSounds { [k: string]: { element?: string; order?: number; }; } /** * Sound effects to play when this thing takes damage. */ interface InjurySounds { [k: string]: { element?: { minor_injury_sound?: Minor; major_injury_sound?: Major; chance_of_playing?: Chance1; }; order?: number; }; } interface Loot { [k: string]: { element?: LootGroup; order?: number; }; } /** * A collection of items that share the same rules about how they drop. */ interface LootGroup { show_in_insight?: ShowInInsight; bonus_loot?: ConsiderAsBonus; ignore_in_progression_map?: IgnoreInProgressionMap1; num_drops?: DropQuantity; time_requirement?: TimeOfDay; badge_requirement?: UnlockedBy16; trigger: Trigger1; item_tags_used?: ItemTagsUsed; drop_chance?: DropChance; item_ids_used?: ItemsUsed4; datafield_link?: DatafieldQuantityLink; show_in_compendium?: ShowInCompendium; areas?: Areas3; source_listed?: IncludeAsSource; items_dropped: Items42; effort_modifier?: EffortModifier10; datafield_evaluations?: DatafieldEvaluations36; scenes?: Scenes36; } /** * A random number of items will drop in this range. */ interface DropQuantity { value0?: Min30; value1?: Max30; } /** * The kinds of items required to be used on this for loot to drop. */ interface ItemTagsUsed { [k: string]: { element?: string; order?: number; }; } /** * Specific items required to be used on this for loot to drop. */ interface ItemsUsed4 { [k: string]: { element?: string; order?: number; }; } /** * If set, the loot will only drop from something within the listed areas. */ interface Areas3 { [k: string]: { element?: string; order?: number; }; } interface Items42 { [k: string]: { element?: { weight?: number; item?: string; locked?: boolean; }; order?: number; }; } /** * This loot group can check for data fields on the entity, and only drop if the conditions are met. */ interface DatafieldEvaluations36 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, the loot will only drop from something that belongs to one of the listed scenes. */ interface Scenes36 { [k: string]: { element?: string; order?: number; }; } interface Creature { frequency_inheritance?: FrequencyInheritance; manual_sources?: ManualSources1; using_lighting?: UseLighting5; object: Object3; suppress_infostream_aggro?: SuppressInfostreamAggro; editor_group?: EditorGroup12; respawn_multiplier?: RespawnTimeMultiplier1; editor_excluded?: EditorExcluded1; strange?: Strange; size: Size3; can_reset?: CanReset1; sprite: WorldSprite8; name: Name12; scale_modifier?: ScaleModifier2; source_text?: SourceText2; relative_level?: RelativeLevel1; relative_level_minimum?: RelativeLevelMinimum1; movement: Motion; spine_skin?: SpineSkin1; description?: Description10; shadow?: Shadow; injury_sounds?: InjurySounds1; resistance_profile?: ResistanceProfile1; immunities?: Immunities; hp_modifier?: HPModifier1; family?: Family; data_fields?: DataFields2; aggro_radius: AggroDeaggroDistances; deaggro_seconds: DeaggroDuration; friendly_help_range: FriendlyHelpRange; protection?: ProtectionBehaviors; priors?: ProgressionPriors; expiration_minutes?: DynamicExpirationMinutes1; wip?: WIP; hp_bar_offset?: HealthBarVerticalOffset; uicon: UIIcon8; noncombat_ai: NonCombatAI; reactions?: Reactions; level_viewer_ignore?: IgnoreInLevelViewer1; loot?: Loot1; combat_ai?: CombatBehavior; flee?: Fleeing; editor_hitbox_color?: EditorHitboxColor3; hide_under_roof?: HideUnderRoof3; knowledge_group?: KnowledgeGroup1; random_scaling?: RandomScalingMinimum1; death_sounds?: DestructionSounds1; level: Level1; bullet_interaction?: BulletInteraction1; effort_modifier?: EffortModifier12; light_emitter?: LightEmitter; } /** * If set, this world element will inherit the frequency of its parent, and can apply a multiplier. Frequency is used to calculate recipes based on how common the item is. */ interface FrequencyInheritance { [k: string]: { element: { multiplier: FrequencyMultiplier; inherits_from: InheritFrom; }; order: number; }; } /** * A list of manually-set sources for this item. */ interface ManualSources1 { [k: string]: { element: ManualSource1; order: number; }; } /** * A manual listing of this item source. Useful for items that have more complex acquisition methods. */ interface ManualSource1 { source: Source4; unlocked_by?: UnlockedBy17; } interface Size3 { height: Height3; width: Width3; } interface Name12 { text: EnglishText29; skip?: Skip29; description?: TranslatorHelperText28; } /** * An explanation of how to get this item, in the even that it's complicated. */ interface SourceText2 { source_text: SourceText3; unlocked_by?: UnlockedBy18; } interface SourceText3 { text: EnglishText30; skip?: Skip30; description?: TranslatorHelperText29; } interface Motion { stationary: StationaryVisuals; movespeed: MovementSpeed; moving: MovementVisuals; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave { [k: string]: { element?: { speed?: Speed3; amplitude?: Amplitude1; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements { [k: string]: { element?: FlapEvent; order?: number; }; } interface FlapEvent { impulse_seconds?: ImpulseDurationSeconds; distance?: VerticalDistance; recovery_seconds?: RecoveryDurationSeconds; } /** * A list of Spine bones that will emit poofs of smoke when the character's feet hit the ground. */ interface SmokePoofBones { [k: string]: { element?: BoneName; order?: number; }; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave1 { [k: string]: { element?: { speed?: Speed4; amplitude?: Amplitude2; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements1 { [k: string]: { element?: FlapEvent1; order?: number; }; } interface FlapEvent1 { impulse_seconds?: ImpulseDurationSeconds1; distance?: VerticalDistance1; recovery_seconds?: RecoveryDurationSeconds1; } interface Description10 { text: EnglishText31; skip?: Skip31; description?: TranslatorHelperText30; } /** * Sound effects to play when this thing takes damage. */ interface InjurySounds1 { [k: string]: { element: { minor_injury_sound: Minor1; major_injury_sound: Major1; chance_of_playing: Chance2; }; order: number; }; } /** * Things that this world element cannot be harmed by. */ interface Immunities { buffs?: Buffs78; stun?: Stun; } /** * Harmful buffs or types of buffs that cannot be applied to this creature. */ interface Buffs78 { [k: string]: { element: string; order: number; }; } /** * Attaching data fields to this world element will make them readable by other game mechanics/elements. Can be used to store custom data on a world element. */ interface DataFields2 { [k: string]: { element: string; order: number; }; } /** * When something gets within the minimum, the creature will react. When it goes outside the maximum range, the creature will stop reacting. There should ideally be at least a gap of 1 grid space between the minimum and the maximum to prevent rapid deaggro/reaggro. */ interface AggroDeaggroDistances { value0: AggroRadius; value1: DeaggroRadius; } /** * These are items that the creature will try to protect if something bad happens to them. */ interface ProtectionBehaviors { [k: string]: { element: ProtectionBehavior; order: number; }; } interface ProtectionBehavior { death: RespondToDestruction; damage: RespondToDamage; items: Items43; } interface Items43 { [k: string]: { element: string; order: number; }; } /** * How the creature behaves when it is just existing in the world. */ interface NonCombatAI { states: NonCombatStates; } interface NonCombatStates { roam: Roam; idle: Idle; interactions?: Interactions; } interface Roam { repel?: Repellants; weight: Weight1; movement?: MotionOverride2; distance: RoamDistance; repeating: Repeatable; attract?: Attractants; } /** * World elements that the creature will try to get away from. This will always take precedence over attractants. */ interface Repellants { probability: RepelProbability; detection_range: DetectionRange; movement?: MotionOverride; targets: RepelTargets; } interface MotionOverride { stationary?: StationaryVisuals1; movespeed?: MovementSpeed1; moving?: MovementVisuals1; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave2 { [k: string]: { element?: { speed?: Speed5; amplitude?: Amplitude3; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements2 { [k: string]: { element?: FlapEvent2; order?: number; }; } interface FlapEvent2 { impulse_seconds?: ImpulseDurationSeconds2; distance?: VerticalDistance2; recovery_seconds?: RecoveryDurationSeconds2; } /** * A list of Spine bones that will emit poofs of smoke when the character's feet hit the ground. */ interface SmokePoofBones1 { [k: string]: { element?: BoneName1; order?: number; }; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave3 { [k: string]: { element?: { speed?: Speed6; amplitude?: Amplitude4; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements3 { [k: string]: { element?: FlapEvent3; order?: number; }; } interface FlapEvent3 { impulse_seconds?: ImpulseDurationSeconds3; distance?: VerticalDistance3; recovery_seconds?: RecoveryDurationSeconds3; } interface RepelTargets { [k: string]: { element: RepelBehavior; order: number; }; } interface RepelBehavior { weight: Weight; detection_range?: DetectionRange1; movement?: MotionOverride1; targets: Targets3; } interface MotionOverride1 { stationary?: StationaryVisuals2; movespeed?: MovementSpeed2; moving?: MovementVisuals2; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave4 { [k: string]: { element?: { speed?: Speed7; amplitude?: Amplitude5; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements4 { [k: string]: { element?: FlapEvent4; order?: number; }; } interface FlapEvent4 { impulse_seconds?: ImpulseDurationSeconds4; distance?: VerticalDistance4; recovery_seconds?: RecoveryDurationSeconds4; } /** * A list of Spine bones that will emit poofs of smoke when the character's feet hit the ground. */ interface SmokePoofBones2 { [k: string]: { element?: BoneName2; order?: number; }; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave5 { [k: string]: { element?: { speed?: Speed8; amplitude?: Amplitude6; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements5 { [k: string]: { element?: FlapEvent5; order?: number; }; } interface FlapEvent5 { impulse_seconds?: ImpulseDurationSeconds5; distance?: VerticalDistance5; recovery_seconds?: RecoveryDurationSeconds5; } interface Targets3 { [k: string]: { element: string; order: number; }; } interface MotionOverride2 { stationary?: StationaryVisuals3; movespeed?: MovementSpeed3; moving?: MovementVisuals3; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave6 { [k: string]: { element?: { speed?: Speed9; amplitude?: Amplitude7; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements6 { [k: string]: { element?: FlapEvent6; order?: number; }; } interface FlapEvent6 { impulse_seconds?: ImpulseDurationSeconds6; distance?: VerticalDistance6; recovery_seconds?: RecoveryDurationSeconds6; } /** * A list of Spine bones that will emit poofs of smoke when the character's feet hit the ground. */ interface SmokePoofBones3 { [k: string]: { element?: BoneName3; order?: number; }; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave7 { [k: string]: { element?: { speed?: Speed10; amplitude?: Amplitude8; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements7 { [k: string]: { element?: FlapEvent7; order?: number; }; } interface FlapEvent7 { impulse_seconds?: ImpulseDurationSeconds7; distance?: VerticalDistance7; recovery_seconds?: RecoveryDurationSeconds7; } /** * How far the creature will wander from its current position. */ interface RoamDistance { value0: Min31; value1: Max31; } /** * World elements that the creature can wander toward. */ interface Attractants { probability: AttractionProbability; detection_range: DetectionRange2; movement?: MotionOverride3; targets: AttractionTargets; } interface MotionOverride3 { stationary?: StationaryVisuals4; movespeed?: MovementSpeed4; moving?: MovementVisuals4; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave8 { [k: string]: { element?: { speed?: Speed11; amplitude?: Amplitude9; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements8 { [k: string]: { element?: FlapEvent8; order?: number; }; } interface FlapEvent8 { impulse_seconds?: ImpulseDurationSeconds8; distance?: VerticalDistance8; recovery_seconds?: RecoveryDurationSeconds8; } /** * A list of Spine bones that will emit poofs of smoke when the character's feet hit the ground. */ interface SmokePoofBones4 { [k: string]: { element?: BoneName4; order?: number; }; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave9 { [k: string]: { element?: { speed?: Speed12; amplitude?: Amplitude10; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements9 { [k: string]: { element?: FlapEvent9; order?: number; }; } interface FlapEvent9 { impulse_seconds?: ImpulseDurationSeconds9; distance?: VerticalDistance9; recovery_seconds?: RecoveryDurationSeconds9; } interface AttractionTargets { [k: string]: { element: AttractionBehavior; order: number; }; } interface AttractionBehavior { weight: Weight2; detection_range?: DetectionRange3; movement?: MotionOverride4; targets: Targets4; } interface MotionOverride4 { stationary?: StationaryVisuals5; movespeed?: MovementSpeed5; moving?: MovementVisuals5; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave10 { [k: string]: { element?: { speed?: Speed13; amplitude?: Amplitude11; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements10 { [k: string]: { element?: FlapEvent10; order?: number; }; } interface FlapEvent10 { impulse_seconds?: ImpulseDurationSeconds10; distance?: VerticalDistance10; recovery_seconds?: RecoveryDurationSeconds10; } /** * A list of Spine bones that will emit poofs of smoke when the character's feet hit the ground. */ interface SmokePoofBones5 { [k: string]: { element?: BoneName5; order?: number; }; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave11 { [k: string]: { element?: { speed?: Speed14; amplitude?: Amplitude12; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements11 { [k: string]: { element?: FlapEvent11; order?: number; }; } interface FlapEvent11 { impulse_seconds?: ImpulseDurationSeconds11; distance?: VerticalDistance11; recovery_seconds?: RecoveryDurationSeconds11; } interface Targets4 { [k: string]: { element: string; order: number; }; } interface Idle { weight: Weight3; duration: DurationSeconds; repeating: Repeatable1; } interface DurationSeconds { value0: Min32; value1: Max32; } /** * The creature can use abilities on things in the environment. */ interface Interactions { [k: string]: { element: Interaction; order: number; }; } interface Interaction { detection_radius: DetectionRadius; casts: Casts; weight: Weight4; ability: Ability4; movement?: MotionOverride5; name: NameInternal3; repeating: Repeatable2; targets?: TargetFilter7; } /** * How many times the creature will attempt to use the ability if the target continues to exist. */ interface Casts { value0: Min33; value1: Max33; } interface MotionOverride5 { stationary?: StationaryVisuals6; movespeed?: MovementSpeed6; moving?: MovementVisuals6; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave12 { [k: string]: { element?: { speed?: Speed15; amplitude?: Amplitude13; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements12 { [k: string]: { element?: FlapEvent12; order?: number; }; } interface FlapEvent12 { impulse_seconds?: ImpulseDurationSeconds12; distance?: VerticalDistance12; recovery_seconds?: RecoveryDurationSeconds12; } /** * A list of Spine bones that will emit poofs of smoke when the character's feet hit the ground. */ interface SmokePoofBones6 { [k: string]: { element?: BoneName6; order?: number; }; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave13 { [k: string]: { element?: { speed?: Speed16; amplitude?: Amplitude14; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements13 { [k: string]: { element?: FlapEvent13; order?: number; }; } interface FlapEvent13 { impulse_seconds?: ImpulseDurationSeconds13; distance?: VerticalDistance13; recovery_seconds?: RecoveryDurationSeconds13; } /** * The creature will attempt to use this ability on targets that match these filters. If no filters present, the creature will just cast the ability. */ interface TargetFilter7 { [k: string]: { element: Filter37; order: number; }; } interface Filter37 { exclude?: Exclude36; buffs?: Buffs79; combatants_only?: Combatants36; require_all_tags?: RequireAllTags36; datafield_evaluations?: DatafieldEvaluations37; scenes?: Scenes37; items?: Items44; sub_filters?: SubFilters18; } interface Buffs79 { require_all: RequireAll42; stacks?: Stacks41; buffs: Buffs80; } /** * The buffs found must match this stack requirement. */ interface Stacks41 { comparison: "==" | "!=" | "<" | "<=" | ">" | ">="; value1: Quantity49; } interface Buffs80 { [k: string]: { element: string; order: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations37 { [k: string]: { element: { comparison: "==" | "!=" | "<" | "<=" | ">" | ">="; value0: string; value1: number; }; order: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes37 { [k: string]: { element: string; order: number; }; } interface Items44 { [k: string]: { element: string; order: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters18 { [k: string]: { element: Filter38; order: number; }; } interface Filter38 { exclude?: Exclude37; buffs?: Buffs81; combatants_only?: Combatants37; require_all_tags?: RequireAllTags37; datafield_evaluations?: DatafieldEvaluations38; scenes?: Scenes38; items?: Items45; } interface Buffs81 { require_all: RequireAll43; stacks?: Stacks42; buffs: Buffs82; } /** * The buffs found must match this stack requirement. */ interface Stacks42 { comparison: "==" | "!=" | "<" | "<=" | ">" | ">="; value1: Quantity50; } interface Buffs82 { [k: string]: { element: string; order: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations38 { [k: string]: { element: { comparison: "==" | "!=" | "<" | "<=" | ">" | ">="; value0: string; value1: number; }; order: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes38 { [k: string]: { element: string; order: number; }; } interface Items45 { [k: string]: { element: string; order: number; }; } interface Loot1 { [k: string]: { element: LootGroup1; order: number; }; } /** * A collection of items that share the same rules about how they drop. */ interface LootGroup1 { show_in_insight?: ShowInInsight1; bonus_loot?: ConsiderAsBonus1; ignore_in_progression_map?: IgnoreInProgressionMap2; num_drops?: DropQuantity1; time_requirement?: TimeOfDay1; badge_requirement?: UnlockedBy19; trigger: Trigger2; item_tags_used?: ItemTagsUsed1; drop_chance?: DropChance1; item_ids_used?: ItemsUsed5; datafield_link?: DatafieldQuantityLink1; show_in_compendium?: ShowInCompendium1; areas?: Areas4; source_listed?: IncludeAsSource1; items_dropped: Items46; effort_modifier?: EffortModifier11; datafield_evaluations?: DatafieldEvaluations39; scenes?: Scenes39; } /** * A random number of items will drop in this range. */ interface DropQuantity1 { value0: Min34; value1: Max34; } /** * The kinds of items required to be used on this for loot to drop. */ interface ItemTagsUsed1 { [k: string]: { element: string; order: number; }; } /** * Specific items required to be used on this for loot to drop. */ interface ItemsUsed5 { [k: string]: { element: string; order: number; }; } /** * If set, the loot will only drop from something within the listed areas. */ interface Areas4 { [k: string]: { element: string; order: number; }; } interface Items46 { [k: string]: { element: { weight: number; item: string; locked: boolean; }; order: number; }; } /** * This loot group can check for data fields on the entity, and only drop if the conditions are met. */ interface DatafieldEvaluations39 { [k: string]: { element: { comparison: "==" | "!=" | "<" | "<=" | ">" | ">="; value0: string; value1: number; }; order: number; }; } /** * If set, the loot will only drop from something that belongs to one of the listed scenes. */ interface Scenes39 { [k: string]: { element: string; order: number; }; } /** * How the creature fights during combat. */ interface CombatBehavior { aggro_sound: AggroSound; aggro_player: AggroOntoPlayer; aggro_targets?: AggroTargets; movement?: MotionOverride6; abilities: CombatAbilities; post_movement_pause?: OBSOLETE1; } /** * The creature will attack these targets when they get into its aggro range. */ interface AggroTargets { [k: string]: { element: string; order: number; }; } interface MotionOverride6 { stationary?: StationaryVisuals7; movespeed?: MovementSpeed7; moving?: MovementVisuals7; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave14 { [k: string]: { element?: { speed?: Speed17; amplitude?: Amplitude15; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements14 { [k: string]: { element?: FlapEvent14; order?: number; }; } interface FlapEvent14 { impulse_seconds?: ImpulseDurationSeconds14; distance?: VerticalDistance14; recovery_seconds?: RecoveryDurationSeconds14; } /** * A list of Spine bones that will emit poofs of smoke when the character's feet hit the ground. */ interface SmokePoofBones7 { [k: string]: { element?: BoneName7; order?: number; }; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave15 { [k: string]: { element?: { speed?: Speed18; amplitude?: Amplitude16; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements15 { [k: string]: { element?: FlapEvent15; order?: number; }; } interface FlapEvent15 { impulse_seconds?: ImpulseDurationSeconds15; distance?: VerticalDistance15; recovery_seconds?: RecoveryDurationSeconds15; } interface CombatAbilities { [k: string]: { element: CombatAbility; order: number; }; } interface CombatAbility { weight: Weight5; ability: Ability5; direction_randomness?: DirectionRandomness; post_ability_pause_ignore_chance?: PostAbilityPauseIgnoreChance; movement?: MotionOverride7; post_ability_pause?: PostAbilityPause; followup_abilities?: FollowupAbilities; post_ability_movement_pause?: PostAbilityMovementPause; post_movement_pause?: OBSOLETE; distance_randomness?: DistanceRandomness; } interface MotionOverride7 { stationary?: StationaryVisuals8; movespeed?: MovementSpeed8; moving?: MovementVisuals8; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave16 { [k: string]: { element?: { speed?: Speed19; amplitude?: Amplitude17; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements16 { [k: string]: { element?: FlapEvent16; order?: number; }; } interface FlapEvent16 { impulse_seconds?: ImpulseDurationSeconds16; distance?: VerticalDistance16; recovery_seconds?: RecoveryDurationSeconds16; } /** * A list of Spine bones that will emit poofs of smoke when the character's feet hit the ground. */ interface SmokePoofBones8 { [k: string]: { element?: BoneName8; order?: number; }; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave17 { [k: string]: { element?: { speed?: Speed20; amplitude?: Amplitude18; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements17 { [k: string]: { element?: FlapEvent17; order?: number; }; } interface FlapEvent17 { impulse_seconds?: ImpulseDurationSeconds17; distance?: VerticalDistance17; recovery_seconds?: RecoveryDurationSeconds17; } /** * If set, the creature will wait for this many seconds after using this ability before moving on to the next ability. */ interface PostAbilityPause { value0: MinSeconds; value1: MaxSeconds; } /** * If set, these abilities will be cast after the current one. These abilities must already be listed in the creature's Combat Abilities, or they will be ignored. */ interface FollowupAbilities { [k: string]: { element: FollowupAbility; order: number; }; } interface FollowupAbility { chance?: Chance3; weight: Weight6; ability: Ability6; instant: Instant; } /** * After using this ability, the creature can wait a short time before beginning to move in range for its next attack. */ interface PostAbilityMovementPause { value0: MinSeconds1; value1: MaxSeconds1; } /** * If the creature moves in combat to get into position to perform this ability, it can wait for a brief moment before beginning to cast. */ interface OBSOLETE { value0: MinSeconds2; value1: MaxSeconds2; } /** * If the creature moves in combat to get into position to perform an ability, it can wait for a brief moment before beginning to use its abilities. */ interface OBSOLETE1 { value0: MinSeconds3; value1: MaxSeconds3; } /** * This creature may run in fear from things by entering a 'fleeing' state. */ interface Fleeing { sound?: FleeSound; health_based?: FleeWhenInjured; seconds: FleeDurationSeconds; movement?: MotionOverride8; targets?: FleeTargets; } interface FleeWhenInjured { health_threshold: HealthThreshold2; probability: Probablity; } interface FleeDurationSeconds { value0: Min35; value1: Max35; } interface MotionOverride8 { movespeed?: MovementSpeed9; moving?: MovementVisuals9; } /** * A list of Spine bones that will emit poofs of smoke when the character's feet hit the ground. */ interface SmokePoofBones9 { [k: string]: { element?: BoneName9; order?: number; }; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave18 { [k: string]: { element?: { speed?: Speed21; amplitude?: Amplitude19; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements18 { [k: string]: { element?: FlapEvent18; order?: number; }; } interface FlapEvent18 { impulse_seconds?: ImpulseDurationSeconds18; distance?: VerticalDistance18; recovery_seconds?: RecoveryDurationSeconds18; } /** * The creature will immediately begin fleeing from these targets if it enters combat with them. */ interface FleeTargets { [k: string]: { element: string; order: number; }; } /** * For overriding the default hitbox color in the editor. */ interface EditorHitboxColor3 { g: Green26; r: Red26; b: Blue26; } /** * Sound effects to play when this thing is destroyed. */ interface DestructionSounds1 { [k: string]: { element: string; order: number; }; } interface Boss3 { death?: Death; scale_modifier?: ScaleModifier3; relative_level?: RelativeLevel2; relative_level_minimum?: RelativeLevelMinimum2; boss_loot?: Loot2; movement: Motion1; spine_skin?: SpineSkin2; shadow?: Shadow; injury_sounds?: InjurySounds2; resistance_profile?: ResistanceProfile2; hp_modifier?: HPModifier2; data_fields?: DataFields3; using_lighting?: UseLighting6; priors?: ProgressionPriors; wip?: WIP; name_color: NameColor; uicon: UIIcon9; editor_group?: EditorGroup13; reactions?: Reactions; size: Size4; opening_sequence?: BossDialogueSequence; ending_sequence?: BossDialogueSequence1; sprite: WorldSprite9; level: Level2; visualbox?: VisualBox; dialogue_sfx?: DialogueSounds; name: Name13; light_emitter?: LightEmitter; } interface Death { particle_burst?: ParticleBurst; animation: Animation28; death_sound?: DeathSound; z_target?: ZTarget; visual_effects?: VisualEffects; post_death_pause?: PostDeathPauseSeconds; jingle?: DeathJingle; } interface VisualEffects { [k: string]: { element: VisualEffect1; order: number; }; } interface DecalDurationSeconds1 { value0?: Min36; value1?: Max36; } /** * The decal will choose a random scale between these numbers. */ interface DecalScale1 { value0?: Min37; value1?: Max37; } /** * Set this to spawn the explosion a random delay. */ interface RandomDelaySeconds1 { value0?: Min38; value1?: Max38; } /** * These are the particles that will shoot out from the explosion. */ interface DebrisParticles2 { [k: string]: { element?: DebrisParticles3; order?: number; }; } interface DebrisParticles3 { num_particles?: NumberOfParticles2; particle_scale?: ParticleScale1; sprite?: Sprite3; } interface BaseColor1 { g?: Green27; r?: Red27; b?: Blue27; } interface HighlightColor1 { g?: Green28; r?: Red28; b?: Blue28; } interface ExplosionScale1 { value0?: Min39; value1?: Max39; } /** * Set this to spawn the explosion a random distance away. */ interface RandomDistanceGridSpaces1 { value0?: Min40; value1?: Max40; } interface SkybeamColor1 { g?: Green29; r?: Red29; b?: Blue29; } interface SmokeColor1 { g?: Green30; r?: Red30; b?: Blue30; } /** * The starting radius of the smoke burst. */ interface RadiusPixels1 { value0?: Min41; value1?: Max41; } interface Color12 { g?: Green31; r?: Red31; b?: Blue31; } interface Color22 { g?: Green32; r?: Red32; b?: Blue32; } /** * The ring will spawn at a random size between these two radii. */ interface GridRadius1 { value0?: Min42; value1?: Max42; } interface LightningColor1 { g?: Green33; r?: Red33; b?: Blue33; } interface Loot2 { [k: string]: { element: { value: Quantity51; key: Item2; }; order: number; }; } interface Motion1 { stationary: StationaryVisuals9; movespeed: MovementSpeed10; moving: MovementVisuals10; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave19 { [k: string]: { element?: { speed?: Speed22; amplitude?: Amplitude20; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements19 { [k: string]: { element?: FlapEvent19; order?: number; }; } interface FlapEvent19 { impulse_seconds?: ImpulseDurationSeconds19; distance?: VerticalDistance19; recovery_seconds?: RecoveryDurationSeconds19; } /** * A list of Spine bones that will emit poofs of smoke when the character's feet hit the ground. */ interface SmokePoofBones10 { [k: string]: { element?: BoneName10; order?: number; }; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave20 { [k: string]: { element?: { speed?: Speed23; amplitude?: Amplitude21; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements20 { [k: string]: { element?: FlapEvent20; order?: number; }; } interface FlapEvent20 { impulse_seconds?: ImpulseDurationSeconds20; distance?: VerticalDistance20; recovery_seconds?: RecoveryDurationSeconds20; } /** * Sound effects to play when this thing takes damage. */ interface InjurySounds2 { [k: string]: { element: { minor_injury_sound: Minor2; major_injury_sound: Major2; chance_of_playing: Chance4; }; order: number; }; } /** * Attaching data fields to this world element will make them readable by other game mechanics/elements. Can be used to store custom data on a world element. */ interface DataFields3 { [k: string]: { element: string; order: number; }; } interface NameColor { g: Green34; r: Red34; b: Blue34; } interface Size4 { height: Height4; width: Width4; } interface BossDialogueSequence { moments: DialogueMoments; animation?: BossSpineAnimation; allow_xflip?: AllowXFlip; } interface DialogueMoments { [k: string]: { element: BossDialogueMoment; order: number; }; } /** * Conditions that must be true for the quest to proceed. */ interface MomentRequirements { [k: string]: { element: Requirement; order: number; }; } /** * The player must have at least these quantities of these items. */ interface Items47 { [k: string]: { element?: { value?: Quantity52; key?: string; }; order?: number; }; } interface InventoryEvaluation { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: Item4; value1?: Quantity53; }; order?: number; }; } /** * Conditions that must be true for the quest to proceed. */ interface MomentRequirements1 { [k: string]: { element: Requirement; order: number; }; } interface PetStage { stage?: "Egg" | "Baby" | "Adult" | "Embiggened"; comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; } interface Mutators { [k: string]: { element?: { mutator?: Mutator; mutator_active?: Active; }; order?: number; }; } interface Entities { [k: string]: { element?: EntityType; order?: number; }; } /** * Characters or actors can convey emojis. */ interface Emotes { [k: string]: { element?: { value?: Emoji1; key?: Character; }; order?: number; }; } /** * Here you can dictate which actors are looking at which things. This will remain true until you unset their look targets, or the quest moments come to an end. */ interface LookTargets { [k: string]: { element?: { value?: LooksAt; key?: string; }; order?: number; }; } /** * These actors will stop being forced to look at something. If unset, all actors will resume default looking behavior. */ interface Actors { [k: string]: { element?: string; order?: number; }; } interface BossDialogueSequence1 { moments: DialogueMoments; animation?: BossSpineAnimation; allow_xflip?: AllowXFlip; } /** * Dimensions for representing the visual height and width of the object. Used for buff overlays and other visual effects. */ interface VisualBox { height: Height5; width: Width5; } interface DialogueSounds { [k: string]: { element: string; order: number; }; } interface Name13 { text: EnglishText33; skip?: Skip33; } /** * A group of creature types that consider each other to be friendly and part of the same species. Creatures in a family won't damage each other. */ interface CreatureFamily { name: FamilyNameInternal; wip?: WIP; level: Level3; icon: IconInternal; } interface PetMastery { wip?: WIP; uicon: Icon3; pet: Pet4; order: SortOrder; description: Description11; stage: PetStage1; name: Name14; } interface Description11 { text: EnglishText34; skip?: Skip34; } interface Name14 { text: EnglishText35; skip?: Skip35; } /** * A simple item that is used for crafting. */ interface Component { scale_modifier?: Scale2; source_text?: SourceText4; description: Description12; no_expiration?: NoExpiration; material_tags?: Materials1; goes_into_ded?: CanGoIntoDed; manual_sources?: ManualSources2; collection_sound?: CollectionSound1; using_lighting: UseLighting7; bait_num_fish_boost?: BaitPower; whopper_bait?: WhopperBait; singleton?: Singleton; priors?: ProgressionPriors; wip?: WIP; uicon?: UIIcon10; editor_group?: EditorGroup14; recipe?: Recipe9; glowbeam?: GlowBeam; fishing?: Fishing; sprite: WorldSprite10; name: Name15; effort_modifier?: EffortModifier14; light_emitter?: LightEmitter; } /** * An explanation of how to get this item, in the even that it's complicated. */ interface SourceText4 { source_text: SourceText5; unlocked_by?: UnlockedBy20; } interface SourceText5 { text: EnglishText36; skip?: Skip36; description?: TranslatorHelperText31; } interface Description12 { text: EnglishText37; skip?: Skip37; description?: TranslatorHelperText32; } /** * What is this thing made of? This is used for categorization and can otherwise be used by abilities, fulfillments, etc... to broadly categorize interactions. */ interface Materials1 { [k: string]: { element: string; order: number; }; } /** * A list of manually-set sources for this item. */ interface ManualSources2 { [k: string]: { element: ManualSource2; order: number; }; } /** * A manual listing of this item source. Useful for items that have more complex acquisition methods. */ interface ManualSource2 { source: Source5; unlocked_by?: UnlockedBy21; } interface Recipe9 { badge_cost_modifiers?: CostModifiedByResearch9; station: Station9; artisans?: ArtisansRequired9; components: Ingredients9; effort_modifier?: EffortModifier13; source?: UnlockedBy22; optional_stations?: OptionalStations9; output_quantity?: OutputQuantity9; badge_output_modifiers?: OutputModifiedByResearch9; } interface CostModifiedByResearch9 { [k: string]: { element: { badge_id: ResearchNode18; value: ChangePerPoint22; }; order: number; }; } interface ArtisansRequired9 { [k: string]: { element: string; order: number; }; } interface Ingredients9 { [k: string]: { element: string; order: number; }; } /** * Other stations that can be used to craft this recipe. */ interface OptionalStations9 { [k: string]: { element: string; order: number; }; } interface OutputModifiedByResearch9 { [k: string]: { element: { badge_id: ResearchNode19; value: ChangePerPoint23; style: Style9; }; order: number; }; } /** * If set, this item can be obtained via fishing. */ interface Fishing { singleton: Singleton1; singleton_chance?: SingletonChance; weight: Frequency; sources: FishingSources; whopper: Whopper; unlocked_by?: UnlockedBy23; } interface FishingSources { [k: string]: { element: { area_id: Area; exclusion: Exclude39; }; order: number; }; } interface UnlockedBy23 { prerequisite: UnlockedBy24; unlock_text?: UnlockDescription2; } /** * If unlocked by research, this description will appear in the Research Node. */ interface UnlockDescription2 { text: EnglishText38; skip?: Skip38; description?: TranslatorHelperText33; } interface Name15 { text: EnglishText39; skip?: Skip39; description?: TranslatorHelperText34; } interface PetEgg { glowbeam?: GlowBeam; size: Size5; description: Description13; using_lighting: UseLighting8; priors?: ProgressionPriors; wip?: WIP; sprite: WorldSprite11; uicon_scrambled?: ScrambleUIIcon; uicon: UIIcon11; editor_group?: EditorGroup15; egg_nest?: NestRequirement; hatching_overlay?: HatchingGlowOverlay; world_sprite_scrambled?: ScrambleWorldSprite; name: Name16; light_emitter?: LightEmitter; } interface Size5 { height: Height6; width: Width6; } interface Description13 { text: EnglishText40; skip?: Skip40; description?: TranslatorHelperText35; } interface Name16 { text: EnglishText41; skip?: Skip41; description?: TranslatorHelperText36; } /** * A pickupable item that is used for important story moments. */ interface KeyItem { scale_modifier?: ScaleModifier4; collection_sound?: CollectionSound2; using_lighting?: UseLighting9; priors?: ProgressionPriors; wip?: WIP; door_unlock_sound?: DoorUnlockSound1; jingle_override?: JingleOverride1; uicon: UIIcon12; editor_group?: EditorGroup16; celebrate_pickup?: CelebratePickup1; level_viewer_ignore?: IgnoreInLevelViewer2; grid_snapping?: GridSnapping2; glowbeam?: GlowBeam; always_show_on_map?: AlwaysShowOnMap; size: Size6; fishing?: Fishing; editor_hitbox_color?: EditorHitboxColor4; requires_land?: RequiresLand2; sprite: WorldSprite12; spine_idle?: SpineIdle1; can_exist_on_floors?: CanExistOnFloors1; name: Name17; babbler?: Babbler68; light_emitter?: LightEmitter; } interface Size6 { height: Height7; width: Width7; } /** * For overriding the default hitbox color in the editor. */ interface EditorHitboxColor4 { g: Green35; r: Red35; b: Blue35; } interface Name17 { text: EnglishText42; skip?: Skip42; description?: TranslatorHelperText37; } interface Pet5 { hatching: Hatching; chirp_sound?: ChirpSound; ui_sound?: UIOpenSound; movement: Motion2; description: Description14; follow_sound?: FollowSound; spine_skin: PreviewSkin; basic_attacks: BasicAttacks; ability_melee: AbilityRequiresMelee; ability_sound?: AbilityActivationSound; ability_name: AbilityName; ability_description: AbilityDescription; using_lighting: UseLighting10; synergies: Synergies; priors?: ProgressionPriors; wip?: WIP; uicon: UIIcon13; editor_group?: EditorGroup17; ability_cooldown: AbilityCooldownSeconds; can_scramble?: CanScramble; scramble_bans?: BannedScrambleTargets; size: Size7; follow_stop_sound?: StopFollowingSound; appearances: Appearances; sort_order: SortOrder1; ui_color?: UIColor; sprite: WorldSprite13; abilities: AbilitySequence; name: Name19; light_emitter?: LightEmitter; } interface Hatching { egg_sound: EggSounds; hatching_requirements?: Requirements; egg: Egg; } interface Requirements { [k: string]: { element: CheckMark; order: number; }; } interface CheckMark { scramble_description?: ScrambledName; scramble_excluded?: ScrambleExcluded; requirements: CheckMarkConditions; description: Name18; } /** * More generic description of the requirements, to be used with the Scramble Mutator. */ interface ScrambledName { text: EnglishText43; skip?: Skip43; description?: TranslatorHelperText38; } interface CheckMarkConditions { [k: string]: { element: Condition3; order: number; }; } /** * The number of spaces that are not occupied by structures (walls/doors/pillars). */ interface InteriorTileArea { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: number; } /** * Note that if you include an item tag and an item that also belongs to that tag, the item will be double-counted. */ interface Items48 { [k: string]: { element?: string; order?: number; }; } interface NumberOfRooms { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: number; } /** * The items used to check for relationships. Variant items will count as each other. */ interface SourceItems { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: { [k: string]: { element?: string; order?: number; }; }; value1?: number; } /** * The evaluated number of source items must meet the tile distance requirement against the evaluated number of target items. */ interface TileDistance { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: number; } /** * The items to check against the source items. Variant items will count as each other. */ interface TargetItems { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: { [k: string]: { element?: string; order?: number; }; }; value1?: number; } /** * Describe these conditions in a short sentence. This will be next to a checkmark that will check once the requirements are complete. */ interface Name18 { text: EnglishText44; skip?: Skip44; description?: TranslatorHelperText39; } interface Motion2 { stationary: StationaryVisuals10; movespeed: MovementSpeed11; moving: MovementVisuals11; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave21 { [k: string]: { element?: { speed?: Speed24; amplitude?: Amplitude22; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements21 { [k: string]: { element?: FlapEvent21; order?: number; }; } interface FlapEvent21 { impulse_seconds?: ImpulseDurationSeconds21; distance?: VerticalDistance21; recovery_seconds?: RecoveryDurationSeconds21; } /** * A list of Spine bones that will emit poofs of smoke when the character's feet hit the ground. */ interface SmokePoofBones11 { [k: string]: { element?: BoneName11; order?: number; }; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave22 { [k: string]: { element?: { speed?: Speed25; amplitude?: Amplitude23; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements22 { [k: string]: { element?: FlapEvent22; order?: number; }; } interface FlapEvent22 { impulse_seconds?: ImpulseDurationSeconds22; distance?: VerticalDistance22; recovery_seconds?: RecoveryDurationSeconds22; } interface Description14 { text: EnglishText45; skip?: Skip45; description?: TranslatorHelperText40; } /** * The basic attacks the pet will perform in combat. */ interface BasicAttacks { [k: string]: { element: BasicAttack; order: number; }; } /** * The basic attack the pet will perform in combat. */ interface BasicAttack { ability: Ability7; movement?: MotionOverride9; post_ability_pause: PostAbilityPause1; } interface MotionOverride9 { stationary?: StationaryVisuals11; movespeed?: MovementSpeed12; moving?: MovementVisuals12; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave23 { [k: string]: { element?: { speed?: Speed26; amplitude?: Amplitude24; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements23 { [k: string]: { element?: FlapEvent23; order?: number; }; } interface FlapEvent23 { impulse_seconds?: ImpulseDurationSeconds23; distance?: VerticalDistance23; recovery_seconds?: RecoveryDurationSeconds23; } /** * A list of Spine bones that will emit poofs of smoke when the character's feet hit the ground. */ interface SmokePoofBones12 { [k: string]: { element?: BoneName12; order?: number; }; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave24 { [k: string]: { element?: { speed?: Speed27; amplitude?: Amplitude25; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements24 { [k: string]: { element?: FlapEvent24; order?: number; }; } interface FlapEvent24 { impulse_seconds?: ImpulseDurationSeconds24; distance?: VerticalDistance24; recovery_seconds?: RecoveryDurationSeconds24; } /** * If set, the creature will wait for this many seconds after using this ability before moving on to the next ability. */ interface PostAbilityPause1 { value0: MinSeconds4; value1: MaxSeconds4; } /** * As shown in the pet interface. */ interface AbilityName { text: EnglishText46; skip?: Skip46; } /** * As shown in the pet interface. */ interface AbilityDescription { text: EnglishText47; skip?: Skip47; } /** * Passive benefits from having this pet with you. */ interface Synergies { [k: string]: { element: Synergy; order: number; }; } /** * A passive benefit from having this pet with you. */ interface Synergy { reactions?: Reactions1; stat_boost?: StatBoost; mastery?: MasteryLink; } /** * A set of reactions that get added to the player while this pet is following them. */ interface Reactions1 { reactions: Reactions; } /** * Passive stat boost from having this pet with you. */ interface StatBoost { amounts: StatBoostAmount; stat: Stat; modifier_style: ModifierStyle; } interface StatBoostAmount { value0: Baby; value1: Embiggened; } /** * You can activate (or deactivate) this synergy via specific masteries. */ interface MasteryLink { mastery_id: Mastery; deactivates: MasteryDeactivatesSynergy; } /** * These are items that this item cannot replace. */ interface BannedScrambleTargets { [k: string]: { element: string; order: number; }; } interface Size7 { height: Height8; width: Width8; } /** * These appearances correspond with the three stages of a pet's life: Baby, Adult, and Embiggened. */ interface Appearances { [k: string]: { element: { scale: Scale3; skin_name: SkinName; icon: Icon4; }; order: number; }; } /** * The color to use for this pet's UI. */ interface UIColor { g: Green36; r: Red36; b: Blue36; } /** * The abilities the pet will use in combat (in order). */ interface AbilitySequence { [k: string]: { element: Ability8; order: number; }; } /** * The ability the pet will perform on command in combat. */ interface Ability8 { enablement?: Enablement; ability: Ability9; movement?: MotionOverride10; post_ability_pause: PostAbilityPause2; target: Target; enabled_default: EnabledByDefault; } /** * Links to pet stages or masteries that can either enable or disable this ability in the sequence. Enablements are evaluated starting at the end, and the first one met dictates whether the ability is enabled. */ interface Enablement { [k: string]: { element: AbilityEnablement; order: number; }; } interface AbilityEnablement { stage?: Stage; enables: Enables; mastery?: Mastery1; } interface MotionOverride10 { stationary?: StationaryVisuals12; movespeed?: MovementSpeed13; moving?: MovementVisuals13; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave25 { [k: string]: { element?: { speed?: Speed28; amplitude?: Amplitude26; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements25 { [k: string]: { element?: FlapEvent25; order?: number; }; } interface FlapEvent25 { impulse_seconds?: ImpulseDurationSeconds25; distance?: VerticalDistance25; recovery_seconds?: RecoveryDurationSeconds25; } /** * A list of Spine bones that will emit poofs of smoke when the character's feet hit the ground. */ interface SmokePoofBones13 { [k: string]: { element?: BoneName13; order?: number; }; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave26 { [k: string]: { element?: { speed?: Speed29; amplitude?: Amplitude27; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements26 { [k: string]: { element?: FlapEvent26; order?: number; }; } interface FlapEvent26 { impulse_seconds?: ImpulseDurationSeconds26; distance?: VerticalDistance26; recovery_seconds?: RecoveryDurationSeconds26; } /** * If set, the creature will wait for this many seconds after using this ability before moving on to the next ability. */ interface PostAbilityPause2 { value0: MinSeconds5; value1: MaxSeconds5; } interface Name19 { text: EnglishText48; skip?: Skip48; description?: TranslatorHelperText41; } interface SeedPack { shiny_boost?: ShinyBoostingInsights; description: Description15; using_lighting?: UseLighting11; num_regrows: NumberOfRegrows; regrow_insights?: RegrowBoostingInsights; shiny_chance: ShinyChance; priors?: ProgressionPriors; growth_minutes: MinutesToGrow; wip?: WIP; sprite: WorldSprite14; free_regrows?: FreeRegrows; uicon: UIIcon14; editor_group?: EditorGroup18; required_tile: GardenBed1; grows_into: GrowsInto; recipe?: Recipe10; name: Name20; growth_minutes_insight_modifier?: GrowthMinutesInsightModifier; light_emitter?: LightEmitter; } /** * You can have Insights give additional, independent chances for a Seed Pack to become shiny (if fertilized). */ interface ShinyBoostingInsights { [k: string]: { element: ShinyBoostingInsight; order: number; }; } interface ShinyBoostingInsight { chance: AddedChance; insight: Insight8; } interface Description15 { text: EnglishText49; skip?: Skip49; description?: TranslatorHelperText42; } interface RegrowBoostingInsights { [k: string]: { element: { regrows_per_point: RegrowsPerPoint; insight: Insight9; }; order: number; }; } /** * Each time this Seed Pack grows into a plant, it can have a chance to not consume one of its 'Regrows'. */ interface FreeRegrows { insight: FreeRegrowInsight; free_regrow_chance: FreeRegrowChance; } interface Recipe10 { badge_cost_modifiers?: CostModifiedByResearch10; station: Station10; artisans?: ArtisansRequired10; components: Ingredients10; effort_modifier?: EffortModifier15; source?: UnlockedBy25; optional_stations?: OptionalStations10; output_quantity?: OutputQuantity10; badge_output_modifiers?: OutputModifiedByResearch10; } interface CostModifiedByResearch10 { [k: string]: { element: { badge_id: ResearchNode20; value: ChangePerPoint24; }; order: number; }; } interface ArtisansRequired10 { [k: string]: { element: string; order: number; }; } interface Ingredients10 { [k: string]: { element: string; order: number; }; } /** * Other stations that can be used to craft this recipe. */ interface OptionalStations10 { [k: string]: { element: string; order: number; }; } interface OutputModifiedByResearch10 { [k: string]: { element: { badge_id: ResearchNode21; value: ChangePerPoint25; style: Style10; }; order: number; }; } interface Name20 { text: EnglishText50; skip?: Skip50; description?: TranslatorHelperText43; } interface GrowthMinutesInsightModifier { amount: ChangePerPoint26; insight: Insight10; } /** * A piece of protective equipment worn by the player. */ interface Armor { description: Description16; type: ArmorType; priors?: ProgressionPriors; wip?: WIP; spine_name: SpineKeyword; jingle_override?: JingleOverride2; level: Level4; uicon: UIIcon15; equipment_set?: EquipmentSet3; editor_group?: EditorGroup19; inventory_sound: InventorySound; recipe?: Recipe11; equipment_default_stats?: DefaultStats; reactions?: Reactions; name: Name21; } interface Description16 { text: EnglishText51; skip?: Skip51; description?: TranslatorHelperText44; } interface Recipe11 { badge_cost_modifiers?: CostModifiedByResearch11; station: Station11; artisans?: ArtisansRequired11; components: Ingredients11; effort_modifier?: EffortModifier16; source?: UnlockedBy26; optional_stations?: OptionalStations11; } interface CostModifiedByResearch11 { [k: string]: { element: { badge_id: ResearchNode22; value: ChangePerPoint27; }; order: number; }; } interface ArtisansRequired11 { [k: string]: { element: string; order: number; }; } interface Ingredients11 { [k: string]: { element: string; order: number; }; } /** * Other stations that can be used to craft this recipe. */ interface OptionalStations11 { [k: string]: { element: string; order: number; }; } /** * You can allocate stats for this item to have on it by default when obtained. This will not affect already-obtained items. */ interface DefaultStats { [k: string]: { element: string; order: number; }; } interface Name21 { text: EnglishText52; skip?: Skip52; description?: TranslatorHelperText45; } /** * A unique equippable item that conveys a passive benefit. */ interface Trinket { description: Description17; singleton?: Singleton2; priors?: ProgressionPriors; wip?: WIP; jingle_override?: JingleOverride3; uicon: UIIcon16; equipment_set?: EquipmentSet4; editor_group?: EditorGroup20; inventory_sound: InventorySound1; recipe?: Recipe12; equipment_default_stats?: DefaultStats1; reactions?: Reactions; level_viewer_ignore?: IgnoreInLevelViewer3; can_scramble?: CanScramble1; scramble_bans?: BannedScrambleTargets1; show_in_special_items?: ShowInSpecialItems; scramble_levels?: ScrambleLevels; glowbeam?: GlowBeam; always_show_on_map?: AlwaysShowOnMap1; fishing?: Fishing; level: Level5; name: Name22; } interface Description17 { text: EnglishText53; skip?: Skip53; description?: TranslatorHelperText46; } interface Recipe12 { badge_cost_modifiers?: CostModifiedByResearch12; station: Station12; artisans?: ArtisansRequired12; components: Ingredients12; effort_modifier?: EffortModifier17; source?: UnlockedBy27; optional_stations?: OptionalStations12; } interface CostModifiedByResearch12 { [k: string]: { element: { badge_id: ResearchNode23; value: ChangePerPoint28; }; order: number; }; } interface ArtisansRequired12 { [k: string]: { element: string; order: number; }; } interface Ingredients12 { [k: string]: { element: string; order: number; }; } /** * Other stations that can be used to craft this recipe. */ interface OptionalStations12 { [k: string]: { element: string; order: number; }; } /** * You can allocate stats for this item to have on it by default when obtained. This will not affect already-obtained items. */ interface DefaultStats1 { [k: string]: { element: string; order: number; }; } /** * These are items that this item cannot replace. */ interface BannedScrambleTargets1 { [k: string]: { element: string; order: number; }; } /** * If set, this item will only scramble into items that are within this level range. */ interface ScrambleLevels { value0: Min43; value1: Max43; } interface Name22 { text: EnglishText54; skip?: Skip54; description?: TranslatorHelperText47; } interface Wieldable { scale_modifier?: ScaleModifier5; relative_level?: RelativeLevel3; description: Description18; collection_sound?: CollectionSound3; stackable?: Stackable; swing_sound: UseSound; wield_sound: WieldSound; wield_spine_name?: SpineAttachmentName; singleton?: Singleton3; expiration_minutes?: DynamicExpirationMinutes2; priors?: ProgressionPriors; wip?: WIP; jingle_override?: JingleOverride4; equipment_set?: EquipmentSet5; editor_group?: EditorGroup21; uicon: UIIcon17; inventory_sound: InventorySound2; recipe?: Recipe13; equipment_default_stats?: DefaultStats2; reactions?: Reactions; manual_pickup?: ManualPickup1; level_viewer_ignore?: IgnoreInLevelViewer4; can_scramble?: CanScramble2; scramble_bans?: BannedScrambleTargets2; scramble_levels?: ScrambleLevels1; show_in_special_items?: ShowInSpecialItems1; glowbeam?: GlowBeam; fishing?: Fishing; type: Type1; sprite?: WorldSprite15; ability?: Ability10; level: Level6; name: Name23; fishing_power?: FishingPower; } interface Description18 { text: EnglishText55; skip?: Skip55; description?: TranslatorHelperText48; } interface Recipe13 { badge_cost_modifiers?: CostModifiedByResearch13; station: Station13; artisans?: ArtisansRequired13; components: Ingredients13; effort_modifier?: EffortModifier18; source?: UnlockedBy28; optional_stations?: OptionalStations13; output_quantity?: OutputQuantity11; badge_output_modifiers?: OutputModifiedByResearch11; } interface CostModifiedByResearch13 { [k: string]: { element: { badge_id: ResearchNode24; value: ChangePerPoint29; }; order: number; }; } interface ArtisansRequired13 { [k: string]: { element: string; order: number; }; } interface Ingredients13 { [k: string]: { element: string; order: number; }; } /** * Other stations that can be used to craft this recipe. */ interface OptionalStations13 { [k: string]: { element: string; order: number; }; } interface OutputModifiedByResearch11 { [k: string]: { element: { badge_id: ResearchNode25; value: ChangePerPoint30; style: Style11; }; order: number; }; } /** * You can allocate stats for this item to have on it by default when obtained. This will not affect already-obtained items. */ interface DefaultStats2 { [k: string]: { element: string; order: number; }; } /** * These are items that this item cannot replace. */ interface BannedScrambleTargets2 { [k: string]: { element: string; order: number; }; } /** * If set, this item will only scramble into items that are within this level range. */ interface ScrambleLevels1 { value0: Min44; value1: Max44; } interface Name23 { text: EnglishText56; skip?: Skip56; description?: TranslatorHelperText49; } /** * Items that can be used during gameplay to heal or provide temporary boosts. */ interface Consumable { fishing?: Fishing; description: Description19; effects: Effects; expiration_minutes?: DynamicExpirationMinutes3; type: Type2; priors?: ProgressionPriors; use_sound: ConsumeSound; wip?: WIP; sprite: WorldSprite16; level: Level7; uicon?: UIIcon18; editor_group?: EditorGroup22; inventory_sound: InventorySound3; recipe?: Recipe14; name: Name24; } interface Description19 { text: EnglishText57; skip?: Skip57; description?: TranslatorHelperText50; } interface Effects { [k: string]: { element: Effect; order: number; }; } interface UnlockedBy29 { prerequisite: UnlockedBy30; unlock_text?: UnlockDescription3; } /** * If unlocked by research, this description will appear in the Research Node. */ interface UnlockDescription3 { text: EnglishText58; skip?: Skip58; description?: TranslatorHelperText51; } interface UnlockedBy31 { prerequisite: UnlockedBy32; unlock_text?: UnlockDescription4; } /** * If unlocked by research, this description will appear in the Research Node. */ interface UnlockDescription4 { text: EnglishText59; skip?: Skip59; description?: TranslatorHelperText52; } interface Recipe14 { badge_cost_modifiers?: CostModifiedByResearch14; station: Station14; artisans?: ArtisansRequired14; components: Ingredients14; effort_modifier?: EffortModifier19; source?: UnlockedBy33; optional_stations?: OptionalStations14; output_quantity?: OutputQuantity12; badge_output_modifiers?: OutputModifiedByResearch12; } interface CostModifiedByResearch14 { [k: string]: { element: { badge_id: ResearchNode26; value: ChangePerPoint31; }; order: number; }; } interface ArtisansRequired14 { [k: string]: { element: string; order: number; }; } interface Ingredients14 { [k: string]: { element: string; order: number; }; } /** * Other stations that can be used to craft this recipe. */ interface OptionalStations14 { [k: string]: { element: string; order: number; }; } interface OutputModifiedByResearch12 { [k: string]: { element: { badge_id: ResearchNode27; value: ChangePerPoint32; style: Style12; }; order: number; }; } interface Name24 { text: EnglishText60; skip?: Skip60; description?: TranslatorHelperText53; } /** * A basic object that can be used for environmental storytelling. It cannot take damage. */ interface EnvironmentalObject { light_emitter?: LightEmitter; worldmap_tile_color?: WorldMapTileColor4; particle_emitters?: ParticleEmitters2; underfoot: Underfoot2; hitbox: Hitbox; using_lighting: UseLighting12; object?: Object4; editor_group?: EditorGroup23; flippable: Flippable6; grid_snapping?: GridSnapping3; sprite: WorldSprite17; name: Name25; blocks_abilities?: BlocksAbilities1; scale_modifier?: ScaleModifier6; relative_level?: RelativeLevel4; relative_level_minimum?: RelativeLevelMinimum3; description?: Description20; spine_skin?: SpineSkin3; shadow?: Shadow; data_fields?: DataFields4; priors?: ProgressionPriors; expiration_minutes?: DynamicExpirationMinutes4; wip?: WIP; uicon?: UIIcon19; states?: EntityStates; reactions?: Reactions; respawnable?: Respawnable1; editor_hitbox_color?: EditorHitboxColor5; hide_under_roof?: HideUnderRoof4; merge_root?: AutoMergeRootItem1; requires_land?: RequiresLand3; zappable?: Zappable1; random_scaling?: RandomScalingMinimum2; knowledge_group?: KnowledgeGroup2; randomized_skin?: RandomizedSpineSkin1; death_sounds?: DestructionSounds2; level?: Level8; bullet_interaction?: BulletInteraction2; invisible?: Invisible; randomized_subimages?: EditableSubimages; spine_idle?: SpineIdle2; babbler?: Babbler87; editor_category?: EditorCategoryOverride; } /** * If set, this item will be drawn on the world map as a colored tile. */ interface WorldMapTileColor4 { g: Green37; r: Red37; b: Blue37; } interface ParticleEmitters2 { [k: string]: { element: ParticleEmitter2; order: number; }; } interface ParticleEmitter2 { states?: RequiredStates2; x_offset: XOffset2; spine_bone?: SpineBone2; y_offset: YOffset11; behind?: Behind2; emitter_scale?: EmitterScale4; particle_system: ParticleSystem4; } /** * If set, the particle system will only emit if the object is in one of these states */ interface RequiredStates2 { [k: string]: { element: State5; order: number; }; } interface Name25 { text: EnglishText61; skip?: Skip61; description?: TranslatorHelperText54; } interface Description20 { text: EnglishText62; skip?: Skip62; description?: TranslatorHelperText55; } /** * Attaching data fields to this world element will make them readable by other game mechanics/elements. Can be used to store custom data on a world element. */ interface DataFields4 { [k: string]: { element: string; order: number; }; } /** * For overriding the default hitbox color in the editor. */ interface EditorHitboxColor5 { g: Green38; r: Red38; b: Blue38; } /** * Sound effects to play when this thing is destroyed. */ interface DestructionSounds2 { [k: string]: { element: string; order: number; }; } /** * A pickupable recipe. */ interface Schematic { name: NameInternal4; priors?: ProgressionPriors; wip?: WIP; fishing?: Fishing; editor_group?: EditorGroup24; } interface Player { size: Size8; buildmode_placement_sound: BuildModePlacementSound; buildmode_pickup_sound: BuildModePickupSound; shadow: Shadow; injury_sounds: InjurySounds3; wip?: WIP; name_color: NameColor1; sprite: WorldSprite18; uicon: UIIcon20; editor_group?: EditorGroup25; visualbox?: VisualBox1; name: Name26; reactions?: Reactions; } interface Size8 { height: Height9; width: Width9; } /** * Sound effects to play when this thing takes damage. */ interface InjurySounds3 { [k: string]: { element: { minor_injury_sound: Minor3; major_injury_sound: Major3; chance_of_playing: Chance5; }; order: number; }; } /** * For when this name is displayed in a dialogue window. */ interface NameColor1 { g: Green39; r: Red39; b: Blue39; } /** * Dimensions for representing the visual height and width of the object. Used for buff overlays and other visual effects. */ interface VisualBox1 { height: Height10; width: Width10; } interface Name26 { text: EnglishText63; skip?: Skip63; description?: TranslatorHelperText56; } interface Juicebox { wip?: WIP; follow_unlock?: FollowingUnlock; size: Hitbox1; sprite: WorldSprite19; dialogue_sounds: DialogueSounds1; color_bright: UIColor1; uicon: UIIcon21; editor_group?: EditorGroup26; name: Name27; } interface Hitbox1 { height: Height11; width: Width11; } /** * Sounds for Juicebox to play (at random) during dialogue moments. */ interface DialogueSounds1 { [k: string]: { element: string; order: number; }; } /** * The color to use for Juicebox's UI. */ interface UIColor1 { g: Green40; r: Red40; b: Blue40; } interface Name27 { text: EnglishText64; skip?: Skip64; description?: TranslatorHelperText57; } /** * A thing that can hold stuff. */ interface Chest { shadow?: Shadow; hitbox: Hitbox; data_fields?: DataFields5; using_lighting?: UseLighting13; hide_under_roof?: HideUnderRoof5; object?: Object5; wip?: WIP; requires_land?: RequiresLand4; random_scaling?: RandomScalingMinimum3; sprite: WorldSprite20; death_sounds?: DestructionSounds3; uicon: UIIcon22; editor_group?: EditorGroup27; name: Name28; babbler?: Babbler88; light_emitter?: LightEmitter; } /** * Attaching data fields to this world element will make them readable by other game mechanics/elements. Can be used to store custom data on a world element. */ interface DataFields5 { [k: string]: { element: string; order: number; }; } /** * Sound effects to play when this thing is destroyed. */ interface DestructionSounds3 { [k: string]: { element: string; order: number; }; } interface Name28 { text: EnglishText65; skip?: Skip65; description?: TranslatorHelperText58; } interface Character2 { editor_excluded?: EditorExcluded2; speech_sounds?: SpeechSoundsOverride; species: Species; vocal_pitch?: VocalPitch; background_info?: BackgroundInformation; chat_cooldown_override?: ChatCooldownSecondsOverride; fallback_actors?: FallbackActors; wip?: WIP; name_color?: NameColor2; editor_group?: EditorGroup28; name: Name29; idle_text?: IdleText; light_emitter?: LightEmitter; } /** * Overrides the default speech sounds of the NPC's species. */ interface SpeechSoundsOverride { [k: string]: { element: string; order: number; }; } /** * For developer use. Just for establishing background information. */ interface BackgroundInformation { notes?: Notes1; brief?: Brief; pronouns?: Pronouns; personality?: Personality; } /** * Information about this character's background and their role in the game world. */ interface Notes1 { [k: string]: { element: string; order: number; }; } /** * If the actor is not available, this actor will be used instead. */ interface FallbackActors { [k: string]: { element: string; order: number; }; } /** * For when this name is displayed in a dialogue window. */ interface NameColor2 { g: Green41; r: Red41; b: Blue41; } interface Name29 { text: EnglishText66; skip?: Skip66; description?: TranslatorHelperText59; } /** * Fallback things the character can say when interacted with when they aren't involved in any quests. */ interface IdleText { [k: string]: { element: Topic; order: number; }; } /** * For each topic, the character will say latest Phrase Group whose requirements are met (if any). */ interface Topic { name: TopicNameInternal; requirements?: MomentRequirements2; phrase_groups: PhraseGroups; } /** * Conditions that must be true for the quest to proceed. */ interface MomentRequirements2 { [k: string]: { element: Requirement; order: number; }; } /** * The character will say lines from the latest phrase group whose requirements are met. */ interface PhraseGroups { [k: string]: { element: PhraseGroup; order: number; }; } interface PhraseGroup { name: GroupNameInternal; phrases: Phrases; requirements?: Requirements1; } interface Phrases { [k: string]: { element: { text: { text: EnglishText67; skip?: Skip67; }; emoji?: Emoji2; }; order: number; }; } /** * Conditions that must be true for the quest to proceed. */ interface Requirements1 { [k: string]: { element: Requirement1; order: number; }; } /** * The player must have at least these quantities of these items. */ interface Items49 { [k: string]: { element?: { value?: Quantity54; key?: string; }; order?: number; }; } interface InventoryEvaluation1 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: Item6; value1?: Quantity55; }; order?: number; }; } /** * Conditions that must be true for the quest to proceed. */ interface Requirements2 { [k: string]: { element: Requirement1; order: number; }; } interface PetStage2 { stage?: "Egg" | "Baby" | "Adult" | "Embiggened"; comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; } interface Mutators1 { [k: string]: { element?: { mutator?: Mutator1; mutator_active?: Active1; }; order?: number; }; } interface SpineAttachments { bag?: Bag; wieldable?: Wieldable1; mask?: Mask; necklace?: Necklace; } interface SpineAttachments1 { backpack?: Backpack; necklace?: Necklace1; hat?: Hat; frill_jaw?: FrillJaw; frill_forehead?: FrillForehead; eyes?: Eyes; beak?: Beak; armwrap?: Armwrap; } interface SpineAttachments2 { backaccessory?: Backaccessory; markings?: Markings; horn?: Horn; jaw?: Jaw; melon?: Melon; wield?: Wield; eyes?: Eyes1; } /** * A tag used to convey properties of an item in Crashlands 2. All tags have mechanical implications for how the item is handled by various game systems. */ interface ItemTag { invulnerable?: Invulnerable; parent_tag?: ParentTag; recipe_category?: RecipeCategory; wip?: WIP; uicon?: UIIcon23; priority: TagPriority; inventory_sound?: InventorySound4; settable_on_items?: SettableOnItems; name: TagName; crafting_effort?: CraftingEffortMultiplier; buildmode?: BuildModeAccessible; editor_category?: EditorCategory; num_craft_for_skill?: NumCraftsForFirstSkillLevel; respawnable?: Respawnable2; } /** * If the tag is displayed to the player (e.g. on the Equipment screen), they will see this name. */ interface TagName { text: EnglishText68; skip?: Skip68; description?: TranslatorHelperText60; } /** * Items that can be dropped into the world to mark quest locations and trigger quest events. */ interface QuestMarker { name: Name30; wip?: WIP; editor_group?: EditorGroup29; } interface Insight12 { description: InsightDescription; source?: UnlockedBy34; priors?: ProgressionPriors; demo_blocked?: DemoBlocked; wip?: WIP; time_modifier?: TimeModifier; uicon: Icon5; recipe?: MaterialRequirements; artisan: Artisan2; name: InsightName; points_max: MaximumPoints; } interface InsightDescription { text: EnglishText69; skip?: Skip69; description?: TranslatorHelperText61; } interface MaterialRequirements { components: Ingredients15; effort_modifier: EffortModifier20; } interface Ingredients15 { [k: string]: { element: string; order: number; }; } interface InsightName { text: EnglishText70; skip?: Skip70; description?: TranslatorHelperText62; } interface Quest { ignore_in_progression_map?: IgnoreInProgressionMap3; priors?: ProgressionPriors; demo_blocked?: DemoBlocked1; wip?: WIP; quest_start_log?: QuestLogSummary; quest_start_requirements?: Requirements3; quest_giver?: QuestGiver; quest_scrambled_log?: ScrambleModeQuestLog; quest_end_requirements?: Requirements4; quest_receiver?: QuestReceiver; map_markers?: MapMarkers; blocked?: Blocked1; marker_world_text?: QuestMarkerWorldText; storyline: Storyline; item_highlights?: WorldElementHighlights; objectives?: Objectives; quest_end_moments?: QuestEndMoments; quest_start_moments?: QuestStartMoments; pet_quest?: PetQuest; clues?: Clues; order: Order; name: Name31; } /** * If set, this quest will be blocked in the Demo version of the game. You can optionally add dialogue to wrap up the story. */ interface DemoBlocked1 { blocked_moments?: DemoBlockedMoments; blocked: Blocked; } /** * A sequence of narrative events to tell the story of this quest. */ interface DemoBlockedMoments { [k: string]: { element: QuestMoment; order: number; }; } /** * Characters or actors can convey emojis. */ interface Emotes1 { [k: string]: { element?: { value?: Emoji4; key?: Character4; }; order?: number; }; } interface ItemsToGain { [k: string]: { element?: { value?: Quantity56; key?: string; }; order?: number; }; } /** * Characters can throw items out onto the ground. */ interface Drops { [k: string]: { element?: { items?: ItemsToDrop; dropper?: Dropper; }; order?: number; }; } interface ItemsToDrop { [k: string]: { element?: { quantity?: Quantity57; item_id?: Item7; }; order?: number; }; } /** * Here you can dictate which actors are looking at which things. This will remain true until you unset their look targets, or the quest moments come to an end. */ interface LookTargets1 { [k: string]: { element?: { value?: LooksAt1; key?: string; }; order?: number; }; } /** * These actors will stop being forced to look at something. If unset, all actors will resume default looking behavior. */ interface Actors1 { [k: string]: { element?: string; order?: number; }; } interface QuestLogSummary { text: EnglishText72; skip?: Skip72; } /** * Conditions that must be true for the quest to proceed. */ interface Requirements3 { [k: string]: { element: Requirement1; order: number; }; } /** * Who/what triggers the quest. If no giver is present, the quest will automatically trigger once requirements are met. */ interface QuestGiver { show_on_map?: ShowOnMap; area_requirement?: AreaRequirement; interaction_target?: AutomaticInteractionTarget; proximity?: AutomaticInteractionProximity; item: Initiator; same_room?: RequireSameRoom; } interface ScrambleModeQuestLog { text: EnglishText73; skip?: Skip73; } /** * Conditions that must be true for the quest to proceed. */ interface Requirements4 { [k: string]: { element: Requirement1; order: number; }; } /** * Who/what triggers the quest. If no giver is present, the quest will automatically trigger once requirements are met. */ interface QuestReceiver { show_on_map?: ShowOnMap1; area_requirement?: AreaRequirement1; interaction_target?: AutomaticInteractionTarget1; proximity?: AutomaticInteractionProximity1; item: Initiator1; same_room?: RequireSameRoom1; } /** * You can optionally have certain Quest Markers display on the world map while this quest is active. */ interface MapMarkers { [k: string]: { element: MapMarker; order: number; }; } interface MapMarker { text?: TextForWorldMap; marker: QuestMarker1; radius: RadiusGridSpaces; } interface TextForWorldMap { text: EnglishText74; skip?: Skip74; } /** * You can display text in the world while this quest is active. */ interface QuestMarkerWorldText { [k: string]: { element: QuestMarkerText; order: number; }; } interface QuestMarkerText { text: Text; sprite?: Sprite4; proximity?: Proximity; color?: TextColor; marker: QuestMarker2; } interface Text { text: EnglishText75; skip?: Skip75; description?: TranslatorHelperText63; } interface TextColor { g: Green42; r: Red42; b: Blue42; } /** * Items to have a glow underneath them while this quest is active. */ interface WorldElementHighlights { [k: string]: { element: string; order: number; }; } interface Objectives { [k: string]: { element: Objective; order: number; }; } interface Items50 { [k: string]: { element?: { value?: Quantity58; key?: string; }; order?: number; }; } /** * The ability must be cast by one of the items in this list. If not specified, the player must cast the ability. */ interface AbilitySources { [k: string]: { element?: string; order?: number; }; } /** * If set, the objective will be tracked in the Quest log page under this description. */ interface ProgressTrackingDescription { text: EnglishText76; skip?: Skip76; } /** * Progress toward this objective will only count if these requirements are met at the time of using the ability. */ interface AbilityUsageRequirements { [k: string]: { element?: AbilityUsageRequirement; order?: number; }; } /** * The player must have at least these quantities of these items. */ interface Items51 { [k: string]: { element?: { value?: Quantity59; key?: string; }; order?: number; }; } interface PetStage3 { stage?: "Egg" | "Baby" | "Adult" | "Embiggened"; comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; } /** * The ability must be used on targets that match these filters to count towards the objective. */ interface TargetS { [k: string]: { element?: Filter39; order?: number; }; } interface Filter39 { exclude?: Exclude42; buffs?: Buffs83; combatants_only?: Combatants38; require_all_tags?: RequireAllTags38; datafield_evaluations?: DatafieldEvaluations40; scenes?: Scenes40; items?: Items52; sub_filters?: SubFilters19; } interface Buffs83 { require_all: RequireAll48; stacks?: Stacks43; buffs: Buffs84; } /** * The buffs found must match this stack requirement. */ interface Stacks43 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity60; } interface Buffs84 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations40 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes40 { [k: string]: { element?: string; order?: number; }; } interface Items52 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters19 { [k: string]: { element?: Filter40; order?: number; }; } interface Filter40 { exclude?: Exclude43; buffs?: Buffs85; combatants_only?: Combatants39; require_all_tags?: RequireAllTags39; datafield_evaluations?: DatafieldEvaluations41; scenes?: Scenes41; items?: Items53; } interface Buffs85 { require_all: RequireAll49; stacks?: Stacks44; buffs: Buffs86; } /** * The buffs found must match this stack requirement. */ interface Stacks44 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity61; } interface Buffs86 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations41 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes41 { [k: string]: { element?: string; order?: number; }; } interface Items53 { [k: string]: { element?: string; order?: number; }; } /** * The thing that caused the destruction. */ interface DestructionSources { [k: string]: { element?: Filter41; order?: number; }; } interface Filter41 { exclude?: Exclude44; buffs?: Buffs87; combatants_only?: Combatants40; require_all_tags?: RequireAllTags40; datafield_evaluations?: DatafieldEvaluations42; scenes?: Scenes42; items?: Items54; sub_filters?: SubFilters20; } interface Buffs87 { require_all: RequireAll50; stacks?: Stacks45; buffs: Buffs88; } /** * The buffs found must match this stack requirement. */ interface Stacks45 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity63; } interface Buffs88 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations42 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes42 { [k: string]: { element?: string; order?: number; }; } interface Items54 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters20 { [k: string]: { element?: Filter42; order?: number; }; } interface Filter42 { exclude?: Exclude45; buffs?: Buffs89; combatants_only?: Combatants41; require_all_tags?: RequireAllTags41; datafield_evaluations?: DatafieldEvaluations43; scenes?: Scenes43; items?: Items55; } interface Buffs89 { require_all: RequireAll51; stacks?: Stacks46; buffs: Buffs90; } /** * The buffs found must match this stack requirement. */ interface Stacks46 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity64; } interface Buffs90 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations43 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes43 { [k: string]: { element?: string; order?: number; }; } interface Items55 { [k: string]: { element?: string; order?: number; }; } /** * Progress toward this objective will only count if these requirements are met at the time of destruction. */ interface DestructionRequirements { [k: string]: { element?: DestructionRequirement; order?: number; }; } /** * The player must have at least these quantities of these items. */ interface Items56 { [k: string]: { element?: { value?: Quantity65; key?: string; }; order?: number; }; } interface PetStage4 { stage?: "Egg" | "Baby" | "Adult" | "Embiggened"; comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; } /** * Destruction of targets that match these filters will count towards the objective. */ interface TargetS1 { [k: string]: { element?: Filter43; order?: number; }; } interface Filter43 { exclude?: Exclude47; buffs?: Buffs91; combatants_only?: Combatants42; require_all_tags?: RequireAllTags42; datafield_evaluations?: DatafieldEvaluations44; scenes?: Scenes44; items?: Items57; sub_filters?: SubFilters21; } interface Buffs91 { require_all: RequireAll52; stacks?: Stacks47; buffs: Buffs92; } /** * The buffs found must match this stack requirement. */ interface Stacks47 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity66; } interface Buffs92 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations44 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes44 { [k: string]: { element?: string; order?: number; }; } interface Items57 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters21 { [k: string]: { element?: Filter44; order?: number; }; } interface Filter44 { exclude?: Exclude48; buffs?: Buffs93; combatants_only?: Combatants43; require_all_tags?: RequireAllTags43; datafield_evaluations?: DatafieldEvaluations45; scenes?: Scenes45; items?: Items58; } interface Buffs93 { require_all: RequireAll53; stacks?: Stacks48; buffs: Buffs94; } /** * The buffs found must match this stack requirement. */ interface Stacks48 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity67; } interface Buffs94 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations45 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes45 { [k: string]: { element?: string; order?: number; }; } interface Items58 { [k: string]: { element?: string; order?: number; }; } /** * If set, the objective will be tracked in the Quest log page under this description. */ interface ProgressTrackingDescription1 { text: EnglishText77; skip?: Skip77; } /** * Any of these items will count toward this consumption objective. */ interface ItemsToConsume { [k: string]: { element?: string; order?: number; }; } /** * If set, the objective will be tracked in the Quest log page under this description. */ interface ProgressTrackingDescription2 { text: EnglishText78; skip?: Skip78; } /** * You can optionally have certain Quest Markers display on the world map while this objective is incomplete. */ interface MapMarkers1 { [k: string]: { element?: MapMarker1; order?: number; }; } interface MapMarker1 { text?: TextForWorldMap1; marker: QuestMarker3; radius: RadiusGridSpaces1; } interface TextForWorldMap1 { text: EnglishText79; skip?: Skip79; } /** * If set, the objective will be tracked in the Quest log page under this description. */ interface ProgressTrackingDescription3 { text: EnglishText80; skip?: Skip80; } /** * You can require this item be placed within a certain distance of a quest marker. */ interface QuestMarkerProximity { proximity?: ProximityGridSpaces; quest_marker?: string; } /** * You can optionally force certain things in the world to drop the items in this quest objective while this quest is active. */ interface CustomLootDrops { [k: string]: { element?: CustomLoot; order?: number; }; } interface CustomLoot { sources?: Sources; loot?: LootGroup2; } /** * What's going to drop this loot? */ interface Sources { [k: string]: { element?: string; order?: number; }; } interface LootGroup2 { item_tags_used?: ItemTagsUsed2; item_ids_used?: ItemsUsed6; areas?: Areas5; bonus_loot?: ConsiderAsBonus2; scenes?: Scenes46; num_drops?: DropQuantity2; time_requirement?: TimeOfDay2; trigger: Trigger3; drop_chance: DropChance2; } /** * The kinds of items required to be used on this for loot to drop. */ interface ItemTagsUsed2 { [k: string]: { element?: string; order?: number; }; } /** * Specific items required to be used on this for loot to drop. */ interface ItemsUsed6 { [k: string]: { element?: string; order?: number; }; } /** * If set, the loot will only drop from something whose origin is in the listed areas. */ interface Areas5 { [k: string]: { element?: string; order?: number; }; } /** * If set, the loot will only drop from something that belongs to one of the listed scenes. */ interface Scenes46 { [k: string]: { element?: string; order?: number; }; } /** * A random number of items will drop in this range. Once the player has acquired the req */ interface DropQuantity2 { value0?: Min45; value1?: Max45; } interface ItemsToDrop1 { [k: string]: { element?: { value?: Quantity71; key?: string; }; order?: number; }; } /** * The text that will appear when the player interacts with the target. */ interface InteractionText { text: EnglishText81; skip?: Skip81; } /** * The color of the progress bar that will appear when the player interacts with the target. */ interface InteractionBarColor { g?: Green43; r?: Red43; b?: Blue43; } /** * The player must interact with a target that matches this filter. */ interface TargetS2 { [k: string]: { element?: Filter45; order?: number; }; } interface Filter45 { exclude?: Exclude49; buffs?: Buffs95; combatants_only?: Combatants44; require_all_tags?: RequireAllTags44; datafield_evaluations?: DatafieldEvaluations46; scenes?: Scenes47; items?: Items59; sub_filters?: SubFilters22; } interface Buffs95 { require_all: RequireAll54; stacks?: Stacks49; buffs: Buffs96; } /** * The buffs found must match this stack requirement. */ interface Stacks49 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity73; } interface Buffs96 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations46 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes47 { [k: string]: { element?: string; order?: number; }; } interface Items59 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters22 { [k: string]: { element?: Filter46; order?: number; }; } interface Filter46 { exclude?: Exclude50; buffs?: Buffs97; combatants_only?: Combatants45; require_all_tags?: RequireAllTags45; datafield_evaluations?: DatafieldEvaluations47; scenes?: Scenes48; items?: Items60; } interface Buffs97 { require_all: RequireAll55; stacks?: Stacks50; buffs: Buffs98; } /** * The buffs found must match this stack requirement. */ interface Stacks50 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity74; } interface Buffs98 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations47 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes48 { [k: string]: { element?: string; order?: number; }; } interface Items60 { [k: string]: { element?: string; order?: number; }; } /** * Conditions that must be true for the quest to proceed. */ interface Requirements5 { [k: string]: { element: Requirement1; order: number; }; } interface InteractionOutcomes { [k: string]: { element?: QuestInteractionOutcome; order?: number; }; } interface ItemsToLose { [k: string]: { element?: { value?: Quantity75; key?: Item11; }; order?: number; }; } /** * If set, the objective will be tracked in the Quest log page under this description. */ interface ProgressTrackingDescription4 { text: EnglishText82; skip?: Skip82; } /** * Progress toward this objective will only count if these requirements are met at the time of acquiring the item. */ interface AcquisitionRequirements { [k: string]: { element?: AcquisitionRequirement; order?: number; }; } /** * The player must have at least these quantities of these items. */ interface Items61 { [k: string]: { element?: { value?: Quantity76; key?: string; }; order?: number; }; } interface PetStage5 { stage?: "Egg" | "Baby" | "Adult" | "Embiggened"; comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; } /** * If set, the objective will be tracked in the Quest log page under this description. */ interface ProgressTrackingDescription5 { text: EnglishText83; skip?: Skip83; } /** * If set, this ability must be used to deal damage to count toward this objective. */ interface AbilitiesUsed2 { [k: string]: { element?: string; order?: number; }; } /** * If set, this item must be used to deal damage to count toward this objective. */ interface ItemsUsed7 { [k: string]: { element?: string; order?: number; }; } /** * The types of damage that will count toward this objective. */ interface DamageTypes3 { [k: string]: { element?: string; order?: number; }; } /** * The player must deal damage to a target that matches this filter. */ interface DamageTargets { [k: string]: { element?: Filter47; order?: number; }; } interface Filter47 { exclude?: Exclude52; buffs?: Buffs99; combatants_only?: Combatants46; require_all_tags?: RequireAllTags46; datafield_evaluations?: DatafieldEvaluations48; scenes?: Scenes49; items?: Items62; sub_filters?: SubFilters23; } interface Buffs99 { require_all: RequireAll56; stacks?: Stacks51; buffs: Buffs100; } /** * The buffs found must match this stack requirement. */ interface Stacks51 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity78; } interface Buffs100 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations48 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes49 { [k: string]: { element?: string; order?: number; }; } interface Items62 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters23 { [k: string]: { element?: Filter48; order?: number; }; } interface Filter48 { exclude?: Exclude53; buffs?: Buffs101; combatants_only?: Combatants47; require_all_tags?: RequireAllTags47; datafield_evaluations?: DatafieldEvaluations49; scenes?: Scenes50; items?: Items63; } interface Buffs101 { require_all: RequireAll57; stacks?: Stacks52; buffs: Buffs102; } /** * The buffs found must match this stack requirement. */ interface Stacks52 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity79; } interface Buffs102 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations49 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes50 { [k: string]: { element?: string; order?: number; }; } interface Items63 { [k: string]: { element?: string; order?: number; }; } /** * The thing that caused the damage. */ interface DamageSources { [k: string]: { element?: Filter49; order?: number; }; } interface Filter49 { exclude?: Exclude54; buffs?: Buffs103; combatants_only?: Combatants48; require_all_tags?: RequireAllTags48; datafield_evaluations?: DatafieldEvaluations50; scenes?: Scenes51; items?: Items64; sub_filters?: SubFilters24; } interface Buffs103 { require_all: RequireAll58; stacks?: Stacks53; buffs: Buffs104; } /** * The buffs found must match this stack requirement. */ interface Stacks53 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity80; } interface Buffs104 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations50 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes51 { [k: string]: { element?: string; order?: number; }; } interface Items64 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters24 { [k: string]: { element?: Filter50; order?: number; }; } interface Filter50 { exclude?: Exclude55; buffs?: Buffs105; combatants_only?: Combatants49; require_all_tags?: RequireAllTags49; datafield_evaluations?: DatafieldEvaluations51; scenes?: Scenes52; items?: Items65; } interface Buffs105 { require_all: RequireAll59; stacks?: Stacks54; buffs: Buffs106; } /** * The buffs found must match this stack requirement. */ interface Stacks54 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity81; } interface Buffs106 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations51 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes52 { [k: string]: { element?: string; order?: number; }; } interface Items65 { [k: string]: { element?: string; order?: number; }; } /** * A sequence of narrative events to tell the story of this quest. */ interface QuestEndMoments { [k: string]: { element: QuestMoment1; order: number; }; } /** * Characters or actors can convey emojis. */ interface Emotes2 { [k: string]: { element?: { value?: Emoji6; key?: Character5; }; order?: number; }; } interface ItemsToGain1 { [k: string]: { element?: { value?: Quantity82; key?: string; }; order?: number; }; } /** * Characters can throw items out onto the ground. */ interface Drops1 { [k: string]: { element?: { items?: ItemsToDrop2; dropper?: Dropper1; }; order?: number; }; } interface ItemsToDrop2 { [k: string]: { element?: { quantity?: Quantity83; item_id?: Item14; }; order?: number; }; } /** * Here you can dictate which actors are looking at which things. This will remain true until you unset their look targets, or the quest moments come to an end. */ interface LookTargets2 { [k: string]: { element?: { value?: LooksAt2; key?: string; }; order?: number; }; } /** * These actors will stop being forced to look at something. If unset, all actors will resume default looking behavior. */ interface Actors2 { [k: string]: { element?: string; order?: number; }; } /** * A sequence of narrative events to tell the story of this quest. */ interface QuestStartMoments { [k: string]: { element: QuestMoment2; order: number; }; } /** * Characters or actors can convey emojis. */ interface Emotes3 { [k: string]: { element?: { value?: Emoji8; key?: Character6; }; order?: number; }; } interface ItemsToGain2 { [k: string]: { element?: { value?: Quantity84; key?: string; }; order?: number; }; } /** * Characters can throw items out onto the ground. */ interface Drops2 { [k: string]: { element?: { items?: ItemsToDrop3; dropper?: Dropper2; }; order?: number; }; } interface ItemsToDrop3 { [k: string]: { element?: { quantity?: Quantity85; item_id?: Item15; }; order?: number; }; } /** * Here you can dictate which actors are looking at which things. This will remain true until you unset their look targets, or the quest moments come to an end. */ interface LookTargets3 { [k: string]: { element?: { value?: LooksAt3; key?: string; }; order?: number; }; } /** * These actors will stop being forced to look at something. If unset, all actors will resume default looking behavior. */ interface Actors3 { [k: string]: { element?: string; order?: number; }; } /** * If set, this quest will be considered a 'pet quest'. Progress toward this quest will only occur if you have the specified pet with you. */ interface PetQuest { name: ShortName; scramble_excluded?: ScrambleExcluded1; pet: Pet10; requires_following: RequiresFollowing; pet_stage: PetStage6; } /** * The name of this quest as displayed in the pet UI. Should be quite short. */ interface ShortName { text: EnglishText86; skip?: Skip86; } /** * Things characters can say about this quest while the quest is active. */ interface Clues { [k: string]: { element: { speaker: Speaker4; phrases: Phrases1; }; order: number; }; } interface Phrases1 { [k: string]: { element: Clue; order: number; }; } interface Clue { phrase: { text: Text1; emoji?: Emoji9; }; requirements?: Requirements6; } interface Text1 { text: EnglishText87; skip?: Skip87; } /** * Conditions that must be true for the quest to proceed. */ interface Requirements6 { [k: string]: { element: Requirement1; order: number; }; } /** * A companion character who can help with crafting and research. */ interface Buddy6 { hitbox: Hitbox; using_lighting?: UseLighting14; background_info?: BackgroundInformation1; chat_cooldown_override?: ChatCooldownSecondsOverride1; looks_at_player: LooksAtPlayer; priors?: ProgressionPriors; object: WorldObject; wip?: WIP; follow_unlock?: FollowingUnlock1; insight_unlock?: InsightUnlocker; color_bright: UIColorBright; uicon: UIIcon24; editor_group?: EditorGroup30; color_mid: UIColorMid; color_dark: UIColorDark; convert_to_artisan?: ConvertToOtherBuddy; idle_text?: IdleText1; sounds: Sounds; banner_portrait?: BannerPortrait; banner_background?: BannerBackground; sprite: WorldSprite21; name: BuddyName; light_emitter?: LightEmitter; } /** * For developer use. Just for establishing background information. */ interface BackgroundInformation1 { notes?: Notes2; brief?: Brief1; pronouns?: Pronouns1; personality?: Personality1; } /** * Information about this character's background and their role in the game world. */ interface Notes2 { [k: string]: { element: string; order: number; }; } /** * The color to use for the buddy's UI highlights. */ interface UIColorBright { g: Green44; r: Red44; b: Blue44; } /** * The color to use for the buddy's UI midtones. */ interface UIColorMid { g: Green45; r: Red45; b: Blue45; } /** * The color to use for the buddy's UI backgrounds. */ interface UIColorDark { g: Green46; r: Red46; b: Blue46; } /** * This buddy can become a different buddy when the player completes a certain quest. */ interface ConvertToOtherBuddy { unlocked_by: ConvertAfterQuest; convert_to: ConvertTo; } /** * Fallback things the character can say when interacted with when they aren't involved in any quests. */ interface IdleText1 { [k: string]: { element: Topic1; order: number; }; } /** * For each topic, the character will say latest Phrase Group whose requirements are met (if any). */ interface Topic1 { name: TopicNameInternal1; requirements?: MomentRequirements3; phrase_groups: PhraseGroups1; } /** * Conditions that must be true for the quest to proceed. */ interface MomentRequirements3 { [k: string]: { element: Requirement; order: number; }; } /** * The character will say lines from the latest phrase group whose requirements are met. */ interface PhraseGroups1 { [k: string]: { element: PhraseGroup1; order: number; }; } interface PhraseGroup1 { name: GroupNameInternal1; phrases: Phrases2; requirements?: Requirements7; } interface Phrases2 { [k: string]: { element: { text: { text: EnglishText88; skip?: Skip88; }; emoji?: Emoji10; }; order: number; }; } /** * Conditions that must be true for the quest to proceed. */ interface Requirements7 { [k: string]: { element: Requirement1; order: number; }; } interface Sounds { research_start: ResearchStart; research_collect: ResearchCollected; comfort_gained: ComfortGained; comfort_lost: ComfortLost; interact: Interact; follow_start: FollowStart; follow_end: FollowEnd; blocked: ActionBlocked; } interface BuddyName { text: EnglishText89; skip?: Skip89; description?: TranslatorHelperText64; } /** * A sprite asset found in the Game Maker project. */ interface Sprite5 { demo_masked?: DemoMasked; transitions?: SpineTransitions; wip?: WIP; blinks?: SpineBlinkTracks; name: Name32; spine: Spine; } interface SpineTransitions { [k: string]: { element: TransitionGroup; order: number; }; } interface TransitionGroup { source: From; destination: To; transition_reversed?: TransitionReversed; transition: Transition; } interface From { [k: string]: { element: string; order: number; }; } interface To { [k: string]: { element: string; order: number; }; } interface TransitionReversed { [k: string]: { element: string; order: number; }; } interface Transition { [k: string]: { element: string; order: number; }; } /** * Each blink track will run independently, allowing you to have a character that blinks with multiple sets of eyes (or whatever it has). */ interface SpineBlinkTracks { [k: string]: { element: { track_name: TrackName; slots: AttachmentSlots; }; order: number; }; } interface AttachmentSlots { [k: string]: { element: { slot: SlotName; behaviors: Behaviors; }; order: number; }; } interface Behaviors { [k: string]: { element: Behavior; order: number; }; } interface Behavior { conditions?: Conditions3; visuals: Visuals; } interface Conditions3 { playing_animations?: PlayingAnimation; images?: OtherAttachmentImage; } /** * Animations that must be playing for this blink group to be active. If no animations are specified, the blink will always run. */ interface PlayingAnimation { track: AnimationTrack; animations: AnimationNames; } interface AnimationNames { [k: string]: { element: string; order: number; }; } /** * Check whether another attachment slot is set to a certain image name. */ interface OtherAttachmentImage { slot: Slot; images: Attachment; } /** * If any of these images are set in the slot, this condition is met. */ interface Attachment { [k: string]: { element: string; order: number; }; } interface Visuals { image?: Image; alpha?: Alpha1; } /** * Name of the attachment image to set in this slot. Set to '-1' to remove the attachment image from the slot. */ interface Image { active: Active2; inactive: Inactive; } /** * If set, will override the alpha of the attachment slot. */ interface Alpha1 { active: Active3; inactive: Inactive1; } /** * The visual information for how to display a type of character in the game world. */ interface CharacterSpecies { object: Object6; wip?: WIP; name_color: NameColor3; size: Hitbox2; sprite: WorldSprite22; uicon: UIIcon25; speech_sounds?: SpeechSounds; name: Name33; } /** * For when this name is displayed in a dialogue window. */ interface NameColor3 { g: Green47; r: Red47; b: Blue47; } interface Hitbox2 { height: Height12; width: Width12; } /** * Random sounds to play when the NPC is speaking (but has no emoji) */ interface SpeechSounds { [k: string]: { element: string; order: number; }; } interface Name33 { text: EnglishText90; skip?: Skip90; description?: TranslatorHelperText65; } interface BossGate { wip?: WIP; sprite: WorldSprite23; uicon: UIIcon26; description?: Description21; name: Name34; flippable?: Flippable7; door_open_sound?: DoorOpenSound1; hitbox: Hitbox; door_close_sound?: DoorCloseSound1; } interface Description21 { text: EnglishText91; skip?: Skip91; description?: TranslatorHelperText66; } interface Name34 { text: EnglishText92; skip?: Skip92; description?: TranslatorHelperText67; } interface Ability12 { targeting_range?: TargetingRangeInGridSpaces; preview_sprite?: PreviewSprite; postpones_death?: PostponesDeath; wip?: WIP; tooltip_description?: TooltipDescription1; usable_in_combat?: UsableInCombat; uicon?: UIIcon27; charges?: Charges1; effective_range?: EffectiveRange; buff_required?: BuffRequirement; telegraph_scale_modifiers?: TelegraphScaleModifiers; juke_charges_required?: JukeChargesRequired; usable_during_forced_movement?: UsableDuringForcedMovement; cooldown?: Cooldown; harmful_draw_override?: TelegraphDrawsAsHarmful; hotbar_number?: HotbarBuffNumber; cast_animations?: CastingAnimations; cast_duration: CastDurationSeconds; stops_other_casts?: StopsOtherCasts; allow_chained_attacks?: AllowChainedAttacks; start_cast_sound?: StartCastSound; channeling?: Channeling; action_groups?: ActionGroups8; single_targeting?: SingleTargeted; name: Name35; } /** * When targeting a location, how far (or close) this ability can target. */ interface TargetingRangeInGridSpaces { value0: Min46; value1: Max46; } /** * Describe what this ability does. This is useful for conveying information that the auto-generated tooltip can't provide. */ interface TooltipDescription1 { text: EnglishText93; skip?: Skip93; } /** * An ability that uses Charges must have at least one charge available for the ability to be cast. Each cast consumes a charge. */ interface Charges1 { recharge_seconds: RechargeSeconds; max_charges: MaxCharges; max_charges_modifier_stat?: MaxChargesModifierStat; recharge_speed_modifier?: RechargeSpeedStatModifiers; } interface RechargeSpeedStatModifiers { [k: string]: { element: Modifier1; order: number; }; } interface Modifier1 { type: ModifierType; stat: Stat1; } /** * This is used for AI (such as creatures) to determine how close or far away to get to use the ability. It is relative to the minimum and maximum ranges established in the ability's targeting and telegraph information. */ interface EffectiveRange { value0: Min47; value1: Max47; } /** * The caster must have this buff in order to cast this ability. */ interface BuffRequirement { buff: Buff4; stacks: Stacks55; } /** * If set, and this ability has telegraphs, the telegraphs can be grown or shrunk based on game conditions. */ interface TelegraphScaleModifiers { [k: string]: { element: { conditions: Conditions4; multiplier: Multiplier; require_all_conditions: RequireAllConditions3; }; order: number; }; } /** * What must be true for this scale modifier to exist. */ interface Conditions4 { [k: string]: { element: Condition4; order: number; }; } /** * If set, this description will appear on the Research Node to explain what it is unlocking. */ interface InsightTooltip3 { text: EnglishText94; skip?: Skip94; description?: TranslatorHelperText68; } interface Evaluation6 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; } interface Cooldown { cooldown_speed_modifier?: CooldownSpeedStatModifiers; always_incur_cooldown?: AlwaysIncurCooldown; seconds: CooldownSeconds; trigger_percentage: CooldownTriggerPercentage; } interface CooldownSpeedStatModifiers { [k: string]: { element: Modifier2; order: number; }; } interface Modifier2 { type: ModifierType1; stat: Stat2; } /** * If set, this ability will show this number on the hotbar instead of charges or ammunition. */ interface HotbarBuffNumber { buff: Buff5; multiplier: Multiplier1; number_type: Type3; } interface CastingAnimations { shake?: Shake; animations?: AnimationsList; } /** * The caster can shake for some amount during a portion (or all) of the ability cast. */ interface Shake { values: ShakeAmount; times: ShakeTime; } interface ShakeAmount { value0: Start; value1: End; } interface ShakeTime { value0: Start1; value1: End1; } interface AnimationsList { [k: string]: { element: { animation: AnimationName; }; order: number; }; } /** * If set, this ability will be channeled, causing the action groups to trigger repeatedly over time. */ interface Channeling { animation_style: AnimationStyle; ground_speed_limit?: PlayerTargetingGroundSpeedLimit; direction_change?: DirectionChangeDuringChannel; channel_start_sound?: ChannelStartSound; animation?: ChannelingAnimation; allow_retargeting?: PlayerReTargetingDuringChannel; channel_visuals?: ChannelVisuals; single_target_tracking?: SingleTargetTracking; constrain_range_while_channeling?: ConstrainRangeWhileChanneling; ticks: TickTimings; action_groups: ActionGroups; direction_jump?: DirectionJumpPerTick; } /** * These effects will be played during the channeling of the ability. */ interface ChannelVisuals { [k: string]: { element: ChannelEffect; order: number; }; } interface BeamColor { g?: Green48; r?: Red48; b?: Blue48; } /** * This ability can automatically adjust its targeting position to follow a single target, with certain constraints. If no constraints are set, it will constantly be locked onto the single target. */ interface SingleTargetTracking { ground_speed?: ConstantGroundSpeed; distance_jump?: DistanceJumpPerTickGridSpaces; } /** * You can have the ground target 'jump' towards the single target each tick. */ interface DistanceJumpPerTickGridSpaces { value0: Min48; value1: Max48; } /** * The ability will trigger at these times after the initial cast, triggering the action groups each time. */ interface TickTimes { [k: string]: { element?: TickTime; order?: number; }; } interface ActionGroups { [k: string]: { element: ActionGroup; order: number; }; } interface ActionGroup { targeting_range?: TargetingRangeInGridSpaces1; chance?: Chance6; actions?: Actions1; target_filter?: ActionGroupTargetFilter; telegraph?: Telegraph; name?: NameInternal8; always_hit_single_target?: AlwaysHitSingleTarget; targets_self: CastOnSelf; unlocked_by?: UnlockedBy63; } /** * When targeting a location, how far (or close) this action group can target. */ interface TargetingRangeInGridSpaces1 { value0: Min49; value1: Max49; } interface Actions1 { [k: string]: { element: Action1; order: number; }; } interface ActionProbability { chance: Chance7; } /** * How much this damage is boosted or suppressed by points spent in Insights. */ interface InsightModifiers { [k: string]: { element?: { badge_id: Insight14; value: ChangePerPoint33; tooltip_text?: InsightTooltipText1; }; order?: number; }; } /** * Explain how the insight changes the damage of this ability. This text will appear on the Insight's tooltip page. */ interface InsightTooltipText1 { text: EnglishText95; skip?: Skip95; description?: TranslatorHelperText69; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface TargetFilters1 { [k: string]: { element?: Filter51; order?: number; }; } interface Filter51 { exclude?: Exclude56; buffs?: Buffs107; combatants_only?: Combatants50; require_all_tags?: RequireAllTags50; datafield_evaluations?: DatafieldEvaluations52; scenes?: Scenes53; items?: Items66; sub_filters?: SubFilters25; } interface Buffs107 { require_all: RequireAll60; stacks?: Stacks56; buffs: Buffs108; } /** * The buffs found must match this stack requirement. */ interface Stacks56 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity86; } interface Buffs108 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations52 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes53 { [k: string]: { element?: string; order?: number; }; } interface Items66 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters25 { [k: string]: { element?: Filter52; order?: number; }; } interface Filter52 { exclude?: Exclude57; buffs?: Buffs109; combatants_only?: Combatants51; require_all_tags?: RequireAllTags51; datafield_evaluations?: DatafieldEvaluations53; scenes?: Scenes54; items?: Items67; } interface Buffs109 { require_all: RequireAll61; stacks?: Stacks57; buffs: Buffs110; } /** * The buffs found must match this stack requirement. */ interface Stacks57 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity87; } interface Buffs110 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations53 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes54 { [k: string]: { element?: string; order?: number; }; } interface Items67 { [k: string]: { element?: string; order?: number; }; } interface UnlockedBy35 { prerequisite: UnlockedBy36; unlock_text?: UnlockDescription5; } /** * If unlocked by research, this description will appear in the Research Node. */ interface UnlockDescription5 { text: EnglishText96; skip?: Skip96; description?: TranslatorHelperText70; } interface FollowupActions { [k: string]: { element?: FollowupAction; order?: number; }; } /** * A followup action will have the targets from the prior action passed into it. Those targets can be further constrained or narrowed down before enacting the followup actions. */ interface FollowupAction { actions: Actions1; target_constraint?: FollowupTargetConstraint; target_filter?: TargetFilters2; conditions?: Conditions5; require_all_conditions?: RequireAllConditions4; target_limit?: FollowupTargetLimit; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface TargetFilters2 { [k: string]: { element?: Filter53; order?: number; }; } interface Filter53 { exclude?: Exclude58; buffs?: Buffs111; combatants_only?: Combatants52; require_all_tags?: RequireAllTags52; datafield_evaluations?: DatafieldEvaluations54; scenes?: Scenes55; items?: Items68; sub_filters?: SubFilters26; } interface Buffs111 { require_all: RequireAll62; stacks?: Stacks58; buffs: Buffs112; } /** * The buffs found must match this stack requirement. */ interface Stacks58 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity88; } interface Buffs112 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations54 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes55 { [k: string]: { element?: string; order?: number; }; } interface Items68 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters26 { [k: string]: { element?: Filter54; order?: number; }; } interface Filter54 { exclude?: Exclude59; buffs?: Buffs113; combatants_only?: Combatants53; require_all_tags?: RequireAllTags53; datafield_evaluations?: DatafieldEvaluations55; scenes?: Scenes56; items?: Items69; } interface Buffs113 { require_all: RequireAll63; stacks?: Stacks59; buffs: Buffs114; } /** * The buffs found must match this stack requirement. */ interface Stacks59 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity89; } interface Buffs114 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations55 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes56 { [k: string]: { element?: string; order?: number; }; } interface Items69 { [k: string]: { element?: string; order?: number; }; } /** * These conditions must be true for this follow up action to occur. */ interface Conditions5 { [k: string]: { element?: Condition5; order?: number; }; } /** * Which abilities are we evaluating? */ interface Abilities5 { [k: string]: { element?: string; order?: number; }; } interface Evaluation7 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; } /** * The 'minutes since timestamp' value can be modified up or down based on an Insight. */ interface InsightModifier3 { amount?: ChangePerPoint34; insight?: Insight15; } /** * If set, this description will appear on the Research Node to explain what it is unlocking. */ interface InsightTooltip4 { text: EnglishText97; skip?: Skip97; description?: TranslatorHelperText71; } interface DistanceRequiredGridSpaces3 { value0?: Min50; value1?: Max50; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface Targets5 { [k: string]: { element?: Filter55; order?: number; }; } interface Filter55 { exclude?: Exclude60; buffs?: Buffs115; combatants_only?: Combatants54; require_all_tags?: RequireAllTags54; datafield_evaluations?: DatafieldEvaluations56; scenes?: Scenes57; items?: Items70; sub_filters?: SubFilters27; } interface Buffs115 { require_all: RequireAll64; stacks?: Stacks60; buffs: Buffs116; } /** * The buffs found must match this stack requirement. */ interface Stacks60 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity90; } interface Buffs116 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations56 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes57 { [k: string]: { element?: string; order?: number; }; } interface Items70 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters27 { [k: string]: { element?: Filter56; order?: number; }; } interface Filter56 { exclude?: Exclude61; buffs?: Buffs117; combatants_only?: Combatants55; require_all_tags?: RequireAllTags55; datafield_evaluations?: DatafieldEvaluations57; scenes?: Scenes58; items?: Items71; } interface Buffs117 { require_all: RequireAll65; stacks?: Stacks61; buffs: Buffs118; } /** * The buffs found must match this stack requirement. */ interface Stacks61 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity91; } interface Buffs118 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations57 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes58 { [k: string]: { element?: string; order?: number; }; } interface Items71 { [k: string]: { element?: string; order?: number; }; } interface NumberOfTargets6 { comparison?: Evaluation8; quantity?: Quantity92; } interface HealthEvaluation3 { hp_percentage?: number; comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; } interface Items72 { [k: string]: { element?: string; order?: number; }; } /** * The condition will be met if the player is wielding any of these items. */ interface Items73 { [k: string]: { element?: string; order?: number; }; } interface PiecesEquipped3 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: EquipmentSet6; value1?: number; } /** * If set, then targets other than yourself will be evaluated. */ interface NumberOfTargets7 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity93; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface BuffTargetFilter3 { [k: string]: { element?: Filter57; order?: number; }; } interface Filter57 { exclude?: Exclude62; buffs?: Buffs119; combatants_only?: Combatants56; require_all_tags?: RequireAllTags56; datafield_evaluations?: DatafieldEvaluations58; scenes?: Scenes59; items?: Items74; sub_filters?: SubFilters28; } interface Buffs119 { require_all: RequireAll68; stacks?: Stacks62; buffs: Buffs120; } /** * The buffs found must match this stack requirement. */ interface Stacks62 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity94; } interface Buffs120 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations58 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes59 { [k: string]: { element?: string; order?: number; }; } interface Items74 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters28 { [k: string]: { element?: Filter58; order?: number; }; } interface Filter58 { exclude?: Exclude63; buffs?: Buffs121; combatants_only?: Combatants57; require_all_tags?: RequireAllTags57; datafield_evaluations?: DatafieldEvaluations59; scenes?: Scenes60; items?: Items75; } interface Buffs121 { require_all: RequireAll69; stacks?: Stacks63; buffs: Buffs122; } /** * The buffs found must match this stack requirement. */ interface Stacks63 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity95; } interface Buffs122 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations59 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes60 { [k: string]: { element?: string; order?: number; }; } interface Items75 { [k: string]: { element?: string; order?: number; }; } /** * How close or far (in grid spaces) the entities must be to be considered for this condition. */ interface BuffTargetRange3 { value0?: Min51; value1?: Max51; } interface Stacks64 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity96; } interface Buffs123 { [k: string]: { element?: string; order?: number; }; } interface NumberSummoned3 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity97; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface SummonedEntitiesFilter3 { [k: string]: { element?: Filter59; order?: number; }; } interface Filter59 { exclude?: Exclude64; buffs?: Buffs124; combatants_only?: Combatants58; require_all_tags?: RequireAllTags58; datafield_evaluations?: DatafieldEvaluations60; scenes?: Scenes61; items?: Items76; sub_filters?: SubFilters29; } interface Buffs124 { require_all: RequireAll70; stacks?: Stacks65; buffs: Buffs125; } /** * The buffs found must match this stack requirement. */ interface Stacks65 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity98; } interface Buffs125 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations60 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes61 { [k: string]: { element?: string; order?: number; }; } interface Items76 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters29 { [k: string]: { element?: Filter60; order?: number; }; } interface Filter60 { exclude?: Exclude65; buffs?: Buffs126; combatants_only?: Combatants59; require_all_tags?: RequireAllTags59; datafield_evaluations?: DatafieldEvaluations61; scenes?: Scenes62; items?: Items77; } interface Buffs126 { require_all: RequireAll71; stacks?: Stacks66; buffs: Buffs127; } /** * The buffs found must match this stack requirement. */ interface Stacks66 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity99; } interface Buffs127 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations61 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes62 { [k: string]: { element?: string; order?: number; }; } interface Items77 { [k: string]: { element?: string; order?: number; }; } /** * The reactor must be in one of these areas for the reaction to occur. */ interface Areas6 { [k: string]: { element?: string; order?: number; }; } /** * The reactor must be in one of these weather conditions for the reaction to occur. */ interface Weather3 { [k: string]: { element?: string; order?: number; }; } /** * This can be used to deal damage to targets that normally would not be damageable. */ interface TargetWhitelist { [k: string]: { element?: Filter61; order?: number; }; } interface Filter61 { exclude?: Exclude66; buffs?: Buffs128; combatants_only?: Combatants60; require_all_tags?: RequireAllTags60; datafield_evaluations?: DatafieldEvaluations62; scenes?: Scenes63; items?: Items78; sub_filters?: SubFilters30; } interface Buffs128 { require_all: RequireAll72; stacks?: Stacks67; buffs: Buffs129; } /** * The buffs found must match this stack requirement. */ interface Stacks67 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity100; } interface Buffs129 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations62 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes63 { [k: string]: { element?: string; order?: number; }; } interface Items78 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters30 { [k: string]: { element?: Filter62; order?: number; }; } interface Filter62 { exclude?: Exclude67; buffs?: Buffs130; combatants_only?: Combatants61; require_all_tags?: RequireAllTags61; datafield_evaluations?: DatafieldEvaluations63; scenes?: Scenes64; items?: Items79; } interface Buffs130 { require_all: RequireAll73; stacks?: Stacks68; buffs: Buffs131; } /** * The buffs found must match this stack requirement. */ interface Stacks68 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity101; } interface Buffs131 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations63 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes64 { [k: string]: { element?: string; order?: number; }; } interface Items79 { [k: string]: { element?: string; order?: number; }; } /** * Deal more or less damage, depending on data fields. */ interface DatafieldMultipliers1 { [k: string]: { element?: { datafield_owner?: DatafieldOwner2; datafield_id?: DataField1; }; order?: number; }; } interface ActionProbability1 { chance: Chance8; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface TargetFilters3 { [k: string]: { element?: Filter63; order?: number; }; } interface Filter63 { exclude?: Exclude68; buffs?: Buffs132; combatants_only?: Combatants62; require_all_tags?: RequireAllTags62; datafield_evaluations?: DatafieldEvaluations64; scenes?: Scenes65; items?: Items80; sub_filters?: SubFilters31; } interface Buffs132 { require_all: RequireAll74; stacks?: Stacks69; buffs: Buffs133; } /** * The buffs found must match this stack requirement. */ interface Stacks69 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity102; } interface Buffs133 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations64 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes65 { [k: string]: { element?: string; order?: number; }; } interface Items80 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters31 { [k: string]: { element?: Filter64; order?: number; }; } interface Filter64 { exclude?: Exclude69; buffs?: Buffs134; combatants_only?: Combatants63; require_all_tags?: RequireAllTags63; datafield_evaluations?: DatafieldEvaluations65; scenes?: Scenes66; items?: Items81; } interface Buffs134 { require_all: RequireAll75; stacks?: Stacks70; buffs: Buffs135; } /** * The buffs found must match this stack requirement. */ interface Stacks70 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity103; } interface Buffs135 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations65 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes66 { [k: string]: { element?: string; order?: number; }; } interface Items81 { [k: string]: { element?: string; order?: number; }; } interface UnlockedBy37 { prerequisite: UnlockedBy38; unlock_text?: UnlockDescription6; } /** * If unlocked by research, this description will appear in the Research Node. */ interface UnlockDescription6 { text: EnglishText98; skip?: Skip98; description?: TranslatorHelperText72; } /** * A stream of particles that will emit from the caster. */ interface ParticleStream { stream_interval: StreamEmitIntervalSeconds; particles: Particles; } interface Particles { [k: string]: { element: ParticleStream1; order: number; }; } interface ParticleStream1 { burst_particle: Particle; bursts: ParticleStreams; } interface ParticleStreams { [k: string]: { element: Stream; order: number; }; } interface Stream { spawn_at_ground?: SpawnOnGround5; location: Source7; use_aim_direction?: RelativeDirection; num_particles: NumberOfParticles3; direction?: BurstDirection1; scaled_radius?: ScaledSpawnRadius1; outward_blast: BlastOutward1; spawn_radius: SpawnRadiusPixels1; radius_as_grid?: SpawnRadiusAsGrid1; z_offset?: ZOffset11; y_offset?: YOffset12; perspective: Perspective1; } interface NumberOfParticles3 { value0: Min52; value1: Max52; } interface BurstDirection1 { value0: Min53; value1: Max53; } /** * How far from the source the particles will spawn. */ interface SpawnRadiusPixels1 { value0: Min54; value1: Max54; } /** * If a movement is successful, these sounds will play. */ interface MovementSounds { [k: string]: { element?: { chance?: ChanceOfPlaying; sound?: Sound9; }; order?: number; }; } /** * The distance this ability will attempt to move the target. */ interface MovementDistanceGridSpaces { value0?: Min55; value1?: Max55; } /** * One of these animations will be chosen to play during the movement. */ interface MovementAnimations { animations?: AnimationsList1; } interface AnimationsList1 { [k: string]: { element?: { animation?: AnimationName1; looping?: Looping1; }; order?: number; }; } interface UnlockedBy39 { prerequisite: UnlockedBy40; unlock_text?: UnlockDescription7; } /** * If unlocked by research, this description will appear in the Research Node. */ interface UnlockDescription7 { text: EnglishText99; skip?: Skip99; description?: TranslatorHelperText73; } /** * If set, the mover will be invulnerable while moving in these gamemodes. */ interface InvulnerableInGameModes { [k: string]: { element?: { value?: Invulnerable1; key?: GameMode; }; order?: number; }; } /** * Creates a visual rope or chain style connection between the source and destination. */ interface VisualTether { end_sprite?: EndSprite; end_sprite_scale?: EndSpriteScale; sprite: Sprite6; inverted?: Inverted; sprite_scale?: SpriteScale; } interface ActionGroups1 { [k: string]: { element: ActionGroup; order: number; }; } interface ActionProbability2 { chance: Chance9; } interface MoveDistanceStatModifiers { [k: string]: { element?: Modifier3; order?: number; }; } interface Modifier3 { type?: ModifierType2; stat?: Stat3; } interface MoveSpeedStatModifiers { [k: string]: { element?: Modifier4; order?: number; }; } interface Modifier4 { type?: ModifierType3; stat?: Stat4; } interface UnlockedBy41 { prerequisite: UnlockedBy42; unlock_text?: UnlockDescription8; } /** * If unlocked by research, this description will appear in the Research Node. */ interface UnlockDescription8 { text: EnglishText100; skip?: Skip100; description?: TranslatorHelperText74; } interface ActionProbability3 { chance: Chance10; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface TargetFilters4 { [k: string]: { element?: Filter65; order?: number; }; } interface Filter65 { exclude?: Exclude70; buffs?: Buffs136; combatants_only?: Combatants64; require_all_tags?: RequireAllTags64; datafield_evaluations?: DatafieldEvaluations66; scenes?: Scenes67; items?: Items82; sub_filters?: SubFilters32; } interface Buffs136 { require_all: RequireAll76; stacks?: Stacks71; buffs: Buffs137; } /** * The buffs found must match this stack requirement. */ interface Stacks71 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity104; } interface Buffs137 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations66 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes67 { [k: string]: { element?: string; order?: number; }; } interface Items82 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters32 { [k: string]: { element?: Filter66; order?: number; }; } interface Filter66 { exclude?: Exclude71; buffs?: Buffs138; combatants_only?: Combatants65; require_all_tags?: RequireAllTags65; datafield_evaluations?: DatafieldEvaluations67; scenes?: Scenes68; items?: Items83; } interface Buffs138 { require_all: RequireAll77; stacks?: Stacks72; buffs: Buffs139; } /** * The buffs found must match this stack requirement. */ interface Stacks72 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity105; } interface Buffs139 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations67 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes68 { [k: string]: { element?: string; order?: number; }; } interface Items83 { [k: string]: { element?: string; order?: number; }; } interface UnlockedBy43 { prerequisite: UnlockedBy44; unlock_text?: UnlockDescription9; } /** * If unlocked by research, this description will appear in the Research Node. */ interface UnlockDescription9 { text: EnglishText101; skip?: Skip101; description?: TranslatorHelperText75; } interface UnlockedBy45 { prerequisite: UnlockedBy46; unlock_text?: UnlockDescription10; } /** * If unlocked by research, this description will appear in the Research Node. */ interface UnlockDescription10 { text: EnglishText102; skip?: Skip102; description?: TranslatorHelperText76; } interface Color5 { g?: Green49; r?: Red49; b?: Blue49; } interface DecalDurationSeconds2 { value0?: Min56; value1?: Max56; } /** * The decal will choose a random scale between these numbers. */ interface DecalScale2 { value0?: Min57; value1?: Max57; } /** * Set this to spawn the explosion a random delay. */ interface RandomDelaySeconds2 { value0?: Min58; value1?: Max58; } /** * These are the particles that will shoot out from the explosion. */ interface DebrisParticles4 { [k: string]: { element?: DebrisParticles5; order?: number; }; } interface DebrisParticles5 { num_particles?: NumberOfParticles4; particle_scale?: ParticleScale2; sprite?: Sprite7; } interface BaseColor2 { g?: Green50; r?: Red50; b?: Blue50; } interface HighlightColor2 { g?: Green51; r?: Red51; b?: Blue51; } interface ExplosionScale2 { value0?: Min59; value1?: Max59; } /** * Set this to spawn the explosion a random distance away. */ interface RandomDistanceGridSpaces2 { value0?: Min60; value1?: Max60; } interface SmokeColor2 { g?: Green52; r?: Red52; b?: Blue52; } /** * The starting radius of the smoke burst. */ interface RadiusPixels2 { value0?: Min61; value1?: Max61; } interface Bursts1 { [k: string]: { element?: Burst1; order?: number; }; } interface Burst1 { spawn_at_ground?: SpawnOnGround7; location: Source9; use_aim_direction?: UseAimDirection1; num_particles: NumberOfParticles5; direction?: BurstDirection2; scaled_radius?: ScaledSpawnRadius2; outward_blast: BlastOutward2; spawn_radius: SpawnRadiusPixels2; radius_as_grid?: SpawnRadiusAsGrid2; z_offset?: ZOffset14; y_offset?: YOffset15; perspective: Perspective2; } interface NumberOfParticles5 { value0?: Min62; value1?: Max62; } interface BurstDirection2 { value0?: Min63; value1?: Max63; } /** * How far from the source the particles will spawn. */ interface SpawnRadiusPixels2 { value0?: Min64; value1?: Max64; } interface DistanceGrid1 { value0?: Min65; value1?: Max65; } interface Color6 { g?: Green53; r?: Red53; b?: Blue53; } interface NumberOfBolts1 { value0?: Min66; value1?: Max66; } interface SkybeamColor2 { g?: Green54; r?: Red54; b?: Blue54; } interface Color13 { g?: Green55; r?: Red55; b?: Blue55; } interface Color23 { g?: Green56; r?: Red56; b?: Blue56; } /** * The ring will spawn at a random size between these two radii. */ interface GridRadius2 { value0?: Min67; value1?: Max67; } interface LightningColor2 { g?: Green57; r?: Red57; b?: Blue57; } interface ActionProbability4 { chance: Chance11; } interface ItemsToLose1 { [k: string]: { element?: { quantity?: Quantity106; item_id?: Item16; }; order?: number; }; } interface ActionProbability5 { chance: Chance12; } interface ItemsToGain3 { [k: string]: { element?: { quantity?: Quantity107; item_id?: Item17; }; order?: number; }; } interface Quantity107 { value0?: Min68; value1?: Max68; } interface UnlockedBy47 { prerequisite: UnlockedBy48; unlock_text?: UnlockDescription11; } /** * If unlocked by research, this description will appear in the Research Node. */ interface UnlockDescription11 { text: EnglishText103; skip?: Skip103; description?: TranslatorHelperText77; } /** * If set, only targets that match this filter will be picked up. */ interface PickupTargetFilter { [k: string]: { element?: Filter67; order?: number; }; } interface Filter67 { exclude?: Exclude72; buffs?: Buffs140; combatants_only?: Combatants66; require_all_tags?: RequireAllTags66; datafield_evaluations?: DatafieldEvaluations68; scenes?: Scenes69; items?: Items84; sub_filters?: SubFilters33; } interface Buffs140 { require_all: RequireAll78; stacks?: Stacks73; buffs: Buffs141; } /** * The buffs found must match this stack requirement. */ interface Stacks73 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity108; } interface Buffs141 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations68 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes69 { [k: string]: { element?: string; order?: number; }; } interface Items84 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters33 { [k: string]: { element?: Filter68; order?: number; }; } interface Filter68 { exclude?: Exclude73; buffs?: Buffs142; combatants_only?: Combatants67; require_all_tags?: RequireAllTags67; datafield_evaluations?: DatafieldEvaluations69; scenes?: Scenes70; items?: Items85; } interface Buffs142 { require_all: RequireAll79; stacks?: Stacks74; buffs: Buffs143; } /** * The buffs found must match this stack requirement. */ interface Stacks74 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity109; } interface Buffs143 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations69 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes70 { [k: string]: { element?: string; order?: number; }; } interface Items85 { [k: string]: { element?: string; order?: number; }; } interface UnlockedBy49 { prerequisite: UnlockedBy50; unlock_text?: UnlockDescription12; } /** * If unlocked by research, this description will appear in the Research Node. */ interface UnlockDescription12 { text: EnglishText104; skip?: Skip104; description?: TranslatorHelperText78; } interface ActionProbability6 { chance: Chance13; } interface BuffsToApply { [k: string]: { element?: { stacks?: Stacks75; stacks_multiply_by_targets?: MultiplyStacksByTargets; absorb_percentage?: AbsorbPercentage1; healing_percentage?: HealingPercentage2; buff: string; buff_target: BuffTarget2; damage_modifier?: DamageModifier1; }; order?: number; }; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface TargetFilters5 { [k: string]: { element?: Filter69; order?: number; }; } interface Filter69 { exclude?: Exclude74; buffs?: Buffs144; combatants_only?: Combatants68; require_all_tags?: RequireAllTags68; datafield_evaluations?: DatafieldEvaluations70; scenes?: Scenes71; items?: Items86; sub_filters?: SubFilters34; } interface Buffs144 { require_all: RequireAll80; stacks?: Stacks76; buffs: Buffs145; } /** * The buffs found must match this stack requirement. */ interface Stacks76 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity110; } interface Buffs145 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations70 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes71 { [k: string]: { element?: string; order?: number; }; } interface Items86 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters34 { [k: string]: { element?: Filter70; order?: number; }; } interface Filter70 { exclude?: Exclude75; buffs?: Buffs146; combatants_only?: Combatants69; require_all_tags?: RequireAllTags69; datafield_evaluations?: DatafieldEvaluations71; scenes?: Scenes72; items?: Items87; } interface Buffs146 { require_all: RequireAll81; stacks?: Stacks77; buffs: Buffs147; } /** * The buffs found must match this stack requirement. */ interface Stacks77 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity111; } interface Buffs147 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations71 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes72 { [k: string]: { element?: string; order?: number; }; } interface Items87 { [k: string]: { element?: string; order?: number; }; } interface UnlockedBy51 { prerequisite: UnlockedBy52; unlock_text?: UnlockDescription13; } /** * If unlocked by research, this description will appear in the Research Node. */ interface UnlockDescription13 { text: EnglishText105; skip?: Skip105; description?: TranslatorHelperText79; } /** * If set, only targets that match this filter will have their datafields changed. */ interface DatafieldTargetFilter { [k: string]: { element?: Filter71; order?: number; }; } interface Filter71 { exclude?: Exclude76; buffs?: Buffs148; combatants_only?: Combatants70; require_all_tags?: RequireAllTags70; datafield_evaluations?: DatafieldEvaluations72; scenes?: Scenes73; items?: Items88; sub_filters?: SubFilters35; } interface Buffs148 { require_all: RequireAll82; stacks?: Stacks78; buffs: Buffs149; } /** * The buffs found must match this stack requirement. */ interface Stacks78 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity112; } interface Buffs149 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations72 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes73 { [k: string]: { element?: string; order?: number; }; } interface Items88 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters35 { [k: string]: { element?: Filter72; order?: number; }; } interface Filter72 { exclude?: Exclude77; buffs?: Buffs150; combatants_only?: Combatants71; require_all_tags?: RequireAllTags71; datafield_evaluations?: DatafieldEvaluations73; scenes?: Scenes74; items?: Items89; } interface Buffs150 { require_all: RequireAll83; stacks?: Stacks79; buffs: Buffs151; } /** * The buffs found must match this stack requirement. */ interface Stacks79 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity113; } interface Buffs151 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations73 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes74 { [k: string]: { element?: string; order?: number; }; } interface Items89 { [k: string]: { element?: string; order?: number; }; } interface UnlockedBy53 { prerequisite: UnlockedBy54; unlock_text?: UnlockDescription14; } /** * If unlocked by research, this description will appear in the Research Node. */ interface UnlockDescription14 { text: EnglishText106; skip?: Skip106; description?: TranslatorHelperText80; } /** * The new entity will spawn a random range away from the chosen location, up to this number of grid spaces. */ interface SpawnDistance1 { value0?: Min69; value1?: Max69; } interface UnlockedBy55 { prerequisite: UnlockedBy56; unlock_text?: UnlockDescription15; } /** * If unlocked by research, this description will appear in the Research Node. */ interface UnlockDescription15 { text: EnglishText107; skip?: Skip107; description?: TranslatorHelperText81; } interface ActionGroups2 { [k: string]: { element: ActionGroup; order: number; }; } /** * This determines how long the projectile will take to reach its destination. Its vertical height and horizontal move speed will adjust to ensure it is airborne for this amount of time. */ interface FlightTimeSeconds { value0?: Min70; value1?: Max70; } interface LobMultipleProjectiles { [k: string]: { element?: ProjectileBatch; order?: number; }; } interface ProjectileBatch { chance?: BatchChance; direction_offset?: BatchAimOffset; direction_from_target: DirectionFromTarget; distance_from_target: DistanceFromTargetGridSpaces; conditions?: Conditions6; quantity: Quantity124; require_all_conditions?: RequireAllConditions5; } interface DirectionFromTarget { value0?: Min71; value1?: Max71; } interface DistanceFromTargetGridSpaces { value0?: Min72; value1?: Max72; } interface Conditions6 { [k: string]: { element?: Condition6; order?: number; }; } /** * Which abilities are we evaluating? */ interface Abilities6 { [k: string]: { element?: string; order?: number; }; } interface Evaluation9 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; } /** * The 'minutes since timestamp' value can be modified up or down based on an Insight. */ interface InsightModifier4 { amount?: ChangePerPoint35; insight?: Insight17; } /** * If set, this description will appear on the Research Node to explain what it is unlocking. */ interface InsightTooltip5 { text: EnglishText108; skip?: Skip108; description?: TranslatorHelperText82; } interface DistanceRequiredGridSpaces4 { value0?: Min73; value1?: Max73; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface Targets6 { [k: string]: { element?: Filter73; order?: number; }; } interface Filter73 { exclude?: Exclude78; buffs?: Buffs152; combatants_only?: Combatants72; require_all_tags?: RequireAllTags72; datafield_evaluations?: DatafieldEvaluations74; scenes?: Scenes75; items?: Items90; sub_filters?: SubFilters36; } interface Buffs152 { require_all: RequireAll84; stacks?: Stacks80; buffs: Buffs153; } /** * The buffs found must match this stack requirement. */ interface Stacks80 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity114; } interface Buffs153 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations74 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes75 { [k: string]: { element?: string; order?: number; }; } interface Items90 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters36 { [k: string]: { element?: Filter74; order?: number; }; } interface Filter74 { exclude?: Exclude79; buffs?: Buffs154; combatants_only?: Combatants73; require_all_tags?: RequireAllTags73; datafield_evaluations?: DatafieldEvaluations75; scenes?: Scenes76; items?: Items91; } interface Buffs154 { require_all: RequireAll85; stacks?: Stacks81; buffs: Buffs155; } /** * The buffs found must match this stack requirement. */ interface Stacks81 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity115; } interface Buffs155 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations75 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes76 { [k: string]: { element?: string; order?: number; }; } interface Items91 { [k: string]: { element?: string; order?: number; }; } interface NumberOfTargets8 { comparison?: Evaluation10; quantity?: Quantity116; } interface HealthEvaluation4 { hp_percentage?: number; comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; } interface Items92 { [k: string]: { element?: string; order?: number; }; } /** * The condition will be met if the player is wielding any of these items. */ interface Items93 { [k: string]: { element?: string; order?: number; }; } interface PiecesEquipped4 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: EquipmentSet7; value1?: number; } /** * If set, then targets other than yourself will be evaluated. */ interface NumberOfTargets9 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity117; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface BuffTargetFilter4 { [k: string]: { element?: Filter75; order?: number; }; } interface Filter75 { exclude?: Exclude80; buffs?: Buffs156; combatants_only?: Combatants74; require_all_tags?: RequireAllTags74; datafield_evaluations?: DatafieldEvaluations76; scenes?: Scenes77; items?: Items94; sub_filters?: SubFilters37; } interface Buffs156 { require_all: RequireAll88; stacks?: Stacks82; buffs: Buffs157; } /** * The buffs found must match this stack requirement. */ interface Stacks82 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity118; } interface Buffs157 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations76 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes77 { [k: string]: { element?: string; order?: number; }; } interface Items94 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters37 { [k: string]: { element?: Filter76; order?: number; }; } interface Filter76 { exclude?: Exclude81; buffs?: Buffs158; combatants_only?: Combatants75; require_all_tags?: RequireAllTags75; datafield_evaluations?: DatafieldEvaluations77; scenes?: Scenes78; items?: Items95; } interface Buffs158 { require_all: RequireAll89; stacks?: Stacks83; buffs: Buffs159; } /** * The buffs found must match this stack requirement. */ interface Stacks83 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity119; } interface Buffs159 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations77 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes78 { [k: string]: { element?: string; order?: number; }; } interface Items95 { [k: string]: { element?: string; order?: number; }; } /** * How close or far (in grid spaces) the entities must be to be considered for this condition. */ interface BuffTargetRange4 { value0?: Min74; value1?: Max74; } interface Stacks84 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity120; } interface Buffs160 { [k: string]: { element?: string; order?: number; }; } interface NumberSummoned4 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity121; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface SummonedEntitiesFilter4 { [k: string]: { element?: Filter77; order?: number; }; } interface Filter77 { exclude?: Exclude82; buffs?: Buffs161; combatants_only?: Combatants76; require_all_tags?: RequireAllTags76; datafield_evaluations?: DatafieldEvaluations78; scenes?: Scenes79; items?: Items96; sub_filters?: SubFilters38; } interface Buffs161 { require_all: RequireAll90; stacks?: Stacks85; buffs: Buffs162; } /** * The buffs found must match this stack requirement. */ interface Stacks85 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity122; } interface Buffs162 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations78 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes79 { [k: string]: { element?: string; order?: number; }; } interface Items96 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters38 { [k: string]: { element?: Filter78; order?: number; }; } interface Filter78 { exclude?: Exclude83; buffs?: Buffs163; combatants_only?: Combatants77; require_all_tags?: RequireAllTags77; datafield_evaluations?: DatafieldEvaluations79; scenes?: Scenes80; items?: Items97; } interface Buffs163 { require_all: RequireAll91; stacks?: Stacks86; buffs: Buffs164; } /** * The buffs found must match this stack requirement. */ interface Stacks86 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity123; } interface Buffs164 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations79 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes80 { [k: string]: { element?: string; order?: number; }; } interface Items97 { [k: string]: { element?: string; order?: number; }; } /** * The reactor must be in one of these areas for the reaction to occur. */ interface Areas7 { [k: string]: { element?: string; order?: number; }; } /** * The reactor must be in one of these weather conditions for the reaction to occur. */ interface Weather4 { [k: string]: { element?: string; order?: number; }; } /** * How many projectiles to fire in this batch. */ interface Quantity124 { value0?: Min75; value1?: Max75; } /** * You can set up unique batches of bullets to fire in different circumstances. Each batch can have its own chance to fire, direction offset, and quantity. */ interface ProjectileBatches { [k: string]: { element?: ProjectileBatch1; order?: number; }; } interface ProjectileBatch1 { chance: BatchChance1; direction: DirectionOffset; conditions?: Conditions7; quantity: Quantity135; require_all_conditions?: RequireAllConditions6; } /** * This will be added to the baseline aim direction. */ interface DirectionOffset { value0?: Min76; value1?: Max76; } interface Conditions7 { [k: string]: { element?: Condition7; order?: number; }; } /** * Which abilities are we evaluating? */ interface Abilities7 { [k: string]: { element?: string; order?: number; }; } interface Evaluation11 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; } /** * The 'minutes since timestamp' value can be modified up or down based on an Insight. */ interface InsightModifier5 { amount?: ChangePerPoint36; insight?: Insight19; } /** * If set, this description will appear on the Research Node to explain what it is unlocking. */ interface InsightTooltip6 { text: EnglishText109; skip?: Skip109; description?: TranslatorHelperText83; } interface DistanceRequiredGridSpaces5 { value0?: Min77; value1?: Max77; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface Targets7 { [k: string]: { element?: Filter79; order?: number; }; } interface Filter79 { exclude?: Exclude84; buffs?: Buffs165; combatants_only?: Combatants78; require_all_tags?: RequireAllTags78; datafield_evaluations?: DatafieldEvaluations80; scenes?: Scenes81; items?: Items98; sub_filters?: SubFilters39; } interface Buffs165 { require_all: RequireAll92; stacks?: Stacks87; buffs: Buffs166; } /** * The buffs found must match this stack requirement. */ interface Stacks87 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity125; } interface Buffs166 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations80 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes81 { [k: string]: { element?: string; order?: number; }; } interface Items98 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters39 { [k: string]: { element?: Filter80; order?: number; }; } interface Filter80 { exclude?: Exclude85; buffs?: Buffs167; combatants_only?: Combatants79; require_all_tags?: RequireAllTags79; datafield_evaluations?: DatafieldEvaluations81; scenes?: Scenes82; items?: Items99; } interface Buffs167 { require_all: RequireAll93; stacks?: Stacks88; buffs: Buffs168; } /** * The buffs found must match this stack requirement. */ interface Stacks88 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity126; } interface Buffs168 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations81 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes82 { [k: string]: { element?: string; order?: number; }; } interface Items99 { [k: string]: { element?: string; order?: number; }; } interface NumberOfTargets10 { comparison?: Evaluation12; quantity?: Quantity127; } interface HealthEvaluation5 { hp_percentage?: number; comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; } interface Items100 { [k: string]: { element?: string; order?: number; }; } /** * The condition will be met if the player is wielding any of these items. */ interface Items101 { [k: string]: { element?: string; order?: number; }; } interface PiecesEquipped5 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: EquipmentSet8; value1?: number; } /** * If set, then targets other than yourself will be evaluated. */ interface NumberOfTargets11 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity128; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface BuffTargetFilter5 { [k: string]: { element?: Filter81; order?: number; }; } interface Filter81 { exclude?: Exclude86; buffs?: Buffs169; combatants_only?: Combatants80; require_all_tags?: RequireAllTags80; datafield_evaluations?: DatafieldEvaluations82; scenes?: Scenes83; items?: Items102; sub_filters?: SubFilters40; } interface Buffs169 { require_all: RequireAll96; stacks?: Stacks89; buffs: Buffs170; } /** * The buffs found must match this stack requirement. */ interface Stacks89 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity129; } interface Buffs170 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations82 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes83 { [k: string]: { element?: string; order?: number; }; } interface Items102 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters40 { [k: string]: { element?: Filter82; order?: number; }; } interface Filter82 { exclude?: Exclude87; buffs?: Buffs171; combatants_only?: Combatants81; require_all_tags?: RequireAllTags81; datafield_evaluations?: DatafieldEvaluations83; scenes?: Scenes84; items?: Items103; } interface Buffs171 { require_all: RequireAll97; stacks?: Stacks90; buffs: Buffs172; } /** * The buffs found must match this stack requirement. */ interface Stacks90 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity130; } interface Buffs172 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations83 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes84 { [k: string]: { element?: string; order?: number; }; } interface Items103 { [k: string]: { element?: string; order?: number; }; } /** * How close or far (in grid spaces) the entities must be to be considered for this condition. */ interface BuffTargetRange5 { value0?: Min78; value1?: Max78; } interface Stacks91 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity131; } interface Buffs173 { [k: string]: { element?: string; order?: number; }; } interface NumberSummoned5 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity132; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface SummonedEntitiesFilter5 { [k: string]: { element?: Filter83; order?: number; }; } interface Filter83 { exclude?: Exclude88; buffs?: Buffs174; combatants_only?: Combatants82; require_all_tags?: RequireAllTags82; datafield_evaluations?: DatafieldEvaluations84; scenes?: Scenes85; items?: Items104; sub_filters?: SubFilters41; } interface Buffs174 { require_all: RequireAll98; stacks?: Stacks92; buffs: Buffs175; } /** * The buffs found must match this stack requirement. */ interface Stacks92 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity133; } interface Buffs175 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations84 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes85 { [k: string]: { element?: string; order?: number; }; } interface Items104 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters41 { [k: string]: { element?: Filter84; order?: number; }; } interface Filter84 { exclude?: Exclude89; buffs?: Buffs176; combatants_only?: Combatants83; require_all_tags?: RequireAllTags83; datafield_evaluations?: DatafieldEvaluations85; scenes?: Scenes86; items?: Items105; } interface Buffs176 { require_all: RequireAll99; stacks?: Stacks93; buffs: Buffs177; } /** * The buffs found must match this stack requirement. */ interface Stacks93 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity134; } interface Buffs177 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations85 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes86 { [k: string]: { element?: string; order?: number; }; } interface Items105 { [k: string]: { element?: string; order?: number; }; } /** * The reactor must be in one of these areas for the reaction to occur. */ interface Areas8 { [k: string]: { element?: string; order?: number; }; } /** * The reactor must be in one of these weather conditions for the reaction to occur. */ interface Weather5 { [k: string]: { element?: string; order?: number; }; } /** * How many projectiles to fire in this batch. */ interface Quantity135 { value0?: Min79; value1?: Max79; } interface ZBehavior { z_target?: ZTarget1; z_time?: ZTime; z_style?: ZStyle; } interface ActionGroups3 { [k: string]: { element: ActionGroup; order: number; }; } /** * The bullet will go through solid entities that match this filter. It can still damage them, but it won't break. */ interface PassThroughFilter { [k: string]: { element?: Filter85; order?: number; }; } interface Filter85 { exclude?: Exclude90; buffs?: Buffs178; combatants_only?: Combatants84; require_all_tags?: RequireAllTags84; datafield_evaluations?: DatafieldEvaluations86; scenes?: Scenes87; items?: Items106; sub_filters?: SubFilters42; } interface Buffs178 { require_all: RequireAll100; stacks?: Stacks94; buffs: Buffs179; } /** * The buffs found must match this stack requirement. */ interface Stacks94 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity136; } interface Buffs179 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations86 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes87 { [k: string]: { element?: string; order?: number; }; } interface Items106 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters42 { [k: string]: { element?: Filter86; order?: number; }; } interface Filter86 { exclude?: Exclude91; buffs?: Buffs180; combatants_only?: Combatants85; require_all_tags?: RequireAllTags85; datafield_evaluations?: DatafieldEvaluations87; scenes?: Scenes88; items?: Items107; } interface Buffs180 { require_all: RequireAll101; stacks?: Stacks95; buffs: Buffs181; } /** * The buffs found must match this stack requirement. */ interface Stacks95 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity137; } interface Buffs181 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations87 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes88 { [k: string]: { element?: string; order?: number; }; } interface Items107 { [k: string]: { element?: string; order?: number; }; } interface LifetimeSeconds { value0?: Min80; value1?: Max80; } interface SpeedPixelsSec { value0?: Min81; value1?: Max81; } interface ActionGroups4 { [k: string]: { element: ActionGroup; order: number; }; } /** * If set, the bullet will seek out targets that match these filters and try to hit them. */ interface HomingBehavior { turn_speed: TurnSpeedDegreesSec; allow_self_homing?: AllowSelfHoming; homing_seconds_start?: HomingStartSeconds; homing_direction_uses_origin?: HomingDirectionFromOrigin; homing_direction_uses_base_cast?: HomingDirectionUsesBaseCast; targets: TargetsToHomeToward; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface TargetsToHomeToward { [k: string]: { element?: Filter87; order?: number; }; } interface Filter87 { exclude?: Exclude92; buffs?: Buffs182; combatants_only?: Combatants86; require_all_tags?: RequireAllTags86; datafield_evaluations?: DatafieldEvaluations88; scenes?: Scenes89; items?: Items108; sub_filters?: SubFilters43; } interface Buffs182 { require_all: RequireAll102; stacks?: Stacks96; buffs: Buffs183; } /** * The buffs found must match this stack requirement. */ interface Stacks96 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity138; } interface Buffs183 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations88 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes89 { [k: string]: { element?: string; order?: number; }; } interface Items108 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters43 { [k: string]: { element?: Filter88; order?: number; }; } interface Filter88 { exclude?: Exclude93; buffs?: Buffs184; combatants_only?: Combatants87; require_all_tags?: RequireAllTags87; datafield_evaluations?: DatafieldEvaluations89; scenes?: Scenes90; items?: Items109; } interface Buffs184 { require_all: RequireAll103; stacks?: Stacks97; buffs: Buffs185; } /** * The buffs found must match this stack requirement. */ interface Stacks97 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity139; } interface Buffs185 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations89 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes90 { [k: string]: { element?: string; order?: number; }; } interface Items109 { [k: string]: { element?: string; order?: number; }; } interface ActionProbability7 { chance: Chance14; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface TargetFilters6 { [k: string]: { element?: Filter89; order?: number; }; } interface Filter89 { exclude?: Exclude94; buffs?: Buffs186; combatants_only?: Combatants88; require_all_tags?: RequireAllTags88; datafield_evaluations?: DatafieldEvaluations90; scenes?: Scenes91; items?: Items110; sub_filters?: SubFilters44; } interface Buffs186 { require_all: RequireAll104; stacks?: Stacks99; buffs: Buffs187; } /** * The buffs found must match this stack requirement. */ interface Stacks99 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity140; } interface Buffs187 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations90 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes91 { [k: string]: { element?: string; order?: number; }; } interface Items110 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters44 { [k: string]: { element?: Filter90; order?: number; }; } interface Filter90 { exclude?: Exclude95; buffs?: Buffs188; combatants_only?: Combatants89; require_all_tags?: RequireAllTags89; datafield_evaluations?: DatafieldEvaluations91; scenes?: Scenes92; items?: Items111; } interface Buffs188 { require_all: RequireAll105; stacks?: Stacks100; buffs: Buffs189; } /** * The buffs found must match this stack requirement. */ interface Stacks100 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity141; } interface Buffs189 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations91 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes92 { [k: string]: { element?: string; order?: number; }; } interface Items111 { [k: string]: { element?: string; order?: number; }; } interface BuffsToRemove { [k: string]: { element?: Buff6; order?: number; }; } interface UnlockedBy57 { prerequisite: UnlockedBy58; unlock_text?: UnlockDescription16; } /** * If unlocked by research, this description will appear in the Research Node. */ interface UnlockDescription16 { text: EnglishText110; skip?: Skip110; description?: TranslatorHelperText84; } interface ActionProbability8 { chance: Chance15; } interface LeapStartSounds { [k: string]: { element?: { chance?: ChanceOfPlaying1; sound?: Sound15; }; order?: number; }; } interface LeapLandingSounds { [k: string]: { element?: { chance?: ChanceOfPlaying2; sound?: Sound16; }; order?: number; }; } interface ActionGroups5 { [k: string]: { element: ActionGroup; order: number; }; } /** * One of these animations will be chosen to play during the movement. */ interface MovementAnimations1 { animations?: AnimationsList2; } interface AnimationsList2 { [k: string]: { element?: { animation?: AnimationName2; looping?: Looping2; }; order?: number; }; } interface ActionGroups6 { [k: string]: { element: ActionGroup; order: number; }; } interface ActionProbability9 { chance: Chance16; } interface UnlockedBy59 { prerequisite: UnlockedBy60; unlock_text?: UnlockDescription17; } /** * If unlocked by research, this description will appear in the Research Node. */ interface UnlockDescription17 { text: EnglishText111; skip?: Skip111; description?: TranslatorHelperText85; } /** * If set, only targets that match this filter will be knocked back. */ interface KnockbackTargetFilter { [k: string]: { element?: Filter91; order?: number; }; } interface Filter91 { exclude?: Exclude96; buffs?: Buffs190; combatants_only?: Combatants90; require_all_tags?: RequireAllTags90; datafield_evaluations?: DatafieldEvaluations92; scenes?: Scenes93; items?: Items112; sub_filters?: SubFilters45; } interface Buffs190 { require_all: RequireAll106; stacks?: Stacks101; buffs: Buffs191; } /** * The buffs found must match this stack requirement. */ interface Stacks101 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity142; } interface Buffs191 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations92 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes93 { [k: string]: { element?: string; order?: number; }; } interface Items112 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters45 { [k: string]: { element?: Filter92; order?: number; }; } interface Filter92 { exclude?: Exclude97; buffs?: Buffs192; combatants_only?: Combatants91; require_all_tags?: RequireAllTags91; datafield_evaluations?: DatafieldEvaluations93; scenes?: Scenes94; items?: Items113; } interface Buffs192 { require_all: RequireAll107; stacks?: Stacks102; buffs: Buffs193; } /** * The buffs found must match this stack requirement. */ interface Stacks102 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity143; } interface Buffs193 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations93 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes94 { [k: string]: { element?: string; order?: number; }; } interface Items113 { [k: string]: { element?: string; order?: number; }; } /** * If a knockback is successful, these sounds will play. */ interface KnockSounds { [k: string]: { element?: { chance?: ChanceOfPlaying3; sound?: Sound17; }; order?: number; }; } interface ActionProbability10 { chance: Chance17; } interface AbilityPool { location: Location14; scale_change?: ScaleChange; scale_times?: ScaleTimes; tooltip?: PoolTooltipInfo; spawn_sound?: SpawnSound; babbler?: Babbler89; effects: Effects1; light_emitter?: LightEmitter; particle_emitters?: ParticleEmitters3; } interface ScaleChange { value0?: Start2; value1?: End2; } /** * At what point in the total duration this pool begins and ends changing its scale */ interface ScaleTimes { value0?: StartTime; value1?: EndTime; } interface PoolTooltipInfo { description?: TooltipDescription2; name: TooltipName; color: TooltipColor; icon: TooltipIcon; } /** * The description of the ability pool that will be displayed in the tooltip */ interface TooltipDescription2 { text: EnglishText112; skip?: Skip112; } /** * The name of the ability pool that will be displayed in the tooltip */ interface TooltipName { text: EnglishText113; skip?: Skip113; } /** * The color of the ability pool that will be displayed in the tooltip */ interface TooltipColor { g?: Green58; r?: Red58; b?: Blue58; } interface Effects1 { [k: string]: { element?: PoolEffects; order?: number; }; } interface PoolEffects { telegraph_show_during_cast?: ShowTelegraphDuringCast2; action_groups: ActionGroups7; times: EffectTimes; } interface ActionGroups7 { [k: string]: { element: ActionGroup; order: number; }; } interface EffectTimes { [k: string]: { element?: Seconds4; order?: number; }; } interface ParticleEmitters3 { [k: string]: { element?: ParticleEmitter3; order?: number; }; } interface ParticleEmitter3 { particle?: Particle; interval?: EmitIntervalSeconds; num_particles?: NumberOfParticles6; direction?: BurstDirection3; scaled_radius?: ScaledSpawnRadius3; local_particles?: Local; outward_blast?: BlastOutward3; spawn_radius?: SpawnRadiusPixels3; radius_as_grid?: SpawnRadiusAsGrid3; z_offset?: ZOffset18; } /** * How many particles to emit with each interval. */ interface NumberOfParticles6 { value0?: Min82; value1?: Max82; } interface BurstDirection3 { value0?: Min83; value1?: Max83; } /** * How far from the source the particles will spawn. */ interface SpawnRadiusPixels3 { value0?: Min84; value1?: Max84; } interface ActionProbability11 { chance: Chance18; } /** * If set, only targets that match this filter will have their datafields changed. */ interface DatafieldTargetFilter1 { [k: string]: { element?: Filter93; order?: number; }; } interface Filter93 { exclude?: Exclude98; buffs?: Buffs194; combatants_only?: Combatants92; require_all_tags?: RequireAllTags92; datafield_evaluations?: DatafieldEvaluations94; scenes?: Scenes95; items?: Items114; sub_filters?: SubFilters46; } interface Buffs194 { require_all: RequireAll108; stacks?: Stacks103; buffs: Buffs195; } /** * The buffs found must match this stack requirement. */ interface Stacks103 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity144; } interface Buffs195 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations94 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes95 { [k: string]: { element?: string; order?: number; }; } interface Items114 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters46 { [k: string]: { element?: Filter94; order?: number; }; } interface Filter94 { exclude?: Exclude99; buffs?: Buffs196; combatants_only?: Combatants93; require_all_tags?: RequireAllTags93; datafield_evaluations?: DatafieldEvaluations95; scenes?: Scenes96; items?: Items115; } interface Buffs196 { require_all: RequireAll109; stacks?: Stacks104; buffs: Buffs197; } /** * The buffs found must match this stack requirement. */ interface Stacks104 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity145; } interface Buffs197 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations95 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes96 { [k: string]: { element?: string; order?: number; }; } interface Items115 { [k: string]: { element?: string; order?: number; }; } interface UnlockedBy61 { prerequisite: UnlockedBy62; unlock_text?: UnlockDescription18; } /** * If unlocked by research, this description will appear in the Research Node. */ interface UnlockDescription18 { text: EnglishText114; skip?: Skip114; description?: TranslatorHelperText86; } /** * If set, this action group will only be performed on targets that match the filter. */ interface ActionGroupTargetFilter { [k: string]: { element: Filter95; order: number; }; } interface Filter95 { exclude?: Exclude100; buffs?: Buffs198; combatants_only?: Combatants94; require_all_tags?: RequireAllTags94; datafield_evaluations?: DatafieldEvaluations96; scenes?: Scenes97; items?: Items116; sub_filters?: SubFilters47; } interface Buffs198 { require_all: RequireAll110; stacks?: Stacks105; buffs: Buffs199; } /** * The buffs found must match this stack requirement. */ interface Stacks105 { comparison: "==" | "!=" | "<" | "<=" | ">" | ">="; value1: Quantity146; } interface Buffs199 { [k: string]: { element: string; order: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations96 { [k: string]: { element: { comparison: "==" | "!=" | "<" | "<=" | ">" | ">="; value0: string; value1: number; }; order: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes97 { [k: string]: { element: string; order: number; }; } interface Items116 { [k: string]: { element: string; order: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters47 { [k: string]: { element: Filter96; order: number; }; } interface Filter96 { exclude?: Exclude101; buffs?: Buffs200; combatants_only?: Combatants95; require_all_tags?: RequireAllTags95; datafield_evaluations?: DatafieldEvaluations97; scenes?: Scenes98; items?: Items117; } interface Buffs200 { require_all: RequireAll111; stacks?: Stacks106; buffs: Buffs201; } /** * The buffs found must match this stack requirement. */ interface Stacks106 { comparison: "==" | "!=" | "<" | "<=" | ">" | ">="; value1: Quantity147; } interface Buffs201 { [k: string]: { element: string; order: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations97 { [k: string]: { element: { comparison: "==" | "!=" | "<" | "<=" | ">" | ">="; value0: string; value1: number; }; order: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes98 { [k: string]: { element: string; order: number; }; } interface Items117 { [k: string]: { element: string; order: number; }; } /** * A collection of shapes used for abilities, targeting, and interactions. */ interface Telegraph { shape_collections: ShapeCollections; rotate_with_aim?: RotateWithAimDirection; targets_self: IncludeCasterAsViableTarget; alpha_modifier?: AlphaModifier; animations?: TelegraphAnimations; } interface ShapeCollections { [k: string]: { element: ShapeCollection; order: number; }; } interface ShapeCollection { shapes: Shapes; scale?: ScaleModifier9; offset?: Offset3; name?: NameInternal7; mirror?: Mirror2; rotational_mirror?: RotationalMirror2; } interface Shapes { [k: string]: { element: Shape1; order: number; }; } interface Arc { spread?: SpreadDegrees2; angle?: DirectionDegrees; } interface Offset1 { x?: X; y?: Y; } /** * You can optionally customize this shape's color in the editor, so it stands out from other shapes. */ interface EditorColor { g?: Green59; r?: Red59; b?: Blue59; } interface Mirror { x?: X1; y?: Y1; } /** * This shape will be mirrored around the origin in a rotational pattern. This mirror applies after the X and Y mirrors, so each of those mirrors will then be rotationally mirrored. */ interface RotationalMirror { count?: Count; } /** * In grid spaces. */ interface Radius1 { value0?: Inner; value1?: Outer; } interface Offset2 { x?: X2; y?: Y2; } /** * You can optionally customize this shape's color in the editor, so it stands out from other shapes. */ interface EditorColor1 { g?: Green60; r?: Red60; b?: Blue60; } /** * Relative to the collection's origin. */ interface Points { [k: string]: { element?: { x?: X3; y?: Y3; }; order?: number; }; } interface Mirror1 { x?: X4; y?: Y4; } /** * This shape will be mirrored around the origin in a rotational pattern. This mirror applies after the X and Y mirrors, so each of those mirrors will then be rotationally mirrored. */ interface RotationalMirror1 { count?: Count1; } interface Offset3 { x: X5; y: Y5; } interface Mirror2 { x: X6; y: Y6; } /** * This shape will be mirrored around the origin in a rotational pattern. This mirror applies after the X and Y mirrors, so each of those mirrors will then be rotationally mirrored. */ interface RotationalMirror2 { count: Count2; } interface TelegraphAnimations { scale?: Scale10; shake?: Shake1; } interface Scale10 { start_value: ScaleStart; times: ScaleAnimationTime; style: Style13; } interface ScaleAnimationTime { value0: Start3; value1: End3; } interface Shake1 { values: ShakeAmount1; times: ShakeTime1; } interface ShakeAmount1 { value0: Start4; value1: End4; } interface ShakeTime1 { value0: Start5; value1: End5; } interface UnlockedBy63 { prerequisite: UnlockedBy64; unlock_text?: UnlockDescription19; } /** * If unlocked by research, this description will appear in the Research Node. */ interface UnlockDescription19 { text: EnglishText115; skip?: Skip115; description?: TranslatorHelperText87; } interface ActionGroups8 { [k: string]: { element: ActionGroup; order: number; }; } /** * If set, this ability will only be castable if the caster has a specific target that meets these rules. */ interface SingleTargeted { filter?: SingleTargetFiltering; range: RangeInGridSpaces; directional_aim?: DirectionalTargetingForPlayer; } /** * The ability will only be castable on targets that match these filters. */ interface SingleTargetFiltering { [k: string]: { element: Filter97; order: number; }; } interface Filter97 { exclude?: Exclude102; buffs?: Buffs202; combatants_only?: Combatants96; require_all_tags?: RequireAllTags96; datafield_evaluations?: DatafieldEvaluations98; scenes?: Scenes99; items?: Items118; sub_filters?: SubFilters48; } interface Buffs202 { require_all: RequireAll112; stacks?: Stacks107; buffs: Buffs203; } /** * The buffs found must match this stack requirement. */ interface Stacks107 { comparison: "==" | "!=" | "<" | "<=" | ">" | ">="; value1: Quantity148; } interface Buffs203 { [k: string]: { element: string; order: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations98 { [k: string]: { element: { comparison: "==" | "!=" | "<" | "<=" | ">" | ">="; value0: string; value1: number; }; order: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes99 { [k: string]: { element: string; order: number; }; } interface Items118 { [k: string]: { element: string; order: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters48 { [k: string]: { element: Filter98; order: number; }; } interface Filter98 { exclude?: Exclude103; buffs?: Buffs204; combatants_only?: Combatants97; require_all_tags?: RequireAllTags97; datafield_evaluations?: DatafieldEvaluations99; scenes?: Scenes100; items?: Items119; } interface Buffs204 { require_all: RequireAll113; stacks?: Stacks108; buffs: Buffs205; } /** * The buffs found must match this stack requirement. */ interface Stacks108 { comparison: "==" | "!=" | "<" | "<=" | ">" | ">="; value1: Quantity149; } interface Buffs205 { [k: string]: { element: string; order: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations99 { [k: string]: { element: { comparison: "==" | "!=" | "<" | "<=" | ">" | ">="; value0: string; value1: number; }; order: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes100 { [k: string]: { element: string; order: number; }; } interface Items119 { [k: string]: { element: string; order: number; }; } /** * The target must meet these range requirements for the ability to be cast (and the actions to be performed.) */ interface RangeInGridSpaces { value0: Min85; value1: Max85; } interface CameraAnchor { wip?: WIP; zoom?: Zoom; bias: BiasAmount; name: NameInternal9; z_offset?: CameraZOffset; radius: RadiusGrid; } /** * An item that can be dropped into the world to override the game's normal music. */ interface MusicAnchor { music: Music4; name: Name36; wip?: WIP; editor_group?: EditorGroup31; radius: GridRange; } interface Storyline1 { scramble_description?: ScrambleDescription; wip?: WIP; scramble_icon?: ScrambleIcon; order: Order1; icon?: Icon6; description?: Description22; name: Name37; } /** * If set, this description will appear at the top of the Storyline when it is being inspected while in Scramble. */ interface ScrambleDescription { text: EnglishText116; skip?: Skip116; description?: TranslatorHelperText88; } /** * If set, this description will appear at the top of the Storyline when it is being inspected. */ interface Description22 { text: EnglishText117; skip?: Skip117; description?: TranslatorHelperText89; } interface Name37 { text: EnglishText118; skip?: Skip118; description?: TranslatorHelperText90; } interface Moon { high_quality_night_color: NightColorHighQuality; name: Name38; wip?: WIP; days_per_cycle: DaysPerCycle; low_quality_night_color: NightColorLowQuality; } /** * What colors to use for night when High Quality lighting is enabled. */ interface NightColorHighQuality { g: Green61; r: Red61; b: Blue61; } interface Name38 { text: EnglishText119; skip?: Skip119; } /** * What colors to use for night when Low Quality lighting is enabled. */ interface NightColorLowQuality { g: Green62; r: Red62; b: Blue62; } interface WeatherEffect { color_grading?: ColorGrading; ambient_sound?: AmbientSound; wip?: WIP; name: NameInternal10; darkness?: Darkness; ground_effects?: GroundEffects; overlays?: Overlays; } interface GroundEffects { [k: string]: { element: GroundEffect; order: number; }; } interface GroundEffect { frequency: ParticlesSecond; show_on_land: ShowOnLand; show_on_water: ShowOnWater; particle: ParticleSystem6; } interface Overlays { [k: string]: { element: Overlay; order: number; }; } interface Overlay { scale?: Scale11; sprite: Sprite8; x_speed: XSpeed; color?: Color7; y_speed: YSpeed; alpha?: Alpha2; } interface XSpeed { sine_waves?: SineWaves1; base: SpeedPixelsSec1; } interface SineWaves1 { [k: string]: { element: SineWave1; order: number; }; } interface SineWave1 { speed: Speed31; amplitude: Amplitude28; } interface Color7 { g: Green63; r: Red63; b: Blue63; } interface YSpeed { sine_waves?: SineWaves2; base: SpeedPixelsSec2; } interface SineWaves2 { [k: string]: { element: SineWave2; order: number; }; } interface SineWave2 { speed: Speed32; amplitude: Amplitude29; } /** * Loading tips for Crashlands 2. */ interface LoadingTips { name: MoteNameInternal; wip?: WIP; tips: Tips; } /** * A list of loading tips. */ interface Tips { [k: string]: { element: { tip: { text: EnglishText120; skip?: Skip120; }; }; order: number; }; } /** * Items that haven't yet been brought into the Game Changer, but exist as placeholders for UIDs. */ interface UnimplementedItem { name?: Name39; wip?: WIP; uicon?: Icon7; } interface Name39 { text: EnglishText121; skip?: Skip121; description?: TranslatorHelperText91; } interface DamageType1 { wip?: WIP; resistance_stat?: ResistanceStat; color?: Color8; aggregator: Aggregator; boosts?: Boosts; name: Name40; parent?: ParentDamageType; } /** * When you deal this kind of damage, what color its damage popout numbers are. */ interface Color8 { g: Green64; r: Red64; b: Blue64; } /** * Stats that can boost this damage. */ interface Boosts { [k: string]: { element: { direct_only?: DirectDamage5; stat: BoostingStat; modifier_style: BoostStyle; }; order: number; }; } interface Name40 { text: EnglishText122; skip?: Skip122; description?: TranslatorHelperText92; } /** * A timestamp that is saved on world entities for persistent tracking of when things occurred to them. */ interface Timestamp8 { name: Name41; wip?: WIP; uicon?: UIIcon28; description: Description23; } interface Infusion2 { sub_order?: SubOrder; wip?: WIP; uicon: UIIcon29; description?: Description24; empowerment?: Empowerment; name: Name42; stats?: Stats; tier: Tier; } interface Description24 { text: EnglishText123; skip?: Skip123; description?: TranslatorHelperText93; } interface Name42 { text: EnglishText124; skip?: Skip124; description?: TranslatorHelperText94; } /** * Stats this infusion will give. */ interface Stats { [k: string]: { element: { value: Value4; stat: Stat5; }; order: number; }; } /** * Conditions that must be true for the quest to proceed. */ interface Requirements8 { [k: string]: { element: Requirement1; order: number; }; } interface BuffType { name: Name43; wip?: WIP; exclusive?: Exclusive14; } interface Name43 { text: EnglishText125; skip?: Skip125; } /** * A collection of earparty sounds that share a global Gain. */ interface EarpartyGroup { name: Name44; parent_group?: ParentGroup; falloff?: Falloff; wip?: WIP; gain: GainModifier; } /** * For positional sounds, the pixel range for the audio to no longer become audible. */ interface Falloff { value0: Min86; value1: Max86; } interface Stat6 { default_value: ValueDefault; truncate_ending_zeroes?: TruncateEndingZeroes; display_precision?: DecimalPrecision; display_percent: DisplayAsPercent; description?: Description25; item_name_modifier?: ItemNameModifier; usable_on_equipment: UsableOnEquipment; naming_priority: Order2; is_modifier?: IsModifier; primary_tags?: PrimaryStatForItemTypes; value_per_point?: ValuePoint; show_on_player_ui: ShowOnPlayerUI; wip?: WIP; armor_value_per_point?: ArmorValuePoint; min_value?: ValueMin; armor_value_per_level?: ArmorValueLevelChange; max_value?: ValueMax; usable_on_buffs: UsableOnBuffs; name: Name45; parent?: ParentStat; } interface Description25 { text: EnglishText126; skip?: Skip126; } /** * If this is the dominant stat on an item, how will the item's name change? */ interface ItemNameModifier { text: EnglishText127; skip?: Skip127; description?: TranslatorHelperText95; } /** * If this stat appears on an item and is marked as a 'Primary' stat for that kind of item, this stat will appear first. For example, armor items have 'Hit Points' as a primary stat. */ interface PrimaryStatForItemTypes { [k: string]: { element: string; order: number; }; } interface Name45 { text: EnglishText128; skip?: Skip128; description?: TranslatorHelperText96; } /** * A piece of information that a world element can have stored on it. */ interface Datafield6 { editable?: Editable; editor_range?: EditorRange; editor_uid_pool?: EditorUIDPool; description: Description26; buffer_type: DataType; starting_values: FirstSpawnValues; respawn_values?: RespawnValues; saves_to_inventory: SaveToInventory; saves_to_world: SaveToBaseWorld; saves_to_entity_changes: SaveToGameplay; wip?: WIP; uicon?: UIIcon30; name: Name46; } /** * The range of values that this data field can be set to via the Editor. */ interface EditorRange { value0: Min87; value1: Max87; } /** * These values are randomly chosen when the world element is spawned. */ interface FirstSpawnValues { [k: string]: { element: { weight: number; item: number; locked: boolean; }; order: number; }; } /** * If this element is destroyed and then respawns, you can optionally have this data field reset to different values. */ interface RespawnValues { [k: string]: { element: { weight: number; item: number; locked: boolean; }; order: number; }; } interface KnowledgeGroup3 { name: Name47; wip?: WIP; color: Color9; order: Order3; } interface Name47 { text: EnglishText129; skip?: Skip129; description?: TranslatorHelperText97; } interface Color9 { g: Green65; r: Red65; b: Blue65; } /** * A stream of particles that will emit from the caster. */ interface ParticleStream2 { stream_interval: StreamEmitIntervalSeconds; particles: Particles; } interface Music6 { name: Name48; wip?: WIP; style: Style14; } interface Tracks { [k: string]: { element?: string; order?: number; }; } /** * Categories for things to be placed into in the World Editor. */ interface EditorCategory1 { wip?: WIP; spawn_mode: SpawnMode; color: Color10; order: Order4; icon: Icon8; name: Name51; } interface Color10 { g: Green66; r: Red66; b: Blue66; } interface DamageProfile1 { name: Name52; wip?: WIP; damage_types: DamageTypes4; modifiers?: Modifiers1; } /** * What kind of damage to deal, and what percent of the 'normal' amount to deal. The actual damage dealt will be calculated based on game factors such as the level of the user, cast times, and stats of the damager. */ interface DamageTypes4 { [k: string]: { element: { value: DamageAmount1; key: DamageType2; }; order: number; }; } /** * Whether to deal extra or reduced damage to certain things, or certain kinds of things. */ interface Modifiers1 { [k: string]: { element: { value: Modifier5; key: Filter99; }; order: number; }; } /** * A state that a world element can be in which conveys information about how it should animate */ interface AnimationState { name: Name53; wip?: WIP; fallback?: FallbackState; spine_name_default: DefaultSpineAnimationName; description: Description27; } /** * A particle system asset defined in the Game Maker project. */ interface ParticleSystem7 { name: Name54; wip?: WIP; } /** * Visuals to convey character emotions. */ interface Emoji11 { sound?: Sound18; name: NameInternal11; wip?: WIP; sprite: Sprite9; } interface Chat { moments: Moments; name: NameInternal12; wip?: WIP; requirements?: Requirements9; } interface Moments { [k: string]: { element: Moment; order: number; }; } interface Moment { [k: string]: { element: { text?: Dialogue; speaker: string; emoji?: Emoji12; }; order: number; }; } interface Dialogue { text: EnglishText130; skip?: Skip130; } /** * Conditions that must be true for the quest to proceed. */ interface Requirements9 { [k: string]: { element: Requirement1; order: number; }; } /** * A postprocessing effect that can be used to change the feel of an area or situation. */ interface ColorGrading1 { name: ProfileNameInternal; wip?: WIP; values: Values; } interface Values { brightness?: Brightness1; saturation?: Saturation; contrast_r?: RedMultiplier; contrast_g?: GreenMultiplier; contrast_b?: BlueMultiplier; dark_levels?: DarkLevels; light_levels?: LightLevels; shadow_threshold?: ShadowThreshold; shadow_multiplier?: ShadowMultiplier; highlight_threshold?: HighlightThreshold; highlight_multiplier?: HighlightMultiplier; } /** * A datafield that can be used to store a spine slot numerical ID. */ interface SpineSlot { name: MoteNameInternal1; wip?: WIP; slot_name: SlotName1; required: Required; spine_sprite: SpineSprite; } interface BossPhase1 { movement?: MotionOverride11; description?: DescriptionInternal; opening_sequence?: BossDialogueSequence2; ending_sequence?: BossDialogueSequence3; wip?: WIP; order: Order5; zoom_level?: ZoomLevel; boss: Boss9; music?: Music8; name: NameInternal13; reactions?: Reactions; abilities?: Abilities8; } interface MotionOverride11 { stationary?: StationaryVisuals13; movespeed?: MovementSpeed14; moving?: MovementVisuals14; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave27 { [k: string]: { element?: { speed?: Speed33; amplitude?: Amplitude30; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements27 { [k: string]: { element?: FlapEvent27; order?: number; }; } interface FlapEvent27 { impulse_seconds?: ImpulseDurationSeconds27; distance?: VerticalDistance27; recovery_seconds?: RecoveryDurationSeconds27; } /** * A list of Spine bones that will emit poofs of smoke when the character's feet hit the ground. */ interface SmokePoofBones14 { [k: string]: { element?: BoneName14; order?: number; }; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave28 { [k: string]: { element?: { speed?: Speed34; amplitude?: Amplitude31; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements28 { [k: string]: { element?: FlapEvent28; order?: number; }; } interface FlapEvent28 { impulse_seconds?: ImpulseDurationSeconds28; distance?: VerticalDistance28; recovery_seconds?: RecoveryDurationSeconds28; } interface BossDialogueSequence2 { moments: DialogueMoments; animation?: BossSpineAnimation; allow_xflip?: AllowXFlip; } interface BossDialogueSequence3 { moments: DialogueMoments; animation?: BossSpineAnimation; allow_xflip?: AllowXFlip; } /** * What abilities the boss will use during this phase. */ interface Abilities8 { [k: string]: { element: BossAbilityAI; order: number; }; } interface BossAbilityAI { ability_id: Ability13; targeting?: Targeting; destination?: Destination2; movement?: MotionOverride12; post_ability_pause_ignore_chance?: PostAbilityPauseIgnoreChance1; post_ability_pause?: PostAbilityPause3; conditions?: AbilityUsageConditions; followup_abilities?: FollowupAbilities1; weight: Weight8; available_after_phase_seconds?: AvailableAfterPhaseSeconds; followup_abilities_as_sequence?: FollowupAbilitiesAsSequence; direction_randomness?: DirectionRandomness3; priority?: Priority; cooldown?: CooldownSeconds1; } /** * The boss will choose the nearest target that matches these types. */ interface PotentialTargets { [k: string]: { element?: string; order?: number; }; } /** * The boss will only choose targets that are within this range. */ interface Range { value0?: Min88; value1?: Max88; } /** * If set, the boss will exclude or include targets that are within the set range of certain types of world elements. */ interface FilterTargetsNearEntities { entity_types?: TargetFilters7; exclude?: Exclude106; range?: RangeGridSpaces; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface TargetFilters7 { [k: string]: { element?: Filter100; order?: number; }; } interface Filter100 { exclude?: Exclude104; buffs?: Buffs206; combatants_only?: Combatants98; require_all_tags?: RequireAllTags98; datafield_evaluations?: DatafieldEvaluations100; scenes?: Scenes101; items?: Items120; sub_filters?: SubFilters49; } interface Buffs206 { require_all: RequireAll114; stacks?: Stacks109; buffs: Buffs207; } /** * The buffs found must match this stack requirement. */ interface Stacks109 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity150; } interface Buffs207 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations100 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes101 { [k: string]: { element?: string; order?: number; }; } interface Items120 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters49 { [k: string]: { element?: Filter101; order?: number; }; } interface Filter101 { exclude?: Exclude105; buffs?: Buffs208; combatants_only?: Combatants99; require_all_tags?: RequireAllTags99; datafield_evaluations?: DatafieldEvaluations101; scenes?: Scenes102; items?: Items121; } interface Buffs208 { require_all: RequireAll115; stacks?: Stacks110; buffs: Buffs209; } /** * The buffs found must match this stack requirement. */ interface Stacks110 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity151; } interface Buffs209 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations101 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes102 { [k: string]: { element?: string; order?: number; }; } interface Items121 { [k: string]: { element?: string; order?: number; }; } /** * The boss will exclude targets that are within this range of the listed entities. */ interface RangeGridSpaces { value0?: Min89; value1?: Max89; } /** * If set, the boss will move to this destination before casting the ability. */ interface Destination2 { choose_random?: ChooseRandom1; range?: Range1; targets: PotentialTargets1; } /** * The boss will only choose quest markers that are within this range. */ interface Range1 { value0: Min90; value1: Max90; } /** * The boss will choose the nearest of the quest markers listed here. */ interface PotentialTargets1 { [k: string]: { element: string; order: number; }; } interface MotionOverride12 { stationary?: StationaryVisuals14; movespeed?: MovementSpeed15; moving?: MovementVisuals15; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave29 { [k: string]: { element?: { speed?: Speed35; amplitude?: Amplitude32; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements29 { [k: string]: { element?: FlapEvent29; order?: number; }; } interface FlapEvent29 { impulse_seconds?: ImpulseDurationSeconds29; distance?: VerticalDistance29; recovery_seconds?: RecoveryDurationSeconds29; } /** * A list of Spine bones that will emit poofs of smoke when the character's feet hit the ground. */ interface SmokePoofBones15 { [k: string]: { element?: BoneName15; order?: number; }; } /** * You can add sine waves to the vertical position to have the creature move up and down. Sine waves can stack, creating unique motions. */ interface AltitudeSineWave30 { [k: string]: { element?: { speed?: Speed36; amplitude?: Amplitude33; }; order?: number; }; } /** * How the creature's flight should respond to 'flap' events in Spine. */ interface FlappingVerticalMovements30 { [k: string]: { element?: FlapEvent30; order?: number; }; } interface FlapEvent30 { impulse_seconds?: ImpulseDurationSeconds30; distance?: VerticalDistance30; recovery_seconds?: RecoveryDurationSeconds30; } /** * If set, the boss will wait for this many seconds after using this ability before moving on to the next ability. */ interface PostAbilityPause3 { value0: MinSeconds6; value1: MaxSeconds6; } /** * If set, the boss will only use this ability if its conditions are met. */ interface AbilityUsageConditions { conditions: Conditions8; require_all_conditions: RequireAllConditions7; } interface Conditions8 { [k: string]: { element: Condition8; order: number; }; } /** * Which abilities are we evaluating? */ interface Abilities9 { [k: string]: { element?: string; order?: number; }; } interface Evaluation13 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; } /** * The 'minutes since timestamp' value can be modified up or down based on an Insight. */ interface InsightModifier6 { amount?: ChangePerPoint37; insight?: Insight21; } /** * If set, this description will appear on the Research Node to explain what it is unlocking. */ interface InsightTooltip7 { text: EnglishText131; skip?: Skip131; description?: TranslatorHelperText98; } interface DistanceRequiredGridSpaces6 { value0?: Min91; value1?: Max91; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface Targets8 { [k: string]: { element?: Filter102; order?: number; }; } interface Filter102 { exclude?: Exclude107; buffs?: Buffs210; combatants_only?: Combatants100; require_all_tags?: RequireAllTags100; datafield_evaluations?: DatafieldEvaluations102; scenes?: Scenes103; items?: Items122; sub_filters?: SubFilters50; } interface Buffs210 { require_all: RequireAll116; stacks?: Stacks111; buffs: Buffs211; } /** * The buffs found must match this stack requirement. */ interface Stacks111 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity152; } interface Buffs211 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations102 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes103 { [k: string]: { element?: string; order?: number; }; } interface Items122 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters50 { [k: string]: { element?: Filter103; order?: number; }; } interface Filter103 { exclude?: Exclude108; buffs?: Buffs212; combatants_only?: Combatants101; require_all_tags?: RequireAllTags101; datafield_evaluations?: DatafieldEvaluations103; scenes?: Scenes104; items?: Items123; } interface Buffs212 { require_all: RequireAll117; stacks?: Stacks112; buffs: Buffs213; } /** * The buffs found must match this stack requirement. */ interface Stacks112 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity153; } interface Buffs213 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations103 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes104 { [k: string]: { element?: string; order?: number; }; } interface Items123 { [k: string]: { element?: string; order?: number; }; } interface NumberOfTargets12 { comparison?: Evaluation14; quantity?: Quantity154; } interface HealthEvaluation6 { hp_percentage?: number; comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; } interface Items124 { [k: string]: { element?: string; order?: number; }; } /** * The condition will be met if the player is wielding any of these items. */ interface Items125 { [k: string]: { element?: string; order?: number; }; } interface PiecesEquipped6 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: EquipmentSet9; value1?: number; } /** * If set, then targets other than yourself will be evaluated. */ interface NumberOfTargets13 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity155; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface BuffTargetFilter6 { [k: string]: { element?: Filter104; order?: number; }; } interface Filter104 { exclude?: Exclude109; buffs?: Buffs214; combatants_only?: Combatants102; require_all_tags?: RequireAllTags102; datafield_evaluations?: DatafieldEvaluations104; scenes?: Scenes105; items?: Items126; sub_filters?: SubFilters51; } interface Buffs214 { require_all: RequireAll120; stacks?: Stacks113; buffs: Buffs215; } /** * The buffs found must match this stack requirement. */ interface Stacks113 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity156; } interface Buffs215 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations104 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes105 { [k: string]: { element?: string; order?: number; }; } interface Items126 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters51 { [k: string]: { element?: Filter105; order?: number; }; } interface Filter105 { exclude?: Exclude110; buffs?: Buffs216; combatants_only?: Combatants103; require_all_tags?: RequireAllTags103; datafield_evaluations?: DatafieldEvaluations105; scenes?: Scenes106; items?: Items127; } interface Buffs216 { require_all: RequireAll121; stacks?: Stacks114; buffs: Buffs217; } /** * The buffs found must match this stack requirement. */ interface Stacks114 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity157; } interface Buffs217 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations105 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes106 { [k: string]: { element?: string; order?: number; }; } interface Items127 { [k: string]: { element?: string; order?: number; }; } /** * How close or far (in grid spaces) the entities must be to be considered for this condition. */ interface BuffTargetRange6 { value0?: Min92; value1?: Max92; } interface Stacks115 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity158; } interface Buffs218 { [k: string]: { element?: string; order?: number; }; } interface NumberSummoned6 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity159; } /** * Item IDs or item tags to filter the targets by. If not set, all targets are valid. Each entry in the Filter list is independently checked, so a valid target only needs to match one filter. */ interface SummonedEntitiesFilter6 { [k: string]: { element?: Filter106; order?: number; }; } interface Filter106 { exclude?: Exclude111; buffs?: Buffs219; combatants_only?: Combatants104; require_all_tags?: RequireAllTags104; datafield_evaluations?: DatafieldEvaluations106; scenes?: Scenes107; items?: Items128; sub_filters?: SubFilters52; } interface Buffs219 { require_all: RequireAll122; stacks?: Stacks116; buffs: Buffs220; } /** * The buffs found must match this stack requirement. */ interface Stacks116 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity160; } interface Buffs220 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations106 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes107 { [k: string]: { element?: string; order?: number; }; } interface Items128 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters52 { [k: string]: { element?: Filter107; order?: number; }; } interface Filter107 { exclude?: Exclude112; buffs?: Buffs221; combatants_only?: Combatants105; require_all_tags?: RequireAllTags105; datafield_evaluations?: DatafieldEvaluations107; scenes?: Scenes108; items?: Items129; } interface Buffs221 { require_all: RequireAll123; stacks?: Stacks117; buffs: Buffs222; } /** * The buffs found must match this stack requirement. */ interface Stacks117 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity161; } interface Buffs222 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations107 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes108 { [k: string]: { element?: string; order?: number; }; } interface Items129 { [k: string]: { element?: string; order?: number; }; } /** * The reactor must be in one of these areas for the reaction to occur. */ interface Areas9 { [k: string]: { element?: string; order?: number; }; } /** * The reactor must be in one of these weather conditions for the reaction to occur. */ interface Weather6 { [k: string]: { element?: string; order?: number; }; } /** * If set, these abilities will be cast after the current one. These abilities must already be listed in this phase's abilities, or they will be ignored. */ interface FollowupAbilities1 { [k: string]: { element: FollowupAbility1; order: number; }; } interface FollowupAbility1 { weight: Weight7; ability: Ability14; instant: Instant1; } interface EquipmentSet10 { name: Name55; wip?: WIP; bonuses: Bonuses; color: Color14; description: Description28; } interface Name55 { text: EnglishText132; skip?: Skip132; description?: TranslatorHelperText99; } interface Bonuses { [k: string]: { element: SetBonus; order: number; }; } interface SetBonus { num_pieces: Pieces; stats?: Stats1; reactions?: Reactions; tooltips?: Tooltips; } interface Stats1 { [k: string]: { element: { amount: Amount1; stat: Stat7; }; order: number; }; } /** * If this set has a benefit that doesn't have a reaction or stats, you can explain it here. */ interface Tooltips { [k: string]: { element: Tooltip; order: number; }; } interface Tooltip { text: EnglishText133; skip?: Skip133; } /** * What color the set's name and item borders should be displayed on the UI. */ interface Color14 { g: Green67; r: Red67; b: Blue67; } interface Description28 { text: EnglishText134; skip?: Skip134; } interface Credits { name: NameInternal14; wip?: WIP; sections?: Sections; } interface Sections { [k: string]: { element: Section; order: number; }; } interface Section { group_color: SectionNameColor; name: SectionName; entries: Entries; subtext?: SectionSubtext; } interface SectionNameColor { g: Green68; r: Red68; b: Blue68; } interface SectionName { text: EnglishText135; skip?: Skip135; } interface Entries { [k: string]: { element: CreditsEntry; order: number; }; } interface Role { text: EnglishText136; skip?: Skip136; } interface Names { [k: string]: { element?: { use_cjk?: CJK1; name?: string; }; order?: number; }; } interface Role1 { text: EnglishText137; skip?: Skip137; } interface SectionSubtext { text: EnglishText138; skip?: Skip138; } /** * A region of the world. */ interface Area7 { buildmode_allowed?: BuildModeAllowed; demo_blocked?: DemoBlocked2; wip?: WIP; name_color?: NameColor4; firefly_color?: FireflyColor; play_ambience: PlayAmbience; editor_group?: EditorGroup32; ambient_day?: AmbientDayTrack; ambient_night?: AmbientNightTrack; fishing_colors?: FishingColors; color_grading?: ColorGradingProfile; vignette?: Vignette; deep_water?: DeepWater; shallow_water?: ShallowWater; can_play_music?: PlayMusic; weather_effects?: WeatherEffects; use_outdoor_music_indoors?: UseOutdoorMusicIndoors; zoom?: DefaultZoom; discoverable?: Discoverable; teleporter_icon?: TeleporterIcon; outdoor_music_day?: OutdoorMusicDay; outdoor_music_night?: OutdoorMusicNight; indoor_music?: IndoorMusic; water_sprite?: WaterSprite; waves_sprite?: WavesSprite; build_mode_access?: BuildModeAccess; show_name: ShowNameUponEntering; name: Name56; parent?: ParentArea; } /** * When the name is displayed, what color the text should be. */ interface NameColor4 { g: Green69; r: Red69; b: Blue69; } /** * The color of the fireflies in this area. */ interface FireflyColor { g: Green70; r: Red70; b: Blue70; } interface FishingColors { border: BorderColor; background: BackgroundColor; fish_inactive: FishInactiveColor; fish_active: FishActiveColor; } /** * The color of the border around the fishing minigame. */ interface BorderColor { g: Green71; r: Red71; b: Blue71; } /** * The color of the background of the fishing minigame. */ interface BackgroundColor { g: Green72; r: Red72; b: Blue72; } /** * The color of the fish in the fishing minigame when they are not lined up. */ interface FishInactiveColor { g: Green73; r: Red73; b: Blue73; } /** * The color of the fish in the fishing minigame when they are lined up. */ interface FishActiveColor { g: Green74; r: Red74; b: Blue74; } interface WeatherEffects { [k: string]: { element: { conditions?: Conditions9; weather_id: Weather7; require_all_conditions?: RequireAllConditions8; }; order: number; }; } /** * What must be true for this weather to show. */ interface Conditions9 { [k: string]: { element: Condition9; order: number; }; } /** * If set, this description will appear on the Research Node to explain what it is unlocking. */ interface InsightTooltip8 { text: EnglishText139; skip?: Skip139; description?: TranslatorHelperText100; } interface PiecesEquipped7 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: EquipmentSet11; value1?: number; } interface Items130 { [k: string]: { element?: string; order?: number; }; } /** * A list of gameplay unlockers that can either enable or disable build mode in this area. The furthest-down item in the list that is unlocked will be applied. */ interface BuildModeAccess { [k: string]: { element: { enables_build_mode: EnablesBuildMode; unlocked_by: UnlockedBy65; allows_stealing: AllowsStealing; }; order: number; }; } interface Name56 { text: EnglishText140; skip?: Skip140; description?: TranslatorHelperText101; } interface Schema1 { wip?: WIP; title?: Name57; _type: Type4; description?: Description29; } interface PropertyDefinitions { [k: string]: { element?: Schema2; order?: number; }; } interface BossDialogueSequence4 { moments: DialogueMoments; animation?: BossSpineAnimation; allow_xflip?: AllowXFlip; } /** * A place in the world that gets layered on top of the world map. */ interface Scene8 { wip?: WIP; editor_group?: EditorGroup33; allow_respawning?: AllowRespawning; color?: Color15; description?: DescriptionInternal1; name: SceneNameInternal; phases: Phases; } /** * What color the scene will show as in the editor map. */ interface Color15 { g: Green75; r: Red75; b: Blue75; } /** * The phases will be prioritized in the order they appear in this list. Phases farther down the list have a higher priority. */ interface Phases { [k: string]: { element: Phase7; order: number; }; } interface Phase7 { name?: PhaseNameInternal; phase_id: UniqueID; unlocked_by?: UnlockedBy66; transition?: TransitionVisuals; } /** * If set, this text will be displayed during the 'Hold' portion of the transition. */ interface TextOverlay { text: EnglishText141; skip?: Skip141; } interface FullscreenColor { g?: Green76; r?: Red76; b?: Blue76; } interface Effects2 { [k: string]: { element?: TransitionEffect; order?: number; }; } interface TransitionEffect { targets?: Targets9; chance?: Chance19; play_on_entities: PlayOnEntities; play_on_tiles: PlayOnTiles; effect: VisualEffect3; } /** * The entities to which the effect will be applied. */ interface Targets9 { [k: string]: { element?: Filter108; order?: number; }; } interface Filter108 { exclude?: Exclude113; buffs?: Buffs223; combatants_only?: Combatants106; require_all_tags?: RequireAllTags106; datafield_evaluations?: DatafieldEvaluations108; scenes?: Scenes109; items?: Items131; sub_filters?: SubFilters53; } interface Buffs223 { require_all: RequireAll125; stacks?: Stacks118; buffs: Buffs224; } /** * The buffs found must match this stack requirement. */ interface Stacks118 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity162; } interface Buffs224 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations108 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes109 { [k: string]: { element?: string; order?: number; }; } interface Items131 { [k: string]: { element?: string; order?: number; }; } /** * Further refine the original filter, such as by excluding some subset of the orignal items. */ interface SubFilters53 { [k: string]: { element?: Filter109; order?: number; }; } interface Filter109 { exclude?: Exclude114; buffs?: Buffs225; combatants_only?: Combatants107; require_all_tags?: RequireAllTags107; datafield_evaluations?: DatafieldEvaluations109; scenes?: Scenes110; items?: Items132; } interface Buffs225 { require_all: RequireAll126; stacks?: Stacks119; buffs: Buffs226; } /** * The buffs found must match this stack requirement. */ interface Stacks119 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: Quantity163; } interface Buffs226 { [k: string]: { element?: string; order?: number; }; } /** * If set, only items whose datafields meet these criteria will be targeted. */ interface DatafieldEvaluations109 { [k: string]: { element?: { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: string; value1?: number; }; order?: number; }; } /** * If set, only items from these scenes will be targeted. */ interface Scenes110 { [k: string]: { element?: string; order?: number; }; } interface Items132 { [k: string]: { element?: string; order?: number; }; } interface DecalDurationSeconds3 { value0?: Min93; value1?: Max93; } /** * The decal will choose a random scale between these numbers. */ interface DecalScale3 { value0?: Min94; value1?: Max94; } /** * Set this to spawn the explosion a random delay. */ interface RandomDelaySeconds3 { value0?: Min95; value1?: Max95; } /** * These are the particles that will shoot out from the explosion. */ interface DebrisParticles6 { [k: string]: { element?: DebrisParticles7; order?: number; }; } interface DebrisParticles7 { num_particles?: NumberOfParticles7; particle_scale?: ParticleScale3; sprite?: Sprite10; } interface BaseColor3 { g?: Green77; r?: Red77; b?: Blue77; } interface HighlightColor3 { g?: Green78; r?: Red78; b?: Blue78; } interface ExplosionScale3 { value0?: Min96; value1?: Max96; } /** * Set this to spawn the explosion a random distance away. */ interface RandomDistanceGridSpaces3 { value0?: Min97; value1?: Max97; } interface SkybeamColor3 { g?: Green79; r?: Red79; b?: Blue79; } interface SmokeColor3 { g?: Green80; r?: Red80; b?: Blue80; } /** * The starting radius of the smoke burst. */ interface RadiusPixels3 { value0?: Min98; value1?: Max98; } interface Color16 { g?: Green81; r?: Red81; b?: Blue81; } interface Color24 { g?: Green82; r?: Red82; b?: Blue82; } /** * The ring will spawn at a random size between these two radii. */ interface GridRadius3 { value0?: Min99; value1?: Max99; } interface LightningColor3 { g?: Green83; r?: Red83; b?: Blue83; } interface Buff7 { looping_spine_visual?: LoopingSpineVisual; light_emitter?: LightEmitter; particle_emitters?: ParticleEmitters4; application_spine?: ApplicationSpineSprite; sprite_overlays?: SpriteOverlays; sprite_underlays?: SpriteUnderlays; custom_visuals_object?: CustomVFXObject; expires_on_death: ExpiresUponDeath; max_instances?: MaximumInstances; max_stacks: MaximumStacks1; replace_oldest?: ReplaceOldest; stun?: Stun1; drop_color?: DropShadowColor; boss_stun?: BossStun; description?: Description30; prevents_negative_buffs?: PreventsNegativeBuffs; wip?: WIP; uicon: UIIcon31; stats?: Stats2; reactions?: Reactions; show_absorb_instead_of_stacks?: ShowAbsorbInsteadOfStacks; buff_type: Type5; show_damage_instead_of_stacks?: ShowDamageInsteadOfStacks; effects?: Effects3; gamemode_duration_modifiers?: GameModeDurationModifiers; duration?: DurationSeconds1; infostream?: InfostreamText; application_sound?: ApplicationSound; color: Color19; reapplication_sound?: ReapplicationSound; positive: Positive; show_description_only?: OnlyShowDescription; particle_systems?: ParticleSystems; name: Name58; swing_sound_overlay?: SwingSoundOverlay; timer_behavior?: TimerRefreshBehavior; expiration_sound?: ExpirationSound; } /** * This will render a looping spine animation attached to the buff target for the duration of the buff. */ interface LoopingSpineVisual { animation: LoopingAnimationName; z_anchor?: VerticalPosition; sprite: SpineSprite1; z_offset?: ZOffsetPixels; } interface ParticleEmitters4 { [k: string]: { element: ParticleEmitter4; order: number; }; } interface ParticleEmitter4 { scale: EmitterScale7; particle: Particle; interval: EmitIntervalSeconds1; num_particles: NumberOfParticles8; local_particles: Local1; outward_blast: BlastOutward4; } /** * How many particles to emit with each interval. */ interface NumberOfParticles8 { value0: Min100; value1: Max100; } interface SpriteOverlays { [k: string]: { element: SpriteOverlay; order: number; }; } /** * This will render a sprite on top of the world element for the duration of the buff. */ interface SpriteOverlay { rotation_speed?: RotationSpeed; scale_sinewaves?: ScaleSineWaves; scale_modifier?: ScaleModifier10; sprite: Sprite11; color?: Color17; height_position?: HeightPosition; rotation?: Rotation; blending?: Blending; z_offset?: ZOffsetPixels1; } /** * Sine waves can be used to make the sprite grow and shrink over time. */ interface ScaleSineWaves { [k: string]: { element: { sinewave: SineWave3; xscale: XScale1; yscale: YScale1; }; order: number; }; } interface SineWave3 { speed: Speed37; amplitude: Amplitude34; } /** * Optionally tint the sprite with this color. */ interface Color17 { g: Green84; r: Red84; b: Blue84; } interface SpriteUnderlays { [k: string]: { element: SpriteUnderlay; order: number; }; } /** * This will render a sprite beneath the feet of the world element. */ interface SpriteUnderlay { scale_sinewaves?: ScaleSineWaves1; scale_modifier?: ScaleModifier11; min_pixels?: MinPixels; sprite: Sprite12; squished: PerspectiveSquish; color?: Color18; loop_effect?: LoopingEffects; rotation?: Rotation1; blending?: Blending1; rotation_speed?: RotationSpeed1; } /** * Sine waves can be used to make the sprite grow and shrink over time. */ interface ScaleSineWaves1 { [k: string]: { element: SineWave4; order: number; }; } interface SineWave4 { speed: Speed38; amplitude: Amplitude35; } /** * Optionally tint the sprite with this color. */ interface Color18 { g: Green85; r: Red85; b: Blue85; } /** * If set, the sprite will animate using these fields in a loop. */ interface LoopingEffects { rotation_animation: RotationAnimation; rotation_offset: RotationOffsetPerDraw; num_draws: NumberOfDraws; loop_seconds: LoopTimeSeconds; scale_animation: ScaleAnimation; } interface RotationAnimation { start_value: StartValue; end_value: EndValue; easing_style: EasingStyle; } interface ScaleAnimation { start_value: StartValue1; end_value: EndValue1; easing_style: EasingStyle1; } interface DropShadowColor { g: Green86; r: Red86; b: Blue86; } /** * A description of this buff to show on item tooltips. */ interface Description30 { text: EnglishText142; skip?: Skip142; description?: TranslatorHelperText102; } /** * If set, this buff can modify the stats of the entity for the duration of its application. */ interface Stats2 { [k: string]: { element: StatBuff; order: number; }; } interface StatBuff { stat: Stat8; modifier_style: ModifierStyle1; multiply_by_stacks: MultiplyByStacks; amount: Amount2; otherstat_boosts?: BoostedByOtherStats; show_on_tooltip?: ShowOnTooltip1; } /** * You can choose other stats to boost the gains of this stat. */ interface BoostedByOtherStats { [k: string]: { element: { multiply_by_stacks: MultiplyByStacks1; boost_modifier?: StatMultiplier; stat_source?: StatSource; stat: Stat9; modifier_style: ModifierStyle2; }; order: number; }; } interface Effects3 { [k: string]: { element: Effect1; order: number; }; } interface Bursts2 { [k: string]: { element?: Burst2; order?: number; }; } interface Burst2 { spawn_at_ground?: SpawnOnGround11; num_particles: NumberOfParticles9; direction?: BurstDirection4; scaled_radius?: ScaledSpawnRadius4; outward_blast: BlastOutward5; spawn_radius: SpawnRadiusPixels4; radius_as_grid?: SpawnRadiusAsGrid4; z_offset?: ZOffset23; perspective: Perspective3; } interface NumberOfParticles9 { value0?: Min101; value1?: Max101; } interface BurstDirection4 { value0?: Min102; value1?: Max102; } /** * How far from the source the particles will spawn. */ interface SpawnRadiusPixels4 { value0?: Min103; value1?: Max103; } /** * You can change this buff's duration by game mode. */ interface GameModeDurationModifiers { [k: string]: { element: { value: DurationModifier; key: GameMode1; }; order: number; }; } /** * Text that will be shown in the infostream when this buff is applied. */ interface InfostreamText { text: Text2; color: TextColor1; } interface Text2 { text: EnglishText143; skip?: Skip143; } interface TextColor1 { g: Green87; r: Red87; b: Blue87; } interface Color19 { g: Green88; r: Red88; b: Blue88; } interface ParticleSystems { [k: string]: { element: ParticleSystem10; order: number; }; } interface ParticleSystem10 { particle_system: ParticleSystem11; local_particles?: Local2; scale?: EmitterScale9; interval?: BurstIntervalSeconds; } interface Name58 { text: EnglishText144; skip?: Skip144; description?: TranslatorHelperText103; } interface Floor1 { description?: Description31; wip?: WIP; sprite: MainSprite3; map_color: MapColor3; footstep_sound: FootstepSound3; uicon: Icon9; editor_group?: EditorGroup34; undersprite?: UnderSprite3; dapples?: SunlightDappling3; recipe?: Recipe15; name: Name59; flippable: Flippable8; placement_sound?: PlacementSound8; variant_parent?: VariantParent7; } interface Description31 { text: EnglishText145; skip?: Skip145; description?: TranslatorHelperText104; } /** * The color to draw this tile on the map. */ interface MapColor3 { g: Green89; r: Red89; b: Blue89; } interface SunlightDappling3 { dapple_colors: Colors4; dapple_chance: SpawnChance3; } /** * The color to use for the sunlight dapples. */ interface Colors4 { [k: string]: { element: { g: Green90; r: Red90; b: Blue90; }; order: number; }; } interface Recipe15 { badge_cost_modifiers?: CostModifiedByResearch15; station: Station15; artisans?: ArtisansRequired15; components: Ingredients16; effort_modifier?: EffortModifier21; source?: UnlockedBy67; optional_stations?: OptionalStations15; output_quantity?: OutputQuantity13; badge_output_modifiers?: OutputModifiedByResearch13; } interface CostModifiedByResearch15 { [k: string]: { element: { badge_id: ResearchNode28; value: ChangePerPoint38; }; order: number; }; } interface ArtisansRequired15 { [k: string]: { element: string; order: number; }; } interface Ingredients16 { [k: string]: { element: string; order: number; }; } /** * Other stations that can be used to craft this recipe. */ interface OptionalStations15 { [k: string]: { element: string; order: number; }; } interface OutputModifiedByResearch13 { [k: string]: { element: { badge_id: ResearchNode29; value: ChangePerPoint39; style: Style17; }; order: number; }; } interface Name59 { text: EnglishText146; skip?: Skip146; description?: TranslatorHelperText105; } interface ResistanceProfile3 { resistances: Resistances; name: Name60; wip?: WIP; } /** * Any damage types not listed will have a resistance of zero -- so the entity will take full damage from that type. */ interface Resistances { [k: string]: { element: { value: Resistance; key: DamageType3; }; order: number; }; } interface Dock1 { description?: Description32; wip?: WIP; sprite: MainSprite4; map_color: MapColor4; footstep_sound: FootstepSound4; uicon: Icon10; editor_group?: EditorGroup35; undersprite?: UnderSprite4; dapples?: SunlightDappling4; recipe?: Recipe16; shore_interaction?: WaterInteraction2; name: Name61; placement_sound?: PlacementSound9; flippable: Flippable9; variant_parent?: VariantParent8; } interface Description32 { text: EnglishText147; skip?: Skip147; description?: TranslatorHelperText106; } /** * The color to draw this tile on the map. */ interface MapColor4 { g: Green91; r: Red91; b: Blue91; } interface SunlightDappling4 { dapple_colors: Colors5; dapple_chance: SpawnChance4; } /** * The color to use for the sunlight dapples. */ interface Colors5 { [k: string]: { element: { g: Green92; r: Red92; b: Blue92; }; order: number; }; } interface Recipe16 { badge_cost_modifiers?: CostModifiedByResearch16; station: Station16; artisans?: ArtisansRequired16; components: Ingredients17; effort_modifier?: EffortModifier22; source?: UnlockedBy68; optional_stations?: OptionalStations16; output_quantity?: OutputQuantity14; badge_output_modifiers?: OutputModifiedByResearch14; } interface CostModifiedByResearch16 { [k: string]: { element: { badge_id: ResearchNode30; value: ChangePerPoint40; }; order: number; }; } interface ArtisansRequired16 { [k: string]: { element: string; order: number; }; } interface Ingredients17 { [k: string]: { element: string; order: number; }; } /** * Other stations that can be used to craft this recipe. */ interface OptionalStations16 { [k: string]: { element: string; order: number; }; } interface OutputModifiedByResearch14 { [k: string]: { element: { badge_id: ResearchNode31; value: ChangePerPoint41; style: Style18; }; order: number; }; } /** * If set, this tile will be allowed to touch water. */ interface WaterInteraction2 { shore_sprite: ShorelineUnderwaterSprite2; shelf_sprite?: ShelfUnderwaterSprite2; } interface Name61 { text: EnglishText148; skip?: Skip148; description?: TranslatorHelperText107; } /** * A collection of conditions that must be met for a buddy to be comfortable at home. */ interface Comfort2 { glads: Requirements10; artisan_id: Buddy13; description: BackstoryDescription; unlocked_description: UnlockedDescription; ignore_in_progression_map?: IgnoreInProgressionMap4; unlocked_by?: UnlockedBy69; priors?: ProgressionPriors; wip?: WIP; uicon?: UIIcon32; order: OrderIndex; name: Name63; } interface Requirements10 { [k: string]: { element: CheckMark1; order: number; }; } interface CheckMark1 { scramble_description?: ScrambledName1; scramble_excluded?: ScrambleExcluded2; requirements: CheckMarkConditions1; description: Name62; } /** * More generic description of the requirements, to be used with the Scramble Mutator. */ interface ScrambledName1 { text: EnglishText149; skip?: Skip149; description?: TranslatorHelperText108; } interface CheckMarkConditions1 { [k: string]: { element: Condition10; order: number; }; } /** * The number of spaces that are not occupied by structures (walls/doors/pillars). */ interface InteriorTileArea1 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: number; } /** * Note that if you include an item tag and an item that also belongs to that tag, the item will be double-counted. */ interface Items133 { [k: string]: { element?: string; order?: number; }; } interface NumberOfRooms1 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: number; } /** * The items used to check for relationships. Variant items will count as each other. */ interface SourceItems1 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: { [k: string]: { element?: string; order?: number; }; }; value1?: number; } /** * The evaluated number of source items must meet the tile distance requirement against the evaluated number of target items. */ interface TileDistance1 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value1?: number; } /** * The items to check against the source items. Variant items will count as each other. */ interface TargetItems1 { comparison?: "==" | "!=" | "<" | "<=" | ">" | ">="; value0?: { [k: string]: { element?: string; order?: number; }; }; value1?: number; } /** * Describe these conditions in a short sentence. This will be next to a checkmark that will check once the requirements are complete. */ interface Name62 { text: EnglishText150; skip?: Skip150; description?: TranslatorHelperText109; } /** * This text will display on the UI before you have unlocked this comfort. */ interface BackstoryDescription { text: EnglishText151; skip?: Skip151; description?: TranslatorHelperText110; } /** * This text will display on the UI after you have unlocked this comfort. */ interface UnlockedDescription { text: EnglishText152; skip?: Skip152; description?: TranslatorHelperText111; } interface Name63 { text: EnglishText153; skip?: Skip153; description?: TranslatorHelperText112; } interface Terrain2 { disallow_floors?: DisallowFloors; depth_priority: DepthPriority; spice?: VisualSpice; clear_particle_sprite?: ClearTileParticleSprite; shore_tile?: ShoreTile; wip?: WIP; sprite: MainSprite5; map_color: MapColor5; footstep_sound: FootstepSound5; uicon: Icon11; editor_group?: EditorGroup36; undersprite?: UnderSprite5; dapples?: SunlightDappling5; shore_interaction?: WaterInteraction3; name: Name64; flippable: Flippable10; placement_sound?: PlacementSound10; cleared_tile?: ClearedTile; } /** * Tiles can spawn additional visual elements, depending on what is around them. Tiles will first sample their neighbors, then randomly choose a neighbor based on the weight of that neighbor's spice group. Then, it will roll based on 'spawn chance' to determine whether to spawn the visual spice. Finally, it will choose among the sprites within that group using their weights. */ interface VisualSpice { [k: string]: { element: { weight: number; item: SpiceGroup; locked: boolean; }; order: number; }; } interface SpiceGroup { chance: SpawnChance5; neighbor?: Neighbor; sprites: Sprites; } interface Sprites { [k: string]: { element: { weight: number; item: string; locked: boolean; }; order: number; }; } /** * The color to draw this tile on the map. */ interface MapColor5 { g: Green93; r: Red93; b: Blue93; } interface SunlightDappling5 { dapple_colors: Colors6; dapple_chance: SpawnChance6; } /** * The color to use for the sunlight dapples. */ interface Colors6 { [k: string]: { element: { g: Green94; r: Red94; b: Blue94; }; order: number; }; } /** * If set, this tile will be allowed to touch water. */ interface WaterInteraction3 { shore_sprite: ShorelineUnderwaterSprite3; shelf_sprite?: ShelfUnderwaterSprite3; } interface Name64 { text: EnglishText154; skip?: Skip154; description?: TranslatorHelperText113; } interface GameMode2 { ded_seconds?: DEDRecoverySeconds; fishing_whopper_speed?: FishingWhopperSpeed; player_health: PlayerHealth; ded_item_loss: DEDItemLoss; description: Description33; wip?: WIP; hardcore_score_level?: HardcoreScoreLevel; healing_cooldown: HealingCooldown; color: Color20; order: Order6; icon: Icon12; pet_attack_duration?: PetAttackDuration; enemy_attack_speed: EnemyAttackSpeed; name: Name65; enemy_run_speed?: EnemyRunSpeedModifier; enemy_health: EnemyHealth; } interface Description33 { text: EnglishText155; skip?: Skip155; } interface Color20 { g: Green95; r: Red95; b: Blue95; } interface Name65 { text: EnglishText156; skip?: Skip156; } interface BuildingRoof { wip?: WIP; roof_sprite?: RoofSprite; fill?: VerticalFiller; peak?: CenterPeak; slope_back?: BackSlope; slope_front?: FrontSlope; name: Name66; slope_back_edge?: BackEdge; slope_front_edge?: FrontEdge; } interface Name66 { text: EnglishText157; skip?: Skip157; description?: TranslatorHelperText114; } interface GameStats { name: Name67; wip?: WIP; order: Order7; } interface Name67 { text: EnglishText158; skip?: Skip158; description?: TranslatorHelperText115; } /** * Details about a level of quality for an item. */ interface ItemQuality { name: QualityName; wip?: WIP; effort: Effort; dark_color: DarkColor; color: Color25; } /** * The term used to describe items of this level of quality (e.g. Common, Rare, Legendary */ interface QualityName { text: EnglishText159; skip?: Skip159; description?: TranslatorHelperText116; } /** * The color to use as a backdrop when showing items of this quality level. */ interface DarkColor { g: Green96; r: Red96; b: Blue96; } /** * The color to use when showing items of this quality level. */ interface Color25 { g: Green97; r: Red97; b: Blue97; } /** * An object asset found in the Game Maker project. */ interface Object7 { name: Name68; wip?: WIP; } interface Video { wip?: WIP; video_path: VideoFilePath; gain?: AudioGainModifier; skip_points?: SkipPoints; progress_bar_color?: ProgressBarColor; progress_bar_alpha?: ProgressBarAlpha; progress_bar_background?: ProgressBarBackgroundColor; name: VideoName; progress_bar_background_alpha?: ProgressBarBackgroundAlpha; progress_bar_height?: ProgressBarHeightPixels; border_color?: BorderColor1; subtitles?: Subtitles; } /** * Set specific times (in seconds) that the video player will skip ahead to for this video. */ interface SkipPoints { [k: string]: { element: TimestampSeconds; order: number; }; } interface ProgressBarColor { g: Green98; r: Red98; b: Blue98; } interface ProgressBarBackgroundColor { g: Green99; r: Red99; b: Blue99; } /** * If there are 'bars' around the video due to aspect ratio issues, you can customize the color those bars will be drawn. The bars will not be visibile at a 16:9 aspect ratio. */ interface BorderColor1 { g: Green100; r: Red100; b: Blue100; } interface Subtitles { [k: string]: { element: { text: { text: EnglishText160; skip?: Skip160; }; times: Times; }; order: number; }; } interface Times { value0: number; value1: number; } /** * A collection of variables used to control the pacing and flow of the game. */ interface GameBalance { home_teleport_cooldown: HomeTeleportCooldownSeconds; equipment_stat_multipliers: EquipmentStatMultipliers; minutes_per_game_day: MinutesPerGameDay; item_respawn_minutes: WorldElementRespawnMinutes; tile_respawn_minutes: ClearedTileRespawnMinutes; crafting_efficiencies: CraftingEfficiencies; wip?: WIP; movespeed_base: BaseGameplayMoveSpeed; dps_growth_per_level: DPSGrowthLevel; crafting_base_effort_per_component: CraftingEffortPerComponent; crafting_growth_per_level: CraftingCostGrowthPerLevel; crafting_growth_per_quality: CraftingCostGrowthPerQuality; time_to_harvest: TimeToHarvest; time_to_die: TimeToDie; time_to_kill: TimeToKillOBSOLETE; time_to_kill_creature: TimeToKill; boss_time_to_kill: BossTimeToKill; healing_cooldown: HealingCooldownSeconds; badge_base_research_seconds: ResearchBaseSeconds; badge_research_seconds_by_depth: ResearchTimeGrowthPerLevel; badge_max_tier: ResearchMaximumTier; name: Name69; badge_max_seconds: ResearchMaximumTime; badge_base_effort_per_component: ResearchEffortPerComponent; badge_comfort_modifier: MaxComfortResearchTime; player_base_hp_mod: PlayerBaseHP; buildmode_range: BuildModeRange; } /** * Stats have a 'value per point', which is multiplied against these weights. For example, if a trinket has a weight of 0.5 and 'Haste' has a value per point of 10%, then a trinket with 1 point of haste will give 5% haste. */ interface EquipmentStatMultipliers { itg_weapon: Weapon; itg_trinket: Trinket1; itg_helm: Helm; itg_chestarmor: Suit; itg_pants: Boots; itg_gloves: Gloves; itg_tool: Tool; } /** * How recipes for stackable items become more efficient over time as you craft more of them. */ interface CraftingEfficiencies { num_crafts: NumCraftsForLevel1; growth_per_level: CostGrowthPerSkillLevel; skill_levels: SkillLevels; } /** * At each skill level, how do recipes become more efficient? */ interface SkillLevels { [k: string]: { element: { output: OutputIncrease; cost: CostReduction; }; order: number; }; } /** * The rough number of seconds it should take the player to harvest a resource of equal level. */ interface TimeToHarvest { maximum: MaxSeconds7; start: SecondsAtLevel1; per_level: SecondsChangePerLevel; minimum: MinSeconds7; } /** * The rough number of seconds it should take the player to be killed by an equal level creature under constant hits. */ interface TimeToDie { maximum: MaxSeconds8; start: SecondsAtLevel11; per_level: SecondsChangePerLevel1; minimum: MinSeconds8; } /** * The rough number of seconds it should take the player to defeat a creature of equal level under constant hits. */ interface TimeToKillOBSOLETE { maximum: MaxSeconds9; start: SecondsAtLevel12; per_level: SecondsChangePerLevel2; minimum: MinSeconds9; } /** * How many seconds it takes to kill a creature of equal level under constant hits, with no damage modifiers of any kind. */ interface TimeToKill { growth: GrowthPerLevel; start: SecondsAtLevel13; } /** * The name of this gameplay balance mode. */ interface Name69 { text: EnglishText161; skip?: Skip161; description?: TranslatorHelperText117; } /** * A sound asset controlled by the Earparty audio engine. Earparty Sounds can contain multiple audio files, which are played as variations of the Earparty Sound. */ interface EarpartySound { falloff?: Falloff1; group: EarpartyGroup1; looping?: Looping3; wip?: WIP; priority: Priority1; gain: Gain; seconds_cooldown?: CooldownSeconds2; variability?: Variability; non_repeating_number?: NonRepeatingInterval; name: NameFromGMSProject; probability?: PlayChance; auto_pitch?: AutoPitch; } /** * If the sound is played positionally, the range for it to longer be audible. */ interface Falloff1 { value0: Min104; value1: Max104; } interface RecipeCategory1 { wip?: WIP; color: Color26; order: Order8; icon: Icon13; name: Name70; unselected_color: UnselectedColor; } interface Color26 { g: Green101; r: Red101; b: Blue101; } interface UnselectedColor { g: Green102; r: Red102; b: Blue102; } } //# sourceMappingURL=cl2.types.auto.d.ts.map