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

Title: Last aCis updates
Post by: Tryskell on January 04, 2011, 11: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, 11: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, 01:12:04 AM
Changeset 29

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

Faenor & events deletion

Who uses that anyway ? Delete both event engine and Faenor (compiledScript like 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, 02:11:35 AM
Changeset 31

Logs rework

Title: Re: Last aCis updates
Post by: Tryskell on January 07, 2011, 05: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, 08: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, 08: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, 07:06:47 PM
Changeset 36

BaseStats add


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

Zones updates (692 overall)

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

Augmentation packets rework, Max lvl fix

Title: Re: Last aCis updates
Post by: Tryskell on January 26, 2011, 06: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, 08: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, 02: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, 06: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, 05: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, 03: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.

      - 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, 10:49:42 AM
Changeset 48

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

   - 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);
   - 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, 04: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, 09: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.

   - 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.
   - 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).
   - updateClanReputation() method "use" have been moved from removeOwner() ( to endSiege() (
Ty again for support, and long life to aCis ! :)
Title: Re: Last aCis updates
Post by: Tryskell on February 10, 2011, 08: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, 11:54:28 AM
Changeset 52

Organisation & fixes || affects many files again.

   - AutoLearnSkills set to False by default

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

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

   - 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, 07:56:14 PM
Changeset 53

Refactor & fixes.

Title: Re: Last aCis updates
Post by: Tryskell on February 18, 2011, 01: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.


* suppression of AltGameViewNpc?.


* renamed MagicSkillUser? -> MagcSkillUse?.
Title: Re: Last aCis updates
Post by: Tryskell on February 19, 2011, 04: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, 02:40:21 AM
Changeset 56

L2Spawn / SpawnTable? refactor.

I think this is the end of this error:

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


* 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".


* 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, 01: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, 10: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 Burned
   - 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, 03: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, 05:11:08 PM
Changeset 61

Shutdown refactor, PunishLevel?, adminCommands.

Shutdown refactor



Misc :
Title: Re: Last aCis updates
Post by: Tryskell on March 18, 2011, 01: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);

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

- 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;

- 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, 07:14:38 AM
Changeset 63

AdminCommands && L2Party refactors

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

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

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

- 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, 10: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, 10: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, 07: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;

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

    - 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, 10: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, 03: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, 10:17:20 PM
Changeset 72

Multiple refactors, RBPoints manager, and more.

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

- 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, 05:36:34 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.


    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, 08: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 20, 2011, 12:33:25 AM
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, 01: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)

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

   - 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, 11: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, 10: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, 09:11:47 PM
Changeset 88 was a single XML :]


Changeset 89

   Multiple fixes.

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

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

    - 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, 06:45:28 AM
Changeset 90

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


        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, 07: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);


        some cleanings in L2NpcWalkerAI.

Title: Re: Last aCis updates
Post by: Tryskell on April 30, 2011, 08: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 03, 2011, 12:12:00 AM
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, 05: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).

   - 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 :
Title: Re: Last aCis updates
Post by: Tryskell on May 08, 2011, 04:54:56 AM
Changeset 95

    Inventories update, part III

        Warehouses clientpackets updates

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

        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, 08: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, 05:40:28 PM
Changeset 99

4200-4299, ty SweeTs? for initial work.
Title: Re: Last aCis updates
Post by: Tryskell on May 13, 2011, 09: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, 12:08:53 PM
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, in order to make lines less big. Just spaces basically.
Title: Re: Last aCis updates
Post by: Tryskell on May 15, 2011, 03: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.
   - 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, 03:41:14 AM
Changeset 104

Cursed weapons refactor, 1 skill XML

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

   - 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 :
Title: Re: Last aCis updates
Post by: Tryskell on May 19, 2011, 02: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, 12:11:23 PM
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).

- 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, 06: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).


    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 :
If skills XMLs end didn't do it.
Title: Re: Last aCis updates
Post by: Tryskell on May 29, 2011, 02: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.

   - 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...).
   - 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, 06: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
    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, 03:03:30 PM
Changeset 113

DayNightSpawnManager? refactor.
Title: Re: Last aCis updates
Post by: Tryskell on June 07, 2011, 03: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, 11: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 18, 2011, 12:10:14 AM
Changeset 119

AdminCommands refactor.

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

   - cameramode: same as retail //camera, thx to Airin (L2J User contribution)
   - 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
   - save_modifications, part of the "Edit" button panel of the selected character.
   - visible/invisible, deprecated cause of the existence of vis/invis.
   - 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.
   - Cleaned 2 skills. Nothing for you.
   - L2ClanMember typos.
Title: Re: Last aCis updates
Post by: Tryskell on June 18, 2011, 05: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

   - 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, 04: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, 04:59:58 AM
Changeset 126


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

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, 09: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, 05:19:07 AM
Changeset 138

Quests stuff, and misc.

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

   - 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, 04: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, 03: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, 09: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, 02:42:06 PM
Changeset 145

Quests 006, 008, 110.

Changeset 146

Quests, spawn protection, crests packets

   - 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, 11:13:29 PM
Changeset 147

Misc, misc, & misc

   - Q002, ty DarthVader (and the dark side of the force).
   - Corrected pole targets calculation ( 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, 01: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, 04:10:43 PM
Changeset 149

   - 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

   - 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, 10: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
Report if errors.
Title: Re: Last aCis updates
Post by: Tryskell on July 19, 2011, 09: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 :

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, 01:02:40 AM
Changeset 154

Skill fixes && 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").
   - 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, 04: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, 02:52:22 PM
Changeset 159


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;

   - 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, 11:24:00 AM
Changeset 160

   - Magical critic rate is now corrected, and fit with
   - 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)

   - 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, 11: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, 10:34:55 PM
Changeset 163

Quest stuff & misc

Title: Re: Last aCis updates
Post by: Tryskell on July 27, 2011, 11: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, 03: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 :

   - 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.
   - 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).
   - a big rework has been made on 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 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, 03: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, 07: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.

   - 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, 06: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, 08:50:46 PM
Changeset 171

2 XMLizations, typos fixes & Misc.

   - 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).
   - 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, 07:36:23 PM
Changeset 172

XMLs, XMLs, XMLs... And misc !

   - 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.
   - addition of 2 quests, Q032/259. Ty fernandopm && Richijs4 !
Title: Re: Last aCis updates
Post by: Tryskell on August 05, 2011, 11:02:58 PM
Changeset 173

Enchant, reuseDelay for items, Skills / Items fixes

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

   - 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.
   - 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, 09: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).
   - addition of Q015, Q031 && Q121. Ty to contributors !
   - 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, 02:38:23 PM
Changeset 175


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, 09: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.
   - 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, 03: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.
   - 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, 07: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).
   - 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, 06:55:23 PM
Changeset 179

npc_ai_data, and some misc

- 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%).

- 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, 05: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.

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

- 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, 08: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).
   - 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, 08: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.
   - 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, 01: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.
   - 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, 07: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 04, 2011, 12:32:05 AM
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, 05: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, 05: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 :
   - addition of Q158, Q159 && Q160. Ty fernandopm, as always :).
   - 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, 06: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.

   - 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, 03: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.

   - 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).
   - 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, 09:01:28 PM
Changeset 200

Three new quests, ty Fernandopm.

Changeset 201

Doormen, misc

   - 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.
   - 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, 12:56:47 PM
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.

   - 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.
   - 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 29, 2011, 12:07:59 AM
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%).

   - addition of Q038, Q039, and Q263. Ty Fernandopm.
   - 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, 08:18:55 PM
Changeset 204

Quests, misc

   - addition of Q294, Q403, Q406 && Q508 (ty fernandopm and Alexa).
   - little corrections on Q401 && Q509.
   - 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, 08: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).
   - 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, 02: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).
   - 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, 09: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.

   - 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, 11: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, 02: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.


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

3 quests, Tutorial core side.

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

   - 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, 08: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


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.


- 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 02, 2011, 12:38:17 AM
Changeset 216

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

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


   - 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, 09: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, 09: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).
   - 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, 11:39:05 PM
Changeset 219


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

   - 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.
   - 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.
   - 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.
   - 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, 05: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.
   - 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, 04:19:25 AM
Changeset 221


- 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, 10: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, 02:06:03 AM
Changeset 223

Addition of 7 quests - ty to sharers.

Changeset 224

isMagic / staticReuse, typos.

Changeset 225

Raid bosses minions update.

Ty to 100500 for his detailed work.
Title: Re: Last aCis updates
Post by: Tryskell on February 06, 2012, 06:14:59 AM
Changeset 226

Quests and minor fixes - ty to the numerous contributors.

   - addition of Q298, Q317, Q368, Q370 && Q432;
   - fix a couple of existing quests (correct solo => party quest statut, and deletion of useless checks).
   - 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, 11:52:50 AM
Changeset 227

Addition of 8 quests, ty to all sharers.

   - Q124, Q299, Q300, Q328, Q352, Q353, Q355 && Q366.
   - 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, 11: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.
   - 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).
   - 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, 02: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, 07:50:41 PM
Changeset 230

Numerous cleanups on clientpackets, misc

   - 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.
   - 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 17, 2012, 12:38:26 AM
Changeset 231

Quests, misc

   - Addition of Q023, Q364 && Q378.
   - Fix 2 issues in Q021.
   - 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, 09: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, 07:14:22 AM
Changeset 233

AQ, commands and misc

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

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

   - 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, 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, 05:12:53 PM
Changeset 234


   - 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 27, 2012, 12:21:38 AM
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.
   - 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 03, 2012, 12:37:28 AM
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 (=> ( 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, 10: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).
   - 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, 09: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.
   - /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, 03: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.

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

   - 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, 06: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, 05: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, 09: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, 02: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, 09: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.

   - 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 29, 2012, 12:11:22 AM
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).
   - addition of Q632 && Q642, ty Hasha && EnDmOsT.

   - 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, 09: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)

   - 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.
   - 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, 12:22:52 PM
Changeset 247


   - 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, 01:35:11 AM
Changeset 248


   - 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, 06: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.

   - 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, 06: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, 08:00:57 PM
Changeset 251


   - 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, 05: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, 07: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 : ( (=> 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 : (

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, 08: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 : (
   - 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.

   - 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.
   - 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, 08: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.
   - 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, 02: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).
   - 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...
Title: Re: Last aCis updates
Post by: Tryskell on August 07, 2012, 03: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.
   - 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, 01: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 !
   - 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, 09: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.
   - 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 17, 2012, 12:51:07 AM
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.
   - 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 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, 02: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).

   - 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, 06:53:22 PM
Changeset 264


   - 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, 06:32:41 PM
Changeset 265


   - 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

   - 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.
   - 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 28, 2012, 12:15:25 AM
Changeset 267

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

Hasha quest engine cleanup.

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

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

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

   - 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';


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, 04:06:56 AM
Changeset 269

Quests, misc

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

   - 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, 01:24:02 PM
Changeset 270

Quests (Sailren questline), misc

   - 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.
   - 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, 04:25:01 AM
Changeset 271

Quests, Javolution, misc

   - addition of Q111, Q359 && Q633.
   - addition of the missing HTM for Kirikachin.
   - revert positions of 2 multisell entries for Q633.
   - 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)".

   - 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, 08: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).
   - 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).
   - 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 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, 09:15:30 PM
Changeset 273


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

   - 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.
   - 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, 09: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.

   - 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).
   - 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).
   - _castTarget and _attackTarget are dropped. All is uniformed around getTarget().

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

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

   - 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, 11: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.
   - 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, 08:49:27 PM
Changeset 276

Quests, misc

   - addition of Q047, Q048, Q324, Q372, Q426. Ty to sharers.
   - "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, 02:18:22 AM
Changeset 277

Quests, Misc

   - addition of Q101, Q102, Q103, Q119, Q265, Q654. Ty sharers :3.
   - Echoes crystals aren't a Newbie reward (Q104 / Q105).
   - 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).

   - 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, 04:58:47 AM
Changeset 278

Quests, AutoChatHandler, Misc

   - addition of Q106, Q107, Q108, Q274, Q306. Ty sharers. Again.
   - unify checks about races on quests HTMs.
   - 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).
   - 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, 04:00:15 AM
Changeset 279

Quests, Misc

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

   - 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.
   - 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, 03:39:31 PM
Changeset 280


   - 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.
   - 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 ?
   - 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, 10:33:15 PM
Changeset 282

Quests, misc

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

   - add a layer called ExProperties, improving readability/creation of
   - 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, 06:22:15 PM
Changeset 283

Quests, misc

   - 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.
   - 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, 06:18:30 AM
Changeset 284

Quests, misc

Quests - 320 scripts overall ;p
   - addition of Q363, Q415 && Q418 (tested 2/6 ends). Ty sharers.
   - 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, 06: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 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, 07:02:14 AM
Changeset 286

NPCs template refactor part II, Recipes, misc

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

   - 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,...)

   - 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, 11:03:28 AM
Changeset 287

NPCs, AIs, misc

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

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

   - 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 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, 09: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

   - "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 : (
   - Addition of PlainsOfDion script.
   - 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).
   - _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, 09:43:35 PM
Changeset 289

Antharas, GBs / RBs, misc

   - 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).
   - 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, 01:38:12 PM
Changeset 290

Summons, misc

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

   - 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, 02:54:39 AM
Changeset 291

AIs, misc

   - 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.
   - 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, 11:55:48 PM
Changeset 292


   - [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.
   - 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, 06:52:59 AM
Changeset 293


   - 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, 10:55:46 PM
Changeset 294

Scripts, Misc

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

   - 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, 06: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...).

   - 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, 04:54:32 PM
Changeset 296

Antharas, RBs timers, Misc

   - 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.
   - 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, 04:43:41 PM
Changeset 297

Quests, Misc

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

   - 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, 11:25:49 PM
Changeset 298

Quests, Misc

   - 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 is reworked ; drop iterators, drop _knownPlayers and _knownRelation maps.
   - cleanup KnownListUpdateTaskManager (drop _failedRegions, merge cases), ty xblx.
   - 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, 04:26:48 PM
Changeset 299

Quests/AI, Knownlists, Misc

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

   - 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.
   - fix a typo in getClosestTownName() method (S*c*huttgart).
Title: Re: Last aCis updates
Post by: Tryskell on April 08, 2013, 08:55:17 PM
Changeset 300

Scripts, Misc

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

   - 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, 09: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.

   - cleanup numerous quests (notably Q163, Q166, Q171, Q294, Q296).
   - 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, 10:42:17 PM
Changeset 302

Quests, Misc

   - addition of Q212, Q365, Q383

   - 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, 07:19:48 PM
Changeset 303

Headquarters, Four sepulchers, Misc

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

   - [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, 02:04:45 PM
Changeset 304

Karma, Misc

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

   - 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, 04:01:59 PM
Changeset 305

Skills, Misc

   - 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 script.
      - ONLY regular/deluxe keys for treasure chests are debugged. Others (pagan keys ?) would eventually be fixed when I will know their uses.

   - 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.
   - missing SAs / dual passive skills drop/add on refreshExpertisePenalty().
Title: Re: Last aCis updates
Post by: Tryskell on July 17, 2013, 06:04:33 PM
Changeset 306

Quests, MapRegionTable, Misc (known in future generations as "Hasha commit" or "fuck you Bingo 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.
   - 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, 01:56:16 AM
Changeset 307

Quests, Misc

   - addition of Q215, Q216, Q217 (ty Erlandys * 3)
   - fix //reload for quests ; ty Hasha
   - 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, 11:50:00 AM
Changeset 308

Quests, Spawnlist, Misc.

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

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

   - 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 09, 2013, 12:05:30 AM
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.

   - 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, 02:15:12 PM
Changeset 310

Quests, Misc.

   - cleanup quests up to q250. Fix also few bugs/typos/logic on existing quests.
   - addition of Q214, Q219, Q231.
   - 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, 06: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.
   - 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 : (
   - Cleanup onKillUpdatePvPKarma( and associated methods.
   - Cleanup quests up to Q270.
Title: Re: Last aCis updates
Post by: Tryskell on September 28, 2013, 09:57:19 PM
Changeset 312

Quests, Community Board, Misc

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

   - 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. (
Title: Re: Last aCis updates
Post by: Tryskell on October 13, 2013, 04:44:24 PM
Changeset 313

Quests, Spawnlist, Sieges (part I), Misc

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

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

   - SiegeManager
      - Drop the map storing artefacts and associated config (unused).
      - Use 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.").
   - 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, 04: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).
   - 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).
   - 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 (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, 07:11:32 PM
Changeset 315

Quests, Misc

   - 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) &&..."
   - 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, 08:31:15 PM
Changeset 316

Quests, Misc

   - 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.
   - 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, 03:48:10 PM
Changeset 317

Quests, Misc

   - 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.
   - 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, 11:43:32 PM
Changeset 318

Quests, Skills, Misc

   - addition of Q225, ty to sharer.

   - 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.
   - 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.
   - 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, 10: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.
   - 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, 07:17:58 PM
Changeset 320

Sieges, MDT (Part I), Misc

   - 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).
   - 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, 10: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 (
   - 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).

   - 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, 07: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>

   - 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, 08:12:33 PM
Changeset 323


   - 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, 03: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 (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).
   - [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. (
Title: Re: Last aCis updates
Post by: Tryskell on April 13, 2014, 04:11:20 PM
Changeset 325


   - 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, 07: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.

   - 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.
   - 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, 10:06:26 PM
Changeset 327

GrandBossManager, Misc

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

   - 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, 04: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).

   - 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, 03: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).

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

   - 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, 01:31:18 PM
Changeset 330

Quests, Misc

   - addition of Q230, Q233, Q327 - ty to sharers.
   - addition of victory pose on quests completion in few quests. Ty roko91 for the list.
   - 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, 09: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.
   - 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, 01:54:26 PM
Changeset 332

Quests, Party, Misc

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

   - Fix a ConcurrentException on L2Party.
   - Add disband and expel messages.
   - Add AltLeavePartyLeader config to edit the way the party lead change is processed.
   - Revert rev 313 bow change, cleanup calculateTimeBetweenAttacks().
   - Cleanup, 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, 01:28:30 PM
Changeset 333

GameTimeController, Misc

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

   - 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, 08: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 !

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

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

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

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

   - 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.
   - 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.
   - 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, 07:33:49 PM
Changeset 335

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

   - 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 ?!).
   - 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.

   - 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.
   - 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, 09:30:55 PM
Changeset 336

Stats cleanup, Misc

Stats cleanup
   - Cleanup few useless calcStat. It will save objects and calculation times.
   - Rework the way SA Cheap Shot is handled. Deletion of ConditionWithSkill.
   - 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 31, 2014, 12:36:58 AM
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.
   - 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
      - 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, 02:36:42 AM
Changeset 338

Tasks Managers - by Hasha

   - 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.
   - Use of Map.Entry instead of keySet() / get(), leading to an performance boost on all existing tasks.

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

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

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

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

   - 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

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

   - Redesigned abstract Task class.
Title: Re: Last aCis updates
Post by: Tryskell on January 19, 2015, 10: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.
   - 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, 08:01:33 AM
Changeset 340

Caches, Announcements, Misc

   - Filters are moved back into classes.
      - 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.
   - Little reorganization on
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, 09: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.

   - 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".
   - addition of SecondClassChange script. I can't test all cases and HTMs, so please report any issue on forums.
   - addition of Q662. Ty RooT.
   - 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, 11:45:04 AM
Changeset 342

FloodProtectors, Scripts, Misc

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

   - addition of Q224, Q228, Q663. Ty to roko91 and RooT.
   - 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, 07:03:25 PM
Changeset 343

Scripts, Inventories, Misc

   - Addition of Q220, Q226. Ty roko91.

   - Drop the unused "block" system on PcInventory.
   - Drop the "quests slots" system on PcInventory. Easier slots check.
   - 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, 01: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.
      - Fix a ConcurrentException on DuelManager (couldn't handle simultaneous Duel creations).
      - Duel id is correctly calculated (it was probably very, very sad before).
      - 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.
      - 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.
   - Rework PartyMatchList, ExListPartyMatchingWaitingRoom serverpackets.

Title: Re: Last aCis updates
Post by: Tryskell on April 15, 2015, 09: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).

   - 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".
   - 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, 06:19:13 PM
Changeset 346 (rev 352)

Commons, Holders, Misc

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

   - 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.
   - 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 (
Title: Re: Last aCis updates
Post by: Tryskell on May 17, 2015, 04:22:28 PM
Changeset 347 (366)

Tradelist, AI, Misc

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

   - 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().
   - 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, 03: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.

   - 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()).

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

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

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, 09:30:36 PM
Changeset 349 (389)

Scripts, RandomAnimationTaskManager, L2Attackable, Misc

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

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

   - 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, 02:58:35 AM
Changeset 350 (401)

ArmorSets, Memo system, Misc

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

   - 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, 03: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).
   - 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, 03:16:44 AM
Changeset 352 (427)

Quests, Movement, Cleanup, Misc

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

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

      - 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.
      - Improvement of Location && SpawnLocation classes. The idea is to refresh the object instead of creating a new one.

   - 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, 08:53:53 PM
Changeset 353 (444)

Pets, Misc

   - 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).
   - 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, 06: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.
      - 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

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

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

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

   - 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, 03: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 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.
   - 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.
   - 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, 01:16:22 PM
Changeset 356 (494)

L2Attackable, Packets stuff, MultisellData, Misc

   - 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.
   - 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.
   - 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, 02:16:23 PM
Changeset 357 (515)

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

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

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

   - 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 31, 2016, 12:04:43 AM
Changeset 358 (525)

AIs, L2Attackable, Quests, Misc

   - 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.
   - 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.
   - 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, 02: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.

   - handle login attempts in a more consistant way (concurrent map, working concept).
   - basic cleanup, from using JDK8 goodies to formatting rules.
   - 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.
   - 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, 04:02:02 AM
Changeset 360 (553)

Commons, ThreadPool rework, CharNameTable rework, Misc

   - 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

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

   - 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 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, 01: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.
   - 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, 09: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 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.
   - 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, 01:54:50 AM
Changeset 363 (617)

Benom, Castles, Castle Manor, Event listeners, Sieges, Seven Signs, Inventories, Misc

   - Addition of Benom script.

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

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

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

   - 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, 08: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).   
   - 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.

Title: Re: Last aCis updates
Post by: Tryskell on January 10, 2017, 12:05:23 AM
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
      - 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.
   - 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.

   - 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, 08:01:45 PM
Changeset 366 (664)

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

   - 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 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).
   - 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, 01: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.

   - 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, 10: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 (weren't existing on .properties, not used by 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).

   - 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).
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 is now moved on (best location). ai.model is renamed ai.type (because was redundant).
   - Templates, Stat && Status models are renamed to fit with new naming convention.

Logging rework
   - log.cfg is renamed
   - 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.
   - Merge math methods from Util with MathUtil. Delete Util.
   - banned_ip.cfg is renamed
   - FloodProtectors class is moved from gameserver.util to
   - 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, 08: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.
   - 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, 05: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.
   - 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, 04:16:34 PM
Changeset 371 (821)

Datatype reorganization, Skill stuff, Misc

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

Skill stuff
   - Drop getSkillLearningClassId / setSkillLearningClassId concept.
   - Drop _expertiseIndex. It is now directly calculated from skill 239 level, and can be found using getSkillLevel().
   - Rework subclass skills addition. We only storeSkill the final List, leading to a massive drop of mid-operations. Ty vladalien for the initial workbench.
   - Cleanup removeSkill() / storeSkill().
   - autoGet skills are handled by PlayerTemplate data (skills with getSpCost == 0), the stuff isn't hardcoded anymore.
   - getSkillLevel returns 0 instead of -1 if no skill is found, making checks easier to write.
   - hasSkill is used instead of getSkillLevel when skill existence is needed, but we don't specifically need the level.
   - Skill enchantable routes now handle level 79 and 80. Each route can be manually edited.
   - Fix a visual issue about shortcut refresh on failed enchant skill.
   - Drop RATE_CONSUMABLE_COST && ALT_GAME_SHIELD_BLOCKS configs. Rename some 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, 05:05:14 PM
Changeset 372 (846)

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

Datatype organization
      - Moved to data.manager, we use IdFactory to get a fresh id, Javadoc.
      - 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.
      - 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.
   - 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.

   - 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.
   - 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, 08:35:34 PM
Changeset 373(887)

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

Datatype organization
      - Moved to data.manager, javadoc.
      - Moved to data.manager, extends XMLDocument.
      - 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.
      - Move gameserver.cache to
      - 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).
   - 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).
   - 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).
   - Drop min/max protocol version.
   - Drop few unused loginserver configs.
   - Drop crown/circlet config (see Misc section for explanation).

   - 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).
   - 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, 07:00:42 AM
Changeset 374 (920)
Datatype organization, Geoengine, Clan, Zones, TaskManagers, Misc

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

Geoengine (was supposed to be part of next revision, but the removeInvalidSkills() hotfix made me commit it)
   - Merge GeoEngine and GeoEnginePathFinding, use CLogger, edit _debugItems CopyOnWriteArrayList for ConcurrentHashMap.newKeySet().
   - Delete PathFinding config.
   - 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).

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

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

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