L2j aCis Toggle Movement Fix

Medson

Последний из атеистов
Участник
Старожил I степени
Сообщения
41
Розыгрыши
0
Репутация
0
Реакции
4
Баллы
895
Хроники
  1. Interlude
Исходники
Присутствуют
Сборка
aCis 403
I know many people have struggled with this specific issue and had trouble setting up the correct behavior for Toggle skills in aCis. By default, toggles interrupt the player's movement (retail-like), which often feels clunky to players who prefer a smoother, more modern experience.
I've prepared a clean solution that eliminates this "freeze" and allows for fluid movement while toggling your auras. Below is the code on how to achieve this. Hope it helps!

Changes in PlayerAI.java:
  • Modified doActiveIntention to properly update the active state without stalling.
  • Removed the forced stop() during toggle casting.
  • Added a MoveToLocation broadcast to ensure other players see your movement correctly (prevents visual "teleporting" or desync).
Best regards =)

Diff:
diff --git a/aCis_gameserver/java/net/sf/l2j/gameserver/model/actor/ai/type/PlayerAI.java b/aCis_gameserver/java/net/sf/l2j/gameserver/model/actor/ai/type/PlayerAI.java
index ba0425a..1b2658d 100644
--- a/aCis_gameserver/java/net/sf/l2j/gameserver/model/actor/ai/type/PlayerAI.java
+++ b/aCis_gameserver/java/net/sf/l2j/gameserver/model/actor/ai/type/PlayerAI.java
@@ -28,6 +28,7 @@
 import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
 import net.sf.l2j.gameserver.network.serverpackets.AutoAttackStart;
 import net.sf.l2j.gameserver.network.serverpackets.ChairSit;
+import net.sf.l2j.gameserver.network.serverpackets.MoveToLocation;
 import net.sf.l2j.gameserver.network.serverpackets.MoveToLocationInVehicle;
 import net.sf.l2j.gameserver.network.serverpackets.MoveToPawn;
 import net.sf.l2j.gameserver.network.serverpackets.StopMove;
@@ -159,7 +160,10 @@
     @Override
     public synchronized void doActiveIntention()
     {
-        doIdleIntention();
+        prepareIntention();
+        _currentIntention.updateAsActive();
+        if (!getActor().isMoving())
+            thinkIdle();
     }
   
     @Override
@@ -280,8 +284,9 @@
       
         if (skill.isToggle())
         {
-            getActor().getMove().stop();
             getActor().getCast().doToggleCast(skill, target);
+            if (getActor().isMoving())
+                getActor().broadcastPacket(new MoveToLocation(getActor()));
         }
         else
         {

 
409 rev is actual.....
 
смешное то, что в лыже баг на одном скилле есть, на другом скилле, такого же типа нету)
 
Назад
Сверху Снизу