Добавил петам свои бафы, бафает вот только кроме 2ух последних, ссылаясь на ошибку.
129 строка это у нас:
а 50:
Что то я как то не понимаю, если проблема в мп, то потреблении у бафов индинтично, как и другие статы.
Рабочий баф:
Не рабочий баф:
И да, измененный PetBabyInstance:
Код:
[31.03.16 05:42:50:018] WARN instances.PetBabyInstance: Pet [#16052] a buff task error has occurred: java.lang.NullPointerException
[31.03.16 05:42:50:018] ERROR instances.PetBabyInstance:
java.lang.NullPointerException
at core.gameserver.model.instances.PetBabyInstance.onActionTask(PetBabyInstance.java:129)
at core.gameserver.model.instances.PetBabyInstance$ActionTask.runImpl(PetBabyInstance.java:50)
at core.commons.threading.RunnableImpl.run(RunnableImpl.java:21)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
129 строка это у нас:
Код:
if(getCurrentMp() < buff.getMpConsume2())
continue;
Код:
Skill skill = onActionTask();
_actionTask = ThreadPoolManager.getInstance().schedule(new ActionTask(), skill == null ? 1000 : skill.getHitTime() * 333 / Math.max(getMAtkSpd(), 1) - 100);
Что то я как то не понимаю, если проблема в мп, то потреблении у бафов индинтично, как и другие статы.
Рабочий баф:
Код:
<skill id="14109" levels="1" name="Pet Resist Wind">
<table name="#res">150</table>
<table name="#effectPoint">418</table>
<table name="#abnormal_lv">3</table>
<table name="#abnormal_time">3600</table>
<table name="#mpConsume2">19</table>
<table name="#mpConsume1">5</table>
<table name="#magicLevel">85</table>
<set name="magicType" val="MAGIC" />
<set name="icon" val="icon.skill1189" />
<set name="reuseDelay" val="6000" />
<set name="magicLevel" val="#magicLevel" />
<set name="castRange" val="400" />
<set name="hitTime" val="4000" />
<set name="hitCancelTime" val="500" />
<set name="mpConsume1" val="#mpConsume1" />
<set name="mpConsume2" val="#mpConsume2" />
<set name="effectPoint" val="#effectPoint" />
<set name="target" val="TARGET_ONE" />
<set name="skillType" val="BUFF" />
<set name="operateType" val="OP_ACTIVE" />
<for>
<effect count="1" name="Buff" stackOrder="#abnormal_lv" stackType="WindAtr" time="#abnormal_time" val="0">
<add order="0x40" stat="defenceWind" val="#res" />
</effect>
</for>
</skill>
Не рабочий баф:
Код:
<skill id="141010" levels="1" name="Pet Resist Fire">
<table name="#res">150</table>
<table name="#effectPoint">418</table>
<table name="#abnormal_lv">3</table>
<table name="#abnormal_time">3600</table>
<table name="#mpConsume2">19</table>
<table name="#mpConsume1">5</table>
<table name="#magicLevel">85</table>
<set name="magicType" val="MAGIC" />
<set name="icon" val="icon.skill1191" />
<set name="reuseDelay" val="6000" />
<set name="magicLevel" val="#magicLevel" />
<set name="castRange" val="400" />
<set name="hitTime" val="4000" />
<set name="hitCancelTime" val="500" />
<set name="mpConsume1" val="#mpConsume1" />
<set name="mpConsume2" val="#mpConsume2" />
<set name="effectPoint" val="#effectPoint" />
<set name="target" val="TARGET_ONE" />
<set name="skillType" val="BUFF" />
<set name="operateType" val="OP_ACTIVE" />
<for>
<effect count="1" name="Buff" stackOrder="#abnormal_lv" stackType="FireAtr" time="#abnormal_time" val="0">
<add order="0x40" stat="defenceFire" val="#res" />
</effect>
</for>
</skill>
И да, измененный PetBabyInstance:
Код:
package core.gameserver.model.instances;
import java.util.concurrent.Future;
import core.commons.threading.RunnableImpl;
import core.commons.util.Rnd;
import core.gameserver.Config;
import core.gameserver.ThreadPoolManager;
import core.gameserver.model.EffectList;
import core.gameserver.model.Creature;
import core.gameserver.model.Effect;
import core.gameserver.model.Player;
import core.gameserver.model.Skill;
import core.gameserver.model.items.ItemInstance;
import core.gameserver.tables.PetDataTable;
import core.gameserver.tables.SkillTable;
import core.gameserver.templates.npc.NpcTemplate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public final class PetBabyInstance extends PetInstance
{
private static final Logger _log = LoggerFactory.getLogger(PetBabyInstance.class);
private Future<?> _actionTask;
private boolean _buffEnabled = true;
public PetBabyInstance(int objectId, NpcTemplate template, Player owner, ItemInstance control, int _currentLevel, long exp)
{
super(objectId, template, owner, control, _currentLevel, exp);
}
public PetBabyInstance(int objectId, NpcTemplate template, Player owner, ItemInstance control)
{
super(objectId, template, owner, control);
}
// heal
private static final int HealTrick = 4717;
private static final int GreaterHealTrick = 4718;
private static final int GreaterHeal = 5195;
private static final int BattleHeal = 5590;
private static final int Recharge = 5200;
class ActionTask extends RunnableImpl
{
@Override
public void runImpl() throws Exception
{
Skill skill = onActionTask();
_actionTask = ThreadPoolManager.getInstance().schedule(new ActionTask(), skill == null ? 1000 : skill.getHitTime() * 333 / Math.max(getMAtkSpd(), 1) - 100);
}
}
public Skill[] getBuffs()
{
switch(getNpcId())
{
case PetDataTable.IMPROVED_BABY_COUGAR_ID:
return COUGAR_BUFFS[getBuffLevel()];
case PetDataTable.IMPROVED_BABY_BUFFALO_ID:
return BUFFALO_BUFFS[getBuffLevel()];
case PetDataTable.IMPROVED_BABY_KOOKABURRA_ID:
return KOOKABURRA_BUFFS[getBuffLevel()];
case PetDataTable.FAIRY_PRINCESS_ID://Принцесса Фей
return FAIRY_PRINCESS_BUFFS[getBuffLevel()];
case PetDataTable.SPIRIT_SHAMAN_ID://Дух Мага
return FAIRY_PRINCESS_BUFFS[getBuffLevel()];
case PetDataTable.TOY_KNIGHT_ID://Игрушечный Рыцарь
return TOY_KNIGHT_BUFFS[getBuffLevel()];
case PetDataTable.TURTLE_ASCETIC_ID://Черепаха
return TURTLE_ASCETIC_BUFFS[getBuffLevel()];
case PetDataTable.WHITE_WEASEL_ID://Белая Ласка
return WHITE_WEASEL_BUFFS[getBuffLevel()];
default:
return Skill.EMPTY_ARRAY;
}
}
public Skill onActionTask()
{
try
{
Player owner = getPlayer();
if(!owner.isDead() && !owner.isInvul() && !isCastingNow() || !this.isDead())
{
if(getEffectList().getEffectsCountForSkill(5753) > 0) // Awakening
return null;
if(getEffectList().getEffectsCountForSkill(5771) > 0) // Buff Control
return null;
boolean improved = PetDataTable.isImprovedBabyPet(getNpcId());
Skill skill = null;
if(!Config.ALT_PET_HEAL_BATTLE_ONLY || owner.isInCombat())
{
// проверка лечения
double curHp = owner.getCurrentHpPercents();
if(curHp < 90 && Rnd.chance((100 - curHp) / 3))
if(curHp < 33) // экстренная ситуация, сильный хил
skill = SkillTable.getInstance().getInfo(improved ? BattleHeal : GreaterHealTrick, getHealLevel());
else if(getNpcId() != PetDataTable.IMPROVED_BABY_KOOKABURRA_ID || getNpcId() != PetDataTable.FAIRY_PRINCESS_ID
|| getNpcId() != PetDataTable.SPIRIT_SHAMAN_ID)
skill = SkillTable.getInstance().getInfo(improved ? GreaterHeal : HealTrick, getHealLevel());
// проверка речарджа
if(skill == null && getNpcId() == PetDataTable.IMPROVED_BABY_KOOKABURRA_ID || getNpcId() == PetDataTable.FAIRY_PRINCESS_ID
|| getNpcId() == PetDataTable.SPIRIT_SHAMAN_ID) // Речардж только у Kookaburra и в комбат моде
{
double curMp = owner.getCurrentMpPercents();
if(curMp < 66 && Rnd.chance((100 - curMp) / 2))
skill = SkillTable.getInstance().getInfo(Recharge, getRechargeLevel());
}
if(skill != null && skill.checkCondition(PetBabyInstance.this, owner, false, !isFollowMode(), true))
{
setTarget(owner);
getAI().Cast(skill, owner, false, !isFollowMode());
return skill;
}
}
if(owner.isInOfflineMode() || owner.getEffectList().getEffectsCountForSkill(5771) > 0)
return null;
outer: for(Skill buff : getBuffs())
{
if(getCurrentMp() < buff.getMpConsume2())
continue;
for(Effect ef : owner.getEffectList().getAllEffects())
if(checkEffect(ef, buff))
continue outer;
if(buff.checkCondition(PetBabyInstance.this, owner, false, !isFollowMode(), true))
{
setTarget(owner);
getAI().Cast(buff, owner, false, !isFollowMode());
return buff;
}
return null;
}
}
}
catch(Throwable e)
{
_log.warn("Pet [#" + getNpcId() + "] a buff task error has occurred: " + e);
_log.error("", e);
}
return null;
}
/**
* Возвращает true если эффект для скилла уже есть и заново накладывать не надо
*/
private boolean checkEffect(Effect ef, Skill skill)
{
if(ef == null || !ef.isInUse() || !EffectList.checkStackType(ef.getTemplate(), skill.getEffectTemplates()[0])) // такого скилла нет
return false;
if(ef.getStackOrder() < skill.getEffectTemplates()[0]._stackOrder) // старый слабее
return false;
if(ef.getTimeLeft() > 10) // старый не слабее и еще не кончается - ждем
return true;
if(ef.getNext() != null) // старый не слабее но уже кончается - проверить рекурсией что там зашедулено
return checkEffect(ef.getNext(), skill);
return false;
}
public synchronized void stopBuffTask()
{
if(_actionTask != null)
{
_actionTask.cancel(false);
_actionTask = null;
}
}
public synchronized void startBuffTask()
{
if(_actionTask != null)
stopBuffTask();
if(_actionTask == null && !isDead())
_actionTask = ThreadPoolManager.getInstance().schedule(new ActionTask(), 5000);
}
public boolean isBuffEnabled()
{
return _buffEnabled;
}
public void triggerBuff()
{
_buffEnabled = !_buffEnabled;
}
@Override
protected void onDeath(Creature killer)
{
stopBuffTask();
super.onDeath(killer);
}
@Override
public void doRevive()
{
super.doRevive();
startBuffTask();
}
@Override
public void unSummon()
{
stopBuffTask();
super.unSummon();
}
public int getHealLevel()
{
return Math.min(Math.max((getLevel() - getMinLevel()) / ((80 - getMinLevel()) / 12), 1), 12);
}
public int getRechargeLevel()
{
return Math.min(Math.max((getLevel() - getMinLevel()) / ((80 - getMinLevel()) / 8), 1), 8);
}
public int getBuffLevel()
{
if(getNpcId() == PetDataTable.FAIRY_PRINCESS_ID)
return Math.min(Math.max((getLevel() - getMinLevel()) / ((80 - getMinLevel()) / 3), 0), 3);
return Math.min(Math.max((getLevel() - 55) / 5, 0), 3);
}
@Override
public int getSoulshotConsumeCount()
{
return 1;
}
@Override
public int getSpiritshotConsumeCount()
{
return 1;
}
private static final int Pet_Haste = 5186; // 1-2
private static final int Pet_Vampiric_Rage = 5187; // 1-4
@SuppressWarnings("unused")
private static final int Pet_Regeneration = 5188; // 1-3
private static final int Pet_Blessed_Body = 5189; // 1-6
private static final int Pet_Blessed_Soul = 5190; // 1-6
private static final int Pet_Guidance = 5191; // 1-3
@SuppressWarnings("unused")
private static final int Pet_Wind_Walk = 5192; // 1-2
private static final int Pet_Acumen = 5193; // 1-3
private static final int Pet_Empower = 5194; // 1-3
private static final int Pet_Concentration = 5201; // 1-3
private static final int Pet_Might = 5586; // 1-3
private static final int Pet_Shield = 5587; // 1-3
private static final int Pet_Focus = 5588; // 1-3
private static final int Pet_Death_Wisper = 5589; // 1-3
private static final int Pet_Armor_Maintenance = 5988; // 1
private static final int Pet_Weapon_Maintenance = 5987; // 1
//add pet buff @DarkEmpire
private static final int Pet_CoV = 14100; // 1
private static final int Pet_PoWa = 14101; // 1
private static final int Pet_PoWi = 14102; // 1
private static final int Pet_PoF = 14103; // 1
private static final int Pet_BS = 14104; // 1
private static final int Pet_Holy = 14105; // 1
private static final int Pet_UnHoly = 14106; // 1
private static final int Pet_Shock = 14107; // 1
private static final int Pet_Aqua = 14108; // 1
private static final int Pet_Wind = 14109; // 1
private static final int Pet_Fire = 14110; // 1
private static final int Pet_Earth = 14111; // 1
// debuff (unused)
@SuppressWarnings("unused")
private static final int WindShackle = 5196, Hex = 5197, Slow = 5198, CurseGloom = 5199;
private static final Skill[][] TOY_KNIGHT_BUFFS = {
{ SkillTable.getInstance().getInfo(Pet_Focus, 3), SkillTable.getInstance().getInfo(Pet_Death_Wisper, 3) },
{
SkillTable.getInstance().getInfo(Pet_Focus, 3),
SkillTable.getInstance().getInfo(Pet_Death_Wisper, 3),
SkillTable.getInstance().getInfo(Pet_Shield, 3),
SkillTable.getInstance().getInfo(Pet_Wind_Walk, 2) },
{
SkillTable.getInstance().getInfo(Pet_Focus, 3),
SkillTable.getInstance().getInfo(Pet_Death_Wisper, 3),
SkillTable.getInstance().getInfo(Pet_Shield, 3),
SkillTable.getInstance().getInfo(Pet_Wind_Walk, 2),
SkillTable.getInstance().getInfo(Pet_Vampiric_Rage, 4),
SkillTable.getInstance().getInfo(Pet_Haste, 2) },
{
SkillTable.getInstance().getInfo(Pet_CoV, 1),
SkillTable.getInstance().getInfo(Pet_BS, 1),
SkillTable.getInstance().getInfo(Pet_Holy, 1),
SkillTable.getInstance().getInfo(Pet_UnHoly, 1),
SkillTable.getInstance().getInfo(Pet_Shock, 1),
SkillTable.getInstance().getInfo(Pet_Aqua, 1),
SkillTable.getInstance().getInfo(Pet_Wind, 1),
SkillTable.getInstance().getInfo(Pet_Fire, 1),
SkillTable.getInstance().getInfo(Pet_Earth, 1) } };
private static final Skill[][] WHITE_WEASEL_BUFFS = {
{ SkillTable.getInstance().getInfo(Pet_Blessed_Body, 6), SkillTable.getInstance().getInfo(Pet_Wind_Walk, 2) },
{
SkillTable.getInstance().getInfo(Pet_Blessed_Body, 6),
SkillTable.getInstance().getInfo(Pet_Wind_Walk, 2),
SkillTable.getInstance().getInfo(Pet_Death_Wisper, 3),
SkillTable.getInstance().getInfo(Pet_Shield, 3) },
{
SkillTable.getInstance().getInfo(Pet_Blessed_Body, 6),
SkillTable.getInstance().getInfo(Pet_Wind_Walk, 2),
SkillTable.getInstance().getInfo(Pet_Death_Wisper, 3),
SkillTable.getInstance().getInfo(Pet_Shield, 3),
SkillTable.getInstance().getInfo(Pet_Vampiric_Rage, 4),
SkillTable.getInstance().getInfo(Pet_Focus, 3) },
{
SkillTable.getInstance().getInfo(Pet_PoWi, 1),
SkillTable.getInstance().getInfo(Pet_BS, 1),
SkillTable.getInstance().getInfo(Pet_Holy, 1),
SkillTable.getInstance().getInfo(Pet_UnHoly, 1),
SkillTable.getInstance().getInfo(Pet_Shock, 1),
SkillTable.getInstance().getInfo(Pet_Aqua, 1),
SkillTable.getInstance().getInfo(Pet_Wind, 1),
SkillTable.getInstance().getInfo(Pet_Fire, 1),
SkillTable.getInstance().getInfo(Pet_Earth, 1) } };
private static final Skill[][] TURTLE_ASCETIC_BUFFS = {
{ SkillTable.getInstance().getInfo(Pet_Blessed_Body, 6), SkillTable.getInstance().getInfo(Pet_Blessed_Soul, 6) },
{
SkillTable.getInstance().getInfo(Pet_Blessed_Body, 6),
SkillTable.getInstance().getInfo(Pet_Blessed_Soul, 6),
SkillTable.getInstance().getInfo(Pet_Shield, 3),
SkillTable.getInstance().getInfo(Pet_Wind_Walk, 2) },
{
SkillTable.getInstance().getInfo(Pet_Blessed_Body, 6),
SkillTable.getInstance().getInfo(Pet_Blessed_Soul, 6),
SkillTable.getInstance().getInfo(Pet_Shield, 3),
SkillTable.getInstance().getInfo(Pet_Wind_Walk, 2),
SkillTable.getInstance().getInfo(Pet_Armor_Maintenance, 1),
SkillTable.getInstance().getInfo(Pet_Weapon_Maintenance, 1) },
{
SkillTable.getInstance().getInfo(Pet_PoF, 1),
SkillTable.getInstance().getInfo(Pet_BS, 1),
SkillTable.getInstance().getInfo(Pet_Holy, 1),
SkillTable.getInstance().getInfo(Pet_UnHoly, 1),
SkillTable.getInstance().getInfo(Pet_Shock, 1),
SkillTable.getInstance().getInfo(Pet_Aqua, 1),
SkillTable.getInstance().getInfo(Pet_Wind, 1),
SkillTable.getInstance().getInfo(Pet_Fire, 1),
SkillTable.getInstance().getInfo(Pet_Earth, 1) } };
private static final Skill[][] COUGAR_BUFFS = {
{ SkillTable.getInstance().getInfo(Pet_Empower, 3), SkillTable.getInstance().getInfo(Pet_Might, 3) },
{
SkillTable.getInstance().getInfo(Pet_Empower, 3),
SkillTable.getInstance().getInfo(Pet_Might, 3),
SkillTable.getInstance().getInfo(Pet_Shield, 3),
SkillTable.getInstance().getInfo(Pet_Blessed_Body, 6) },
{
SkillTable.getInstance().getInfo(Pet_Empower, 3),
SkillTable.getInstance().getInfo(Pet_Might, 3),
SkillTable.getInstance().getInfo(Pet_Shield, 3),
SkillTable.getInstance().getInfo(Pet_Blessed_Body, 6),
SkillTable.getInstance().getInfo(Pet_Acumen, 3),
SkillTable.getInstance().getInfo(Pet_Haste, 2) },
{
SkillTable.getInstance().getInfo(Pet_Empower, 3),
SkillTable.getInstance().getInfo(Pet_Might, 3),
SkillTable.getInstance().getInfo(Pet_Shield, 3),
SkillTable.getInstance().getInfo(Pet_Blessed_Body, 6),
SkillTable.getInstance().getInfo(Pet_Acumen, 3),
SkillTable.getInstance().getInfo(Pet_Haste, 2),
SkillTable.getInstance().getInfo(Pet_Vampiric_Rage, 4),
SkillTable.getInstance().getInfo(Pet_Focus, 3) } };
private static final Skill[][] BUFFALO_BUFFS = {
{ SkillTable.getInstance().getInfo(Pet_Might, 3), SkillTable.getInstance().getInfo(Pet_Blessed_Body, 6) },
{
SkillTable.getInstance().getInfo(Pet_Might, 3),
SkillTable.getInstance().getInfo(Pet_Blessed_Body, 6),
SkillTable.getInstance().getInfo(Pet_Shield, 3),
SkillTable.getInstance().getInfo(Pet_Guidance, 3), },
{
SkillTable.getInstance().getInfo(Pet_Might, 3),
SkillTable.getInstance().getInfo(Pet_Blessed_Body, 6),
SkillTable.getInstance().getInfo(Pet_Shield, 3),
SkillTable.getInstance().getInfo(Pet_Guidance, 3),
SkillTable.getInstance().getInfo(Pet_Vampiric_Rage, 4),
SkillTable.getInstance().getInfo(Pet_Haste, 2) },
{
SkillTable.getInstance().getInfo(Pet_Might, 3),
SkillTable.getInstance().getInfo(Pet_Blessed_Body, 6),
SkillTable.getInstance().getInfo(Pet_Shield, 3),
SkillTable.getInstance().getInfo(Pet_Guidance, 3),
SkillTable.getInstance().getInfo(Pet_Vampiric_Rage, 4),
SkillTable.getInstance().getInfo(Pet_Haste, 2),
SkillTable.getInstance().getInfo(Pet_Focus, 3),
SkillTable.getInstance().getInfo(Pet_Death_Wisper, 3) } };
private static final Skill[][] KOOKABURRA_BUFFS = {
{ SkillTable.getInstance().getInfo(Pet_Empower, 3), SkillTable.getInstance().getInfo(Pet_Blessed_Soul, 6) },
{
SkillTable.getInstance().getInfo(Pet_Empower, 3),
SkillTable.getInstance().getInfo(Pet_Blessed_Soul, 6),
SkillTable.getInstance().getInfo(Pet_Blessed_Body, 6),
SkillTable.getInstance().getInfo(Pet_Shield, 3) },
{
SkillTable.getInstance().getInfo(Pet_Empower, 3),
SkillTable.getInstance().getInfo(Pet_Blessed_Soul, 6),
SkillTable.getInstance().getInfo(Pet_Blessed_Body, 6),
SkillTable.getInstance().getInfo(Pet_Shield, 3),
SkillTable.getInstance().getInfo(Pet_Acumen, 3),
SkillTable.getInstance().getInfo(Pet_Concentration, 6) },
{
SkillTable.getInstance().getInfo(Pet_Empower, 3),
SkillTable.getInstance().getInfo(Pet_Blessed_Soul, 6),
SkillTable.getInstance().getInfo(Pet_Blessed_Body, 6),
SkillTable.getInstance().getInfo(Pet_Shield, 3),
SkillTable.getInstance().getInfo(Pet_Acumen, 3),
SkillTable.getInstance().getInfo(Pet_Concentration, 6) } };
private static final Skill[][] FAIRY_PRINCESS_BUFFS = {
{ SkillTable.getInstance().getInfo(Pet_Empower, 3), SkillTable.getInstance().getInfo(Pet_Blessed_Soul, 6) },
{
SkillTable.getInstance().getInfo(Pet_Empower, 3),
SkillTable.getInstance().getInfo(Pet_Blessed_Soul, 6),
SkillTable.getInstance().getInfo(Pet_Blessed_Body, 6),
SkillTable.getInstance().getInfo(Pet_Shield, 3) },
{
SkillTable.getInstance().getInfo(Pet_Empower, 3),
SkillTable.getInstance().getInfo(Pet_Blessed_Soul, 6),
SkillTable.getInstance().getInfo(Pet_Blessed_Body, 6),
SkillTable.getInstance().getInfo(Pet_Shield, 3),
SkillTable.getInstance().getInfo(Pet_Acumen, 3),
SkillTable.getInstance().getInfo(Pet_Concentration, 6) },
{
SkillTable.getInstance().getInfo(Pet_PoWa, 1),
SkillTable.getInstance().getInfo(Pet_BS, 1),
SkillTable.getInstance().getInfo(Pet_Holy, 1),
SkillTable.getInstance().getInfo(Pet_UnHoly, 1),
SkillTable.getInstance().getInfo(Pet_Shock, 1),
SkillTable.getInstance().getInfo(Pet_Aqua, 1),
SkillTable.getInstance().getInfo(Pet_Wind, 1),
SkillTable.getInstance().getInfo(Pet_Fire, 1),
SkillTable.getInstance().getInfo(Pet_Earth, 1) } };
}
Последнее редактирование: