function renderStatRow($statIndex, $char_data)
{
    $rating = getRating($char_data[UNIT_FIELD_LEVEL]);
    $StatText = getStatTypeName($statIndex);
    $class = getClassId($char_data);
    $effectiveStat = $char_data[UNIT_FIELD_STAT0 + $statIndex];
    $posBuff = getFloatValue($char_data[UNIT_FIELD_POSSTAT0 + $statIndex], 0);
    $negBuff = getFloatValue($char_data[UNIT_FIELD_NEGSTAT0 + $statIndex], 0);
    $stat = $effectiveStat - $posBuff - $negBuff;
    createHeader($StatText, $effectiveStat, $posBuff, $negBuff, "normStat");
    echo "<TR><TD>";
    if ($statIndex == STAT_STRENGTH) {
        $attpower = GetAttackPowerForStat(STAT_STRENGTH, $effectiveStat, $class);
        printf("Increases Attack Power by %d", $attpower);
        if ($class == CLASS_WARRIOR or $class == CLASS_PALADIN or $class == CLASS_SHAMAN) {
            $block = max(0, $effectiveStat * BLOCK_PER_STRENGTH - 10);
            printf("<br>Increases Block by %d", $block);
        }
    } else {
        if ($statIndex == STAT_AGILITY) {
            $crit = GetCritChanceFromAgility($rating, $char_data);
            $attackPower = GetAttackPowerForStat(STAT_AGILITY, $effectiveStat, $class);
            $armor = $effectiveStat * ARMOR_PER_AGILITY;
            if ($attackPower > 0) {
                printf("Increases Attack Power by %d<br>", $attackPower);
            }
            printf("Increases Critical Hit chance by %.2f%%<br>Increases Armor by %d", $crit, $armor);
        } else {
            if ($statIndex == STAT_STAMINA) {
                $baseStam = min(20, $effectiveStat);
                $moreStam = $effectiveStat - $baseStam;
                $health = $baseStam + $moreStam * HEALTH_PER_STAMINA;
                printf("Increases Health by %d", $health);
                $petStam = ComputePetBonus(PET_BONUS_STAM, $effectiveStat, $class);
                if ($petStam > 0) {
                    printf("<br />Increases your pet`s Stamina by %d", $petStam);
                }
            } else {
                if ($statIndex == STAT_INTELLECT) {
                    $baseInt = min(20, $effectiveStat);
                    $moreInt = $effectiveStat - $baseInt;
                    $mana = $baseInt + $moreInt * MANA_PER_INTELLECT;
                    $spellcrit = GetSpellCritChanceFromIntellect($rating, $char_data);
                    if (isManaUser($char_data)) {
                        printf("Increases Mana by %d<br>Increases Spell Critical Hit by %.2f%%", $mana, $spellcrit);
                    }
                    $petInt = ComputePetBonus(PET_BONUS_INT, $effectiveStat, $class);
                    if ($petInt > 0) {
                        printf("<br />Increases your pet`s Intellect by %d", $petInt);
                    }
                } else {
                    if ($statIndex == STAT_SPIRIT) {
                        $baseRatio = array(0, 0.625, 0.2631, 0.2, 0.3571, 0.1923, 0.625, 0.1724, 0.1212, 0.1282, 1, 0.1389);
                        $regen = $effectiveStat * GetHRCoefficient($rating, $class);
                        $baseSpirit = $effectiveStat;
                        if ($baseSpirit > 50) {
                            $baseSpirit = 50;
                        }
                        $moreSpirit = $effectiveStat - $baseSpirit;
                        $regen = $baseSpirit * $baseRatio[$class] + $moreSpirit * GetHRCoefficient($rating, $class);
                        printf("Increases Health Regeneration by %d Per Second while not in combat", $regen);
                        if (isManaUser($char_data)) {
                            $int = $char_data[UNIT_FIELD_STAT0 + STAT_INTELLECT];
                            $regen = sqrt($int) * $effectiveStat * GetMRCoefficient($rating, $class);
                            $regen = floor($regen * 5);
                            printf("<br />Increases Mana Regeneration by %d Per 5 Seconds while not casting", $regen);
                        }
                    }
                }
            }
        }
    }
    echo "</TD></TR>";
    $valueClass = "normStat";
    if ($negBuff < 0) {
        $valueClass = "negStat";
    } else {
        if ($posBuff > 0) {
            $valueClass = "posStat";
        }
    }
    createEndTable($valueClass, $effectiveStat);
}
Пример #2
0
function showPlayerEquip($guid, $char, $char_data, $char_stats)
{
    global $lang;
    $char_name = $char['name'];
    $powerType = $char_data[UNIT_FIELD_BYTES_0] >> 24 & 255;
    $genderId = $char['gender'];
    $class = $char['class'];
    $race = $char['race'];
    $money = $char['money'];
    $level = $char['level'];
    $health = $char['health'];
    $maxhealth = $char_stats['maxhealth'];
    $power = $char_stats['maxpower1'];
    $maxpower = $char_stats['maxpower1'];
    echo "<table cellSpacing=0 cellPadding=0 border=0px>";
    echo "<tbody><tr><td width=356px height=468px align=left valign=top>";
    echo "<div style=\"position: relative; border: 0px; left: 0px; top: 0px;\">";
    if (getRace($race)) {
        $frame = $genderId . "_" . $race . ".gif";
    } else {
        $frame = "TempPortrait.gif";
    }
    echo "<img src=images/player_info/characterframe/{$frame} style=\"position: absolute; border: 0px; left: 9px; top: 6px;\">";
    echo "<img src=images/player_info/characterframe/characterframe.png style=\"position: absolute; border: 0px; left: 0px; top: 0px;\">";
    echo "<table cellspacing=0 class=playerName style='position: absolute; left: 73px; top: 15px;'>";
    echo "<tbody>";
    echo "<tr><td class=name>{$char_name} - " . getClass($class) . " {$level} lvl</td></tr>";
    echo "</tbody>";
    echo "</table>";
    // Вычисление и генерация переменных $health и $maxhealth для создания изменяемой полоски
    if ($health > $maxhealth) {
        $health = $maxhealth;
    }
    $maxhealth != 0 ? $h_percent = round($health / $maxhealth * 100, 0) : ($h_percent = 0);
    $h_percent == 0 ? $h_l_on_off = "left-off" : ($h_l_on_off = "left-on");
    $h_percent == 100 ? $h_r_on_off = "right-on" : ($h_r_on_off = "right-off");
    echo "<table cellpadding='0' cellspacing='0' width=275px style='position:absolute; top:37px; left:73px'>";
    echo "<tbody>";
    echo "<tr>";
    echo "<td style='position:absolute; width: 275px; font-size:10px;' align = center><font color=white><b>{$health} / {$maxhealth}</b></font></td>";
    echo "<td style='width: 6px; background: url(images/bar/{$h_l_on_off}.gif) left no-repeat;'></td>";
    echo "<td style='width: " . $h_percent * 2.75 . "; height:13px; background: url(images/bar/bar-on.gif) repeat-x;'></td>";
    echo "<td style='width: " . (275 - $h_percent * 2.75) . "; height:13px; background: url(images/bar/bar-off.gif) repeat-x;'></td>";
    echo "<td style='width: 6px;background: url(images/bar/{$h_r_on_off}.gif) right no-repeat;'></td>";
    echo "</tr>";
    echo "</tbody>";
    echo "</table>";
    // Вычисление и генерация переменных $power и $maxpower для создания изменяемой полоски
    if ($power > $maxpower) {
        $power = $maxpower;
    }
    //Цвет полоски
    if ($powerType == 3) {
        $typeSlid = "energy";
    } elseif ($powerType == 1) {
        $typeSlid = "rage";
    } else {
        $typeSlid = "mana";
    }
    //Мана
    $m_percent = $maxpower != 0 ? round($power / $maxpower * 100, 0) : 0;
    $m_l_on_off = $m_percent == 0 ? "left-off" : "{$typeSlid}-left-on";
    $m_r_on_off = $m_percent == 100 ? "{$typeSlid}-right-on" : "right-off";
    echo "<table cellpadding='0' cellspacing='0' width=275px style='position:absolute; top:55px; left:73px'>";
    echo "<tbody>";
    echo "<tr>";
    echo "<td style='position:absolute; width: 275px; font-size:10px;' align = center><font color=white><b>{$power} / {$maxpower}</b></font></td>";
    echo "<td style='width: 6px; height:13px; background: url(images/bar/{$m_l_on_off}.gif) left no-repeat;'></td>";
    echo "<td style='width: " . $m_percent * 2.75 . "px; height:13px; background: url(images/bar/{$typeSlid}-bar-on.gif) repeat-x;'></td>";
    echo "<td style='width: " . (275 - $m_percent * 2.75) . "px; height:13px; background: url(images/bar/bar-off.gif) repeat-x;'></td>";
    echo "<td style='width: 6px; height:13px; background: url(images/bar/{$m_r_on_off}.gif) right no-repeat;'></td>";
    echo "</tr>";
    echo "</tbody>";
    echo "</table>";
    // Player stats render
    echo '<table class=playerstats cellSpacing=0 style="width: 230; position: absolute; left: 68; top: 78;">';
    echo '<tbody>';
    // Resistances render
    echo '<tr><td colspan=2 align=center>';
    echo '<table class=resistances cellSpacing=0>';
    echo '<tbody>';
    echo "<tr>\n";
    renderResist(SCHOOL_FIRE, $char_data);
    echo "\n";
    renderResist(SCHOOL_NATURE, $char_data);
    echo "\n";
    renderResist(SCHOOL_FROST, $char_data);
    echo "\n";
    renderResist(SCHOOL_SHADOW, $char_data);
    echo "\n";
    renderResist(SCHOOL_ARCANE, $char_data);
    echo "\n";
    echo "</tr>\n";
    echo '</tbody>';
    echo '</table>';
    echo '</td></tr>';
    echo '<tr><td class=head width=50%>' . $lang['player_page_base'] . '</td><td class=head width=50%>' . $lang['player_page_defense'] . '</td></tr>';
    echo '<tr>';
    // Base Stats render
    echo '<td>';
    echo '<div style="position: relative; left: 0; top: 0;">';
    echo '<table class=stattext cellSpacing=0>';
    echo "<tr><td>" . getStatTypeName(STAT_STRENGTH) . ":</td></tr>\n";
    echo "<tr><td>" . getStatTypeName(STAT_AGILITY) . ":</td></tr>\n";
    echo "<tr><td>" . getStatTypeName(STAT_STAMINA) . ":</td></tr>\n";
    echo "<tr><td>" . getStatTypeName(STAT_INTELLECT) . ":</td></tr>\n";
    echo "<tr><td>" . getStatTypeName(STAT_SPIRIT) . ":</td></tr>\n";
    echo "<tr><td>" . getResistance(SCHOOL_ARMOR) . ":</td></tr>\n";
    echo "</table>\n";
    echo "<table class=statvalue cellSpacing=0 style=\"position: absolute; left: 0; top: 0;\">\n";
    echo "<tr>";
    renderStatRow(STAT_STRENGTH, $char_data);
    echo "</tr>\n";
    echo "<tr>";
    renderStatRow(STAT_AGILITY, $char_data);
    echo "</tr>\n";
    echo "<tr>";
    renderStatRow(STAT_STAMINA, $char_data);
    echo "</tr>\n";
    echo "<tr>";
    renderStatRow(STAT_INTELLECT, $char_data);
    echo "</tr>\n";
    echo "<tr>";
    renderStatRow(STAT_SPIRIT, $char_data);
    echo "</tr>\n";
    echo "<tr>";
    renderResist(SCHOOL_ARMOR, $char_data);
    echo "</tr>\n";
    echo '</table>';
    echo '</div>';
    echo '</td>';
    // Defence render
    echo '<td>';
    echo '<div style="position: relative; left: 0; top: 0;">';
    echo '<table class=stattext cellSpacing=0>';
    echo '<tr><td>' . $lang['player_armor'] . '</td></tr>';
    echo '<tr><td>' . $lang['player_defense'] . '</td></tr>';
    echo '<tr><td>' . $lang['player_dodge'] . '</td></tr>';
    echo '<tr><td>' . $lang['player_parry'] . '</td></tr>';
    echo '<tr><td>' . $lang['player_block'] . '</td></tr>';
    echo '<tr><td>' . $lang['player_recilence'] . '</td></tr>';
    echo '</table>';
    echo '<table class=statvalue cellSpacing=0 style="position: absolute; left: 0; top: 0;">';
    echo "<tr>";
    @renderResist(SCHOOL_ARMOR, $char_data);
    echo "</tr>\n";
    echo "<tr>";
    @renderDefense($char_data);
    echo "</tr>\n";
    echo "<tr>";
    @renderDodge($char_data);
    echo "</tr>\n";
    echo "<tr>";
    @renderParry($char_data);
    echo "</tr>\n";
    echo "<tr>";
    @renderBlock($char_data);
    echo "</tr>\n";
    echo "<tr>";
    @renderRecilence($char_data);
    echo "</tr>\n";
    echo '</table>';
    echo '</div>';
    echo '</td>';
    echo '</tr>';
    echo '<tr><td class=head width=50%>' . $lang['player_melee'] . '</td><td class=head width=50%>' . $lang['player_ranged'] . '</td></tr>';
    echo '<tr>';
    // Melee render
    echo '<td>';
    echo '<div style="position: relative; left: 0; top: 0;">';
    echo '<table class=stattext cellSpacing=0>';
    echo '<tr><td>' . $lang['player_m_skill'] . '</td></tr>';
    echo '<tr><td>' . $lang['player_m_damage'] . '</td></tr>';
    echo '<tr><td>' . $lang['player_m_speed'] . '</td></tr>';
    echo '<tr><td>' . $lang['player_m_power'] . '</td></tr>';
    echo '<tr><td>' . $lang['player_m_hit'] . '</td></tr>';
    echo '<tr><td>' . $lang['player_m_crit'] . '</td></tr>';
    echo '</table>';
    echo '<table class=statvalue cellSpacing=0 style="position: absolute; left: 0; top: 0;">';
    echo "<tr>";
    @renderMeleeSkill($char_data);
    echo "</tr>\n";
    echo "<tr>";
    @renderMeleeDamage($char_data);
    echo "</tr>\n";
    echo "<tr>";
    @renderMeleeSpeed($char_data);
    echo "</tr>\n";
    echo "<tr>";
    @renderMeleeAP($char_data);
    echo "</tr>\n";
    echo "<tr>";
    @renderMeleeHit($char_data);
    echo "</tr>\n";
    echo "<tr>";
    @renderMeleeCrit($char_data);
    echo "</tr>\n";
    echo '</table>';
    echo '</div>';
    echo '</td>';
    // Ranged render
    echo '<td>';
    echo '<div style="position: relative; left: 0; top: 0;">';
    echo '<table class=stattext cellSpacing=0>';
    echo '<tr><td>' . $lang['player_r_skill'] . '</td></tr>';
    echo '<tr><td>' . $lang['player_r_damage'] . '</td></tr>';
    echo '<tr><td>' . $lang['player_r_speed'] . '</td></tr>';
    echo '<tr><td>' . $lang['player_r_power'] . '</td></tr>';
    echo '<tr><td>' . $lang['player_r_hit'] . '</td></tr>';
    echo '<tr><td>' . $lang['player_r_crit'] . '</td></tr>';
    echo '</table>';
    echo '<table class=statvalue cellSpacing=0 style="position: absolute; left: 0; top: 0;">';
    echo "<tr>";
    @renderRangedSkill($char_data);
    echo "</tr>\n";
    echo "<tr>";
    @renderRangedDamage($char_data);
    echo "</tr>\n";
    echo "<tr>";
    @renderRangedSpeed($char_data);
    echo "</tr>\n";
    echo "<tr>";
    @renderRangedAP($char_data);
    echo "</tr>\n";
    echo "<tr>";
    @renderRangedHit($char_data);
    echo "</tr>\n";
    echo "<tr>";
    @renderRangedCrit($char_data);
    echo "</tr>\n";
    echo '</table>';
    echo '</div>';
    echo '</td>';
    echo '</tr>';
    echo '<tr><td class=head colspan=2>' . $lang['player_spell'] . '</td></tr>';
    echo '<tr>';
    echo '<td>';
    // 1 part Spell render
    echo '<div style="position: relative; left: 0; top: 0;">';
    echo '<table class=stattext cellSpacing=0>';
    echo '<tr><td>' . $lang['player_s_damage'] . '</td></tr>';
    echo '<tr><td>' . $lang['player_s_healing'] . '</td></tr>';
    echo '<tr><td>' . $lang['player_s_hit'] . '</td></tr>';
    echo '</table>';
    echo '<table class=statvalue cellSpacing=0 style="position: absolute; left: 0; top: 0;">';
    echo "<tr>";
    @renderSpellDamage($char_data);
    echo "</tr>\n";
    echo "<tr>";
    @renderSpellHeal($char_data);
    echo "</tr>\n";
    echo "<tr>";
    @renderSpellHit($char_data);
    echo "</tr>\n";
    echo '</table>';
    echo '</div>';
    echo '</td>';
    // 2 part Spell render
    echo '<td>';
    echo '<div style="position: relative; left: 0; top: 0;">';
    echo '<table class=stattext cellSpacing=0>';
    echo '<tr><td>' . $lang['player_s_crit'] . '</td></tr>';
    echo '<tr><td>' . $lang['player_s_haste'] . '</td></tr>';
    echo '<tr><td>' . $lang['player_s_regen'] . '</td></tr>';
    echo '</table>';
    echo '<table class=statvalue cellSpacing=0 style="position: absolute; left: 0; top: 0;">';
    echo "<tr>";
    @renderSpellCrit($char_data);
    echo "</tr>\n";
    echo "<tr>";
    @renderSpellHaste($char_data);
    echo "</tr>\n";
    echo "<tr>";
    @renderManaRegen($char_data);
    echo "</td></tr>\n";
    echo '</table>';
    echo '</div>';
    echo '</td>';
    echo '</tr>';
    echo '</tbody>';
    echo '</table>';
    $imgsize = "armory";
    show_item_by_guid($char_data[PLAYER_SLOT_ITEM_HEAD], $imgsize, 22, 73);
    show_item_by_guid($char_data[PLAYER_SLOT_ITEM_NECK], $imgsize, 22, 114);
    show_item_by_guid($char_data[PLAYER_SLOT_ITEM_SHOULDER], $imgsize, 22, 155);
    show_item_by_guid($char_data[PLAYER_SLOT_ITEM_BACK], $imgsize, 22, 196);
    show_item_by_guid($char_data[PLAYER_SLOT_ITEM_CHEST], $imgsize, 22, 237);
    show_item_by_guid($char_data[PLAYER_SLOT_ITEM_SHIRT], $imgsize, 22, 278);
    show_item_by_guid($char_data[PLAYER_SLOT_ITEM_TABARD], $imgsize, 22, 319);
    show_item_by_guid($char_data[PLAYER_SLOT_ITEM_WRIST], $imgsize, 22, 360);
    show_item_by_guid($char_data[PLAYER_SLOT_ITEM_GLOVES], $imgsize, 306, 73);
    show_item_by_guid($char_data[PLAYER_SLOT_ITEM_BELT], $imgsize, 306, 114);
    show_item_by_guid($char_data[PLAYER_SLOT_ITEM_LEGS], $imgsize, 306, 155);
    show_item_by_guid($char_data[PLAYER_SLOT_ITEM_FEET], $imgsize, 306, 196);
    show_item_by_guid($char_data[PLAYER_SLOT_ITEM_FINGER1], $imgsize, 306, 237);
    show_item_by_guid($char_data[PLAYER_SLOT_ITEM_FINGER2], $imgsize, 306, 278);
    show_item_by_guid($char_data[PLAYER_SLOT_ITEM_TRINKET1], $imgsize, 306, 319);
    show_item_by_guid($char_data[PLAYER_SLOT_ITEM_TRINKET2], $imgsize, 306, 360);
    show_item_by_guid($char_data[PLAYER_SLOT_ITEM_MAIN_HAND], $imgsize, 122, 384);
    show_item_by_guid($char_data[PLAYER_SLOT_ITEM_OFF_HAND], $imgsize, 164, 384);
    show_item_by_guid($char_data[PLAYER_SLOT_ITEM_RANGED], $imgsize, 206, 384);
    // Bags
    //show_item_by_guid($char_data[PLAYER_SLOT_ITEM_TABARD+2],$imgsize,0,400);
    //show_item_by_guid($char_data[PLAYER_SLOT_ITEM_TABARD+4],$imgsize,40,400);
    //show_item_by_guid($char_data[PLAYER_SLOT_ITEM_TABARD+6],$imgsize,80,400);
    //show_item_by_guid($char_data[PLAYER_SLOT_ITEM_TABARD+8],$imgsize,120,400);
    //show_item_by_guid($char_data[OFFSET_EQU_RANGED+32],$imgsize,50,50);
    echo "</div>";
    echo "</td></tr></tbody>";
    echo "</table></td>\n";
    echo "<td valign=top>";
    show_player_auras_from_db($guid);
    echo "</td>";
    echo "</tr>";
    echo "</table>";
}
Пример #3
0
function showAuraInfo($spell, $effect, $aura)
{
    global $gSpellEffect, $gSpellAuraName;
    if ($aura == 0) {
        return;
    }
    echo ': ' . getSpellAuraName($aura);
    $misc = $spell['EffectMiscValue_' . $effect];
    $miscB = $spell['EffectMiscValue2_' . $effect];
    switch ($aura) {
        // Misc - это школа спеллов
        case 10:
            // SPELL_AURA_MOD_THREAT
        // SPELL_AURA_MOD_THREAT
        case 13:
            // SPELL_AURA_MOD_DAMAGE_DONE
        // SPELL_AURA_MOD_DAMAGE_DONE
        case 14:
            // SPELL_AURA_MOD_DAMAGE_TAKEN
        // SPELL_AURA_MOD_DAMAGE_TAKEN
        case 39:
            // SPELL_AURA_SCHOOL_IMMUNITY
        // SPELL_AURA_SCHOOL_IMMUNITY
        case 40:
            // SPELL_AURA_DAMAGE_IMMUNITY
        // SPELL_AURA_DAMAGE_IMMUNITY
        case 69:
            // SPELL_AURA_SCHOOL_ABSORB
        // SPELL_AURA_SCHOOL_ABSORB
        case 71:
            // SPELL_AURA_MOD_SPELL_CRIT_CHANCE_SCHOOL
        // SPELL_AURA_MOD_SPELL_CRIT_CHANCE_SCHOOL
        case 72:
            // SPELL_AURA_MOD_POWER_COST_SCHOOL_PCT
        // SPELL_AURA_MOD_POWER_COST_SCHOOL_PCT
        case 73:
            // SPELL_AURA_MOD_POWER_COST_SCHOOL
        // SPELL_AURA_MOD_POWER_COST_SCHOOL
        case 74:
            // SPELL_AURA_REFLECT_SPELLS_SCHOOL
        // SPELL_AURA_REFLECT_SPELLS_SCHOOL
        case 79:
            // SPELL_AURA_MOD_DAMAGE_PERCENT_DONE
        // SPELL_AURA_MOD_DAMAGE_PERCENT_DONE
        case 81:
            // SPELL_AURA_SPLIT_DAMAGE_PCT
        // SPELL_AURA_SPLIT_DAMAGE_PCT
        case 83:
            // SPELL_AURA_MOD_BASE_RESISTANCE
        // SPELL_AURA_MOD_BASE_RESISTANCE
        case 87:
            // SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN
        // SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN
        case 97:
            // SPELL_AURA_MANA_SHIELD
        // SPELL_AURA_MANA_SHIELD
        case 115:
            // SPELL_AURA_MOD_HEALING
        // SPELL_AURA_MOD_HEALING
        case 118:
            // SPELL_AURA_MOD_HEALING_PCT
        // SPELL_AURA_MOD_HEALING_PCT
        case 135:
            // SPELL_AURA_MOD_HEALING_DONE
        // SPELL_AURA_MOD_HEALING_DONE
        case 136:
            // SPELL_AURA_MOD_HEALING_DONE_PERCENT
        // SPELL_AURA_MOD_HEALING_DONE_PERCENT
        case 149:
            // SPELL_AURA_RESIST_PUSHBACK
        // SPELL_AURA_RESIST_PUSHBACK
        case 153:
            // SPELL_AURA_SPLIT_DAMAGE_FLAT
        // SPELL_AURA_SPLIT_DAMAGE_FLAT
        case 163:
            // SPELL_AURA_MOD_CRIT_DAMAGE_BONUS_MELEE
        // SPELL_AURA_MOD_CRIT_DAMAGE_BONUS_MELEE
        case 174:
            // SPELL_AURA_MOD_SPELL_DAMAGE_OF_STAT_PERCENT
        // SPELL_AURA_MOD_SPELL_DAMAGE_OF_STAT_PERCENT
        case 179:
            // SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_CHANCE
        // SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_CHANCE
        case 183:
            // SPELL_AURA_MOD_CRITICAL_THREAT
        // SPELL_AURA_MOD_CRITICAL_THREAT
        case 186:
            // SPELL_AURA_MOD_ATTACKER_SPELL_HIT_CHANCE
        // SPELL_AURA_MOD_ATTACKER_SPELL_HIT_CHANCE
        case 199:
            // SPELL_AURA_MOD_INCREASES_SPELL_PCT_TO_HIT
        // SPELL_AURA_MOD_INCREASES_SPELL_PCT_TO_HIT
        case 205:
        case 216:
            // SPELL_AURA_HASTE_SPELLS
        // SPELL_AURA_HASTE_SPELLS
        case 229:
        case 237:
            // SPELL_AURA_MOD_SPELL_DAMAGE_OF_ATTACK_POWER
        // SPELL_AURA_MOD_SPELL_DAMAGE_OF_ATTACK_POWER
        case 238:
            // SPELL_AURA_MOD_SPELL_HEALING_OF_ATTACK_POWER
        // SPELL_AURA_MOD_SPELL_HEALING_OF_ATTACK_POWER
        case 259:
            if ($misc == 127 || $misc == 0) {
                echo ' (All schools)';
            } else {
                if ($misc == 126) {
                    echo ' (All magic)';
                } else {
                    if ($misc == 1) {
                        echo ' (Physical)';
                    } else {
                        echo ' (School: ' . getSpellSchool($misc) . ')';
                    }
                }
            }
            break;
        case 22:
            // SPELL_AURA_MOD_RESISTANCE
        // SPELL_AURA_MOD_RESISTANCE
        case 101:
            // SPELL_AURA_MOD_RESISTANCE_PCT
        // SPELL_AURA_MOD_RESISTANCE_PCT
        case 123:
            // SPELL_AURA_MOD_TARGET_RESISTANCE
        // SPELL_AURA_MOD_TARGET_RESISTANCE
        case 142:
            // SPELL_AURA_MOD_BASE_RESISTANCE_PCT
        // SPELL_AURA_MOD_BASE_RESISTANCE_PCT
        case 143:
            // SPELL_AURA_MOD_RESISTANCE_EXCLUSIVE
        // SPELL_AURA_MOD_RESISTANCE_EXCLUSIVE
        case 182:
            if ($misc == 126) {
                echo ' (All magic)';
            } else {
                if ($misc == 1) {
                    echo ' (Armor)';
                } else {
                    echo ' (School: ' . getSpellSchool($misc) . ')';
                }
            }
            break;
            // Misc - тип энергии
        // Misc - тип энергии
        case 24:
            // SPELL_AURA_PERIODIC_ENERGIZE
        // SPELL_AURA_PERIODIC_ENERGIZE
        case 35:
            // SPELL_AURA_MOD_INCREASE_ENERGY
        // SPELL_AURA_MOD_INCREASE_ENERGY
        case 63:
            // SPELL_AURA_PERIODIC_POWER_FUNNEL
        // SPELL_AURA_PERIODIC_POWER_FUNNEL
        case 64:
            // SPELL_AURA_PERIODIC_POWER_LEECH
        // SPELL_AURA_PERIODIC_POWER_LEECH
        case 85:
            // SPELL_AURA_MOD_POWER_REGEN
        // SPELL_AURA_MOD_POWER_REGEN
        case 110:
            // SPELL_AURA_MOD_POWER_REGEN_PERCENT
        // SPELL_AURA_MOD_POWER_REGEN_PERCENT
        case 162:
            echo ' (' . getPowerTypeName($misc) . ')';
            break;
            // Misc - тип модификатора
        // Misc - тип модификатора
        case 107:
            // SPELL_AURA_ADD_FLAT_MODIFIER
        // SPELL_AURA_ADD_FLAT_MODIFIER
        case 108:
            echo ' (' . getSpellModName($misc) . ')';
            break;
            // Misc - тип юнита
        // Misc - тип юнита
        case 44:
            echo ' (' . getCreatureType($misc) . ')';
            break;
            // Misc - тип lock
        // Misc - тип lock
        case 45:
            echo ' (' . getLockType($misc, 2) . ')';
            break;
            // Misc - маска типа юнита
        // Misc - маска типа юнита
        case 59:
            // SPELL_AURA_MOD_DAMAGE_DONE_CREATURE
        // SPELL_AURA_MOD_DAMAGE_DONE_CREATURE
        case 102:
            // SPELL_AURA_MOD_MELEE_ATTACK_POWER_VERSUS
        // SPELL_AURA_MOD_MELEE_ATTACK_POWER_VERSUS
        case 131:
            // SPELL_AURA_MOD_RANGED_ATTACK_POWER_VERSUS
        // SPELL_AURA_MOD_RANGED_ATTACK_POWER_VERSUS
        case 168:
            // SPELL_AURA_MOD_DAMAGE_DONE_VERSUS
        // SPELL_AURA_MOD_DAMAGE_DONE_VERSUS
        case 169:
            // SPELL_AURA_MOD_CRIT_PERCENT_VERSUS
        // SPELL_AURA_MOD_CRIT_PERCENT_VERSUS
        case 180:
            echo ' (' . getCreatureTypeList($misc) . ')';
            break;
            // Misc - тип стата
        // Misc - тип стата
        case 29:
            // SPELL_AURA_MOD_STAT
        // SPELL_AURA_MOD_STAT
        case 80:
            // SPELL_AURA_MOD_PERCENT_STAT
        // SPELL_AURA_MOD_PERCENT_STAT
        case 137:
            // SPELL_AURA_MOD_TOTAL_STAT_PERCENTAGE
        // SPELL_AURA_MOD_TOTAL_STAT_PERCENTAGE
        case 175:
            // SPELL_AURA_MOD_SPELL_HEALING_OF_STAT_PERCENT
        // SPELL_AURA_MOD_SPELL_HEALING_OF_STAT_PERCENT
        case 212:
            // SPELL_AURA_MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT
        // SPELL_AURA_MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT
        case 219:
            // SPELL_AURA_MOD_MANA_REGEN_OF_STAT
        // SPELL_AURA_MOD_MANA_REGEN_OF_STAT
        case 268:
            echo ' (' . getStatTypeName($misc) . ')';
            break;
            // Misc - тип скила
        // Misc - тип скила
        case 30:
            // SPELL_AURA_MOD_SKILL
        // SPELL_AURA_MOD_SKILL
        case 98:
            echo ' (' . getSkillName($misc) . ')';
            break;
            // Misc - тип формы
        // Misc - тип формы
        case 36:
            echo ' (' . getForm($misc) . ')';
            break;
            // Misc - тип рейтинга
        // Misc - тип рейтинга
        case 189:
            // SPELL_AURA_MOD_RATING
        // SPELL_AURA_MOD_RATING
        case 220:
            echo ' (' . getRatingList($misc) . ')';
            break;
            // Misc - тип эффекта
        // Misc - тип эффекта
        case 37:
            echo ' (' . $gSpellEffect[$misc] . ')';
            break;
            // Misc - тип ауры
        // Misc - тип ауры
        case 38:
            echo ' (' . $gSpellAuraName[$misc] . ')';
            break;
            // Misc - тип диспелла
        // Misc - тип диспелла
        case 41:
            // SPELL_AURA_DISPEL_IMMUNITY
        // SPELL_AURA_DISPEL_IMMUNITY
        case 178:
            echo ' (' . getDispelName(abs($misc)) . ')';
            break;
            // Misc - тип механики
        // Misc - тип механики
        case 77:
            // SPELL_AURA_MECHANIC_IMMUNITY
        // SPELL_AURA_MECHANIC_IMMUNITY
        case 117:
            // SPELL_AURA_MOD_MECHANIC_RESISTANCE
        // SPELL_AURA_MOD_MECHANIC_RESISTANCE
        case 232:
            // SPELL_AURA_MECHANIC_DURATION_MOD
        // SPELL_AURA_MECHANIC_DURATION_MOD
        case 234:
            // SPELL_AURA_MECHANIC_DURATION_MOD_NOT_STACK
        // SPELL_AURA_MECHANIC_DURATION_MOD_NOT_STACK
        case 255:
            echo ' (' . getMechanicName($misc) . ')';
            break;
        case 56:
            // SPELL_AURA_TRANSFORM
        // SPELL_AURA_TRANSFORM
        case 78:
            echo ' (' . getCreatureName($misc) . ')';
            break;
        case 190:
            echo ' (' . getFactionName($misc) . ')';
            break;
        case 249:
            echo ' (' . getRuneName($misc) . ' => ' . getRuneName($miscB) . ')';
            break;
        default:
            if ($misc || $miscB) {
                echo ' (' . $misc . ($miscB ? ', ' . $miscB : '') . ')';
            }
            break;
    }
}