Tutorial Attribute Point Distribution

M

musliisafish

Guest
This is a simple tutorial for those who wish to allow players to distribute Attribute points given to their heroes themselves, as opposed to being added automatically.

First, we will want heroes to stop gaining attributes automatically. This is a simple matter of opening the object editor and setting the following values for each of the player owned heroes in the game to zero:
Stats - Strength per level
Stats - Agility per level
Stats - Intelligence per level

Please Note that this will apply for computer owned heroes aswell. Be sure to create a trigger to distribute attribute points for computer owned heroes if computers can gain control of any of these heroes.

Secondly, we will need to create an integer variable that determines how many points the player has to spend on attributes. Make this an Integer variable labeled AttributePoints with an initial value of zero (or however many attribute points you want your players to begin with)

You will also need to create an ability that does ABSOLUTELY NOTHING (this also means no cooldown, or mana cost) titled add attributes. It will need to be a unit ability (make sure the X and Y default positions are both 1. this slot is usually unoccupied by hero abilities). Give each of the heroes this ability.

Next the dialog box, and dialog buttons variables. We will want to create a dialog variable labeled AttributePointsDialog with an initial value of New Dialog. Next we will create a variable named AttributePointsButtons. This will be a dialog button variable that is an array with a size of 3.

Now for the scripts. These are all very simple.

Code:
Attribute Points
    Events
        Unit - A unit owned by Player 1 (Red) Gains a level
    Conditions
    Actions
        Set AttributePoints = (AttributePoints + 6)
        Game - Display to (All players) the text: To add attributes t...

This gives attribute points to the player whose hero has just gained a level. 6 is the standard number of total attribute points given to heroes per level in a melee game. This also instructs players on how to open the dialog in the first place.

Code:
Spending Points
    Events
        Dialog - A dialog button is clicked for AttributePointsDialog
    Conditions
    Actions
        Set AttributePoints = (AttributePoints - 1)
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Clicked dialog button) Equal to AttributePointsButtons[1]
            Then - Actions
                Hero - Modify Strength of Unit: Add 1
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        AttributePoints Equal to 0
                    Then - Actions
                        Dialog - Hide (Clicked dialog) for Player 1 (Red)
                    Else - Actions
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Clicked dialog button) Equal to AttributePointsButtons[2]
            Then - Actions
                Hero - Modify Agility of Unit: Add 1
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        AttributePoints Equal to 0
                    Then - Actions
                        Dialog - Hide (Clicked dialog) for Player 1 (Red)
                    Else - Actions
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Clicked dialog button) Equal to AttributePointsButtons[3]
            Then - Actions
                Hero - Modify Intelligence of Unit: Add 1
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        AttributePoints Equal to 0
                    Then - Actions
                        Dialog - Hide (Clicked dialog) for Player 1 (Red)
                    Else - Actions
            Else - Actions

This opens the dialog box, and adds the buttons.

Code:
Spending Points
    Events
        Dialog - A dialog button is clicked for AttributePointsDialog
    Conditions
    Actions
        Set AttributePoints = (AttributePoints - 1)
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Clicked dialog button) Equal to AttributePointsButtons[1]
            Then - Actions
                Hero - Modify Strength of Unit: Add 1
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        AttributePoints Equal to 0
                    Then - Actions
                        Dialog - Hide (Clicked dialog) for Player 1 (Red)
                    Else - Actions
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Clicked dialog button) Equal to AttributePointsButtons[2]
            Then - Actions
                Hero - Modify Agility of Unit: Add 1
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        AttributePoints Equal to 0
                    Then - Actions
                        Dialog - Hide (Clicked dialog) for Player 1 (Red)
                    Else - Actions
            Else - Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                (Clicked dialog button) Equal to AttributePointsButtons[3]
            Then - Actions
                Hero - Modify Intelligence of Unit: Add 1
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        AttributePoints Equal to 0
                    Then - Actions
                        Dialog - Hide (Clicked dialog) for Player 1 (Red)
                    Else - Actions
            Else - Actions

This trigger adds the selected attribute points to the hero, and closes the dialog box once the player has ran out of attribute points.

-Important Notes-

- Unit is a variable that's value is the hero selected by a player at the initialization of my map. obviously, this is there for demonstration purposes only.
- This tutorial is (currently) for single player maps only. obviously, it would be quite a simple matter to modify it for multiplayer maps. as for maps where a player may control more than one hero, that is a different matter, and will require a more sophisticated way of keeping track of attribute points.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top