Main Menu

Recent posts

Announcements / Re: Forum Announcements
Last post by Sido - March 17, 2019, 08:21:17 PM
Everything should be back to normal.
Please report any problems you may encounter.
Announcements / Re: Forum Announcements
Last post by Sido - March 15, 2019, 10:44:49 PM
This weekend our community will be in maintenance as we doing some changes.
Crappy servers / Re: L2 Order VS Chaos Returns:...
Last post by sahar - March 08, 2019, 09:03:31 PM
New season coming 15/03 17:00 GMT +3.
First post updated with most recent features.
Announcements / Re: Last aCis updates
Last post by Tryskell - February 18, 2019, 03:20:09 PM
Changeset 380 (1133)

RaidBossManager rework, Admincommands, DayNightSpawnManager rework, Scripts, Cleanup, Bugfixes

RaidBossManager rework
   - Regular cleanup (CLogger, try-with-ressources, stringified queries,...).
   - Edit tasks to not be canceled, probably fixing InterruptedException on raid boss death.
   - Tweak raid boss death query in order to only update it, and not all raid bosses.
   - Fix the raid boss loaded HPs upon server restart.
   - Revert //setinvul (setIsInvul true), rename it //invul and move it on AdminEffects.
   - Add //undying, which takes back the current //setinvul behavior (setIsMortal false).
   - Add //buff <skillId skillLvl>. If no valid Creature target, use player itself. Can be used as buff/debuff.
   - Fix admincommands para_all / para (mobs were still ending current casting/attack).
   - Add admin_debug for the alt+G panel ("Information" button).
DayNightSpawnManager rework
   - Cleanup (divide by 3 the class).
   - Hellmann is moved out, to its own script. The day/night spawn is fixed.
   - Fix the issue where day/night spawns are only handled on next day/night change after server start.
   - ON_CREATURE_SEE event type is added.
   - Fix Q023 : upon saying Innocentin you didn't read the book, the quest was freezed.
   - Q024_InhabitantsOfTheForestOfTheDead is added.
   - "ForestOfTheDead" script is added. In the end, it will gather all related AIs. Handle following for now :
      - Hellmann day/night spawn.
      - Cursed Village NPCs day spawns.
      - Q023 "Maid of Lidia" night spawn.
      - Q024 night Dorian check.
   - Add a missing QueenAnt onAttack condition regarding fire spells. Ty bowling4soup.
   - NPE fix for onKill. Also allow onKill to handle custom suicide behaviours (simply check if killer is npc).
   - Complete ChangeMoveType packet structure. Ty RooT.
   - Complete TeleportToLocation packet structure.
   - Rename Creature#teleToLocation for teleportTo.
   - Addition of instantTeleportTo method (used for short distance teleport, mostly skills). GetPlayer skillhandler is edited to use it.
   - Addition of WorldObject#refreshKnownlist() method (used only by instantTeleportTo).
   - Drop unused Player constructor.
   - Move all unrelated content (spoil, soul crystals, seed,...) from Attackable to Monster (1 Map, 2 Lists, few other variables : Guard / SiegeGuard don't need such).
   - Slight Henna rework, ty StinkyMadness.

   - On teleport, the heading is now taken in consideration.
   - Fix NPE for detached Players upon //character_info use. Ty sahar.
   - Complete previous fix regarding auto-attack behavior which should stop once the target isn't autoattackable anymore.
   - Fix Q634 Dimensional Fragments drop amount/rate.
   - Anakazel rewards Soul Crystal leveling to all party members.
   - Fix a weapon equip task exploit. Ty Celestine for the detailed video.   
   - Fix ghost attacks upon stun/sleep/paralyzed/... effects. Notably visible on NPCs.
Announcements / Re: Searching for laboratory m...
Last post by Tryskell - February 02, 2019, 10:40:42 PM
Refreshed the topic !  :srsly:
Announcements / Re: Last aCis updates
Last post by Tryskell - February 02, 2019, 08:32:34 AM
Changeset 379 (1104)

Zaken, Four Sepulchers, Dimensional Rift, Cleanup, Bugfixes

   - Addition of Zaken script. Ty Asmodeus for the initial work. Numerous cleanup and fixes have been done to fit exactly L2OFF script.

Four Sepulchers
   - Big cleanup (CLogger, Maps are reviewed, merged methods, try-with-ressources,...) with a complete events cycle rework.
   - Fix NPE issue and invalid weight penalty check on FourSepulchersManager.tryEntry (called by Q620_FourGoblets).
   - Drop the 4 duplicated managers spawns from spawnlist (already handled by the Java class).
   - Fix multiple bugs/exploits related to chests interaction (they now instantly disappear).
   - SepulcherNpc onActionShift behavior is added.
   - Add the regular message broadcast "The monsters have spawned!" for Hall Gatekeepers on door opening.
   - Monsters, upon mysterious chest opening, instantly spawn. There isn't 3,5s delay.
   - The petrification effect on statues is now instant upon statue spawn to avoid statues got time to move/get aggro. Statues are also set as noRndWalk.
   - SepulcherMonster class is dropped, a script named FourSepulchers handle all old behaviors (and even more). NPCs are re-allocated as Monster.
      - Victims are removed from FleeingNPCs script to be included directly on FourSepulchers script.
      - Archon of Halisha (the ones with 18xxx npcId) are removed from SpeakingNPCs script (not retail).
      - Victim behaviour is added (run and shout while being hit by a NPC).
   - Added retail time limit upon Mysterious Boxes opening (can't open anymore after the 49th minute), with the associated message broadcast.
   - Add HalishaChest instance : animation on spawn, don't attack, don't random walk anymore.
   - Delete remnant Chapel Keys from Players on zone oust.
   - Edit begin/end timer to fit with royal_rush_npc AI, aka : 50th min game end, 55th min game registration, 0th min game start. Shouts are made from 5th min to 45th.
Dimensional Rift
   - Regular cleanup on DimensionalRiftManager (IXmlReader, CLogger,...)
   - The room choice process is entirely revamped to avoid to use do/while loops which can potentially stuck up.
   - DimensionalRiftRoom is moved in its own file. A lot of cleanup here too (_roomMobs List is dropped, Location instead of int[]...).
   - Fix an issue where getFreeRooms considered boss room as valid empty room on initial start method (Rift was considered as 1 free cell to teleport in - while there was actually none).
   - teleToLocation override is moved from Creature to Player. Player also got a new teleToLocation(Location) method which simply call the super method and avoid the rift check (used only by Rift system).
   - Regular cleanup on DimensionalRift.
      - Store DimensionalRiftRoom instead of its id, which avoid to make a lot of get on DimensionalRiftManager rooms.
      - Timer / TimerTask are replaced for Future<?> and get use of ThreadPool.
      - CopyOnWriteArrayList > ConcurrentHashMap.newKeySet().
   - More Cloggers.
   - oustAllPlayers() returns the List of kicked Players.
   - Add scriptValue as part of npcinfo.htm.
   - GameServerTable is slightly refactored : renamed to GameServerManager, get use of CLogger and IXmlReader. servername.xml is renamed serverNames.xml.
   - PlaySound complete packet structure. Ty RooT.
   - Add IXmlReader addAttributes to feed an existing StatsSet. Few StatsSet cleanup. Ty Melron.
   - Npc#onActionShift npcinfo GM content is moved on sendNpcInfos.
   - L2AttackableAIScript#testCursesOnAttack method is added and used on every GrandBoss (bosses who haven't yet been reworked aren't affected - Core and Orfen). testCursesOnAggro is also added.
   - Quest / Scripting
      - onAttack behavior is edited to allow any Creature attacker to trigger it (and not only Playable).
      - onKill behavior is edited to allow any Creature killer to trigger it (and not only Playable). Indirectly fix a huge issue, where a NPC attacker would stuck victim onKill event.
      - Following methods return QuestState instead of Player, for easier management inside quests. Associated quests have been edited.
         - getPartyMembers(Player player, Npc npc, String var, String value).
         - getRandomPartyMember(Player player, Npc npc, String var, String value).
         - getRandomPartyMember(Player player, Npc npc, String value).
         - getPartyMembersState(Player player, Npc npc, byte state).
         - getRandomPartyMemberState(Player player, Npc npc, byte state).
      - Addition of Quest#addGameTimeNotify(). You can now easily add scripts behaviours based on ingame day time.
   - Add Creature#isInsideRadius(Location loc, int radius, boolean checkZ, boolean strictCheck).
   - Add Attackable#cleanAllHate() - which clean the hate, but keep all AggroInfos (to keep track of rewards).
   - isBannedGameserverIP returns true if IP address can't be retrieved.
   - Fix the auto-attack behavior which should stop once the target isn't autoattackable anymore (include skills nextActionIsAttack behavior). Ty Kraker for fix.
   - Some crests related packets checks addition. Fix one potential client crash. Ty RooT.
   - Fix a title exploit adding a regex pattern for RequestGiveNickName. Drop isValidPlayerName.
   - Fix minions dissapearing after healing (ex : Ant Nurses)
   - MutedFolk onActionShift behavior is added.
   - Stop the current bow attack if the Player hasn't enough MP. Ty ForgeOfGods.
   - Fix the possibility to target things when incapacited.
   - Add OTHER_PARTY_IS_Broken check for duels.
   - Edit Attackable#returnHome(boolean) to use cleanAllHate() instead of _aggroList.clear(). Drop hasAI() and getMoveSpeed() checks (the first creates issues upon single player region teleport, the second is simply pointless).
   - AutoSpawnManager fix on AutoDespawner. Ty Denzel for fix.
PS : Four Sepulchers configs are all edited. Please refresh your
PS : Regular teleToLocation(Location, int) should always be used. The only counter to this rule is teleported by rift itself (otherwise you are moved back to waiting room) or eventually custom skills which teleport you (rush, etc).
Announcements / Re: Last aCis updates
Last post by Tryskell - January 16, 2019, 08:47:26 PM
Changeset 378 (1056)

MinionList, Fishing, DerbyTrackManager, Cleanup, Bugfixes

   - Addition of show_minion.
   - Fix the minion respawn (broken on last revision). Ty Ericu for report.
   - Edited minions system to fit L2OFF behavior. Ty shyr for testing.
      - Regular minions don't respawn when master is alive. They despawn only if they switch to IDLE (case of returnToRespawnPoint for others monsters).
      - Raid boss minions are untouched, they do respawn when master is alive, and instantly despawn on master death.
   - setLeader > setMaster, all uses are edited to reflect it (edited to avoid to melt with getClan().getLeader()).
   - Minions are now setMaster(null) towards master death to avoid collateral aggro once new master comes along. In order to make minions despawn, a rework of isMinion() was needed.
   - L2Fishing is renamed FishingStance. All variables and methods related to fishing are moved from Player to this class.
   - All fishing zones maxZ are reviewed (no more flying baits).
   - The way to calculate the bait location is modified.
   - Fix all issues regarding lanes swap.
   - The List of NpcTemplate is edited to be a List of Npc, which avoid to generate new Monsters instance on every race. The 24 instances are re-used, over and over. The List is shuffled, then the first 8 instances are picked as runners.
   - Current race number is now calculated based on LAST REGISTERED HistoryInfo race number, and not on number of total entries. If you manually delete old entries, it won't affect anymore the data integrity (only the data of the ticket you try to retrieve). In the same order of idea, getHistoryInfo is added to retrieve an HistoryInfo based on the saved race number, and not based on the getHistory() index anymore.
   - Minor reworks here and there (methods rename, addition of methods, Javadoc).
   - Deletion of Config.DEBUG.
   - Multiple Logger > CLogger. Improve errors log details. Ty Sahar.
   - AugmentationData cleanup (8900 > 1800 lines for skills.xml). Ty Sahar.
   - IPv4Filter cleanup. Ty svipben.
   - Slight edit of SpawnZoneType (renames and merge of identical methods). All zones are edited to reflect x/y/z caps removal.
   - Add writeLoc as part of SendablePacket, and use it where it can be used.
   - Addition of spawnMe(Location).
   - IXmlReader#parseLocation is added.
   - LoginFail / PlayFail packets static approach.
   - CursedWeapon cleanup (try-with-ressources, CLogger, static queries).

   - Fixes due to IXmlReader implementation :
      - Fix broken chaotic spawn locations loading. Ty shyr for report.
      - Fix //reload zone - Miss to reset _lastDynamicId to 0.
      - Fix //reload acar - Miss to "play" with _highestLevel. It's dropped, and accesses are set on TreeMap for easy highest level found. Fix also the log regarding master level logging in.
   - Refresh informations regarding //reload admincommand (prior to AdminData rework). Ty Toxico.
   - Fix summons forced skill cast. Ty bowling4soup.
   - Fix party-broadcasted message related to distributeItem. Ty bowling4soup.
   - Gatekeeper Arisha HTM cleanup. Add a missing loc. Ty shyr for report.
   - Add more accuracy to angle<>heading conversion.
   - PartOfCharacterHeight is set to 95 by default instead of 75 (more accurate with eyes position...).
   - //spawn default respawn time is set to 60sec instead of 0sec.
   - Addition of both //show_minion and //knownlist buttons into npcinfo.htm.
   - Let Cursed Weapon tasks run up to their current loop. Avoid InterruptedException.
   - BufferUnderflowException is handling differently, to avoid ProtocolVersion spam. Ty SweeTs.
   - Entire cleanup of isRaid(), isRaidMinion(), isMinion().
      - Introduction of isRaidBoss() and isRaidRelated() (previously named isRaid()).
      - Deletion of isRaidMinion.
      - Avoid the weird "isRaid() && !isRaidMinion()" to speak about a raid boss.
   - Fix 2 issues related to teleport process :
      - on teleport, zones are correctly registered (bug introduced on last rev). Ty SweeTs for report.
      - compass and water are correctly refreshed (bug as old as L2J).
   - //setinvul uses isMortal, not isInvul anymore. Deletion of FolkStatus, NPCs are setIsMortal(false) instead.
   - SiegeFlag alert timer is moved from 20s to 30s delay.
   - Fix all wrong NPC levels (Bosses included). Add npcId 13015.
   - Duels are now interrupted if an Attackable hit one of the duelist.
   - Add the 6 missing castle warehouse keepers on castle related NPCs (they don't exist on L2OFF data too). Ty shyr.
PS : when you want to speak about a raid boss or raid minion, simply use isRaidRelated(). isRaidBoss() returns only Raid Bosses. isMinion() returns any minion type.
Announcements / Re: Forum Announcements
Last post by Tryskell - January 11, 2019, 03:49:20 PM

  • Added back the Karma system (can be eventually used with Marketplace for an estimation of the seriousness of the people ?)
  • Created Marketplace and subcategories WTB/WTS for customers.
  • Added back middle difficulty CAPTCHA image and basic question related to aCis as minor bot protection
Announcements / Re: Last aCis updates
Last post by Tryskell - December 22, 2018, 05:28:12 PM
Changeset 377 (1020)

IXmlReader, AIs, Quests, Misc

IXmlReader - Ty Sahar
   - Drop XmlDocument and replace it by the interface IXmlReader.
   - Existing and already reworked classes which were using XmlDocument are now using IXmlReader.

   - Fix disabled AI NPCs stucking on ATTACK intention.
   - Fix minions interrupting their current cast to join the master.
   Queen Ant
      - Larva is set as disableCoreAI (it doesn't react anymore).
      - Addition of the 3 "teleport out" locations for players during Queen Ant spawn. Added back a zone corresponding to Ant Lair, to port back players.
      - Addition of onSkillSee/onAttack events for Raid Curse, which is spread for all types of ants. onAggro Raid Curse is reworked to reflect retail behavior (isn't supposed to silence mages).
      - Addition of Anti Strider Slow curse (Queen Ant onAttack behavior).
      - Rework the Nurse healing process in order it uses onFactionCall event instead of 1s task (which remove some variables).
      - Queen Ant spawn sound is corrected. Social actions amount is also corrected.
      - Nurses only heal larva and queen, not other types of faction-related ants anymore.
      - Decrease the amount of Nurses (from 5+2 (queen+larva) to 3) and Royal Guards (from 7 to 4).
      - Addition of Queen Ant behavior casting skills for following events, using retail values : onSkillSee, onFactionCall, onAttack.
      - Nurses/Royal Guards respawn time is now correctly handled (10sec Nurses, 280 + Rnd.get(40) for Royal Guards).
      - Royal Guards are teleported back on the Queen Ant zone, if out. It uses as task.
      - Queen Ant is teleported back to spawn point if out of her territory. It uses an event.
      - Royal Guards are now affected by chaos time (66% chance, tested every 90 + Rnd.get(240) seconds).

   - Addition of Q115 (made from scratch by me).
   - Addition of Q648. Ty to roko91 for the good work !
   - Fix Q403. Ty shyr for report.

    - Few HTM typos fix from the forum dedicated topic. Ty to sharers (Vampir mostly).
   - Fix a custom config (raid boss drop). Ty SweeTs.
   - Merchant HTM folder up to 31400.
   - Fix the double message on Transfer Pain (already handled by SummonStatus). Ty Sahar.
   - Drop memos associated to a deleted player. Ty ForgeOfGods.
   - ProtocolVersion accepts all legit Interlude revisions, not only the last one.
   - Tweak aggroReconsider() to don't bother with aggro lists <= 1.
   - Fix issue where circlet/reputation removal would be applied to the wrong clan after a castle siege. Ty Sahar.
   - Drop ZoneType onRevive/onDeath (unused).
   - Teleportation stuff
      - Fix a StackOverflow issue if you were using teleToLocation on following zone events : notifyExitZone / onExit.
      - teleToLocation rework ; use as low as possible advanced methods, avoid to use spawnMe()/decayMe(). Fix all issues related for using onSpawn() content.
      - Creature#setRegion handles all possible zones revalidation scenario, allowing us to get rid of revalideZone(true) from onSpawn/teleToLocation.
      - Drop Summon#onTeleported() - pet is supposed to be summoned near the owner, broadcasting packets automatically.
      - The only legit onSpawn behavior is maintained for SiegeSummon, using onTeleported.
   - MinionList rework
      - Store the current state of minion spawn/despawn in order to reuse it. Fix an issue with onMasterTeleport() - minions were created back, leading to x2 minions if respawn tasks were already scheduled.
      - Cut the number of container modification, since _minions container doesn't add/remove anymore. Only the boolean state is edited.
      - spawnMinions is only used once. It now generates _minions container content.
      - Seperate die/deletion behaviour. setLeader(null) is only set if deletion occurs (to prevent OOME).
      - Rework onMinionDie in order scripts currently affect the modification on respawn time setting (notably moving out whatever modified the respawnTime).
Announcements / Re: Last aCis updates
Last post by Tryskell - November 10, 2018, 06:36:55 PM
Changeset 376 (990)

PetitionManager, "Chaos time" system, Loot protection, Doors / Walls, Misc

   - Creation of the package model.petition to hold inner classes of PetitionManager. Move PetitionManager to data.manager.
   - HashMap > ConcurrentHashMap to avoid CMEs.
   - Generic cleanup on all those classes.

"Chaos time" system.
   - RBs are affected by chaos time, for the following rule : 20% luck to change target every 1m (set on the same task than "return by teleport to spawn" behavior).
   - RBs minions got 33% luck to change target, tested every 1m (set on the same task than their RB to avoid pointless objects).
   - I didn't see specific/general rules for GrandBosses regarding chaos system. There isn't a single method call RandomizeAttackDesire() on those scripts. The behavior is entirely dropped. Scripts would be eventually edited to reflect this change.
   This little rework will fix those issues :
      - Divide between 6 to 10 the amount of target switch.
      - The random aspect to choose the next target is now really random.
      - Slight improvement, as no action is done if the same target is chosen.
      - The logic between all conditions is normally correctly handled.
Loot protection
   - Improvement of logic behind the main damager dealer acquisition :
      - Main damage dealer isn't edited into ItemInstance.create anymore, it is now done way before to avoid to process it on every item creation.
      - "First command channel leader" as "master looter" is now also taken into consideration on custom config AUTO_LOOT.
      - setDropProtection is moved out of ItemInstance.create, into the single usage (Attackable#dropItem) to avoid pointless casting.
   - Drop the single occurence of doItemDrop(Creature), cleanup unused parameters for 2 other methods.
   - Fix the loot protection for RBs. Regular player rules apply on them. No party thing.
Doors / Walls
   - Doors HPs are visible by anyone in sieges. Ty TigVecc for report.
   - Doors/walls are anew attackable by player skills upon a castle siege progress, but deal 0 damage (cosmetic edit). Ty TigVecc for report.
   - Missing CTRL (forced attack) behavior for Doors/Walls is added.

   - Don't clear Lists on Harvest/Sweep while they are still processed, to avoid ConcurrentException - let onSpawn() handles the cleaning.
   - Implemented retail player spawn locations system. Ty vampir for the hint.
   - Desire intention can't be null anymore, to avoid NPEs (2 scenarios with _nextIntention). Ty Sahar.
   - Fix the Exception when players are riding Striders with GM Haste on and disconnect. Merge stopAllTimers() to the single-used location. Ty Sahar.
   - Add back the food task on //ride, since a simple //kill and //revive generate a food task, making it looks like an "issue" while it was a "GM feature".
   - Fix Wyvern mounted players, which got their attack speed set to 300 (static) and 150 if Wyvern is hungry. Fix indirectly the single Wyvern skill.
   - Addition of "Food for Wyvern" into the GM shop.
   - Fix Q027. Ty zarie.
   - Fix Q218 quest logic behind Talin pieces acquisition. Ty Nophaie for report.
   - Tweak calcMagicSuccess in order low level skills can affect targets (base calculated on a 30 levels difference).
   - Fix Blacksmith of Mammon - Unseal/Reseal. Ty zarie.
   - Ban/kick actions don't close the client anymore, only the logout action does it. Drop secondary logout() method.
   - Fix any Plando-like creature (throwing spears issue).
   - EffectTargetMe fix after previous Desire edit (any aggression skill).
   - Retail /clanpenalty implementation. Ty Caparso for report.
   - Fast fix for Summon PC / AV - Teleport (Portas, Flash of Splendor,...).
   - "Kailu Balu" Z spawn fix.
   - Few mini cleanups :
      - _isRaid is dropped from Creature.
      - Few lambdas use.
      - Timestamp class is moved out of Player class, to model.holder package.