Author Topic: [Project] aCis - Interlude  (Read 106132 times)

0 Members and 3 Guests are viewing this topic.


  • Full Member
  • ***
  • Posts: 162
  • L2topzone Votes: 25
  • Servers reviews: 0
  • Reputation: +290/-0
    Re: [Project] aCis - Interlude
    « Reply #220 on: October 21, 2015, 02:45:11 PM »
    Changeset 353 (444)

    Pets, Misc

       - Split L2PetData && L2PetLevelData : L2PetData is now merged with the new PetTemplate, while L2PetLevelData is renamed PetDataEntry.
       - Data is parsed using L2OFF : Fix all base values (int to double) and add numerous missing stats.
       - Added template based autoFeed, hungry and unsummon limits (respectively 55, 50 and 40% : before only 55% was used). Rework associated checks, drop isHungry().
       - Added messages for pet items equip/unequip.
       - Fix the walking/running and food visual updates on pet window when autofeeding.
       - Added distance check for player > pet items transfer.
       - Fix a critical issue with pet > player inventory transfer on pet unsummon.
       - Fix doesPetNameExist method to fit with L2OFF (also avoid String operations).
       - Fix the annoying issue with summons single attack (erm, my fault).
       - NpcTable is fully reworked. We avoid 2 loops to check XML content.
       - Drop L2NpcAIData object, the content is merged with NpcTemplate.
       - ClassId Enum got a static VALUES .values() to avoid to generate arrays on call.
       - NpcTemplate is organized ; setRace is cleaner, Race Enum is edited to reflect that change. Drop of "single-uses" methods to avoid pointless calls.
       - NPCs skills are now taken directly from NpcTemplate, instead of being cloned into L2Character. Save 41k+ maps, roughly 15mo of RAM.
       - StatsSet : getBool() is slightly edited. Addition of getStringArray(), getList() and getMap(). Drop of isSet(), which is containsKey() clone.
       - Light cleanup on HelperBuff system (L2HelperBuff moved and renamed, drop of id variable, drop of setters, etc).
       - Drop Server class, which was holding 3 int. Rework Config and associated classes accordingly. Ty Hasha.
       - //reload admincommand allow the use of numerous parameters (//reload skills npc acar, for example).
       - L2AuctioneerInstance RooT's fix.
    PS : don't forget to edit npcs XMLs to reflect changes (pet data is holded by NpcTable, and AI type is setted in CAPS to fit with Enum).
    PS2 : a second part will come with fixed xp system (wolf, strider, hatchling) and stats for pets (correctly loaded but not yet correctly calculated).

    Geodata is now mandatory.
    L2D type geodata is too mandatory.
    In case you were using L2D geodata, consider to convert anew the geodata you were using, as the type of L2D has been edited. Using an older L2D geodata will lead to ingame issues.

    Changeset 354 (460)

    GeoEngine (part II/III), DropProtection drop, ObjectPoly drop, ObjectPosition drop, Misc

    GeoEngine - part II

       - merged geodata and pathfinding packages/classes, now we have only one Geoengine package and Geoengine class - better structure overview and removal of unnecessary calls between PathFinding and GeoData.
       - simplified inheritance: new Geoengine abstract class now contains as many methods as possible (common methods to any geoengine model), each geoengine model contains only own/specific methods -> like -70% of code over whole geoengine package (duplicates, getters, ...).
       - Geoengine is now mandatory to start up server because of new upcoming features (doors, fences, new npc spawn manager) - cleaned up configs and related classes.
       - adding missing javadoc everywhere, adding comments to critical sections.
       - merged GeoData and PathNode admin handlers/commands.
          - implementing back Block-based geodata model prior to geo part III.
          - dropped all "new IndexOutOfBounds()" thrown every time we are accessing layer, that does not exist - geodata conversion speed +200%.
          - renaming block classes for better identification.
          - geoengine now loads only diagonal geodata (L2D format), due to overall performance reasons, updated configs with info.
          - implemented another way of accessing block data - indexes. Index-based approach should be faster for multilayer block, when accessing both, NSWE and height of particular cell (should have double performance compared to current getter-based model...upon specific conditions).
          - GeoEngine is no longer abstract class, it contains geodata. GeoEnginePathfinding extends GeoEngine and contains pathfinding related methods.

       Path-checking & Pathfinding
          - fixed line of sight check, though walls without geodata, ty Root for report.

       Converter & L2D geodata
          - dropped own block classes, using geoengine blocks and updating them with necessary methods.
          - updated geodata conversion with few cases/conditions leading to slightly more acurate geodata on rare ocasions (100-1000 cells per region file).
          - L2D geodata for multilayer block are now aligned same way as for L2J/L2OFF (from highest layer to lowest one), leading to drop of the sorting mechanism, overall simplicity and much faster conversion.
          - dropped logger class, using standard output now, improved instructions (for dummies).

    GeoEngine - part III

          - added IGeoObject interface to create basic definition of geo object, when any object implements IGeoObject interface successfully, the object can be added/removed to/from geoengine and geodata can be affected by it.
          - created IDynamicBlock interface, added BlockComplexDynamic and BlockMultilayerDynamic classes to support dynamic geodata when IGeoObject is added/removed to engine.
          - updated GeoEngine with methods to add/remove IGeoObject, created the normal block to dynamic block conversion.

          - written own parser to get XML from L2OFF data, new XMLs now contains more and accurate parameters (e.g. doors have level now, it is used for Unlock skill chance calculations).
          - doors are parsed using combination of IL (Vanganth) and GF (Sublimity) datas (thanks for shares) - that means, we have also all doors for future implementation of Fortresses now (340 -> 547 doors total!).
          - checked and corrected all spawn coordinates of doors (L2OFF uses spawn coordinate at the edge of door, we need it in the center) + it contains Z coordinate from geodata (this will help with further implementation of doors and its geodata creation).
          - created DoorTemplate to contain data from XML files, L2DoorInstance use the template in constructor - same approach as for NPCs.
          - massive cleanup and reorganization of L2DoorInstance.
          - updated HTML info window, to show all parameters - so sexy now.
          - auto-open/close task improved, using strictly timers from template, cleaned up scripts.
          - updated/cleaned DoorInfo and DoorStatus packets, added missing parameters.
          - added L2OFF posibility for doors to control another door - multiple open/close at same time.
          - implemented IGeoObject interface and updated DoorTable with proper loading mechanism for it.

          - added FenceTable, L2FenceInstance, ExOlympiadFenceInfo packet.
          - updated admin spawn commands to spawn fences correctly.
          - implemented IGeoObject to L2FenceInstance and updated FenceTable to support dynamic geodata - client sends StopMove packet, when character make collision with fence.

    DropProtection drop

       - Drop DropProtection class ; rework an existing system to do the same work.
       - Rework L2PcInstance.isInLooterParty() and rename it isLooterOrInLooterParty().
       - dropItem()
          - L2Attackable : No more items template checks.
          - L2PcInstance : No more options to secure player drops. Save a inventory.getItemByObjectId on intentional player dropItem().
       - L2PetInstance.doPickUp() : Drop a double setIntention IDLE.
    ObjectPoly drop

       - Drop ObjectPoly class, hold directly variables into L2Object.
       - Add a Enum to enforce cases type (DEFAULT, ITEM, NPC). All checks are based on PolyType.
       - Add few checks, notably item template and possible targets.
       - Add the possibility to polymorph a NPC (regular or L2Attackable).
       - Drop SpawnItemPoly packet (redundant with SpawnItem packet).
    ObjectPosition drop

       - Drop ObjectPosition with correct use of override, leading to a shitload of dropped cast. All methods are moved into L2Object.
       - spawnMe methods are harmonized.
       - Fix an issue with setRegion (code was running twice).

       - L2PcInstance : Rename setProtection to setSpawnProtection (to avoid to melt with item protection).
       - Fix subclass height/radius issue, prior to changeset 351.
       - L2CharPosition is dropped. Use Location for IntentionMoveTo, and SpawnLocation for the leftover.
       - Add MathUtil.limit method (pickup min or max limits if reached, from a default value).
       - Use spawnMe() when spawnMe(int, int, int) isn't needed (avoid to write location).
       - Drop all useless occurences of L2WorldRegion.removeFromZones(this) checks, check which is already done by decayMe() > setRegion(null) from L2Character override. In the same order of idea, drop occurences of L2World.removeObject(this), already done by decayMe().

    Geodata is now mandatory.
    L2D type geodata is too mandatory.
    In case you were using L2D geodata, consider to convert anew the geodata you were using, as the type of L2D has been edited. Using an older L2D geodata will lead to ingame issues.


    • Full Member
    • ***
    • Posts: 162
    • L2topzone Votes: 25
    • Servers reviews: 0
    • Reputation: +290/-0
      Re: [Project] aCis - Interlude
      « Reply #221 on: November 11, 2015, 07:56:44 AM »
      Changeset 355 (477)

      Movement fix, PetData part II, L2Attackable AI, Lottery, Announcements, Misc

      Movement fix
         - Fix strange movement rollback on skill spam.
         - Fix stackoverflow issue.
         - Fix target status (little circle color becoming red on attack).
      PetData part II - ty Hasha
         - PetDataEntry uses a recycled StatsSet to feed values (short writing style).
         - Mounted players stats are fixed (regular/swim/fly speeds included).
         - Regular pets stats are fixed.

      L2Attackable AI
         - L2Attackable won't buff players anymore.
         - L2Attackable can now buffs when they are in attack mode (in order of skills preference : after heal, but before debuff).
         - Lottery Ticket message fix (doesn't show enchant anymore). Ty RooT.
         - Lottery HTMs table fix. Ty RooT.
         - Fix the lottery instructions %prize% tags.
         - Add default prize to leftover to calculate new lottery prize.
         - Fix an ArrayIndexOutOfBoundsException for empty //announce. Cleanup adminhandler.
         - Edit Announce panel, replacing edit button for a multiedit (allow more than 16 characters message). The typing is more flexible, with 3 visible lines output.
         - Fix L2WorldRegion onDeath() / onRevive() - was triggering all L2WorldRegion zones, no matter if character was inside or not.
         - Slight revision revert for dropItem (fix the issue where you drop the entire stack of an item even if you put lower amount).
         - Calculation of evasion/accuracy is now precomputed into Formulas.BASE_EVASION_ACCURACY.
         - Put defaults values for AI type data (fixing Headquarters spawn, prior to NpcAIData drop).
         - Slight geoengine fix regarding multilayers (most notably fortress) when using an high character's height.
         - Some HTM typos (from "Hunt HTM typos!" topic).
         - Drop PlayableKnownList (no use).
         - Edit knownlist ranges to follow L2J.


      • Full Member
      • ***
      • Posts: 162
      • L2topzone Votes: 25
      • Servers reviews: 0
      • Reputation: +290/-0
        Re: [Project] aCis - Interlude
        « Reply #222 on: January 27, 2016, 10:47:52 AM »
        Changeset 356 (494)

        L2Attackable, Packets stuff, MultisellData, Misc

           - Reduce global aggro timer, from 2min to 1m30.
           - Edit chasing mob distance check. Passive and aggressive mobs leave fight if a 2000 distance is reached.
           - Drop attackRange from CharTemplate. Edit NPCs XMLs to reflect the change. Monsters use directly weapon range. Fix NPCs archers range (from 1100 to 500).

        Packets stuff
           - SignSky packet rework :
              - Rename SkySign for SSQInfo.
              - Add missing parameters (red / regular), and make possible packets static.
              - Edit admin panel to reflect those changes.
           - Add a check on ChatAlliance to avoid crafted packet. Ty RooT.
           - Harmonize RequestSetPledgeCrest/RequestExSetPledgeCrestLarge (integrity checks, SystemMessages, writing style).
           - SkillCoolTime fix, ty Denzel for report.
           - Players name must be between 3 and 16 characters. Optimize one check. Ty Denzel for report.
           - Possibility to use String for multisell names, using hashCode. Ty lord_rex.
           - Move multisells to data/xml folder. Slight content edit (drop entry id, ma'i'ntainEnchantment typo, drop enchant tag).
           - Latest L2J version, introducing :
              - Entries get their ids handled dynamically.
              - Improved performance (less item template calls, no Ingredient objects for temporary adena case, no dummy objects for enchant case).
              - getMultisell / setMultisell on L2PcInstance : you can't send crafted packet with a simple multisell id, the content must be generated before.
              - Introduction of <npcs> tag, to lock multisell lists to certain npcIds.
              - Equipped items aren't part of possible multisell trades.
              - Fix isStackable flag on MultiSellList packet.
           - Fix UNDEAD issue. Overzeal cleaning can lead to that sort of issue. Ty lord_rex.
           - FeedTask NPE fix. Ty lord_rex.
           - Better WeaponEquipTask behavior (doesn't cancel the whole process if you still attack).
           - Edit map_region.xml (fix 3 catacombs respawn location). Ty Hasha.
           - Fix following target issues :
              - level color takes time to change.
              - summons/pets HPs and level color aren't shown.
           - Fix Asamah HTMs (multiple typos). Add Trap Stone multisell 010.xml. Ty Denzel.
           - Addition of missing minions for Marilion boss. Ty Denzel.
           - Fix Banish Seraph, Recharge and Fisherman's Potion skills, prior to rev 434 and Race rework. Ty Sahar for report.
        PS : multisell data has been edited. Use new data, don't cp old multisell folder.

        Changeset 357 (515)

        Duels, Doors, Misc... And Hasha stuff preparing to incoming SpawnManager :D.

           - Add the missing getTeam() packet update for summons/pets (was written as TODO).
           - Fix countdown behavior (can't send duel requests, as you are now considered as being in duel). Add DuelState ON_COUNTDOWN to manage behaviors.
           - Drop _isInDuel internal boolean. isInDuel() can be resolved with _duelId > 0.

           - Correct open/close task && opened doors on server start.
           - Handles correctly miss of geodata if a cell where a door is located isn't loaded.

           - Drop StatusUpdate packet on addLevel (redundant with UserInfo). Ty RooT.
           - AllowFishing config is dropped, due to Geodata being mandatory. Ty svipben for report.
           - Fast fix for eaten ss/bss on potion use. Ty Hasha.
           - Fix 4 out of 9 CastleTeleportZone (reverted negative values leading to IllegalArgumentException). Ty dzumara for report.
           - Remove NPCs siege guards during midVictory. Ty dzumara for report.
           - Fix the *** issue about player client freeze (upon logging on).
           - Fix NPC hate behavior "spread". Adds a 2000 distance check for siege guards (like mobs).
           - Fix "ghost" attack action during skill cast. Ty Kraker.
           - FeedableBeasts script : ConcurrentException and NPE fixes. Ty Kingzor for report.
           - Few boolean checks cleanup. PrivateStoreType > StoreType (just to be shorter).
        Hasha patch 71
           - GrandBossManager doesn't handle anymore boss zones related stuff. ZoneManager handles it.
           - All shapes are reviewed and optimized.
           - OlympiadAnnouncer is merged with Olympiad class, the result is optimized.
        Hasha patch 72
           - SpawnListener class drop.
        Hasha patch 76
           - Edit NPCs templates to fit with new SpawnManager (no effect atm, but it will be needed later on).
           - //msg admincommand is moved on more appropriated adminhandler.
           - Addition of StringUtil.getTimeStamp, which allows to get a formated second time under (h m s) format.
           - RaidBossInfo script initialization is optimized using correctly L2Spawn class concept.
           - L2Spawn rework
              - x, y, z and heading infos are now stored under SpawnLocation, allowing nice shortcuts and few optimizations.
              - startRespawn()/stopRespawn() > setRespawnState(boolean)

        Side note : it's perfectly normal you receive warning about spawns. I was lazy to edit spawnlist, as it will dissapear soon anyway. Don't create threads about it.


        • Full Member
        • ***
        • Posts: 162
        • L2topzone Votes: 25
        • Servers reviews: 0
        • Reputation: +290/-0
          Re: [Project] aCis - Interlude
          « Reply #223 on: February 06, 2016, 08:49:04 AM »
          Changeset 358 (525)

          AIs, L2Attackable, Quests, Misc

             - Refresh all scripts writing style (caps lock for static, etc).
             - Cleanup FleeingNPCs script.
             - Rework entirely and optimize Gordon (static path nodes, drop of numerous pointless variables, "one task to rule them all").
             - Few tweaks and improvements for Dr Chaos (static Strings, fix a bug on paranoia_activity task).
             - Drop AbstractAi, L2AttackableAiScript becomes anew the AI "mother". Change the way npcId registration is handled, fixing events override issue. Ty Hasha.

          L2Attackable (E.T Phone Home)
             - Mobs return to their home walking (and not running).
             - Faction call logic is changed. Fix the behavior where one monster could bring a whole room if you were running with him.
             - Tweak returnHome spawn point radius check (20 for guards, 300 for monsters).
             - Remove a redundant execution of leader/minion method.
             - returnHome is instantly processed, it doesn't depend from random walk % rate.
             - All 3rd class quests are, anew, functional (were broken prior to ScriptManager edit). Ty emanueld for report/fix.
             - Fix Q643 "missing htm" error. Ty Kingzor for report.
             - Partial rework of Q021 :
                - The route is tweaked (3 static nodes). Few NpcString are replaced.
                - Fix a NPE, prior to reading bookshelf while page ghost already dissapeared. Ty Kingzor for report.
                - Creation of a duke ghost despawn task. Before he could stay forever if the player didn't move on quest.
                - You can request anew the page ghost if he dissapeared.
                - Don't sendMessage player with "pageDespawn" event name.
             - Add 28 missing noskills HTMs for dwarves trainers. Ty Caparso for the share.
             - Warehouse Freightman Daisy HTM bypass skill list fixed. Ty Caparso.
             - Both gates of Splendor open in same time.
             - Disable autoshots after adding/changing subclass. Ty Erlandys.


          • Full Member
          • ***
          • Posts: 162
          • L2topzone Votes: 25
          • Servers reviews: 0
          • Reputation: +290/-0
            Re: [Project] aCis - Interlude
            « Reply #224 on: February 12, 2016, 04:46:14 AM »
            Changeset 359 (539)

            TaskManager drop, LoginController, Instances, Scripts / AI, Misc

            TaskManager drop
               - Fix and cleanup ScheduledQuest.
               - Move existing tasks to ScriptManager. Tasks are handled by scripts.xml.
               - Drop old TaskManager system and associated SQL table global_tasks.

               - handle login attempts in a more consistant way (concurrent map, working concept).
               - basic cleanup, from using JDK8 goodies to formatting rules.
               - L2Guard : Drop ReturnTask, drop onSpawn() redundant check (already handled by super.onSpawn()).
               - L2TownPet : Variabilize task in order to be dropped when npc is deleted.
               - L2ClanHallDoormenInstance : _clanHall is fed using onSpawn().

            Scripts / AI
               - Addition of Q114, Q227 - ty sharers.
               - Harmonize all HTMs regarding level/class checks.
               - Swap 2 HTMs content for Q226.
               - L2Attackable can now see L2NpcInstance (notably for better AI control).
               - Fix NPE and stackoverflow (prior to last revision) from onEvtAggression / onEvtAttacked. Optimize the loop checks. Rework PrimevalIsle script.
               - NPE fix for Gordon AI, if he died on server startup (prior to last revision). Ty cross for report.
               - "Returning home" monsters && random walking monsters can now be faction called. Ty Hasha.
               - Core support for Q227 (addition of L2Skill parameter for onAttack).
               - Core support for decay event (addDecayId / onDecay(L2Npc)). Ty Hasha for idea.
               - Edit all 2nd class transfer quests to fix DD exploit, since all 2nd classes are now done. Ty Zero for the patch.
               - Fast and ugly fix for Olympiad towers broadcasting. Ty sahar.
               - Hotfix for //delete command (even if it will be probably reworked in 2 revs). Ty svipben for fix.
               - Avoid to compute twice the same things for pets users relation updates.
               - Add clientStopMoving(null) on player thinkAttack().
               - Fix the 2 following issues (ty ErHard for report)
                  - Archer acts like melee player on dead targets.
                  - Archer auto follow dead NPC.


            • Full Member
            • ***
            • Posts: 162
            • L2topzone Votes: 25
            • Servers reviews: 0
            • Reputation: +290/-0
              Re: [Project] aCis - Interlude
              « Reply #225 on: May 21, 2016, 08:30:20 AM »
              Changeset 360 (553)

              Commons, ThreadPool rework, CharNameTable rework, Misc

                 - Creation of ArraysUtil, holding common arrays related methods. Will be feed overtime.
              ThreadPool rework (based on L2JFree, but tweaked to death).
                 - ThreadPoolManager is renamed ThreadPool and is moved to commons. Use a static approach rather than singleton.
                 - Merge all pools (ai, packets, general,...) to a single one.
                 - Generate pools according to core numbers (by default -1 for scheduled and instant pools).
                 - The tasks charge is balanced through the different pools (random selection).
                 - Move hidden configs to server.properties.

              CharNameTable rework - ty svipben and welcome to IC !
                 - Cache player informations on server startup rather than on player login (avoid one db call per invalid player entry request).
                 - Drop all synchronized blocks, and use a single ConcurrentHashMap (holding infos of the 2 previous HashMap).
                 - Tweak few L2World.getPlayer(), in order they use id parameter instead of name when possible (avoid a pointless call on CharNameTable).

                 - Addition of Q118, Q333. Rework Q123 (which is a clone of Q118). Ty RooT.
                 - Drop AutoDeleteInvalidQuestData config. Rework quests loading method (use a single query, don't process enterworld event on quests you don't own).
                 - Few Quest.java tweaks : addition of getSponsor() / getApprentice(), put null checks as priority checks, put few final keywords, use of Rnd.get(List).
                 - Addition of DebugGeoNode config, setted to False by default (avoid to flood geo_bugs.txt on live servers).
                 - addFence returns L2FenceInstance. Ty sahar.
                 - SpecialXMas itemhandler doesn't broadcast its content (lol). Ty sahar.
                 - Fix isInCombat() - Ty cross for report.
                 - Slight validateItemManipulation method edit (avoid double getInventory check on RequestDropItem).
                 - "Organize Import" edit : net.sf.l2j.commons are divided from regular net (simply to keep things cleaner).
                 - Fix a NPE prior to ClassId rework - Ty sahar for report.
                 - Rework MailBBSManager.sendLetter ; fix non-GM mail sending and optimize all checks. Ty Mayhem for report.
              NB : compared to L2JFree L2ThreadPool :
                 - dropped long running pooler.
                 - dropped getThreadPools() approach which generate pointless arrays.
                 - edit the purge limit from 1min to 10min.
                 - delete and merge all pointless classes (10+ merged to 1).

              Changeset 361 (568)

              World/WorldRegion refactor, CoupleManager, RooT's fixes, Skills cleanup, Misc

              World/WorldRegion refactor
                 - rename both classes, dropping "L2".
                 - Drop 3 "grid" configs (hardcoded for now).
                 - Merge unique methods.
                 - Drop _allPlayable CHMap. Edit _visibleObjects CHMap for a simple arraylist with a lock. Count only players, not all playable as region activators.

              CoupleManager rework
                 - Store couples in a ConcurrentHashMap instead of ArrayList (avoid ConcurrentException, better index management).
                 - Save process is made on server shutdown rather than couple creation.
                 - Loading process isn't cutted between Couple && CoupleManager, which avoids 1 connection per Couple loading.
                 - Cleaning (drop isMarried boolean as we can reuse coupleId, drop Couple model for IntIntHolder) + Javadoc.
              RooT's fixes
                 - Interaction distance with NPCs is setted to 100 instead of 150 (maybe has to edit players ?).
                 - Add more ids in non-talking guards. MoveToPawn and ActionFailed packets are sent for such guards.

              Skills cleanup

                 DP side
                    - Pa'agrio Fist and Rapid Fire are counted as buff. Pa'agrio Fist heals 800 CP back, not full CP.
                    - Few NPC skills got remove target attribute (dino skills).
                    - Added missing enchant routes for : Shock Stomp, Blessed Body, Blessed Soul, Mass Fear, Mass Gloom, Trance, Erase, Magical Backfire
                    - Mystic Immunity uses the correct target type.
                    - Summon Treasure Key reuse time is fixed.
                    - Heart of Pa'agrio HP regeneration effect is fixed.
                    - Heroic Berserker mdef malus is fixed.
                    - Infinity Axe passive skill is fixed.
                    - Counterattack, Dodge, Mirage are using IL values.
                    - Shield of Revenge got a mana cost now.
                    - Fear effects don't bug anymore.
                    - Fix Item Skill: Battle Roar augment.
                 Core side
                    - The player now runs to the target when skill is under reuse and target out of range.
                    - CPHEAL_PERCENT type is dropped (unused).
                    - Toggle skills can't be desactivated anymore while in combat.
                    - You can't stack anymore Fear, Sleep, Root && Stun effects. Ty xblx.
                    - ExRegenMax packet implementation (temporary health gauge on HoT use). Ty svipben to catch it up, and RooT for writing style.
                 - Fix a minor typo on 2 packets, ty svipben for report.
                 - Mimyu teleport behavior. Ty RooT for share, Sikken for report.
                 - Fix SE 2nd class transfer. Ty emanueld for the fix.
                 - Lower Loginserver RAM allocation (to 32m), as it doesn't need that much (could even work with 12m with spikes at 9m).
                 - SetupGauge packet now uses an Enum to enforce color types.
                 - Water task is cleaned up. Drop _isInWater boolean, and "unique-use" methods.
                 - Heal participants' CP/HP/MP on Olympiad battle start. Ty sahar for report.
                 - Workaround fix for returnHome method (killed stunned mobs = clean aggrolist).
                 - Move Die packet call on Enterworld to avoid buffs visual issue. Ty SweeTs/svipben.
              PS : skills cleanup got nothing related to skills rework. Those are only fixes to wait for a bigger rework, which will come in few months.


              • Full Member
              • ***
              • Posts: 162
              • L2topzone Votes: 25
              • Servers reviews: 0
              • Reputation: +290/-0
                Re: [Project] aCis - Interlude
                « Reply #226 on: May 23, 2016, 03:04:16 PM »
                Changeset 362 (578)

                Knownlist system , pets fixes, misc

                So, I decided to rework the knownlist system. I will explain why, what are benefits and how it worked/works now.

                Old version :
                Each object (item, npc, player, summon) had its own knownlist, aka a Map holding surrounding objects. Objects were added/removed according owner's region and a self radius (getDistanceToWatch)

                Why it sucked :
                   - You needed to update map every time you added/remove. Even if ConcurrentHashMap is performant, that could be painful on big operations (sieges, mass kills, etc).
                   - The data was extremely redundant ; for 2000 NPCs, there was 2000 knownlist holding each 1999 entries (excluded himself).
                   - The data could scale really, really fast according number of surrounding NPCs, leading to important RAM/CPU usage.
                   - A task, called every second, was updating every single region (11260 regions) objects to forget objects.
                   - Added to the data being extremely redundant between knownlists, the same info was hold into WorldRegion's object maps (as knownlist feed upon those maps).
                   - The definitive list of possible targets was cutted first by getVisibleObjects(2000), getDistanceToWatch, then by radius, leading to compute multiple times the same thing.
                New version :
                   - We use WorldRegion maps as reference.
                   - We use setRegion as an passive update system. Which means a single setRegion is needed to refresh every object included in surrounding regions.
                      - Regions we leave (aka, old region neighborhood but not part of new region neighborhood) are updated with removeKnownObject.
                      - Regions we enter (aka, new region neighborhood but not part of old region neighborhood) are updated with addKnownObject.
                      - Leftover (shared regions between old and new neighborhood) isn't processed.
                Benefits :
                   - No more maps for every object = instant RAM save. No more dangerous RAM scaling when gathering important group of NPCs.
                   - Cut a entire layer (before WorldRegion CHMap was updated, and WorldRegion's objects knownlists aswell. Now, only WorldRegion is updated).
                   - The task was really heavy (11260 areas to refresh on a populated server every 1m) ; its drop delayed the GC cycle from 6min to 10min on vanilla aCis (cutted the garbage on empty server by almost 2).
                   - Merge redundant systems and optimize the output (only 6 cells are updated in case of regular region change).
                (Biggest) changes :
                   - Revert from previous revision : ArrayList to CHMap to hold WorldRegion objects (wasn't correctly synchronized leading to ConcurrentException).
                   - Whole model.actor.knownlist package && KnownListUpdateTaskManager class dissapear.
                   - Broadcast.toSelfAndKnownPlayersInRadiusSq method is dropped, as we are standardizing "distance" system.
                   - Heavy rework of spawnMe, spawnMe(x, y, z), decayMe to avoid multiple setRegion calls (before : 2 for every L2Object, 3 for summons !). Avoid multiple addKnownObject() calls (bow use, setTarget) aswell.
                   - setXYZInvisible(Location) has been added. Uses are tweaked (when spawning you don't need to setRegion(null), so we only update position).
                   - PcTemplate holds player spawn under a Location.
                   - EVT_FORGET_OBJECT event is dropped (no use, probably not launched at all).
                   - WorldRegion setActive is processed instantly by setRegion method.
                   - Fix : guards don't go IDLE if aggrolist is cleaned up, breaking aggro system.
                   - Rework knownlist admincommand (includes a page system, as known objects number is way bigger than before).
                PS :
                   - To get knownlist, simply use object.getKnownType or object.getKnownTypeInRadius (all objects on the 9 surrouding areas = object.getKnownType(L2Object.class))
                   - Computed knownlist don't show yourself. It shows any type of status : dead, visible, etc. You have to add your own conditions.
                   - Always try to choose the HIGHEST instance type (ex: L2PcInstance for players, and not L2Object) to restrain list objects to a maximum. In addition, you won't need any cast.
                   - IDLE state for NPCs should be achieved only if no players are left on region. It means the AI is detached from NPC.
                Multiple pets fixes
                   - Pet inventory isn't restored anymore (as pets inventory is transfered on inventory deletion to owner's inventory, the whole thing is useless).
                   - On pet dismiss (or player restart), if the player does not have room in their inventory, these items will drop to the ground.
                   - Pets cannot pick up arrows, Soulshots, Spiritshots, Blessed Spiritshots.
                   - Cleanup L2PetInstance.validateWeight().
                   - Refresh correctly pets inventory weight gauge.
                   - Numerous cleanup :
                      - don't send twice setShowSummonAnimation() info (inherited from L2Summon, no need to call on children)
                      - Merge L2PetInstance.spawnPet() with its single usage.
                      - Move setLevel from Pet initialization to restore(), which avoids double call.
                      - Don't feed _petData on Pet initialization, as info would be wrong anyway. It's already handled by setLevel().
                      - Don't set twice item enchant level (was called by setLevel() and SummonItems).
                      - Avoid one call of PetItemList / broadcast status.
                   - Wedding mod HTMs are moved in their own "mods" folder.

                PPS : knownlist rework probably fixes any type of "ghost" issue (player/monsters which look to be here, but when targeting them they update).

                PPPS : I thank "monkeys team" for the good job on reporting behavior. You're invited to drop what I sent you and apply this changeset (you normally have a problem with pets summoning, fixed with this changeset).


                • Full Member
                • ***
                • Posts: 162
                • L2topzone Votes: 25
                • Servers reviews: 0
                • Reputation: +290/-0
                  Re: [Project] aCis - Interlude
                  « Reply #227 on: November 19, 2016, 05:34:15 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.


                  • Full Member
                  • ***
                  • Posts: 162
                  • L2topzone Votes: 25
                  • Servers reviews: 0
                  • Reputation: +290/-0
                    Re: [Project] aCis - Interlude
                    « Reply #228 on: January 10, 2017, 09:15:26 AM »
                    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.

                    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 model.group.
                          - 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.
                       - Addition of ONLY_A_PARTY_LEADER_CAN_TRANSFER_ONES_RIGHTS_TO_ANOTHER_PLAYER message.
                       - 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.


                    • Full Member
                    • ***
                    • Posts: 162
                    • L2topzone Votes: 25
                    • Servers reviews: 0
                    • Reputation: +290/-0
                      Re: [Project] aCis - Interlude
                      « Reply #229 on: February 16, 2017, 03:37:14 PM »
                      Changeset 366 (664)

                      Castle, Siege part II, ZoneManager / zones, Clans, Misc

                         - Rename _zone > _siegeZone (getter included).
                         - Move zones attributions to entity creation (instead of getters).

                      Siege part II
                         - Due to following ZoneManager and zones rework, we now support :
                            - PKs are ported in the vicinity of second closest town (and not inside).
                            - banished players are ported in the vicinity of the castle (and not on closest town).
                         - Cleanup L2SiegeFlagInstance, it works even if clan parameter is broken.
                         - Cleanup loadSiegeClan() uses, which were called on numerous useless places (called on startSiege(), approveSiegeDefenderClan(), removeSiegeClan(), startAutoTask()).
                         - On castle siege end, if your clan is victorious versus former clan, you gain static 1K CRP instead of calculated amount based on former clan CRPs.
                         - All CastleManager.getInstance().getCastle(player) used to only retrieve an ACTIVE siege are now replaced by CastleManager.getInstance().getSiege(player), as it is shorter and cleaner.
                         - Drop SiegeClan layer. Siege flag is now registered on L2Clan.
                         - Creation of SiegeSide enum. Store it under String format rather than int (similar to CabalType, SealType, etc).
                         - CopyOnWriteArrayLists about attackers / defenders / pending defenders are replaced by a single ConcurrentHashMap (better performance and avoid heavy lists manipulations).
                         - Creation of checkSide(L2Clan), checkSide(L2Clan, SiegeSide), checkSides(L2Clan, SiegeSide...) methods, which is now the center of sides checks (instead of getAttackerClan / getDefenderClan).
                         - Drop the possiblity for a clan to hold numerous headquarters flags (it was producing a IOOBE when the first flag of the list was destroyed anyway).
                         - L2Clan.isRegisteredOnSiege() method simply checks memory content rather than making a SQL query.
                         - Fix following checks :
                            - dissolve alliance now checks if ANY allied clans is registered on a active siege (before was only checking your clan status).
                            - create alliance now checks if your clan is registered into an ACTIVE siege (avoid to stuck creation if you're castle lord).
                            - join alliance now checks if the invited clan is registered as an opposite clan, on any active siege. The previous check checking both characters are on siege zone is dropped (pointless).
                      ZoneManager / zones
                         - Little cleanup of ZoneManager (drop of getArena(L2PcInstance), getOlympiadStadium(L2PcInstance), checkId(int) and getClosestZone(L2Object, Class<T>) methods).
                         - L2SiegeZone zones are now considered L2SpawnZone, and hold following L2OFF lists : other_restart_village_list && chao_restart_point_list. Drop the isGM() exception from banishForeigners. Zones shape match with retail values.
                         - L2CastleZone zones now hold banish_point_list. chao_restart_point_list is moved to L2SiegeZone, but still hold owner_restart_point_list. We drop _castle variable, which is pointless. Zones shape match with retail values.
                         - L2CastleTeleportZone cleanup (isOnline() check is wrong, it basically means a offline shop can stay here).
                         - L2ZoneType _characterList is edited from CopyOnWriteArrayList to ConcurrentHashMap (performance boost). The class is cleaned up (javadocs, comments, organization).
                         - ZoneManager _debugItems is edited from List to ConcurrentHashMap (performance boost).
                         - L2DynamicZone is deleted (no purpose).
                         - //zone_visual adena drop count reflects zone id (for an instant overview). Their step spawn is also cutted by 2.5 (from 20 to 50) to faster the generation process.

                         - clans are registered into a ConcurrentHashMap to avoid ConcurrentException. Drop synchronized keywords. getClans() returns a Collection instead of array.
                         - destroyClan() is reworked ; parameter is now a L2Clan, the clan is removed of ANY siege (before : only if you had a castle)
                         - getClanAllies() returns a Collections.emptyList() if no alliance is found.
                         - checkAllyJoinCondition is now static (as variables are setted up as parameters).
                         - RequestRestartPoint packet is cleaned up, jail location is now static.
                         - Drop ALT_GAME_FREE_TELEPORT config, as HTMs can't scale with that config (were still displaying adena cost).
                         - Fix L2TeleportLocation isForNoble() item consumption, ty Heinsenberg.
                         - Fix skillId 1402 enchantlevel, ty Anarchy.
                         - Fix TownPet instance task. Ty TreasureHuman for report.
                         - Fix the merchant NPE due to Castle rework.
                         - Random cleanup
                            - MapRegionTable.getTeleToLocation renamed getLocationToTeleport (english plz). Method is cleaned up, MDT location is now static.
                            - FIXED revive option uses player.getPosition() rather than generating a new Location object based on x/y/z.
                            - RequestAnswerJoinAlly packet is secured (transaction is correctly cleaned up).
                      PS : due to Sieges part II, sieges_clans is edited. I invite you to either drop the whole table and add the new one asking your players to register anew on sieges (castle owners are automatically registered), or you can query it to edit all int values to String values.


                      • Full Member
                      • ***
                      • Posts: 162
                      • L2topzone Votes: 25
                      • Servers reviews: 0
                      • Reputation: +290/-0
                        Re: [Project] aCis - Interlude
                        « Reply #230 on: February 24, 2017, 02:26:27 PM »
                        Changeset 367 (668)

                        Reorganization ! You will hate me.

                        Edit all instance types.

                        All instances types are shortcuted as following : L2PetInstance > Pet (remove "L2" and "Instance" from naming convention, to shortcut checks and writing style).
                        Mother classes simply lose the "L2" prefix (L2Attackable, L2Character, L2Playable,...).

                        The previous rule doesn't apply exactly on following cases :

                           - L2BufferInstance > SchemeBuffer (fits better with the role).
                           - L2PcInstance > Player (I guess Pc stands for 'player character', so make it more intuitive).
                           - L2SummonInstance > Servitor (to avoid confusion between L2Summon and L2SummonInstance ; the first being mother class of all summons and second being summoners servitors).
                           - L2XMassTreeInstance > ChristmasTree (because we aren't #1337 #YOLO #Swag #doge).
                           - L2WarehouseInstance > WarehouseKeeper (conflict with Warehouse, part of Inventory).
                           - L2CastleWarehouseInstance > CastleWarehouseKeeper (to fit with above).
                           - L2CabaleBufferInstance > CabalBuffer (cabal in english, not cabale).
                           - L2ArtefactInstance > HolyThing (L2OFF naming).
                           - L2ObservationInstance > BroadcastingTower (more proper name).
                           - L2NpcInstance > Folk (because those are considered as non attackable targets).
                           - L2MutedNpcInstance > MutedFolk (because they are based on Folk).
                           - L2FriendlyMobInstance > FriendlyMonster (Monster not Mob).
                           - L2NpcWalkerInstance > Walker (drop of Npc).
                           - L2TeleporterInstance > Gatekeeper (fits better with the role).
                           - L2DoormenInstance > Doorman (not plural).
                           - L2CastleDoormenInstance > CastleDoorman (not plural).
                           - L2ClanHallDoormenInstance > ClanHallDoorman (not plural).
                           - L2GoldenRamInstance > GoldenRamMercenary (more informative).
                           - L2CastleTeleporterInstance > CastleGatekeeper.

                           - All "Manager" ending NPC types are followed by "Npc" to avoid any conflict with instancemanager (ex : L2ClanHallManagerInstance > ClanHallManagerNpc), even if there isn't any conflict (just respect same rule everytime).
                           - Rename StaticObject serverpacket to StaticObjectInfo (after all we got CharInfo, PetInfo, UserInfo,...), to avoid conflict with StaticObject instance type.

                           - Fix //removecastle admincommand (owner was still listed).
                           - Fix Christmas Trees (and cleanup the instance). Ty Azik for report.
                           - Deletion of GNU headers. Reasons :
                              - aCis uses its own licence.
                              - There is more licence than actual code characters in 80% of classes (notably packets).
                              - Faster search tool, lighweight-ier sources when distributed.
                           - Edit of licence.htm with latest aCis ToA.
                        PS : Since it's a complete mess, I will share, exceptionally, the complete pack on rev 367. For people who already owns a server, may Elmoroden gods pity you. I'm the best troll ever.


                        • Full Member
                        • ***
                        • Posts: 162
                        • L2topzone Votes: 25
                        • Servers reviews: 0
                        • Reputation: +290/-0
                          Re: [Project] aCis - Interlude
                          « Reply #231 on: April 22, 2017, 09:07:05 AM »
                          Changeset 368 (712)

                          Chamberlain Manor's Certificates feature, Cleanup Config, Login, MMOCore, Instance rename && reorganization part II, Logging rework, Misc

                          Chamberlain Manor's Certificates
                             - Implement a missing castle chamberlain feature, the possibility to buy Manor's Certificates. HTMs and behavior is OFF-like.
                             - Added "//reset_certificates castleName" admincommand. Integrate it on the castle panel (had to reorganize it a little).

                          Cleanup Config
                             - Drop DATABASE_MAX_IDLE_TIME time (set to 0 by default).
                             - Re-order login/server .properties
                             - Drop ACCEPT_ALTERNATE_ID / REQUEST_ID from login on Config.java (weren't existing on .properties, not used by login)
                             - Drop external/internal hostnames system ; only one hostname is allowed.
                             - LoginServerThread cleanup :
                                - Drop _waitingClients (synchronized, check logic already handled by the other CHMap).
                                - Drop some variables (7 were calling Config), some unused methods. Some rename are made.
                                - Move some of the security check logic here and there to make it cleaner.
                             - ServerStatus content is reorganized in both LS and GS sides. Addition of age limit / pvp server tags.
                             - FloodProtectedListener connections are registered on a ConcurrentHashMap.
                             - Creation of ServerData class (was part of ServerList packet). Cleanup of ServerList for easier proxy handler implementation.
                             - Creation of GameServerInfo class (was part of GameServerTable).

                             - Avoid to crash on packet read buffer underflow (client connection is dropped instead).
                             - Tweak MMOCore values to process packets x4 faster (5k packets = from 16s to 4s).
                          Instance rename && reorganization part II
                             - L2Object is renamed WorldObject.
                             - Character (previously L2Character) is renamed Creature due to class already defined on JDK (and making imports complicated).
                             - AI models are renamed to fit with new naming convention (PlayerAI, PlayableAI, CreatureAI, etc).
                             - The package gameserver.ai is now moved on gameserver.model.actor.ai (best location). ai.model is renamed ai.type (because gameserver.model.actor.ai.model was redundant).
                             - Templates, Stat && Status models are renamed to fit with new naming convention.

                          Logging rework
                             - log.cfg is renamed logging.properties.
                             - Drop 'audit' layer && associated IllegalPlayerAction system (all punishements are deleted, DefaultPunish && DefaultPunishParam configs are dropped). Reason : that's the point you write integrity checks.
                             - Drop GMAudit, uses the default formatter/handler/filter (all GMs are written on the same file).
                             - Whole logging system is moved into commons. Create 'filter', 'formatter' && 'handler' packages on log. Rename package 'log' to 'logging'.
                             - All handlers got a limit and a count to avoid to flood server with logs. The log limit is set to 1mo instead of 500ko. The count is setted to 5 files.
                             - All logs are now moved in their own folders (those folders are created by default).
                             - Logs name pattern has been edited (typeName_count.txt), the extension is now .txt.
                             - All formatters are based on same writting style.
                             - Merge math methods from Util with MathUtil. Delete Util.
                             - banned_ip.cfg is renamed banned_ips.properties.
                             - FloodProtectors class is moved from gameserver.util to gameserver.network.
                             - Addition of SysUtil, holding system related methods.
                             - L2Bookmark > Bookmark + basic cleanup of BookmarkTable.
                             - Minor cleanup of GameServer and L2LoginServer (don't keep references when not needed, drop of "L2" > LoginServer).
                             - MinionList cleanup, replace the CopyOnWriteArrayList (poor performance).
                             - Minor cleanup of RaidBoss (drop a double isMovementDisabled() check).
                             - Fix a typo error on query prior to sieges rework, ty HaddWik for report. Minor Siege class cleanup.
                             - SevenSigns minor cleanup (drop 3 redundant static variables and one method).
                             - Slight cleanup of RecipeShopSellList packet (avoid .get on a for loop).
                             - villagemaster/30594.htm edit.
                          PS: if you got better log writting style, I would eventually integrate it.
                          PS2: build.xml is edited, some .properties are edited.


                          • Full Member
                          • ***
                          • Posts: 162
                          • L2topzone Votes: 25
                          • Servers reviews: 0
                          • Reputation: +290/-0
                            Re: [Project] aCis - Interlude
                            « Reply #232 on: June 20, 2017, 06:47:01 PM »
                            Changeset 369 (762)

                            Datatype reorganization, HTMs / NPCs behavior, Misc

                            Datatype reorganization
                               - "datatables" package is renamed "data". Creation of subpackages "xml", "sql" && "manager" inside it.
                               - All tables are renamed/cleaned up
                                  - XML loading/storing data ends with "Data".
                                  - SQL loading/storing data keeps old "Table" denomination.
                                  - Tables using both types (xml/sql) or temporary data (such as fences) are stored as "Manager".
                               - All XMLs are renamed and edited to follow new conventions.
                               - XMLDocumentFactory is replace by XMLDocument, a light abstract layer enforcing writting style (parseDocument, loadDocument, load).
                               - Biggest edits are following :
                                  AccessLevels / AdminCommandAccessRight / GmListTable > AdminData
                                     - AccessLevel uses a StatsSet to feed data, AdminCommandAccessRight model is entirely dropped.
                                     - All "datatables" are merged under AdminData.
                                     - All ranks are provided inside the XML (no more hardcoded rank). XML format has been modified.
                                     - Child access has been simplified (a unique child, instead of a array).
                                     - Default max rank is now 8, commands are set to 7 (Admin rank) ; all associated configs have been dropped. Colors have been edited to be unique (SweeTs will do a good Support GM ! :kappapride:)
                                     - A new Config has been added, DefaultAccessLevel, allowing you to set a unique access level to everyone (before, that config was a boolean and could only reward Master rank).
                                     - //reload acar is edited for //reload admin, which reloads accesses in same time than commands rights.
                                  TeleportLocationTable > TeleportLocationData
                                     - TeleportLocation is edited : drop L2 prefix, use a StatsSet to feed infos and extends Location. It doesn't hold anymore id (can be retrieved using the Map).
                                  FishTable > FishData
                                     - FishData is renamed Fish, while FishTable is renamed FishData. Use a StatsSet. XML edited.
                                  SoulCrystalsTable > SoulCrystalData
                                     - SoulCrystalData is renamed SoulCrystal, while SoulCrystalsTable is renamed SoulCrystalData.
                                     - Rework successs/fail rates using L2OFF, all chances are now using a base 1000 instead of 100. Ty Marcatu.
                                     - Data formatting has been edited.
                                  StaticObjects > StaticObjectData
                                     - System uses a getInstance(), like his brothers.
                                     - Store content back in a public List.
                                  HennaTable > HennaData
                                     - Edit XML name/parameters.
                                     - Handle getAvailableHennasFor/canBeUsedBy (previously getAvailableHenna/isForThisClass) differently (no more _hennaTrees).
                                     - Move the parsing from Characters to Items tab on server loading.
                                     - Cleanup + Javadoc. getAmountDyeRequire() > getRequiredDyeAmount() - still static.
                                  HelperBuffTable > NewbieBuffData
                                     - Edit XML and classes names (NewbieBuff, NewbieBuffData, newbieBuffs.xml).
                            HTMs / NPCs behavior
                               - Karma players can't speak to NPC anymore (default behavior). They STILL can speak when such NPC doesn't have an associated -pk HTM.
                               - Add and fix all merchant HTMs (addition of all -pk, -bought, -sold, -empty : something like 300 HTMs). Implemented -empty (when your inventory is empty) and -bought (you just bought an item from a merchant).
                               - Fix fisherman -sold behavior (was implemented but dysfunctional).
                               - Addition of npcId 31075 HTMs and 5 buylists related to that NPC. Folk > Merchant edition.
                               - Toma (the guard) got its real name, Thoma, set on XML.
                               - Edit respawn delay / respawn random formulas to avoid warning messages.
                               - Rework the Optional uses for better performance, ty Sdw to pointing it out.
                               - You can't pickup or use Intention.PICKUP during an attack. Ty IpotoniC.
                               - Fix NPE on checkSide / checkSides.
                               - Drop fake skills integrity checks. Ty Copyleft.
                               - Fix ItemFilter, due to previous logger refactor. Ty Mellion.
                               - Fix tax rate on multisell system. Ty vampir.
                               - Fix a HTM typo on Q105. Ty Ipotonic.
                               - Merge ALT_PARTY_RANGE && ALT_PARTY_RANGE2 configs for PARTY_RANGE. Value is set to 1500 by default (like all checks found on L2OFF AI scripts).
                               - Addition of StatsSet.getDoubleArray.
                               - Hotfix for skills resistance calculation. Ty Erlandys.

                            Examples of skills calculation, before / after.
                            The point is, the accumulation of different similar effects don't impact as much as before (not proportional anymore, follow what could be called a logarithmic curve : "more you got, less you get").

                            Sleep effect :
                            NM Set : 16.85% / 16.31%
                            - : 54.91% / 54.37%
                            Mental shield : 27.73% / 27.18%
                            NM Set + Mental shield : 1% / 8.16%

                            Fire damage :
                            Elemental resist (20) : 566 / 566
                            surrender fire (-30) : 920 / 1011
                            - : 707
                            surrender fire + elemental resist (-10) : 778 / 808
                            resist fire + elemental resist (+50) : 353 / 396
                            valakas passive resist + resist fire + elemental resist (+65) : 240 / 327

                            PS : most of this patch is part 1 of... 3-4. It's simply too long to make all changes in a single revision. Probably the SpawnManager will be delayed to, at least, the end of the cycle.

                            Changeset 370 (782)

                            Datatype reorganization, Summon stuff, Skills edit, Revert, Misc

                            Datatype reorganization
                               - Creation of model.pledge package. Move ClanInfo, Clan (renamed from L2Clan) and ClanMember (renamed from L2ClanMember). Move ClanTable with really light edit to data.sql package.
                               - Cleanup the Javadoc on all Table/Data types which have been already cleaned up. In the future, I will try to keep using {@link}, which I find useful.
                               - BuyListTable > BuyListManager
                                  - Creation of BuyListTaskManager, a global task for all Products (avoid 1500+ running tasks, if all Products are under restock timer).
                                  - Javadoc + Reorganization (use of XMLDocument, Product uses a StatsSet, writting style, etc).
                                  - SQL data is removed on restock timer completion, not simply saved with 0 lenght.
                                  - decreaseCount result impacts on task schedule (negative result = no task launched).
                               - NpcWalkerRoutesTable > WalkerRouteData
                                  - npcwalker_routes.xml > walkerRoutes.xml. The content is edited, to put content of a node on a single line.
                                  - Extends XMLDocument, proper Javadoc.
                                  - WalkerAI is fully rewrote to use generic AI logic (MOVE_TO intention, then we use onEvtArrived() to call the next point).
                                  - L2NpcWalkerNode > WalkerLocation, cleanup and extends Location (which is handy).
                                  - Addition of WalkerTaskManager, a global task handling WalkerNode delays.
                               - Location
                                  - Location and all classes extending Location are moved to model.location package.
                                  - VehiclePathPoint > VehicleLocation, TowerSpawn > TowerSpawnLocation and both now extends (Spawn)Location.
                            Summon stuff
                               - The attack stance is activated even when a player hits the summon (not only Attackable). Attack stance doesn't work for Folk only.
                               - Avoid behavior is reworked and implemented in an elegant and retail way. Ty RooT/Enyrgus for tests.
                               - PetStatus is dropped (unused).
                               - Summon attack damage is correctly shown (different messages for Pet/Servitor). Hitting a summon also fires the EVT_ATTACKED event.
                            Skills edit - ty Sahar
                               - Angelic Icon duration decreased from 120 seconds to 60 seconds. It has cAtk instead of cAtkAdd effect.
                               - Archery range bonus reduced from 300 to 100.
                               - Force Barrier reuse delay increased from 10 minutes to 15 minutes.
                               - Mirage reuse delay increased from 5 minutes to 10 minutes.
                               - Honor of Pa'agrio skill radius increased from 400 to 900.
                               - Vortexes now use multi_debuff stackType instead of multi_debuff_x.
                               - Chant of Victory stackOrder changed from 1 to 2.
                               - Victories of Pa'agrio stackOrder changed from 1 to 2.
                               - Whiplash reuse delay increased from 8 seconds to 30 seconds.
                               - Tidal Wave power decreased from 228 to 81.
                               - Salvation duration increased from 20 minutes to 1 hour.
                               - Added missing SA effects to Shining Bows.
                               - Blinding Blow lethal1 chance reduced from 5 to 4.
                               - Blinding Blow lethal2 chance reduced from 2 to 0-1 (depending on skill level).
                               - Hotfix for EffectBluff.

                            Revert parts of rev 361 (changeset 562):
                               - Toggle can be used while attacking.
                               - You don't stop moving if skill is under reuse and you try to use it.
                               - Register a missing admin command, admin_knownlist_page. No clue why it was missing the whole time.
                               - Delete admin_mons, which was MDT launch admincommand (no use).
                               - Rework PlaySound packet, listing correct parameters and introduce new constructors (notably one with WorldObject). Ty RooT.
                               - Fix the stuck behavior after requesting a movement when you're actually isMovementDisabled(). Ty Ipotonic.


                            • Full Member
                            • ***
                            • Posts: 162
                            • L2topzone Votes: 25
                            • Servers reviews: 0
                            • Reputation: +290/-0
                              Re: [Project] aCis - Interlude
                              « Reply #233 on: October 19, 2017, 06:06:45 AM »
                              Changeset 371 (821)

                              Datatype reorganization, Skill stuff, Misc

                              Datatype reorganization
                                 - MapRegionTable > MapRegionData
                                    - Javadoc, extends XMLDocument, moved to data.xml, edit for mapRegions.xml. Drop useless methods.
                                 - PlayerNameTable > PlayerInfoTable
                                    - Javadoc, moved to data.sql, DataHolder > PlayerInfo.
                                 - DoorTable > DoorData
                                    - Javadoc, extends XMLDocument, moved to data.xml, StatsSet reuse, writting style.
                                 - RecipeTable > RecipeData
                                    - Javadoc, extends XMLDocument, moved to data.xml, StatsSet used for Recipe, RecipeList > Recipe. Extract RecipeItemMaker from RecipeData, and create model.craft package to store it.
                                    - The data is reparsed using L2OFF data.
                                    - Fix an issue with recipe name when destroying such recipe from book (was the case for Orcish Poleaxe for example).
                                    - Rework character_recipebook table, dropping one column. Datatypes are tweaked.
                                    - Fix an issue on complete recipe book destroy ; the deleted stuff wasn't saved on database.
                                    - Rework RecipeBookItemList packet. Add a missing use of it on Recipes itemhandler (refresh book or open it on recipe addition).
                                 - CharTemplateTable > PlayerData
                                    - Skill trees are now stored directly into player templates under a List, rather than SkillTreeTable. Most methods are moved into Player, since its a generic needed parameter.
                                    - We don't store anymore Item template list (for character creation items generation), but int array (since storing Item templates was pointless and not even used correctly).
                                    - All methods got a "single" and "all" versions to avoid to loop for nothing on all skills.
                                 - SkillTreeTable > SkillTreeData
                                    - Rework all skills holders, and move them on model.skillnode
                                    - All methods got a "single" and "all" versions to avoid to loop for nothing on all skills.
                                 - BufferTable > BufferManager
                                    - Use XMLDocument, move to data package, rename/cleanup. Data is edited to reflect changes.
                                    - Add an integrity check for available skills on player schemes loading to avoid NPE. Ty katara.

                              Skill stuff
                                 - Drop getSkillLearningClassId / setSkillLearningClassId concept.
                                 - Drop _expertiseIndex. It is now directly calculated from skill 239 level, and can be found using getSkillLevel().
                                 - Rework subclass skills addition. We only storeSkill the final List, leading to a massive drop of mid-operations. Ty vladalien for the initial workbench.
                                 - Cleanup removeSkill() / storeSkill().
                                 - autoGet skills are handled by PlayerTemplate data (skills with getSpCost == 0), the stuff isn't hardcoded anymore.
                                 - getSkillLevel returns 0 instead of -1 if no skill is found, making checks easier to write.
                                 - hasSkill is used instead of getSkillLevel when skill existence is needed, but we don't specifically need the level.
                                 - Skill enchantable routes now handle level 79 and 80. Each route can be manually edited.
                                 - Fix a visual issue about shortcut refresh on failed enchant skill.
                                 - Drop RATE_CONSUMABLE_COST && ALT_GAME_SHIELD_BLOCKS configs. Rename some players.properties configs.
                                 - Addition of StatsSet getIntIntHolder, getIntIntHolderList && getDoubleArray.
                                 - Fix an issue using a toggle when you run to a target with ATTACK intention. Ty Sahar.
                                 - getCurrentFolkNPC() -> getCurrentFolk(). The value retained is now a Folk, not a Npc.
                                 - Fix an issue on RequestAnswerJoinAlly introduced on rev 366, ty sahar.
                                 - Region size decreases from 4096 to 2048 (x4 WorldRegion amount, vision is reduced from 6k to 3k max). It now fits retail knownlist range.
                                 - Fist Weapon is moved from Player to PlayerTemplate (no calculation needed anymore on player login).
                                 - Formatting rule for lambdas && try-with-ressources. Use lambda writting style for all Runnable.
                                 - Cleanup L2Request > Request, keep a reference of the task to cancel it on onRequestResponse().
                                 - RequestRestartPoint doesn't use anymore a Runnable for instant use.
                                 - Drop door onEvtAttacked behavior, which was adding a ridiculous amount of operations for nothing.
                                 - RequestCrystallizeItem packet is cleaned up (avoid getItemByObjectId x2, World.getInstance().removeObject is already handled).


                              • Full Member
                              • ***
                              • Posts: 162
                              • L2topzone Votes: 25
                              • Servers reviews: 0
                              • Reputation: +290/-0
                                Re: [Project] aCis - Interlude
                                « Reply #234 on: December 27, 2017, 11:10:14 AM »
                                Changeset 372 (846)

                                Datatype organization, Recommendation system, Sahar fixes, AdminCommands, Misc

                                Datatype organization
                                      - Moved to data.manager, we use IdFactory to get a fresh id, Javadoc.
                                      - Moved to data.manager, rename it, use of StatsSet. Data is edited to reflect changes. Javadoc addition.
                                   Lottery > LotteryManager
                                      - Moved to data.manager, renamed LotteryManager, basic cleanup.
                                      - Initialization is made on Gameserver (before it was a lazy initialization).
                                   MonsterRace > DerbyTrackManager
                                      - Moved to data.manager, renamed MonsterRace > DerbyTrackManager, generic cleanup.
                                      - HistoryInfo is moved into model package.
                                      - RaceManagerNpc is renamed DerbyTrackManagerNpc.
                                      - moved to data.manager, cleanup.
                                      - IdFactory id is correctly released on couple deletion.
                                   Skill datatype part II
                                      - Pet weight system (not overload, only the lower levels handled by weight penalty) is "desactivated" time I find a workaround to avoid a NPE.
                                      - Merge addSkill / removeSkill methods on Player, since it's the only place it is used. There is only one way to addSkill / removeSkill for now.
                                      - getAvailableAutoGetSkills() / getAllAvailableSkills() don't filter skills based on current player skills (skills correctly delevel back).
                                      - addSkill got a check to avoid to add a skill you already own (for now it uses equals, not sure if correctly working)
                                      - Don't save/restore autoGet skills since they're rewarded on player restore, saving 10+ skills per character. When an autoGet skill becomes a regular skill (cf. Wind Strike), it is stored into db.

                                Recommendation system
                                   - The task runs at 13:00 and not 06:30 (was a postIL date).
                                   - The task both handles online and offline players. Recommendations are normally correctly calculated for everyone.
                                   - The saving process has been entirely reworked ; _lastRecomUpdate is dropped.

                                Sahar fixes
                                   - Fix many Item Skills.
                                   - Fix Focus Death / Focus Power.
                                   - Fix Special Ability: Mighty Mortal.
                                   - Fix Special Ability: Infinity Scepter.
                                   - Fix Frenzy.
                                   - Fix Mystic Immunity.
                                   - Provide enchant routes for Rain of Fire.
                                   - Fix SystemMessage in CombatPointHeal.
                                   - isDebuff is initialized before isOffensive, since it is used by isOffensive.
                                   - Make use of IS_CRAFTING_ENABLED config in Recipes.
                                   - StatsSet: getList/getMap now return generic List/Map.
                                   - Added missing items to Blacksmith of Mammon SA removal multisell.
                                   - Added packet: ExServerPrimitive.
                                   - Added getters for custom use: BufferTable#getAvailableBuffs, MultisellData#getList, Hero#getAllHeroes.
                                   - Added abnormal="changetexture" to Zaken skill id 4223.
                                   - Fix summons stucking in walls on summon process.
                                   - Fix basemul wasn't working at all for MCritRate stat.
                                   - Drop z1 parameter from 2d MathUtil#calculateDistance method.
                                   - Fix the movement issue when you run near a NPC and interact with it (initial movement intention was kept).
                                   - Fix missing skills from previous resist rework. NPC resists should work anew correctly.
                                   - Fix OlympiadManager message.
                                   - Fix stuck character if new target is null (case of targeting high altitude wyvern users), and drop the Z check.
                                   - Fix all occurences of -100 > -1 for character ban process, prior to AdminData cleanup. Ty hqsly for report.
                                   - //invul command is deleted. //setinvul now work on any Creature type.
                                   - Fix //heal radius attribute.

                                   - ServerRestart / ServerShutdown tasks are by default done on WEEKLY time rather than DAILY (still commented by default).
                                   - Delete unused "char_slot" tag on characters.sql
                                   - Few rename/edits regarding CharSelectInfo packet and associated content.
                                   - Pet instance entire cleanup (rework and String-ify queries, drop _isRespawned tag and updateRefOwner() method).
                                   - Fix a NPE on siege zone ressurection for clanless people.
                                   - Added retail implementation of shift click (interact/attack without moving). GMs can still use GM panel, but it will be replaced in case of a successful NPC interaction by regular showChatWindow.
                                   - Edit doormen/busy.htm.
                                   - Create a new instance type, BorderGuard, for "Guardian of Border" NPCs (those NPCs aren't Gatekeeper anymore, since they weren't using any functionalities of this instance). Move related bypasses and showChatWindow behaviors from Npc to it.
                                   - Add/edit/drop some javadoc.
                                   - CastleManager#getSiege() is renamed getActiveSiege() because it only shows sieges in progress (reflect better the result).
                                   - showPkDenyChatWindow uses are now made on both onBypassFeedback and showChatWindow, on the correct instances (to avoid instanceof checks).
                                   - Drop Gatekeeper validateCondition system (not retail and was using HTMs which weren't existing). The "siege in progress" check on teleport location is still correctly handled.
                                   - Edit SystemMessageId NO_PORT_THAT_IS_IN_SIGE for CANNOT_PORT_VILLAGE_IN_SIEGE.
                                   - Delete PartyMatchRoom creation/edition logs.

                                PS : characters.sql loses "last_recom_date" and "char_slot" parameters.

                                Changeset 373(887)

                                Datatype organization, Tasks, Clan, Config, Organization, Misc

                                Datatype organization
                                      - Moved to data.manager, javadoc.
                                      - Moved to data.manager, extends XMLDocument.
                                      - Moved to data.manager, extends XMLDocument.
                                      - Queries are stringified.
                                      - More uses of Java8 lambdas.
                                   NpcTable > NpcData
                                      - Moved to data.xml, extends XMLDocument.
                                   RaidBossPointsManager > RaidPointManager
                                      - Rename, moved to data.manager, javadoc, cleanup.
                                      - Fix the order on ranks calculation. Ty katara.
                                      - Move gameserver.cache to gameserver.data.cache
                                      - Cleanup HtmCache and CrestCache (adjust filters, javadoc, Logger...).
                                      - Drop AdminCache adminhandler (2 commands are dropped). Generic //reload type (crests / htm) still works.
                                      - Invalid crests files are deleted on server loading (being wrong format, wrong length, etc).
                                      - Fix an issue where old crests files weren't destroyed on crest edition.
                                      - RequestSetAllyCrest writting style is harmonized using similar packets.
                                      - RequestSetAllyCrest / RequestSetPledgeCrest / RequestExSetPledgeCrestLarge don't accept data length of 0 (case of crafted packets).
                                   - Unify naming convention. Drop the logs.
                                   - ServerRestart/Shutdown are moved from MON to THU (still 4AM) to emulate maintenance task of retail server. Still off by default.
                                   - Drop OlympiadSave task (pointless).
                                   - RaidPointReset task is enhanced on numerous locations :
                                      - only clan level 5+ are checked (external loop is reduced).
                                      - ranks are calculated only for the 100 first (internal loop is reduced).
                                      - addReputationScore is made only on final score and not on every member check (no multiple db operations / packets broadcast for the same clan).
                                   - Basic cleanup, minor improvements, javadoc.
                                   - Don't reward clan skills if player is on olympiad mode.
                                   - _hiredGuards and associated stuff is dropped (not used).
                                   - RankPrivs class is dropped, it is edited for a simple Integer on the Map.
                                   - SubPledge class is moved out of Clan, to model.pledge.
                                   - CLAN_HAS_ALREADY_ESTABLISHED_A_CLAN_ACADEMY SystemMessageId is correctly shown.
                                   - Table clan_skills loses skill_name column (unused).
                                   - Drop min/max protocol version.
                                   - Drop few unused loginserver configs.
                                   - Drop crown/circlet config (see Misc section for explanation).

                                   - CharCreateFail / CharDeleteFail use static approach.
                                   - VehicleAI / VehicleLocation / Vehicle / model.vehicles / VehicleStat > BoatAI / BoatLocation / Boat / model.boat / BoatStat. getVehicle() is merged with getBoat().
                                   - Implementation of CLogger (C for crappy, obviously). An effort will be done to unify all loggers writting style with time (people will complain if I only commit that).
                                   - 3158 skillId fix. Ty sahar.
                                   - Drop ON_KILL event on SummonMinions script (unused).
                                   - Fix dropMultipleItems method (impacts Q108, Q163, Q354 && Q360), ty x-user.
                                   - Fix the impossibility to use NPC names for players and pets. Pet name pattern introduces back numbers. Ty RooT.
                                   - Rework Player.getMemo(), drop getMail() (already handled by MailBBSManager). Probably fix a rare NPE with getMemo().
                                   - //setname can't reward a name which is already owned (player-based restriction).
                                   - Unify handlers writting style.
                                   - setReputationScore() is processed only if clan level is > 4. You can't accumulate CRPs, no matter the action, if your clan isn't at least level 5.
                                   - Drop the task on JailZone, leading to infinite teleport. Ty smoke121.
                                   - Fix toggles which aren't supposed to be desactivated while sitting. Ty TreasureHuman.
                                   - Fix following issues introduced in previous revisions :
                                      - Revert removeSkill parts to handle back "keep effect" behavior for augmentations / items passive skills.
                                      - Revert getAllAvailableSkills edit to make enchant working anew with *** config. To handle deleveling correctly we need correct magicalLevel for every skill.
                                      - Fix config about invul gm on startup, since //invul drop.
                                      - Fix Party IOOBE prior to rev 652.
                                   - Rework crown/circlet item restriction system.
                                      - Don't delete objects (not retail).
                                      - Rework Player#checkItemRestriction() which wasn't properly updating character (headgear was still shown).
                                      - Rename Castle#removeCirclet and removeCircletsAndCrown for checkItemsForMember and checkItemsForClan. Methods are optimized (clan method uses only one connection for all members).
                                   - Edit ON DUPLICATE KEY UPDATE queries to handle parameters directly on query and not on core.

                                aCis Test Server -

                                Here is the IP of a test server, always based on latest. If you want to see actual progress, check differences between free and head rev, feel free to log in and test. Everyone has admin access, except few maintenance commands.

                                SVN changeset:894
                                « Last Edit: December 27, 2017, 11:10:51 AM by SweeTs »


                                • Full Member
                                • ***
                                • Posts: 162
                                • L2topzone Votes: 25
                                • Servers reviews: 0
                                • Reputation: +290/-0
                                  Re: [Project] aCis - Interlude
                                  « Reply #235 on: January 13, 2018, 04:43:07 PM »
                                  Changeset 374 (920)
                                  Datatype organization, Geoengine, Clan, Zones, TaskManagers, Misc

                                  Datatype organization
                                     ZoneManager cleanup
                                        - Moved to data.manager, extends XMLDocument, full Javadoc documentation.
                                        - Zone types are now based on file name (automatically set, the dedicated variable is dropped).
                                        - Few optimizations are done (zone constructor is unique per loaded file, Node 'for' loops are merged, use of IntIntHolder, getRegionX is moved one step higher to avoid to process it on every y call).
                                     FishingChampionshipManager cleanup
                                        - javadoc, CLogger, try-with-ressource use, String black magic > StringBuilder, use of addBatch and avoid to create a PreparedStatement per player.
                                     MovieMakerManager cleanup
                                        - javadoc, moved to data.manager, all _sequences container uses are enhanced. Don't create a new Sequence object when you update it.

                                  Geoengine (was supposed to be part of next revision, but the removeInvalidSkills() hotfix made me commit it)
                                     - Merge GeoEngine and GeoEnginePathFinding, use CLogger, edit _debugItems CopyOnWriteArrayList for ConcurrentHashMap.newKeySet().
                                     - Delete PathFinding config.
                                     - Tweak clan_data datatypes.
                                     - village_master Clan and Alliance HTMs are harmonized.
                                     - Extend internal usage of static pledge types, remove "Clan." from existing ones.
                                     - updateClanMember method is deleted (it was full garbage).
                                     - Implement "clan leader transfer cancellation" bypass (was written as undone in HTM).
                                     - Addition of ClanLeaderTransfer task, which fix possible exploits regarding clan transfer. Set on THU 16:55 (17:00 being retail maintenance time, on 2007). Compared to L2J version :
                                        - If the given newLeaderId doesn't exist on task execution, we reset it to 0 for this clan (no future execution of the task for this clan).

                                     - BossZones
                                        - Following zones are deleted : Ant Queen, Orfen (don't exist on L2OFF).
                                        - Following zones are edited using L2OFF GF values : Sailren, Frintezza, Altar of Sacrifice.
                                        - Ice Fairy zones have been implemented (3 new zones).
                                        - Drop EnabledByDefault parameter (unused, I don't see the use since everything is on by default).
                                        - CopyOnWriteArrayList is replaced for ConcurrentHashMap.newKeySet() for better performance.
                                        - Players aren't teleported out if summon enters in a BossZone. The summon is still unsummoned. The unsummon part is moved inside the null check to avoid NPE.
                                     - Zone names classes lose L2 prefix, javadoc is added. Some variables are either deleted (when unused), or renamed.
                                     - Zaken curse zone is deleted (postIL).
                                     - Damage zones deal 200 damages per tick, not 100.
                                     - SpawnZone is renamed SpawnZoneType, to follow ZoneType and CastleZoneType.
                                     - Addition of ZoneId.BOSS, to easier checks about boss zones.
                                     - Cleanup htm/admin/zone.htm and related admincommand
                                     - Fix an exploit using mass resurrect out of BossZone, reviving people inside it. Ty Sahar.

                                     - ItemsOnGroundTaskManager : merge 2 db connections, use of CLogger.
                                     - MovementTaskManager : use regular ThreadPool, drop iterator and try/catch.

                                     - Fix a MySql data truncation error for shadow items with time >= 600. Ty shyr for report.
                                     - Fix players stop to attack when speaking to a NPC (before they were continuing attacking first target). Ty RooT for the report.
                                     - Fix archer double damage.
                                     - Fix skill animation cancellation with ESC.
                                     - Fix autoattack which was cancelling by itself (for some dudes).
                                     - Implementation of removeInvalidSkills(). Fix Expertise system, and regular skills downgrade / deletion on player delevel (based on player level + 9).
                                     - All Clan containers are now concurrent. ConcurrentModificationException were rare, but they were possible.
                                     - Fix blow formula (CRITICAL_DAMAGE_POS calculation). Ty sahar.
                                     - Fix NPE for clanless people on siege (3 potential spots, because switch can't accept a null value being passed on it). Ty sahar for the catch.
                                     - ServerRestart and ServerShutdown tasks are set to THU 17:00. Promise, I stop to edit them.
                                     - All packets logs concerning exploits/integrity checks are dropped (obviously checks themselves are retained...).
                                     - Say2
                                        - Max number of characters is now 100 (from 99). Ty kvex.
                                        - CRITICAL_ANNOUNCE can be used only by GMs characters.
                                        - Invalid integrity checks simply return and don't logout player.
                                     - Move CastleManager initialization higher in the hierarchy (was called indirectly by ItemsOnGroundTaskManager).
                                     - Fix a NPE using "remove castle" admin command if CastleManorManager is disabled.

                                  PS :    - clan_data enabled column datatype is edited from enum to tinyint.
                                        - SSQZone file is dropped (unused), all zones lose "type" parameter.
                                        - Sailren zone id is changed to 110011, from 110015 (I ordered zones using L2OFF areadata.txt). Ant Queen && Orfen boss zones are deleted. Scripts are edited to reflect the change.
                                        - The 3 animation bugs (archer, cancel skill, autoattack) come from rev 338 (exist since 2015). Consider to throw some stones to Hasha.
                                        - if you use a live server, consider to redesign items.sql table.


                                  • Full Member
                                  • ***
                                  • Posts: 162
                                  • L2topzone Votes: 25
                                  • Servers reviews: 0
                                  • Reputation: +290/-0
                                    Re: [Project] aCis - Interlude
                                    « Reply #236 on: November 02, 2018, 10:08:36 AM »
                                    Changeset 375 (958)

                                    AIs, Datatype organization, Misc

                                        - Intentions
                                          - Move onInteractionInteract logic on PlayerAI (PlayerAI is the only AI to use INTERACT).
                                          - Improvement of Desire class.
                                          - _nextIntention Object is updated and not created everytime anymore, which will save some memory.
                                          - Fix the NPE on onEvtReadyToAct() due to a lack of synchronization.
                                          - Add a next intention for INTERACT case if current is CAST, but a lot more cases need such improvements (PICKUP after ATTACK/CAST notably).
                                       - Attack stance
                                          - Drop _clientAutoAttacking variable.
                                          - Rename clientStartAutoAttack() for startAttackStance(), same for stop. Correct use of inheritance / override.
                                          - A missed hit doesn't start victim attack stance.
                                          - Drop multiple clientStopAutoAttack() / abortAttack().

                                    Datatype organization
                                       - ScriptManager > ScriptData. Extends XMLDocument, CLogger, few Javadoc.
                                    Community Board
                                       - Complete cleanup (method names, try-with-ressources, stringified queries, variable renaming, stream uses, CLogger uses)
                                       - ForumsBBSManager uses ConcurrentHashMap.newKeySet() instead of CopyOnWriteArrayList as container (performance).
                                       - MailBBSManager uses ConcurrentHashMap instead of HashMap as mails container (fix a potential ConcurrentException).
                                       - MailBBSManager.sendMail method is optimized.
                                       - Cleanup (use of CLogger, some methods cleanup).
                                       - ServerStatus.STATUS_DOWN is called when time is <= 60. Before it was called only when the timer was reaching 60, meaning the server status was never updated if a shorter time was set as restart/shutdown time.

                                       - Drop COORD_SYNCHRONIZE config.
                                       - Fix Q232. Ty LordWhiz.
                                       - Some SummonFriend methods cleanup. Add YOU_MAY_NOT_SUMMON_FROM_YOUR_CURRENT_LOCATION message.
                                       - Added DebugMovement config.
                                          - Set to 0 by default, if > 0 it will throw items to track server-side movements. Used as a debug tool.
                                          - The timer, which is the config, delete objects after X seconds.
                                       - Move ItemTable#createItem and #destroyItem to ItemInstance. Rename them create and destroyMe.
                                       - Refresh clan wars on clan deletion (db was correctly handled, but not server variables). Ty Sahar.
                                       - Tweak subclass change overweight check. Ty Root.
                                       - Addition of Lightning Strike enchant routes. Ty Sahar.
                                       - Fix an issue where heroes who took gate passes before taking hero status get the gate passes as if they aren't heroes. Ty Sahar.
                                       - Weekly maintenance time set to Tuesday and not Thursday (was right in 2008 at least, edited for Wednesday since 2011). Ty Sahar.
                                       - Handle correctly hero item inventory discard on relog - isHero() being not fed on Player object creation, we have to rely on another source. Ty Sahar.
                                       - Dismount player on Olympiad teleport. Ty th0r1 for report.
                                       - Raid points event is every month, not every week. Ty Remix2k18 for report.
                                       - Fix Q118 && Q123 getSponsor check logic.
                                       - Fix for double penalty of 3rd class summons. Ty Sahar.
                                       - Fix a typo in clan full system message. Ty Sahar.
                                       - Fix a bug causing hero weapons to disappear if relogging with them equipped. Ty Sahar.
                                       - Fix missing stacktype for song of renewal / wind (can cause a bug : when rebuffing that buffs disappears). Ty Sahar.
                                       - Fix hero items are not being deleted from player if he is online (player had to relog to have the item deleted). Also, drop a double InventoryUpdate packet send. Ty Sahar.
                                       - Fix being able to buy items from disallowed NPCs in some situations (like teleporting away and then buying something). Ty Sahar.
                                       - Fix character gets stuck if trying to interact with an unreachable target more than once. Ty Sahar.
                                       - Fix issue where if you change target while already running to a certain target, you will still run towards the old target. Ty Sahar.


                                    • Full Member
                                    • ***
                                    • Posts: 162
                                    • L2topzone Votes: 25
                                    • Servers reviews: 0
                                    • Reputation: +290/-0
                                      Re: [Project] aCis - Interlude
                                      « Reply #237 on: November 11, 2018, 11:08:13 AM »
                                      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.


                                      • Full Member
                                      • ***
                                      • Posts: 162
                                      • L2topzone Votes: 25
                                      • Servers reviews: 0
                                      • Reputation: +290/-0
                                        Re: [Project] aCis - Interlude
                                        « Reply #238 on: December 23, 2018, 05:46:23 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).


                                        • Full Member
                                        • ***
                                        • Posts: 162
                                        • L2topzone Votes: 25
                                        • Servers reviews: 0
                                        • Reputation: +290/-0
                                          Re: [Project] aCis - Interlude
                                          « Reply #239 on: January 21, 2019, 06:59:58 AM »
                                          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.

                                          Share via diggShare via facebookShare via linkedinShare via myspaceShare via redditShare via twitter