Tales of Hero system.
Contributed by Index.
This commit is contained in:
parent
1f50186351
commit
b3a11a1920
File diff suppressed because it is too large
Load Diff
@ -2151,6 +2151,7 @@
|
||||
</xs:element>
|
||||
<xs:element name="mCritRateMode" type="xs:string" />
|
||||
<xs:element name="percentTo" type="xs:unsignedByte" />
|
||||
<xs:element name="level" type="xs:string" />
|
||||
<xs:element name="zoneId">
|
||||
<xs:complexType mixed="true">
|
||||
<xs:sequence minOccurs="0">
|
||||
|
@ -222,6 +222,8 @@ import org.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
|
||||
import org.l2jmobius.gameserver.model.events.returns.TerminateReturn;
|
||||
import org.l2jmobius.gameserver.model.events.timers.TimerHolder;
|
||||
import org.l2jmobius.gameserver.model.fishing.Fishing;
|
||||
import org.l2jmobius.gameserver.model.herobook.HeroBookInfoHolder;
|
||||
import org.l2jmobius.gameserver.model.herobook.HeroBookManager;
|
||||
import org.l2jmobius.gameserver.model.holders.AttendanceInfoHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.AutoPlaySettingsHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.AutoUseSettingsHolder;
|
||||
@ -925,6 +927,8 @@ public class Player extends Playable
|
||||
private final List<PlayerCollectionData> _collections = new ArrayList<>();
|
||||
private final List<Integer> _collectionFavorites = new ArrayList<>();
|
||||
|
||||
private HeroBookInfoHolder _heroBookInfo = null;
|
||||
|
||||
private final List<QuestTimer> _questTimers = new ArrayList<>();
|
||||
private final List<TimerHolder<?>> _timerHolders = new ArrayList<>();
|
||||
|
||||
@ -15122,4 +15126,20 @@ public class Player extends Playable
|
||||
LOGGER.log(Level.SEVERE, "Could not restore collection favorite list data for playerId: " + getObjectId(), e);
|
||||
}
|
||||
}
|
||||
|
||||
public HeroBookInfoHolder getHeroBookProgress()
|
||||
{
|
||||
if (_heroBookInfo == null)
|
||||
{
|
||||
final HeroBookManager manager = new HeroBookManager();
|
||||
_heroBookInfo = manager.getCurrentPlayerProgress(this);
|
||||
manager.applyLevelEffects(this);
|
||||
}
|
||||
return _heroBookInfo;
|
||||
}
|
||||
|
||||
public void updateHeroBookProgress(HeroBookInfoHolder holder)
|
||||
{
|
||||
_heroBookInfo = holder;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,50 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.herobook;
|
||||
|
||||
/**
|
||||
* @author Index
|
||||
*/
|
||||
public class HeroBookInfoHolder
|
||||
{
|
||||
private int _currentLevel;
|
||||
private int _currentExp;
|
||||
|
||||
public HeroBookInfoHolder()
|
||||
{
|
||||
}
|
||||
|
||||
public int getCurrentLevel()
|
||||
{
|
||||
return _currentLevel;
|
||||
}
|
||||
|
||||
public void setCurrentLevel(int currentLevel)
|
||||
{
|
||||
_currentLevel = currentLevel;
|
||||
}
|
||||
|
||||
public int getCurrentExp()
|
||||
{
|
||||
return _currentExp;
|
||||
}
|
||||
|
||||
public void setCurrentExp(int currentExp)
|
||||
{
|
||||
_currentExp = currentExp;
|
||||
}
|
||||
}
|
@ -0,0 +1,68 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.herobook;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
|
||||
/**
|
||||
* @author Index
|
||||
*/
|
||||
public class HeroBookLevelHolder
|
||||
{
|
||||
private final int _level;
|
||||
private final int _exp;
|
||||
private final Set<ItemHolder> _items;
|
||||
private final Set<SkillHolder> _skills;
|
||||
private final long _commission;
|
||||
|
||||
public HeroBookLevelHolder(int level, int exp, Set<ItemHolder> items, Set<SkillHolder> skills, long commission)
|
||||
{
|
||||
_level = level;
|
||||
_exp = exp;
|
||||
_items = items;
|
||||
_skills = skills;
|
||||
_commission = commission;
|
||||
}
|
||||
|
||||
public int getLevel()
|
||||
{
|
||||
return _level;
|
||||
}
|
||||
|
||||
public int getExp()
|
||||
{
|
||||
return _exp;
|
||||
}
|
||||
|
||||
public Set<ItemHolder> getItems()
|
||||
{
|
||||
return _items;
|
||||
}
|
||||
|
||||
public Set<SkillHolder> getSkills()
|
||||
{
|
||||
return _skills;
|
||||
}
|
||||
|
||||
public long getCommission()
|
||||
{
|
||||
return _commission;
|
||||
}
|
||||
}
|
@ -0,0 +1,415 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.herobook;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.l2jmobius.commons.util.Rnd;
|
||||
import org.l2jmobius.gameserver.enums.ItemLocation;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
|
||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.herobook.ExHeroBookEnchant;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.herobook.ExHeroBookInfo;
|
||||
|
||||
/**
|
||||
* @author Index
|
||||
*/
|
||||
public class HeroBookManager
|
||||
{
|
||||
private static final Map<Integer, HeroBookLevelHolder> EXPERIENCE = new HashMap<>();
|
||||
static
|
||||
{
|
||||
EXPERIENCE.put(1, new HeroBookLevelHolder(1, 315, null, null, 100000));
|
||||
EXPERIENCE.put(2, new HeroBookLevelHolder(2, 460, null, null, 100000));
|
||||
EXPERIENCE.put(3, new HeroBookLevelHolder(3, 605, null, null, 100000));
|
||||
EXPERIENCE.put(4, new HeroBookLevelHolder(4, 750, null, null, 100000));
|
||||
EXPERIENCE.put(5, new HeroBookLevelHolder(5, 895, null, null, 100000));
|
||||
EXPERIENCE.put(6, new HeroBookLevelHolder(6, 1040, null, null, 100000));
|
||||
EXPERIENCE.put(7, new HeroBookLevelHolder(7, 1185, null, null, 100000));
|
||||
EXPERIENCE.put(8, new HeroBookLevelHolder(8, 1330, null, null, 100000));
|
||||
EXPERIENCE.put(9, new HeroBookLevelHolder(9, 1475, null, null, 100000));
|
||||
EXPERIENCE.put(10, new HeroBookLevelHolder(10, 1620, null, null, 100000));
|
||||
EXPERIENCE.put(11, new HeroBookLevelHolder(11, 1765, null, null, 100000));
|
||||
EXPERIENCE.put(12, new HeroBookLevelHolder(12, 1910, null, null, 100000));
|
||||
EXPERIENCE.put(13, new HeroBookLevelHolder(13, 2055, null, null, 100000));
|
||||
EXPERIENCE.put(14, new HeroBookLevelHolder(14, 2200, null, null, 100000));
|
||||
EXPERIENCE.put(15, new HeroBookLevelHolder(15, 2345, null, null, 100000));
|
||||
EXPERIENCE.put(16, new HeroBookLevelHolder(16, 2490, null, null, 100000));
|
||||
EXPERIENCE.put(17, new HeroBookLevelHolder(17, 2635, null, null, 100000));
|
||||
EXPERIENCE.put(18, new HeroBookLevelHolder(18, 2780, null, null, 100000));
|
||||
EXPERIENCE.put(19, new HeroBookLevelHolder(19, 2925, null, null, 100000));
|
||||
EXPERIENCE.put(20, new HeroBookLevelHolder(20, 3070, null, null, 100000));
|
||||
EXPERIENCE.put(21, new HeroBookLevelHolder(21, 3215, null, null, 100000));
|
||||
EXPERIENCE.put(22, new HeroBookLevelHolder(22, 3360, null, null, 100000));
|
||||
EXPERIENCE.put(23, new HeroBookLevelHolder(23, 3505, null, null, 100000));
|
||||
EXPERIENCE.put(24, new HeroBookLevelHolder(24, 3650, null, null, 100000));
|
||||
EXPERIENCE.put(25, new HeroBookLevelHolder(25, 3795, null, null, 100000));
|
||||
EXPERIENCE.put(26, new HeroBookLevelHolder(26, 3940, null, null, 100000));
|
||||
EXPERIENCE.put(27, new HeroBookLevelHolder(27, 4085, null, null, 100000));
|
||||
EXPERIENCE.put(28, new HeroBookLevelHolder(28, 4230, null, null, 100000));
|
||||
EXPERIENCE.put(29, new HeroBookLevelHolder(29, 4375, null, null, 100000));
|
||||
EXPERIENCE.put(30, new HeroBookLevelHolder(30, 4520, null, null, 100000));
|
||||
EXPERIENCE.put(31, new HeroBookLevelHolder(31, 4665, null, null, 100000));
|
||||
EXPERIENCE.put(32, new HeroBookLevelHolder(32, 4810, null, null, 100000));
|
||||
EXPERIENCE.put(33, new HeroBookLevelHolder(33, 4955, null, null, 100000));
|
||||
EXPERIENCE.put(34, new HeroBookLevelHolder(34, 5100, null, null, 100000));
|
||||
EXPERIENCE.put(35, new HeroBookLevelHolder(35, 5245, null, null, 100000));
|
||||
EXPERIENCE.put(36, new HeroBookLevelHolder(36, 5390, null, null, 100000));
|
||||
EXPERIENCE.put(37, new HeroBookLevelHolder(37, 5535, null, null, 100000));
|
||||
EXPERIENCE.put(38, new HeroBookLevelHolder(38, 5680, null, null, 100000));
|
||||
EXPERIENCE.put(39, new HeroBookLevelHolder(39, 5825, null, null, 100000));
|
||||
EXPERIENCE.put(40, new HeroBookLevelHolder(40, 5970, null, null, 100000));
|
||||
EXPERIENCE.put(41, new HeroBookLevelHolder(41, 6115, null, null, 100000));
|
||||
EXPERIENCE.put(42, new HeroBookLevelHolder(42, 6260, null, null, 100000));
|
||||
EXPERIENCE.put(43, new HeroBookLevelHolder(43, 6405, null, null, 100000));
|
||||
EXPERIENCE.put(44, new HeroBookLevelHolder(44, 6550, null, null, 100000));
|
||||
EXPERIENCE.put(45, new HeroBookLevelHolder(45, 6695, null, null, 100000));
|
||||
EXPERIENCE.put(46, new HeroBookLevelHolder(46, 6840, null, null, 100000));
|
||||
EXPERIENCE.put(47, new HeroBookLevelHolder(47, 6985, null, null, 100000));
|
||||
EXPERIENCE.put(48, new HeroBookLevelHolder(48, 7130, null, null, 100000));
|
||||
EXPERIENCE.put(49, new HeroBookLevelHolder(49, 7275, null, null, 250000));
|
||||
EXPERIENCE.put(50, new HeroBookLevelHolder(50, 7500, Set.of(new ItemHolder(82356, 1)), Set.of(new SkillHolder(36319, 1)), 250000));
|
||||
EXPERIENCE.put(51, new HeroBookLevelHolder(51, 7645, null, null, 250000));
|
||||
EXPERIENCE.put(52, new HeroBookLevelHolder(52, 7790, null, null, 250000));
|
||||
EXPERIENCE.put(53, new HeroBookLevelHolder(53, 7935, null, null, 250000));
|
||||
EXPERIENCE.put(54, new HeroBookLevelHolder(54, 8080, null, null, 250000));
|
||||
EXPERIENCE.put(55, new HeroBookLevelHolder(55, 8225, null, null, 250000));
|
||||
EXPERIENCE.put(56, new HeroBookLevelHolder(56, 8370, null, null, 250000));
|
||||
EXPERIENCE.put(57, new HeroBookLevelHolder(57, 8515, null, null, 250000));
|
||||
EXPERIENCE.put(58, new HeroBookLevelHolder(58, 8660, null, null, 250000));
|
||||
EXPERIENCE.put(59, new HeroBookLevelHolder(59, 8805, null, null, 250000));
|
||||
EXPERIENCE.put(60, new HeroBookLevelHolder(60, 8950, null, null, 250000));
|
||||
EXPERIENCE.put(61, new HeroBookLevelHolder(61, 9095, null, null, 250000));
|
||||
EXPERIENCE.put(62, new HeroBookLevelHolder(62, 9240, null, null, 250000));
|
||||
EXPERIENCE.put(63, new HeroBookLevelHolder(63, 9385, null, null, 250000));
|
||||
EXPERIENCE.put(64, new HeroBookLevelHolder(64, 9530, null, null, 250000));
|
||||
EXPERIENCE.put(65, new HeroBookLevelHolder(65, 9675, null, null, 250000));
|
||||
EXPERIENCE.put(66, new HeroBookLevelHolder(66, 9820, null, null, 250000));
|
||||
EXPERIENCE.put(67, new HeroBookLevelHolder(67, 9965, null, null, 250000));
|
||||
EXPERIENCE.put(68, new HeroBookLevelHolder(68, 10110, null, null, 250000));
|
||||
EXPERIENCE.put(69, new HeroBookLevelHolder(69, 10255, null, null, 250000));
|
||||
EXPERIENCE.put(70, new HeroBookLevelHolder(70, 10400, null, null, 250000));
|
||||
EXPERIENCE.put(71, new HeroBookLevelHolder(71, 10545, null, null, 250000));
|
||||
EXPERIENCE.put(72, new HeroBookLevelHolder(72, 10690, null, null, 250000));
|
||||
EXPERIENCE.put(73, new HeroBookLevelHolder(73, 10835, null, null, 250000));
|
||||
EXPERIENCE.put(74, new HeroBookLevelHolder(74, 10980, null, null, 250000));
|
||||
EXPERIENCE.put(75, new HeroBookLevelHolder(75, 11125, null, null, 250000));
|
||||
EXPERIENCE.put(76, new HeroBookLevelHolder(76, 11270, null, null, 250000));
|
||||
EXPERIENCE.put(77, new HeroBookLevelHolder(77, 11415, null, null, 250000));
|
||||
EXPERIENCE.put(78, new HeroBookLevelHolder(78, 11560, null, null, 250000));
|
||||
EXPERIENCE.put(79, new HeroBookLevelHolder(79, 11705, null, null, 250000));
|
||||
EXPERIENCE.put(80, new HeroBookLevelHolder(80, 11850, null, null, 250000));
|
||||
EXPERIENCE.put(81, new HeroBookLevelHolder(81, 11995, null, null, 250000));
|
||||
EXPERIENCE.put(82, new HeroBookLevelHolder(82, 12140, null, null, 250000));
|
||||
EXPERIENCE.put(83, new HeroBookLevelHolder(83, 12285, null, null, 250000));
|
||||
EXPERIENCE.put(84, new HeroBookLevelHolder(84, 12430, null, null, 250000));
|
||||
EXPERIENCE.put(85, new HeroBookLevelHolder(85, 12575, null, null, 250000));
|
||||
EXPERIENCE.put(86, new HeroBookLevelHolder(86, 12720, null, null, 250000));
|
||||
EXPERIENCE.put(87, new HeroBookLevelHolder(87, 12865, null, null, 250000));
|
||||
EXPERIENCE.put(88, new HeroBookLevelHolder(88, 13010, null, null, 250000));
|
||||
EXPERIENCE.put(89, new HeroBookLevelHolder(89, 13155, null, null, 250000));
|
||||
EXPERIENCE.put(90, new HeroBookLevelHolder(90, 13300, null, null, 250000));
|
||||
EXPERIENCE.put(91, new HeroBookLevelHolder(91, 13445, null, null, 250000));
|
||||
EXPERIENCE.put(92, new HeroBookLevelHolder(92, 13590, null, null, 250000));
|
||||
EXPERIENCE.put(93, new HeroBookLevelHolder(93, 13735, null, null, 250000));
|
||||
EXPERIENCE.put(94, new HeroBookLevelHolder(94, 13880, null, null, 250000));
|
||||
EXPERIENCE.put(95, new HeroBookLevelHolder(95, 14025, null, null, 250000));
|
||||
EXPERIENCE.put(96, new HeroBookLevelHolder(96, 14170, null, null, 250000));
|
||||
EXPERIENCE.put(97, new HeroBookLevelHolder(97, 14315, null, null, 250000));
|
||||
EXPERIENCE.put(98, new HeroBookLevelHolder(98, 14460, null, null, 250000));
|
||||
EXPERIENCE.put(99, new HeroBookLevelHolder(99, 14605, null, null, 500000));
|
||||
EXPERIENCE.put(100, new HeroBookLevelHolder(100, 15000, Set.of(new ItemHolder(82356, 1)), Set.of(new SkillHolder(36319, 2)), 500000));
|
||||
EXPERIENCE.put(101, new HeroBookLevelHolder(101, 15145, null, null, 500000));
|
||||
EXPERIENCE.put(102, new HeroBookLevelHolder(102, 15290, null, null, 500000));
|
||||
EXPERIENCE.put(103, new HeroBookLevelHolder(103, 15435, null, null, 500000));
|
||||
EXPERIENCE.put(104, new HeroBookLevelHolder(104, 15580, null, null, 500000));
|
||||
EXPERIENCE.put(105, new HeroBookLevelHolder(105, 15725, null, null, 500000));
|
||||
EXPERIENCE.put(106, new HeroBookLevelHolder(106, 15870, null, null, 500000));
|
||||
EXPERIENCE.put(107, new HeroBookLevelHolder(107, 16015, null, null, 500000));
|
||||
EXPERIENCE.put(108, new HeroBookLevelHolder(108, 16160, null, null, 500000));
|
||||
EXPERIENCE.put(109, new HeroBookLevelHolder(109, 16305, null, null, 500000));
|
||||
EXPERIENCE.put(110, new HeroBookLevelHolder(110, 16450, null, null, 500000));
|
||||
EXPERIENCE.put(111, new HeroBookLevelHolder(111, 16595, null, null, 500000));
|
||||
EXPERIENCE.put(112, new HeroBookLevelHolder(112, 16740, null, null, 500000));
|
||||
EXPERIENCE.put(113, new HeroBookLevelHolder(113, 16885, null, null, 500000));
|
||||
EXPERIENCE.put(114, new HeroBookLevelHolder(114, 17030, null, null, 500000));
|
||||
EXPERIENCE.put(115, new HeroBookLevelHolder(115, 17175, null, null, 500000));
|
||||
EXPERIENCE.put(116, new HeroBookLevelHolder(116, 17320, null, null, 500000));
|
||||
EXPERIENCE.put(117, new HeroBookLevelHolder(117, 17465, null, null, 500000));
|
||||
EXPERIENCE.put(118, new HeroBookLevelHolder(118, 17610, null, null, 500000));
|
||||
EXPERIENCE.put(119, new HeroBookLevelHolder(119, 17755, null, null, 500000));
|
||||
EXPERIENCE.put(120, new HeroBookLevelHolder(120, 17900, null, null, 500000));
|
||||
EXPERIENCE.put(121, new HeroBookLevelHolder(121, 18045, null, null, 500000));
|
||||
EXPERIENCE.put(122, new HeroBookLevelHolder(122, 18190, null, null, 500000));
|
||||
EXPERIENCE.put(123, new HeroBookLevelHolder(123, 18335, null, null, 500000));
|
||||
EXPERIENCE.put(124, new HeroBookLevelHolder(124, 18480, null, null, 500000));
|
||||
EXPERIENCE.put(125, new HeroBookLevelHolder(125, 18625, null, null, 500000));
|
||||
EXPERIENCE.put(126, new HeroBookLevelHolder(126, 18770, null, null, 500000));
|
||||
EXPERIENCE.put(127, new HeroBookLevelHolder(127, 18915, null, null, 500000));
|
||||
EXPERIENCE.put(128, new HeroBookLevelHolder(128, 19060, null, null, 500000));
|
||||
EXPERIENCE.put(129, new HeroBookLevelHolder(129, 19205, null, null, 500000));
|
||||
EXPERIENCE.put(130, new HeroBookLevelHolder(130, 19350, null, null, 500000));
|
||||
EXPERIENCE.put(131, new HeroBookLevelHolder(131, 19495, null, null, 500000));
|
||||
EXPERIENCE.put(132, new HeroBookLevelHolder(132, 19640, null, null, 500000));
|
||||
EXPERIENCE.put(133, new HeroBookLevelHolder(133, 19785, null, null, 500000));
|
||||
EXPERIENCE.put(134, new HeroBookLevelHolder(134, 19930, null, null, 500000));
|
||||
EXPERIENCE.put(135, new HeroBookLevelHolder(135, 20075, null, null, 500000));
|
||||
EXPERIENCE.put(136, new HeroBookLevelHolder(136, 20220, null, null, 500000));
|
||||
EXPERIENCE.put(137, new HeroBookLevelHolder(137, 20365, null, null, 500000));
|
||||
EXPERIENCE.put(138, new HeroBookLevelHolder(138, 20510, null, null, 500000));
|
||||
EXPERIENCE.put(139, new HeroBookLevelHolder(139, 20655, null, null, 500000));
|
||||
EXPERIENCE.put(140, new HeroBookLevelHolder(140, 20800, null, null, 500000));
|
||||
EXPERIENCE.put(141, new HeroBookLevelHolder(141, 20945, null, null, 500000));
|
||||
EXPERIENCE.put(142, new HeroBookLevelHolder(142, 21090, null, null, 500000));
|
||||
EXPERIENCE.put(143, new HeroBookLevelHolder(143, 21235, null, null, 500000));
|
||||
EXPERIENCE.put(144, new HeroBookLevelHolder(144, 21380, null, null, 500000));
|
||||
EXPERIENCE.put(145, new HeroBookLevelHolder(145, 21525, null, null, 500000));
|
||||
EXPERIENCE.put(146, new HeroBookLevelHolder(146, 21670, null, null, 500000));
|
||||
EXPERIENCE.put(147, new HeroBookLevelHolder(147, 21815, null, null, 500000));
|
||||
EXPERIENCE.put(148, new HeroBookLevelHolder(148, 21960, null, null, 500000));
|
||||
EXPERIENCE.put(149, new HeroBookLevelHolder(149, 22105, null, null, 1000000));
|
||||
EXPERIENCE.put(150, new HeroBookLevelHolder(150, 22500, Set.of(new ItemHolder(82356, 1)), Set.of(new SkillHolder(36319, 3)), 1000000));
|
||||
EXPERIENCE.put(151, new HeroBookLevelHolder(151, 22645, null, null, 1000000));
|
||||
EXPERIENCE.put(152, new HeroBookLevelHolder(152, 22790, null, null, 1000000));
|
||||
EXPERIENCE.put(153, new HeroBookLevelHolder(153, 22935, null, null, 1000000));
|
||||
EXPERIENCE.put(154, new HeroBookLevelHolder(154, 23080, null, null, 1000000));
|
||||
EXPERIENCE.put(155, new HeroBookLevelHolder(155, 23225, null, null, 1000000));
|
||||
EXPERIENCE.put(156, new HeroBookLevelHolder(156, 23370, null, null, 1000000));
|
||||
EXPERIENCE.put(157, new HeroBookLevelHolder(157, 23515, null, null, 1000000));
|
||||
EXPERIENCE.put(158, new HeroBookLevelHolder(158, 23660, null, null, 1000000));
|
||||
EXPERIENCE.put(159, new HeroBookLevelHolder(159, 23805, null, null, 1000000));
|
||||
EXPERIENCE.put(160, new HeroBookLevelHolder(160, 23950, null, null, 1000000));
|
||||
EXPERIENCE.put(161, new HeroBookLevelHolder(161, 24095, null, null, 1000000));
|
||||
EXPERIENCE.put(162, new HeroBookLevelHolder(162, 24240, null, null, 1000000));
|
||||
EXPERIENCE.put(163, new HeroBookLevelHolder(163, 24385, null, null, 1000000));
|
||||
EXPERIENCE.put(164, new HeroBookLevelHolder(164, 24530, null, null, 1000000));
|
||||
EXPERIENCE.put(165, new HeroBookLevelHolder(165, 24675, null, null, 1000000));
|
||||
EXPERIENCE.put(166, new HeroBookLevelHolder(166, 24820, null, null, 1000000));
|
||||
EXPERIENCE.put(167, new HeroBookLevelHolder(167, 24965, null, null, 1000000));
|
||||
EXPERIENCE.put(168, new HeroBookLevelHolder(168, 25110, null, null, 1000000));
|
||||
EXPERIENCE.put(169, new HeroBookLevelHolder(169, 25255, null, null, 1000000));
|
||||
EXPERIENCE.put(170, new HeroBookLevelHolder(170, 25400, null, null, 1000000));
|
||||
EXPERIENCE.put(171, new HeroBookLevelHolder(171, 25545, null, null, 1000000));
|
||||
EXPERIENCE.put(172, new HeroBookLevelHolder(172, 25690, null, null, 1000000));
|
||||
EXPERIENCE.put(173, new HeroBookLevelHolder(173, 25835, null, null, 1000000));
|
||||
EXPERIENCE.put(174, new HeroBookLevelHolder(174, 25980, null, null, 1000000));
|
||||
EXPERIENCE.put(175, new HeroBookLevelHolder(175, 26125, null, null, 1000000));
|
||||
EXPERIENCE.put(176, new HeroBookLevelHolder(176, 26270, null, null, 1000000));
|
||||
EXPERIENCE.put(177, new HeroBookLevelHolder(177, 26415, null, null, 1000000));
|
||||
EXPERIENCE.put(178, new HeroBookLevelHolder(178, 26560, null, null, 1000000));
|
||||
EXPERIENCE.put(179, new HeroBookLevelHolder(179, 26705, null, null, 1000000));
|
||||
EXPERIENCE.put(180, new HeroBookLevelHolder(180, 26850, null, null, 1000000));
|
||||
EXPERIENCE.put(181, new HeroBookLevelHolder(181, 26995, null, null, 1000000));
|
||||
EXPERIENCE.put(182, new HeroBookLevelHolder(182, 27140, null, null, 1000000));
|
||||
EXPERIENCE.put(183, new HeroBookLevelHolder(183, 27285, null, null, 1000000));
|
||||
EXPERIENCE.put(184, new HeroBookLevelHolder(184, 27430, null, null, 1000000));
|
||||
EXPERIENCE.put(185, new HeroBookLevelHolder(185, 27575, null, null, 1000000));
|
||||
EXPERIENCE.put(186, new HeroBookLevelHolder(186, 27720, null, null, 1000000));
|
||||
EXPERIENCE.put(187, new HeroBookLevelHolder(187, 27865, null, null, 1000000));
|
||||
EXPERIENCE.put(188, new HeroBookLevelHolder(188, 28010, null, null, 1000000));
|
||||
EXPERIENCE.put(189, new HeroBookLevelHolder(189, 28155, null, null, 1000000));
|
||||
EXPERIENCE.put(190, new HeroBookLevelHolder(190, 28300, null, null, 1000000));
|
||||
EXPERIENCE.put(191, new HeroBookLevelHolder(191, 28445, null, null, 1000000));
|
||||
EXPERIENCE.put(192, new HeroBookLevelHolder(192, 28590, null, null, 1000000));
|
||||
EXPERIENCE.put(193, new HeroBookLevelHolder(193, 28735, null, null, 1000000));
|
||||
EXPERIENCE.put(194, new HeroBookLevelHolder(194, 28880, null, null, 1000000));
|
||||
EXPERIENCE.put(195, new HeroBookLevelHolder(195, 29025, null, null, 1000000));
|
||||
EXPERIENCE.put(196, new HeroBookLevelHolder(196, 29170, null, null, 1000000));
|
||||
EXPERIENCE.put(197, new HeroBookLevelHolder(197, 29315, null, null, 1000000));
|
||||
EXPERIENCE.put(198, new HeroBookLevelHolder(198, 29460, null, null, 1000000));
|
||||
EXPERIENCE.put(199, new HeroBookLevelHolder(199, 29605, null, null, 1500000));
|
||||
EXPERIENCE.put(200, new HeroBookLevelHolder(200, 30000, Set.of(new ItemHolder(82356, 1)), Set.of(new SkillHolder(36319, 4)), 1500000));
|
||||
}
|
||||
private static final Map<Integer, Integer> ITEMS = new HashMap<>();
|
||||
static
|
||||
{
|
||||
// ITEMS.put(57, 20);
|
||||
ITEMS.put(82344, 4);
|
||||
ITEMS.put(82345, 4);
|
||||
ITEMS.put(82346, 4);
|
||||
ITEMS.put(82378, 10);
|
||||
}
|
||||
|
||||
public boolean tryEnchant(Player player, Map<Integer, Long> requestedItems)
|
||||
{
|
||||
final HeroBookInfoHolder holder = player.getHeroBookProgress();
|
||||
final int nextLevelExp = getExpForNextLevel(holder.getCurrentLevel());
|
||||
if (holder.getCurrentExp() >= nextLevelExp)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
int addExp = 0;
|
||||
final Inventory inv = player.getInventory();
|
||||
final Set<Item> inventoryItems = new HashSet<>();
|
||||
final long staticAdenaCommission = EXPERIENCE.get(holder.getCurrentLevel()).getCommission();
|
||||
long adenaCommission = 0;
|
||||
for (Integer item : requestedItems.keySet())
|
||||
{
|
||||
final Item requestedItem = inv.getItemByObjectId(item);
|
||||
if ((requestedItem != null) && (requestedItem.getItemLocation() != ItemLocation.VOID) && (requestedItem.getOwnerId() == player.getObjectId()) && isValidItem(requestedItem.getId()) && (requestedItem.getCount() >= requestedItems.get(item)))
|
||||
{
|
||||
inventoryItems.add(requestedItem);
|
||||
final int points = ITEMS.getOrDefault(requestedItem.getId(), Integer.MIN_VALUE);
|
||||
int addPoints = (int) ((points == Integer.MIN_VALUE ? 0 : points) * requestedItems.get(item));
|
||||
addExp = addExp + addPoints;
|
||||
adenaCommission = adenaCommission + (staticAdenaCommission * addPoints);
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (nextLevelExp < (holder.getCurrentExp() + addExp))
|
||||
{
|
||||
final int difference = (holder.getCurrentExp() + addExp) - nextLevelExp;
|
||||
adenaCommission = adenaCommission - (staticAdenaCommission * difference);
|
||||
}
|
||||
|
||||
if (player.getAdena() < adenaCommission)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
for (Item item : inventoryItems)
|
||||
{
|
||||
if (!player.destroyItem("Increase exp for Hero Book", item.getObjectId(), requestedItems.get(item.getObjectId()), player, true))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!player.reduceAdena("Increase exp for Hero Book", adenaCommission, player, true))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
holder.setCurrentExp(holder.getCurrentExp() + addExp);
|
||||
saveCurrentPlayerProgress(player, holder);
|
||||
return true;
|
||||
}
|
||||
|
||||
public void tryIncreaseLevel(Player player)
|
||||
{
|
||||
final HeroBookInfoHolder holder = player.getHeroBookProgress();
|
||||
final boolean resultStatus;
|
||||
if (holder.getCurrentLevel() >= 200)
|
||||
{
|
||||
resultStatus = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
final int expForNextLevel = getExpForNextLevel(Math.min(holder.getCurrentLevel(), 200));
|
||||
final double successChance = ((double) holder.getCurrentExp() / expForNextLevel) * 100;
|
||||
if (Rnd.get(100.0) <= successChance)
|
||||
{
|
||||
holder.setCurrentLevel(holder.getCurrentLevel() + 1);
|
||||
holder.setCurrentExp(0); // up head progress not saved
|
||||
saveCurrentPlayerProgress(player, holder);
|
||||
resultStatus = true;
|
||||
final HeroBookLevelHolder levelHolder = EXPERIENCE.getOrDefault(holder.getCurrentLevel(), null);
|
||||
if ((levelHolder != null) && (levelHolder.getItems() != null))
|
||||
{
|
||||
levelHolder.getItems().forEach(itemHolder -> player.addItem("Item from level progress for Hero Book", itemHolder.getId(), itemHolder.getCount(), player, true));
|
||||
}
|
||||
applyLevelEffects(player);
|
||||
}
|
||||
else
|
||||
{
|
||||
holder.setCurrentExp(0);
|
||||
resultStatus = false;
|
||||
}
|
||||
}
|
||||
player.sendPacket(new ExHeroBookInfo(holder));
|
||||
player.sendPacket(new ExHeroBookEnchant(resultStatus ? 0 : 1));
|
||||
}
|
||||
|
||||
public void sendCurrentPlayerProgress(Player player)
|
||||
{
|
||||
player.sendPacket(new ExHeroBookInfo(player.getHeroBookProgress()));
|
||||
}
|
||||
|
||||
public void saveCurrentPlayerProgress(Player player, HeroBookInfoHolder holder)
|
||||
{
|
||||
player.updateHeroBookProgress(holder);
|
||||
player.getVariables().set(PlayerVariables.HERO_BOOK_PROGRESS, holder.getCurrentLevel() + ";" + holder.getCurrentExp());
|
||||
}
|
||||
|
||||
public HeroBookInfoHolder getCurrentPlayerProgress(Player player)
|
||||
{
|
||||
final String rawValue = player.getVariables().getString(PlayerVariables.HERO_BOOK_PROGRESS, null);
|
||||
if ((rawValue == null) || rawValue.isEmpty())
|
||||
{
|
||||
final HeroBookInfoHolder holder = new HeroBookInfoHolder();
|
||||
holder.setCurrentLevel(1);
|
||||
holder.setCurrentExp(0);
|
||||
return holder;
|
||||
}
|
||||
|
||||
final String[] splitValue = rawValue.strip().split(";");
|
||||
final int currentLevel = Integer.parseInt(splitValue[0].strip());
|
||||
final int currentLevelExp = Integer.parseInt(splitValue[1].strip());
|
||||
final HeroBookInfoHolder holder = new HeroBookInfoHolder();
|
||||
holder.setCurrentLevel(currentLevel);
|
||||
holder.setCurrentExp(currentLevelExp);
|
||||
return holder;
|
||||
}
|
||||
|
||||
public void applyLevelEffects(Player player)
|
||||
{
|
||||
final HeroBookInfoHolder holder = player.getHeroBookProgress();
|
||||
final Set<SkillHolder> applySkills = new HashSet<>();
|
||||
final SkillHolder currentEffect = new SkillHolder(36318, holder.getCurrentLevel());
|
||||
applySkills.add(currentEffect);
|
||||
for (HeroBookLevelHolder level : EXPERIENCE.values())
|
||||
{
|
||||
if (level.getLevel() > holder.getCurrentLevel())
|
||||
{
|
||||
break;
|
||||
}
|
||||
if (level.getSkills() == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
applySkills.addAll(level.getSkills());
|
||||
}
|
||||
for (SkillHolder skill : applySkills)
|
||||
{
|
||||
player.removeSkill(skill.getSkill(), false, true);
|
||||
player.addSkill(skill.getSkill(), false);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isValidItem(int itemId)
|
||||
{
|
||||
return ITEMS.containsKey(itemId);
|
||||
}
|
||||
|
||||
public static int getExpForNextLevel(int level)
|
||||
{
|
||||
final HeroBookLevelHolder holder = EXPERIENCE.getOrDefault(level, null);
|
||||
return holder != null ? holder.getExp() : 0;
|
||||
}
|
||||
}
|
@ -86,6 +86,7 @@ public class PlayerVariables extends AbstractVariables
|
||||
public static final String HOMUNCULUS_USED_VP_CONVERT = "HOMUNCULUS_USED_VP_CONVERT";
|
||||
public static final String HOMUNCULUS_USED_RESET_VP = "HOMUNCULUS_USED_RESET_VP";
|
||||
public static final String HOMUNCULUS_OPENED_SLOT_COUNT = "HOMUNCULUS_OPENED_SLOT_COUNT";
|
||||
public static final String HERO_BOOK_PROGRESS = "HERO_BOOK_PROGRESS";
|
||||
|
||||
private final int _objectId;
|
||||
|
||||
|
@ -102,6 +102,8 @@ import org.l2jmobius.gameserver.network.clientpackets.equipmentupgrade.RequestUp
|
||||
import org.l2jmobius.gameserver.network.clientpackets.equipmentupgradenormal.ExUpgradeSystemNormalRequest;
|
||||
import org.l2jmobius.gameserver.network.clientpackets.faction.RequestUserFactionInfo;
|
||||
import org.l2jmobius.gameserver.network.clientpackets.friend.RequestFriendDetailInfo;
|
||||
import org.l2jmobius.gameserver.network.clientpackets.herobook.RequestHeroBookCharge;
|
||||
import org.l2jmobius.gameserver.network.clientpackets.herobook.RequestHeroBookEnchant;
|
||||
import org.l2jmobius.gameserver.network.clientpackets.homunculus.ExHomunculusEvolve;
|
||||
import org.l2jmobius.gameserver.network.clientpackets.homunculus.ExRequestHomunculusProbabilityList;
|
||||
import org.l2jmobius.gameserver.network.clientpackets.homunculus.RequestExActivateHomunculus;
|
||||
@ -796,8 +798,8 @@ public enum ExIncomingPackets implements IIncomingPackets<GameClient>
|
||||
EX_WRANKING_FESTIVAL_MY_RECEIVED_BONUS(0x250, null, ConnectionState.IN_GAME),
|
||||
EX_WRANKING_FESTIVAL_REWARD(0x251, null, ConnectionState.IN_GAME),
|
||||
EX_HENNA_UNEQUIP_INFO(0x252, RequestNewHennaUnequipInfo::new, ConnectionState.IN_GAME),
|
||||
EX_HERO_BOOK_CHARGE(0x253, null, ConnectionState.IN_GAME),
|
||||
EX_HERO_BOOK_ENCHANT(0x254, null, ConnectionState.IN_GAME),
|
||||
EX_HERO_BOOK_CHARGE(0x253, RequestHeroBookCharge::new, ConnectionState.IN_GAME),
|
||||
EX_HERO_BOOK_ENCHANT(0x254, RequestHeroBookEnchant::new, ConnectionState.IN_GAME),
|
||||
EX_TELEPORT_UI(0x255, null, ConnectionState.IN_GAME),
|
||||
EX_GOODS_GIFT_LIST_INFO(0x256, null, ConnectionState.IN_GAME),
|
||||
EX_GOODS_GIFT_ACCEPT(0x257, null, ConnectionState.IN_GAME),
|
||||
|
@ -118,6 +118,7 @@ import org.l2jmobius.gameserver.network.serverpackets.ability.ExAcquireAPSkillLi
|
||||
import org.l2jmobius.gameserver.network.serverpackets.attendance.ExVipAttendanceItemList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.collection.ExCollectionInfo;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.friend.L2FriendList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.herobook.ExHeroBookInfo;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.homunculus.ExHomunculusPointInfo;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.homunculus.ExHomunculusReady;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.homunculus.ExShowHomunculusBirthInfo;
|
||||
@ -712,6 +713,9 @@ public class EnterWorld implements IClientIncomingPacket
|
||||
// World Trade.
|
||||
WorldExchangeManager.getInstance().checkPlayerSellAlarm(player);
|
||||
|
||||
// Tome of Hero.
|
||||
player.sendPacket(new ExHeroBookInfo(player.getHeroBookProgress()));
|
||||
|
||||
if (Config.ENABLE_ATTENDANCE_REWARDS)
|
||||
{
|
||||
ThreadPool.schedule(() ->
|
||||
|
@ -0,0 +1,60 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.network.clientpackets.herobook;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.l2jmobius.commons.network.PacketReader;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.herobook.HeroBookManager;
|
||||
import org.l2jmobius.gameserver.network.GameClient;
|
||||
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.herobook.ExHeroBookCharge;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.herobook.ExHeroBookInfo;
|
||||
|
||||
/**
|
||||
* @author Index
|
||||
*/
|
||||
public class RequestHeroBookCharge implements IClientIncomingPacket
|
||||
{
|
||||
private final Map<Integer, Long> _items = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public boolean read(GameClient client, PacketReader packet)
|
||||
{
|
||||
final int size = packet.readD();
|
||||
for (int curr = 0; curr < size; curr++)
|
||||
{
|
||||
_items.put(packet.readD(), packet.readQ());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(GameClient client)
|
||||
{
|
||||
Player player = client.getPlayer();
|
||||
if (player == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
final boolean isSuccess = new HeroBookManager().tryEnchant(player, _items);
|
||||
player.sendPacket(new ExHeroBookCharge(isSuccess));
|
||||
player.sendPacket(new ExHeroBookInfo(player.getHeroBookProgress()));
|
||||
}
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.network.clientpackets.herobook;
|
||||
|
||||
import org.l2jmobius.commons.network.PacketReader;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.herobook.HeroBookManager;
|
||||
import org.l2jmobius.gameserver.network.GameClient;
|
||||
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
|
||||
|
||||
/**
|
||||
* @author Index
|
||||
*/
|
||||
public class RequestHeroBookEnchant implements IClientIncomingPacket
|
||||
{
|
||||
@Override
|
||||
public boolean read(GameClient client, PacketReader packet)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(GameClient client)
|
||||
{
|
||||
Player player = client.getPlayer();
|
||||
if (player == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
new HeroBookManager().tryIncreaseLevel(player);
|
||||
}
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.network.serverpackets.herobook;
|
||||
|
||||
import org.l2jmobius.commons.network.PacketWriter;
|
||||
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
||||
|
||||
/**
|
||||
* @author Index
|
||||
*/
|
||||
public class ExHeroBookCharge implements IClientOutgoingPacket
|
||||
{
|
||||
private final boolean _success;
|
||||
|
||||
public ExHeroBookCharge(boolean success)
|
||||
{
|
||||
_success = success;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean write(PacketWriter packet)
|
||||
{
|
||||
OutgoingPackets.EX_HERO_BOOK_CHARGE.writeId(packet);
|
||||
packet.writeC(_success ? 1 : 0);
|
||||
return true;
|
||||
}
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.network.serverpackets.herobook;
|
||||
|
||||
import org.l2jmobius.commons.network.PacketWriter;
|
||||
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
||||
|
||||
/**
|
||||
* @author Index
|
||||
*/
|
||||
public class ExHeroBookEnchant implements IClientOutgoingPacket
|
||||
{
|
||||
private final int _result;
|
||||
|
||||
public ExHeroBookEnchant(int result)
|
||||
{
|
||||
_result = result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean write(PacketWriter packet)
|
||||
{
|
||||
OutgoingPackets.EX_HERO_BOOK_ENCHANT.writeId(packet);
|
||||
packet.writeC(_result);
|
||||
return true;
|
||||
}
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.network.serverpackets.herobook;
|
||||
|
||||
import org.l2jmobius.commons.network.PacketWriter;
|
||||
import org.l2jmobius.gameserver.model.herobook.HeroBookInfoHolder;
|
||||
import org.l2jmobius.gameserver.model.herobook.HeroBookManager;
|
||||
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
||||
|
||||
/**
|
||||
* @author Index
|
||||
*/
|
||||
public class ExHeroBookInfo implements IClientOutgoingPacket
|
||||
{
|
||||
private final int _level;
|
||||
private final int _points;
|
||||
|
||||
public ExHeroBookInfo(HeroBookInfoHolder holder)
|
||||
{
|
||||
_level = holder.getCurrentLevel();
|
||||
_points = Math.min(HeroBookManager.getExpForNextLevel(_level), holder.getCurrentExp());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean write(PacketWriter packet)
|
||||
{
|
||||
OutgoingPackets.EX_HERO_BOOK_INFO.writeId(packet);
|
||||
packet.writeD(_points);
|
||||
packet.writeD(_level);
|
||||
return true;
|
||||
}
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
/*
|
||||
* This file is part of the L2J Mobius project.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.l2jmobius.gameserver.network.serverpackets.herobook;
|
||||
|
||||
import org.l2jmobius.commons.network.PacketWriter;
|
||||
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
||||
|
||||
/**
|
||||
* @author Index
|
||||
*/
|
||||
public class ExHeroBookShowUI implements IClientOutgoingPacket
|
||||
{
|
||||
@Override
|
||||
public boolean write(PacketWriter packet)
|
||||
{
|
||||
OutgoingPackets.EX_HERO_BOOK_UI.writeId(packet);
|
||||
return true;
|
||||
}
|
||||
}
|
@ -132,7 +132,7 @@ Master Class Chapter 2: https://eu.4game.com/patchnotes/lineage2/374/
|
||||
-New enchant system
|
||||
|
||||
Master Class Chapter 3: https://eu.4game.com/patchnotes/lineage2/417/
|
||||
-Login support.
|
||||
-Tales of Hero system
|
||||
|
||||
Events:
|
||||
-Birth of Draco
|
||||
|
Loading…
Reference in New Issue
Block a user