Full game release!
Rogue Customs » Devlog

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:
Game Engine
- Various improvements to how the order of events in a turn are displayed.
- Action basic parameters, such as
This
,Source
,Target
andArgs
, have been refactored into a single Params object to be more extensible. - Added
OriginalTarget
to the list of basic parameters. - Implemented Control Block actions, in the form of
For
andWhile
loops. - Implemented Prompt Actions, which open a dialog where the player has to select an option before proceeding.
- Actions can now be set to not automatically end the current turn when used, even if it's not an
OnInteracted
action. Therefore, added a new Action,EndTurn
, that ends a Character's turn immediately. - Added a new Action,
SelectYesNo
, that opens a prompt asking the player to make a decision. - Added a new Action,
SelectOption
, that opens a prompt asking the player to select an option from a list. - Added a new Action,
SelectItem
, that opens a prompt asking the player to select an item from a list. - Added a new Action,
SelectOfferedItem
, that opens a prompt asking the player to select an item from a Character's Inventory. - Added a new Action,
SelectAction
, that opens a prompt asking the player to select an action a Character can do. - Action system can now be asynchronical to support waiting for player response before proceeding.
- Logic to calculate Weights for Actions for AI decision making now considers Attack Elements. It also no longer crashes if it finds an Action with an undefined Weight (it will take its Weight as 0 instead).
- The
OnDeath
Action now autonomously gives experience if the one that killed the Character is another Character, rather than require an explicitGiveExperience
action to be executed. - Fixed a bug where Characters could only grow one Level every time they gained experience. Now they properly gain all the levels they would have obtained.
- Added a new parameter,
AnnounceStatusRefresh
, toApplyAlteredStatus
. Old Dungeons will be patched to have it intrue
. Iffalse
, reapplying an Altered Status that cannot stack will not be informed to the player. - Added a new parameter,
CanOverwrite
, toApplyStatAlteration
. Old Dungeons will be patched to have it infalse
. Iftrue
, 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. Iffalse
, it would fail entirely. - Added two new actions,
SwitchTargetCharacter
andSwitchTargetTile
, 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. - Added a new parameter,
TurnLength
, toTransformTile
. 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. - Added a new Action,
ResetTarget
, which switches the Action's Target toOriginalTarget
. - Added a new Expression Function,
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. - Added a new Expression Function,
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. - Added a new Expression Function,
CurrentFloorLevel
. It takes no parameters, and it returns the Floor Level the Dungeon is in. - Added a new Expression Function,
IsInventoryFull
. It takes a single parameter, the Character to evaluate. It returns whether their Inventory is full. - Added a new parameter,
InheritsSpawnerColour
, toSpawnNPC
. Old Dungeons will be patched to have it infalse
. Iftrue
, the spawned NPC's Foreground Color will be changed to match that of the Character that summoned them. - Added three new parameters,
ClearsBuffs
,ClearsDebuffs
andClearsFromStatuses
, toCleanseStatAlteration
andCleanseStatAlterations
. Old Dungeons will be patched to have them intrue
. Iffalse
, 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. - The
GiveItem
action'sId
parameter can now hold a<<CUSTOM>>
value. If true, the Action will instead use the newCustomId
parameter. This allows the Action to hand out an Item based on an external value, like a Flag. - Added a new parameter,
InformOfSource
, toGiveItem
. Old Dungeons will be patched to have it intrue
. Iffalse
, the Player won't be informed of who gave the Item to the Target. - Added a new parameter,
InformThePlayer
, toGiveItem
. Old Dungeons will be patched to have it intrue
. Iffalse
, the Player won't be informed of the item giving. - Added a new Expression Function,
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. - Added a new Expression Function,
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. - Added a new Expression Function,
RollAnAction
. It takes one parameter, the Character to evaluate. It returns a randomOnAttack
action the Character has, ignoring those provided by Consumables. - The
Remove
action no longer fails when used against an NPC. - Actions now have
Schools
. Action Schools exclusively serve as a way to categorize Actions. - Added a new Action,
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. - Fixed a bug where NPCs wouldn't move until the Player spent all Movement.
- Fixed a bug where NPCs would refrain from performing an Action against their last Target if they were on melee range.
- Added a new Action,
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). - Tile Types now have a new property,
CausesPartialInvisibility
. Old Dungeons will be patched to have it infalse
. Iftrue
, Characters standing on a Tile of that Type will be invisible to all Characters not standing on a Tile of the same Type. - Added a new Action,
ChangeSightRange
. It causes a Character's Sight Range to be temporarily overwritten. - Added a new Action,
Reveal
. It causes a Character to see all the Tiles or all the Traps in the Floor, depending on the parameters provided. - Fixed the logic for NPCs dropping items on death.
- Added a Loot Table system. Loot Tables are applied on NPCs. When calculated, they will indicate if they have to generate and drop certain Items on Death, alongside those in their inventory. Loot Tables can have, as entries, Item Types, specific items, No Drops (in which case the pick is skipped) or another Loot Table.
- NPCs have two new properties,
LootTable
andDropPicks
. 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. - Added a Currency system for Characters to carry money around. Alongside it, Items now have a
BaseValue
which, when compounded with a Player'sSaleValuePercentage
, returns how much money the Player will get when selling an Item. Currency is dropped by NPCs on Death. - Added two new Actions,
OpenBuyPrompt
andOpenSellPrompt
, 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. - Added a new NPC AI Type,
None
, which disables AI execution completely. - Added a new Action,
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. - Added an Affix system. Affixes are random properties applied to Items that add new effects to them. Affixes can also increase the Value of an Item.
- When it comes to generating Items in a Floor, they now have a Minimum and a Maximum Level. This is used to indicate which Affixes they can provide.
- Added a Quality Level system. Quality Levels are applied to Items and indicate how many Affixes they can have, how their name is colores, and how their name changes after applying Affixes. Loot Tables can override the Quality Level odds for an Item Drop.
- Added a flexible Item Slot system. Characters are no longer constrained to one Weapon and one Armor.
- Added a new Expression Function,
CurrentItem
. It takes two parameters, the Character to evaluate, and an Item Slot Id. It returns theClassId
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. - The existing Expression Functions
CurrentWeapon
andCurrentArmor
were refactored to now callCurrentItem
instead, and are now warned to be deprecated. - Added a flexible Item Type system. Item Types serve as both categorization of Items as well as description of their behaviour - if they can be equipped or consumed, if their power means more Damage, Mitigation, etc., which Slots they occupy...
- Characters now have an Initial Equipment system.
StartingWeaponId
andStartingArmorId
have been removed as a result. - Characters now have a
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. - When generating a Floor, Keys and Doors are now placed before NPCs.
- Implemented a Static Floor Layout. It allows the construction of Floor Plans that will look the same (or mostly the same, depending on the elements within) every single time they are generated.
- To improve loading times, the amount of Floor Generation tries, before defaulting to One Big Room, has been dropped from 1000 to 30. Hallway and Special Tile generation attempts have been dropped from 50 to 15.
- Fixed an issue where
Teleport
might end up with a Character getting stuck with no way to reach the Stairs. - Added an NPC Modifier system. NPC Modifiers are random properties applied to NPCs that add new effects to them.
- NPCs have new properties.
LootTableModifier
andDropPicksModifier
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). - NPCs have a new property,
ReappearsOnTheNextFloorIfAlliedToThePlayer
. Old Dungeons will be patched to have it infalse
. Iftrue
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. - Added an Item Identifying system. Depending on the Item Type and Quality Level, an Item might spawn Unidentified. Their name and description are different, their action names and descriptions are obscured (and can target anyone regardless of their true targeting system), and Unidentified items with Affixes do not provide the Affix effects they have.
- Added two new Actions,
Identify
andIdentifyAllItems
, that Identify a single Item, or all Items in the Target Character's Inventory and Equipment, in the process. - Exclusive to Static Floor Layouts, a Waypoint system has been implemented. If an NPC is set to pursue a Waypoint, it will move towards it no matter what, ignoring any possible Targets until told to stop, or they reach their destination.
- Added a new Action,
FollowWaypoint
, that makes an NPC follow any Tile with the specifiedWaypointId
. If there are multiple Tiles with thatWaypointId
, they will follow one at random. - Added a new Action,
StopFollowingWaypoint
, that makes an NPC stop following whatever Waypoint they were pursuing. - Added a new Expression Function,
HasAWaypoint
. It takes a single parameter, the Character to evaluate. It returns whether the Character is pursuing a Waypoint. - Added a new Expression Function,
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. - Implemented short-circuiting on boolean expressions.
- NPCs now have a
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. - Added a new Expression Function,
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. - Added a new Action,
GiveCurrency
, that makes a Character give a certain amount of Currency to another, whether from their own pockets or out of thin air. - Added a new Action,
StealCurrency
, that makes a Character take a certain amount of Currency from another. - Added a new Action,
ClearInventory
, that empties a Character's inventory. Informing the Player of this is optional. - Added a new parameter to the
Teleport
action,TargetTile
. Old Dungeons are patched to haveAnyTile
. It can be set toAnyTile
, which keeps the old behaviour, orNearStairs
, 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 likeAnyTile
).
Dungeon Editor
- Added a Test Action window in order to make on-the-go tests of individual actions without having to open the Game Client.
- Greatly improved performance of the Character Map window.
- The Character Map window now supports all glyphs of the
PxPlus_Tandy1K-II_200L
font used by the Game Client. - The Action Edit window now displays
ON ENTER LOOP
andON LEAVE LOOP
instead ofON SUCCESS
andON FAILURE
, respectively, forFor
andWhile
actions. - Old Dungeon patching has been refactored completely to do direct JSON modifications instead of having to maintain versions of each file. This minimizes version maintenance.
- To test Flags in Boolean Expressions, the Editor will now try to infer (from the context of the expression) whether the Flag is a boolean, an integer or a string.
- The Action Parameters window can now dynamically change whether a Parameter is Required or Read-Only.
- The Floor Type validator now checks if the Floor Layout can generate 5x5 Rooms, or throw an error if it's not possible.
- Fixed an issue where clicking on
Save as New Element
while having opened an existing object didn't reload the tab with the newly-saved object. - The Character Map and Select Color windows now remember the most recent selection.
- Implemented a Reserved Words system to preventing saving objects with certain Ids used by internal game logic.
- Added a new section for Loot Tables.
- The Dungeon Validator will no longer try to test Floor Generation or Action Execution if it failed to generate a floor the first time.
- The Action Edit window has been redesigned to occupy much less space.
- Fixed an issue in the Action Edit window where pasting a Step on a parent Step was causing a Stack Overflow error.
- Added a new window for drawing Static Floor Layouts.
- Added a
Get help here!
button on the menu bar that redirects to the Wiki. - It is now possible to copy Actions from and to Scripts, as well as copy Steps between Actions.
Game Client
- The executable name has been changed from
RogueCustomsGodotClient.exe
toRogue Customs.exe
. - The game's binaries have been updated to support Godot 4.4.
- Adapted current modal dialog system to support Prompt Actions.
- In the Player Details screen, the current HP value will be colored depending on how low it is related to the Max HP.
- Fixed a bug that allowed the Player to perform certain actions while dead.
- Weapon, Armor and Emergency Equipment displays have been removed for a single Equipment display, on the Map, Player Details and Class Selection screens.
- The Inventory Screen will show which Slots an Item occupies, the Item Level and the Item Type.
- Viewing the details of a Tile that contains an NPC will show whether they have any Modifiers.
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.
Files
Rogue Customs.zip 69 MB
3 days ago
Get Rogue Customs
Download NowName your own price
Rogue Customs
A "Rogue Maker". A Roguelike where players create their own dungeons for others to play.
Status | Released |
Author | SuperSnivy |
Genre | Role Playing |
Tags | Moddable, Roguelike, Roguelite |
Languages | English, Spanish; Castilian, Spanish; Latin America |
More posts
- Update v1.9.0-betaNov 08, 2024
- Update v1.8.0-betaOct 04, 2024
- Update v1.7.1-betaSep 01, 2024
- Update v1.7.0-betaNov 21, 2023
- Update v1.6.1-betaOct 20, 2023
- Update v1.6.0-betaOct 14, 2023
- Update v1.5.0-betaSep 30, 2023
- Update v1.4.0-betaSep 21, 2023
- Update v1.3.1-betaJul 06, 2023
Leave a comment
Log in with itch.io to leave a comment.