Grade Penalty

nesss

Единомышленник
Участник
Сообщения
163
Розыгрыши
0
Решения
3
Репутация
-2
Реакции
14
Баллы
130
Хроники
  1. Interlude
Исходники
Присутствуют
Сборка
Собственная
Всем привет, подскажите пожалуйста, какие характеристики и на сколько уменьшает Grade Penalty в Interlude, в сборках Interlude смотрел, там идет и на оружие и на броню, хотя на оружие в Interlude умения с ID 6209 не существует, есть только 4267, и оно только 1го уровня, я так понимаю там че-то намутили по подобию хроник повыше.
 
Умение 4267 является маркером - оно просто показывает, что у персонажа есть Grade Penalty. Реальные эффекты penalty применяются в коде


Код:
 Скорость бега (Armor Penalty)
 
final int penalty = getActiveChar().getExpertiseArmorPenalty();
if (penalty > 0)
    baseValue *= Math.pow(0.84, penalty);

Уклонение (Armor Penalty)

final int penalty = getActiveChar().getExpertiseArmorPenalty();
if (penalty > 0)
    val -= (2 * penalty);

Точность (Weapon Penalty)

if (getActiveChar().getExpertiseWeaponPenalty())
    val -= 20;

Код:
Шанс успеха магии (Weapon Penalty)

if (attacker instanceof Player && ((Player) attacker).getExpertiseWeaponPenalty())
    rate += 6000;
 
Это я видел, даже себе так сделал был, но задумался над тем, что пассивного умения Weapon Penalty нет в Interlude, оно появится в более поздних хрониках, потом еще нашел вот:
Java:
    @Override
    public int getMAtkSpd()
    {
        double base = 333;
       
        if (_actor.isMounted())
        {
            if (_actor.checkFoodState(_actor.getPetTemplate().getHungryLimit()))
                base /= 2;
        }
       
        final int penalty = _actor.getArmorGradePenalty();
        if (penalty > 0)
            base *= Math.pow(0.84, penalty);
       
        return (int) calcStat(Stats.MAGIC_ATTACK_SPEED, base, null, null);
    }

Я смотрю в разных сборках, и везде все по разному, знает кто реальный стандарт? Очень прошу подробно рассказать, механику работы этого штрафа.
Вот еще XML нашел, с другой сборки:

XML:
    <skill id="4267" levels="1" name="Grade Penalty">
        <!-- A penalty applied when the grade of equipment one is wearing is not appropriate for one's level. -->
        <table name="#rate">0.22 0.19 0.16 0.13 0.1</table>
        <set name="target" val="TARGET_SELF"/>
        <set name="skillType" val="DEBUFF"/>
        <set name="operateType" val="OP_PASSIVE"/>
        <set name="castRange" val="-1"/>
        <set name="effectRange" val="-1"/>
        <for>
            <mul order="0x30" stat="pAtkSpd" val="#rate"/>
            <mul order="0x30" stat="mAtkSpd" val="#rate"/>
            <mul order="0x30" stat="rEvas" val="#rate"/>
            <mul order="0x30" stat="rExp" val="#rate"/>
            <mul order="0x30" stat="runSpd" val="#rate"/>
            <mul order="0x30" stat="regHp" val="#rate"/>
            <mul order="0x30" stat="regCp" val="#rate"/>
            <mul order="0x30" stat="regMp" val="#rate"/>
            <sub order="0x40" stat="accCombat" val="20"/>
        </for>
    </skill>
 
Думаю каждый просто от фонаря делает, как ему кажется правильней - офф данных по интерлюду то уже фиг найдешь.
Из самого близкого разве что птску С4 поколупать в той же IDA
 
Вот я об этом же, еще заметил прикол такой, пассивное умение не дает от штрафа не чего, просто весит в пассивных, характеристики в ядре сами по себе обрабатываются, вот вопрос, зачем тогда его закидывать в пассивные умения, если все равно через
EtcStatusUpdate идеи обновление иконки под эффектами.
 
ну... просто шоб було? :)
или к примеру что-то в сервере отслеживает наличие у игрока данного скилла, например в том же аи что-то делать или наоборот не делать, если у игрока он есть.
 
Ну я смотрю, если умение GRADE_PENALTY = 4267 есть только 1го уровня, значит разницы в грейде не существует, а именно, если разрешено носить D, а одел S даст штраф одинаковый как будь-то одел A или B или C. Тогда логичнее сделать пассивное умение 4267 как положено, что-бы отнимало характеристики, так оно будет оправданно, уменьшит разброс по коду в ядре разных модификаторов, и перенесет учет негативных характеристик от данного штрафа в ядро обработки всех характеристик. Так и код чище, и намного эффективнее как по мне, и придает тогда смысл умению
 
не факт что разницы не существует - этот скилл же только индикатор штрафа, а под капотом вполне может быть и реальный уровень-модификатор к штрафам, зависящий от разницы разрешенного грейда и макс. грейда одетых предметов.
 
Ну я смотрю, если умение GRADE_PENALTY = 4267 есть только 1го уровня, значит разницы в грейде не существует, а именно, если разрешено носить D, а одел S даст штраф одинаковый как будь-то одел A или B или C. Тогда логичнее сделать пассивное умение 4267 как положено, что-бы отнимало характеристики, так оно будет оправданно, уменьшит разброс по коду в ядре разных модификаторов, и перенесет учет негативных характеристик от данного штрафа в ядро обработки всех характеристик. Так и код чище, и намного эффективнее как по мне, и придает тогда смысл умению
Существует градация штрафа (например на оружие действует только точность), а вот армор зависит от того сколько одето вещей на персонаже. (максимальный штраф за 5 вещей / 2), но это то как работает на С4, что там дальше и как менялось увы информации нет.
 
То есть ты хочешь сказать, что если я одену на 1 уровне S лук, у меня просто отнимется 20 точности?
 
То есть ты хочешь сказать, что если я одену на 1 уровне S лук, у меня просто отнимется 20 точности?
про точность точно не помню (значение) но да, на С4 птс работает так.
 
Хммм.. ну я такое вот нашел, штраф от оружия, там уровень не важен, просто если оружие выше грейда разрешенного, то -20 точности и увеличивает фейл магией. А вот для брони там для каждой части добавляется к 1 уровню, к примеру если только перчатки большего грейда, то будет уровень 1, если цельная броня, то +2, так же для бижи по +1, но максимальный уровень 4, даже если все не по грейду одеть, и вот от брони там идет на скорость бега, скорость маг атаки, и ловкость. Что скажете на такое? странно но на скорость физ атаки тут нет.
 
Хммм.. ну я такое вот нашел, штраф от оружия, там уровень не важен, просто если оружие выше грейда разрешенного, то -20 точности и уменьшает фейл магией. А вот для брони там для каждой части добавляется к 1 уровню, к примеру если только перчатки большего грейда, то будет уровень 1, если цельная броня, то +2, так же для бижи по +1, но максимальный уровень 4, даже если все не по грейду одеть, и вот от брони там идет на скорость бега, скорость маг атаки, и ловкость. Что скажете на такое? странно но на скорость физ атаки тут нет.
Ну то что я нашел, скорость атаки так же срезается. (там не 4 уровень максимальный, а 5 (4 потому что с 0 считаем).
 
Java:
    /**
     * Refresh expertise level ; weapon got one rank, when armor got 4 ranks.<br>
     */
    public void refreshExpertisePenalty()
    {
        final int expertiseLevel = getSkillLevel(L2Skill.SKILL_EXPERTISE);
        
        int armorPenalty = 0;
        boolean weaponPenalty = false;
        
        for (final ItemInstance item : getInventory().getPaperdollItems())
        {
            if (item.getItemType() != EtcItemType.ARROW && item.getItem().getCrystalType().getId() > expertiseLevel)
            {
                if (item.isWeapon())
                    weaponPenalty = true;
                else
                    armorPenalty += (item.getItem().getBodyPart() == Item.SLOT_FULL_ARMOR) ? 2 : 1;
            }
        }
        
        armorPenalty = Math.min(armorPenalty, 4);
        
        // Found a different state than previous ; update it.
        if (_weaponGradePenalty != weaponPenalty || _armorGradePenalty != armorPenalty)
        {
            _weaponGradePenalty = weaponPenalty;
            _armorGradePenalty = armorPenalty;
            
            // Passive skill "Grade Penalty" is either granted or dropped.
            if (_weaponGradePenalty || _armorGradePenalty > 0)
                addSkill(SkillTable.getInstance().getInfo(4267, 1), false);
            else
                removeSkill(4267, false);
            
            sendSkillList();
            sendPacket(new EtcStatusUpdate(this));
            
            // Activate / desactivate weapon effects.
            final ItemInstance item = getActiveWeaponInstance();
            if (item != null)
            {
                if (_weaponGradePenalty)
                    ItemPassiveSkillsListener.getInstance().onUnequip(Paperdoll.NULL, item, this);
                else
                    ItemPassiveSkillsListener.getInstance().onEquip(Paperdoll.NULL, item, this);
            }
        }
    }

Вот посмотри это в сборке левой нашел
 
Да моя ошибка, 4 уровня. Просто почему-то в памяти держал что их 5.
 
А разве всего один скил?
4267 - Grade Penalty
6209 - Weapon Grade Penalty
6213 - Armor Grade Penalty
 
А разве всего один скил?
4267 - Grade Penalty
6209 - Weapon Grade Penalty
6213 - Armor Grade Penalty
Ну в том то и дело, что в Interlude есть только :
4267 - Grade Penalty

Вот это появилось в высших хрониках:
6209 - Weapon Grade Penalty
6213 - Armor Grade Penalty
 
Ну в том то и дело, что в Interlude есть только :
4267 - Grade Penalty

Вот это появилось в высших хрониках:
6209 - Weapon Grade Penalty
6213 - Armor Grade Penalty
В мобиусе интерлюда вот такое:
Java:
    public void refreshExpertisePenalty()
        {
        if (!Config.EXPERTISE_PENALTY)
        {
            return;
        }
    
        final int expertiseLevel = getExpertiseLevel();
        int armorPenalty = 0;
        int weaponPenalty = 0;
        int crystaltype;
        for (Item item : _inventory.getItems())
        {
            if ((item != null) && item.isEquipped() && (item.getItemType() != EtcItemType.ARROW))
            {
                crystaltype = item.getTemplate().getCrystalType().getLevel();
                if (crystaltype > expertiseLevel)
                {
                    if (item.isWeapon() && (crystaltype > weaponPenalty))
                    {
                        weaponPenalty = crystaltype;
                    }
                    else if (crystaltype > armorPenalty)
                    {
                        armorPenalty = crystaltype;
                    }
                }
            }
        }
    
        // calc weapon penalty
        weaponPenalty = weaponPenalty - expertiseLevel - _expertisePenaltyBonus;
        weaponPenalty = Math.min(Math.max(weaponPenalty, 0), 4);
    
        // calc armor penalty
        armorPenalty = armorPenalty - expertiseLevel - _expertisePenaltyBonus;
        armorPenalty = Math.min(Math.max(armorPenalty, 0), 4);
    
        if ((_expertiseWeaponPenalty != weaponPenalty) || (_expertiseArmorPenalty != armorPenalty))
        {
            _expertiseWeaponPenalty = weaponPenalty;
            _expertiseArmorPenalty = armorPenalty;
            if ((_expertiseWeaponPenalty > 0) || (_expertiseArmorPenalty > 0))
            {
                addSkill(SkillData.getInstance().getSkill(4267, 1), false);
            }
            else
            {
                removeSkill(getKnownSkill(CommonSkill.GRADE_PENALTY.getId()), false, true);
            }
        
            sendPacket(new EtcStatusUpdate(this));
        }
    }

XML:
    <skill id="4267" levels="10" name="Grade Penalty">
        <!-- A penalty applied when the grade of equipment one is wearing is not appropriate for one's level. -->
        <table name="#rate">0.22 0.19 0.16 0.13 0.1 0.1 0.1 0.1 0.1 0.1</table>
        <set name="icon" val="icon.skill4267" />
        <set name="operateType" val="P" />
        <set name="targetType" val="SELF" />
        <set name="magicLevel" val="1" />
        <set name="stayAfterDeath" val="true" />
        <effects>
            <effect name="Buff">
                <mul stat="pAtkSpd" val="#rate" />
                <mul stat="mAtkSpd" val="#rate" />
                <mul stat="rEvas" val="#rate" />
                <mul stat="rExp" val="#rate" />
                <mul stat="runSpd" val="#rate" />
                <mul stat="regHp" val="#rate" />
                <mul stat="regCp" val="#rate" />
                <mul stat="regMp" val="#rate" />
                <sub stat="accCombat" val="20" />
            </effect>
        </effects>
    </skill>
 
ну тут все понятно, 10 уровней, то есть на каждый предмет+ 1 уровень, то есть 5 бижи и 5 брони, оружие отдельно. Хотя в коде идет ограничение до 4, то есть 6 уровней последние вообще не используются, потом в клиенте если посмотреть, там уровень только 1 для данного умения (штрафа/дебафа).
 
ну тут все понятно, 10 уровней, то есть на каждый предмет+ 1 уровень, то есть 5 бижи и 5 брони, оружие отдельно. Хотя в коде идет ограничение до 4, то есть 6 уровней последние вообще не используются, потом в клиенте если посмотреть, там уровень только 1 для данного умения (штрафа/дебафа).
Мне кажется, что 6 лвлов это автогенерация в лучших традициях мобиуса.
 

Похожие темы

Ответы
0
Просмотры
360
Назад
Сверху