|
@@ -19,13 +19,9 @@
|
|
package com.l2jserver.gameserver.model.actor.instance;
|
|
package com.l2jserver.gameserver.model.actor.instance;
|
|
|
|
|
|
import com.l2jserver.gameserver.datatables.NpcData;
|
|
import com.l2jserver.gameserver.datatables.NpcData;
|
|
-import com.l2jserver.gameserver.datatables.SkillTable;
|
|
|
|
import com.l2jserver.gameserver.enums.InstanceType;
|
|
import com.l2jserver.gameserver.enums.InstanceType;
|
|
import com.l2jserver.gameserver.model.actor.L2Character;
|
|
import com.l2jserver.gameserver.model.actor.L2Character;
|
|
import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
|
|
import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
|
|
-import com.l2jserver.gameserver.model.skills.L2Skill;
|
|
|
|
-import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse;
|
|
|
|
-import com.l2jserver.util.Rnd;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
* This class manages all chest.
|
|
* This class manages all chest.
|
|
@@ -33,7 +29,6 @@ import com.l2jserver.util.Rnd;
|
|
*/
|
|
*/
|
|
public final class L2ChestInstance extends L2MonsterInstance
|
|
public final class L2ChestInstance extends L2MonsterInstance
|
|
{
|
|
{
|
|
- private volatile boolean _isInteracted;
|
|
|
|
private volatile boolean _specialDrop;
|
|
private volatile boolean _specialDrop;
|
|
|
|
|
|
public L2ChestInstance(int objectId, L2NpcTemplate template)
|
|
public L2ChestInstance(int objectId, L2NpcTemplate template)
|
|
@@ -41,7 +36,6 @@ public final class L2ChestInstance extends L2MonsterInstance
|
|
super(objectId, template);
|
|
super(objectId, template);
|
|
setInstanceType(InstanceType.L2ChestInstance);
|
|
setInstanceType(InstanceType.L2ChestInstance);
|
|
setIsNoRndWalk(true);
|
|
setIsNoRndWalk(true);
|
|
- _isInteracted = false;
|
|
|
|
_specialDrop = false;
|
|
_specialDrop = false;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -49,26 +43,10 @@ public final class L2ChestInstance extends L2MonsterInstance
|
|
public void onSpawn()
|
|
public void onSpawn()
|
|
{
|
|
{
|
|
super.onSpawn();
|
|
super.onSpawn();
|
|
- _isInteracted = false;
|
|
|
|
_specialDrop = false;
|
|
_specialDrop = false;
|
|
setMustRewardExpSp(true);
|
|
setMustRewardExpSp(true);
|
|
}
|
|
}
|
|
|
|
|
|
- public synchronized boolean isInteracted()
|
|
|
|
- {
|
|
|
|
- return _isInteracted;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public synchronized void setInteracted()
|
|
|
|
- {
|
|
|
|
- _isInteracted = true;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public synchronized boolean isSpecialDrop()
|
|
|
|
- {
|
|
|
|
- return _specialDrop;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
public synchronized void setSpecialDrop()
|
|
public synchronized void setSpecialDrop()
|
|
{
|
|
{
|
|
_specialDrop = true;
|
|
_specialDrop = true;
|
|
@@ -110,140 +88,12 @@ public final class L2ChestInstance extends L2MonsterInstance
|
|
id = 21786;
|
|
id = 21786;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
super.doItemDrop(NpcData.getInstance().getTemplate(id), lastAttacker);
|
|
super.doItemDrop(NpcData.getInstance().getTemplate(id), lastAttacker);
|
|
}
|
|
}
|
|
|
|
|
|
- // cast - trap chest
|
|
|
|
- public void chestTrap(L2Character player)
|
|
|
|
- {
|
|
|
|
- int trapSkillId = 0;
|
|
|
|
- int rnd = Rnd.get(120);
|
|
|
|
-
|
|
|
|
- if (getTemplate().getLevel() >= 61)
|
|
|
|
- {
|
|
|
|
- if (rnd >= 90)
|
|
|
|
- {
|
|
|
|
- trapSkillId = 4139;// explosion
|
|
|
|
- }
|
|
|
|
- else if (rnd >= 50)
|
|
|
|
- {
|
|
|
|
- trapSkillId = 4118;// area paralysys
|
|
|
|
- }
|
|
|
|
- else if (rnd >= 20)
|
|
|
|
- {
|
|
|
|
- trapSkillId = 1167;// poison cloud
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- {
|
|
|
|
- trapSkillId = 223;// sting
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- else if (getTemplate().getLevel() >= 41)
|
|
|
|
- {
|
|
|
|
- if (rnd >= 90)
|
|
|
|
- {
|
|
|
|
- trapSkillId = 4139;// explosion
|
|
|
|
- }
|
|
|
|
- else if (rnd >= 60)
|
|
|
|
- {
|
|
|
|
- trapSkillId = 96;// bleed
|
|
|
|
- }
|
|
|
|
- else if (rnd >= 20)
|
|
|
|
- {
|
|
|
|
- trapSkillId = 1167;// poison cloud
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- {
|
|
|
|
- trapSkillId = 4118;// area paralysys
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- else if (getTemplate().getLevel() >= 21)
|
|
|
|
- {
|
|
|
|
- if (rnd >= 80)
|
|
|
|
- {
|
|
|
|
- trapSkillId = 4139;// explosion
|
|
|
|
- }
|
|
|
|
- else if (rnd >= 50)
|
|
|
|
- {
|
|
|
|
- trapSkillId = 96;// bleed
|
|
|
|
- }
|
|
|
|
- else if (rnd >= 20)
|
|
|
|
- {
|
|
|
|
- trapSkillId = 1167;// poison cloud
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- {
|
|
|
|
- trapSkillId = 129;// poison
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- {
|
|
|
|
- if (rnd >= 80)
|
|
|
|
- {
|
|
|
|
- trapSkillId = 4139;// explosion
|
|
|
|
- }
|
|
|
|
- else if (rnd >= 50)
|
|
|
|
- {
|
|
|
|
- trapSkillId = 96;// bleed
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- {
|
|
|
|
- trapSkillId = 129;// poison
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- player.sendMessage("There was a trap!");
|
|
|
|
- handleCast(player, trapSkillId);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // <--
|
|
|
|
- // cast casse
|
|
|
|
- // <--
|
|
|
|
- private boolean handleCast(L2Character player, int skillId)
|
|
|
|
- {
|
|
|
|
- int skillLevel = 1;
|
|
|
|
- byte lvl = getTemplate().getLevel();
|
|
|
|
- if ((lvl > 20) && (lvl <= 40))
|
|
|
|
- {
|
|
|
|
- skillLevel = 3;
|
|
|
|
- }
|
|
|
|
- else if ((lvl > 40) && (lvl <= 60))
|
|
|
|
- {
|
|
|
|
- skillLevel = 5;
|
|
|
|
- }
|
|
|
|
- else if (lvl > 60)
|
|
|
|
- {
|
|
|
|
- skillLevel = 6;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (player.isDead() || !player.isVisible() || !player.isInsideRadius(this, getDistanceToWatchObject(player), false, false))
|
|
|
|
- {
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- L2Skill skill = SkillTable.getInstance().getInfo(skillId, skillLevel);
|
|
|
|
-
|
|
|
|
- if (!player.isAffectedBySkill(skillId))
|
|
|
|
- {
|
|
|
|
- skill.applyEffects(this, player);
|
|
|
|
- broadcastPacket(new MagicSkillUse(this, player, skillId, skillLevel, skill.getHitTime(), 0));
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
public boolean isMovementDisabled()
|
|
public boolean isMovementDisabled()
|
|
{
|
|
{
|
|
- if (super.isMovementDisabled())
|
|
|
|
- {
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
- if (isInteracted())
|
|
|
|
- {
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|