Tint Projectiles Based on Player
Author: Payne (staredit.net)Tags: intermediate data  
Source: http://www.staredit.net/w2/index.ph...Added 13 years ago 

If you want the missiles of your unit to be colored based on the player that casts it, this tutorial is for you!
The fact that I am using 4 upgrades, requirements, validators, events, etc. is because I'm going to make the game tint the projectiles of 4 different players.


General concept
We'll use Validators to detect which Custom Upgrade a player's caster-unit has. We'll also have to give this upgrade to the players via triggers.


Upgrades
Create 4 blank upgrades and you're done for this part!


Requirements
Create 4 requirements of Tech Type "Upgrade".
In the Requirements + field, remove anything you see. From there, add a new value (right click -> Add Node) to the Use field and select "Equals".
Now, add a new value to the Equals: "Count Upgrade". From there, choose the corresponding upgrade as the Alias and select Completed as the State.
You'll also need to create a new Node that will correspond to the Upgrade Count. Do as follow: create a new value to the Equals, select Constant and set it to 1.
You'll do this for the 4 requirements, one different upgrade per requirement, but always setting the Constant to 1.


Validators
Create 4 Validators of type Player Requirement.
Make sure the field Validator - Player + is set to "Caster Origin".
Change the field Validator - Value to the corresponding Requirement.


Actors
Go to your missile unit (Ammo Unit)'s Actor tab and change the Event - Events +: right-click to make a new Event. The Event's type should be Actor Creation (since we always want the actor to be tinted).
Now, right-click on the Event and click on "Add Term". Change the Term type to ValidatePlayer and change the Validator to one of the 4 you've created.
Next step is to set the Action's "Msg Type" to Set Tint Color. All you'll want to change in this is the "Color" field.
Repeat this 3 more times, adding a new Event for each player (remember we're making this for four players, hence the fact that we're doing 4 times everything).


Triggers
Now, using a Map Initialization event, you'll want to create a "Set Upgrade Level For Player" action and give a level 1 upgrade for all the 4 players (remember you've created 4 different upgrades, one for each player).


Other techniques
There are multiple ways to achieve this. Some are easier, but may not fit most of the situations.

Alternative #1
We could use 1 upgrade and 4 constants (the difference would be in the triggers: you'd set a level value to the upgrade instead of different upgrades of level 1).

Alternative #2
We could use resources.
The only thing this technique requires is 4 different Validators of type "Player Compare Resource". From there, you change the fields Validator - Compare, Validator - Resource and Validator - Value. Don't forget to verify that the Validator - Player + field is set to "Player Origin".

As for the triggers, we'd have to use a "Modify Player Property" action.
IMPORTANT NOTE: You shouldn't use this technique if the resource amount a player has might change during the game.






Star Depot
Contact      Login