All pastes #219804 Raw Edit

Miscellany

public text v1 · immutable
#219804 ·published 2006-10-24 21:33 UTC
rendered paste body
Index: GameServer/java/net/sf/l2j/gameserver/model/L2Character.java
===================================================================
--- GameServer/java/net/sf/l2j/gameserver/model/L2Character.java (revision 18)
+++ GameServer/java/net/sf/l2j/gameserver/model/L2Character.java (revision 29)
@@ -153,4 +153,8 @@
 	private String _aiClass = "default";
     private boolean _champion = false;
+
+    private long _lastAttackTime = 0;
+	private long _lastCurrentTime = 0;
+	private boolean _nowDoAttack = false;
 	
 	/** Table of Calculators containing all used calculator */
@@ -396,5 +400,9 @@
 		if (Config.DEBUG) 
             _log.fine(this.getName()+" doAttack: target="+target);
-		
+				
+		long ctime = System.currentTimeMillis();
+		if (ctime - _lastAttackTime < _lastCurrentTime || _nowDoAttack) return;
+		_nowDoAttack = true;
+				
 		if (isAlikeDead() || target == null || (this instanceof L2NpcInstance && target.isAlikeDead()) 
                 || (this instanceof L2PcInstance && target.isDead() && !target.isFakeDeath()) 
@@ -406,9 +414,13 @@
 			
 			sendPacket(new ActionFailed());
+			_nowDoAttack = false;
 			return;
 		}
 		
-		if (isAttackingDisabled()) 
+		if (isAttackingDisabled())
+		{
+			_nowDoAttack = false;
             return;
+		}
         
         if ((this instanceof L2PcInstance) && (((L2PcInstance)this).inObserverMode()))
@@ -416,4 +428,5 @@
             ((L2PcInstance)this).sendMessage("Cant attack in observer mode");
             sendPacket(new ActionFailed());
+            _nowDoAttack = false;
             return;
         }
@@ -433,4 +446,5 @@
             ActionFailed af = new ActionFailed();
             sendPacket(af);
+            _nowDoAttack = false;
 			return;
 		}
@@ -457,4 +471,5 @@
 				        sendPacket(new SystemMessage(SystemMessage.NOT_ENOUGH_MP));
 				        sendPacket(new ActionFailed());
+				        _nowDoAttack = false;
 				        return;
 				    }
@@ -471,4 +486,5 @@
 					
 					sendPacket(new ActionFailed());
+					_nowDoAttack = false;
 					return;
 				}
@@ -482,4 +498,5 @@
 					sendPacket(new ActionFailed());
 					sendPacket(new SystemMessage(SystemMessage.NOT_ENOUGH_ARROWS));
+					_nowDoAttack = false;
 					return;
 				}
@@ -488,5 +505,6 @@
 			{
 				if (_disableBowAttackEndTime > GameTimeController.getGameTicks()) 
-				    return;
+					_nowDoAttack = false;
+					return;
 			}
 		}
@@ -601,4 +619,7 @@
 		
 		// Notify AI with EVT_READY_TO_ACT
+		_nowDoAttack = false;
+		_lastCurrentTime = System.currentTimeMillis();
+		_lastAttackTime = sAtk+reuse;
 		ThreadPoolManager.getInstance().scheduleAi(new NotifyAITask(CtrlEvent.EVT_READY_TO_ACT), sAtk+reuse);
 	}