If you still dont "get it" how ${Me.CurrentHPs.Hex} turns into whatever it is that gets spit out...
Pretend that your ${} is actually two.. so its
1: ${Me.CurrentHPs.Hex}
2: ${Me.CurrentHPs.Hex}
One is to describe which "type" you are at, and the other is to hold the "value". You start with no "type", and must first get the top level object.
From the reference: "character Me: The local character (you!)"
type: ${character.CurrentHPs.Hex}
value: ${pCharInfo.CurrentHPs.Hex}
The leftmost item in the ${} is the current type or value. We just looked at "Me" and the type is "character", the value is whatever pCharInfo is (a pointer to your character's data, you dont really need to know that).
Now we take a look at the next item, which starts at the . and ends at either a . or the last }. The next part is "CurrentHPs". Since we have a type, we look inside the "character" type for the CurrentHPs member. From the reference, under "character": "...int CurrentHPs: Current hit points"
and we get...
type: ${character.int.Hex}
value: ${pCharInfo.4532.Hex}
However, the part before our replacement is now completely useless and irrelevant, so:
type: ${int.Hex}
value: ${4532.Hex}
Notice that the leftmost item in type says "int" and the same for value says "4532". We continue in the same fashion for the rest of the items in our ${}, which we've only got one thing left, and that is "Hex". Our current type is "int" so we look under "int" in the reference for "Hex": "...string Hex: The hex value of the integer"
After getting rid of the left/irrelevant parts we now have this:
type: ${string}
value: ${11b4}
Now we are left with no more .'s and therefore nothing else to find. When this happens we look for "To String" under whatever type we're left with, which is string. String to string doesnt do anything so we will be left with 11b4.
Let's work with one from the examples:
type: ${Me.Buff[Spirit of Wolf].Duration.Time}
value: ${Me.Buff[Spirit of Wolf].Duration.Time}
Top level object is "Me" of type "character"
type: ${character.Buff[Spirit of Wolf].Duration.Time}
value: ${pCharInfo.Buff[Spirit of Wolf].Duration.Time}
Look for Buff[Spirit of Wolf] under "character"... "...buff Buff[name]: Finds buff with this name"
Note: If this buff was not on you, it's an automatic NULL and we would stop parsing
type: ${buff.Duration.Time}
value: ${<pointer to buff>.Duration.Time}
Look for "Duration" under "buff": "...ticks Duration: Duration "
type: ${ticks.Time}
value: ${25.Time}
Look for "Time" under "ticks": "...string Time: The time formatted as mm:ss"
type: ${string}
value: ${2:30}
Look for "To String" under "string": "... this IS a string, assface"
Final Value: 2:30
The entire ${} crap gets replaced with 2:30
