aCis


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

Recent Posts

91
Crappy servers / Re: L2 Perseus Starts Tomorrow!!
« Last post by nighty on May 25, 2016, 06:41:41 AM »
Updated core on latest revision.
Fixed some issues about summons.
Improved stability on critical errors ( less errors).
Added Triumph weapon set (same stats as Dynasty weapons)
Fixed Dress Me Weapons multisell.
Changed price of Dress me weapons, Bsoe, Lifestones.
Mid and Top Lifestones are now added for Vote coins.
Removed Olympiad weapons from "Dress Me" weapons.

Classes:
Lowered Titan p.atk by 10%.
Increased Blade Dancer p.atk by 10% and atk spd by 5%.
Lowered SpellHowler m.atk by 10%.
Lowered Spectral Master m.atk by 10%.
Lowered Hammer Crush, Stunning Fist time from 9 seconds to 6 seconds.

Olympiad:
Lowered Duelist c.atk and damage of skills.
Lowered mana of Bishops.
Increased mana of Dwarf classes and power of skills.
Decreased Warcryer p.atk with big sword/ big blunt weapons.
92
Announcements / Re: Last aCis updates
« Last 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 model.actor.knownlist package && KnownListUpdateTaskManager class dissapear.
   - Broadcast.toSelfAndKnownPlayersInRadiusSq method is dropped, as we are standardizing "distance" system.
   - Heavy rework of spawnMe, spawnMe(x, y, z), decayMe to avoid multiple setRegion calls (before : 2 for every L2Object, 3 for summons !). Avoid multiple addKnownObject() calls (bow use, setTarget) aswell.
   - setXYZInvisible(Location) has been added. Uses are tweaked (when spawning you don't need to setRegion(null), so we only update position).
   - PcTemplate holds player spawn under a Location.
   - EVT_FORGET_OBJECT event is dropped (no use, probably not launched at all).
   - WorldRegion setActive is processed instantly by setRegion method.
   - Fix : guards don't go IDLE if aggrolist is cleaned up, breaking aggro system.
   - Rework knownlist admincommand (includes a page system, as known objects number is way bigger than before).
   
PS :
   - To get knownlist, simply use object.getKnownType or object.getKnownTypeInRadius (all objects on the 9 surrouding areas = object.getKnownType(L2Object.class))
   - Computed knownlist don't show yourself. It shows any type of status : dead, visible, etc. You have to add your own conditions.
   - Always try to choose the HIGHEST instance type (ex: L2PcInstance for players, and not L2Object) to restrain list objects to a maximum. In addition, you won't need any cast.
   - IDLE state for NPCs should be achieved only if no players are left on region. It means the AI is detached from NPC.
   
Multiple pets fixes
   - Pet inventory isn't restored anymore (as pets inventory is transfered on inventory deletion to owner's inventory, the whole thing is useless).
   - On pet dismiss (or player restart), if the player does not have room in their inventory, these items will drop to the ground.
   - Pets cannot pick up arrows, Soulshots, Spiritshots, Blessed Spiritshots.
   - Cleanup L2PetInstance.validateWeight().
   - Refresh correctly pets inventory weight gauge.
   - Numerous cleanup :
      - don't send twice setShowSummonAnimation() info (inherited from L2Summon, no need to call on children)
      - Merge L2PetInstance.spawnPet() with its single usage.
      - Move setLevel from Pet initialization to restore(), which avoids double call.
      - Don't feed _petData on Pet initialization, as info would be wrong anyway. It's already handled by setLevel().
      - Don't set twice item enchant level (was called by setLevel() and SummonItems).
      - Avoid one call of PetItemList / broadcast status.
      
Misc
   - Wedding mod HTMs are moved in their own "mods" folder.

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

PPPS : I thank "monkeys team" for the good job on reporting behavior. You're invited to drop what I sent you and apply this changeset (you normally have a problem with pets summoning, fixed with this changeset).
93
Crappy servers / Re: L2 Perseus Starts Tomorrow!!
« Last post by nighty on May 19, 2016, 09:45:52 AM »
Fixed vote buff reward.
Fixed Dynasty weapon stats while they get Special abbility.
Fixed dynasty weapons multisell.
Fixed clan hall prices.
Fixed Hecarim respawn time.
Increased scheme buffer slots to 42.
Added more monsters on Dvc spot 1.
Lowered archer c.atk with 10%.
Increased mage classes m.atk with 10%.
Increased tankers bow resist by 10%.
Increased tankers c.atk by 5%.
Upgraded server core to latest rev (include many fixes).

Next:
Achievement system reward will be fixed.
More maps added on Event engine.
New items.
94
Announcements / Searching for a new laboratory monkey (test server)
« Last post by Tryskell on May 15, 2016, 08:27:55 PM »
As Sahar moved to another chronicle for his next L2OvC season, I'm forced to search a new test server.

Test servers got access to experimental codes and got priority about fixes. You also don't have to wait for the public release of the revision to get fixes. Sahar cooperation ended with something like 40-50 issues fixed.

The statut is accessible to (all criterias must match):
  • any "old" Customer (20€+ spent), or a Customer with a decent reputation on MxC / L2J world in general (so, I don't want proxies users russians coming from nowhere).
  • decent at english (which don't use translator for every single sentence...)
  • a reactive people, which can care about his server (maybe not on a daily base, but at least every 2-3 days), which uses Skype notably for logs reports.
  • someone who is semi-experimented (can apply/revert code without I babysit him) and know a minimum aCis organization.
  • which own a server sticked to LATEST revision (and which stay sticked to LATEST), with a decent server activity (50+ minimum, 100+ would be a good thing to get faster reports).

Benefits :
  • A cool forum reward (animated dancing monkey). Just for that, you want to help, isn't it ?
  • Promoted to Inner Circle if cooperation is successful after few weeks (no need to pay).
  • Fast access to critical fixes (no need to wait next public revision).
  • Get experimental fixes, so your server is the coolest server of the world.
  • Support the project on a unique way.

That's all, monkeys.

 :happyforever:
95
Crappy servers / Re: L2 Perseus Starts Tomorrow!!
« Last post by nighty on May 15, 2016, 03:37:25 AM »
Opening today at 19:00 gmt+2
96
Announcements / Re: Last aCis updates
« Last 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.
   
Misc
   - Fix a minor typo on 2 packets, ty svipben for report.
   - Mimyu teleport behavior. Ty RooT for share, Sikken for report.
   - Fix SE 2nd class transfer. Ty emanueld for the fix.
   - Lower Loginserver RAM allocation (to 32m), as it doesn't need that much (could even work with 12m with spikes at 9m).
   - SetupGauge packet now uses an Enum to enforce color types.
   - Water task is cleaned up. Drop _isInWater boolean, and "unique-use" methods.
   - Heal participants' CP/HP/MP on Olympiad battle start. Ty sahar for report.
   - Workaround fix for returnHome method (killed stunned mobs = clean aggrolist).
   - Move Die packet call on Enterworld to avoid buffs visual issue. Ty SweeTs/svipben.
   
PS : skills cleanup got nothing related to skills rework. Those are only fixes to wait for a bigger rework, which will come in few months.
97
Crappy servers / Re: L2 Perseus Started 13 march!
« Last post by nighty on March 24, 2016, 05:32:38 AM »
Added Costumes.
Added Level 2 and Level 3 Hats in Misc shop.
Added Donate Shop.

Fixed freeze issue caused by weapons. Please to avoid visual bugs on custom weapons, unnequip the weapon before you put another on you.
Reworked some classes in Olympiad:
Dagger got lowered in olympiad.
Bladedancer got lower power on skills.
Duelist got lower power on skills.
Modified Misc Shop npc.
Added new farm zone with special drop (Dvc 1 and 2).


98
Crappy servers / Re: L2 Perseus Started 13 march!
« Last post by nighty on March 17, 2016, 09:09:36 AM »
-=====L2Perseus Update======-

Added Dressme system.
You have to use .dressme command, so the game will set your appearance to your current items.
Added C,B,A,S grade items to Armor Shop and Weapon shop for dress. (They don't have more stats than custom items)
Type .undress to take off your saved appearance.

Removed .stats command because many players reported it.
Decreased Hell knight c.atk by 20%
Decreased Anchor and Curse Fear by 3%
Fixed Password Npc.
Lowered Raidboss Respawns with 1 hour(from all of them)
All Raids got respawn time of 2 hours.

Soon:
Special costumes and Hats will be added on shop.
Gold coins will be useful to purchase them :)

www.l2perseus.com
99
Crappy servers / Re: L2 Perseus Last Season -> 12 March!
« Last post by nighty on March 14, 2016, 04:54:35 PM »
Added Fashion shop. You can change your appearance + name and tittle color.
Blessed coins: If they fail they go back to +10. If the item is under +10, it will go to +5.
If you hit Divine Retributer (monster from hard zone) you get flag.
Augmented weapons can be traded. You get a message about the augment.

Updated first post with actual informations.
100
Announcements / Re: Latest free sources
« Last post by SweeTs on March 09, 2016, 07:05:31 PM »
350 rev is out. The fattest commit in (aCis) history.

9969 files added, 37 removed and 449 edited  :happyforever: