Posted September 24, 2025 by SuperSnivy
It's been a long time. Between home renovations and a shoulder injury taking me off several months of development... the so-much-wished day is here.
The game is complete! We're out of beta! All the features I wanted to have added are now added! After two years!
From now on, it's up to you. You have an idea? I can consider adding it.
But it's time to go with the first full version changelog, because there are LOTS of new additions!
Changes:
This
, Source
, Target
and Args
, have been refactored into a single Params object to be more extensible.
OriginalTarget
to the list of basic parameters.
For
and While
loops.
OnInteracted
action. Therefore, added a new Action, EndTurn
, that ends a Character's turn immediately.
SelectYesNo
, that opens a prompt asking the player to make a decision.
SelectOption
, that opens a prompt asking the player to select an option from a list.
SelectItem
, that opens a prompt asking the player to select an item from a list.
SelectOfferedItem
, that opens a prompt asking the player to select an item from a Character's Inventory.
SelectAction
, that opens a prompt asking the player to select an action a Character can do.
OnDeath
Action now autonomously gives experience if the one that killed the Character is another Character, rather than require an explicit GiveExperience
action to be executed.
AnnounceStatusRefresh
, to ApplyAlteredStatus
. Old Dungeons will be patched to have it in true
. If false
, reapplying an Altered Status that cannot stack will not be informed to the player.
CanOverwrite
, to ApplyStatAlteration
. Old Dungeons will be patched to have it in false
. If true
, reapplying a Stat Alteration, when the Target has a Stat Alteration of the same Id already, will remove the old one and apply the new one. If false
, it would fail entirely.
SwitchTargetCharacter
and SwitchTargetTile
, that allow changing to a Target of the same type in the middle of the execution of an Action, depending on the parameters provided and the area to scan.
TurnLength
, to TransformTile
. Old Dungeons will be patched to have it in -1
. If -1
, the change will last until changed again (same as old behaviour). If it's a positive number, it will last the specified amount of turns, then return to the previous Type.
ResetTarget
, which switches the Action's Target to OriginalTarget
.
DistanceBetween
. It takes three parameters, the two Characters to evaluate, and a distance number. It returns whether the Characters are at a distance not higher than the number specified.
AreInTheSameRoom
. It takes two parameters, the Characters to evaluate. It returns whether the Characters are in the same Room, or, if both are in a Hallway, whether they are at a Hallway-visible Distance.
CurrentFloorLevel
. It takes no parameters, and it returns the Floor Level the Dungeon is in.
IsInventoryFull
. It takes a single parameter, the Character to evaluate. It returns whether their Inventory is full.
InheritsSpawnerColour
, to SpawnNPC
. Old Dungeons will be patched to have it in false
. If true
, the spawned NPC's Foreground Color will be changed to match that of the Character that summoned them.
ClearsBuffs
, ClearsDebuffs
and ClearsFromStatuses
, to CleanseStatAlteration
and CleanseStatAlterations
. Old Dungeons will be patched to have them in true
. If false
, depending on the parameter, the Stat Alterations that provide positive changes, negative changes, or are caused by Altered Statuses, respectively, will be ignored and won't be removed.
GiveItem
action's Id
parameter can now hold a <<CUSTOM>>
value. If true, the Action will instead use the new CustomId
parameter. This allows the Action to hand out an Item based on an external value, like a Flag.
InformOfSource
, to GiveItem
. Old Dungeons will be patched to have it in true
. If false
, the Player won't be informed of who gave the Item to the Target.
InformThePlayer
, to GiveItem
. Old Dungeons will be patched to have it in true
. If false
, the Player won't be informed of the item giving.
RollAClass
. It takes a list of strings and Weights separated by a |
(e.g. RollAClass(BareFists|40, Cloth|20)
). It rolls a random string from the list, using the aforementioned Weights to cause a Weighted roll.
RollAnItem
. It takes a single, optional parameter, which is the Item Type Id. It will roll a random Item of the Type sent as parameter (or of any type, if called without a Parameter). It ignores Items not set as droppable.
RollAnAction
. It takes one parameter, the Character to evaluate. It returns a random OnAttack
action the Character has, ignoring those provided by Consumables.
Remove
action no longer fails when used against an NPC.
Schools
. Action Schools exclusively serve as a way to categorize Actions.
ChangeCooldown
. It causes all Actions, all Actions of a specific Action School, or a single Action in particular, to have their Cooldown overwritten, even if the Action in question does not normally have a Cooldown.
ChangeUses
. It causes all Actions, all Actions of a specific Action School, or a single Action in particular, to have their amount of Remaining Uses overwritten, as long as their base Remaining Uses is not 0 (not infinite).
CausesPartialInvisibility
. Old Dungeons will be patched to have it in false
. If true
, Characters standing on a Tile of that Type will be invisible to all Characters not standing on a Tile of the same Type.
ChangeSightRange
. It causes a Character's Sight Range to be temporarily overwritten.
Reveal
. It causes a Character to see all the Tiles or all the Traps in the Floor, depending on the parameters provided.
LootTable
and DropPicks
. The latter indicates how many times the Loot Table will be evaluated to generate drops, and thus also indicates the maximum amount of drops generated on death.
BaseValue
which, when compounded with a Player's SaleValuePercentage
, returns how much money the Player will get when selling an Item. Currency is dropped by NPCs on Death.
OpenBuyPrompt
and OpenSellPrompt
, that open a prompt allowing the Player to trade Items with their Currency with another Character - buying items from their inventory or selling their own items, respectively.
None
, which disables AI execution completely.
GenerateInventoryFromLootTable
, that, for the specified amount of times, tries to generate a new Item on a Character's Inventory, using a Loot Table as a reference. This is useful for Shopkeeper inventories.
CurrentItem
. It takes two parameters, the Character to evaluate, and an Item Slot Id. It returns the ClassId
of whatever Item the Character is equipping on that slot, or an empty string if they either have nothing equipped or don't have that item slot.
CurrentWeapon
and CurrentArmor
were refactored to now call CurrentItem
instead, and are now warned to be deprecated.
StartingWeaponId
and StartingArmorId
have been removed as a result.
DefaultOnAttack
Action. It exists to give Characters a way to Attack if none of their Equipment provides an Attack action by themselves. It does not show up if their Equipment provides Attack actions.
Teleport
might end up with a Character getting stuck with no way to reach the Stairs.
LootTableModifier
and DropPicksModifier
count as a different Drops roll if the NPC has active Modifiers. ExperienceYieldMultiplierIfWithModifiers
multiplies the Experience Payout if the NPC has active Modifiers. BaseHPMultiplierIfWithModifiers
multiplies the base HP stat if the NPC has active Modifiers. RandomizesForecolorIfWithModifiers
modifies the NPC's Foreground Color if they have active Modifiers (think of it like Diablo II's Champion monsters having a different color).
ReappearsOnTheNextFloorIfAlliedToThePlayer
. Old Dungeons will be patched to have it in false
. If true
and the NPC is Allied to the Player, when the Player uses the Stairs, the NPC will show up next to them, as if they were part of a Party.
Identify
and IdentifyAllItems
, that Identify a single Item, or all Items in the Target Character's Inventory and Equipment, in the process.
FollowWaypoint
, that makes an NPC follow any Tile with the specified WaypointId
. If there are multiple Tiles with that WaypointId
, they will follow one at random.
StopFollowingWaypoint
, that makes an NPC stop following whatever Waypoint they were pursuing.
HasAWaypoint
. It takes a single parameter, the Character to evaluate. It returns whether the Character is pursuing a Waypoint.
IsOnWaypoint
. It takes two parameters, the Character to evaluate, and a Waypoint Id. It returns whether the Character is standing on a Tile with the specified Waypoint Id.
BeforeProcessAI
Action. It executes at the beginning of every time they have to Process a new decision to take. This is mostly meant for NPCs with a Movement higher than 1, which lets them re-evaluate their surroundings without having to wait for the next turn.
HasActiveAffix
. It takes two parameters, the Character to evaluate, and an Affix Id. It returns whether the Character is being affected by an Affix with the specified Id.
GiveCurrency
, that makes a Character give a certain amount of Currency to another, whether from their own pockets or out of thin air.
StealCurrency
, that makes a Character take a certain amount of Currency from another.
ClearInventory
, that empties a Character's inventory. Informing the Player of this is optional.
Teleport
action, TargetTile
. Old Dungeons are patched to have AnyTile
. It can be set to AnyTile
, which keeps the old behaviour, or NearStairs
, which will warp the Character to an empty Tile as close as possible to the Stairs (if the Stairs haven't been Spawned yet, it will work just like AnyTile
).
PxPlus_Tandy1K-II_200L
font used by the Game Client.
ON ENTER LOOP
and ON LEAVE LOOP
instead of ON SUCCESS
and ON FAILURE
, respectively, for For
and While
actions.
Save as New Element
while having opened an existing object didn't reload the tab with the newly-saved object.
Get help here!
button on the menu bar that redirects to the Wiki.
RogueCustomsGodotClient.exe
to Rogue Customs.exe
.
Dungeon JSONs from v1.9.0-beta are NOT compatible. Run them through the Dungeon Editor to be able to play in the new version.