• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

Talent Jui

What is Talent Jui



Talent Jui is the 3. edition of my resource Talent. It offers a choice talent system similar to heroes of the storm. On levels you decided, heroes/units can pick one talent from a group of choices (tier) specially defined for that unitTyped. This system works for any amount of units at the same time. But one player can only obeserve talents of one unit at one time. Talent Jui provides a custom created dialog (which can be slightly customized) to perform the choices from the player perspective. Choices and tiers are created using jass/GUI. Cause of using the frame natives, Talent Jui does not need any object Editor data to manage itself.
This system also includes an easy way to create unlearning/reseting choices.

How to install


Requiers Warcraft 3 1.31+
  • Make sure World Editor generates unknown variables in Preferences is set.
  • Copy the Talent Folder.
  • update references inside Talent Init
  • export
    • war3mapImported\TalentBox.fdf
      war3mapImported\TalentBox.toc
      WHEN USING THE EXPORT ALL BUTTON, IT CAN HAPPEN THAT THE CONTENT OF THIS FILES SWAP
    • import them into your map
  • Installed

How to Use



You have to feed the talent data with choices and tiers for unitTypes that shall use talent. Also your choices needs to activade code/triggers when they were picked. Talent provides 2 ways to handle that: events or code binding. Checkout the examples included in the map for that.

Lua version



The Lua Version has differences to the jass Version outside of beeing not jass. In the jass Version Level 0 was a valid Level for a Tier. The Lua Version starts with Level 1. It has a different api when not using the GUI triggers. The Trigger binding is gone, Lui calls binded functions instead of Triggers. Each Choice is a table, one can attach data to it like to any table. Cause it is dangerous to execute stuff in the root (crash wise and garbage collector wise) The Lua Version starts a 0.0s timer after it passed registered so named "unitSheetsFunctions" are called which should be the Custom Unit Talent Trees (checkout the Hero Demos). UnitSheetsFunctions are only relevant when using Lua directly. When using GUI, it is not important.

TasStats



Talent has a feature called TasStats this feature is optional, you could delete it and Talent would still work. It is an "simple" editable addon to make choices add/reduce stats when a specific key for the choice table is set and it reverts it onreset. Unlike the old TalentPreMadeChoice TasStats does not use OnLearn/OnReset.
Having TasStats installed makes picking/reseting choices a little bit heavier. But it reduces the need of OnLearn/OnReset callbacks/Triggers.
TasStats does not work for morphing units or illusions.

Lua

jass


On default TasStats provides this keys for stats
Lua:
TasStr
TasAgi
TasInt
TasLife
TasLifeReg
TasMana
TasManaReg
TasArmor
TasDamage
TasAttackSpeed
TasTurnSpeed
TasCastPoint
TasCastBackswing
Using it is done this way (inside a UnitSheet:
Lua:
local choice
-- create a choice
choice = TalentHeroCreateChoiceEx()
-- set TasStat - TasLife to 200
choice.TasLife = 200
choice.TasMana = 100
choice.TasArmor = 1
-- Set Title
choice.Head = "Sustain Healer"
-- set icon
choice.Icon = "ReplaceableTextures\\CommandButtons\\BTNForestTrollShadowPriest.blp"
-- autocalc Text
TalentTasStatsGetText()

TasStats (Lua version) has another feature it can change integer/real(Level) fields of abilities which is done over the Choice.Key TasSpellField.
One has to be aware that to use this feature without wierd results, the ability-fields current value should not be set to x only add value x to it.
An example
Lua:
choice = TalentHeroCreateChoiceEx()
choice.TasSpellField = {
    -- change Ability Anh1
    Anh1 = {
        -- reduce manacosts of all levels by 2
        ABILITY_ILF_MANA_COST = -2
        -- reduce cooldown by 0.1 seconds
        ,ABILITY_RLF_COOLDOWN = -0.1
    }
}

Ability Fields support Level specific changes, instead of a number use a table
choice.TasSpellField = {
    -- holy Light
    AHhb = {
        -- reduce cooldown of Level 3 (object Editor Level 3)
        ABILITY_RLF_COOLDOWN = {-0, -0, -5}
        -- Instead of Listing the 0s you could write to an int index. Don't forget the [], if you plan to use this feature.
        ABILITY_RLF_COOLDOWN = {[3] = -5}
    }

the Jass version has a set of array variables, when you set a value at the index of the choice. Then it will adjuste the wanted base stat when the choice is picked.
This are the arrays
JASS:
integer array udg_TalentTasStatStr
integer array udg_TalentTasStatAgi
integer array udg_TalentTasStatInt
integer array udg_TalentTasStatLife
integer array udg_TalentTasStatMana
real array udg_TalentTasStatLifeReg
real array udg_TalentTasStatManaReg
real array udg_TalentTasStatArmor
integer array udg_TalentTasStatDamage
real array udg_TalentTasStatAttackSpeed
real array udg_TalentTasStatCastPoint
real array udg_TalentTasStatCastBackswing
use udg_TalentChoiceLast to get the index used by the last created Choice, right after you created a Choice.
The GUI example below adds 20 Base-ATK on pick
  • Set TalentGUI_UnitType = Bergkönig
  • Set TalentGUI_Level = 1
  • Set TalentGUI_ChoiceHead = Axe
  • Set TalentGUI_ChoiceIcon = ReplaceableTextures\CommandButtons\BTNOrcMeleeUpOne.blp
  • Set TalentGUI_ChoiceText = Gain 20 Base-ATK
  • Trigger - Run TalentGUICreateChoice (ignoring conditions)
  • Set TalentTasStatDamage[TalentChoiceLast] = 20


Credits


Nestharus
Bribe
Luashine


ChangeLog

1.39 LUI) Supports TasUnitBonus, ESC-Key -> Closes UI
1.38 LUI/1.36e JUI) Icon Show Button, Useage conditions.
1.37) (Lua) Unit Specific TalentTrees
1.36d) (vjass) Fixed an minior Error in TalentGrid
1.36c)
Added OnlyOwnUnit & FixedTarget
Lua) Fixed some problems with TalentBox
1.36b) Lua)
Reworked the Included Save&Load helpers
improved TalentGrid Settings​
1.36
Added a new additional UI
A model hints a possible choice​
1.35b (v)jass)
Added TasTalentStat , without AbilityField
Model over the show Button hints a possible choice
Moved TalentChoiceCreateAddSpells & TalentChoiceCreateReplaceSpell from Premade into Talent
Added function TalentChoiceAddSpells​
1.35a

Added GroupMode
more support for GetLocalizedString​
1.35

TalentGUIAddSpell resets the Spell to 0 after usage
Added the tooltip from TasButtonList
Can Hide choiceText+Box
(Lua)
Improved error messages for UnitSheets callbacks.
+function TalentChoiceAddSpells(choice, "AHbz,AHwe,AHab,AHmt")
+Talent.TasStats (choice add stats/AbilityFields)
Removed TalentPreMadeChoice
fixed some mp unSafe code​
1.34d

Supports Localized data for choices
(jass) FrameLoader is optional now
(Lua) Improved OnLearn/OnReset callback functions
(Lua) Talent-functions taking ObjectEditor ObjectCodes now work without putting them into FourCC.​
1.34c (vjass only) repeats the toc Loding after Loading the game
1.34b Recreates all Talent custom UI, after Loading the game to counter Save&Load Bug.
1.34a Fixed a possible desync with the Lua version
1.34 Added function TalentGetMacro(unit) it returns a text that could be used in TalentMacroDo to pick the talents the unit had done.
1.33

Resets the Talent Event real before Setting it to the wanted value.
TalentBox will now close when the current Selected Target dies.
TalentBox will now close after doing a choice and no further choice can be done.
Maybe the overglowing was fixed.​
1.32a Fixed a bug in Lui with Talents beeing unselectable when adding abilties.
1.32.00

Improved the Dialog for allied shared Units.
Improved Level Boxes and Page switching.
fixed a bug with the Reset Button will be disable on Level not beeing the current selection.
One can now alter the space between Choice, the Bottom and the top.
Added an boolean array to disable the reset button as long that boolean is true.
Added udg_Talent__UnitCode inside Events binded Code it is the unitType beeing used by udg_Talent__Unit.
The Choice-Description fuses now with the Bottom and Right of the Choice Frame.
Fixed a glitch with disabled Reset Button.
Non Talent Users Show now a Box with the title reading "No Talent User".
Added a Lua Version​
Requiers Warcraft 3 1.31+

Keywords: SkillTree, Talents, masteries, hots like, hero progress, 1 of 3, 1 of 2, 1 of many.
Contents

Talent Jui 1.36f (Map)

Talent Lui 1.39 (Map)

Reviews
MyPad
Tested, and works very well with the game. Approved.
This system is incompatible with the Item Shop System, can anyone help me?

From what I understand, it conflicts with the RegisterPlayerUnitEvent of another system, I tried to leave only one by deleting one in another, but then one of the events stops working.

Link: Item Shop System
Different creators, so there's no guarantee you won't have issues when using both systems.

I would use Tasyen's Item Shop if you're looking for one that's likely to be compatible with this

 
Top