Changeset 5160


Ignore:
Timestamp:
Jan 29, 2012 12:03:51 PM (4 months ago)
Author:
Zoey76
Message:

BETA: Fix for Squad skills not available for sub-pledges, skill display require retail confirmation.

Location:
branches/unstable/L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/unstable/L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestAcquireSkill.java

    r5146 r5160  
    9797                } 
    9898                 
    99                 final SkillType skillType = SkillType.values()[_skillType]; 
    100                 if ((activeChar.getSkillLevel(_id) >= _level) && (skillType != SkillType.SubPledge)) 
    101                 { 
    102                         // Already knows the skill with this level 
    103                         return; 
    104                 } 
    105                  
    10699                final L2Skill skill = SkillTable.getInstance().getInfo(_id, _level); 
    107100                if (skill == null) 
    108101                { 
    109                         _log.warning("Player " + activeChar.getName() + " is trying to learn a null skill id: " + _id + " level: " + _level + "!"); 
     102                        _log.warning(RequestAcquireSkill.class.getSimpleName() + ": Player " + activeChar.getName() + " is trying to learn a null skill Id: " + _id + " level: " + _level + "!"); 
    110103                        return; 
    111104                } 
    112105                 
    113106                // Hack check. Doesn't apply to all Skill Types 
    114                 if (((skillType != SkillType.Transfer) && ((_level > 1) && (activeChar.getKnownSkill(_id) == null))) || ((activeChar.getKnownSkill(_id) != null) && (activeChar.getKnownSkill(_id).getLevel() != (_level - 1)))) 
    115                 { 
    116                         // The previous level skill has not been learned. 
    117                         activeChar.sendPacket(SystemMessageId.PREVIOUS_LEVEL_SKILL_NOT_LEARNED); 
    118                         Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " is requesting skill Id: " + _id + " level " + _level + " without knowing it's previous level!", 0); 
    119                         return; 
     107                final int prevSkillLevel = activeChar.getSkillLevel(_id); 
     108                final SkillType skillType = SkillType.values()[_skillType]; 
     109                if ((prevSkillLevel > 0) && !((skillType == SkillType.Transfer) || (skillType == SkillType.SubPledge))) 
     110                { 
     111                        if (prevSkillLevel == _level) 
     112                        { 
     113                                _log.warning("Player " + activeChar.getName() + " is trying to learn a skill that already knows, Id: " + _id + " level: " + _level + "!"); 
     114                                return; 
     115                        } 
     116                        else if (prevSkillLevel != (_level - 1)) 
     117                        { 
     118                                // The previous level skill has not been learned. 
     119                                activeChar.sendPacket(SystemMessageId.PREVIOUS_LEVEL_SKILL_NOT_LEARNED); 
     120                                Util.handleIllegalPlayerAction(activeChar, "Player " + activeChar.getName() + " is requesting skill Id: " + _id + " level " + _level + " without knowing it's previous level!", 0); 
     121                                return; 
     122                        } 
    120123                } 
    121124                 
  • branches/unstable/L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestAcquireSkillInfo.java

    r5146 r5160  
    5555                if ((_id <= 0) || (_level <= 0)) 
    5656                { 
     57                        _log.warning(RequestAcquireSkillInfo.class.getSimpleName() + ": Invalid Id: " + _id + " or level: " + _level + "!"); 
    5758                        return; 
    5859                } 
    5960                 
    6061                final L2PcInstance activeChar = getClient().getActiveChar(); 
    61                  
    6262                if (activeChar == null) 
    6363                { 
     
    6666                 
    6767                final L2Npc trainer = activeChar.getLastFolkNPC(); 
    68                  
    6968                if (!(trainer instanceof L2NpcInstance)) 
    7069                { 
     
    7877                 
    7978                final L2Skill skill = SkillTable.getInstance().getInfo(_id, _level); 
    80                  
    8179                if (skill == null) 
    8280                { 
     
    8583                } 
    8684                 
     85                // Hack check. Doesn't apply to all Skill Types 
     86                final int prevSkillLevel = activeChar.getSkillLevel(_id); 
    8787                final SkillType skillType = SkillType.values()[_skillType]; 
    88                  
    89                 //Doesn't apply to all Skill Types 
    90                 if (((skillType != SkillType.Transfer) && ((_level > 1) && (activeChar.getKnownSkill(_id) == null))) || ((activeChar.getKnownSkill(_id) != null) && (activeChar.getKnownSkill(_id).getLevel() != (_level - 1)))) 
    91                 { 
    92                         _log.warning(RequestAcquireSkillInfo.class.getSimpleName() + ": Player " + activeChar.getName() + " is requesting info for skill Id: " + _id + " level " + _level + " without knowing it's previous level!"); 
     88                if ((prevSkillLevel > 0) && !((skillType == SkillType.Transfer) || (skillType == SkillType.SubPledge))) 
     89                { 
     90                        if (prevSkillLevel == _level) 
     91                        { 
     92                                _log.warning(RequestAcquireSkillInfo.class.getSimpleName() + ": Player " + activeChar.getName() + " is trequesting info for a skill that already knows, Id: " + _id + " level: " + _level + "!"); 
     93                        } 
     94                        else if (prevSkillLevel != (_level - 1)) 
     95                        { 
     96                                _log.warning(RequestAcquireSkillInfo.class.getSimpleName() + ": Player " + activeChar.getName() + " is requesting info for skill Id: " + _id + " level " + _level + " without knowing it's previous level!"); 
     97                        } 
    9398                } 
    9499                 
Note: See TracChangeset for help on using the changeset viewer.