PDA

View Full Version : Developer Notes - 2023-02 Ruleset Updates



Moon Wizard
January 23rd, 2023, 18:10
We are continuing to work on general ruleset updates. See the main ruleset beta thread for the summary of the updates.

In order to support ruleset and extension developers, I have made a number of notes regarding changes that should be made to bring rulesets and extensions in-line with changes to ones we directly maintain.

NOTE: I've only documented the specific rulesets affected for rulesets sold in the FG store or installed by default. Any updates for rulesets/extensions provided via FG Forge or other sources will need to look at the notes below for suggested updates.

Regards,
JPG

Moon Wizard
January 23rd, 2023, 18:10
Ruleset/Extension - Suggested Maintenance Updates

* databasenode -> DB API calls migration. See post below.

* Use getChildList instead of getChildren for DB/databasenode calls when you don't need the node key name. Uses numerical keys instead, which is faster and can use ipairs to iterate.

* Portrait size updates to 100x100; Removed mini portraits (See CoreRPG change notes for icon asset changes.)
Alien, Fallout, STA, SW

* Finish CT standard component migration (toggles, sections, ...)
2E, PF2

* Dice skin customization for critical/precision dice
2E, PF2

* Migrate death markers support to official version
2E, SW

* Native token height support
Update any TokenManager overrides to use new code that supports token height natively.

* Investigate death markers support
Alien, CoC7, DCC/MCC, Dune, Fallout, FT, ICRPG, PF2, RMC, SDL, STA

* Actions tab generalization and optimization
(See examples in 5E/4E/3.5E using CoreRPG base objects.)
(See migrated to Core section for 5E/4E/3.5E to see what objects have been removed when generalized.)
2E, DCC/MCC, ICRPG, PF2

* Char sheet helper generalization
template: windowtitlebar_char -> windowtitlebar_charsheethelper [2E, DCC/MCC, ICRPG, STA]
template: anchor_title_charsheethelper (remove) [2E, DCC/MCC, ICRPG, STA]
frame: charsheethelper (remove) [Fallout]
2E, DCC/MCC, ICRPG, STA

* Token decoration theming support

font: token_name, token_ordinal, token_height, token_height_negative
frame: token_name, token_ordinal, token_height
functions: TokenManager
setTokenFrameName(sFrame, sFrameOffset)
setTokenFontName(sFont)
setTokenFrameOrdinal(sFrame, sFrameOffset)
setTokenFontOrdinal(sFont)
setTokenFrameHeight(sFrame, sFrameOffset)
setTokenFontsHeight(sPositiveFont, sNegativeFont)
Migrated frame: tokennumber -> token_ordinal


* Other theming changes

Themes - New portrait sizes
miniportrait_base -> (removed)
miniportrait_mask -> (removed)
charlist_base -> (increased to 100x100)
charlist_mask -> (increased to 100x100)
Themes - Icons
spell_cast -> roll_cast
spell_damage -> roll_damage
spell_heal -> roll_heal
spell_effect -> roll_effect
usepower -> power_use


* Remove unneeded changes
Global scripts (CharacterListManager/CharacterListManagerSDL) [SDL]
Icon no longer used (footer_narrow) [Alien, RMC, Symba, Vaesen]
Panel override (characterlist) [2E]
Panel override (chat) [SDL]
Portrait set redefinitions (any) [Fallout, SDL]
Template redefinition (button_toggledetail) [2E, DCC/MCC, FT, ICRPG]
Template redefinition (list_ctbox_host) [STA]
Unused file (common/scripts/button_expand_collapse.lua) [2E, DCC/MCC]

* Consolidation updates
Consolidate updateControl -> WindowManager.callSafeControlUpdate(self, sControl, bReadOnly, bForceHide)consolidation
Rework of iedit/idelete buttons to support alternate use requiring less update code
button_iedit -> edittarget tag(s) (or no target tag) calls onEditModeChanged for all children of edittarget(s) (or window parent)
button_idelete -> editmode tag checks for numerical control value == 1 (on window parent object and up)
Added spacer_header_idelete template -> uses editmode tag to check for numerical control value == 1 (on window parent object and up)

* Other smaller updates
Update ct_entry.lua:delete to use CombatManager.deleteCombatant (or just inherit) [2E, ICRPG, PF2]
Use CombatManager.deleteFaction/deleteNonFaction in ct_menu.lua [2E, Alien, DCC/MCC, Dune, FT, PF2, RMC]
Use anchors for panel override, instead of bounds (chat) [Fallout, STA]
font: reference-subtitle (review/remove; Core migration) [2E, Alien, DCC/MCC, ICRPG, PF2, Vaesen]
Review template:list_charinv and script:char_invlist.lua usage for simplification
(Move char sheet updates to CharManager, in case character sheet not open during PS distribution)
[Alien, DCC/MCC, Fallout, ICRPG, PF2, RMC, SDL]
Convert multiple concatenated strings into single string.format call

Rulesets Specifically Updated So Far
CoreRPG, 5E, 4E, 3.5E, PFRPG, SFRPG,
Cypher/Numenera/Strange, FateCore
13A, AFF2, BRP, Conan, d20M, CoC6, M&M, MGT1, MGT2, VTM, WOIN

Moon Wizard
January 23rd, 2023, 18:10
NOTE: In addition to specific feature changes, a large number of files were also updated to move towards databasenode objects being simple objects. Any script which uses databasenode API functions was rewritten, and is not detailed below.

databasenode -> DB API Migration

The gist of this change is that the original FG developers (before my time) chose to make databasenode objects (as well as a few others) into full-fledged scriptable objects with embedded APIs, even though those objects can not be assigned a custom script tag/file. This creates a lot of overhead in every object, since the entire global namespace and APIs need to be added to every fully scriptable object. So, when you have an object that is as prolific as databasenode (i.e. every possible node in the database), my theory is that this creates a massive amount of overhead for database operations which is completely unnecessary. Also, with the continued growth of the FG catalog, the size of the databases used by DLC and in campaigns continues to grow with every year.

My ongoing background project is to migrate databasenode objects to simple Lua userdata objects without any additional custom script spaces, global namespaces or APIs to make them as streamlined as possible. However, since it is unknown how much of a performance savings this will gain, I had to build up the replacement APIs in the DB package (which are useful anyway); and now I'm adjusting CoreRPG (and other included rulesets) to only use the DB APIs. This will allow me to make an internal FGU client build with the simplified databasenode objects and actually run side-by-side performance tests to see whether my theory is valid.

This is something I've been thinking about for many years, but the sheer volume of heavy lifting and disruption always pushed it to backburner. In reality, the coming changes are just one more step in the process that allows me to test the theory. It's not a high-priority project, so it gets done in small chunks. Once I have real testing numbers later this year, we will need to make a decision whether the performance gain justifies the short/medium term chaos deprecating the databasenode API.

Moon Wizard
January 23rd, 2023, 18:11
Code Changes

CoreRPG

Global Scripts: ActionEffect, ActionsManager, ActorManager, ActorCommonManager, CalendarManager, CampaignDataManager, CharManager, CharEncumbranceManager, CharacterListManager, ChatManager, CombatManager, CombatFormationManager, CombatRecordManager, CurrencyManager, Desktop, DesktopManager, DiceRollManager, DiceTowerManager, EffectManager, ExportManager, GmIdentityManager, ImageManager, ItemManager, LanguageManager, ListManager, ModifierManager, ModifierStack, ModuleManager, NPCManager, OOBManager, OptionsManager, PartyManager, PartyFormationManager, PartyLootManager, RecordManager, ReferenceManualManager, TableManager, TargetingManager, TokenManager, UtilityManager, VersionManager, VersionManager2, VisionManager,
Icons: charlist_base (size increased), charlist_mask (size increased), miniportrait_base (removed), miniportrait_mask (removed),
Panels: characterlist, chat, modifierstack,
Scripts: campaign/scripts/char_invlist.lua, campaign/scripts/charselect_host_entry.lua, campaign/scripts/charselect_import_list.lua, campaign/scripts/encounter_npc.lua, campaign/scripts/item.lua (removed), common/scripts/button_iconcycler.lua, common/scripts/button_stringcycler.lua, common/scripts/buttongroup_counter.lua, common/scripts/buttongroup_radio.lua, common/scripts/list_text.lua, common/scripts/list_viewers.lua, common/scripts/number_linked.lua, common/scripts/number_modifier.lua, common/scripts/windowtitlebar.lua, ct/scripts/clientct_effectlist.lua, ct/scripts/clientct_entry.lua, ct/scripts/ct.lua, ct/scripts/ct_effectlist.lua, ct/scripts/ct_entry.lua, ct/scripts/ct_menu.lua, desktop/scripts/chat_mode.lua, utility/scripts/colorselect.lua, utility/scripts/diceselect.lua, utility/scripts/drc_item.lua, utility/scripts/effectwindow.lua, utility/scripts/modifierwindow.lua,
Templates: basicchatwindowstatus, basicdice, button_assets_page_next, button_assets_page_prev, button_charactivate, button_ct_effect_targetadd, button_ctentry_activateactive, button_ctentry_activatedefensive, button_ctentry_activateeffects, button_ctentry_activatespacing, button_ctentry_activatetargeting, button_iadd, button_idelete, button_iedit, button_page_next, button_page_prev, button_parcel_id_all, icon_record_locked, linkcontrol_id (removed), link_record_header_id (removed), list_utility, list_utility_setting, listc_utility_setting_labeled (removed), list_viewers, portrait_char, portrait_ps, token_char,
Window Classes: char_invitem, colorselect, ct_section_targets, ct_targets, currencylist, diceselect, drclist, drc_item, languagelist, pregencharselect_entry, ps_order, reference_list_item, tokenlightlist,

Moon Wizard
January 23rd, 2023, 18:11
3.5E (PFRPG)

Global Scripts: ActionDamage, ActionSpell, CombatManager2, EffectManager35E, GameSystem, SpellManager, VersionManager2,
Icons: actions (removed), actions_down (removed), char_coin (removed), question (removed), spell_* (removed), star (removed),
Scripts: campaign/scripts/char_totalwithability.lua, campaign/scripts/char_weapon.lua, campaign/scripts/charmini_skilllist.lua, campaign/scripts/charmini_weapon.lua, campaign/scripts/npc_babgrp.lua, campaign/scripts/npc_skill.lua, campagin/scripts/spell.lua (removed), campaign/scripts/spell_action.lua (removed), campaign/scripts/spell_action_mini.lua (removed), campaign/scripts/spell_class.lua, campaign/scripts/spell_level.lua, common/scripts/string_attackline.lua, ct/scripts/ct_entry.lua, ct/scripts/ct_menu.lua,
Templates: button_cc, number_chartotalac, number_charabilitymod, number_charskillranks, number_charskilltotal,
Window Classes: char_skill, char_weapon, charsheet_class, charsheet_classes,


3.5E (PFRPG) - (Migrated to Core)

Icons: roll_attack*
Templates: anchor_title_charsheethelper, button_poweractioneditor, button_spellaction, button_spellaction_mini, button_toggledetail, close_charsheethelper, counter_spell, dice_spell_action, icon_usepower, list_charinv, resize_charsheethelper, string_spell, string_spellactionview, windowtitlebar_char,


4E

Global Scripts: ActionDamage, ActionRecharge, ActionSave, CombatManager2, EffectManager4E, ItemManager2, NPCManager4E, VersionManager2,
Icons: actions (removed), actions_down (removed), char_coin (removed), question (removed), spell_* (removed), star (removed),
Scripts: campaign/scripts/char_power.lua, campaign/scripts/char_skilllist.lua, campaign/scripts/totalwithability.lua, campaign/scripts/charmini_power.lua, campaign/scripts/charmini_powerability.lua, campaign/scripts/charmini_powerabilitylist.lua, campaign/scripts/charmini_weapon.lua, campaign/scripts/item_powerlistitem.lua, campaign/scripts/npc_skill.lua, common/scripts/string_powerdesc.lua, ct/scripts/ct_attack.lua, ct/scripts/ct_entry.lua, ct/scripts/ct_menu.lua,
Templates: number_charabilitybonus, number_charabilitycheck, number_charskilltotal, number_deftotal_main, stringc_column_flavor,
Window Classes: item_powerlistitem,


4E - (Migrated to Core)

Icons: power_attack, power_damage, power_effect, power_heal, roll_attack*, usepower,
Templates: button_toggleactions, button_toggledetail, list_charinv,


5E

Special: (Complete rewrite of any assets relating to character wizard)
Font: reference-subtitle (removed)
Frame: charsheethelper
Global Scripts: ActionAttack, ActionDamage, ActionPower, ActionRecharge, ActionRecovery, ActionSave, ActionSkill, ActorManager5E, CampaignDataManager2, CharacterListManager_Inspiration, CharClassManager, CharEncumbranceManager5E, CharManager, CharRaceManager, CharWeaponManager, ClassSpellListManager, CombatManager2, EffectManager5E, ForgeManagerItem, Options5E, PartyManager2, PowerManager, VersionManager2
Icons: actions (removed), actions_down (removed), question (removed),
Scripts: campaign/scripts/char_skill.lua, campaign/scripts/char_weapon.lua, campaign/scripts/char_weaponlist.lua, campaign/scripts/npc_skill.lua, campaign/scripts/power_group.lua, campaign/scripts/power_list.lua, campaign/scripts/power_page.lua, campaign/scripts/vehicle_main.lua, ct/scripts/ct_entry.lua, ct/scripts/ct_menu.lua, ct/scripts/ct_power.lua, ps/scripts/ps_xp_enclist.lua, ps/scripts/ps_xp_questlist.lua,
Templates: button_char_skills_iedit, close_charsheethelper, list_powers, number_charlevel, number_charmain_skill_passive, number_charskilltotal, number_chartotalac, resize_charsheethelper,
Window Classes: ability_header, char_weapon_editor, char_weaponmeta, charsheet_class, charsheet_classes, charsheet_combatcalc, charsheet_hd, charsheet_healthcalc, charsheet_invmeta, class_spell_view, itemtemplate, power, power_cast_editor (removed), power_cast_editor_main (removed), power_damage_editor (removed), power_damage_editor_main (removed), power_damage_entry (removed), power_effect_editor (removed), power_effect_editor_main (removed), power_heal_editor (removed), power_heal_editor_main (removed), power_heal_entry (removed), power_groupdetail, reference_spell,


5E - (Migrated to Core)

Icons: roll_*, spell_cast, spell_damage, spell_effect, spell_heal, usepower,
Scripts: campaign/scripts/char_invlist.lua, campaign/scripts/power_action.lua, campaign/scripts/power_action_mini.lua, campaign/scripts/power_counter.lua, campaign/scripts/power_item.lua,
Strings: power_label_*, power_menu_*,
Templates: anchor_title_charsheethelper, button_poweraction, button_poweraction_mini, button_poweractioneditor, button_toggledetail, counter_power, list_charinv, list_poweraction, icon_usepower, string_power, string_poweractionview,
Window Classes: power_action, power_action_mini, power_item, power_item_header,

Moon Wizard
January 23rd, 2023, 18:11
SFRPG

Global Scripts: AbilityManager, ActionAbility, ActionAttack, ActionDamage, ActionInit, ActionMechAbility, ActionMechSkill, ActionShipAttack, ActionShipDamage, ActionShipSkill, ActorManagerSFRPG, CharManager, CharEncumbranceManagerSFRPG, CharStarshipManager, CombatManager2, EffectManagerSFRPG, ForgeManagerItem, ItemManager2, LogManager (removed), OptionsSFRPG, PartyManager2, PartyLootManagerSFRPG, SpellManager, StarshipCombatManager, StarshipTokenManager, TokenManager2, VehicleManager, VersionManager2,
Icons: charlist_base, char_coin (removed),
Scripts: campaign/scripts/ability_class.lua, campaign/scripts/ability_level.lua, campaign/scripts/button_char_showhideactions.lua, campaign/scripts/button_ship_showhideactions.lua, campaign/scripts/char.lua, campaign/scripts/char_actions_starship.lua, campaign/scripts/char_classlevelsummary.lua, campaign/scripts/char_main.lua, campaign/scripts/char_skill.lua, campaign/scripts/char_skilllink.lua, campaign/scripts/char_skilllist.lua, char_totalwithability.lua, campaign/scripts/char_veh.lua, campaign/scripts/char_weapon.lua, campaign/scripts/char_weaponattack.lua, campaign/scripts/char_weaponfullattack.lua, campaign/scripts/char_weaponlist.lua, campaign/scripts/char_weaponsingleattack.lua, campaign/scripts/chardrone.lua, campaign/scripts/charmech_main.lua, campaign/scripts/charmini_skillllist.lua, campaign/scripts/charmini_weapon.lua, campaign/scripts/charship_crew.lua, campaign/scripts/charstarship.lua, campaign/scripts/charstarship_crewlistentry.lua, campaign/scripts/charstarship_critdamageradioh.lua, campaign/scripts/charstarship_critdamageradiov.lua, campaign/scripts/charstarship_main.lua, campaign/scripts/charstarship_weapons.lua, campaign/scripts/charvehicle_main.lua, campaign/scripts/column_list_features.lua, campaign/scripts/comp_invlist.lua, campaign/scripts/comp_main.lua, campaign/scripts/comp_weapon.lua, campaign/scripts/item_drop.lua, campaign/scripts/itemtemplate.lua, campaign/scripts/list_ability.lua, campaign/scripts/list_abilityclass.lua, campaign/scripts/list_spell.lua, campaign/scripts/list_spellclass.lua, campaign/scripts/list_spelllevel.lua, campaign/scripts/npc_babgrp.lua, campaign/scripts/npc_skill.lua, campaign/scripts/spell_class.lua, campaign/scripts/spell_level.lua, campaign/scripts/starship_skill.lua, campaign/scripts/starshipitem.lua, common/scripts/class_column_list.lua, common/scripts/list_mods.lua, common/scripts/string_attackline.lua, common/scripts/string_shipattackline.lua, ct/scripts/clientct_shipentry.lua, ct/scripts/ct_entry.lua, ct/scripts/ct_menu.lua, ct/scripts/ct_pendingattacks.lua, ct/scripts/ct_pendingattacks_entry.lua, ct/scripts/ct_ship.lua, ct/scripts/ct_ship_actions.lua, ct/scripts/ct_ship_entry.lua, ct/scripts/ct_shipmenu.lua, ct/scripts/ct_shiptarget_summary.lua, ps/scripts/ps_xp_enclist.lua, ps/scripts/ps_xp_questlist.lua,
Strings: ability_emptydesc (removed),
Templates: ability_action_skillselect, button_action_roll, button_cc, button_skillglobalmisc, ct_pendingattack_soak_base (removed), ct_pendingattack_soak (removed), label_recordtype, mounts_iadd, npc_number_spelldc, number_charskilltotal, number_chartotaleac, number_chartotalkac, number_charabilitymod, number_ctentry_shipinitresult, number_ps_skill, number_ps_skill_rank, token_comp,
Window Classes: abilities_item_mini_header, ability_class, ability_header, ability_item, ability_use_editor (removed), ability_use_editor_main (removed), char_ability_class, char_ability_feat, char_ability_proficiency, char_ability_race, char_ability_theme, char_invitem, char_language, char_ship_actionentry, char_skill, chardrone, chardrone_main, chardrone_skill, charmech, charmech_mpsummary, charmech_weapons, charsheet_ac_editor, charsheet_class, charsheet_classes, charsheet_combat_editor, charsheet_encumbrance, charsheet_inv_companions, charsheet_inv_vehicles, charsheet_main, charsheet_society, charsheet_society_notes, charsheet_societymini, charstarshipsheet, charstarship_main, charstarship_mountlistentry, charstarship_notes, charstarship_pcusummary, charstarship_weapons, class_abilitylistentry, comp_invitem, companionsheet, ct_section_active, ct_section_active_ship, ct_section_crew, ct_section_defense_actor, ct_section_defense_ship, ct_shiptargets, item_main_armor, power_damage_entry (removed), power_heal_editor (removed), power_heal_editor_main (removed), power_heal_entry (removed), power_effect_editor (removed), power_effect_editor_main (removed), ps_crew, ps_npccrew_helper, ps_npccrew_main, ps_starshipmainitem, spell_class, spell_level, spell_level_mini, starship_main,


SFRPG - (Migrated to Core)

Fonts: reference-subtitle
Icons: roll_damage, spell_cast, spell_damage, spell_effect, spell_heal,
Scripts: campaign/scripts/ability.lua, campaign/scripts/ability_action.lua, campaign/scripts/ability_action_mini.lua, campaign/scripts/ability_counter.lua, campaign/scripts/char_invlist.lua, campaign/scripts/charselect_host_entry.lua, campaign/scripts/counter_spell.lua, campaign/scripts/spell.lua, campaign/scripts/spell_action.lua, campaign/scripts/spell_action_mini.lua,
Strings: ability_label_atk, ability_label_dmg, ability_label_heal, ability_title_cast, menu_addability*, menu_addspell*, menu_deletespellaction, menu_dieclear, menu_reparseability, menu_reparsespell, power_label_name, power_label_targeting, power_label_targetnormal, power_label_targetself, power_title_*, power_tooltip_*, power_header_damage, power_header_effect, power_header_effect_duration, power_header_effect_other, power_header_heal, spell_label_atk, spell_label_cast, spell_label_dmg, spell_label_heal, spell_tooltip_usepower,
Templates: ability_action_attackbutton, ability_action_attackview, ability_action_attackviewlabel, ability_action_castbutton, ability_action_castdetailbutton, ability_action_castlabel, ability_action_damagebutton, ability_action_damagedetailbutton, ability_action_damagelabel, ability_action_damageview, ability_action_effectapply, ability_action_effectbutton, ability_action_effectdetailbutton, ability_action_effectdurationview, ability_action_effectlabel, ability_action_effecttargeting, ability_action_healbutton, ability_action_healdetailbutton, ability_action_heallabel, ability_action_healview, ability_action_healtype, ability_action_healtypelabel, ability_action_rpview, ability_action_rpviewlabel, ability_action_savebutton, ability_action_saveview, ability_action_saveviewlabel, anchor_title_charsheethelper, button_abilityaction, button_abilityaction_mini, button_poweractioneditor, button_spellaction, button_spellaction_mini, button_toggledetail, close_charsheethelper, counter_ability, counter_spell, icon_usepower, list_charinv, resize_charsheethelper, spell_action_attackbutton, spell_action_attackview, spell_action_attackviewlabel, spell_action_castbutton, spell_action_castdetailbutton, spell_action_castlabel, spell_action_damagebutton, spell_action_damagedetailbutton, spell_action_damagelabel, spell_action_damageview, spell_action_effectapply, spell_action_effectbutton, spell_action_effectdetailbutton, spell_action_effectdurationview, spell_action_effectlabel, spell_action_effecttargeting, spell_action_healbutton, spell_action_healdetailbutton, spell_action_heallabel, spell_action_healtype, spell_action_healtypelabel, spell_action_healview, spell_action_levelcheckbutton, spell_action_levelcheckview, spell_action_levelcheckviewlabel, spell_action_savebutton, spell_action_saveview, spell_action_saveviewlabel, string_abilityactionview, string_spell, string_spellactionview,
Window Classes: ability_action_mini, power_cast_editor, power_cast_editor_main, power_damage_editor, power_damage_editor_main, power_damage_entry, power_heal_editor, power_heal_editor_main, power_heal_editor_main, power_effect_editor, power_effect_editor_main, spell_action, spell_action_mini, spell_header, spell_item, spell_item_mini, spell_item_mini_header,

Moon Wizard
January 25th, 2023, 21:05
Ruleset/Extension - Suggested Maintenance Updates From Today

* Native token height support
Update any TokenManager overrides to use new code that supports token height natively.

Moon Wizard
January 30th, 2023, 18:57
Ruleset/Extension - Suggested Maintenance Updates From Today

* Token decoration theming support

font: token_name, token_ordinal, token_height, token_height_negative
frame: token_name, token_ordinal, token_height
functions: TokenManager
setTokenFrameName(sFrame, sFrameOffset)
setTokenFontName(sFont)
setTokenFrameOrdinal(sFrame, sFrameOffset)
setTokenFontOrdinal(sFont)
setTokenFrameHeight(sFrame, sFrameOffset)
setTokenFontsHeight(sPositiveFont, sNegativeFont)
Migrated frame: tokennumber -> token_ordinal

Moon Wizard
February 13th, 2023, 18:08
Ruleset/Extension - Suggested Maintenance Updates From Today

* Consolidation updateControl -> WindowManager.callSafeControlUpdate(self, sControl, bReadOnly, bForceHide)consolidation
* Rework of iedit/idelete buttons to support alternate use requiring less update code
button_iedit -> edittarget tag(s) (or no target tag) calls onEditModeChanged for all children of edittarget(s) (or window parent)
button_idelete -> editmode tag checks for numerical control value == 1 (on window parent object and up)
* Added spacer_header_idelete template -> uses editmode tag to check for numerical control value == 1 (on window parent object and up)

Moon Wizard
February 20th, 2023, 18:56
Ruleset/Extension - Suggested Maintenance Updates From Today

* Convert multiple concatenated strings into single string.format call

damned
February 20th, 2023, 21:49
Good work guys.
Is there a projected release date?

Moon Wizard
February 20th, 2023, 21:57
It's tentatively this week; but still trying to coordinate some future planning needs into the system as well as make sure we get some user testing.

Regards,
JPG

damned
February 20th, 2023, 22:02
This week means tomorrow right?

Moon Wizard
February 20th, 2023, 22:32
My releases for clients and builds typically release between Tuesday and Thursday, depending on the state of all the moving pieces. Since it's a holiday in the US today, I'll probably wait until Wed/Thurs. I need to coordinate with my personal schedule so that I'm available for hot fixes and questions after release.

Regards,
JPG