BC gems & shoulder enchants not parsed

Data Accuracy issues

BC gems & shoulder enchants not parsed

Postby ambisset » Tue Feb 20, 2007 3:44 pm

I was noticing that with version 1.7.3 the function sortOutTooltip does not appear to parse gems or the shoulder enchants eg: Tooltip line of

+5 Mana Regen
+13 Healing
+7 Healing Spells & 1 Mana per 5 seconds

none of these are captured.

My own profile at

http://anarchyalliance.no-ip.info/roste ... er=Khadgar

has a few of these examples. The details in the footer of the character sheet misses the following expressions :

+X Healing
+X Healing Spells
+X Mana Per 5 sec.
+X Healing Spells & +Y Mana per 5 Seconds

the "+X Mana Per 5 sec." from the ring's base stats (not an enchant) is the one with the oddest capitalisation and foreshorting of seconds."

The following code fragment added to the end of the function sortOutTooltip fixes most of these problems (it needs properly localised of course) :

else if (ereg('^.*Healing Spells$', $line) or ereg('^.*Healing$', $line) ){
$newline = 'Equip: Increases healing done by spells and effects by up to ' . getModifier( $line) . '.';
setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
}
else if (ereg('^.*Mana Regen$', $line)){
$newline = 'Equip: Restores '. getModifier( $line) .' mana per 5 sec.';
setBonus( getModifierMana( $newline), getModifierString( $newline), $item_name, $item_color);
}
else if (ereg('^.*Healing Spells & ', $line)){
// we have a +X Healing Spells & +Y Mana per 5 secs.
list($line1, $line2) = explode('&', $line);
// first add healing bonus
$newline = 'Equip: Increases healing done by spells and effects by up to ' . getModifier( $line1) . '.';
setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
// now add mana bonus
$newline = 'Equip: Restores '. getModifierMana( $line2) .' mana per 5 sec.';
setBonus( getModifierMana( $newline), getModifierString( $newline), $item_name, $item_color);
}
else if (ereg('^.*Mana Per 5 sec\.', $line) ){
$newline = 'Equip: Restores '. getModifierMana( $line) .' mana per 5 sec.';
setBonus( getModifierMana( $newline), getModifierString( $newline), $item_name, $item_color);
}
Last edited by ambisset on Tue Feb 20, 2007 4:09 pm, edited 1 time in total.
ambisset
WR.net Apprentice
WR.net Apprentice
 
Posts: 7
Joined: Tue Aug 22, 2006 8:01 pm

BC gems & shoulder enchants not parsed

Postby zanix » Tue Feb 20, 2007 6:41 pm

The bonus code is mostly legacy and some people have found better ways to parse the data
http://www.wowroster.net/Forums/viewtopic/t=2782.html

In fact, I'm thinking about integrating this into 1.7.4
Read the Forum Rules, the WiKi, and Search before posting!
WoWRoster v2.1 - SigGen v0.3.3.523 - WoWRosterDF
User avatar
zanix
Admin
Admin
WoWRoster.net Dev Team
WoWRoster.net Dev Team
UA/UU Developer
UA/UU Developer
 
Posts: 5546
Joined: Mon Jul 03, 2006 8:29 am
Location: Idaho Falls, Idaho
Realm: Doomhammer (PvE) - US

BC gems & shoulder enchants not parsed

Postby DiscoWay » Wed Feb 21, 2007 1:08 am

ambisset,

In order to get this enchant http://www.thottbot.com/?sp=35822 to add itself into the bonus area, i had to add,

Code: Select all
or ereg('^.*mana every 5 sec\.', $line)


to

Code: Select all
else if (ereg('^.*mana per 5 sec\.', $line) or ereg('^.*mana every 5 sec\.', $line) ){
      $newline = 'Equip: Restores '. getModifierMana( $line) .' mana per 5 sec.';
      setBonus( getModifierMana( $newline), getModifierString( $newline), $item_name, $item_color);
      }


Just wanted to let ya know, thanks agian for this mod =)
User avatar
DiscoWay
WR.net Apprentice
WR.net Apprentice
 
Posts: 25
Joined: Mon Feb 12, 2007 11:40 pm

Re: BC gems & shoulder enchants not parsed

Postby DiscoWay » Sat Mar 03, 2007 12:58 am

First I want to say that I am new to php programming and I am learning. Ever since ambisset posted his original message I have been trying to improve his code, but i think I have come to a dead end. I am crossing my figures that others will show interest in this and continue or improve what ambisset and I have done so far. The first two code snippets will be the problems im working on, the very last will be the entire function sortOutTooltip.

Oh and another thing is, it is only half way localized, that was something i was gonna do last, until i kept finding more problems.

So I want to share with you the annoyances of this code.

If one line has only one stat such as mana regen,

"+4 Intellect and +4 Mana every 5 seconds"
or
"+1 Mana every 5 Sec. and 3 Intellect"

Then the code below will pick it up and place it in the appropriate bonus mana column. In the case of Intellect, it is left out.

Problem #1.

Now we have a line that says

"+9 Healing Spells and +2 Mana every 5 seconds"

There are two sections that need to be parsed, unfortunately, since the mana check is above the healing check, only the mana will be parsed and the healing is skipped altogether. If you switch the two "else if" functions and place the mana parser back to the top, it switches again.

My question is, what am i doing wrong here? Shouldn't both lines be parsed without this strange behavior?

Code: Select all
// if "and" Check left and right
      else if (ereg('^.*'.$wordings[$client_lang]['tooltip_gem_and'], $line)){
      
         list($line1, $line2) = explode('and', $line);      
                                 
            // Left Gem - Mana
            if (ereg('^.*'.$wordings[$client_lang]['tooltip_gem_Mana_every_5_seconds'], $line1)
            or ereg('^.*'.$wordings[$client_lang]['tooltip_enchant_mana_per_5_sec'], $line1)){
            $newline = 'Equip: Restores '. getModifierMana( $line1) .' mana per 5 sec.';
            setBonus( getModifierMana( $newline), getModifierString( $newline), $item_name, $item_color);
            }
            
            // Right Gem - Mana
            else if (ereg('^.*'.$wordings[$client_lang]['tooltip_gem_Mana_every_5_seconds'], $line2)
            or ereg('^.*'.$wordings[$client_lang]['tooltip_gem_Mana_per_5_seconds'],$line2)) {
            $newline = 'Equip: Restores '. getModifierMana( $line2) .' mana per 5 sec.';
            setBonus( getModifierMana( $newline), getModifierString( $newline), $item_name, $item_color);
            }
                                    
            // Left Gems - Spell Crit
            else if (ereg('^.*'.$wordings[$client_lang]['tooltip_gem_Spell_Critical_Rating'], $line1)){
            $newline = 'Equip: Improves spell critical strike rating by ' . getModifier( $line1) . '.';
            setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
            }         
            
            // Right Enchant - Hit Rating
            else if (ereg('^.*'.$wordings[$client_lang]['tooltip_enchant_Hit_Rating'], $line2)){
            $newline = 'Equip: Increases your hit rating by ' . getModifier( $line2) . '.';
            setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
            }
                        
            // Left Enchant - Attack Power
            else if (ereg('^.*'.$wordings[$client_lang]['tooltip_enchant_Attack_Power'], $line1)){
            $newline = 'Equip: Increases attack power by ' . getModifier( $line1) . '.';
            setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
            }      
                                    
            // Right Gem - Critical Strike
            else if (ereg('^.*'.$wordings[$client_lang]['tooltip_gem_Critical_Strike_Rating'], $line2)){
            $newline = 'Equip: Increases your critical strike rating by ' . getModifier( $line2) . '.';
            setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
            }      
                     
            // Right Gem - Spell Critical Rating
            else if (ereg('^.*'.$wordings[$client_lang]['tooltip_gem_Spell_Critical_Rating'], $line2)) {
            $newline = 'Equip: Improves spell critical strike rating by ' . getModifier( $line2) . '.';
            setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
            }            
            
            // Left Gem - Healing
            else if (ereg('^.*'.$wordings[$client_lang]['tooltip_gem_Healing_Spells'], $line1)){
            $newline = 'Equip: Increases healing done by spells and effects by up to ' . getModifier( $line1) . '.';
            setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
            }                           
                           
      }


Problem #2

Okay, so now this line appears

"+4 Mana Regen/+10 Stamina/+24 Healing Spells"

or

"+18 Healing and Spell Damage/+8 Spell Hit"

Thanks to lhunath's wonderful skills with preg_match(), he was able to make up this pattern, which after reading the syntax documents on the php.net, i still don't fully understand it and want to jump off a bridge...
/^([+\d]+)[^+]+([+\d]+)[^+]+([+\d]+)[^+]+/

Anyways, I have been playing around with this one, but still no luck. My goal here is to try and throw the results into some sort of array and then access it using else if statements to check for certain text, grab the digit and send it off to be reported to the correct bonus line.

Im gonna keep working on this, but i wanted to try my luck on the community to see if anyone would be willing to help figure this out and start getting correct bonus readings on the roster.

This was my last failed experimental attempt for the problem #2 I tried using only part of the full pattern above this round,... heh

Code: Select all
else if (preg_match('/^([+\d]+)[^+]+/', $line)){
      
         list($line1, $line2, $line3) = explode('/', $line);
                              
         // Enchant - Mana
         if (ereg('^.*'.$wordings[$client_lang]['tooltip_enchant_Mana_Regen'], $line1) == $line){
         $newline = 'Equip: Restores '. getModifier( $line) .' mana per 5 sec.';
         setBonus( getModifierMana( $newline), getModifierString( $newline), $item_name, $item_color);
         }
         
         // Enchant - Healing (Using gem healing spells, works the same)
         else if (ereg('^'.$wordings[$client_lang]['tooltip_gem_Healing_Spells'], $line3)){
         $newline = 'Equip: Increases healing done by spells and effects by up to ' . getModifier( $line3) . '.';
         setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
         }
         
         
      }



Below is the entire function that i have been trying to work on and learning in the process.

Code: Select all
function sortOutTooltip( $tooltip, $item_name, $item_color,$client_lang )
{
   global $wordings;

   $lines = explode(chr(10), $tooltip);
   
   foreach ($lines as $line)
   {
      //////////////////////////////////////
      // Added for new Equip handling   - DW//
      //////////////////////////////////////
      
      // New Equip - Attack Power (This need to stay above the original code)
      if (ereg('^'.$wordings[$client_lang]['tooltip_newequip_Increases_attack_power_by'], $line)){
      $newline = 'Equip: Increases attack power by ' . getModifier( $line) . '.';
      setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
      }
      
      // New Equip: - Critical Strike Rating (moves all "Imrpoves" message to "Increases"
      // (This need to stay above the original code)
      else if (ereg('^'.$wordings[$client_lang]['tooltip_newequip_Improves_critical_strike_rating_by'], $line)){
      $newline = 'Equip: Increases your critical strike rating by ' . getModifier( $line) . '.';
      setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
      }
               
      // New Equip: - Hit Rating (moves all "Imrpoves" message to "Increases"
      // (This need to stay above the original code)
      else if (ereg('^'.$wordings[$client_lang]['tooltip_newequip_Improves_hit_rating_by'], $line)){
      $newline = 'Equip: Increases your hit rating by ' . getModifier( $line) . '.';
      setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
      }      
         
      //  Original Code
      else if ((ereg('^'.$wordings[$client_lang]['tooltip_equip'], $line)) and ( hasNumeric($line)==FALSE)){
      setBonus( '', $line, $item_name,$item_color);
      }
      
      else if (ereg('^'.$wordings[$client_lang]['tooltip_equip_restores'], $line)){
         setBonus( getModifierMana( $line), getModifierString( $line), $item_name, $item_color);
      }
      
      else if (ereg('^'.$wordings[$client_lang]['tooltip_equip_when'], $line)){
         setBonus( getModifierMana( $line), getModifierString( $line), $item_name, $item_color);
      }      
      
      else if (ereg('^'.$wordings[$client_lang]['tooltip_equip'], $line)){   
         setBonus( getModifier( $line), getString( $line), $item_name, $item_color);      
      }
      
      
      else if (ereg('^'.$wordings[$client_lang]['tooltip_set'], $line)){            setBonus( '', $line, $item_name, $item_color);
      
      }               
      
      else if (ereg('^'.$wordings[$client_lang]['tooltip_spell_damage'], $line)){
         setBonus( getModifier( $line), $line, $item_name, $item_color);
      }
      
      /* // This looks like something thats old and not needed anymore.
      else if (ereg('^'.$wordings[$client_lang]['tooltip_healing_power'], $line)){
         setBonus( getModifier( $line), $line, $item_name, $item_color);
      }
      */
      
      else if (ereg('^'.$wordings[$client_lang]['tooltip_chance_hit'], $line)){
         setBonus( getModifier( $line), getModifierString( $line), $item_name, $item_color);
      }
      
      else if (ereg('^'.$wordings[$client_lang]['tooltip_reinforced_armor'], $line)){
         setBonus( getModifier( $line), getModifierString( $line), $item_name, $item_color);
      }
      
      else if (ereg('^'.$wordings[$client_lang]['tooltip_school_damage'], $line)){
         setBonus( getModifier( $line), getString( $line), $item_name, $item_color);
      }         
      // End of Original code
      
      //////////////////////////////////////////
      // Added for new gems and enchants - DW   //
      //////////////////////////////////////////
      
      // Thanks to lhunath's help on the pattern! /^([+\d]+)[^+]+([+\d]+)[^+]+([+\d]+)[^+]+/
      // if "/" Check
      
      // $matches = array()
      /*
      else if (preg_match('/^([\d]+)[^+]+/', $line)){
      
         // list($line1, $line2, $line3) = explode('/', $line);
                              
         // Enchant - Mana
         if (ereg('^.*'.$wordings[$client_lang]['tooltip_enchant_Mana_Regen'], $line1) == $line){
         $newline = 'Equip: Restores '. getModifier( $line) .' mana per 5 sec.';
         setBonus( getModifierMana( $newline), getModifierString( $newline), $item_name, $item_color);
         }
         
         // Enchant - Healing (Using gem healing spells, works the same)
         else if (ereg('^'.$wordings[$client_lang]['tooltip_gem_Healing_Spells'], $line)){
         $newline = 'Equip: Increases healing done by spells and effects by up to ' . getModifier( $line) . '.';
         setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
         }
         
         
      }   
      */
                                                            
      // if "and" Check left and right
      else if (ereg('^.*'.$wordings[$client_lang]['tooltip_gem_and'], $line)){
      
         list($line1, $line2) = explode('and', $line);      
                                 
            // Left Gem - Mana
            if (ereg('^.*'.$wordings[$client_lang]['tooltip_gem_Mana_every_5_seconds'], $line1)
            or ereg('^.*'.$wordings[$client_lang]['tooltip_enchant_mana_per_5_sec'], $line1)){
            $newline = 'Equip: Restores '. getModifierMana( $line1) .' mana per 5 sec.';
            setBonus( getModifierMana( $newline), getModifierString( $newline), $item_name, $item_color);
            }
            
            // Right Gem - Mana
            else if (ereg('^.*'.$wordings[$client_lang]['tooltip_gem_Mana_every_5_seconds'], $line2)
            or ereg('^.*'.$wordings[$client_lang]['tooltip_gem_Mana_per_5_seconds'],$line2)) {
            $newline = 'Equip: Restores '. getModifierMana( $line2) .' mana per 5 sec.';
            setBonus( getModifierMana( $newline), getModifierString( $newline), $item_name, $item_color);
            }
                                    
            // Left Gems - Spell Crit
            else if (ereg('^.*'.$wordings[$client_lang]['tooltip_gem_Spell_Critical_Rating'], $line1)){
            $newline = 'Equip: Improves spell critical strike rating by ' . getModifier( $line1) . '.';
            setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
            }         
            
            // Right Enchant - Hit Rating
            else if (ereg('^.*'.$wordings[$client_lang]['tooltip_enchant_Hit_Rating'], $line2)){
            $newline = 'Equip: Increases your hit rating by ' . getModifier( $line2) . '.';
            setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
            }
                        
            // Left Enchant - Attack Power
            else if (ereg('^.*'.$wordings[$client_lang]['tooltip_enchant_Attack_Power'], $line1)){
            $newline = 'Equip: Increases attack power by ' . getModifier( $line1) . '.';
            setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
            }      
                                    
            // Right Gem - Critical Strike
            else if (ereg('^.*'.$wordings[$client_lang]['tooltip_gem_Critical_Strike_Rating'], $line2)){
            $newline = 'Equip: Increases your critical strike rating by ' . getModifier( $line2) . '.';
            setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
            }      
                     
            // Right Gem - Spell Critical Rating
            else if (ereg('^.*'.$wordings[$client_lang]['tooltip_gem_Spell_Critical_Rating'], $line2)) {
            $newline = 'Equip: Improves spell critical strike rating by ' . getModifier( $line2) . '.';
            setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
            }            
            
            // Left Gem - Healing
            else if (ereg('^.*'.$wordings[$client_lang]['tooltip_gem_Healing_Spells'], $line1)){
            $newline = 'Equip: Increases healing done by spells and effects by up to ' . getModifier( $line1) . '.';
            setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
            }                           
                           
      }
      
      // If "&" check left and right
      else if (ereg('^.*'.$wordings[$client_lang]['tooltip_gem_&'], $line)){
      
         list($line1, $line2) = explode('&', $line);
                                                
            // Left Gem - Mana
            if (ereg('^.*'.$wordings[$client_lang]['tooltip_gem_Mana_every_5_seconds'], $line1)){
            $newline = 'Equip: Restores '. getModifierMana( $line1) .' mana per 5 sec.';
            setBonus( getModifierMana( $newline), getModifierString( $newline), $item_name, $item_color);
            }
            
            // Right Gem - Mana
            else if (ereg('^.*'.$wordings[$client_lang]['tooltip_gem_Mana_every_5_seconds'], $line2)
            or eregi('^.*'.$wordings[$client_lang]['tooltip_gem_Mana_per_5_Seconds'], $line2)) {
            $newline = 'Equip: Restores '. getModifierMana( $line2) .' mana per 5 sec.';
            setBonus( getModifierMana( $newline), getModifierString( $newline), $item_name, $item_color);
            }
            
            // Left Gem - Spell Crit
            else if (ereg('^.*'.$wordings[$client_lang]['tooltip_gem_Spell_Critical_Rating'], $line1)){
            $newline = 'Equip: Improves spell critical strike rating by ' . getModifier( $line1) . '.';
            setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
            }            
                                          
            // Right Gem - Spell Crit
            else if (ereg('^.*'.$wordings[$client_lang]['tooltip_gem_Spell_Critical_Rating'],$line2)) {
            $newline = 'Equip: Improves spell critical strike rating by ' . getModifier( $line2) . '.';
            setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
            }                                                
            
            // Left Gem - Healing
            else if (ereg('^.*'.$wordings[$client_lang]['tooltip_gem_Healing_Spells'], $line1)){
            $newline = 'Equip: Increases healing done by spells and effects by up to ' . getModifier( $line1) . '.';
            setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
            }
                  
      }            
      
      
      // ( else if no "and" or "&")
      else if (ereg('^.*', $line) != ereg('^.*'.$wordings[$client_lang]['tooltip_gem_and'], $line) or ereg('^.*& ', $line)){   
         
         // Gem - Mana
         if (ereg('^.*'.$wordings[$client_lang]['tooltip_gem_Mana_every_5_seconds'], $line)
         or ereg('^.*'.$wordings[$client_lang]['tooltip_enchant_mana_per_5_sec'], $line)){
         $newline = 'Equip: Restores '. getModifierMana( $line) .' mana per 5 sec.';
         setBonus( getModifierMana( $newline), getModifierString( $newline), $item_name, $item_color);
         }
         
         // Enchant - Mana
         else if (ereg('^.*'.$wordings[$client_lang]['tooltip_enchant_Mana_Regen'], $line)){
         $newline = 'Equip: Restores '. getModifier( $line) .' mana per 5 sec.';
         setBonus( getModifierMana( $newline), getModifierString( $newline), $item_name, $item_color);
         }
         
         // Enchant - mana
         else if (ereg('^.*'.$wordings[$client_lang]['tooltip_enchant_mana_every_5_sec'], $line)
         or ereg('^.*'.$wordings[$client_lang]['tooltip_enchant_mana_per_5_sec'], $line)){
         $newline = 'Equip: Restores '. getModifierMana( $line) .' mana per 5 sec.';
         setBonus( getModifierMana( $newline), getModifierString( $newline), $item_name, $item_color);
         }
                           
         // Gem - Critical Strike
         else if (ereg('^.*'.$wordings[$client_lang]['tooltip_gem_Critical_Strike_Rating'], $line)){
         $newline = 'Equip: Increases your critical strike rating by ' . getModifier( $line) . '.';
         setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
         }      
         
         // Enchant - Hit Rating
         else if (ereg('^.*'.$wordings[$client_lang]['tooltip_enchant_Hit_Rating'], $line)){
         $newline = 'Equip: Increases your hit rating by ' . getModifier( $line) . '.';
         setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
         }         
      
         // Enchant - Attack Power
         else if (ereg('^.*'.$wordings[$client_lang]['tooltip_enchant_Attack_Power'], $line)){
         $newline = 'Equip: Increases attack power by ' . getModifier( $line) . '.';
         setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
         }                  
         
         // Gem - Healing
         else if (ereg('^.*'.$wordings[$client_lang]['tooltip_gem_Healing_Spells'], $line)){
         $newline = 'Equip: Increases healing done by spells and effects by up to ' . getModifier( $line) . '.';
         setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
         }
         
         // Enchant - Healing
         else if (ereg('^.*'.$wordings[$client_lang]['tooltip_enchant_Healing'], $line)){
         $newline = 'Equip: Increases healing done by spells and effects by up to ' . getModifier( $line) . '.';
         setBonus( getModifier( $newline), getString( $newline), $item_name, $item_color);
         }         
                        
      }      
               
   }
}
Last edited by DiscoWay on Sat Mar 03, 2007 1:03 am, edited 2 times in total.
User avatar
DiscoWay
WR.net Apprentice
WR.net Apprentice
 
Posts: 25
Joined: Mon Feb 12, 2007 11:40 pm

BC gems & shoulder enchants not parsed

Postby zeryl » Sun Mar 04, 2007 9:51 am

The problem with the code is that you are saying "do this" else "do this" else "do this". You need to remove the else if's, to have it continue on with parsing. I haven't looked at the code, but that's why it's doing one and not the other.
User avatar
zeryl
WoWRoster.net Dev Team
WoWRoster.net Dev Team
 
Posts: 194
Joined: Tue Jul 04, 2006 12:59 pm
Location: Saint Louis

Re: BC gems & shoulder enchants not parsed

Postby carolyny476 » Fri Sep 10, 2010 11:16 am

It really useful for me, thanks for the info that you guys have been discussing.
carolyny476
WR.net Apprentice
WR.net Apprentice
 
Posts: 1
Joined: Fri Sep 10, 2010 10:32 am


Return to Data Accuracy

Who is online

Users browsing this forum: No registered users and 1 guest