Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Index: java/com/l2jserver/gameserver/model/actor/instance/L2ChestInstance.java
- ===================================================================
- --- java/com/l2jserver/gameserver/model/actor/instance/L2ChestInstance.java (revision 480)
- +++ java/com/l2jserver/gameserver/model/actor/instance/L2ChestInstance.java (working copy)
- @@ -18,14 +18,9 @@
- */
- package com.l2jserver.gameserver.model.actor.instance;
- -import com.l2jserver.gameserver.datatables.NpcTable;
- -import com.l2jserver.gameserver.datatables.SkillTable;
- import com.l2jserver.gameserver.enums.InstanceType;
- import com.l2jserver.gameserver.model.actor.L2Character;
- 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.
- @@ -33,8 +28,8 @@
- */
- public final class L2ChestInstance extends L2MonsterInstance
- {
- - private volatile boolean _isInteracted;
- - private volatile boolean _specialDrop;
- + private boolean _isInteracted;
- + private boolean _itemDropEnabled;
- public L2ChestInstance(int objectId, L2NpcTemplate template)
- {
- @@ -42,208 +37,50 @@
- setInstanceType(InstanceType.L2ChestInstance);
- setIsNoRndWalk(true);
- _isInteracted = false;
- - _specialDrop = false;
- + _itemDropEnabled = false;
- }
- - @Override
- - public void onSpawn()
- + public synchronized boolean chestInteraction()
- {
- - super.onSpawn();
- - _isInteracted = false;
- - _specialDrop = false;
- - setMustRewardExpSp(true);
- + if (_isInteracted)
- + {
- + return false;
- + }
- +
- + return _isInteracted = true;
- }
- - public synchronized boolean isInteracted()
- + public void enableItemDrop()
- {
- - return _isInteracted;
- + _itemDropEnabled = true;
- }
- - public synchronized void setInteracted()
- + @Override
- + public void onSpawn()
- {
- - _isInteracted = true;
- + super.onSpawn();
- + _isInteracted = false;
- + _itemDropEnabled = false;
- }
- - public synchronized boolean isSpecialDrop()
- - {
- - return _specialDrop;
- - }
- -
- - public synchronized void setSpecialDrop()
- - {
- - _specialDrop = true;
- - }
- -
- @Override
- - public void doItemDrop(L2NpcTemplate npcTemplate, L2Character lastAttacker)
- + public void doItemDrop(L2NpcTemplate npcTemplate, L2Character mainDamageDealer)
- {
- - int id = getTemplate().getId();
- -
- - if (!_specialDrop)
- + if (_itemDropEnabled)
- {
- - if ((id >= 18265) && (id <= 18286))
- - {
- - id += 3536;
- - }
- - else if ((id == 18287) || (id == 18288))
- - {
- - id = 21671;
- - }
- - else if ((id == 18289) || (id == 18290))
- - {
- - id = 21694;
- - }
- - else if ((id == 18291) || (id == 18292))
- - {
- - id = 21717;
- - }
- - else if ((id == 18293) || (id == 18294))
- - {
- - id = 21740;
- - }
- - else if ((id == 18295) || (id == 18296))
- - {
- - id = 21763;
- - }
- - else if ((id == 18297) || (id == 18298))
- - {
- - id = 21786;
- - }
- + super.doItemDrop(npcTemplate, mainDamageDealer);
- }
- -
- - super.doItemDrop(NpcTable.getInstance().getTemplate(id), lastAttacker);
- }
- - // cast - trap chest
- - public void chestTrap(L2Character player)
- + @Override
- + public boolean isCoreAIDisabled()
- {
- - 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);
- + return true;
- }
- - // <--
- - // 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.getFirstEffect(skill) == null)
- - {
- - skill.getEffects(this, player);
- - broadcastPacket(new MagicSkillUse(this, player, skill.getId(), skillLevel, skill.getHitTime(), 0));
- - return true;
- - }
- - return false;
- - }
- -
- @Override
- public boolean isMovementDisabled()
- {
- - if (super.isMovementDisabled())
- - {
- - return true;
- - }
- - if (isInteracted())
- - {
- - return false;
- - }
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement