Difference between revisions of "Starward Rogue:XML - Enum Reference"

From Arcen Wiki
Jump to navigation Jump to search
 
(45 intermediate revisions by 4 users not shown)
Line 21: Line 21:
 
*Player
 
*Player
 
**This is for player hulls that the player can choose from.  It’s not an enemy ship.
 
**This is for player hulls that the player can choose from.  It’s not an enemy ship.
*Familiar
+
*PlayerFamiliar
 
**Used for familiars and other little followers that are your allies.
 
**Used for familiars and other little followers that are your allies.
 +
*EnemyFamiliar
 +
**Used for familiars and other little followers that are attached to an enemy instead of you.
 
*Boss
 
*Boss
 
**Goes in the end-of-floor boss rooms.
 
**Goes in the end-of-floor boss rooms.
Line 98: Line 100:
 
** Larger scary guys that may or may not be able to get through the nooks and crannies, but instead make certain parts of the room that you REALLY don't want to go in.
 
** Larger scary guys that may or may not be able to get through the nooks and crannies, but instead make certain parts of the room that you REALLY don't want to go in.
 
** Default ability point drop: 0
 
** Default ability point drop: 0
 +
*RobotShopkeeper
 +
** ONLY should be used in robot shops.  Very specialized and really shouldn't be used beyond what the basics were set up for.
 +
*CheapItemShopkeeper
 +
** ONLY should be used in cheap item shops.  Very specialized and really shouldn't be used beyond what the basics were set up for.
 +
*WeaponsShopkeeper
 +
** ONLY should be used in weapon shops.  Very specialized and really shouldn't be used beyond what the basics were set up for.
 +
*RandomFloatingChunksOfStuff
 +
** Used by Antigravitate Blockage/Shards in order to not proc on death effects.
  
 
==ItemPool==
 
==ItemPool==
Line 131: Line 141:
 
*RegularEnemyDrop
 
*RegularEnemyDrop
 
**Regular enemies have a low chance of dropping these things, as do certain shootable obstacles.  Nothing at all exciting here; pretty much just the minor ammo and missile and credit drops.
 
**Regular enemies have a low chance of dropping these things, as do certain shootable obstacles.  Nothing at all exciting here; pretty much just the minor ammo and missile and credit drops.
*Shop
+
*RobotShop
**What you plan on selling me, Bob?
+
**Sell me robots or things to help upgrade robots!
 +
*WeaponsShop
 +
**Sell me weapons or things to help upgrade weapons!
 +
*DefensiveShop
 +
**Sell me things to help my defense!
 +
*CheapItemShop
 +
**Sell me cheap sort of stuff!
 
*SecretRoom
 
*SecretRoom
**These are items found only in secret rooms.  Give me something worthy of my discovery!
+
**These are items found only in secret free-loot rooms.  Give me something worthy of my discovery!
*ChallengeRoom
+
*HealthShards
**These are items found only in challenge rooms, and they are available as soon as you go into that room.
+
**These are items found only in the bombable blocks.
 +
*HealthForItemsShop
 +
**Sell me super awesome stuff that I have to sacrifice health to buy.
 
*MeleeWeapons
 
*MeleeWeapons
 
*BulletWeapons
 
*BulletWeapons
Line 158: Line 176:
 
*StatPowerupsUncommon
 
*StatPowerupsUncommon
 
*StatPowerupsRare
 
*StatPowerupsRare
 +
*HealthUpgradeRoom
 +
** These should all be health upgrades or similar.
 +
*Incredibilities
 +
** These are the really major items that change the whole flow of the game.
 +
** You can only find these after killing shopkeepers.
 +
*EmptyShop
 +
** Junk stuff that shows up in shops where you previously killed the shopkeeper for that kind of shop.
 +
*ProbationPedestal
 +
** Probation items that give you an item with a bonus on reaching the next floor if you choose to take it.
  
 
==AbilityPointCost==
 
==AbilityPointCost==
Line 207: Line 234:
 
** "Explosive" gets the MissileShotDamage modifier and not the NormalShotDamage one, and vice versa for non-Explosive.
 
** "Explosive" gets the MissileShotDamage modifier and not the NormalShotDamage one, and vice versa for non-Explosive.
 
** "Explosive" shots can reveal secret doors on direct collision
 
** "Explosive" shots can reveal secret doors on direct collision
 +
*LowExplosive
 +
** This lets you have explosive-style stuff that you might provide immunities to without the weapon being able to break walls.
  
 
==DifficultyType==
 
==DifficultyType==
Line 287: Line 316:
 
* NoDying
 
* NoDying
 
**This probation can't actually be violated, but allows the use of disabled_during_probation when you just want it to be "survive to end of room" or "survive to end of floor" to get the benefit.
 
**This probation can't actually be violated, but allows the use of disabled_during_probation when you just want it to be "survive to end of room" or "survive to end of floor" to get the benefit.
 +
*MakeItToNextFloorWithinTimeLimit
 +
**if (probation_magnitude) seconds pass before the end of the probation, the probation is failed
 +
*HaveZeroCreditsWhenMovingToNextFloor
 +
**if the player has non-zero credits when the probation ends, the probation is failed
 +
*BuyItemsBeforeMovingToNextFloor
 +
**if the player has not bought (probation_magnitude) items before the end of the probation, the probation is failed
 +
*CollectAllHealthShardsBeforeMovingToNextFloor
 +
**if the player has not visited all rooms, broken all health-shard-containing blocks, and picked up all health shards on the current floor before the probation ends, the probation is failed
 +
*OpenAllChestsBeforeMovingToNextFloor
 +
**if the player has not visited all rooms and opened all chests (locked and unlocked) on the current floor before the probation ends, the probation is failed
 +
*BuyAllCheapItemsBeforeMovingToNextFloor
 +
**if the player has not visited all cheap-item-shop rooms on the current floor and bought all the items in them before the probation ends, the probation is failed
 +
*HaveFamiliarsWhenMovingToNextFloor
 +
**if the player does not have at least (probation_magnitude) familiars at the end of the probation, the probation is failed
 +
*BuyAllHealthCostItemsBeforeMovingToNextFloor
 +
**if the player has not visited all buy-with-health-shop rooms on the current floor and bought all the items in them before the probation ends, the probation is failed
  
 
==FamiliarType==
 
==FamiliarType==
Line 297: Line 342:
 
** basically acts like a normal ship, according to the behavior flag. For example, you could use this with behavior=Wanderer or behavior=CardinalMover
 
** basically acts like a normal ship, according to the behavior flag. For example, you could use this with behavior=Wanderer or behavior=CardinalMover
 
** will spawn on top of the master entity
 
** will spawn on top of the master entity
 +
* PtarthianOrbit
 +
** behaves like SimpleCircleOrbit, but doesn't try to automatically space out the familiars in a ring.
 +
** only works properly for a familiar defined by a familiar sub-node on an entity, won't work well if just put in the normal "familiars" list or otherwise deployed
  
 
==EntityModifierType==
 
==EntityModifierType==
Line 306: Line 354:
 
* Range
 
* Range
 
** Range that shots will live, specifically. Doesn't do much for BulletPattern stuff.
 
** Range that shots will live, specifically. Doesn't do much for BulletPattern stuff.
* ReloadTime
+
* FireRate
 
* MovementSpeed
 
* MovementSpeed
 
* ShotSize
 
* ShotSize
Line 362: Line 410:
 
* ItemGainOnEnemyKill
 
* ItemGainOnEnemyKill
 
**when an entity (not system) with this kills a ship, the player's inventory of related_item changes by this amount (can be negative, if you wanted a credit fine for killing something, for example)
 
**when an entity (not system) with this kills a ship, the player's inventory of related_item changes by this amount (can be negative, if you wanted a credit fine for killing something, for example)
 +
* ItemGainChanceOnEnemyKill
 +
** when an entity (not system) with this kills a ship, the player's inventory of related_item has this percent chance (expressed between 0 and 100) of gaining 1 of that inventory item type.
 
* HardensAfterTimeStationary
 
* HardensAfterTimeStationary
 
**when an entity has this modifier, and has not moved under power, it shifts towards a dark gray color (maxing out when time not under power >= the value of this modifier)
 
**when an entity has this modifier, and has not moved under power, it shifts towards a dark gray color (maxing out when time not under power >= the value of this modifier)
Line 386: Line 436:
 
**If the result of this modifier is > 0, shots emitted by this entity or system have that percent chance (out of 100) of doing double damage on hit, and showing "Crit!" on the thing it hit
 
**If the result of this modifier is > 0, shots emitted by this entity or system have that percent chance (out of 100) of doing double damage on hit, and showing "Crit!" on the thing it hit
 
**Note that if this value winds up >= 100 every hit will be a crit
 
**Note that if this value winds up >= 100 every hit will be a crit
 +
*CriticalHitDamage
 +
**Applies to the damage of critical hit shots generated by this entity/system, not to the entity itself
 +
**Base Critical Hit damage is 2
 
*TimeDilation
 
*TimeDilation
 
**when applied to an entity, makes that entity behave as if the simulation were going faster or slower
 
**when applied to an entity, makes that entity behave as if the simulation were going faster or slower
Line 396: Line 449:
 
*HealthGains
 
*HealthGains
 
**modifies the impact of health pickups
 
**modifies the impact of health pickups
 +
*RoomWinLootChance
 +
**modifies the base 10% chance of a room with after-win loot spots having those spots populated after a win
 +
*NonBossEnemySpawnRate
 +
**modifies the number of non-boss enemies spawned when a room is entered for the first time
 +
**if this is less than 1 it randomly doesn't seed stuff on the corresponding % of spots
 +
**if this is greater than 1 it randomly seeds more enemies on the existing spots (still obeying the normal ship category rules)
 +
*DoubleItemGainChance
 +
**Whenever you pick up something that gives a positive amount of some item, you have this chance of getting double.
 +
*Diffuse_A, Diffuse_R, Diffuse_G, and Diffuse_B
 +
* Added support for modifier tags to have the types Diffuse_A, Diffuse_R, Diffuse_G, and Diffuse_B.
 +
** These modify the color of the targeted entity accordingly. Note that the final values range from 0 to 1, where white is 1,1,1,1, black is 1,0,0,0, and transparent is anything where A=0. White is generally the "starting point" you will be working with, so most changes will be you suppressing the colors you don't want, or changing the transparency.
 +
** Example:
 +
*** If you have a system with:
 +
**** <modifier target="MyShots" type="Diffuse_G" math="Multiply" magnitude="0.2" />
 +
**** <modifier target="OnUse_ParentEntity" type="Diffuse_R" math="Multiply" magnitude="0.3" duration="0.5" />
 +
*** This will make the shots look more red/blue (depending on their original image), and make the firing entity briefly turn more blue/green.
 +
  
 
=== These require that "math" and "magnitude" be absent, as they're just on/off flags ===
 
=== These require that "math" and "magnitude" be absent, as they're just on/off flags ===
Line 418: Line 488:
 
**entity cannot be hit by shots
 
**entity cannot be hit by shots
 
**entity is immune to damage
 
**entity is immune to damage
 +
*PhasedOut_JustTheShotAvoidance
 +
*PhasedOut_JustTheTransparency
 
* Self_DestroyEnemyShots
 
* Self_DestroyEnemyShots
 
**when on a shot, makes it behave like its firing system had shot_destroys_other_shots
 
**when on a shot, makes it behave like its firing system had shot_destroys_other_shots
Line 434: Line 506:
 
* CannotPickUpItems
 
* CannotPickUpItems
 
**if the player has this, they cannot pick up any items
 
**if the player has this, they cannot pick up any items
 +
* CannotGainFamiliar
 +
**if the player has this, they cannot pick up familiars
 
*SystemShotsInheritEntityMomentum
 
*SystemShotsInheritEntityMomentum
 
**Shots fired by a system modified with this inherit the momentum of the firing ship, and will continue to move in that direction (in addition to any other movement they would do) for their whole duration. Doesn't impact time-to-live, so firing in the direction of movement makes the shots travel further, etc.
 
**Shots fired by a system modified with this inherit the momentum of the firing ship, and will continue to move in that direction (in addition to any other movement they would do) for their whole duration. Doesn't impact time-to-live, so firing in the direction of movement makes the shots travel further, etc.
Line 448: Line 522:
 
*MovesTowardReticule
 
*MovesTowardReticule
 
**Makes the ship or shot move towards the reticule at a speed and acceleration based on that entity. The effects are generally pretty wacky.
 
**Makes the ship or shot move towards the reticule at a speed and acceleration based on that entity. The effects are generally pretty wacky.
 +
*GetAlternateLoot
 +
**if on the player, when the player opens an unlocked chest they get loot as if it were a locked chest
 +
*RevealsSecretHealthRooms
 +
**if on the player, sacrifical shops are always known
 +
*MinibossAndCondemnedBossSkipChance
 +
**if on the player, when entering a miniboss/condemned room for the first time, the boss has this % chance of not seeding
 +
*ReplacesEntityTypeWithItemsFromPool
 +
**if this is on the player, when a room is populated, all (related_entity) seeded are replaced with something from (related_item_pool)
 +
**if the item pool is none, it doesn't replace the entity, it just doesn't seed it
 +
*IgnoresCollisionWithGlassAndOneWay
 +
**an entity affected by this can pass through glass walls and one-way tiles
 +
*ReplacesItemPoolWithOtherItemPool
 +
**if this is on the player when the game is spawning an item from (related_item_pool) it instead pulls from (related_item_pool_2)
 +
**only applies when game logic calls for seeding from a pool; if it just calls for seeding a specific entity type that happens to be in pool then that doesn't count
 +
**if none, related_item_pool_2 is none, just skips seeeding the item rather than replacing it
 +
*ReplacesShipCategoryWithOtherShipCategory
 +
**if this is on the player when the game is spawning an enemy from (related_ship_category) it instead pulls from (related_ship_category_2)
 +
**unlike the item pool one, this applies to specific-entity spawns as well as category-based spawns
 +
**if none, related_ship_category_2 is none, just skips seeding the entity rather than replacing it
  
 
==FlockBehaviorType==
 
==FlockBehaviorType==
Line 497: Line 590:
 
***if this entity is within this distance of a hostile target that it can hit, it pathfinds to that entity
 
***if this entity is within this distance of a hostile target that it can hit, it pathfinds to that entity
 
***used in conjunction with a short-ranged attack with an aoe and the destroys_firing_entity flag, it can make a kamikaze ram; otherwise it can be given guns to harass the target
 
***used in conjunction with a short-ranged attack with an aoe and the destroys_firing_entity flag, it can make a kamikaze ram; otherwise it can be given guns to harass the target
 +
*FamiliarBeelineFollower, FamiliarAttacksTowardPlayer
 +
**Basically the same, and works like FamiliarFollower but is more singleminded about reaching the player.
  
 
==InventoryItemType==
 
==InventoryItemType==
Line 503: Line 598:
 
*Missile
 
*Missile
 
*Credit
 
*Credit
 +
*HealthShard
 +
*ExperiencePoint
  
 
==MathType==
 
==MathType==
Line 508: Line 605:
 
*Add
 
*Add
 
**Just adds to whatever base value is there.
 
**Just adds to whatever base value is there.
 +
*AdditiveMultiplier
 +
**Variant combination of Add and Multiply. All modifers with AdditiveMultiplier are added together beforing multiplying the value (applies after Add and before Multiply).
 
*Multiply
 
*Multiply
 
**Multiplies the result. Note: all multiply modifiers are applied AFTER all add modifiers.
 
**Multiplies the result. Note: all multiply modifiers are applied AFTER all add modifiers.
*Set
+
*AddAfterMultipliers
**Sets the result to this value, completely ignoring the base value and any add or multiply modifiers.
+
**similar to Add, but applied after multipliers rather than before
**If there's more than one Set modifier for a particular modifier type applying at once, the one with the lowest (non-negative) value takes precedence
 
***this allows for capping MaxHealth, where the thing that can override the cap is a lower cap
 
**doesn't work with negative values (that support can be added if necessary, but it didn't fit the framework naturally)
 
 
*Floor
 
*Floor
 
**Prevents the result from being below this value, unless a Set modifier is used to make it so.
 
**Prevents the result from being below this value, unless a Set modifier is used to make it so.
Line 521: Line 617:
 
**Prevents the result from being above this value, unless a Set modifier is used to make it so.
 
**Prevents the result from being above this value, unless a Set modifier is used to make it so.
 
**If multiple Ceiling modifiers are involved in the same computation, the lowest ceiling takes precedence.
 
**If multiple Ceiling modifiers are involved in the same computation, the lowest ceiling takes precedence.
 +
*Set
 +
**Sets the result to this value, completely ignoring the base value and any add or multiply modifiers.
 +
**If there's more than one Set modifier for a particular modifier type applying at once, the one with the lowest (non-negative) value takes precedence
 +
***this allows for capping MaxHealth, where the thing that can override the cap is a lower cap
 +
**doesn't work with negative values (that support can be added if necessary, but it didn't fit the framework naturally)
  
 
==AnchorLocation==
 
==AnchorLocation==
Line 555: Line 656:
 
*Consumable
 
*Consumable
 
*Attachment
 
*Attachment
 +
*MainGun
 +
*Missile
 +
*Incredibility
  
 
==EffectType==
 
==EffectType==
 
*RerollShopItems
 
*RerollShopItems
 
**Only works inside shops. Any items on the ground that still require purchasing are removed and replaced with other items the shop could normally roll.
 
**Only works inside shops. Any items on the ground that still require purchasing are removed and replaced with other items the shop could normally roll.
 +
**If related_item_pool is set to something other than none, the reroll uses that specified pool instead.
 
*ChangeCurrentHullHealth
 
*ChangeCurrentHullHealth
 
**Changes (target)'s hull health by (magnitude). Can be positive or negative.
 
**Changes (target)'s hull health by (magnitude). Can be positive or negative.
 +
**You can use math="Set" with this to make it just set the health to that value rather than adding/subtracting.
 
*ChangeCurrentShieldHealth
 
*ChangeCurrentShieldHealth
 
**Changes (target)'s shield health by (magnitude). Can be positive or negative.
 
**Changes (target)'s shield health by (magnitude). Can be positive or negative.
 +
**You can use math="Set" with this to make it just set the health to that value rather than adding/subtracting.
 
*CopyModifiers
 
*CopyModifiers
 
**Copies the modifiers defined as sub-nodes of this effect to (target)'s modifier list.
 
**Copies the modifiers defined as sub-nodes of this effect to (target)'s modifier list.
Line 577: Line 684:
 
**Also gives that entity a momentum between (second_magnitude) and (third_magnitude) at a random angle, if second_magnitude > 0 and third_magnitude >= second_magnitude
 
**Also gives that entity a momentum between (second_magnitude) and (third_magnitude) at a random angle, if second_magnitude > 0 and third_magnitude >= second_magnitude
 
**"the related entity" is the parent entity of the related system if applicable, or of the related entity otherwise, or just the player if neither of those is applicable.
 
**"the related entity" is the parent entity of the related system if applicable, or of the related entity otherwise, or just the player if neither of those is applicable.
 +
*StartMovementDrivingPattern
 +
**any target entity that isn't currently following bullet pattern logic starts following the first bullet in (related_pattern)
 +
**effect tags with type StartMovementDrivingPattern now support related_pattern having a list of patterns to be randomly selected from on each triggering.
 +
*ChangeCurrentInventory
 +
**instantly changes the player's inventory of (related_item) by (magnitude) according to (math, default Add)
 +
**normally EntityModifierType.InventoryChangePerSecond takes care of any need for this, but when you want to add an exact amount (like with the probation rewards) this avoids that modifier's imprecision.
 +
*WinRoom
 +
**When used, the player automatically wins the current room.
  
 
==EffectTiming==
 
==EffectTiming==
Line 583: Line 698:
 
*OnRoomSwitch
 
*OnRoomSwitch
 
**For effects on a system. Means the effect happens every time the player switches rooms.
 
**For effects on a system. Means the effect happens every time the player switches rooms.
 +
*OnRoomSwitch_OnlyFirstTimeInRoom
 +
**For effects on a system. Similar to OnRoomSwitch, but only applies the first time a given room is entered.
 
*OnModifierAdded
 
*OnModifierAdded
 
**For effects on a modifier. Means the effect happens once, when the modifier is added to an entity.
 
**For effects on a modifier. Means the effect happens once, when the modifier is added to an entity.
 
*OnModifierRemoved
 
*OnModifierRemoved
 
**For effects on a modifier. Means the effect happens once, when the modifier is removed (for whatever reason, not specific to probation) from an entity.
 
**For effects on a modifier. Means the effect happens once, when the modifier is removed (for whatever reason, not specific to probation) from an entity.
 +
*OnEnemyKilled_ByAnySystem
 +
**For effects on a system. Means the effect happens every time this system's parent entity kills something.
 +
*OnEnemyKilled_ByMe
 +
**For effects on a system. Means the effect happens every time this system kills something.
 +
*OnEntry
 +
**For effects on a floor or on a (player) system. Means the effect happens once, when the player enters the floor.
 +
*OnLeaving
 +
**For effects on a floor or on a (player) system. Means the effect happens once, when the player leaves the floor.
  
 
==EffectTargeting==
 
==EffectTargeting==
Line 598: Line 723:
 
*Self
 
*Self
 
**Targets the parent entity of the related system, if any, or the related entity if there's no specific system
 
**Targets the parent entity of the related system, if any, or the related entity if there's no specific system
 +
*AllNormalEnemiesAndShots
 +
*NonCondemnedBossesAndShots
 +
*AllAutoPickups
 +
 +
==ConditionType==
 +
*PlayerHasNoShields
 +
*PlayerHasShields
 +
*PlayerHasMissiles
 +
*PlayerHasNoMissiles
 +
*PlayerIsMoving
 +
*PlayerLowHealth (33% or less)
 +
*EntityIsAtFullHealth, EntityIsNotAtFullHealth
 +
**If this effect is on a system, refers to that system's parent entity
 +
**Otherwise, refers to the player
  
 
==BulletConditionalSpawnRule==
 
==BulletConditionalSpawnRule==
Line 614: Line 753:
 
** This floor has the "final" boss in it.
 
** This floor has the "final" boss in it.
 
* 7
 
* 7
** This floor has the REAL final boss in it, but is only accessible after winning 10 of the shorter runs.
+
** This floor has the REAL final boss in it, but is only accessible after winning 3 of the shorter runs.
  
[[Starward_Rogue:Main#XML_Documentation|Starward Rogue XML Documentation Main]]
 
  
[[Category:Starward Rogue]]
+
[[Category:Starward Rogue]][[Category:Starward Rogue XML]]

Latest revision as of 17:16, 15 July 2018

GameEntityCategory

Oi! What is this thing? Depending on what you say, it will be parsed differently.

  • Ship
    • Player hulls or enemy ships.
  • Shot
    • An actual bullet (you won’t use this much, if at all).
  • ItemPickup
    • What it says on the tin.
  • Obstacle
    • Funky stuff you won’t use much, if at all.
  • NonSim
    • Is not added into ANY of the normal lists and thus does not impact the normal sim logic for entities, and is not serialized. Just for use in non-sim bullet patterns that are purely for visual effect.

ShipCategory

What sort of ship is this, and how should it thus seed in rooms? This is a required field for any ship.

Note that ones that end in 1x1 should have a pessimistic bounding box that fits in a 64px square, ones that end in 3x3 should fit in a 192px square, 5x5 in 320px, 7x7 in 448px, and 9x9 in 576 (this is what bosses are allowed to use up to).

  • Player
    • This is for player hulls that the player can choose from. It’s not an enemy ship.
  • PlayerFamiliar
    • Used for familiars and other little followers that are your allies.
  • EnemyFamiliar
    • Used for familiars and other little followers that are attached to an enemy instead of you.
  • Boss
    • Goes in the end-of-floor boss rooms.
    • Default ability point drop: 100
  • BossLaterStage
    • These aren’t independent enemies, per se. Rather, if there is a multi-stage boss or miniboss, the later stages should be flagged as this.
    • Default ability point drop: 100
  • RegularEnemyLaterStage
    • These aren’t independent enemies, per se. Rather, if there is a multi-stage enemy, the later stages should be flagged as this -- NOT as BossLaterStage, or it will trigger certain boss logic you don't want here.
    • Default ability point drop: 7
  • BossBuddy
    • Sometimes bosses have multiple parts to themselves. This defines one of the other parts.
    • Default ability point drop: 100
  • FinalBoss
    • This is the "last boss," although not really. It's the last boss for the early runs (floor 5), and then a major speedbump in later runs.
    • It's perfectly fine to have more than one of these; the game will choose between them at random.
    • Default ability point drop: 300
  • SuperFinalBoss
    • This is the TRUE last boss. It's only on floor 7, and you only encounter it after having beaten the fake-ish "last boss" a certain number of times.
    • It's perfectly fine to have more than one of these; the game will choose between them at random.
    • Default ability point drop: 500
  • Miniboss
    • Goes in miniboss rooms.
    • Default ability point drop: 50
  • CondemnedRoomBoss
    • The centerpiece of condemned rooms.
    • Default ability point drop: 50
  • Pursuer_1x1
    • Little fast guys that chase you around and generally harass you in some fashion if you don’t move fast.
    • Default ability point drop: 2
  • LocalGuard_1x1
    • Little immobile (or nearly so) guys that hang out in an area and make it hard to go into that area somehow.
    • Default ability point drop: 2
  • Jumpscare_1x1
    • Little guys that don’t move at all or much until you get near them, and then bad things happen. So they may make part of the room effectively inaccessible until the player has dealt with other hazards in the room.
    • Default ability point drop: 4
  • Sniper_3x3
    • These guys likely don’t move much or at least not fast, but they lay down long range dangerous attacks. Must be super careful with these, as we want to make sure even players on small monitors get a chance to see these guys before these guys are able to shoot at them. Assume they cannot shoot over any obstacles.
    • Default ability point drop: 2
  • LocalAOE_3x3
    • Rather like the LocalGuard, but more explosive in some fashion. May be able to use this fact against other enemies in the room, may not be. Assume they can shoot over everything except indestructible walls.
    • Default ability point drop: 3
  • Wander_3x3
    • This is sort of the “bread and butter” enemy that is most common. These guys “wander around and do stuff.” They don’t chase you, but they probably track you with weapons and such if you go near them (or they wander near you).
  • Attacker_3x3
    • These guys actively hunt you through the room, although not in a true pathfinding sense. So you need to get in the general vicinity of them for them to come after you, but when you do they are then going to converge and stay on you.
    • Default ability point drop: 3
  • ChaosAdder_3x3
    • These guys do… who knows what. Whatever it is, it makes a big mess of everything else around them. Probably lots and lots of bullets, or something else that makes everything else 10x harder. Use sparingly per room. ;)
    • Default ability point drop: 4
  • Challenge_5x5
    • These guys are crazier than the average bear, and need to be only used in challenge rooms. These are basically enemies that are harder than expected.
    • Default ability point drop: 25
  • Wander_5x5
    • Same as the smaller wanderer, except needs more room to move about and is also larger, better armored, probably more damaging, etc.
    • Default ability point drop: 3
  • Attacker_5x5
    • Same as the smaller attacker, except needs more room to move about and is also larger, better armored, probably more damaging, etc.
    • Default ability point drop: 5
  • ChaosAdder_5x5
    • Same as the smaller chaos adder, except needs more room to move and is also larger, better armored, probably even more chaos results, etc.
    • Default ability point drop: 7
  • Fearsome_7x7
    • Whatever this is, it is very very bad. These are the biggest boys outside of bosses and minibosses.
    • Default ability point drop: 15
  • EnemySpawer_Spawnee
    • These are small and numerous, and generally should die in one hit. They come pouring out of enemy spawners at a rate of 1 every 2 seconds.
    • Default ability point drop: 0
  • CondemnedRoom_1x1
    • ONLY should be used in condemned rooms. Make sure they have a health drain set on them.
    • Little fast guys that chase you around and can get through all the nooks and crannies to chase you.
    • Default ability point drop: 0
  • CondemnedRoom_5x5
    • ONLY should be used in condemned rooms. Make sure they have a health drain set on them.
    • Larger scary guys that may or may not be able to get through the nooks and crannies, but instead make certain parts of the room that you REALLY don't want to go in.
    • Default ability point drop: 0
  • RobotShopkeeper
    • ONLY should be used in robot shops. Very specialized and really shouldn't be used beyond what the basics were set up for.
  • CheapItemShopkeeper
    • ONLY should be used in cheap item shops. Very specialized and really shouldn't be used beyond what the basics were set up for.
  • WeaponsShopkeeper
    • ONLY should be used in weapon shops. Very specialized and really shouldn't be used beyond what the basics were set up for.
  • RandomFloatingChunksOfStuff
    • Used by Antigravitate Blockage/Shards in order to not proc on death effects.

ItemPool

  • AfterRoomMinor
    • This will appear after some rooms are complete, but it’s a super duper minor sort of reward. Basically health or energy or something. Not even a consumable weapon.
  • AfterRoomConsumable
    • This will appear after some rooms are complete, and are always consumable weapon/item slot items of some sort. Note that NOT all consumable items need to be in this pool: many of them may very well be too rare to be here. These are just the ones that you should find semi-commonly.
  • [Consumable freestanding pools]
    • These are directly placed in certain rooms as an enticement to go to some part of the room. Usually something the player has to expend some missiles to get to, or undertake some other risk.
    • These should be overlapping a lot with the after-room consumables, but perhaps with a few more uncommon things thrown in here from time to time, and minus the super-basic consumables perhaps.
    • Actual types:
      • FreestandingCommonConsumable (95% chance)
      • FreestandingRareConsumable (5% chance)
  • [major freestanding pools]
    • These are the major "treasure room" items.
    • The different categories each have a certain number of "raffle tickets" (so to speak) put into a grab bag, and then one ticket is randomly chosen. An item from within the chosen category is used. The more tickets, the more likely the category is to show up.
    • Actual types:
      • FreestandingCommonMain (100 tickets)
      • FreestandingRareMain (5 tickets)
      • FreestandingCommonSecondary (200 tickets)
      • FreestandingRareSecondary (10 tickets)
      • FreestandingCommonPowerUp (400 tickets)
      • FreestandingRarePowerUp (20 tickets)
  • UnlockedChest
    • If a minor chest that is not locked from the start is opened, then one of these things will appear. These might be some sort of minor item, a consumable, a weakish ammo weapon or familiar, or who knows. Nothing too exciting, but also not so basic that the chests are not exciting.
  • LockedChest
    • We had to use a keycard to get whatever this is, so there ought to be some worth to it.
  • MinibossDrop
    • We just killed a miniboss. What are we going to get next?? ;)
  • BossDrop
    • Dead boss at the end of the floor! Now let’s show him his reward, Jim...
  • RegularEnemyDrop
    • Regular enemies have a low chance of dropping these things, as do certain shootable obstacles. Nothing at all exciting here; pretty much just the minor ammo and missile and credit drops.
  • RobotShop
    • Sell me robots or things to help upgrade robots!
  • WeaponsShop
    • Sell me weapons or things to help upgrade weapons!
  • DefensiveShop
    • Sell me things to help my defense!
  • CheapItemShop
    • Sell me cheap sort of stuff!
  • SecretRoom
    • These are items found only in secret free-loot rooms. Give me something worthy of my discovery!
  • HealthShards
    • These are items found only in the bombable blocks.
  • HealthForItemsShop
    • Sell me super awesome stuff that I have to sacrifice health to buy.
  • MeleeWeapons
  • BulletWeapons
  • NeedleWeapons
  • BeamWeapons
  • ExplosiveWeapons
  • FireWeapons
  • SpecialWeapons
  • UltraRareWeapons
  • ModuleAttachmentsStandard
  • ModuleAttachmentsUncommon
  • ModuleAttachmentsRare
  • ConsumableWeaponsStandard
  • ConsumableWeaponsUncommon
  • ConsumableWeaponsRare
  • ConsumableItemsStandard
  • ConsumableItemsUncommon
  • ConsumableItemsRare
  • CodeItems
  • StatPowerupsStandard
  • StatPowerupsUncommon
  • StatPowerupsRare
  • HealthUpgradeRoom
    • These should all be health upgrades or similar.
  • Incredibilities
    • These are the really major items that change the whole flow of the game.
    • You can only find these after killing shopkeepers.
  • EmptyShop
    • Junk stuff that shows up in shops where you previously killed the shopkeeper for that kind of shop.
  • ProbationPedestal
    • Probation items that give you an item with a bonus on reaching the next floor if you choose to take it.

AbilityPointCost

  • IncrediCheapAlreadyUnlocked = 40
  • LowAlreadyUnlocked = 100
  • AverageAlreadyUnlocked = 200
  • HighAlreadyUnlocked = 500
  • VeryHighAlreadyUnlocked = 900
  • SuperHighAlreadyUnlocked = 2000
  • UltraHighAlreadyUnlocked = 5000
  • IncrediCheapLocked = 80
  • LowLocked = 200
  • AverageLocked = 400
  • HighLocked = 1000
  • VeryHighLocked = 1800
  • SuperHighLocked = 4000
  • UltraHighLocked = 10000

EntitySystemCategory

  • Weapon
    • The default
    • This will work on a player entity, but it will target and fire automatically, paying no attention to player input
  • PlayerDirectedWeapon
    • Only for weapons you want to trigger on the left mouse button (or firing stick).
    • This will work on a non-player entity, like an familiar, but it only fire when you fire and will generally fire at the cursor
  • DirectUseSystem
    • basically it's like a weapon in terms of obeying reload times, ammo requirements, etc, but it doesn't do any targeting or emit any shots; its behavior is defined by other stuff
    • right now the only point is in conjunction with OnUse_ParentEntity modifiers
    • doesn't require shot_type, damage_type, shots_per_salvo, attack_power, range_actual, targeting_logic
    • if the system also has required_item_type and required_item_amount, it will require and deduct that amount of that item from the player to work

DamageType

  • Ballistic
  • Tracking
  • Gravity
  • Deployment
  • Laser
  • Energy
  • Ion
  • Concussive
  • Piercing
  • Poison
  • Fire
  • Acid
  • Lightning
  • Explosive
    • "Explosive" gets the MissileShotDamage modifier and not the NormalShotDamage one, and vice versa for non-Explosive.
    • "Explosive" shots can reveal secret doors on direct collision
  • LowExplosive
    • This lets you have explosive-style stuff that you might provide immunities to without the weapon being able to break walls.

DifficultyType

  • VeryEasy
  • Easy
  • Normal
  • Hard
  • Misery

FiringTiming

  • AllTheTime
    • always fires if there's any eligible target at all, even if not in range
  • OnlyInRange
    • only fires when there's something in range
  • WhenParentEntityHit
    • only fires when the parent entity is hit by something (which authorizes one salvo)
  • Never
    • never does normal salvo logic; useful with systems with category=DirectUseSystem

TargetingLogic

  • Direct
    • fires at where the target is now
  • Lead
    • fires at where this shot would intercept the target at its present speed and course. If the target is travelling too fast for the shot to intercept at any angle, this just shoots at the target's current location.
  • Dumbfire
    • fires in a straight line from the firing ship at the angle the firing ship is currently facing

FourDirection

  • North
  • East
  • South
  • West

RoomType

  • Starting
  • StartingForFirstFloor
  • MonsterFree
  • Item
  • HealthUpgradeRoom
  • SecretFreeLoot
  • HealthForItemsShop
  • CheapItemShop
  • RobotShop
  • WeaponsShop
  • Miniboss
  • Condemned
  • Boss_Rectangle
  • Boss_Large
  • Boss_Giant
  • Boss_TallFromSouth
  • Standard
  • StandardEW
  • StandardNS
  • TunnelWide
  • TunnelTall
  • Quad
  • QuadEE
  • QuadWW
  • QuadNN
  • QuadSS
  • FatVertical
  • FatHorizontal
  • Square
  • SquareNE
  • SquareSW
  • Boss_Square
  • Boss_RectEdged
  • SquareNE
  • SquareSW
  • StandardEW
  • StandardNS

EntityModifierProbationType

  • NoMissileUse
  • NoEnergyUse
  • NoTakingDamage
  • NoHealingHull
  • NoUsingConsumable
  • NoDying
    • This probation can't actually be violated, but allows the use of disabled_during_probation when you just want it to be "survive to end of room" or "survive to end of floor" to get the benefit.
  • MakeItToNextFloorWithinTimeLimit
    • if (probation_magnitude) seconds pass before the end of the probation, the probation is failed
  • HaveZeroCreditsWhenMovingToNextFloor
    • if the player has non-zero credits when the probation ends, the probation is failed
  • BuyItemsBeforeMovingToNextFloor
    • if the player has not bought (probation_magnitude) items before the end of the probation, the probation is failed
  • CollectAllHealthShardsBeforeMovingToNextFloor
    • if the player has not visited all rooms, broken all health-shard-containing blocks, and picked up all health shards on the current floor before the probation ends, the probation is failed
  • OpenAllChestsBeforeMovingToNextFloor
    • if the player has not visited all rooms and opened all chests (locked and unlocked) on the current floor before the probation ends, the probation is failed
  • BuyAllCheapItemsBeforeMovingToNextFloor
    • if the player has not visited all cheap-item-shop rooms on the current floor and bought all the items in them before the probation ends, the probation is failed
  • HaveFamiliarsWhenMovingToNextFloor
    • if the player does not have at least (probation_magnitude) familiars at the end of the probation, the probation is failed
  • BuyAllHealthCostItemsBeforeMovingToNextFloor
    • if the player has not visited all buy-with-health-shop rooms on the current floor and bought all the items in them before the probation ends, the probation is failed

FamiliarType

  • NormalOrbit
    • stays relative to the master ship, never collides with walls, moves around in smooth-ish arcs from random offset to random offset (similar to movement of armadas around planets on the TLF metamap)
  • SimpleCircleOrbit
    • stays relative to the master ship, never collides with walls, moves around in a smooth-ish circle around the master ship
  • NormalShipBehavior
    • basically acts like a normal ship, according to the behavior flag. For example, you could use this with behavior=Wanderer or behavior=CardinalMover
    • will spawn on top of the master entity
  • PtarthianOrbit
    • behaves like SimpleCircleOrbit, but doesn't try to automatically space out the familiars in a ring.
    • only works properly for a familiar defined by a familiar sub-node on an entity, won't work well if just put in the normal "familiars" list or otherwise deployed

EntityModifierType

These require attributes "math" and "magnitude"

  • MaxHealth
  • MaxShields
  • Range
    • Range that shots will live, specifically. Doesn't do much for BulletPattern stuff.
  • FireRate
  • MovementSpeed
  • ShotSize
    • Applies to the size of shots generated by this entity, not to the entity itself.
  • MySize
    • Applies to the entity itself. So if you want a system that causes its shots to be huge you can give it:
      • <modifier target="MyShots" type="MySize" math="Multiply" magnitude="4" />
  • NormalShotDamage
    • Applies to the damage of shots generated by this entity, not to the entity itself.
    • doesn't apply to melee damage, or the player's missiles
  • MissileShotDamage
    • Applies to the damage of shots generated by this entity, not to the entity itself.
  • AreaOfEffect_Self
    • only makes sense on shots, forces the shot to be aoe
  • MeleeDamage
    • Applies to the damage of shots generated by this entity, not to the entity itself.
    • this is the implicit "on-touch" damage that happens when the player's hitbox overlaps an enemy hitbox
  • IncomingDamage
    • accepts (but does not require) the damage_type attribute
      • if specified, only applies to damage from that source
      • if not specified, applies to all damage
  • Acceleration
  • Deceleration
    • this refers to how quickly an entity slows down from its current speed to zero.
    • If you want to adjust how fast an entity moves, you want MovementSpeed instead.
  • InventoryChangePerSecond
    • also requires "related_item" attribute, see below
    • only does anything when it applies to the player's entity
  • DamagePerSecond
    • does damage to the thing with the modifier every sim-step
    • uses damage_type
  • DamagePerSecond_IfMoving
    • similar to DamagePerSecond, but only has an impact if the ship is moving under power (not decelerating or being knocked back or whatever)
  • MyOwnDamage
    • unlike NormalShotDamage, which only impacts shots generated by the entity with that modifier, this one is for the shots themselves, and modifies the damage it does on impact
  • AddsWeaknessVsAmmoWeapons
    • When applied to shot, causes it to change the weakness-to-energy-weapons of the thing(s) hit by this amount, where 0 is no change and 1 is "increase damage by 100%"
      • This only impacts the next hit from an energy weapon
    • For a player main gun, if it has no modifier of this type targeting MyShots, it implicitly gets one with Add and 0.01
  • AddsWeaknessVsAmmoWeapons_Cap
    • When applied to shot, causes the effect of the previous modifier to never increase the target's weakness above this amount
    • For a player main gun, if it has no modifier of this type targeting MyShots, it implicitly gets one with Add and 0.1
  • ItemCosts
    • modifies requires_item_amount values where related_item matches requires_item_type
    • notably, used with Energy, this can make energy weapons cost more or less energy to fire
  • ItemGains
    • modifies on_pickup_grants_amount values where related_item matches on_pickup_grants_item
    • notably, used with Credits, this can increase the value of future credit drops
  • InventoryCapacity
    • modifies the max amount of related_item that you can store
    • notably, used with Energy, this can increase or decrease the player's energy storage capacity
  • HealthGainOnEnemyKill
    • when an entity (not system) with this kills a ship, it gains this much health
    • partial gain (less than one point) is stored and can be applied as actual health gain if a later kill brings it up to a full point (if it happens in the same room)
  • ItemGainOnEnemyKill
    • when an entity (not system) with this kills a ship, the player's inventory of related_item changes by this amount (can be negative, if you wanted a credit fine for killing something, for example)
  • ItemGainChanceOnEnemyKill
    • when an entity (not system) with this kills a ship, the player's inventory of related_item has this percent chance (expressed between 0 and 100) of gaining 1 of that inventory item type.
  • HardensAfterTimeStationary
    • when an entity has this modifier, and has not moved under power, it shifts towards a dark gray color (maxing out when time not under power >= the value of this modifier)
    • when its time not under power >= the value of this modifier, the ship cannot take damage
  • StoreItemPrices
    • if the player has this, it modifies all credit_cost values
  • Inaccuracy
    • When on a ship or a system, modifies that system's inaccuracy_spread.
  • ShotsDriftTowardsHostileShips_Range
    • if on a system, modifies shots_drift_towards_hostile_ships_range for that system
    • if on an entity, does so for all systems on that entity
  • ShotsDriftTowardsHostileShips_Speed
    • if on a system, modifies shots_drift_towards_hostile_ships_speed for that system
    • if on an entity, does so for all systems on that entity
  • GravityTowardsEnemyShots_PullPerSecond
    • only works on entity, modifies gravity_pull_per_second
    • also effectively sets gravity_affects_shots to true
    • use negative values for repulsion
  • GravityTowardsEnemyShots_FalloffPerUnitDistance
    • only works on entity, modifies gravity_falloff_per_unit_distance
    • also effectively sets gravity_affects_shots to true
  • CriticalHitChance
    • Applies to the damage of shots generated by this entity/system, not to the entity itself
    • If the result of this modifier is > 0, shots emitted by this entity or system have that percent chance (out of 100) of doing double damage on hit, and showing "Crit!" on the thing it hit
    • Note that if this value winds up >= 100 every hit will be a crit
  • CriticalHitDamage
    • Applies to the damage of critical hit shots generated by this entity/system, not to the entity itself
    • Base Critical Hit damage is 2
  • TimeDilation
    • when applied to an entity, makes that entity behave as if the simulation were going faster or slower
    • so if you apply multiply,0.5 with this, the entity will act as if the simulation were going half as fast
    • probably don't try giving this adds, or multiplying by zero or negatives
  • AvoidDamageChance
    • whenever the affected entity would take damage, it has this percent (out of 100) chance of taking zero damage instead
  • LootFloorIndex
    • if on the player, when the player gets loot, acts like the floor is more or less than it is (so adding 1 causes it to consider loot you'd normally only find on the next floor, etc)
  • HealthGains
    • modifies the impact of health pickups
  • RoomWinLootChance
    • modifies the base 10% chance of a room with after-win loot spots having those spots populated after a win
  • NonBossEnemySpawnRate
    • modifies the number of non-boss enemies spawned when a room is entered for the first time
    • if this is less than 1 it randomly doesn't seed stuff on the corresponding % of spots
    • if this is greater than 1 it randomly seeds more enemies on the existing spots (still obeying the normal ship category rules)
  • DoubleItemGainChance
    • Whenever you pick up something that gives a positive amount of some item, you have this chance of getting double.
  • Diffuse_A, Diffuse_R, Diffuse_G, and Diffuse_B
  • Added support for modifier tags to have the types Diffuse_A, Diffuse_R, Diffuse_G, and Diffuse_B.
    • These modify the color of the targeted entity accordingly. Note that the final values range from 0 to 1, where white is 1,1,1,1, black is 1,0,0,0, and transparent is anything where A=0. White is generally the "starting point" you will be working with, so most changes will be you suppressing the colors you don't want, or changing the transparency.
    • Example:
      • If you have a system with:
        • <modifier target="MyShots" type="Diffuse_G" math="Multiply" magnitude="0.2" />
        • <modifier target="OnUse_ParentEntity" type="Diffuse_R" math="Multiply" magnitude="0.3" duration="0.5" />
      • This will make the shots look more red/blue (depending on their original image), and make the firing entity briefly turn more blue/green.


These require that "math" and "magnitude" be absent, as they're just on/off flags

  • ReflectsOffTerrain
    • Comes back at the opposite angle it came in on.
  • RicochetsOffTerrain
    • Comes back at a different angle than it came in on (if it was a shallow angle of incidence, the angle of reflection is shallow, etc)
  • IgnoresCollisionWithNonWallTerrain
    • Passes through Shootable and Bombable obstacles, but not the Indestructible obstacles (look like walls) or the exterior wall that bounds the room.
  • NonMeleeCannotFire
    • Prevents all its normal weapons from firing; only the implicit on-touch-damage systems will work during the duration
  • DestroysTouchingShootables
    • If touches a shootable while this modifier is applied, that shootable is destroyed.
  • DestroysTouchingBombables
    • Same deal with bombables.
  • IgnoresCollisionWithWallTerrain
    • Passes through Indestructible obstacles (look like walls) and the exterior wall that bounds the room. Does not pass through shootables or bombables (but you can set that flag too)
  • SystemDisabledAndInvisible
    • System doesn't render or do anything while this is applied.
  • PhasedOut
    • entity draws at half alpha
    • entity cannot be hit by shots
    • entity is immune to damage
  • PhasedOut_JustTheShotAvoidance
  • PhasedOut_JustTheTransparency
  • Self_DestroyEnemyShots
    • when on a shot, makes it behave like its firing system had shot_destroys_other_shots
  • Self_NotDestroyedOnCollisionWithShip
    • when on a shot, makes it behave like its firing system had shot_is_not_stopped_by_hitting
  • SystemAutoFireDuringSprint
    • while sprinting, if this system is on the player ship and would not normally be fired (its key isn't being held or whatever), it fires anyway and the shots are aimed directly behind the ship
  • RevealsWholeMap
    • when the player has this modifier, the whole map for the current floor is revealed; if the player still has this modifier after a floor transition it reveals that new floor as well
  • RevealsShopsItemRoomsAndBossRoom
    • similar to RevealsWholeMap, but just for shop, item, and boss rooms
  • SystemCannotBeDropped
    • if the player has this on their ammo system, they cannot pick up any item that would cause their ammo system to be destroyed or swapped out
      • same deal with consumable system
      • similar with main gun system (no pickups destroy it, but some can swap it out)
  • CannotPickUpItems
    • if the player has this, they cannot pick up any items
  • CannotGainFamiliar
    • if the player has this, they cannot pick up familiars
  • SystemShotsInheritEntityMomentum
    • Shots fired by a system modified with this inherit the momentum of the firing ship, and will continue to move in that direction (in addition to any other movement they would do) for their whole duration. Doesn't impact time-to-live, so firing in the direction of movement makes the shots travel further, etc.
  • SteeringDisabled
    • Prevents the entity from changing direction.
  • MustGoAsFastAsPossible
    • Forces the entity to go as fast as possible in whatever direction it's facing (probably best used with SteeringDisabled)
  • TemporarilyGrantSystem
    • Gives the entity this system. If this modifier expires for whatever reason, that system is removed.
  • IgnoresLocks
    • Only matters on the player. If present, the player does not need keycards to open locked doors or chests.
  • HideMinimap
    • Only works on the player. As long as this modifier remains on the player, the minimap will simply not be rendered.
  • MovesTowardReticule
    • Makes the ship or shot move towards the reticule at a speed and acceleration based on that entity. The effects are generally pretty wacky.
  • GetAlternateLoot
    • if on the player, when the player opens an unlocked chest they get loot as if it were a locked chest
  • RevealsSecretHealthRooms
    • if on the player, sacrifical shops are always known
  • MinibossAndCondemnedBossSkipChance
    • if on the player, when entering a miniboss/condemned room for the first time, the boss has this % chance of not seeding
  • ReplacesEntityTypeWithItemsFromPool
    • if this is on the player, when a room is populated, all (related_entity) seeded are replaced with something from (related_item_pool)
    • if the item pool is none, it doesn't replace the entity, it just doesn't seed it
  • IgnoresCollisionWithGlassAndOneWay
    • an entity affected by this can pass through glass walls and one-way tiles
  • ReplacesItemPoolWithOtherItemPool
    • if this is on the player when the game is spawning an item from (related_item_pool) it instead pulls from (related_item_pool_2)
    • only applies when game logic calls for seeding from a pool; if it just calls for seeding a specific entity type that happens to be in pool then that doesn't count
    • if none, related_item_pool_2 is none, just skips seeeding the item rather than replacing it
  • ReplacesShipCategoryWithOtherShipCategory
    • if this is on the player when the game is spawning an enemy from (related_ship_category) it instead pulls from (related_ship_category_2)
    • unlike the item pool one, this applies to specific-entity spawns as well as category-based spawns
    • if none, related_ship_category_2 is none, just skips seeding the entity rather than replacing it

FlockBehaviorType

  • Attacker
    • It comes chasing after you, but moving directly for you and not paying attention to walls.
    • Not going to work well in enclosed areas. Once it gets in firing range it will stop, and it will move out of range if you get a bit closer to it. It’s kiting you, basically.
  • Stationary
    • sits there without moving.
  • Wanderer
    • wanders around from point to point at random.
    • Changes direction when it hits an obstacle or wall, or when it goes a certain distance (defined below).
    • Totally separate properties that are only relevant when using wanderer (so I’ll show them here):
      • wander_distance_min (int)
      • wander_distance_max (int)
      • These two properties, default 300 and 600 respectively, say how far the enemy will move before considering changing directions (assuming it doesn’t hit something else first).
      • In other words, when it starts moving it chooses a target that is rand(min,max) distance away.
  • PathfindingAttacker
    • More sophisticated tracking of you, trying to come after you.
    • Will collide with walls as if was 64x64 in size when in this mode, so big enemies using this may wind up seeming to go through impossible gaps if you use this on them. Best for smaller enemies.
  • LineOfSightAttacker
    • Same as Attacker mode, but will move toward the player if it has line of sight on the player. This will work well in any sort of space, but mainly for enemies that lurk.
    • Note: has no impact on whether or not the entity's weapons fire. To make the weapons require LOS on the player use requires_line_of_sight_of_player_to_fire="true" on the weapon system(s).
  • CardinalMover
    • Moves around in the four cardinal directions only, turning in a new direction when it hits an obstruction. If moves for 5 seconds with no collision, will potentially change direction.
    • Totally separate property that is only relevant when using cardinal mover (so I’ll show it here):
      • cardinal_mover_random_turn_interval (float)
      • Default 5. This is what sets the “if moves for x seconds with no collision, will potentially change direction” number.
  • Zamboni
    • travels up until it hits a wall
    • then goes one tile right
    • then goes down until it hits a wall
    • then goes one tile right
    • repeat
    • if it ever hits a situation where it cannot go right, it repeats the above with "left" instead; and vice versa
  • FamiliarFollower
    • like Attacker
    • on entity: familiar_follower_leash_distance (int)
      • if this entity is at least this far from the player, it pathfinds to the player
      • if this entity is pathfinding to the player, and is no longer at least this far from the player, that path order is cleared and it falls back on Attacker behavior
  • FamiliarCreditGathering
    • pathfinds to the credit drop that it has the shortest path to
    • if it can't find a path to any credit drop it reverts to FamiliarFollower for the rest of the room (to avoid frequent path checks to all the inaccessible credit drops, if any)
    • if it touches a credit drop, it does the normal player-picked-it-up logic
    • on entity: familiar_credit_gatherer_does_something_every_x_credits (int)
      • every time this entity's total gathered credits (in this room; familiar state is not retained between rooms) reaches this value, it does "something" (not yet defined)
  • FamiliarRam
    • like FamiliarFollower
    • on entity: familiar_ram_charge_distance (int)
      • if this entity is within this distance of a hostile target that it can hit, it pathfinds to that entity
      • used in conjunction with a short-ranged attack with an aoe and the destroys_firing_entity flag, it can make a kamikaze ram; otherwise it can be given guns to harass the target
  • FamiliarBeelineFollower, FamiliarAttacksTowardPlayer
    • Basically the same, and works like FamiliarFollower but is more singleminded about reaching the player.

InventoryItemType

  • Energy
  • Keycard
  • Missile
  • Credit
  • HealthShard
  • ExperiencePoint

MathType

  • Add
    • Just adds to whatever base value is there.
  • AdditiveMultiplier
    • Variant combination of Add and Multiply. All modifers with AdditiveMultiplier are added together beforing multiplying the value (applies after Add and before Multiply).
  • Multiply
    • Multiplies the result. Note: all multiply modifiers are applied AFTER all add modifiers.
  • AddAfterMultipliers
    • similar to Add, but applied after multipliers rather than before
  • Floor
    • Prevents the result from being below this value, unless a Set modifier is used to make it so.
    • If multiple Floor modifiers are involved in the same computation, the highest floor takes precedence.
  • Ceiling
    • Prevents the result from being above this value, unless a Set modifier is used to make it so.
    • If multiple Ceiling modifiers are involved in the same computation, the lowest ceiling takes precedence.
  • Set
    • Sets the result to this value, completely ignoring the base value and any add or multiply modifiers.
    • If there's more than one Set modifier for a particular modifier type applying at once, the one with the lowest (non-negative) value takes precedence
      • this allows for capping MaxHealth, where the thing that can override the cap is a lower cap
    • doesn't work with negative values (that support can be added if necessary, but it didn't fit the framework naturally)

AnchorLocation

  • Center
  • Left
  • Right
  • Up
  • Down
  • UpLeft
  • UpRight
  • DownLeft
  • DownRight
  • CenterLeft
  • CenterRight

ShaderType

  • Normal
  • Additive
  • PartialBlend
  • Multiplicative
  • InverseAdditive
  • InverseAdditiveWithAlpha
  • Experimental
  • ExperimentalCutoff
  • HSV
  • HSVAdditive
  • InverseSubtractive
  • Graycolored
  • Grayscale

SystemSlotType

  • None
  • Energy
  • Consumable
  • Attachment
  • MainGun
  • Missile
  • Incredibility

EffectType

  • RerollShopItems
    • Only works inside shops. Any items on the ground that still require purchasing are removed and replaced with other items the shop could normally roll.
    • If related_item_pool is set to something other than none, the reroll uses that specified pool instead.
  • ChangeCurrentHullHealth
    • Changes (target)'s hull health by (magnitude). Can be positive or negative.
    • You can use math="Set" with this to make it just set the health to that value rather than adding/subtracting.
  • ChangeCurrentShieldHealth
    • Changes (target)'s shield health by (magnitude). Can be positive or negative.
    • You can use math="Set" with this to make it just set the health to that value rather than adding/subtracting.
  • CopyModifiers
    • Copies the modifiers defined as sub-nodes of this effect to (target)'s modifier list.
  • CopyModifiersToWorldToAffect
    • Similar to CopyModifiers, but instead of copying them to all currently existing entities in the target group (entities that come into existence after the CopyModifiers effect's execution are not impacted), it copies them to the world and all entities within the target group will check that global list whenever they need to compute something. In this way it affects all current and future entities in that group.
    • The duration on the modifiers still works, whether timed or on-room-transition or on-floor-transition. The UntilWoken duration doesn't really mean anything here though.
  • AddSystem
    • Adds a random item from (related_systems) to each entity matching (targeting).
    • This is an inherently permanent addition, as opposed to EntityModifierType.TemporarilyGrantSystem. So if you want the system to "expire" it will need is_destroyed_after_finite_uses or something like that.
  • RemoveSystem
    • Removes all systems of the types in (related_systems), if present, from each entity matching (targeting). Does not care how those systems came to be there, or what the consequences will be from removing them.
  • SpawnEnemy
    • Spawns a random pick from (related_entities) within (magnitude) of the related entity.
    • Also gives that entity a momentum between (second_magnitude) and (third_magnitude) at a random angle, if second_magnitude > 0 and third_magnitude >= second_magnitude
    • "the related entity" is the parent entity of the related system if applicable, or of the related entity otherwise, or just the player if neither of those is applicable.
  • StartMovementDrivingPattern
    • any target entity that isn't currently following bullet pattern logic starts following the first bullet in (related_pattern)
    • effect tags with type StartMovementDrivingPattern now support related_pattern having a list of patterns to be randomly selected from on each triggering.
  • ChangeCurrentInventory
    • instantly changes the player's inventory of (related_item) by (magnitude) according to (math, default Add)
    • normally EntityModifierType.InventoryChangePerSecond takes care of any need for this, but when you want to add an exact amount (like with the probation rewards) this avoids that modifier's imprecision.
  • WinRoom
    • When used, the player automatically wins the current room.

EffectTiming

  • OnUse
    • For effects on a system. Means the effect happens every time the system is activated. So if it's a shot-firing system, that's when the shot is emitted, not when it hits whatever.
  • OnRoomSwitch
    • For effects on a system. Means the effect happens every time the player switches rooms.
  • OnRoomSwitch_OnlyFirstTimeInRoom
    • For effects on a system. Similar to OnRoomSwitch, but only applies the first time a given room is entered.
  • OnModifierAdded
    • For effects on a modifier. Means the effect happens once, when the modifier is added to an entity.
  • OnModifierRemoved
    • For effects on a modifier. Means the effect happens once, when the modifier is removed (for whatever reason, not specific to probation) from an entity.
  • OnEnemyKilled_ByAnySystem
    • For effects on a system. Means the effect happens every time this system's parent entity kills something.
  • OnEnemyKilled_ByMe
    • For effects on a system. Means the effect happens every time this system kills something.
  • OnEntry
    • For effects on a floor or on a (player) system. Means the effect happens once, when the player enters the floor.
  • OnLeaving
    • For effects on a floor or on a (player) system. Means the effect happens once, when the player leaves the floor.

EffectTargeting

  • Player
    • Targets the player entity, regardless of where this effect is.
  • AllEnemies
  • AllPlayerFamiliars
  • AllShots
  • AllEnemyShots
  • AllPlayerShots
  • Self
    • Targets the parent entity of the related system, if any, or the related entity if there's no specific system
  • AllNormalEnemiesAndShots
  • NonCondemnedBossesAndShots
  • AllAutoPickups

ConditionType

  • PlayerHasNoShields
  • PlayerHasShields
  • PlayerHasMissiles
  • PlayerHasNoMissiles
  • PlayerIsMoving
  • PlayerLowHealth (33% or less)
  • EntityIsAtFullHealth, EntityIsNotAtFullHealth
    • If this effect is on a system, refers to that system's parent entity
    • Otherwise, refers to the player

BulletConditionalSpawnRule

  • OnlyOnWindow
    • if the spawn point is not on a window tile, the bullet does not spawn
  • OnlyOnNonWindowSolid
    • if the spawn point is on a window tile (or no tile at all), the bullet does not spawn
  • OnlyInOuterSpace
    • if the room's environment is not OpenSpace, the bullet does not spawn

The Meaning Of Floor Numbers (Not Really An Enum)

  • 1
    • The first floor is always the easiest, and is the first one you visit. Naturally.
  • 5
    • For some time, runs end after 5 floors. After winning 10 runs, further floors open up.
    • This floor has the "final" boss in it.
  • 7
    • This floor has the REAL final boss in it, but is only accessible after winning 3 of the shorter runs.