Main Menu

Last aCis updates

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


Changeset 386 (1497)

Movement is still experimental. The status IS NOT OK for LIVE servers. MoveToPawn behavior still need to be fixed.
Siegable Hall isn't tested, and probably need further development. Those CHs are normally fully working regarding owner administration.

MariaDB / SQL tables, Scripts, Bugfixes, Organization

MariaDB / SQL tables
   - Consider to download latest MariaDB (10.4.11 at the date of this note) and transfer your db to it. MySQL is considered legacy.
   - Following tables are edited : accounts, auctions, augmentations. More will come with time, until all are optimized and follow convention.

   - Addition of Q120. Ty StinkyMadness for adaptation.
   - Addition of Q343, based on L2J's ivantotov script. Fix memoStateEx to fit L2OFF.
   - ShadowWeapon script
      - Add 10 missing entries out of 90, out of 3 multisells.
      - Add exchange option to Ranspo, as depicted on L2OFF.
   - Q101 : add missing quest items in registered items list. Ty Rootware.
   - Q336 : add missing npcId in addTalkId. Ty p0w3rf1y.
   - Q626 : make the quest repetable and party friendly, according client infos. Ty p0w3rf1y.
   - Fix Boat stop behavior upon harbor reach (both regular and busy states), leading to memory leak.
   - Fix IOOBE over GeoEngine#findPath (trying to set player on non-existing layers), based on Hasha fix.
   - Fix movement issue related to route cutting edges. Ty vladalien.

   - Orcs Mystics are considered as FIGHTER, and not MAGE anymore (22nd May 2007 patch note). Ty shyr.
   - Allow non stackable items with amount > 1 over create_item. Limitation based on inventory slot amount.
   - Second layer of fixes for enchanted item buy possibility.
      - Add missing messages for buy/sell enchanted items.
      - Add missing OperateType.NONE, which fix stuck behavior upon fail (casting a skill, setting on NO_STORE zone, etc).
      - Add ItemRequest#_enchant + related checks.
   - Fix Dice roll vector.
   - Fix SchemeBuffer duplicate key exception. Ty Sahar.
   - Revert part of 385 related to CC edit, fixing CCE about Raidboss.
   - Fix SecondClassChange "congratulations" htm.
   - Don't disband Party on DISCONNECTED leader (as tested on AdvExt).
   - Add missing zone data related to rev 384. Implement it under new enum SpawnType, based on StinkyMadness suggestion.
   - Server bypass floodprotection is lowered from 500ms to 100ms (lowest secured value, less painful for user).
   - Add SpawnLocation#getLocationWithOffset.
   - isVisible refactor, ty StinkyMadness.

Movement is still experimental. The status IS NOT OK for LIVE servers. MoveToPawn behavior still need to be fixed.
Siegable Hall isn't tested, and probably need further development. Those CHs are normally fully working regarding owner administration.
Triskel does not speak with foolish fellows who do not know their profession!


Changeset 387 (1541)

Movement is still experimental. The status IS NOT OK for LIVE servers. MoveToPawn behavior still need to be fixed.
Siegable Hall isn't tested, and probably need further development. Those CHs are normally fully working regarding owner administration.

LS rework, Quest related edits, Chat related edits, Organization

LS rework
   - Generate enums package for LS, and extract existing enums to it.
   - Generate data (sql and manager) package, and move all related classes to it.
   - Replacement of password algorithm from Base64 to BCrypt. Ty SweeTs.
   - Load all Account (previously AccountInfo) in memory, to avoid pointless SQL manipulation and generating/destroying Accounts objects.
   - Extract related content from multiple classes and generate AccountManager and IpBanManager out of it.
Quest related edits - Ty Hasha
   - Quest system edit
      - Complete the javadoc + cleanup.
      - QuestTimer storage is simplified (all timers are stored on same level).
      - Quest#onEvent is dropped, onAdvEvent prevails.
      - Add the possibility to cancel specific QuestTimer based on multiple criterias.
      - Implement Quest#onTimer, moving timer based events from onAdvEvent.
      - Quest#onGameTime and Quest#onSiegeEvent got now parameter for easier usage.
      - Make an extensive use of onDecay on all quests.
      - All quests are edited to spawn only one instance of a quest monster at a time.
      - Remove boolean flag isRepeating over Quest#startQuestTimer ; cut that method in 2, Quest#startQuestTimer and Quest#startQuestTimerAtFixedRate.
   - Quests
      - Introduce SecondClassQuest abstract class, holding shared content between all 2nd class transfert quests.
      - Q021 : Add few missing sounds and HTMs.
      - Q242 : Fix the Fallen Unicorn issue.
      - Q619 : Introduce droplists of relics for 4sep and IT.
      - Fix retail typo "Neidrahu" > "Nidrah" on all HTMs ("Nidrah" being the reverse of "Hardin", the necromancer).
      - Q334 addition, ty Rootware.
Chat related edits - Ty Hasha
   - NpcSay : added more constructors, javadoc
   - CreatureSay (Say2)
      - added more constructors, javadoc
      - updated packet structure, removed _npcString (IL client does not use NpcString)
      - removed systemmessage parameters, they are not used by client
      - updated parameter names, added some explanation
      - updated the usage of packet, whenever possible, changed to NpcSay(shorter packer name (string) -> npcid (int))
   - Introduction of new enum SayType for chat type.
   - Added NpcStringId container, based on L2OFF fstring.txt content.

   - Add SevenSignsManager#getLosingCabal(), rename SevenSignsManager#getCabalHighestScore() > getWinningCabal().
   - Delete CabalBuffer instance. Move behavior to AI script, as group.CabalBuffers. Behavior is taken from L2OFF GF (same than IL).

Note: Prefer NpcSay over CreatureSay, when having a need for creature (with NPC ID) to speak.

PS : The transition between Base64 and BCrypt for password encryption is left to live servers owners, but the idea is to edit used algorithm of "password replace feature" using BCrypt on your existing account panel, and request your users to edit their password to be able to log on.

Movement is still experimental. The status IS NOT OK for LIVE servers. MoveToPawn behavior still need to be fixed.
Siegable Hall isn't tested, and probably need further development. Those CHs are normally fully working regarding owner administration.
Triskel does not speak with foolish fellows who do not know their profession!


Changeset 388 (1562)

Movement is still experimental. The status IS NOT OK for LIVE servers. MoveToPawn behavior still need to be fixed.
Siegable Hall isn't tested, and probably need further development. Those CHs are normally fully working regarding owner administration.

Env drop, PartyMatching, Quests, Bugfixes, Organization

Env drop - Ty Hasha for debug.
   - Drop Env and Lambda, which were retaining a lot of pointless variables.
   - Add missing "base" functions, and make a use of it.
   - All FuncHennaCON/DEX/... are merged into FuncHenna.

      - Merge PartyMatchWaitingList and PartyMatchRoomList into PartyMatchRoomManager.
      - Move PartyMatchRoom on, make it use AbstractGroup.
      - Delete package model.partymatching.
      - Related packets are cleaned. Methods are generated on appropriated classes to make it cleaner.
      - Fix all possible CMEs due to unappropriated containers, fix one possible NPE.
      - Rework the changeLeader management to avoid a client crash.
      - Add the missing max member amount check.
      - Rework waiting list behavior to fit with L2OFF.
      - Set the location as "1", to avoid a client crash. Put a TODO, as we miss needed implementation to code it as it should.

   - Q351 : Fix reward. Ty p0w3rf1y.
   - Q025 addition. Ty roko91 / Hasha.
   - Q335 addition. Ty RooT / Hasha.

   - Fix login system, reverting Account cache system.
   - Clan skills aren't rewarded on Player relog if reputation < 0.
   - Clan skill, upon acquisition, isn't rewarded if reputation reaches 0.
   - Add a missing Config.MINIMUM_CLAN_LEVEL use over ClanMember.
   - Fix Sand Cloud, Heroic Grandeur, Heroic Berserker, Invocation skills.
   - Rework ForestOfTheDead in order Npc references are correctly exploited + some cleanup. Ty Hasha.
   - Fix HP/MP Clan Hall regen calculation. Ty p0w3rf1y.
   - Save ClanHallFunction upon creation. Ty p0w3rf1y.
   - Optimize packet sending over Clan skill acquisition.

Movement is still experimental. The status IS NOT OK for LIVE servers. MoveToPawn behavior still need to be fixed.
Siegable Hall isn't tested, and probably need further development. Those CHs are normally fully working regarding owner administration.
Triskel does not speak with foolish fellows who do not know their profession!


Changeset 389 (1660)

Movement is still experimental. The status IS NOT OK for LIVE servers. MoveToPawn behavior still need to be fixed.
Siegable Hall isn't tested, and probably need further development. Those CHs are normally fully working regarding owner administration.

AI rework, Organization, Bugfixes

AI rework - ty bowling4soup
   - Drop all redundant parameters (_skill, _target,...). We now use parameters from Intention.
   - Merge setNextAction and setNextIntention behaviors.
   - Add all missing queued actions (sit/stand, move/stand, etc).
   - Stacking attacks don't bug anymore, it is now processed by queue intention.
   - Skills (toggle skills included) are now queued if a cast is already occuring.
   - TamedBeast got now its own AI.
   - Drop following AiEventType : STUNNED, PARALYZED, SLEEPING, ROOTED, CONFUSED, MUTED, AFRAID, FAKE_DEATH and their related AbstractAI#onEvt. Merge all start/stop methods with the few uses upon skills.effects.
   - Add following IntentionType : USE_ITEM, FAKE_DEATH.
   - AdminEditChar#gatherCharacterInfo is slightly edited.
   - Add Creature#_hitTask and _bowReuseTask to track current attack, giving the possibility to deny launched attack.
   - Attack stance activation has been reworked.
   - Shift use is now taken in consideration for attack, cast, pickup, interact and follow intentions.
   - Generate CreatureAttack and CreatureCast (doCast got now a int, int version for easier usage) based on Creature content. Organize Creature leftover.
   - Many comments over skills are cleaned up.
   - Introduce ElementType enum, which got embedded vuln/res Stats for easier method process. Skills are edited accordingly. Fix few skills elements.
   - Split enums from NpcTemplate to their own classes (NpcAiType, NpcRace, NpcSkillType).
   - NpcRace got embedded vuln/res Stats for easier method process.
   - CreatureStat is cleaned up (javadoc included).
   - Stat related calculation (STR, DEX, INT,...) is now processed only on PlayerStat, which avoid 300k calcStat calls on server loading (and probably far more on regular exploitation).
   - Addition of cantBeNegative() on Stats for easier method process.
   - Merge Formulas#calcPAtkSpd and Creature#calculateTimeBetweenAttacks into Formulas#calculateTimeBetweenAttacks. Introduce a security limit of 100ms. Fix it using AdvExt as reference.
   - Add clone() override upon Point2D, Location and SpawnLocation - make a use of it.
   - Generate Creature#fleeFrom, Creature#moveUsingOffset and Npc#moveFromSpawnPointUsingOffset for easier management of such behavior.
   - Rename Creature#setRunning/setWalking > forceRunStance/forceWalkStance, Creature#setRunning(boolean) > setWalkOrRun(boolean). Proper override is done.
   - Move Creature#_AIdisabled to Npc#_isCoreAiDisabled.
   - L2Effect > AbstractEffect. Big cleanup + javadoc. Delete most EffectTemplate redundant variables, use getTemplate() content instead.
   - Generate EffectHolder, which is used by multiple packets.
   - Drop "applyCond" parseCondition call over attachEffect (useless/unused).
   - Generate SkillOpType / SkillTargetType enums. Edit skills.xml accordingly.
   - Split the 28 targets type in their own ITargetHandler, introduce TargetHandler. Generate gameserver.handler.targethandlers package.
   - Delete unused L2Skill removedOnAnyActionExceptMove and removedOnDamage boolean tags and associated subsystems.
   - DocumentItem, DocumentBase and DocumentSkill are moved to package.
   - L2Skill and AbstractEffect are moved to gameserver.skills package.
   - ExtractableProductItem and ExtractableSkill are moved to a new package on gameserver.skills.extractable.
   - Drop Attackable#useMagic, which was only used by QueenAnt script.
   - Distance related methods organization
      - Delete MathUtil#calculateDistance/checkIfInShortRadius. Delete Creature#isInsideRadius/getDistanceSq/getPlanDistanceSq. Generate methods on WorldObject, based on stored _position. Wipe all previous methods use, to simply use those.
      - Rework Point2D / Location distance methods ; they are now called distance2D/distance3D and isIn2DRadius/isIn3DRadius for proper usage.
      - 3D version of distance checks are now deployed on more places (all skill casts, most of NPC behaviors). 2D is still used for movement and some attack aspect to avoid problems.
   - Rename 3 packets related to PartyMatch system.
   - Delete official adena reward out of Q127 (exploitable).
   - Q367 rewrite using L2OFF. Fix quest exploit.
   - Fix player freeze (cant move/attack but they can chat). Ty zemaitis.
   - Fix MotherTree default value process over affectedRace. Ty p0w3rf1y.
   - Crappy Buffer can now handle exotic level, simply use "level" flag. All flags except skill id are now non-mandatory. Some cleanup + Javadoc.
   - Fix aggro about positive effects upon Attackable. Ty p0w3rf1y.
   - Rework HotSpringDisease script, adding missing events. Ty p0w3rf1y for report.
   - Fix normal and pvp flag timers. Ty p0w3rf1y for report.
   - Effects with stackorder 99 aren't cleansable anymore (raid Curse, anti Strider slow, 'BOSS' tagged buffs, signets effects, etc). Ty p0w3rf1y for report.
   - Signet symbols are fitting AdvExt (not cleansable, duration 8sec, few effects differ).
   - Provide correct visual timer upon debuff. Ty SLugeR.
   - Fix Cancel behavior (randomly chosen, works on any Creature, doesn't cancel specific effects (charms, noblesse...)) - Ty SlugeR.
   - Fix invalid encoding over Q021#31524-06a.htm. Ty RooT for report.
   - Add 5600-5699.xml, holding Apella sets triggered skills. Since they aren't existing client side, client got visual issues. Nothing I can do about it, except using "real" existing ids or edit client (which I won't do).
   - getDestination() isn't edited anymore on the fly, NPCs shouldn't "visual jump" anymore from one position to another (case of random walk, fear).
   - SetupGauge is also set for FUSION or SIGNET_CASTTIME cast.
   - Drop the few IDLE intentions on scripts.
   - Rework Orfen script :
      - The check task is set to 10s instead of 60s.
      - There is no more walking behavior. Fix a NPE in the same time.
      - Use of NpcStringIds.
      - Add missing 20% chance paralysis upon onAttack.
      - Add missing curses check (raid + antistrider slow).
   - Implement PartyMatch system AutoJoin button.
   - Fix the available rooms list on PartyMatch system to fit with AdvExt. They shouldn't be filtered.
   - Reset Pvp flag and unequip Adventurer's weapons upon karma kill. Ty p0w3rf1y.
   - SiegableHall - misc
      - Fix CastClassException over getAttackerClans().
      - Add missing SiegableHall content over RequestJoinSiege/RequestSiegeAttackerList. Add proper CP_CS_MANAGE_SIEGE usage.

Movement is still experimental. The status IS NOT OK for LIVE servers. MoveToPawn behavior still need to be fixed.
Siegable Hall isn't tested, and probably need further development. Those CHs are normally fully working regarding owner administration.
Triskel does not speak with foolish fellows who do not know their profession!


Changeset 390 (1785)

Ai system rework - part II, Movement - part II, Geoengine, Debug, Cubic system rework, Admincommands, Skills, RecipeBook, Organization, Bugfixes

Ai system rework - part II - ty bowling4soup
   - Fix following issues introduced in previous revision :
      - Cast on too far target block other actions.
      - Fix INTERACT behavior, when already near the target (case of shops, for exemple).
      - Fix randomly stopping attack action when using poles.
      - Move updatePvpStatus from doAttack to onHitTimer (in order pvp flag occurs when the hits occurs).
      - Fix a problem when pushing sell/buy button while being already under animation effect.
   - Fix SummonItem cast, generating SummonCreature skillhandler - cast of such items can now be properly interrupted.
   - Add ATTACK intention for nextActionIsAttack() skills, even if skill failed.
   - Fix an issue over RequestTargetCanceld, rename it to RequestTargetCancel.
   - Few tasks (effects, hp/mp regen, decay) are now properly disabled over deleteMe().
   - Add missing ActionFailed uses over thinkPickUp checks. Ty Djwegas for report.
   - Rework most of INTERACT behavior (onAction / onActionShift).
Attack / Cast - ty bowling4soup
   - Rework entirely both processes :
      - Moved all the checks out of doAttack, doCast. Generate canAttemptCast, canDoCast out of it. Implemented hierarchy.
      - Reorganized getTargetList so that targets are only calculated once during onMagicSkillLaunched.
      - Generate doToggleCast, doInstantCast, doFusionCasttimeCast to avoid to use regular cast process.
   - Toggle skills properly stops the Player. Message is sent for both activation/desactivation.
   - Add missing CHARGEDAM over L2Skill#isDamage() - those skills can now be used as part of CTRL key.
   - All methods related to isAttackableBy / isAttackableWithoutForceBy are now verified using L2OFF.
Movement - part II
   - Creatures (players excluded) don't use moveToPawn as follow state anymore. Ty shyr for report.
   - Summons' summon offsets are now secured, and retail-like (8 possible locations).
   - Fix the desynchronization between multiple direction switch. Ty bowling4soup.
Geoengine - ty Hasha
      - Fix GeoEngine#canSee must succeed, if all iterated points pass checks.
      - Dropped all "getXXXOriginal" methods.
      - Updated LoS to new logic, dropped redundant methods. Now applicable to all IGeoObjects as targets, not only Doors.
      - Renamed "canSeeTarget(WorldObject, Location)" to "canSeeLocation" to prevent misplacing, it has different LoS mechanism.
      - Fix getValidLocation(), which was enforcing geo position, even if tested position was good (item drop position, etc).
      - Javadoc, cleanup.
      - Dropped all "getXXXOriginal" methods.
      - Updated all methods with IGeoObject - target to be ignored.
      - Javadoc, comments update.
      - Dropped all "getXXXAbove/Below" methods, we access these data via "getIndexAbove/Below" and "getHeight(index)"

Debug - ty Hasha
   - Zones now use ExServerPrimitive for visual show.
   - Add a Player pool of ExServerPrimitive packets for debug usage. Multiple debug can coexist.
   - ExServerPrimitive are chained when max capacity is reached, to avoid client crash/lag.

Cubic system rework
   - Big cleanup over related files.
   - Life cubic activation rate is now affected by a %, based on friendly target's percent HP loss.
   - Life cubics don't heal anymore summons (part of CT1 patch note).
   - First activation time is now delayed, and not instant anymore.
   - Summoning an already summoned Cubic now refreshes the timer of already existing Cubic, and don't summon another Cubic.
   - Summoning a Cubic while being filled up replace the proper Cubic (aka, the first summoned on the queue).
   - Delete following commands : addlevel, edit_character, current_player, char_manage, teleport_character_to_menu, add_exp_sp_to_character, add_exp_sp, remove_exp_sp, setkarma, setrec, settitle, setname, setsex, setcolor, settcolor, setclass, setlevel.
   - Add //set command, which merge following commands : access, karma, rec, title, name, sex, color, tcolor, class, level, exp, sp. 2 admin panels are dropped, due to //set implementation.
   - Add //test command, which is a blank command used for any type of developement purpose.
   - Add //show (clear|move|path) admincommand. You're now able to see movement of any character (player/monster).
   - Implement AURA_CORPSE_MOB SkillTargetType, used by Festive Sweeper.
   - Add missing stats on Zealot. Ty
   - Add missing ssBoost info on Whirlwind. Ty p0w3rf1y.
   - Edit power of Wild Cannon. Ty p0w3rf1y.
   - Shield Slam duration edited from 2min to 1min. Ty xblx.
   - Drop BEHIND_AREA SkillTargetType (unused).

   - Add RecipeBook container, handling all recipe processes.
   - Recipes are now saved/deleted on add/remove, not on Player disconnection. Ty Reynald0 for the idea.

   - Cleanup "Change Subclass - Action" redundant behaviors. Slight edit on Player#setActiveClass.
   - Edit all offset related methods from Location/SpawnLocation. Ty Hasha for help.
   - ItemInstance#dropMe is reworked.
   - Earthquake packet is reworked. Add missing isNpc parameter, ty RooT.
   - Put .gitignore rule about log folder.

   - FloodProtectors class now uses a nano approach, instead of ms. Add MoveTime FP.
   - Fix Player#disarmWeapon. Ty Djwegas.
   - Add checks over buy/sell/manufacture processes to avoid packet crafting.
   - Remove whisper check about equal receiver<>emitter.
   - Add missing Antharas Earthquake effect, put retail values for Dimensional Rift.
   - Fix scenario where FREIGHT items are stuck on the ground after dropping them. Ty p0w3rf1y.
   - Implement missing AcquireSkillDone serverpacket.
   - More Location#clone() usages.
   - Shout, trade and all chat aren't blocked by Blocklist anymore.
   - Fix all int overflow issues. Ty HeeroYuy.
   - A shop can't be set if pvp flag is currently occuring.
   - An item buy/sell can't occur if either the shop or the buyer/seller is dead.
   - Fix few wrong SystemMessage :
      - Evaluate on null target.
      - Trade request on null target.
      - Few retail SystemMessages instead of custom.
Triskel does not speak with foolish fellows who do not know their profession!


Changeset 391 (1815)

Rev 390 bugfixes, Cubics part II, MailBBS, Geoengine, Skills, Organization, Bugfixes

Rev 390 bugfixes
   - Fix Guards / FriendlyMonster which don't see chaotic pets/summons. Ty shyr for report.
   - Summons can properly attack FriendlyMonster. Ty shyr for report.
   - Fix Summon follow stackoverflow.
   - Drop GM onAction shift behaviour, which automatically fixes missing ActionFailed issues (= stuck) over multiple shift uses.
   - Fix Non-Playable not being attackable in Peace Zones. Ty shyr for report.
   - Fix SummonItems cast process. Don't consume flute anymore. Ty shyr for report.
   - Item consumption is fixed (checked on canDoCast, done on doCast).
   - Remove USE_S1 message over item skill usage. Only item usage message should be sent.
   - Fix CreatureCast#onMagicHitTimer/onMagicFinalizer NPE. Ty shyr / xTakegawa for report.
   - Fix missing ActionFailed mackets over INTERACT/FOLLOW. Ty shyr for report.
   - Fix attackable states for ControlTower, Door, FlameTower.
   - Proper HP/MP checks over CreatureCast#canDoCast.
   - Fix invalid interact radius. Ty shyr for report.
Cubics part II
   - Add a 2s cast task (tested on L2OFF for at least 3/8 cubics, I suppose other do the same). Ty shyr for report.
   - All fireAction() submethods are cleaned up.
   - Implement CubicList, a Player related container.
   - Fix error upon sending mail. Ty Marcatu for the fix.
   - Move MailType to enums package.
   - Various optimizations + 2 potential NPE fixes.
   - Subject overview is limited to 30 chars to avoid layout deformation.
   - Fix double-layer issue, creature must follow the upper layer.
   - Fix Pig Chest skillId 2309. Ty RooT.
   - Fix 4624 skillId. Ty Vonak.
   - Fix effect power for 4 "chance" enchant routes. Ty xblx.
   - Add missing ItemSkills handler for Rice Cake. Ty shyr for report.
   - Implementation of //info, merging GM onAction shift content (summons, players, doors, npcs, statics objects), //summon_info and //npcinfo. The idea is to keep consistancy between GM and regular user behaviours.
   - Introduce Siege#announceToPlayers(SystemMessageId).
   - Rework Clan notice/introduction handling.
   - Add StringUtil#trim method, allowing elegant one-liner over String truncates handling.
   - Titles are now properly showing 16 chars, not 15.
   - Fix missing Clan buttons over character restart. Ty djwegas.
   - Add sps/bsps consumption upon Cubic/Servitor summon process.
   - SiegeFlag are now immune to Swoop Cannon damages. The task is now backed by a Future for doDie / deleteMe cases.
   - Drop FestivalMonster#isAttackableBy override (no specific mean).
   - Doors can now be damaged by regular skills. Walls are still not attackable by anything except SiegeSummon. Swoop Cannon can't target or inflict damages to doors/walls.
   - Fix orc mystic stat calculation. Ty Hasha.
   - Fix Admin teleport (Pirate Tunnel). Ty shyr for report.
   - Fix 3 HTM typos. Ty An4rchy for report.
   - Fix isMortal() concept ; limit the HP drop to 1 and not 0.
   - Properly set Attackable aggro over Summon doDie.
Triskel does not speak with foolish fellows who do not know their profession!


Changeset 392 (1847)

ExServerPrimitive, GeoEngine, Movement, Friend/BlockList, Enchant / Paperdoll

   - Color is now defined only via Color, rather than int. Extra methods are dropped.
   - Added addSquare, addRectangle methods for easier draw concepts.
   - Updated AdminGeoEngine "can_see" command graphics.

GeoEngine - ty Hasha.
   - Updated canSee, canMove and getValidLocation methods.
      - Now using exact line of sight/movement and checks all cells in the way, rather than using LoS/LoM approximation using Bresenham's line algorithm (see ).
      - Computation more heavy per each iteration. Performs approx 25% more iterations per path (25% more geodata cells evaluated). Still worth the accuracy.
   - Fix LoM check giving false positive result, when target is on "balcony".
   - Added first iteration of canFloat check, can be used for both, flying and swimming. Though the movement itself should handle all special cases (like water level, when swimming from bottom up).
   - Added new admin command "geo_fly" to check LoF.
   - Misc.
   - Rework moveToPawn / moveToLocation concept, for both Creatures and Players.
   - Introduce ValidatePosition debug (part of //show move) to visually see server<>client desync. Rework ValidatePosition.
   - Fix most of server<>client desync.
   - Fix dead/teleporting/disconnected over target follow.
Friend/BlockList systems rework - ty RooT.
   - Add missing packets and make a correct use of it.
   - Delete //silence && //tradeoff admincommands.
   - Move isBlockingAll concept to BlockList. Basic BlockList cleanup.
   - Add missing blocklist check over clan invitation.
Enchant / Paperdoll rework - ty RooT.
   - Drop all admin commands from AdminEnchant except "admin_enchant".
   - Drop enchant.htm, use quickbox instead.
   - //enchant doesn't work if the same enchant is already set.
   - Introduce Paperdoll enum. Rework most methods to use it.
   - Big cleanup of Inventory. Move some overriden behaviors back to PcInventory. Add Javadoc. Move ChangeRecorder out and rename it ChangeRecorderListener.
   - Delete 2 unused ItemInstance variables.
   - Few unused methods deletion over SendablePacket.
   - Move ItemLocation and ItemState to gameserver.enums.items.
   - XCast/XMove/XAttack now use generics, _creature is renamed _actor and now uses proper instance type which avoid cast.
   - Introduce back NPC castle guards. It will be kept like this until SpawnManager introduction.
   - Fix NPE related to castle guards / mercenaries Castle attribution.
   - Fix ControlTower castle guards spawns cleanup over doDie.
   - Fix NumberOutOfRange exception over hero fight loading. Ty BIGMANF.
   - Fix GMViewWarehouseWithdrawList packet. Ty StinkyMadness.
   - Fix Blacksmith Rooney spawn time. Ty vampir.
Triskel does not speak with foolish fellows who do not know their profession!


Changeset 393 (1913)

L2DatabaseFactory, CreatureStatus, tryToX, Weight system, Organization, Bugfixes

   - Rename it ConnectionPool. Move it to commons.concurrent, use static instead of Singleton.
   - Use MariaDbPoolDataSource instead of C3P0. Delete related JARs.
   - Indirectly fix "SQLNonTransientConnectionException: (conn=13) unexpected end of stream, read 0 bytes from 4" after inactivity time.
   - Update MariaDb connector to 2.6.1.

   - Merge CreatureStatus and CreatureStat. Use of generics, add Javadoc. Use internal variables instead of getter/setter.
   - Delete all getters used as shortcuts from Creature/Player.
   - Rename setCurrentX to setX (right for CP, MP, HP).
   - Move Cp related methods to PlayerStatus.
   - Delete all redundant StatusUpdate calls. Basically, whatever which was calling setX()- X being HP, MP, CP.
   - AddMp and reduceMp are slightly edited to avoid to call setMp if value isn't worthy to be edited. Implement CreatureStatus#addHp based on those.
   - Implement setMaxHp/HpMp/CPHpMp. Those are optmized to call StatusUpdate only once.
   - Intentions use direct methods to avoid to "guess" parameters type. It also shortcuts writting style by a lot.
   - Delete SkillUseHolder container/use, which was generating a lot of objects.
   - Players previous stance isn't hidden anymore by ACTIVE triggering IDLE. When a Player calls ACTIVE or IDLE, it goes directly to IDLE.
Weight system - Ty Hasha
   - Addition of PlayerStatus#isOverbuden (80% volume check), with uses.
   - Fixed pet weight calculation. AltWeightLimit applied to pets too.
   - Fixing AltWeightLimit config being double parameter read as int.
   - Fix potential bug, when removing weight penalty functions from Pet.
   - Fix multiple item extraction to first check available slot and than create items.
   - Update ConditionPlayerWeight to use weight penalty, updated XMLs.
   - Added missing WEIGHT_PENALTY stat, updated XMLs to AdvExt values.
   - Dropped Creature#_isOverloaded, as only Player and Pet may get overloaded. Overload solved by checking speed == 0, as L2OFF.
   - Added missing system message in MoveBackwardsToLocation.
   - Fixed Pet not getting effect of weight penalty.
   - Rename commons.concurrent > commons.pool.
   - Delete unused effect EffectCombatPointHealOverTime and EffectType.COMBAT_POINT_HEAL_OVER_TIME.
   - CreatureAttack#doAttack is correctly overriden in Attackable and Player cases.
   - Rename StatusType to ServerType. Rename related methods / variables.
   - Generate StatusType out of StatusUpdate packet.
   - Move _exp, _sp, _level to PlayableStatus.
   - Delete isChampion() concept. The whole custom is dropped.
   - Rework Formulas#calcCrit and calcMCrit.
   - Some Blow/Pdam cleanup.
   - Delete isBehindTarget() / isInFrontOfTarget(). The concept is wrong, since effected isn't specially actual getTarget().
   - Move isBehind / isInFrontOf / isFacing from Creature to SpawnLocation. Any WorldObject can now call it.
   - Rework targetLost to handle more checks, rename it isTargetLost.
   - Siege#announceToPlayers is renamed Siege#announce and allow SiegeSide as parameters (making it possible to call it independently for ATTACKER and DEFENDER, or both).
   - Delete Player#isInSiege concept, since it's wrongly used (used as a mixed "isSiegeParticipant" and "isInSiegeZone" checks).
   - GMs are now affected by death penalty and by castle foreigner teleport.
   - 3200-3299.xml is partially fixed (reviewed 15+ item skills).
   - Add missing check regarding Baium Angelic Vortex. Ty Kitsos.
   - Fix SiegeGuard NPE during attack. Ty henrique for report.
   - Fix "Need to press ctrl to attack siege guards". Ty henrique for report.
   - Fix SiegeGuards respawn upon end of a Castle siege. Ty henrique for report.
   - Fix Guards can't be debuffed at any case. Ty shyr for report.
   - Add back interact possibility with FriendlyMonster. Ty shyr for report.
   - Fix Gatekeeper CANNOT_PORT_VILLAGE_IN_SIEGE condition. Ty Denzel for report.
   - Add missing Broadcasting Towers spawns. Ty henrique.
   - Introduce INTERACT for Summons. It basically is a MOVE_TO with shift possibility.
   - Fix a ClassCastException over PlayerAI interaction (boards use).
   - Fix a ClassCastException over RequestActionUse (throne use). Ty henrique for fix/report.
   - Summons react to shift command over attack.
   - Summons return back to owner if isTargetLost is triggered (interact, cast, attack).
   - Summons owner follow status is now broken while sent to attack/interact.
   - Add missing SUMMON_GAVE_DAMAGE_S1. Correct override. Ty StinkyMadness.
   - Summons can't be sent to attack dead targets. Ty StinkyMadness.
   - Fix "When you're running and click on npc to speak with it, your char only stops on client, but continues to run on server". Ty SlugeR for report.
   - Fix "Trying to cast skill + moving teleports you on client". Ty SlugeR for report.
   - Fix proper uses of tryToSit/tryToStand. You shouldn't "tryTo" when using a skill, but directly execute it.
   - Fix pick up animation timer. Ty SlugeR.
   - Add retail C5 implementation of Charm of Courage.
   - Fis death on siege properly decreases xp by 1/4.
   - Add proper check messages for siege summons attempts.
   - Fix siege process timer, based on AdvExt.
Triskel does not speak with foolish fellows who do not know their profession!


Changeset 394 (1972)

Scripts, Teleport system, Seven Signs, Organization, Bugfixes

   - Introduction of Tutorial / NewbieGuide - Ty howlrang/Marcatu for initial cleanup of L2J script.
   - Fix following quests : 101, 102, 103, 104, 105, 106, 107, 108, 257, 260, 265, 273, 293.
      - Rewards are done using rewardItems instead of giveItems.
      - Fix ss/sps beginners rewards amount.
      - Rewards are now secured by a PlayerMemo var instead of QuestState var, making it exploit-free (case of 257, 260, 265, 273, 293).
   - Q105 now rewards regular ss/sps ng, aswell as potions.
   - Q260 / Q265 reward formulas are fixed using L2OFF.
Teleport system
   - Revamp whole teleport system, using lord_rex initial share.
   - goto/tele/etc bypasses are deleted, and replaced by only those 2 versions : instant_teleport and teleport_request. Move the teleport logic to Npc. Children classes can override isTeleportAllowed(Player).
   - Implement TeleportType enum, based on L2OFF AI content.
   - Implement instantTeleports.xml. Those teleports only check Npc#isTeleportAllowed(Player), while regular teleports check siege, item consumption and Npc#isTeleportAllowed(Player).
   - Improve teleports.xml, reparsing the content using L2OFF. The model now holds the Castle, teleports are organized by npcId and by TeleportType. The initial data was double check with RooT's work, allowing to add 10 missing ids and cut 60+ pointless ones.
   - The HTM which shows teleports is now built out of nothing from data. All existing, related HTMs are deleted (scripts and regular teleporters).
   - Add few missing "-pk" HTMs (30162, 30836, 31964).
   - Add (back ?) FREE_TELEPORT config.
   - Rename "teleporter" HTM folder to "gatekeeper" (to match class names).
   - Rename script ToIVortex > DimensionalVortex.
   - Add castle chamberlains teleports aswell - parsed from L2OFF GF, since the content of Vanganth and AdvExt was lacking. They are not yet implemented.
Seven Signs - Ty Hasha.
   - Updated all HTMLs to L2OFF GF, formated them, fixed obvious mistakes, typos and names.
   - Added missing HTML with - not enough adena to purchase Records of Seven Signs.
   - Fix xxxx_priest_2c.htm to not containCatacomb/Necropolis teleport location link (Seal of Gnosis owner lost -> no teleport).
   - Fix "Failed to retrieve cabal from bypass command." upon trying to contribute Seal Stones while Seven Signs is in Competition period.
   - Characters with 1st class transfer can now join any side.
   - Add //show html, which toggles on/off the HTML path for GMs (similar to L2OFF). There is no associated config, and is set to false by default.
   - Secure //set class, which now checks dummy ClassIds, and provide more infos upon fail.
   - Introduce QuestState#rewardNewbieShots method for easier management of beginner reward.
   - RadarList#addMarker/removeMarker now accept a Location as parameter.
   - QuestState#addRadar/removeRadar only accept Location as parameter.
   - Hardcode all Locations used in Quests for easier management. Replace some int[][] for Location[].
   - MIMYU SpawnLocations are downgraded to Locations.
   - Delete all unused SkillTypes.
   - Drop all "Alt" and "Game" from either Config .properties or java side. Few Config renames.
   - Cleanup all checks regarding TAKE_CASTLE, STRIDER_SIEGE_ASSAULT, SIEGE_FLAG and SUMMON_FRIEND - moving methods from Player to dedicated handlers.
   - Generate NpcTalkCond enum. Rename and generate on Npc #validateCondition(Player) > Npc#getNpcTalkCond(Player), which now acts as overriden. Cleanup all uses.
   - Fix Benom spawn timer.
   - Fix trade NPE, upon empty lists pushing "Start" button.
   - Fix Broken actions upon invalid trade windows checks.
   - Fix Summon Friend and alike skills. Remove the 50 radius check. Add a SystemMessage and avoid the cast on yourself.
   - Fix Gate Chant, adding SUMMON_PARTY SkillType.
   - Fix Elpy AI. Ty Bruns87.
   - Allow Config.OLY_MIN_MATCHES to be correctly spread over queries when a Config reload occurs.
   - Fix a stackoverflow over siege end. Ty Kitsos for report/fix.
   - Fix StriderSiegeAssault, using skill target instead of getTarget().
   - Fix bow attack reuse over CreatureAttack#stop() call. Ty MonKEY fo report.
   - Delete active siege check on Wyvern Managers + class cleanup.
   - Switch Schuttgart CHs to correct order, fixing CHs doors and spawn.
   - Auto loot Config properly checks inventory size.

PS : Q257 is now race bound to HUMAN. While NOT RETAIL, it looks like a NCSOFT fail :
   - It defeats the C3 layout being than "all races get access to 13k ss / 6k sps".
   - Out of 13 newbie quests, it's the only "race unbound" quest.
If you manage to find any retail info about why it has been done that wrong way, I'm willing to revert it.
Triskel does not speak with foolish fellows who do not know their profession!


Changeset 395 (2038)

GeoEngine, StatSet / MemoSet, AggroList, Gatekeeper, Raid Curses, Bugfixes, Organization

GeoEngine - Ty Hasha
   - Added MoveDirectionType enum with pre-calculated constants.
   - Added getValidSwimLocation, which calculates last accessible swimming location. It also handles getting out of water correctly.
   - Dropped geo coordinate validation when converting from world coordinates (getGeoX, getGeoY).
   - Added world coordinate or geo coordinate checks in various can/get methods. GeoEngine now support processing of coords, when outside of world.
   - Fix LoM check giving false positive result, when target is on "balcony".
   - Simplified GeoEngine#getWorldX/Y calculation.
   - Added new admin command "geo_fly" to check LoF.
   - Fixing movement blocked / pathfinding fail /  by dual-layer (e.g. Sirra's pond).
StatSet / MemoSet
   - Implementation of MemoSet, a CHMap storing String pairs.
   - StatsSet is renamed StatSet and moved to
   - NpcMemo and AbstractMemo are deleted.
   - Lazy initialization concept is deleted from PlayerMemo and ServerMemoTable.
   - Introduce AggroList container, gathering all methods related to aggro.
   - Move few methods here and there for an easier and more logical use (notably, hold AggroInfo instead of Creature and compute back getHating).
   - Rework and cleanup methods, for easier use and/or optimization.
   - AggroList#stopHate/reduceAllHate trigger an AI reaction when a most hated isn't foundable.
   - Implement //info aggro for easier aggro management, include it in the existing panel.
   - Fixes related to that refactor :
      - AggroList#reconsiderTarget doesn't consider anymore actual most hated as a valid choice.
      - The aggro isn't cleared anymore if the most hated becomes out of range (so the second on the list inherits the attack stance).
      - Fix multiple aggro values (all are checked). "Raid related" use their own formula.
      - AggroList#randomizeAttack() don't build anymore aggro like crazy and can now work on non aggressive, 0 getAggroRange().
   - Delete 35001 > 35341 instant locations / associated HTMs.
   - Fix all Ivory Tower Gatekeepers, using proper systems.
   - Fix few HTMs typos.
   - RaceTrack > MonsterRaceTrack script rename.
Raid Curses
   - Correct implementation of Raid Boss curse system. Ty shyr for report.
   - Trigger it exclusively for Playable during a regular hit.
   - Regular RaidBoss now casts AntiStrider skill during a regular hit.

   - Fix revive animation. Remove the paralyze effect upon revive. Ty StinkyMadness.
   - Fix deadlock over AttackableAI#onEvtAttacked.
   - Fix broken movement Intention (fix few, linked, issues such as boat moving in ground, etc).
   - Secure all spawns position using World borders.
   - Fix doAttackHitByPole logic (ss consumption is fixed, add allowPeaceAttack() check) and optimize it.
   - Fix "Focus Attack" skill target amount.
   - Implement missing Seal of Strife siege banish behavior.
   - Fix rewardNewbieShots for Q273 and alike. Ty shyr for report.
   - Fix skillId 2217 leading to Inventory NPE. Ty shyr for report.
   - Fix Peace Zone messages/checks for attack/cast. Ty StinkyMadness.
   - Add RandomizeHate effect, used by 3 different skills (used notably by Confusion). Ty shyr for report.
   - Delete PenaltyMonster instance and introduce FishingBlocker script using L2OFF.
   - Rework Monastery script to fit with L2OFF.
   - Fix ON_SKILL_SEE being centered on actor and not on acting player.
   - canScheduleAfter is desactivated for AttackableAI. Fix onSpellFinished behavior, mage AI, aggro movement over a Confusion cast, etc.
   - Fix //reload npc, add //reload script. Ty nighty for report.
   - Shift Z upon teleport action.
   - Fix the NPE over CreatureAttack#onHitTimer.
   - Add World#isOutOfWorld method.
   - Remove all -100 / +100 from WorldObject#spawnMe/setXYZInvisible.
   - Add Location#addRandomOffsetBetweenTwoValues method.
   - Optimize Attack process.
   - Baium script heavy cleanup. Introduce Quest#addGrandBossSpawn.
   - Delete unused SummonCast.
   - //info is slightly edited / reorganized. 2 buttons are added, AggroList and knownlist
   - Quest#onSkillSee handle Creature[] targets, not WorldObject[].
   - Quest#showResult is slightly edited (secured html tags, move few null checks).
   - All "data containers" holding a single Queue/Map/List now directly extends it.
Triskel does not speak with foolish fellows who do not know their profession!


Changeset 396 (2123)

Scripts, Bugfixes, Organization

Scripts - Ty Hasha.
   - Add missing Q501 and Q503. Ty RooT and Hasha.
   - Rework entirely Quest to be able to handle basic operations without a QuestState. All regular scripts are now QuestState free.
   - QuestState now extends MemoSet.
   - QuestStatus enum implementation, SQL is edited accordingly.
   - Add ElmoderenCemeteryTeleporters, splitted from Q620_FourGoblets. NPC 31919 and 31920 changed to Folk type, moved HTMLs.
   - Merge GoldenRamMercenary instance with Q628, and edit NPCs to Folk.
   - Move death event registration from Player to Quest.
   - Quest loading process is moved from Enterworld to Player#restoreCharData.
   - Implementation of QuestList, a Player container holding QuestStates.
   - Entire script reorganization and renames, to fit with future changes.
   - Complete rework of all Sagas, using dedicated npcIds, itemIds, NpcStringIds. Ty Hasha.

   - Revert one edit introduced in 395, leading to quest html modified in sysmsg. Ty shyr for report.
   - Fix rechargeShots bug upon toggle activation. Ty MasterRoshi for the fix.
   - Edit rank > ranking over clan privileges to bypass MySQL reserved word RANK. Ty Hasha for the fix.
   - Summons can't trigger pvp flag over their masters upon attack.
   - Fix SummonAI stackoverflow.
   - Fix bow>melee>bow cooling down exploit. Ty StinkyMadness.
   - Fix Player rotation over interaction, for both regular and Walkers.
   - Implement Npc#forceAttack, delete AttackableAIScript#attack and cleanup all uses.
   - Delete AccessLevel allowPeaceAttack, takeAggro, gainExp concepts. They were defeating the contract about GMs being as "playerish" as possible.
   - Priviledge > Privilege typo.
   - Drop unused CreatureMove#canfollow.
   - Drop few ActionFailed uses.
   - Move ON_ATTACK call from Attackable to Npc (allow futher custom or non custom usages).
   - Add few missing NpcStringIds.
   - BossInfoType stores NpcStringId instead of Strings.
   - ExShowScreenMessage packet is cleaned up. SMPOS is mandatory.
   - AbstractGroup#broadcastOnScreen is added.
   - Npc#broadcastNpcShout and broadcastOnScreen are added.

PS : Following SQL update is needed for live servers:

ALTER TABLE `clan_privs` CHANGE `rank` `ranking` INT NOT NULL DEFAULT '0';

UPDATE `character_quests` SET `var` = '<cond>' WHERE `var` = 'cond';
UPDATE `character_quests` SET `var` = '<flags>' WHERE `var` = '__compltdStateFlags';
UPDATE `character_quests` SET `value` = 'CREATED' WHERE `var` = '<state>' AND `value` = '0';
UPDATE `character_quests` SET `value` = 'STARTED' WHERE `var` = '<state>' AND `value` = '1';
UPDATE `character_quests` SET `value` = 'COMPLETED' WHERE `var` = '<state>' AND `value` = '2';
Triskel does not speak with foolish fellows who do not know their profession!


Changeset 397 (2224)

Geoengine / Movement, Admin commands, Scripts, Bugfixes, Organization

Geoengine / Movement
   - Drop L2D concept. With years, it got less and less uses (was invalid for LoS, and can be calculated in another mean for geopath). L2OFF and L2J are, anew, fully supported.
   - Fix Z being shifted too high, leading to Z layer misplacement (forts outside wood ladder). Ty Sahar.
   - Fix geopath heuristics. Ty Hasha/Sahar.
   - First iteration of multilayer geopath support (Barakiel column, fort stairs/plateforms, etc) using binary heap. Ty Hasha for the implementation.
   - Fix the 2 IOOBEs related to canSee / canMove (since MoveDirectionType implementation). Ty Hasha.
   - Fix swim movement issue. Ty Sahar.
   - Remove the collision radius offset shrinker in order paths being properly executed (notably visible for Attackable stucking in corners). Introduce back some client<>server desync.
Admin commands
   - Addition of AdminCommand model, storing parameters and description of the admin command.
   - Addition of Pagination class, used to easily cut your data and format it under HTMs. Ty StinkyMadness.
   - Addition of multiple useful methods into IAdminCommandHandler to cut some target selection redundancy. Ty StinkyMadness.
   - activeChar > player rename.
   - Delete all admin HTMs related to skills (data/html/admin/skills). Skills list is generated from //skill list.
   - Move previous //help logic to new //link command.
   - //announce without params properly calls the panel.
   - //help is now generated using adminCommands.xml content. Previous static help system is deleted.
   - AdminDoor //open_all and //close_all are deleted (no use).
   - Merge //bkpage with //bk, //knownlist_page with //knownlist. A bookmark name can't be anymore a number.
   - All related server admincommands are merged into //server param.
   - All related siege commands are merged into //siege param castleName.
   - All related castle commands are merged into //castle param castleName.
   - All related zone commands are merged into //zone show "id"|all|clear, //zone calling the panel.
   - All related geoengine commands are merged into //geo.
   - All related pathfind commands are merged into //path.
   - All related skills commands are merged into //skill and //clan_skill. Greatly improve //clan_skill, allowing to add, delete, add all and delete all skills of a Clan.
   - All related summon commands are merged into //summon. Generate AdminSummon out of AdminRideWyvern/AdminEditChar content.
   - All related effect commands are merged into //effect. Merge AdminBuffs with AdminEffects. //effect now handle set, remove and visual parameters. Edit admin panels accordingly.
   - All related item creation commands are merged into //item. Generate AdminItem out of AdminCreateItem. //item coin can accept radius. Drop //reward_all.
   - //info over Player got a new look, added collision radius/height infos over Npc.
   - //runmod is deleted, //instant_move now accepts 0|1|2.
   - //recall_party and //recall_clan are merged into //recall.
   - //goto is deleted, //teleportto is used instead. All "goto" subcommands (ch, cw,...) are also renamed "teleportto".
   - //tele_areas is deleted.
   - //move_to is renamed //teleport. As L2OFF, it can accept only 2 parameters, being X and Y - Z being calculated based on X/Y coords and actual Player Z.
   - //polymorph is now a toggle, merging the 4 previous admincommands to it. Delete the possibility to morph into an Item (too much bugged).
   - //invul and //undying don't work anymore on other targets than yourself.
   - //para becomes a toggle. Delete //para_all and //unpara_all (no use).
   - Delete //special (not existing).
   - Delete all redundant commands ending with "_menu".
   - //abnormal and //social only affect your current target. There is no more player or radius check.
   - //ban, //ban_acc, //ban_char and //ban_chat are all merged. Same for //unban.
   - //kick, //kick_non_gm are merged. //character_disconnect is dropped.
   - Merge //kill, //res, //heal to new AdminManage, which now use [name[radius]] parameters. Delete //res_monster. Delete AdminHeal and AdminRes. //areacancel is renamed //cancel and moved to AdminManage.
   - Merge AdminGm with AdminAdmin. Rename //gm to //gmoff.
   - //ch chId parameter is moved from first to second place (//ch param chId).
   - Delete //cw "info". It is now part of regular //cw, similar to //siege, //zone, //ch...
   - Heal/kill/res/cancel/open/close now accept parameters over //admin quickbox. Added a "Cancel" button upon //admin.
   - Merge //find_character, //find_ip, //find_account and //find_dualbox into //find. //show_characters is renamed //list. Generate AdminFind for it.
   - Delete //clan_info (collide with //pledge info), //st (collide with //effect visual), //get/reset_skills (you can't ninja anymore skills set of another Player).
   - Generate AdminEditChar //remove out of //removereuse and //remove_clan_penalty. Add //remove death_penalty.
   - Drop //forge and AdminForge. Move left //msg to AdminAdmin.
   - Optional item (e.g. fish) isn't considered as quest item anymore for 3rd class quest. Ty Hasha.
   - Add Medusa and BrekaStronghold AIs. Ty Hasha.
   - Fix 2 NPEs due to AggroList rework. Ty Sahar for report.
   - Fix AttackableAI NPE over thinkIdle. Ty Sahar for report.
   - Fix CreatureCast/CreatureAttack NPEs (definitive edition). Ty Sahar.
   - Fix Doors being non attackable during SiegableHall. Ty Sahar.
   - Fix registration to SiegableHalls. Ty Sahar.
   - Fix Devasted Castle guards. Ty Sahar.
   - Fix BabyPet / Pet skill level. Ty Hasha.
   - Fix RaidPointManager not being properly saved + few optimizations. Ty AshenOne for report.
   - Validate teleport location if a random offset is used. Ty Hasha.
   - Fix invalid PK check over gatekeepers. Ty Dimityr203.
   - Add few more X/Y/Z check validation upons spawns (quest spawns, minion teleport, pet spawn). Ty Hasha.
   - Servitors/pets now spawn heading towards the Player, and their distance is moved from 30 to 40. Both Pets and Servitors use the same spawn rules.
   - Fix Buy shop showing wrong shop quantity. Ty StinkyMadness.
   - FloodProtector is moved to its own enum, on enums folder.
   - Add AggroList#getMostHatedCreature for easier usage.

PS  : Since geoengine doesn't accept anymore L2D format, the exact same geodata is now shared under L2J format. See public sources topic to download it back.
Triskel does not speak with foolish fellows who do not know their profession!


Changeset 398 (2308)

Admin commands - part II, Petition, TradeList, TargetHandler, Community Manager, Olympiads, Formulas, Bugfixes, Organization

Admin commands - part II
      - Fully rewritten, merged under //movie and //sequence. Delete MovieMakerManager.
      - Sequences are stored under TreeMap for automatic sort based on index.
      - Work even if indexes aren't following each other.
      - Sequences parameters are set on individual columns for easier read.
   Delete AdminNpc, AdminCamera, AdminShop admincommandhandlers.
      - Delete //walker, merged with //show (walker).
      - Delete //gmshop, merged with //buy (no params needed).
      - Delete //show_shop, merged with //info (shop).
      - Delete //show_shoplist, replaced by simple //buy.
      - Delete old //camera (redundant with //movie, almost impossible to use)
      - Rename //cameramode > //camera. Fix 2 issues (knownlist is properly refreshed, the camera doesn't bounce back to initial position anymore).
      - Merge all admin commands related to petitions to //petition (show, unfollow, reject, join, reset, view).
      - Implement //add_peti_chat and //force_peti from ALT+G panel.
   - //setnoble is merged with //set (noble).
   - Add missing checks for //remove. Ty StinkyMadness for report.
   - Overall cleanup (merge containers, Stream usage, Javadoc, multiple checks added, unhardcode HTMs, improve HTMs details). Rework ChatPetition to avoid to iterate upon sent message.
   - Allow petitions to be saved over server shutdown (lazy save), and properly loaded back (both responders and petitioner receive the Petition window with stored messages).
   - Implement the petition feedback system, and show it upon CLOSED state.
   - You can now add multiple users over a single petition (//add_peti_chat). If such added user "cancels" the petition, he can either cancel it if GM, or simply leaves it if regular user.
   - You can now enforce your target to petition with yourself (//force_peti). It will generate a perfectly regular Petition.
   - Add the possibility to switch from one Petition to another (active petition returns as PENDING if none active GMs are part of responders).
   - You can now move from one Petition to another simply joining another Petition - previous Petition will return as PENDING.
   - You can now unfollow current Petition without having to end it - it will return to PENDING if no left responders are GMs.
   - Set back the Petition as PENDING and remove associated responders if state is IN_PROCESS but no messages were sent.
   - Multiple integrity/sanity checks were added (avoid to reject if already REJECTED, etc).
   - Add Javadoc.
   - Add missing sysMsg ONCE_THE_TRADE_IS_CONFIRMED_THE_ITEM_CANNOT_BE_MOVED_AGAIN over self-locked TradeList.
   - Add missing sysMsg PRIVATE_STORE_UNDER_WAY over you/partner manage store mode.
   - Add missing sysMsg EXCHANGE_HAS_ENDED over unsuccessful trade - the most common unsuccessful trade being 2 empty validated TradeLists.
   - Fix an exploit moving distance check from trade request to validation. Ty StinkyMadness for report.
   - SendTradeDone packet now uses a static approach.
   - Add noicon over Recover Force.
   - Fix Signets symbols.
   - Delete TargetHandler PET.
   - Fix Treasure Keys.
   - Clear charges over Player death.
   - L2Skill addSummon/addCharacter methods aren't static anymore.
   - Rework canDoCast concept. Introduce ITargetHandler#meetCastConditions for Playable conditions, fixing numerous target issues over cast.
Community Manager
      - Move "Mail" class out of it.
      - Don't lazy load mails anymore, everything is done on startup - which avoid to db query to find last mail id.
      - Use PlayerInfoTable to retrieve isGm() instead of db query.
      - Introduce Favorites management (loading, saving, deleting being functional ; proper bypass saving being NOT due to the system chaos - mail coded in a way, memo in another, etc).
      - Rename Manager > manager and bb > model packages.
      - Fix NPE over ClanBBSManager access upon clan creation. Ty Gigi85 for report.
      - Add the possibility to close Community Board using static approach (ShowBoard.STATIC_CLOSE).
      - Rename all related SQL tables to "bbs_".
      - Create ForumType, ForumAccess enums. Delete TopicType.
      - Rework the Forum/Topic/Post management and move it from "BBSManager"s to "CommunityBoard". Delete CPost concept. Structure isn't lazy loaded anymore, db connections are far, far lesser.

   - Rename queries, tasks.
   - Remove synchronized, put _nobles as ConcurrentHashMap.
   - Drop _heroesToBe List (no use to retain it), compute it directly on HeroManager#computeNewHeroes.
   - loadNoblesRank() > processRankRewards(), use Entry to iterate data instead of keySet()/get().
   - saveNobleData() "to_save" concept is removed, instead use INSERT ON DUPLICATE KEY. Also use addBatch/executeBatch instead of generating multiple PreparedStatement.
   - Merge few one-shot methods with their calls (scheduleWeeklyChange/addWeeklyPoints, init/updateCompStatus, olympiadEnd/updateMonthlyData).
   - Delete _nobles == null checks (impossible).
   - OlympiadStat doesn't call 4 times the same content anymore.
   - Hit accuracy calculation : Raise the lowcap from 20% to 30%. Modifiers are now directly applied over acc/eva diff rate (which x2 the impact). Base rate is 90, not 80.
   - Blow damage : fully rework the formula.
   - Blow rate : fully rework the formula.
   - Pdef calculation : Full Armors don't count LEGS bonus anymore.
   - Shield rate versus bows is now x3, out of 30%.
   - Fix pole attack over Players on peace zone. Ty StinkyMadness.
   - Fix CCE over Infinity Axe "Discord" effect. Ty Sahar for report.
   - Rework EffectConfuseMob > EffectDistrust. Only affect Monsters, add a radius check, called only once.
   - Fix 80+ Quests being broken prior to rev 396 Hasha refactor. Ty StinkyMadness for report.
   - Add few missing IdFactory cleanup (bbs_mail<>playerId, bbs_favorite<>playerId, bbs_post<>topicId, bbs_post<>playerId).
   - Don't spend SS over failed Blow. Don't show ATTACK_FAILED message aswell.
   - Add Recovery Scrolls upon //buy "Scrolls" tab. Ty Somename.
   - Implement TeleportMode enum.
Triskel does not speak with foolish fellows who do not know their profession!


Changeset 399 (2353)

Formulas, Scripts, Bugfixes, Organization

   - HP/MP/CP - ty Hasha.
      - Unhardcode HP/MP/CP regen base values. Each class got now its own tables. Indirectly fix formulas (values aren't linear, but step-up every 10 levels).
      - Formulas are checked and tested using L2OFF (specific order maintained).
      - Weight Penalty is not handled by skill anymore (was producing issues with HP/MP/CP regen).
      - Fix few skills related to HP/MP/CP regen.
   - Physical hit / skill formulas
      - Rework charge skills formula.
      - Rework physical skills formula. Split physical hit and skill formulas. Add a Config.DEVELOPER to track output.
         - Add ssMul 2.04 instead of 2.0 for physical skills.
         - Rework attacker elemental trait usage during regular hit. A physical hit is now considered as "elemental attack" if such trait occurs, raising or decreasing overall damage. Ty Arrowhead for report.
         - Add missing position multiplier for physical hit.
   - Shield rate is now impacted by physical CRITICAL attacks. Add a Config.DEVELOPER upon the associated method.
    - MEN bonus is now only used for isMagic skills. Ty StinkyMadness.
   - Fix Q501 loyalty check. Ty lucabruns.
   - Add missing Q351 reward. Ty Gigi85 for report and StinkyMadness.
   - Fix Q627 to be party friendly. Ty StinkyMadness for report.
   - Fix Q376 / Q377 onKill logic. Ty StinkyMadness for report.
   - Fix potential CME over Q409. Ty StinkyMadness for report.
   - Flat all uses of Npcs containers using ConcurrentHashMap.newKeySet. Fix NPE over Core script.
   - Rework (rework mechanisms) following quests : Q348, Q403, Q409, Q421 - ty Hasha.
   - Complete (add missing content) following quests : Q114, Q171, Q316 - ty Hasha.
   - Fix (found and fix issues) following quests : Q021, Q609, Q615 - ty Hasha.
   - Replace hardcoded Strings for NpcStringIds over all scripts - ty Hasha.
   - NewbieHelper : Remove uneeded files, fix one link. Ty RooT.
   - Remove Attackable regen task upon active region.
   - Fix FloodProtectors for values > 2147. Ty Gigi85 for report and StinkyMadness.
   - Add charge check over Force Blaster. Ty Gigi85 for report.
   - Fix pet food usage over pet window. Ty StinkyMadness.
   - Fix server-side heading upon unmoving interaction.
   - Fix 8570-8575 items.
   - Avoid to follow yourself. Ty StinkyMadness.
   - Avoid to stop moving upon using skill under cooldown. Ty StinkyMadness.
   - Avoid to stop attacking upon using skill under cooldown. Ty StinkyMadness.
   - Fix the clan/alliance issues upon TargetCorpseAlly / TargetAlly. Ty StinkyMadness.
   - Fix the NPE upon TargetCorpseMob on dead Guard/SiegeGuard. Ty StinkyMadness.
   - Use cast int on double values of HP/MP consuming under canDoCast boolean. Ty StinkyMadness.
   - Update flag pvp status while heal/buff flagged summon. Ty StinkyMadness.
   - Allow the usage of skill on dead target without giving effect. Ty StinkyMadness.
   - Add attacking rules on summons/pets. Ty StinkyMadness.
   - Add "Contract Payment" (Skill ID: 4140) upon Soulless summon. Ty StinkyMadness.
   - Vincenz Blacksmith HTM's (Rune Territory). Ty StinkyMadness.
   - Set 'Lost Buffalo' as minion of 'Frost Buffalo'. Delete individual minions. Ty StinkyMadness.
   - Fix wrong HTM and tokenizer order for observe cost on BroadcastingTower. Ty StinkyMadness.
   - Fix Private Store Buy issues. Ty StinkyMadness.
   - Manor : Reset seed sales. Ty StinkyMadness.
   - Added missing privileges to academy members. Ty StinkyMadness.
   - Normalize all uses of canGiveDamage.
   - Fix few reported HTM typos.
   - Add 32007 npcId missing content (buylist, HTMs). Ty Root.
   - Fix 31616 npcId HTMs and type. Ty RooT.
   - Fix Mortal Strike enchant routes. Ty Sahar.
   - Implement WeightPenalty, ShieldDefense enums.
   - Implement static approach for ExVariationResult failed result.
   - Few SonarLint cleanup.
Triskel does not speak with foolish fellows who do not know their profession!


Changeset 400 (2376)

Bugfixes, Organization

   - Fix NodeBuffer exhaustion. Ty Hasha.
   - Add missing CLAN_MEMBER_GRADUATED_FROM_ACADEMY message use. Ty Kable for report.
   - Fix a visual issue over movement (attacking while target is on PZ).
   - Fix NPE over PlayableCast#canDoCast. Ty shyr for report.
   - Save hidden effects (eg. buffs under herbs) upon Player restart/logoff. Ty Gigi885 for report.
   - Fix calcPhysicalAttackDamage missing boost ss, prior to rev 399 formula refactor. Ty Denzel for report.
   - Fix following messages from effects :
      - S1_HAS_WORN_OFF and EFFECT_S1_DISAPPEARED are now used depending about effect left length time, and aren't called both anymore.
      - EFFECT_S1_DISAPPEARED is called if an added effect replaces an existing effect (equal or superior).
      - YOU_FEEL_S1_EFFECT is called on every effect application, and removed from skillhandlers and side systems.
   - Fix proper handling of long values into Config. Ty StinkyMadness for fix.
   - Allow offensive skill / attack over same clan/alliance under arenas. Ty Kable for report, Penacho for fix. Fix also few isInsideZone checks, where getActingPlayer() was tested instead of Playable (overriding Summon state).
   - Add missing getAttackSpeedMultiplier() over PetInfo. Ty stepforstep for report.
   - Fix //reload announcement. Ty Denzel for fix.
   - Clean target to avoid to get "ghost" target upon //recall. Ty RooT for fix.
   - Fix Q294 reward. Ty YulRun for report.
   - Added 9 missing NpcStringIds.
   - Extensive use of broadcastNpcShout.
   - Few SonarLint cleanup.
   - Few Clan method renames.
   - Delete ZoneForm#getDistanceToZone concept.
Triskel does not speak with foolish fellows who do not know their profession!