Issue occurs with stock RoF2 UI as well as custom.
*Edit* Clarification: it occurs with the stock UI that came with client I pulled down from EZ.
- - - Updated - - -
Did a little digging with the help of debugall logging. The issue manifests within the 'Who is the most hurt' section of the CheckHealth sub. I pilfered the /for loop and put into an empty macro so I could spam run it, hoping to figure out what is causing the strange health readings.
Here's what I put together:
Rich (BB code):
sub main
/declare i int local 0
/declare MostHurtName string local
/declare MostHurtType string local
/declare MostHurtID int local 0
/declare MostHurtHP int local 100
/declare MostHurtNo int local 0
/declare GroupHealthAvg string local 0
/declare SingleHealPoint int local 80
:DoItAgain
/varset MostHurtName
/varset MostHurtType
/varset MostHurtID
/varset MostHurtHP 100
/varset MostHurtNo 0
/for i 0 to ${Group}
/echo ${Group.Member[${i}].CleanName} - ID ${Group.Member[${i}].ID} - PctHPs ${Group.Member[${i}].PctHPs} - Type = ${Group.Member[${i}].Type}
/if (${Group} && ${Group.Member[${i}].ID} && ${Group.Member[${i}].Type.NotEqual[corpse]} && ${Group.Member[${i}].PctHPs}>=1) {
/echo -- Most Hurt:${i} ${MostHurtNo} ${MostHurtName} ${MostHurtID} ${MostHurtHP} \agLine#: ${Macro.CurLine}
/if (${Group.Member[${i}].PctHPs} < ${MostHurtHP}) {
/varset MostHurtName ${Group.Member[${i}].CleanName}
/varset MostHurtType ${Group.Member[${i}].Type}
/varset MostHurtID ${Group.Member[${i}].ID}
/varset MostHurtHP ${Group.Member[${i}].PctHPs}
/varset MostHurtNo ${i}
}
/if (${HealGroupPetsOn} && ${Select[${Group.Member[${i}].Class.Name},cleric,wizard]}==0 && ${Group.Member[${i}].Pet.ID}>0 && ${Group.Member[${i}].Pet.PctHPs} < ${MostHurtHP}) {
/varset MostHurtName ${Group.Member[${i}].Pet.CleanName}
/varset MostHurtType Pet
/varset MostHurtID ${Group.Member[${i}].Pet.ID}
/varset MostHurtHP ${Group.Member[${i}].Pet.PctHPs}
/varcalc MostHurtNo ${i}+8
}
}
:NextGMember
/next i
/echo CheckHealth: (${MostHurtHP} < ${SingleHealPoint}) /call SingleHeal "${MostHurtName}" "${MostHurtType}" ${MostHurtHP} ${MostHurtNo} \agLine#: ${Macro.CurLine}
/if (${MostHurtHP} < ${SingleHealPoint}) {
/echo \arSingleHeal "${MostHurtName}" "${MostHurtType}" ${MostHurtHP} ${MostHurtNo}
/goto :Done
}
/goto :DoItAgain
:Done
/return
The check will pass without issue for a while and then randomly it will kick out. The stranger thing is that it will kick out with the same health % for that character again and again. It will show 100%, 100%, 100%, etc then suddenly 45%. I'll run it again, 100, 100, ... 100, 45. Again, 100, ... 100, 45.
Rich (BB code):
[2017/05/25 22:46:15] [MQ2] Gebbi - ID 195 - PctHPs 100 - Type = PC
[2017/05/25 22:46:15] [MQ2] -- Most Hurt:0 0 0 100 Line#: 21
[2017/05/25 22:46:15] [MQ2] Eriatha - ID 356 - PctHPs 100 - Type = PC
[2017/05/25 22:46:15] [MQ2] -- Most Hurt:1 0 0 100 Line#: 21
[2017/05/25 22:46:15] [MQ2] CheckHealth: (100 < 80) /call SingleHeal "" "" 100 0 Line#: 40
[2017/05/25 22:46:15] [MQ2] Gebbi - ID 195 - PctHPs 100 - Type = PC
[2017/05/25 22:46:15] [MQ2] -- Most Hurt:0 0 0 100 Line#: 21
[2017/05/25 22:46:15] [MQ2] Eriatha - ID 356 - PctHPs 100 - Type = PC
[2017/05/25 22:46:15] [MQ2] -- Most Hurt:1 0 0 100 Line#: 21
[2017/05/25 22:46:15] [MQ2] CheckHealth: (100 < 80) /call SingleHeal "" "" 100 0 Line#: 40
[2017/05/25 22:46:15] [MQ2] Gebbi - ID 195 - PctHPs 100 - Type = PC
[2017/05/25 22:46:15] [MQ2] -- Most Hurt:0 0 0 100 Line#: 21
[2017/05/25 22:46:15] [MQ2] Eriatha - ID 356 - PctHPs 100 - Type = PC
[2017/05/25 22:46:15] [MQ2] -- Most Hurt:1 0 0 100 Line#: 21
[2017/05/25 22:46:15] [MQ2] CheckHealth: (100 < 80) /call SingleHeal "" "" 100 0 Line#: 40
[2017/05/25 22:46:15] [MQ2] Gebbi - ID 195 - PctHPs 100 - Type = PC
[2017/05/25 22:46:15] [MQ2] -- Most Hurt:0 0 0 100 Line#: 21
[2017/05/25 22:46:15] [MQ2] Eriatha - ID 356 - PctHPs 100 - Type = PC
[2017/05/25 22:46:15] [MQ2] -- Most Hurt:1 0 0 100 Line#: 21
[2017/05/25 22:46:15] [MQ2] CheckHealth: (100 < 80) /call SingleHeal "" "" 100 0 Line#: 40
[2017/05/25 22:46:15] [MQ2] Gebbi - ID 195 - PctHPs 45 - Type = PC
[2017/05/25 22:46:15] [MQ2] -- Most Hurt:0 0 0 100 Line#: 21
[2017/05/25 22:46:15] [MQ2] Eriatha - ID 356 - PctHPs 100 - Type = PC
[2017/05/25 22:46:15] [MQ2] -- Most Hurt:1 0 Gebbi 195 45 Line#: 21
[2017/05/25 22:46:15] [MQ2] CheckHealth: (45 < 80) /call SingleHeal "Gebbi" "PC" 45 0 Line#: 40
[2017/05/25 22:46:15] [MQ2] SingleHeal "Gebbi" "PC" 45 0
[2017/05/25 22:46:15] The current macro has ended.
Curiosity: Why does the /for loop start at zero? This means the first character in the group that the loop checks is the character running the macro, but CheckHealth is already looking at the value of ${Me.PctHPs} right after the /declares. Seems like duplicated effort.
At this point I am fairly positive the issue is not with KA and it is coming from upstream, either my client or MQ2. In the mean time I have changed the /for loop to start at 1, which bandaids the issue.