aCis


Cycle 380-389 focus : movement refactor, quests end. Changeset 389 (1660) is up ! AI rework, Organization, Bugfixes

Last aCis updates

Tryskell · 289 · 260846

Offline Tryskell

  • The cute dwarf
  • *
    • Posts: 4.049
    • Cookies: +68/-2
Reply #285 on: January 02, 2020, 05:41:34 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.

Scripts
   - 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.
      
Movement
   - 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.

Bugfixes
   - 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.
   
Organization
   - 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.
« Last Edit: January 05, 2020, 12:25:52 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: 4.049
    • Cookies: +68/-2
Reply #286 on: January 07, 2020, 06:36:43 PM
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.

Organization
   - 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.
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: 4.049
    • Cookies: +68/-2
Reply #287 on: January 17, 2020, 09:44:42 PM
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.

PartyMatching
   Organization
      - Merge PartyMatchWaitingList and PartyMatchRoomList into PartyMatchRoomManager.
      - Move PartyMatchRoom on model.group, make it use AbstractGroup.
      - Delete package model.partymatching.
      - Related packets are cleaned. Methods are generated on appropriated classes to make it cleaner.
   Bugfixes
      - 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.

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

Bugfixes
   - 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.
   
Organization
   - 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.
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: 4.049
    • Cookies: +68/-2
Reply #288 on: March 07, 2020, 04:53:06 PM
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 AiEventType : FINISHED_ATTACK_BOW, BOW_ATTACK_REUSED, OWNER_ATTACKED.
   - 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.
   
Organization
   - 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 gameserver.data 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.
      
Bugfixes
   - 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.
Code: [Select]
<html><body>Triskel:<br>
Triskel does not speak with foolish fellows who do not know their profession!
</body></html>