Main Menu

Recent posts

#1
Newcomers, read this / Re: How to access private sour...
Last post by Tryskell - August 07, 2026, 01:08:38 PM
As already statued the 13/09/2025, initial fee raises from 200€ to 300€ from now on. You still can afford it using 200 cookies.
#2
Announcements / Re: Last aCis updates
Last post by Tryskell - August 07, 2026, 12:57:12 PM
Changeset 412 (3767)

JDK 25, Garbage shrink, GeoEngine, PathFinder, Movement, IdFactory, Skills/Items refactor, Fishing, Stats calculation, Race issues, Zones, Bugfixes, Organization


JDK 25
    - aCis officialy migrates to latest LTS, JDK 25 !
    - Make a use of unnamed variables.

Garbage shrink - reduce overall garbage (-92%~) with multiple reworks (from 17go/h to 1.4go/h).
   
GeoEngine
    - Memory-mapped geodata, avoiding ~300mo internal objects overhead and remove the geodata loading from the GC heap.
    - Replace divisions with bit shifts for block indexing (notably used by getBlock).
    - Eliminate repeated Math.sqrt() calls in the DDA loops : horizontal distance and step increments (distStepX/distStepY) are precomputed once, then accumulated (accumDist) on each iteration.
    - Implement CellWalker/LosTrace which factorize the DDA and avoid double scanning for vision checks.
    - Add a block cache (lastBlockX/lastBlockY) to avoid redundant getBlock() calls while the cell stays within the same block.
    - Add guards for the dx == 0 case (purely vertical movement) when computing slope m and distance increments.
    - Introduce LOS_HEIGHT_FACTOR to factor out the line-of-sight height calculation.

PathFinder
    - Implement retail pathfind system, using both algorithm, rules and data.
    - System is far lesser impressive than geodata ones, but is blazing fast and is strictly similar to what L2OFF is/feels.
    - New Config : PATHFIND_ITERATIONS / PATHFIND_CHASE_ITERATIONS.

Movement
    - Revert back to a shared MoveTaskManager ticking every 100ms ; no per-actor scheduled task anymore.
    - Use immutable, atomically-published MoveHolder orders (similar to CastHolder pattern) ; no lock between the order path and the tick path.
    - Implement a server-side start-accel ramp matching the client's from-standstill acceleration, simulating properly the client animation cycle over straight lines - no matter your actual speed.
   
IdFactory
    - Use a lock-free implementation rather than full synchronized.

Skills/Items refactor - Ty Bandnentans for refactor, Sahar for initial skill parsing
    - Reparse all skills and items using L2OFF AdvExt.
    - Rework many formulas to handle things as L2OFF (notably skill effect success rate, fall damage, etc).

Skills
    - Rework 15 target handlers, introducing 13 AffectScope and 7 AffectObject.
    - Introduce retail effects : 6 consume, 8 cubic, 90 instant, 97 pumps, 3 tick.
    - Introduce 44 conditions.
    - Addition of L2J channelization system, EffectInfo, EffectList - with vital reworks (using lock-based fine-grained concurrency, isLimitExceeded cleanup, effects flag recomputation use main updateEffectList loop,...).
    - Addition of EffectExpirationTaskManager, a wall-clock used to handle timers of effects.
    - Addition of //show affectscope to visualize the range effects of casted skills. Can be used to any target, as a toggle on/off, visualized by any GM (similar to //show move implementation).
    - Add icon tag over data - make a use over SchemeBuffer.
    - Known bugs fixed :
        - All skills properly consume mana (notably stances). Ty to original reporter p0w3rf1y.
        - Similar abnormal states visuals don't override each other anymore (exemple case of Silent Move and Stealth). Ty to original reporter Sim.
        - All skill related data is normally fine - until L2OFF AdvExt is wrong. Topics related to values edition were dropped. If invalid, propose another data to reparse.
        - Fix an issue with Touch of Life, disappearing from buff slot when you port (soe, teleport, GM recall).
        - Issue related to Scroll of Recovery deleting buff because related skill was using BUFF SkillType is fixed. Ty to original reporter KejbL.
        - Upon //skill remove all / set all, the expertise penalty is now properly set.
        - Skills such as Switch/Trick properly use DERANGEMENT trait. Ty to original reporter YeahThePro.
        - Skill, as container of effects, can now apply different skill powers per effect. As exemple, Blinding Blow "turning back" effect is 100%, but damage itself can fail independently. Ty to original reporter YeahThePro.
        - With new affectscope/affectobject/targethandlers :
            - Skills can't be used versus invalid targets (exemple : Tribunal towards Guards). Ty to original reporter shyr.
            - Skills can be used upon CTRL (Vortex, Archer stun, Sand Bomb) without need of pvp flag. Ty to original reporters Denzel, ErHarD.
            - Shuriel's Oracle properly heal the boss rather than themselves. Ty to original reporter Bandnentans.
        - SoE and alike skills can be properly casted by mounted Players, since RideState implementation. Ty to original reporter cross.
        - Skills without effect points don't trigger anymore any type of trigger skills (notably, Energy Stone and Infinity Rod exploit). Ty cross for report.
        - Heroic skills (aswell as a big amount of item skills) casted from any sub/main class should also be set on reuse for all other sub/main classes. Ty Bandnentans for report.
        - Effects don't refresh upon each other (sleep, root, fear, stun) - they are automatically being resisted. Ty to original reporter Kitsos.
        - Effects aren't preventively dropped - if a Stun occurs, it isn't instantly stopped if another Stun is attempted. Ty to original reporter Kitsos.
        - Madness properly temporary aggro a target, and stop to do so at end of the effect. Ty to original reporter shyr.
        - Fear doesn't make the target coming to you, it instantly goes into fear effect. Ty to original reporter shyr.
        - Cubics data and behavior is reparsed and formulas picked from L2OFF. Ty to original reporter p0w3rf1y.
        - Skill casting animation isn't "bloated" anymore by delay. Ty to original reporter deekay.
        - Clan Skill : Luck is now properly implemented.
        - Fix an issue where when an effect disappears, the thinkCast of the same skill is triggered immediately (npcId 18243 using Fake Petrification when he was able to use it, making it invul). Ty to original reporter Denzel.
        - Blows do specific sounds over critical. Ty to original reporter L2Pulse.
        - PvP Ability – The player's attack ability in Player vs. Player combat increases once they become a Noblesse. Ty YeahThePro for report.
         
Items
    - BodyPart is now an enum, cutting many switches to none (-200 lines over Inventory).
    - Arrow type method helper is now part of CrystalType enum, cutting related uses.
    - Add alias and icon tags - make a use of icon in existing "noicon" placeholders - notably //find item.
    - Known bug fixed :
        - Don't make Adena sellable. Ty DarthVader for report.
        - Upon extractable item production, both sit/Formal Wear now work. Ty to original reporter sahar.
        - All items are properly parsed, so issues such as "Skill 2188 [BEAST_FEED] isn't implemented". Ty to original reporter Jackass.
        - Soul crystals properly aggro monsters upon usage. Ty to original reporter Denzel.

Fishing
    - Add parsed data related to fishing (places, monster, rod, distribution).
    - Formulas are picked from L2OFF aswell.
    - Hot Springs Lure is now available to buy.
      
Stats calculation
    - Introduce StatusBroadcastTaskManager, used to delay all types of broadcast (karma, skill cooltime, skilllist, weight, stats, abnormals...).
        - Indirectly fix all types of stats update lacking, such as Bison Spirit Totem skills. Ty to original reporter FunnyMan.
        - Speed is still sent at-will.
    - Basic Creature stats values are now precomputed and recalculated when needed (buff, debuff, etc). There is no more calcStat when getting a basic value, which avoid calcStat over get"Stat" (getPdef, getPatk, etc).
    - Rework StatusUpdate
        - Avoid to use temporary maps, use an int array instead (less RAM footprint).
        - Packet directly pick good stats, you don't have to register it anymore (less verbose).
        - Stats are filtered before being sent.
    - Status listener is moved from Creature to Attackable, avoiding to generate and manage thousands of useless Sets.
   
Race issues
    - Casting process now uses a CastHolder, used to retain current cast data. Should avoid the random NPEs.
    - Movement process now uses MoveHolder. Fix race conditions (geopath queue could be accessed in 2 different spots, could end as a IOOBE).
    - Solve race conditions over DesireQueue, using an ArrayList + lock.
    - WorldObject (_objectId / _region as volatile, _isVisible as atomic, shorten the lock over setRegion, calling effects aside lock, inverse the order of refreshId ; we set a new id, then release old id).
    - Spawn related
        - Fixed SpawnManager leaks.
        - Added atomic maker/multispawn synchronization with rollback.
        - Secured spawn counters with CAS.
        - Introduced atomic respawn-claiming.
        - Simplified and hardened recycling logic in MultiSpawn.
        - Add MultiSpawn#isDeleted to expose the deletion state. Deleted MultiSpawn instances can no longer respawn through the scheduler.
        - Rework MakerSpawnScheduleTaskManager
            - Move from ConcurrentLinkedQueue to PriorityBlockingQueue ; poll until test fails, avoiding to iterate the whole container.
            - Emptiness check removal is down at the end, not the start - to avoid leftovers.
        - Add Spawn _npc safeguards to avoid NPEs due to potential race conditions.
    - Improve DamageZone, PoisonZone and InstantSkillZone concurrency safety and task lifecycle management.
    - Make Intention immutables.
    - Npc#onDecay now claims _isDecayed atomically ; concurrent decay paths (DecayTaskManager tick, deleteMe from scripts) can no longer run it twice and corrupt spawn accounting.
    - TradeList#confirm locks both TradeLists in a deterministic order, so two concurrent confirms can no longer each grab their own lock and silently stall the trade.
    - Product#decreaseCount uses a CAS loop, so racing buyers can no longer drive a limited stock negative.
    - Refactor death state management - provide a single source of truth for death checks and reduce the risk of state desynchronization. Should fix "Body to Mind" sync issue, where skill kills you while it shouldn't (and alike).
   
Zones
Zones no longer live in WorldRegion. They are rasterized once into a coarse TILE_SIZE (32768u) grid owned by ZoneManager, decoupled from the visibility grid. A point lookup is now a single cell read instead of scanning the current region plus its 8 neighbours.
    - Revalidation is split add-only / set-iterating:
        - entering scans only the creature's own cell (ZoneManager.revalidate -> ZoneType.addCreature), no wasted removal tests;
        - exiting iterates the creature's cached inside-zone set (Creature._insideZones), which also covers zones outside its current cell.
    - ZoneType keeps a reverse index in sync via Creature.addZone/removeZone.
    - EventTrigger visuals (castle slow traps, fences) become a real invisible WorldObject (EventTriggerObject) riding the object knownlist like retail's CEventController, replacing the ZoneType addKnownObject/removeKnownObject hooks;
    - ZoneType.onReload() releases the emitter on zone reload. Clan-hall decorations move the same way, onto ClanHallManagerNpc.addKnownObject.
    - Danger zones (Damage/Poison/InstantSkill/Swamp) split onEnter/onExit into isOn()-gated public methods plus unconditional doEnter/doExit, so a setOnOff toggle applies the effect correctly against the freshly flipped flag.
    - SwampZone drops its prior func before re-adding it to avoid stacking the slow when a movement revalidate races a toggle.
    - Admin //zone panel is paginated over the current cell's candidate zones.
   
Bugfixes
    - Fix PK killer being flagged as a PKer itself.
    - Grouped territories (territory="a;b;c") are no longer merged into a single synthetic "grouped_XXX" Territory (random location was corrupted due to Z depth merge). Ty Bandnentans for report.
    - Merge _runAiStep into _lifeTime in NpcAI (redundant) since _runAiStep was reset to 0 every 3 ticks, and this broke the % 2 follow cadence.
    - Fix rooted monster who doesn't provide XP/SP upon death. Ty Denzel for report.
    - Introduce a mechanism where hate value is cleared if monster is back to full health and aggro cleaned.
    - Clean aggro and hate upon next spawn occurence.
    - Npc#onDecay now cancels any pending scheduled despawn, preventing a stale timer from despawning a recycled, respawned Npc.
    - Npc#deleteMe now aborts attack, cast and move, releasing the Npc from shared tasks (MoveTaskManager).
    - Npc#deleteMe now severs the master/minion relationship both ways ; killing privates no longer breaks their respawn once the leader deleted itself (Stakato Nest 22108/22110 exploit). Ty Denzel for report.
    - Handle EffectZoneTaskManager NPE gracefully.
    - Improve rev. 411 "Allow blocked interaction to scan at higher range." bugfix ; now it properly reads bypasses. Ty Bandnentans for report/fix.
    - Deny arrow key movement if casting/attacking. Ty Bandnentans for report.
    - Multiple Pledge fixes :
        - Fix 2 potential NPEs upon VillageMaster.
        - Add Clan#getUnitName method.
        - Fix 1 potential NPE upon Clan#getSubPledgeLeaderName.
        - Avoid Clan#getOnlineMembers/getAllSubPledges arrays creation.
        - Fix PledgeShowMemberListAll server crash (introduced in rev 311).
    - Multiple summons/monster fixes :
        - Fix "move to" summon action, broken since movement branch and boat method implementation.
        - Fix "stop" summon action :
            - Stop summon even when returning to owner.
            - Stop attack stance.
        - Fix "attack" summon action, it only tryToAttack, no tryToFollow.
        - Implement proper behavior for attack follow, for both summons and regular Npcs (try to reach one offset surrounding target).
        - Implement proper behavior for friendly follow (offset behind the target, follow task stops if target isn't owner and destination is reached).
        - Remove tryToIdle upon Playable#stop (subject to StackOverflowException).
    - Refresh the SP display upon studying skills.
    - Fix a trade issue, where disconnected Player wouldn't clear trade window for partner.
    - Fix Castle#regTimeOver behavior. Ty Sahar for report, LaRoja for fix.
    - Fix PlayerCast NPE, occuring since Siege switch flip. Ty Sahar for fix.
    - Fix a NPE over Npc#isInMyTerritory. Ty Sahar for fix.
    - Dummy objectId deletion is now ignored. Ty TheDude for report.
    - Fix INVALID_MACRO logic. Macros aren't limited to 255 characters server-side anymore. Ty MrThirtyOddSix for report.
    - Fix and improve SetAggressiveTime logic. Ty Bandnentans for report.
    - Add missing 32049 npcId HTM. Ty Bandnentans for report.
    - Fix potential RequestRestartPoint NPE. Ty Bandnentans for report.
    - Fix Baium Desires weight. Ty Bandnentans for report.
    - Make RandomAnimationTaskManager more random - since all calls are gathered upon a similar wallclock, many Npc were sending SocialAction at the same time.
    - Fix an UnsupportedOperationException over Olympiads, prior to c2c50fa5 commit. Bad, Bad LaRoja. Ty CUCU23 for report.
    - Fix an issue over onEvtAgression (social aggro was running as a dead loop).
    - Fix a NPE over RaidPrivateStandard. Ty Bandnentans for report.
    - Adena is now charged after teleport appearing, not before. Ty Bandnentans for report.
   
Organization
    - World gets explicit coordinate helpers (worldToZoneGridX/Y, worldToRegionX/Y, worldToTileX/Y, regionIndexToWorldX/Y) and drops the expensive getRegion(ZoneType).
    - Geometry gains AShape.getBounds() (Rectangle/Triangle/Polygon) for broad-phase grid insertion, and Polygon now computes an area-weighted centroid.
    - Overload CabalType enum with maxTax.
    - Drop ChangeRecorderListener - avoid generating arraylists/arrays upon item equip/unequip (manually tracking updates became useless since InventoryUpdateTaskManager / ItemInstanceTaskManager introduction).
    - Delete TamedBeast / TamedBeastAI (unused).
    - CastleDefendTeleporter is reworked to handle NPC AI params instead of hardcoded Locations arrays - drop related custom zones.
    - Siegable#checkSides aswell as Siege#switchSides now handles Set<SiegeSide> instead of varargs - (O1) instead of (On) + EnumSet performance.
    - Npc#isLordOwner is renamed isMyLord, Npc#getPledgeCastleState does only 1 SiegeSide lookup instead of 2.
    - Few QuestVars addition (120+ entries).
    - Replace TradeList#getAvailableItems peek use (should be only used for debugging process)
    - TradeList for trade usages isn't nullified anymore, but clear(). Player#isTrading is implemented such as trade partner != null.
    - "skill" package is now part of "model" package, L2Skill is renamed Skill to follow regular convention naming. Most inner packages are renamed.
    - SkillTable is now known as SkillData and moved to "data.xml", since it only cares about XML content. DocumentBase/Item/Skill are heavily reworked, since they don't use <table> tag anymore.
    - DocumentBase, as IXmlReader, now use a static DocumentBuilderFactory.
    - Addition of few Inventory methods, such as #isInPaperdoll(Item) or #forEachPaperdollItem(Predicate, Consumer) - cutting complexity and improving performance.
    - GamePacketHandler management is fully reworked to be handled as an EnumMap<GameState, HashMap<Integer, Supplier>>.
    - Addition of PACKET_VIEWER_DEBUG Config, splitting the packet view logic from PACKET_HANDLER_DEBUG.
    - Rework HexUtil to avoid to generate any sublayered Strings, we only rely on the initial StringBuilder.
    - Rework few unoptimized methods/streams here and there (RaidPointManager#calculateRanking/getWinners, AdminFind#listDualbox, Location#getClosestPosition/getClosestPositionList, ...)
    - Implement RequestSetCastleSiegeTime packet, added back RequestSkillCoolTime packet. Introduce STATIC_PACKET version of DummyPacket.
    - FirstClassChange / SecondClassChange are reworked using record / QuestVars.
    - 50+ SonarLint warnings.
    - Rework GM Shop, delete 20% of buyLists, order Sets over //item set.
    - Drop unused Desire#getTimestamp implementation.
    - Implement a universal, lock-free, growable and highly concurrent ObjectPool. It is used to build, retain and borrow Objects of any type, leading to a complete crush of garbage for such objects at the cost of retained RAM.
    - Implement TimeUtil, a utility class to help to get current hour and minute instead of using a Calendar.
    - Implement ConcurrentSnapshotSet, a thread-safe Set tuned for read-mostly, allocation-free iteration (avoiding to compute .values()).
    - Delete #forceWalkStance / #forceRunStance methods - use #setWalkOrRun instead. Don't send any packet if running state doesn't evolve.
    - Npc follow system is cleaned up (variables are static and precalculated, follow slots is now a int[] instead of a List<Integer>). Add DEFAULT_FOLLOW_RANGE Config.
    - Move fishing variables from Player to FishingStance.
    - Multiple Object[0] > Object[]::new to save some array computation.
    - Skill#getTargetList use a static new Creature[0] to avoid to generate pointless arrays, use an ArrayList rather than LinkedList.
    - World class : #removeObjects allows Collection as parameter, #getRegion is sanitized, #deleteVisibleNpcSpawns is called over _objects, not the 45056 WorldRegion _objects lists, static methods are dropped.
    - PlayerInfoTable : #addPlayer/#updatePlayerData are now processed by a single method, #mergePlayerData.
    - Rework //enchant admincommand. It now uses a panel to properly visualize your target's items and current enchant level.
    - New helper method Npc#notifyClanAttack

Behavior edit
    - WorldRegion size is reduced from 2048 to 1024 (retail value). Still no Z check.
    - Monster don't have anymore LoS check for onSee, making them agressive through walls (retail behavior). Drop aswell the social LoS check.
#3
Newcomers, read this / Re: Public sources
Last post by Tryskell - July 31, 2026, 07:35:39 PM
New geodata and pathnode format

Geodata (under .geo) and pathnodes (under .pn) are shared.

They are used with latest master version (revision 412+)

Converters (geodata : L2J/conv.dat and pathnode .bin L2OFF format) are also available into the sources.
#4
Crappy servers / L2Gold-Enma Gold Style Pvp Ser...
Last post by GodFather - February 12, 2026, 06:45:20 PM
🔥 L2Gold Enma – High Rate PvP Interlude 🔥
Interlude Chronicle • C6 Skills • Pure PvP Experience
Welcome to L2Gold Enma, a high-rate PvP server designed for players who want instant action, balanced gameplay and nonstop PvP, without pointless grinding.
⚔️ Server Rates
XP / SP: x1000
Adena / Drops: x10
Chronicle: Interlude
Skills: C6 balanced skills
Buff duration: 2 hours
No weight limit
🎮 Gameplay Philosophy
Fast leveling, instant PvP
Clean Interlude experience
No pay-to-win mechanics
Focus on skill-based PvP

🛡� Core Features
Global Gatekeeper
Offline shops
Auto events (TvT, DM, CTF, etc.)
Retail-like Olympiad with custom balance
Active Raid Bosses
Easy access to PvP gear

🏰 PvP & Competition
Mass PvP & clan wars
Meaningful castle sieges
Olympiad focused on player skill
Balanced classes for both solo & group PvP

⚡ Why L2Gold Enma?
Interlude nostalgia with C6 skills
High rates, low grind
Stable server & active development
Community-focused updates

💥 Join L2Gold Enma and dominate the battlefield!
This is not a farm server.
This is PvP

https://l2gold-enma.com/
https://discord.com/invite/Ba9cHj3HUJ
#5
Announcements / Re: Forum Announcements
Last post by Sido - October 05, 2025, 09:13:35 AM
Maintenance is over.
Please report anything that does not look right.  :troll:
#6
Announcements / Re: Forum Announcements
Last post by Sido - September 19, 2025, 12:16:07 PM
⚠️ Please be advised that our website will undergo scheduled maintenance in the coming days.
During this time, access to the platform and related services may be unavailable or subject to temporary and permanent interruptions. The maintenance work is intended to improve system stability and performance.

Thank you for your understanding and patience!
#7
Announcements / Re: Forum Announcements
Last post by Sido - June 30, 2025, 05:13:41 PM
Some minor updates have been made to the forum.
Please report anything that does not look right.
#8
Announcements / Re: Last aCis updates
Last post by Tryskell - June 17, 2025, 09:17:23 PM
Changeset 411 (3596)

ZoneManager, Manors, Cursed Weapon, AI, Bugfixes, Organization

/!\ Fishing is currently malfunctioning. Wait next revisions for item/skills reparse + fish rework.


ZoneManager - Ty Bandnentans for the backup job
   - Rework ZoneManager, parsing L2OFF zones and associated parameters.
   - Zones are now handled by name, and not anymore by custom, dynamic, id - making them easier to invoke, and allowing retail script to invoke them aswell.
   - Zones are now extending Territory, and don't use anymore shapes (Circle/Rectangle/NPoly). Default shape is Polygon, cut into Triangles, through Territory. One more step down to delete "zone.form" package and ZoneForm class.
   - All zone types are added as L2OFF. Custom zone types are deleted (ARTIFACT, SCRIPT,...) and good names are provided (Boss = NoRestart, NoLanding = NoFly, etc).
   - NoRestart zones type (eg. previous Boss) behavior is now matching retail, and uses retail parameters aswell. It normally fixes the "instant teleport back to town when entering boss zones through few teleporters" issue.
   - Implementation of onLogin/onLogout/onEnterRegion/onExitRegion methods types for zones.
   - Implementation of EffectZoneTaskManager (a universal 666ms ticking task for all effect zones) and ZoneRevalidationTaskManager (a universal 666ms Creature revalidateZone task, avoiding multiple calls).
   - Migrate zone related Stat Func application to zone onEnter/onExit, deleting ZoneManager#getZone calls upon stat calculation (run speed, hp/mp regen).
   - Fix moving from same zone type to same zone type ; it doesn't consider to going out (hotfix). Should notably fix water re-entrance issue.
   - Delete custom CastleTeleportZone, use retail Mass Teleporter HTMs and AI params.

Manors - Ty LaRoja for fixes
   - Fix an issue where turning in crops to the Manor Lord for materials would incorrectly add adena to the castle vault instead of deducting it, while seed sales are correctly handled.
   - Fix an issue where the "Stop Purchase" button did not properly clear all crops. The last crop would remain set, and the manor wouldn't fully disable unless all adena was manually removed from the vault.
   - Introduce //manor [change], allowing manually a manor cycle to run.
   
Cursed Weapon
   - CW passive skill is properly cleaned up. Ty Denzel for report.
   - Don't store anymore Player reference on CursedWeapon.
   - Store CursedWeapon reference upon Player, rather than itemId - for faster acquisition.
   - Fix a NPE upon CursedWeapon#endOfLife.

AI
   - Fix aggressive monsters behavior. Ty Denzel for report, Bandnentans for fix.
   - Fix EvilateA/B not respawning demons. Ty Bandnentans for report.
   - Fix a conditional NPE over PartyLeaderHeretic2Aggressive AI.
   - Fix Gordon script NPE. Ty Sahar for report.
   - Move most DefaultNpc methods to Npc (npc isn't a parameter anymore, but the method caller).
   - Overload NpcAi#addCastDesire with NpcSkillType parameter, since it was hard to read and error-prone.
      Exemple with    -> npc.getAI().addCastDesire(attacker, getNpcSkillByType(npc, NpcSkillType.DD_MAGIC), 1000000);
                  -> npc.getAI().addCastDesire(attacker, NpcSkillType.DD_MAGIC, 1000000);.
   - Implement NpcMaker#areaSetOnOff and Npc#areaSetOnOff. AIs can now activate and de-activate areas based on behavior (generally spawn and dying). Uncomment all scripts areas triggers.
   - Implement Creature#isInThisTerritory, checking if a Creature is in a parametrized zone name. Uncomment all scripts areas triggers.
   - Re-introduce back RandomAnimationTaskManager for Folks. Ty Bandnentans for report.
   - getSeeRange() is now minimal Config.DEFAULT_SEE_RANGE - can't be lower - notably fix Gordon ON_SEE event.
   - Implement NODE_ARRIVED EventHandler. Fix Gordon continuously running after attacking someone.

Bugfixes
   - Sanitize the username string in AuthLogin as it is in RequestAuthLogin. Ty artemis for fix.
   - //set title is fixed (allows more than one token, and spaces between words). Add the possibility to clear title with no parameter.
   - Add a missing sysMessage upon regular Pet's name set, remove one check processed by regex (and which had invalid sysMessage).
   - Fix a "day 1" issue related to CH : if your clan was holding any CH, HP/MP regen was applied no matter the CH zone you were currently set.
   - Remove run stance upon Npc#reduceCurrentHp, making Walker run when being hit. Ty Denzel for report.
   - Fix an issue where Castle owners couldn't register for SCH. Fix the related SystemMessageId.
   - Allow blocked interaction to scan at higher range.
   
Organization
   - Config : Introduce NAME_REGEX_PATTERN and TITLE_REGEX_PATTERN, delete ZONE_TOWN Config.
   - Territory "Polygon to Triangle" algorithm is edited for an adapted version of Earcut (earcut4j without the hole handling), allowing monotone polygon and using Z-order curve index for faster spatial partitioning.
   - Rewrite Triangle#intersects method to be more accurate.
   - Drop grandboss_list SQL.
   - The few "var" are now named "variable", prior to var keyword addition in Java.
   - Update MariaDB connector from 3.1.4 to 3.5.3.
   - Add //set pvp <number> and //set pk <number>.
   - RoomInfo improvement - allocate and reuse a single List, rather than nullify it and create a new one.
#9
Announcements / Re: Last aCis updates
Last post by Tryskell - May 15, 2025, 11:01:26 PM
Changeset 410 (3371)

Makers, NpcAi / Desires, Cursed Weapon rework, Bugfixes, Admincommands, Movement, Organization


Makers
   - Fix ghost corpses.
   - Introduce task manager for MultiSpawn spawn schedule.
   - Introduce task managers for Npc respawn and despawn tasks.
   - Add missing random treasurebox maker.
   
NpcAi / Desires
   - AttackableAttack > NpcAttack, allowing ATTACK_FINISHED event over Npc.
   - Merge all reduceWeight from NpcAI operations.
   - Don't broadcast MoveToPawn packet for cast hold scenarii. CH and CP managers use hold cast. Probably way more to add.
   - Rework DesireQueue#addOrUpdate to avoid to generate a List.
   - Drop _isInHitAnimation, avoid twice runAI calls upon attack end animation, save a ThreadPool.
   - Implement Desire#isInvalid, used over the main loop to clean invalid Desires. All sided getDesires().removeIf are dropped, notably over AggroList/HateList.
   
Cursed Weapon rework
   - Fix potential task scheduling issues, reworking the whole layers. Reduce code by 1/3.
   - Use L2OFF formulas/data for item drop rate, staging process.
   - CW end duration now decreases when killing other Players.

Bugfixes
   - Revert schedule part from ThreadPool.
   - Fix Pet inventory IU. Ty Denzel for the report.
   - Fix Pet item timestamp reuse delay. Ty artemis for the fix.
   - Disable automatic beastshots when his owner dies. Ty Root for the report.
   - Player cannot craft while casting a skill, nor trade. Ty Root for the report.
   - Add missing weight checks for player/summon pickup, and player craft. Ty Root for the report.
   - Implement /graduatelist command, which displays a list of clan academy graduates for the past week. Ty RooT for the report.
   - Fix PLAYING_FOR_LONG_TIME concept ; rest message is server related, not Player related. Ty RooT for the report.
   - Player should stop movement when opening store.
   - Fix Q351 occurences of itemId 4310 by 4407 one + slight fix.
   - Fix Q365 missing memoState + poison skillId. Ty Root for the report.
   - Fix Q417 Torai despawn over cond 11.
   - Fix Q216 4 missing npcIds. Ty Karudin for the report.
   - Fix the invalid comment of DeleteCharAfterDays Config.
   - Fix NPC drop penalty level calculation. Ty Bandnentans for the report.
   - Items are now dropped in a 30/45 donut shape around dropper. Ty Bandnentans for the report.
   - PartyMatch fixes
      - Don't show Party members or CW holder as available waiting members.
      - You can't show overall List or join a PartyMatch room as CW holder.
      - CW owner, upon acquisition, leave PartyMatch system.
      - PartyMatch window is now automatically closed upon Player#removeMeFromPartyMatch.
      - Remove Player from PartyMatch if Player and newly joined Party leader PartyMatch rooms differ.
      - You can't join or be invited in a PartyMatch room if already partying/CW holding.
   - Fix ShowLicence config when set to false. Ty artemis for the fix.
   - Fix maximum number of macros. Ty artemis for the fix.
   - Fix invalid IU update over //enchant. Ty artemis for the fix.
   - Fix Castle Mass Gatekeeper HTMs. Ty kingNik0n for the fix.
   - Drop _disabledItems implementation. Won't be used by next refactors. Ty artemis for the report.
   - Fix loading handlers under debug. Ty Keku for the fix.
   - Fix character_macroses table structure (commands = 12x32 chars minimum).

Admincommands
   - Merge all old spawn admincommands (//list_spawns, //spawn, //unspawnall, //respawnall, //delete) to //spawn and //unspawn (previously //delete). Generate //help. //unspawn works over all ASpawn.
   - Merge all old fence admincommands (//spawnfence, //deletefence, //listfence) to //fence [add|remove], generate AdminFence. They now use proper Pagination. You can also teleport to it.
   - Implementation of //show manor.
   - Implementation of //set quest <id> [cond]. Related items must be hand-given.
   - Implementation of //set henna [page] [add|remove symbolId]. The hennas are still bound to game logic (slots, canBeUsedBy).
   
Movement - Ty LaRoja, Bandnentans
   - Fix Boats IOOBE.
   - Adapt getHeight logic from L2OFF.
   - Introduce back WASD movement, handle boat board/unboard.
   - Fix WATER/FLY movement logic.
   - Avoid to pathfind diagonal cells with detected obstacle.

Organization
   - Addition of QuestVars class, holding all related variables from quests (itemIds, npcIds, questNames, sounds, etc), allowing to reduce length of each script while reusing variables. 100+ cloned variables were deleted.
   - Refactor geometry package and Territory. Territory is now a unique 3D shape, holding any type of 2D geometry.
   - Remove few useless Location#clone uses.
   - Implementation of ItemContainer#forEachItem.
   - Clean many unused FrequentSkill. The whole enum is questionable.
   - Drop MathUtil#checkIfInRange, implement WorldObject#isInStrictRadius (involve collision of that WorldObject, and potential WorldObject parameter).
   - WorldObject#isIn2DRadius parameter is now a Point2D, not a Location (since a Location inherits Point2D, Location are still usable as parameter).
   - Rework Pagination#generatePages to handle page number > 1000.
   - Use Pagination over Tryskell SchemeBuffer. Ty CUCU23 for the share.
#10
Crappy servers / L2Valkyria
Last post by ErHarD - December 05, 2024, 11:25:33 PM
Good evening everyone!

The big moment has arrived! L2 Valkyria opens its doors today, 30/01/2026, at 20:00 GR time (GMT +2)!
Come join us to relive the nostalgic days of Aria and Victoria (C3) and experience Lineage 2 once again! Our server has been crafted with thousands of hours of dedication, combining the nostalgia of old school Lineage 2 with the latest features of the Classic client.
If you can handle the late nights and the "PVP in SODA," Valkyria is for you.
Come and experience this unique journey with us again!

https://l2valkyria.com/
Valkyria is based on aCis  :dw1_4: