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.
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.
This opens the dialog box, and adds the buttons.
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.
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.