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

0 Members and 3 Guests are viewing this topic.


  • Full Member
  • ***
  • Posts: 162
  • L2topzone Votes: 34
  • Servers reviews: 0
  • Reputation: +290/-0
    Re: [Project] aCis - Interlude
    « Reply #240 on: February 03, 2019, 06:56:24 PM »
    Changeset 379 (1104)

    Zaken, Four Sepulchers, Dimensional Rift, Cleanup, Bugfixes

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

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


    • Full Member
    • ***
    • Posts: 162
    • L2topzone Votes: 34
    • Servers reviews: 0
    • Reputation: +290/-0
      Re: [Project] aCis - Interlude
      « Reply #241 on: February 20, 2019, 04:12:59 AM »
      Changeset 380 (1133)

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

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

         - On teleport, the heading is now taken in consideration.
         - Fix NPE for detached Players upon //character_info use. Ty sahar.
         - Complete previous fix regarding auto-attack behavior which should stop once the target isn't autoattackable anymore.
         - Fix Q634 Dimensional Fragments drop amount/rate.
         - Anakazel rewards Soul Crystal leveling to all party members.
         - Fix a weapon equip task exploit. Ty Celestine for the detailed video.   
         - Fix ghost attacks upon stun/sleep/paralyzed/... effects. Notably visible on NPCs.


      • Full Member
      • ***
      • Posts: 162
      • L2topzone Votes: 34
      • Servers reviews: 0
      • Reputation: +290/-0
        Re: [Project] aCis - Interlude
        « Reply #242 on: March 29, 2019, 11:01:03 AM »
        Changeset 381 (1225)

        Updates, Cleanup, ClanHall, Bugfixes

           - aCis officially support JDK11 (since Oracle changed their licence, consider to use OpenJDK), and is now mandatory. Older/different versions aren't supported anymore.
           - Refresh mysql connector from 5.1.26 to 8.0.15.
           - Revert StringUtil#isEmpty(String... strings) logic.
           - Rnd.get(list) / Rnd.get(array) uses are unified over the source. Those methods don't send anymore default values, and will lead to errors if the given array is null.
           - Add Player#isWearingFormalWear().
           - Add ExProperties#parseIntIntList.
           - Add ZoneType#addKnownObject / removeKnownObject.
           - Drop L2Skill isDemonicSkill() / isFlyingSkill() / isStriderSkill() - no use anymore.
           - Activation of the try-with-ressources warning. All impacted classes were cleaned up in the process (renames, CLogger addition, regular writting style, Stringified queries, Javadoc...). I won't list all changes, but there was something like 200+ warnings.
           - IdFactory
              - Merged with BitSetIDFactory.
              - Drop _freeIds.clear() on initialization (Javadoc says it sets to false by default).
              - Drop _initialized flag (unused).
              - Drop Collections.sort(usedObjectIds) (pointless).
           - Basic Duel packets cleanup. Add missing ExDuelEnemyRelation packet (with no use). Ty RooT.
           - ZoneType#getKnownTypeInside returns Collections.emptyList() if no characters are found - avoid to generate an empty List for nothing. Delete children classes isEmpty() checks.
           - Complete rework of ClanHall system. Added to the regular cleanup (CLogger, Javadoc, Stringified queries,...) :
              - Improve clanhall admin management.
                 - Usage is now //ch chId <set|del|open|close|goto|end> (one admincommand for all actions).
                 - Clan Hall and Siege admincommands got now seperated AdminCommandHandler.
                 - No more Exception on invalid parameter for both clan halls and sieges admincommands.
              - Fix clan hall doormen "To Beginning" button.
              - Change the way of attribution of ClanHallManagerNpc ClanHall (no subsequent ClanHallManager calls).
              - XMLize static data (moved out from SQL). Merge Auction db content with ClanHall db content. AuctionManager is dropped, Auction is now stored to the ClanHall directly.
              - Rework the fee task to be more friendly.
              - ClanHallFunctions are loaded in same time than ClanHall, to benefit from the existing Connection. ClanHall don't use anymore one Connection per ClanHall, too.
              - "Clan Action" panel is refreshed upon ClanHall free() method call.
              - Fix an issue with owned ClanHall bids cleaned up upon server start.
              - Upon setOwner() : previous owner got some actions made on it, fee task is renewed for new clan, existing ClanHallFunctions are deleted, outsiders are dumped out.
              - Doors are closed for both free() / setOwner() processes.
           - Implementation of EventTrigger packet + retail usage (castle traps visual effect on siege progress). Ty RooT.
           - Implementation of ExMPCCPartyInfoUpdate packet.
           - Add mods_wedding as part of restored objectIds (otherwise those ids are usable, while they shouldn't).
           - ShortcutList / Shortcut
              - Fix addition/remove/update SKILL shortcut type (manual or from trainer).
              - Integrity check upon addition (check MACRO, RECIPE, ITEM, SKILL types).
              - Fix cleaning issue for ITEM (dropping an item on ground was only clearing the first occurence of shortcut met, not others if existing).
              - Implementation of ShortCutDelete packet.
           - Olympiad Competition starts time seconds are set to 0.
           - EnterWorld exploit fix (create a special GameClientState ENTRING for the occasion, more infos here : https://acis.i-live.eu/index.php?topic=10070).
           - GMViewSkillInfo shows correctly disabled skills when wearing Formal Wear. Also refresh skills state upon equiping/unequiping Formal Wear.
           - Add back regular skills use for mounted players and cursed weapons users. Indirectly fix SoE and alike skills items for mounted / CW user.
           - Fix zone/region overlapping (can be tested on Giran castle active front trap). Ty bowling4soup.
           - Fix Q348. It uses L2OFF script for Blooded Fabric acquisition formula.
           - Add MultiSellChoose _entryId integrity check to avoid packet craft (avoid IOOBE). Ty Ghadda / bowling4soup.
           - Rework BrokenLabyrinth based on L2OFF GF. Fix an IOOBE.
           - Edit Linux shell scripts to automatically create log folder if not existing. Ty RooT.
           - Add CW SocialAnimation upon ranking.
           - Fix CW visual effect (goes from 1 to 10 stage, not 0 to 9). Ty RooT for tip.
           - Fix XP/SP calculation. HP ratio is already taken in consideration by template values. Ty Ghadda.
           - Revert previous edition of a config, based on Sahar observations - From -18104, 109992, -2656 to -18312, 110056, -2512 archers could shoot.

        PS : if you already own a live server, you have to add "?serverTimezone=UTC" as part of database URL.
        PS2 : you have to refresh your developement board :
           - OpenJDK 11 can be downloaded here : https://jdk.java.net/
           - Eclipse 2018-12 or any IDE accepting JDK11.


        • Full Member
        • ***
        • Posts: 162
        • L2topzone Votes: 34
        • Servers reviews: 0
        • Reputation: +290/-0
          Re: [Project] aCis - Interlude
          « Reply #243 on: April 25, 2019, 03:20:52 PM »
          Changeset 382 (1288)

          Since a lot of core has been edited/moved, sources will be exceptionally shared at rev 382 for Customers, added to the diff patch for the adventurers. If you begin to dev a project, I strongly invite you to port your customs directly on 382 shared pack.

          Organization, Cleanup, Bugfixes


          A lot of organization has been made, in order to give some consistency to core side.
             - Creation of package gameserver.enums. All existing enum have been moved here, and renamed to either get distinct name (CtrlEvent / EventType being too generic), and to fit with new convention name for enums (has to end with "Type" or "Status").
             - Creation of package gameserver.model.actor.player and gameserver.model.actor.npc, holding classes related directly to Player and Npc (+ children) classes.
             - Creation of package gameserver.model.spawn, holding AutoSpawn / L2Spawn / BossSpawn classes.
             - Drop model.base and model.actor.appearance packages.
             - Player is moved out of model.actor.instance, to model.actor.
             - Drop of Broadcast class and gameserver.util package, content is splitted between World / ZoneManager / Creature.
             - Drop of gameserver.templates package. StatsSet is moved to common.util.
             - Drop of gameserver.instancemanager, with rename : SevenSigns > SevenSignsManager, SevenSignsFestival > FestivalOfDarknessManager. Both are cleaned (CLogger, try-with-ressources,...) and moved to gameserver.data.manager.
             - AutoSpawnManager > AutoSpawnTable and moved to gameserver.data.table, with a split of AutoSpawnInstance > AutoSpawn moved to gameserver.model.
             - Drop XMLDocumentFactory and gameserver.xmlfactory package (no use anymore).
             - Drop gameserver.model.petition package, move Petition back to gameserver.model (we avoid to use package for single classes).
             - Refresh DP .project to avoid Eclipse warnings.
             - Move GET_PLAYER and INSTANT_JUMP skills to their own SkillType, TELEPORT, in order they aren't used by regular AI system. In order NPCs use them, you have to write additional script.
             - Add Npc#doCast(SkillType), which randomly cast a skill based on its SkillType and associated to the NpcTemplate skills.
             - Heading is now part of getPosition(). New setXYZ/spawnMe methods have been generated to give the possibility to feed heading in same time than X/Y/Z. To set the heading independently, you have to use getPosition().setHeading(heading).
             - Improve Npc#toString().
             - Rename Player#getPet() / setPet > getSummon() / setSummon(), since it is supposed to return Summon, which are both Pets and Servitors.
             - Walker doesn't override HP drop stuff (since it inherits from Folk#isMortal).
             - Creation of Punishment model (with Javadoc) in model.actor.player, holding all punishments informations of a Player.
             - Creation of HennaList model (with Javadoc) in model.actor.player, holding all Hennas informations of a Player. Ty vampir for the initial contribution.
             - L2Radar > RadarList + Javadoc and move it to gameserver.model.actor.player, extract RadarMarker to gameserver.model.
             - ValidatePosition _heading isn't processed anymore (no use).
             - Generate TeamType enum, based on StinkyMadness idea.
             - Complete rework of RaidBossManager.
                - Merge the different Maps holding infos into one. Create BossSpawn in model.spawn package to hold all related infos.
                - The saving process isn't lazy anymore, but handled on spawn/death/server start.
                - BossStatus isn't related to a Npc instance anymore, meaning you can interrogate it even if Npc isn't existing (DEATH case).
                - Rename StatusEnum > BossStatus enum, moved into enums package.
             - Add the possibility for server admins to tweak default items quantity and equipability. The result is more readable than previous system. It uses the newly generated ItemTemplateHolder (gameserver.model.holder).
             - Cleanup RandomAnimationTaskManager
                - Animation task cancel is now instant upon NPC death, inactive region or intention change != ACTIVE for Attackable. Before it was waiting the regular end timer.
                - Following instances types aren't registered anymore on RandomAnimationTaskManager : ControlTower, EffectPoint, FlameTower and SiegeFlag.
                - Drop of Npc#isMob(), addition of Npc#calculateRandomAnimationTimer().
             - Add missing login status on admin/maintenance.htm
             - Generate StatusType and AttributeType enum, which are used for both LS and GS. Unload ServerStatus of multiple variables.
             - CharInfo heading / boatId is fixed, based on Vilmis remark.
             - Fix a bug introduced in rev 380, where bosses died during a server down couldn't respawn properly. Ty bowling4soup.
             - Add HEAL_STATIC as potential buff slot (fix skillId 3125). Ty Sahar.
             - Modify Lightning Strike power effect. Ty Sahar.
             - Fix the double summon spawn issue (unSummon + doDie happening in same time), as tested by Sahar.
             - Decaying summons tasks are dropped if a decay occurs (avoid tasks to run for nothing).
             - Add Porta/Perum script named SummonPlayer.
             - startAttackStance() / stopAttackStance() system is cleanup. Avoid to spam AutoAttackStop broadcast by NPCs. Decrease the amount of startAttackStance() / stopAttackStance() calls tremendously, notably because the call is moved from onHitTimer to doAttack. Since each attack can produce 1, 2 and up to 10 hits for polearm users, as much calls were done.
             - Player#store doesn't store anymore client X/Y/Z (avoid exploit upon relog).
             - Diagonals flags rule is edited on GeoDataConverter. They must now be validated in both direction.
             - Add/improve character water/fly state on SummonInfo, NpcInfo, PcMorphInfo, PetInfo.
             - Avoid NPE on ClanHall#setOwner, issue introduced in rev 381. Ty bowling4soup.
             - Fix ShortcutList#restore(), issue introduced in rev 381. Ty bowling4soup.
             - Fix ignoreShield() behavior for L2SkillType STRSIEGEASSAULT, PDAM && FATAL. Ty Sahar.
             - SiegeGuard AI is set to ACTIVE and not IDLE when reduceHate occurs.
             - Fix an issue on player creation ; items (armors) weren't equipped properly.
             - Fix default skills shortcut acquisition upon player creation.
             - A DOWN server now correctly repells login attempts (case of Shutdown 60sec). Negative access levels accounts see the server DOWN, and can't login aswell. Addition of GameServerInfo#canLogin(LoginClient client).
          PS : You should update your geodata, either using GeoDataConverter or refreshing it using aCis shared link (verify modification date).

          Since a lot of core has been edited/moved, sources will be exceptionally shared at rev 382 for Customers, added to the diff patch for the adventurers. If you begin to dev a project, I strongly invite you to port your customs directly on 382 shared pack.

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