One feature from T1RPG that I found neat was the “lastScent” data that the server stored for each player. The idea is that every so often, the player will leave a “scent”, which is used when other players are trying to track them (with the #track skill). But the higher a player’s SenseHeading skill, the less likely you are to leave a new “scent.” The idea is that you are better at covering your tracks, since you are an experienced tracker yourself. And if the player is actively hiding, then they never leave a new scent, regardless of their SenseHeading skill.
The server only stores one “lastScent” value per player. So the #track ability only locates the last scent a player has left. So if someone was trying to hunt you down, you could try to deliberately leave a scent somewhere (using #track on yourself to check) and then use #hide to stop leaving scents. Sending the pursuer on a wild goose chase.
I added this functionality back into T2RPG. In doing so, I found that T2RPG did not make calls to ZoneUpdate() (but has comments saying that they didn’t use it because they couldn’t get it to work), which is where the storeData for “lastScent” occured. So, in order to get “lastScent” to work, I ended up implementing the RecursiveZone() function, which called ZoneUpdate() on all players ever 2 seconds. Yay, scope creep.
ZoneUpdate() in Tribes 1 performed several things:
Update the player’s current zone
Perform environmental damage to player
Decrease ticks for temporary stat bonuses
Check to see if the player has moved, and potentially leave a scent
For Tribes 2, I left out 1 and 3. Setting the player’s zone is now handled by entering and leaving trigger boxes around zones. I think this is better than the old method. And stat bonuses are handled be a work around, which was created because ZoneUpdate wasn’t working. I’ll have to see if that method is better or not.
In the past few days (before starting this blog) I’ve made quite a bit of progress. Once I get the backend fixed up, I can start work on the more obvious bugs.