All pastes #968919 Raw Edit

Food (Items) Implementation

public java v1 · immutable
·published 2008-04-03 11:57 UTC
rendered paste body
package net.sf.l2j.gameserver.handler.itemhandlers;import java.util.Map;import net.sf.l2j.gameserver.ThreadPoolManager;import net.sf.l2j.gameserver.clientpackets.RequestSocialAction;import net.sf.l2j.gameserver.datatables.SkillTable;import net.sf.l2j.gameserver.handler.IItemHandler;import net.sf.l2j.gameserver.model.L2ItemInstance;import net.sf.l2j.gameserver.model.L2Skill;import net.sf.l2j.gameserver.model.L2Summon;import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;import net.sf.l2j.gameserver.model.actor.instance.L2PlayableInstance;import net.sf.l2j.gameserver.network.SystemMessageId;import net.sf.l2j.gameserver.serverpackets.CreatureSay;import net.sf.l2j.gameserver.serverpackets.MagicSkillUse;import net.sf.l2j.gameserver.serverpackets.SocialAction;import net.sf.l2j.gameserver.serverpackets.StopMove;import net.sf.l2j.gameserver.serverpackets.SystemMessage;import net.sf.l2j.util.Rnd;/** * * @author  Julien Lamby */public class Food implements IItemHandler{	private static final int[] ITEM_IDS = {		3444, 4385	};		@Override	public int[] getItemIds(){		return ITEM_IDS;	}		@Override	public void useItem(L2PlayableInstance playable, L2ItemInstance item)	{		if(playable instanceof L2Summon)			return;				L2PcInstance player = (L2PcInstance)playable;				if(player.isInCombat() || !player.getAttackByList().isEmpty()) {			SystemMessage sm = new SystemMessage(SystemMessageId.S1_S2);			sm.addString("Vous ne pouvez pas utiliser cet objet en combat.");            player.sendPacket(sm);			return;		}							boolean res = false;		if(Rnd.get(100) < 5) {			res = perimePotion(player);		}		else {			switch(item.getItemId()) {				case 3444: res = usePotion(player, 3283, 1); 	break;				case 3445: res = usePotion(player, 3283, 2);	break;				case 3446: res = usePotion(player, 3312, 1); 	break;				case 3447: res = usePotion(player, 3312, 2); 	break;				case 4385: res = perimePotion(player); 			break;				default :			}		}				if(res)			playable.destroyItem("Consume", item.getObjectId(), 1, null, false);	}			private boolean usePotion(L2PcInstance activeChar, int skillId, int level) {		L2Skill skill = SkillTable.getInstance().getInfo(skillId, level);		if (skill != null)		{			if (activeChar.isSkillDisabled(skill.getId()))	        {	            SystemMessage sm = new SystemMessage(SystemMessageId.S1_PREPARED_FOR_REUSE);	            sm.addSkillName(skill.getId(),skill.getLevel());	            activeChar.sendPacket(sm);		            return false;	        }						activeChar.doCast(skill);            SystemMessage sm = new SystemMessage(SystemMessageId.YOU_FEEL_S1_EFFECT);            sm.addSkillName(skillId);            activeChar.sendPacket(sm);            			if (!(activeChar.isSitting() && !skill.isPotion()))				return true;		}				return false;			}		private boolean perimePotion(L2PcInstance player) {		int skillLevel = (player.getLevel() > 40) ? 1 : 2;		int skillId = (player.isMageClass())? 7077 : 7076;				L2Skill skill = SkillTable.getInstance().getInfo(skillId, skillLevel);		        if (player.getFirstEffect(skill) == null)        {            skill.getEffects(player, player);            player.broadcastPacket(new MagicSkillUse(player, player, skill.getId(), skillLevel, skill.getHitTime(), 0));                        CreatureSay cs = new CreatureSay(player.getObjectId(), 0, player.getName(), "*est maintenant saoul*");        	player.broadcastPacket(cs);                        player.setActionTask(ThreadPoolManager.getInstance().scheduleEffect(new Action(player), 300000));            player.setIvresseTask(ThreadPoolManager.getInstance().scheduleEffectAtFixedRate(new Ivresse(player), 2500, 30000));            return true;        }        SystemMessage sm = new SystemMessage(SystemMessageId.S1_S2);        sm.addString("Vous etes deja completement saoul n'en rajoutez pas...");        player.sendPacket(sm);        return false;	}			private class Action implements Runnable{		private L2PcInstance player;				public Action(L2PcInstance p) { player = p; }		public void run() {			player.stopActions();		}	}		private class Ivresse implements Runnable{		private L2PcInstance player;        //2 = Hello ; 10 = Laugh ; 12 = Dance ; 13 = Sad        private int[] tabActions  = {2, 10, 12, 13};        private String[] tabTextes= {	    		"je suis le roi du monde!!!",	    		"je t'aime mon pote",	    		"ouuuu ça tourne",	    		"je crois que je vais vo...",	    		"c'est la grosse *hips* a duduuuuleuuuh j'la pre...*hips*",	    		"c'est a bwar a bwar a bwaaaaar, c'est a bwar qu'il me fauuuut woooWooOOoo"	    		        };                public Ivresse(L2PcInstance p){         	player = p;        }        public void run(){	        if (player.isDead()){	            player.stopActions();	        	return;	        }	        try{	        	if(Rnd.get(100) > 30)	        		performAction();	        	else	        		performSpeech();	        }	        catch (Exception e) { }        }                private void performAction() {        	int chance = Rnd.get(100);        	int action = tabActions[0];        	        	if(chance >= 50)        		action = tabActions[1];        	else if(chance >= 35)        		action = tabActions[2];        	else if(chance >= 25)        		action = tabActions[3];        	        	String txt = "*" + RequestSocialAction.getActionString(action) + "*";			CreatureSay cs = new CreatureSay(player.getObjectId(), 0, player.getName(), txt);			player.broadcastPacket(cs);        	        	if(player.isMoving()) {        		StopMove sm = new StopMove(player);				player.sendPacket(sm);        	}        	player.broadcastPacket(new SocialAction(player.getObjectId(),action));        	        	        	//        	SystemMessage sm = new SystemMessage(SystemMessageId.S1_S2);//			sm.addString("*" + player.getName() + " " + RequestSocialAction.getActionString(action) + "*");//			player.broadcastPacket(sm);        }                private void performSpeech() {        	Map<Integer, L2PcInstance> knownPlayers = player.getKnownList().getKnownPlayers();        	        	if(knownPlayers == null)        		return;        	int i = Rnd.get(tabTextes.length);        	        	CreatureSay cs = new CreatureSay(player.getObjectId(), 0, player.getName(), tabTextes[i]);        	player.sendPacket(cs);        	        	if(knownPlayers.size() > 0) {				for(L2PcInstance p : knownPlayers.values())					p.sendPacket(cs);        	}        }    }}