aCis


New revision 370 is out ! Beginning of the new cycle 370-380.

Last aCis updates

Tryskell · 276 · 213366

Offline Tryskell

  • The cute dwarf
  • *
    • Posts: 3.856
Reply #270 on: October 06, 2017, 04:16:34 PM
Changeset 371 (821)

Datatype reorganization, Skill stuff, Misc


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

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


Offline Tryskell

  • The cute dwarf
  • *
    • Posts: 3.856
Reply #271 on: November 05, 2017, 05:05:14 PM
Changeset 372 (846)

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


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

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

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

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

PS : characters.sql loses "last_recom_date" and "char_slot" parameters.
Code: [Select]
<html><body>Triskel:<br>
Triskel does not speak with foolish fellows who do not know their profession!
</body></html>


Offline Tryskell

  • The cute dwarf
  • *
    • Posts: 3.856
Reply #272 on: December 11, 2017, 08:35:34 PM
Changeset 373(887)

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


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

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


Offline Tryskell

  • The cute dwarf
  • *
    • Posts: 3.856
Reply #273 on: January 11, 2018, 07:00:42 AM
Changeset 374 (920)
   
Datatype organization, Geoengine, Clan, Zones, TaskManagers, Misc

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

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

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

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

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

PS :    - clan_data enabled column datatype is edited from enum to tinyint.
      - SSQZone file is dropped (unused), all zones lose "type" parameter.
      - Sailren zone id is changed to 110011, from 110015 (I ordered zones using L2OFF areadata.txt). Ant Queen && Orfen boss zones are deleted. Scripts are edited to reflect the change.
      - The 3 animation bugs (archer, cancel skill, autoattack) come from rev 338 (exist since 2015). Consider to throw some stones to Hasha.
      - if you use a live server, consider to redesign items.sql table.
« Last Edit: January 11, 2018, 02:29:45 PM by Tryskell »
Code: [Select]
<html><body>Triskel:<br>
Triskel does not speak with foolish fellows who do not know their profession!
</body></html>


Offline Tryskell

  • The cute dwarf
  • *
    • Posts: 3.856
Reply #274 on: October 07, 2018, 01:01:46 AM
Changeset 375 (958)

AIs, Datatype organization, Misc


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

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

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


Offline Tryskell

  • The cute dwarf
  • *
    • Posts: 3.856
Reply #275 on: November 10, 2018, 07:36:55 PM
Changeset 376 (990)

PetitionManager, "Chaos time" system, Loot protection, Doors / Walls, Misc


PetitionManager
   - Creation of the package model.petition to hold inner classes of PetitionManager. Move PetitionManager to data.manager.
   - HashMap > ConcurrentHashMap to avoid CMEs.
   - Generic cleanup on all those classes.

"Chaos time" system.
   - RBs are affected by chaos time, for the following rule : 20% luck to change target every 1m (set on the same task than "return by teleport to spawn" behavior).
   - RBs minions got 33% luck to change target, tested every 1m (set on the same task than their RB to avoid pointless objects).
   - I didn't see specific/general rules for GrandBosses regarding chaos system. There isn't a single method call RandomizeAttackDesire() on those scripts. The behavior is entirely dropped. Scripts would be eventually edited to reflect this change.
   This little rework will fix those issues :
      - Divide between 6 to 10 the amount of target switch.
      - The random aspect to choose the next target is now really random.
      - Slight improvement, as no action is done if the same target is chosen.
      - The logic between all conditions is normally correctly handled.
      
Loot protection
   - Improvement of logic behind the main damager dealer acquisition :
      - Main damage dealer isn't edited into ItemInstance.create anymore, it is now done way before to avoid to process it on every item creation.
      - "First command channel leader" as "master looter" is now also taken into consideration on custom config AUTO_LOOT.
      - setDropProtection is moved out of ItemInstance.create, into the single usage (Attackable#dropItem) to avoid pointless casting.
   - Drop the single occurence of doItemDrop(Creature), cleanup unused parameters for 2 other methods.
   - Fix the loot protection for RBs. Regular player rules apply on them. No party thing.
   
Doors / Walls
   - Doors HPs are visible by anyone in sieges. Ty TigVecc for report.
   - Doors/walls are anew attackable by player skills upon a castle siege progress, but deal 0 damage (cosmetic edit). Ty TigVecc for report.
   - Missing CTRL (forced attack) behavior for Doors/Walls is added.

Misc
   - Don't clear Lists on Harvest/Sweep while they are still processed, to avoid ConcurrentException - let onSpawn() handles the cleaning.
   - Implemented retail player spawn locations system. Ty vampir for the hint.
   - Desire intention can't be null anymore, to avoid NPEs (2 scenarios with _nextIntention). Ty Sahar.
   - Fix the Exception when players are riding Striders with GM Haste on and disconnect. Merge stopAllTimers() to the single-used location. Ty Sahar.
   - Add back the food task on //ride, since a simple //kill and //revive generate a food task, making it looks like an "issue" while it was a "GM feature".
   - Fix Wyvern mounted players, which got their attack speed set to 300 (static) and 150 if Wyvern is hungry. Fix indirectly the single Wyvern skill.
   - Addition of "Food for Wyvern" into the GM shop.
   - Fix Q027. Ty zarie.
   - Fix Q218 quest logic behind Talin pieces acquisition. Ty Nophaie for report.
   - Tweak calcMagicSuccess in order low level skills can affect targets (base calculated on a 30 levels difference).
   - Fix Blacksmith of Mammon - Unseal/Reseal. Ty zarie.
   - Ban/kick actions don't close the client anymore, only the logout action does it. Drop secondary logout() method.
   - Fix any Plando-like creature (throwing spears issue).
   - EffectTargetMe fix after previous Desire edit (any aggression skill).
   - Retail /clanpenalty implementation. Ty Caparso for report.
   - Fast fix for Summon PC / AV - Teleport (Portas, Flash of Splendor,...).
   - "Kailu Balu" Z spawn fix.
   - Few mini cleanups :
      - _isRaid is dropped from Creature.
      - Few lambdas use.
      - Timestamp class is moved out of Player class, to model.holder package.
Code: [Select]
<html><body>Triskel:<br>
Triskel does not speak with foolish fellows who do not know their profession!
</body></html>