• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver

Problem - Healers Healing Themselves Unnecessarily

Arshei

New member
Joined
Feb 4, 2016
RedCents
Running my own emu server to goof around. My healers are healing themselves when they're at full health, draining mana. I suppose it's possible this is an MQ2 issue, but I am not sure.
 
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.
 
Problem - Healers Healing Themselves Unnecessarily

Users who are viewing this thread

Back
Top
Cart