Beginning of the cycle 380-389. Current focus : exploit fixes, scripts ending. Changeset 380 (1133) is up !

Recent Posts

Announcements / Re: Last aCis updates
« Last post by Tryskell on January 10, 2017, 12:05:23 AM »
Changeset 365 (652)

Dimensional Rift, AbstractGroup / Party / CommandChannel, Scheme Buffer, Misc

Dimensional Rift
   - cleaned up (delete _deadPlayers, unify writting style, delete single use methods).
   - Fix an issue with _isBossRoom not being fed.
   - L2 legacy website : "When the party changes (such as leaving or banning from party) in the Dimensional Rift, the party will be transported to the waiting room."
   - Remove all custom messages.
   - Fix a ConcurrentException on _revivedInWaitingRoom.
AbstractGroup / Party / CommandChannel
   - cleaning
      - enum generation, enforce types.
      - party leader reference is stored and not retrieved from .get(0) - avoid a rare IOOBE (probably occuring during leader transfer ?).
      - remove L2 prefix to Party and CommandChannel classes.
      - generate a package
      - Both Party and CommandChannel use at least the 2 initial parameters (leader / invited member type).
      - creation of AbstractGroup class, a layer shared between Party and CommandChannel.
   - Modify Party creation to be handled by RequestAnswerJoinParty instead of RequestJoinParty, which was one big exploit (party leader being considered positive to isInParty() for the whole duration of invite request - while there is no party yet created).
   - Fix "The party has dispersed" bug issue, generated if you let the invite run off (due to Party object being created and immediately deleted - main reason of the above rework), ty Marcatu.
   - Party requestor is now checked regarding pending request (he wasn't before, so you could request a trade and a party invite).
   - Strategy Guide item is now consumed on CommandChannel creation, and not simply checked. Drop getPledgeClass() check (plain wrong) and item check (handled by creation) on CommandChannel invitation.
   - Drop ALT_LEAVE_PARTY_LEADER config. Apply default party disband case to all scenarios.

Scheme Buffer
   - Available buffs are ordered as listed on XML. Ty Sahar.
   - Fix a NumberFormatException on schemes restore. Ty Sahar.

   - Fix a MysqlDataTruncation on punish_timer. Ty katara.
   - Fix TARGET_AREA_SUMMON skills type. Ty x-user.
   - Cleanup FishingSkill skillhandler, fix the penalty issue. Ty Ailierynn.
   - Introduce isUsingServerSideName / isUsingServerSideTitle to fix client/custom NPC names/titles.
   - Fix previous revision regarding AURA type skills registration on NPC templates. Ty Sahar.
   - Enforce "party size" (2/9 min/max) for Four Sepulcher and Festival of Darkness configs. Cleanup "beyond exotic" 1-man case Four Sepulcher.
   - Merchant mustn't have the option to trade Shadow Weapon coupons, only grand masters are. Refresh all Shadow Weapon related HTMs. Ty Anarchy for report.
   - Release transaction (requestor/onTransactionRequest) as fast as possible (before you were stucked in middle of a transaction on whatever returning check...). All cases are edited.
   - To keep an harmony, party duels are canceled if party is modified (added/removed member now cancels it, before only leader drop was leading to that scenario) - Dimensional Rift rule.
   - //party_info admincommand cleanup.
   - Cleanup Quest getPartyMembers / getPartyMembersState methods.
Announcements / Re: Forum Announcements
« Last post by Sido on December 13, 2016, 05:16:04 PM »
Between 13 December and 13 January you can choose to use any of our Lineage 2 Theme from >HERE<
Announcements / Re: Last aCis updates
« Last post by Tryskell on December 11, 2016, 08:39:39 PM »
Changeset 364 (636)

Scheme buffer v2, Auctioneer, Misc

Tryskell, the scheme buffer v2 !
   - skill names and descriptions, hold by XML rather than Config.
   - less panels, easier to use.
   - paging system to avoid scrolling effect.
   - no "blinking" effect.
   - Drop of BufferMaxSkillsPerScheme config (now uses player max).

Auctioneer instance is reworked :
   - bypasses work anew (caused by getCastle() refactor)
   - fix "Back" button on Bidders list (ty Anarchy)
   - Cleanup and more safety (ConcurrentHashMap, less calls of .get(), everything is try/catch, return is correctly used, paging system is refreshed).   
   - Fix Lucky skill acquisition. Ty Ailierynn for report.
   - Valakas doesn't use a dummy anymore which lighten the code and avoid to bug custom raidboss checkers showing wrong location.
   - Revert interaction range edit (100 is buggy, return back to 150) until someone decides to care about all types of range in one throw.
   - Fix Broadcasting Tower knownlist issue. Methods are sync-ed with observe olympiad. Drop _observerMode boolean (can be guessed with clever use of _savedLocation). inObserveMode() renamed for isInObserveMode().
   - Fix the "unhandled slot type" issue. Ty Sahar.
   - Addition of Flame/Control infos on castle admin panel.
   - Wrath skill enchant route fix. Ty Sahar.
   - Olympiads : No forced stand up on L2OFF.
   - Olympiads : You are teleported back to a random town location, not your saved location.
   - teachTo is slightly edited ; avoid to generate 6k empty ArrayList and drop most of getters. Ty katara.
   - Rework the NPC skills holding system, avoid to generate 28k empty ArrayList.
   - Rework L2TamedBeast (cleaner version).
   - Fix previous revision regarding GrandBoss using returnHome. Ty Sahar.
   - Fix social/abnormal admin panels/commands. Ty katara for report.

Ty to SweeTs for buffer design and Sahar for XML definition.

Crappy servers / Re: L2 Order VS Chaos returns: 25/11 !
« Last post by sahar on November 26, 2016, 01:30:45 PM »
Server started succesfully, dozens of players, don't miss it out!

Crappy servers / Re: L2 Order VS Chaos returns: 25/11 !
« Last post by sahar on November 25, 2016, 09:51:13 AM »
Announcements / Re: Last aCis updates
« Last post by Tryskell on November 19, 2016, 01:54:50 AM »
Changeset 363 (617)

Benom, Castles, Castle Manor, Event listeners, Sieges, Seven Signs, Inventories, Misc

   - Addition of Benom script.

   - CastleManager cleanup by svipben. Castles are hold on a Map, the key being castleId.
   - Castle doormen "busy" HTM is shared among all instances (39 HTMs dropped).
   - Drop _siegeRegistrationEndDate. The registration end time is now directly calculated from siege date (siege date - 1 day). It could generate issues if you didn't edit both times. regTimeEnd dissapears from castle.sql.
   - Static informations are now loaded from castles.xml (circlet id, related tickets, related NPCs, artifact id) and have been unhardcoded.
   - Create MercenaryTicket model, holding ticket infos. Each Castle got its own List of static tickets.
   - NPC getCastle() is entirely cleaned up and generated from castles.xml.
   - Castle model must be generated from a castle id and castle name.
   - Drop entirely castle index logic wherever it was used (replaced by castleId logic).
   - Move removeCirclet logic from CastleManager to Castle.
   - Avoid to generate pointless integers for each L2WyvernManager.
   - Add retail HTMs and core logic for Mercenary Managers. Introduce Seven Signs buylists (show different output depending who is currently owning the Seal of Strife).
   - Castle entity rework :
      - now holds Set<ItemInstance> _droppedTickets (before held by MercTicketManager).
      - now holds int _circletId (before held by CastleManager).
      - now holds List<Integer> _relatedNpcIds (before was generated on the fly using weird castle index and distance check).
      - now holds List<MercenaryTicket> _tickets (before held by MercTicketManager on multiple splitted static arrays ; which weren't even holding Seven Signs state).
      - now holds List<L2Npc> _siegeGuards (before held by MercTicketManager).
      - Artifact is now linked by id, and not by instance.
   - Dropped tickets are now processed by ItemsOnGroundTaskManager.
Castle Manor
   - L2Manor (seeds.xml parsing) is merged with CastleManorManager. Castles related procure/crop lists are moved to CastleManorManager aswell (easier to handle database storage that way).
   - The different internal classes are now moved into model.manor package.
   - Addition of ManorMode enum.
   - CastleManorManager follows latest L2J for the writing style.
   - Complete ExShowCropInfo, ExShowCropSetting, ExShowManorDefaultInfo, ExShowSeedInfo, RequestSetSeed packets.
   - Delete 6 admincommands related to manor. Keep only //manor, based on latest L2J. Incorporate //manor into game_menu.htm.
   - Fix seed/harvest issues.
   - CastleUpdater is dropped. The automatic saving is now handled on CastleManorManager (save manor states every 2h). No more alternative saving Config.

Event listeners
   - Addition of an event layer for sieges addSiegeNotify(castleId). Rework the system to handle siege status with an Enum, under SiegeStatus (which drops 2 booleans).
   - Item listener is now lazy initialized (as it was used for a single item until now, which avoid to generate 6k empty lists for nothing).

   - Teleport system during siege is entirely redone and fixed. All ppl are moved to second closest town, no matter what.
   - Drop SiegeManager and split content between castle entity initialization, Config, CastleManager. getSieges() method is dropped, use getCastles() / getSiege on a for loop to get them.
   - When a Life Control or Flame Control Tower is destroyed, a little, not-attackable version of it spawns.
   - Add 2 SystemMessage related to sieges (when all life controls are destroyed, and when you try to use L2Doormen open/close doors function when castle is being sieged).
   - Add Ressurection siege conditions (can't ress if not participant to a siege, if attacker hasn't a flag or if defender hasn't anymore Life Crystals).
Seven Signs
   - Introduce following Enums : CabalType, SealType, PeriodType. Those enums are 'improved versions' and hold more infos (which avoid few static methods).
   - Due to previous change, all seven signs related tables must be edited.
   - Complete cleanup, which avoids sometimes 15-18 .get() calls and avoid String operations (notably on cabal type).

   - Drop Warehouse abstract layer, and slight cleanup on Inventories.
   - Creation of ItemState Enum to enforce item related modifications.
   - Replace ItemContainer CopyOnWriteArrayList for ConcurrentSkipListSet (because of terrible performance on write).
   - Order items (avoid the items jump on inventories), based on inventory's item addition (similar to L2OFF ; I didn't see other rule). We use an unused ItemInstance variable to store it, _time.
   - Edit items.sql to optimize datatypes. Drop useless column time_of_use.
   - Drop ItemInstance.changeCountWithoutTrace (single use).
   - Drop L2PcInstance._arrowItem (no uses).
   - Cleanup L2PcInstance.reduceArrowCount (probably can be replaced entirely by a simple destroyItem) && checkAndEquipArrows.

   - Due to mercenary tickets handling edition, ItemsOnGroundTaskManager has to be mandatory, so SaveDroppedItem config is now dropped to avoid admin "lack of brain" issue. All timers and configs are still reachable.
   - Drop StartingAdena config (value was wrong, and it can be handle with another config).
   - Edit default GC type for CMS, which avoid lag spikes.
   - Fix pet gain system (wolf, sin eater, etc). Ty Erlandys for the complete fix.
   - Drop deprecated KnownListUpdateInterval config, ty SweeTs for reminder.
   - Cleanup L2PcInstance.storeEffect() - ty svipben.
   - getName() / getTitle()
      - Headquarters name/title follows L2OFF. Ty RooT for fix.
      - isCustomNpc() approach is given up. We rely on templates to feed name/title, but current name/title can be changed (which fixes changename admincommand).
      - changename is merged with setname. Both changename and changename_menu commands are dropped. You can now settitle on L2Npc (it is temporary, similar to setname).
   - HennaTable StatsSet is re-used (avoid to generate 180 HashMaps).
   - MapRegionTable uses getInstance() logic (that's the point of singleton).
   - Edit TownZone "taxById" variable to "castleId", which is friendlier to understand.
   - Merge summon conditions SiegeManager.checkIfOkToSummon && SevenSigns.checkSummonConditions in L2PcInstance.checkUseMagicConditions (single use).
   - L2PcInstance.isCastleLord is cleaned up (compare castle ids directly, not godamn Castle entities).
   - Cleanup GatekeeperSpirit script.
   - Fix NPE on ExListPartyMatchingWaitingRoom, ty sahar for report.
   - //create_set admincommand is extended :
      - armorsets.xml now hold set name. ArmorSetsTable use StatsSet to feed ArmorSet objects.
      - A new panel is generated with existing sets (because good luck to remember chestId).
      - ArmorSet model is cleaned up.
      - CastleManorManager seeds parsing is slightly edited (StatsSet is reused).
      - Clicking on "Item" button simply popup itemcreation.htm.
   - Duel system : partymatch system is ended for any players (was written as TODO since Duel rework).
   - Edit checkEffectRangeInsidePeaceZone x, y, z parameters for Location.
   - Move and cleanup signet cast condition from L2Character to L2PcInstance.checkDoCastConditions.
PS : castle guards spawn (from neutral castle) system isn't yet processed. Don't report it.
PS : due to heavy changes, it is STRONGLY adviced to make a clean installation of tables if you got no clue about what you are doing.

Due to the HUGE amount of edited engines (Seven Signs, Manor, Castles, Sieges,...), consider it as a part I, even if it's not finalized. I need your reviews to complete the part II. This changeset, in term of coding, worth 3 to 4 regular revisions. Unfortunately, as everything depends of everything, it couldn't be done of another mean.

Some things have been voluntarly broken - I think notably about NPC guards, but most shouldn't. Consider to report everything. Due to the amount of code, I couldn't test all, and didn't test Benom, Seven Signs && Manor.
Crappy servers / Re: L2 Order VS Chaos returns: 25/11 !
« Last post by sahar on November 13, 2016, 09:06:15 PM »
Up up, server coming back 25/11, read first post for updated feature list.
Crappy servers / Re: L2 Perseus Starts Tomorrow!!
« Last post by nighty on November 05, 2016, 02:29:00 AM »
No more perseus  :dw1_2:
Sold, dead, end of story :D
Crappy servers / Re: L2 Perseus Starts Tomorrow!!
« Last post by Allstars on October 29, 2016, 11:19:37 PM »
where is lamborghini or ferrari!!! :serious:

l2perseuse have a good developer but have to much imagines!
Announcements / Re: Forum Announcements
« Last post by Sido on October 03, 2016, 10:39:58 AM »
Maintenance period ended and we decided to not remove PM's.
Please report bugs you find here:
Opinions can be written there as well.