Last aCis updates

Started by Tryskell, January 04, 2011, 10:46:15 PM

Tryskell

Changeset 401 (2407)

Bugfixes, Organization


Bugfixes
   - Implement SiegableHall HQZones and the possibility to build Headquarters and respawn at the flag during a SiegableHall siege.
   - Banish all Players from ClanHallZone upon SiegableHall start.
   - Add Henna check over class change, disabling stats if invalid. Ty RooT for report, Hasha for fix.
   - Fix NPE over Contract Payment. Ty Sahar for report, StinkyMadness for fix.
   - Don't remove toggles upon teleport. Ty Denzel for report.
   - Fix silence interrupting wrong type of skills. Ty Sahar for fix.
   - Fix both Pagan's Temple top platform doors coords. Ty KabLe for report.
   - Fix augmented items shortcuts. Ty TigVecc for report, Evolution for initial fix.
   - Don't reward dead Party Players with items, only with adena. Ty Evolution for fix.
   - Karma players can be kept attacked. Ty ErHard for report.
   - Implement NO_REQUESTS_TO_DISPERSE sysMsg.
   - Don't change Summon follow state if using "attack" action. Ty Gigi85 for report.
   - Fix Summon "move" action - it now follows the target, but still simply move to location for Creature-unlike WorldObjects.
   - Fix Nightshade - Shade Sacrifice skill targethandler. Ty Gigi85 for report.
   - Implement EffectHeal / EffectManaHeal, fixing Sweeper enchant route n°2. Ty bojikman for report.
   - Make SiegeFlag un-lethalable.
   - Fix all Dwarven / Orc Villages Guards HTMs, which were leading to NPE due to invalid territory bypass. Ty Denzel for report.
   - Fix 38 merchants HTMs (up to 31670 included). Few had also the NPE due to invalid territory bypass.
   - Fix SHOW_SUMMON_CREST over teleport. Ty Denzel for report.
   - Add missing observe mode checks : NO_OBSERVE_WITH_PET, CANNOT_OBSERVE_IN_COMBAT and one (custom ?) Olympiad registration check (ty KabLe for that last one).
   - Implement GAMES_DELAYED sysMsg over Olympiads low amount of participants.
   - Rework Q414 quest logic. Ty stepbystep for report.
   - Fix ClassCastException upon CORPSE_MOB / AREA_CORPSE_MOB. Ty Sahar for fix.
   - Player, when under attack, shouldn't stand up if operating a shop. Ty Denzel for report.
   - Cancel Player shop process if teleporting (Player stay sat).
   
Organization
   - Add ClanHallManager#getActiveSiege (based on the same idea than regular Siege).
   - Implement ClanHallSiege#checkSide/checkSides (was only returning true).
   - Delete Castle#getDistance, ZoneForm#getDistanceToZone, ClanHallManager#getNearestSiegableHall ("approximative" zone check got no sense - the only viable checks are about if you are "in" or "out" a zone).
   - Rework "//zone show all" to show ZoneTypes in the Player's neighborhood.
   - Add WorldObject#getZones, delete ZoneManager#getZones (new version is more versatile/shorter coded).
   - Merge SiegableHallZone and ClanHallZone zones (previous was adding complexity for nothing, since there was no use of the extends).
   - Delete Player#isInSieagableHallSiege concept (unused).
   - Rework IAcceptFilter#accept to handle Socket instead of SocketChannel (fix 2 potential ressource leaks).
   - Use Point2D / Location instead of int[] for commons.geometry.
   - Implement "//show door", to visualize door coords in the Player's neighborhood.
   - Implement canBeHealed to harmonize checks between Heal/ManaHeal and their "over time" versions.
   - Cleanup OlympiadManager (use values() instead of Entry, use of computeIfAbsent, and don't make strange operations over Lists).
<html><body>Triskel:<br>
Triskel does not speak with foolish fellows who do not know their profession!
</body></html>

Tryskell

#301
Changeset 402 (2516)

SpawnManager, Castles / Sieges, Scripts, Bugfixes, Organization


Initial implementation of L2OFF territory system - ty Hasha
    - Allow NPCs to randomly spawn over a defined territory, which is considered as "their" territory.
    - Allow to spawn multiple NPCs, if part of the same event.
    - Implement "out of territory" concept.
   
Following spawnlist types are now handled by that new system :
    - Regular
    - Raidboss
    - Seven Signs
    - Day/Night
    - Autospawn
    - Castle guards

Castles / Sieges
    - Implement PC guards upon start/mid victory.
    - Mid victory upon NPC siege doesn't end the siege anymore.
   
Scripts
    - Add FollowerMovingAroundMaster script. Delete TownPet instance. Register some Folk as MutedFolk.
    - Queen Ant
        - Guard Ant now teleport if out of territory. Ty Denzel for report.
        - Add a Player kickout behavior upon Queen Ant spawn if they are on territory.
        - Guard Ant randomly frenzy, not Royal Guard Ant.
    - Fix Zaken teleport behavior. Add missing offset upon teleport. Ty Denzel for report, Hasha for fix.

Bugfixes
    - Fix Beholder of Light 1 second respawn time. Ty Denzel for report.
    - Seven Signs monsters seal stones drop now depends about current winner few different spawnlists based on current seal owner).
    - No more "multiple times" spawns (some areas were previously flooded by monsters).
    - Monsters attack timeout is now handled by "out of territory" concept (60s timeout during combat mode, refreshed if returning to territory meanwhile).
    - Fix one typo over main menu. Ty Denzel for fix.
    - Fix Tutorial Book spam upon Player log out/in. Ty Denzel for report.
    - Cancel Player associated QuestTimers when such Player logout.
    - Fix 3075, 3079 and 3192 skills. Ty Denzel for report, Hasha for fix.
    - Skill oneshots upon Attackable properly trigger faction call behavior. Ty Kitsos for fix.
   
Organization
    - Add Npc#isInMyTerritory() concept.
    - Add ScriptEventType#OUT_OF_TERRITORY concept (used notably by Queen Ant script).
    - Add ZoneType#getKnownTypeInside(Class<A>, Predicate<A>) for easier usage.
    - Rename ZoneType#movePlayersTo as ZoneType#instantTeleport.
    - Add artifacts locations into CastleManager. They aren't controlled by SpawnManager anymore. Add related infos into castle.htm.
    - Rework ControlTower to use getScriptValue.
    - Implement IXmlReader#parseLocation(NamedNodeMap) and parseSpawnLocation(NamedNodeMap).
    - Move few methods from Location to Point2D (addStrictOffset, addRandomOffset, addRandomOffsetBetween). Introduce addPositiveOffset method. Rename addRandomOffsetBetweenTwoValues > addRandomOffsetBetween.
    - Replace the way new forum id is being generated. Ty StinkyMadness.
    - Pagination cleanup. Ty StinkyMadness.
    - All uses of Pagination are visually unified (//bk, //find, //skill and //skill list, //knownlist, //effect).
    - Replacement of <center> tags inside <td> by <td align=center>
<html><body>Triskel:<br>
Triskel does not speak with foolish fellows who do not know their profession!
</body></html>

Tryskell

#302
Changeset 403 (2566)

AI, Scripts, Drop/spoils, Manor domains / Seeds, Bugfixes, Organization


AI
    - Rename ScriptEventType > EventHandler and enum content to fit with L2OFF naming convention.
    - Introduction of CLAN_DIED, NO_DESIRE, PARTY_ATTACKED, PARTY_DIED, SEE_ITEM EventHandler.
    - Proper implementation of ATTACK_FINISHED (rename of ATTACK_ACT), which is now called on either bow or regular attack END (and no over successful regular attack).
    - Move MY_DYING call to Npc, instead of Attackable.
    - Rework the aggro system, which is now bound to SEE_CREATURE (rename of ON_CREATURE_SEE) event. Delete ON_AGGRO EventHandler (custom).
    - Implement master/minions system directly on Npc, and add the mechanisms over AttackableAIScript, allowing overriding. Delete MinionList. Implement retail tasks about "minion despawn upon master death" and "teleport to master if out of territory".
    - Monsters which random walk don't return to spawn location anymore if they are already isInMyTerritory().
    - Introduce Quest#createOnePrivate and Quest#initializePrivate.
    - Introduce Npc#lookItem/lookNeighbor.
   
Scripts
    - Gordon now pickups the Cursed Weapon if dropped on ground and it didn't dissapear yet.
    - Add OUT_OF_TERRITORY event over ImperialGravekeeper script.

Drop/spoils - Ty Hasha
    - Remove HerbDropData and herbDrops.xml. Remove "dropHerbGroup" param from NPC templates.
    - Update NPC templates (XMLs) with re-parsed droplists. Data source is npcdata.txt from AdvExt September 2019. Herbs are now part of droplist.
    - Merged various Monster#calculateXXXItem methods to one DropCategory#calculateDrop.
    - Rework //info drop and //info spoil. It now includes config rates, drop categories and use Pagination. DropCategory#getChance and DropData#getChance return chance in % as double, update the usage accordingly.

Manor domains / Seeds - Ty Hasha
    - Introduce manor domains under manorAreas.xml, using L2OFF defined territories. Replace usage of MapRegionData to ManorAreaData for seed sowing check. Indirectly fix a possible exploit of luring monster to another manor area to sow it.
    - Cleanup Seeds item handler, reorganize conditions to match L2OFF, added one missing SystemMessageId.
    - Cleanup Harvesters item handler, use FrequentSkill for harvest skill.
    - Fix an issue where multiple players could sow a monster.
    - Refactor SeedState
        - does not extend ArrayList, the crop is always one item type
        - added #isHarvested check
        - fix #isAllowedToHarvest, checks for player itself or seeder's party member (as per L2OFF)
    - Sow skill handler
        - Reorganize conditions to match L2OFF.
        - Add one missing SystemMessageId. Ty Denzel for report.
        - Remove custom extra sound and party message.
    - Harvest skill handler
        - Reorganize conditions to match L2OFF.
        - Remove useless SystemMessageId and InventoryUpdate usage.
        - Remove party distribution of crops - only harvester gets them, while party members only get info message (as per L2OFF)
    - Player#addItem system message logic is extended by "Harvest".

Bugfixes
    - Fix TargetAreaCorpseMob / TargetCorpseMob : they now work on any Creature registered into DecayTaskManager (which are, Summons and any NPCs - they don't work on Pet for obvious reasons).
    - Implement Creature#forceDecay. Will work on any instance being registered in DecayTaskManager. Fix servitors force decay.
    - Fix a NPE over Salvation skill over summons. Implement it for pets.
    - Add missing SERVITOR_PASSED_AWAY message.
    - Fix one typo over armorSets. Ty RooT for fix.
    - Add missing client notification during clan dissolution process. Ty RooT for report.
    - Fix chest behavior. Ty Hasha.
    - Revert aggro bonus for Raid related NPCs.
    - Delete MoveTime FloodProtector, generating desync upon click spam.
    - Fix SiegeSummon stackoverflow upon unsummoning it over siege zone. Ty Denzel for report.
   
Organization
    - Add ItemInstance parameter to ISkillHandler#useSkill.
    - Introduce DropType enum.
    - Delete herb specific drop rate configs, merged them under one "RateDropHerbs".
    - Rename "RateDropAdena" to "RateDropCurrency", since it now also affects Seal Stones.
    - Introduce StringUtil#trimAndDress.
<html><body>Triskel:<br>
Triskel does not speak with foolish fellows who do not know their profession!
</body></html>

Tryskell

Changeset 404 (2601)

SiegableHall part II, Formulas, Attack, Spawns, Bugfixes, Organization


SiegableHall - part II (3/6 fully working)
    - Add missing ClanHallManager attack players save upon server shutdown. Ty Denzel for fix.
    - Fix RAINBOW_SULFUR usage over RainbowSpringsChateau. Ty Minutis for report, Hasha for fix.
    - Delete 'clanhall_siege_guards' SQL table and use SpawnManager content instead.
    - Review following Siegable Halls, which are now OFF-like :
        - Devasted Castle (introduce AIs for Gustav, Mikhail and Dietrich, fix instances types/canMove/aggro). Fix one ClassCastException upon Q350 call.
        - Fortress of Resistance (introduce the 2 Nurka spawns depending if CH was previously owned, fix instances types/canMove/aggro).
        - Fortress of The Dead (introduce Lidia HP regen conditional task, fix instances types/canMove/aggro).
    - Fix SIEGE_OF_S1_HAS_BEEN_CANCELED_DUE_TO_LACK_OF_INTEREST invalid parameter.
    - CH bosses aren't lethalable anymore. Ty Sahar for the report.
    - Addition of //ch siege start|end chId.
    - Implementation of FlagWar superclass, including BanditStronghold and WildBeastReserve scripts. Not tested.

Formulas
    - Add retail-like heal formula. Ty YeahThePro for the formula.
   
Attack
    - Rework CreatureAttack / Attack packet. All effects are now precomputed.
    - Fix the scenario that causes next attack to be used without SS (self dying, target dying, getting stunned, getting interrupted,...)
    - The CP 0 over CW user is now properly handled (if task was interrupted, the CP 0 was still hitting).
   
Spawns
    - Minions cleanup is now handled by ASpawn#doDelete.
    - Introduce MinionSpawn, fixing the ghost appearance upon minion kills and make the global minion handling easier.
    - Delete isMinion(), concept must be bound to _master, which is dynamic. Add hasMaster() check instead.
    - Siege guards return to their exact spawn point.
    - Fix all Castle Siege Guards (proper siege relation for every guard, proper spawn of the artifact room "bosses", edit the instance type of few "Folk").
   
Bugfixes
    - Add missing NO_ITEM_DEPOSITED_IN_WH check upon Clan WH. Ty Denzel for report.
    - Revert some Playable edits made on previous revisions, breaking Summon cast rules/conditions. Ty Denzel for report.
    - Fix skills cast upon Arenas impacting friendly Summons. Ty Denzel for report.
    - Fix getRandomPlayer / getPlayersCountInRadius conditions, prior to last revision edition.
    - Make the client connection to gameserver easier. Ty Devlin/Haddwik/RooT for fix.
    - Add DIST_TOO_FAR_CASTING_STOPPED message upon onEvtArrivedBlocked. Ty Denzel for report.
    - Stop all running effects upon subclass change. Ty YeahThePro for the report.
    - Fix PlainsOfDion script range (checked on L2OFF).

Organization
    - Add Creature#isLethalable.
    - Add Quest#createOnePrivateEx (allow to spawn a minion in a exact X/Y/Z).
    - isMaster() now reacts to dynamic getMinions() script feed.
    - Add ASpawn#instantTeleportInMyTerritory with offset parameter.
    - Added //terr test to see random distribution over Territory.
<html><body>Triskel:<br>
Triskel does not speak with foolish fellows who do not know their profession!
</body></html>

Tryskell

Changeset 405 (2639)

Scripts, Spawns, Walker, Formulas, ChanceSkill, TargetHandler, Bugfixes, Organization


Scripts
   - Fix Q421 tree agressive behavior + add summon animation over tree/ghosts spawn.
   - Add Daimon the White Eyed AI.
   - Rework Gordon to handle walking behavior natively (see Walker section).

Spawns
   - Implement ObserverGroup / broadcasting towers based on L2OFF data.
   - Quest#createOnePrivate/Ex : add despawnDelay / isSummonSpawn parameters. Delete version with respawnDelay parameter (unused, not properly implemented). It now doesn't block minion creation if master died.
   - MinionSpawn#doRespawn blocks minion respawn if master died.
   - Fix Martankus position. Add Khavatari Aren missing spawn. Ty stepbystep for reports.
   - Delete Laura spawn, add it as Follower.
   
Walker
   - Reparse all pathes using L2OFF GF. Add missing 31525, 31705, 32128 pathes. Use NpcStringIds instead of custom hardcoded Strings.
   - Delete Walker/WalkerAI, implement concept over Npc/NpcAI. Any Npc can become a Walker now.
   - Greatly improve //show walker content.
   - Pathes can now be properly reverse-walked, but only if next path is unreachable by both direct and pathfinding.
   - Implement socialId (Gordon case).
   
Formulas
   - Delete calcRaidAffected (custom). Such chances aren't hardcoded, but based on passive skills and resists.
   - Add some Javadoc, cleanup some methods.
   - Rework reflect skill damage skills. Ty Shilen for report.
      - Delete vengeancePdam / vengeanceMdam, introduce counterSkill instead.
      - counterSkill ALWAYS reflects a % of original damages back to the caster. Melee skills using BLOW, CHARGEDAM and PDAM are affected. The % is nothing more than the power of the effect, written on DP.
      
ChanceSkill
   - Delete all unused TriggerTypes and associated content.
   - Move TriggerType to enum package.
   - ChanceCondition TriggerType check is now done using an EnumSet instead of crafted int bitmask.
   - ON_ATTACKED triggers only on DAMAGING skills, not OFFENSIVE (no DoT / debuff). Ty ErHarD for report.
   
TargetHandler
   - Fix castable debuff upon Party using CTRL. Ty StinkyMadness for fix.
   - Fix CORPSE_ALLY which wasn't affecting alliance. Ty StinkyMadness for fix.
   - Fix beneficial skills being castable from PEACE to PVP only with CTRL. Ty ErHarD for report.
   - Add missing message for Summon Friend. Ty StinkyMadness for fix.
   - Doors can't be attacked via skills when sieges are off. Ty Denzel for fix.
   - Rework Betray/Erase to use ONE TargetHandler. Delete TargetEnemySummon (custom). Ty ErHarD for report.
   - Fix player<>player cast during duel countdown. Ty shyr for report, StinkyMadness for fix.

Bugfixes
   - Life Cubics don't waste BSPS/SPS anymore. Fix Life Cubic for Beginner. Ty stepbystep for fix.
   - Reset Npc regeneration flags upon respawn. Ty vladalien for fix.
   - Attacks upon Players using //hide are properly stopped if you aren't GM. Work on Summons too. Ty SweeTs for report.
   - Delete double SA bonus for 2 duals items. Ty YeahThePro for fix.
   - Fix skillId 2077, 1376, 444. Ty YeahThePro, KabLe for report, LaRoja for fix.
   - Fix itemId 8663, 8939 to 8944. Ty SweeTs / Asahi for reports.
   - Add Gorr minions. Ty Toxico for report.
   - Add Infernal Master SA removal on Blacksmith of Mammon. Ty Denzel for fix.
   - Craft window properly updates item count after a craft attempt. Ty Ailierynn for report.
   - Fix few static objects positions using L2OFF. Ty RooT for fix.
   - Fix FIST custom implementation. Ty Bandnentans for report.
   - Fix CRITICAL_HIT message upon physical skills. Ty YeahThePro for report.
   - Use addFortId instead of addString for all messages related to Sieges. Ty ErHarD for report.
   - Fix toggles order on buff list. Ty YeahThePro for report.
   - Delete custom teleport message on Dimensional Rift.
   - Add missing UserInfo over setNoble. Ty StinkyMadness for fix.
   - Add missing MACRO_NAME_ALREADY_USED check.
   - Refresh war relations when joining/leaving/being ousted from a clan. Ty Denzel for report.
   - Add Integer sanity check upon TradeList validation. Ty Denzel for report.

Organization
   - Add Pagination#generateSearch. Make a use over //help.
   - Teleport is renamed TeleportLocation.
   - TeleportData#showTeleportList is moved to Npc#showTeleportWindow.
   - ObservationMode / ObservationReturn are renamed ObserverStart / ObserverEnd.
   - Add StatSet#getNpcStringId.
   - Implement Playable#isInSameActiveDuel, isInSameActiveOlympiadMatch, isInSameParty, isInSameCommandChannel, isInSameClan, isInSameAlly, isInSameActiveSiegeSide, isAtWarWith.
<html><body>Triskel:<br>
Triskel does not speak with foolish fellows who do not know their profession!
</body></html>

Tryskell

Changeset 406 (2670)

Four Sepulchers, SpawnManager, Bugfixes


Four Sepulchers - ty Hasha
   - Q620_FourGoblets now extends ScheduledQuest, handling both FourSepulchers script and FourSepulcherManager. It now uses SpawnManager lists.
   - Missing room behaviors are added (such as Charm of Corner room, etc)
   - Change NPCs' type from SepulcherNpc to Folk. Moved and checked HTMLs.
   - Goblets are not quest items (kept during abort) as per L2OFF. Chapel Key is quest item as per L2OFF.
   - When accepting quest while having Antique Brooch, set cond 2 directly.
   - Fix opening of "Sealed Boxes" at "Ghost Chamberlain of Elmoreden" as per L2OFF.
   - Fix Ghost of Wigoth (Four Sepulchers) HTML logic.
   - Fix Ghost of Wigoth (Pilrimg's Temple) HTML logic, added missing HTMLs.
   - Fix Q620 Sealed Boxes droplist and chances.

SpawnManager - ty Hasha
   - Spawns heading is now set between 0 and 65536.
   - Rename events.

Bugfixes
   - Fix skill cast animation being interrupted when attacking with a bow. Ty Sluger for report, Sahar for fix.
   - Fix Siege Summon unsummon upon teleportation.
<html><body>Triskel:<br>
Triskel does not speak with foolish fellows who do not know their profession!
</body></html>

Tryskell

Changeset 407 (3136)

JDK21, Pathfind, RelationManager, Boats, NpcData, Desires, AI / Script part I, SpawnManager, RestartPointData, Clan privileges revamp, ItemInstanceTaskManager, InventoryUpdateTaskManager, Bugfixes, Organization


JDK21
    - aCis officialy supports JDK21 !
    - Enhanced instanceof pattern matching from JDK14
    - ThreadPool uses virtual threads from JDK21
    - .collect(Collectors.toList()) > toList() from JDK16
    - Convert few classes using record pattern from JDK21
   
Pathfind
    - Abandon the buffer pooling approach, allocating wrong buffer size. Indirectly fix complex middle distance pathfinding being unprocessed.
    - Refresh the heuristics to use Euclidean. Give up diagonals heuristics leading to strange diamond shape pathing.
    - Big overall cleanup. Ty LaRoja.
    - Pathes are being executed up to x100 faster. Values don't exceed 50ms anymore. Ty LaRoja.
    - Thanks to previous point, MAX_ITERATIONS was moved from 3500 to 10000, allowing more complex pathes. The Config can be virtually deleted, but it is kept for security valve.

RelationManager - by LaRoja
    - Rework friend and blocklist relations to be handled simultanously, avoiding SQLIntegrityConstraintViolationException upon /friendinvite someone and then /block him.
    - Decrease the amount of SQL entries by 2, rename character_friends > character_relations. Introduce RelationManager.
    - Add missing THE_PLAYER_IS_REJECTING_FRIEND_INVITATIONS check - for non-GM player trying to invite GM Players.
    - Fix S1_BLOCKED_EVERYTHING check - it must check target's isBlockingAll statut, not player's.
    - Add FriendAddRequestResult for all negative checks.

Boats - by LaRoja
    - Rewrite Boat system ; data is handled by XML.
    - Rewrite boarding concept, which now works better than L2OFF.
    - Fix known issues (ghost boats, boats moving on territories, isBusy concept generating instability).
    - Boarding now trigger PEACE and NO_SUMMON zone types.
    - Trying to summon while onboard trigger proper SystemMessageId.

NpcData
    - Reparse all NPC templates using our internal parser. The data can be reparsed at will according needs.
    - Most stat values are now set as double instead of int to avoid to lose accuracy.
    - Many missing variables were added, aswell as all AI params, which are used by scripts.
    - Templates don't hold anymore enchant effect.
    - Attack distance is not calculated anymore based on weapon, but as a template variable. Fix indirectly all "exotic" weapon bearers (sarbacane, throwing knives...) which weren't considered as a BOW.
    - Minions don't have anymore min/max count.
    - NpcSkillType now hold all types used by L2OFF AI - from 6-8 to 111.
    - NpcType system is dropped.
   
Desires
    - All NPCs can now register "Desires", which are Intentions with a weight. Biggest Desire weight is processed - others are stored, waiting to be processed, allowing scripters to fully manipulate a NPC.
    - Added multiple missing events.
   
AI / Scripts - by Bandnentans
    - Deletion of main behavior of AttackableAI loop. All NPCs become "empty shells" and must be fully driven by scripts to handle their behaviors. A NPC without a script won't do anything, nor react.
    - Introduce DefaultAI tree based on L2OFF scripts, which add 150+ individual AIs instead of the 3 previous behaviors (FIGHTER, MAGE, HEALER).
    - Introduce all epic bosses - as retail.
    - Introduce all regular bosses - as retail.
    - Introduce all regular attackable trees - as retail.
    - Split //info ai and add //info script with running QuestTimers.
    - Aggro transfer upon Summon death is moved from Summon#doDie to script.
    - Implement Black Judge script. Ty Denzel for report.
    - Indirect bugfixes due to AI rework :
        - Attackables weren't attacking when mana is depleted. Ty stepbystep for report.
        - Attackables were idle if already buffed with similar buffs (eg. a Player launching Might on a Npc which could buff with Might, was making him totally idle). Ty stepbystep for report.
        - Bosses were struggling choosing the proper intention.

SpawnManager
    - Maximum number of NPCs per Territory is fixed. Ty Denzel for report.
    - Reintroduce //delete for Spawn (which is used by //spawn).
    - Introduce privates based on Spawn (811 occurences).

RestartPointData
    - Replace entirely MapRegionData - delete mapRegions.xml and add restartPointAreas.xml instead.
    - Implement RestartArea and RestartPoint, used by SoE/death teleport. Handle Race and karma based spawns. Data is parsed from L2OFF.
    - Delete spawns from TownZones. TownZones aren't considered SpawnZone anymore.
    - Extract MapRegionData#TeleportType and rename it RestartType.
    - Add //show restart [area|point].
    - Implement location localization upon PartyMatching.

Clan privileges revamp
    - Use PrivilegeType enum instead of Clan ints.
    - Delete _clanPrivileges out of Player. It's now calculated based on power grade and Clan.
    - Rework Clan#setNewLeader method.
    - Rework few packets : ManagePledgePower, PledgePowerGradeList, PledgeReceivePowerInfo, RequestPledgePowerGradeList
    - Add a missing sysMsg over RequestPledgeReorganizeMember.
    - Implement //pledge transfer - your target replaces his Clan leader.

ItemInstanceTaskManager - by LaRoja
    - Introduction of a lazy-SQL save of ItemInstances (1min task running for everyone), saving the vast majority of SQL queries related to items.

InventoryUpdateTaskManager - by LaRoja
    - Introduction of a single task allowing to process an IU packet.
    - Fix indirectly any type of visual issue :
        - Fix adena duplicate.
        - Fix harvest reward duplicate.
    - Avoid to send multiple IU packets, all operations are batched and executed after a short delay. In case of identical stackable items edits in short timelapse, only the operation is updated.
    - Delete all custom cases of ItemList used because of lazyness - except the retail ones.

Bugfixes
    - Cubic chooses enemy target based on owner isAttackableWithoutForceBy (which will handle all cases).
    - Fix the 1.001% elemental bonus deleting the attacker getAttackElementValue part off the calcElementalSkillModifier.
    - Fix teleport price upon weekends / 7s period. Ty Denzel for fix.
    - Fix //help search button. Ty l2drim for report, StinkyMadness for fix.
    - Add few missing sanity checks for PartyMatchRoom manage/join/answer. Ty MrThirtyOddSix for the report.
    - Fix quotes in .sh db installer. Ty Vladalien for the fix.
    - Fix a potential NPE over FishingStance. Ty newuser for the report.
    - Fix Lottery event end day. Ty henrique for fix.
    - Add missing db save for shortcuts upon skill addition. Ty Anarchy for report.
    - Rework //set sex/class switch to avoid the need of restart. Ty LaRoja for the fix.
    - Refresh Summon infos for owner upon effects removal methods. Ty bios for report.
    - Desactivate arrow based movement (buggy and exploit friendly).
    - Add distance check on L2Skill#getEffects. Should solve Olympiad prebuff. Ty BiggBoss for fix idea.
    - Fix NPE + ConcurrentException upon Festival of Darkness save.
    - Fix NewbieHelper NPC interaction when dropping Tutorial progress. Ty LaRoja for the fix.
    - Fix Petition system objectId management.
    - Fix an issue where the pet referenced by a Summon Item saved as "item on ground" was deleted upon server restart.
    - Fix missing visual effect over skillId 3159. Ty KejbL for fix.
    - Fix CP/HP/MP upon restart with Hennas on. Ty Denzel for report.
    - Fix client critical errors (all related to HTM max size excess) upon :
        - //info drop/spoil. Ty Denzel for report, LaRoja for the fix.
        - //list_spawns.
        - //info spawn, upon big amount of minions. Ty Denzel for report.
    - Make Traveler's weapons non-enchantable. Ty Denzel for report, LaRoja for the fix.
    - Fix Dual Fists weapons animation/damage. Ty Bandnentans for report.
    - Fix following behavior : casters, over failed cast check, must stop movement. The rotation towards target can't be properly added, NCZOFT aswell does it wrong and lately deleted it.
    - Rework getUniqueItems, adressing 2 issues - Ty LaRoja for the initial share.
        - You can now give back Apprentice and Traveler weapons towards Miss Queen (due to non-tradable state of the item). Ty x-user for report.
        - You can now put an SA over augmented items (you could already put an Augment over a SA weapon). Ty Denzel for report.
    - Fix mounted Player stats penalties using C2 notes. Ty Gigi85 for report.
    - Fix teleport as PK to owned castle or CH. Ty Denzel for report.
    - Fix the SQLIntegrityConstraintViolationException upon store manor data, reparsing manor data using AdvExt. Ty Denzel for the report.
    - Don't save CONT effects upon character disconnection (Battle Force, Spell Force). A SkillChannelizer handler would be the ideal solution, but it will wait for a potential Skill refactor.
    - Fix few Shadow Weapon issues - Ty RooT for the fixes
        - Every equip action / login must decrease lifetime of 1 minute, as stated by IL patch notes. The first equip doesn't trigger it.
        - Add missing messages upon destroying such item from inventory.
        - Add missing message upon disarming the weapon upon mana == 0.
        - isShadowWeapon() check was wrong.
    - Give the possibility to edit stackable items on a trade. Tu Anarchy for the report, StinkyMadness for the fix.
    - Fix the last NPCs unrelated to TerritoryStatus (NPEs upon null Castle).
   
Organization
    - Update MariaDB to 3.1.4.
    - //info over NPC now handle all possible //info types.
    - Move castle and clanhall classes under residence package. Ty Minutis for the idea.
    - More uses of TRUNCATE over DELETE FROM.
    - Drawn shapes using ExServerPrimitives now build vertical lines for a 3D visual effect.
    - Add few utility methods over IntIntHolder, IXmlReader and StatSet.
    - Fix big length Announcements formatting over //announce all. Ty artemis for fix.
    - New Players don't save anymore following values : karma, pvpkills, pkkills, clanid, deletetime, cancraft, online, isin7sdungeon, clan_privs, wantspeace, nobless, power_grade.
    - Delete characters table cancraft/clan_privs columns.
    - Don't load cancraft/online over CharSelectInfo.
<html><body>Triskel:<br>
Triskel does not speak with foolish fellows who do not know their profession!
</body></html>

Tryskell

Changeset 408 (3205)

TradeList refactor, Duel refactor, Handlers management, SpawnManager, Sieges, AdminCommands, Bugfixes, Organization


TradeList refactor
   - Use AtomicBoolean instead of synchronized.
   - Rework entirely buy/sell methods, which are now far more safer (notably TradeList#privateStoreSell, which was checking and processing transferItem in same time). A fail upon item transfer notably corrects total transaction price.
   - Few checks (being pointless or doubled) or even entire loops (calling removeItem instead of remove...) are dropped/avoided in few places.
   - Fix few issues :
      - BuyList is now properly refreshed upon inventory edition. Ty bios for report.
      - The strange adena issue is fixed (was due to removeItem not processing -1 as a special value but regular value, which was actually --1 -> +1). Ty bios for report.
      - Items aren't shown anymore as possible sellable item, if that item is already part of the SellList or is equipped.
      
Duel refactor
   - Big cleanup, deleting 1/3 of the class.
   - Abnormal effects are now properly cleansed. Ty MoodFreak for report, Diablo for the initial fix.
   - Play the lose animation only if WIN or SURRENDER, no TIE.
   - Don't play anymore the winner animation.
   - Don't countdown 5/4 upon 1vs1 Duels (5sec timer, starts at 3).
   - Restore Players conditions after SystemMessages.
   - Upon teleport, cancel active enchant and trades for Players, no matter the situation. Indirectly fixes "cancel trade upon party duel teleport".

Handlers management - by LaRoja
   - Handlers are now dynamically loaded based on their appearance in package. You don't have to manually set them anymore.

SpawnManager
   - Fix 3 invalid bosses dbSave. Ty Denzel for report, Bandnentans for fix.
   - Manually fix few territories (invalid nodes, bad Z, zone over Fortresses...).
   - Delete the whole magic behind setting a returning point from an offset of spawn location ; it's anyway mostly blocked by first returnHome check.
   - Banned territories are considered way before in the random location calculation of territories, which avoid to trigger Z/geo fail for nothing.
   - SiegeGuard#returnHome now also have a geopathfail logic.
   - Max iterations of random location search is reduced from 20 to 10 to trigger issues faster (will probably set back to 20 or even 50 when most territories are fixed).
   - Delete the whole for loop from MultiSpawn#getSpawnLocation for "anywhere" type, since Territory#getRandomLocation generate at least one point (last wrong iterated point).
   
Sieges
   - Control Towers, guards and mercenaries are anew Residence bound (was buggy since Residence rework) ;
   - Control Towers are now implemented as retail ;
   - Siege Guards won't attack you anymore if you're DEFENDER (produced by few scripts, mostly spells related).
   - Fix SiegeFlag NPE. Each NPC must have a Spawn.
   
AdminCommands
   - Revamp //tele panels.
   - Introduce //find item [name]. Ty melron for initial idea, StinkyMadness/CUCU23 for improvements.
   - Introduce //find npc [name], delete 6 related admincommands :
      - admin_show_spawns
      - admin_spawn_index
      - admin_spawn_reload
      - admin_npc_index
      - admin_spawn_once
      - admin_show_npcs
   
Bugfixes
   - Lotto and race tickets are generated differently, and now are bound to an objectId. Ty bios for report.
   - Fix petdata speeds, prior to converted classes to records commit. Ty Denzel for report and fix.
   - Fix ghost Pet over unsummon. Ty Denzel for report, LaRoja for fix.
   - Fix Q220 Radar misplacement. Ty FDX for fix.
   - Fix Q025 Triol's Pawn behavior.
   - AI related - Ty Bandnentans for fixes.
      - Fix ClassCastException from a regular AI script. Ty Denzel for report.
      - Fix SaintNinja script.
      - Fix QueenAnt, Orfen minions and Core scripts.
      - Fix LV3Orc script.
      - Fix GludioHold/GludioStand NPEs.
   - Don't send Npc SocialAction if in a blocking statut (dead, stunned, etc). Ty artemis for report.
   - Fix potential NPE over Siege#isOnOppositeSide.
   - Little GeoEngine#findPath fix (if originZ is too different from calculated Z) - Ty Bandnentans for the fix.
   - Update skills shortcuts upon AutoLearn config on. Ty hqsly for report, Rufo for fix.
   - Don't send inventory update over items which aren't in inventory. Ty FDX for report.
   - Fix NPE over teleportTo (regarding scripts Guards), introducing _isTeleporting as an AtomicBoolean. Ty Bandnentans for fix.
   - Potential IOOBE fix for boat movement. Ty Bandnentans for fix.
   - Fix 2 potential NPEs (if Config.SPAWN_EVENTS is null).
   
Organization
   - Triangle3D class is dropped.
   - Add Player#isOverweight method.
   - Add few records.
   - Rework ITEM_LOGS config
      - Indirectly fix an issue with pet inventory invalid item count. Ty Denzel for report, LaRoja for fix.
      - Avoid to spread useless parameters and generate Strings for nothing.
      - Shortcut most Item related methods by 1 up to 4 parameters.
      - Herbs ItemInstance objects are properly deleted when using addItem(int, int, boolean).
   - Addition of Residence#getTownName
   - MinionSpawn passively delete minion from master list if no respawn is associated to it.
   - Cleanup TerritoryStatus bypass, avoid a NPE if castle owner Clan doesn't exist.
   - Add Quest#createOnePrivateEx method with SpawnLocation parameter.
   - Delete NpcAI#setBackToPeace parameter (unused).
   - Delete GrandBossManager class (unused). Ty LaRoja for report.
   - Delete _isReturningToSpawnPoint variable (unused).
<html><body>Triskel:<br>
Triskel does not speak with foolish fellows who do not know their profession!
</body></html>

Tryskell

Changeset 409 (3301)

SCH, Castles, IU, Npc movement, Drop rate rework, Bugfixes, Organization


SCH - Ty Bandnentans for the good work
    - All SCHs are normally fixed and working.
    - CH decorations are reworked (they got their own XML, related Configs are dropped).
    - Aden CHs got the Wyvern option, as stated in Patch Notes. Ty Denzel for report.
    - CH features levels are corrected. Ty Denzel for report.
    - Fix NPC clan crest issue.

Castles
    - Keep Castle next tax percent instead of resetting it to 0.
    - Implementation of missing variables over Castle vault management. Ty KejbL for report.
    - Remove doublons over Residence npcIds. Add npcId 35552 HTMs. Ty //Dev for report.
    - Fix the tax income calculation.
   
IU
    - Add PAPERDOLL as potential location for IU (fix gm enchant, arrows consumption). Ty Roko91 for report.
    - Fix weight calculation over login. Ty KejbL for report.
    - Fix inventory update upon teleport (BSOE consumption). Ty //Dev for report, La Roja for fix.
    - Fix inventory weight upon NPC buy.
   
Npc movement
    - MOVE_TO desire is cleansed over onEvtBlocked, avoiding to build infinite desire.
    - Don't add MOVE_TO desire if given Location isn't reachable.
    - FLEE doesn't call event upon onEvtBlocked (that event means something wrong happened, it's then impossible to trigger "regular" FLEE checks).
    - Use Location#equals in few scripts.
    - NpcAI#thinkFollow cleanup (-8 arrays, -24 List#get, -8 distance2D).
   
Drop rate rework
    - Main idea is to iterate each category X times, as if X monsters were killed. No % re-calculation or whatever, it's plain and simple. x50 means you got the calculated drops of 50 monsters.
    - Avoid to generate IntIntHolder, manage the drop/spoil using a Map<Integer, Integer> instead, which also allow to merge similar itemIds.
    - Categories % are tested no matter if drop or spoil, which allow levelMultiplier to be properly applied.
    - Monster#dropItem is moved to Npc#dropItem, which allow any Npc to drop an item and avoid cast.
    - "killer" is now part of all Npc#dropItem, meaning the item is properly item protected.
   
Bugfixes
    - Fix a ClassCastException over Quest#onClanAttacked.
    - Fix a NegativeSizeArrayException upon client logging. Drop few logging errors related to invalid client attempts.
    - Fix NPE over Q635.
    - Fix PDAM calculation prior to rev 399 physical attack/skill split. Ty Yoska for report.
    - Fix TradeList automatic title cleanup. Ty Denzel for report/fix.
    - Add back missing Config.PARTY_XP_CUTOFF_METHOD "none" option. Ty CUCU23 for report/fix.
    - Fix "upper roof" NPCs. Ty Bandnentans for fix.
    - Fix Seven Signs individual stone contribution method. Ty //Dev for report.
    - Fix Q372 reward table and drop rate. Ty //Dev for report.
    - Q348 now distributes drops as party-random, despite the client info. Ty Denzel for report.
    - Fix Benom teleports out. Hardcode other in/out Locations. Ty //Dev for report.
    - Don't show Crystallize icon on inventory for Bounty Hunters (was an addition of CT1 GP1). Ty Bandnentans for report.
    - Replace "weightPenalty" for "weightLimit" over skills XMLs. Ty //Dev for report/fix.
    - When Heroes participate in a raid against Antharas, Valakas, and Baium, the boss monster has a chance to shout out the Hero characters' names. Ty deekay for fix.
    - Fix isRaidBoss implementation (a raidboss minion without master was considered raidboss).
    - Fix Nurse Ants not healing the Queen Ant larva.
    - Fix a SQLException over Olympiad server startup.
    - Fix a SQLException over Clan member removal (since clan privs rework).
    - Fix default 30169 npcId HTM. Ty Bandnentans for report.
    - Fix Festival Guide missing rift option. Ty Denzel for report/semi-fix.
    - Few dwarven/general manufacture fixes
        - Add the missing max recipe integrity check.
        - Upon shop fail, call back the manage window.
        - Upon shop fail, don't cleanup the manufacture list.
        - Upon shop success, cleanup the reverse manufacture list (successful general shop resets dwarven, successful dwarven shop resets general).

Organization
    - Rework HtmCache and CrestCache to use NIO. Move CrestType to enums.
    - Implementation of WorldObject#forEachKnownType / WorldRegion#forEachType & forEachRegion - Avoid List overhead in numerous popular locations (notably broadcastPacket or region checks - which are done on every knownlist check).
    - Rework SkillList packet, it is now handled as other packets. Delete Player#sendSkillList method.
    - Delete DeadlockDetector class and related configs.
    - Add GameServer#isServerCrash, based on LaRoja implementation - without uses, for now.
    - Move IPv4Filter class to commons.network, delete net.sf.l2j.util package.
    - Add DefaultSeeRange config, use the retail value 450 instead of 400.
    - Add more records, ty LaRoja for the merge request.
    - Delete unused dimensionalRift.xml.
    - Few ItemContainer optimizations.
    - Rename all ocurrences of adenas to Adena.
    - SonarLint / UCDetector fixes :
        - Drop MathUtil#limit, use Math#clamp instead (introduced in JDK21).
        - Drop following unused Configs : FS_TIME_ENTRY, FS_TIME_END, RAID_MINION_RESPAWN_TIMER.
        - Few public / protected / private edits. A lot more to come.
        - switch cases are merged (introduced in JDK12).
        - Boolean object is compared to Boolean.FALSE/TRUE, not directly tested as a boolean.
        - String#replaceAll is replaced with String#replace when a regex pattern isn't involved.
        - Generate few records : Sequence, TutorialEvent.
        - Few class-based variables are now local.
        - Use HashMap.newHashMap instead of new HashMap when the capacity is known (static final maps). HashMap.newHashMap avoids to set 0.75 capacity when it's not needed.
        - LogRecord record is renamed LogRecord logRecord, due to record being now a keyword.
        - Use proper Singleton pattern for instance type (notably listeners).
        - Generate private constructors calling IllegalStateException for utility classes.
<html><body>Triskel:<br>
Triskel does not speak with foolish fellows who do not know their profession!
</body></html>