Jump to content
  • 0

Frozen - Shadow Item


Question

Posted

Hello everyone, 

 

I find that its already disuss about this on this forum, but for aCis project, I just want to know how to edit code for Frozen Pack to make:  Shadow items taking mana also in inventory not only equiped. 

I am newbie in this, and trying to find how the think conected / working. 

 

I am find this code, I am supposed that should be changed somehow.

 

I will be glad for any help. Thank you

(sorry for my bad english)

 

 

Spoiler

        /** The _shadow item. */
        private final L2ItemInstance _shadowItem;
        
        /**
         * Instantiates a new schedule consume mana task.
         * @param item the item
         */
        public ScheduleConsumeManaTask(final L2ItemInstance item)
        {
            _shadowItem = item;
        }
        
        /*
         * (non-Javadoc)
         * @see java.lang.Runnable#run()
         */
        @Override
        public void run()
        {
            try
            {
                // decrease mana
                if (_shadowItem != null)
                {
                    _shadowItem.decreaseMana(true);
                }
            }
            catch (final Throwable t)
            {
                if (Config.ENABLE_ALL_EXCEPTIONS)
                    t.printStackTrace();
            }
        }
    }
    
    /**
     * Returns true if this item is a shadow item Shadow items have a limited life-time.
     * @return true, if is shadow item
     */
    public boolean isShadowItem()
    {
        return _mana >= 0;
    }
    
    /**
     * Sets the mana for this shadow item <b>NOTE</b>: does not send an inventory update packet.
     * @param mana the new mana
     */
    public void setMana(final int mana)
    {
        _mana = mana;
    }
    
    /**
     * Returns the remaining mana of this shadow item.
     * @return lifeTime
     */
    public int getMana()
    {
        return _mana;
    }
    
    /**
     * Decreases the mana of this shadow item, sends a inventory update schedules a new consumption task if non is running optionally one could force a new task.
     * @param resetConsumingMana the reset consuming mana
     */
    public void decreaseMana(final boolean resetConsumingMana)
    {
        if (!isShadowItem())
            return;
        
        if (_mana > 0)
            _mana--;
        
        if (_storedInDb)
            _storedInDb = false;
        if (resetConsumingMana)
            _consumingMana = false;
        
        L2PcInstance player = (L2PcInstance) L2World.getInstance().findObject(getOwnerId());
        if (player != null)
        {
            SystemMessage sm;
            switch (_mana)
            {
                case 10:
                    sm = new SystemMessage(SystemMessageId.S1S_REMAINING_MANA_IS_NOW_10);
                    sm.addString(getItemName());
                    player.sendPacket(sm);
                    break;
                case 5:
                    sm = new SystemMessage(SystemMessageId.S1S_REMAINING_MANA_IS_NOW_5);
                    sm.addString(getItemName());
                    player.sendPacket(sm);
                    break;
                case 1:
                    sm = new SystemMessage(SystemMessageId.S1S_REMAINING_MANA_IS_NOW_1);
                    sm.addString(getItemName());
                    player.sendPacket(sm);
                    break;
            }
            
            if (_mana == 0) // The life time has expired
            {
                sm = new SystemMessage(SystemMessageId.S1S_REMAINING_MANA_IS_NOW_0);
                sm.addString(getItemName());
                player.sendPacket(sm);
                
                // unequip
                if (isEquipped())
                {
                    L2ItemInstance[] unequiped = player.getInventory().unEquipItemInSlotAndRecord(getEquipSlot());
                    InventoryUpdate iu = new InventoryUpdate();
                    
                    for (final L2ItemInstance element : unequiped)
                    {
                        player.checkSSMatch(null, element);
                        iu.addModifiedItem(element);
                    }
                    
                    player.sendPacket(iu);
                    
                    unequiped = null;
                    iu = null;
                }
                
                if (getLocation() != ItemLocation.WAREHOUSE)
                {
                    // destroy
                    player.getInventory().destroyItem("L2ItemInstance", this, player, null);
                    
                    // send update
                    InventoryUpdate iu = new InventoryUpdate();
                    iu.addRemovedItem(this);
                    player.sendPacket(iu);
                    iu = null;
                    
                    StatusUpdate su = new StatusUpdate(player.getObjectId());
                    su.addAttribute(StatusUpdate.CUR_LOAD, player.getCurrentLoad());
                    player.sendPacket(su);
                    su = null;
                }
                else
                {
                    player.getWarehouse().destroyItem("L2ItemInstance", this, player, null);
                }
                
                // delete from world
                L2World.getInstance().removeObject(this);
            }
            else
            {
                // Reschedule if still equipped
                if (!_consumingMana && isEquipped())
                    scheduleConsumeManaTask();
                
                if (getLocation() != ItemLocation.WAREHOUSE)
                {
                    InventoryUpdate iu = new InventoryUpdate();
                    iu.addModifiedItem(this);
                    player.sendPacket(iu);
                    iu = null;
                }
            }
            
            sm = null;
        }
        
        player = null;
    }
    
    /**
     * Schedule consume mana task.
     */
    private void scheduleConsumeManaTask()
    {
        _consumingMana = true;
        ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleConsumeManaTask(this), MANA_CONSUMPTION_RATE);
    }

 

 

1 answer to this question

Recommended Posts

  • 0
Posted

anyone can help ? code below 

 

        /** The _shadow item. */
        private final L2ItemInstance _shadowItem;
        
        /**
         * Instantiates a new schedule consume mana task.
         * @param item the item
         */
        public ScheduleConsumeManaTask(final L2ItemInstance item)
        {
            _shadowItem = item;
        }
        
        /*
         * (non-Javadoc)
         * @see java.lang.Runnable#run()
         */
        @Override
        public void run()
        {
            try
            {
                // decrease mana
                if (_shadowItem != null)
                {
                    _shadowItem.decreaseMana(true);
                }
            }
            catch (final Throwable t)
            {
                if (Config.ENABLE_ALL_EXCEPTIONS)
                    t.printStackTrace();
            }
        }
    }
    
    /**
     * Returns true if this item is a shadow item Shadow items have a limited life-time.
     * @return true, if is shadow item
     */
    public boolean isShadowItem()
    {
        return _mana >= 0;
    }
    
    /**
     * Sets the mana for this shadow item <b>NOTE</b>: does not send an inventory update packet.
     * @param mana the new mana
     */
    public void setMana(final int mana)
    {
        _mana = mana;
    }
    
    /**
     * Returns the remaining mana of this shadow item.
     * @return lifeTime
     */
    public int getMana()
    {
        return _mana;
    }
    
    /**
     * Decreases the mana of this shadow item, sends a inventory update schedules a new consumption task if non is running optionally one could force a new task.
     * @param resetConsumingMana the reset consuming mana
     */
    public void decreaseMana(final boolean resetConsumingMana)
    {
        if (!isShadowItem())
            return;
        
        if (_mana > 0)
            _mana--;
        
        if (_storedInDb)
            _storedInDb = false;
        if (resetConsumingMana)
            _consumingMana = false;
        
        L2PcInstance player = (L2PcInstance) L2World.getInstance().findObject(getOwnerId());
        if (player != null)
        {
            SystemMessage sm;
            switch (_mana)
            {
                case 10:
                    sm = new SystemMessage(SystemMessageId.S1S_REMAINING_MANA_IS_NOW_10);
                    sm.addString(getItemName());
                    player.sendPacket(sm);
                    break;
                case 5:
                    sm = new SystemMessage(SystemMessageId.S1S_REMAINING_MANA_IS_NOW_5);
                    sm.addString(getItemName());
                    player.sendPacket(sm);
                    break;
                case 1:
                    sm = new SystemMessage(SystemMessageId.S1S_REMAINING_MANA_IS_NOW_1);
                    sm.addString(getItemName());
                    player.sendPacket(sm);
                    break;
            }
            
            if (_mana == 0) // The life time has expired
            {
                sm = new SystemMessage(SystemMessageId.S1S_REMAINING_MANA_IS_NOW_0);
                sm.addString(getItemName());
                player.sendPacket(sm);
                
                // unequip
                if (isEquipped())
                {
                    L2ItemInstance[] unequiped = player.getInventory().unEquipItemInSlotAndRecord(getEquipSlot());
                    InventoryUpdate iu = new InventoryUpdate();
                    
                    for (final L2ItemInstance element : unequiped)
                    {
                        player.checkSSMatch(null, element);
                        iu.addModifiedItem(element);
                    }
                    
                    player.sendPacket(iu);
                    
                    unequiped = null;
                    iu = null;
                }
                
                if (getLocation() != ItemLocation.WAREHOUSE)
                {
                    // destroy
                    player.getInventory().destroyItem("L2ItemInstance", this, player, null);
                    
                    // send update
                    InventoryUpdate iu = new InventoryUpdate();
                    iu.addRemovedItem(this);
                    player.sendPacket(iu);
                    iu = null;
                    
                    StatusUpdate su = new StatusUpdate(player.getObjectId());
                    su.addAttribute(StatusUpdate.CUR_LOAD, player.getCurrentLoad());
                    player.sendPacket(su);
                    su = null;
                }
                else
                {
                    player.getWarehouse().destroyItem("L2ItemInstance", this, player, null);
                }
                
                // delete from world
                L2World.getInstance().removeObject(this);
            }
            else
            {
                // Reschedule if still equipped
                if (!_consumingMana && isEquipped())
                    scheduleConsumeManaTask();
                
                if (getLocation() != ItemLocation.WAREHOUSE)
                {
                    InventoryUpdate iu = new InventoryUpdate();
                    iu.addModifiedItem(this);
                    player.sendPacket(iu);
                    iu = null;
                }
            }
            
            sm = null;
        }
        
        player = null;
    }
    
    /**
     * Schedule consume mana task.
     */
    private void scheduleConsumeManaTask()
    {
        _consumingMana = true;
        ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleConsumeManaTask(this), MANA_CONSUMPTION_RATE);
    }
    
    /**
     * Returns false cause item can't be attacked.
     * @param attacker the attacker
     * @return boolean false
     */
    @Override
    public boolean isAutoAttackable(final L2Character attacker)
    {
        return false;
    }

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...