Информация о файле
Диффка для исходников aCis, версия обновления 363
[spoiler=Что нового в этой версии?]
Benom, Castles, Castle Manor, Event listeners, Sieges, Seven Signs, Inventories, Misc
Benom
- Addition of Benom script.
Castles
- CastleManager cleanup by svipben. Castles are hold on a Map, the key being castleId.
- Castle doormen "busy" HTM is shared among all instances (39 HTMs dropped).
- Drop _siegeRegistrationEndDate. The registration end time is now directly calculated from siege date (siege date - 1 day). It could generate issues if you didn't edit both times. regTimeEnd dissapears from castle.sql.
- Static informations are now loaded from castles.xml (circlet id, related tickets, related NPCs, artifact id) and have been unhardcoded.
- Create MercenaryTicket model, holding ticket infos. Each Castle got its own List of static tickets.
- NPC getCastle() is entirely cleaned up and generated from castles.xml.
- Castle model must be generated from a castle id and castle name.
- Drop entirely castle index logic wherever it was used (replaced by castleId logic).
- Move removeCirclet logic from CastleManager to Castle.
- Avoid to generate pointless integers for each L2WyvernManager.
- Add retail HTMs and core logic for Mercenary Managers. Introduce Seven Signs buylists (show different output depending who is currently owning the Seal of Strife).
- Castle entity rework :
- now holds Set<ItemInstance> _droppedTickets (before held by MercTicketManager).
- now holds int _circletId (before held by CastleManager).
- now holds List<Integer> _relatedNpcIds (before was generated on the fly using weird castle index and distance check).
- now holds List<MercenaryTicket> _tickets (before held by MercTicketManager on multiple splitted static arrays ; which weren't even holding Seven Signs state).
- now holds List<L2Npc> _siegeGuards (before held by MercTicketManager).
- Artifact is now linked by id, and not by instance.
- Dropped tickets are now processed by ItemsOnGroundTaskManager.
Castle Manor
- L2Manor (seeds.xml parsing) is merged with CastleManorManager. Castles related procure/crop lists are moved to CastleManorManager aswell (easier to handle database storage that way).
- The different internal classes are now moved into model.manor package.
- Addition of ManorMode enum.
- CastleManorManager follows latest L2J for the writing style.
- Complete ExShowCropInfo, ExShowCropSetting, ExShowManorDefaultInfo, ExShowSeedInfo, RequestSetSeed packets.
- Delete 6 admincommands related to manor. Keep only //manor, based on latest L2J. Incorporate //manor into game_menu.htm.
- Fix seed/harvest issues.
- CastleUpdater is dropped. The automatic saving is now handled on CastleManorManager (save manor states every 2h). No more alternative saving Config.
Event listeners
- Addition of an event layer for sieges addSiegeNotify(castleId). Rework the system to handle siege status with an Enum, under SiegeStatus (which drops 2 booleans).
- Item listener is now lazy initialized (as it was used for a single item until now, which avoid to generate 6k empty lists for nothing).
Sieges
- Teleport system during siege is entirely redone and fixed. All ppl are moved to second closest town, no matter what.
- Drop SiegeManager and split content between castle entity initialization, Config, CastleManager. getSieges() method is dropped, use getCastles() / getSiege on a for loop to get them.
- When a Life Control or Flame Control Tower is destroyed, a little, not-attackable version of it spawns.
- Add 2 SystemMessage related to sieges (when all life controls are destroyed, and when you try to use L2Doormen open/close doors function when castle is being sieged).
- Add Ressurection siege conditions (can't ress if not participant to a siege, if attacker hasn't a flag or if defender hasn't anymore Life Crystals).
Seven Signs
- Introduce following Enums : CabalType, SealType, PeriodType. Those enums are 'improved versions' and hold more infos (which avoid few static methods).
- Due to previous change, all seven signs related tables must be edited.
- Complete cleanup, which avoids sometimes 15-18 .get() calls and avoid String operations (notably on cabal type).
Inventories
- Drop Warehouse abstract layer, and slight cleanup on Inventories.
- Creation of ItemState Enum to enforce item related modifications.
- Replace ItemContainer CopyOnWriteArrayList for ConcurrentSkipListSet (because of terrible performance on write).
- Order items (avoid the items jump on inventories), based on inventory's item addition (similar to L2OFF ; I didn't see other rule). We use an unused ItemInstance variable to store it, _time.
- Edit items.sql to optimize datatypes. Drop useless column time_of_use.
- Drop ItemInstance.changeCountWithoutTrace (single use).
- Drop L2PcInstance._arrowItem (no uses).
- Cleanup L2PcInstance.reduceArrowCount (probably can be replaced entirely by a simple destroyItem) && checkAndEquipArrows.
Misc
- Due to mercenary tickets handling edition, ItemsOnGroundTaskManager has to be mandatory, so SaveDroppedItem config is now dropped to avoid admin "lack of brain" issue. All timers and configs are still reachable.
- Drop StartingAdena config (value was wrong, and it can be handle with another config).
- Edit default GC type for CMS, which avoid lag spikes.
- Fix pet gain system (wolf, sin eater, etc). Ty Erlandys for the complete fix.
- Drop deprecated KnownListUpdateInterval config, ty SweeTs for reminder.
- Cleanup L2PcInstance.storeEffect() - ty svipben.
- getName() / getTitle()
- Headquarters name/title follows L2OFF. Ty RooT for fix.
- isCustomNpc() approach is given up. We rely on templates to feed name/title, but current name/title can be changed (which fixes changename admincommand).
- changename is merged with setname. Both changename and changename_menu commands are dropped. You can now settitle on L2Npc (it is temporary, similar to setname).
- HennaTable StatsSet is re-used (avoid to generate 180 HashMaps).
- MapRegionTable uses getInstance() logic (that's the point of singleton).
- Edit TownZone "taxById" variable to "castleId", which is friendlier to understand.
- Merge summon conditions SiegeManager.checkIfOkToSummon && SevenSigns.checkSummonConditions in L2PcInstance.checkUseMagicConditions (single use).
- L2PcInstance.isCastleLord is cleaned up (compare castle ids directly, not godamn Castle entities).
- Cleanup GatekeeperSpirit script.
- Fix NPE on ExListPartyMatchingWaitingRoom, ty sahar for report.
- //create_set admincommand is extended :
- armorsets.xml now hold set name. ArmorSetsTable use StatsSet to feed ArmorSet objects.
- A new panel is generated with existing sets (because good luck to remember chestId).
- ArmorSet model is cleaned up.
- CastleManorManager seeds parsing is slightly edited (StatsSet is reused).
- Clicking on "Item" button simply popup itemcreation.htm.
- Duel system : partymatch system is ended for any players (was written as TODO since Duel rework).
- Edit checkEffectRangeInsidePeaceZone x, y, z parameters for Location.
- Move and cleanup signet cast condition from L2Character to L2PcInstance.checkDoCastConditions.
PS : castle guards spawn (from neutral castle) system isn't yet processed. Don't report it.
PS : due to heavy changes, it is STRONGLY adviced to make a clean installation of tables if you got no clue about what you are doing.
Due to the HUGE amount of edited engines (Seven Signs, Manor, Castles, Sieges,...), consider it as a part I, even if it's not finalized. I need your reviews to complete the part II. This changeset, in term of coding, worth 3 to 4 regular revisions. Unfortunately, as everything depends of everything, it couldn't be done of another mean.
Some things have been voluntarly broken - I think notably about NPC guards, but most shouldn't. Consider to report everything. Due to the amount of code, I couldn't test all, and didn't test Benom, Seven Signs && Manor.
Что нового в версии 01/01/17 12:43 Просмотр изменений
Размещено
Для этой версии изменений нет.