All pastes #27860 Raw Edit

Stuff

public text v1 · immutable
#27860 ·published 2005-11-07 07:37 UTC
rendered paste body
Index: C:/Development/l2j/eclipse/workspace/L2_GameserverSVN/java/net/sf/l2j/gameserver/model/quest/State.java
===================================================================
--- C:/Development/l2j/eclipse/workspace/L2_GameserverSVN/java/net/sf/l2j/gameserver/model/quest/State.java	(revision 1465)
+++ C:/Development/l2j/eclipse/workspace/L2_GameserverSVN/java/net/sf/l2j/gameserver/model/quest/State.java	(working copy)
@@ -38,13 +38,13 @@
 	// TODO - End
 	
 	/** Name of the quest */
-    public final String name;
     /** Quest object associated to the state */
 	public final Quest quest;
-	private HashMap<Integer, ArrayList<L2DropData>> drops;
-	private String[] events = emptyStrList;
-	private int[] killIds = emptyIntList;
-	private int[] talkIds = emptyIntList;
+	private HashMap<Integer, ArrayList<L2DropData>> _Drops;
+	private String[] _Events = emptyStrList;
+    private String _Name;
+	private int[] _KillIds = emptyIntList;
+	private int[] _TalkIds = emptyIntList;
 
 
 	/**
@@ -54,116 +54,125 @@
 	 */
     public State(String name, Quest quest)
     {
-        this.name = name;
+        _Name = name;
 		this.quest = quest;
 		quest.addState(this);
     }
-	
-    /**
-     * Return name of the quest
-     * @return String
-     */
-    public String getName()
-    {
-        return name;
-    }
-	
-    /**
-     * Return name of the quest
-     * @return String
-     */
-	public String toString() {
-		return name;
-	}
-	
+    
+    // =========================================================
+    // Method - Public
 	/**
-	 * Return list of events
-	 * @return String[]
-	 */
-	String[] getEvents() {
-		return events;
-	}
-	
-	/**
-	 * Return table of all NPC's ID to kill for quest.
-	 * @return int[]
-	 */
-	int[] getKillIds() {
-		return killIds;
-	}
-	
-	/**
 	 * Add mob to be killed in the list at start of the quest.<BR><BR>
 	 * @param killId
 	 * @return int : killId
 	 */
 	public int addKillId(int killId) {
-		int len = killIds.length;
-		int[] tmp = new int[len+1];
-		for (int i=0; i < len; i++)
-			tmp[i] = killIds[i];
-		tmp[len] =killId;
-		killIds = tmp;
+        _KillIds = addToIntArray(_KillIds, killId);
 		return killId;
 	}
+    
+    /**
+     * Add drop for the quest at this state of the quest 
+     * @param npcId : int designating the ID of the NPC
+     * @param itemId : int designating the ID of the item dropped
+     * @param chance : int designating the chance the item dropped 
+     */
+    public void addQuestDrop(int npcId, int itemId, int chance) {
+        try {
+            if (_Drops == null)
+                _Drops = new HashMap<Integer, ArrayList<L2DropData>>();
+            L2DropData d = new L2DropData();
+            d.setItemId(itemId);
+            d.setChance(chance);
+            d.setQuestID(quest.name);
+            d.addStates(new String[]{_Name});
+            ArrayList<L2DropData> lst = _Drops.get(npcId);
+            if (lst != null) {
+                lst.add(d);
+            } else {
+                lst = new ArrayList<L2DropData>();
+                lst.add(d);
+                _Drops.put(npcId, lst);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+    
+    /**
+     * Add NPC in the list of NPC to be talked
+     * @param talkId : ID of the NPC
+     * @return int : ID of the NPC
+     */
+    public int addTalkId(int talkId) {
+        _TalkIds = addToIntArray(_TalkIds, talkId);
+        return talkId;
+    }
+    
+    // =========================================================
+    // Method - Private
+    /**
+     * Add NPC in the list of NPC to be talked
+     * @param talkId : ID of the NPC
+     * @return int : ID of the NPC
+     */
+    private int[] addToIntArray(int[] intArray, int value) {
+        int len = intArray.length;
+        int[] tmp = new int[len+1];
+        for (int i=0; i < len; i++)
+            tmp[i] = intArray[i];
+        tmp[len] = value;
+        return tmp;
+    }
+    
+    // =========================================================
+    // Proeprty
+    /**
+     * Return list of drops at this step/state of the quest.
+     * @return HashMap
+     */
+    HashMap<Integer, ArrayList<L2DropData>> getDrops() {
+        return _Drops;
+    }
+    
+    /**
+     * Return list of events
+     * @return String[]
+     */
+    String[] getEvents() {
+        return _Events;
+    }
+
+    /**
+     * Return table of all NPC's ID to kill for quest.
+     * @return int[]
+     */
+    int[] getKillIds() {
+        return _KillIds;
+    }
+    
+    /**
+     * Return name of the quest
+     * @return String
+     */
+    public String getName()
+    {
+        return _Name;
+    }
 	
 	/**
 	 * Return IDs of NPC to be talked for the quest
 	 * @return int[]
 	 */
 	int[] getTalkIds() {
-		return talkIds;
+		return _TalkIds;
 	}
-	
-	/**
-	 * Add NPC in the list of NPC to be talked
-	 * @param talkId : ID of the NPC
-	 * @return int : ID of the NPC
-	 */
-	public int addTalkId(int talkId) {
-		int len = talkIds.length;
-		int[] tmp = new int[len+1];
-		for (int i=0; i < len; i++)
-			tmp[i] = talkIds[i];
-		tmp[len] =talkId;
-		talkIds = tmp;
-		return talkId;
-	}
-	
-	/**
-	 * Return list of drops at this step/state of the quest.
-	 * @return HashMap
-	 */
-	HashMap<Integer, ArrayList<L2DropData>> getDrops() {
-		return drops;
-	}
-	
-	/**
-	 * Add drop for the quest at this state of the quest 
-	 * @param npcId : int designating the ID of the NPC
-	 * @param itemId : int designating the ID of the item dropped
-	 * @param chance : int designating the chance the item dropped 
-	 */
-	public void addQuestDrop(int npcId, int itemId, int chance) {
-		try {
-			if (drops == null)
-				drops = new HashMap<Integer, ArrayList<L2DropData>>();
-			L2DropData d = new L2DropData();
-			d.setItemId(itemId);
-			d.setChance(chance);
-			d.setQuestID(quest.name);
-			d.addStates(new String[]{this.name});
-			ArrayList<L2DropData> lst = drops.get(npcId);
-			if (lst != null) {
-				lst.add(d);
-			} else {
-				lst = new ArrayList<L2DropData>();
-				lst.add(d);
-				drops.put(npcId, lst);
-			}
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
+    
+    /**
+     * Return name of the quest
+     * @return String
+     */
+    public String toString() {
+        return _Name;
+    }
 }
Index: C:/Development/l2j/eclipse/workspace/L2_GameserverSVN/java/net/sf/l2j/gameserver/model/quest/Quest.java
===================================================================
--- C:/Development/l2j/eclipse/workspace/L2_GameserverSVN/java/net/sf/l2j/gameserver/model/quest/Quest.java	(revision 1465)
+++ C:/Development/l2j/eclipse/workspace/L2_GameserverSVN/java/net/sf/l2j/gameserver/model/quest/Quest.java	(working copy)
@@ -201,17 +201,15 @@
 		try { res = onEvent(event, qs); } catch (Exception e) { return showError(qs, e); }
 		return showResult(qs, res);
 	} 
-	public final boolean notifyKill (int npcId, QuestState qs) {
+	public final boolean notifyKill (L2NpcInstance npc, QuestState qs) {
 		String res = null;
-		try { res = onKill(npcId, qs); } catch (Exception e) { return showError(qs, e); }
+		try { res = onKill(npc, qs); } catch (Exception e) { return showError(qs, e); }
 		return showResult(qs, res);
 	}
 	public final boolean notifyTalk (L2NpcInstance npc, QuestState qs) {
 		String res = null;
-        int npcId = npc.getTemplate().npcId;
-        int objId = npc.getObjectId();
-		try { res = onTalk(npcId, qs); } catch (Exception e) { return showError(qs, e); }
-        qs.getPlayer().setLastQuestNpcObject(objId);
+		try { res = onTalk(npc, qs); } catch (Exception e) { return showError(qs, e); }
+        qs.getPlayer().setLastQuestNpcObject(npc.getObjectId());
 		return showResult(qs, res);
 	}
 
@@ -219,9 +217,9 @@
     @SuppressWarnings("unused")
 	public String onEvent(String event, QuestState qs) { return null; } 
     @SuppressWarnings("unused")
-	public String onKill (int npcId, QuestState qs) { return onEvent("", qs); }
+	public String onKill (L2NpcInstance npc, QuestState qs) { return onEvent("", qs); }
     @SuppressWarnings("unused")
-	public String onTalk (int npcId, QuestState qs) { return onEvent("", qs); }
+	public String onTalk (L2NpcInstance npc, QuestState qs) { return onEvent("", qs); }
 	
 	/**
 	 * Show message error to player who has an access level greater than 0
Index: C:/Development/l2j/eclipse/workspace/L2_GameserverSVN/java/net/sf/l2j/gameserver/model/quest/QuestState.java
===================================================================
--- C:/Development/l2j/eclipse/workspace/L2_GameserverSVN/java/net/sf/l2j/gameserver/model/quest/QuestState.java	(revision 1465)
+++ C:/Development/l2j/eclipse/workspace/L2_GameserverSVN/java/net/sf/l2j/gameserver/model/quest/QuestState.java	(working copy)
@@ -313,9 +313,9 @@
 	 * @param npcId
 	 * @return boolean
 	 */
-	public boolean waitsForKill(int npcId) {
+	public boolean waitsForKill(L2NpcInstance npc) {
 		for (int k : state.getKillIds()) {
-			if (k == npcId) {
+			if (k == npc.getNpcId()) {
 				return true;
 			}
 		}
@@ -349,7 +349,7 @@
 		d.setItemId(itemId);
 		d.setChance(chance);
 		d.setQuestID(quest.name);
-		d.addStates(new String[]{state.name});
+		d.addStates(new String[]{state.getName()});
 		ArrayList<L2DropData> lst = drops.get(npcId);
 		if (lst != null) {
 			lst.add(d);
@@ -393,12 +393,15 @@
 	 * @param itemId : ID of the item wanted to be count
 	 * @return int
 	 */
-	public int getQuestItemsCount(int itemId) {
-		L2ItemInstance inst = player.getInventory().getItemByItemId(itemId);
-		if (inst == null)
-			return 0;
-		return inst.getCount();
-	}
+    public int getQuestItemsCount(int itemId) {
+        int count = 0;
+        for (L2ItemInstance item: player.getInventory().getItems())
+        {
+            if (item.getItemId() == itemId)
+                count += item.getCount();
+        }
+        return count;
+    }
     
     /**
      * Return the level of enchantment on the weapon of the player(Done specifically for weapon SA's)
Index: C:/Development/l2j/eclipse/workspace/L2_GameserverSVN/java/net/sf/l2j/gameserver/model/L2PcInstance.java
===================================================================
--- C:/Development/l2j/eclipse/workspace/L2_GameserverSVN/java/net/sf/l2j/gameserver/model/L2PcInstance.java	(revision 1465)
+++ C:/Development/l2j/eclipse/workspace/L2_GameserverSVN/java/net/sf/l2j/gameserver/model/L2PcInstance.java	(working copy)
@@ -900,7 +900,7 @@
 	 * @param npcId The Identifier of the L2Attackable killed
 	 *
 	 */
-	public QuestState[] getQuestsForKills(int npcId)
+	public QuestState[] getQuestsForKills(L2NpcInstance npc)
 	{
 		// Create a QuestState table that will contain all QuestState to modify
 		QuestState[] states = null;
@@ -910,7 +910,7 @@
 		{
 
 			// Check if the Identifier of the L2Attackable killed is needed for the current quest
-			if (qs.waitsForKill(npcId))
+			if (qs.waitsForKill(npc))
 			{
 				// Copy the current L2PcInstance QuestState in the QuestState table
 				if (states == null)
Index: C:/Development/l2j/eclipse/workspace/L2_GameserverSVN/java/net/sf/l2j/gameserver/model/L2Attackable.java
===================================================================
--- C:/Development/l2j/eclipse/workspace/L2_GameserverSVN/java/net/sf/l2j/gameserver/model/L2Attackable.java	(revision 1465)
+++ C:/Development/l2j/eclipse/workspace/L2_GameserverSVN/java/net/sf/l2j/gameserver/model/L2Attackable.java	(working copy)
@@ -484,7 +484,7 @@
 				L2PcInstance player = (L2PcInstance)killer;
 				
 				// Get a table containing all QuestState to modify after the L2Attackable killing
-				QuestState[] quests = player.getQuestsForKills(getTemplate().npcId);
+				QuestState[] quests = player.getQuestsForKills(this);
 				
 				if (quests != null) 
 				{
@@ -492,7 +492,7 @@
 					for (QuestState qs : quests) 
 					{
 						// Notify the Quest Engine of the L2Attackable death
-						qs.getQuest().notifyKill(getTemplate().npcId, qs);
+						qs.getQuest().notifyKill(this, qs);
 					}
 				}
 				
Index: C:/Development/l2j/eclipse/workspace/L2_GameserverSVN/java/net/sf/l2j/gameserver/model/L2Character.java
===================================================================
--- C:/Development/l2j/eclipse/workspace/L2_GameserverSVN/java/net/sf/l2j/gameserver/model/L2Character.java	(revision 1465)
+++ C:/Development/l2j/eclipse/workspace/L2_GameserverSVN/java/net/sf/l2j/gameserver/model/L2Character.java	(working copy)
@@ -485,6 +485,9 @@
 	/** Attacking L2Character (the L2Character that attacks this one) */
 	private L2Character _attackingChar;
 
+    /** List of all L2Character instance that attacked (would be used for quest) */
+    private ArrayList<L2Character> _AttackByList = new ArrayList<L2Character>();
+
 	/** Attacking L2Character's Skill */
 	private L2Skill _attackingCharSkill;
 
@@ -676,8 +679,11 @@
 	 */
     public void setAttackingChar (L2Character player)
     {
-    	if (player != this)
-    		_attackingChar = player;
+        if (player == null || player == this)
+            return;
+
+        _attackingChar = player;
+        addAttackerToAttackByList(player);
     }
 
 	/**
@@ -691,6 +697,34 @@
     	_attackingCharSkill = skill;
     }
 
+    /**
+     * Add L2Character instance that is attacking to the attacker list.<BR><BR>
+     *
+     * @param player The L2Character that attcks this one
+     *
+     */
+    public void addAttackerToAttackByList (L2Character player)
+    {
+        if (player == null || player == this || _AttackByList.contains(player))
+            return;
+
+        _AttackByList.add(player);
+    }
+
+    /**
+     * Add L2Character instance that is attacking to the attacker list.<BR><BR>
+     *
+     * @param player The L2Character that attcks this one
+     *
+     */
+    public ArrayList<L2Character> getAttackByList ()
+    {
+        if (_AttackByList == null)
+            _AttackByList = new ArrayList<L2Character>();
+
+        return _AttackByList;
+    }
+
 	/**
 	 * Return the L2CharacterAI of the L2Character and if its null create a new one.<BR><BR>
 	 */