All pastes #37856 Raw Edit

Miscellany

public text v1 · immutable
#37856 ·published 2006-01-21 18:16 UTC
rendered paste body
Index: C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/model/actor/instance/L2MonsterInstance.java
===================================================================
--- C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/model/actor/instance/L2MonsterInstance.java	(revision 1363)
+++ C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/model/actor/instance/L2MonsterInstance.java	(working copy)
@@ -18,6 +18,7 @@
  */
 package net.sf.l2j.gameserver.model.actor.instance;
 
+import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Random;
@@ -28,6 +29,7 @@
 import net.sf.l2j.gameserver.model.L2Attackable;
 import net.sf.l2j.gameserver.model.L2Character;
 import net.sf.l2j.gameserver.model.actor.monster.MonsterKnownList;
+import net.sf.l2j.gameserver.script.fscript.AIScriptManager;
 import net.sf.l2j.gameserver.templates.L2NpcTemplate;
 import net.sf.l2j.gameserver.util.MinionList;
 
@@ -100,6 +102,10 @@
     
 	public void OnSpawn()
 	{
+		ArrayList<Object> args = new ArrayList<Object>();
+		args.add(getObjectId()); // self
+		AIScriptManager.getInstance().callFunc(getAiClass(),"onEventSpawned",args);
+
         super.OnSpawn();
 		try
 		{
@@ -199,11 +205,21 @@
     
     public void notifyMinionDied(L2MinionInstance minion)
     {
+		ArrayList<Object> args = new ArrayList<Object>();
+		args.add(getObjectId()); // self
+		args.add(minion.getObjectId());
+		AIScriptManager.getInstance().callFunc(getAiClass(),"onEventMinionDied",args);
+
         minionList.removeSpawnedMinion(minion);
     }
     
     public void notifyMinionSpawned(L2MinionInstance minion)
     {
+		ArrayList<Object> args = new ArrayList<Object>();
+		args.add(getObjectId()); // self
+		args.add(minion.getObjectId());
+		AIScriptManager.getInstance().callFunc(getAiClass(),"onEventMinionSpawned",args);
+
         minionList.addSpawnedMinion(minion);
     }
     
Index: C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java
===================================================================
--- C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java	(revision 1363)
+++ C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java	(working copy)
@@ -28,6 +28,7 @@
 import net.sf.l2j.gameserver.model.L2Multisell;
 import net.sf.l2j.gameserver.model.L2World;
 import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+import net.sf.l2j.gameserver.script.fscript.AIScriptManager;
 import net.sf.l2j.gameserver.serverpackets.NpcHtmlMessage;
 import net.sf.l2j.gameserver.serverpackets.PlaySound;
 import net.sf.l2j.gameserver.serverpackets.ServerBasePacket;
@@ -200,10 +201,15 @@
                     NpcTable.getInstance().reloadAllNpc();
                     activeChar.sendMessage("npcs reloaded");
                 }
+                else if(type.equals("ai"))
+                {
+                	AIScriptManager.getInstance().init();
+                	activeChar.sendMessage("AI reloaded");
+                }
             }
             catch(Exception e)
             {
-                activeChar.sendMessage("Usage:  //reload <multisell|skill|npc>");
+                activeChar.sendMessage("Usage:  //reload <multisell|skill|npc|ai>");
             }
         }
 
Index: C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/GameServer.java
===================================================================
--- C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/GameServer.java	(revision 1363)
+++ C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/GameServer.java	(working copy)
@@ -34,6 +34,7 @@
 import net.sf.l2j.gameserver.handler.SkillHandler;
 import net.sf.l2j.gameserver.handler.UserCommandHandler;
 import net.sf.l2j.gameserver.handler.VoicedCommandHandler;
+import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminAI;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminAdmin;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminAnnouncements;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminBan;
@@ -66,9 +67,9 @@
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminRepairChar;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminRes;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminRideWyvern;
-import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSiege;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminShop;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminShutdown;
+import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSiege;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSkill;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminSpawn;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminTarget;
@@ -132,8 +133,8 @@
 import net.sf.l2j.gameserver.model.L2World;
 import net.sf.l2j.gameserver.model.quest.Quest;
 import net.sf.l2j.gameserver.script.faenor.FaenorScriptEngine;
+import net.sf.l2j.gameserver.taskmanager.TaskManager;
 import net.sf.l2j.status.Status;
-import net.sf.l2j.gameserver.taskmanager.TaskManager;
 
 /**
  * This class ...
@@ -376,6 +377,7 @@
         _adminCommandHandler.registerAdminCommandHandler(new AdminLogin());
         _adminCommandHandler.registerAdminCommandHandler(new AdminCache());
         _adminCommandHandler.registerAdminCommandHandler(new AdminZone());
+        _adminCommandHandler.registerAdminCommandHandler(new AdminAI());
 
         //_adminCommandHandler.registerAdminCommandHandler(new AdminRadar());
         _log.config("AdminCommandHandler: Loaded " + _adminCommandHandler.size() + " handlers.");
Index: C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/ai/L2AttackableAI.java
===================================================================
--- C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/ai/L2AttackableAI.java	(revision 1363)
+++ C:/eclipse/workspace/L2_GameServer_c4/java/net/sf/l2j/gameserver/ai/L2AttackableAI.java	(working copy)
@@ -22,6 +22,7 @@
 import static net.sf.l2j.gameserver.ai.CtrlIntention.AI_INTENTION_ATTACK;
 import static net.sf.l2j.gameserver.ai.CtrlIntention.AI_INTENTION_IDLE;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Random;
 import java.util.concurrent.Future;
@@ -44,6 +45,7 @@
 import net.sf.l2j.gameserver.model.actor.instance.L2MonsterInstance;
 import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance;
 import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+import net.sf.l2j.gameserver.script.fscript.AIScriptManager;
 
 
 /**
@@ -258,6 +260,11 @@
 	 */
 	protected void onIntentionAttack(L2Character target)
 	{
+		ArrayList<Object> args = new ArrayList<Object>();
+		args.add(_accessor.getActor().getObjectId()); // self
+		args.add(target.getObjectId()); // attack target
+		AIScriptManager.getInstance().callFunc(_accessor.getActor().getAiClass(),"onIntentionAttack",args);
+
 		// Calculate the attack timeout
 		_attack_timeout = MAX_ATTACK_TIMEOUT + GameTimeController.getGameTicks();
 		
@@ -376,7 +383,7 @@
         if (_actor instanceof L2GuardInstance)
         {
 			// Order to the L2GuardInstance to return to its home location because there's no target to attack
-			((L2GuardInstance)_actor).returnHome();
+			//((L2GuardInstance)_actor).returnHome();
         } 
         
         // If this is a festival monster, then it remains in the same location.
@@ -695,6 +702,11 @@
 	 */
 	protected void onEvtAttacked(L2Character attacker)
 	{
+		ArrayList<Object> args = new ArrayList<Object>();
+		args.add(_accessor.getActor().getObjectId()); // self
+		args.add(attacker.getObjectId()); // attacker
+		AIScriptManager.getInstance().callFunc(_accessor.getActor().getAiClass(),"onEventAttacked",args);
+
 		// Calculate the attack timeout
 		_attack_timeout = MAX_ATTACK_TIMEOUT + GameTimeController.getGameTicks();
 		
@@ -737,6 +749,13 @@
 		{
 			L2Attackable me = (L2Attackable)_actor; 
 			
+			ArrayList<Object> args = new ArrayList<Object>();
+			args.add(_accessor.getActor().getObjectId()); // self
+			args.add(target.getObjectId()); // potential victim :)
+			args.add(aggro); // aggression rate
+			AIScriptManager.getInstance().callFunc(_accessor.getActor().getAiClass(),"onEventAggression",args);
+
+			
 			// Add the target to the actor _aggroList or update hate if already present
 			me.addDamageHate(target, 0, aggro);
 			
Index: C:/eclipse/workspace/L2_GameServer_c4/build.xml
===================================================================
--- C:/eclipse/workspace/L2_GameServer_c4/build.xml	(revision 1363)
+++ C:/eclipse/workspace/L2_GameServer_c4/build.xml	(working copy)
@@ -41,6 +41,7 @@
         	<include name="bsh-2.0.jar"/>
         	<include name="jython.jar"/>
         	<include name="javolution.jar"/>
+        	<include name="FScript.jar"/>
         </fileset>
     </path>   
     
Index: C:/eclipse/workspace/L2_GameServer_c4/.classpath
===================================================================
--- C:/eclipse/workspace/L2_GameServer_c4/.classpath	(revision 1363)
+++ C:/eclipse/workspace/L2_GameServer_c4/.classpath	(working copy)
@@ -11,5 +11,6 @@
 	<classpathentry kind="lib" path="lib/mysql-connector-java-3.1.10-bin.jar"/>
 	<classpathentry kind="lib" path="lib/javolution.jar"/>
 	<classpathentry kind="lib" path="lib/sqljdbc.jar"/>
+	<classpathentry kind="lib" path="lib/FScript.jar"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>