Homunculus related cleanups.
This commit is contained in:
@@ -18,10 +18,9 @@ package org.l2jmobius.gameserver.data.xml;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.w3c.dom.Document;
|
import org.w3c.dom.Document;
|
||||||
import org.w3c.dom.NamedNodeMap;
|
import org.w3c.dom.NamedNodeMap;
|
||||||
@@ -37,7 +36,9 @@ import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
|||||||
*/
|
*/
|
||||||
public class HomunculusCreationData implements IXmlReader
|
public class HomunculusCreationData implements IXmlReader
|
||||||
{
|
{
|
||||||
private final Map<Integer, HomunculusCreationTemplate> _templates = new HashMap<>();
|
private static final List<HomunculusCreationTemplate> TEMPLATES = new ArrayList<>();
|
||||||
|
|
||||||
|
private HomunculusCreationTemplate _defaultTemplate;
|
||||||
|
|
||||||
protected HomunculusCreationData()
|
protected HomunculusCreationData()
|
||||||
{
|
{
|
||||||
@@ -47,9 +48,10 @@ public class HomunculusCreationData implements IXmlReader
|
|||||||
@Override
|
@Override
|
||||||
public void load()
|
public void load()
|
||||||
{
|
{
|
||||||
_templates.clear();
|
TEMPLATES.clear();
|
||||||
|
_defaultTemplate = null;
|
||||||
parseDatapackFile("data/HomunculusCreationData.xml");
|
parseDatapackFile("data/HomunculusCreationData.xml");
|
||||||
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _templates.size() + " templates.");
|
LOGGER.info(getClass().getSimpleName() + ": Loaded " + TEMPLATES.size() + " templates.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -115,7 +117,12 @@ public class HomunculusCreationData implements IXmlReader
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_templates.put(slotId, new HomunculusCreationTemplate(slotId, isEnabled, grade, isEvent, itemFees, hpFee, spFee, vpFee, time, chances));
|
final HomunculusCreationTemplate template = new HomunculusCreationTemplate(slotId, isEnabled, grade, isEvent, itemFees, hpFee, spFee, vpFee, time, chances);
|
||||||
|
TEMPLATES.add(template);
|
||||||
|
if (_defaultTemplate == null)
|
||||||
|
{
|
||||||
|
_defaultTemplate = template;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -153,14 +160,26 @@ public class HomunculusCreationData implements IXmlReader
|
|||||||
return chanceList;
|
return chanceList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public HomunculusCreationTemplate getTemplate(int id)
|
public HomunculusCreationTemplate getTemplateByItemId(int itemId)
|
||||||
{
|
{
|
||||||
return _templates.get(id);
|
for (HomunculusCreationTemplate template : TEMPLATES)
|
||||||
|
{
|
||||||
|
if (template.isInstanceHaveCoupon(itemId))
|
||||||
|
{
|
||||||
|
return template;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int size()
|
public HomunculusCreationTemplate getDefaultTemplate()
|
||||||
{
|
{
|
||||||
return _templates.size();
|
return _defaultTemplate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Collection<HomunculusCreationTemplate> getTemplates()
|
||||||
|
{
|
||||||
|
return TEMPLATES;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static HomunculusCreationData getInstance()
|
public static HomunculusCreationData getInstance()
|
||||||
@@ -172,4 +191,5 @@ public class HomunculusCreationData implements IXmlReader
|
|||||||
{
|
{
|
||||||
protected static final HomunculusCreationData INSTANCE = new HomunculusCreationData();
|
protected static final HomunculusCreationData INSTANCE = new HomunculusCreationData();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -31,7 +31,7 @@ import org.l2jmobius.gameserver.model.homunculus.HomunculusTemplate;
|
|||||||
*/
|
*/
|
||||||
public class HomunculusData implements IXmlReader
|
public class HomunculusData implements IXmlReader
|
||||||
{
|
{
|
||||||
private final Map<Integer, HomunculusTemplate> _templates = new HashMap<>();
|
private static final Map<Integer, HomunculusTemplate> TEMPLATES = new HashMap<>();
|
||||||
|
|
||||||
protected HomunculusData()
|
protected HomunculusData()
|
||||||
{
|
{
|
||||||
@@ -41,9 +41,9 @@ public class HomunculusData implements IXmlReader
|
|||||||
@Override
|
@Override
|
||||||
public void load()
|
public void load()
|
||||||
{
|
{
|
||||||
_templates.clear();
|
TEMPLATES.clear();
|
||||||
parseDatapackFile("data/HomunculusData.xml");
|
parseDatapackFile("data/HomunculusData.xml");
|
||||||
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _templates.size() + " templates.");
|
LOGGER.info(getClass().getSimpleName() + ": Loaded " + TEMPLATES.size() + " templates.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -53,18 +53,13 @@ public class HomunculusData implements IXmlReader
|
|||||||
{
|
{
|
||||||
final StatSet set = new StatSet(parseAttributes(homunculusNode));
|
final StatSet set = new StatSet(parseAttributes(homunculusNode));
|
||||||
final int id = set.getInt("id");
|
final int id = set.getInt("id");
|
||||||
_templates.put(id, new HomunculusTemplate(id, set.getInt("type"), set.getInt("basicSkillId"), set.getInt("basicSkillLevel"), set.getInt("skillId1"), set.getInt("skillId2"), set.getInt("skillId3"), set.getInt("skillId4"), set.getInt("skillId5"), set.getInt("hpLevel1"), set.getInt("atkLevel1"), set.getInt("defLevel1"), set.getInt("expToLevel2"), set.getInt("hpLevel2"), set.getInt("atkLevel2"), set.getInt("defLevel2"), set.getInt("expToLevel3"), set.getInt("hpLevel3"), set.getInt("atkLevel3"), set.getInt("defLevel3"), set.getInt("expToLevel4"), set.getInt("hpLevel4"), set.getInt("atkLevel4"), set.getInt("defLevel4"), set.getInt("expToLevel5"), set.getInt("hpLevel5"), set.getInt("atkLevel5"), set.getInt("defLevel5"), set.getInt("expToLevel6"), set.getInt("critRate")));
|
TEMPLATES.put(id, new HomunculusTemplate(id, set.getInt("type"), set.getInt("basicSkillId"), set.getInt("basicSkillLevel"), set.getInt("skillId1"), set.getInt("skillId2"), set.getInt("skillId3"), set.getInt("skillId4"), set.getInt("skillId5"), set.getInt("hpLevel1"), set.getInt("atkLevel1"), set.getInt("defLevel1"), set.getInt("expToLevel2"), set.getInt("hpLevel2"), set.getInt("atkLevel2"), set.getInt("defLevel2"), set.getInt("expToLevel3"), set.getInt("hpLevel3"), set.getInt("atkLevel3"), set.getInt("defLevel3"), set.getInt("expToLevel4"), set.getInt("hpLevel4"), set.getInt("atkLevel4"), set.getInt("defLevel4"), set.getInt("expToLevel5"), set.getInt("hpLevel5"), set.getInt("atkLevel5"), set.getInt("defLevel5"), set.getInt("expToLevel6"), set.getInt("critRate")));
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
public HomunculusTemplate getTemplate(int id)
|
public HomunculusTemplate getTemplate(int id)
|
||||||
{
|
{
|
||||||
return _templates.get(id);
|
return TEMPLATES.get(id);
|
||||||
}
|
|
||||||
|
|
||||||
public int size()
|
|
||||||
{
|
|
||||||
return _templates.size();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static HomunculusData getInstance()
|
public static HomunculusData getInstance()
|
||||||
|
@@ -130,7 +130,7 @@ public class HomunculusCreationTemplate
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getCreationLime()
|
public long getCreationTime()
|
||||||
{
|
{
|
||||||
return _time;
|
return _time;
|
||||||
}
|
}
|
||||||
|
@@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.network.clientpackets.homunculus;
|
|||||||
import org.l2jmobius.commons.network.PacketReader;
|
import org.l2jmobius.commons.network.PacketReader;
|
||||||
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
|
||||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -32,10 +31,6 @@ import org.l2jmobius.gameserver.network.serverpackets.homunculus.ExShowHomunculu
|
|||||||
*/
|
*/
|
||||||
public class RequestExHomunculusCreateStart implements IClientIncomingPacket
|
public class RequestExHomunculusCreateStart implements IClientIncomingPacket
|
||||||
{
|
{
|
||||||
private static final HomunculusCreationTemplate TEMPLATE = HomunculusCreationData.getInstance().getTemplate(0);
|
|
||||||
private static final int COST = Math.toIntExact(TEMPLATE.getItemFee().get(0).getCount());
|
|
||||||
private static final long CREATION_TIME = TEMPLATE.getCreationLime();
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean read(GameClient client, PacketReader packet)
|
public boolean read(GameClient client, PacketReader packet)
|
||||||
{
|
{
|
||||||
@@ -51,14 +46,15 @@ public class RequestExHomunculusCreateStart implements IClientIncomingPacket
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player.getAdena() < COST)
|
final int fee = Math.toIntExact(HomunculusCreationData.getInstance().getDefaultTemplate().getItemFee().get(0).getCount());
|
||||||
|
if (player.getAdena() < fee)
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ADENA_2);
|
player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ADENA_2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
player.reduceAdena("Homunculus creation", COST, player, true);
|
player.reduceAdena("Homunculus creation", fee, player, true);
|
||||||
player.getVariables().set(PlayerVariables.HOMUNCULUS_CREATION_TIME, System.currentTimeMillis() + CREATION_TIME);
|
player.getVariables().set(PlayerVariables.HOMUNCULUS_CREATION_TIME, System.currentTimeMillis() + HomunculusCreationData.getInstance().getDefaultTemplate().getCreationTime());
|
||||||
|
|
||||||
client.sendPacket(new ExShowHomunculusBirthInfo(player));
|
client.sendPacket(new ExShowHomunculusBirthInfo(player));
|
||||||
client.sendPacket(new ExHomunculusCreateStartResult(player));
|
client.sendPacket(new ExHomunculusCreateStartResult(player));
|
||||||
|
@@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.network.clientpackets.homunculus;
|
|||||||
import org.l2jmobius.commons.network.PacketReader;
|
import org.l2jmobius.commons.network.PacketReader;
|
||||||
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
|
||||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
|
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
|
||||||
@@ -32,11 +31,6 @@ import org.l2jmobius.gameserver.network.serverpackets.homunculus.ExShowHomunculu
|
|||||||
*/
|
*/
|
||||||
public class RequestExHomunculusInsert implements IClientIncomingPacket
|
public class RequestExHomunculusInsert implements IClientIncomingPacket
|
||||||
{
|
{
|
||||||
private static final HomunculusCreationTemplate TEMPLATE = HomunculusCreationData.getInstance().getTemplate(0);
|
|
||||||
private static final short HP_COST = (short) TEMPLATE.getHPFeeCountByUse();
|
|
||||||
private static final long SP_COST = TEMPLATE.getSPFeeCountByUse();
|
|
||||||
private static final int VP_COST = TEMPLATE.getVPFeeByUse();
|
|
||||||
|
|
||||||
private int _type;
|
private int _type;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -61,9 +55,9 @@ public class RequestExHomunculusInsert implements IClientIncomingPacket
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
{
|
{
|
||||||
if ((player.getCurrentHp() > HP_COST) && (hpPoints < TEMPLATE.getHPFeeCount()))
|
if ((player.getCurrentHp() > HomunculusCreationData.getInstance().getDefaultTemplate().getHPFeeCountByUse()) && (hpPoints < HomunculusCreationData.getInstance().getDefaultTemplate().getHPFeeCount()))
|
||||||
{
|
{
|
||||||
int newHp = (int) (player.getCurrentHp()) - HP_COST;
|
int newHp = (int) (player.getCurrentHp()) - HomunculusCreationData.getInstance().getDefaultTemplate().getHPFeeCountByUse();
|
||||||
player.setCurrentHp(newHp, true);
|
player.setCurrentHp(newHp, true);
|
||||||
hpPoints += 1;
|
hpPoints += 1;
|
||||||
player.getVariables().set(PlayerVariables.HOMUNCULUS_HP_POINTS, hpPoints);
|
player.getVariables().set(PlayerVariables.HOMUNCULUS_HP_POINTS, hpPoints);
|
||||||
@@ -76,9 +70,9 @@ public class RequestExHomunculusInsert implements IClientIncomingPacket
|
|||||||
}
|
}
|
||||||
case 1:
|
case 1:
|
||||||
{
|
{
|
||||||
if ((player.getSp() >= SP_COST) && (spPoints < TEMPLATE.getSPFeeCount()))
|
if ((player.getSp() >= HomunculusCreationData.getInstance().getDefaultTemplate().getSPFeeCountByUse()) && (spPoints < HomunculusCreationData.getInstance().getDefaultTemplate().getSPFeeCount()))
|
||||||
{
|
{
|
||||||
player.setSp(player.getSp() - SP_COST);
|
player.setSp(player.getSp() - HomunculusCreationData.getInstance().getDefaultTemplate().getSPFeeCountByUse());
|
||||||
spPoints += 1;
|
spPoints += 1;
|
||||||
player.getVariables().set(PlayerVariables.HOMUNCULUS_SP_POINTS, spPoints);
|
player.getVariables().set(PlayerVariables.HOMUNCULUS_SP_POINTS, spPoints);
|
||||||
}
|
}
|
||||||
@@ -90,9 +84,9 @@ public class RequestExHomunculusInsert implements IClientIncomingPacket
|
|||||||
}
|
}
|
||||||
case 2:
|
case 2:
|
||||||
{
|
{
|
||||||
if ((player.getVitalityPoints() >= VP_COST) && (vpPoints < TEMPLATE.getVPFeeCount()))
|
if ((player.getVitalityPoints() >= HomunculusCreationData.getInstance().getDefaultTemplate().getVPFeeByUse()) && (vpPoints < HomunculusCreationData.getInstance().getDefaultTemplate().getVPFeeCount()))
|
||||||
{
|
{
|
||||||
int newVitality = player.getVitalityPoints() - VP_COST;
|
int newVitality = player.getVitalityPoints() - HomunculusCreationData.getInstance().getDefaultTemplate().getVPFeeByUse();
|
||||||
player.setVitalityPoints(newVitality, true);
|
player.setVitalityPoints(newVitality, true);
|
||||||
vpPoints += 1;
|
vpPoints += 1;
|
||||||
player.getVariables().set(PlayerVariables.HOMUNCULUS_VP_POINTS, vpPoints);
|
player.getVariables().set(PlayerVariables.HOMUNCULUS_VP_POINTS, vpPoints);
|
||||||
|
@@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
|||||||
import org.l2jmobius.gameserver.data.xml.HomunculusData;
|
import org.l2jmobius.gameserver.data.xml.HomunculusData;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.Homunculus;
|
import org.l2jmobius.gameserver.model.homunculus.Homunculus;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusTemplate;
|
import org.l2jmobius.gameserver.model.homunculus.HomunculusTemplate;
|
||||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
@@ -37,8 +36,6 @@ import org.l2jmobius.gameserver.network.serverpackets.homunculus.ExShowHomunculu
|
|||||||
*/
|
*/
|
||||||
public class RequestExHomunculusSummon implements IClientIncomingPacket
|
public class RequestExHomunculusSummon implements IClientIncomingPacket
|
||||||
{
|
{
|
||||||
private static final HomunculusCreationTemplate TEMPLATE = HomunculusCreationData.getInstance().getTemplate(0);
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean read(GameClient client, PacketReader packet)
|
public boolean read(GameClient client, PacketReader packet)
|
||||||
{
|
{
|
||||||
@@ -60,22 +57,21 @@ public class RequestExHomunculusSummon implements IClientIncomingPacket
|
|||||||
final int vpPoints = player.getVariables().getInt(PlayerVariables.HOMUNCULUS_VP_POINTS, 0);
|
final int vpPoints = player.getVariables().getInt(PlayerVariables.HOMUNCULUS_VP_POINTS, 0);
|
||||||
final int homunculusCreateTime = (int) (player.getVariables().getLong(PlayerVariables.HOMUNCULUS_CREATION_TIME, 0) / 1000);
|
final int homunculusCreateTime = (int) (player.getVariables().getLong(PlayerVariables.HOMUNCULUS_CREATION_TIME, 0) / 1000);
|
||||||
|
|
||||||
if ((homunculusCreateTime > 0) && ((System.currentTimeMillis() / 1000) >= homunculusCreateTime) && (hpPoints == TEMPLATE.getHPFeeCount()) && (spPoints == TEMPLATE.getSPFeeCount()) && (vpPoints == TEMPLATE.getVPFeeCount()))
|
if ((homunculusCreateTime > 0) && ((System.currentTimeMillis() / 1000) >= homunculusCreateTime) && (hpPoints == HomunculusCreationData.getInstance().getDefaultTemplate().getHPFeeCount()) && (spPoints == HomunculusCreationData.getInstance().getDefaultTemplate().getSPFeeCount()) && (vpPoints == HomunculusCreationData.getInstance().getDefaultTemplate().getVPFeeCount()))
|
||||||
{
|
{
|
||||||
double chance = Rnd.get(100.0);
|
double chance = Rnd.get(100.0);
|
||||||
double current = 0;
|
double current = 0;
|
||||||
int homunculusId = 0;
|
int homunculusId = 0;
|
||||||
while (homunculusId == 0)
|
while (homunculusId == 0)
|
||||||
{
|
{
|
||||||
if (chance > TEMPLATE.getMaxChance())
|
if (chance > HomunculusCreationData.getInstance().getDefaultTemplate().getMaxChance())
|
||||||
{
|
{
|
||||||
player.sendMessage("Homunculus is not created!");
|
player.sendMessage("Homunculus is not created!");
|
||||||
player.sendPacket(new ExHomunculusSummonResult(0));
|
player.sendPacket(new ExHomunculusSummonResult(0));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < TEMPLATE.getCreationChance().size(); i++)
|
for (Double[] homuHolder : HomunculusCreationData.getInstance().getDefaultTemplate().getCreationChance())
|
||||||
{
|
{
|
||||||
final Double[] homuHolder = TEMPLATE.getCreationChance().get(i);
|
|
||||||
current += homuHolder[1];
|
current += homuHolder[1];
|
||||||
if (current >= chance)
|
if (current >= chance)
|
||||||
{
|
{
|
||||||
|
@@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.network.serverpackets.homunculus;
|
|||||||
import org.l2jmobius.commons.network.PacketWriter;
|
import org.l2jmobius.commons.network.PacketWriter;
|
||||||
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
|
||||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||||
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
||||||
@@ -29,8 +28,6 @@ import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
|||||||
*/
|
*/
|
||||||
public class ExShowHomunculusBirthInfo implements IClientOutgoingPacket
|
public class ExShowHomunculusBirthInfo implements IClientOutgoingPacket
|
||||||
{
|
{
|
||||||
private static final HomunculusCreationTemplate TEMPLATE = HomunculusCreationData.getInstance().getTemplate(0);
|
|
||||||
|
|
||||||
private final int _hpPoints;
|
private final int _hpPoints;
|
||||||
private final int _spPoints;
|
private final int _spPoints;
|
||||||
private final int _vpPoints;
|
private final int _vpPoints;
|
||||||
@@ -45,9 +42,9 @@ public class ExShowHomunculusBirthInfo implements IClientOutgoingPacket
|
|||||||
_spPoints = player.getVariables().getInt(PlayerVariables.HOMUNCULUS_SP_POINTS, 0);
|
_spPoints = player.getVariables().getInt(PlayerVariables.HOMUNCULUS_SP_POINTS, 0);
|
||||||
_vpPoints = player.getVariables().getInt(PlayerVariables.HOMUNCULUS_VP_POINTS, 0);
|
_vpPoints = player.getVariables().getInt(PlayerVariables.HOMUNCULUS_VP_POINTS, 0);
|
||||||
_homunculusCreateTime = (int) (player.getVariables().getLong(PlayerVariables.HOMUNCULUS_CREATION_TIME, 0) / 1000);
|
_homunculusCreateTime = (int) (player.getVariables().getLong(PlayerVariables.HOMUNCULUS_CREATION_TIME, 0) / 1000);
|
||||||
_feeHpPoints = TEMPLATE.getHPFeeCount();
|
_feeHpPoints = HomunculusCreationData.getInstance().getDefaultTemplate().getHPFeeCount();
|
||||||
_feeSpPoints = (int) TEMPLATE.getSPFeeCount();
|
_feeSpPoints = (int) HomunculusCreationData.getInstance().getDefaultTemplate().getSPFeeCount();
|
||||||
_feeVpPoints = TEMPLATE.getVPFeeCount();
|
_feeVpPoints = HomunculusCreationData.getInstance().getDefaultTemplate().getVPFeeCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -18,10 +18,9 @@ package org.l2jmobius.gameserver.data.xml;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.w3c.dom.Document;
|
import org.w3c.dom.Document;
|
||||||
import org.w3c.dom.NamedNodeMap;
|
import org.w3c.dom.NamedNodeMap;
|
||||||
@@ -37,7 +36,9 @@ import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
|||||||
*/
|
*/
|
||||||
public class HomunculusCreationData implements IXmlReader
|
public class HomunculusCreationData implements IXmlReader
|
||||||
{
|
{
|
||||||
private final Map<Integer, HomunculusCreationTemplate> _templates = new HashMap<>();
|
private static final List<HomunculusCreationTemplate> TEMPLATES = new ArrayList<>();
|
||||||
|
|
||||||
|
private HomunculusCreationTemplate _defaultTemplate;
|
||||||
|
|
||||||
protected HomunculusCreationData()
|
protected HomunculusCreationData()
|
||||||
{
|
{
|
||||||
@@ -47,9 +48,10 @@ public class HomunculusCreationData implements IXmlReader
|
|||||||
@Override
|
@Override
|
||||||
public void load()
|
public void load()
|
||||||
{
|
{
|
||||||
_templates.clear();
|
TEMPLATES.clear();
|
||||||
|
_defaultTemplate = null;
|
||||||
parseDatapackFile("data/HomunculusCreationData.xml");
|
parseDatapackFile("data/HomunculusCreationData.xml");
|
||||||
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _templates.size() + " templates.");
|
LOGGER.info(getClass().getSimpleName() + ": Loaded " + TEMPLATES.size() + " templates.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -115,7 +117,12 @@ public class HomunculusCreationData implements IXmlReader
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_templates.put(slotId, new HomunculusCreationTemplate(slotId, isEnabled, grade, isEvent, itemFees, hpFee, spFee, vpFee, time, chances));
|
final HomunculusCreationTemplate template = new HomunculusCreationTemplate(slotId, isEnabled, grade, isEvent, itemFees, hpFee, spFee, vpFee, time, chances);
|
||||||
|
TEMPLATES.add(template);
|
||||||
|
if (_defaultTemplate == null)
|
||||||
|
{
|
||||||
|
_defaultTemplate = template;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -153,14 +160,26 @@ public class HomunculusCreationData implements IXmlReader
|
|||||||
return chanceList;
|
return chanceList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public HomunculusCreationTemplate getTemplate(int id)
|
public HomunculusCreationTemplate getTemplateByItemId(int itemId)
|
||||||
{
|
{
|
||||||
return _templates.get(id);
|
for (HomunculusCreationTemplate template : TEMPLATES)
|
||||||
|
{
|
||||||
|
if (template.isInstanceHaveCoupon(itemId))
|
||||||
|
{
|
||||||
|
return template;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int size()
|
public HomunculusCreationTemplate getDefaultTemplate()
|
||||||
{
|
{
|
||||||
return _templates.size();
|
return _defaultTemplate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Collection<HomunculusCreationTemplate> getTemplates()
|
||||||
|
{
|
||||||
|
return TEMPLATES;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static HomunculusCreationData getInstance()
|
public static HomunculusCreationData getInstance()
|
||||||
@@ -172,4 +191,5 @@ public class HomunculusCreationData implements IXmlReader
|
|||||||
{
|
{
|
||||||
protected static final HomunculusCreationData INSTANCE = new HomunculusCreationData();
|
protected static final HomunculusCreationData INSTANCE = new HomunculusCreationData();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -31,7 +31,7 @@ import org.l2jmobius.gameserver.model.homunculus.HomunculusTemplate;
|
|||||||
*/
|
*/
|
||||||
public class HomunculusData implements IXmlReader
|
public class HomunculusData implements IXmlReader
|
||||||
{
|
{
|
||||||
private final Map<Integer, HomunculusTemplate> _templates = new HashMap<>();
|
private static final Map<Integer, HomunculusTemplate> TEMPLATES = new HashMap<>();
|
||||||
|
|
||||||
protected HomunculusData()
|
protected HomunculusData()
|
||||||
{
|
{
|
||||||
@@ -41,9 +41,9 @@ public class HomunculusData implements IXmlReader
|
|||||||
@Override
|
@Override
|
||||||
public void load()
|
public void load()
|
||||||
{
|
{
|
||||||
_templates.clear();
|
TEMPLATES.clear();
|
||||||
parseDatapackFile("data/HomunculusData.xml");
|
parseDatapackFile("data/HomunculusData.xml");
|
||||||
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _templates.size() + " templates.");
|
LOGGER.info(getClass().getSimpleName() + ": Loaded " + TEMPLATES.size() + " templates.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -53,18 +53,13 @@ public class HomunculusData implements IXmlReader
|
|||||||
{
|
{
|
||||||
final StatSet set = new StatSet(parseAttributes(homunculusNode));
|
final StatSet set = new StatSet(parseAttributes(homunculusNode));
|
||||||
final int id = set.getInt("id");
|
final int id = set.getInt("id");
|
||||||
_templates.put(id, new HomunculusTemplate(id, set.getInt("type"), set.getInt("basicSkillId"), set.getInt("basicSkillLevel"), set.getInt("skillId1"), set.getInt("skillId2"), set.getInt("skillId3"), set.getInt("skillId4"), set.getInt("skillId5"), set.getInt("hpLevel1"), set.getInt("atkLevel1"), set.getInt("defLevel1"), set.getInt("expToLevel2"), set.getInt("hpLevel2"), set.getInt("atkLevel2"), set.getInt("defLevel2"), set.getInt("expToLevel3"), set.getInt("hpLevel3"), set.getInt("atkLevel3"), set.getInt("defLevel3"), set.getInt("expToLevel4"), set.getInt("hpLevel4"), set.getInt("atkLevel4"), set.getInt("defLevel4"), set.getInt("expToLevel5"), set.getInt("hpLevel5"), set.getInt("atkLevel5"), set.getInt("defLevel5"), set.getInt("expToLevel6"), set.getInt("critRate")));
|
TEMPLATES.put(id, new HomunculusTemplate(id, set.getInt("type"), set.getInt("basicSkillId"), set.getInt("basicSkillLevel"), set.getInt("skillId1"), set.getInt("skillId2"), set.getInt("skillId3"), set.getInt("skillId4"), set.getInt("skillId5"), set.getInt("hpLevel1"), set.getInt("atkLevel1"), set.getInt("defLevel1"), set.getInt("expToLevel2"), set.getInt("hpLevel2"), set.getInt("atkLevel2"), set.getInt("defLevel2"), set.getInt("expToLevel3"), set.getInt("hpLevel3"), set.getInt("atkLevel3"), set.getInt("defLevel3"), set.getInt("expToLevel4"), set.getInt("hpLevel4"), set.getInt("atkLevel4"), set.getInt("defLevel4"), set.getInt("expToLevel5"), set.getInt("hpLevel5"), set.getInt("atkLevel5"), set.getInt("defLevel5"), set.getInt("expToLevel6"), set.getInt("critRate")));
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
public HomunculusTemplate getTemplate(int id)
|
public HomunculusTemplate getTemplate(int id)
|
||||||
{
|
{
|
||||||
return _templates.get(id);
|
return TEMPLATES.get(id);
|
||||||
}
|
|
||||||
|
|
||||||
public int size()
|
|
||||||
{
|
|
||||||
return _templates.size();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static HomunculusData getInstance()
|
public static HomunculusData getInstance()
|
||||||
|
@@ -37,7 +37,7 @@ import org.l2jmobius.gameserver.model.homunculus.HomunculusSlotTemplate;
|
|||||||
*/
|
*/
|
||||||
public class HomunculusSlotData implements IXmlReader
|
public class HomunculusSlotData implements IXmlReader
|
||||||
{
|
{
|
||||||
private final Map<Integer, HomunculusSlotTemplate> _templates = new HashMap<>();
|
private static final Map<Integer, HomunculusSlotTemplate> TEMPLATES = new HashMap<>();
|
||||||
|
|
||||||
protected HomunculusSlotData()
|
protected HomunculusSlotData()
|
||||||
{
|
{
|
||||||
@@ -47,9 +47,9 @@ public class HomunculusSlotData implements IXmlReader
|
|||||||
@Override
|
@Override
|
||||||
public void load()
|
public void load()
|
||||||
{
|
{
|
||||||
_templates.clear();
|
TEMPLATES.clear();
|
||||||
parseDatapackFile("data/HomunculusSlotData.xml");
|
parseDatapackFile("data/HomunculusSlotData.xml");
|
||||||
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _templates.size() + " templates.");
|
LOGGER.info(getClass().getSimpleName() + ": Loaded " + TEMPLATES.size() + " templates.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -74,18 +74,17 @@ public class HomunculusSlotData implements IXmlReader
|
|||||||
set.set(att.getNodeName(), att.getNodeValue());
|
set.set(att.getNodeName(), att.getNodeValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
final int slotId = set.getInt("slotId");
|
|
||||||
final Boolean isEnabled = set.getBoolean("isEnabled", false);
|
|
||||||
List<ItemHolder> fee = Collections.emptyList();
|
List<ItemHolder> fee = Collections.emptyList();
|
||||||
|
|
||||||
for (Node c = d.getFirstChild(); c != null; c = c.getNextSibling())
|
for (Node c = d.getFirstChild(); c != null; c = c.getNextSibling())
|
||||||
{
|
{
|
||||||
if ("fee".equalsIgnoreCase(c.getNodeName()))
|
if ("fee".equalsIgnoreCase(c.getNodeName()))
|
||||||
{
|
{
|
||||||
fee = getItemList(c);
|
fee = getItemList(c);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_templates.put(slotId, new HomunculusSlotTemplate(slotId, fee, isEnabled));
|
final int slotId = set.getInt("slotId");
|
||||||
|
TEMPLATES.put(slotId, new HomunculusSlotTemplate(slotId, fee, set.getBoolean("isEnabled", false)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -109,12 +108,7 @@ public class HomunculusSlotData implements IXmlReader
|
|||||||
|
|
||||||
public HomunculusSlotTemplate getTemplate(int id)
|
public HomunculusSlotTemplate getTemplate(int id)
|
||||||
{
|
{
|
||||||
return _templates.get(id);
|
return TEMPLATES.get(id);
|
||||||
}
|
|
||||||
|
|
||||||
public int size()
|
|
||||||
{
|
|
||||||
return _templates.size();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static HomunculusSlotData getInstance()
|
public static HomunculusSlotData getInstance()
|
||||||
|
@@ -130,7 +130,7 @@ public class HomunculusCreationTemplate
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getCreationLime()
|
public long getCreationTime()
|
||||||
{
|
{
|
||||||
return _time;
|
return _time;
|
||||||
}
|
}
|
||||||
|
@@ -72,18 +72,16 @@ public class RequestExHomunculusActivateSlot implements IClientIncomingPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
final List<ItemHolder> fee = template.getPrice();
|
final List<ItemHolder> fee = template.getPrice();
|
||||||
for (int i = 0; i < fee.size(); i++)
|
for (ItemHolder feeHolder : fee)
|
||||||
{
|
{
|
||||||
final ItemHolder feeHolder = fee.get(i);
|
|
||||||
if ((activeChar.getInventory().getItemByItemId(feeHolder.getId()) == null) || ((activeChar.getInventory().getItemByItemId(feeHolder.getId()) != null) && (activeChar.getInventory().getItemByItemId(feeHolder.getId()).getCount() < feeHolder.getCount())))
|
if ((activeChar.getInventory().getItemByItemId(feeHolder.getId()) == null) || ((activeChar.getInventory().getItemByItemId(feeHolder.getId()) != null) && (activeChar.getInventory().getItemByItemId(feeHolder.getId()).getCount() < feeHolder.getCount())))
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(new ExActivateHomunculusResult(false));
|
activeChar.sendPacket(new ExActivateHomunculusResult(false));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (int i = 0; i < fee.size(); i++)
|
for (ItemHolder feeHolder : fee)
|
||||||
{
|
{
|
||||||
final ItemHolder feeHolder = fee.get(i);
|
|
||||||
if (!activeChar.destroyItemByItemId("Homunclus slot unlock", feeHolder.getId(), feeHolder.getCount(), activeChar, true))
|
if (!activeChar.destroyItemByItemId("Homunclus slot unlock", feeHolder.getId(), feeHolder.getCount(), activeChar, true))
|
||||||
{
|
{
|
||||||
Logger.getLogger(getClass().getSimpleName() + " player " + activeChar.getName() + " " + activeChar.getObjectId() + " trying unlock slot without items!");
|
Logger.getLogger(getClass().getSimpleName() + " player " + activeChar.getName() + " " + activeChar.getObjectId() + " trying unlock slot without items!");
|
||||||
@@ -92,7 +90,6 @@ public class RequestExHomunculusActivateSlot implements IClientIncomingPacket
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// activeChar.sendItemList();
|
|
||||||
activeChar.broadcastUserInfo();
|
activeChar.broadcastUserInfo();
|
||||||
activeChar.getVariables().set(PlayerVariables.HOMUNCULUS_OPENED_SLOT_COUNT, _slot);
|
activeChar.getVariables().set(PlayerVariables.HOMUNCULUS_OPENED_SLOT_COUNT, _slot);
|
||||||
activeChar.sendPacket(new ExHomunculusPointInfo(activeChar));
|
activeChar.sendPacket(new ExHomunculusPointInfo(activeChar));
|
||||||
|
@@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.network.clientpackets.homunculus;
|
|||||||
import org.l2jmobius.commons.network.PacketReader;
|
import org.l2jmobius.commons.network.PacketReader;
|
||||||
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
|
||||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -32,10 +31,6 @@ import org.l2jmobius.gameserver.network.serverpackets.homunculus.ExShowHomunculu
|
|||||||
*/
|
*/
|
||||||
public class RequestExHomunculusCreateStart implements IClientIncomingPacket
|
public class RequestExHomunculusCreateStart implements IClientIncomingPacket
|
||||||
{
|
{
|
||||||
private static final HomunculusCreationTemplate TEMPLATE = HomunculusCreationData.getInstance().getTemplate(0);
|
|
||||||
private static final int COST = Math.toIntExact(TEMPLATE.getItemFee().get(0).getCount());
|
|
||||||
private static final long CREATION_TIME = TEMPLATE.getCreationLime();
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean read(GameClient client, PacketReader packet)
|
public boolean read(GameClient client, PacketReader packet)
|
||||||
{
|
{
|
||||||
@@ -51,14 +46,15 @@ public class RequestExHomunculusCreateStart implements IClientIncomingPacket
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player.getAdena() < COST)
|
final int fee = Math.toIntExact(HomunculusCreationData.getInstance().getDefaultTemplate().getItemFee().get(0).getCount());
|
||||||
|
if (player.getAdena() < fee)
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ADENA_2);
|
player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_ENOUGH_ADENA_2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
player.reduceAdena("Homunculus creation", COST, player, true);
|
player.reduceAdena("Homunculus creation", fee, player, true);
|
||||||
player.getVariables().set(PlayerVariables.HOMUNCULUS_CREATION_TIME, System.currentTimeMillis() + CREATION_TIME);
|
player.getVariables().set(PlayerVariables.HOMUNCULUS_CREATION_TIME, System.currentTimeMillis() + HomunculusCreationData.getInstance().getDefaultTemplate().getCreationTime());
|
||||||
|
|
||||||
client.sendPacket(new ExShowHomunculusBirthInfo(player));
|
client.sendPacket(new ExShowHomunculusBirthInfo(player));
|
||||||
client.sendPacket(new ExHomunculusCreateStartResult(player));
|
client.sendPacket(new ExHomunculusCreateStartResult(player));
|
||||||
|
@@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.network.clientpackets.homunculus;
|
|||||||
import org.l2jmobius.commons.network.PacketReader;
|
import org.l2jmobius.commons.network.PacketReader;
|
||||||
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
|
||||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
|
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
|
||||||
@@ -32,11 +31,6 @@ import org.l2jmobius.gameserver.network.serverpackets.homunculus.ExShowHomunculu
|
|||||||
*/
|
*/
|
||||||
public class RequestExHomunculusInsert implements IClientIncomingPacket
|
public class RequestExHomunculusInsert implements IClientIncomingPacket
|
||||||
{
|
{
|
||||||
private static final HomunculusCreationTemplate TEMPLATE = HomunculusCreationData.getInstance().getTemplate(0);
|
|
||||||
private static final short HP_COST = (short) TEMPLATE.getHPFeeCountByUse();
|
|
||||||
private static final long SP_COST = TEMPLATE.getSPFeeCountByUse();
|
|
||||||
private static final int VP_COST = TEMPLATE.getVPFeeByUse();
|
|
||||||
|
|
||||||
private int _type;
|
private int _type;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -61,9 +55,9 @@ public class RequestExHomunculusInsert implements IClientIncomingPacket
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
{
|
{
|
||||||
if ((player.getCurrentHp() > HP_COST) && (hpPoints < TEMPLATE.getHPFeeCount()))
|
if ((player.getCurrentHp() > HomunculusCreationData.getInstance().getDefaultTemplate().getHPFeeCountByUse()) && (hpPoints < HomunculusCreationData.getInstance().getDefaultTemplate().getHPFeeCount()))
|
||||||
{
|
{
|
||||||
int newHp = (int) (player.getCurrentHp()) - HP_COST;
|
int newHp = (int) (player.getCurrentHp()) - HomunculusCreationData.getInstance().getDefaultTemplate().getHPFeeCountByUse();
|
||||||
player.setCurrentHp(newHp, true);
|
player.setCurrentHp(newHp, true);
|
||||||
hpPoints += 1;
|
hpPoints += 1;
|
||||||
player.getVariables().set(PlayerVariables.HOMUNCULUS_HP_POINTS, hpPoints);
|
player.getVariables().set(PlayerVariables.HOMUNCULUS_HP_POINTS, hpPoints);
|
||||||
@@ -76,9 +70,9 @@ public class RequestExHomunculusInsert implements IClientIncomingPacket
|
|||||||
}
|
}
|
||||||
case 1:
|
case 1:
|
||||||
{
|
{
|
||||||
if ((player.getSp() >= SP_COST) && (spPoints < TEMPLATE.getSPFeeCount()))
|
if ((player.getSp() >= HomunculusCreationData.getInstance().getDefaultTemplate().getSPFeeCountByUse()) && (spPoints < HomunculusCreationData.getInstance().getDefaultTemplate().getSPFeeCount()))
|
||||||
{
|
{
|
||||||
player.setSp(player.getSp() - SP_COST);
|
player.setSp(player.getSp() - HomunculusCreationData.getInstance().getDefaultTemplate().getSPFeeCountByUse());
|
||||||
spPoints += 1;
|
spPoints += 1;
|
||||||
player.getVariables().set(PlayerVariables.HOMUNCULUS_SP_POINTS, spPoints);
|
player.getVariables().set(PlayerVariables.HOMUNCULUS_SP_POINTS, spPoints);
|
||||||
}
|
}
|
||||||
@@ -90,9 +84,9 @@ public class RequestExHomunculusInsert implements IClientIncomingPacket
|
|||||||
}
|
}
|
||||||
case 2:
|
case 2:
|
||||||
{
|
{
|
||||||
if ((player.getVitalityPoints() >= VP_COST) && (vpPoints < TEMPLATE.getVPFeeCount()))
|
if ((player.getVitalityPoints() >= HomunculusCreationData.getInstance().getDefaultTemplate().getVPFeeByUse()) && (vpPoints < HomunculusCreationData.getInstance().getDefaultTemplate().getVPFeeCount()))
|
||||||
{
|
{
|
||||||
int newVitality = player.getVitalityPoints() - VP_COST;
|
int newVitality = player.getVitalityPoints() - HomunculusCreationData.getInstance().getDefaultTemplate().getVPFeeByUse();
|
||||||
player.setVitalityPoints(newVitality, true);
|
player.setVitalityPoints(newVitality, true);
|
||||||
vpPoints += 1;
|
vpPoints += 1;
|
||||||
player.getVariables().set(PlayerVariables.HOMUNCULUS_VP_POINTS, vpPoints);
|
player.getVariables().set(PlayerVariables.HOMUNCULUS_VP_POINTS, vpPoints);
|
||||||
|
@@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
|||||||
import org.l2jmobius.gameserver.data.xml.HomunculusData;
|
import org.l2jmobius.gameserver.data.xml.HomunculusData;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.Homunculus;
|
import org.l2jmobius.gameserver.model.homunculus.Homunculus;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusTemplate;
|
import org.l2jmobius.gameserver.model.homunculus.HomunculusTemplate;
|
||||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
@@ -37,8 +36,6 @@ import org.l2jmobius.gameserver.network.serverpackets.homunculus.ExShowHomunculu
|
|||||||
*/
|
*/
|
||||||
public class RequestExHomunculusSummon implements IClientIncomingPacket
|
public class RequestExHomunculusSummon implements IClientIncomingPacket
|
||||||
{
|
{
|
||||||
private static final HomunculusCreationTemplate TEMPLATE = HomunculusCreationData.getInstance().getTemplate(0);
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean read(GameClient client, PacketReader packet)
|
public boolean read(GameClient client, PacketReader packet)
|
||||||
{
|
{
|
||||||
@@ -60,22 +57,21 @@ public class RequestExHomunculusSummon implements IClientIncomingPacket
|
|||||||
final int vpPoints = player.getVariables().getInt(PlayerVariables.HOMUNCULUS_VP_POINTS, 0);
|
final int vpPoints = player.getVariables().getInt(PlayerVariables.HOMUNCULUS_VP_POINTS, 0);
|
||||||
final int homunculusCreateTime = (int) (player.getVariables().getLong(PlayerVariables.HOMUNCULUS_CREATION_TIME, 0) / 1000);
|
final int homunculusCreateTime = (int) (player.getVariables().getLong(PlayerVariables.HOMUNCULUS_CREATION_TIME, 0) / 1000);
|
||||||
|
|
||||||
if ((homunculusCreateTime > 0) && ((System.currentTimeMillis() / 1000) >= homunculusCreateTime) && (hpPoints == TEMPLATE.getHPFeeCount()) && (spPoints == TEMPLATE.getSPFeeCount()) && (vpPoints == TEMPLATE.getVPFeeCount()))
|
if ((homunculusCreateTime > 0) && ((System.currentTimeMillis() / 1000) >= homunculusCreateTime) && (hpPoints == HomunculusCreationData.getInstance().getDefaultTemplate().getHPFeeCount()) && (spPoints == HomunculusCreationData.getInstance().getDefaultTemplate().getSPFeeCount()) && (vpPoints == HomunculusCreationData.getInstance().getDefaultTemplate().getVPFeeCount()))
|
||||||
{
|
{
|
||||||
double chance = Rnd.get(100.0);
|
double chance = Rnd.get(100.0);
|
||||||
double current = 0;
|
double current = 0;
|
||||||
int homunculusId = 0;
|
int homunculusId = 0;
|
||||||
while (homunculusId == 0)
|
while (homunculusId == 0)
|
||||||
{
|
{
|
||||||
if (chance > TEMPLATE.getMaxChance())
|
if (chance > HomunculusCreationData.getInstance().getDefaultTemplate().getMaxChance())
|
||||||
{
|
{
|
||||||
player.sendMessage("Homunculus is not created!");
|
player.sendMessage("Homunculus is not created!");
|
||||||
player.sendPacket(new ExHomunculusSummonResult(0));
|
player.sendPacket(new ExHomunculusSummonResult(0));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < TEMPLATE.getCreationChance().size(); i++)
|
for (Double[] homuHolder : HomunculusCreationData.getInstance().getDefaultTemplate().getCreationChance())
|
||||||
{
|
{
|
||||||
final Double[] homuHolder = TEMPLATE.getCreationChance().get(i);
|
|
||||||
current += homuHolder[1];
|
current += homuHolder[1];
|
||||||
if (current >= chance)
|
if (current >= chance)
|
||||||
{
|
{
|
||||||
|
@@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
|||||||
import org.l2jmobius.gameserver.model.homunculus.Homunculus;
|
import org.l2jmobius.gameserver.model.homunculus.Homunculus;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusTemplate;
|
import org.l2jmobius.gameserver.model.homunculus.HomunculusTemplate;
|
||||||
|
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
import org.l2jmobius.gameserver.network.PacketLogger;
|
import org.l2jmobius.gameserver.network.PacketLogger;
|
||||||
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
|
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
|
||||||
@@ -37,12 +38,12 @@ import org.l2jmobius.gameserver.network.serverpackets.homunculus.ExSummonHomuncu
|
|||||||
*/
|
*/
|
||||||
public class RequestExSummonHomunculusCouponResult implements IClientIncomingPacket
|
public class RequestExSummonHomunculusCouponResult implements IClientIncomingPacket
|
||||||
{
|
{
|
||||||
private int _item_id;
|
private int _itemId;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean read(GameClient client, PacketReader packet)
|
public boolean read(GameClient client, PacketReader packet)
|
||||||
{
|
{
|
||||||
_item_id = packet.readD();
|
_itemId = packet.readD();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,35 +62,28 @@ public class RequestExSummonHomunculusCouponResult implements IClientIncomingPac
|
|||||||
PacketLogger.info("Player " + player.getObjectId() + " " + player.getName() + ", trying create homunculus withouts avaible slots!");
|
PacketLogger.info("Player " + player.getObjectId() + " " + player.getName() + ", trying create homunculus withouts avaible slots!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
HomunculusCreationTemplate creationTemplate = null;
|
|
||||||
for (int i = 1; i < HomunculusCreationData.getInstance().size(); i++)
|
final HomunculusCreationTemplate creationTemplate = HomunculusCreationData.getInstance().getTemplateByItemId(_itemId);
|
||||||
{
|
if ((creationTemplate == null) || creationTemplate.getItemFee().isEmpty())
|
||||||
if (HomunculusCreationData.getInstance().getTemplate(i).isInstanceHaveCoupon(_item_id))
|
|
||||||
{
|
|
||||||
creationTemplate = HomunculusCreationData.getInstance().getTemplate(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((creationTemplate == null) || (creationTemplate.getItemFee().size() == 0))
|
|
||||||
{
|
{
|
||||||
PacketLogger.info("Player " + player.getObjectId() + " " + player.getName() + ", trying create homunculus with not existing coupon!");
|
PacketLogger.info("Player " + player.getObjectId() + " " + player.getName() + ", trying create homunculus with not existing coupon!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Take items.
|
// Take items.
|
||||||
for (int i = 0; i < creationTemplate.getItemFee().size(); i++)
|
for (ItemHolder itemHolder : creationTemplate.getItemFee())
|
||||||
{
|
{
|
||||||
final ItemHolder humu = creationTemplate.getItemFee().get(i);
|
final Item item = player.getInventory().getItemByItemId(itemHolder.getId());
|
||||||
if (player.getInventory().getItemByItemId(humu.getId()).getCount() < humu.getCount())
|
if ((item == null) || (item.getCount() < itemHolder.getCount()))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (int i = 0; i < creationTemplate.getItemFee().size(); i++)
|
for (ItemHolder itemHolder : creationTemplate.getItemFee())
|
||||||
{
|
{
|
||||||
final ItemHolder humu = creationTemplate.getItemFee().get(i);
|
if (!player.destroyItemByItemId("Homunculus Coupon Creation", itemHolder.getId(), itemHolder.getCount(), player, true))
|
||||||
if (!player.destroyItemByItemId("Homunculus Coupon Creation", humu.getId(), humu.getCount(), player, true))
|
|
||||||
{
|
{
|
||||||
PacketLogger.info("Player " + player.getObjectId() + " " + player.getName() + ", trying create homunculus without " + humu + "!");
|
PacketLogger.info("Player " + player.getObjectId() + " " + player.getName() + ", trying create homunculus without " + itemHolder + "!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -105,9 +99,8 @@ public class RequestExSummonHomunculusCouponResult implements IClientIncomingPac
|
|||||||
player.sendPacket(new ExSummonHomunculusCouponResult(0, 0));
|
player.sendPacket(new ExSummonHomunculusCouponResult(0, 0));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < creationTemplate.getCreationChance().size(); i++)
|
for (Double[] homuHolder : creationTemplate.getCreationChance())
|
||||||
{
|
{
|
||||||
final Double[] homuHolder = creationTemplate.getCreationChance().get(i);
|
|
||||||
current += homuHolder[1];
|
current += homuHolder[1];
|
||||||
if (current >= chance)
|
if (current >= chance)
|
||||||
{
|
{
|
||||||
|
@@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.network.serverpackets.homunculus;
|
|||||||
import org.l2jmobius.commons.network.PacketWriter;
|
import org.l2jmobius.commons.network.PacketWriter;
|
||||||
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
|
||||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||||
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
||||||
@@ -29,8 +28,6 @@ import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
|||||||
*/
|
*/
|
||||||
public class ExShowHomunculusBirthInfo implements IClientOutgoingPacket
|
public class ExShowHomunculusBirthInfo implements IClientOutgoingPacket
|
||||||
{
|
{
|
||||||
private static final HomunculusCreationTemplate TEMPLATE = HomunculusCreationData.getInstance().getTemplate(0);
|
|
||||||
|
|
||||||
private final int _hpPoints;
|
private final int _hpPoints;
|
||||||
private final int _spPoints;
|
private final int _spPoints;
|
||||||
private final int _vpPoints;
|
private final int _vpPoints;
|
||||||
@@ -45,9 +42,9 @@ public class ExShowHomunculusBirthInfo implements IClientOutgoingPacket
|
|||||||
_spPoints = player.getVariables().getInt(PlayerVariables.HOMUNCULUS_SP_POINTS, 0);
|
_spPoints = player.getVariables().getInt(PlayerVariables.HOMUNCULUS_SP_POINTS, 0);
|
||||||
_vpPoints = player.getVariables().getInt(PlayerVariables.HOMUNCULUS_VP_POINTS, 0);
|
_vpPoints = player.getVariables().getInt(PlayerVariables.HOMUNCULUS_VP_POINTS, 0);
|
||||||
_homunculusCreateTime = (int) (player.getVariables().getLong(PlayerVariables.HOMUNCULUS_CREATION_TIME, 0) / 1000);
|
_homunculusCreateTime = (int) (player.getVariables().getLong(PlayerVariables.HOMUNCULUS_CREATION_TIME, 0) / 1000);
|
||||||
_feeHpPoints = TEMPLATE.getHPFeeCount();
|
_feeHpPoints = HomunculusCreationData.getInstance().getDefaultTemplate().getHPFeeCount();
|
||||||
_feeSpPoints = (int) TEMPLATE.getSPFeeCount();
|
_feeSpPoints = (int) HomunculusCreationData.getInstance().getDefaultTemplate().getSPFeeCount();
|
||||||
_feeVpPoints = TEMPLATE.getVPFeeCount();
|
_feeVpPoints = HomunculusCreationData.getInstance().getDefaultTemplate().getVPFeeCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -18,10 +18,9 @@ package org.l2jmobius.gameserver.data.xml;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.w3c.dom.Document;
|
import org.w3c.dom.Document;
|
||||||
import org.w3c.dom.NamedNodeMap;
|
import org.w3c.dom.NamedNodeMap;
|
||||||
@@ -37,7 +36,9 @@ import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
|||||||
*/
|
*/
|
||||||
public class HomunculusCreationData implements IXmlReader
|
public class HomunculusCreationData implements IXmlReader
|
||||||
{
|
{
|
||||||
private final Map<Integer, HomunculusCreationTemplate> _templates = new HashMap<>();
|
private static final List<HomunculusCreationTemplate> TEMPLATES = new ArrayList<>();
|
||||||
|
|
||||||
|
private HomunculusCreationTemplate _defaultTemplate;
|
||||||
|
|
||||||
protected HomunculusCreationData()
|
protected HomunculusCreationData()
|
||||||
{
|
{
|
||||||
@@ -47,9 +48,10 @@ public class HomunculusCreationData implements IXmlReader
|
|||||||
@Override
|
@Override
|
||||||
public void load()
|
public void load()
|
||||||
{
|
{
|
||||||
_templates.clear();
|
TEMPLATES.clear();
|
||||||
|
_defaultTemplate = null;
|
||||||
parseDatapackFile("data/HomunculusCreationData.xml");
|
parseDatapackFile("data/HomunculusCreationData.xml");
|
||||||
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _templates.size() + " templates.");
|
LOGGER.info(getClass().getSimpleName() + ": Loaded " + TEMPLATES.size() + " templates.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -115,7 +117,12 @@ public class HomunculusCreationData implements IXmlReader
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_templates.put(slotId, new HomunculusCreationTemplate(slotId, isEnabled, grade, isEvent, itemFees, hpFee, spFee, vpFee, time, chances));
|
final HomunculusCreationTemplate template = new HomunculusCreationTemplate(slotId, isEnabled, grade, isEvent, itemFees, hpFee, spFee, vpFee, time, chances);
|
||||||
|
TEMPLATES.add(template);
|
||||||
|
if (_defaultTemplate == null)
|
||||||
|
{
|
||||||
|
_defaultTemplate = template;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -153,14 +160,26 @@ public class HomunculusCreationData implements IXmlReader
|
|||||||
return chanceList;
|
return chanceList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public HomunculusCreationTemplate getTemplate(int id)
|
public HomunculusCreationTemplate getTemplateByItemId(int itemId)
|
||||||
{
|
{
|
||||||
return _templates.get(id);
|
for (HomunculusCreationTemplate template : TEMPLATES)
|
||||||
|
{
|
||||||
|
if (template.isInstanceHaveCoupon(itemId))
|
||||||
|
{
|
||||||
|
return template;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int size()
|
public HomunculusCreationTemplate getDefaultTemplate()
|
||||||
{
|
{
|
||||||
return _templates.size();
|
return _defaultTemplate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Collection<HomunculusCreationTemplate> getTemplates()
|
||||||
|
{
|
||||||
|
return TEMPLATES;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static HomunculusCreationData getInstance()
|
public static HomunculusCreationData getInstance()
|
||||||
@@ -172,4 +191,5 @@ public class HomunculusCreationData implements IXmlReader
|
|||||||
{
|
{
|
||||||
protected static final HomunculusCreationData INSTANCE = new HomunculusCreationData();
|
protected static final HomunculusCreationData INSTANCE = new HomunculusCreationData();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -31,7 +31,7 @@ import org.l2jmobius.gameserver.model.homunculus.HomunculusTemplate;
|
|||||||
*/
|
*/
|
||||||
public class HomunculusData implements IXmlReader
|
public class HomunculusData implements IXmlReader
|
||||||
{
|
{
|
||||||
private final Map<Integer, HomunculusTemplate> _templates = new HashMap<>();
|
private static final Map<Integer, HomunculusTemplate> TEMPLATES = new HashMap<>();
|
||||||
|
|
||||||
protected HomunculusData()
|
protected HomunculusData()
|
||||||
{
|
{
|
||||||
@@ -41,9 +41,9 @@ public class HomunculusData implements IXmlReader
|
|||||||
@Override
|
@Override
|
||||||
public void load()
|
public void load()
|
||||||
{
|
{
|
||||||
_templates.clear();
|
TEMPLATES.clear();
|
||||||
parseDatapackFile("data/HomunculusData.xml");
|
parseDatapackFile("data/HomunculusData.xml");
|
||||||
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _templates.size() + " templates.");
|
LOGGER.info(getClass().getSimpleName() + ": Loaded " + TEMPLATES.size() + " templates.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -53,18 +53,13 @@ public class HomunculusData implements IXmlReader
|
|||||||
{
|
{
|
||||||
final StatSet set = new StatSet(parseAttributes(homunculusNode));
|
final StatSet set = new StatSet(parseAttributes(homunculusNode));
|
||||||
final int id = set.getInt("id");
|
final int id = set.getInt("id");
|
||||||
_templates.put(id, new HomunculusTemplate(id, set.getInt("type"), set.getInt("basicSkillId"), set.getInt("basicSkillLevel"), set.getInt("skillId1"), set.getInt("skillId2"), set.getInt("skillId3"), set.getInt("skillId4"), set.getInt("skillId5"), set.getInt("hpLevel1"), set.getInt("atkLevel1"), set.getInt("defLevel1"), set.getInt("expToLevel2"), set.getInt("hpLevel2"), set.getInt("atkLevel2"), set.getInt("defLevel2"), set.getInt("expToLevel3"), set.getInt("hpLevel3"), set.getInt("atkLevel3"), set.getInt("defLevel3"), set.getInt("expToLevel4"), set.getInt("hpLevel4"), set.getInt("atkLevel4"), set.getInt("defLevel4"), set.getInt("expToLevel5"), set.getInt("hpLevel5"), set.getInt("atkLevel5"), set.getInt("defLevel5"), set.getInt("expToLevel6"), set.getInt("critRate")));
|
TEMPLATES.put(id, new HomunculusTemplate(id, set.getInt("type"), set.getInt("basicSkillId"), set.getInt("basicSkillLevel"), set.getInt("skillId1"), set.getInt("skillId2"), set.getInt("skillId3"), set.getInt("skillId4"), set.getInt("skillId5"), set.getInt("hpLevel1"), set.getInt("atkLevel1"), set.getInt("defLevel1"), set.getInt("expToLevel2"), set.getInt("hpLevel2"), set.getInt("atkLevel2"), set.getInt("defLevel2"), set.getInt("expToLevel3"), set.getInt("hpLevel3"), set.getInt("atkLevel3"), set.getInt("defLevel3"), set.getInt("expToLevel4"), set.getInt("hpLevel4"), set.getInt("atkLevel4"), set.getInt("defLevel4"), set.getInt("expToLevel5"), set.getInt("hpLevel5"), set.getInt("atkLevel5"), set.getInt("defLevel5"), set.getInt("expToLevel6"), set.getInt("critRate")));
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
public HomunculusTemplate getTemplate(int id)
|
public HomunculusTemplate getTemplate(int id)
|
||||||
{
|
{
|
||||||
return _templates.get(id);
|
return TEMPLATES.get(id);
|
||||||
}
|
|
||||||
|
|
||||||
public int size()
|
|
||||||
{
|
|
||||||
return _templates.size();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static HomunculusData getInstance()
|
public static HomunculusData getInstance()
|
||||||
|
@@ -37,7 +37,7 @@ import org.l2jmobius.gameserver.model.homunculus.HomunculusSlotTemplate;
|
|||||||
*/
|
*/
|
||||||
public class HomunculusSlotData implements IXmlReader
|
public class HomunculusSlotData implements IXmlReader
|
||||||
{
|
{
|
||||||
private final Map<Integer, HomunculusSlotTemplate> _templates = new HashMap<>();
|
private static final Map<Integer, HomunculusSlotTemplate> TEMPLATES = new HashMap<>();
|
||||||
|
|
||||||
protected HomunculusSlotData()
|
protected HomunculusSlotData()
|
||||||
{
|
{
|
||||||
@@ -47,9 +47,9 @@ public class HomunculusSlotData implements IXmlReader
|
|||||||
@Override
|
@Override
|
||||||
public void load()
|
public void load()
|
||||||
{
|
{
|
||||||
_templates.clear();
|
TEMPLATES.clear();
|
||||||
parseDatapackFile("data/HomunculusSlotData.xml");
|
parseDatapackFile("data/HomunculusSlotData.xml");
|
||||||
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _templates.size() + " templates.");
|
LOGGER.info(getClass().getSimpleName() + ": Loaded " + TEMPLATES.size() + " templates.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -74,18 +74,17 @@ public class HomunculusSlotData implements IXmlReader
|
|||||||
set.set(att.getNodeName(), att.getNodeValue());
|
set.set(att.getNodeName(), att.getNodeValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
final int slotId = set.getInt("slotId");
|
|
||||||
final Boolean isEnabled = set.getBoolean("isEnabled", false);
|
|
||||||
List<ItemHolder> fee = Collections.emptyList();
|
List<ItemHolder> fee = Collections.emptyList();
|
||||||
|
|
||||||
for (Node c = d.getFirstChild(); c != null; c = c.getNextSibling())
|
for (Node c = d.getFirstChild(); c != null; c = c.getNextSibling())
|
||||||
{
|
{
|
||||||
if ("fee".equalsIgnoreCase(c.getNodeName()))
|
if ("fee".equalsIgnoreCase(c.getNodeName()))
|
||||||
{
|
{
|
||||||
fee = getItemList(c);
|
fee = getItemList(c);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_templates.put(slotId, new HomunculusSlotTemplate(slotId, fee, isEnabled));
|
final int slotId = set.getInt("slotId");
|
||||||
|
TEMPLATES.put(slotId, new HomunculusSlotTemplate(slotId, fee, set.getBoolean("isEnabled", false)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -109,12 +108,7 @@ public class HomunculusSlotData implements IXmlReader
|
|||||||
|
|
||||||
public HomunculusSlotTemplate getTemplate(int id)
|
public HomunculusSlotTemplate getTemplate(int id)
|
||||||
{
|
{
|
||||||
return _templates.get(id);
|
return TEMPLATES.get(id);
|
||||||
}
|
|
||||||
|
|
||||||
public int size()
|
|
||||||
{
|
|
||||||
return _templates.size();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static HomunculusSlotData getInstance()
|
public static HomunculusSlotData getInstance()
|
||||||
|
@@ -130,7 +130,7 @@ public class HomunculusCreationTemplate
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getCreationLime()
|
public long getCreationTime()
|
||||||
{
|
{
|
||||||
return _time;
|
return _time;
|
||||||
}
|
}
|
||||||
|
@@ -72,18 +72,16 @@ public class RequestExHomunculusActivateSlot implements IClientIncomingPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
final List<ItemHolder> fee = template.getPrice();
|
final List<ItemHolder> fee = template.getPrice();
|
||||||
for (int i = 0; i < fee.size(); i++)
|
for (ItemHolder feeHolder : fee)
|
||||||
{
|
{
|
||||||
final ItemHolder feeHolder = fee.get(i);
|
|
||||||
if ((activeChar.getInventory().getItemByItemId(feeHolder.getId()) == null) || ((activeChar.getInventory().getItemByItemId(feeHolder.getId()) != null) && (activeChar.getInventory().getItemByItemId(feeHolder.getId()).getCount() < feeHolder.getCount())))
|
if ((activeChar.getInventory().getItemByItemId(feeHolder.getId()) == null) || ((activeChar.getInventory().getItemByItemId(feeHolder.getId()) != null) && (activeChar.getInventory().getItemByItemId(feeHolder.getId()).getCount() < feeHolder.getCount())))
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(new ExActivateHomunculusResult(false));
|
activeChar.sendPacket(new ExActivateHomunculusResult(false));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (int i = 0; i < fee.size(); i++)
|
for (ItemHolder feeHolder : fee)
|
||||||
{
|
{
|
||||||
final ItemHolder feeHolder = fee.get(i);
|
|
||||||
if (!activeChar.destroyItemByItemId("Homunclus slot unlock", feeHolder.getId(), feeHolder.getCount(), activeChar, true))
|
if (!activeChar.destroyItemByItemId("Homunclus slot unlock", feeHolder.getId(), feeHolder.getCount(), activeChar, true))
|
||||||
{
|
{
|
||||||
Logger.getLogger(getClass().getSimpleName() + " player " + activeChar.getName() + " " + activeChar.getObjectId() + " trying unlock slot without items!");
|
Logger.getLogger(getClass().getSimpleName() + " player " + activeChar.getName() + " " + activeChar.getObjectId() + " trying unlock slot without items!");
|
||||||
@@ -92,7 +90,6 @@ public class RequestExHomunculusActivateSlot implements IClientIncomingPacket
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// activeChar.sendItemList();
|
|
||||||
activeChar.broadcastUserInfo();
|
activeChar.broadcastUserInfo();
|
||||||
activeChar.getVariables().set(PlayerVariables.HOMUNCULUS_OPENED_SLOT_COUNT, _slot);
|
activeChar.getVariables().set(PlayerVariables.HOMUNCULUS_OPENED_SLOT_COUNT, _slot);
|
||||||
activeChar.sendPacket(new ExHomunculusPointInfo(activeChar));
|
activeChar.sendPacket(new ExHomunculusPointInfo(activeChar));
|
||||||
|
@@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.network.clientpackets.homunculus;
|
|||||||
import org.l2jmobius.commons.network.PacketReader;
|
import org.l2jmobius.commons.network.PacketReader;
|
||||||
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
|
||||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -32,10 +31,6 @@ import org.l2jmobius.gameserver.network.serverpackets.homunculus.ExShowHomunculu
|
|||||||
*/
|
*/
|
||||||
public class RequestExHomunculusCreateStart implements IClientIncomingPacket
|
public class RequestExHomunculusCreateStart implements IClientIncomingPacket
|
||||||
{
|
{
|
||||||
private static final HomunculusCreationTemplate TEMPLATE = HomunculusCreationData.getInstance().getTemplate(0);
|
|
||||||
private static final int COST = Math.toIntExact(TEMPLATE.getItemFee().get(0).getCount());
|
|
||||||
private static final long CREATION_TIME = TEMPLATE.getCreationLime();
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean read(GameClient client, PacketReader packet)
|
public boolean read(GameClient client, PacketReader packet)
|
||||||
{
|
{
|
||||||
@@ -51,14 +46,15 @@ public class RequestExHomunculusCreateStart implements IClientIncomingPacket
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player.getAdena() < COST)
|
final int fee = Math.toIntExact(HomunculusCreationData.getInstance().getDefaultTemplate().getItemFee().get(0).getCount());
|
||||||
|
if (player.getAdena() < fee)
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.NOT_ENOUGH_ADENA_2);
|
player.sendPacket(SystemMessageId.NOT_ENOUGH_ADENA_2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
player.reduceAdena("Homunculus creation", COST, player, true);
|
player.reduceAdena("Homunculus creation", fee, player, true);
|
||||||
player.getVariables().set(PlayerVariables.HOMUNCULUS_CREATION_TIME, System.currentTimeMillis() + CREATION_TIME);
|
player.getVariables().set(PlayerVariables.HOMUNCULUS_CREATION_TIME, System.currentTimeMillis() + HomunculusCreationData.getInstance().getDefaultTemplate().getCreationTime());
|
||||||
|
|
||||||
client.sendPacket(new ExShowHomunculusBirthInfo(player));
|
client.sendPacket(new ExShowHomunculusBirthInfo(player));
|
||||||
client.sendPacket(new ExHomunculusCreateStartResult(player));
|
client.sendPacket(new ExHomunculusCreateStartResult(player));
|
||||||
|
@@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.network.clientpackets.homunculus;
|
|||||||
import org.l2jmobius.commons.network.PacketReader;
|
import org.l2jmobius.commons.network.PacketReader;
|
||||||
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
|
||||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
|
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
|
||||||
@@ -32,11 +31,6 @@ import org.l2jmobius.gameserver.network.serverpackets.homunculus.ExShowHomunculu
|
|||||||
*/
|
*/
|
||||||
public class RequestExHomunculusInsert implements IClientIncomingPacket
|
public class RequestExHomunculusInsert implements IClientIncomingPacket
|
||||||
{
|
{
|
||||||
private static final HomunculusCreationTemplate TEMPLATE = HomunculusCreationData.getInstance().getTemplate(0);
|
|
||||||
private static final short HP_COST = (short) TEMPLATE.getHPFeeCountByUse();
|
|
||||||
private static final long SP_COST = TEMPLATE.getSPFeeCountByUse();
|
|
||||||
private static final int VP_COST = TEMPLATE.getVPFeeByUse();
|
|
||||||
|
|
||||||
private int _type;
|
private int _type;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -61,9 +55,9 @@ public class RequestExHomunculusInsert implements IClientIncomingPacket
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
{
|
{
|
||||||
if ((player.getCurrentHp() > HP_COST) && (hpPoints < TEMPLATE.getHPFeeCount()))
|
if ((player.getCurrentHp() > HomunculusCreationData.getInstance().getDefaultTemplate().getHPFeeCountByUse()) && (hpPoints < HomunculusCreationData.getInstance().getDefaultTemplate().getHPFeeCount()))
|
||||||
{
|
{
|
||||||
int newHp = (int) (player.getCurrentHp()) - HP_COST;
|
int newHp = (int) (player.getCurrentHp()) - HomunculusCreationData.getInstance().getDefaultTemplate().getHPFeeCountByUse();
|
||||||
player.setCurrentHp(newHp, true);
|
player.setCurrentHp(newHp, true);
|
||||||
hpPoints += 1;
|
hpPoints += 1;
|
||||||
player.getVariables().set(PlayerVariables.HOMUNCULUS_HP_POINTS, hpPoints);
|
player.getVariables().set(PlayerVariables.HOMUNCULUS_HP_POINTS, hpPoints);
|
||||||
@@ -76,9 +70,9 @@ public class RequestExHomunculusInsert implements IClientIncomingPacket
|
|||||||
}
|
}
|
||||||
case 1:
|
case 1:
|
||||||
{
|
{
|
||||||
if ((player.getSp() >= SP_COST) && (spPoints < TEMPLATE.getSPFeeCount()))
|
if ((player.getSp() >= HomunculusCreationData.getInstance().getDefaultTemplate().getSPFeeCountByUse()) && (spPoints < HomunculusCreationData.getInstance().getDefaultTemplate().getSPFeeCount()))
|
||||||
{
|
{
|
||||||
player.setSp(player.getSp() - SP_COST);
|
player.setSp(player.getSp() - HomunculusCreationData.getInstance().getDefaultTemplate().getSPFeeCountByUse());
|
||||||
spPoints += 1;
|
spPoints += 1;
|
||||||
player.getVariables().set(PlayerVariables.HOMUNCULUS_SP_POINTS, spPoints);
|
player.getVariables().set(PlayerVariables.HOMUNCULUS_SP_POINTS, spPoints);
|
||||||
}
|
}
|
||||||
@@ -90,9 +84,9 @@ public class RequestExHomunculusInsert implements IClientIncomingPacket
|
|||||||
}
|
}
|
||||||
case 2:
|
case 2:
|
||||||
{
|
{
|
||||||
if ((player.getVitalityPoints() >= VP_COST) && (vpPoints < TEMPLATE.getVPFeeCount()))
|
if ((player.getVitalityPoints() >= HomunculusCreationData.getInstance().getDefaultTemplate().getVPFeeByUse()) && (vpPoints < HomunculusCreationData.getInstance().getDefaultTemplate().getVPFeeCount()))
|
||||||
{
|
{
|
||||||
int newVitality = player.getVitalityPoints() - VP_COST;
|
int newVitality = player.getVitalityPoints() - HomunculusCreationData.getInstance().getDefaultTemplate().getVPFeeByUse();
|
||||||
player.setVitalityPoints(newVitality, true);
|
player.setVitalityPoints(newVitality, true);
|
||||||
vpPoints += 1;
|
vpPoints += 1;
|
||||||
player.getVariables().set(PlayerVariables.HOMUNCULUS_VP_POINTS, vpPoints);
|
player.getVariables().set(PlayerVariables.HOMUNCULUS_VP_POINTS, vpPoints);
|
||||||
|
@@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
|||||||
import org.l2jmobius.gameserver.data.xml.HomunculusData;
|
import org.l2jmobius.gameserver.data.xml.HomunculusData;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.Homunculus;
|
import org.l2jmobius.gameserver.model.homunculus.Homunculus;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusTemplate;
|
import org.l2jmobius.gameserver.model.homunculus.HomunculusTemplate;
|
||||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
@@ -37,8 +36,6 @@ import org.l2jmobius.gameserver.network.serverpackets.homunculus.ExShowHomunculu
|
|||||||
*/
|
*/
|
||||||
public class RequestExHomunculusSummon implements IClientIncomingPacket
|
public class RequestExHomunculusSummon implements IClientIncomingPacket
|
||||||
{
|
{
|
||||||
private static final HomunculusCreationTemplate TEMPLATE = HomunculusCreationData.getInstance().getTemplate(0);
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean read(GameClient client, PacketReader packet)
|
public boolean read(GameClient client, PacketReader packet)
|
||||||
{
|
{
|
||||||
@@ -60,22 +57,21 @@ public class RequestExHomunculusSummon implements IClientIncomingPacket
|
|||||||
final int vpPoints = player.getVariables().getInt(PlayerVariables.HOMUNCULUS_VP_POINTS, 0);
|
final int vpPoints = player.getVariables().getInt(PlayerVariables.HOMUNCULUS_VP_POINTS, 0);
|
||||||
final int homunculusCreateTime = (int) (player.getVariables().getLong(PlayerVariables.HOMUNCULUS_CREATION_TIME, 0) / 1000);
|
final int homunculusCreateTime = (int) (player.getVariables().getLong(PlayerVariables.HOMUNCULUS_CREATION_TIME, 0) / 1000);
|
||||||
|
|
||||||
if ((homunculusCreateTime > 0) && ((System.currentTimeMillis() / 1000) >= homunculusCreateTime) && (hpPoints == TEMPLATE.getHPFeeCount()) && (spPoints == TEMPLATE.getSPFeeCount()) && (vpPoints == TEMPLATE.getVPFeeCount()))
|
if ((homunculusCreateTime > 0) && ((System.currentTimeMillis() / 1000) >= homunculusCreateTime) && (hpPoints == HomunculusCreationData.getInstance().getDefaultTemplate().getHPFeeCount()) && (spPoints == HomunculusCreationData.getInstance().getDefaultTemplate().getSPFeeCount()) && (vpPoints == HomunculusCreationData.getInstance().getDefaultTemplate().getVPFeeCount()))
|
||||||
{
|
{
|
||||||
double chance = Rnd.get(100.0);
|
double chance = Rnd.get(100.0);
|
||||||
double current = 0;
|
double current = 0;
|
||||||
int homunculusId = 0;
|
int homunculusId = 0;
|
||||||
while (homunculusId == 0)
|
while (homunculusId == 0)
|
||||||
{
|
{
|
||||||
if (chance > TEMPLATE.getMaxChance())
|
if (chance > HomunculusCreationData.getInstance().getDefaultTemplate().getMaxChance())
|
||||||
{
|
{
|
||||||
player.sendMessage("Homunculus is not created!");
|
player.sendMessage("Homunculus is not created!");
|
||||||
player.sendPacket(new ExHomunculusSummonResult(0));
|
player.sendPacket(new ExHomunculusSummonResult(0));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < TEMPLATE.getCreationChance().size(); i++)
|
for (Double[] homuHolder : HomunculusCreationData.getInstance().getDefaultTemplate().getCreationChance())
|
||||||
{
|
{
|
||||||
final Double[] homuHolder = TEMPLATE.getCreationChance().get(i);
|
|
||||||
current += homuHolder[1];
|
current += homuHolder[1];
|
||||||
if (current >= chance)
|
if (current >= chance)
|
||||||
{
|
{
|
||||||
|
@@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
|||||||
import org.l2jmobius.gameserver.model.homunculus.Homunculus;
|
import org.l2jmobius.gameserver.model.homunculus.Homunculus;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusTemplate;
|
import org.l2jmobius.gameserver.model.homunculus.HomunculusTemplate;
|
||||||
|
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
import org.l2jmobius.gameserver.network.PacketLogger;
|
import org.l2jmobius.gameserver.network.PacketLogger;
|
||||||
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
|
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
|
||||||
@@ -37,12 +38,12 @@ import org.l2jmobius.gameserver.network.serverpackets.homunculus.ExSummonHomuncu
|
|||||||
*/
|
*/
|
||||||
public class RequestExSummonHomunculusCouponResult implements IClientIncomingPacket
|
public class RequestExSummonHomunculusCouponResult implements IClientIncomingPacket
|
||||||
{
|
{
|
||||||
private int _item_id;
|
private int _itemId;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean read(GameClient client, PacketReader packet)
|
public boolean read(GameClient client, PacketReader packet)
|
||||||
{
|
{
|
||||||
_item_id = packet.readD();
|
_itemId = packet.readD();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,35 +62,28 @@ public class RequestExSummonHomunculusCouponResult implements IClientIncomingPac
|
|||||||
PacketLogger.info("Player " + player.getObjectId() + " " + player.getName() + ", trying create homunculus withouts avaible slots!");
|
PacketLogger.info("Player " + player.getObjectId() + " " + player.getName() + ", trying create homunculus withouts avaible slots!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
HomunculusCreationTemplate creationTemplate = null;
|
|
||||||
for (int i = 1; i < HomunculusCreationData.getInstance().size(); i++)
|
final HomunculusCreationTemplate creationTemplate = HomunculusCreationData.getInstance().getTemplateByItemId(_itemId);
|
||||||
{
|
if ((creationTemplate == null) || creationTemplate.getItemFee().isEmpty())
|
||||||
if (HomunculusCreationData.getInstance().getTemplate(i).isInstanceHaveCoupon(_item_id))
|
|
||||||
{
|
|
||||||
creationTemplate = HomunculusCreationData.getInstance().getTemplate(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((creationTemplate == null) || (creationTemplate.getItemFee().size() == 0))
|
|
||||||
{
|
{
|
||||||
PacketLogger.info("Player " + player.getObjectId() + " " + player.getName() + ", trying create homunculus with not existing coupon!");
|
PacketLogger.info("Player " + player.getObjectId() + " " + player.getName() + ", trying create homunculus with not existing coupon!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Take items.
|
// Take items.
|
||||||
for (int i = 0; i < creationTemplate.getItemFee().size(); i++)
|
for (ItemHolder itemHolder : creationTemplate.getItemFee())
|
||||||
{
|
{
|
||||||
final ItemHolder humu = creationTemplate.getItemFee().get(i);
|
final Item item = player.getInventory().getItemByItemId(itemHolder.getId());
|
||||||
if (player.getInventory().getItemByItemId(humu.getId()).getCount() < humu.getCount())
|
if ((item == null) || (item.getCount() < itemHolder.getCount()))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (int i = 0; i < creationTemplate.getItemFee().size(); i++)
|
for (ItemHolder itemHolder : creationTemplate.getItemFee())
|
||||||
{
|
{
|
||||||
final ItemHolder humu = creationTemplate.getItemFee().get(i);
|
if (!player.destroyItemByItemId("Homunculus Coupon Creation", itemHolder.getId(), itemHolder.getCount(), player, true))
|
||||||
if (!player.destroyItemByItemId("Homunculus Coupon Creation", humu.getId(), humu.getCount(), player, true))
|
|
||||||
{
|
{
|
||||||
PacketLogger.info("Player " + player.getObjectId() + " " + player.getName() + ", trying create homunculus without " + humu + "!");
|
PacketLogger.info("Player " + player.getObjectId() + " " + player.getName() + ", trying create homunculus without " + itemHolder + "!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -105,9 +99,8 @@ public class RequestExSummonHomunculusCouponResult implements IClientIncomingPac
|
|||||||
player.sendPacket(new ExSummonHomunculusCouponResult(0, 0));
|
player.sendPacket(new ExSummonHomunculusCouponResult(0, 0));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < creationTemplate.getCreationChance().size(); i++)
|
for (Double[] homuHolder : creationTemplate.getCreationChance())
|
||||||
{
|
{
|
||||||
final Double[] homuHolder = creationTemplate.getCreationChance().get(i);
|
|
||||||
current += homuHolder[1];
|
current += homuHolder[1];
|
||||||
if (current >= chance)
|
if (current >= chance)
|
||||||
{
|
{
|
||||||
|
@@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.network.serverpackets.homunculus;
|
|||||||
import org.l2jmobius.commons.network.PacketWriter;
|
import org.l2jmobius.commons.network.PacketWriter;
|
||||||
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
|
||||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||||
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
||||||
@@ -29,8 +28,6 @@ import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
|||||||
*/
|
*/
|
||||||
public class ExShowHomunculusBirthInfo implements IClientOutgoingPacket
|
public class ExShowHomunculusBirthInfo implements IClientOutgoingPacket
|
||||||
{
|
{
|
||||||
private static final HomunculusCreationTemplate TEMPLATE = HomunculusCreationData.getInstance().getTemplate(0);
|
|
||||||
|
|
||||||
private final int _hpPoints;
|
private final int _hpPoints;
|
||||||
private final int _spPoints;
|
private final int _spPoints;
|
||||||
private final int _vpPoints;
|
private final int _vpPoints;
|
||||||
@@ -45,9 +42,9 @@ public class ExShowHomunculusBirthInfo implements IClientOutgoingPacket
|
|||||||
_spPoints = player.getVariables().getInt(PlayerVariables.HOMUNCULUS_SP_POINTS, 0);
|
_spPoints = player.getVariables().getInt(PlayerVariables.HOMUNCULUS_SP_POINTS, 0);
|
||||||
_vpPoints = player.getVariables().getInt(PlayerVariables.HOMUNCULUS_VP_POINTS, 0);
|
_vpPoints = player.getVariables().getInt(PlayerVariables.HOMUNCULUS_VP_POINTS, 0);
|
||||||
_homunculusCreateTime = (int) (player.getVariables().getLong(PlayerVariables.HOMUNCULUS_CREATION_TIME, 0) / 1000);
|
_homunculusCreateTime = (int) (player.getVariables().getLong(PlayerVariables.HOMUNCULUS_CREATION_TIME, 0) / 1000);
|
||||||
_feeHpPoints = TEMPLATE.getHPFeeCount();
|
_feeHpPoints = HomunculusCreationData.getInstance().getDefaultTemplate().getHPFeeCount();
|
||||||
_feeSpPoints = (int) TEMPLATE.getSPFeeCount();
|
_feeSpPoints = (int) HomunculusCreationData.getInstance().getDefaultTemplate().getSPFeeCount();
|
||||||
_feeVpPoints = TEMPLATE.getVPFeeCount();
|
_feeVpPoints = HomunculusCreationData.getInstance().getDefaultTemplate().getVPFeeCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -18,10 +18,9 @@ package org.l2jmobius.gameserver.data.xml;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.w3c.dom.Document;
|
import org.w3c.dom.Document;
|
||||||
import org.w3c.dom.NamedNodeMap;
|
import org.w3c.dom.NamedNodeMap;
|
||||||
@@ -37,7 +36,9 @@ import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
|||||||
*/
|
*/
|
||||||
public class HomunculusCreationData implements IXmlReader
|
public class HomunculusCreationData implements IXmlReader
|
||||||
{
|
{
|
||||||
private final Map<Integer, HomunculusCreationTemplate> _templates = new HashMap<>();
|
private static final List<HomunculusCreationTemplate> TEMPLATES = new ArrayList<>();
|
||||||
|
|
||||||
|
private HomunculusCreationTemplate _defaultTemplate;
|
||||||
|
|
||||||
protected HomunculusCreationData()
|
protected HomunculusCreationData()
|
||||||
{
|
{
|
||||||
@@ -47,9 +48,10 @@ public class HomunculusCreationData implements IXmlReader
|
|||||||
@Override
|
@Override
|
||||||
public void load()
|
public void load()
|
||||||
{
|
{
|
||||||
_templates.clear();
|
TEMPLATES.clear();
|
||||||
|
_defaultTemplate = null;
|
||||||
parseDatapackFile("data/HomunculusCreationData.xml");
|
parseDatapackFile("data/HomunculusCreationData.xml");
|
||||||
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _templates.size() + " templates.");
|
LOGGER.info(getClass().getSimpleName() + ": Loaded " + TEMPLATES.size() + " templates.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -115,7 +117,12 @@ public class HomunculusCreationData implements IXmlReader
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_templates.put(slotId, new HomunculusCreationTemplate(slotId, isEnabled, grade, isEvent, itemFees, hpFee, spFee, vpFee, time, chances));
|
final HomunculusCreationTemplate template = new HomunculusCreationTemplate(slotId, isEnabled, grade, isEvent, itemFees, hpFee, spFee, vpFee, time, chances);
|
||||||
|
TEMPLATES.add(template);
|
||||||
|
if (_defaultTemplate == null)
|
||||||
|
{
|
||||||
|
_defaultTemplate = template;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -153,14 +160,26 @@ public class HomunculusCreationData implements IXmlReader
|
|||||||
return chanceList;
|
return chanceList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public HomunculusCreationTemplate getTemplate(int id)
|
public HomunculusCreationTemplate getTemplateByItemId(int itemId)
|
||||||
{
|
{
|
||||||
return _templates.get(id);
|
for (HomunculusCreationTemplate template : TEMPLATES)
|
||||||
|
{
|
||||||
|
if (template.isInstanceHaveCoupon(itemId))
|
||||||
|
{
|
||||||
|
return template;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int size()
|
public HomunculusCreationTemplate getDefaultTemplate()
|
||||||
{
|
{
|
||||||
return _templates.size();
|
return _defaultTemplate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Collection<HomunculusCreationTemplate> getTemplates()
|
||||||
|
{
|
||||||
|
return TEMPLATES;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static HomunculusCreationData getInstance()
|
public static HomunculusCreationData getInstance()
|
||||||
@@ -172,4 +191,5 @@ public class HomunculusCreationData implements IXmlReader
|
|||||||
{
|
{
|
||||||
protected static final HomunculusCreationData INSTANCE = new HomunculusCreationData();
|
protected static final HomunculusCreationData INSTANCE = new HomunculusCreationData();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -31,7 +31,7 @@ import org.l2jmobius.gameserver.model.homunculus.HomunculusTemplate;
|
|||||||
*/
|
*/
|
||||||
public class HomunculusData implements IXmlReader
|
public class HomunculusData implements IXmlReader
|
||||||
{
|
{
|
||||||
private final Map<Integer, HomunculusTemplate> _templates = new HashMap<>();
|
private static final Map<Integer, HomunculusTemplate> TEMPLATES = new HashMap<>();
|
||||||
|
|
||||||
protected HomunculusData()
|
protected HomunculusData()
|
||||||
{
|
{
|
||||||
@@ -41,9 +41,9 @@ public class HomunculusData implements IXmlReader
|
|||||||
@Override
|
@Override
|
||||||
public void load()
|
public void load()
|
||||||
{
|
{
|
||||||
_templates.clear();
|
TEMPLATES.clear();
|
||||||
parseDatapackFile("data/HomunculusData.xml");
|
parseDatapackFile("data/HomunculusData.xml");
|
||||||
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _templates.size() + " templates.");
|
LOGGER.info(getClass().getSimpleName() + ": Loaded " + TEMPLATES.size() + " templates.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -53,18 +53,13 @@ public class HomunculusData implements IXmlReader
|
|||||||
{
|
{
|
||||||
final StatSet set = new StatSet(parseAttributes(homunculusNode));
|
final StatSet set = new StatSet(parseAttributes(homunculusNode));
|
||||||
final int id = set.getInt("id");
|
final int id = set.getInt("id");
|
||||||
_templates.put(id, new HomunculusTemplate(id, set.getInt("type"), set.getInt("basicSkillId"), set.getInt("basicSkillLevel"), set.getInt("skillId1"), set.getInt("skillId2"), set.getInt("skillId3"), set.getInt("skillId4"), set.getInt("skillId5"), set.getInt("hpLevel1"), set.getInt("atkLevel1"), set.getInt("defLevel1"), set.getInt("expToLevel2"), set.getInt("hpLevel2"), set.getInt("atkLevel2"), set.getInt("defLevel2"), set.getInt("expToLevel3"), set.getInt("hpLevel3"), set.getInt("atkLevel3"), set.getInt("defLevel3"), set.getInt("expToLevel4"), set.getInt("hpLevel4"), set.getInt("atkLevel4"), set.getInt("defLevel4"), set.getInt("expToLevel5"), set.getInt("hpLevel5"), set.getInt("atkLevel5"), set.getInt("defLevel5"), set.getInt("expToLevel6"), set.getInt("critRate")));
|
TEMPLATES.put(id, new HomunculusTemplate(id, set.getInt("type"), set.getInt("basicSkillId"), set.getInt("basicSkillLevel"), set.getInt("skillId1"), set.getInt("skillId2"), set.getInt("skillId3"), set.getInt("skillId4"), set.getInt("skillId5"), set.getInt("hpLevel1"), set.getInt("atkLevel1"), set.getInt("defLevel1"), set.getInt("expToLevel2"), set.getInt("hpLevel2"), set.getInt("atkLevel2"), set.getInt("defLevel2"), set.getInt("expToLevel3"), set.getInt("hpLevel3"), set.getInt("atkLevel3"), set.getInt("defLevel3"), set.getInt("expToLevel4"), set.getInt("hpLevel4"), set.getInt("atkLevel4"), set.getInt("defLevel4"), set.getInt("expToLevel5"), set.getInt("hpLevel5"), set.getInt("atkLevel5"), set.getInt("defLevel5"), set.getInt("expToLevel6"), set.getInt("critRate")));
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
public HomunculusTemplate getTemplate(int id)
|
public HomunculusTemplate getTemplate(int id)
|
||||||
{
|
{
|
||||||
return _templates.get(id);
|
return TEMPLATES.get(id);
|
||||||
}
|
|
||||||
|
|
||||||
public int size()
|
|
||||||
{
|
|
||||||
return _templates.size();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static HomunculusData getInstance()
|
public static HomunculusData getInstance()
|
||||||
|
@@ -37,7 +37,7 @@ import org.l2jmobius.gameserver.model.homunculus.HomunculusSlotTemplate;
|
|||||||
*/
|
*/
|
||||||
public class HomunculusSlotData implements IXmlReader
|
public class HomunculusSlotData implements IXmlReader
|
||||||
{
|
{
|
||||||
private final Map<Integer, HomunculusSlotTemplate> _templates = new HashMap<>();
|
private static final Map<Integer, HomunculusSlotTemplate> TEMPLATES = new HashMap<>();
|
||||||
|
|
||||||
protected HomunculusSlotData()
|
protected HomunculusSlotData()
|
||||||
{
|
{
|
||||||
@@ -47,9 +47,9 @@ public class HomunculusSlotData implements IXmlReader
|
|||||||
@Override
|
@Override
|
||||||
public void load()
|
public void load()
|
||||||
{
|
{
|
||||||
_templates.clear();
|
TEMPLATES.clear();
|
||||||
parseDatapackFile("data/HomunculusSlotData.xml");
|
parseDatapackFile("data/HomunculusSlotData.xml");
|
||||||
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _templates.size() + " templates.");
|
LOGGER.info(getClass().getSimpleName() + ": Loaded " + TEMPLATES.size() + " templates.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -74,18 +74,17 @@ public class HomunculusSlotData implements IXmlReader
|
|||||||
set.set(att.getNodeName(), att.getNodeValue());
|
set.set(att.getNodeName(), att.getNodeValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
final int slotId = set.getInt("slotId");
|
|
||||||
final Boolean isEnabled = set.getBoolean("isEnabled", false);
|
|
||||||
List<ItemHolder> fee = Collections.emptyList();
|
List<ItemHolder> fee = Collections.emptyList();
|
||||||
|
|
||||||
for (Node c = d.getFirstChild(); c != null; c = c.getNextSibling())
|
for (Node c = d.getFirstChild(); c != null; c = c.getNextSibling())
|
||||||
{
|
{
|
||||||
if ("fee".equalsIgnoreCase(c.getNodeName()))
|
if ("fee".equalsIgnoreCase(c.getNodeName()))
|
||||||
{
|
{
|
||||||
fee = getItemList(c);
|
fee = getItemList(c);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_templates.put(slotId, new HomunculusSlotTemplate(slotId, fee, isEnabled));
|
final int slotId = set.getInt("slotId");
|
||||||
|
TEMPLATES.put(slotId, new HomunculusSlotTemplate(slotId, fee, set.getBoolean("isEnabled", false)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -109,12 +108,7 @@ public class HomunculusSlotData implements IXmlReader
|
|||||||
|
|
||||||
public HomunculusSlotTemplate getTemplate(int id)
|
public HomunculusSlotTemplate getTemplate(int id)
|
||||||
{
|
{
|
||||||
return _templates.get(id);
|
return TEMPLATES.get(id);
|
||||||
}
|
|
||||||
|
|
||||||
public int size()
|
|
||||||
{
|
|
||||||
return _templates.size();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static HomunculusSlotData getInstance()
|
public static HomunculusSlotData getInstance()
|
||||||
|
@@ -130,7 +130,7 @@ public class HomunculusCreationTemplate
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getCreationLime()
|
public long getCreationTime()
|
||||||
{
|
{
|
||||||
return _time;
|
return _time;
|
||||||
}
|
}
|
||||||
|
@@ -46,28 +46,19 @@ public class ExHomunculusCouponProbabilityList implements IClientOutgoingPacket
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
HomunculusCreationTemplate creationTemplate = null;
|
final HomunculusCreationTemplate creationTemplate = HomunculusCreationData.getInstance().getTemplateByItemId(_couponId);
|
||||||
for (int i = 1; i < HomunculusCreationData.getInstance().size(); i++)
|
|
||||||
{
|
|
||||||
if (HomunculusCreationData.getInstance().getTemplate(i).isInstanceHaveCoupon(_couponId))
|
|
||||||
{
|
|
||||||
creationTemplate = HomunculusCreationData.getInstance().getTemplate(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (creationTemplate == null)
|
if (creationTemplate == null)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
OutgoingPackets.EX_HOMUNCULUS_COUPON_PROB_LIST.writeId(packet);
|
OutgoingPackets.EX_HOMUNCULUS_COUPON_PROB_LIST.writeId(packet);
|
||||||
final int size = creationTemplate.getCreationChance().size();
|
|
||||||
packet.writeD(_couponId);
|
packet.writeD(_couponId);
|
||||||
packet.writeD(size);
|
packet.writeD(creationTemplate.getCreationChance().size());
|
||||||
for (int type = 0; type < 3; type++)
|
for (int type = 0; type < 3; type++)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < size; i++)
|
for (Double[] homunculusChance : creationTemplate.getCreationChance())
|
||||||
{
|
{
|
||||||
final Double[] homunculusChance = creationTemplate.getCreationChance().get(i);
|
|
||||||
if (HomunculusData.getInstance().getTemplate(homunculusChance[0].intValue()).getType() == type)
|
if (HomunculusData.getInstance().getTemplate(homunculusChance[0].intValue()).getType() == type)
|
||||||
{
|
{
|
||||||
packet.writeD(homunculusChance[0].intValue());
|
packet.writeD(homunculusChance[0].intValue());
|
||||||
|
@@ -72,18 +72,16 @@ public class RequestExHomunculusActivateSlot implements IClientIncomingPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
final List<ItemHolder> fee = template.getPrice();
|
final List<ItemHolder> fee = template.getPrice();
|
||||||
for (int i = 0; i < fee.size(); i++)
|
for (ItemHolder feeHolder : fee)
|
||||||
{
|
{
|
||||||
final ItemHolder feeHolder = fee.get(i);
|
|
||||||
if ((activeChar.getInventory().getItemByItemId(feeHolder.getId()) == null) || ((activeChar.getInventory().getItemByItemId(feeHolder.getId()) != null) && (activeChar.getInventory().getItemByItemId(feeHolder.getId()).getCount() < feeHolder.getCount())))
|
if ((activeChar.getInventory().getItemByItemId(feeHolder.getId()) == null) || ((activeChar.getInventory().getItemByItemId(feeHolder.getId()) != null) && (activeChar.getInventory().getItemByItemId(feeHolder.getId()).getCount() < feeHolder.getCount())))
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(new ExActivateHomunculusResult(false));
|
activeChar.sendPacket(new ExActivateHomunculusResult(false));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (int i = 0; i < fee.size(); i++)
|
for (ItemHolder feeHolder : fee)
|
||||||
{
|
{
|
||||||
final ItemHolder feeHolder = fee.get(i);
|
|
||||||
if (!activeChar.destroyItemByItemId("Homunclus slot unlock", feeHolder.getId(), feeHolder.getCount(), activeChar, true))
|
if (!activeChar.destroyItemByItemId("Homunclus slot unlock", feeHolder.getId(), feeHolder.getCount(), activeChar, true))
|
||||||
{
|
{
|
||||||
Logger.getLogger(getClass().getSimpleName() + " player " + activeChar.getName() + " " + activeChar.getObjectId() + " trying unlock slot without items!");
|
Logger.getLogger(getClass().getSimpleName() + " player " + activeChar.getName() + " " + activeChar.getObjectId() + " trying unlock slot without items!");
|
||||||
@@ -92,7 +90,6 @@ public class RequestExHomunculusActivateSlot implements IClientIncomingPacket
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// activeChar.sendItemList();
|
|
||||||
activeChar.broadcastUserInfo();
|
activeChar.broadcastUserInfo();
|
||||||
activeChar.getVariables().set(PlayerVariables.HOMUNCULUS_OPENED_SLOT_COUNT, _slot);
|
activeChar.getVariables().set(PlayerVariables.HOMUNCULUS_OPENED_SLOT_COUNT, _slot);
|
||||||
activeChar.sendPacket(new ExHomunculusPointInfo(activeChar));
|
activeChar.sendPacket(new ExHomunculusPointInfo(activeChar));
|
||||||
|
@@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.network.clientpackets.homunculus;
|
|||||||
import org.l2jmobius.commons.network.PacketReader;
|
import org.l2jmobius.commons.network.PacketReader;
|
||||||
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
|
||||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -32,10 +31,6 @@ import org.l2jmobius.gameserver.network.serverpackets.homunculus.ExShowHomunculu
|
|||||||
*/
|
*/
|
||||||
public class RequestExHomunculusCreateStart implements IClientIncomingPacket
|
public class RequestExHomunculusCreateStart implements IClientIncomingPacket
|
||||||
{
|
{
|
||||||
private static final HomunculusCreationTemplate TEMPLATE = HomunculusCreationData.getInstance().getTemplate(0);
|
|
||||||
private static final int COST = Math.toIntExact(TEMPLATE.getItemFee().get(0).getCount());
|
|
||||||
private static final long CREATION_TIME = TEMPLATE.getCreationLime();
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean read(GameClient client, PacketReader packet)
|
public boolean read(GameClient client, PacketReader packet)
|
||||||
{
|
{
|
||||||
@@ -51,14 +46,15 @@ public class RequestExHomunculusCreateStart implements IClientIncomingPacket
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player.getAdena() < COST)
|
final int fee = Math.toIntExact(HomunculusCreationData.getInstance().getDefaultTemplate().getItemFee().get(0).getCount());
|
||||||
|
if (player.getAdena() < fee)
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.NOT_ENOUGH_ADENA_2);
|
player.sendPacket(SystemMessageId.NOT_ENOUGH_ADENA_2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
player.reduceAdena("Homunculus creation", COST, player, true);
|
player.reduceAdena("Homunculus creation", fee, player, true);
|
||||||
player.getVariables().set(PlayerVariables.HOMUNCULUS_CREATION_TIME, System.currentTimeMillis() + CREATION_TIME);
|
player.getVariables().set(PlayerVariables.HOMUNCULUS_CREATION_TIME, System.currentTimeMillis() + HomunculusCreationData.getInstance().getDefaultTemplate().getCreationTime());
|
||||||
|
|
||||||
client.sendPacket(new ExShowHomunculusBirthInfo(player));
|
client.sendPacket(new ExShowHomunculusBirthInfo(player));
|
||||||
client.sendPacket(new ExHomunculusCreateStartResult(player));
|
client.sendPacket(new ExHomunculusCreateStartResult(player));
|
||||||
|
@@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.network.clientpackets.homunculus;
|
|||||||
import org.l2jmobius.commons.network.PacketReader;
|
import org.l2jmobius.commons.network.PacketReader;
|
||||||
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
|
||||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
|
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
|
||||||
@@ -32,11 +31,6 @@ import org.l2jmobius.gameserver.network.serverpackets.homunculus.ExShowHomunculu
|
|||||||
*/
|
*/
|
||||||
public class RequestExHomunculusInsert implements IClientIncomingPacket
|
public class RequestExHomunculusInsert implements IClientIncomingPacket
|
||||||
{
|
{
|
||||||
private static final HomunculusCreationTemplate TEMPLATE = HomunculusCreationData.getInstance().getTemplate(0);
|
|
||||||
private static final short HP_COST = (short) TEMPLATE.getHPFeeCountByUse();
|
|
||||||
private static final long SP_COST = TEMPLATE.getSPFeeCountByUse();
|
|
||||||
private static final int VP_COST = TEMPLATE.getVPFeeByUse();
|
|
||||||
|
|
||||||
private int _type;
|
private int _type;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -61,9 +55,9 @@ public class RequestExHomunculusInsert implements IClientIncomingPacket
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
{
|
{
|
||||||
if ((player.getCurrentHp() > HP_COST) && (hpPoints < TEMPLATE.getHPFeeCount()))
|
if ((player.getCurrentHp() > HomunculusCreationData.getInstance().getDefaultTemplate().getHPFeeCountByUse()) && (hpPoints < HomunculusCreationData.getInstance().getDefaultTemplate().getHPFeeCount()))
|
||||||
{
|
{
|
||||||
int newHp = (int) (player.getCurrentHp()) - HP_COST;
|
int newHp = (int) (player.getCurrentHp()) - HomunculusCreationData.getInstance().getDefaultTemplate().getHPFeeCountByUse();
|
||||||
player.setCurrentHp(newHp, true);
|
player.setCurrentHp(newHp, true);
|
||||||
hpPoints += 1;
|
hpPoints += 1;
|
||||||
player.getVariables().set(PlayerVariables.HOMUNCULUS_HP_POINTS, hpPoints);
|
player.getVariables().set(PlayerVariables.HOMUNCULUS_HP_POINTS, hpPoints);
|
||||||
@@ -76,9 +70,9 @@ public class RequestExHomunculusInsert implements IClientIncomingPacket
|
|||||||
}
|
}
|
||||||
case 1:
|
case 1:
|
||||||
{
|
{
|
||||||
if ((player.getSp() >= SP_COST) && (spPoints < TEMPLATE.getSPFeeCount()))
|
if ((player.getSp() >= HomunculusCreationData.getInstance().getDefaultTemplate().getSPFeeCountByUse()) && (spPoints < HomunculusCreationData.getInstance().getDefaultTemplate().getSPFeeCount()))
|
||||||
{
|
{
|
||||||
player.setSp(player.getSp() - SP_COST);
|
player.setSp(player.getSp() - HomunculusCreationData.getInstance().getDefaultTemplate().getSPFeeCountByUse());
|
||||||
spPoints += 1;
|
spPoints += 1;
|
||||||
player.getVariables().set(PlayerVariables.HOMUNCULUS_SP_POINTS, spPoints);
|
player.getVariables().set(PlayerVariables.HOMUNCULUS_SP_POINTS, spPoints);
|
||||||
}
|
}
|
||||||
@@ -90,9 +84,9 @@ public class RequestExHomunculusInsert implements IClientIncomingPacket
|
|||||||
}
|
}
|
||||||
case 2:
|
case 2:
|
||||||
{
|
{
|
||||||
if ((player.getVitalityPoints() >= VP_COST) && (vpPoints < TEMPLATE.getVPFeeCount()))
|
if ((player.getVitalityPoints() >= HomunculusCreationData.getInstance().getDefaultTemplate().getVPFeeByUse()) && (vpPoints < HomunculusCreationData.getInstance().getDefaultTemplate().getVPFeeCount()))
|
||||||
{
|
{
|
||||||
int newVitality = player.getVitalityPoints() - VP_COST;
|
int newVitality = player.getVitalityPoints() - HomunculusCreationData.getInstance().getDefaultTemplate().getVPFeeByUse();
|
||||||
player.setVitalityPoints(newVitality, true);
|
player.setVitalityPoints(newVitality, true);
|
||||||
vpPoints += 1;
|
vpPoints += 1;
|
||||||
player.getVariables().set(PlayerVariables.HOMUNCULUS_VP_POINTS, vpPoints);
|
player.getVariables().set(PlayerVariables.HOMUNCULUS_VP_POINTS, vpPoints);
|
||||||
|
@@ -22,7 +22,6 @@ import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
|||||||
import org.l2jmobius.gameserver.data.xml.HomunculusData;
|
import org.l2jmobius.gameserver.data.xml.HomunculusData;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.Homunculus;
|
import org.l2jmobius.gameserver.model.homunculus.Homunculus;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusTemplate;
|
import org.l2jmobius.gameserver.model.homunculus.HomunculusTemplate;
|
||||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
@@ -37,8 +36,6 @@ import org.l2jmobius.gameserver.network.serverpackets.homunculus.ExShowHomunculu
|
|||||||
*/
|
*/
|
||||||
public class RequestExHomunculusSummon implements IClientIncomingPacket
|
public class RequestExHomunculusSummon implements IClientIncomingPacket
|
||||||
{
|
{
|
||||||
private static final HomunculusCreationTemplate TEMPLATE = HomunculusCreationData.getInstance().getTemplate(0);
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean read(GameClient client, PacketReader packet)
|
public boolean read(GameClient client, PacketReader packet)
|
||||||
{
|
{
|
||||||
@@ -60,22 +57,21 @@ public class RequestExHomunculusSummon implements IClientIncomingPacket
|
|||||||
final int vpPoints = player.getVariables().getInt(PlayerVariables.HOMUNCULUS_VP_POINTS, 0);
|
final int vpPoints = player.getVariables().getInt(PlayerVariables.HOMUNCULUS_VP_POINTS, 0);
|
||||||
final int homunculusCreateTime = (int) (player.getVariables().getLong(PlayerVariables.HOMUNCULUS_CREATION_TIME, 0) / 1000);
|
final int homunculusCreateTime = (int) (player.getVariables().getLong(PlayerVariables.HOMUNCULUS_CREATION_TIME, 0) / 1000);
|
||||||
|
|
||||||
if ((homunculusCreateTime > 0) && ((System.currentTimeMillis() / 1000) >= homunculusCreateTime) && (hpPoints == TEMPLATE.getHPFeeCount()) && (spPoints == TEMPLATE.getSPFeeCount()) && (vpPoints == TEMPLATE.getVPFeeCount()))
|
if ((homunculusCreateTime > 0) && ((System.currentTimeMillis() / 1000) >= homunculusCreateTime) && (hpPoints == HomunculusCreationData.getInstance().getDefaultTemplate().getHPFeeCount()) && (spPoints == HomunculusCreationData.getInstance().getDefaultTemplate().getSPFeeCount()) && (vpPoints == HomunculusCreationData.getInstance().getDefaultTemplate().getVPFeeCount()))
|
||||||
{
|
{
|
||||||
double chance = Rnd.get(100.0);
|
double chance = Rnd.get(100.0);
|
||||||
double current = 0;
|
double current = 0;
|
||||||
int homunculusId = 0;
|
int homunculusId = 0;
|
||||||
while (homunculusId == 0)
|
while (homunculusId == 0)
|
||||||
{
|
{
|
||||||
if (chance > TEMPLATE.getMaxChance())
|
if (chance > HomunculusCreationData.getInstance().getDefaultTemplate().getMaxChance())
|
||||||
{
|
{
|
||||||
player.sendMessage("Homunculus is not created!");
|
player.sendMessage("Homunculus is not created!");
|
||||||
player.sendPacket(new ExHomunculusSummonResult(0));
|
player.sendPacket(new ExHomunculusSummonResult(0));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < TEMPLATE.getCreationChance().size(); i++)
|
for (Double[] homuHolder : HomunculusCreationData.getInstance().getDefaultTemplate().getCreationChance())
|
||||||
{
|
{
|
||||||
final Double[] homuHolder = TEMPLATE.getCreationChance().get(i);
|
|
||||||
current += homuHolder[1];
|
current += homuHolder[1];
|
||||||
if (current >= chance)
|
if (current >= chance)
|
||||||
{
|
{
|
||||||
|
@@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.holders.ItemHolder;
|
|||||||
import org.l2jmobius.gameserver.model.homunculus.Homunculus;
|
import org.l2jmobius.gameserver.model.homunculus.Homunculus;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusTemplate;
|
import org.l2jmobius.gameserver.model.homunculus.HomunculusTemplate;
|
||||||
|
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
import org.l2jmobius.gameserver.network.PacketLogger;
|
import org.l2jmobius.gameserver.network.PacketLogger;
|
||||||
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
|
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
|
||||||
@@ -37,12 +38,12 @@ import org.l2jmobius.gameserver.network.serverpackets.homunculus.ExSummonHomuncu
|
|||||||
*/
|
*/
|
||||||
public class RequestExSummonHomunculusCouponResult implements IClientIncomingPacket
|
public class RequestExSummonHomunculusCouponResult implements IClientIncomingPacket
|
||||||
{
|
{
|
||||||
private int _item_id;
|
private int _itemId;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean read(GameClient client, PacketReader packet)
|
public boolean read(GameClient client, PacketReader packet)
|
||||||
{
|
{
|
||||||
_item_id = packet.readD();
|
_itemId = packet.readD();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,35 +62,28 @@ public class RequestExSummonHomunculusCouponResult implements IClientIncomingPac
|
|||||||
PacketLogger.info("Player " + player.getObjectId() + " " + player.getName() + ", trying create homunculus withouts avaible slots!");
|
PacketLogger.info("Player " + player.getObjectId() + " " + player.getName() + ", trying create homunculus withouts avaible slots!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
HomunculusCreationTemplate creationTemplate = null;
|
|
||||||
for (int i = 1; i < HomunculusCreationData.getInstance().size(); i++)
|
final HomunculusCreationTemplate creationTemplate = HomunculusCreationData.getInstance().getTemplateByItemId(_itemId);
|
||||||
{
|
if ((creationTemplate == null) || creationTemplate.getItemFee().isEmpty())
|
||||||
if (HomunculusCreationData.getInstance().getTemplate(i).isInstanceHaveCoupon(_item_id))
|
|
||||||
{
|
|
||||||
creationTemplate = HomunculusCreationData.getInstance().getTemplate(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((creationTemplate == null) || (creationTemplate.getItemFee().size() == 0))
|
|
||||||
{
|
{
|
||||||
PacketLogger.info("Player " + player.getObjectId() + " " + player.getName() + ", trying create homunculus with not existing coupon!");
|
PacketLogger.info("Player " + player.getObjectId() + " " + player.getName() + ", trying create homunculus with not existing coupon!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Take items.
|
// Take items.
|
||||||
for (int i = 0; i < creationTemplate.getItemFee().size(); i++)
|
for (ItemHolder itemHolder : creationTemplate.getItemFee())
|
||||||
{
|
{
|
||||||
final ItemHolder humu = creationTemplate.getItemFee().get(i);
|
final Item item = player.getInventory().getItemByItemId(itemHolder.getId());
|
||||||
if (player.getInventory().getItemByItemId(humu.getId()).getCount() < humu.getCount())
|
if ((item == null) || (item.getCount() < itemHolder.getCount()))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (int i = 0; i < creationTemplate.getItemFee().size(); i++)
|
for (ItemHolder itemHolder : creationTemplate.getItemFee())
|
||||||
{
|
{
|
||||||
final ItemHolder humu = creationTemplate.getItemFee().get(i);
|
if (!player.destroyItemByItemId("Homunculus Coupon Creation", itemHolder.getId(), itemHolder.getCount(), player, true))
|
||||||
if (!player.destroyItemByItemId("Homunculus Coupon Creation", humu.getId(), humu.getCount(), player, true))
|
|
||||||
{
|
{
|
||||||
PacketLogger.info("Player " + player.getObjectId() + " " + player.getName() + ", trying create homunculus without " + humu + "!");
|
PacketLogger.info("Player " + player.getObjectId() + " " + player.getName() + ", trying create homunculus without " + itemHolder + "!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -105,9 +99,8 @@ public class RequestExSummonHomunculusCouponResult implements IClientIncomingPac
|
|||||||
player.sendPacket(new ExSummonHomunculusCouponResult(0, 0));
|
player.sendPacket(new ExSummonHomunculusCouponResult(0, 0));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < creationTemplate.getCreationChance().size(); i++)
|
for (Double[] homuHolder : creationTemplate.getCreationChance())
|
||||||
{
|
{
|
||||||
final Double[] homuHolder = creationTemplate.getCreationChance().get(i);
|
|
||||||
current += homuHolder[1];
|
current += homuHolder[1];
|
||||||
if (current >= chance)
|
if (current >= chance)
|
||||||
{
|
{
|
||||||
|
@@ -20,7 +20,6 @@ import org.l2jmobius.commons.network.PacketWriter;
|
|||||||
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
||||||
import org.l2jmobius.gameserver.data.xml.HomunculusData;
|
import org.l2jmobius.gameserver.data.xml.HomunculusData;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
|
||||||
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
||||||
|
|
||||||
@@ -45,18 +44,15 @@ public class ExHomunculusCreateProbabilityList implements IClientOutgoingPacket
|
|||||||
}
|
}
|
||||||
|
|
||||||
OutgoingPackets.EX_HOMUNCULUS_CREATE_PROB_LIST.writeId(packet);
|
OutgoingPackets.EX_HOMUNCULUS_CREATE_PROB_LIST.writeId(packet);
|
||||||
HomunculusCreationTemplate creationTemplate = HomunculusCreationData.getInstance().getTemplate(0);
|
packet.writeD(HomunculusCreationData.getInstance().getDefaultTemplate().getCreationChance().size());
|
||||||
final int size = creationTemplate.getCreationChance().size();
|
|
||||||
packet.writeD(size);
|
|
||||||
for (int type = 0; type < 3; type++)
|
for (int type = 0; type < 3; type++)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < size; i++)
|
for (Double[] homunculusChance : HomunculusCreationData.getInstance().getDefaultTemplate().getCreationChance())
|
||||||
{
|
{
|
||||||
final Double[] chance = creationTemplate.getCreationChance().get(i);
|
if (HomunculusData.getInstance().getTemplate(homunculusChance[0].intValue()).getType() == type)
|
||||||
if (HomunculusData.getInstance().getTemplate(chance[0].intValue()).getType() == type)
|
|
||||||
{
|
{
|
||||||
packet.writeD(chance[0].intValue());
|
packet.writeD(homunculusChance[0].intValue());
|
||||||
packet.writeD((int) (chance[1] * 1000000));
|
packet.writeD((int) (homunculusChance[1] * 1000000));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.network.serverpackets.homunculus;
|
|||||||
import org.l2jmobius.commons.network.PacketWriter;
|
import org.l2jmobius.commons.network.PacketWriter;
|
||||||
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
import org.l2jmobius.gameserver.data.xml.HomunculusCreationData;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
import org.l2jmobius.gameserver.model.homunculus.HomunculusCreationTemplate;
|
|
||||||
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
import org.l2jmobius.gameserver.model.variables.PlayerVariables;
|
||||||
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
||||||
@@ -29,8 +28,6 @@ import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
|||||||
*/
|
*/
|
||||||
public class ExShowHomunculusBirthInfo implements IClientOutgoingPacket
|
public class ExShowHomunculusBirthInfo implements IClientOutgoingPacket
|
||||||
{
|
{
|
||||||
private static final HomunculusCreationTemplate TEMPLATE = HomunculusCreationData.getInstance().getTemplate(0);
|
|
||||||
|
|
||||||
private final int _hpPoints;
|
private final int _hpPoints;
|
||||||
private final int _spPoints;
|
private final int _spPoints;
|
||||||
private final int _vpPoints;
|
private final int _vpPoints;
|
||||||
@@ -45,9 +42,9 @@ public class ExShowHomunculusBirthInfo implements IClientOutgoingPacket
|
|||||||
_spPoints = player.getVariables().getInt(PlayerVariables.HOMUNCULUS_SP_POINTS, 0);
|
_spPoints = player.getVariables().getInt(PlayerVariables.HOMUNCULUS_SP_POINTS, 0);
|
||||||
_vpPoints = player.getVariables().getInt(PlayerVariables.HOMUNCULUS_VP_POINTS, 0);
|
_vpPoints = player.getVariables().getInt(PlayerVariables.HOMUNCULUS_VP_POINTS, 0);
|
||||||
_homunculusCreateTime = (int) (player.getVariables().getLong(PlayerVariables.HOMUNCULUS_CREATION_TIME, 0) / 1000);
|
_homunculusCreateTime = (int) (player.getVariables().getLong(PlayerVariables.HOMUNCULUS_CREATION_TIME, 0) / 1000);
|
||||||
_feeHpPoints = TEMPLATE.getHPFeeCount();
|
_feeHpPoints = HomunculusCreationData.getInstance().getDefaultTemplate().getHPFeeCount();
|
||||||
_feeSpPoints = (int) TEMPLATE.getSPFeeCount();
|
_feeSpPoints = (int) HomunculusCreationData.getInstance().getDefaultTemplate().getSPFeeCount();
|
||||||
_feeVpPoints = TEMPLATE.getVPFeeCount();
|
_feeVpPoints = HomunculusCreationData.getInstance().getDefaultTemplate().getVPFeeCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Reference in New Issue
Block a user