aCis

PUBLIC SECTION => Announcements => Topic started by: Tryskell on January 04, 2011, 10:46:15 PM

Title: Last aCis updates
Post by: Tryskell on January 04, 2011, 10:46:15 PM
It's stupid, I update my "marketing" thread on MxC saying updates, but I never warn you on my own forum, dear users  :).

This topic will be updated to each commit, with a copy/paste of changeset. Like that if you're lazy to check timeline, you just have to jump here.

It begins in revision 28, for others, you got timeline... Lazy asses.
Title: Re: Last aCis updates
Post by: Tryskell on January 04, 2011, 10:46:49 PM
Changeset 28

AccessLevel rework



Others changes :


I have to warn you : many "links" to commands are bugged. As I use the Freya SQLs, and as many commands have been modified between this time and IL, some commands will be shown as "non existing handler for command admin_xxxxx". I wait the commands refactor to care about (and the html part need a total relook too).

So make a single error thread in forum, & report all missing commands to help all users.
Title: Re: Last aCis updates
Post by: Tryskell on January 06, 2011, 12:12:04 AM
Changeset 29

CharacterCreate packet rework.
Title: Re: Last aCis updates
Post by: Tryskell on January 06, 2011, 12:12:52 AM
Changeset 30

Faenor & events deletion

Who uses that anyway ? Delete both event engine and Faenor (compiledScript like Valentines.zip) stuff. You're now free to put any event engine you like.

Report on forum if anything occurs.
Title: Re: Last aCis updates
Post by: Tryskell on January 06, 2011, 01:11:35 AM
Changeset 31

Logs rework

Title: Re: Last aCis updates
Post by: Tryskell on January 07, 2011, 04:51:52 AM
Changeset 32

Trade commit

Fix a lot of things, add many checks, "freeze" many data. Thx to Chr.Trance about scam exploit report & some parts of fix code.

You have to test Trade, Buy & Sell shop. Do a lot of tests, as code is "semi-experimental". Be aware about both seller and buyer amount of adenas. I did a couple of tests and normally all work fine, but still, test :>.

The maximum amount in a trade is 1,999,999,999. It takes in consideration both price and amount. You can't sell 1 item for 2kkk, as you can't sell 4 items 500kk each, etc.
Title: Re: Last aCis updates
Post by: Tryskell on January 08, 2011, 07:51:10 PM
Changeset 33

ChatHandlers refactor

As PartyMatching doesn't move '-_- (no one help with those packets), I commit a little one.



About L2W protection, if it isn't working, give me IL L2W commands. I based my hope they didn't change it from IL to Freya. Share section is your friend else.
Title: Re: Last aCis updates
Post by: Tryskell on January 10, 2011, 07:23:52 AM
Changeset 34/35

L2SkillType / L2EffectType refactor

Both are needed in future. Check changesets if you want, there shouldn't have nothing to test about.
Title: Re: Last aCis updates
Post by: Tryskell on January 10, 2011, 06:06:47 PM
Changeset 36

BaseStats add


Others


Title: Re: Last aCis updates
Post by: Tryskell on January 10, 2011, 08:45:04 PM
Changeset 37

Zones updates (692 overall)



Title: Re: Last aCis updates
Post by: Tryskell on January 18, 2011, 06:56:21 AM
Changeset 38 / 39

Augmentation packets rework, Max lvl fix

Title: Re: Last aCis updates
Post by: Tryskell on January 26, 2011, 05:32:13 PM
Changeset 40

Skill refactor, part 1 on... Dunno

Sooo, here it is : skills refactor.

Where to begin... Well, I won't do a list of what is it corrected. Just understand it's a 13k patch line (without counting datapack, modifying AIs, L2Character, L2Skill in their globality). Let's jump directly to issues I know, and what you haven't to report.



Now the good part :


I have to remember to you each XML have to be rewritten, and items have to be refactored (so others xmls...). Topic about missing skill or error reported in this comment will be eradicated from forum without any type of warning.

Old XMLs skills have to been deleted, and replaced by the 4 shared in this commit. Two SQLs tables have to be deleted aswell and replaced with new ones. There aren't issues to delete them.

If you find errors about :

Title: Re: Last aCis updates
Post by: Tryskell on January 28, 2011, 07:35:04 PM
Changeset 41

Some random corrections

Ty SweeTs for skills reports, I wait more :).


Title: Re: Last aCis updates
Post by: Tryskell on January 30, 2011, 01:18:52 AM
Changeset 42


Changeset 43


I just saw some effects like Sting still continue to show a "has resisted your" blank message. Don't cry on forum then :P.[/list]
Title: Re: Last aCis updates
Post by: Tryskell on February 02, 2011, 05:05:28 PM
Changeset 44

Some reworks :

    * CharTemplate? rework (and many files related to race/class)
    * Classmaster rework (new configs)
          o give available skills
          o give noblesse
          o do the old stuff he did before but better :D
    * VillageMaster? rework
          o give now the possibility to rename pledges
          o all subclass options are reworked
          o one VillageMaster? as "core" of multiple VillageMaster? instances (to handle class/race restrictions).


DP side :

    * NPC.sql to drop and change
    * many htm to put in good place.


The classmaster have been verified, about subclass I'm not in fond of admin commands so I didn't know how to give quests items (lol), so couldn't test (arg).

Htm have been c/ped from Freya and put in form, so shouldn't have problem.

Didn't test pledges names, but should work, if I didn't miss anything database sided.
Title: Re: Last aCis updates
Post by: Tryskell on February 03, 2011, 04:26:13 PM
Changeset 45

   Refactor Enterworld
       * deleted customs (announce hero & castle lords at login)
       * migrated some infos in others packets / initializing stuff (pledges, sethero, setonlinestatus, signssky)
       * added seal of strife effect (buff / debuff according to winner/loser side)

   Deleted 2 useless tables. You're right, they were both useless + same content.

   Deleted the "ProtectionIP", basically show if you were connecting from another IP. Sort of useless stuff as IPs are 90% time dynamics, so when you reboot your inet box you got an alert message "beware your last IP wasn't the same"...

   Report if any error at login occurs.
Title: Re: Last aCis updates
Post by: Tryskell on February 07, 2011, 02:35:30 AM
Changeset 46

I will do short, cause current comment have been deleted and... Fock eclipse.

   Friends && blocklist refactor
      - character_friends.sql have been updated. The relation column equals 0 for friend, 1 for blocked.
      - blocklist is now stored in database, before it wasn't.
      - a blocked player can't invite or trade you, and you can't hear him from any chat.
      - The "Chat with Friends" option have been updated. When you add or remove a friend, it updates in real time.
      - Many checks && fixes have been added to /friendinvite && /frienddel packets.
      - Friendlist loading is now only located to L2PcInstance, operations are made on the fastlist when needed. Before it was messy.

   SetReputation refactor (from L2Clan)
      - "splitted" in 2 options, TakeReputation and AddReputation. SetReputation got now private access.
      - simplier to use && to read.

   L2PcInstance
      - refactored the code about clan wars in doDie method (corrected the number of added/removed reputation points).
      - subclasses are now locked during the process. No more exploits possible on it. You can't delog/restart during the process.
      - many fixes for classes (autoskilllearn if config, send of packet for refresh partyicon, etc)

   Packets rework
      - Many concerned "friends" packets have been renamed && refactored to L2J actual names.
      - Logout && RequestRestart packets have been totally refactored to fit with subclass lock.
      - setToLocation serverpacket dropped, we won't miss it.
      - SystemMessage corrected for addPcName. This is the same problem for bugged skills messages.
      - /partyinvite have new checks &&  more retail messages, depending of the situation.
      - RestartResponse serverpacket is now static type.

Changeset 47

Deletion of stuffs dating of Noe's Arch (or even older, depending of Coriolis force on the Newton's apple).

Nothing to hurt a dancing cow in the moonlight of a hot but wet 13 July night, but still, it deletes a crappy useless stuff in gameserver loading. Happy ? Yes, you are.

Gameserver and GameStatusThread (but who use telnet ?) are affected.

And tell me if I missed removing classes from those lost && useless things. They're not even used between themselves...
Title: Re: Last aCis updates
Post by: Tryskell on February 07, 2011, 09:49:42 AM
Changeset 48

Libraries
   - updated mysql-connector lib from 5.0.7 to 5.1.4 (must change both for ls and gs, you know the music...);

Configs
   - deletion of nondroppablelist config, which wasn't used (FighterBoss, you missed it I think :D);
   - others droppable lists (for chaotic players / pets) are kept and improved (use of arrays);
   
L2PcInstance
   - setKarma and broadcastKarma now use collections in order to be broadcasted.
   - "Your Karma has been changed to" message extended (not only for admin command use now);
   - onDieDropItem() method improved (should be same rule than before);
   - get/setCharmOfCourage dropped. Effect is handled directly from the L2EffectType, so it was old ruins from past empire;
   
Packets / Misc
   - Boolean -> boolean. Blablabla;
   - Corrected an self-added bug (my bad arg), which made GMs buggy shift-clicking on a corpse-like player. It was boring, so I revert it. Strange than no one reported it, it's common action on test servers w_w;
   
This commit was - at first - to find an issue to SweeTs report bug about pk drops. But it seems it's another big rework which await me, as knowlist need a full update due to my rev 22 L2World refactor. Well, you got some things corrected so don't cry.
Title: Re: Last aCis updates
Post by: Tryskell on February 09, 2011, 03:53:05 AM
Changeset 49

Organization of templates && - complete - dyes refactor.

Okay, it's seems huge but it isn't.
Different templates types have been simply organized in folders, to make it clean. This is 90% of modified files.

The real work comes with hennas refactor (known as dyes or symbols) :
   - Added 2 missing retail messages ;
   - Fixed an exploit when you add a symbol ;
   - Added the real way to remove dyes (added 3 clientpackets && 2 serverpackets) instead of the html way ;
   - Optimized hennaTable && hennaTreeTable loadings.

An know issue still exists, but it's not only for this add : when you remove dyes, 5 go back in inventory. They actually REALLY go in inventory, but there a missing inventory refresh on addItem (the academy circlet given at kickout from clan when 2nd class change occurs should actually have the same problem). You can refresh inventory buying an item from a shop as example. If you buy 5 others dyes, it will show correctly 10 then.

Consider testing symbols and low symbols for pre-40 too, and report errors. About "text going out of window" && "text isn't the good one for my dye" issue, this is NOT a core bug, but client side. Blame NC$oft to forget to check what they do.
Title: Re: Last aCis updates
Post by: Tryskell on February 09, 2011, 08:34:54 PM
Changeset 50

50th commit guys :D.

This one is special "helpers reports" :). I want to thank all people which have/will contribute to the project. This 50th commit is a "pot-pourri" of many problems you reported. The right people will recognize themselves, I hope :).

Please remember reports you do are NEVER out of my mind. I just got priorities, that's all. All will be corrected soon or later.

Skills
   - TargetMe effect (aggro type skills) got 2side effects : if victim haven't target, victim targets aggroer, and the second aggro will make victim attacks aggroer. If victim de-targets the aggroer, the next will only retarget aggroer.
   - "Incorrect items count" message + a little fix about name of used skills. Affects all consumables type skills (quiver arrow, blabla).
   - Wrath shows now the generic damage system message for the victim.
   - Toggles are now usable even sit. It's stupid to stand up to remove Vicious Stance.
   - Skillhandlers SummonFriend, TakeCastle && StrSiegeAssault got now cast conditions working, and are refactored.
   
SystemMessages
   - SystemMessageId refactor, using c/p of Hellbound (all is organized and seems to be all right).
   - Added 5 messages about sieges (cast on artifact, artifact taken, loose/add of reputation points through sieges && change of castle owner).
   
Sieges
   - updateClanReputation() method "use" have been moved from removeOwner() (castle.java) to endSiege() (siege.java).
   
Ty again for support, and long life to aCis ! :)
Title: Re: Last aCis updates
Post by: Tryskell on February 10, 2011, 07:06:53 PM
Changeset 51

Debugged animation/sound effect of dropped items, and surely more than that (PK drops must work now, only a supposition but it's normal to be related). Affects all dropMe effects.

This bug have been first introduced with the L2World refactor (rev 22 if I remember well). Unfortunately to make the whole mecanism working, I need to completely refactor knownlists. The good new is I got the "howto scout manual" from L2J revisions (aka, the precise revision refactoring knownlist). The bad part is I don't want to begin another big refactor (and even if it isn't as big as skills, it's still a lot of work) before ending skills one.

So I decided to revert some parts of my previous work, to make it less buggy and don't melt possible bugs between them.

Need confirmation about player's drops when you die as a PK. But as I already said, it should be related.
Title: Re: Last aCis updates
Post by: Tryskell on February 11, 2011, 10:54:28 AM
Changeset 52

Organisation & fixes || affects many files again.

Configs
   - AutoLearnSkills set to False by default

Skills
   - Removed 2 useless craps from L2Skill, getCanLearn() && canTeachBy().

Organisation
   - Moved L2Character, L2Summon, L2Attackable, L2Npc, L2Playable from previous locations to "actor" folder.
   - Renamed L2PlayableInstance to L2Playable, and L2NpcInstance to L2Npc.
   - Renamed L2FolkInstance to L2NpcInstance.

So if you followed all, before it was "L2NpcInstance & L2FolkInstance", now it's "L2Npc & L2NpcInstance".

Instances
   - drop of L2BlacksmithInstance, not used.
   - refactor of L2NpcInstance (previously named L2FolkInstance) using StringBuild instead of TextBuilder.
   
Clan traders
   - fixed multisell preview for those characters, ty rebelstrike for report and Chr.Trance for initial commit.
Title: Re: Last aCis updates
Post by: Tryskell on February 15, 2011, 06:56:14 PM
Changeset 53

Refactor & fixes.

Title: Re: Last aCis updates
Post by: Tryskell on February 18, 2011, 12:59:19 PM
Changeset 54

Skills - part II

* Signets engine - as you perhaps don't know, signets use others skills. So it works (cast) without working (effect) atm.
* Signets don't use BattleForce/SpellForce? because of Freya implementation. Anyway, those skills (BF/SF) will come at 5xxx... I will correct at time.
* Dodge core side. Works for blows, charges skills and PDAM skills (minus bows types skills). This last implementation is self-made, so need to test.
* Mirage uses skill 5xxx in order to trigger. So like signets, it works without working.
* Meditation core side (it's from hellbound, at Freya you're just paralyzed...).
* PlayerState? olympiad added, used to verify if a skill is allowed in olympiad.

Config

* suppression of AltGameViewNpc?.

Packets

* renamed MagicSkillUser? -> MagcSkillUse?.
Title: Re: Last aCis updates
Post by: Tryskell on February 19, 2011, 03:55:23 PM
Changeset 55

Skills, part III

You will be happy with this one :) Items restriction is finally working. You need to replace armor and & weapon tables, plus some weapons XMLs. The only missing part to make all skills work is more or less XMLs now.

Items restriction

* retained formula is a mix between old and new coding style. This is the best waiting items refactor, cause skills won't be affected in future.
* 7 errors are still shown, and around 200 weapons aren't loaded. It's due to the fact skills are missing (as SAs use skills). Wait skills are rewritten.


Skills engine

* TARGET_PARTY_CLAN have been deleted, which got interest only postIL (OL skills used for both clans/party members, not in IL);
* TARGET_AREA_SUMMON activated, core side for mass surrenders of summons.
* some sleeping codes awaken due to previous revisions.
Title: Re: Last aCis updates
Post by: Tryskell on February 21, 2011, 01:40:21 AM
Changeset 56

L2Spawn / SpawnTable? refactor.

I think this is the end of this error:  http://acis.i-live.eu/index.php?topic=9.0

SpawnTable?
* The Map/FastMap use have been changed for a FastSet?.
* The id and getTemplate of L2Spawns have been dropped. It need a refresh of your "spawnlist" table.

ItemHandlers?

* Use of TIntObjectHashMap instead of MapTree?.
* The summonsItems type (hatchling, X-mas trees, wolves,...) have been refactored. The cast is 5 seconds, you're considered casting, and many checks + improvements have been made.
* no more errors saying "the object exists already in OID map".

spawnlist.sql

* 3 columns have been dropped (id, randomx and randomy).
* table's format have been improved.
Title: Re: Last aCis updates
Post by: Tryskell on February 22, 2011, 12:23:40 AM
Changeset 57

GeoEngine / PathFinding refactor

Needed refactor ended :). Works wonderful using Stazis.

Well, I suppose all know what is geodata. So I explain things you surely don't know :
   - GeoEngine load geodata files, when PathFinding load pathnodes.
   - The way to calcule pathnodes can be made differently :
      - using GeoPathFinding method, which load pathnodes (need geodata + pathnodes then);
      - using CellPathFinding method, which uses geodata data and calculate "on the fly".

Both ways got pros/cons, explained on the ".properties".

From those last informations and the comments of .properties, you shouldn't fail activating geodata :). Anyway, here are some good settings.

For both configs : geodata = 2, ForceGeodata = True, CoordSynchronize = 2
   - using geodata w/o pathnodes : CellPathfind = True. For fun, put "DebugPath = True" to see if it's works, or to check your geodata doesn't sux. You have to make a collision to activate it (wall, tree, whatever).
   - using geodata && pathnodes : CellPathfind = False.
   
Be clever and read godamn comments. I splitted options according to their uses.

---------------------

Added to that:
   - I debugged multiple clicks on a player, which made you stuck.
   - moved 3 options concerning IAs and not GeoData from "server" to "npcs" config file.
Title: Re: Last aCis updates
Post by: Tryskell on February 22, 2011, 09:10:54 PM
Changeset 58

Spring cleaning + misc refactors.

Well, ok, it's not yet the spring, but hey, I decide if it is spring when I want !

Util cleaning
   - Well, before L2World refactor GS was using stuff, and now it doesn't anymore. Lol.
   - Rnd refactor.

Config cleaning
   - AGAIN ? Yeah, I will leech out all heretic configs :D.
   - Deleted "not used anymore" IdFactory options, put survivors in server.properties. Burned IdFactory.properties.
   - Deleted the assert config, true by default from now.
   
ItemsOnGround refactor
   - some cleaning, some improvements.
   
All others files (mainly L2ItemInstance, preparing the next battlefield)
   - typos
   
I need review on ItemsOnGroundManager mainly.
Title: Re: Last aCis updates
Post by: Tryskell on March 05, 2011, 02:51:49 PM
Changeset 60

Skills refactor, part IV

L2Summon / Cubics refactor.

    * Manage duration of cubics, casting ability for summons (last haven't been tested).
    * Refactored formulas. Use of activationtime/chance.
    * Some stats have migrated from L2Skill to L2SkillSummon

AttackStanceManager? refactor

    * Debugged players stuck in attack stance.
    * Cubics use attack stance as activator.
    * Summons && players attack stances are splitted.


Skills formulas

    * Use of Freya resistances way. Will be easier to complete skills.
    * Drop of many templates (all baseVuln), which were put to 0 by default and never used. It still exists on Freya, and currently it's useless... From IL to Freya.


DP side

    * correction of summons, L2Npc > L2Pet
    * added all ways to enchant summons. Dwarves powa.
    * Refactored existing skills to use Freya resistance/vulnerability way.
    * Corrected many skills, which haven't overHit or baseCritical ability in IL. ToD is now IL way (caster haven't lose of 90% CP, only 1,2k HPs).
    * Add of 1200-1299.


Warning : Seeds cast (fire/water/wind) are messy. Main fault is because those skills have seen their use changed from IL to Freya, and I didn't bother at first time. I reverted back 99% of old code about seeds, but still the cast is buggy.

Warning : cubics skills are around 41xx-43XX. They currently aren't added, but have been tested. Cubic heal is pretty oped :o.
Title: Re: Last aCis updates
Post by: Tryskell on March 07, 2011, 04:11:08 PM
Changeset 61

Shutdown refactor, PunishLevel?, adminCommands.

Shutdown refactor

PunishLevel?

adminCommands

Misc :
Title: Re: Last aCis updates
Post by: Tryskell on March 18, 2011, 12:07:36 AM
Changeset 62

Hell's Refactdoom.

Fishing refactor
- use of ZoneManager (was using FishingZoneManager for backwards compatibility);
- many improvements (add of sounds, geodata checks,...) and typos;

MercTicketManager refactor
- add of the proximity formula for tickets (have to been ameliorated, but it works);
- all retail messages for tickets;
- some improvements (use of iterator, etc);

Skills
- Add of 6 XMLs and respective core changes (4 new conditions);
- Add of Cancel skillhandler (Cancellation, touch of death, warrior/mage banes,...);
- 3/5 cubics are working (the 2 others are only XML issue);
- correction of the CHARGEDAM formula, which is hardly bugged on Freya (topic on L2J server : http://www.l2jserver.com/forum/viewtopic.php?f=80&t=21356). It still need correction as infos come with time;
- Add of creatures natural resistances formula. It's calculated using weakness formula aswell;
- NPCs stats influences their overall stats (HPs, accuracy, critical, atkspd, etc);

Admins commands
- deleted 50+ freya commands (event engine, elementals, ride wolves...);
- corrected addlevel / setlevel;
- added "zone_visual" command, which is very useful;
- refactored all "reload" commands type to work on the same pattern. Basically 12 commands can now be typed "//reload xxxx";
- deleted some leftovers of rev 61 ("//admin5" and related commands);

GM Panel refactor
- refactored entirely the help system (FAR more simplier);
- reorganized many htm, typos and esthetic;
- drop of all TvT htms left;
- jukebox, emotes, announce HTMs reorganisation;
- deletion of all customs skills in special skills.

SQLs
- deleted all freakin "innodb", "utf-8" and "myISAM" stuff and spring clean on all tables;
- reorganized skills_trees.sql;
- drop of zone.sql (leftover of IL zoneManager ?), which call a "tools" folder update;

Configs
- dropped some not used configs.
- put fishing to "false" by default. As explained in the config file, it needs geodata in rder to work like retail. Else it's buggy.

And many typos corrections.
Title: Re: Last aCis updates
Post by: Tryskell on March 20, 2011, 06:14:38 AM
Changeset 63

AdminCommands && L2Party refactors

L2Party
- Position is now broadcasted using a task, which send position of everyone every 10 seconds. Position code in clientpackets dissapeared;
- Many null checks added, both for party and CommandChannel;
- add of some retail messages (party and CC);
- the update of partyleader icon is now fine;
- the pending invitation formula have been changed. Now, only one invitation can be sent. You have to wait this invitation ends to send another one. Before you could spam invitations, so it was ugly.

AdminTeleport
- added //sendhome && //instant_move (alt+G panel);
- cleaned commands I judged useless (gonorth/south/west, etc). //walk, what a joke command...
- "//teleto" renamed for "//runmod". //runmod port you once, //runmod tele port you anytime, //runmod norm stop the porting state. Why a rename, it's simple : too many commands begins with "//tele" and it's hard to remember them all.

AdminMenu
- drop of 80% of code. All those commands are already existing in another files, and as they are outdated in this one, it's stupid to have same methods twice. So HTMs use updated commands.

HTM admin part
- drop of castles and towns positions HTMs. Only one port for each (to simplify).
- esthetic of many files.
- merge of move.htm & teleports.htm, drop of useless parts.

Misc
- CW karma is now 9999999. I know, I know...
- some packets typos & spring clean.


Changeset 64

1400-1499.xml and core support.
Title: Re: Last aCis updates
Post by: Tryskell on March 24, 2011, 09:51:14 AM
Changeset 65

Xmls, refactors & misc

- Three more XMLs & core support (valakas stuff, EffectRecovery? and <target NpcId?="">).
- You can now //play_sound using packages (try "//play_sound systemmsg_e.char_creation" to understand).
- CrestCache? refactor.
- L2GuardInstance && RaidBossInstance? use a simplier code to return to initial position. No more "anti-exploit" full heal for bosses.
- Added support to mobs which mustn't random move (guards, raids, chests, etc).

Thanks Wdemon for systemmsg sounds initial idea. All will come with time.
Tanks to SweeTs? for XML rework.

----

IMPORTANT : many skills we're doing right now are not used. In fact, an item is supposed to be attached to a skill. An skill can be itself attached to another skill (like active augments skills or signets). L2J IL made it differently, hardcoding skills effects directly on itemhandlers (SoEs? for example). For backward compatibility, I use all old code, but refactor skills the new way.

Once the time of items refactor will come, each item will use its own skill. For the moment all (or near, as some hardcoded code already dissapeared) is supposed to work IL way on this side.

So if you understand all right, some stuff I'm doing actually is pointless until items are refactored. Still, it's a lot of work, and once items are refactored the right way, all should be working. For stuff like SAs and augments, it's already working.
Title: Re: Last aCis updates
Post by: Tryskell on March 27, 2011, 09:06:34 AM
Changeset 66

    Knownlists, AIs, misc

    Well, it fixes a critical issue came around geodata/move refactor. Basically, knownlists (lists which list surrounding objects) were called during move and stop actions. Refactoring geodata, I deleted the move part. So you could only see people/monsters when you stop to run.

    Now knownlists are refreshed using a single task. Knownlists have been refactored aswell.

    Misc part :

    - Some AIs improvements, like guards can now hit invulnerable people (before, they just didn't care).
    - GeoEditor? clean;
    - SiegeManager? uses a singleton;
    - Some cleaning and code move from L2Character to L2PcInstance. Use of Collection when possible.
    - dropMe() refactor + geodata checks.
    - NpcInfo? packet rework.

    - added back engine=myISAM for etcitems.sql. Hope it will stop database installer problems. You have to know this table will disappear in a next future.
    - cleaning the .classpath
Title: Re: Last aCis updates
Post by: Tryskell on March 29, 2011, 06:56:22 AM
Changeset 67

   Doors / StaticObjects? refactors.

   Doors / StaticObjects?
   - optimized and clean both instances and loading tables;
   - added/cleaned shift-clicking panels for both of those instances;
   - doors (from a CH you own) can now be opened like retail;

   XMLs skills
   - corrected 0-99 skills values and some skills behaviors;

   SQLs
   - corrected a critical issue where NPCs templates provoke a 100% client critical error. Ty SweeTs? for report, and FighterBoss? for ollllddd one too. Some NPCs still got a template with 0 run/walk speed (less than 20 NPCs, before 77). Don't try to spawn them, you will got a direct disconnection, and couldn't log back with this character until you cleaned the NPC.

   Misc
   - normally (only suggestion, as it's not a 100% issue) corrected an issue when you try to revive.
   - added missing accept button result for summoning friend action. It couldn't work without.


Changeset 68

2 XMLs and associated core support.

Thx Vrugar for 4100-4199.
Title: Re: Last aCis updates
Post by: Tryskell on March 30, 2011, 09:01:04 PM
Changeset 69

    Cleaned code, optimizations, and 3 XMLs.

    - Deleted WHCacheManager;
    - Cleaned up CrestCache?;
    - Deleted useless class/package;
    - "commons-logging" implementation switched back to "java logging";
    - config + cfg moved to separate source folder;
    - Cleaned useless imports;
    - Cleaned up around 350 warnings;

    Thanks Intrepid for core patch, and ty to DarthVader? for 2/3 XMLs.



Changeset 70

Fix 30 warnings and added back the missing lib.

- 30 warnings fixed, going from "not used variables" to "private -> protected".
- activated the curse raid feature (higher than 9 lvl, blabla). Don't cry for missing skill 4515, it's not done yet.
- added back the .jar deleted on rev 69, sry about it, and ty for fast intervention.
- added back the recommendation system. IL used it as an alternative config, and in my "gogo, deleted them all" frenzy, I deleted what I think it is retail (at very beginning of the project, around rev 10). Currently and from now, player and target are stored in a table, which is cleaned up everyday at 13 (from what I rem lol). So you can't give all your rec to one people relogging everytime.
Title: Re: Last aCis updates
Post by: Tryskell on April 01, 2011, 02:53:42 PM
Changeset 71

Multiple datatables refactors, and corrections.

- Reorganization of many datatables (use of singletons/Trove, load/reload options, some improvements, and many cleaning)
- Fixed a NPE at subclass change option, and added a weight limit (80%) for both add && change subclass options.
- "Fixed" 35-40 warnings.
- Added "//reload door" possibility, and fixed "//reload zone".

More singleton-ations soon :).
Title: Re: Last aCis updates
Post by: Tryskell on April 06, 2011, 09:17:20 PM
Changeset 72

Multiple refactors, RBPoints manager, and more.

Instances refactors
- L2SiegeGuard (easier returnHome() method)
- L2RaidBoss

Refactors
- IDFactory + the different types (Stack / Bitset cleaned, Compaction have been dropped)
- RaidBossManager?;

RaidBossPoints? Manager / Task
- open your Map > "raid" tab is now available, showing you your actual rank, RBs, and point over those RBs.
- system which give a amount of points according to numbers of killed RBs ((RBlvl / 2) +- 5), according to your rank you can earn Reputation points for your clan.
- Task is running every week (monday at 00h10), ranks and overall points are reseted.

Issues / Misc
- corrected typos;
- corrected db cleaning (friendlist), and added the clean of skills' timestamps;
- Subpledge leader is no more using a string, but the objectId. Same for all methods using private map "_members" from L2Clan.
- drop of serverpacket "AllyInfo?", merged in "RequestAllyInfo?" clientpacket + refactor on it.
Title: Re: Last aCis updates
Post by: Sido on April 08, 2011, 04:36:34 PM
Quote from: Tryskell on April 06, 2011, 09:17:20 PM
Changeset 73

- Corrected all possible issues where the total of reputation points wasn't updated.
    - Updated some clan packets.
    - 3 NPEs fixed;
    - Refactored entirely acquireSkillList/acquireSkillInfo;
    - Corrected a missing thing on accessLevel (didn't do problems so far, but better to put as it should be);
    - cleaned the last 8 errors, and 8 warnings (part of warnings were NPEs, and explained stuff);
    - Refactored Hero model.
    - L2FishermanInstance inherits from L2MerchantInstance right now.
    - Deleted the "missing skill : can't store blabla" NPE issue at any character loading (FrequentSkill? wasn't loaded o_o).
    - refactored the WeddingManager?
    - added config for Divine Inspiration spellbooks, and make the original "allow spellbook" config work properly.

    COMMENT :

    I didn't test Hero refactor. Nothing should make you cry, except when the new heroes are named, as it uses a "not-tested-at-all but cleaner" way to unequip then delete all hero stuff from previous heroes. So consider testing this and report if a problem occurs, screenshots appreciated.

    In another way, the wedding manager haven't been tested at all, mainly because I count to delete the voicecommandhandler system, and fusion marriage commands on wedding manager HTMs.
Title: Re: Last aCis updates
Post by: Tryskell on April 10, 2011, 07:46:55 PM
Changeset 74

WeddingManager? refactor, VoicedCommands? deletion.

I decided to delete VoicedCommandHandler?, which was only used for wedding commands (the .commands).

Divorce and GoToLove? are now directly handled by the Wedding manager (id 50007). The config AllowWedding? has to be active to make the instance works. Configs have been reduced to the "strict minimum". The system needs more tests in order to find possible exploits, but from what I think, I made it secure.

If you got ideas of code improvement, or find an error/exploit, post in forum please.

I added too the character_raid_points table in installation setup, my bad.
Title: Re: Last aCis updates
Post by: Tryskell on April 19, 2011, 11:33:25 PM
Changeset 80

2 XMLs + core support.



Changeset 81

2 others XMLs, ty DarthVader? (but take care about element next time :D).
Title: Re: Last aCis updates
Post by: Tryskell on April 25, 2011, 12:11:20 AM
Changeset 85

This is... SpartaCis !

Status refactor
   - All status have been corrected, and 2 have been added (Folk and Attackable).
   - Noblesse is fixed (only a visual bug left, but I wait next rev to correct)

Pets
   - PetInfo packet refactor (many useful infos added, but reachable only in a next rev :D)
   - karma/pvpflag stuff have been entirely dropped (it uses owner values)

Entire Death refactor (Ask that to Chuck Norris, he can't)
   - isKilledAlready => isDead
   - isFakeDead moved to L2PcInstance
   - correct //res command (from what I tested), and add anti-exploits.

setCurrentHp refactor
   - you can selfDoT using meditation now (tyrant toggle bug + meditation which break the meditation is corrected)
   - when you're invul, selfDoT and selfHP consumption skills still damage you.

Misc
   - NPCWalker cleaning
   - killByDOT implementation (only one skill uses it)
   - L2Character doAttack() method : your attack is canceled if your target enters in peace zone, can't attack with wyvern on melee)
   - typos : isImobilised )> isImmobilized, and others
   - corrected isHeroItem() method (any non droppable items (Manacle Penitent and such) were considered as hero items...)
   - getEquipSlot -> getLocationSlot.
   - doors can't be DoT anymore.
   - L2Npc canInteract() method improved.
   - Mobs can anew launch skills, but their animation is a little broken.
   
WARNING : I tested as much as I can, but it needs a shitload of tests in order to see if I didn't mess something. Changes are heavy, and touch general ingame behavior.
Title: Re: Last aCis updates
Post by: Tryskell on April 25, 2011, 10:13:00 AM
Changeset 86

Couple of fix, L2Npc shift-click refactor

   - Renamed MagicEffectsIcons packet -> AbnormalStatusUpdate
   - Corrected the skills bar refresh at death (when buffs are retained for example).
   - Beginning of L2Shift click refactor : added 4 news commands to add/remove skills to a Npc template (change ALL current monsters using this template), improved droplist view/add (added color system, ty to Vampir from MxC for original idea). The shoplists stuff will be refactored after a L2TradeItem refactor, for the moment it uses old stuff.
Title: Re: Last aCis updates
Post by: Tryskell on April 25, 2011, 09:55:21 PM
Changeset 87

I believe I can fly + 1 xml

FlyToLocation? implementation.
core support for 5000-5099, ty DarthVader? for the good work on XML part.

Title: Re: Last aCis updates
Post by: Tryskell on April 28, 2011, 08:11:47 PM
Changeset 88 was a single XML :]

----

Changeset 89

   Multiple fixes.

   IA
   - Correct problem concerning the broken animation on NPC cast skills.
   - correct guards non-attacking in towns.
   - add the running state to a mob who hitted you (once the first 30s period is down, the mob is walking but he never run back if you don't hit him).

   Commands
   - AdminCreateItem? refactor (ty TheLastHero? for nice Freya rework).
   - //areacancel debug (ty Ferb for report)

   Misc
   - daggers blows no longer use P.atk in calcul, but they got now critical vulnerability counted in the calcul.
   - multisells have been cleaned (ty Sentinel)
   - isOnline is now a boolean from A to Z (ty TheLastHero? anew)
   - 2 pledges packets have been completed, L2ClanMember registers now the race and sex.
Title: Re: Last aCis updates
Post by: Tryskell on April 29, 2011, 05:45:28 AM
Changeset 90

    NoStore? implementation + 2 messages, ty Zerador for initial patch.

    NoStore?

        only the jail and both Oracles (dusk/dawn) are setup as NoStore? zones.
        both private stores (buy/sell) and private manufactures (dwarven/general) are blocked.

    Privates stores/manufactures

        got more and shared conditions (must be unmounted, not in nostore zone, be alive,...)
        some packets clean, and one exploit fix.


    2 messages added

        when one of your blow fails;
        when you avoid the attack of character xx.
Title: Re: Last aCis updates
Post by: Tryskell on April 29, 2011, 06:33:20 PM
Changeset 91

    Couple of fixes for pets/summons

        L2SummonAI refactor (enjoy the 10sec Freya copy-paste), which adds the "avoidTask" feature (when your pet is hitted, he moves around you);
        teleport is fixed with a pet (pet is ported with you);
        if the pet is 20 lvls more than you or a wyvern/sin eater, you can't make it attack;
        couple of fixes in the different summons/pets actions aswell (follow, stop, attack);
        pet follows you when you summon him for the first time (before it was standing like a tree);

    Misc

        some cleanings in L2NpcWalkerAI.

Title: Re: Last aCis updates
Post by: Tryskell on April 30, 2011, 07:51:07 PM
Changeset 92

XMLization !

We got another XMLlizer, treaser :P. Ty to him for those 2 shares.

    2 tables are now XMLs, teleport and newbie buffs.
    Reorganisation of XMLs (data/xml).
    Couple of little fixes, such as Config.DATAPACK_ROOT and unification of XMLs errors messages.


Added protection blessing core support. Wait for 5100-5199 for effect.
Title: Re: Last aCis updates
Post by: Tryskell on May 02, 2011, 11:12:00 PM
Changeset 93

Inventories update, part I

    update each type of inventory.
    correct items consumption problems.
    fix around 10 different issues, such as bad synchronizing, freight exploits && missing checks.
    inventories (mainly normal inventory and freight) are loaded FAR faster.
    added not 1, not 2, but 3 configs ! Ooooohhhhh !


Break definitively augmentations, which still need a complete refactor. The pet inventory isn't supported yet aswell (need PetTable? and model entire refactor).

Tested skills consumptions, and the triforce (WH, CWH, and freight). Anyway, report if errors occur.
Title: Re: Last aCis updates
Post by: Tryskell on May 06, 2011, 04:08:40 AM
Changeset 94

Inventories update, part II

I warn you : this update is pretty huge. Well, you could think "he says that to each commit nowadays", lol, and the worst is : you're right, as I'm right saying it's huge :D.

Inventory refactor
   - Paperdolls refactors, LRHAND dissapears (not the slot !). Bows/staff are now considered as RHAND.
   - DHAIR => HAIRALL. Just to understand better 'what the hell is this crap'.
   - inventories instanciation. Should make sad some exploiters.
   - formal wear retail way (alldress slot).
   
TradeList refactor
   - refactor the buylists loading (no more .csv support).
   - correct and improve (adding checks, using fun stuff) packets using them. Add some checks, those sorts of stuff.
   
"Wear/Try on" system
   - Drop of the old "wear/try on" system, and of all old methods (isWear, and such).
   - The new one is buggy as I miss packets infos, and the only infos come from Freya (this stuff has been implemented on L2J around rev 44xx). WearList > ShopPreviewList, and added a new packet, ShopPreviewInfo.
   - The new system doesn't need checks as it's only a packet which change the appearance of your stuff. Basically not exploitable, and extremely light in ressources' usages (before an item was created, used, then deleted).

Misc
   - L2ManorManager refactor (warning : as I suck with manors uses, I didn't manage to test crops/seeds sell/buy etc. I would like someone teach me how this crap works one day, lol).
   - refactor of the way to count arrows.
   - some packets refactors (mainly RequestCrystallizeItem), and many cleans.
   - a GM can't use hero weapons anymore if he isn't a hero himself, in order to avoid the "stupid bug" at relog, which made me lose 30min to find why it happened (and when a inventory refactor comes, you're pretty nervous about "WHY THE FOCK THIS STUPID HERO BOW IS REMOVED AT RELOG AND NOT OTHERS WEAPONS ?).
   - correction of a couple (around 10) of logs names... Ty Sentinel to open my eyes on this awful critical issue which could destroy the Earth and humanity. Which isn't a awful critical issue which could destroy the Earth and humanity, but still make you cry.
   
Admin commands
   - ended the refactor of AdminEditNpc (both "edit" and "shop" parts have been corrected and improved).
   - AdminEnchant send only one message if you're the target.

And once again :
REPORT ON GODAMN FORUM IF ERRORS OCCUR, DONT CRY ON MXC THREAD XAXA.
Title: Re: Last aCis updates
Post by: Tryskell on May 08, 2011, 03:54:56 AM
Changeset 95

   Inventories update, part III


   Warehouses
       Warehouses clientpackets updates

   ClanHalls?
       ClanHallManager? refactor
       mana consumption for CH buffs corrected
       teleports lists corrected and/or added (schuttgard was missing) using Freya.

   Misc
       StatusUpdate? update.



Changeset 96

ArmorSets? table XMLization, ty treaser (my treasure ;o) for initial share.
Title: Re: Last aCis updates
Post by: Tryskell on May 11, 2011, 07:27:04 PM
Changeset 97

XMLization of pet_stats, plus a couple of rework.

Many values are now automatically calculated, not loaded from table. I need to experiment and debug a lot on this side, as calculations seem incorrect.

Pets got many problems anyway.


Changeset 98

Move of zone.xml in xml folder, plus a little clean on ZoneManager?.
Title: Re: Last aCis updates
Post by: Tryskell on May 12, 2011, 04:40:28 PM
Changeset 99

4200-4299, ty SweeTs? for initial work.
Title: Re: Last aCis updates
Post by: Tryskell on May 13, 2011, 08:54:19 PM
Changeset 100

Pets refactor, part II

- Reorganization of the XML and loading process
- Update of the FeedTask?, with now the possibility of pet deletion if it is hungry (30% => 5% luck, 10% => 30% luck).
- Some stuff which will be used when items refactor will come.
- Hungry state setup to 55% (will be used for autoconsumption of food).

Pets are still heavily broken (3 major problems), and they need items refactors from now (currently, food isn't considered as pet item).


Changeset 101

FishTable XMLization, ty treaser for initial share.

- XMLization of fish.sql => fishes.xml
- To respect naming conventions in the XML folder, zone.xml => zones.xml
Title: Re: Last aCis updates
Post by: Tryskell on May 14, 2011, 11:08:53 AM
Changeset 102

Augmentations refactor

Yeah, fully working. What more to say...
- augmentations are added when unequip/equip items, and loaded with inventory.
- I used Freya, and deleted all accessories part, plus useless stuff (yellow array, useless method,...)
- augments are now deleted with items, when a character is deleted aswell.
- active augments got their cooltime stored.
- some security checks added in concerned packets.

About DP :
- c/p of the skillmap (go from 58ko to ~530ko)
- if there are problems about eventual postIL skills, tell me on forum. But from what I know, all are in the 3100/3200/3300.
- added a couple of configs.

Misc :
- drop of getItemGrade(), which called getCrystalType(). Why it existed, I have sincerly no idea. And you can't say dev was drunked, because he did the javadoc, and said on it "it is the same". Lol.
- mini reorganization in Config.java, in order to make lines less big. Just spaces basically.
Title: Re: Last aCis updates
Post by: Tryskell on May 15, 2011, 02:36:44 AM
Changeset 103

ClanHalls refactor + Singletons

Well, it begun with a correction of singletons, and it ends by a clanhall update :).

CHs / Auctions
   - Added the missing 22th auction, (Gludio or gludin) Moonstone Hall.
   - Corrected CHs loading process (Contestable aren't considered as auctionable)
   - Corrected week leases of all CHs (c/p freya), and descriptions.
   - Many typos, improvements and singletonizations of related instances.
   
Misc
   - Some singletonizations.
   - Added RequestExMagicSkillUseGround packet content (signets), ty Zerador for info.
   - Manufacturing checks are now made in clientpacket, not in serverpacket.
Title: Re: Last aCis updates
Post by: Tryskell on May 18, 2011, 02:41:14 AM
Changeset 104

Cursed weapons refactor, 1 skill XML

CWs
   - added propers messages at cursed owner login;
   - debugged cw_add (missing time task activation, and bug when you added 2 weapons on same character);
   - singletonizations, typos, missing checks, code actualization;
   - cursedWeapons.xml renamed cursed_weapons.xml, following the general XML naming convention.
   - GrandBosses, feeded beasts and guards can't drop them.

Misc
   - All freakin typos errors "equiped"/"unequiped" are now "equipped"/"unequipped".
   - "DropIt" => "dropIt"
   - refreshed the reward method (doItemDrop) in L2Attackable.
   - Added 5100-5199 (signets working without force condition, but they work);
   
Go post "Tryskell is right, you're all noobs" here : http://www.l2jserver.com/forum/viewtopic.php?f=82&t=22092
Title: Re: Last aCis updates
Post by: Tryskell on May 19, 2011, 01:10:54 AM
Changeset 105

4600-4699 xml + core support



Changeset 106

Last skill XML is now commited : 4700-4799.

From now, and for any skill behavior/values, you can post problems on the unique topic "skills problem", in "reports CORE errors" section.
Title: Re: Last aCis updates
Post by: Tryskell on May 19, 2011, 11:11:23 AM
Changeset 107

ConfirmDlg? refactor, SummonFriend? fix

- you can now add multiple things in ConfirmDlg? (popups for ress, summon friends, wedding accept). Timer, Zone area and many more are now supported.
- Timer (30 seconds) and requesterId (fix bugged accept issue) added for Summon Friend. The popup shows too the zone where the requester is.
- corrected an issue (when charm of courage will work, it would make the accept button buggy aswell).
- modified the generic wedding popup generic for another (normally correct the "?" typo).


Misc
- IsInCombat? fix. Fix "pets stuck in combat" issue (couldn't unsummon if you "attack" then "stop" the attack before the pet attacks).



Changeset 108

AdminCommands? refactor, HTMs spring clean


DP side




Changeset 109

Skills fixes (signets restrictions, ChanceSkillTrigger)

   - ChanceSkillTrigger debug (work now on any L2Character instead of L2Playable). Debug mirage and all augments using this type of effects.
   - RemoveTarget effect now deletes completely the attackstance (it was keeping attacking even with target off, lol).
   - Added back Battle/SpellForce.
   - Deleted EffectForce. Old ruin of past memories. Or something like "very very old thing" :).
   - Added right conditions for signets cast. They now work (near) as they should.
   
I decided to use the generic "work everywhere" systemMessage 113 for skill's unavailable forces number condition. If you find a cooler or the exact message (if it's the wrong message), tell me.

In another hand, if you think I missed a check on FusionSkill, tell me aswell. Don't wait 40 revs to say "hey, you got a problem here". It normally checks following states : death, under attack, party break, subclass change.
Title: Re: Last aCis updates
Post by: Tryskell on May 20, 2011, 05:05:42 PM
Changeset 110

Zone update

    L2PoisonZone is renamed for L2EffectZone (and reworked...).
    Skills affect only L2Playable instances type (summons and players).
    Remove a warning on L2DamageZone (no effects).


DP

    Add an debuff effect on Orfen Lair ;p. Added to the swamp effect, you're really lame now.
    Renamed the 167 PoisonZones?, nothing more.


Should correct this issue :  http://img541.imageshack.us/img541/3423/erroria.jpg
If skills XMLs end didn't do it.
Title: Re: Last aCis updates
Post by: Tryskell on May 29, 2011, 01:48:13 PM
Changeset 111

Sieges fixes + weapons cAtk fix

All the code from sieges is entirely from me. That means yeah, I can do other things than c/p, but that means yeah, it can have after-effects as it has been tested only by me, and on a short time laps. So feel free to test all possibilities and report on forum for eventual NPEs/errors I didn't think about.

Sieges
   - admin commands about sieges won't bypass anymore conditions (can't reg 50 times same clan as attacker/etc).
   - The SQL code to include clan on sieges has been improved (avoid duplicate).
   - replaced circlets for crown at chamberlain "Give a crown" option. My bad.
   - remove both crowns and circlets (before only circlets were removed) ;
   - Crowns and circlets are removed only at the end of a siege (and not at middle time victory like before), and only if the initial castle's owner differs from the end owning castle's owner.
   - Corrected restriction to avoid to register on multiple sieges at the same time (retail confirmed).
   - Added alliance restriction, clan A/B of the same alliance can't anymore register on different side of a castle's siege. They have to be both on attack/defense.
   - Added message for people who aren't clan leaders and try to register to a siege (You aren't authorized...).
   
Weapons
   - Replace all buggy "cAtk" for "cAtkAdd" in order to correct bugged critical damages, credits to SweeTs.
   
----

Issues :
   - L2J Freya bug : the skill "Seal of Ruler" (seems) bugged, if you changed of target at cast's end it will try to take the objectID of your ACTUAL target, not on the previous one (so if your actual target isn't an artifact, the entire cast process fails). I got already an idea to fix it, which could be used in order to make some others actions (trade, etc) secured aswell.
   
I would like informations about missing stuff from sieges, in order to make another refactor part. I would like to add artifact zones mainly. So give ideas on forums, with eventually proofs about what you say.
Title: Re: Last aCis updates
Post by: Tryskell on June 01, 2011, 05:35:44 PM
Changeset 112

Some deletions, circlets/crowns fix

    Deletion of L2ControllableMob (as the poll shows it, no one knew the existence of this feature).
    Deletion of WayPointNode? (old code, no idea why it's still on Freya), and the 5 related variables in Config.java
    Fix the NPE scenario about circlets/crowns removal. Surely due to NPC owning castle.
    admin panel reorganization : move of strider/wyvern from "effects" to "teleport" panel, add of unride option.


If there are still errors at removal circlets/crowns, please consider to give full infos, such as actual people on, who's attacker/defender, etc. Try to test with not defenders on.
Title: Re: Last aCis updates
Post by: Tryskell on June 07, 2011, 02:03:30 PM
Changeset 113

DayNightSpawnManager? refactor.
Title: Re: Last aCis updates
Post by: Tryskell on June 07, 2011, 02:04:32 PM
Changeset 114

Duel refactor

   The "error" at withdrawal is related to client side. It could (and read the "could") be related to server, but it's not supported at all else. Variable $s1 should be $s2.




Changeset 115

Seal of Ruler zoning restriction.

Ty DiNoR for initial XML/SQL values, and Ferb for idea/report.

Work better with geodata on. Don't report if you got zoning error without the use of geodata... If players respect zones, zones respect players :P.




Changeset 116

Correct all recipes for IL values, ty DiNoR for initial work.

If some are still missing, you're allowed to cry on forum.
Title: Re: Last aCis updates
Post by: Tryskell on June 16, 2011, 10:55:52 PM
Changeset 117

Multiple little fixes

    - Danse of medusa got anew a time.
    - Some packets modifications (added some packets infos, etc).

    Nothing to kill yourself.




Changeset 118

[SpartaCis] Items refactor - part I

Many has been done those last days. Thx to DiNoR for incredible fast work on DP ^^.

   - Items don't use anymore SQLs. All engine and DP is made for/of XMLs. All items can be found on data/stats/items, and follow original game system (melting armors, weapons, and etcitems in same files).
   - SkillHolder implementation.
   - Duals got now their +4 passive skills.
   - shortBuffTask implementation (healing potions icons).
   - Apprentice PK && CW drop restrictions are now handled in DP.
   - Full rework of shots, + 2 fixes (1 due to Freya, 1 old).
   - Items icons now fade if the item is of same sharedReuse group. Item shortcuts timers are still buggy (as Freya).
   - Potions / Elixirs can be casted during casting. Thx momo61 for initial share.
   - Some beginning rework on petItem. isPetItem() => isPetCollar(), isPetItem() implementation (consider pet armors/weapons as pet items). This chapter is buggy, even on current L2J Freya. More work will come soon or later.
   - update for BroadcastStatusUpdate, in order to get less sent packets (limit mana updates)
   - L2ExtractableItems are ported from initial .csv to existing skills XMLs. No more loading process for it.
   
The second part of items refactor will come once people tested and report eventual problems with part I. So you know what you have to do : TEST !
Title: Re: Last aCis updates
Post by: Tryskell on June 17, 2011, 11:10:14 PM
Changeset 119

AdminCommands refactor.

Here are fresh commands for you, mighty admins ^^.

ADDED COMMANDS
   - cameramode: same as retail //camera, thx to Airin (L2J User contribution) http://www.l2jserver.com/forum/viewtopic.php?f=69&t=19618
   - admin_summon_info: displays an information window about target summon
   - admin_unsummon: unsummon target's pet/summon or target
   - admin_summon_setlvl: set the pet's level
   - admin_show_pet_inv: show pet's inventory (currently NOT WORKING)
   - admin_party_info: find party infos of targeted character, if any
   - admin_clan_info: find clan infos of the character, if any
   - admin_remove_clan_penalty: removes clan penalties
   
DELETED COMMANDS
   - save_modifications, part of the "Edit" button panel of the selected character.
   - visible/invisible, deprecated cause of the existence of vis/invis.
   
PANELS
   - Many panels are improved. Some holes have been filled aswell with the new commands.
   - Main panel have "dualbox" and "pet infos" buttons
   - "List" > select a character got a fresh panel with new added commands.
   - "Edit" button panel has been seriously revisited. It got only useful stuff.
   
MISC
   - Cleaned 2 skills. Nothing for you.
   - L2ClanMember typos.
Title: Re: Last aCis updates
Post by: Tryskell on June 18, 2011, 04:26:12 AM
Changeset 120

Some little fixes.
       core support for isClanSkill().
       add an effect on Grade Penalty skill (-50% runspd/atkspd/cstspd).
       update correctly passive skill list when Grade Penalty occurs.
       update/complete 2 serverpackets.
       change calcLvlDependModifier formula method.


   Experimental : Point3D doesn't use "synchronize" anymore, which means less used ressources. Such points are used for signets casting as exemple. If you handle strange behavior on signets positioning or such, please contact on forum asap. This fix has been released recently on L2J.




Changeset 121

Fix hennas typos problems. Additionally improve DB structure for those tables.

Ty stanus for report.

PS : prices have been updated aswell. When they seem more... normal (from my player's PoV), if you got proofs old prices were retail, send screen / cry on forum ^^.




Changeset 122

Items, part 1.5 ^^

Correct following errors :
   - stackable items (5 missing);
   - herbs effects (both DP && core issue);
   - SoE castles/clans (it was using the old itemhandler, used for backward compatibility, but now it was bypassing real effects so bb old itemhandler and welcome new generation :));
   
Misc :
   - added a config for bosses items drop rate;
   - fixed the targeting issue when sitting (when you double protect something sometimes that bugs, lol).
   - added Dummy skillhandler, correct "the DUMMY skillType isn't implemented". You can launch fireworks without bugs ! Eweussaumeu !




Changeset 123

Misc
   - Add core support && DP for Court Magician (allow to use castle crown's skill), currently fully working.
   - Correct shields item restriction (as they migrated from L2Weapon to L2Armor).
   - Improve EffectFear (geodata check). I still don't know why mobs take time to be affected. It's not due to effect anyway.
   
If by any hazard, the Court Magician got other stuff, consider send as much infos as you got on forum, and if possible with proofs about what you say. I didn't manage to find any decent IL infos, except the clan gate part.
Title: Re: Last aCis updates
Post by: Tryskell on June 20, 2011, 03:17:18 AM
Changeset 124

Items refactor, part II

   - Replace all differences in terms of values and names typos from Freya to IL.
   - Added back pet armor/weapons type, and bodypart related to pet's race. Drop of is_petitem boolean.
   - Added all missing onCast skills.
   - correct tatoos/cloaks, add pDef to cloaks.
   - Added missing SAs.
   - Corrected all typos.
   - And many more...
   
DP part entirely made by DiNoR, thanks him for the amazing work :).

Items DP is supposed to be finished. Consider report any strange item. Ty in advance.




Changeset 125

Misc fixes.

    Correct all skills values "cAtk" from 1.3/1.4/1.5 to 1.3/1.325/1.35. Ty Zerador for the report.
    Fixes buggy entrance message on arenaZone.
    Add 2 Arena managers on Giran and Gludin arenas. Move the Derby Monster Track one outside the arena. Corrects the hardcoded CP recovery for a buff use, and add a popup if you haven't enough adenas (ty Zerador for the initial code).
    Crests refactor, should correct all problems of crests for clan/ally (staying crests after ally kick).
    Added back ToI and coliseum doors as opened at server start.
    Added the passive buff "Equip Set Items", which is added/removed in same time than a set passive skill. Verified from a L2Off.


Report if you still got problems with crests, I only managed to put/remove/change one to see if I have broken something :P.
Title: Re: Last aCis updates
Post by: Tryskell on June 24, 2011, 03:59:58 AM
Changeset 126

DONT UPDATE IF YOU DONT READ THE WHOLE CRAP.

Quest engine / AIs, part I

Quest engine.
   - rework of quests engine, using the unstable L2J trunk, in order to be able to use java files (mainly AIs).
   - deletion of the jscript folder. If you want to help refactoring quests, save this folder anywhere else, or dl back IL quests. "scripts" folder is added, with some AIs.
   - Some AIs added. They're supposed to be final and working. Report all you can about them. I only tested chests and Gordon.
   - Addition of many configs, mainly about World/Grand Bosses and quest rates. Report bosses respawn timers on the forum, as they seem all wrong.
   
PS : The engine has been stripped of the compiled cache stuff (.rar-ed events and such). ON_SKILL_LEARN has been dropped too.
   
AIs
   - Reworked AIs. Mobs can know support, heal when low HPs, use skills (they spam them those bitches...)
   - npc_ai_data.sql has been added. It is supposed to get all AIs stuff concerning NPCs templates.
   - some infos of npc.sql have been deleted, and moved to npc_ai_data (mainly faction => clan).
   
MISC
   - npcskills.sql is renamed npc_skills.sql
   - L2MinionInstance is dropped. Now all minions are normal L2Monsters. They're still linked to the leader via the minions.sql
   - datapack is now parametered to see java errors. Allow easy debug on java quests.
   - NpcSat, TutorialCloseHtml, TutorialEnableClientEvent serverpackets added.
   - core support for tutorial quest (Q255).
   
MANY LIBS HAVE BEEN ADDED/MODIFIED/DELETED. YOU HAVE TO REINSTALL ENTIRELY YOUR SERVER IF YOU DON'T KNOW WHAT TO CHANGE. TOPICS WITH "CLASSNOTFOUND" ERROR WILL BE DELETED WITHOUT WARNINGS.

Two issues exist on hardcoded AIs :
- minions dont appear back, even if the leader is alive (whatever mobs, general AI issue).
- mobs with caster types skills don't attack back if their casting range is higher than the distance of the player. Saying it differently, they stay without moving at their position until you reach the good distance. Kinda strange.

No issue has been found currently about the quest engine itself (loading Python/Java correctly).
Title: Re: Last aCis updates
Post by: Tryskell on June 25, 2011, 08:57:58 PM
Changeset 127

Misc changes
   - change sql table format of npc_ai_data table, as some people couldn't install it correctly.
   - correct HTMs and internal issues for following custom/quests : shadowWeapon, heroCirclet and heroWeapon.
   - set the rb pdef/mdef multiplier config to 100 instead of 300. Any RB had x3 pdef/mdef.
   - you can't give anymore a castle via the admin command if the target already got a castle (fix a bug).
   - fix the getExp/Sp rewards formulas (use of MaxHP in formula ? Lol).
   - tweak the //zone_visual admincommand in order to get less adenas dropped when creating the zoning visual (x2 faster at draw/clean).
   
Ty SweeTs for many reports, and TheLastHero for the recall : don't forget to change HTMs' quests bypasses.

PS to quests helpers : you have to change HTMs aswell in order to make quests working. It's kinda easy : search for IL name of the quest over the whole "data/html" folder, and use "replace" tool with the corrected quest's name.




Changeset 128

Items variables cleanup
   - drop of "is_questitem" and "is_herb". It's now handled directly by etcitem type.
   - Ty Dinor for suggestion.
   - differenciation between isHerb() (item) and isHerbEffect() (effect).

You have to change all your items XMLs.
Title: Re: Last aCis updates
Post by: Tryskell on July 05, 2011, 04:19:07 AM
Changeset 138

Quests stuff, and misc.

Quests
   - Rename "Help My..." serie for "Help The...", following client infos.
   - Apply min/max level restriction on quests.
   - addition of Q003_WillTheSealBeBroken (old name was refering to nothing existing).
   - cleaned Q045, addition of (qitem, previous quest, level) restrictions, following L2off htms. Race condition must be made at quest 006.
   
Misc
   - 3 NPCs HTMs have been corrected (DE village).
   - npcs aren't effected by effects (except buffs and debuffs).
   - walking/run spd set to 0 isn't a problem anymore. You normally can spawn anything you want. That doesn't mean the db doesn't need a correction.




Changeset 139

Boats system

   - Boats have been refactored using Freya. It removes the 2 .csv, corrects all related packets, kick players without a good ticket, announce using client strings.
   - Paths seem ok, I tested 2 boats on 5 (go and back).
   - Boats enable config is now enabled by default.
   - fix a Freya issue when you got only one ticket (inventory glitch at item destroy).

Misc
   - CreatureSay serverpacket allows the use of client strings from now, as I already said higher.
Title: Re: Last aCis updates
Post by: Tryskell on July 06, 2011, 03:33:04 PM
Changeset 140

One quest, glad formula, misc

   - deletion of one useless lib (removed then added back at rev 69-70, kept for old qengine only).
   - glad formula is more retail like. Damages are really heavy with 7 charges, around xx + 1 it's normal power (xx is the number of charges the skill uses). Compared to PDAM skills damage, the result seems appropriated.
   - Addition of one quest, Q166. Ty DiNoR for initial share.
   - Correction of all quests considering onAdvEvent() method. Please refer to existing quests in order to get a good template.
Title: Re: Last aCis updates
Post by: Tryskell on July 07, 2011, 02:12:21 AM
Changeset 141

Some formulas rework.

   - Shields are supposed to block both magic && physic skills (L2Guru 2007 topics). I thought it was post IL, and for so, when I refactored skills I kicked this part of code. Now I got the good infos, I add it. So yeah, tanks aren't so weak in this chronicle :). For info, it works exactly like pdef, but add mdef and can do critic success (1 damage).
   - Seeds have been corrected. I did 2-3 tests only but it worked for one fire/wind seeds combo, and 2 fire seeds, no reason it doesn't work for others combos. So from now, all skills are supposed to work correctly.
   - Improved/reworked Attack serverpacket.
   - Completion (removed quoted stuff from skillhandlers) of the NPC soulshot system. Current AI table is kinda messed in this case, as mobs with soulshots haven't any chance to use it, and mobs with chance haven't any soulshot. Freya, freya...
Title: Re: Last aCis updates
Post by: Tryskell on July 08, 2011, 08:24:24 AM
Changeset 142

Quests !

8 quests related to fishing, all have been tested and corrected comparing to L2J, but if you found some errors, you know what to do.

Ty to DiNoR for scripts.cfg && initial share of 2 of them than I corrected, others are clones made by me.

I didn't test the fact to fish. I poped items in my inventory. Report if fishing is broken somehow (you have to get the GOOD LEVEL OF FISHING before trying, it depends of the quest).




Changeset 143

Drop protection.

What to say more... It's the retail drop protection, which block others players to pickup your loots for 15 seconds. If someone is in your party or is from same clan, he got priority aswell.




Changeset 144

Two new quests, 5 && 7. Tested from A to Z.

Ty to fernando and DiNoR for initial commits. HTMs have been corrected using L2off (L2J was/is wrong about HTMs conditions of 7, and some HTMs use were missing after condition is successed on 5). Tip of the day for awesome Freya c/pers : never think L2J make perfect quests :). Better c/p aCis quests, all remade with love :D.
Title: Re: Last aCis updates
Post by: Tryskell on July 12, 2011, 01:42:06 PM
Changeset 145

Quests 006, 008, 110.




Changeset 146

Quests, spawn protection, crests packets

Quests
   - 3 quests added, Q112, Q157 && Q161. Ty Fernando for good work.
   
Spawn protection
   - Spawn protection config has been corrected;
   - The trigger was activated even when player was simply invul (gm invul, skill invul), which launch code for nothing;
   - Some packets were activating the trigger from their own (Appearing, etc), which basically focked up the protection at enterworld;
   - A message has been added if you move before the protection ends;
   - The only possible action is now Say2. So yeah, you can flame the campers until protection ends. Awesome, no ? :)
   
Crests packets (client/server)
   - cleaning, packet structure simplification when there is no crest.
Title: Re: Last aCis updates
Post by: Tryskell on July 13, 2011, 10:13:29 PM
Changeset 147

Misc, misc, & misc

   - Q002, ty DarthVader (and the dark side of the force).
   - Corrected pole targets calculation (http://www.l2jserver.com/forum/viewtopic.php?f=69&t=22796) using Diego Vargas post. Non polers targets are back to 4 (instead of 9 targets). Current Freya is still wrong at the time I talk.
   - Fixed few jewels which had problem on enchant (ty Zerador for report, and DiNoR for fast fix).
   - Fixed CoV effect, supposed to give back the amount of HPs (20%).
   - deleted limitation system. It was crappy. I only kept the retail cap limit of 500 on critical.
   - fixed the drop protection, only party must be affected, not clan (ty Finito for report and "the ride" :D)
   - "Fear" graphical effect added back (which is confusion effect aswell).
   
"Game of Thrones" TV serie is just awesome <_<". Sex, blood and conspiracies, what do you want more ?
Title: Re: Last aCis updates
Post by: Tryskell on July 16, 2011, 12:51:01 AM
Changeset 148

Alliance/clan "quests".

I had to pick back HTMs from rev 44 for rename bypasses/HTMs. Ty Ventic for initial share (there was some rework to do, you don't use last qEngine...). Consider testing all options and report if something misses, normally all is supposed to work. Moved a HTM from village_master to default (again a DE). Added a NPC missing in original quests (id 31336).
Title: Re: Last aCis updates
Post by: Tryskell on July 17, 2011, 03:10:43 PM
Changeset 149

Quests.
   - deleted the unset("cond"), as it's handled directly when you use exitQuest(false). You still have to cleanup it if quest is repeatable (or I guess so).
   - added GNU licences on fernando shares. Erm.
   - added Q013, Q153, Q277 && Q357. Ty Ventic, fernandopm, TheLastHero && DiNoR.




Changeset 150

Quests.
   - Added 3 quests : 122, 261 && 272.
   - Removed the few existing credits.
   
About credits : none cared about to add initial authors, and after all, there are far more than one or 2 authors. Should I add my name on each file because I corrected your own errors too ? Should I find the initial author, and all others who corrected the quest since the time without adding their own credits ? Guess no. Added to that do you think leechers will let right credits ? So let's remove the credits and let the whole crap anonym :).

This is a community work, not individual :). As a brick, you're part of the house, but you can't be the house itself :).
Title: Re: Last aCis updates
Post by: Tryskell on July 18, 2011, 09:28:09 PM
Changeset 151

FloodProtector rework.

   - Added the less useless fP (dropItem, multisell).
   - No more instantiation.
   - Possibility to add punishement, duration, numbers of actions before punishement.
   - Before ppl were put in an array, once this array limit was reached if it didn't fit with max players limit, only hell knows what could happen :D.
   - fP settings have been seperated from server.properties.
   
Report if errors.
Title: Re: Last aCis updates
Post by: Tryskell on July 19, 2011, 08:50:53 AM
Changeset 152

PartyMatching system (that smells the leeching suckers at 100km around :D).

Added to the Freya update, following fixes (made by your servitor - me, myself, not you ugly leecher who read this text) have been made :

   - player room's kick :
      - LFP title is now correctly removed.
      - The player is register anew in the waiting list.
      - The partymatching panel is updated automatically (not simply closed like before)

   - Waiting list
      - Now it doesn't show your own name in the list (verified on a L2Off C5, plus, do you think it's normal to send to yourself partyinvite/whisper ?)
      - The waiting list works NOW ONLY FOR ROOM'S LEADER, or (as before) for people without room. It allows to (read next) :

   - addition of the 2 missing packets to invite someone in your partyroom.
      - Use of FriendInvite for the main idea :D.
      
L2J topic about : http://www.l2jserver.com/forum/viewtopic.php?f=69&t=22857

Die leechers :D. I got one step more than you each time.

Consider to report if any problem occurs.




Changeset 153

Shadow sense && misc

   - Add Shadow Sense support (without use of thread), which was in sleeping mode.
   - remove recall_npc button in npc+shift click on NPC.
   - Remove StackTrack warnings on //forge2 and //forge3.
   - Added some sounds, such as : chatban, unban chat, gmlist/petition (if none GM online).
   - Fix a PM's NPE. Ty L2J's user DareStrike for report.
   - Add ClientSetTime serverpacket.
Title: Re: Last aCis updates
Post by: Tryskell on July 21, 2011, 12:02:40 AM
Changeset 154

Skill fixes && misc.

Misc
   - builds.xml have been formated and cleaned. DP doesn't create a .zip anymore, nor try to update/clean it (faster compilation).
   - .project is supposed to correctly "link" dp and core (you don't have to make manually the fix anymore). Ty Voqus.
   - 2 items are now considered as quest items ("seductive whispers" and a "game of cards").
   
Skills
   - Once sitted, you can only disable a toggle, not activate it anymore. Issues like using fakedeath during private shops weren't so cool... The initial feature (and bugs) has been introduced at revision 50.
   - Slow reuse time is 7sec, not 2sec.
   - Seal of Disease acts like a seal, not like a one man target && far-casting spell (Gracia behavior), ty Vonak.
   - cancellation and such CANCEL skillType are now corrected. Formulas were linking to another skillType, CANCEL_DEBUFF, which isn't the good effect ;p. So from now, Mental Shield and such buffs should correctly add resistance to cancellation type skills. CANCEL skillType is now 100% effect success aswell. Ty Vonak and Sim for report.
   - confusionVuln is now handled directly by derangementVuln. This property (confusionVuln) doesn't exist anymore.
   
You have to update skills XMLs.
Title: Re: Last aCis updates
Post by: Tryskell on July 21, 2011, 03:01:41 AM
Changeset 155-158

Well, basically both (this and 3 past) commits were lolcommits.

It will allow people to checkout directly in good directories. If you manage to get a personal project, and same issue than me (aka repo folders' names are different of your local project copy), avoid to do it like I did (Voqus, grrr ;p), aka don't do it from SVN repository. But do it using package explorer view > Refactor > Rename (ty Trance for the too-late solution -.-"). You can commit all of them in one commit, and that will change .project directly instead of doing manual crap.

If you got issues, I invite you to drop all your aCis stuff and to checkout again.

+4 useless commits. Beat that L2JBroken/Loop/XG !

Since it's the most useless commit I have (and will) ever made, I would like to thank all helpers which helped me (in one or another way) since the beginning of the project. You have to know major updates are coming those days (on DP side, we prepare something big). Quests refactor will take a big time aswell (expected time for a complete quests folder is around 3 to 4 months).

aCis is on faCebook. Type "aCis" on the facebook search tool, you should find it easily. It's the best spot if you want to know hot news, like actual works, tests, and so on. At 25 members I can put a damn normal link instead of this dynamic crap. So join the community .

More you help, faster the project will move on, and faster you could use it for your own server project.

What can I say more... Anticonstitionnellement.
Title: Re: Last aCis updates
Post by: Tryskell on July 21, 2011, 01:52:22 PM
Changeset 159

Teleports.

Added the 6 following teleporters, fully working.
   - ElrokiTeleporters (added the no fight check, as explained in the NPC's dialogue);
   - NewbieTravelToken (fixed HTMs and added HTMs if player hasn't token);
   - NoblesseTeleport (fixed HTMs);
   - PaganTeleporters (retail way, gates are opening. Fixed all HTMs, and fixed 2 qItems' issues);
   - RaceTrack (as L2J Freya did - lolscoria is fully bugged);
   - TeleportWithCharm;

Misc   
   - The Pagans' statues are now L2Npc, not L2Teleporter anymore (as all actions of teleport are handled by quest). For so, their htms have migrated on default folder.
   - HTMs of an non-existing gatekeeper have been deleted.
   - 2 Pagans teleports have been removed, as they're now handled by the quest (and it's not teleport anymore).
Title: Re: Last aCis updates
Post by: Tryskell on July 22, 2011, 10:24:00 AM
Changeset 160

Skills
   - Magical critic rate is now corrected, and fit with http://l2p.l2wh.com/wildmagic.html
   - Old CONFUSION behavior was useless. CONFUSE_MOB_ONLY have taken this position.
   - Both effects EffectConfuseMob and EffectConfusion are corrected. An random aggro number has been added, allowing mobs to change of target each tick. It can add more aggro on same target with some unluck... And this target can be you, ofc <_<.
   - Valakas Necklace Wild Magic effect is corrected.
   - The only use of old CONFUSION skillType was on a potion (Critical Escape). This potion skill has now a mirage type effect. That's surely 100% custom but old effect was custom aswell, lol. And the effect is working at least...




Changeset 161

Skills and Misc


   - Correction of MANADAM effects, which now support MDOT. Effect is really supposed to burn some initial mana then to do a MDOT.
   - Fixes the teleport skill from Blade of Splendor (VoS), which had 2 skillType (o_o).
   - Fixes attack button on pet betray mod.
   - Bypass shield's check on Hydro Blast's use (2007 L2Guru topics)

Misc
   - fix macro items use deleting the itemUse fP. Even put at 1, it was making it bugging.
Title: Re: Last aCis updates
Post by: Tryskell on July 25, 2011, 10:58:45 PM
Changeset 162

Quests & misc

   - addition of 3 quests : Q004, Q379 & Q401.
   - add a missing SQL about global quests variables ;o.
   - clean correctly a deleted character (addition of character's raid point & global quest variables to cleaning)
   - fix Mass Gloom (should be on the summon).
Title: Re: Last aCis updates
Post by: Tryskell on July 26, 2011, 09:34:55 PM
Changeset 163

Quest stuff & misc


Title: Re: Last aCis updates
Post by: Tryskell on July 27, 2011, 10:43:21 AM
Changeset 164

Quests ! Moar !

   - Q014, Q162 && Q688. Ty to Ventic, TLH and DiNoR.
Title: Re: Last aCis updates
Post by: Tryskell on July 30, 2011, 02:04:47 PM
Changeset 165

XMLFactory, Formulas rework, baseStats deletion.

Ok, that does 3 days I didn't commit but there was a good reason (as always when I don't commit) ^_^". I was testing some experimental features, and some revert back. Some formulas have been corrected aswell, or "tweaked". Here's the list of changes :

baseStats
   - reverted baseStats.xml to IL stuff. Why ? Values/tables are calculated on the fly from core (no use of external technology = less ram/cpu consumption), and are more accurate (no rounded values).
   - saveVs from skills have been deleted, and replaced by core side formula (= less data from skill as all skillTypes use same stats, aka MEN or CON, to be calculated). Many XMLs are concerned.
   
XMLFactory
   - That's EXPERIMENTAL feature. All XMLs are now loaded from a single instance. That means clean code (some XML refactor codes are cut per 1/3), and normally less objects created. The use is very simple aswell. From the moment, no problem has been discovered using it.
   - armorsets' XML got a new structure (must be updated).
   
Formulas
   - a big rework has been made on Formulas.java. All Func have been moved in the folder named "funcs". Old funcs have been moved on a new folder "basefuncs".
   - many formulas (mainly magical) got now proper logs. You can see them activating "Developer" option in server.properties. I hope it will help you to find eventual issues.
   - some formulas have been reworked from scrap:
      - calcAtkBreak (renamed calcCastBreak) has been improved and the use is more simple/generic. Mobs casts aren't broken so often (depending of IA, goes to 10% to 30% of player rate).
      - calcHitMiss uses retail infos (verified from l2guru 2007 forum post / L2p bravehost).
      - calcMagicEffect has been tweaked (because effects weren't noticeable at all : 10% fail only on a red mob). Effect has been x2. I think the formula is still "too kind" with players, anyway.
      - resistances are now directly applied instead of lolcalculated (understand than 20 resist = 20% now instead of 24%, etc).
Title: Re: Last aCis updates
Post by: Tryskell on July 31, 2011, 02:23:46 AM
Changeset 166

Misc, misc, misc

   - FakeDeath is now off-like (once activated, toggle is locked, until you type /stand or click on sit/stand button.)
   - visual effects have been added for 8 seals/fire skills (ty SweeTs for idea).
   - skill mastery is calculated only for players (waste of ressources for other L2Character than players, as stat is 0).
   - fix \n on chat, ty manoell for the 1 line fix :P.
   - continue previous work on resistance calculation (better said, I forgot 2 of them in previous commit).
   - added a 2,5sec paralyze task on ressurection (FD is concerned too), which force ppl to get the "wake up" animation (based on sitTask paralyze stuff).
   - renamed/clean some packets




Changeset 167

Me, ashamed ? Nevah. My Ohlolol account depends of that commit :D.

Special thanks to "Advanced Find and Replace 6", haha.
Title: Re: Last aCis updates
Post by: Tryskell on August 01, 2011, 06:56:03 AM
Changeset 168

Deletion of GeoEditor and ManaPotion handler.

As mana potions haven't any existing skill (verified both on 3 months old L2off IL sources and on a running L2off), I decided to link potions with mana herbs effects. Mana drug give back 12% mana, mana potion give back 18%.

MPots aren't supposed to be usable, so from now, end of chatting about MPots.




Changeset 169

Buffs system, Enchant system, misc

Buffs system
   - reverted to be IL-like. Ty stanus for report.
   - Dances aren't put anymore at end of buffs bar, and aren't "saved" compared to others buffs.
   
Enchant system
   - refactored the enchant process, adding many checks and securities (warehouse, can't enchant during store,...).
   - added retail messages.

Misc
   - addition of Q019;
   - fix messages when a player/summon hit an invul NPC. Split that message in invul / invul paralyzed (medusa type) aswell.
   - typos, and revert noquest.htm content for IL type.
Title: Re: Last aCis updates
Post by: Tryskell on August 02, 2011, 05:14:35 PM
Changeset 170

MapRegion XMLization
   - SQL -> XML;
   - Corrects Prismeval Wharf teleport issue (one PZ becomes a TZ);
   - Clean TownManager postIL stuff.
Title: Re: Last aCis updates
Post by: Tryskell on August 03, 2011, 07:50:46 PM
Changeset 171

2 XMLizations, typos fixes & Misc.

XMLizations
   - access_levels && spellbooks (previously skill_spellbooks) are now XMLized.

Typos fix
   - many typos fix on GS logs. That's nothing more than esthetic issue. That's 80% modified files of that commit.
   - some "counters" (TableName: Loaded xx blabla) have been reworked.
   - drop of the timer (GS started in xx seconds).
   
Misc
   - qItems are now "no destroyable". When it's not retail-like, it goes the good point to avoid exploits, such as deleting your qItems and continue the quest as if nothing appears. Doing retail will ask to remake each quest, adding checks for any qItem.
   - cleaned the few qItems which were "no_destroyable" (as handled directly by core), and clean the CWs enchant stuff.
Title: Re: Last aCis updates
Post by: Tryskell on August 04, 2011, 06:36:23 PM
Changeset 172

XMLs, XMLs, XMLs... And misc !

XMLS
   - XMLization of NpcWalkerRoutesTable && AdminCommandAccessRights.
   - NpcWalker system have been slightly refactored/updated aswell.
   - cleanup in all existing XML tables, for cleaner coding style.
   - cleanup some XMLs (to reduce length and improve readability).
   - Ty DiNoR for SQL -> XML work on walker part. And death to NPEs.
   
Misc
   - addition of 2 quests, Q032/259. Ty fernandopm && Richijs4 !
Title: Re: Last aCis updates
Post by: Tryskell on August 05, 2011, 10:02:58 PM
Changeset 173

Enchant, reuseDelay for items, Skills / Items fixes

Enchant
   - Fix enchants, which are now possible on equipped items (not only inventory).
   - Fix success enchant message.

reuseDelay
   - Items use from now the reuseDelay of their template ; if nothing is found it will use skill item reuse delay (as previously). Simple example on CP potion : reuse delay is 500ms on item, 50ms on skill. It will use 500ms. If item hasn't delay it would use 50ms instead. Before this commit, it was using 50ms. http://www.l2jserver.com/forum/viewtopic.php?f=69&t=23069
   - Delete message on skill's use (post-IL stuff)
   
Skills / Items
   - fix some SAs values (Miser, Cheapshot and Quick Recovery mainly), and add some missing SAs.
   - fix Triple Slash (ty sa_"theXMLdev"_har :D) power values.
Title: Re: Last aCis updates
Post by: Tryskell on August 10, 2011, 08:32:23 PM
Changeset 174

Zones system, 3 quests, misc

Zone system
   - Players aren't effected by NPC skills zones ;
   - Mobs aren't effected by L2EffectZone/L2DamageZone (BigHead zones, castle traps, Blazing Swamp,...) ;
   - Activation and core implementation for isEnabled feature (mostly used on script for 4S).
   - drop of L2BigHeadZone (using L2EffectZone since some revisions).
   
Quests
   - addition of Q015, Q031 && Q121. Ty to contributors !
   
Misc
   - addition of missing HTMs for a couple of NPCs. Ty Pofka/seRiousLy from L2JBroken project for their contributions.
   - correct skills XML 3500-3599.
Title: Re: Last aCis updates
Post by: Tryskell on August 12, 2011, 01:38:23 PM
Changeset 175

XML, XML, XML, XML, XML...

And XML. That was long, and the DP side still needs some corrections/verifications. I ported 6 SQLs to XMLs. 3 SQLs have been merged, the data has been splitted according to class ("data/xml/classes" folder). The 3 others SQLs => XMLs have been moved under "data/xml/skillstrees" folder. An effort has been made on informations loading (drop of useless stuff, enlighten XMLs structures) aswell.

Added to that:
- 22 enchantement skills (IL ones) have been added. Those datas are unique - as handmaded by me - so enjoy :P ;
- a packet exploit on skill acquire has been fixed ;
- a useless message has been dropped when you close enchant/acquire skill windows ;
- Lucky skill isn't shown anymore on trainer skilllist ;
- 2-3 methods are improved (no checks on shortcuts when a passive skill is removed, Lucky skill check method doesn't remove skill at any level) ;
- Mobs are supposed to do magical critical now. At least, they got a default stat now.

The memory drop is around 10mo. The pack has been tested in the installation process aswell.
Title: Re: Last aCis updates
Post by: Tryskell on August 16, 2011, 08:15:09 PM
Changeset 176

Four Sepulchers part I + misc

Four Sepulchers (4S) has been implemented. Plenty of bugs still exist, but will be corrected at part II (waiting for you to make reports). For the moment, following has been added :
   - main instance + the 2 NPCs instances.
   - spawnlist "spawnlist_4s.sql", and HTMs "sepulchers" folder (ripe of "default" folder).
   - addition of missing NPCs spawns on spawnlist.sql, minus spawns of 4S mobs (handled in "spawnlist_4s.sql").
   - Q620_FourGoblets has been added.
   
Misc
   - Tyrannosaurus aren't lethalable anymore.
   - //invis, //vis, and //invis_menu => //hide command.
   - GS shows "used" memory, not "free" memory anymore.
   - refactor of SocialAction packet.
   - "Patrols" guards chat window has been corrected.
Title: Re: Last aCis updates
Post by: Tryskell on August 17, 2011, 02:54:26 AM
Changeset 177

Zones refactor, items on character templates, misc

Zones refactor
   - core implementation and DP activation for "reuse" and "initialDelay" for DamageZone;
   - addition of the warning icon for DamageZone.
   - deletion of ZONE_ALTERED (pointless).
   
Items on character templates
   - addition of items at character creation.
   - only first classes got those datas, which is not the actual L2J way (actual loads items even for post 1st class transfer o_o). Consider reporting if you find an issue.
   
Misc
   - Addition of (a tweaked version of) L2TownPet instance, ty Sentinel/Vhalior for initial share.
   - Mini clean on items (those datas are already implemented).
   - Drop of the duplicate spawns for Orfen, Queen Ant and Core. Valakas big teleporters have been dropped aswell (handed by future AI).
Title: Re: Last aCis updates
Post by: Tryskell on August 20, 2011, 06:05:27 AM
Changeset 178

Dimensional Rift, HotSprings IA, misc

Dimensional Rift -- fully refactored using Freya.
   - addition of EarthQuake effect at room changes.
   - give possibility to have more than 1 party in same rift, without interacting between them.
   - correction of an misfunction using jump cards (4 jumps, not 5).
   - fixed/verified values to be retail-like (2 players minimum, 480-600 sec, 4 jumps).
   - fixed issue where you can spawn directly in Anakazel room (at startup or during jumping).
   - Added message for tokens consumption.
   - Fixed spawn of one Rift ziggurat teleporter.
   
HotSpings IA
   - added a fully working HS IA, which upgrades the disease when the mob hits you.
   - corrected durations of diseases (from 10 min to 1 hour).
   - Added core implementation for that new stuff, under OnAttackAct (perfect for your custom events :P).
   
Misc
   - Corrected Q153 typo, and fixed html -> htm (ty Vhalior).
   - Cleaned postIL stuff related to epic jewels (ty Sahar).
   - Added the 3 missing L2PetTown (ty extel).
   - Fixed some links in htmls.
   - Added SuicideAttack behavior on "NPC Death Bomb".
   - fixed eventual NPEs at quest engine.
   - fixed previous rework on items reuse durations. It now take the longest time between items reuse and skill reuse.
   - some cleanup at L2Npc onBypass.
Title: Re: Last aCis updates
Post by: Tryskell on August 25, 2011, 05:55:23 PM
Changeset 179

npc_ai_data, and some misc

npc_ai_data
- spring cleaning on variables names, deletion of some booleans (behavior can be handled differently, so...)
- some behaviors disappeared (resskills, floatskills (?)).
- addition of suicide behavior for NPCs (activation at 30% HPs -- need surely to tweak it depending of skill/monster later), not a general skill anymore.
- addition of a minimum and maximum skill luck (between 7 and 15% by default from now, before it was 15%).

Misc
- Addition of a timer on pickup action.
- Tweaked existing animation timers, based on speed run now.
- Fixed a typo in Q006.
Title: Re: Last aCis updates
Post by: Tryskell on August 27, 2011, 04:48:09 AM
Changeset 180

Formal Wear quests serie - Q033, 034, 035, 036 && 037.

- endquest rewards items have been put as qItems aswell.
- ty Treaser for initial share. I can't say it was free-bugs... Like adding 20 HTMs and so on.




Changeset 181

Command Channel, usercommands cleanup, misc

Command Channel has been refactored
- the little window is now correctly working, showing party details aswell. "Quit" button works too. Ty Hellish for report.
- addition of missing packet, && correction of existing ones.
- correction of a hi5 L2J bug related to CC (issue when inviting a party leader by the way of a party member).
- all custom messages (around... 15 ?) have been replaced for retail ones.

Usercommands
- channels commands (creation, delete, info) have been cleaned up.
- clan penalty has been improved (use of StringUtil instead of TextBuilder).

Misc
- L2LvlUpData has been dropped (useless stuff).
- L2ArmorSet and AutoChatHandler have been cleaned up/refactored.
Title: Re: Last aCis updates
Post by: Tryskell on August 29, 2011, 07:28:33 AM
Changeset 182

Quests little refactor, misc

Quests little refactor
   - All quests got their COMPLETED check moved to top of the onTalk method (previously, it was put on the switch case of the quest giver). There are 2 reasons so far :
      - one is a bugfix reason (when NPC got numerous quests, it shows even quests done, so when you click on a secondary character, this guy won't have proper html sent => "I have no tasks for you right now, emo" instead of "you already made that quest, dumbass").
      - other reason is optimization : it avoids to read a part of the quest, launching variables/switch case for a simple result. So from now, it is fastest and use less checks.
   - All quests with reward items on monsters kills (onKill method) got a unique "template" from now (if the reward type fits with the default behavior, ofc...)
   
FROM NOW, HELPERS, CONSIDER TO USE THE NEW IMPLEMENTATION (there is near nothing changed as you can see, but you will save my own time doing it directly good).
   
Misc
   - formal wear isn't considered anymore as heavy armor (passive skills from tanks and such were applied...).
   - Dimensional Rift is (normally) entirely debugged. I rewrite my own rewrite to fit with Vonak's experience. Ty to him.
   - "dist" folder on DP build dissapears. That avoids 1 useless double click... Lol.
   - Q009 and Q010 have been added. Ty to the numerous contributors (4 !) for those 2 worthless quests :D.
   - subclass checks : addition of summon check and "inventory bigger than 80% in term of slots availability". The existing check about overall weight has been hardened aswell (from now, even with one level of weight penalty, the village master smashes your face down to the ground). Reason I hardened the wight penalty is simple : imagine you're a dwarf, with 79% weight(50k of soulshots ftw). Now decide to sub Elven Elder. I think you got the picture.




Changeset 183

Q017, 258 & 626. Ty fernandopm && Richijs4 :).




Changeset 184

Items reuse (again), quests, misc.

   - Items reuses are fixed (both scrolls and potions). I hope it's final implementation.
   - Elixirs-type skills now display successfully the reuse in shortcut bar.
   - Addition of Q018, ty Richijs4 for share.
   - little fix on Q037, ty Vhalior for testing.
   - correction of some HTMs typos, and 5 emptys bypasses.
Title: Re: Last aCis updates
Post by: Tryskell on August 30, 2011, 07:54:09 PM
Changeset 185

L2Multisell rework, misc.

L2Multisell rework
   - added a check to avoid enchant exploit.
   - added a check on inventory slots/weight. PS : it doesn't take in consideration your quest items slots. Cry on forum if different (if you got PROOFS).
   - corrected an issue about buying multiple reputation items and only the reputation price of one item was taken (both check, message, and amount decrease).
   - added a check on the NPC you're talking. If you're in a strange state (dead, masturb...), or if you're too far, or if the NPC isn't the good type of NPC, OK button doesn't answer to your frenetic mouse clicks.
   - cleaned all multisells lists which don't need maintainEnchantement statut (minimize exploits -- if it's still possible).
   - added a message which make a sound when you success ! * AwESoMe ding *
   - L2Multisell instance is now loaded at server loading, under Items tab. Added to that, Singletonization.
   - L2Multisell doesn't load anymore broken XMLs.
   
Misc
   - cleaned up some methods on L2Character (experimental stuff, as some synchronized stuff have been killed). Consider report any retard things on stats changes and stats broadcast.
   - StatusUpdate cleanup. Only one way to call it from now.
   - Some HTMs typos. Death to <br1>.
   - RequestSellItem packet (some checks added as L2Multisell, and general refactor).
   - RequestBuyItem got his NPC check improved (on L2Multisell idea).
   - no more message/method launched when you take Clan Imperium skill (as repu cost is 0, pointless repu calculation and message).
Title: Re: Last aCis updates
Post by: Tryskell on September 01, 2011, 12:07:03 AM
Changeset 186

LoginController rework, misc.

LS / LoginController
   - added a config to on/off all LS logs (off by default from now to avoid to waste performances filling a .txt)
   - improved the login method (I hope it didn't destroy anything as many synchronized dissapeared, so far trying to dual login leads to the same fail)
   - the general look of LS messages has been refreshed.
   - you can't add twice the same IP on ban now (better said, avoid to fill if already existing).
   - some code reorganization (drop of useless Log, move of printSection method).
   - many typos.
   
Misc
   - one table has been dropped (merchant_lease). The uses of it were useless aswell (DELETE type commands on empty table...).




Changeset 187

Deletion of Telnet, addition of DeadlockDetector.

   - Telnet was crappy and not really user-friendly ; let's see for alternative ways :).
   - DeadlockDetector is a tool to see when tasks aren't correctly synced. When it mustn't be used on a live server, I invite to use it on your test lab, as much as you can, to eventually see errors and report.
   - some typos.
Title: Re: Last aCis updates
Post by: Tryskell on September 02, 2011, 06:08:43 PM
Changeset 188

Golden Ram Mofos.

   - Addition of Q109 && Q628.
   - Golden Ram crews got their own instance, showing htms following state quest (3 different HTMs for 2 NPCs, 2 diff for 2 others).
   - Addition of a missing NPC (corpse).
   - Mercenaries sentries can't speak. Move the check from "chatWindow" to "onAction" method (avoids stuff such as random animation, and so on).
   
I'm aware the corpse is flying. All collisions values will be tweaked later, at the same time, during NPCs refactor. From the moment you can click on it at this moment... Not a big deal.
Title: Re: Last aCis updates
Post by: Tryskell on September 03, 2011, 11:32:05 PM
Changeset 189

2 quests, many misc.

   - Addition of Q276 and Q509, ty fernandopm for initial share.
   - Addition of getClanLeaderQuestState() method (see Q509 for the use).
   - Paagrio -> Pa'agrio typo in all HTMs and quests.
   - Better use of Quest stuff. Now consider to use isCreated() / isStarted() / isCompleted().
   - Fix all NPCs instances who weren't yet invul + immune to effects. If you find a mistake, please tell it fast (so far no issue for Artefact, perhaps signet stuff ? I don't think so.)
   - Fix the sex save at player's restart, ty Vhalior (I don't miss you emo).
   - Added retail-like Dance of Protection core + DP (30% resist to terrain-type damage).
   - Added Plague Golem (activation + some little fixes).
   
Once again for quest helpers, consider to CHANGE "st.getState() == State.BLABLA" for related stuff (isCreated() / isStarted() / isCompleted()). This is just more clean.
Title: Re: Last aCis updates
Post by: Tryskell on October 10, 2011, 04:57:04 AM
I'm lazy to post missing changesets. Just check on timeline.
Title: Re: Last aCis updates
Post by: Tryskell on October 10, 2011, 04:58:29 AM
Changeset 197

Baium, Archers AI, quests, misc.


Baium is now almost retail like*
   - Angel AI has been implemented. Angels stop to attack when you disarm your weapon, and they got a chaotic behavior (shuffle targets).
   - angels are put as raid minion (avoid champion behavior for example) and are setted to running mod by default.
   
Archers AI : the behavior of archers is now OFF-like.
   - They got bigger probability to dodge, they dodge always according to your position (never cross your path), and the new position is not random anymore, they go now farer ("300 fixed" instead of "random 100", leading to stupid behavior such as moving near you).
   - As the behavior is only for archers, the npc_ai_data as been cleaned up of dodge infos (all is hardcoded). Check is only made on the AI Type.
   - L2J topic : http://l2jserver.com/forum/viewtopic.php?f=69&t=23743
   
Quests
   - addition of Q158, Q159 && Q160. Ty fernandopm, as always :).
   
Misc
   - you can now attack NPCs. Restriction is removed as now NPCs are immortal, and skills don't effect them aswell.
   - canTarget method is moved from L2Npc to L2PcInstance.
   - the target system of pets as been cleaned up. It was kinda messed.
   
*There's still an issue about teleToLocation (waker doesn't see complete animation).
Title: Re: Last aCis updates
Post by: Tryskell on October 12, 2011, 05:59:45 PM
Changeset 198

Doors XMLization, doors/siege misc && quests


Doors are XMLized from now.
   - Both castle doors (sql) and general doors (.csv) are now melted in a unique doors.xml. Ty DiNoR for the good work on DP (using L2OFF values) and Treaser for initial patch (including only normal doors).
   - implementation of isWall (only siege summons can break walls from now). Can be seen through SHIFT + left click door panel.
   
Doors/siege misc
   - fix of a bug where you could hit a door CTRL + skill it.
   - walls/doors are now invul when siege isn't available (in case of...).
   - Flame and normal CTs don't make you buggy anymore if you spam click on them.

Quests
   - addition of Q267, Q271 && Q619.
   - Q267 needed the move of a NPC spawn (wrong spawn).
Title: Re: Last aCis updates
Post by: Tryskell on October 20, 2011, 02:54:45 AM
Changeset 199

Formulas fix, quests, misc

Formulas fix (skill success)
   - those formulas are now based on L2JFree, and then tweaked (pure custom following my own tastes). The "pure custom" can afraid you, but both L2JFree and L2J are custom, from IL to hi5. And both don't fit with my own knowledge of L2 (L2JFree doesn't impact enough, L2J impacts *far* too much as some of you correctly warned me - fighterboss :p).
   - difference of levels got a real impact (negative is even bigger than positive) from now. Enchant and matkModifier doesn't break the harmony of the formula. I can't assure you won't have 10% luck with +500 weapon ofc...
   - skill success is now 1% to 99% max.
   - magic success is now heavily affected by level of skill or level of player. You can't do 100% damage using Wind Strike at high level for exemple.
   - the whole calculation has been seriously reduced for the best performance (as MEN/STR squares precomputed).
   - calcSkillVulnerability is now a %, not a fockin addition anymore. Previously 50% base - 40%. Now, 50% base * 0,6. Simple.
   
ALL USED FORMULAS ARE FULLY EXPERIMENTAL. I TESTED THEM FOR ONE DAY, BUT PERHAPS I MISSED THE BEHAVIOR OF A SPECIAL SKILL AND SUCH.

Quests
   - use of a new "system" to make quests. Many quests are now faster (avoid to read deeper in quest) and consumes less RAM (avoids int[] uses)
   - some corrections have been made (3-4 little bugs, some typos).
   - addition of 6 quests, ty fernandopm for the good work (and me aswell to correct muhaha :P).
   
Misc
   - fix an eventual rare NPE (ty SweeTs for report).
   - addition of an AI for speaking NPCs (hit/speak and death/speak types). More NPCs will come with time, and surely that new original AI will be modified (NpcString ?).
   - fix of quest monsters wrong spawns for noblesse quest (I think ? lol), and fix SoDA spawns on deepest central room (with Merkenis, one of the new speaking NPCs).
   - deletion of minChance, maxChance && pvpPower from L2Skill (unused stuff and/or hardcoded from now).
   - fix an issue on admin panel (ty Sikken for little fix)
Title: Re: Last aCis updates
Post by: Tryskell on October 21, 2011, 08:01:28 PM
Changeset 200

Three new quests, ty Fernandopm.




Changeset 201

Doormen, misc

Doormen
   - castle doormen are now retail-like (possibility to teleport in and out, drop of "open/close all doors" function).
   - addition of 56 teleports location.
   - unhardcode all CHDoormen HTMs.
   - addition of many missing Doormen (Siegable CHs ones, 2 at Frontier Border) and fix some templates (Doormen of Hell were bugged as hell).
   - drop of all useless HTMs.
   
Misc
   - GmListTable is moved on datatable section.
   - 2 spawns of Squashs have been dropped (in 4s...) Ty Vonak.
   - TaskPriority is dropped (useless crap).
   
This commit doesn't fix yet CH doors issue.
Title: Re: Last aCis updates
Post by: Tryskell on October 26, 2011, 11:56:47 AM
Changeset 202

Auction, spawnlist, misc

The commit was long to come because my first idea was to implement siegable CHs. Unfortunately, only 4/6 are actually made on L2J, and BigBoss still work on it. So I prefer to wait and use my time in other things (pointless to do the same he is doing, plus he does it well).

Auction system
   - The structure is corrected, and improved. HTMs are corrected following L2OFF (minus the size problem).
   - Initial auctions list is off-like. You can directly see actual number of actual bids aswell (number in []).
   - All bypasses which needed a security check (about clan and/or with warehouse check) are secured.
   - The maximum of retail messages have been used (which avoids string uses).
   - One unused table dissapears, and auction.sql got 3 columns dropped.
   - The lease is correctly removed when you put an auction in sell. As retail, you receive back your lease only if the CH is sold.

Spawnlist
   - Added 12~ spawns (Fortress of the Dead, mainly).
   - Dropped all mobs initially spawned on Siegable Clan Halls (around 100+). They must be spawned via their own SQLs.
   
Misc
   - Baium's Archangels aren't invul anymore. After all, they each got 50% Baium's HPs and a heal skill. Who would be stupid to kill 3,5 Baium.
   - Autosoulshot behavior is OFF-like.
   - CP/HP/MP are correctly filled at character creation (0/max/max).
   - L2DoorInstance onAction behavior is OFF-like.
   - mini tweak in L2AttackableAI, I hope it won't fock something.
   - CharSelected serverpacket cleanup (2 infos added, and 8 empty/useless writeD are dropped).
   - Addition of formatDate method to format the date as you want on a String (avoid String.valueOf and easier readability).

PS : I'm aware there are stills issues on auction (like the 7 days period where you can't put back an auction, missing comment use).Let's say from 80%, I moved to 90%.
Title: Re: Last aCis updates
Post by: Tryskell on October 28, 2011, 11:07:59 PM
Changeset 203

Feedable/Tamed Beasts AI rework, 3 quests, misc.

Feedable/Tamed Beasts (changes compared to L2J).
   - drop of the invisible timer (20min). The only timer is the check of 1min to consume food.
   - Tamed beasts don't attack you when you kill others pets (faction clan lol), nor when you hit them (they still buff themselves, dunno why).
   - Tamed beasts disappear if they go out the Wild Beast Reserve (13k radius compared to central tower).
   - Tamed beasts don't buff you if you already got the buff it wanted to buff with. Understand you won't be buffed 4 times with Guidance.
   - Mana recharge is seperated of the heal condition. There's now a HP and MP condition for each case.
   - The AI of Tamed Beast is as following : 25% heal, 25% mana recharge, 25% debuff, 25% nothing. It replaces all others random chances. The fact it goes on the "heal" option doesn't mean it will heal you. The pet must have the skill in his skill list. You must be low HP/MP aswell (50%).

Quests
   - addition of Q038, Q039, and Q263. Ty Fernandopm.
   
Misc
   - addition of "//reload acar", acar stands for "admin command access right" (ty DjSterios).
   - "quest" option is only for single quest. Previous "//reload quest" has been changed for "//reload scripts".
   - "server_menu.htm" got a combobox listing all reload options from now. As "quest" need a parameter, I couldn't include on it.
   - You can now restart during a fight as a GM (ty DjSterios).
   - Old changes on MyTargetSelected have been reverted.
Title: Re: Last aCis updates
Post by: Tryskell on November 02, 2011, 07:18:55 PM
Changeset 204

Quests, misc

Quests
   - addition of Q294, Q403, Q406 && Q508 (ty fernandopm and Alexa).
   - little corrections on Q401 && Q509.
   
Misc
   - No more ghost messages between 2 blows (ty RaphaelFersan).
   - Tamed Beasts correctly debuff (inverted check, I thought it was a npcskills issue but not).
Title: Re: Last aCis updates
Post by: Tryskell on November 03, 2011, 07:54:31 AM
Changeset 205

Quests, regex pattern, misc


Quests - addition of 3 quests.
   - Q020, Q046 && Q661. Ty fernadopm and M4N0LIS.
   - numerous typos on Q045, and light typos everywhere (enjoy "replace" tool).
   
Regex - I feel greeks will howl like werewolf at midnight.
   - Name pattern is now hardcoded (generic regex is replaced by hardcoded pattern). It means related configs have been dropped.
   - those useful methods (isValidName / isValidPlayerName) have been cleaned up then put on Util, as it can be used on many places.
   - settitle and setname have been secured using isValidPlayerName method. It means you can't give anymore a stupid name with strange characters. You can thank SweeTs. PS : you still can attribute yourself a stupid name editing database directly. Well if you decide to pull the trigger, I can do even better (like kicking all noobs with not regular names at Enterworld).
   
Misc
   - fix CH doors issue (coming with XMLization of doors). I don't get why it works like that and not before, honestly.
   - addition of an actionFailed packet when you massclick on doors, to avoid to be stucked.
   - PetNameTable has been dropped (as 50% of that file has been put on Util with regex change, only one method was left... I decided to move it).
   - the correct message is shown when you create a character with invalid name (before, only "16 characters" message was shown).
Title: Re: Last aCis updates
Post by: Tryskell on November 07, 2011, 01:13:13 AM
Changeset 206

Dr. Chaos, KKnD Movie Maker, misc


Dr. Chaos - fully revisited (x2,5 code compared to L2J).
   - addition of a status checker. This status leads the spawn of one or other NPC (Dr Chaos - npc version - or Golem - boss). This timer reset the boss if he isn't killed before 30min. When killed, the regular boss timer is applied, and will respawn the NPC version. Et caetera, et caetera.
   - addition of 2 ways to make him crazy : staying near him lower a timer (base 30sec, -1sec each time you stand near him). If you speak to him, it reduces that timer too (1-5 seconds). He got 3 different HTMs following crazy state.
   - complete rework of the animation, the NPC type will show 3 animations in a defined order, and the golem will show one aswell.
   - addition of 6 out 7 chat speech (3 random when he attacks, 1 at death, 1 when paranoia timer reaches 15secs and 1 when you make him crazy).
   
KKnD's Movie Maker - added to normal code found on L2J forums, here are the changes :
   - unhardcoded HTMs, and graphically enhanced. A mini-tutorial explains to you the basic behavior.
   - correction of all typos, both on HTMs/code style.
   - exceptions are catched when needed (index bound of exception).
   
Misc
   - fix the "spawn protection" config (ty djSt3rios for report and fix).
   - modify the way to select player slot (harder, better, stronger, lalalalala~).
   - A banned player is now really banned (check is made before the L2PcInstance object is loaded).
   - pets are correctly stored/saved at player's save.
   - addition of addAttackActId() method. Part of a previous add.
   
PS : Obviously, as there are 0 infos about Dr. Chaos (2 useless topics on official forums, 0 videos, and such), I made an enhanced CUSTOM version. I prefer a custom WORKING version than a custom BROKEN version personally. Actual L2J code is broken (needs server restart to work correctly once dead).
Title: Re: Last aCis updates
Post by: Tryskell on November 08, 2011, 08:56:52 PM
Changeset 207

SystemMessage rework, misc.


This commit needs far more tests than I actually did, anyway I commit it (that's 250+ files edited... 2,5k errors to correct).

SystemMessage is refactored following actual L2J. The enum is replaced by an array, and a fast build system is included. Some SystemMessageId descriptions are actually wrong (as it's a raw copy/paste), but that doesn't influence the process, until you use the correct id, whatever name it got, it sends the correct msgId...

I decided to use the short version when possible. Aka, you can do "player.sendPacket(msgId)", if "player" is a L2PcInstance it will work. I just generalized to all possible cases that writing system.

Misc
   - siege golems as normal summons are attacked by siege guards from now.
   - you can't summon a siege golem inside an sieged castle anymore. Tested only on Gludio... No reason it bugs for others until zones suck.
   - CreatureSay got support to use SystemMessageId.
   - Many typos on multiple files.
   - a recent L2J commit about .shared() on recipes and quest timers fastmaps (atm, haven't access to L2J timeline).
Title: Re: Last aCis updates
Post by: Tryskell on November 10, 2011, 10:40:23 PM
Changeset 208

Retail Newbie system.


The first character of an account reaching lvl 6 is considered as a Newbie character. Others characters - even if they're older in term of creation but never reached lvl 6 - aren't considered as newbies. At level 25, the newbie character isn't considered as newbie anymore.

System includes :
   - addition of newbie state (objectId of the "Choosen One") in accounts.sql.
   - drop of the newbie state of characters.sql.
   - Modified methods uses :
      - isNewbie() - boolean type, makes the check about BOTH level (6 to 25) and newbie state. Use it fr regular checks.
      - getNewbieState() - int, returns the objectId (useful to check player objectId with registered objectId without level check)
      - updateNewbieState() to register newbie state (happens in PcStat)
      - restoreNewbieState() to restore newbie state (happens in CharacterSelected)

Ty to Alexa for initial patch.




Changeset 209

Quests slight rework.


All quests using a COMPLETED state have been included back in the switch case, due to the "new way" of quests (main switch about states, not anymore on npc). Added to that, some variables are now initiliazed where it's needed (aka in case.STARTED), and not before or after.
Title: Re: Last aCis updates
Post by: Tryskell on November 11, 2011, 01:20:25 PM
Changeset 210

Shadow weapon restrictions.


Ty to RaphaelFersan and Alexa tries.

However, that wasn't enough :P. Added to L2J, addition of a link with Coupon Ticket multisell (as L2OFF, surely the same than village masters offer to you). As Alexa suggested, multisells are seperated by grade (btw a black hole in a multisell means you messed it, Alexa ;p).




Changeset 211

Little summons update


   - fix the ghost summon issue.
   - aggro is given to summoner at summon's death (not on pets).
   - summons are protected at spawn (if spawn protection config is activated).
   - summons use the correct value of beast ss/sps instead of regular 1 value.

Misc

   - HTMs typos on previous commit.
   - typos on Q619, ty Vhalior.
Title: Re: Last aCis updates
Post by: Tryskell on November 17, 2011, 09:18:42 AM
Changeset 212

3 quests, Tutorial core side.

Quests
   - addition of Q105, Q116 && Q260, ty EnDmOsT.
   - fix Q158, ty Vhalior.

Tutorial core side
   - addition of 4 missing clientpackets.
   - addition of missing events.
   - name of the quest will be "Tutorial". It will be perhaps even dropped of quests folder if there is no need for it to be here.




Changeset 213

Six quests, misc.

Quests
   - addition of Q117, Q262, Q617, Q650, Q652 && Q653. Ty fernandopm && EnDmOsT for the good work.
   - Q652 && Q653 are partially rewritted compared to L2J. The initial spawn and respawn of NPCs are handled by scripts directly. HTMs have been improved too, as L2OFF itself seems wrong.
   - Q650 needed a multisell change, as rewards were wrong.
   - some minor typos on existing quests.
   
Misc (L2Party)
   - A bug concerning messages when your party member obtain an item with > 1 amount has been corrected. Ty Sikken for the report.
   - A message about obtaining enchanted item has been added (missing on current L2J trunk...)
   - Some eventuals NPEs have been fixed (3-4), and a general cleanup has been made (sometimes coupled with code improvements).




Changeset 214

Q295, Q297 && Q362 - ty fernandopm && EnDmOsT.
Title: Re: Last aCis updates
Post by: Tryskell on November 29, 2011, 07:39:16 PM
I decided to let anyone check detailed version of that topic, like that eventual testers can test things more accurately. I'm a whore, but not a sadist.

Changeset 215

Olympiads (part I), misc


Olympiads

Well that was kinda long and I'm fed up to test all again and again (tri-boxing). Part I will be followed in future by part II when/if problems are found. For the moment, I know one "major issue": one of player (the second registering so far) see his own HP bar instead of enemy's.

The implementation is supposed to be FINAL. Report anything which isn't retail-like in order I correct it. If you're Inner circle member you got access to my notes about Olympiads. So consider to use them, and try to find infos on others websites if you think something is wrong.

So here is a mini list of features :
- Freya Olympiads downgraded to IL, including damage amount count (summons too), retail uses of olympiad zones, improved timing system, pretty organization splitting.
- retail olympiads observation system, with updated state (in progress, counting time, terminated,...)
- heroes diaries and hero message (@Monument of Heroes).
- retail items usage (firecrackers / echoes crystals / energy stones allowed - addition of isOlyAllowedItem() -, autosoulshot/manual BSS are forgiven).
- retail Hero pickup at the Monument (leeched from Sigmo, which leeched from another pack surely).
- reorganization of admin commands based on Olympiads in a particular handler, AdminOlympiad. Some commands are refactored (setnoble, sethero) to be far lighter.

Misc

- the pet's name on summon item is now updated when you choose a pet's name.
- improvement about clientStartAutoAttack (when your summon hits an enemy, you're in attack stance ; now it sends far lesser packets)
- more uses of getActingPlayer().
- logout packet doesn't update items anymore. It seems it wasn't needed at all (even crashing client, that was saving amounts).
- IdFactory deletes many more infos if character was previously deleted (so better cleanup is made).
- addition of dropAllSummons() in L2PcInstance - do as the name says.
- correction of a couple of SystemMessageId (hi5 => back to IL).
- fix the problem with sendPacket(SystemMessageId) from L2PcInstance.
- L2SkillTeleport cleanup.
Title: Re: Last aCis updates
Post by: Tryskell on December 01, 2011, 11:38:17 PM
Changeset 216

4 quests, many misc. Ty to FighterBoss, Sikken, EnDmOsT, dEvilKinG, Vhalior && SweeTs.


4 quests
   - addition of Q296, Q636, Q640 && Q659.

Misc

   - Fix many skill reuses and hitTime to follow L2OFF. Some skills are more balanced, and globally classes which suck, suck less.
   - Corrected 2-3 HTMs typos.
   - Fix some items (Potion of Revenge && Endeavor potion, Shining Bow reuse delay,...).
   - Unhardcoded Olympiads item restriction. Drop of the previously added isOlyAllowed system, to use "is_oly_restricted", added long time ago by DiNoR. Understand now any item can be used on Olympiads, but is limited by "is_oly_restricted" when setted to True. If you find an item with/without that check when he should haven't/have it, consider to share diff patch about it. The related config is dropped.
   - Added "Blessed spiritshot for pets" in the restriction list, aswell as the autoactivation. Removed Star Shard (elven firework) from restrictions.
   - Fix Pagan Teleporter about Faded item.
   - Fix Linux DB installer (missing from previous commit). Ty DarthVader to pointing it.
Title: Re: Last aCis updates
Post by: Tryskell on December 02, 2011, 08:21:14 AM
Changeset 217

Addition of 6 quests.


Q264, Q338, Q356, Q621, Q649 && Q651. Ty to sharers.
HTM typo fix, ty vl4d to pointing it.
Title: Re: Last aCis updates
Post by: Tryskell on December 13, 2011, 08:59:40 PM
Changeset 218

Pets big update, accessories debug, little npc.sql update.


Okay, that's it. I'm first sorry for the delay. I was taking a little break trying GoD on EU server (btw my name is Tryskell, /friendinvite me if you see me ingame). I reroll a lot to make a lot of money, enjoy the free exploit...

Second, the update is quite "big", even if it's not really awesome. I had to check many things about pets, because they were entirely messed up. I hope the biggest part, if not all bugs, are now corrected. I tested almost all possiblities (force delog, etc) and all seems fine.

I had to check aswell the npc.sql Darth sent me. After a couple of checks I had to ask to Darth to split data in 2, because it was really messy (collision system is a little stupid in L2J...).



Pets updates.
   - fully fix pet weapons and armors equip, and "race" condition (hatchling/wolf/blabla). I decided to keep the old system as it was really easy to understand it. The core changes automatically the bodypart for "chest" or "r-hand" following type of item.
   - addition of a feature (dunno if it's custom, and don't report because it won't be changed) : if you right click on a pet weapon/armor from YOUR inventory, it automatically TRANSFER && EQUIPS it to your pet's inventory if you got a pet summoned. Previous equipped item is desequipped and stays on pet's inventory..
   - fully fixed stats modifiers of summons (seriously it was a pure mess, many buffs just did nothing before, pets had 0 accu/evasion).
   - decreased amount of packets sent compared to current L2J (-1 packet per 10sec, and that fix too a minor bug targeting pet window every 10 sec)
   - off-like (if not retail) transfer system at unsummoning pets. Ty SweeTs for the report. Inventories of pets are cleaned at delog/unsummon, transfered to your. There is no check about slots/weight, as it is used for DELOG (and imagine at delog that don't transfer, you lose items lol).
   - fix RequestPetUseItem behavior. Now only one itemhandler is readed (using a pet food you had twice the code readed before o_o).
   
Misc
   - fix the mythic accessory bug aCis got since 100+ revs (about 2 slots accessories). Now all is fine. Enjoy Wizard's Hat.
   - when you pickup arrows and it fits with your bow and you are arrowless, arrows are now automatically equipped. Ty bomj for report.
   - improvement of npc.sql, with the addition of retail decay system. Now all mobs got their particular timer. It debugs mobs like Gigantic Chaos Golem. Only L2Attackable are concerned, as they are the only ones supposed to die. Others use the hardcoded in core as a default, which is 7 secs (still, the sql is correctly filled anyway). Addition of all missing weapons (some can still be wrong, but it should fill a lot of templates).
   - a couple of NPE fixes (itemhandlers).
Title: Re: Last aCis updates
Post by: Tryskell on December 17, 2011, 10:39:05 PM
Changeset 219

MASSIVE UPDATE - YOU NEED TO USE JDK 7 FROM NOW.



Well it's a really huge update. JDK 7 is now needed. Ty xblx for the libs update.

GENERAL
   - Updates of all existing libs, leading to heavy changes (mainly Trove-based codes).
   - Update of base64 code.
   - Update of internal Java-engine (scripts engine) which needs JDK 7.
   - build.xml will now check if you use JDK 7 or no. If no, build will fail, and an error message will invite you to dl latest JDK.
   - Addition of L2TIntObjectHashMap on util.
   
NCPS RELATED
   - NpcTable code is fully reworked, utilitary "getters" aswell. More infos on GS start aswell.
   - update of npcskills (ty to old DiNoR rework), using L2OFF values. Changes are huge and correct known issues (ex : Prismeval island) :
      - active skills => from 15894 skills, it now loads 20844 skills.
      - passive skills => 7k~ skills added.
   - L2NpcTemplate values are now private. Creation and use of "getters". Addition of isType("").
   - Aggro value is now loaded from AI (instead of npc.sql). All aggro ranges > 1 and < 500 have been changed for 500.
   - Sieges guards AI has been updated.
   - overhit flag is reseted when the L2Attackable dies.
   - creation of _staticAIData on L2Npc, which avoids to refer to template each time.
   
PETS && SUMMONS RELATED   
   - Baby pets are fully reworked (addition of conditions such as mp consumption, pet mental behavior (betrayed, blabla), etc).
   - Tamed beasts got a little update, as getSkillsArray() exist now.
   - Levels of pets skills are now correctly calculated. It can use lvl 1-12 skills levels following pet level.
   - fix an issue about items consumption @ SiegeSummon, leading to "ghosts" summons. Ty xblx for fix.
   - if you try to use a skill than a summon should have but haven't, it shows you the missing skillId to add on npcskills.
   - When you try to use a pet skill but difference of lvl is > 20, you can't control the pet.
   
MISC
   - Harvest/Sow skillhandlers are reworked, and Seed system too.
   - addition of _skillMaxLevel in SkillTable, preloading max level of skills in a map for future uses (before it was made on the fly).
   - orc mages are now considered as mages, not as fighters anymore (should fix the SpellForce issue).
   - fix Orfen messages for retail ones.
   - Correction of a couple of items. Ty SweeTs for patch, it is *untested* but should work at first look.


I'm aware there's an issue about pets. HP/MP are not working as intented (not readed from PetDataTable). It leads to problems like a lvl 15 wolf got same HPs than a lvl 55 one, or a pet can't use properly a skill because asked MP consumption for skill use is higher than maxMP. Others stats are correctly working.
Title: Re: Last aCis updates
Post by: Tryskell on December 23, 2011, 04:59:56 PM
Changeset 220

Pets update, misc.


Ty to all contributors - Sikken, xblx, Junior, MC.

Pets are now normally fixed.
   - when a pet raises level, his stats and HP/MP infos are corrected shown.
   - Fix an issue when you give a name to your pet.
   - Pet control item is now correctly updated, both on name update and pet level raising.
   
Misc
   - Fix 4 skills.
   - Addition of Life Stones in GM shop.
   - Monastery AI sends now only one type of chat, but it is retail-like (better 1 retail than 3 customs).
   - fix 2 teleports location - untested.
   - Addition of a check to see if entered id is a valid NPC template for //polymorph. In addition, you can't transform if you're already mounted.
   - Fix an unvalid SystemMessage.
Title: Re: Last aCis updates
Post by: Tryskell on January 08, 2012, 03:19:25 AM
Changeset 221

Misc


- Addition of missing skills for 3rd class summons.
- Fix //polyself, adding check on templates.
- Remove the useless button "Diet" on admin panel.
- Addition of Ketra/Varka support. Ty fernandopm/Kenrix for their work.
- Correct some things on " chat (GMs aren't blocked anymore), and send systemMessage when possible.
- porta skill (GetPlayer) is now retail-like.
- Fix an issue about BossZone (L2Summon != L2SummonInstance)
- Avoid to stuck client if you try to exploit augment panel (trying to drop weapon/gemstones/LS).
Title: Re: Last aCis updates
Post by: Tryskell on January 11, 2012, 09:43:01 PM
Changeset 222

Quests and misc

   - Addition of Q350, Q618, Q645 && Q646. Ty to sharers.
   - Fix the systemMessage about double summon.
   - Addition of a systemMessage when pet pickups a full item.
   - eventual fix of a NPE.
Title: Re: Last aCis updates
Post by: Tryskell on January 27, 2012, 01:06:03 AM
Changeset 223

Addition of 7 quests - ty to sharers.

Title: Re: Last aCis updates
Post by: Tryskell on February 06, 2012, 05:14:59 AM
Changeset 226

Quests and minor fixes - ty to the numerous contributors.


Quests
   - addition of Q298, Q317, Q368, Q370 && Q432;
   - fix a couple of existing quests (correct solo => party quest statut, and deletion of useless checks).
   
Fixes
   - addition of a missing NPC spawn.
   - correction of an HTM.
   - 2 items fixed.
   
I must apologize about current project's progression. I played a lot those days.
I got an Othel rogue lvl 86 40% (with 3 subclasses, 75 HE / 75 ES / 65 Pal) on Core server, so don't search where was gone my time...
Title: Re: Last aCis updates
Post by: Tryskell on February 07, 2012, 10:52:50 AM
Changeset 227

Addition of 8 quests, ty to all sharers.

   - Q124, Q299, Q300, Q328, Q352, Q353, Q355 && Q366.
   
TO SHARERS :
   - If you made one of those quests, please READ and ANALYZE the differences between your old share (they are kept in Archives section, you normally got access) and the current rewrite. From looking differences, you can learn what I dislike as typo, what, why and how I corrected.
   - I would like to repeat, as Inner Circle you got access to some internal infos, such as L2OFF HTMs. Use it !
   - And ofc, read a walkthrough of concerned quest when you code the quest. The reward formula is one thing, the complete walkthrough is another ! :D
Title: Re: Last aCis updates
Post by: Tryskell on February 10, 2012, 10:31:13 PM
Changeset 228

AbstractNpcInfo, polymorph, summons/pets, quests, misc.


Implementation of AbstractNpcInfo
   - SummonInfo, PolyInfo and NpcInfo share the same Abstract layer.
   - CharInfo code about polymorph is cleaned. All is made with knownlist.
   - Addition of a config to on/off NPC crests (when a clan own castle linked to a town). Ty SweeTs for inspiration.
   
Polymorph
   - drop of 3 admincommands (polyself).
   - polymorph commands work by default on yourself if no target is found.
   - addition of success messages on command uses.
   
Summons / pets
   - Addition of a config to on/off owner's clan crest on summons.
   - Fix titles : summons (blue color) and pets (green color).
   - Fix team circle (duel), karma and pvp flag (summons color name, based on owner's).
   
Misc
   - Addition of broadcastNpcSay(String) in L2Npc, and fix all uses for that new method.
   - Drop of setKarmaFlag(int) and broadcastTitleInfo().
   - Addition of 2 quests (2/5 FoD quests made) : Q021 && Q022.
   - Addition of retail chat windows for Mysterious Wizard (located near spawn of FoD).
   - Addition of minions infos for 2 mobs in FoD.
   - L2CharTemplate rework (private variables, public getters).
   
Title: Re: Last aCis updates
Post by: Tryskell on February 11, 2012, 01:30:08 AM
Changeset 229

Henna rework, ty xblx for the good work.

   - XMLization of hennas ; 3 SQLs are dropped and their infos are written in a unique file : henna.xml.
   - fix an issue with Human Mage class (class nÂÃ,°10), which could wear dyes - but shouldn't be able.
Title: Re: Last aCis updates
Post by: Tryskell on February 14, 2012, 06:50:41 PM
Changeset 230

Numerous cleanups on clientpackets, misc


Clientpackets
   - addition of null checks (around 20, if not more), "final" keyword.
   - drop of the personal Logger for each clientpacket, they share the same now.
   - reworked a couple of packets : checks better placed, better use of variables when possible, etc.
   
Misc
   - addition of TradeItemUpdate serverpacket, based on L2JBroken one (and surely based on another russian pack), ty Kenrix.
   - fix the problem with olympiads tokens and fix the message aswell (ty McMaGo, Brucutu, SweeTs for reports).
   - some XMLs tables are refreshed ; less objects created.
Title: Re: Last aCis updates
Post by: Tryskell on February 16, 2012, 11:38:26 PM
Changeset 231

Quests, misc


Quests
   - Addition of Q023, Q364 && Q378.
   - Fix 2 issues in Q021.
   
Misc
   - Fix 9 SoEs and 5 others items (needed core support aswell).
   - Don't launch a pvp flag task if one already exists.
   - Don't autoattack (some skills got that behavior) if target isn't autoattackable.
   - Cleanup valueOf => parseInt/Long/Boolean (surely more to do, only in Config atm).
   - You don't lose your buffs anymore if you cancel the autoress from PheonixBless type skills (but you still lose PhoenixBless effect && Noblesse).
Title: Re: Last aCis updates
Post by: Tryskell on February 18, 2012, 08:20:36 PM
Changeset 232

4 quests, misc.

   - Addition of Q291, Q303, Q347 && Q354.
   - Fix Judgment (can't be used with dual sword).
   - Fix 4S NPE at shutdown (drop existing tasks before bossZones cleanup).
   - Correct /gmlist check (my fault)
   - RequestManorList packet under static format.
Title: Re: Last aCis updates
Post by: Tryskell on February 20, 2012, 06:14:22 AM
Changeset 233

AQ, commands and misc


AQ
   - fix Queen Ant death NPE ; avoid to register infos if AQ is supposed to be already dead (you can summon it manually and kill her, but it won't change anything in database, such as respawn timer and others).
   - drop of onAggroRange() stuff (probably postIL stuff).
   - drop of double code on spawnBoss().
   - addition of missing minions (nurses and Royal Guards).

Commands
   - spawn_monster : drop that deprecated command, and rework of incriminated HTMs to use regular //spawn command.
   - npc_edit : drop of "armor" and "absorbLevel", addition of "enchant".
   - npcinfo : addition of "corpse delay" and "enchant".

Misc
   - autoAttackCondition() method rewrite.
   - update of EffectParalize and EffectPetrification (use of effect flag), now you will stop to move.
   - cleanup in Raid curses ; a skill will put you silence no matter what skill type it was (as silence is both for physic and magic skill), drop of some code (handled by effects due to effects rework).
   - StaticObjects cleanup (drop of the map storing objects, no more instanciation). Ty Java-man.
   - drop of giveRaidCurse() method and uses (was always true) ; used only once in a postIL quest.
   - an academy member haven't to see wartag clan enemy member, and vice-versa.
   - NPE corrected in RequestActionUse and unsummon actions are harmonized between servitors and pets.
   - rewrite of my previous commit about karma/pvp flag on summons. There's a special packet made for that, RelationChanged, instead of SummonInfo/CharInfo. Addition of broadcastRelationsChanges() method on L2Playable, overridden in L2PcInstance && L2Summon. Normally from now, the relation between summons && players (autoattackable when pvpflag/karma/siege) should be ok.
   - cleanup Broadcast.java, adding multiple null checks and put Collections with "final" key.
   - fix one RB location, ty 100500.
   - fix a stupid error I included myself ; 2 mobs from different clans could help each others... Ofc only same clan can help each other. Rehabilitation of the faction name check.
Title: Re: Last aCis updates
Post by: Tryskell on February 23, 2012, 04:12:53 PM
Changeset 234

Misc

   - getType() is dropped both for clientpackets and serverpackets, ty java-man.
   - L2HennaInstance is dropped, we work only with templates from now, ty xblx.
   - all serverpackets sending only opcodes (triggers packets) got a STATIC_PACKET system. Triggers packets structure is harmonized.
Title: Re: Last aCis updates
Post by: Tryskell on February 26, 2012, 11:21:38 PM
Changeset 235

Olympiads && Heroes, misc


Olympiads && Heroes
   - partial addition of L2J fix 5188. Ty Zoey76. Read it on L2J timeline for more infos.
   - split one check in 2 for checkNoble( method, and retail systemMessages for both of them.
   - you can't see inactive heroes anymore on Monument of Heroes.
   - You can't activate hero state if you're on a subclass or are less than level 76 on you main class.
   - following values have been modified to fit with IL - using PMFun infos - (the previous refactor has been made from C4 infos) :
      - length of a match : 3min to 6min.
      - divider for non classed matches : 3 to 5.
      - number of needed matches to pretend to Hero status : 5 to 9.
      - waiting time before Stadium teleport : 30sec to 120sec.
      - preparation time : 45sec to 60sec.
   - Buff section is now handled 20secs before match beginning.
   - A second full heal is applied during buff section (the first occurs at teleport).
   - Shops, as sit state, are broken when you teleport IN and OUT of an stadium. Addition of forceStandUp() method on L2PcInstance for easier use.
   - Buffs are cleaned up only at teleport OUT, not directly after the victory/defeat/tie of the match.
   
Misc
   - AdminMovieMaker : IOOB exception catched (ty SweeTs report), 2 typos fixed in commands (bro'a'dcast, not brodcast), don't create intermediate variables "val" && "id".
   - Cleanup of L2AttackableAI/L2NpcTemplate : drop of useless code, add of public getters, use of !isEmpty() instead of != null. Should drop the NPE when a mob tries to use a skill.
   - revert magic fail formula (custom L2JFree => L2J). I kept the accuracy at 2 decimals.
   - break enchant process and send systemMessage BUT CONTINUE the action in following conditions :
      - you give / take an item from your pet.
      - you give / take an item from warehouse.
      - you are pressing any type of bypass link from a warehouse NPC type (castle / normal).
   - can't interact anymore with any NPC if you're on transaction process.
   - if you're actually in transaction process, break following actions :
      - you give / take an item from your pet.
      - you give / take an item from warehouse.
   - fix Chant of Victory issue with rCrit (basemul != mul).
   
Report any issue on Olympiads, and CLEAN CORRECTED ISSUES in the dedicated thread, ty in advance.
Title: Re: Last aCis updates
Post by: Tryskell on March 02, 2012, 11:37:28 PM
Changeset 236

Formatting rules, took from latest L2J, both for DP (java scripts) and core.

   - Indent all files correctly, and remove useless spaces.
   - "for" loop enhancements when possible.
   - put final keyword when possible.
   - Fix 1600+ warnings on Javadoc (at hand...).
   - L2DabaseFactory.close() addition.
   
To be honest, I'm not trully satisfied about arrays type, mainly when used in int[][] or in maps - results become unreadable. Perhaps later I will change it.

I will use an Eclipse feature (=> http://stackoverflow.com/questions/234594/eclipse-can-you-format-code-on-save (http://stackoverflow.com/questions/234594/eclipse-can-you-format-code-on-save)) using those new templates, which mean there shouldn't have anymore commits with empty spaces, commas change, indentation and others misc. If I redo a change it will be general (like array exemple said higher).

"if/else", "for" brackets aren't automatically edited. There wasn't the rule I currently use.
Title: Re: Last aCis updates
Post by: Tryskell on March 03, 2012, 09:44:07 PM
Changeset 237

L2Teleporter && L2DungeonGatekeeper, misc.


L2Teleporter && L2DungeonGatekeeper
   - Teleporters night price is implemented (price /2 when real life night occurs).
   - Split L2Teleporter to 2 distincts entities. Avoid to use a big switch about npcId.
   - Gatekeeper Ziggurat conditions are now implemented (must be from the winning side).
   - fix Giran Harbor GK (drop one location, fix prices).
   
Misc
   - static packet for ShowMiniMap (case of regular map).
   - static packet for EnchantResult, and fix the previous commit (switch from 0 - considered as a success - to 2 - abort).
   - RBs are now automatically concerned by MANADAM and MDOT type skills (but still got regular resistance from mobs).
Title: Re: Last aCis updates
Post by: Tryskell on March 05, 2012, 08:09:43 AM
Changeset 238

Movement rework, misc


Movement rework
   - This is a code I found on L2J forums. I searched for initial post, but didn't find back, lol. Haven't clue about credits, I just can say the guy is russian. Sorry stranger for the no-credits :/.
   - This code is EXPERIMENTAL ; I didn't find strange issues after 2 days, but report if any occurs.
   - Fix the "ghost attack" when you move and a mob attacks you. Now the complete attack animation occurs. And yes, it's normal the monster does the animation even if you are running far from him. Works the same on L2OFF. Before the attack was occuring but you didn't see the animation and the monster was still moving.
   
Misc
   - /unstuck doesn't work anymore when you are afraid. Drop a double check aswell.
   - Fix NPEs on augment exploit. Happen when you don't sleep a lot.
   - Drop the old intention when you cast a skill (exemple, when you were moving). If a particular intention hadn't to be dropped while casting, report on forum.
   - Reflect damage skills type don't kill you anymore (stuck at 1). Well, shouldn't.
Title: Re: Last aCis updates
Post by: Tryskell on March 19, 2012, 02:11:12 PM
Changeset 239

Seven Signs refactor, AutoChatHandler rework, quests, misc.


Seven Signs refactor
   - Update the main engine, adding multiple missing things :
      - Seal of Strife effects (blocking siege summon, debuff/buff, limit uses of mercenary tickets)
      - can't have sieges and seven signs in same week (+1 week for sieges if the same)
      - Dawn/dusk crests are now correctly handled.
      - Anakim / Lilith GKs are now correctly handled (via teleports scripts). They spawn 10sec after RB death, and despawn 15min later. Old autospawn lines are obviously dropped.
   - CabaleBuffer rework.
   - Split of L2SignsPriest in 2 others entities, L2DawnPriest and L2DuskPriest.
   - Additions of 3 teleports in scripts folders.
   - complete rework of HTMs, based on latest L2J (itself based on L2OFF Gracia). HTMs are harmonized ; understand I tried to follow a generic "template" when I corrected HTMs - as the translation was approximative sometimes (Record of the Seven Seals != Record of Seven Signs)...

AutochatHandler rework
   - Migrate SQL => XML. Drop of 2 SQL tables, addition of 1 XML.
   - The engine can now read one single message and register it for multiple NPCs.

Quests
   - addition of Q113, Q319, Q320, Q341, Q385, Q634, Q637, Q638, Q647. Ty to all sharers for their initial work.

Misc
   - Fix a ClassException at TamedPetInstance when they tried to retrieve skills list.
   - L2DungeonGatekeeper instances are now invincible.
   - Fix "Rift Post" teleport option ("I want to go back to my world") via added teleports scripts.
   - L2Npc showChatWindow() method cleanup, using inheritance (split in L2FestivalGuide, L2SignsPriest && L2Auctionner).
   - Auctionners don't show anymore actual bid.
   - Observers can't use force attack anymore to target players.
   - GMs aren't hidden and invul anymore if they were observing.
   - addition of isSiegeSummonSkill() method on L2Skill.
   - partial rework of methods to correct siege date, mainly to improve performance (all actions from while loop made on a local variable, then registered in getSiegeDate(), drop of the hour from the loop).
   - addition of startQuestTimer(String name, long time) method (no npc nor player registered for it).
   - fix an Augmentation issue : gemstones weren't used... I still don't understand why.
   - addition of 100500's patch about a couple of items (L2EtcItem => L2Armor).
   - some null checks on Collection (2 on Baium), and "fix" (deleting) one logged NPE on L2AttackableAI.


PS : Q635 doesn't exist on L2J. Content is on OracleTeleport script.

Due to numerous changes, some things haven't been tested : Seven Signs complete game cycle, Festivals, AutoChatHandler uses (only when a side win, with cabale buffers). If you find errors, make a unique topic about it with all types of errors (broken HTMs, broken game cycle, or whatever). Ty in advance.
Title: Re: Last aCis updates
Post by: Tryskell on March 20, 2012, 05:12:24 PM
Changeset 240

Caches rework by Java-man.


HtmCache && CrestCache :
   - cleaner code (avoid to create 1 FastMap per type of crests, avoid CrestCache instanciation using static stuff, drop the LazyCache config)
   - reduction in memory usage (drop of FastMap usages for others types of lists - Trove and ArrayList).
   
PS : new JAR to add.
Title: Re: Last aCis updates
Post by: Tryskell on March 25, 2012, 04:39:37 PM
Changeset 241

NPC Skills


Go from 20852 skills loaded to 67807 (x3 skills). 20mo RAM usage added.
Based on L2OFF Gracia, ty agurkasz for the parsing.

If you find aberrations, please fix and/or report.
Title: Re: Last aCis updates
Post by: Tryskell on March 27, 2012, 08:49:42 PM
Changeset 242

Quests - ty to sharers.


   - Addition of Q266, Q313, Q345 && Q631.
   - Fix a little issue in Q619.

Special mention to Q345 which was missing one NPC, 50% of HTMs and 2 options of urn.
Title: Re: Last aCis updates
Post by: Tryskell on April 03, 2012, 01:03:42 AM
Changeset 243

Quests - ty to sharers.


   - Addition of Q316, Q325, Q329, Q422 && Q627.
Title: Re: Last aCis updates
Post by: Tryskell on April 28, 2012, 08:37:23 AM
Changeset 244

43 quests / quest engine, misc.


Ok, that does 3 weeks I didn't commit. I worked IRL 3 days, I reinstalled OS and softwares for 2 days, I played 1 week. So yeah, in 3 weeks I worked on project only 1 week. I don't apologize, I just let you know (yyyeaahhh, changeset used as autobiography, problem ? Want to fight ? ^^).

43 quests / Quest engine
   - sagas are implemented.
   - Varka / Ketra alliances + related quests (except magical blabla part 2) are implemented.
   - All quests sounds (6 so far, the complete amount is 8 but the 2 missing are never used) are now hardcoded and static. Ty Hasha for the idea.
   - Varka / Ketra alliance system (killing ally friend drops alliance level) is moved to KetraOrcSupport and VarkaSilenosSupport. Two checks are common to 10 different quests, on regular L2J you got 10 checks (so yeah 5x2 clone arrays of registered mobs).
   - addition of dropAlwaysQuestItems(int, int, int). That method is used when quest item drop is 100% (avoid to generate random number)
   - fix - when possible - every onKill section in order to use dropQuestItems / dropAlwaysQuestItems methods.
   - drop of the parameter in getNoQuestMsg() and getAlreadyCompletedMsg() methods.

Misc
   - mob attack stances has been harmonized through the different uses (Baium, L2AttackableAIScript, etc).
   - Paagrio => Pa'agrio typos fixes.
   - rework of broadcastPacket() method. It will use now the static system from Broadcast class. Added to that, the particular system from L2PcInstance regarding CharInfo is dropped. A special method is now used to broadcast it (named broadcastCharInfo()).
   - when you interact with a shop player, you will turn yourself in front of the player.
   - TargetSelected packet isn't sent to yourself anymore (only broadcasted to others).
   - Random tweaks on multiple methods (cleanup, checks imbrication, deletion of pointless stuff, and so on).
   - Addition of many informations regarding "sell, buy, warehouse" packets. Generally all regarding Inventory. Additions of many null checks aswell.
Title: Re: Last aCis updates
Post by: Tryskell on April 28, 2012, 11:11:22 PM
Changeset 245

Retail enchant system, quests, misc


Retail enchant system
   - differentiate fighters && magic weapons (ty rocoder for the DP parsing). Implementation of isMagical() in L2Weapon.
   - drop config related to jewelry.
   - different rate when weapon reach +15.
   - max limit is set back to unlimited.
   - the chance is now a double, not an int anymore, in order to keep accuracy (for armor).
   
Quests
   - addition of Q632 && Q642, ty Hasha && EnDmOsT.

Misc
   - some packets rework, ty Java-Man. Addition of isForThisClass() method. Hennas packets should be tested deeply, but from my few tests, they work.
   - Merge of HeroSkillTable and NobleSkillTable with SkillTable, ty Java-Man.
   - you can't PM yourself anymore (ty xblx for suggestion). It's not retail-like.
Title: Re: Last aCis updates
Post by: Tryskell on May 08, 2012, 08:29:42 PM
Changeset 246

Community Board (CB) part I, misc


CB is mostly cleaned up.
Some efforts have been made in order to use static stuff (like static strings && static ShowBoard objects).

A LOT of work is needed to complete it correctly (in disorder : cleanup hardcoded HTMs, recode HTMs to fit with IL CB dimensions (on IL, CB is more little...), add missing code, add GoD region tab)

CB
   - custom region tab has been entirely dropped.
   - friends panel is 50% implemented.
   - clan notices system is implemented, but not tested at all (and probably not working).
   - mail system is implemented, but check previous sentence for more infos.
   - Clan forums aren't created anymore if CB isn't enabled.
   
Misc
   - addReputation / takeReputation are the only commands to affect reputation (setReputation is used only for loading and as "core" for the 2 previous commands). They save *only* reputation from now, not the whole clan infos.
   - getHasCastle() and getHasHideout() have been renamed getCastleId() and getHideoutId(). Creation and use of hasCastle() and hasHideout() boolean methods.
   - getActingPlayer() uses on SiegeGuardKnownlist, GrandBoss and RaidBoss instances.
   - many random methods are cleaned up in order to create less objects, adding checks && readability.
   - addition of getClanAllies() method, used to retrieve clans in alliance.
   - Addition of AllianceInfo serverpacket (untested)
   
Reminder for future : it's better to initialize variables INSIDE a loop (in order to reduce scope range). The logic consisting to think to initialize it outside is better is false and is even worst.
Title: Re: Last aCis updates
Post by: Tryskell on May 14, 2012, 11:22:52 AM
Changeset 247

Misc

   - fix GandBossTeleporters script (HTM/SQL side). All IDs are supposed to be ok.
   - add a check for groups on Quest for radius (ty Hasha). Ideally, it needs to be spread to any solo quest.
   - cleanup (L2SiegeGuard, 2 itemhandlers with postIL stuff, AttackStanceTaskManager).
   - colors of title/name is corrected (ty TheEngo)
   - toggles are desactivated when taking a CW.
   - Drain skills HP gain effect now effects monsters (+ rework of the skillhandler).
   - correct Lotto ticket (ty Pleasure).

*normally* fix AutoChatHandler issue.
Title: Re: Last aCis updates
Post by: Tryskell on May 15, 2012, 12:35:11 AM
Changeset 248

Misc

   - Add the missing Ketra/Varka AI petrification support (allied player helping - through positive effects - neutral/enemy player which attack a friend mob). It makes the difference between who casted it aswell (pet or player is paralized depending who casted). Unfortunately, it doesn't break the cast (because onSkillSee works when skill is already launched, else it would need an ANTICIPATION of the mob).
   - Fix Raid Curse stuff (too much c/p kills the c/p), and improve a little the coding.
   - drop all "Util.contains(" checks on Monastery. Those checks are made way before, and aren't necessary on that script, as arrays and behaviors aren't melted... Mobs are individually registered.
Title: Re: Last aCis updates
Post by: Tryskell on May 17, 2012, 05:11:26 PM
Changeset 249

Primeval AI, misc


Primeval AI
   - Addition of primitive system for following behaviors :
      - Pterosaurs and TRex-es can see through Silent Move (core support needed).
      - Ancient Egg, when attacked, will call all mobs in a range of 2k (guessed... as 1k is the aggro of a lot of dinos, I x2'ed it).
      - Sprigants will launch a task every 15sec if someone enters in their aggro range (AoE skill). Task stops if sprigant is dead or if none is inside anymore.

Misc
   - addition of Q629
   - fix summon sieges skills for "Siege Golem" and "Swoop Cannon".
   - fix Sprigant's fruit and Primeval potion.
   - "String = "" > isEmpty()", "boolean == false > !boolean" && "boolean == true > boolean".
   - fix a critical issue about quest check (added in previous revision).
   - MagicSkillUse packet is completed.
   - addition of ConditionTargetHpMinMax, used for Trap Skills (avoid the ugly system of onSkillSee).
   
A lot needs to be done for PI (full trap system mostly), and it goes by gathering as many as possible informations.
Title: Re: Last aCis updates
Post by: Tryskell on May 18, 2012, 05:31:44 PM
Changeset 250

5 quests, misc

   - Addition of Q049 (untested as c/p of Q046), Q371 ,Q374, Q375 && Q603. Ty to sharers.
   - fix songs panel (drop "back" button), ty AntiViruZ.
   - drop useless skillhandler.
Title: Re: Last aCis updates
Post by: Tryskell on May 23, 2012, 07:00:57 PM
Changeset 251

Misc

   - BlockBuff / BlockDebuff core support + fixes on skills (Mystic Immunity, Day of Doom, Heroic Berserker). NPC passive aren't yet supported.
   - clan is now instantly dropped if config is setted to 0. If clans are loaded, the task is now setted to 1min rather than 5min.
   - clan notices are dropped when clan is destroyed.
   - partial cleanup of beginCast( methods.
   - [L2J 5365] addition of hasPet() and hasServitor() methods + fix range in which the pet can get XP.
   - [L2J 5373] rechargeAutoSoulShot( method doesn't use anymore switch about itemId, but items' L2ActionType.
   - creation of a .txt if user changed his name (ty Java-man).
   - *possible fix* _owner / getOwner() NPE (isAutoAttackable(), HitTask, etc). setOwner(null) was introduced when we had summon ghost issue, but since that time I found the real problem and so I revert this "fix" which probably make the cleanup hard.




Changeset 252

EnchantSkillsTree table rework, misc related to skills.

   - addition of enchantType in enchant_skills_tree, where shared infos are loaded. The DP size is cut by 2, and we earn back 10mo RAM at startup.
   - the different used lists aren't synchronized anymore.
   - giveAvailableSkills() execution time is divided by... x15. You're right, from 3sec it goes to 200ms. From 300~ sent packets (for a DWARF, race which got the lowest numbers of skills), it goes to 12~. No lags anymore for the player, no hundreds packets sent / operations launched for nothing.
   - removeSkill() correctly clean toggle effects.
   - multiple security checks are added on acquire && enchant (skill, skillInfo) packets.
   
Ty Hasha (aka Rainbow Dash) for the good work.
Title: Re: Last aCis updates
Post by: Tryskell on May 27, 2012, 04:49:43 PM
Changeset 253

Multiple cleanups aiming better stability/performance.


Following Zoey76's (better known as "L2J cleanup guru") path, I decided to follow my (hidden) master.
   - activation of 3 Eclipse settings, leading to :
      - cleanup synthetic accesses warnings by dropping private for protected.
      - cleanup 20+ "true" and 50+ "false alarms" potential null pointer accesses, leading to handlers reworks.
   - cleanup synchronized lists/maps which got no reason to be synchronized.
   - cleaning gsregistering (for a "not-RU" english).
   
TODO : make my eclipse accepts java compliance 1.7 in order to use Diamond and ARM Java7 features (currently greyed, dunno why). Else you will go to trash, you understand, Eclipse ? Bad, bad Eclipse !
Title: Re: Last aCis updates
Post by: Tryskell on May 29, 2012, 06:26:08 PM
Changeset 254

Java7 invasion ! The summer is coming : cleanup on the code ? Tale of an Eclipse come back !


Under that title which worths best animes', come some cleanup and use of java7 features :
   - Diamond for constructor invocations (+ activation of associated warning to be sure old system is correctly cleaned)
   - try-with-resources block (also known as 'ARM block') ; drop of apache commonsIO jar, drop of L2DatabaseFactory.close(con).
   - Fix all possibles methods when they can be static (+ activation of associated warning)
   - Fix all QUESTS STATIC maps (almost all...) to be "private final static" and "HashMap" instead of "FastMap".
   
If you got issues : download LATEST Eclipse (a 2011 eclipse isn't LATEST, as my previous Eclipse installation learnt it going to trash) and be sure your compliance level is setup to 1.7 : http://www.cs.utexas.edu/~scottm/cs307/handouts/Eclipse%20Help/comp_Setting_1.6.jpg (http://www.cs.utexas.edu/~scottm/cs307/handouts/Eclipse%20Help/comp_Setting_1.6.jpg) (=> IN THE SCREEN IT'S PUT TO 1.6 PUT TO 1.7 AND IF YOU HAVEN'T 1.7 OPTION THEN GO DL LATEST ECLIPSE NUNUNU <=)

And if you're really dumb or drunk or just want to read more about it, Google it : "java compliance level 1.7 eclipse".

Here are the features of Java7, with Eclipse "changes" to support it : http://www.eclipse.org/jdt/ui/r3_8/Java7news/whats-new-java-7.html (http://www.eclipse.org/jdt/ui/r3_8/Java7news/whats-new-java-7.html)


I had to fix 1500+ warnings, so if you find something bad, you know where to find me.
Title: Re: Last aCis updates
Post by: Tryskell on July 14, 2012, 07:44:26 AM
Changeset 255

Addition of Noblesse quests.
   - Q241, Q242, Q246, Q247

Knownlist conflict
   Idea is coming from Tukune from L2JForum. The Forget task got a lower radius than the Watch task (concerning AttackableKnownList and players, which is... 70% of scenarii), leading to attaching and detaching the AI of the mob if you're between both ranges.
   More infos and my answer on original topic : http://www.l2jserver.com/forum/viewtopic.php?f=77&t=24091 (http://www.l2jserver.com/forum/viewtopic.php?f=77&t=24091)
   - tweak all radius in order Forget Task is - almost - always 1,5x/2x > to Watch task.
   - PcKnownlist dynamic range is even more dynamic (based on actual knownlist's size, begin from 3600 - 20 per ppl, minimum 1800).
   - Castles doors had some difficulties to be seen from far, now it's fixed.

Baium
   - Angelic Vortex (Baium gatekeeper) edition : add a missing HTM (baium state = dead), HTMize an hardcoded HTM, blooded fabric check occurs in good position.
   - slight rework of Baium AI in order to chain animations faster and show the roar animation for the waker.
   - the waker probability to die has been fixed.
   
Misc
   - add static SOUND_FANFARE in QuestState.
   - addition of 3 locs for admins (GM goodies panel). Ty Pendragon.
   - items 7677, 7678, 7679 are considered as qItems.
   - fix 2 potential NPAs.
   - titles regex pattern is dropped.
   - addition of 2 missing tables on database_installer.bat.
   - Drop of PRECISE_DROP_CALCULATION config, which was affecting both drop chance and drop quantity. Now only drop chance are affected by server rates (avoid 5 RB jewels per boss).
   - cleanup of calculateRewardItem and 2 almost same-looking methods from L2Attackable.
   - Fix the CW when wearing a FW. The FW is unequipped before equipping the CW (affects the admincommand aswell).
   - Fix a critical issue I added 2-3 revs ago concerning items which couldn't be picked up.
   - Fix a critical issue introduced by Hasha rework about Quest party system (NPE on fastlist). Change FastList for ArrayList.
   - use of isClanLeader() when possible.
   - missing singleton on L2World.
   - fix the message when you're in a party : "blabla took +2stem", instead of "blabla took 2 stem".
   - Addition of a save noblesse option, as the noblesse status wasn't directly saved (so let's say server crashes before you delog at least once, you would lose it). Ty Hasha.
   - drop following methods to use their regular counterparts (they're shorter to write, lol) and fix all occurences :
      - CursedWeaponsManager.announce(   =>   Broadcast.toAllOnlinePlayers(
      - QuestState.getRandom(   =>   Rnd.get(
Title: Re: Last aCis updates
Post by: Tryskell on July 26, 2012, 07:18:41 PM
Changeset 257

General tasks, misc (ty ipxs for some reports)


General tasks - ty jurchiks for the idea
   - following tasks are now handled by a unique task rather than using one task per player : PvpFlagTask, WaterTask && TakeBreakTask.
   - those tasks use a Map in order to stock individual timers.
   - for 100 players, 100 TakeBreakTask were created, and as much tasks if (let's say) those 100 players are pvping (+100) under water (+100) = potentially 300 tasks. Now only 3 tasks are running, no matter how many ppl are online.
   
Misc
   - add the Teleportation Cubic exit section for Baium (supposed to be handled in another script, moved in GrandBossTeleporters).
   - you aren't flagged anymore casting positive effects on guards (both siege and regular).
   - fix castlewarehouse && castleblacksmith "busy" HTM, and add a clan right check for blacksmith (+ cleanup for both instances).
   - fix Pa'agrio's Fist (must restore 100% CP, not simply 800).
   - fix Fatal Counter (based on your own HPs, not enemies' + formula rework) - ty Duma. getPower() method loses one parameter.
   - singletons on PetitionManager && AutoSpawnHandler
   - revert some ArrayLists for FastList (fix concurrentException errors on sieges)
Title: Re: Last aCis updates
Post by: Tryskell on July 31, 2012, 01:21:22 AM
Changeset 258

Siege/castles rework, misc


Siege/castles rework
   - Fix possible targets on siege summons skills (one siege summon can only aim L2PcInstance, others can only aim L2DoorInstance).
   - Fix doors issue (doors not respawning at siege end). At siege end, they revive, fully HPregen and close if opened.
   - Doors don't respawn if destroyed during a midVictory, but they will respawn at siege end.
   - castle chamberlain instance is fully rewritten, HTMs names have been shortened and content is harmonized. Many privileges checks have been added.
   - when a castle wall is destroyed, the correct message is displayed.
   - skill cast on Artifacts is fixed (changing target before the end of "Seal Of Ruler" won't stop the skill)
   - Addition of retail-like castle gate upgrade system via castle chamberlain.
      - It uses 2 "cursors" to calculate the price :
         - type of door (basic doors, additional doors or walls)
         - power of the reinforcement (x2, x3 or x5 HPs).
      - the cost of doors updates, as their pdef/mdef, are infuenced by Seal of Strife owner.
      - the upgrade is instant, and is loaded/saved through server restarts aswell (as I need _doorUpdates being fed for the hp ratio check on chamberlain).
      - all retails HTMs have been added, and checks are ok (not enough money in CWH, door already updated with a similar or better level, etc).
   
Misc
   - GMs non-aggro state has been moved from //invul to //hide command. Ty Pleasure for the good idea.
   - drop some GMs "privileges" which could lead to "false alarms" reports from users (like GMs not being ported when a siege begins).
   - all variables are (and will be from now, no matter how sad Java-Man will be) initialized in the shorter possible scope. Fix an ugly issue where DoorTable was adding all left doors to latest castle _doors (so Schuttgart had 50+ gates). Castle gates aren't verified anymore for CH purposes.
   - drop String.valueOf() on getNodeValue() - as the result is a String, it doesn't need further operation...
   
NOTE : TRAPS SYSTEM ISN'T MADE AT ALL. DON'T COMPLAIN ABOUT IT.
Title: Re: Last aCis updates
Post by: Tryskell on August 07, 2012, 02:32:09 AM
Changeset 259

Fishes rework (ty Java-man), misc (ty xblx for random fixes and sahar for reports)


Fishes rework
   - handles differently load and get fish process (regroup data in 1 array instead of 3, avoid to create multiple arrays and new FishData objects)
   - fix fishTable skills levels, ty 100500.
   
Misc
   - if identical jewel is currently worn, then replace the other slot if different (explanation is messy, but just test ingame and gtfo).
   - fix an exploit using clan warehouse when you left your clan (active warehouse could be clan, and wasn't cleaned).
   - fix previous knownlists update (int cast was affecting only 1.5 value). It is rounded aswell.
   - fix pets pickup, which are now affected by party distribution modes.
   - fix Goblets NPC.
   - fix double click on dead monsters (avoid to be stucked), cleanup those methods aswell. Drop of canTarget() method.
   - onActionShift() use L2PcInstance rather than GameClient as parameter.
   - add skillId on callSkill exception log for easier debug purposes.
   - fix 2 issues on Valakas AI and 1 on Baium AI, related to skills priority and offline target. Rework Baium getRandomTarget() method to be faster.
   - fix a ClassCastException on RequestRecipeShopManagePrev packet.
   - fix a NullPointerException on RequestPledgeSetAcademyMaster packet.
   - fix an NumberFormatException with CrestCache system ("Crest_Large_" were cutted as "Crest_", and so the id was containing "Large_".
   - getCharactersInside() has been changed for a FastList instead of FastMap, as there is no interest to keep Map format. Use of _characterList rather than the getter.
   - sendPacket() implementation for L2Summon, which refer directly to owner.
   - L2GoldenRamInstance cleanup, the FastMap has been changed for an int[][]. Updates the related HTM.
   - forgotten to add on timeline = xp/sp of monsters are affected by their HPs ratio.
Title: Re: Last aCis updates
Post by: Tryskell on August 10, 2012, 12:30:58 AM
Changeset 260

Skills rework (elemental, cancel, negate), misc


Skills rework
   - implementation of following methods: ssUncharge(), spsUncharge(), isSoulshotCharged(), isSpiritshotCharged() && isBlessedSpiritshotCharged(). Move ss/bss checks out of targets loops.
   - fix Cancel/Banes skillhandler :
      - formula rework : addition of level diff, baseRate (80% for single target, 40% for aoe), and vuln is now applied on the good section of formula.
      - toggles aren't counted anymore as possible effects to cancel.
      - failed attempts are now counted (before effects were looped until 5 effects were dropped).
   - all (L2Character[]) casts have been dropped in order to avoid ClassCastException using skills.
   - cleanup BalanceLife skillhandler ; store valid targets in another list rather than using old list and make twice same checks (...).
   - CombatPointHeal doesn't heal dead targets anymore.
   - addition of suicide stuff on PDAM skillhandler (potential use for antharas minions).
   - NEGATE L2SkillType (part of Disabler skillhandler) is heavily cleaned, and not affected anymore by calcSkillSuccess().
   - fix "SKILLS" elemental vuln/pro (revert to IL, was using postIL formula).
   - addition of "WEAPONS" elemental system (fix skills such as Holy Blade toggle, Holy weapon PP buff). Vuln/pro affect damages TOO !
   
Misc
   - cleanup && addition of missing PaganKeys, ty sahar. No clue if it's retail-like, they're added here for the moment.
   - NPCs social animations are divided by 2.
   - L2Npc : drop of _isBusy / _busyMessage and associated getters/setters + drop of the HTM.
   - fix issue from previous commit about hpRatio impacting earned XP/SP (I HATE DOUBLE).
Title: Re: Last aCis updates
Post by: Tryskell on August 12, 2012, 08:14:46 PM
Changeset 261

Knownlists cleanup, Treasure chests, Valakas & Baium fixes, misc


Knownlists cleanup
   - drop of getKnownSummons system and associated map (unused stuff).
   - better use of inheritance, use of protected key instead of private in order to use variables instead of getters (slight performance boost).
   - maps are now directly initialized, which mean RAM usage is more important at startup, but one check is dropped on a overused command, and we get ride of any null case (it can be only empty).
   - addition of getKnownNpcs() method, move getKnownSiegeGuards() from L2Door to ObjectKnownList.
   - drop all null checks from knownlists. It is explained because getKnownXXX checks "if obj instanceof XXX", which means if it is instanceof XXX, it can't be null.
   - getKnownXXX return a Collection, not a Map anymore. For Map, use getKnownXXXMap() (used only in getKnownRelationsMap() and getKnownPlayersMap()).
   - drop of MOVE_BASED_KNOWNLIST config and system (unused).
   - change all getKnownXXX in order to use the most appropriate choice (avoid cast from L2Object to L2Character, for example).
      
Treasure chests
   - unlock skillhandler has been fully reworked (drop of SocialAction, fix aggro on mimic, etc).
   - the trap system has been dropped, as chests use only one type of skill (suicide type one).
   - drop of _mustGiveExpSp and associated getter/setter/use. doDie(null) means the monster doesn't give any xp/sp.
   
Valakas and Baium fixes
   - use their NPC knownlists rather than zone knownlists (to avoid out of range issues).
   - addition of a random number in order they pick another target after a while.
   - valakas only : don't bother with L2Pet anymore && raise by 2 the radius to count ppl for AoE skills behavior.
   
Misc
   - cleanup some doDie methods (drop of a useless broadcastStatusUpdate(), cleanup in L2Npc (fusion stuff + try catch) and L2Character (fusion + pointless PhoenixBlessed stuff).
   - more uses of getFirstEffect() method instead of retrieving all effects and looping on them.
   - mobs who die by suicide skill don't reward any XP/SP.
   - drop 2 logs concerning "invalid clan id for player xxx" and "unknown skill for summon: xxx".
   - MoS AI see if you're a male/female in order to use "Brother or "Sister". Yes, I know. But it's like that.
   - water flag is stored back in L2PcInstance.
Title: Re: Last aCis updates
Post by: Tryskell on August 16, 2012, 11:51:07 PM
Changeset 262

Cursed weapons, misc


Cursed weapons - ty hasha for critical error support nunu, was making me crazy :D
   - fix the visual glitch on inventory when you lose a CW.
   - drop of duration lose when you kill a player (couldn't verify with NCSOFT patch notes / forum if such feature exists).
   - added overall expiration timer of 72h.
   - added hungry expiration timer (24h by default) - must kill someone before the 24h are gone else CW disappears.
   - added random victims number per stage (between 5 and 15 with default configs).
   - when a player drops the CW, resets the stage to 1. The overall timer is kept, and hungry timer is dropped too.
   - decreased the drop chance from 1/10000 to 1/1000000.
   - no issue anymore when you assimilate a CW with another CW.
   - //cw_info is updated in order to get a complete control of stats.
   - infos are saved on DB every minute (mostly for timers). Drop the save on Shutdown.
   - activation of //reload cw.
   - you can't rank up a CW on a summon anymore.
   - The 2 active skills are now linked to items directly.
   
Misc
   - add missing Manor priviledges on L2CastleChamberlain.
   - debug L2CastleChamberlain about clan members who couldn't access it, even with priviledges.
   - fix 2 possible NPEs with getCurrentFolk(). Probably more to add.
   - drop ExtractableItems.java itemhandler (unused, ty sahar).
   - fix lethal chance of 3 skills (it's a base 1000, not 100) : Banish Undead, Turn Undead, Banish Seraph.
   - drop of FORCE_INVENTORY_UPDATE config (unused + buggy + fat code).
   - fix a NoSuchElementException on L2WeddingManager.
   
PS :
   - //reload cw will clean existing CWs (as it setups default values, we can't keep current CWs, else we got issues).
   - CWs should be cleaned if they stay 1h on ground, currently it's not implemented.
Title: Re: Last aCis updates
Post by: Tryskell on August 18, 2012, 01:46:40 AM
Changeset 263

Dimensional Rift, misc


Dimensional Rift
   - Fix some methods leading to broken "start".
   - Revert some start checks in order items check and consumption aren't made in same time (check first, then consume).
   - XMLize and merge loading process of "dimensional_rift.sql" (rooms infos) with "dimensional_rift.xml" (rooms spawns infos).
   - Fix room 7 of Hero rift (cf rev 178).
   - all FastList are changed for List.
   - Add an HTM for "rift is full" behavior, drop the "cheater" htm (return directly).

Misc
   - Fix a MysqlDataTruncation with macros (255 chars max).
   - Remove a check about CW and pets (the used sysstring was wrong also...).
Title: Re: Last aCis updates
Post by: Tryskell on August 20, 2012, 05:53:22 PM
Changeset 264

Misc

   - fix a MysqlDataTruncation on shortcut save (max number by page = 10).
   - fix previous CW refactor about max stage level.
   - cleanup AdminMammon adminhandler.
   - add a variant of "admin_list_spawns" named "admin_list_positions", and move it from AdminMammon to AdminSpawn.
   - fix mass summon cubics radius for party members.
   - fix CrestCache getCrest() (couldn't return null and so issue to clean invalid crests), ty Java-Man.
   - cleanup of getTargetList() method. Multiple improvements (FastList > ArrayList, variables initilialization in the shortest scope).
   - fix SSBoost usage for BLOW skillhandler.
   - cleanup a couple of skillhandlers, in order they use the inheritated list of L2Object rather than calculating a new one.
   - fix harvest system + harvest messages aswell.
Title: Re: Last aCis updates
Post by: Tryskell on August 23, 2012, 05:32:41 PM
Changeset 265

Misc

   - fix GoldenRam issue.
   - fix 2 CW issues (when player drops it).
   - correct implementation of shift click, with use of inheritance.
   - addition of item shift+click possibility for GMs, HTMlize static object shift+click for GMs.
   - fix mercenary tickets pickup (probably, couldn't test as we're in wrong 7signs period), optimize item pickup check aswell.
   - move caches section upper than clan section, in order to avoid clans crests being deleted at server startup (as crest cache isn't yet initialized).




Changeset 266

L2OFF droplist, misc


Droplist
   - parse L2OFF IL droplist. Go from 26881 to 29767 drops. A big ty to dEvilKinG for that work.
   - Core side goes from SQL to XML aswell.
   
Misc
   - fix AQ minions paralyze/silence.
   - DatapackRoot config is dropped. I don't find any point to put your DP in another folder, added to that the config is probably bad integrated.
   - fix a possible NPE if a RB got suicide skill (happen only when sahar got events ideas).
Title: Re: Last aCis updates
Post by: Tryskell on August 27, 2012, 11:15:25 PM
Changeset 267

HtmCache/NpcHtmlMessage cleanup by Hasha.
Title: Re: Last aCis updates
Post by: Tryskell on August 29, 2012, 04:45:04 AM
Changeset 268

Hasha quest engine cleanup.


Quest
   - QuestEventType class to its own class.
   - sorted all methods by groups (I suggest to create "//INFO: this is some info for text below" tag for the GS,DP pack projects).
   - dropped "character_quest_global_data" table, since it only written in 2 quests (never read).
   - removed "class_index" column in "character_quests" (never used).
   - global quest variables methods unified for simpler usage.
   - dropped some method concerning quest load/close (not used).
   - added isRealQuest() method to separate scripts from live quest. That means every live quest needs to have _Id > 0.
   - method changes :
      - player handling filters player with desired quest state or condition :
         - getRandomPartyMember() now includes a range check.
         - checkPlayerCondition/State() last hit drops.
         - getPartyMembers/State() full party last hit (can be used directly in FOR loop).
         - getRandomPartyMember/State() party random.
         - getClanLeaderQuestState() concerned range check set to npc, not player anymore.
      - spawn, timer handling :
         - cleaned up, unified usage for these methods.
         - dropped methods with same name and different parameters (now you have one method and fill all necessary params in it -> clear usage).

State
   - added in QuestState class.
   - changed quest state storage type in "character_quests" table from String to Byte.

QuestState
   - these methods created/modified
      - item handling (usable during quest) :
         - giveItems() simply remove specified amount of items.
         - takeItems() simply remove specified amount of items.
      - drop handling (usable for quest item drop) :
         - in order to support rate of dropping quest items, added drop type parameter to these methods (see javadoc tag).
         - dropItemsAlways() amount is affected by Config.QUEST_RATE_DROP.
         - dropItems() amount/chance are affected by dropType param and Config.QUEST_RATE_DROP .
      - reward hanling (usable for quest rewards) :
         - rewardItems() rewards player with items (config applied).
         - rewardExpAndSp() rewards player with exp, sp (config applied).
   - removed spawn and timer methods from this class, everything is handled in Quest directly (it wasn't necessary to use QuestState for it).

General
   - fixed onTalk bug, where player could start quest from another NPC, than registered

---- IMPORTANT ----

For existing database, use attached sql command :

USE acis;
SET NAMES cp1250;

DROP TABLE IF EXISTS character_quest_global_data;

ALTER TABLE character_quests DROP COLUMN class_index;

UPDATE character_quests SET value='1' WHERE var='<state>' AND value='Start';
UPDATE character_quests SET value='2' WHERE var='<state>' AND value='Started';
UPDATE character_quests SET value='3' WHERE var='<state>' AND value='Completed';

---- EDIT TRYSKELL ----

Those are additions to original Hasha's notes'n'patch.

- added a check for custom scripts to avoid the reload state when they load, as they all use the same id.
- fix giveItems() behavior (was completely buggy, Hasha...).
- add few final keywords (cause I like them).
- ArrayList initializations are changed for primitive List, it's a bad use to use an "evolved form", as it limits possibilities. In the same spirit we could use directly "HashMap = new HashMap" for maps, but we don't.
Title: Re: Last aCis updates
Post by: Tryskell on September 03, 2012, 03:06:56 AM
Changeset 269

Quests, misc


Quests
   - addition of Q337.
   - fix critical issues appearing in last revision, and impacting 80+ quests (boolean stuff, custom scripts && objectId).
   - drop the max level on all quests, and harmonize all HTMs about "you need level X in order to make the quest". Remove hardcoded versions and add HTMs for Q042/Q043/Q044.
   - fix Q656 min level.
   - fix Q341 repeatable state.
   - addition of a couple of missing "st.exitQuest(true);" (Q338, Q354, Q356)
   - Q371 party system is now ok.
   - rework Q027, Q028, Q029, Q030 STATE_CREATED.
   - use of Race model rather than ordinal, it's easier to read/debug.
   - complete rework of Alliance/Clan java. HTMs are harmonized following 7Signs ones. Probably more to do (like moving all events on scripts directly).
   - custom scripts (-1) are out of queststate checks when not involved by db edition or variables save/load/checks.
   - rework endQuest(), only one db query is made to drop all (on L2J, one db query per variable).
   - L2PcInstance : _quests FastMap is changed for a FastList, _notifyQuestOfDeathList is directly initialized (avoid synchro shit and null checks).
   - drop missing SQL stuff about character_quest_global_data.

Misc
   - rework regen skill in order Valakas doesn't cast it at all, but got directly the effect. Add a random timer aswell.
   - drop slow effects on 4 bleed augment (postIL behavior).
   - fix "Heart of Pa'agrio" radius effect and icon (more skills to come later, I know SweeTs I KNOW).
   - fix all silence times and chances (basically 80% 30sec for one target, 40% 30sec for aoe).
   
Note : //reload quest is currently not working correctly.
Title: Re: Last aCis updates
Post by: Tryskell on September 05, 2012, 12:24:02 PM
Changeset 270

Quests (Sailren questline), misc


Quests
   - addition of Q123, Q125, Q126, Q127, Q367, Q413, Q641. Ty to sharers!
   - fix rewards for Q631.
   - rework rewards Map to use int[][] instead (Q631, Q640, Q642, Q644, Q645, Q646).
   - checkPlayerState() and checkPlayerCondition return the QuestState (avoid to create anew a QuestState). Not affecting party quests.
   - fix Q241 NPEs.
   
Misc
   - addition of fail enchant messages, ty dEvilKing.
   - fix stopWaterTask(), ty xblx.
   - drop a double message when you use TP, ty sahar for report.
   - [L2J 5584] calculatePledgeClass() is now static.
   - [L2J 5584] fix Noblesse/Hero status icon for clanless characters.
   - [L2J 5584] L2ClanMember uses a ResultSet / the player instance directly. Can't create a L2ClanMember if clan is null.
   - one of stopMove() parameters is dropped. Avoid to send x2 broadcastPacket(new StopMove) on L2TamedBeastInstance. Add a stopMove on /unstuck.
   - addition of 4 missing spawns for Q125/Q126.
   - addition of missing HTMs for npcid 32109 (needed for Q126/Q641), implementation in GrandBossTeleporters script with retail HTMs.
   - fixed numerous retail typos : Siren > Sailren, Elkrokhi > Elroki, ax > axe.
Title: Re: Last aCis updates
Post by: Tryskell on September 15, 2012, 03:25:01 AM
Changeset 271

Quests, Javolution, misc


Quests
   - addition of Q111, Q359 && Q633.
   - addition of the missing HTM for Kirikachin.
   - revert positions of 2 multisell entries for Q633.
   
Javolution
   - drop of that library, leading to a serious drop in RAM usage (-45mo at startup = -19%). As comparison, that memory drop equals *ALL* SQL > XML changes made so far.
   - changes follow a simple scheme, listed here :
      - WeakFastSet / FastSet > HashSet.
      - FastList > ArrayList (in very few cases, LinkedList).
      - FastMap > HashMap.
      - all ".shared(true)" versions use Concurrent versions (CopyOnWriteArraySet, CopyOnWriteArrayList, ConcurrentHashMap).
      - TextBuilder > StringBuilder. There is no equivalence for ".clear()", I decided to use ".setLength(0)".

Misc
   - rework GameServerTable (XML loading part).
   - drop of the single use of Vector (replaced by an ArrayList in ServerStatus gameserverpacket).
   - modify all uses of "new Integer(value).intValue()" for "Integer.parseInt(value)".
   - MMOCore is refreshed to use JDK7. The build is remade from zero, and avoid to create a zip.
   - L2FastList, which was a children of FastList, has been dropped. All uses have been replaced for ArrayList.
   - rework a couple of Iterator uses to be more elegant (Duel, DuelManager, GmListTable, CharNameTable) - I kept Iterator *ONLY* when .remove was used (and so when Iterator was vital).
   - cleanup AdminEditChar (drop of arrays which are not used, checks are glued, variables beginning by a minuscule, and others esthetic/performance stuff).

PS : I just thought, like 3min after, than I didn't update internal MMOCore JAR. So compile it and replace, in 271 I will add the new directly.
Title: Re: Last aCis updates
Post by: Tryskell on September 23, 2012, 07:52:57 AM
Changeset 272

SS/BSS system, Minions, Misc


SS/BSS system
   - [L2J 5637] ss/bss system is reworked to allow inheritance.
   - drop the ReentrantLock on Soulshot handler.
   - cleanup ss/sps/bsps handlers (drop of switches, drop of synchronized, etc).
   
Minions
   - fix UnsupportedOperationException on MinionList.
   - drop _enableMinions boolean tag (always true).
   - regular minions repop after "leader respawn time / 2".
   - drop of a pointless list which was keeping references of dead minions.
   - if a monster is consider as a leader, don't make minion checks (and vice-versa).
   - _maintenanceTask is moved from regular monsters to RBs (used only for location checks). Drop of getMaintenanceInterval().
   - cleanup MinionList (unused methods, methods calling others methods).
   
Misc
   - addition of MMOCore jar, as it was cleaned up in last rev.
   - teleToLocation boolean parameter is modified for an int. 2 configs are dropped.
   - addSpawn() from Quest.java can handle Location models (used in future for Benom).
   - addition of the missing spawn id 35506 (used in future for Benom).
   - QuestJython model is dropped.
   - drop of "this." uses on scripts.
   - [L2J 5413] reuse delay stuff is cleaned up, getMReuseRate()/getPReuseRate() methods are dropped, _baseMReuseRate isn't generated for any Char template anymore.
   - fix ConcurrentExceptions on ItemsAutoDestroy, ForumsBBSManager.
   - cleanup of isBehind(), isBehindTarget(), isInFrontOf(), isFacing().
   - reworked implementation of Miser SA.
   - parseGameCondition conditions are "else if" rather than "if" (understand who can...)
   - fix CoV critical rate value, ty Stanus for report.
Title: Re: Last aCis updates
Post by: Tryskell on September 25, 2012, 08:15:30 PM
Changeset 273

DEATH TO ANACONDA !


Jython
   - is OFFICIALLY dropped from aCis (if that force ppl to make java quests instead of using outdated technologies, that's only a bonus).
   - all your previous .py files (quests, scripts) && jython tasks must be moved to java.
   - such scripts problems (buffers, AIs, etc) are then OFFICIALLY unsupported.

Configs
   - drop "LazyItemsUpdate" (dangerous, ends to unexpected behaviours).
   - drop "AltGameMobAttackAI" (no core support anymore, ghost variable).
   - "RaidChaosTime", "GrandChaosTime" && "MinionChaosTime" are edited from 10sec to 30sec by default.
   
Misc
   - Update mysql-connector jar from 5.1.18 to 5.1.22
   - drop of L2ScriptZone and ZONE_SCRIPT (if you want custom zones, just make your own type).
   - update formatting for DP (I was using it, but it looks it wasn't commited) and validate files which weren't using that format (4 so far).
Title: Re: Last aCis updates
Post by: Tryskell on October 28, 2012, 08:42:04 PM
Changeset 274

AI system part I..., pet inventory, Fear effect, misc


It is not yet the paradise, but I tried to cut the complexity, reuse existing stuff, and prepare AI data for future templates rework.
I still search ideas for new AI system (using inheritance, either for AI type and/or template type).

General AI behaviors changes
   - checks concerning friendly/enemy clans verify confusion state (in case of enemy clan, it replaces).
   - mages/priests AI handle following cases from now :
      - will always launch skills.
      - in case they're muted, they 100% flee.
      - in case they're rooted, and can't launch skills (oom/muted), they will attack the nearest (if not possible to attack the current target) target using melee.
      - switch automatically from high to short range skills if you approach (priority to short range, as retail), and vice-versa.
   - mobs won't (re)buff if they're already buffed when you initiate a fight (as they can buff themselves random-walking).
   - drop of the random forget time.

Mobs ARE SUPPOSED TO act as following :
   - target checks :
      - mob hasn't target/got dead target/got timeout ; replace target in case mob is aggro type and continue execution or break the whole processus.
      - mob is chaosTime type, switch target if possible.
   - mob successes to launch a skill (10% default, 100% for healer/mages AIs) :
      - mob suicide below 15% HPs.
      - mob heal allies who got the lowest HPs amount (activation at 75% HPs, priority to healer && mages AI).
      - mob use a random spell - debuff (10%) - otherwise, by priority : short range && long range skills.
   - mob is immobilized : if physical range is ok, attack, if not, pickup the nearest target and attack it.
   - mob flee from player melee range if it is a mage/healer/archer AI.
   - mob approaches the player if out of physical range.
   - mob physically attacks the player.

L2SiegeGuardAI
   - reorganized entirely the file, inheritating from L2AttackableAI.
   - correct an issue introduced 10~ revs ago, where siege guards weren't attacking at all.
   - drop TargetAnalysis && SelfAnalysis (was creating a huge amount of pointless lists for every siege guard).
   
L2NpcTemplate
   - drop 13/19 skills lists and associated getters (here are the survivors : long range, short range, heal, buff, debuff, and suicide.
   - addSkill() method avoid to use "add" getters, allowing to drop them all.
   - drop of FIGHTER and BALANCED AITypes. Those 2 AIs are now refered as DEFAULT (as basically FIGHTER types got and will use skills).
   
AbstractAI
   - _castTarget and _attackTarget are dropped. All is uniformed around getTarget().

L2AttackableAI
   - drop of _lastBuffTick.
   - reorganized entirely the file, and rework many methods.
   - avoid to generate internal skills lists for AIs. It uses templates skills arrays.
   - the attack timeout is back to 30s, rather than 2min (/4). It now handles differently aggro mobs from passive mobs. Passive mobs will stop to attack if you don't attack them, when aggro mobs will continue to follow you until you're out of their "aggro range * 2".

L2NpcAIData
   - drop many variables with their getters/setters/uses, in prevision of future NPC templates rework. The list concerns :
      - _primaryAttack
      - _minSkillChance
      - _maxSkillChance
      - _isChaos
      - _longRangeSkill
      - _shortRangeSkill
      - _longRangeChance
      - _shortRangeChance
      - _switchRangeChance
      - _enemyClan
      - _enemyRange
   - SQL is not cleaned cause it will soon disappear. As the useless data isn't loaded, it's not a problem.
   - drop of %ai_enemy_clan% in shift+click panel on NPCs.
   
NpcWalkers (L2NpcWalkerInstance, L2NpcWalkerAI)
   - L2NpcWalkerInstance internal broadcastChat() -> L2Npc broadcastNpcSay().
   - avoid multiple .get() operations updating a single L2NpcWalkerNode when the NPC goes to it (as we have, anyway, to retrieve the node, better make it automatically).
   - drop _homeX, _homeY, _homeZ variables + getters/setters and uses on onSpawn() - unused.
   - _walkingToNextPoint getters/setters are dropped - unused.
   
Pet inventory
   - fix a concurrent issue, ty Hasha.
   - fix the inventory update when you transfer non stackable items.
   - add player && pet inventory weight refresh. Pet can now be overweight (was working before, but only in few circumstances).
   - items are cleaned from pet inventory list / from the world even if the owner doesn't exist.
   - checkItemManipulation for pet inventory (make checks on count). The string parameter is dropped for both inventory types. The count check is made on < 1, not on < 0 anymore.

Fear effects
   - glitch is fixed, ty xblx.
   - slight edit in order if you trigger startFear() it works in any case, and avoid pointless actions triggered by onActionTime().
   - remove the visual effect when effect ends.

Misc
   - modifier for L2Attackable concerning cast break has been removed. I still believe it should be reworked for monsters (75% or 50% of the final value ?).
   - drop of Rnd.nextInt(int) method, which was calling Rnd.get(int) method.
   - fix a ConcurrentException on CellPathFinding geodata module.
   - fix lethal strikes messages. calcLethalHit() method doesn't return a boolean anymore (no use).
   - fix a couple of skills values (lethal2 100% chance issue && few cancel resist/vuln chances setted to 40 instead of 30).
   - drop of mAtkRange Stats. The only factor which entered in that Stats calculation was skillRange, so I simplified it.
   - fix gameserver shutdown issue (ty Kenrix for reminder). I don't use L2J forum / Silentium fix.
   - fix RequestHennaEquip adena amount message (cleaner method used than Silentium).
   - fix a minor issue on /unstuck command - missing isSitting() check (ty Silentium).
   - fix jail issue (teleport you forever in jail if you're //recall by a GM). Ty xblx.
   - [L2J 5684] hitTime lower than 500 are taken in consideration, _castInterruptTime takes in consideration the skill coolTime.
   - cleanup of all getKnownXXX() / getKnownXXXInRadius() methods, replacing them by 2 using generic types (fuck yeah).
   - drop few clone checks concerning isRunning() - as setRunning() internally checks it.
   - fix FriendList packet, ty Root for report.
   
N.B :
Between 10mo to 15mo RAM are saved.
The think cycle is actually used more than once per second (called by itself on attack ?). This is the main issue about packet flood when numerous enemies follow you, and will end by a huge performance boost once corrected.
I search a mean to fix pet inventory weight number. Atm it only updates while overweight penalty is called. I dunno why.

Things to fix in AI part II:
- null crap on HitTask / callSkill.
- flee behavior if you're too near (mob stops to attack).
- siege NPCs mage weird movement.
- find a solution about mage with low/no mana, in order to avoid those weird movement.
Title: Re: Last aCis updates
Post by: Tryskell on October 31, 2012, 10:36:45 PM
Changeset 275

Enchant system, Quest system, Misc


Enchant system
   - [L2J Silentium 145] add skill refresh when you enchant an equiped dual (to +4) or armor (to +6, if other parts of set are already +6).
   - don't unequip item (it was visible if you failed a blessed enchant).
   - avoid to refresh weight in case of a success or a blessed fail.
   
Quest system (Hasha)
   -  fix exclamation mark for NPCs with one-time quests.
   -  npc will now show correctly the "quest completed" message, when quest is completed.
   
Misc
   - cleanup pathnodes loading.
   - delete _isSpoil + setter/getter (can be retrieved with another variable). Cleanup spoil skillhandler && effect.
   - cleanup 20+ generated TODO and content of those files (conditions mostly).
   - fix an issue where 2 items rewarding the same skill drops the skill once you unequip one of those items. Addition of getPaperdollItems() method. Ty xblx.
   - fix alliance creation/dissolution and clan dissolution if you're registered/participing in a siege. Ty Hasha. PS : it also avoids one connection with DB.
   - cleanup xp/sp methods to reuse existing stuff. Ty Hasha.
   - EffectStunSelf correctly stuns effector, not effected. Ty xblx for report.
   - FriendList packet edited (again). Ty xblx.
   - fix the last potential NPE (according Eclipse).
   - fix a crappy NPE introduced in previous rev (see last comments on previous rev). Ty xblx.
   - drop or edit few "_log.log(Level.WARNING, "", e);", as they send blank debug message. I only bothered about the most common.
   - AdminPledge is cleaned up, the following actions (dismiss, setlevel, reputation) are now possible on any clan member, not simply the leader. info and dismiss work as supposed (no need 2nd parameter) when used from admin panel.
Title: Re: Last aCis updates
Post by: Tryskell on November 02, 2012, 07:49:27 PM
Changeset 276

Quests, misc


Quests
   - addition of Q047, Q048, Q324, Q372, Q426. Ty to sharers.
   
Misc
   - "Quest." are dropped on any quest (Quest.getNoQuestMsg(), Quest.getAlreadyCompletedMsg() && all Quest.STATE_XXX).
   - drop a double check on checkClanJoinCondition() method, ty Ashe.
   - fix "ghost" aborted/completed quest issue on quest logs.
   - few HTM typos.
Title: Re: Last aCis updates
Post by: Tryskell on November 09, 2012, 01:18:22 AM
Changeset 277

Quests, Misc


Quests
   - addition of Q101, Q102, Q103, Q119, Q265, Q654. Ty sharers :3.
   - Echoes crystals aren't a Newbie reward (Q104 / Q105).
   
Misc
   - drop the "karma drop" message (was flooding logs).
   - change the severity of disconnected client message from "info" to "fine" (was flooding logs).
   - (potentially) fix concurrent exceptions on updateHeroes() && activateHero(). For info, .put on a Map overrides the entry if it was already existing, making the .remove useless (and dropping the concurrent use).

Notes
   - put back a concurrent version of ArrayList if Hero problem persists.
   - the "Rewards" var (flag used on repeatable newbie quests) will be kept until Tutorial is commited.
Title: Re: Last aCis updates
Post by: Tryskell on November 11, 2012, 03:58:47 AM
Changeset 278

Quests, AutoChatHandler, Misc


Quests
   - addition of Q106, Q107, Q108, Q274, Q306. Ty sharers. Again.
   - unify checks about races on quests HTMs.
   
AutoChatHandler
   - drop AutoChatHandler system. It is only used for 7Signs, and it can't be used for a simple random npcid (or anyway must be scripted, as it must be setActive()).
   - indirectly fix the issue introduced in auto_chat rework, where Preachers were spamming the whole block of text (bad split with " $ ", dunno why).
   
Misc
   - classes folder use a better organized files, which also fix the Linux issue. Ty Root. I got few answers it works on Linux, and I tested some minutes on Windows.
Title: Re: Last aCis updates
Post by: Tryskell on November 13, 2012, 03:00:15 AM
Changeset 279

Quests, Misc


We reached a total of 300 scripts commited ! Ty to all sharers !

Quests
   - addition of Q273, Q292, Q293, Q340, Q602, Q604, Q610, Q616, Q625.
   - cleanup the demote methods for ketra and varka (use a for loop instead of imbricated if/else).
   - few HTMs "typos". Mostly to keep a shared pattern amongst all quests.
   
Misc
   - add a restriction for newbie check based on class level (avoid to be considered as a Newbie as a Saggitarius lvl 12).
   - drop a double message (reduceAdena() already got YOU_NOT_ENOUGH_ADENA included).
Title: Re: Last aCis updates
Post by: Tryskell on November 25, 2012, 02:39:31 PM
Changeset 280

Quests

   - addition of Q326, Q330, Q376, Q377, Q380, Q622.
   - fix last revision loop edit on Varka/Ketra scripts. Ty xblx for warning.
   - fix Q624 party quest state.




Changeset 281

Fishing tournament, GM commands && misc


Fishing tournament
   - the most awaited && acclaimed feature of 2007 finally added.
   - what more to say... Stfu && enjoy ?
   - dedicated to sahar. He knows why.
   - ty UnAfraid for some HTMs.
   
GM commands
   - //list_spawns now uses an HTM with clickable locations. It also uses current target if npcId entered as parameter isn't ok.
   - added a button on shift+click npc info list for spawns.
   - //list_locations command is dropped, as //list_spawns makes that job by default now.
   - slight edit of main_menu.htm.
   
ServerVariables
   - addition of a table dedicated to misc things of the server.
   - probably will store more than current use (only fishing tournament atm). Events, 7S, olympiads ?
   
Misc
   - rework StatsSet, picking up g1ta0's work. Probably more to come, it's a gold mine...
   
Report on forum about fishing tournament. As the system comes from a well known source, I didn't bothered to test too much. I added some HTMs, one missing SystemMessage, fix the custom length formula which now fits retail criterias, and observed the regular mechanism of load/save. For example, I didn't test reward period. So tests and reports, even if working, would be appreciated.
Title: Re: Last aCis updates
Post by: Tryskell on December 02, 2012, 09:33:15 PM
Changeset 282

Quests, misc


Quests
   - addition of Q407, Q408, Q409 && Q419. Ty sharers.
   - reworked "PathTo" CREATED_STATE quests (easier to read), and set final exitQuest() to TRUE, in order to see HTMs.

Misc
   - add a layer called ExProperties, improving readability/creation of Config.java
   - Drop StackIDFactory, making BitSetIDFactory the only choice. Related configs are dropped.
   - Cleanup BitSetIDFactory, dropping some synchronized.
   - some Float had to be dropped ; they're edited for Double.
   - put default values for CH configs.
   - fix various problems on CabaleBuffer instance. Delay autochat from 30sec to 60sec (not retail).
   - random : add a missing rset.close(), put 2-3 methods static, use of getters and cleanup some crap in LS.
Title: Re: Last aCis updates
Post by: Tryskell on December 05, 2012, 05:22:15 PM
Changeset 283

Quests, misc


Quests
   - fix NPEs on Q602 and Q111. Drop null checks on Q607, Q608, Q613, Q614 (already handled by getPartyMembers()).
   - few "Quest." and invisible typos cleanup (but well as replace works well... Why not ?). By typos, there were double "  ", space after/before "
", etc...
   - addition of Q402, Q404, Q405, Q410, Q411, Q412, Q601. Ty sharers.
   
Misc
   - drop few stats and "uses" : EXPSP_RATE, NONE_WPN_VULN, ETC_WPN_VULN, FIST_WPN_VULN
   - rewardExpAndSp() : exp parameter is a long instead of int.
   - no more calcStat use for exp/sp rewarding.
   - fix a location in GM teleport, drop a line on Varika HTM.
Title: Re: Last aCis updates
Post by: Tryskell on December 12, 2012, 05:18:30 AM
Changeset 284

Quests, misc


Quests - 320 scripts overall ;p
   - addition of Q363, Q415 && Q418 (tested 2/6 ends). Ty sharers.
   
Misc
   - fix L2ClanMember issue.
   - revert one fix of [255] - L2Attackable drop edit back to regular L2J + cleanup.
   - MoveBackwardToLocation cleanup.
   - drop admin commands related to NPCs edition (12 overall - preparing next commit), rework survivors.
   - cleanup few TODOs.
   - added 50 spawns in Orc Territory, 5 for Q415 (Aren and quest mobs). The L2J IL spawnlist is just ubber failed in fact lol, missing few hundreds spawns.

Note to myself : 37052 spawns before any refactor. The time will say if I was true or not :D.
Title: Re: Last aCis updates
Post by: Tryskell on January 15, 2013, 05:10:40 PM
Changeset 285

NPCs templates refactor part I - Ty to devilKing for data parsing.


An important work has been made in order to merge, and then SQL -> XML all data related to NPCs.
That work is a first step and is commited to let me a clear view of next additions, see bottom for what is missing.

Following SQL tables dissapear :
   - npc_ai_data.sql
   - npc_skills.sql
   - npc.sql
   - minions.sql
   - skill_learn.sql
   
Following XML dissapears :
   - droplist.xml

Some new functionalities :
   - addition of isSeedable() support.
   - unhardcoded critical value (mobs got different % to critical : 1, 4, 8).
   - NPC shield support. Feel that sad feeling when your hits are blocked by a mob !
   - Debugged ss/bss usage for NPCs. You thought NPCs were stupid... And you were right. But now they're powerful.
   - Debugged stats system (was heavily affecting summons).
   
And, in the biggest capharnaüm :
   - edit L2CharTemplate, L2NpcTemplate and L2PcTemplate stats names, and so by extension XMLs. For classes parsing, there is a noticable drop in weight removing "skill" from "skillId" and "skillLvl" (-200ko).
   - drop from XMLs classes things which could be set by default on core, and shared amongst all templates, notably :
      - basePAtkSpd (default 300)
      - baseMAtkSpd (333, shared with mobs) - the stat just dissapears, replaced by flat value on the used formula.
      - baseCritRate (default 4)
   - stats who were supposed to be boolean (but weren't due to the use of SQL) are now boolean.
   - following methods (setters, getters, variable) dissapear :
      - getSex() - no use (I speak of npcs, ofc)
      - getBaseHpConsumeRate() - no use
      - getBaseMpConsumeRate() - no use
      - _aiClass from L2Character - no use      
      - getBaseMAtkSpd() - 333 for all
      - getBaseMCritRate() - 80 for all      
      - isServerSideName() - isCustom() addition
      - isServerSideTitle() - isCustom() addition
      - getBaseShldDef() - 0 for all (affected by worn lHand)
      - getBaseShldRate() - 0 for all (affected by worn lHand)
      - overidden getCollisionRadius() / getCollisionHeight() from L2PcTemplate (what was the point to store in another variable and not using the extended variable ?)
      - _staticAIData and its getter on L2Npc (can be easily replaced by getTemplate().getAIData(), avoid to maintain 65xx AI objects just for shortcuts...).
   - isCustomNpc() addition (compares if npcId and templateId are different, if yes, it is considered as a custom npc)
   - existing float are changed for double.
   - base patk, pdef, matk, mdef are double not int anymore (keep accuracy for calculations).
   - shift+click on NPCs is cleaned up (generated HTM is shorter, drop of (L2Character (this)), fix skill / drop / spawn views for custom NPCs (was using idTemplate instead of id), addition of missing infos (harvest, ss/sps count/rate).
   - _seeded L2Attackable internal boolean flag is dropped, as that state can be checked using _seedType (> 0 meaning it is seeded).
   - Config.CHAMPION_ENABLE is dropped. If frequency > 0, then we can have champions... So that config is useless.
   - default values concerning champion configs are equal in Config.java and .properties.
   - drop of admin_kill_monster command (unused) and drop of AdminKill handler (merged admin_kill on AdminAdmin).
   - fix a NPE in Q111.
   - fix shops animation while running (you still could run for 2.5sec before stopping). Ty UnAfraid for the report.
   - fix few Double values in Config which weren't correctly parsed as Double.
   - getPlayersInside() && getPlayableInside() are dropped for getKnownTypeInside(). Cleanup of L2BossZone.
   - fix systemMessages while missing a regular attack - ty Hasha for report.
   - fix target cancel while attacking (pressing esc)
   - fix a PHX exploit, ty PaganTemplar for report.
   - fix polymorph issue, ty Sweets for report.
   - fix an issue with henna addition, ty Silentium.
   - fix a problem with quest parameters, ty povis111 for report and Hasha the Villain for fix.
   - add few HTMs on default folder.
   
If you (think you) have better data, consider sharing. devilKing will surely be pleased to parse it, again, and again.

Things to do in part 2 :
   - isSeedable() use for seeding purposes (atm only one check for harvest).
   - debug rHand/lHand stats, in order mobs use shields.
   - debug stats, all NPCs stats are very weak.
   - active skills missing on all templates atm.
Title: Re: Last aCis updates
Post by: Tryskell on January 27, 2013, 06:02:14 AM
Changeset 286

NPCs template refactor part II, Recipes, misc


NPCs
   - fix missing teachTo infos (infos took from aCis, no reason L2J was wrong).
   - add ACTIVE skills on all NPCs templates. Use of L2OFF GF (aCis skill list) for the ACTIVE skill list.
   - fix custom names/titles (isCustom() uses).
   - fix all Races using L2OFF GF "race" parameter. It uses only 4416 instead of 4290-4301 && 4416.
   - addition back of the Wedding manager custom NPC.
   - edition of shift+left click on NPCs. Addition of few infos (race, canMove).

Recipes
   - fix an issue concerning recipes loading, ty Hasha.
   - better performance overall (drop a map, avoid few generation of lists, drop synchronize keywords, drop of TempItem class, random cleanup,...)

Misc
   - Checks involving hpratio are unified (easier to read).
   - Fix TARGET_AREA_UNDEAD (rename it for AURA, as those skills are AURA not AREA ; clean the target type ; fix the mechanisms). Ty Hasha for report.
   - Cleanup GBs scripts.
   - correct Extractable message, ty Sahar.

PS : As the old aCis skill list was using L2OFF GF, the gain of RAM is around 25mo between this rev and 3 revs ago. Now passive skills are the ones written in client description.

More parts to come, we still miss 53 templates and calculations of stats from core.
Title: Re: Last aCis updates
Post by: Tryskell on February 02, 2013, 10:03:28 AM
Changeset 287

NPCs, AIs, misc


NPCs
   - Few fixes on npcs.xml (few mobs being canMove when they shouldn't, etc).
   - Indent using tab instead of spaces = -600ko.
   - Clan system is revisited :
      - "clan", "clanRange" and "ignoreIds" don't need anymore a default value on npc templates (drop of all clan="" clanRange="0" ignoredIds="").
      - if a mob hasn't "clan" parameter, "clanRange" as "ignoreIds" aren't parsed. A mob can have : 1/1/1, 1/1/0 or 0/0/0 (default, no need any write).
      - "clan" is now correctly parsed and used. It needed an important rework in order a template accept multiple clans.
      - "clanIgnore" is renamed for "ignoredIds". The system is now correctly parsed and used.
   - Addition of "ignoredIds" in shift+click panel.
   - L2AttackableAI cleanup.

AIs
   - Addition of GatekeeperZombies script.
   - Fix aggroReconsider() method (no more NPEs), which returns previous target if no new target fits. Simplify the method.
   - Fix Sprigants behavior. The task loop is now correctly stopped in case players die or leave the area.
   - Fix custom scripts in order they send back bug report/HTMs. Not really a fix, as AIs don't use any HTM, but better follow that rule.
   - Orfen AI :
      - General cleanup.
      - Edit initial spawn point of Orfen on SQL (happens only at first server startup) from her lair to 1st location (out of 3).
      - Edit her aggro range from 500 to 1000.
      - The 4 minions are handled by minion system instead of script (it generates decent random walking and minions follow Orfen).
      - Edition of the zone check system for a Valakas/Baium similar looking one (inactivity = reset). That check is made every 60sec, not 10sec anymore.
      - If inactive during 30min, Orfen randomly walks on 1 of the 3 locations (not lair). If she was already tagged as teleported, drop the teleport flag.

Misc
   - Fix rev285 henna issue, ty Hasha for report.
   - [L2J 5756] hasAtLeastOneItem() method. As it isn't limited to quest items, it is put on Inventory.
   - Cleanup Quest.java methods, avoid to retain unused variables.
   - Addition of Util.contains(array, array) for clan comparison cases. Return true if at least one element is common to both arrays.
   - Existing Util.contains methods got "==" edited for "equals". They also check if array integrity is ok (null or empty array returns false).
   - Drop of isParty(L2Skill) method.
   
Notes :
   - Orfen movement sucks because of the miss of geodata check, perhaps later it will be improved (or share if you found better way to handle it).
   - When a NPC got multiple clans, it uses the same clan range value for all of them.
Title: Re: Last aCis updates
Post by: Tryskell on February 03, 2013, 08:50:16 PM
Changeset 288

NPCs template refactor part III, misc


NPCs refactor
   - handle final stats calculation from template stats (formula : base * carac bonus * levelmodifier).
   - fix pets evasion/accuracy

AIs
   - "FleeNpc" is moved to "group" folder, and is renamed "FleeingNPCs".
   - split L2AttackableAIScript content into 2 layers : L2AttackableAIScript and AbstractNpcAI.
      - "group" and "individual" AIs extends AbstractNpcAI. That layer got methods dedicated to such AIs.
      - L2AttackableAIScript becomes a basic script, stored in "group".
      - That split prepares the eventuality of listeners system addition.
   - random cleanup (SummonMinions, Orfen, etc).
   - Addition of BrokenLabyrinth script : http://boards.lineage2.com/showthread.php?t=146273 (http://boards.lineage2.com/showthread.php?t=146273)
   - Addition of PlainsOfDion script.
   
Misc
   - Addition of _scriptValue system. Drop of hasSpoken system.
   - AI timeout is setted back on 120sec (after L2OFF IL check).
   - critical with barehands is correctly calculated (after L2OFF IL check : use DEX mod).
   
Notes
   - _scriptValue is unique to a spawn, you have to care about multiple scripts editing behavior of a npc.
Title: Re: Last aCis updates
Post by: Tryskell on February 05, 2013, 08:43:35 PM
Changeset 289

Antharas, GBs / RBs, misc


Antharas
   - Addition of the script, fully reworked. Fast comparison with L2J version :
      - highly cutted script (450~ lines of code instead of 950+)
      - use of 2 SocialAction during cinematic.
      - far less tasks used.
      - use of a dummy id (29019) in order to register it in grandboss table (avoid 3 states).
      - players are initially teleported far from where Antharas spawns.
      - minions are handled by regular AI system.
   - Edition of the GrandBossTeleporters for the npcid 13001.
   - npcs.xml is edited to reflect behavior (had to edit type, add aggro on behemoths, etc).

GBs / RBs
   - cleanup of RaidBossSpawnManager.
   - initial HPs/MPs of GBs and RBs at first server launch are fixed (0 = getMax).
   - Following bosses are spawned, as templates are ok (manually fixed) now :
      - Boss Akata
      - Nellis' Vengeful Spirit
      - Rayito The Looter
      - Dark Shaman Varangka
   - GBs don't take summons nor invisible GMs in target anymore.
   - Valakas skill choose is improved (less spam of imba skills, clever use of FRONT or BEHIND skills).
   
Misc
   - getQuest() isn't case sensitive anymore.
   - fix RequestBypassToServer (that treatorous index is -1).
   - getRandomPlayer() : returns a random player (must be alive and not a invisible GM).
   - getPlayersCountInPositions() : returns an array composed of numbers of players in front of, behind and on sides of a npc.
   - addition of FrenzyOnAttack script (5 orcs types).
   - few messages added in SummonMinions script (Timak Orc Overlord case).
Title: Re: Last aCis updates
Post by: Tryskell on February 07, 2013, 12:38:12 PM
Changeset 290

Summons, misc


Summons
   - fix stats (they finally had to use funcs).
   - fix base critical on summons (40 for all).

Misc
   - fix an issue involving null objects on pet pickup action.
   - minions follow distance is made using collision radius of both minion and leader (avoid weird 500 distance on rb minion follow).
   - drop few methods on instances which are only knownlist stuff.
   - fix skills 118 and 163 (nerf mages nudists ;p).
   - fix order of tradelists' content.
   - isSeedable() implementation.
Title: Re: Last aCis updates
Post by: Tryskell on February 10, 2013, 01:54:39 AM
Changeset 291

AIs, misc


AIs
   - addition of the cursed ToIVortex script.
   - addition of FirstClassChange script (mix of 4-6 scripts), ty to Fernandopm :). Compared to his version :
      - addition of ids 32097 and 32098 (+56 missing HTMs).
      - cleanup the advEvent (a single array is kept instead of making *8 map checks).
      - Pa'agrio and others typos.
   - edit ShadowWeapon ids ; it takes directly ids from scripts FirstClassChange && SecondClassChange (as second script isn't made yet, the array is still local).
   - fix Barakiel minions AI.
   
Misc
   - fix subclass crap (Maximilion/Jurek and others Mystic/Priest).
   - fix dozen of typos on village_master HTMs, and harmonize links position (L2J team was dyslexic back in 2007...).
      - all first masters got a link for shadow weapon coupons exchange.
      - all second masters got a link for subclass. First masters who had one is dropped.
   - addition of //show_scripts npcId : allow to see events affecting the given template.
   - fix L2EffectZone concurrent exception. As L2EffectZone are always supposed to have a skillid, initialize the map directly in order to avoid null checks.
   - after a check on L2OFF, bring the speed modifier when you run in water from 0.5 to 0.41.
   - revert canceling target fix but keep the cleanup (no whining anymore).
   - fix an issue on summon window stats about runspeed (it was only visual). In same time, getMoveSpeed() becomes an int.
   
Note : I tested 6 IDs out of 20+, and obviously hasn't the will to test/fix eventual typos on the 800+ HTMs, if there is issues, you know where to complain.
Title: Re: Last aCis updates
Post by: Tryskell on February 11, 2013, 10:55:48 PM
Changeset 292

Misc

   - [L2J 5772] Moving effect flags out of CharEffectList into L2EffectFlag enum.
   - cancels enchant process while moving.
   - equipped shadow weapons are now correctly handled at player login/logout (armors as weapons). Tasks can be canceled now (before it was running even unequipped).
   - 40% of Inventory file has been splitted into listeners.
   - fix //show_characters.
   - fix PaganTeleporter. Statue don't react to faded mark, triol's mirror hasn't any checks and the zone with faded mark is implemented.
   - added back handwritten ids for zone system. Dropped zone name (no use).
   - reintroduction of ZONE_SCRIPT for... scripts. Use that XML for your custom scripts.
   - drop merchant_areas_list SQL (unused).
   - random cleanup.
   
Notes
   - zones ids are still dynamically generated, but it will be replaced by a written id (if found). Scripts use ids 100000+.
Title: Re: Last aCis updates
Post by: Tryskell on February 18, 2013, 05:52:59 AM
Changeset 293

Misc

   - Numerous fixes on UseItem, mostly related to messages and readability. Unhardcode Calculator itemhandler.
   - ChristmasTree itemhandler wasn't loaded.
   - effects affecting players are restored before Enterworld access (fix HP/MP/CP issues at restart)
   - critical rate of summons is corrected.
   - fix a concurrent exception on PcFreight as object access was followed by list clear inside the loop (? lol). _depositedFreight is also initialized with player instance and never null anymore (drop null checks).
   - pets don't share anymore master reuse. Master don't receive anymore infos regarding pet uses (notably, icons-related stuff). Ty CreamCracker for report.
   - fix pet pickup message (on multiple items).
   - 6 items are now considered as potions (etcitem type is potion), ty Root for report.
   
PS : as items reuse system isn't really developed on IL chronicle (potions only ?), I decided pets timestamps won't be saved in db.
Title: Re: Last aCis updates
Post by: Tryskell on February 24, 2013, 09:55:46 PM
Changeset 294

Scripts, Misc


Scripts
   - Cleanup Core.
   - addition of Q373.
   - addition of StakatoNest AI. The whole behavior is postIL, but there are some evidences that AI was in preparation (perhaps fully working ? Who knows, it's the sort of definitively lost data) in IL time.

Misc
   - Fix previous commit regarding skill bar at restart (nice catch Trance).
   - Drop GlobalVariable system, as we got ServerVariables system.
   - Cleanup Quest (avoid to return L2ZoneType and others misc).
   - fix few max quests number checks (25 quests max according client ingame quest panel)
   - drop a double QuestList packet send at quest aborting.
   - cleanup of show_skilllist (use a simple array of L2Skill instead of a Map, no iterator, StringBuffer > StringBuilder).
   - drop null checks on NPC skills templates (never null).
   - fix summons skill level at skill launch (was generated from summon level...). The data was ok, but the level was overriden for godamn known reason.
   - the generic addfuncs are initialized before skills addfuncs (there were no problems, it's just more logical to load regular funcs then skills funcs).
   - gates level mod is reinitialized to L2Character one (potential problem about evasion), add 2 funcs for gates instead of overriden pdef/mdef (Ty masssttteeerrr :P).
Title: Re: Last aCis updates
Post by: Tryskell on March 02, 2013, 05:11:58 PM
Changeset 295

Sailren, MovieMaker, Zone system && GrandBossManager, misc


Sailren AI
   - A wild Sailren appeared ! Ty UnAfraid for the L2OFF script (leeched cinematic, oust location, exit gk locations, and inactive timer duration).
   - addition of the blank npc 32110 (for the animation), one L2BossZone, change of type for L2GrandBoss, one line added in grandboss_data.sql and edition of GrandBossTeleporters script to handle Shilen Stone / Teleport Cube behaviors.

MovieMaker enhancements
   - you can now see all parameters of sequences on main panel.
   - if you haven't a target, the movie takes you as target.
   - addition of "Back" buttons on Edit and Add HTMs, returning to main panel.
   
Zone system && GrandBossManager
   - GrandBossManager singleton system is dropped (use static approach).
   - Cleanup and few method renames.
   - Few fixes :
      - lists and maps from L2BossZone can't be null anymore (drop involved checks) and use concurrent versions.
      - GMs are now registered in _playersAllowed list - as regular players - if they used the "legit" way. They still have priviledges to teleport on such area and not being bothered by restriction.
      - avoid to add a zone if it was already existing (just a security check, as List allows doublons).
   - Reintroduction on ids on L2BossZone zones, in order to correctly load/save allowed players (cause a problem notably if you add/remove zones meanwhile).
   - L2ZoneType variables concerning zones children are moved in zones children :
      - affectedRace > L2MotherTreeZone.
      - affectedLvlMin / targetClass > L2EffectZone.
      - Following parameters are dropped : affectedClassId, affectedClassType, affectedLvlMax.
      - drop of internal flag _checkAffected, as isAffected() uses now inheritance.
   - All null checks concerning L2BossZone zones on scripts are dropped (as those scripts can't, anyway, work without those zones...).

Misc
   - Addition of door HPs view (happens in peace time or for siege defenders). isEnemy() is dropped and replaced by isAutoAttackable() for doors HP view.
   - All configs related to GBs are renamed. Hardcoded safeties are dropped, so don't edit configs when drunk.
   - fix clan ranks for heroes and nobles + L2ClanMember cleanup, ty BaT for report.
   - all variables on individual AIs are organized as following : zone, private static final, public static final, public.
   
PS : while L2ScriptZone are using 10XXXX ids, L2BossZone will use 11XXXX ones. Remember about it while adding custom zones !
Title: Re: Last aCis updates
Post by: Tryskell on March 04, 2013, 03:54:32 PM
Changeset 296

Antharas, RBs timers, Misc


Antharas
   - addition of death cinematic (ty UnAfraid for the script).
   - Antharas use his skills following L2OFF script. And yes, the Rnd.get() fuckfest is retail-like.

RBs timers
   - fix GBs/RBs timers to follow L2OFF values. The biggest change is regular bosses going from 12-36h to 12-60h (36 +- 24) && Zaken/Sailren timers.
   - random timer is modified to handle hours by hours, not ms by ms (* 3600000 is made after the Rnd is selected).
   - random timer on GBs is supposed to be +-, not only + (edition of all GBs AI scripts).
   - drop of RaidMinRespawnMultiplier and RaidMaxRespawnMultiplier configs. I don't like them. Don't ask.
   
Misc
   - addition of ZoneId (exemple : L2Character.ZONE_PVP > ZoneId.PVP).
   - fix arenas XP loss, ty Root for report. You still loss XP inside arenas if killed by anything except playable (avoid RB exploits).
   - you don't lose XP while in siege, if you were involved by the siege (either playable or siege NPCs).
   - fix new clan member "rank" (you are registered in main clan, not on 5th grade). Ty SweeTs.
   - fix an invalid pvpflag scenario (summoner is out of the arena, but summon/pet is in : attacking the summon/pet makes you purple).
   - reorganization of L2PcInstance isAutoAttackable(), which also fix 1 issue about clan member check (the clan member check was made on attacker's objectId, but attacker can be the summon...).
   - bring isInsideZone in L2Object, allowing to drop all casts.
   - addition of isInArena(), as it's often used (checks if a player is in a PVP zone but not in a SIEGE zone).
   - getWantsPeace() > wantsPeace(), modified for a boolean rather than int.
   
Notes :
   - getRespawnMinDelay() and getRespawnMaxDelay() are "overriden" on L2RaidBoss spawn to be used as fixed and random timers => (getRespawnMinDelay() + Rnd.get(-getRespawnMaxDelay(), getRespawnMaxDelay())) * 3600000.
   - isAutoAttackable is to test.
Title: Re: Last aCis updates
Post by: Tryskell on March 14, 2013, 03:43:41 PM
Changeset 297

Quests, Misc


Quests
   - addition of Q344, Q660 - ty Junior.
   - fix Q374/Q375, ty Tommy.

Misc
   - drop setIsFlying() and setIsRiding() method, using inheritance.
   - fix few skills : 6 summon skills (npcIds were messed up), missing nextActionAttack - ty Tommy.
   - fix toggle stopping movement action and next action stopping current action - ty xblx.
   - rename AI_INTENTION_X to X, and harmonize uses for CtrlIntention.X.
   - avoid to send a FOLLOW intention when clicking on yourself.
Title: Re: Last aCis updates
Post by: Tryskell on March 20, 2013, 10:25:49 PM
Changeset 298

Quests, Misc


Quests
   - addition of Q421, Q643.
   - FairyTree AI is melted with Q421 : killed tree spawns numerous ghosts, and ghosts speak when tree is under attack.
   - add 3 HTMs related to Q348, edit qItems to be qItems.
   
Knownlist
   - knownlist is reworked ; drop iterators, drop _knownPlayers and _knownRelation maps.
   - cleanup KnownListUpdateTaskManager (drop _failedRegions, merge cases), ty xblx.
   
Misc
   - npcs.xml is edited for Fairy Trees case : they become L2Monster, can't move, and got 3 minions.
   - fix ss/bss consumption for pets and summons, ty Tommy. No more sanity check.
   - fix Corpse Burst (power table) and Arrest(should aggro) skills, ty xblx.
   - fix StunSelf effect, ty Myazz.
   - revert part of rev 274 in order to fix short animations when you cast a skill (ex : raging force).
   - random misc
Title: Re: Last aCis updates
Post by: Tryskell on March 26, 2013, 03:26:48 PM
Changeset 299

Quests/AI, Knownlists, Misc


Quests
   - addition of Q218, Q223 (added Road Collector / Harpy Matriarch AI), Q348 (ty equip, fernandopm, Tommy).
   - Baium cleanup regarding statue animation, drop of _waker.

Knownlists
   - cleanup KnownListUpdate : merging checks, merging method updateRegion with the task, do an action only if given object is an L2Character, checks moved out of for loops and "final"-ized, fix an issue of timer.
   - _knownList is moved from L2Object to L2Character. Items and L2Static aren't associated anymore to a knownlist object.
   
Misc
   - fix a typo in getClosestTownName() method (S*c*huttgart).
Title: Re: Last aCis updates
Post by: Tryskell on April 08, 2013, 07:55:17 PM
Changeset 300

Scripts, Misc


Scripts
   - addition of Q222, Q232 (ty equip, Junior).
   - cleanup numerous quests (getQuestItemsCount > hasQuestItems, drop of "exitQuest(true)" on STARTED cases, misc). Need to do more, I was lazy to re-read all godamn quests...
   - fix DoctorChaos respawn time (for regular RB time).

Misc
   - fix revive animation, drop of _isPendingRevive and associated getter/setter - ty Kingzor / xblx.
   - cleanup ItemSkills && ScrollOfRessurection itemhandlers (fix SoR consumption, made on skill call not on item call) - ty Kingzor / xblx.
   - fix esc, target is supposed to be kept if you were casting a skill (but a second press on esc cancels the target)- ty dEvilKinG for report.
   - drop GM bypasses regarding inventory capacity (avoid to be filled at 105/80).
   - use of hasPet() when possible. hasPet() check doesn't check if != null (as instanceof is doing it).
   - fix Olympiads zone ids 7 && 8, and move all spawn points farer to center (ty Rainbow Dash).
   - fix the alert on console regarding Shadow Sense (ty Rainbow Dash).
   
To be perfectly honest I was lazy those days and some things haven't be tested, notably olys zones (if they're wrong, complain to Hasha :p) and quests changes (that's just code changes, shouldn't alter the logic).
Title: Re: Last aCis updates
Post by: Tryskell on April 15, 2013, 08:27:05 PM
Changeset 301

Olympiads, Quests, Misc


Olympiads - ty Hasha.
   - fix visual bug regarding participant HP bars.
   - fix visual bug regarding participants buffs bar refresh (for spectators).
   - wait time setted by default to 30sec.
   - rework spectators system.
   - drop ExOlympiadUserInfoSpectator packet (not used).
   - add 2 configs (AltOlyWaitBattle && AltOlyWaitEnd).
   - random cleanup.

Quests
   - cleanup numerous quests (notably Q163, Q166, Q171, Q294, Q296).
   
Misc
   - cleanup ClanTable - ty Hasha.
      - avoid to use getter/setter inside the file.
      - scheduleRemoveClan parameter is changed for L2Clan not int (avoid to read 4 times the Map to find the L2Clan).
   - cleanup L2Clan
      - avoid to use getter/setter inside the file.
      - Integer parameter > int.
      - Drop of L2Clan version for setEnemyClan / setAttackerClan. Integer survivor > int.
      - Edit deleteEnemyClan(L2Clan) / deleteAttackerClan(L2Clan) parameters from L2Clan to int (clanId).
      - simplify few methods (notably ".contains" which implicitely returns a boolean).
      - getAllSkills() is edited for getClanSkills().
      - drop of _skillList, 2 removeSkill(int/L2Skill) and getSkills() methods (L2JIL unused) - ty Hasha.
      - drop of addClanMember(L2ClanMember) method (private, 3 uses, 1 line method).
      - getOnlineMembers(int) loses his parameter.
      - addSkillEffects(), updateClanScoreInDB() methods are dropped.
      - rework setReputationScore(int) method in order to avoid to create 3 times (!) clan members list, and regenerate getClanSkills() for every member. Use of Math.min/max.
      - setHasHideout() / setHasCastle() renamed for setHideout() / setCastle(). Variables are also renamed.
   - L2PcInstance
      - the Map storing subclasses is initialized with instance itself, and final.
   - sorted maps for subclasses, macros and skill lists - ty xblx, Trance.
   - fix beginner shortcuts (self heal was overidden sit icon) - ty Kingzor.
   - fix one systemMessage, and 3 others (not used yet, so not visible) - ty Hasha.
   - drop of L2TIntObjectHashMap (only one use before, not used anymore).
   - fix an issue regarding clan skills give back once Olympiads are done, if clan reputation is <= 0.
   - fix top/bottom ; getting one OR the other doesn't mean you got both anymore (1 && 0 || 0 && 1 = 0, not 1). Ty Hasha.
   - Skills (need to do a lot more about skills...)
      - fix Focus Attack (set to 1, not add 1).
Title: Re: Last aCis updates
Post by: Tryskell on April 18, 2013, 09:42:17 PM
Changeset 302

Quests, Misc


Quests
   - addition of Q212, Q365, Q383

Misc
   - fix a double animation on custom L2ClassMaster. Ty Kingzor.
   - revert changes made on ExHeroList (not buggy anymore, but still not retail).
   - L2Clan (again)
      - drop addSkill(L2Skill) method - unused.
      - addNewSkill(L2Skill)
         - manages to regroup 3 others packet sending in an existing getOnlineMembers() loop (avoid creation of 3 clan members lists per skill addition).
         - avoid to send skill refresh packet if the clan skill doesn't match your rights.
         - the message saying you earned a clan skill is now broadcasted to all clan members, rather than only clan leader (create some stuff to clan chat about...)
      - setReputation
         - refresh members skill list (when an update is needed).
         - fixes an error introduced in previous rev (rep points update has to be made even if an update isn't needed).
Title: Re: Last aCis updates
Post by: Tryskell on July 01, 2013, 06:19:48 PM
Changeset 303

Headquarters, Four sepulchers, Misc


Headquarters
   - HPs are now properly setted, but during flag spawn (as we refactored npcs.xml, the NPC got 40HPs following L2OFF).
   - HPs is currently doubled when Noblesse HQ version is used (and not, as regular L2J, damages mitigation).
   - L2SiegeFlagInstance cleanup.
   - drop of SiegeFlagStatus.
   - show skill cast error message even out of castle area.

Four sepulchers
   - Q620 rework (HTMs renamed, simplified structure).
   - Wigoth doesn't burn a Used Grave Pass anymore.
   - You can choose your recipe correctly.

Misc
   - [301] fix an Integer > int issue : if parameter is an int, .remove( method of ArrayList removes by index, not by given object.
   - [301] revert an experimental code for ss/bss effect, which has been commited by negligeance (and was buggy).
   - fix a log warning related to a SystemMessage.
   - slight edit in targetReconsider() method in order mobs don't attack doors or invisible GMs (+ a lot more checks). Don't make anymore movement checks for "regular" targetReconsider (reserved for skills checks).
   - edit StatsSet logs, in order it gives info related to the missing stat.
   - L2CharTemplate/L2NpcTemplate got more values setted by default (if you have to create a custom template, you got minimum infos to care about).
   - drop unrelated/inheritated stats from doors templates (as it inherits from L2CharTemplate, not L2NpcTemplate, no need of exp/sp/rHand/lHand/etc).
   - add pdef/mdef of doors on admin shift click panel (more fashion).
   - fix an error in calcSiegeRegenModifer() formula (wasn't taking custom in consideration). Move method from double to boolean.
   - fix a concurrent issue on L2CommandChannel + basic cleanup.
Title: Re: Last aCis updates
Post by: Tryskell on July 08, 2013, 01:04:45 PM
Changeset 304

Karma, Misc


Karma
   - [L2J 6074] added retail karma drop/gain system.
   - KARMA_PLAYER_CAN_BE_KILLED_IN_PZ does only what the name suggests. Drop redundant checks on isInsidePeaceZone().
   - don't clean karma on death if ALT_GAME_DELEVEL is setted to False (as karma drop is related to xp loss upon death).
   - don't earn a PK point on summons/pets kills (but still earn karma).
   - drop 4 configs related to Karma calculation method.
   - restoring exp (via BSoR / res skills / GM commands add_xp) don't clean karma. Ty Zerador for report.

Misc
   - L2CastleTeleporterInstance cleanup, also fix an HTM typo. Ty sahar.
   - [L2J 6070] cleanup calculateRewards(). Multiple fixes and performances tweaks.
      - doesn't create an empty map if aggrolist was empty.
      - avoid to calculate xp/sp gain if attacker is dead.
      - limit the list of rewarders to L2PcInstance (avoid all checks regarding summons).
      - fix issue regarding summons/summoner damages (one was overwriting the other, now it cumulates).
      - calculations are based on total damage made, not on maxHP of the monster.
   - don't earn a PvP point on summons/pets kills.
   - cleanup L2Party (internal vars uses rather than getters/setters, party broadcast setted to 12s instead of 10sec).
   - drop useless itemhandler ChristmasTree.
   - beast ss/sps are desactivated on summon death + cleanup poor overidden use on doDie() (L2Summon, L2PetInstance, L2SummonInstance).
Title: Re: Last aCis updates
Post by: Tryskell on July 14, 2013, 03:01:59 PM
Changeset 305

Skills, Misc


Skills
   - fix Polearm Accuracy (422), ty djdiablo for the fix.
   - fix treasure keys, based on previous SoR rework. You will stop to harass me with this at least, for Elmoreden's love.
      - drop DeluxeKeys skillhandler, add Keys itemhandler. DELUXE_KEY_UNLOCK is considered as a Dummy skill.
      - you can't consume a key on dead chests nor mimics ones (invalid target message).
      - regular keys are debugged : can't use on doors, and it uses the deluxe handler. Add the 60% luck on Chests.java script.
      - ONLY regular/deluxe keys for treasure chests are debugged. Others (pagan keys ?) would eventually be fixed when I will know their uses.

Misc
   - summons don't intention-stuck anymore if they're broken during a skill cast (they will either follow you back or continue attack).
   - fix Anakim/Lilith "out" teleporters. Fix teleporters spawns, and players spawns to be centered on the "tile".
   - avoid to refresh twice overload and penalty checks at character restore.
   - fix package sell mode (must stay checked if previously checked), ty sahar for report.
   - added retail penalty system, ty devilking for patch.
   - edit config NoQuests for NoScripts, and make a use of it, ty Root for the idea.
   - peace zone stuff :
      - drop the different implementations of isInsidePeaceZone(), keeping one. As that method includes allowPeaceAttack() check, drop external checks.
      - summons can't force attack anymore players on peace zone. Instead, it will follow target. Drop also the message, as there isn't on L2OFF.
      
TODO
   - missing SAs / dual passive skills drop/add on refreshExpertisePenalty().
Title: Re: Last aCis updates
Post by: Tryskell on July 17, 2013, 05:04:33 PM
Changeset 306

Quests, MapRegionTable, Misc (known in future generations as "Hasha commit" or "fuck you Bingo quests")


Quests
   - addition of Q381, Q382, Q384 (ty Tommy, roko91, Hasha for sexy help)

MapRegionTable (ty Hasha)
   - merge TownManager and MapRegionTable.
   - fix an issue with regions, where dying from Valakas's Lair would lead to teleport back to TI Island (out of region array).
   - multiple code improvements and data update.
   
Misc
   - cleanup items consumption messages (destroyItemByItemId() got it embedded), ty Hasha.
   - addition of scrambleString(string).
Title: Re: Last aCis updates
Post by: Tryskell on July 21, 2013, 12:56:16 AM
Changeset 307

Quests, Misc


Quests
   - addition of Q215, Q216, Q217 (ty Erlandys * 3)
   - fix //reload for quests ; ty Hasha
   
Misc
   - fix symbols, ty Hasha. Sidenote : the issue came from rev 189. Before that rev, it was working correctly.
   - augmented weapons aren't shown anymore on NPCs sell shop.
   - toggles are desactivated upon teleport, ty djdiablo. ONLY REGULAR PLAYERS ARE AFFECTED, NOT GMS.
Title: Re: Last aCis updates
Post by: Tryskell on August 01, 2013, 10:50:00 AM
Changeset 308

Quests, Spawnlist, Misc.


Quests
   - rework Q005 (failed HTMs and quest logic ; one of the first quest we commited ?)
   - fix Q016 (qItem wasn't cleaned up on quest abort).
   - proper qItem checks on q038.
   - cleanup numerous quests (up to q050) to match aCis current standards (naming conventions and other misc). For info, scripts are WIP since 1,5y and since that time, my standards changed. I will cleanup them 50 by 50, or so.

Spawnlist
   - refresh the spawnlist logging spawns from L2OFF ; it notably will fix following issues :
      - add monsters than L2J IL never had (20+ new species added).
      - fixes any spawn which was under ground (Ant Nest for example), and fill empty locations (Orc Territory for example)
   - credits to mcbigmac for loggerExt.dll, dEvilKinG for the SQLization.

Misc
   - add numerous missing minions, using L2OFF spawnlist, ty dEvilKinG.
   - if you try to edit subclasses being registered on Olys, you become ineligible to fight, ty KaL.
   - refresh overload penalty for //setclass command, ty KaL.
   - addition of the clans ladder feature (schedule task + loading), ordering clans by their reputation score, ty KaL.
   - fix typo on loginserver, when you drop GS more than one time, ty KaL.
   - Basic cleanup of GameServerThread. isBannedGameserverIP() now works using banned_ip.cfg (eventual workbench to split servers/client IPs + XMLization of the .cfg ?).
   - arrows are correctly dropped/deleted (current equipped pack stays equipped), ty Erlandys.
   - added missing HTM dialog for Metheus, ty KaL for report.
   
PS : spawnlist *system* isn't retail-like, but L2J system will be kept as data doesn't suck anymore.
PS2 : some issues can happen with that new spawnlist, as it edits ALL existing spawns. Report on forums if any problem.
Title: Re: Last aCis updates
Post by: Tryskell on August 08, 2013, 11:05:30 PM
Changeset 309

Quests / scripts, Spawnlist, Misc.


Quests / scripts
   - cleanup numerous quests (up to q170 ; rework edited quests from previous rev again).
   - fix a NPE occuring in Q232 (ty roko91).
   - addition of MissQueen script + 4 multisells. Spawns are also handled by the script.

Spawnlist - ty dEvilKinG
   - addition of missing spawns for 2 catacombs (Heretic / Apostate).
   - drop of Miss Queen spawns (handled by script).
   - refresh fixed respawn time for L2OFF ones.
   - new feature : random spawn time (random + fixed = real respawn time). Edit npcinfo.htm.

Misc
   - added the missing "1h cleanup task" for ground-dropped CW, ty KaL.
   - [L2J 6136] Drop _attacking implementation and associated condition.
   - [L2J 6131 / 6137] Fists are considered as a dual attack weapon (players only). Drop the "dual" boolean parameter on calcPhysDam() && isUsingDualWeapon() method.
   - "Characters donning Formal Wear cannot use skills and magic. If they equip weapons or shields, the Formal Wear will automatically be unequipped.", ty KaL. Drop the check from CW which was unequipping FW to avoid double checks.
Title: Re: Last aCis updates
Post by: Tryskell on August 28, 2013, 01:15:12 PM
Changeset 310

Quests, Misc.


Quests
   - cleanup quests up to q250. Fix also few bugs/typos/logic on existing quests.
   - addition of Q214, Q219, Q231.
   
Misc
   - random respawn should be -+, not only +. Ty fernandopm for reminder.
   - cleanup AdminCreateItem handler, and add create_set command (integrated in itemcreation panel). Open the inventory window. Ty KaL.
   - the champion reward system is now bound to regular level restriction (deepblue drop).
   - add few missing teleporters spawns (catacombs related), ty dEvilKinG.
   - fix two issues regarding boats (deviant boat walking in the mountain, "merging" boats in Rune docks), and messages/timers. Ty KaL.
   
PS : that revision has been delayed because I played a lot and I'm not sorry about it !
Title: Re: Last aCis updates
Post by: Tryskell on September 19, 2013, 05:29:21 PM
Changeset 311

Pledge rework, Clans Wars, Misc (ty KaL for the good work)


Pledge rework
   - Unecessary packets removal and packet flood decreased (clan tab doesn't need to completely be refreshed for every update).
   - Correct use of PledgeShowMemberListAll and PledgeReceiveSubPledgeCreated.
   - Fixed a bug where clan members would be shown in main clan - no matter what his pledge type was - after logging out.
   - Sponsor and Apprentice are real-time updated and have their name listed in yellow, except for themselves (client handled).
   - RequestPledgeReorganizeMember updated : you can't send captains out of main clan.
   - A clan member can only be assigned as captain of ONE sub-unit.
   - L2Clan loading: a single query cares about clans loading, instead of one query for IDs + one query per loaded clan.
   - PledgeReceiveWarList better sniffed and documented (now there's a new option of war display. They are: Declared, Under Attack, Declare War (new, so far unused).
   - RequestSurrenderPledgeWar checks for priviledges (avoid packet exploit), although it's not certain that this packet is still used by Interlude client.
   - The "Party" column located in Priviledges panel correctly works. Drop RankPrivs getParty() system (wasn't used).
   - RequestPledgeMemberPowerInfo and RequestPledgeMemberInfo are better documented.
   - Fix ManagePledgePower packet.
   - broadcastToOnlineMembers() supports array of packets (avoid to create a list of clan members on every use).
   - When a player is invited to a clan, he is setted to the correct affiliation rank.
   - Sub-unit creation costs are setted to 5000 for Royal Guards && 10000 for Order of Knights (instead of 2500 for both).
   - Update member's siege state on clan invitation / leave.
   
Clan Wars
   - Clan War request checks :
      - You cannot send war to your own clan anymore.
      - You can send war to clans with less than 15 members, but only if it has declared war on you first.
      - A clan cannot have more than 30 active wars.
      - Check is made on member's privileges instead of clan leader.
      - You cannot send war against a dissolving clan.
   - Clan War stop check :
      - Cannot be stopped if any clan member is in combat.
   - War info tab updated: Under Attack list supports pagination (13 clans/page).
   - Clan War penalty : ending a Clan War brings 5 days penalty to the clan, so it cannot send war to the same clan again until it expires.
   - Drop useless columns in clan_wars table (wantspeace1, wantspeace2).
   - Command handlers 88, 89 && 90 show proper message if there are no wars/attackers.
   - SystemMessage 247 typo ("S1" requiered, because it has parameters).
   - Exp loss calculation considers if there's one-sided war.
   
Misc
   - Fix some Q219 HTMs encoding (was UTF-16 instead of ANSI).
   - /clanpenalty usercommand is reworked :
      - cache the HTM && default String.
      - add Clan War penalty in the possible choices.
      - fix content when numerous penalites are listed.
   - Addition of /siegestatus usercommand, I publically shared my implementation : http://www.l2jserver.com/forum/viewtopic.php?f=69&t=28345 (http://www.l2jserver.com/forum/viewtopic.php?f=69&t=28345)
   - Cleanup onKillUpdatePvPKarma( and associated methods.
   - Cleanup quests up to Q270.
Title: Re: Last aCis updates
Post by: Tryskell on September 28, 2013, 08:57:19 PM
Changeset 312

Quests, Community Board, Misc


Quests
   - Cleanup up to Q280.
   - Fix 2 issues on Q039 (sound and drop rate), ty Ailierynn for report.

Community Board - ty Erlandys
   - Rework Community Board system to allow more inheritance uses (logger, error messages, etc).
   - Polish && cache all HTMs content (and that was fucking long).
   - "Clan" tab
      - Send different clan details following randomer, member, or clan leader status.
      - Implements clan mail panel.
      - Implements clan management panel (with working introduction system).
      - Completed the implementation of clan notices system, merging "clan_notices" table with "clan_data" table which avoids SQL queries.
   - "Region" tab
      - Two panels are added listing castles / CHs owners (custom as not existing on retail, but follow GoD vision).
   - "Friend" tab
      - Implements Blocklist panel.
      - Implements friend mail panel.
   - "Mail" tab :
      - add the "girl voice" (sexy as a robot) when you receive a mail, and add a popup at Enterworld if you got unread waiting messages.
      - Cleanup core side.

Misc
   - addition of missing use of SystemMessage 1761, ty Trance for report.
   
TODO : rework "Top" && "Memo" tabs (didn't touch at all), implement "Clan" forums.

IMPORTANT : need to add 3 columns in clan_data. The whole organization for CB HTMs is also edited.

http://www.youtube.com/watch?v=ZUHPVlaFQZk# (http://www.youtube.com/watch?v=ZUHPVlaFQZk#)
Title: Re: Last aCis updates
Post by: Tryskell on October 13, 2013, 03:44:24 PM
Changeset 313

Quests, Spawnlist, Sieges (part I), Misc


Quests
   - Cleanup up to Q300.
   - Fix an error on Q300 (missed a cond).
   - Add dropMultipleItems() method (used on Q108 && Q293 for the moment), ty Ailierynn.

Spawnlist
   - Add back artifacts spawns.
   - Add back 32030 spawn (Leopard's Dead Carcass).
   - Move 32090 spawn (Garden Sculpture, from Leopard's Dead Carcass location to guessed Broken Labyrinth location).

Sieges
   - SiegeManager
      - Drop the map storing artefacts and associated config (unused).
      - Use Config.java format for sieges configs (public static, no getters, THAT_WRITING_STYLE).
   - L2CastleChamberlain
      - Money for doors / traps is now took from player inventory, not clan warehouse.
      - Proper HTM for adena check on Castle Chamberlain (for doors /traps upgrades).
      - Drop of a double YOU_NOT_ENOUGH_ADENA message (already handled by reduceAdena()).
   - Rework Flame and Control systems (avoid to null/re-create maps, drop old SiegeSpawn class for TowerSpawn).
   - L2SwampZone && L2DamageZone inherits from a new zone, named L2CastleZoneType (inheriting itself from L2ZoneType).
      - L2DamageZone task is cleaned up (notably will cancel if value <= 0 instead of for looping doing nothing like an idiot).
   - Implements castle traps system.
      - You have to pay for activation.
      - Destroying a Flame Tower desactivates trap controlled by that Flame Tower.
      - Traps affect defenders aswell ("Once activated, the flames do not distinguish friend from foe.").
   
Misc
   - Fix AdminCreateItem handler (KaL you're fat), ty meX for report.
   - Rework setTarget(), in order it automatically sends MyTargetSelected (and StatusUpdate if the target can been isAutoAttackable()).
   - Fix splitting damage if you got a shield but are unarmed (should be considered as one handed, not fist), ty raphaelfersan.
   - Add 9 missing skilltypes in L2NpcTemplate addSkill(, meaning monsters will now use their whole skillset, ty xblx.
   - Cleanup almost all getSkillsArray() uses to use proper "skilltypes" maps when possible. Reduce the number of checks needed aswell.
   - Don't reward adenas in party if you're already maxed + slight method cleanup, ty xblx (didn't reuse the whole fix).
   - Fix guards behavior when they're under attack (you're supposed to be able to speak with them while fighting, n/c), ty Kenrix.
   - Fix next intention unlock while using a bow (must occur at 50% gauge). Didn't fix yet the casting intention (probably can be made editing intentions, instead of forcing it via a timed task).
   - Fix ShopPreviewInfo packet, ty Ailierynn.
   - More uses of getAttackType(), which reduces generated code (when only L2WeaponType was required).
   - addition of replace(String, int/long/double) methods in NpcHtmlMessage packet (which avoids a lot of visual long code).
   
PS : new SQL table for traps.
PS2 : zones XMLs are edited as traps zones need dedicated id. 70000 and 71000 ids are used.

IMOPRTANT : Some stuff are still bugged. More to be done / fixed / polished in next rev.
Title: Re: Last aCis updates
Post by: Tryskell on October 27, 2013, 03:17:21 PM
Changeset 314

Sieges (part II), Extractable, Misc


Sieges (part II)
   - Doors
      * rework doors upgrade system to introduce castleId column (avoid to generate StringBuilders).
      * broken door/wall SystemMessage is now broadcasted to defenders (and not to the door knownlist).
      * doors upgrades are correctly cleaned on midVictory (objects were holding old properties).
      * drop of _doorUpgrades Map and uses. It can be directly handled looking the door value.
      * spawnDoors method.
         - split content between closeDoors (used at start siege) and spawnDoors (midVictory / end siege). It avoids to send x2 broadcastStatusUpdate
         - drop of spawnDoors() to simply keep and use spawnDoors(boolean).
         - dead doors are supposed to be revived during midVictory.
         - don't process anymore doors upgrades loading during siege start / midvictory / end.
         - starting a siege shouldn't spawn doors, simply close them. If you mess with doors, use //spawn_doors.
   - Traps
      * the traps damage task cleanup is made during its lifetime, not everytime a player leaves the area.
      * add a message when a trap is broken, and another when it's triggered (broadcasted to defenders).
   - fix concurrent issues (fix weird siege behavior on attackers/defenders lists and artifact cast NPE).
   - drop the array on Siege constructor (getCastle() returns a simple Castle object), a Siege object is created with Castle object (created in same time). Avoid null checks/possibilities
   - You don't need 2 artifacts casting to midVictory Goddard / Schuttgart, only 1 is enough.
   - cleanup L2ControlTowerInstance, the list is created with the object (avoids null checks and the synchronized crap).
   
Extractable
   - rework Extractable handler
      - avoid to create dummies L2ItemInstance - without counting those generated by addItem
      - drop the check based on subclass
      - avoid a second for loop.
      - rework the 2 int arrays to be handled by a list of ItemHolder (addition of that holder, and creation of a folder for holders).
   - drop L2ExtractableProduct and associated system from L2EtcItem (postIL stuff).
   
Misc
   - cleanup few methods (uses aswell) - reduceAdena, addItem - which avoids visual issues, cloned sent packets, useless objects creation (dummies L2ItemInstance notably).
   - cleanup L2Observation (avoid to parse 2 times the same String, shorter code).
   - cleanup numerous (150+) String.valueOf( - due to previous revision introducing it directly embedded on NpcHtmlMessage. Probably some are left, but I dropped a good part already.
   - drop of L2EtcItem _isBlessed parameter.
   - revert some reduceHp( changes made on PcStatus, which was buggying falling damages and trap zones system (as attacker was null, it was returning).
   - had to slightly re-position how things are loaded in Gameserver.java (Seven Signs are now loaded before Castles).
   - drop the castle id check on (getCastle() != null && getCastle().getCastleId() > 0) - it is always > to 0... If it's not, you messed.
   - move the castle doors upgrades loading from Gameserver to DoorTable (more legit).
   - heavy cleanup of L2ClanHallManagerInstance.
   
PS : you need to edit castle_doorupgrade.
PS2 : L2ClanHallManagerInstance cleanup is untested.
Title: Re: Last aCis updates
Post by: Tryskell on November 03, 2013, 06:11:32 PM
Changeset 315

Quests, Misc


Quests
   - cleanup up to q330.
   - add setItemIds() method to replace questItemsIds = new int {}.
   - add hasQuestItems(int...) to avoid "hasQuestItems(int) && hasQuestItems(int) && hasQuestItems(int) &&..."
   - add hasAtLeastOneQuestItem(int...) to avoid "hasQuestItems(int) || hasQuestItems(int) || hasQuestItems(int) &&..."
   
Misc
   - Castles
      * sieges loading is reverted back (was messing in different points)
      * castles loading is only processed in CastleManager (avoid to split the loading on multiple sections).
   - L2DatabaseFactory is cleaned up, we dropped msSQL support and ConnectionCloser (handled by "try ()" Java 7 system).
   - Update the different libs up to latest (drop the debug message from C3P0).
Title: Re: Last aCis updates
Post by: Tryskell on January 05, 2014, 07:31:15 PM
Changeset 316

Quests, Misc


Quests
   - cleaning up to Q350
   - addition of Q350 (+ dp/core support for crystals leveling). Compared to Hasha version :
      - addition of the itemget sound on a success.
      - change of % luck calculation (was messed).
      - slight edit on DP side (addition of all T. rex IDs, drop of the dummy Antharas ID).
      - slight edit on HTMs.
   
Misc
   - drop getExpertiseLevel() method, hardcoding values directly on the array.
   - add the possibility to script item usage for scripts (one use for Q350, but can be useful for your custom scripts).
   - cleanup double checks on clan leveling.
   - fix a NPE (death penalty, due to attacker being possibly null from last revision).
   - add a missing break on RequestActionUse (cases 61 / 1000 were melted).
   - add a security check on RequestShortCutDel (ty Root).
   - fix an issue with static objects targeting (due to previous setTarget rework).
   - sit stuff
      - cleanup isSitting() check, avoid to send twice CharSit packet to yourself.
      - methods unification for the different uses.
      - delayed action for /sit is now implemented.
      - when a throne is targeted, the player runs to it, and sit on destination if it's too far.
Title: Re: Last aCis updates
Post by: Tryskell on January 11, 2014, 02:48:10 PM
Changeset 317

Quests, Misc


Quests
   - cleaning up to Q360.
      - numerous drop rate edits.
      - fix one HTM not correctly shown on Q354 (case where QItems are superior to 100).
      - fix class change quests to be not repeatable, and add the socialAction packet.
      - fix Q357 reward system, and some HTM typos.
   - addition of Q211, Q213 - ty roko91.
   
Misc
   - drop SkillsEngine singleton ; those different methods are now handled directly on concerned sections (ItemTable and SkillTable).
   - split npcs.xml into multiple files, following Pauler (L2JPes) method (it was commited into a single big file because I didn't find a valid splitting method).
Title: Re: Last aCis updates
Post by: Tryskell on February 28, 2014, 10:43:32 PM
Changeset 318

Quests, Skills, Misc


Quests
   - addition of Q225, ty to sharer.

Skills
   - drop TARGET_ITEM && TARGET_CORPSE_CLAN target types.
   - cleanup few target types, in order to avoid to recalculate numerous times the caster<>victim distance (when handled by getKnownTypeInRadius).
   - rework TARGET_CORPSE_MOB in order to drop a ClassCastException (you can't "corpse life steal" summons anymore).
   - fix Mass Resurrection skill, ty sahar.
   
Summons
   - add support for Sin Eater skill (suicide aura skill + few random chat).
   - all "betray" checks got their appropriate user messages.
   - passive summons such as Sin Eater, Big Boom or Wyvern shouldn't be able to use Attack button.
   - fix a ClassCastException when you tried to attack L2StaticObject (thrones, etc) using the Attack button. It's an invalid target from now.
   
Misc
   - enchant boni are now refreshed if +4/+6 from admin panel. Decreasing enchant value also works.
   - cleanup L2ArmorSet methods, allowing less inventory checks (up to 3 times with is6Enchanted method use).
   - fix cellpathfinding geodata option (massive NPEs from javolution drop), ty Hasha.
Title: Re: Last aCis updates
Post by: Tryskell on March 05, 2014, 09:41:50 PM
Changeset 319

GM commands, Skills / Formulas, Misc - Part I


GM commands
   - addition of //knownlist : allow to check target's knownlist. Eventually, the use of that command would be extended later.
   - from now, //gm schedules the rollback of the previous accesslevel (allow easy testing without manual accessLevel drop/add + character relog). Default 1 minute.

Skills / Formulas
   - rework Func and classes holding such data (notably moving from [] to List).
   - rework Env to match with latest L2J (getters / setters, "div/mul/add/sub"Value methods, getPlayer() addition).
   - drop numerous unused Conditions (9 overall).
   - rework calcHitMiss method (roughly -10% success compared to before), add night and Z+- modifiers, lower behind and side modifiers (from 20/10 to 10/5).
   - fix gladiators charge system. It matches L2OFF IL.
   - matkModifier && levelModifier ratios from skills % landrate are reworked, as it is currently totally breaking formulas.
   
Misc
   - numerous cleanups (complete some javadoc, drop useless methods, reorganize checks in order to avoid to calculate not needed stuff).
   - fix a NPE caused by selecting "show skills" chat option on a skill trainer NPC with no active target.
   - doors getName() is correctly setted, while internal getDoorName() and _name dissapear.
   - revert some sections of rev 239 concerning sieges dates. Drop 7 signs period check aswell (not existing on retail).
   - fix few concurrency weaknesses.

Part I means there's a part II, it's UNSTABLE. Use it at your own risks. There were too much edits to be able to re-read what I edited, I decided to commit it like that.
Title: Re: Last aCis updates
Post by: Tryskell on March 17, 2014, 06:17:58 PM
Changeset 320

Sieges, MDT (Part I), Misc


Sieges
   - fix registration date end calculation (cf : Siege participation registration is closed twenty-four hours before the start of the siege.).
   - registration date is now calculated on server startup, and based on siege date (it was missing).
   - move siege logs when a new date is setted, not on server startup (well if your server had old dates and need refresh it will show, but otherwise it won't).
   - rework startAutoTask() in order to avoid to cancel/set twice ScheduleStartSiegeTask (if date is too old and need to be edited).
   
Monster Derby Track - part I
   - announcements aren't broadcasted twice anymore and are based on zone types, not on L2RaceManager knownlists.
   - race informations are now refreshed on player teleport (can see properly monsters).
   - set the default race number to 1 instead of 4.
   - setup race announcements like L2OFF, using a 20min game cycle rather than 10min.
   - move the entire race system logic from L2RaceManagerInstance to MonsterRace. Reduce the number of running tasks from 40 (20 per NPC) to 1.
   - newSpeeds() isn't processed twice anymore (dropped from newRace() end).
   - newRace() logic is rewritten (avoid to get NPC clones, better performance).
   - implements "View Past Results" button (holding past races informations up to 7 races).
   
Misc
   - fix few warnings spotted by new Eclipse version, ty SweeTs.
   - fix previous commit regarding //enchant admincommand (was testing with only me online, so didn't see this coming), ty SweeTs.
   - fix FuncMAtkCritical, ty sahar to point it.
   - add 2 methods to broadcast crap, toAllPlayersInZoneType() and toAllPlayersInRegion(). Each allow numerous packets as parameter.
Title: Re: Last aCis updates
Post by: Tryskell on March 19, 2014, 09:09:21 PM
Changeset 321

MDT (part II), Misc


MDT (part II) - a big thanks to roko91 for odd calculation ^^.
   - move MonsterRace in most appropriate section (instancemanager.games)
   - add data persistance :
      - current race state is saved on race end. The current race number is retrieved from history aswell.
      - bets on lanes (from CURRENT race) are saved on ticket obtention. It allows to recalculate odds without errors.
   - fix previous commit regarding "View Past Results" button (records should be shown from newest race to oldest).
   - add odds rate calculation per lane (happens at "tickets sales closed" event).
   - the odd of the first place is now saved on HistoryInfo.
   - drop double message on ticket obtention.
   - implements "Calculate Winnings" button (3 different bypasses, with numerous checks).

Misc
   - add retail HTM when you got too much quests. Ty Root.
   - fix a ConcurrentModificationException ; slight rework of L2SiegeClan. Ty sahar.
Title: Re: Last aCis updates
Post by: Tryskell on March 28, 2014, 06:33:11 PM
Changeset 322

Trove drop, Misc


Trove drop
   - drop entirely usage of that library, as there is almost no impact on performance.
   - basically :
      - TIntObjectHashMap : Map<Integer, Object>
      - TIntIntHashMap : Map<Integer, Integer>
      - TShortObjectHashMap : Map<Short, Object>
      - TIntArrayList : List<Integer>

Misc
   - remove/add the SA if a weapon grade penalty occurs/doesn't occur. Ty KaL for the idea.
   - cleanup sortHeroesToBe() method.
   - fix map_regions.xml in order 20_25 and 21_25 teleport to Talking Island (fix Elven Ruins).
   - fix a sit visual bug. Ty Kingzor.
   - fix siege skills on subclass change, and drop a double use of restoreDeathPenaltyBuffLevel(). Ty Kingzor.
Title: Re: Last aCis updates
Post by: Tryskell on March 31, 2014, 07:12:33 PM
Changeset 323

Misc

   - numerous cleanups (Javadocs, formatting, methods renaming, organizing classes, etcs).
      - AutoSpawnHandler > AutoSpawnManager (moved to instancemanager)
      - RecipeController > RecipeTable (moved to datatables)
      - SevenSigns / SevenSignsFestival (moved to instancemanager)
      - CursedWeapon (moved to model.entity)
      - model.partymatching folder creation (moved 3 classes inside)
      - numerous "L2" drops on names (L2Item, L2Weapon, L2Armor, etc). More to come.
      - Item renamed NewItem (because of L2Item renamed Item), and internal Item (another one) class dropped for ItemHolder use.
   - rework checkPvpSkill method. Ty Kingzor for the buff/heal fix.
   - recipes lists are on Collection from now (avoids operations from/to arrays).
   - drop _charId, getter/setter. Use of getObjectId() on the few uses.
   - rework SkillDat (renamed for SkillUseHolder), avoiding to create a massive amount of objects (3 final objects per players refreshed on demand, instead of 1 created per casted/queued skill).
   - _currentPetSkill getSkill() is correctly setted to null after a pet skill cast.
   - [L2J 6477] fix a double login issue.
   - [L2J 6488] [L2J 6490] implements MaterialType, CrystalType enums. Cleanup ItemTable. Move and rename classes.
   - addition of missing sounds for boats, ty Root.
   
PS : you have to replace all items/skills XMLs, and few quests/scripts aswell.
Title: Re: Last aCis updates
Post by: Tryskell on April 11, 2014, 02:53:08 AM
Changeset 324

Scheme Buffer, Misc


Scheme Buffer
   - addition of Dr House scheme buffer, remasterized by me. The big differences are :
      - buffer buffs aren't loaded from a mySQL table, but from a Config line from npcs.properties (String split > register on Map).
      - there is no L2Skill storage anywhere, only Integers (skillId). The skillLevel is generated from SkillTable getMaxLevel().
      - the schemes loading/save is made GLOBALLY (understand, not on player login). Save is still done on server shutdown.
      - the players schemes buffs lists are stored on a single varchar, which is parsed with String split method (before there was one entry on the database per skill).
      - fix all godamn typos and broken english.
      - statified HTMs content when it could be.
      - reworked the "Edit my schemes" button to be more logical : select a scheme, THEN a skill group, THEN a buff. The HTM content also scales with that progression to make it intuitive.
      - added infos everywhere (such as current selected scheme, number of max buffs allowed, number of current buffs per scheme,...)
      - added "Heal" and "Cleanup effects" buttons (affect your current pet aswell).
      - the HTM system uses getHtmlPath(), meaning a different buffer npcId can be linked to different HTMs (unique dialogues for each buffer instance).
      
Misc
   - [L2J 6498] Drop double iterations on pet/player inventories deletion.
   - [L2J 6382] FourSepulchersManager cleanup - drop Map .remove(), use Map.Entry instead of keySet() + .get(), format the class.
   - addition of method broadcastTitleInfo() which uses TitleUpdate packet ; complete RequestGiveNickName clientpacket (adding numerous messages). Ty Root.
   - fix getMaxLevel() method, broken with Trove changeset.
   
PS : the Scheme Buffer is a first shot. If you manage to propose better/easier organization, I would eventually take it.

http://www.youtube.com/watch?v=x_xCXsM8Qpc# (http://www.youtube.com/watch?v=x_xCXsM8Qpc#)
Title: Re: Last aCis updates
Post by: Tryskell on April 13, 2014, 03:11:20 PM
Changeset 325

Misc


Misc
   - Add retail HP/MP/CP calculation for players. Biggest change is the mana pool, which is drastically lower.
   - Add retail breath multiplier (based on race).
   - Add support for player radius / height (based on sex). There isn't yet uses of that system (bored to edit everywhere...) and values would still be rounded for an int anyway.
   - Move actors templates classes, rename them (drop "L2"), private the variable and add getters (PcTemplate). _baseCpMax is dropped, as there isn't base value for players anymore.
   - Slight cleanup (CharStatus, QuestTimer). Drop checks on doRegeneration (useless, handled by setCurrentX()).
   - [L2J 6301] Herbs aren't supposed to be delayed. Drop the task.
   
PS : track eventual errors on Quest, I have to revert the drop of the try/catch otherwise.
Title: Re: Last aCis updates
Post by: Tryskell on April 23, 2014, 06:40:22 PM
Changeset 326

Recipes / Craft, TradeController, Misc


Recipes / Craft
   - Drop L2RecipeInstance (use ItemHolder instead)
   - Fix a NPE on RecipeTable listItems method and rework it to use ItemHolder. All missing items for a craft are now listed, with good quantities (not only sending the first missing mat).
   - Merge RecipeTable updateCurMp() && updateCurLoad() methods into updateStatus() - from 2 StatusUpdate packets sent to 1.
   - fix the "ghost" success message on crafting window when you simply open a recipe.

TradeController
   - move TradeController into datatables and renamed it BuyListTable.
   - drop merchants.sql table (unused).
   - XMLize 2 SQL tables, merchant_buylists && merchant_shopids. The dynamic content (aka limited stock) is still loaded/save on SQL.
   - created a new package model.buylist, moved L2TradeList inside it and renamed it NpcBuyList and Product (that class was holding two classes, so it is splitted).
   - general cleanup and improvements, from latest L2J Nos changeset. No more 3min shutdown trying to save buylists stuff...
   - the data used is the latest aCis one, plus roko91 changes, minus few empty buylists linked to nothing, and the "Coin Collector Album" restock timer.
   
Misc
   - rework AdminEditNpc adminhandler :
      - drop stuff regarding pages generation (for shoplists and skills, as such commands never send more than 10 entries).
      - secure user input (try/catch).
   - Drop L2Attackable.RewardItem (use ItemHolder instead), TradeItem (clone class existing in another class), move NewItem inside DocumentItem (just to keep it similar to DocumentSkill, but both needs a rework...).
   - Edit _sweepItems / _harvestItems arrays for Lists, make them final (heavier RAM costs, but avoid arrays based operations, Lists creations, null checks are replaced by !isEmpty() and .clear() is used instead of creating another object).
   - Rename and move few "items based" classes on 'model.item' package.
   - Rename ItemsAutoDestroy to ItemsAutoDestroyTaskManager and move it on 'gameserver.taskmanager' package.
   - Edit ItemHolder (drop the unused objectId int, add setters).
   - Drop unused stuff from DropData, isQuestDrop() being always false (quests items aren't handled by droplists, but scripts...).
   - [L2J 5962] Fix a possible deadlock on player charges.
   - [L2J 5374] Reset the delete task on charges add/remove (avoid to get your charges dropped like an idiot after 10min...).
   - canInteract() is used as check for onBypassFeedback() call, impacting all NPC bypasses. Before it was used only on L2Npc, meaning children classes bypasses weren't covered by the check (such as dead, sit and etc states).
   - drop a double tempInventoryDisable() use, and move the method use after buylist checks (avoiding to freeze your inventory for nothing).
   - fix QuestList() serverpacket implementation (could lead to some null), setting the current player as parameter. Ty SweeTs for report.
   
PS : RequestBypassToServer sends by default ActionFailed.STATIC_PACKET after a command call. It's not needed to call it.
Title: Re: Last aCis updates
Post by: Tryskell on May 29, 2014, 09:06:26 PM
Changeset 327

GrandBossManager, Misc


GrandBossManager
   - Edit GrandBossManager to use a singleton, to fit with overall project writing style.
   - "Allowed players" system :
      - Move the initialization AFTER zones loading (it wasn't making any errors, but the system wasn't working).
      - Reworked it to simply use .add(, instead to set it using a temporary List.
      - Use an index system based on zoneId to avoid to search/retrieve current L2GrandBoss zone info on every SQL raw (it's doable since we order the query by ZONE and not by PLAYER anymore).

Misc
   - Fix 2 NPEs on 2 quests, due to Trove drop (Trove was handling null by returning 0, while Java Map simply send null). Ty Root for fix.
   - Fix a NPE on itemid 8811. Ty sahar for report.
   - Add skill names on scheme buffer, using kdDer64 buffer graphic style. Also edit the extends in order to be invul. Ty sahar for patch.
   - Added few missing restock delays on Interlude spellbooks. Ty rebelstrik for report.
   - Move setPledgeClass() call leading to rank miscalculation for heroes on player restore, ty sahar.
   - Some Hasha TODO list :
      - Drop L2Skill._displayId, getter/setter. Replaced by getId().
      - getAvailableHenna() is edited from array to List. Drop external null checks, as it is empty at worst.
      - Rename few packets typos, such as ware*H*ouse / withdraw*AL*
      - Drop DoorTable.putDoor(), single use.
      - Edited TaskSevenSignsUpdate _log definition (task system needs to be edited anyway).
Title: Re: Last aCis updates
Post by: Tryskell on June 19, 2014, 03:12:01 PM
Changeset 328

"Stat" classes, Misc


"Stat" classes
   - Reworked HP/MP/CP players calculation, dropping 3 Func and overriding existing methods.
   - Random cleanup (drop null checks, use getActiveChar() directly, and other misc).
   - getPhysicalAttackRange() : range isn't calculated anymore for NPCs (template value is final value), and default value for players follows WeaponType (drop bow range Func).

Misc
   - Cleanup L2MultiSell, splitting it in different classes : MultisellData, and a model package holding few models.
   - Fix a ClassCastException, and rework Raid Boss Curse on skill cast.
   - Fix a NPE on L2PcInstance.doDie( : it wasn't verifying pk clan status.
   - Edit some values which got no use to be long (avoid some int > long casts).
   - getClosestTown() : added a Race check for teleport (D.Elf / L.Elf).
   - Fix FuncEnchant for S grade weapons, BigBlunt/BigSword types and drop NONE type - Ty Hasha.
Title: Re: Last aCis updates
Post by: Tryskell on August 09, 2014, 02:11:38 AM
Changeset 329

Quests, Herbs, Misc


Quests rework by roko91 - part 1 (initial patch is splitted in 2, next part go from Q401)
   - Fix drop chances and/or logic at onKill using retail C4 rates.
   - Add (or even remove !) monsters IDs at onKill.
   - Fix few NPC spawn/despawn times delays.
   - Improved readability and/or performance.
   - Tryskell edition made on roko91 patch :
      - Q101, Q340 : roko91 misconception.
      - Q102 : invalid state where HTM couldn't be sent on cond 2/3.
      - Q296, Q345 : invalid rate system.
      - Q348 : didn't include changes, have to rework it.
      - Q369 : deprecated variables should be dropped :P. Fix onKill section aswell, as it misses a check regarding other type of shards.
   - General cleanup made up to Q400 (was previously stopped to Q360).

Herbs
   - Addition of "deep blue" drop rule for herbs.
   - In case multiple herbs are dropped and AUTO_LOOT_HERBS config is on, the addItem is correctly made, but only one item is added. Drop the isFlying() check.
   - Fix herbs destroy time.

Misc
   - Unify naming convention between herbs and items destroy time configs.
   - Fix the spawn protection config, which now uses a task (+ different message when timer expires). Added a visual effect aswell.
   - Doors Func are dropped.
   - Dropped deprecated embedded svnversion for both DP and GS projects.
   - isOutOfControl() got more checks included (stun, paralized, sleep), and is overidden on L2Summon to add isBetrayed() check.
   - Replace RequestActionUse isMovementDisabled() pets checks for isOutOfControl(). Add a missing isOutOfControl() check on useSkill.
   - Delete EVT_ARRIVED_REVALIDATE AI event, as it isn't needed for anything. More to be done for movement, probably will go after geoengine rework.
   - Fix a Connection leak on //remove_clan_penalty admincommand. Ty SkyArg.
Title: Re: Last aCis updates
Post by: Tryskell on August 12, 2014, 12:31:18 PM
Changeset 330

Quests, Misc


Quests
   - addition of Q230, Q233, Q327 - ty to sharers.
   - addition of victory pose on quests completion in few quests. Ty roko91 for the list.
   
Misc
   - Fix spawn protection task NPE (shit happens). Ty sahar.
   - Drop a useless parameter on notifyDeath() method.
   - Drop methods && variables related to snoop system. Cleanup AdminGmChat.
   - Drop the svnversion check, cleanup both build.xml.
   - AdminEffects handler :
      - Move //para_all && //unpara_all commands higher to don't be overwhelmed by //para && //unpara. Paralize visual effect is now stucked to old effect 2.
      - Drop sendPacket when a broadcastPacket is also sent.
      - Multiple random cleanup, going from merging checks to messages addition.
      - //play_sounds is renamed //jukebox (to avoid to mess with //play_sound).
Title: Re: Last aCis updates
Post by: Tryskell on August 31, 2014, 08:39:11 PM
Changeset 331

Quests rework (part 2), Misc


Quest rework - Ty roko91.
   - Addition of Q417, Q420.
   - Recode of Q605, Q606.
   - Fix the invalid reward id on Q405.
   - previous commit got all details about what is added, removed, edited on existing quests. This commit is effective from Q401 up to latest quest. Compared to roko91 patch :
      - Drop useless exitQuest(true) on STATE_STARTED.
      - Q403 : fix onKill for npcId 27038. Extract getItemEquipped( checks to avoid code repetition.
      - Q405 : fix onKill (could infinitely drop the qItem), revert hasAtLeastOneQuestItem use (wrong logic, it's && and not ||).
      - Q415 : addition of a missing Gantaki HTM, cond 9.
      - Q417 : move cond 2 obtention (to avoid permanent setInt/sound).
      - Q419 : improve Martin's STATE_STARTED case.
      - Q420 : Wrap Mimyu talk in a cond 4 check (avoid an exploit). Fix an if/else in Maria. Fix a permanent setInt/sound on Byron, when "deluxestone" occurs. Drop useless items checks on dragons cond 6/7.
      - Q421 : cleanup STATE_CREATED.
      - Q508, Q509, Q510, Q601, Q602 : general cleanup.
      - Q617 : revert npcId 31271 01 and 02 HTMs to handle STATE_CREATED easily.
      - Q618 : cleanup cond/items checks on onAdvEvent(
      - Q644, Q645, Q646, Q647, Q649 : general cleanup.
      - Q651, Q652, Q653 : use Location[] instead of int[][] to hold positions.
      
Misc
   - rename getIsSpoiledBy() to getSpoilerId(). Same for setter and _variable.
   - fix the Class Master and simplify the code using ItemHolder, ty Hasha.
   - create a dedicated Class Master, npcId 50006. Revert L2Class of 31228 to L2Npc.
   - revert to initial buffer visuals. The amount of text generated by skill names is too big in few cases, leading to client crash.
   - fix and cleanup Ketra/Varka buff system (the last buff was out of index check).
Title: Re: Last aCis updates
Post by: Tryskell on September 14, 2014, 12:54:26 PM
Changeset 332

Quests, Party, Misc


Quests
   - Q235 : drop few qItems before the end of the quest. Add Mimir's Elixir skill effect. Cleanup hasQuestItems checks. Ty Root.

Party
   - Fix a ConcurrentException on L2Party.
   - Add disband and expel messages.
   - Add AltLeavePartyLeader config to edit the way the party lead change is processed.
   
Misc
   - Revert rev 313 bow change, cleanup calculateTimeBetweenAttacks().
   - Cleanup ClanHall.java, fix a ConcurrentException. Add removeAllFunctions(), which avoid to generate one db connection per deleted function.
   - Drop redundant BeginRotation serverpacket. Activate those packets on L2GamePacketHandler. Allows to rotate using arrows keys.
   - Cleanup AdminDoorControl handler, fixing redundant open/close process, pointless checks and making error handling more friendly.
   - Make Exception on client packets more informative, which avoid to look on logs.
   - Edit Zariche to be considered as NONE weapon instead of FIST (avoid double hit system).
Title: Re: Last aCis updates
Post by: Tryskell on November 23, 2014, 12:28:30 PM
Changeset 333

GameTimeController, Misc


GameTimeController
   - Apply latest L2J version, fixing the moonwalk issue. Keep the DE passive skill system.

Misc
   - Fix one NPE vulnerability on L2Buffer getScheme() method.
   - Add the "banned" effect on character selection if a character access is <= -100. Ty RooT.
   - Fix setNewLeader( duplicate entries (coming with rev 311). Ty SweeTs.
   - Fix database_installer.bat entries. Ty RooT && Fronex.
Title: Re: Last aCis updates
Post by: Tryskell on December 25, 2014, 07:39:12 PM
Changeset 334

GeoEngine rework - a big thanks to Hasha for this awesome piece of code !


The Readme.txt on "data/geodata" is updated with numerous important informations regarding geodata types && configurations. Consider to read it !

General
   - Moved all geoengine related stuff to one package.
   - Massive cleanup/split/rework of all geoengine classes.
   - Created geoengine.properties config file, removed unnecessary variables.
   - Certain variables merged with L2World.

GeoData
   - Removed unnecessary interface and SingletonHolder, pure inheritance is used now.
   - Dropped canEnterDirection() methods and Direction class, as replacement added getNSWE(...) method, which returns directly geocell NSWE byte (four flags) loaded from geodata files -> avoid getting same geocell data multiple times.
   - Regions are loaded according to config file definition.
   - Added posibility to load L2J and L2OFF geodata.
   - Implemented new geodriver with new geodata storage approach (kept in Blocks).
   - Removed method concerning LoS and movement, now geodata contains only physical description of the terrain.
   - Point3D and Location cleanup, NodeLoc now extends Location...for better usage in future.
   - Spawn Z coord is now compared with geo Z. When it differs too much, use spawn Z instead of geo Z -> fix spawn problems.
   - Slight rework of geodrivers, now they differ between each other only in storage system.
   - Geodata type is set by config, each geodriver loads correct geodata regardless geodata type.
   - Added geodata path to config (you can move them to specific folder, not only /data/geodata).
   - GeoDriverArray is fastest geodata container at the moment. Kept GeoDriverBlock for some test purposes. Both work just fine.

GeoDataConverter
   - Added native support for geodata converter.
   - Creates diagonal (*.L2D) geodata files from L2J (*.L2J) or L2OFF (*_conv.DAT) ones.
   - Converter can be launched using "GeoDataConverter.bat/sh" after pack building.

PathChecker
   - Various scrapes of code put together to create PathChecker class.
   - Additionally reworked, less code better performance.
   - Performs "see" or "can move" checks for movement, attack and spelluse systems.
   - Splitted "see" and "can move" checks. "see" is way easier and faster.
   - Added Z coord calculations -> fixed problem with seeing over flat obstacles and floors.
   - PathPointChecker merged with into PathFinding package (more logical, better for future changes).
   - Recoded LoS checks, more durable, during one iteration checking both LoS directions.
   - LoS now taking object height in consideration, added 2 configs for LoS checks (percent of height of the object, where starts the LoS check line and max obstackle height, which can exceed this virtual line).
   - using this inheritance structure Pathfinding -> PatchChecker -> CellPathFinding depending on geodata setting (GeoData: 0..door checks, 1..door and geodata checks, 2..door and geodata checks and pathfinding.
   - Big rework of canSee check, should be faster, more transparent and also fixes several wrong evaluated cases (thank you guys for report).
   - PathChecker is loaded correctly according to the config setting (standard/diagonal).

PathFinding
   - Removed GeoPathFinding classes, CellPathFinding is used as default.
   - Removed SingletonHolder, added support to load own pathfinding system.
   - All buffers are loaded during initialization.
   - Cleaned up path post-filter -> fixed famous NPE error, no javolution needed.
   - Equation for A* node weight corrected -> leads to getting better optimized path.
   - Fixed weird movement between path nodes.
   - PathFinding using same loading model as GeoData (Null... or Cell...), provides better usage of PathFinding (no need to check GeoData config setting everytime you access PathFinding).
   - Since we are in beta, remove debug system.out messages.
   - Slight adjustment of post filter when the path is calculated...should make now no world->geo->world->geo coordinates calculations
   - Big rework of coordinate containers. Point3D transformed to Location (world XYZ); Location transformed to SpawnLocation (world XYZ, heading); NodeLoc transformed to GeoLocation (geo XYZ, nswe); all are using inheritance, all can be combined together.
   - PathFinding is loaded correctly according to the config setting (standard/diagonal).
   - Reverted back a part of code, which causing path to lead 1 cell away of obstacle (helps to avoid corners), added new config "ObstacleMultiplier" to multiply weight of such cell by X.
   - Improved path post-filter to do all steps in one iteration -> cleaner, faster and drop of "MaxPostfilterPasses" config.
   - Created new A* pathfinding algorithm (CellPathFindingDiagNew), it uses dynamic lists, it is possible to construct path in difficult/multilayer terrains, available only for DIAG geodata now, though bit slower than current 2D array A* -> deserves cleanup/rework to gain better speed.
   - Created new JPS pathfinding algorithm (CellPathFindingJps), which is basicly A* with hefty rules. BE AWARE, it is for test purpose only, since it is semi-functional (only short and "easy" distances are OK) and available only for DIAG geodata. Possible to improve in the future.
   - Character no longer stop moving, but continue in execution of the path, when you click to un-reachable destination.
   - CellPathFindingNewDiag: now calculates estimated minimal size of open-list buffer and set it as initial value...should lead to less array resize.
   - Reworked several configs and config file.
   
AdminCommands
   - Following commands dissapear :
      - admin_show_path
      - admin_path_debug
      - admin_show_pn
      - admin_geo_z
      - admin_geo_type
      - admin_geo_nswe
      - admin_geo_los
      - admin_geo_position
   - Following commands appear :
      - admin_geo_pos
      - admin_geo_can_see
      - admin_geo_can_move_beeline
   - server_menu.htm ("Server" tab from //admin) is edited to reflect changes on geodata commands.
   
Misc
   - updated the geodata Readme.txt with important informations.
   - added a map with blocks names, and unsupported blocks (ty RooT).
Title: Re: Last aCis updates
Post by: Tryskell on December 27, 2014, 06:33:49 PM
Changeset 335

AdminCommands, UserCommands, GrandBosses && BossZone, Trainers, Misc


AdminCommands
   - Delete //manualhero, as it's a mirror command of //sethero.
   - Delete //saveoly, it's already handled by task or shutdown.
   - //gmliston && //gmlistoff are merged into //gmlist (which works as a toggle now).
   - Cleanup AdminMaintenance (new Integer.intValue(), really ?!).
   
UserCommands
   - Delete command id check (pointless).
   - /time now benefits from GTC rework.

GrandBosses && BossZone
   - Baium town-teleporting waker issue is now fixed.
   - All GrandBosses scripts are cleaned up :
      - variable names follow regular conventions (caps for static, etc).
      - uses of SpawnLocation instead of int[] when it's possible.
      - unification of variables names.
   - Cleaned up L2BossZone, fixing issues with registered players - ty Hasha.

Trainers
   - Add support for trainers no skills HTMs. Ty ArhsGr && ErHard.
   - Fixed numerous HTM typos, notably psychotic PNJ names (A single NPC had 3 different names...).
   - Remove npcIds 30926, 30927 from L2Trainer.
   
Misc
   - Reworked few scripts.
   - Added getStringHour() method into GTC, which return a formatted 00:00 String without having to go by a godamn Calendar object.
Title: Re: Last aCis updates
Post by: Tryskell on December 29, 2014, 08:30:55 PM
Changeset 336

Stats cleanup, Misc


Stats cleanup
   - Cleanup few useless calcStat. It will save objects and calculation times.
   - Drop following Stats : ATK_REUSE, MP_CONSUME, BOW_MP_CONSUME_RATE, HP_CONSUME_RATE.
   - Rework the way SA Cheap Shot is handled. Deletion of ConditionWithSkill.
   
Misc
   - Fix an HTM issue with Q023, ty RooT.
   - Fix an issue with trade/private shops, ty RooT/UYFrank.
   - Numerous cleanups based on Eclipse warnings I switched on then off. Notably :
      - Delete another "Item" nested class, use ItemHolder instead.
      - ConditionPlayerBaseStats is dropped.
      - Fix 20+ so-called 'possible ressource leaks' (missing rset/statement .close()).
      - AdminHandler AdminUnblockIp (not even working...) is dropped.
      - Few unused methods parameters are dropped.
      - Method setLastCords(x,y,z) renamed for saveCurrentCoords(), as parameters were unused.
   - Typos fixed. Notably :
      - Pa'agrio and not Paagrio.
      - Galion and not Gallion.
Title: Re: Last aCis updates
Post by: Tryskell on December 30, 2014, 11:36:58 PM
Changeset 337

Knownlists, Cursed Weapons, NextAction, Misc


Knownlists - ty Hasha
   - Drop getActiveChar() method which was creating a lot of calls/casts.
   - Complete //knownlist command.

Cursed Weapons - ty Hasha
   - Loading method is moved on a most appropriated class, leading to a drop of numerous methods and few Map .get(.
   
NextAction - ty Hasha
   - Remove all Lists types, handling only singles CtrlEvent / CtrlIntention.
   
Misc
   - Dropped items (and notably Cursed Weapons) can't be picked up when a private store is activated, ty dandilo && RooT.
   - Revert a code section introduced on rev 329, which was fucking range of attacks (adding 100 range no matter what), ty Hasha.
   - Few missing stuff about Geodata regarding admincommands are fixed, leading to miscalculations, ty Hasha.
   - Fix a missing internal check for reworked //gmliston, ty Hasha.
   - Based on FindBugs and UCDetector plugins :
      - Drop numerous unused methods.
      - Drop of ConditionInventory, ConditionItemId.
      - Drop some useless convert (like "long to long", "casted int to a Math.round() returning an int", etc).
      - _lastX, _lastY, _lastZ converted into Location _savedLocation. Drop of saveCurrentCoords().
      - Drop of Location _lastServerPosition (unused).
      - ObservationReturn(L2PcInstance) became ObservationReturn(Location).
      - Drop dozens of useless variables/configs in Config.java.
      - Edit 2 stranges Map .remove( arguments to match with the good arguments.
      - Drop _effectTemplates from Item (no uses).
Title: Re: Last aCis updates
Post by: Tryskell on January 09, 2015, 01:36:42 AM
Changeset 338

Tasks Managers - by Hasha


General
   - Task managers are using directly Runnable interface, not nested class anymore.
   - Iteration methods are changed from for-each to iterator -> support element removal during iteration.
   
AttackStanceTaskManager
PvpFlagTaskManager
WaterTaskManager
   - Use of Map.Entry instead of keySet() / get(), leading to an performance boost on all existing tasks.

DecayTaskManager
   - Moved checks for decay delay to "add" method ; iteration compares and doesn't calculate.
   - Added new method for corpse action (Corpse Drain Life, Harvest, Sweep).

GameTimeTaskManager
   - New manager created from 2 sources.
   - Implements old TakeBreakTaskManager, to notify long activity for players.
   - Implements ingame time system from old GameTimeController, to handle day/night cycle && spawns, plus Shadow Sense skill.

ItemsOnGroundTaskManager
   - New manager created from 2 sources.
   - Implements old ItemsAutoDestroyTaskManager to destroy items on ground.
   - Implements old ItemsOnGroundManager, to save dropped items on ground.
   - New configs, which are more logical and have better usage.
   - Reworked drop methods to support new interface of the manager.
   - The processes of save/load items to/from database are simplified.
   - Cursed weapons can be now picked by anyone, no longer drop-protected to killer/killer party.

KnownListUpdateTaskManager
   - Fix a bug which was forcing all regions to update knownlist, when at least 1 player was detected in a region.
   - Full update for NPCs is performed much more often now, since there are NPCs, which need it (e.g. Cabale buffers).
   - Cleanup/sort all knownlist classes.

MovementTaskManager
   - Created from old GameTimeController.
   - Handles only characters movement (keep max priority thread design).
   - Remove game time ticks system, everything is calculated using real time (attack, bow attack, cast break, movement, etc) -> leading to:
      - Improved accuracy of movement, thought there is still issue with it (requires next rework)
      - fixed bow attack delay with high attack speed
      - fixed bow attack & skill cast/movement, skill is now casted/movement is performed after bow attack is completed

ShadowItemTaskManager
   - New manager.
   - No longer 1 created task per equipped shadow item, shadow items are now handled by a single task.
   - Mana ticking is now handled with higher precision (each second instead of each minute).
   - Thanks to previous, equip/unequip/equip a shadow item no longer decrease timer by 1 minute per equip.
   - Fixed an inventory bug when equipped shadow item disappears.

TaskManager
   - Redesigned abstract Task class.
Title: Re: Last aCis updates
Post by: Tryskell on January 19, 2015, 09:19:53 AM
Changeset 339

Java 8, Libraries / Projects, Misc


Java 8
   - Update your JDK to JDK 8 ! aCis officialy uses Java 8 for now. Java 7 isn't supported anymore.
   - Drop Base64, use native Java one.
   
Libraries / Projects
   - The MMOCore project is dropped, and directly integrated to "acis_gameserver" project under "net.sf.l2j.commons.mmocore". The JAR is NOT needed anymore.
   - Java-engine library is updated to latest L2J version, 1.8.
   - ECJ library is updated to latest L2J version, 4.4.
   
Misc
   - Formatting rules applied on Hasha commits.
   - Fix previous commit regarding missing itemsonground stuff (db installer).
   - Fix ShortCutInit packet, to handle reuse delays on player relog. As this packet is now correct, drop a packet update on ItemSkills. Ty RooT.
   - Fix a potential exploit regarding ItemSkills consumed items (skill was launched before item consumption). Ty RooT.
   - Fix a NPE on Q374. Ty RooT.
   - Fix few typos on HTMs.
   - Add the possibility for a GM to shift-click on a player to see directly the panel. Ty RooT.
   - Replace numerous keySet() / get() for a best counter, Entry.Map (20% to 50% faster).
   - Fix Village Map Bulletin positions. Ty RooT.
   - Added prices for A grade top tier weapons. Ty raphael.fersan.
Title: Re: Last aCis updates
Post by: Tryskell on January 29, 2015, 07:01:33 AM
Changeset 340

Caches, Announcements, Misc


Caches
   - Filters are moved back into classes.
   
   CrestCache
      - Drop of //admin_fix_cache_crest admincommand.
      - Drop of OLD_PLEDGE related stuff.
      - BMP filter edited for DDS one, crests are stored under .dds format file. Consider to CONVERT .bmp into .dds !
      - Crests are stored on a Map for an easier management.
      
Announcements - Ty Sikken, xblx (&& me ofc).
   - Renamed Announcements > AnnouncementTable, moved into datatables. Addition of Announcement model. General cleanup and rework.
   - Addition of critical announcement type.
   - Addition of scheduled announcement ; you can schedule your announcement to happen X times, every Y times.
   - Saved under XML format instead of TXT.
      - Drop of //reload_announcements (handled directly by AdminAdmin //reload generic admincommand), //announce_menu (no use).
      - Merge of numerous announcements admincommands, now handled by //announce <list|all|add|add_auto|del>.
      - Addition of //say admincommand (critical counterpart for //ann).
      - Old //announce renamed for //ann.
   
Misc
   - Little reorganization on Gameserver.java.
   
PS : so basically, regarding Announcements admincommands, you only have :
- //ann && //say for instant announcements type.
- //announce <list|all|add|add_auto|del> for advanced mode.
- //reload announcement.

Edit : Hasha shared a little .bat to automatically make the .bmp > .dds transfer. You can find it in attachment.
Title: Re: Last aCis updates
Post by: Tryskell on February 01, 2015, 08:16:39 AM
Changeset 341

MMOCore, Announcements, Eclipse settings, Scripts, Misc


MMOCore - basic update to latest L2J version.
   - Add a try/catch to avoid core crashing.
   - Disable Nagle's algorithm (better latency, but bigger bandwitdh usage). It's a real time application, for love of goodness !
   - Client is setted on putPacketIntoWriteBuffer method.

Announcements
   - Fix an issue regarding Announcement limit.
   - Add //announce all_auto, allowing to announce auto tasks. Add the appropriate button on Announcements admin panel.

Eclipse settings
   - Added project based Java8 compliance on both projects.
   - Copied project settings from gameserver to datapack. It seems I was using workbench settings on datapack.
   - Fix few missing stuff on datapack, such as static keywords or nested return.
   - "Incomplete switch cases on enum option" is now setted to "Ignore".
   
Scripts
   - addition of SecondClassChange script. I can't test all cases and HTMs, so please report any issue on forums.
   - addition of Q662. Ty RooT.
   
Misc
   - numerous packets cleanups
      - clean one nested Item Class.
      - improve readability or performance.
      - reduce the amount or complexity of variables / parameters when not needed.
      - HennaInfo is fixed, the class level defines the number of henna slots. Ty RooT.
   - getItems() from Inventory returns a List, not an array anymore.
   - Fix possible double attacks issue, ty Hasha.
   - Decrease timer between multiple pickups.
   - Added a new multisell bypass, with a newbie check for L2Merchant exchange equipment. Ty ArhsGr.
   - Fix a NPE regarding CrestCache rework. Ty katara for report.
Title: Re: Last aCis updates
Post by: Tryskell on February 06, 2015, 10:45:04 AM
Changeset 342

FloodProtectors, Scripts, Misc


FloodProtectors
   - Simplified FP system (took L2JFree one). Timers are still configurable via config, all others configs are dropped (totally pointless).
   - A parameter setted to 0 means the action is always possible (you can enable/disable any FP that way).
   - Added new FPs - GLOBAL_CHAT, TRADE_CHAT, SOCIAL.
      - GLOBAL_CHAT && TRADE_CHAT FPs are desactivated by default. GLOBAL_CHAT handles "All" and "Shout" chats.
      - SOCIAL timer has been tweaked to handle animations at the most global running speeds. Edit if you don't like.

Scripts
   - addition of Q224, Q228, Q663. Ty to roko91 and RooT.
   
Misc
   - Fix, anew, the movement stuck issue.
   - Drop the empty folder in taskmanager.
   - You can use arrows UP and DOWN to move the character without making your client crashes. No configs.
   - Chats and RollDice handlers cleanup (nothing fantastic). Roll dice message is sent to anyone.
   - Complete StopRotation packet. Ty RooT.
Title: Re: Last aCis updates
Post by: Tryskell on March 11, 2015, 06:03:25 PM
Changeset 343

Scripts, Inventories, Misc


Scripts
   - Addition of Q220, Q226. Ty roko91.

Inventories
   - Drop the unused "block" system on PcInventory.
   - Drop the "quests slots" system on PcInventory. Easier slots check.
   
Misc
   - Fix Packet Forge tool. Ty roko91 for the fix.
   - Fix a NPE on ShortcutInit packet.
   - Fix a NPE on removeCrest().
   - Fix a NPE on calculateRewards(), overhit related. Ty SweeTs for the fix.
   - Added a missing check on pickup method, related to overweight. Now you can't be 110% full...
   - RequestDestroyItem got its checks edited, with the addition of CANNOT_DESTROY_NUMBER_INCORRECT message (for both < 1 and > max item number conditions).
   - Remove GMs priviledges on few packets, leading to a most appropriated casual player experience for : attack stance on restart/logout, slot/weight overbuy, outofcontrol Action.
Title: Re: Last aCis updates
Post by: Tryskell on March 16, 2015, 12:12:41 AM
Changeset 344

Duels - part I, Misc


Duels - part I

I decide to commit first part of Duels, as there is already a lot of work.
All is functional, and far better written than before. Part 2 will get few fixes && little tweaks for Party Duels, probably 10% of what I'm commiting now.

      - General cleanup : aCis code style, DuelState Enum creation, setIsInDuel > setInDuel rename. Numerous comments && Javadoc as documentation.
      
   DuelManager
      - Fix a ConcurrentException on DuelManager (couldn't handle simultaneous Duel creations).
      - Duel id is correctly calculated (it was probably very, very sad before).
      
   Fixes
      - Chaotic players (karma > 0) can't start or accept a duel request.
      - Fix a potential ConcurrentException on buff/debuff storing.
      - Fix a NPE with _playerConditions.
      - Fix few custom String for SystemMessage counterparts.
      - Fix the way duels handle disconnected players. It is considered as a surrender, as L2OFF. Ty sahar for report.
      - Fix an issue with surrender SystemMessage winner name.
      - Fix the max range for duel request && check task.
      - Fix the check task
         - It is fired once the duel is accepted (instead of after countdowns). A duel can now be disturbed during the countdown.
         - Added missing checks for party duels (zones, interrupted state, distance, pvpflag).
      - Fix RequestDuelAnswerStart checks, which are now exactly the same than RequestDuelStart packet.
      - Fix when a party in a command channel requests or accepts a party duel, that party is automatically withdrawn from the command channel.
      - Fix parties teleport, which are ported back to previous stored location no matter the duel end (in prevision to arena coordinates).
      
   Victory/lose animations
      - Fix an issue with kneel animation for 'B player/party winner' case.
      - Add Victory animation for winners.
      - Animations are sent even if one side is missing.
      
   Timers
      - Revert party duel timer to 120 seconds (retail time).
      - The 1vs1 countdown is setted to 5sec instead of 3sec + "void" 3sec. Messages for 5, 4, 3, 2, 1 cases.
      - The party countdown is setted to 30sec instead of 20sec, with messages for 30, 20, 15, 10 cases. It also uses 5, 4, 3, 2, 1 messages from 1vs1.
      - Drop the 5sec timer at the end of a duel.
      - The two left tasks, CheckTask && StartTask, use scheduleGeneralAtFixedRate to avoid to generate tasks every seconds.
      
Misc
   - Rework PartyMatchList, ExListPartyMatchingWaitingRoom serverpackets.

SECOND PART WILL COME WHEN YOU WILL STOP TO BE LAZY AND PROVIDE ME AN L2OFF SERVER ACCESS
Title: Re: Last aCis updates
Post by: Tryskell on April 15, 2015, 08:17:53 PM
Changeset 345

L2JFree Commons - part I, Misc.


L2JFree Commons - part I
   - StringUtil :
      - Holds all String related methods (gathered from misc places).
      - Addition of 8 static DateFormat to avoid to generate objects. Unify the date writing style over the whole source (few still missing).
      - Cleanup existing methods, improving performance or readability.
      - StringUtil.append() allows to append any type of objects, instead of simply strings (which avoid all valueOf / toString).
      - Util.implodeString() is dropped, use String.join() - Java 8 feature - when possible.
   - Point3D class is dropped (redundant with Location).

Misc
   - Drop few invalid IDs from RaidbossInfo script.
   - Fix removeDuel method.
   - Format adenas amount on wedding manager, ty oceeman.
   - Few cleanups, improving readability / performance :
      - L2OlympiadManager, RequestOlympiadMatchList : getOlympiadTasks() creation to handle loop easier.
      - AdminManor handler : addition of static manor.htm.
      - FriendsBBSManager, ClanBBSManager, RegionBBSManager, MailBBSManager : replace String concat on loops for StringBuilder.
      - MailBBSManager : creation of MailType enum.
      - L2AuctionnerInstance : use a StringBuilder instead of String concat loop.
      - RaidBossSpawnManager : the long > long > date > format is cleaned up... You can directly use long to format, lol.
      - SevenSignsFestival : correct use of String.join().
      - PetDataTable : fix a strange use of int array > string format.
      - Drop of GMAudit for bans and buffs action.
      - Q419 : fix the strange array > list > array > 'custom method' formatting
   - All StringBuilder have been reviewed and fixed. The convention name is "sb".
   - All NpcHtmlMessage have been reviewed. The convention name is "html".
   
PROTIPS TO FEEL LIKE A STRING GOD
   - Since JDK 1.5, String concatenation is AUTOMATICALLY replaced by StringBuilder. Don't bother about concatenation, EXCEPT in one case (see below).
   - FOR loops should always use a StringBuilder, NOT A CONCATENATION.
   - If numerous types of element must be attached, you definitively should use StringUtil.append() method.
   - DON'T USE '+' inside StringUtil.append() to seperate parameters, but ',' !
Title: Re: Last aCis updates
Post by: Tryskell on April 29, 2015, 05:19:13 PM
Changeset 346 (rev 352)

Commons, Holders, Misc


Commons
   - StringReplacer class, used for next Log rework (delimiter).
   - Rnd uses ThreadLocalRandom* (Java7 feature)
   - Addition of MathUtil, holding commonly used math methods.
   - isEmpty() addition for StringUtil.

Holders
   - ItemHolder && SkillHolder are merged for a more generic IntIntHolder (as there are numerous ways to use an Int<>Int class).
   - Deletion of StatusUpdate Attribute class, use IntIntHolder instead.
   
Misc
   - final static > static final.
   - AdminRepairChar (admin_repair && admin_restore) handler is dropped (pointless).
   - AdminBookmark / AdminSkills / BookmarkTable use a better approach to filter results.
   
*More performance infos about ThreadLocalRandom on http://java-performance.info/java-util-random-java-util-concurrent-threadlocalrandom-multithreaded-environments/ (http://java-performance.info/java-util-random-java-util-concurrent-threadlocalrandom-multithreaded-environments/)
Title: Re: Last aCis updates
Post by: Tryskell on May 17, 2015, 03:22:28 PM
Changeset 347 (366)

Tradelist, AI, Misc


Tradelist
   - General cleanup, drop logs.
   - Fix a ConcurrentException.
   - Create a new package model.tradelist, and split TradeList and TradeItem.

AI
   - Drop AIAccessor (better OOP approach).
   - Little cleanup and organization of ai package (creation of ai.model).
   - L2PcInstance pickup time is upped to 250ms, from 100ms (and previous was 500ms).
   - L2PcInstance getAI() follows other getAI().
   - Revert synchronized keyword on doAttack (causing issues).
   - Drop the Flee behavior for Mage/Priest AI types (not retail and buggy).
   - Better OOP approach for doRevive().
   
Misc
   - You can't sit anymore on a throne which is already occupied - ty RooT.
   - Fix a visual issue when logging/teleporting near a throne sat player - ty RooT.
   - Few Iterator cleanup, handled in a more elegant way.
   - Fix 15+ "potential ressource leak". Adapt latest SQLAccountManager.
   - Fix //zone_visual without parameter, merge //zone_visual_clear and //zone_visual.
   - Drop internal WarehouseItem classes from SendWarehouse(Deposite/Wthdraw)List. Drop GM check.
   - Replace the 3 uses of CopyOnWriteArraySet, which is a performance overkill crap.
   - L2World cleanup (rename methods && variables).
   - AdminEditChar : cleanup listCharacters() method.
   - PrivateStoreType Enum type creation.
Title: Re: Last aCis updates
Post by: Tryskell on June 07, 2015, 02:57:28 PM
Changeset 348 (379)

Scripts, Refactor, Misc


The scripts stuff has been made due to external compiler taking huge time to compile, prior to JDK8.

Scripts
   - Drop the external compiler, leading to -8mo RAM usage at startup and 2 libs drop. Server starts in 14sec instead of 1min+.
   - All scripts are moved inside core side ; scripts HTMs are moved into data/htm folder.
   - scripts.cfg is replaced by scripts.xml ; it is moved to data/xml.
   - Drop the possibility to load/reload/bypass scripts (drop associated configs && admincommands).
   - Addition of ScheduledQuest, which will be used later for tasks rework / events.
   - L2AttackableAiScript avoids to check NpcTemplate (- 6000+ .get()).

Refactor
   - Rename old Util.Util to HexUtil, and move to commons.lang.
   - Creation of package commons.math, move MathUtil && PrimeFinder inside.
   - Move MinionList to gameserver.model.

Misc
   - Fix a Config related to packets debug, ty RooT.
   - Fix a ConcurrentException on RecipeShopManageList, and add another exploit check.
   - Fix checkPvpSkill, ty Versus.
   - Fix a double flag addition on siege flag spawn, ty Versus.
   - Use ConcurrentSkipListMap for subclasses and cubics (concurrent AND ordered).
   - Add a single method on NpcTable, which allows to drop 4 "single used" methods.

PS:
   
Due to the huge refactor (thousands files are moved), the pack will be exceptionnally fully shared, to give you idea about how it is organized now.
It's also probably easier to copy-paste folders && packages directly rather than using the diff patch (which is 19mo, 350k lines long).
Title: Re: Last aCis updates
Post by: Tryskell on June 10, 2015, 08:30:36 PM
Changeset 349 (389)

Scripts, RandomAnimationTaskManager, L2Attackable, Misc


Scripts
   - Addition of Q414, Q416, Q639 - ty roko91, DarthVader (and me for the Q639 rewrite ;p).

RandomAnimationTaskManager
   - Drop RandomAnimationTask stored variable on L2Npc (pointless).
   - Creation of RandomAnimationTaskManager, a single task holding NPCs social animation behavior. Avoids to create one task per NPC every 10-40sec ; with a single player online, it's ~120 saved tasks every 10-40sec on a random farm area.
   
L2Attackable
   - cleanup (variables / overriden methods / big methods / get && setters).
   - getHateList() doesn't generate new List objects.
   - _attackByList rework
      - No lazy initialization. Avoids volatile/synchronized stuff.
      - Use concurrency to avoid issues.
      - Better OOP approach (moved from L2Character to L2Attackable).
      - Fix the following performance issue : Dying L2Character(s) generate HashSet for nothing (as getAttackByList().clear() calls the lazy initialization on doDie).
      - As a Set doesn't allow double values, drop .contains() check on addAttackerToAttackByList.

Misc
   - Fix an issue with mail system.
   - Revert previous commit regarding static DateFormat ; it can lead to misformatting.
   - Put Logger on L2Object level, drop others post-L2Object loggers.
   - Drop cw_reload admincommand (redundant with //reload cw) && misc cleanup about //reload (help, combobox, etc).
   - Addition of 2 missing NPC templates (2 quest monsters). Rename npcId 32008 "Gremory" for easier tracking.
   - ItemId 8056 Key of Splendor Room isn't considered as a quest item anymore.
Title: Re: Last aCis updates
Post by: Tryskell on July 29, 2015, 01:58:35 AM
Changeset 350 (401)

ArmorSets, Memo system, Misc


ArmorSets
   - Rework ArmorSetsTable to use regular writing style (both dp / core). It's probably faster to handle directly an integer array rather than creating a List of HashMap...
   - ArmorSet uses a int[] to store the set, which avoids to generate an integer array everytime you use the admin command "create set".
   - Drop XMLParser, and cleanup XMLDocumentFactory from unused stuff.

Memo system
   - Addition of PlayerMemo, NpcMemo && AbstractMemo. Edit ServerVariables system to reuse AbstractMemo ; rename it ServerMemo.
   - AbstractMemo is a StatsSet with a AtomicBoolean which checks if updates have been made or not (used to make clever saves).
   - PlayerMemo is loaded on player instance creation, and saved on player cleanup.

Misc
   - FishingChampionshipManager instance is harmonized.
   - StatsSet getObject() is reworked.
   - Fix a CCE (as throne system uses mount system). Ty Versus for report.
   - Drop nokarma && character_list admincommands (they already exist under set_karma 0 && character_info).
   - Fix a IOOBE on find_character (prior to page system cleanup).
   - Fix a NFE on remove_skills. Send page 1 if parameter was invalid.
   - Few StringBuilder inner concat -> StringUtil.append cleanup.
   - _disabledSkills doesn't use lazy initialization anymore. isSkillDisabled() method are merged.
   - Fix few postIL invalid skillIds checks. Ty raphaelfersan.
   - Fix 2 Oly SystemMessage, ty ErHard.
   - Access level trade-based SystemMessage are formatted. Ty ErHard.
   - Fix few HTMs encoding issues.
   - Fix Summon Friend item consumption update, and add a message for missing items, ty JDruidas.
   - Fix //npc_index, ty JDruidas.
Title: Re: Last aCis updates
Post by: Tryskell on August 31, 2015, 02:53:21 PM
Changeset 351 (416)

Sex Enum, Sex-based collision, GameServerRegister, ClassId cleanup, Misc


Sex Enum - Ty lord_rex.
   - setsex admincommand allows only etc, female and male states. There is no more toggle possibility. If you set nothing or a wrong Sex, it defines it as male by default. If the character sex is already setted to the given sex, then it doesn't edit it.
   - Fun fact : etc state for player looks like female. For koreans, women are objects... :troll:
   
Sex-based collision implementation - Ty lord_rex.
   - Fix oversized weapons on females (notably visible for dwarves).

GameServerRegister is reworked to match aCis database installer standards.
   - Add "clean" option, which allows to drop a SINGLE server.
   - Keep the possibility to drop all servers using "cleanall".
   - Add "exit" option.
   - Rework "help" : renamed as "list" and it is easier to see if an id is already used.
   - Informations refresh is correctly handled (before you had to close and launch back the program to get it updated).

ClassId cleanup - Ty Hasha.
   - ClassId is merged with old PlayerClass, allowing some nice optimization.
   - Race is renamed ClassRace.
   - ClassType is dropped, use regular int instead.
   - Possible subclasses for a class are generated and stored on a sexier way. Fix also an issue if the method was used on a custom way.
   - Drop 3 variables from xml/classes (already handled by ClassId enum).
   
Misc
   - Multiple FindBugs fixes.
   - Rework throne sit system to be stored on its own int, because it was using mount system int and was causing issues.
   - Fix the following issue : Wrong parameter count '2' for SystemMessageId: SM[761:S1_CANT_ENTER_ALLIANCE_WITHIN_1_DAY]
   - Fix Q625 npc messages for retail ones. Ty SweeTs.
Title: Re: Last aCis updates
Post by: Tryskell on September 14, 2015, 02:16:44 AM
Changeset 352 (427)

Quests, Movement, Cleanup, Misc


Quests
   - Addition of Q221 && Q229, ty roko91.
   - Add numerous SOUND_ITEMGET sounds to match aCis quests standards.

Movement - Ty Hasha.
   - Fix movement multiplier.
   - You can't walk anymore if you're mounted (avoid moonwalk issue).
   - Few animation based interactions use movement multiplier ; drop getAnimationTimer().
   - Multiple uneccessary overidden methods are cleaned up.
   - Fix player based water speed (not based on run speed, got its own value).
   - Fix player based walking speed (not based on run speed, got its own value).

Cleanup
   L2PcInstance
      - Few variables are renamed (boolean notably), and the class is more organized.
      - _vehiclePosition is now a SpawnLocation in order to keep track of heading information (used for a packet).
      - Drop GatesRequest && SummonRequest classes.
      - Better use of OOP for initCharStatusUpdateValues() method.
      - Merge isWearingArmorXType methods, and add checks for NONE and SHIELD cases. isWearingArmorType(ArmorType) is the result !
      - Internal "one shot" Runnable classes are dropped.

   Vehicles
      - L2BoatInstance is merged to L2Vehicle (no use to get abstract), L2BoatAI is renamed L2VehicleAI for the occasion.
      - Fix oust system. Add deletion message on ticket consumption.
      - Vehicles packets writing style is unified and avoid to generate Location objects.
      
   Misc
      - Improvement of Location && SpawnLocation classes. The idea is to refresh the object instead of creating a new one.

Misc
   - Fix NextAction infinite loop (must be cleaned once action is done). Ty Kraker for report.
   - Add ActionFailed on onIntentionInteract (to fix multiple clicks). Ty Hasha.
Title: Re: Last aCis updates
Post by: Tryskell on October 02, 2015, 07:53:53 PM
Changeset 353 (444)

Pets, Misc


Pets
   - Split L2PetData && L2PetLevelData : L2PetData is now merged with the new PetTemplate, while L2PetLevelData is renamed PetDataEntry.
   - Data is parsed using L2OFF : Fix all base values (int to double) and add numerous missing stats.
   - Added template based autoFeed, hungry and unsummon limits (respectively 55, 50 and 40% : before only 55% was used). Rework associated checks, drop isHungry().
   - Added messages for pet items equip/unequip.
   - Fix the walking/running and food visual updates on pet window when autofeeding.
   - Added distance check for player > pet items transfer.
   - Fix a critical issue with pet > player inventory transfer on pet unsummon.
   - Fix doesPetNameExist method to fit with L2OFF (also avoid String operations).
   - Fix the annoying issue with summons single attack (erm, my fault).
      
Misc
   - NpcTable is fully reworked. We avoid 2 loops to check XML content.
   - Drop L2NpcAIData object, the content is merged with NpcTemplate.
   - ClassId Enum got a static VALUES .values() to avoid to generate arrays on call.
   - NpcTemplate is organized ; setRace is cleaner, Race Enum is edited to reflect that change. Drop of "single-uses" methods to avoid pointless calls.
   - NPCs skills are now taken directly from NpcTemplate, instead of being cloned into L2Character. Save 41k+ maps, roughly 15mo of RAM.
   - StatsSet : getBool() is slightly edited. Addition of getStringArray(), getList() and getMap(). Drop of isSet(), which is containsKey() clone.
   - Light cleanup on HelperBuff system (L2HelperBuff moved and renamed, drop of id variable, drop of setters, etc).
   - Drop Server class, which was holding 3 int. Rework Config and associated classes accordingly. Ty Hasha.
   - //reload admincommand allow the use of numerous parameters (//reload skills npc acar, for example).
   - L2AuctioneerInstance RooT's fix.
   
PS : don't forget to edit npcs XMLs to reflect changes (pet data is holded by NpcTable, and AI type is setted in CAPS to fit with Enum).
PS2 : a second part will come with fixed xp system (wolf, strider, hatchling) and stats for pets (correctly loaded but not yet correctly calculated).
Title: Re: Last aCis updates
Post by: Tryskell on October 21, 2015, 05:25:13 AM
Geodata is now mandatory.
L2D type geodata is too mandatory.
In case you were using L2D geodata, consider to convert anew the geodata you were using, as the type of L2D has been edited. Using an older L2D geodata will lead to ingame issues.


Changeset 354 (460)

GeoEngine (part II/III), DropProtection drop, ObjectPoly drop, ObjectPosition drop, Misc


GeoEngine - part II

   - merged geodata and pathfinding packages/classes, now we have only one Geoengine package and Geoengine class - better structure overview and removal of unnecessary calls between PathFinding and GeoData.
   - simplified inheritance: new Geoengine abstract class now contains as many methods as possible (common methods to any geoengine model), each geoengine model contains only own/specific methods -> like -70% of code over whole geoengine package (duplicates, getters, ...).
   - Geoengine is now mandatory to start up server because of new upcoming features (doors, fences, new npc spawn manager) - cleaned up configs and related classes.
   - adding missing javadoc everywhere, adding comments to critical sections.
   - merged GeoData and PathNode admin handlers/commands.
   
   Geoengine
      - implementing back Block-based geodata model prior to geo part III.
      - dropped all "new IndexOutOfBounds()" thrown every time we are accessing layer, that does not exist - geodata conversion speed +200%.
      - renaming block classes for better identification.
      - geoengine now loads only diagonal geodata (L2D format), due to overall performance reasons, updated configs with info.
      - implemented another way of accessing block data - indexes. Index-based approach should be faster for multilayer block, when accessing both, NSWE and height of particular cell (should have double performance compared to current getter-based model...upon specific conditions).
      - GeoEngine is no longer abstract class, it contains geodata. GeoEnginePathfinding extends GeoEngine and contains pathfinding related methods.

   Path-checking & Pathfinding
      - fixed line of sight check, though walls without geodata, ty Root for report.

   Converter & L2D geodata
      - dropped own block classes, using geoengine blocks and updating them with necessary methods.
      - updated geodata conversion with few cases/conditions leading to slightly more acurate geodata on rare ocasions (100-1000 cells per region file).
      - L2D geodata for multilayer block are now aligned same way as for L2J/L2OFF (from highest layer to lowest one), leading to drop of the sorting mechanism, overall simplicity and much faster conversion.
      - dropped logger class, using standard output now, improved instructions (for dummies).

GeoEngine - part III

   Geoengine
      - added IGeoObject interface to create basic definition of geo object, when any object implements IGeoObject interface successfully, the object can be added/removed to/from geoengine and geodata can be affected by it.
      - created IDynamicBlock interface, added BlockComplexDynamic and BlockMultilayerDynamic classes to support dynamic geodata when IGeoObject is added/removed to engine.
      - updated GeoEngine with methods to add/remove IGeoObject, created the normal block to dynamic block conversion.

   Doors
      - written own parser to get XML from L2OFF data, new XMLs now contains more and accurate parameters (e.g. doors have level now, it is used for Unlock skill chance calculations).
      - doors are parsed using combination of IL (Vanganth) and GF (Sublimity) datas (thanks for shares) - that means, we have also all doors for future implementation of Fortresses now (340 -> 547 doors total!).
      - checked and corrected all spawn coordinates of doors (L2OFF uses spawn coordinate at the edge of door, we need it in the center) + it contains Z coordinate from geodata (this will help with further implementation of doors and its geodata creation).
      - created DoorTemplate to contain data from XML files, L2DoorInstance use the template in constructor - same approach as for NPCs.
      - massive cleanup and reorganization of L2DoorInstance.
      - updated HTML info window, to show all parameters - so sexy now.
      - auto-open/close task improved, using strictly timers from template, cleaned up scripts.
      - updated/cleaned DoorInfo and DoorStatus packets, added missing parameters.
      - added L2OFF posibility for doors to control another door - multiple open/close at same time.
      - implemented IGeoObject interface and updated DoorTable with proper loading mechanism for it.

   Fences
      - added FenceTable, L2FenceInstance, ExOlympiadFenceInfo packet.
      - updated admin spawn commands to spawn fences correctly.
      - implemented IGeoObject to L2FenceInstance and updated FenceTable to support dynamic geodata - client sends StopMove packet, when character make collision with fence.

DropProtection drop

   - Drop DropProtection class ; rework an existing system to do the same work.
   - Rework L2PcInstance.isInLooterParty() and rename it isLooterOrInLooterParty().
   - dropItem()
      - L2Attackable : No more items template checks.
      - L2PcInstance : No more options to secure player drops. Save a inventory.getItemByObjectId on intentional player dropItem().
   - L2PetInstance.doPickUp() : Drop a double setIntention IDLE.
   
ObjectPoly drop

   - Drop ObjectPoly class, hold directly variables into L2Object.
   - Add a Enum to enforce cases type (DEFAULT, ITEM, NPC). All checks are based on PolyType.
   - Add few checks, notably item template and possible targets.
   - Add the possibility to polymorph a NPC (regular or L2Attackable).
   - Drop SpawnItemPoly packet (redundant with SpawnItem packet).
   
ObjectPosition drop

   - Drop ObjectPosition with correct use of override, leading to a shitload of dropped cast. All methods are moved into L2Object.
   - spawnMe methods are harmonized.
   - Fix an issue with setRegion (code was running twice).
   
Misc

   - L2PcInstance : Rename setProtection to setSpawnProtection (to avoid to melt with item protection).
   - Fix subclass height/radius issue, prior to changeset 351.
   - L2CharPosition is dropped. Use Location for IntentionMoveTo, and SpawnLocation for the leftover.
   - Add MathUtil.limit method (pickup min or max limits if reached, from a default value).
   - Use spawnMe() when spawnMe(int, int, int) isn't needed (avoid to write location).
   - Drop all useless occurences of L2WorldRegion.removeFromZones(this) checks, check which is already done by decayMe() > setRegion(null) from L2Character override. In the same order of idea, drop occurences of L2World.removeObject(this), already done by decayMe().

Geodata is now mandatory.
L2D type geodata is too mandatory.
In case you were using L2D geodata, consider to convert anew the geodata you were using, as the type of L2D has been edited. Using an older L2D geodata will lead to ingame issues.
Title: Re: Last aCis updates
Post by: Tryskell on November 11, 2015, 02:15:36 AM
Changeset 355 (477)

Movement fix, PetData part II, L2Attackable AI, Lottery, Announcements, Misc


Movement fix
   - Fix strange movement rollback on skill spam.
   - Fix stackoverflow issue.
   - Fix target status (little circle color becoming red on attack).
   
PetData part II - ty Hasha
   - PetDataEntry uses a recycled StatsSet to feed values (short writing style).
   - Mounted players stats are fixed (regular/swim/fly speeds included).
   - Regular pets stats are fixed.

L2Attackable AI
   - L2Attackable won't buff players anymore.
   - L2Attackable can now buffs when they are in attack mode (in order of skills preference : after heal, but before debuff).
   
Lottery
   - Lottery Ticket message fix (doesn't show enchant anymore). Ty RooT.
   - Lottery HTMs table fix. Ty RooT.
   - Fix the lottery instructions %prize% tags.
   - Add default prize to leftover to calculate new lottery prize.
   
Announcements
   - Fix an ArrayIndexOutOfBoundsException for empty //announce. Cleanup adminhandler.
   - Edit Announce panel, replacing edit button for a multiedit (allow more than 16 characters message). The typing is more flexible, with 3 visible lines output.
   
Misc
   - Fix L2WorldRegion onDeath() / onRevive() - was triggering all L2WorldRegion zones, no matter if character was inside or not.
   - Slight revision revert for dropItem (fix the issue where you drop the entire stack of an item even if you put lower amount).
   - Calculation of evasion/accuracy is now precomputed into Formulas.BASE_EVASION_ACCURACY.
   - Put defaults values for AI type data (fixing Headquarters spawn, prior to NpcAIData drop).
   - Slight geoengine fix regarding multilayers (most notably fortress) when using an high character's height.
   - Some HTM typos (from "Hunt HTM typos!" topic).
   - Drop PlayableKnownList (no use).
   - Edit knownlist ranges to follow L2J.
Title: Re: Last aCis updates
Post by: Tryskell on December 09, 2015, 12:16:22 PM
Changeset 356 (494)

L2Attackable, Packets stuff, MultisellData, Misc


L2Attackable
   - Reduce global aggro timer, from 2min to 1m30.
   - Edit chasing mob distance check. Passive and aggressive mobs leave fight if a 2000 distance is reached.
   - Drop attackRange from CharTemplate. Edit NPCs XMLs to reflect the change. Monsters use directly weapon range. Fix NPCs archers range (from 1100 to 500).

Packets stuff
   - SignSky packet rework :
      - Rename SkySign for SSQInfo.
      - Add missing parameters (red / regular), and make possible packets static.
      - Edit admin panel to reflect those changes.
   - Add a check on ChatAlliance to avoid crafted packet. Ty RooT.
   - Harmonize RequestSetPledgeCrest/RequestExSetPledgeCrestLarge (integrity checks, SystemMessages, writing style).
   - SkillCoolTime fix, ty Denzel for report.
   - Players name must be between 3 and 16 characters. Optimize one check. Ty Denzel for report.
   
MultisellData
   - Possibility to use String for multisell names, using hashCode. Ty lord_rex.
   - Move multisells to data/xml folder. Slight content edit (drop entry id, ma'i'ntainEnchantment typo, drop enchant tag).
   - Latest L2J version, introducing :
      - Entries get their ids handled dynamically.
      - Improved performance (less item template calls, no Ingredient objects for temporary adena case, no dummy objects for enchant case).
      - getMultisell / setMultisell on L2PcInstance : you can't send crafted packet with a simple multisell id, the content must be generated before.
      - Introduction of <npcs> tag, to lock multisell lists to certain npcIds.
      - Equipped items aren't part of possible multisell trades.
      - Fix isStackable flag on MultiSellList packet.
   
Misc
   - Fix UNDEAD issue. Overzeal cleaning can lead to that sort of issue. Ty lord_rex.
   - FeedTask NPE fix. Ty lord_rex.
   - Better WeaponEquipTask behavior (doesn't cancel the whole process if you still attack).
   - Edit map_region.xml (fix 3 catacombs respawn location). Ty Hasha.
   - Fix following target issues :
      - level color takes time to change.
      - summons/pets HPs and level color aren't shown.
   - Fix Asamah HTMs (multiple typos). Add Trap Stone multisell 010.xml. Ty Denzel.
   - Addition of missing minions for Marilion boss. Ty Denzel.
   - Fix Banish Seraph, Recharge and Fisherman's Potion skills, prior to rev 434 and Race rework. Ty Sahar for report.
      
PS : multisell data has been edited. Use new data, don't cp old multisell folder.
Title: Re: Last aCis updates
Post by: Tryskell on January 27, 2016, 01:16:23 PM
Changeset 357 (515)

Duels, Doors, Misc... And Hasha stuff preparing to incoming SpawnManager :D.


Duels
   - Add the missing getTeam() packet update for summons/pets (was written as TODO).
   - Fix countdown behavior (can't send duel requests, as you are now considered as being in duel). Add DuelState ON_COUNTDOWN to manage behaviors.
   - Drop _isInDuel internal boolean. isInDuel() can be resolved with _duelId > 0.

Doors
   - Correct open/close task && opened doors on server start.
   - Handles correctly miss of geodata if a cell where a door is located isn't loaded.

Misc
   - Drop StatusUpdate packet on addLevel (redundant with UserInfo). Ty RooT.
   - AllowFishing config is dropped, due to Geodata being mandatory. Ty svipben for report.
   - Fast fix for eaten ss/bss on potion use. Ty Hasha.
   - Fix 4 out of 9 CastleTeleportZone (reverted negative values leading to IllegalArgumentException). Ty dzumara for report.
   - Remove NPCs siege guards during midVictory. Ty dzumara for report.
   - Fix the idiot issue about player client freeze (upon logging on).
   - Fix NPC hate behavior "spread". Adds a 2000 distance check for siege guards (like mobs).
   - Fix "ghost" attack action during skill cast. Ty Kraker.
   - FeedableBeasts script : ConcurrentException and NPE fixes. Ty Kingzor for report.
   - Few boolean checks cleanup. PrivateStoreType > StoreType (just to be shorter).
   
Hasha patch 71
   - GrandBossManager doesn't handle anymore boss zones related stuff. ZoneManager handles it.
   - All shapes are reviewed and optimized.
   - OlympiadAnnouncer is merged with Olympiad class, the result is optimized.
   
Hasha patch 72
   - SpawnListener class drop.
   
Hasha patch 76
   - Edit NPCs templates to fit with new SpawnManager (no effect atm, but it will be needed later on).
   - //msg admincommand is moved on more appropriated adminhandler.
   - Addition of StringUtil.getTimeStamp, which allows to get a formated second time under (h m s) format.
   - RaidBossInfo script initialization is optimized using correctly L2Spawn class concept.
   - L2Spawn rework
      - x, y, z and heading infos are now stored under SpawnLocation, allowing nice shortcuts and few optimizations.
      - startRespawn()/stopRespawn() > setRespawnState(boolean)

Side note : it's perfectly normal you receive warning about spawns. I was lazy to edit spawnlist, as it will dissapear soon anyway. Don't create threads about it.
Title: Re: Last aCis updates
Post by: Tryskell on January 30, 2016, 11:04:43 PM
Changeset 358 (525)

AIs, L2Attackable, Quests, Misc


AIs
   - Refresh all scripts writing style (caps lock for static, etc).
   - Cleanup FleeingNPCs script.
   - Rework entirely and optimize Gordon (static path nodes, drop of numerous pointless variables, "one task to rule them all").
   - Few tweaks and improvements for Dr Chaos (static Strings, fix a bug on paranoia_activity task).
   - Drop AbstractAi, L2AttackableAiScript becomes anew the AI "mother". Change the way npcId registration is handled, fixing events override issue. Ty Hasha.

L2Attackable (E.T Phone Home)
   - Mobs return to their home walking (and not running).
   - Faction call logic is changed. Fix the behavior where one monster could bring a whole room if you were running with him.
   - Tweak returnHome spawn point radius check (20 for guards, 300 for monsters).
   - Remove a redundant execution of leader/minion method.
   - returnHome is instantly processed, it doesn't depend from random walk % rate.
   
Quests
   - All 3rd class quests are, anew, functional (were broken prior to ScriptManager edit). Ty emanueld for report/fix.
   - Fix Q643 "missing htm" error. Ty Kingzor for report.
   - Partial rework of Q021 :
      - The route is tweaked (3 static nodes). Few NpcString are replaced.
      - Fix a NPE, prior to reading bookshelf while page ghost already dissapeared. Ty Kingzor for report.
      - Creation of a duke ghost despawn task. Before he could stay forever if the player didn't move on quest.
      - You can request anew the page ghost if he dissapeared.
      - Don't sendMessage player with "pageDespawn" event name.
      
Misc
   - Add 28 missing noskills HTMs for dwarves trainers. Ty Caparso for the share.
   - Warehouse Freightman Daisy HTM bypass skill list fixed. Ty Caparso.
   - Both gates of Splendor open in same time.
   - Disable autoshots after adding/changing subclass. Ty Erlandys.
Title: Re: Last aCis updates
Post by: Tryskell on February 12, 2016, 01:13:19 AM
Changeset 359 (539)

TaskManager drop, LoginController, Instances, Scripts / AI, Misc


TaskManager drop
   - Fix and cleanup ScheduledQuest.
   - Move existing tasks to ScriptManager. Tasks are handled by scripts.xml.
   - Drop old TaskManager system and associated SQL table global_tasks.

LoginController
   - handle login attempts in a more consistant way (concurrent map, working concept).
   - basic cleanup, from using JDK8 goodies to formatting rules.
   
Instances
   - L2Guard : Drop ReturnTask, drop onSpawn() redundant check (already handled by super.onSpawn()).
   - L2TownPet : Variabilize task in order to be dropped when npc is deleted.
   - L2ClanHallDoormenInstance : _clanHall is fed using onSpawn().

Scripts / AI
   - Addition of Q114, Q227 - ty sharers.
   - Harmonize all HTMs regarding level/class checks.
   - Swap 2 HTMs content for Q226.
   - L2Attackable can now see L2NpcInstance (notably for better AI control).
   - Fix NPE and stackoverflow (prior to last revision) from onEvtAggression / onEvtAttacked. Optimize the loop checks. Rework PrimevalIsle script.
   - NPE fix for Gordon AI, if he died on server startup (prior to last revision). Ty cross for report.
   - "Returning home" monsters && random walking monsters can now be faction called. Ty Hasha.
   - Core support for Q227 (addition of L2Skill parameter for onAttack).
   - Core support for decay event (addDecayId / onDecay(L2Npc)). Ty Hasha for idea.
   - Edit all 2nd class transfer quests to fix DD exploit, since all 2nd classes are now done. Ty Zero for the patch.
   
Misc
   - Fast and ugly fix for Olympiad towers broadcasting. Ty sahar.
   - Hotfix for //delete command (even if it will be probably reworked in 2 revs). Ty svipben for fix.
   - Avoid to compute twice the same things for pets users relation updates.
   - Add clientStopMoving(null) on player thinkAttack().
   - Fix the 2 following issues (ty ErHard for report)
      - Archer acts like melee player on dead targets.
      - Archer auto follow dead NPC.
Title: Re: Last aCis updates
Post by: Tryskell on March 09, 2016, 03:02:02 AM
Changeset 360 (553)

Commons, ThreadPool rework, CharNameTable rework, Misc


Commons
   - Creation of ArraysUtil, holding common arrays related methods. Will be feed overtime.
   
ThreadPool rework (based on L2JFree, but tweaked to death).
   - ThreadPoolManager is renamed ThreadPool and is moved to commons. Use a static approach rather than singleton.
   - Merge all pools (ai, packets, general,...) to a single one.
   - Generate pools according to core numbers (by default -1 for scheduled and instant pools).
   - The tasks charge is balanced through the different pools (random selection).
   - Move hidden configs to server.properties.

CharNameTable rework - ty svipben and welcome to IC !
   - Cache player informations on server startup rather than on player login (avoid one db call per invalid player entry request).
   - Drop all synchronized blocks, and use a single ConcurrentHashMap (holding infos of the 2 previous HashMap).
   - Tweak few L2World.getPlayer(), in order they use id parameter instead of name when possible (avoid a pointless call on CharNameTable).

Misc
   - Addition of Q118, Q333. Rework Q123 (which is a clone of Q118). Ty RooT.
   - Drop AutoDeleteInvalidQuestData config. Rework quests loading method (use a single query, don't process enterworld event on quests you don't own).
   - Few Quest.java tweaks : addition of getSponsor() / getApprentice(), put null checks as priority checks, put few final keywords, use of Rnd.get(List).
   - Addition of DebugGeoNode config, setted to False by default (avoid to flood geo_bugs.txt on live servers).
   - addFence returns L2FenceInstance. Ty sahar.
   - SpecialXMas itemhandler doesn't broadcast its content (lol). Ty sahar.
   - Fix isInCombat() - Ty cross for report.
   - Slight validateItemManipulation method edit (avoid double getInventory check on RequestDropItem).
   - "Organize Import" edit : net.sf.l2j.commons are divided from regular net (simply to keep things cleaner).
   - Fix a NPE prior to ClassId rework - Ty sahar for report.
   - Rework MailBBSManager.sendLetter ; fix non-GM mail sending and optimize all checks. Ty Mayhem for report.
   
NB : compared to L2JFree L2ThreadPool :
   - dropped long running pooler.
   - dropped getThreadPools() approach which generate pointless arrays.
   - edit the purge limit from 1min to 10min.
   - delete and merge all pointless classes (10+ merged to 1).
Title: Re: Last aCis updates
Post by: Tryskell on May 13, 2016, 12:29:22 PM
Changeset 361 (568)

World/WorldRegion refactor, CoupleManager, RooT's fixes, Skills cleanup, Misc


World/WorldRegion refactor
   - rename both classes, dropping "L2".
   - Drop 3 "grid" configs (hardcoded for now).
   - Merge unique methods.
   - Drop _allPlayable CHMap. Edit _visibleObjects CHMap for a simple arraylist with a lock. Count only players, not all playable as region activators.

CoupleManager rework
   - Store couples in a ConcurrentHashMap instead of ArrayList (avoid ConcurrentException, better index management).
   - Save process is made on server shutdown rather than couple creation.
   - Loading process isn't cutted between Couple && CoupleManager, which avoids 1 connection per Couple loading.
   - Cleaning (drop isMarried boolean as we can reuse coupleId, drop Couple model for IntIntHolder) + Javadoc.
   
RooT's fixes
   - Interaction distance with NPCs is setted to 100 instead of 150 (maybe has to edit players ?).
   - Add more ids in non-talking guards. MoveToPawn and ActionFailed packets are sent for such guards.

Skills cleanup

   DP side
      - Pa'agrio Fist and Rapid Fire are counted as buff. Pa'agrio Fist heals 800 CP back, not full CP.
      - Few NPC skills got remove target attribute (dino skills).
      - Added missing enchant routes for : Shock Stomp, Blessed Body, Blessed Soul, Mass Fear, Mass Gloom, Trance, Erase, Magical Backfire
      - Mystic Immunity uses the correct target type.
      - Summon Treasure Key reuse time is fixed.
      - Heart of Pa'agrio HP regeneration effect is fixed.
      - Heroic Berserker mdef malus is fixed.
      - Infinity Axe passive skill is fixed.
      - Counterattack, Dodge, Mirage are using IL values.
      - Shield of Revenge got a mana cost now.
      - Fear effects don't bug anymore.
      - Fix Item Skill: Battle Roar augment.
      
   Core side
      - The player now runs to the target when skill is under reuse and target out of range.
      - CPHEAL_PERCENT type is dropped (unused).
      - Toggle skills can't be desactivated anymore while in combat.
      - You can't stack anymore Fear, Sleep, Root && Stun effects. Ty xblx.
      - ExRegenMax packet implementation (temporary health gauge on HoT use). Ty svipben to catch it up, and RooT for writing style.
   
Misc
   - Fix a minor typo on 2 packets, ty svipben for report.
   - Mimyu teleport behavior. Ty RooT for share, Sikken for report.
   - Fix SE 2nd class transfer. Ty emanueld for the fix.
   - Lower Loginserver RAM allocation (to 32m), as it doesn't need that much (could even work with 12m with spikes at 9m).
   - SetupGauge packet now uses an Enum to enforce color types.
   - Water task is cleaned up. Drop _isInWater boolean, and "unique-use" methods.
   - Heal participants' CP/HP/MP on Olympiad battle start. Ty sahar for report.
   - Workaround fix for returnHome method (killed stunned mobs = clean aggrolist).
   - Move Die packet call on Enterworld to avoid buffs visual issue. Ty SweeTs/svipben.
   
PS : skills cleanup got nothing related to skills rework. Those are only fixes to wait for a bigger rework, which will come in few months.
Title: Re: Last aCis updates
Post by: Tryskell on May 23, 2016, 08:30:20 PM
Changeset 362 (578)

Knownlist system , pets fixes, misc


So, I decided to rework the knownlist system. I will explain why, what are benefits and how it worked/works now.

Old version :
Each object (item, npc, player, summon) had its own knownlist, aka a Map holding surrounding objects. Objects were added/removed according owner's region and a self radius (getDistanceToWatch)

Why it sucked :
   - You needed to update map every time you added/remove. Even if ConcurrentHashMap is performant, that could be painful on big operations (sieges, mass kills, etc).
   - The data was extremely redundant ; for 2000 NPCs, there was 2000 knownlist holding each 1999 entries (excluded himself).
   - The data could scale really, really fast according number of surrounding NPCs, leading to important RAM/CPU usage.
   - A task, called every second, was updating every single region (11260 regions) objects to forget objects.
   - Added to the data being extremely redundant between knownlists, the same info was hold into WorldRegion's object maps (as knownlist feed upon those maps).
   - The definitive list of possible targets was cutted first by getVisibleObjects(2000), getDistanceToWatch, then by radius, leading to compute multiple times the same thing.
   
New version :
   - We use WorldRegion maps as reference.
   - We use setRegion as an passive update system. Which means a single setRegion is needed to refresh every object included in surrounding regions.
      - Regions we leave (aka, old region neighborhood but not part of new region neighborhood) are updated with removeKnownObject.
      - Regions we enter (aka, new region neighborhood but not part of old region neighborhood) are updated with addKnownObject.
      - Leftover (shared regions between old and new neighborhood) isn't processed.
   
Benefits :
   - No more maps for every object = instant RAM save. No more dangerous RAM scaling when gathering important group of NPCs.
   - Cut a entire layer (before WorldRegion CHMap was updated, and WorldRegion's objects knownlists aswell. Now, only WorldRegion is updated).
   - The task was really heavy (11260 areas to refresh on a populated server every 1m) ; its drop delayed the GC cycle from 6min to 10min on vanilla aCis (cutted the garbage on empty server by almost 2).
   - Merge redundant systems and optimize the output (only 6 cells are updated in case of regular region change).
   
(Biggest) changes :
   - Revert from previous revision : ArrayList to CHMap to hold WorldRegion objects (wasn't correctly synchronized leading to ConcurrentException).
   - Whole model.actor.knownlist package && KnownListUpdateTaskManager class dissapear.
   - Broadcast.toSelfAndKnownPlayersInRadiusSq method is dropped, as we are standardizing "distance" system.
   - Heavy rework of spawnMe, spawnMe(x, y, z), decayMe to avoid multiple setRegion calls (before : 2 for every L2Object, 3 for summons !). Avoid multiple addKnownObject() calls (bow use, setTarget) aswell.
   - setXYZInvisible(Location) has been added. Uses are tweaked (when spawning you don't need to setRegion(null), so we only update position).
   - PcTemplate holds player spawn under a Location.
   - EVT_FORGET_OBJECT event is dropped (no use, probably not launched at all).
   - WorldRegion setActive is processed instantly by setRegion method.
   - Fix : guards don't go IDLE if aggrolist is cleaned up, breaking aggro system.
   - Rework knownlist admincommand (includes a page system, as known objects number is way bigger than before).
   
PS :
   - To get knownlist, simply use object.getKnownType or object.getKnownTypeInRadius (all objects on the 9 surrouding areas = object.getKnownType(L2Object.class))
   - Computed knownlist don't show yourself. It shows any type of status : dead, visible, etc. You have to add your own conditions.
   - Always try to choose the HIGHEST instance type (ex: L2PcInstance for players, and not L2Object) to restrain list objects to a maximum. In addition, you won't need any cast.
   - IDLE state for NPCs should be achieved only if no players are left on region. It means the AI is detached from NPC.
   
Multiple pets fixes
   - Pet inventory isn't restored anymore (as pets inventory is transfered on inventory deletion to owner's inventory, the whole thing is useless).
   - On pet dismiss (or player restart), if the player does not have room in their inventory, these items will drop to the ground.
   - Pets cannot pick up arrows, Soulshots, Spiritshots, Blessed Spiritshots.
   - Cleanup L2PetInstance.validateWeight().
   - Refresh correctly pets inventory weight gauge.
   - Numerous cleanup :
      - don't send twice setShowSummonAnimation() info (inherited from L2Summon, no need to call on children)
      - Merge L2PetInstance.spawnPet() with its single usage.
      - Move setLevel from Pet initialization to restore(), which avoids double call.
      - Don't feed _petData on Pet initialization, as info would be wrong anyway. It's already handled by setLevel().
      - Don't set twice item enchant level (was called by setLevel() and SummonItems).
      - Avoid one call of PetItemList / broadcast status.
      
Misc
   - Wedding mod HTMs are moved in their own "mods" folder.

PPS : knownlist rework probably fixes any type of "ghost" issue (player/monsters which look to be here, but when targeting them they update).

PPPS : I thank "monkeys team" for the good job on reporting behavior. You're invited to drop what I sent you and apply this changeset (you normally have a problem with pets summoning, fixed with this changeset).
Title: Re: Last aCis updates
Post by: Tryskell on November 19, 2016, 12:54:50 AM
Changeset 363 (617)

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.
Title: Re: Last aCis updates
Post by: Tryskell on December 11, 2016, 07:39:39 PM
Changeset 364 (636)

Scheme buffer v2, Auctioneer, Misc


Tryskell, the scheme buffer v2 !
   - skill names and descriptions, hold by XML rather than Config.
   - less panels, easier to use.
   - paging system to avoid scrolling effect.
   - no "blinking" effect.
   - Drop of BufferMaxSkillsPerScheme config (now uses player max).

Auctioneer instance is reworked :
   - bypasses work anew (caused by getCastle() refactor)
   - fix "Back" button on Bidders list (ty Anarchy)
   - Cleanup and more safety (ConcurrentHashMap, less calls of .get(), everything is try/catch, return is correctly used, paging system is refreshed).   
   
Misc
   - Fix Lucky skill acquisition. Ty Ailierynn for report.
   - Valakas doesn't use a dummy anymore which lighten the code and avoid to bug custom raidboss checkers showing wrong location.
   - Revert interaction range edit (100 is buggy, return back to 150) until someone decides to care about all types of range in one throw.
   - Fix Broadcasting Tower knownlist issue. Methods are sync-ed with observe olympiad. Drop _observerMode boolean (can be guessed with clever use of _savedLocation). inObserveMode() renamed for isInObserveMode().
   - Fix the "unhandled slot type" issue. Ty Sahar.
   - Addition of Flame/Control infos on castle admin panel.
   - Wrath skill enchant route fix. Ty Sahar.
   - Olympiads : No forced stand up on L2OFF.
   - Olympiads : You are teleported back to a random town location, not your saved location.
   - teachTo is slightly edited ; avoid to generate 6k empty ArrayList and drop most of getters. Ty katara.
   - Rework the NPC skills holding system, avoid to generate 28k empty ArrayList.
   - Rework L2TamedBeast (cleaner version).
   - Fix previous revision regarding GrandBoss using returnHome. Ty Sahar.
   - Fix social/abnormal admin panels/commands. Ty katara for report.

Ty to SweeTs for buffer design and Sahar for XML definition.

(http://i67.tinypic.com/izwy85.png)
Title: Re: Last aCis updates
Post by: Tryskell on January 09, 2017, 11:05:23 PM
Changeset 365 (652)

Dimensional Rift, AbstractGroup / Party / CommandChannel, Scheme Buffer, Misc


Dimensional Rift
   - cleaned up (delete _deadPlayers, unify writting style, delete single use methods).
   - Fix an issue with _isBossRoom not being fed.
   - L2 legacy website : "When the party changes (such as leaving or banning from party) in the Dimensional Rift, the party will be transported to the waiting room."
   - Remove all custom messages.
   - Fix a ConcurrentException on _revivedInWaitingRoom.
   
AbstractGroup / Party / CommandChannel
   - cleaning
      - enum generation, enforce types.
      - party leader reference is stored and not retrieved from .get(0) - avoid a rare IOOBE (probably occuring during leader transfer ?).
      - remove L2 prefix to Party and CommandChannel classes.
      - generate a package model.group.
      - Both Party and CommandChannel use at least the 2 initial parameters (leader / invited member type).
      - creation of AbstractGroup class, a layer shared between Party and CommandChannel.
   - Modify Party creation to be handled by RequestAnswerJoinParty instead of RequestJoinParty, which was one big exploit (party leader being considered positive to isInParty() for the whole duration of invite request - while there is no party yet created).
   - Fix "The party has dispersed" bug issue, generated if you let the invite run off (due to Party object being created and immediately deleted - main reason of the above rework), ty Marcatu.
   - Party requestor is now checked regarding pending request (he wasn't before, so you could request a trade and a party invite).
   - Strategy Guide item is now consumed on CommandChannel creation, and not simply checked. Drop getPledgeClass() check (plain wrong) and item check (handled by creation) on CommandChannel invitation.
   - Addition of ONLY_A_PARTY_LEADER_CAN_TRANSFER_ONES_RIGHTS_TO_ANOTHER_PLAYER message.
   - Drop ALT_LEAVE_PARTY_LEADER config. Apply default party disband case to all scenarios.

Scheme Buffer
   - Available buffs are ordered as listed on XML. Ty Sahar.
   - Fix a NumberFormatException on schemes restore. Ty Sahar.

Misc
   - Fix a MysqlDataTruncation on punish_timer. Ty katara.
   - Fix TARGET_AREA_SUMMON skills type. Ty x-user.
   - Cleanup FishingSkill skillhandler, fix the penalty issue. Ty Ailierynn.
   - Introduce isUsingServerSideName / isUsingServerSideTitle to fix client/custom NPC names/titles.
   - Fix previous revision regarding AURA type skills registration on NPC templates. Ty Sahar.
   - Enforce "party size" (2/9 min/max) for Four Sepulcher and Festival of Darkness configs. Cleanup "beyond exotic" 1-man case Four Sepulcher.
   - Merchant mustn't have the option to trade Shadow Weapon coupons, only grand masters are. Refresh all Shadow Weapon related HTMs. Ty Anarchy for report.
   - Release transaction (requestor/onTransactionRequest) as fast as possible (before you were stucked in middle of a transaction on whatever returning check...). All cases are edited.
   - To keep an harmony, party duels are canceled if party is modified (added/removed member now cancels it, before only leader drop was leading to that scenario) - Dimensional Rift rule.
   - //party_info admincommand cleanup.
   - Cleanup Quest getPartyMembers / getPartyMembersState methods.
Title: Re: Last aCis updates
Post by: Tryskell on February 16, 2017, 07:01:45 PM
Changeset 366 (664)

Castle, Siege part II, ZoneManager / zones, Clans, Misc


Castle
   - Rename _zone > _siegeZone (getter included).
   - Move zones attributions to entity creation (instead of getters).

Siege part II
   - Due to following ZoneManager and zones rework, we now support :
      - PKs are ported in the vicinity of second closest town (and not inside).
      - banished players are ported in the vicinity of the castle (and not on closest town).
   - Cleanup L2SiegeFlagInstance, it works even if clan parameter is broken.
   - Cleanup loadSiegeClan() uses, which were called on numerous useless places (called on startSiege(), approveSiegeDefenderClan(), removeSiegeClan(), startAutoTask()).
   - On castle siege end, if your clan is victorious versus former clan, you gain static 1K CRP instead of calculated amount based on former clan CRPs.
   - All CastleManager.getInstance().getCastle(player) used to only retrieve an ACTIVE siege are now replaced by CastleManager.getInstance().getSiege(player), as it is shorter and cleaner.
   - Drop SiegeClan layer. Siege flag is now registered on L2Clan.
   - Creation of SiegeSide enum. Store it under String format rather than int (similar to CabalType, SealType, etc).
   - CopyOnWriteArrayLists about attackers / defenders / pending defenders are replaced by a single ConcurrentHashMap (better performance and avoid heavy lists manipulations).
   - Creation of checkSide(L2Clan), checkSide(L2Clan, SiegeSide), checkSides(L2Clan, SiegeSide...) methods, which is now the center of sides checks (instead of getAttackerClan / getDefenderClan).
   - Drop the possiblity for a clan to hold numerous headquarters flags (it was producing a IOOBE when the first flag of the list was destroyed anyway).
   - L2Clan.isRegisteredOnSiege() method simply checks memory content rather than making a SQL query.
   - Fix following checks :
      - dissolve alliance now checks if ANY allied clans is registered on a active siege (before was only checking your clan status).
      - create alliance now checks if your clan is registered into an ACTIVE siege (avoid to stuck creation if you're castle lord).
      - join alliance now checks if the invited clan is registered as an opposite clan, on any active siege. The previous check checking both characters are on siege zone is dropped (pointless).
      
ZoneManager / zones
   - Little cleanup of ZoneManager (drop of getArena(L2PcInstance), getOlympiadStadium(L2PcInstance), checkId(int) and getClosestZone(L2Object, Class<T>) methods).
   - L2SiegeZone zones are now considered L2SpawnZone, and hold following L2OFF lists : other_restart_village_list && chao_restart_point_list. Drop the isGM() exception from banishForeigners. Zones shape match with retail values.
   - L2CastleZone zones now hold banish_point_list. chao_restart_point_list is moved to L2SiegeZone, but still hold owner_restart_point_list. We drop _castle variable, which is pointless. Zones shape match with retail values.
   - L2CastleTeleportZone cleanup (isOnline() check is wrong, it basically means a offline shop can stay here).
   - L2ZoneType _characterList is edited from CopyOnWriteArrayList to ConcurrentHashMap (performance boost). The class is cleaned up (javadocs, comments, organization).
   - ZoneManager _debugItems is edited from List to ConcurrentHashMap (performance boost).
   - L2DynamicZone is deleted (no purpose).
   - //zone_visual adena drop count reflects zone id (for an instant overview). Their step spawn is also cutted by 2.5 (from 20 to 50) to faster the generation process.

Clans
   - clans are registered into a ConcurrentHashMap to avoid ConcurrentException. Drop synchronized keywords. getClans() returns a Collection instead of array.
   - destroyClan() is reworked ; parameter is now a L2Clan, the clan is removed of ANY siege (before : only if you had a castle)
   - getClanAllies() returns a Collections.emptyList() if no alliance is found.
   - checkAllyJoinCondition is now static (as variables are setted up as parameters).
      
Misc
   - RequestRestartPoint packet is cleaned up, jail location is now static.
   - Drop ALT_GAME_FREE_TELEPORT config, as HTMs can't scale with that config (were still displaying adena cost).
   - Fix L2TeleportLocation isForNoble() item consumption, ty Heinsenberg.
   - Fix skillId 1402 enchantlevel, ty Anarchy.
   - Fix TownPet instance task. Ty TreasureHuman for report.
   - Fix the merchant NPE due to Castle rework.
   - Random cleanup
      - MapRegionTable.getTeleToLocation renamed getLocationToTeleport (english plz). Method is cleaned up, MDT location is now static.
      - FIXED revive option uses player.getPosition() rather than generating a new Location object based on x/y/z.
      - RequestAnswerJoinAlly packet is secured (transaction is correctly cleaned up).
      
PS : due to Sieges part II, sieges_clans is edited. I invite you to either drop the whole table and add the new one asking your players to register anew on sieges (castle owners are automatically registered), or you can query it to edit all int values to String values.
Title: Re: Last aCis updates
Post by: Tryskell on February 19, 2017, 12:21:23 AM
Changeset 367 (668)

Reorganization ! You will hate me.


Edit all instance types.

All instances types are shortcuted as following : L2PetInstance > Pet (remove "L2" and "Instance" from naming convention, to shortcut checks and writing style).
Mother classes simply lose the "L2" prefix (L2Attackable, L2Character, L2Playable,...).

The previous rule doesn't apply exactly on following cases :

   - L2BufferInstance > SchemeBuffer (fits better with the role).
   - L2PcInstance > Player (I guess Pc stands for 'player character', so make it more intuitive).
   - L2SummonInstance > Servitor (to avoid confusion between L2Summon and L2SummonInstance ; the first being mother class of all summons and second being summoners servitors).
   - L2XMassTreeInstance > ChristmasTree (because we aren't #1337 #YOLO #Swag #doge).
   - L2WarehouseInstance > WarehouseKeeper (conflict with Warehouse, part of Inventory).
   - L2CastleWarehouseInstance > CastleWarehouseKeeper (to fit with above).
   - L2CabaleBufferInstance > CabalBuffer (cabal in english, not cabale).
   - L2ArtefactInstance > HolyThing (L2OFF naming).
   - L2ObservationInstance > BroadcastingTower (more proper name).
   - L2NpcInstance > Folk (because those are considered as non attackable targets).
   - L2MutedNpcInstance > MutedFolk (because they are based on Folk).
   - L2FriendlyMobInstance > FriendlyMonster (Monster not Mob).
   - L2NpcWalkerInstance > Walker (drop of Npc).
   - L2TeleporterInstance > Gatekeeper (fits better with the role).
   - L2DoormenInstance > Doorman (not plural).
   - L2CastleDoormenInstance > CastleDoorman (not plural).
   - L2ClanHallDoormenInstance > ClanHallDoorman (not plural).
   - L2GoldenRamInstance > GoldenRamMercenary (more informative).
   - L2CastleTeleporterInstance > CastleGatekeeper.

   - All "Manager" ending NPC types are followed by "Npc" to avoid any conflict with instancemanager (ex : L2ClanHallManagerInstance > ClanHallManagerNpc), even if there isn't any conflict (just respect same rule everytime).
   
   - Rename StaticObject serverpacket to StaticObjectInfo (after all we got CharInfo, PetInfo, UserInfo,...), to avoid conflict with StaticObject instance type.

Misc
   - Fix //removecastle admincommand (owner was still listed).
   - Fix Christmas Trees (and cleanup the instance). Ty Azik for report.
   - Deletion of GNU headers. Reasons :
      - aCis uses its own licence.
      - There is more licence than actual code characters in 80% of classes (notably packets).
      - Faster search tool, lighweight-ier sources when distributed.
   - Edit of licence.htm with latest aCis ToA.
   
PS : Since it's a complete mess, I will share, exceptionally, the complete pack on rev 367. For people who already owns a server, may Elmoroden gods pity you. I'm the best troll ever.
Title: Re: Last aCis updates
Post by: Tryskell on April 20, 2017, 09:12:25 PM
Changeset 368 (712)

Chamberlain Manor's Certificates feature, Cleanup Config, Login, MMOCore, Instance rename && reorganization part II, Logging rework, Misc


Chamberlain Manor's Certificates
   - Implement a missing castle chamberlain feature, the possibility to buy Manor's Certificates. HTMs and behavior is OFF-like.
   - Added "//reset_certificates castleName" admincommand. Integrate it on the castle panel (had to reorganize it a little).

Cleanup Config
   - Drop DATABASE_MAX_IDLE_TIME time (set to 0 by default).
   - Re-order login/server .properties
   - Drop ACCEPT_ALTERNATE_ID / REQUEST_ID from login on Config.java (weren't existing on .properties, not used by login)
   
Login
   - Drop external/internal hostnames system ; only one hostname is allowed.
   - LoginServerThread cleanup :
      - Drop _waitingClients (synchronized, check logic already handled by the other CHMap).
      - Drop some variables (7 were calling Config), some unused methods. Some rename are made.
      - Move some of the security check logic here and there to make it cleaner.
   - ServerStatus content is reorganized in both LS and GS sides. Addition of age limit / pvp server tags.
   - FloodProtectedListener connections are registered on a ConcurrentHashMap.
   - Creation of ServerData class (was part of ServerList packet). Cleanup of ServerList for easier proxy handler implementation.
   - Creation of GameServerInfo class (was part of GameServerTable).

MMOCore
   - Avoid to crash on packet read buffer underflow (client connection is dropped instead).
   - Tweak MMOCore values to process packets x4 faster (5k packets = from 16s to 4s).
   - Tweak CLIENT_PACKET_QUEUE_MAX_PACKETS_PER_SECOND && CLIENT_PACKET_QUEUE_MAX_AVERAGE_PACKETS_PER_SECOND default values (x2 now).
   
Instance rename && reorganization part II
   - L2Object is renamed WorldObject.
   - Character (previously L2Character) is renamed Creature due to class already defined on JDK (and making imports complicated).
   - AI models are renamed to fit with new naming convention (PlayerAI, PlayableAI, CreatureAI, etc).
   - The package gameserver.ai is now moved on gameserver.model.actor.ai (best location). ai.model is renamed ai.type (because gameserver.model.actor.ai.model was redundant).
   - Templates, Stat && Status models are renamed to fit with new naming convention.

Logging rework
   - log.cfg is renamed logging.properties.
   - Drop 'audit' layer && associated IllegalPlayerAction system (all punishements are deleted, DefaultPunish && DefaultPunishParam configs are dropped). Reason : that's the point you write integrity checks.
   - Drop GMAudit, uses the default formatter/handler/filter (all GMs are written on the same file).
   - Whole logging system is moved into commons. Create 'filter', 'formatter' && 'handler' packages on log. Rename package 'log' to 'logging'.
   - All handlers got a limit and a count to avoid to flood server with logs. The log limit is set to 1mo instead of 500ko. The count is setted to 5 files.
   - All logs are now moved in their own folders (those folders are created by default).
   - Logs name pattern has been edited (typeName_count.txt), the extension is now .txt.
   - All formatters are based on same writting style.
   
Misc
   - Merge math methods from Util with MathUtil. Delete Util.
   - banned_ip.cfg is renamed banned_ips.properties.
   - FloodProtectors class is moved from gameserver.util to gameserver.network.
   - Addition of SysUtil, holding system related methods.
   - L2Bookmark > Bookmark + basic cleanup of BookmarkTable.
   - Minor cleanup of GameServer and L2LoginServer (don't keep references when not needed, drop of "L2" > LoginServer).
   - MinionList cleanup, replace the CopyOnWriteArrayList (poor performance).
   - Minor cleanup of RaidBoss (drop a double isMovementDisabled() check).
   - Fix a typo error on query prior to sieges rework, ty HaddWik for report. Minor Siege class cleanup.
   - SevenSigns minor cleanup (drop 3 redundant static variables and one method).
   - Slight cleanup of RecipeShopSellList packet (avoid .get on a for loop).
   - villagemaster/30594.htm edit.
   
PS: if you got better log writting style, I would eventually integrate it.
PS2: build.xml is edited, some .properties are edited.
Title: Re: Last aCis updates
Post by: Tryskell on June 15, 2017, 07:52:52 PM
Changeset 369 (762)

Datatype reorganization, HTMs / NPCs behavior, Misc


Datatype reorganization
   - "datatables" package is renamed "data". Creation of subpackages "xml", "sql" && "manager" inside it.
   - All tables are renamed/cleaned up
      - XML loading/storing data ends with "Data".
      - SQL loading/storing data keeps old "Table" denomination.
      - Tables using both types (xml/sql) or temporary data (such as fences) are stored as "Manager".
   - All XMLs are renamed and edited to follow new conventions.
   - XMLDocumentFactory is replace by XMLDocument, a light abstract layer enforcing writting style (parseDocument, loadDocument, load).
   - Biggest edits are following :
      AccessLevels / AdminCommandAccessRight / GmListTable > AdminData
         - AccessLevel uses a StatsSet to feed data, AdminCommandAccessRight model is entirely dropped.
         - All "datatables" are merged under AdminData.
         - All ranks are provided inside the XML (no more hardcoded rank). XML format has been modified.
         - Child access has been simplified (a unique child, instead of a array).
         - Default max rank is now 8, commands are set to 7 (Admin rank) ; all associated configs have been dropped. Colors have been edited to be unique (SweeTs will do a good Support GM ! :kappapride:)
         - A new Config has been added, DefaultAccessLevel, allowing you to set a unique access level to everyone (before, that config was a boolean and could only reward Master rank).
         - //reload acar is edited for //reload admin, which reloads accesses in same time than commands rights.
      TeleportLocationTable > TeleportLocationData
         - TeleportLocation is edited : drop L2 prefix, use a StatsSet to feed infos and extends Location. It doesn't hold anymore id (can be retrieved using the Map).
      FishTable > FishData
         - FishData is renamed Fish, while FishTable is renamed FishData. Use a StatsSet. XML edited.
      SoulCrystalsTable > SoulCrystalData
         - SoulCrystalData is renamed SoulCrystal, while SoulCrystalsTable is renamed SoulCrystalData.
         - Rework successs/fail rates using L2OFF, all chances are now using a base 1000 instead of 100. Ty Marcatu.
         - Data formatting has been edited.
      StaticObjects > StaticObjectData
         - System uses a getInstance(), like his brothers.
         - Store content back in a public List.
      HennaTable > HennaData
         - Edit XML name/parameters.
         - Handle getAvailableHennasFor/canBeUsedBy (previously getAvailableHenna/isForThisClass) differently (no more _hennaTrees).
         - Move the parsing from Characters to Items tab on server loading.
         - Cleanup + Javadoc. getAmountDyeRequire() > getRequiredDyeAmount() - still static.
      HelperBuffTable > NewbieBuffData
         - Edit XML and classes names (NewbieBuff, NewbieBuffData, newbieBuffs.xml).
   
HTMs / NPCs behavior
   - Karma players can't speak to NPC anymore (default behavior). They STILL can speak when such NPC doesn't have an associated -pk HTM.
   - Add and fix all merchant HTMs (addition of all -pk, -bought, -sold, -empty : something like 300 HTMs). Implemented -empty (when your inventory is empty) and -bought (you just bought an item from a merchant).
   - Fix fisherman -sold behavior (was implemented but dysfunctional).
   - Addition of npcId 31075 HTMs and 5 buylists related to that NPC. Folk > Merchant edition.
   - Toma (the guard) got its real name, Thoma, set on XML.
   
Misc
   - Edit respawn delay / respawn random formulas to avoid warning messages.
   - Rework the Optional uses for better performance, ty Sdw to pointing it out.
   - You can't pickup or use Intention.PICKUP during an attack. Ty IpotoniC.
   - Fix NPE on checkSide / checkSides.
   - Drop fake skills integrity checks. Ty Copyleft.
   - Fix ItemFilter, due to previous logger refactor. Ty Mellion.
   - Fix tax rate on multisell system. Ty vampir.
   - Fix a HTM typo on Q105. Ty Ipotonic.
   - Merge ALT_PARTY_RANGE && ALT_PARTY_RANGE2 configs for PARTY_RANGE. Value is set to 1500 by default (like all checks found on L2OFF AI scripts).
   - Addition of StatsSet.getDoubleArray.
   - Hotfix for skills resistance calculation. Ty Erlandys.




Examples of skills calculation, before / after.
The point is, the accumulation of different similar effects don't impact as much as before (not proportional anymore, follow what could be called a logarithmic curve : "more you got, less you get").

Sleep effect :
NM Set : 16.85% / 16.31%
- : 54.91% / 54.37%
Mental shield : 27.73% / 27.18%
NM Set + Mental shield : 1% / 8.16%

Fire damage :
Elemental resist (20) : 566 / 566
surrender fire (-30) : 920 / 1011
- : 707
surrender fire + elemental resist (-10) : 778 / 808
resist fire + elemental resist (+50) : 353 / 396
valakas passive resist + resist fire + elemental resist (+65) : 240 / 327

PS : most of this patch is part 1 of... 3-4. It's simply too long to make all changes in a single revision. Probably the SpawnManager will be delayed to, at least, the end of the cycle.
Title: Re: Last aCis updates
Post by: Tryskell on June 20, 2017, 04:01:00 PM
Changeset 370 (782)

Datatype reorganization, Summon stuff, Skills edit, Revert, Misc


Datatype reorganization
   - Creation of model.pledge package. Move ClanInfo, Clan (renamed from L2Clan) and ClanMember (renamed from L2ClanMember). Move ClanTable with really light edit to data.sql package.
   - Cleanup the Javadoc on all Table/Data types which have been already cleaned up. In the future, I will try to keep using {@link}, which I find useful.
   - BuyListTable > BuyListManager
      - Creation of BuyListTaskManager, a global task for all Products (avoid 1500+ running tasks, if all Products are under restock timer).
      - Javadoc + Reorganization (use of XMLDocument, Product uses a StatsSet, writting style, etc).
      - SQL data is removed on restock timer completion, not simply saved with 0 lenght.
      - decreaseCount result impacts on task schedule (negative result = no task launched).
   - NpcWalkerRoutesTable > WalkerRouteData
      - npcwalker_routes.xml > walkerRoutes.xml. The content is edited, to put content of a node on a single line.
      - Extends XMLDocument, proper Javadoc.
      - WalkerAI is fully rewrote to use generic AI logic (MOVE_TO intention, then we use onEvtArrived() to call the next point).
      - L2NpcWalkerNode > WalkerLocation, cleanup and extends Location (which is handy).
      - Addition of WalkerTaskManager, a global task handling WalkerNode delays.
   - Location
      - Location and all classes extending Location are moved to model.location package.
      - VehiclePathPoint > VehicleLocation, TowerSpawn > TowerSpawnLocation and both now extends (Spawn)Location.
   
Summon stuff
   - The attack stance is activated even when a player hits the summon (not only Attackable). Attack stance doesn't work for Folk only.
   - Avoid behavior is reworked and implemented in an elegant and retail way. Ty RooT/Enyrgus for tests.
   - PetStatus is dropped (unused).
   - Summon attack damage is correctly shown (different messages for Pet/Servitor). Hitting a summon also fires the EVT_ATTACKED event.
   
Skills edit - ty Sahar
   - Angelic Icon duration decreased from 120 seconds to 60 seconds. It has cAtk instead of cAtkAdd effect.
   - Archery range bonus reduced from 300 to 100.
   - Force Barrier reuse delay increased from 10 minutes to 15 minutes.
   - Mirage reuse delay increased from 5 minutes to 10 minutes.
   - Honor of Pa'agrio skill radius increased from 400 to 900.
   - Vortexes now use multi_debuff stackType instead of multi_debuff_x.
   - Chant of Victory stackOrder changed from 1 to 2.
   - Victories of Pa'agrio stackOrder changed from 1 to 2.
   - Whiplash reuse delay increased from 8 seconds to 30 seconds.
   - Tidal Wave power decreased from 228 to 81.
   - Salvation duration increased from 20 minutes to 1 hour.
   - Added missing SA effects to Shining Bows.
   - Blinding Blow lethal1 chance reduced from 5 to 4.
   - Blinding Blow lethal2 chance reduced from 2 to 0-1 (depending on skill level).
   - Hotfix for EffectBluff.

Revert parts of rev 361 (changeset 562):
   - Toggle can be used while attacking.
   - You don't stop moving if skill is under reuse and you try to use it.
   
Misc
   - Register a missing admin command, admin_knownlist_page. No clue why it was missing the whole time.
   - Delete admin_mons, which was MDT launch admincommand (no use).
   - Rework PlaySound packet, listing correct parameters and introduce new constructors (notably one with WorldObject). Ty RooT.
   - Fix the stuck behavior after requesting a movement when you're actually isMovementDisabled(). Ty Ipotonic.
Title: Re: Last aCis updates
Post by: Tryskell on October 06, 2017, 03: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).
Title: Re: Last aCis updates
Post by: Tryskell on November 05, 2017, 04: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.
Title: Re: Last aCis updates
Post by: Tryskell on December 11, 2017, 07: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.
   
Title: Re: Last aCis updates
Post by: Tryskell on January 11, 2018, 06: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.
Title: Re: Last aCis updates
Post by: Tryskell on October 07, 2018, 12: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.
Title: Re: Last aCis updates
Post by: Tryskell on November 10, 2018, 06: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.
Title: Re: Last aCis updates
Post by: Tryskell on December 22, 2018, 05:28:12 PM
Changeset 377 (1020)

IXmlReader, AIs, Quests, Misc


IXmlReader - Ty Sahar
   - Drop XmlDocument and replace it by the interface IXmlReader.
   - Existing and already reworked classes which were using XmlDocument are now using IXmlReader.

AIs
   - Fix disabled AI NPCs stucking on ATTACK intention.
   - Fix minions interrupting their current cast to join the master.
   Queen Ant
      - Larva is set as disableCoreAI (it doesn't react anymore).
      - Addition of the 3 "teleport out" locations for players during Queen Ant spawn. Added back a zone corresponding to Ant Lair, to port back players.
      - Addition of onSkillSee/onAttack events for Raid Curse, which is spread for all types of ants. onAggro Raid Curse is reworked to reflect retail behavior (isn't supposed to silence mages).
      - Addition of Anti Strider Slow curse (Queen Ant onAttack behavior).
      - Rework the Nurse healing process in order it uses onFactionCall event instead of 1s task (which remove some variables).
      - Queen Ant spawn sound is corrected. Social actions amount is also corrected.
      - Nurses only heal larva and queen, not other types of faction-related ants anymore.
      - Decrease the amount of Nurses (from 5+2 (queen+larva) to 3) and Royal Guards (from 7 to 4).
      - Addition of Queen Ant behavior casting skills for following events, using retail values : onSkillSee, onFactionCall, onAttack.
      - Nurses/Royal Guards respawn time is now correctly handled (10sec Nurses, 280 + Rnd.get(40) for Royal Guards).
      - Royal Guards are teleported back on the Queen Ant zone, if out. It uses as task.
      - Queen Ant is teleported back to spawn point if out of her territory. It uses an event.
      - Royal Guards are now affected by chaos time (66% chance, tested every 90 + Rnd.get(240) seconds).

Quests
   - Addition of Q115 (made from scratch by me).
   - Addition of Q648. Ty to roko91 for the good work !
   - Fix Q403. Ty shyr for report.

Misc
    - Few HTM typos fix from the forum dedicated topic. Ty to sharers (Vampir mostly).
   - Fix a custom config (raid boss drop). Ty SweeTs.
   - Merchant HTM folder up to 31400.
   - Fix the double message on Transfer Pain (already handled by SummonStatus). Ty Sahar.
   - Drop memos associated to a deleted player. Ty ForgeOfGods.
   - ProtocolVersion accepts all legit Interlude revisions, not only the last one.
   - Tweak aggroReconsider() to don't bother with aggro lists <= 1.
   - Fix issue where circlet/reputation removal would be applied to the wrong clan after a castle siege. Ty Sahar.
   - Drop ZoneType onRevive/onDeath (unused).
   - Teleportation stuff
      - Fix a StackOverflow issue if you were using teleToLocation on following zone events : notifyExitZone / onExit.
      - teleToLocation rework ; use as low as possible advanced methods, avoid to use spawnMe()/decayMe(). Fix all issues related for using onSpawn() content.
      - Creature#setRegion handles all possible zones revalidation scenario, allowing us to get rid of revalideZone(true) from onSpawn/teleToLocation.
      - Drop Summon#onTeleported() - pet is supposed to be summoned near the owner, broadcasting packets automatically.
      - The only legit onSpawn behavior is maintained for SiegeSummon, using onTeleported.
   - MinionList rework
      - Store the current state of minion spawn/despawn in order to reuse it. Fix an issue with onMasterTeleport() - minions were created back, leading to x2 minions if respawn tasks were already scheduled.
      - Cut the number of container modification, since _minions container doesn't add/remove anymore. Only the boolean state is edited.
      - spawnMinions is only used once. It now generates _minions container content.
      - Seperate die/deletion behaviour. setLeader(null) is only set if deletion occurs (to prevent OOME).
      - Rework onMinionDie in order scripts currently affect the modification on respawn time setting (notably moving out whatever modified the respawnTime).
Title: Re: Last aCis updates
Post by: Tryskell on January 16, 2019, 08:47:26 PM
Changeset 378 (1056)

MinionList, Fishing, DerbyTrackManager, Cleanup, Bugfixes


MinionList
   - Addition of show_minion.
   - Fix the minion respawn (broken on last revision). Ty Ericu for report.
   - Edited minions system to fit L2OFF behavior. Ty shyr for testing.
      - Regular minions don't respawn when master is alive. They despawn only if they switch to IDLE (case of returnToRespawnPoint for others monsters).
      - Raid boss minions are untouched, they do respawn when master is alive, and instantly despawn on master death.
   - setLeader > setMaster, all uses are edited to reflect it (edited to avoid to melt with getClan().getLeader()).
   - Minions are now setMaster(null) towards master death to avoid collateral aggro once new master comes along. In order to make minions despawn, a rework of isMinion() was needed.
   
Fishing
   - L2Fishing is renamed FishingStance. All variables and methods related to fishing are moved from Player to this class.
   - All fishing zones maxZ are reviewed (no more flying baits).
   - The way to calculate the bait location is modified.
   
DerbyTrackManager
   - Fix all issues regarding lanes swap.
   - The List of NpcTemplate is edited to be a List of Npc, which avoid to generate new Monsters instance on every race. The 24 instances are re-used, over and over. The List is shuffled, then the first 8 instances are picked as runners.
   - Current race number is now calculated based on LAST REGISTERED HistoryInfo race number, and not on number of total entries. If you manually delete old entries, it won't affect anymore the data integrity (only the data of the ticket you try to retrieve). In the same order of idea, getHistoryInfo is added to retrieve an HistoryInfo based on the saved race number, and not based on the getHistory() index anymore.
   - Minor reworks here and there (methods rename, addition of methods, Javadoc).
   
Cleanup
   - Deletion of Config.DEBUG.
   - Multiple Logger > CLogger. Improve errors log details. Ty Sahar.
   - AugmentationData cleanup (8900 > 1800 lines for skills.xml). Ty Sahar.
   - IPv4Filter cleanup. Ty svipben.
   - Slight edit of SpawnZoneType (renames and merge of identical methods). All zones are edited to reflect x/y/z caps removal.
   - Add writeLoc as part of SendablePacket, and use it where it can be used.
   - Addition of spawnMe(Location).
   - IXmlReader#parseLocation is added.
   - LoginFail / PlayFail packets static approach.
   - CursedWeapon cleanup (try-with-ressources, CLogger, static queries).

Bugfixes
   - Fixes due to IXmlReader implementation :
      - Fix broken chaotic spawn locations loading. Ty shyr for report.
      - Fix //reload zone - Miss to reset _lastDynamicId to 0.
      - Fix //reload acar - Miss to "play" with _highestLevel. It's dropped, and accesses are set on TreeMap for easy highest level found. Fix also the log regarding master level logging in.
   - Refresh informations regarding //reload admincommand (prior to AdminData rework). Ty Toxico.
   - Fix summons forced skill cast. Ty bowling4soup.
   - Fix party-broadcasted message related to distributeItem. Ty bowling4soup.
   - Gatekeeper Arisha HTM cleanup. Add a missing loc. Ty shyr for report.
   - Add more accuracy to angle<>heading conversion.
   - PartOfCharacterHeight is set to 95 by default instead of 75 (more accurate with eyes position...).
   - //spawn default respawn time is set to 60sec instead of 0sec.
   - Addition of both //show_minion and //knownlist buttons into npcinfo.htm.
   - Let Cursed Weapon tasks run up to their current loop. Avoid InterruptedException.
   - BufferUnderflowException is handling differently, to avoid ProtocolVersion spam. Ty SweeTs.
   - Entire cleanup of isRaid(), isRaidMinion(), isMinion().
      - Introduction of isRaidBoss() and isRaidRelated() (previously named isRaid()).
      - Deletion of isRaidMinion.
      - Avoid the weird "isRaid() && !isRaidMinion()" to speak about a raid boss.
   - Fix 2 issues related to teleport process :
      - on teleport, zones are correctly registered (bug introduced on last rev). Ty SweeTs for report.
      - compass and water are correctly refreshed (bug as old as L2J).
   - //setinvul uses isMortal, not isInvul anymore. Deletion of FolkStatus, NPCs are setIsMortal(false) instead.
   - SiegeFlag alert timer is moved from 20s to 30s delay.
   - Fix all wrong NPC levels (Bosses included). Add npcId 13015.
   - Duels are now interrupted if an Attackable hit one of the duelist.
   - Add the 6 missing castle warehouse keepers on castle related NPCs (they don't exist on L2OFF data too). Ty shyr.
   
PS : when you want to speak about a raid boss or raid minion, simply use isRaidRelated(). isRaidBoss() returns only Raid Bosses. isMinion() returns any minion type.
Title: Re: Last aCis updates
Post by: Tryskell on February 02, 2019, 08:32:34 AM
Changeset 379 (1104)

Zaken, Four Sepulchers, Dimensional Rift, Cleanup, Bugfixes


Zaken
   - Addition of Zaken script. Ty Asmodeus for the initial work. Numerous cleanup and fixes have been done to fit exactly L2OFF script.

Four Sepulchers
   - Big cleanup (CLogger, Maps are reviewed, merged methods, try-with-ressources,...) with a complete events cycle rework.
   - Fix NPE issue and invalid weight penalty check on FourSepulchersManager.tryEntry (called by Q620_FourGoblets).
   - Drop the 4 duplicated managers spawns from spawnlist (already handled by the Java class).
   - Fix multiple bugs/exploits related to chests interaction (they now instantly disappear).
   - SepulcherNpc onActionShift behavior is added.
   - Add the regular message broadcast "The monsters have spawned!" for Hall Gatekeepers on door opening.
   - Monsters, upon mysterious chest opening, instantly spawn. There isn't 3,5s delay.
   - The petrification effect on statues is now instant upon statue spawn to avoid statues got time to move/get aggro. Statues are also set as noRndWalk.
   - SepulcherMonster class is dropped, a script named FourSepulchers handle all old behaviors (and even more). NPCs are re-allocated as Monster.
      - Victims are removed from FleeingNPCs script to be included directly on FourSepulchers script.
      - Archon of Halisha (the ones with 18xxx npcId) are removed from SpeakingNPCs script (not retail).
      - Victim behaviour is added (run and shout while being hit by a NPC).
   - Added retail time limit upon Mysterious Boxes opening (can't open anymore after the 49th minute), with the associated message broadcast.
   - Add HalishaChest instance : animation on spawn, don't attack, don't random walk anymore.
   - Delete remnant Chapel Keys from Players on zone oust.
   - Edit begin/end timer to fit with royal_rush_npc AI, aka : 50th min game end, 55th min game registration, 0th min game start. Shouts are made from 5th min to 45th.
   
Dimensional Rift
   - Regular cleanup on DimensionalRiftManager (IXmlReader, CLogger,...)
   - The room choice process is entirely revamped to avoid to use do/while loops which can potentially stuck up.
   - DimensionalRiftRoom is moved in its own file. A lot of cleanup here too (_roomMobs List is dropped, Location instead of int[]...).
   - Fix an issue where getFreeRooms considered boss room as valid empty room on initial start method (Rift was considered as 1 free cell to teleport in - while there was actually none).
   - teleToLocation override is moved from Creature to Player. Player also got a new teleToLocation(Location) method which simply call the super method and avoid the rift check (used only by Rift system).
   - Regular cleanup on DimensionalRift.
      - Store DimensionalRiftRoom instead of its id, which avoid to make a lot of get on DimensionalRiftManager rooms.
      - Timer / TimerTask are replaced for Future<?> and get use of ThreadPool.
      - CopyOnWriteArrayList > ConcurrentHashMap.newKeySet().
   
Cleanup
   - More Cloggers.
   - oustAllPlayers() returns the List of kicked Players.
   - Add scriptValue as part of npcinfo.htm.
   - GameServerTable is slightly refactored : renamed to GameServerManager, get use of CLogger and IXmlReader. servername.xml is renamed serverNames.xml.
   - PlaySound complete packet structure. Ty RooT.
   - Add IXmlReader addAttributes to feed an existing StatsSet. Few StatsSet cleanup. Ty Melron.
   - Npc#onActionShift npcinfo GM content is moved on sendNpcInfos.
   - L2AttackableAIScript#testCursesOnAttack method is added and used on every GrandBoss (bosses who haven't yet been reworked aren't affected - Core and Orfen). testCursesOnAggro is also added.
   - Quest / Scripting
      - onAttack behavior is edited to allow any Creature attacker to trigger it (and not only Playable).
      - onKill behavior is edited to allow any Creature killer to trigger it (and not only Playable). Indirectly fix a huge issue, where a NPC attacker would stuck victim onKill event.
      - Following methods return QuestState instead of Player, for easier management inside quests. Associated quests have been edited.
         - getPartyMembers(Player player, Npc npc, String var, String value).
         - getRandomPartyMember(Player player, Npc npc, String var, String value).
         - getRandomPartyMember(Player player, Npc npc, String value).
         - getPartyMembersState(Player player, Npc npc, byte state).
         - getRandomPartyMemberState(Player player, Npc npc, byte state).
      - Addition of Quest#addGameTimeNotify(). You can now easily add scripts behaviours based on ingame day time.
   - Add Creature#isInsideRadius(Location loc, int radius, boolean checkZ, boolean strictCheck).
   - Add Attackable#cleanAllHate() - which clean the hate, but keep all AggroInfos (to keep track of rewards).
   
Bugfixes
   - isBannedGameserverIP returns true if IP address can't be retrieved.
   - Fix the auto-attack behavior which should stop once the target isn't autoattackable anymore (include skills nextActionIsAttack behavior). Ty Kraker for fix.
   - Some crests related packets checks addition. Fix one potential client crash. Ty RooT.
   - Fix a title exploit adding a regex pattern for RequestGiveNickName. Drop isValidPlayerName.
   - Fix minions dissapearing after healing (ex : Ant Nurses)
   - MutedFolk onActionShift behavior is added.
   - Stop the current bow attack if the Player hasn't enough MP. Ty ForgeOfGods.
   - Fix the possibility to target things when incapacited.
   - Add OTHER_PARTY_IS_Broken check for duels.
   - Edit Attackable#returnHome(boolean) to use cleanAllHate() instead of _aggroList.clear(). Drop hasAI() and getMoveSpeed() checks (the first creates issues upon single player region teleport, the second is simply pointless).
   - AutoSpawnManager fix on AutoDespawner. Ty Denzel for fix.
   
PS : Four Sepulchers configs are all edited. Please refresh your events.properties.
PS : Regular teleToLocation(Location, int) should always be used. The only counter to this rule is teleported by rift itself (otherwise you are moved back to waiting room) or eventually custom skills which teleport you (rush, etc).
Title: Re: Last aCis updates
Post by: Tryskell on February 18, 2019, 03:20:09 PM
Changeset 380 (1133)

RaidBossManager rework, Admincommands, DayNightSpawnManager rework, Scripts, Cleanup, Bugfixes


RaidBossManager rework
   - Regular cleanup (CLogger, try-with-ressources, stringified queries,...).
   - Edit tasks to not be canceled, probably fixing InterruptedException on raid boss death.
   - Tweak raid boss death query in order to only update it, and not all raid bosses.
   - Fix the raid boss loaded HPs upon server restart.
   
Admincommands
   - Revert //setinvul (setIsInvul true), rename it //invul and move it on AdminEffects.
   - Add //undying, which takes back the current //setinvul behavior (setIsMortal false).
   - Add //buff <skillId skillLvl>. If no valid Creature target, use player itself. Can be used as buff/debuff.
   - Fix admincommands para_all / para (mobs were still ending current casting/attack).
   - Add admin_debug for the alt+G panel ("Information" button).
   
DayNightSpawnManager rework
   - Cleanup (divide by 3 the class).
   - Hellmann is moved out, to its own script. The day/night spawn is fixed.
   - Fix the issue where day/night spawns are only handled on next day/night change after server start.
   
Scripts
   - ON_CREATURE_SEE event type is added.
   - Fix Q023 : upon saying Innocentin you didn't read the book, the quest was freezed.
   - Q024_InhabitantsOfTheForestOfTheDead is added.
   - "ForestOfTheDead" script is added. In the end, it will gather all related AIs. Handle following for now :
      - Hellmann day/night spawn.
      - Cursed Village NPCs day spawns.
      - Q023 "Maid of Lidia" night spawn.
      - Q024 night Dorian check.
   - Add a missing QueenAnt onAttack condition regarding fire spells. Ty bowling4soup.
   - NPE fix for onKill. Also allow onKill to handle custom suicide behaviours (simply check if killer is npc).
   
Cleanup
   - Complete ChangeMoveType packet structure. Ty RooT.
   - Complete TeleportToLocation packet structure.
   - Rename Creature#teleToLocation for teleportTo.
   - Addition of instantTeleportTo method (used for short distance teleport, mostly skills). GetPlayer skillhandler is edited to use it.
   - Addition of WorldObject#refreshKnownlist() method (used only by instantTeleportTo).
   - Drop unused Player constructor.
   - Move all unrelated content (spoil, soul crystals, seed,...) from Attackable to Monster (1 Map, 2 Lists, few other variables : Guard / SiegeGuard don't need such).
   - Slight Henna rework, ty StinkyMadness.

Bugfixes
   - On teleport, the heading is now taken in consideration.
   - Fix NPE for detached Players upon //character_info use. Ty sahar.
   - Complete previous fix regarding auto-attack behavior which should stop once the target isn't autoattackable anymore.
   - Fix Q634 Dimensional Fragments drop amount/rate.
   - Anakazel rewards Soul Crystal leveling to all party members.
   - Fix a weapon equip task exploit. Ty Celestine for the detailed video.   
   - Fix ghost attacks upon stun/sleep/paralyzed/... effects. Notably visible on NPCs.
Title: Re: Last aCis updates
Post by: Tryskell on March 28, 2019, 10:07:17 PM
Changeset 381 (1225)

Updates, Cleanup, ClanHall, Bugfixes


Updates
   - aCis officially support JDK11 (since Oracle changed their licence, consider to use OpenJDK), and is now mandatory. Older/different versions aren't supported anymore.
   - Refresh mysql connector from 5.1.26 to 8.0.15.
   
Cleanup
   - Revert StringUtil#isEmpty(String... strings) logic.
   - Rnd.get(list) / Rnd.get(array) uses are unified over the source. Those methods don't send anymore default values, and will lead to errors if the given array is null.
   - Add Player#isWearingFormalWear().
   - Add ExProperties#parseIntIntList.
   - Add ZoneType#addKnownObject / removeKnownObject.
   - Drop L2Skill isDemonicSkill() / isFlyingSkill() / isStriderSkill() - no use anymore.
   - Activation of the try-with-ressources warning. All impacted classes were cleaned up in the process (renames, CLogger addition, regular writting style, Stringified queries, Javadoc...). I won't list all changes, but there was something like 200+ warnings.
   - IdFactory
      - Merged with BitSetIDFactory.
      - Drop _freeIds.clear() on initialization (Javadoc says it sets to false by default).
      - Drop _initialized flag (unused).
      - Drop Collections.sort(usedObjectIds) (pointless).
   - Basic Duel packets cleanup. Add missing ExDuelEnemyRelation packet (with no use). Ty RooT.
   - ZoneType#getKnownTypeInside returns Collections.emptyList() if no characters are found - avoid to generate an empty List for nothing. Delete children classes isEmpty() checks.
   
ClanHall
   - Complete rework of ClanHall system. Added to the regular cleanup (CLogger, Javadoc, Stringified queries,...) :
      - Improve clanhall admin management.
         - Usage is now //ch chId <set|del|open|close|goto|end> (one admincommand for all actions).
         - Clan Hall and Siege admincommands got now seperated AdminCommandHandler.
         - No more Exception on invalid parameter for both clan halls and sieges admincommands.
      - Fix clan hall doormen "To Beginning" button.
      - Change the way of attribution of ClanHallManagerNpc ClanHall (no subsequent ClanHallManager calls).
      - XMLize static data (moved out from SQL). Merge Auction db content with ClanHall db content. AuctionManager is dropped, Auction is now stored to the ClanHall directly.
      - Rework the fee task to be more friendly.
      - ClanHallFunctions are loaded in same time than ClanHall, to benefit from the existing Connection. ClanHall don't use anymore one Connection per ClanHall, too.
      - "Clan Action" panel is refreshed upon ClanHall free() method call.
      - Fix an issue with owned ClanHall bids cleaned up upon server start.
      - Upon setOwner() : previous owner got some actions made on it, fee task is renewed for new clan, existing ClanHallFunctions are deleted, outsiders are dumped out.
      - Doors are closed for both free() / setOwner() processes.
   
Bugfixes
   - Implementation of EventTrigger packet + retail usage (castle traps visual effect on siege progress). Ty RooT.
   - Implementation of ExMPCCPartyInfoUpdate packet.
   - Add mods_wedding as part of restored objectIds (otherwise those ids are usable, while they shouldn't).
   - ShortcutList / Shortcut
      - Fix addition/remove/update SKILL shortcut type (manual or from trainer).
      - Integrity check upon addition (check MACRO, RECIPE, ITEM, SKILL types).
      - Fix cleaning issue for ITEM (dropping an item on ground was only clearing the first occurence of shortcut met, not others if existing).
      - Implementation of ShortCutDelete packet.
   - Olympiad Competition starts time seconds are set to 0.
   - EnterWorld exploit fix (create a special GameClientState ENTRING for the occasion, more infos here : http://acis.i-live.eu/index.php?topic=10070).
   - GMViewSkillInfo shows correctly disabled skills when wearing Formal Wear. Also refresh skills state upon equiping/unequiping Formal Wear.
   - Add back regular skills use for mounted players and cursed weapons users. Indirectly fix SoE and alike skills items for mounted / CW user.
   - Fix zone/region overlapping (can be tested on Giran castle active front trap). Ty bowling4soup.
   - Fix Q348. It uses L2OFF script for Blooded Fabric acquisition formula.
   - Add MultiSellChoose _entryId integrity check to avoid packet craft (avoid IOOBE). Ty Ghadda / bowling4soup.
   - Rework BrokenLabyrinth based on L2OFF GF. Fix an IOOBE.
   - Edit Linux shell scripts to automatically create log folder if not existing. Ty RooT.
   - Add CW SocialAnimation upon ranking.
   - Fix CW visual effect (goes from 1 to 10 stage, not 0 to 9). Ty RooT for tip.
   - Fix XP/SP calculation. HP ratio is already taken in consideration by template values. Ty Ghadda.
   - Revert previous edition of a config, based on Sahar observations - From -18104, 109992, -2656 to -18312, 110056, -2512 archers could shoot.

   
PS : if you already own a live server, you have to add "?serverTimezone=UTC" as part of database URL.
PS2 : you have to refresh your developement board :
   - OpenJDK 11 can be downloaded here : https://jdk.java.net/
   - Eclipse 2018-12 or any IDE accepting JDK11.
Title: Re: Last aCis updates
Post by: Tryskell on April 18, 2019, 11:47:08 AM
Changeset 382 (1288)

Since a lot of core has been edited/moved, sources will be exceptionally shared at rev 382 for Customers, added to the diff patch for the adventurers. If you begin to dev a project, I strongly invite you to port your customs directly on 382 shared pack.

Organization, Cleanup, Bugfixes


Organization

A lot of organization has been made, in order to give some consistency to core side.
   - Creation of package gameserver.enums. All existing enum have been moved here, and renamed to either get distinct name (CtrlEvent / EventType being too generic), and to fit with new convention name for enums (has to end with "Type" or "Status").
   - Creation of package gameserver.model.actor.player and gameserver.model.actor.npc, holding classes related directly to Player and Npc (+ children) classes.
   - Creation of package gameserver.model.spawn, holding AutoSpawn / L2Spawn / BossSpawn classes.
   - Drop model.base and model.actor.appearance packages.
   - Player is moved out of model.actor.instance, to model.actor.
   - Drop of Broadcast class and gameserver.util package, content is splitted between World / ZoneManager / Creature.
   - Drop of gameserver.templates package. StatsSet is moved to common.util.
   - Drop of gameserver.instancemanager, with rename : SevenSigns > SevenSignsManager, SevenSignsFestival > FestivalOfDarknessManager. Both are cleaned (CLogger, try-with-ressources,...) and moved to gameserver.data.manager.
   - AutoSpawnManager > AutoSpawnTable and moved to gameserver.data.table, with a split of AutoSpawnInstance > AutoSpawn moved to gameserver.model.
   - Drop XMLDocumentFactory and gameserver.xmlfactory package (no use anymore).
   - Drop gameserver.model.petition package, move Petition back to gameserver.model (we avoid to use package for single classes).
   
Cleanup
   - Refresh DP .project to avoid Eclipse warnings.
   - Move GET_PLAYER and INSTANT_JUMP skills to their own SkillType, TELEPORT, in order they aren't used by regular AI system. In order NPCs use them, you have to write additional script.
   - Add Npc#doCast(SkillType), which randomly cast a skill based on its SkillType and associated to the NpcTemplate skills.
   - Heading is now part of getPosition(). New setXYZ/spawnMe methods have been generated to give the possibility to feed heading in same time than X/Y/Z. To set the heading independently, you have to use getPosition().setHeading(heading).
   - Improve Npc#toString().
   - Rename Player#getPet() / setPet > getSummon() / setSummon(), since it is supposed to return Summon, which are both Pets and Servitors.
   - Walker doesn't override HP drop stuff (since it inherits from Folk#isMortal).
   - Creation of Punishment model (with Javadoc) in model.actor.player, holding all punishments informations of a Player.
   - Creation of HennaList model (with Javadoc) in model.actor.player, holding all Hennas informations of a Player. Ty vampir for the initial contribution.
   - L2Radar > RadarList + Javadoc and move it to gameserver.model.actor.player, extract RadarMarker to gameserver.model.
   - ValidatePosition _heading isn't processed anymore (no use).
   - Generate TeamType enum, based on StinkyMadness idea.
   - Complete rework of RaidBossManager.
      - Merge the different Maps holding infos into one. Create BossSpawn in model.spawn package to hold all related infos.
      - The saving process isn't lazy anymore, but handled on spawn/death/server start.
      - BossStatus isn't related to a Npc instance anymore, meaning you can interrogate it even if Npc isn't existing (DEATH case).
      - Rename StatusEnum > BossStatus enum, moved into enums package.
   - Add the possibility for server admins to tweak default items quantity and equipability. The result is more readable than previous system. It uses the newly generated ItemTemplateHolder (gameserver.model.holder).
   - Cleanup RandomAnimationTaskManager
      - Animation task cancel is now instant upon NPC death, inactive region or intention change != ACTIVE for Attackable. Before it was waiting the regular end timer.
      - Following instances types aren't registered anymore on RandomAnimationTaskManager : ControlTower, EffectPoint, FlameTower and SiegeFlag.
      - Drop of Npc#isMob(), addition of Npc#calculateRandomAnimationTimer().
   - Add missing login status on admin/maintenance.htm
   - Generate StatusType and AttributeType enum, which are used for both LS and GS. Unload ServerStatus of multiple variables.
   
Bugfixes
   - CharInfo heading / boatId is fixed, based on Vilmis remark.
   - Fix a bug introduced in rev 380, where bosses died during a server down couldn't respawn properly. Ty bowling4soup.
   - Add HEAL_STATIC as potential buff slot (fix skillId 3125). Ty Sahar.
   - Modify Lightning Strike power effect. Ty Sahar.
   - Fix the double summon spawn issue (unSummon + doDie happening in same time), as tested by Sahar.
   - Decaying summons tasks are dropped if a decay occurs (avoid tasks to run for nothing).
   - Add Porta/Perum script named SummonPlayer.
   - startAttackStance() / stopAttackStance() system is cleanup. Avoid to spam AutoAttackStop broadcast by NPCs. Decrease the amount of startAttackStance() / stopAttackStance() calls tremendously, notably because the call is moved from onHitTimer to doAttack. Since each attack can produce 1, 2 and up to 10 hits for polearm users, as much calls were done.
   - Player#store doesn't store anymore client X/Y/Z (avoid exploit upon relog).
   - Diagonals flags rule is edited on GeoDataConverter. They must now be validated in both direction.
   - Add/improve character water/fly state on SummonInfo, NpcInfo, PcMorphInfo, PetInfo.
   - Avoid NPE on ClanHall#setOwner, issue introduced in rev 381. Ty bowling4soup.
   - Fix ShortcutList#restore(), issue introduced in rev 381. Ty bowling4soup.
   - Fix ignoreShield() behavior for L2SkillType STRSIEGEASSAULT, PDAM && FATAL. Ty Sahar.
   - SiegeGuard AI is set to ACTIVE and not IDLE when reduceHate occurs.
   - Fix an issue on player creation ; items (armors) weren't equipped properly.
   - Fix default skills shortcut acquisition upon player creation.
   - A DOWN server now correctly repells login attempts (case of Shutdown 60sec). Negative access levels accounts see the server DOWN, and can't login aswell. Addition of GameServerInfo#canLogin(LoginClient client).
   
PS : You should update your geodata, either using GeoDataConverter or refreshing it using aCis shared link (verify modification date).

Since a lot of core has been edited/moved, sources will be exceptionally shared at rev 382 for Customers, added to the diff patch for the adventurers. If you begin to dev a project, I strongly invite you to port your customs directly on 382 shared pack.
Title: Re: Last aCis updates
Post by: Tryskell on August 30, 2019, 01:56:06 PM
Changeset 383 (1388)

Movement is still experimental. The status IS NOT OK for LIVE servers. Boats and MoveToPawn behavior still need to be fixed.

Movement rework - Part I, Sit / Shop fixes, Safe fall height, Bugfixes, Organization


Movement rework - Part I
   - Fix following issues, plaguing aCis since a while :
      - Clicking fast enough on ground while moving was increasing the distance between the player and its actual real point.
      - Fix the pathfinding issue for monsters, blocking on the first encountered obstacle.
      - Introduce pathfinding for returning to spawn monsters, to avoid they stuck in middle of nowhere or got Z layers issues.
      - Rework most of the offsets to fix issues with move to pawn concept.
   - Introduce a 0.5s delay where player walks instead of run on start of a movement, to fit client animation.
   - Introduce CreatureMove, a complete replacement of MoveData. It's now bound to a Creature, and not generated on every single move. Children exist for PlayerMove and BoatMove. The whole movement logic is moved here (extracted from Character and CharacterAI).
   - Drop MovementTaskManager, every running task is now individual to avoid to register on a clock wall, which means the 100ms granularity is guaranteed without calculations or sync needs.
   - Avoid to process a movement if a movement is already launched with same destination and offset (huge performance boost upon spam pickup action).
   - Add a debug for movement system using ExServerPrimitive packet. It offers a good sight of what happens during movement process.
   
Sit / Shop fixes
   - sit/stand is now backed by _sitTask, to track delay between sit and stand position.
   - shop stand up is now instant to fit with retail and avoid exploits.
   - Player#canOpenPrivateStore is now used on 2 different places (shop opening and validation) and handle more checks. Fix multiple issues/exploits, like being able to shop while being mounted.
   - StoreType is renamed OperateType, and now include missing MANUFACTURE_MANAGE and OBSERVER. All getters/setters are edited.
   - MANUFACTURE_MANAGE is implemented, it's not possible anymore to open both (buy or sell) and manufacture panels.
   - All buy/sell/manufacture player lists are now generated on Player creation (no more lazy initializations / container creation, no more null checks).
   - Improve Player#instantStandUp(boolean) a little (don't bother with stand up if already stand up).
   - Add NO_RECIPES_REGISTERED check upon MANUFACTURE_MANAGE ; call the empty window. Add ManufactureList#_isDwarven, which allow us to call back previous state without error.
   - Don't set OperateType.NONE on invalid item count for both sell/buy manage (was leading to invalid store state). Add retail messages.
   - Fix the fact you aren't supposed to open a shop when already sat.
   - Fix the buy/sell/manufacture tryOpen methods : Don't bother with manage case, and tryOpenWorkshop only care with right OperateTypes.
   - isInStoreMode() is modified to only returns real cases of store mode. Manage cases aren't part of it.
   
Safe fall height
   - Added retail values based on classes and sex (was semi-implemented core side using default value 333). Ty RooT for dp side.
   - Add CANNOT_DISMOUNT_FROM_ELEVATION wyvern check, making it impossible to dismount a wyvern if not in a valid safe fall height.
   
Bugfixes
   - Fix Q009 reward itemId. Ty p0w3rf1y.
   - Fix Q621 / Q622 haste potion itemId reward. Q621 giveItems recipe instead of rewardItems. Ty Idontknow1.
   - Add retail behavior regarding teleporting to nearest town if wyvern feed task ends.
   - Seeds works anew (was due to invalid handler name on XML).
   - Edit few mercenary tickets SystemMessage to use retail ones. Ty RooT.
   - Fix the delay for mass teleporter (no instant case if out of siege). Ty RooT.
   - Fix Baium zone (around door, to avoid teleport back to town) using L2OFF GF values, IL being buggy.
   - Fix the few cases of mispelling or miss on configs properties files.
   - Fix radius/height/level/stats of all NPCs, except summons and tamed beasts. Ty StinkyMadness.
   - Add few missing Manor Managers on relatedNpcIds (was leading to NPEs).
   - Fix a MinionList NPE, prior to minions rework.
   - Add few missing Seven Signs event sounds. Ty RooT.
   - Drop calcFestivalRegenModifier system, which was leading to negative values and isn't retail. The only affected stat is MP regen, and it's positive, based on MotherTree zones.
   - RaidBossManager#cleanUp fix prior rev 382 edit.
   - Fix multiple SpotBugs reports (18 or so), from invalid equals/hashCode contracts to missing switch break.
   - Fix RequestListPartyMatchingWaitingRoom, RequestAskJoinPartyRoom : variables aren't set as static anymore.
   - Fix the client crash when clicking "projection" button on the "record of seven signs" (introduced on rev 239).
   - Upon SA activation on magic use, S1_HAS_BEEN_ACTIVATED message is now working and called BEFORE resist attempt.
   - FleeingNPCs / 4s victim scripts flee behavior are enhanced.
   - AI is correctly flushed upon IDLE case, leading to proper global aggro value reset (10sec aggro cooldown on respawn).
   - Fix party duel CANCELED state for ZoneId.PVP.
   - Boat _passengers is now concurrent to avoid CME.
   
Organization
   - Move _isNoRndWalk from Creature to Attackable, _isChampion from Creature to Monster.
   - Slight edit of Creature#isInsidePeaceZone (no static, first param is self).
   - Rework WorldRegion#setActive, it now uses an AtomicBoolean. Add WorldObject onActiveRegion() / onInactiveRegion(). Behavior is normally exactly the same than old setActive, but cleaned up.
   - AttackableAI#changeIntention getKnownType(Player) check is now replaced for getRegion().isActive(), probably leading to a lot of saved garbage. SiegeGuardAI#changeIntention override is dropped.
   - Remove GeoEngine.getInstance().canMoveToTarget pre-optimizations (it's already handled by moveToLocation).
   - Add missing onEvtAfraid and AFRAID AiEventType use. Rework Fear effect to use it.
   - Merge Instance#doPickupItem(WorldObject object) with AI#thinkPickUp() (single use).
   - Add Location#equals(int x, int y, int z), Location#setUsingPositiveOffset, Location#setUsingRandomOffset and Location#setFleeing methods.
   - Addition of StatsSet#getIntIntHolderArray.
   - ItemTable cleanup (renamed ItemData and moved to data.xml, CLogger, move temporary containers to good place, move _slots Map to Item, javadoc).
   - Item cleanup (drop Logger, correct use of StatsSet methods to feed Item values, javadoc)
   - Rework both Weapon#getSkillEffects (Fix the multiple calls upon getSkill() and getFirstEffect, rename those methods castSkillOnCrit / castSkillOnMagic for easier understanding).
   - Fix one strange use of StatsSet upon FestivalOfDarknessManager.
   - Rename all items handlers to keep naming convention logic.
   - Add warning regarding missing property key on configs. Ty StinkyMadness.
   - Add UseBlowfishCipher config. Limit the byte array size on VersionCheck packet. Ty RooT.
   - Drop few skills parameters duplicates, ty bowling4soup.
   - Addition of RaidBossManager#getBossSpawns() and BossSpawn#toString for easier customs implementation.
   - Numerous packet reorganization :
      - Few packets rename to fit NetPro.
      - "activeChar" naming is replaced for "player". Final keywords added here and there. Variables naming is more friendly and/or conventional.
      - NewCharacterSuccess uses a static approach for now.
      - Deletion of SuperCmdCharacterInfo, SuperCmdServerStatus && SuperCmdSummonCmd packets (custom, unused).
      - Implement SendTimeCheck / RequestTimeCheck packets. Ty RooT.
   - AdminCommands
      - Delete AdminMammon and associated admincommands.
      - Merge all cursed weapons admincommands into //cw.
      - Cleanup //admin2 panel (game_menu.htm).
      - Delete //adminX commands. It is now simply //admin. //admin can now answer to file names (ex. //admin server).
      
PS : all items XML etcitem_type parameters are edited to reflect enum value (use of caps lock).

Movement is still experimental. The status IS NOT OK for LIVE servers. Boats and MoveToPawn behavior still need to be fixed.
Title: Re: Last aCis updates
Post by: Tryskell on September 29, 2019, 06:20:09 PM
Changeset 384 (1454)

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.


SH part I, Movement part II, PlayerLevelData addition, Boats, Bugfixes, Organization
   
SH part I
   - Add Q504 and Q655 quests.
   - Add 4 out of 6 Siegable Halls scripts :
      - Devastated Castle
      - Fortress of Resistance
      - Fortress of the Dead
      - Rainbow Springs Chateau
   - Add relatedNpcIds for all clan halls.
   - Add clanHall information for all doors.
   - Rework SiegeNpc to use all retail HTMs. It isn't supposed to NPE over Siegable Hall anymore.
   - Create SiegableHallZone.xml, based on ClanHallZone zones.
   - Update ClanHallZone.xml with "other" spawns.
   
Movement part II
   - Fix Boat movement, based on vladalien work.
   - Rework isPathClear behavior, which wasn't working properly. Objects don't use geopath anymore when not needed.
   - Drop ARRIVED event for intermediate path points. Ty vladalien.
   - Fix player/creature following "knownlist-forgotten" teleporting character behavior.
   - Don't process Walker path if already moving.
   
PlayerLevelData addition
   - Unhardcode Formulas#karmaMods and Experience.java.
   - Implement missing exp loss % per player death based on level.
   - Rework getExpForThisLevel() / getExpForNextLevel() / getExpForLevel(int level) for both Summon/Pet/Player. It is now only located on Stat.
   - Don't feed anymore getExpForThisLevel / getExpForNextLevel for regular servitors packets. Revert-able if a visual issue occurs.
   
Boats
   - Boat clandestines entering DURING boat leaving harbor are now correctly dropped out from Boat if they got no valid tickets.
   - Pay process is now delayed of 5sec to fit with AdvExt, passenger system is reworked.
   - Fix Boat entrance/exit to fit with AdvExt. You now instantly stop on the edge of each side (harbor/boat), and can now enter from afar. Ty vladalien.
   - Boat is now correctly set to null while teleporting (soe, gm) and upon leaving boat while boat is still sailing.
   - Store process is stopped upon boat oust.
   - Passenger summon is unsummoned to avoid movement tracking issue. RELEASE_PET_ON_BOAT is called only once, as a first shot warning and Player can onboard freely with summon on.
   
Bugfixes
   - Rework nextActionIsAttack() implementation to avoid one NPE and properly set NEXT intention.
   - SS / BSS animation is now processed as retail. Ty SweeTs.
   - NPCs don't recharge ss/bss anymore if already charged.
   - Chance skills upon casting magic skills is fixed. Ty Sahar.
   - Allow players to use Curse Death Link with CTRL. Ty Zarie.
   - Fully fix fake death behavior, as tested on AdvExt PTS.
      - Heal, buffs, missed attacks and self damage don't trigger the effect end anymore.
      - The begin of a cast/attack don't trigger the effect end anymore.
      - User spam skill/stand action got now a delay (similar to sit and revive).
      - The effect end isn't triggered anymore when being in middle of animation start (it is simply ignored).
   - Revert following part of rev 238 : 'Reflect damage skills type don't kill you anymore (stuck at 1). Well, shouldn't.' as tested on AdvExt PTS.
   - Fix Dark Vortex absorb part %.
   - Gates of Splendors can't be opened anymore using Unlock skill, based on official patch notes. Edit values based on IL patch notes.
   - Revert partially FourSepulchersManager, prior to rev 379. Shadows of Halisha should correctly spawn.
   - Upon //hide, summons are now hidden and STEALTH effect is applied.
   - Fix a missing distance check on Quest#getClanLeaderQuestState (player killer wasn't tested if not clan leader ; now both player and leader must be in good distance of the npc to trigger it).
   - Fix Anakazel duplicates. Ty bowling4soup.
   - Add missing SCHs doors upon Siegable Halls getDoors() in order to make them usable by NPCs (previous system couldn't work properly).
   - Implement CP_CH_USE_FUNCTIONS privilege. Fix missing occurences of CP_CL_VIEW_WAREHOUSE, CP_CH_SET_FUNCTIONS and CP_CH_OPEN_DOOR.
   - Fix naming conventions for both player/pet (alphanumeric 1-16 for both), based on AdvExt PTS.
   - Implementation of Siege Mercenary Gatekeepers. Ty RooT.
   - Fix missing MercenaryManagerNpc checks (upon AdminNpc to show Shop button, and on the regular packet RequestBuylist, making it impossible to buy tickets).
   - Properly cleanup tickets and mercenaries upon //removecastle.   
   - Add missing CHARGE FlyType.
   - Fix Player cast behavior : you can now queue the same skill.
   - Fix an issue with bookmarks. Bookmark name isn't server-scope anymore, but player scope. Ty StinkyMadness.
   
Organization
   - Addition of Point2D, the mother class of Location.
   - SchemeBuffer - Ty StinkyMadness
      - Rework getGroupSkillList, reducing code amount.
      - Add images to fill empty space in "prev - next", in order layout always keeps its shape.
   - Refresh some SQL tables PRIMARY KEY. Ty StinkyMadness.
   - RandomWalkRate is configurable now (default 30%).
   - Addition of //walker admincommand, showing Walker routes.
   - Remove //move_defenders (unused, not implemented).
   - //siege is reworked. It now shows current siege status and a link to siege information packet, for each castle.
   - Addition of following methods :
      - Npc#isLordOwner(Player)
      - WorldObject#setXYZ(WorldObject)
      - Quest#checkClanLeaderCondition(Player, Npc, String, String)
      - Player#hasClanPrivilege(int)
      - SpawnLocation#setHeadingTo(int, int) and variants.
      - WorldObject#knows(WorldObject). Replacement of all getKnownType(class).contains uses for knows. It will lead to big performance hit over any live server.
      - Location#distance(Location) and variants (with int coords, Point2D).
   - Multiple classes now extend appropriate classes and/or are moved to proper packages (RadarMarker, Bookmark, NewbieBuffHolder,...).
   - Store FlyType under enum, to avoid calculation.
   - Add a package named model.zone.type.subtype to store all subtypes zones related classes (aka mother classes, not used directly by XMLs but used by children).
   - Add subtype zone ResidenceZoneType, used by CastleZone and ClanHallZone.
   - Add Spawn(int id) which generate a Spawn with included NpcTemplate check.
   - AdminEditNpc is renamed AdminNpc.
      - Creation of //npcinfo (clone of shift + left click), which split all NPC infos towards categories.
      - Drop //show_minion, //show_scripts and //show_droplist ; they are now added directly into //npcinfo.
      - Edit npcinfo / doorinfo to add clan hall / siegable hall informations.
   - Npc / Door now use NpcTemplate / DoorTemplate variable to feed ClanHall / SiegableHall information instead of getNearestClanHall (avoid 100k+ iterations).
   - Package "container" creation - A container is basically an "extension" of an instance, holding multiple variables affecting one particular system and linked to an instance.
      - Move model.player and model.npc into a new package, model.container.
      - Generate model.container.creature and hold the few related classes into it.
      - Rename CharEffectList to EffectList.

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.
Title: Re: Last aCis updates
Post by: Tryskell on October 17, 2019, 10:41:33 PM
Changeset 385 (1468)

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.


Scripts, CommandChannel edit, Bugfixes, Organization


Scripts
   - Addition of Q336. Ty RooT.
   - Q384 rework.
      - Fix IOOBE. Ty p0w3rf1y.
      - IntIntHolder use for shorter storage, avoid ArraysUtils using String#contains instead.
      - Medals aren't deleted anymore upon abort.
   - Addition of Q386, based on Q384 rework.

CommandChannel edit
   - Addition of BossInfoType enum, holding informations about Command Channel.
   - Move reduceCurrentHp override from Monster to RaidBoss and rework it.
   - The check task is now running every second, timer is reduced from 15m to 5m.
   - Looting rights messages have been added (10sec show).
   - Strategy Guide item (8871 itemId) is used as a side-way to create a Command Channel, and is now only needed/consumed if your clan doesn't own Clan Imperium skill (391 skillId).

Bugfixes
   - Fix TARGET_CORPSE_MOB target types ; you can now use such skills on Guards. Ty Art1s.
   - Fix unarmed mAtk damage.
   - Fix enchanted item buy possibility on Player tradelist. Ty RooT.
   - Fix extractable items inventory limit bug.
   - Fix a NPE over CreatureMove#moveToNextRoutePoint() execution.
   - Fix NPCs vulnerabilities passive skills.
   - Clear variables upon harvest and sweep attempt to avoid exploit attempt.
   
Organization
   - Add following methods :
      - Location#isInRadius(int, int, int) / Point2D#isInRadius(int, int) (and variants)
   - Move 3x3 matrice, used by Q384 / Q386 quests to MathUtil.
   - Add container.monster. Generate OverhitState, SpoilState and SeedState from Monster content.

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.
Title: Re: Last aCis updates
Post by: Tryskell on January 02, 2020, 04: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.
Title: Re: Last aCis updates
Post by: Tryskell on January 07, 2020, 05: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.
Title: Re: Last aCis updates
Post by: Tryskell on January 17, 2020, 08: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.
Title: Re: Last aCis updates
Post by: Tryskell on March 07, 2020, 03: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.
Title: Re: Last aCis updates
Post by: Tryskell on April 18, 2020, 11:27:33 PM
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
   Geoengine
      - 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.
   ABlock
      - 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).
   
Admincommands
   - 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).
   
Skills
   - Implement AURA_CORPSE_MOB SkillTargetType, used by Festive Sweeper.
   - Add missing stats on Zealot. Ty babuin.ua.
   - 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).

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

Organization
   - 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.

Bugfixes
   - 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.
Title: Re: Last aCis updates
Post by: Tryskell on April 30, 2020, 08:56:10 PM
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.
   
MailBBS
   - 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.
   
Geoengine
   - Fix double-layer issue, creature must follow the upper layer.
   
Skills
   - 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.
   
Organization
   - 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.
   
Bugfixes
   - 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.
Title: Re: Last aCis updates
Post by: Tryskell on June 16, 2020, 09:09:14 PM
Changeset 392 (1847)

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


ExServerPrimitive
   - 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 https://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm ).
      - 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.
   
Movement
   - 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.
   
Organization
   - Delete unused configs : INVENTORY_MAXIMUM_QUEST_ITEMS / DEBUG_PATH / LOG_LOGIN_CONTROLLER.
   - 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.
   
Bugfixes
   - 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.
Title: Re: Last aCis updates
Post by: Tryskell on July 11, 2020, 09:16:10 PM
Changeset 393 (1913)

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


L2DatabaseFactory
   - 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.

CreatureStatus
   - 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.
   
tryToX
   - 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.
   
Organization
   - 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.
   
Bugfixes
   - 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.
Title: Re: Last aCis updates
Post by: Tryskell on October 03, 2020, 01:23:13 AM
Changeset 394 (1972)

Scripts, Teleport system, Seven Signs, Organization, Bugfixes


Scripts
   - 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.
   - Delete ALT_GAME_CASTLE_DAWN / ALT_GAME_CASTLE_DUSK configs. Replace it by SEVEN_SIGNS_BYPASS_PREREQUISITES.
   
Organization
   - 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.
   
Bugfixes
   - 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.
Title: Re: Last aCis updates
Post by: Tryskell on October 31, 2020, 11:11:16 PM
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 common.data.
   - NpcMemo and AbstractMemo are deleted.
   - Lazy initialization concept is deleted from PlayerMemo and ServerMemoTable.
   
AggroList
   - 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().
   
Gatekeeper
   - 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.

Bugfixes
   - 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.
   
Organization
   - 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.
Title: Re: Last aCis updates
Post by: Tryskell on November 12, 2020, 03:35:28 PM
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.

Bugfixes
   - 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.
   - Add missing PRIVATE_STORE_NOT_WHILE_CASTING sysMsg.
   - Fix bow>melee>bow cooling down exploit. Ty StinkyMadness.
   - Fix Player rotation over interaction, for both regular and Walkers.
   
Organization
   - 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';
Title: Re: Last aCis updates
Post by: Tryskell on December 10, 2020, 11:14:46 PM
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.
   
Scripts
   - 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.
   
Bugfixes
   - 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.
   
Organization
   - 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 (http://acis.i-live.eu/index.php?topic=1974.0) to download it back.
Title: Re: Last aCis updates
Post by: Tryskell on January 27, 2021, 09:11:17 PM
Changeset 398 (2308)

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


Admin commands - part II
   MovieMaker
      - 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).
   AdminPetition
      - 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.
   
Petition
   - 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).
   
TradeList
   - 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.
   
TargetHandler
   - 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
   MailBBSManager
      - 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.
   FavoriteBBSManager
      - 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).
   Misc
      - 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.

Olympiads
   - 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.
   
Formulas
   - 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%.
   
Bugfixes
   - 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.
   
Organization
   - Add Recovery Scrolls upon //buy "Scrolls" tab. Ty Somename.
   - Implement TeleportMode enum.
Title: Re: Last aCis updates
Post by: Tryskell on June 02, 2021, 07:44:05 PM
Changeset 399 (2353)

Formulas, Scripts, Bugfixes, Organization


Formulas
   - 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.
   
Scripts
   - 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.
   
Bugfixes
   - 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.
   
Organization
   - Implement WeightPenalty, ShieldDefense enums.
   - Implement static approach for ExVariationResult failed result.
   - Few SonarLint cleanup.
   - Delete KARMA_PLAYER_CAN_BE_KILLED_IN_PZ config.
Title: Re: Last aCis updates
Post by: Tryskell on July 01, 2021, 11:05:30 PM
Changeset 400 (2376)

Bugfixes, Organization


Bugfixes
   - 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.
   
   
Organization
   - Added 9 missing NpcStringIds.
   - Extensive use of broadcastNpcShout.
   - Few SonarLint cleanup.
   - Few Clan method renames.
   - Delete ZoneForm#getDistanceToZone concept.
Title: Re: Last aCis updates
Post by: Tryskell on July 28, 2021, 06:30:52 PM
Changeset 401 (2407)

Bugfixes, Organization


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

SpawnManager, Castles / Sieges, Scripts, Bugfixes, Organization


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

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

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

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


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

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

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

Bugfixes
    - Fix TargetAreaCorpseMob / TargetCorpseMob : they now work on any Creature registered into DecayTaskManager (which are, Summons and any NPCs - they don't work on Pet for obvious reasons).
    - Implement Creature#forceDecay. Will work on any instance being registered in DecayTaskManager. Fix servitors force decay.
    - Fix a NPE over Salvation skill over summons. Implement it for pets.
    - Add missing SERVITOR_PASSED_AWAY message.
    - Fix one typo over armorSets. Ty RooT for fix.
    - Add missing client notification during clan dissolution process. Ty RooT for report.
    - Fix chest behavior. Ty Hasha.
    - Revert aggro bonus for Raid related NPCs.
    - Delete MoveTime FloodProtector, generating desync upon click spam.
    - Fix SiegeSummon stackoverflow upon unsummoning it over siege zone. Ty Denzel for report.
   
Organization
    - Add ItemInstance parameter to ISkillHandler#useSkill.
    - Introduce DropType enum.
    - Delete herb specific drop rate configs, merged them under one "RateDropHerbs".
    - Rename "RateDropAdena" to "RateDropCurrency", since it now also affects Seal Stones.
    - Introduce StringUtil#trimAndDress.
Title: Re: Last aCis updates
Post by: Tryskell on November 13, 2021, 04:53:51 PM
Changeset 404 (2601)

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


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

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

Organization
    - Add Creature#isLethalable.
    - Add Quest#createOnePrivateEx (allow to spawn a minion in a exact X/Y/Z).
    - isMaster() now reacts to dynamic getMinions() script feed.
    - Add ASpawn#instantTeleportInMyTerritory with offset parameter.
    - Added //terr test to see random distribution over Territory.
Title: Re: Last aCis updates
Post by: Tryskell on December 08, 2021, 03:58:00 AM
Changeset 405 (2639)

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


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

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

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

Organization
   - Add Pagination#generateSearch. Make a use over //help.
   - Teleport is renamed TeleportLocation.
   - TeleportData#showTeleportList is moved to Npc#showTeleportWindow.
   - ObservationMode / ObservationReturn are renamed ObserverStart / ObserverEnd.
   - Add StatSet#getNpcStringId.
   - Implement Playable#isInSameActiveDuel, isInSameActiveOlympiadMatch, isInSameParty, isInSameCommandChannel, isInSameClan, isInSameAlly, isInSameActiveSiegeSide, isAtWarWith.
Title: Re: Last aCis updates
Post by: Tryskell on August 27, 2022, 08:13:00 PM
Changeset 406 (2670)

Four Sepulchers, SpawnManager, Bugfixes


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

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

Bugfixes
   - Fix skill cast animation being interrupted when attacking with a bow. Ty Sluger for report, Sahar for fix.
   - Fix Siege Summon unsummon upon teleportation.
Title: Re: Last aCis updates
Post by: Tryskell on November 15, 2023, 08:11:49 PM
Changeset 407 (3136)

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


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

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

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

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

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

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

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

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

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

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

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


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

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

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