Larian Banner: Baldur's Gate Patch 9
Previous Thread
Next Thread
Print Thread
Joined: May 2017
enthusiast
OP Offline
enthusiast
Joined: May 2017
For the past month or so I've been working on three separate mods, and they're finally ready for release!

Note: Nexus releases will be coming soon. I just wanted to get some additional testing done first, since updating mods manually on the Nexus is a bit of a pain.

I'll separating each mod by post, so they're easy to link back to.

Joined: May 2017
enthusiast
OP Offline
enthusiast
Joined: May 2017
LeaderLib

LeaderLib is a library mod used to provide common functionality to other mods.

Features:
• A centralized "Mod Menu", providing a way to access dialog menus from other mods. This menu is automatically sorted alphabetically.
• An extensive treasure and trader system, allowing dynamic spawning with complex requirements and customization.
• A system for mods to register to, that enables other mods to see which mods are registered and active, allowing easier cross-mod interaction.
• A dependency-free mod api, using a mixture of databases, flags, and events.
• LeaderLib also adds its own trader, used to grant the "Mod Menu" book and provide a central traders for my other mods to register treasure to.

• Script helpers such as:
    • Array and dictionary style databases (index-based, self-governing length/count value, also comes with an iterator)
    • Queues-style databases that "pop" the oldest entry, return it, and come with customizable completion events and timeout timers.
    • String methods, including length counting and comparisons for sorting.
    • A way to send out story events with no specific target in mind.
    • An "event flow" system, providing a way to have events flow in a specific order, with the optional safety of a timeout system.

The Mod Menu in Action:
[Linked Image]


Links:
  • Steam Workshop Release
  • Github Source
  • Implementation Tutorials for Modders (W.I.P.)

Joined: May 2017
enthusiast
OP Offline
enthusiast
Joined: May 2017
Naming Wizard

Naming Wizard is a mod that enables player text input through a dialog window, while also adding a "Wand of Renaming" that can be used to rename characters.

Features:
• A robust dialog menu for providing text input.
    • While defaultly used with the Wand of Renaming to rename characters, it also features an extensive mod api for allowing other mods to use the wizard for text input (the Equipment Sets mod uses this to allow players to name their sets).

• A Wand of Renaming that allows you to rename characters (including yourself).
    • Optional settings include cross-player renaming, for when you and your friends feel like trolling one another.

• Text can be input one character at a time, or through the use of word menus, which provide different sets of words for naming things quickly.

• Players can save text as words, and mods can register new word menus, or add words to existing menus.

Animated Gifs:
Wand of Renaming
[Linked Image]

Naming with Alphanumeric Characters

[Linked Image]

Naming with Words

[Linked Image]


Links:
  • Steam Workshop Release
  • Github Source
  • Implementation Tutorials for Modders (W.I.P.)

Joined: May 2017
enthusiast
OP Offline
enthusiast
Joined: May 2017
Equipment Sets

Equipment Sets adds the ability to save equipment loadouts, and switch between them quickly.

Equipment Sets also has support for the Naming Wizard mod to enable the ability to name your sets.

Features:
• Easy to use set-switching skills.
    • Equipment sets can be switched to quickly either with a set skill, or a set item.
    • Selecting a set that has not been saved will save your current equipment to that set.
    • Selecting a set you already have equipped will unequip that set.

• Automatic item management.
    • When switching or unequipping sets, the previously equipped set will store its equipment into a "Set Backpack".
    • Clearing a set will automatically move the set items in that backpack to another set those items are a part of, or back to the player's inventory.

• Set naming.
    • Sets can be named with the Naming Wizard mod, and are displayed both in the Set Manager menu, and as status messages.

Optional Settings:
• Equipment Auto-Saving
    • When a set is equipped, newly equipped items will be saved to that set. This is a user-level setting, so it applies to all of a player's controlled characters.

• Empty Slot Preservation
    • The ability to preserve empty slots as part of the set can be enabled, for situations when you would want a slot to stay empty (i.e. using a one handed weapon with your other hand empty).

Animated Gifs:
Saving a Set (By Using a Set Skill/Item)
[Linked Image]

Unequipping an Equipped Set
[Linked Image]

Set Backpacks in Action
[Linked Image]

Naming Sets with the Naming Wizard mod
[Linked Image]

Using a Named Set
[Linked Image]


Links:
  • Github Source
  • Steam Workshop Release

Joined: Sep 2017
member
Offline
member
Joined: Sep 2017
Wow, amazing stuff LL! I'm not home to scripting myself but I'm sure this requires some impressive back-end. The Equipment Sets mod even looks a bit like a tool our QA use for testing.

Joined: May 2017
enthusiast
OP Offline
enthusiast
Joined: May 2017
Thanks JB! Figuring out how to alphabetically sort a database was a journey, for sure. grin

Equipment Sets actually is the most simple mod out of the 3 (having only 7 core scripts compared to LeaderLib's 26 and Naming Wizard's 14).

All three of these mods actually began with Equipment Sets too, as once I got to a point where I wanted to be able to name sets, the idea for Naming Wizard came to mind (from the silly idea of player text input through a dialog menu), which then eventually lead to making a "core" library mod (LeaderLib).

Joined: Dec 2013
old hand
Offline
old hand
Joined: Dec 2013
Very creative and cool! The LL train keeps on trucking in sweet mods and utilities. up


DOS2 Mods: Happily Emmie After and The Noisy Crypt

Steam Workshop
Nexus Mods
Joined: Jul 2015
D
member
Offline
member
D
Joined: Jul 2015
Some really interesting features you have here. Just amazing!
Thanks LL!

Joined: May 2017
enthusiast
OP Offline
enthusiast
Joined: May 2017
Since its release, I've continued to work on LeaderLib as I develop other mods, which has resulted in some new, interesting features:

Math Extensions

A new Math Extensions script was created to fill in the gap for missing math functions, such as:
  • Factorials
  • Power
  • Sine
  • Cosine

Recreating Sine/Cosine in Osiris was... Interesting, to say the least. rpg007

Follower System

A new system was added for recruiting characters as "followers", which are basically permanent "summons" that can exist within the world. Simply by setting a flag, the system can be invoked and a character can be added to a player character as a follower.

This system was created while working on my new Mimicry mod, that adds a permanent follower you can recruit/dismiss at will.

New Helpers

Several new helpers were added, including:

Combat Helpers

This system works similar to Larian's _Combat script, in that it tracks objects in combat, and information on the combat itself. Yet, it takes things a bit further by tracking/providing the following:
  • How many rounds have passed in combat.
  • Which object is active on that turn.
  • What killed/destroyed what within combat (DB_LeaderLib_Combat_Casualties).

Skill Helpers

Simply registering an entry in the following database provides a super easy way to have that skill toggle a status:
Code
DB_LLLIB_Skills_StatusToggleSkills((STRING)_Skill, (STRING)_Status, (REAL)_Duration, (INTEGER)_Force)

Party Helpers

A way to count the total number of characters in a party was added. A proc/query can be called to recount a specific party, or all parties, and that count is automatically updated when characters leave/join.

Timer Helpers

Similar in design to Larian's ProcObjectTimer, a set of timer procedures were added to simplify the act of needing a specific timer to run for an object, and having an event fire when done. Currently, the following timer helpers are:

  • Object Timer (Anything with a GUIDSTRING). Calls a StoryEvent when done.
  • Character Item Timer. Calls a CharacterItemEvent when done.
  • Character Character Timer. Calls a CharacterCharacterEvent when done.

As someone who has had to constantly use StringConcatenate and databases to create unique timers for story scripts, I wish I had made these timer helpers sooner.

Behavior Script Helpers

In a desire to provide some functionality to behavior scripts that story has, a few events were added with behavior scripts in mind:

  • "LeaderLib_EquipItem" (CharacterItemEvent) - Simply equips the item to the character passed in the CharacterItemEvent.
  • "LeaderLib_UnequipItemInSlot" (CharacterEvent/StoryEvent) - Unequips whatever item is in the slot specified by the string variable "LeaderLib_ItemSlot".

Misc Helpers

A few other miscellaneous helpers were added as needed, such as procedures for copying stats, abilities, and attributes between characters, procedures for unequipping weapons, unequipping everything, or "refreshing" equipment (unequipping it then equipping it after a delay).

__________________________________

Anyway, thanks to RestingLichFace for steering me in the right direction for the sine/cosine formulas. Getting that working was a surprising success, as someone who has forgotten a large majority of math learned from school, haha.


Link Copied to Clipboard
Powered by UBB.threads™ PHP Forum Software 7.7.5