Last post by Tryskell - February 02, 2019, 08:32:34 AM
Changeset 379 (1104)
Zaken, Four Sepulchers, Dimensional Rift, Cleanup, Bugfixes
Zaken - Addition of Zaken script. Ty Asmodeus for the initial work. Numerous cleanup and fixes have been done to fit exactly L2OFF script.
Four Sepulchers - Big cleanup (CLogger, Maps are reviewed, merged methods, try-with-ressources,...) with a complete events cycle rework. - Fix NPE issue and invalid weight penalty check on FourSepulchersManager.tryEntry (called by Q620_FourGoblets). - Drop the 4 duplicated managers spawns from spawnlist (already handled by the Java class). - Fix multiple bugs/exploits related to chests interaction (they now instantly disappear). - SepulcherNpc onActionShift behavior is added. - Add the regular message broadcast "The monsters have spawned!" for Hall Gatekeepers on door opening. - Monsters, upon mysterious chest opening, instantly spawn. There isn't 3,5s delay. - The petrification effect on statues is now instant upon statue spawn to avoid statues got time to move/get aggro. Statues are also set as noRndWalk. - SepulcherMonster class is dropped, a script named FourSepulchers handle all old behaviors (and even more). NPCs are re-allocated as Monster. - Victims are removed from FleeingNPCs script to be included directly on FourSepulchers script. - Archon of Halisha (the ones with 18xxx npcId) are removed from SpeakingNPCs script (not retail). - Victim behaviour is added (run and shout while being hit by a NPC). - Added retail time limit upon Mysterious Boxes opening (can't open anymore after the 49th minute), with the associated message broadcast. - Add HalishaChest instance : animation on spawn, don't attack, don't random walk anymore. - Delete remnant Chapel Keys from Players on zone oust. - Edit begin/end timer to fit with royal_rush_npc AI, aka : 50th min game end, 55th min game registration, 0th min game start. Shouts are made from 5th min to 45th.
Dimensional Rift - Regular cleanup on DimensionalRiftManager (IXmlReader, CLogger,...) - The room choice process is entirely revamped to avoid to use do/while loops which can potentially stuck up. - DimensionalRiftRoom is moved in its own file. A lot of cleanup here too (_roomMobs List is dropped, Location instead of int...). - Fix an issue where getFreeRooms considered boss room as valid empty room on initial start method (Rift was considered as 1 free cell to teleport in - while there was actually none). - teleToLocation override is moved from Creature to Player. Player also got a new teleToLocation(Location) method which simply call the super method and avoid the rift check (used only by Rift system). - Regular cleanup on DimensionalRift. - Store DimensionalRiftRoom instead of its id, which avoid to make a lot of get on DimensionalRiftManager rooms. - Timer / TimerTask are replaced for Future<?> and get use of ThreadPool. - CopyOnWriteArrayList > ConcurrentHashMap.newKeySet().
Cleanup - More Cloggers. - oustAllPlayers() returns the List of kicked Players. - Add scriptValue as part of npcinfo.htm. - GameServerTable is slightly refactored : renamed to GameServerManager, get use of CLogger and IXmlReader. servername.xml is renamed serverNames.xml. - PlaySound complete packet structure. Ty RooT. - Add IXmlReader addAttributes to feed an existing StatsSet. Few StatsSet cleanup. Ty Melron. - Npc#onActionShift npcinfo GM content is moved on sendNpcInfos. - L2AttackableAIScript#testCursesOnAttack method is added and used on every GrandBoss (bosses who haven't yet been reworked aren't affected - Core and Orfen). testCursesOnAggro is also added. - Quest / Scripting - onAttack behavior is edited to allow any Creature attacker to trigger it (and not only Playable). - onKill behavior is edited to allow any Creature killer to trigger it (and not only Playable). Indirectly fix a huge issue, where a NPC attacker would stuck victim onKill event. - Following methods return QuestState instead of Player, for easier management inside quests. Associated quests have been edited. - getPartyMembers(Player player, Npc npc, String var, String value). - getRandomPartyMember(Player player, Npc npc, String var, String value). - getRandomPartyMember(Player player, Npc npc, String value). - getPartyMembersState(Player player, Npc npc, byte state). - getRandomPartyMemberState(Player player, Npc npc, byte state). - Addition of Quest#addGameTimeNotify(). You can now easily add scripts behaviours based on ingame day time. - Add Creature#isInsideRadius(Location loc, int radius, boolean checkZ, boolean strictCheck). - Add Attackable#cleanAllHate() - which clean the hate, but keep all AggroInfos (to keep track of rewards).
Bugfixes - isBannedGameserverIP returns true if IP address can't be retrieved. - Fix the auto-attack behavior which should stop once the target isn't autoattackable anymore (include skills nextActionIsAttack behavior). Ty Kraker for fix. - Some crests related packets checks addition. Fix one potential client crash. Ty RooT. - Fix a title exploit adding a regex pattern for RequestGiveNickName. Drop isValidPlayerName. - Fix minions dissapearing after healing (ex : Ant Nurses) - MutedFolk onActionShift behavior is added. - Stop the current bow attack if the Player hasn't enough MP. Ty ForgeOfGods. - Fix the possibility to target things when incapacited. - Add OTHER_PARTY_IS_Broken check for duels. - Edit Attackable#returnHome(boolean) to use cleanAllHate() instead of _aggroList.clear(). Drop hasAI() and getMoveSpeed() checks (the first creates issues upon single player region teleport, the second is simply pointless). - AutoSpawnManager fix on AutoDespawner. Ty Denzel for fix.
PS : Four Sepulchers configs are all edited. Please refresh your events.properties. PS : Regular teleToLocation(Location, int) should always be used. The only counter to this rule is teleported by rift itself (otherwise you are moved back to waiting room) or eventually custom skills which teleport you (rush, etc).
MinionList - Addition of show_minion. - Fix the minion respawn (broken on last revision). Ty Ericu for report. - Edited minions system to fit L2OFF behavior. Ty shyr for testing. - Regular minions don't respawn when master is alive. They despawn only if they switch to IDLE (case of returnToRespawnPoint for others monsters). - Raid boss minions are untouched, they do respawn when master is alive, and instantly despawn on master death. - setLeader > setMaster, all uses are edited to reflect it (edited to avoid to melt with getClan().getLeader()). - Minions are now setMaster(null) towards master death to avoid collateral aggro once new master comes along. In order to make minions despawn, a rework of isMinion() was needed.
Fishing - L2Fishing is renamed FishingStance. All variables and methods related to fishing are moved from Player to this class. - All fishing zones maxZ are reviewed (no more flying baits). - The way to calculate the bait location is modified.
DerbyTrackManager - Fix all issues regarding lanes swap. - The List of NpcTemplate is edited to be a List of Npc, which avoid to generate new Monsters instance on every race. The 24 instances are re-used, over and over. The List is shuffled, then the first 8 instances are picked as runners. - Current race number is now calculated based on LAST REGISTERED HistoryInfo race number, and not on number of total entries. If you manually delete old entries, it won't affect anymore the data integrity (only the data of the ticket you try to retrieve). In the same order of idea, getHistoryInfo is added to retrieve an HistoryInfo based on the saved race number, and not based on the getHistory() index anymore. - Minor reworks here and there (methods rename, addition of methods, Javadoc).
Cleanup - Deletion of Config.DEBUG. - Multiple Logger > CLogger. Improve errors log details. Ty Sahar. - AugmentationData cleanup (8900 > 1800 lines for skills.xml). Ty Sahar. - IPv4Filter cleanup. Ty svipben. - Slight edit of SpawnZoneType (renames and merge of identical methods). All zones are edited to reflect x/y/z caps removal. - Add writeLoc as part of SendablePacket, and use it where it can be used. - Addition of spawnMe(Location). - IXmlReader#parseLocation is added. - LoginFail / PlayFail packets static approach. - CursedWeapon cleanup (try-with-ressources, CLogger, static queries).
Bugfixes - Fixes due to IXmlReader implementation : - Fix broken chaotic spawn locations loading. Ty shyr for report. - Fix //reload zone - Miss to reset _lastDynamicId to 0. - Fix //reload acar - Miss to "play" with _highestLevel. It's dropped, and accesses are set on TreeMap for easy highest level found. Fix also the log regarding master level logging in. - Refresh informations regarding //reload admincommand (prior to AdminData rework). Ty Toxico. - Fix summons forced skill cast. Ty bowling4soup. - Fix party-broadcasted message related to distributeItem. Ty bowling4soup. - Gatekeeper Arisha HTM cleanup. Add a missing loc. Ty shyr for report. - Add more accuracy to angle<>heading conversion. - PartOfCharacterHeight is set to 95 by default instead of 75 (more accurate with eyes position...). - //spawn default respawn time is set to 60sec instead of 0sec. - Addition of both //show_minion and //knownlist buttons into npcinfo.htm. - Let Cursed Weapon tasks run up to their current loop. Avoid InterruptedException. - BufferUnderflowException is handling differently, to avoid ProtocolVersion spam. Ty SweeTs. - Entire cleanup of isRaid(), isRaidMinion(), isMinion(). - Introduction of isRaidBoss() and isRaidRelated() (previously named isRaid()). - Deletion of isRaidMinion. - Avoid the weird "isRaid() && !isRaidMinion()" to speak about a raid boss. - Fix 2 issues related to teleport process : - on teleport, zones are correctly registered (bug introduced on last rev). Ty SweeTs for report. - compass and water are correctly refreshed (bug as old as L2J). - //setinvul uses isMortal, not isInvul anymore. Deletion of FolkStatus, NPCs are setIsMortal(false) instead. - SiegeFlag alert timer is moved from 20s to 30s delay. - Fix all wrong NPC levels (Bosses included). Add npcId 13015. - Duels are now interrupted if an Attackable hit one of the duelist. - Add the 6 missing castle warehouse keepers on castle related NPCs (they don't exist on L2OFF data too). Ty shyr.
PS : when you want to speak about a raid boss or raid minion, simply use isRaidRelated(). isRaidBoss() returns only Raid Bosses. isMinion() returns any minion type.
Last post by Tryskell - December 22, 2018, 05:28:12 PM
Changeset 377 (1020)
IXmlReader, AIs, Quests, Misc
IXmlReader - Ty Sahar - Drop XmlDocument and replace it by the interface IXmlReader. - Existing and already reworked classes which were using XmlDocument are now using IXmlReader.
AIs - Fix disabled AI NPCs stucking on ATTACK intention. - Fix minions interrupting their current cast to join the master. Queen Ant - Larva is set as disableCoreAI (it doesn't react anymore). - Addition of the 3 "teleport out" locations for players during Queen Ant spawn. Added back a zone corresponding to Ant Lair, to port back players. - Addition of onSkillSee/onAttack events for Raid Curse, which is spread for all types of ants. onAggro Raid Curse is reworked to reflect retail behavior (isn't supposed to silence mages). - Addition of Anti Strider Slow curse (Queen Ant onAttack behavior). - Rework the Nurse healing process in order it uses onFactionCall event instead of 1s task (which remove some variables). - Queen Ant spawn sound is corrected. Social actions amount is also corrected. - Nurses only heal larva and queen, not other types of faction-related ants anymore. - Decrease the amount of Nurses (from 5+2 (queen+larva) to 3) and Royal Guards (from 7 to 4). - Addition of Queen Ant behavior casting skills for following events, using retail values : onSkillSee, onFactionCall, onAttack. - Nurses/Royal Guards respawn time is now correctly handled (10sec Nurses, 280 + Rnd.get(40) for Royal Guards). - Royal Guards are teleported back on the Queen Ant zone, if out. It uses as task. - Queen Ant is teleported back to spawn point if out of her territory. It uses an event. - Royal Guards are now affected by chaos time (66% chance, tested every 90 + Rnd.get(240) seconds).
Quests - Addition of Q115 (made from scratch by me). - Addition of Q648. Ty to roko91 for the good work ! - Fix Q403. Ty shyr for report.
Misc - Few HTM typos fix from the forum dedicated topic. Ty to sharers (Vampir mostly). - Fix a custom config (raid boss drop). Ty SweeTs. - Merchant HTM folder up to 31400. - Fix the double message on Transfer Pain (already handled by SummonStatus). Ty Sahar. - Drop memos associated to a deleted player. Ty ForgeOfGods. - ProtocolVersion accepts all legit Interlude revisions, not only the last one. - Tweak aggroReconsider() to don't bother with aggro lists <= 1. - Fix issue where circlet/reputation removal would be applied to the wrong clan after a castle siege. Ty Sahar. - Drop ZoneType onRevive/onDeath (unused). - Teleportation stuff - Fix a StackOverflow issue if you were using teleToLocation on following zone events : notifyExitZone / onExit. - teleToLocation rework ; use as low as possible advanced methods, avoid to use spawnMe()/decayMe(). Fix all issues related for using onSpawn() content. - Creature#setRegion handles all possible zones revalidation scenario, allowing us to get rid of revalideZone(true) from onSpawn/teleToLocation. - Drop Summon#onTeleported() - pet is supposed to be summoned near the owner, broadcasting packets automatically. - The only legit onSpawn behavior is maintained for SiegeSummon, using onTeleported. - MinionList rework - Store the current state of minion spawn/despawn in order to reuse it. Fix an issue with onMasterTeleport() - minions were created back, leading to x2 minions if respawn tasks were already scheduled. - Cut the number of container modification, since _minions container doesn't add/remove anymore. Only the boolean state is edited. - spawnMinions is only used once. It now generates _minions container content. - Seperate die/deletion behaviour. setLeader(null) is only set if deletion occurs (to prevent OOME). - Rework onMinionDie in order scripts currently affect the modification on respawn time setting (notably moving out whatever modified the respawnTime).
PetitionManager - Creation of the package model.petition to hold inner classes of PetitionManager. Move PetitionManager to data.manager. - HashMap > ConcurrentHashMap to avoid CMEs. - Generic cleanup on all those classes.
"Chaos time" system. - RBs are affected by chaos time, for the following rule : 20% luck to change target every 1m (set on the same task than "return by teleport to spawn" behavior). - RBs minions got 33% luck to change target, tested every 1m (set on the same task than their RB to avoid pointless objects). - I didn't see specific/general rules for GrandBosses regarding chaos system. There isn't a single method call RandomizeAttackDesire() on those scripts. The behavior is entirely dropped. Scripts would be eventually edited to reflect this change. This little rework will fix those issues : - Divide between 6 to 10 the amount of target switch. - The random aspect to choose the next target is now really random. - Slight improvement, as no action is done if the same target is chosen. - The logic between all conditions is normally correctly handled.
Loot protection - Improvement of logic behind the main damager dealer acquisition : - Main damage dealer isn't edited into ItemInstance.create anymore, it is now done way before to avoid to process it on every item creation. - "First command channel leader" as "master looter" is now also taken into consideration on custom config AUTO_LOOT. - setDropProtection is moved out of ItemInstance.create, into the single usage (Attackable#dropItem) to avoid pointless casting. - Drop the single occurence of doItemDrop(Creature), cleanup unused parameters for 2 other methods. - Fix the loot protection for RBs. Regular player rules apply on them. No party thing.
Doors / Walls - Doors HPs are visible by anyone in sieges. Ty TigVecc for report. - Doors/walls are anew attackable by player skills upon a castle siege progress, but deal 0 damage (cosmetic edit). Ty TigVecc for report. - Missing CTRL (forced attack) behavior for Doors/Walls is added.
Misc - Don't clear Lists on Harvest/Sweep while they are still processed, to avoid ConcurrentException - let onSpawn() handles the cleaning. - Implemented retail player spawn locations system. Ty vampir for the hint. - Desire intention can't be null anymore, to avoid NPEs (2 scenarios with _nextIntention). Ty Sahar. - Fix the Exception when players are riding Striders with GM Haste on and disconnect. Merge stopAllTimers() to the single-used location. Ty Sahar. - Add back the food task on //ride, since a simple //kill and //revive generate a food task, making it looks like an "issue" while it was a "GM feature". - Fix Wyvern mounted players, which got their attack speed set to 300 (static) and 150 if Wyvern is hungry. Fix indirectly the single Wyvern skill. - Addition of "Food for Wyvern" into the GM shop. - Fix Q027. Ty zarie. - Fix Q218 quest logic behind Talin pieces acquisition. Ty Nophaie for report. - Tweak calcMagicSuccess in order low level skills can affect targets (base calculated on a 30 levels difference). - Fix Blacksmith of Mammon - Unseal/Reseal. Ty zarie. - Ban/kick actions don't close the client anymore, only the logout action does it. Drop secondary logout() method. - Fix any Plando-like creature (throwing spears issue). - EffectTargetMe fix after previous Desire edit (any aggression skill). - Retail /clanpenalty implementation. Ty Caparso for report. - Fast fix for Summon PC / AV - Teleport (Portas, Flash of Splendor,...). - "Kailu Balu" Z spawn fix. - Few mini cleanups : - _isRaid is dropped from Creature. - Few lambdas use. - Timestamp class is moved out of Player class, to model.holder package.
Some of you may get some problems on first time you access our forum (such as, missing images from menu). Please check your link and if you see that you are using HTTP://address , change it where you saved (bookmark or w/e) to HTTPS://address (just add an S to http)
Last post by sahar - October 14, 2018, 11:03:31 AM
Winter season is coming 27/10 !
What's new in a nutshell? * NO donations for A/S-Grade items when server starts * NEW missions system for small groups / parties / clans * BETTER score distribution when doing objectives * MAJOR class balance improvements * MANY new maps * NEW clan shop to Aden Castle owners * MUCH more (visit our website for details)