Jump to content

Recommended Posts

Posted

At least, technologies I don't want to use.

That's more like it. Python and Jython aren't smth you can just mock. I could go on and on mocking l2j's compiler, cus its retarded. ^^

Also, you're not a real programmer if you dont know scripting languages like python, just saying.

  • 3 weeks later...
Posted
Changeset 274

 

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

 

It is not yet the paradise, but I tried to cut the complexity, reuse existing stuff, and prepare AI data for future templates rework.

I still search ideas for new AI system (using inheritance, either for AI type and/or template type).

 

General AI behaviors changes

- checks concerning friendly/enemy clans verify confusion state (in case of enemy clan, it replaces).

- mages/priests AI handle following cases from now :

- will always launch skills.

- in case they're muted, they 100% flee.

- in case they're rooted, and can't launch skills (oom/muted), they will attack the nearest (if not possible to attack the current target) target using melee.

- switch automatically from high to short range skills if you approach (priority to short range, as retail), and vice-versa.

- mobs won't (re)buff if they're already buffed when you initiate a fight (as they can buff themselves random-walking).

- drop of the random forget time.

 

Mobs ARE SUPPOSED TO act as following :

- target checks :

- mob hasn't target/got dead target/got timeout ; replace target in case mob is aggro type and continue execution or break the whole processus.

- mob is chaosTime type, switch target if possible.

- mob successes to launch a skill (10% default, 100% for healer/mages AIs) :

- mob suicide below 15% HPs.

- mob heal allies who got the lowest HPs amount (activation at 75% HPs, priority to healer && mages AI).

- mob use a random spell - debuff (10%) - otherwise, by priority : short range && long range skills.

- mob is immobilized : if physical range is ok, attack, if not, pickup the nearest target and attack it.

- mob flee from player melee range if it is a mage/healer/archer AI.

- mob approaches the player if out of physical range.

- mob physically attacks the player.

 

L2SiegeGuardAI

- reorganized entirely the file, inheritating from L2AttackableAI.

- correct an issue introduced 10~ revs ago, where siege guards weren't attacking at all.

- drop TargetAnalysis && SelfAnalysis (was creating a huge amount of pointless lists for every siege guard).

 

L2NpcTemplate

- drop 13/19 skills lists and associated getters (here are the survivors : long range, short range, heal, buff, debuff, and suicide.

- addSkill() method avoid to use "add" getters, allowing to drop them all.

- drop of FIGHTER and BALANCED AITypes. Those 2 AIs are now refered as DEFAULT (as basically FIGHTER types got and will use skills).

 

AbstractAI

- _castTarget and _attackTarget are dropped. All is uniformed around getTarget().

 

L2AttackableAI

- drop of _lastBuffTick.

- reorganized entirely the file, and rework many methods.

- avoid to generate internal skills lists for AIs. It uses templates skills arrays.

- the attack timeout is back to 30s, rather than 2min (/4). It now handles differently aggro mobs from passive mobs. Passive mobs will stop to attack if you don't attack them, when aggro mobs will continue to follow you until you're out of their "aggro range * 2".

 

L2NpcAIData

- drop many variables with their getters/setters/uses, in prevision of future NPC templates rework. The list concerns :

- _primaryAttack

- _minSkillChance

- _maxSkillChance

- _isChaos

- _longRangeSkill

- _shortRangeSkill

- _longRangeChance

- _shortRangeChance

- _switchRangeChance

- _enemyClan

- _enemyRange

- SQL is not cleaned cause it will soon disappear. As the useless data isn't loaded, it's not a problem.

- drop of %ai_enemy_clan% in shift+click panel on NPCs.

 

NpcWalkers (L2NpcWalkerInstance, L2NpcWalkerAI)

- L2NpcWalkerInstance internal broadcastChat() -> L2Npc broadcastNpcSay().

- avoid multiple .get() operations updating a single L2NpcWalkerNode when the NPC goes to it (as we have, anyway, to retrieve the node, better make it automatically).

- drop _homeX, _homeY, _homeZ variables + getters/setters and uses on onSpawn() - unused.

- _walkingToNextPoint getters/setters are dropped - unused.

 

Pet inventory

- fix a concurrent issue, ty Hasha.

- fix the inventory update when you transfer non stackable items.

- add player && pet inventory weight refresh. Pet can now be overweight (was working before, but only in few circumstances).

- items are cleaned from pet inventory list / from the world even if the owner doesn't exist.

- checkItemManipulation for pet inventory (make checks on count). The string parameter is dropped for both inventory types. The count check is made on < 1, not on < 0 anymore.

 

Fear effects

- glitch is fixed, ty xblx.

- slight edit in order if you trigger startFear() it works in any case, and avoid pointless actions triggered by onActionTime().

- remove the visual effect when effect ends.

 

Misc

- modifier for L2Attackable concerning cast break has been removed. I still believe it should be reworked for monsters (75% or 50% of the final value ?).

- drop of Rnd.nextInt(int) method, which was calling Rnd.get(int) method.

- fix a ConcurrentException on CellPathFinding geodata module.

- fix lethal strikes messages. calcLethalHit() method doesn't return a boolean anymore (no use).

- fix a couple of skills values (lethal2 100% chance issue && few cancel resist/vuln chances setted to 40 instead of 30).

- drop of mAtkRange Stats. The only factor which entered in that Stats calculation was skillRange, so I simplified it.

- fix gameserver shutdown issue (ty Kenrix for reminder). I don't use L2J forum / Silentium fix.

- fix RequestHennaEquip adena amount message (cleaner method used than Silentium).

- fix a minor issue on /unstuck command - missing isSitting() check (ty Silentium).

- fix jail issue (teleport you forever in jail if you're //recall by a GM). Ty xblx.

- [L2J 5684] hitTime lower than 500 are taken in consideration, _castInterruptTime takes in consideration the skill coolTime.

- cleanup of all getKnownXXX() / getKnownXXXInRadius() methods, replacing them by 2 using generic types (fuck yeah).

- drop few clone checks concerning isRunning() - as setRunning() internally checks it.

- fix FriendList packet, ty Root for report.

 

N.B :

Between 10mo to 15mo RAM are saved.

The think cycle is actually used more than once per second (called by itself on attack ?). This is the main issue about packet flood when numerous enemies follow you, and will end by a huge performance boost once corrected.

I search a mean to fix pet inventory weight number. Atm it only updates while overweight penalty is called. I dunno why.

 

Things to fix in AI part II:

- null crap on HitTask / callSkill.

- flee behavior if you're too near (mob stops to attack).

- siege NPCs mage weird movement.

- find a solution about mage with low/no mana, in order to avoid those weird movement.

Posted

And this is smthg which we can call 'a big commit'.

Yup, it was an 8k+ lines commit. When it was equivalent to (legendary now :D) skills rework, the big change is, this time, I selfcoded all.

 

Anyway, next rev is out !

 

Changeset 275

 

Enchant system, Quest system, Misc

 

Enchant system

- [L2J Silentium 145] add skill refresh when you enchant an equiped dual (to +4) or armor (to +6, if other parts of set are already +6).

- don't unequip item (it was visible if you failed a blessed enchant).

- avoid to refresh weight in case of a success or a blessed fail.

 

Quest system (Hasha)

-  fix exclamation mark for NPCs with one-time quests.

-  npc will now show correctly the "quest completed" message, when quest is completed.

 

Misc

- cleanup pathnodes loading.

- delete _isSpoil + setter/getter (can be retrieved with another variable). Cleanup spoil skillhandler && effect.

- cleanup 20+ generated TODO and content of those files (conditions mostly).

- fix an issue where 2 items rewarding the same skill drops the skill once you unequip one of those items. Addition of getPaperdollItems() method. Ty xblx.

- fix alliance creation/dissolution and clan dissolution if you're registered/participing in a siege. Ty Hasha. PS : it also avoids one connection with DB.

- cleanup xp/sp methods to reuse existing stuff. Ty Hasha.

- EffectStunSelf correctly stuns effector, not effected. Ty xblx for report.

- FriendList packet edited (again). Ty xblx.

- fix the last potential NPE (according Eclipse).

- fix a crappy NPE introduced in previous rev (see last comments on previous rev). Ty xblx.

- drop or edit few "_log.log(Level.WARNING, "", e);", as they send blank debug message. I only bothered about the most common.

- AdminPledge is cleaned up, the following actions (dismiss, setlevel, reputation) are now possible on any clan member, not simply the leader. info and dismiss work as supposed (no need 2nd parameter) when used from admin panel.

Posted

New rev, quests rev :P. We reached 280 quests currently commited.

 

Changeset 276

 

Quests, misc

 

Quests

- addition of Q047, Q048, Q324, Q372, Q426. Ty to sharers.

 

Misc

- "Quest." are dropped on any quest (Quest.getNoQuestMsg(), Quest.getAlreadyCompletedMsg() && all Quest.STATE_XXX).

- drop a double check on checkClanJoinCondition() method, ty Ashe.

- fix "ghost" aborted/completed quest issue on quest logs.

- few HTM typos.

Posted
Changeset 277

 

Quests, Misc

 

Quests

- addition of Q101, Q102, Q103, Q119, Q265, Q654. Ty sharers :3.

- Echoes crystals aren't a Newbie reward (Q104 / Q105).

 

Misc

- drop the "karma drop" message (was flooding logs).

- change the severity of disconnected client message from "info" to "fine" (was flooding logs).

- (potentially) fix concurrent exceptions on updateHeroes() && activateHero(). For info, .put on a Map overrides the entry if it was already existing, making the .remove useless (and dropping the concurrent use).

 

Notes

- put back a concurrent version of ArrayList if Hero problem persists.

- the "Rewards" var (flag used on repeatable newbie quests) will be kept until Tutorial is commited.

Posted
Changeset 278

 

Quests, AutoChatHandler, Misc

 

Quests

- addition of Q106, Q107, Q108, Q274, Q306. Ty sharers. Again.

- unify checks about races on quests HTMs.

 

AutoChatHandler

- drop AutoChatHandler system. It is only used for 7Signs, and it can't be used for a simple random npcid (or anyway must be scripted, as it must be setActive()).

- indirectly fix the issue introduced in auto_chat rework, where Preachers were spamming the whole block of text (bad split with " $ ", dunno why).

 

Misc

- classes folder use a better organized files, which also fix the Linux issue. Ty Root. I got few answers it works on Linux, and I tested some minutes on Windows.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...