исправлен Player.updateOnlineStatus, чинит ложное срабатывание no_restart-зон при коротком релоге внутри зоны и висящий online=1 после штатного логаута (исправляет релог в эпик зонах)
исправлен DailyTask.restartDailyCounters, добавлен дополнительный сброс DAILY-квестов через invalidateCondCache(). Чинит проблему, когда DAILY-квесты не помечались доступными после ежедневного сброса 06:30 без релога игрока
добавлен стат P_MAGIC_DEFENCE_CRITICAL_RATE по ретейлу (CSkillEffect_p_magic_defence_critical_rate, MagicDefenceCriticalProb)
исправлен квест Спасение Рядового Рейнджера, случайно в группе
исправлен квест Покаяние и его диалоги
исправлены предметы Оковы Грешника (5 шт.)
исправлены умения Снятие Печати Агатиона - Чревоугодник (5 шт.)
исправлен condition_target для 141 квеста согласно ретейл серверу (condition_target - это то, как предметы распределяются: соло, случайно в группе, всем в группе, командный канал)
исправлена продажа Манифест Альянса, Печать Амбиций за Знаки Битвы
Правки ядра
исправлен пакет RequestExBR_BuyProduct.runImpl: notify=true при выдаче компонентов покупки итем-молла, игрок получает системное сообщение о полученных предметах
исправлены умения Милая Хрюшка, Реорганизация, исправлены бонусы от веток улучшений
исправлены умения Одинокий Камень, Искажение, случайные виды трансформаций
исправлены Анаким/Лилит: блокировка повторного входа к боссу через _enterUsed в статусе битвы
исправлены умения Анаким/Лилит и их охраны
исправлена временная зона Кимериан экстремальный, фикс ConcurrentModificationException — убраны общие поля _minions/_players, спавн и раздача хейта через локальные переменные + getNpcs(true, npcId)
исправлена АИ Кимериана, фикс гонки двойного спавна миньонов — RaidHpState переведён на AtomicInteger, проверка порога и взведение стадии слиты в compareAndSet(0,1)
Правки ядра
реализован эффект p_changebody: случайной визуальной трансформации по кумулятивной вероятности
исправлен эффект p_disappear_target: onExit больше не сбрасывает _isTargetable безусловно — флаг возвращается в true только при реальном снятии абнормала (не suspend) и при отсутствии другого активного абнормала с p_disappear_target; устранён возврат таргетабельности при истечении второго скилла, пока первый эффект ещё висит
исправлены Анаким и Лилит: рейды больше нельзя удерживать бесконечно.
- Если зайти в логово, но не атаковать рейд — он сбрасывается через 1 час.
- Если рейд атаковали, но затем не трогать его 10 минут — логово сбрасывается по простою.
- В любом случае максимальное время с момента входа — 1 час, после чего сброс принудительный.
При сбросе всех выкидывает наружу, прохождение начинается заново (монстры → Следы Печати → вход).
Поведение приведено в соответствие с официальным сервером.
исправлены умения с типом affect_scope: ring_range (Тайфун умения, бьют между фан и аффект ренжем кольцом, аналог Таути умения "к себе")
исправлены ссылки в диалогах no_quest у нпс и вкладки "Сайт Игры" Сообщества
Правки ядра
исправлено Player#onReduceCurrentHp: DOT на Олимпиаде больше не добивает (проверка смерти hp<=1 теперь пропускается для isDot), как на оффе
исправлен Creature.reduceCurrentHp(): триггеры RECEIVE_DAMAGE по исходной величине удара
исправлен Skill.addTargetsToList: TARGET_RING_RANGE — guard лимита изменён на (affectLimit > 0 && affectedCount >= affectLimit); affect_limit=0 теперь трактуется как «без ограничения целей» (как CCreature::GatherNeighborCreatureRingRange при affect_limit={0;0} на оффе)
реализован авто-анонс ивентов с автоматической подстановкой дат на двух языках
исправлен RewardListInfo, изменено колличество отображаемых предметов 30 -> 22 — фикс крита клиента (NCHtmlTable::CreateTableFrame) при переполнении HTML-окна большим дропом; эмпирический потолок ~107 таблиц/16.6КБ на странице
Правки ядра
исправлен пакет ExUserInfoFishing#writeImpl: координаты хука пишутся безусловно по retail-формату "chdcddd" (User::SendFishingInfo, L2Server.exe) — фикс EXCEPTION_READ_VIOLATION у клиентов игры со строгим парсом; раньше условный writeD под isInProcess давал переменную длину пакета
исправлен квест Контроль над Эволюцией Гигантов, теперь при взятии квеста выдается Сияющий Камень Истребителей Гигантов
исправлен CaveGiantsManager: расцветка зоны переведена на EventTriggersManager через Reflection#addEventTrigger/removeEventTrigger вместо Zone#setEventTriggerId+broadcastPacket — триггер теперь регается в реестре, доходит до уже находящихся в локации игроков и восстанавливается при заходе
исправлен квест Уничтожить правителей семян зла, убийство ЛЮБОГО из пяти лордов (Istina/Tauti/Tiat/Ekimus) завершает килл-фазу
исправлены квесты, изменен тип с Повторяемый на Дневной (REPEATABLE -> DAILY) _450_GraveRobberMemberRescue
_500_BrothersBoundInChains
_617_GatherTheFlames
_667_HowToCoverShilensEyes
_668_FightWithGiants
_669_IntenseFightAgainstDragon
_670_DefeatingTheLordOfSeed
_672_EmbryoTheArchenemy
_673_BelethAmbition
_756_TopQualityPetra
_834_AgainstDragonclaw
_835_PitiableMelisa
_846_BuildingUpStrength
_861_KainsChoice
_985_AdventureGuildsSpecialRequestLv1
_986_AdventureGuildsSpecialRequestLv2
_987_AdventureGuildsSpecialRequestLv3
_988_AdventureGuildsSpecialRequestLv4
_989_AdventureGuildsSpecialRequestLv5
исправлены квесты, изменен тип с Повторяемый на Одноразовый (REPEATABLE -> ONETIME)
_033_MakeAPairOfDressShoes
_034_InSearchOfClothes
_035_FindGlitteringJewelry
_036_MakeASewingKit
_061_LawEnforcement
_150_ExtremeChallengePrimalMotherResurrected
_337_AudienceWithLandDragon
_618_IntoTheFlame
_621_EggDelivery
_622_DeliveryofSpecialLiquor
_648_AnIceMerchantsDream
_10338_SeizeYourDestiny
_10535_BlacksmithsSoulawakeningWeapon3
_10539_EnergySupplyCutoffPlan
_10703_BottleOfIstinasSoul
_10704_BottleOfOctavisSoul
_10705_BottleOfTautisSoul
_10845_BloodyBattleRescueTheSmiths
Правки ядра
исправлен кодировка языков в CharsetEncodingDetector#detectEncoding: инстанс UniversalDetector на вызов вместо общего статика (data race портил определение кодировки → мойбаке в холдерах); try-with-resources, catch сужен до IOException + warn-лог вместо проглатывания
исправлен NpcInstance: добавлен публичный setDeathTime(long) — симметрия к getDeathTime().
Нужен для сценариев "превращения" NPC (despawn без onDeath), где штатный respawn
HardSpawner считает задержку от deathTime.
исправлен MonsterInstance.onDeath: ретейл-распределение квест-килла по командному каналу
- COMMAND_CHANNEL (mpcc_all) теперь награждает всех собранных участников, а не одного случайного: по QuestNpcEvent::Check (0x89E200) mpcc_all = весь CC, иначе фолбэк на пати; сужение до одного на оффе только для QCTT_PARTY_ONE. Раньше на не-рейдовой цели COMMAND_CHANNEL вырождался в party_one.
- Дистанция сбора участников приведена к ретейлу: 2800 для CC-пула (mpcc_all), 1500 для пати — по QuestNpcDieEventController::Do (0x8A0FEC, дефолт m_eventRange). Раньше единый Config.ALT_PARTY_DISTRIBUTION_RANGE
исправлен квест Извлечение Сияющей Пыли, проверка фракции при первом обращении
исправлен CaveGiantsManager: расцветка переведена на map-keyed EventTriggersManager#addTrigger/removeTrigger по координатам рейда (как NpcInstance.event_trigger_id) — reflection-keyed вариант не досылался при смене региона, из-за чего колор не появлялся при телепорте из другой локации
реализована Сокровищница Гигантов в Пещере Гигантов (шанс 5%), ключи добываются из Батус Шакримы (только в группе, шанс повышается при уровне Фракции 4+)
исправлен SevenSignsRaidManager: рейд-босс (Анаким/Лилит) при спавне восстанавливается до 100% HP/MP в onZoneEnter, чтобы не появляться с остаточным хп из raidboss_status после недобитой попытки.
исправлен RamonaManager#onNpcSpawn: фаза-1 (26141) при спавне восстанавливается до 100% HP, чтобы не появляться с остаточным хп из raidboss_status после недобитой попытки (фазы 2/3 уже нормализовались).
исправлены умения монстров локации Крепость Астатин: Главный Хранитель Крепости, Смелый Солдат Астатина, Командир Ратников Астатина, Призыватель Кельбима Главный Хранитель Крепости, Призыватель Кельбима Командир Ратников Астатина, Инкрустация Астатина Командир Ратников Астатина (до этого умения были одни у всех, от базового класса Бандит Крепости)
исправлены умения монстров локации Крепость Астатин: Огненный Маг Крепости, Архонт Крепости, Верховный Жрец Астатина, Призыватель Кельбима Архонт Крепости, Призыватель Кельбима Верховный Жрец Астатина (до этого умения были одни у всех, от Темный Маг Крепости)
исправлена задача каста умений, UseSkillTask.doTask, добавлена проверка защиты после релога, телепорта
исправлен AI магических монстров (WizardUseSkill), теперь не бегут в рукопашный бой, а используют умения как положено
исправлен PetInstance: Sin Eater (PetType.KARMA) при призыве получал 100% опыта уровня (getExpForNextLevel) — теперь призывается с уровнем владельца и 0% опыта (getExpForThisLevel)
исправлен эффект p_changebody: запрет скиллов и обычной атаки при визуальном морфе как на ретейле
исправлена локация Крепость Астатин, реализована система тревоги, которая динамически увеличивает дальность агрессии и клан помощи (социальность)
исправлен zahaq_lowInstance.isEligibleForReward: фикс дропа Петры Захака (35702) с Младшего Захака после смены квеста 756 «Петра высшего качества» на DAILY — QuestState теперь не удаляется при завершении
исправлено использование меток Призывателей, можно использовать через форс (ctrl) на цель
исправлено умение Истинный Авангард, дает бонус согласно описанию
исправлена локация Храм Духов, исправлен АИ монстров с разделением на воинов и магов, исправлены неработающие умения
Правки ядра
исправлен Player.restoreExp(): восстановленный при воскрешении опыт больше не снижает карму (clearKarma=false); карма отрабатывается только опытом за убийство мобов
Player: добавлен счётчик m_TargetMeCount (inc/decTargetMeCount) для p_target_me — корректный баланс форса цели при наложении/перекасте target-me
исправлен эффект p_target_me: retail-модель по IDA (CSkillEffect_p_target_me::PumpStart/PumpEnd) — счётчик m_TargetMeCount, условный форс, снятие только на последнем инстансе. custom: переустановка того же таргета в onExit разлочивает клиентский /targetnext без сброса цели (замена клиентского m_TargetMeCount, отсутствующего в ядре) — фикс залипания перебора при перекасте агра, корректно в т.ч. в PvP
исправлен WizardBehavior/WizardUseSkill: реализован механизм i_ai4 (PTS wizard_behavior/wizard_use_skill) - маг не уходит в рукопашку, пока может кастовать, и не бросает бой после контроля.
исправлен Creature.onHitTimer: проверка isTargetable цели в момент нанесения удара автоатаки. По ретейлу (CAttackAction::OnTick) IsTargetable проверяется на каждом тике атак-экшена включая момент удара - замах по цели, ставшей untargetable (fake death, p_disappear_target), уходит вхолостую без системного сообщения. Ранее кейс закрывался только разовым abortAttack в p_disappear_target.
исправлен WizardUseSkill.recastMainAttack: гашение recast-цикла по невалидной цели - fake death (isAlikeDead), невидимость (Hide), untargetable (p_disappear_target). По ретейлу (CNPC::dUseSkill) desire по цели в fake death или невидимости не исполняется и умирает через decay
исправлен менеджер босса Рамона, исправлен спавн фаз рейда с остаточным HP после недобитой попытки. Теперь каждая фаза появляется с корректным HP: 1-я — 100%, 2-я — 75%, 3-я — 50%.
исправлен менеджер Анаким и Лилит, рейд-боссы теперь всегда появляется с полным HP, даже если предыдущую попытку бросили недобитой
исправлен рейд на Хелиоса, переписана логика боссов, спавна монстров по стадиям, алгоритм их действий
исправлен монстр Бутон, переписана логика работы и вызова монстров, в том числе предметом Живая Вода
исправлены монстры Гигантский Ведьмак, Великий Волшебник Лилим (маги, а не воины)
исправлен список предметов продаваемых в лавке Элитных Товаров Гирана, добавлена продажа А грейд оружия (согласно обновлению Helios)
исправлена логика следующих боссов, Рейдовый Босс может использовать умение "Берсеркер" через 15 минут с начала боя:
ai_raid_boss_1st - 21 шт
ai_raid_boss_2nd_warrior - 17 шт
ai_raid_boss_3rd_warrior - 13 шт
ai_raid_boss_4th_warrior - 12 шт
ai_raid_boss_2nd_wizard - 17 шт
ai_raid_boss_3rd_wizard - 17 шт
удалены статик спавны Хранителя Статуи Ангела
исправлены диалоги Статуй Ангела Бытия
реализована логика MggTalkBoss вызывает монстров в Саду Бытия, таймаут 15 минут
Правки ядра
исправлен эффект i_get_agro: исправлена перепутанная desire-ветка нового AI по IDA (SetTopDesire, NS 146) — обычный моб получает топ desire атаки +1, боссу передаётся 0 (иммун). Фикс отсутствия доп-хейта агра после спада берсеркер-лока
исправлен эффект p_berserker: приведён к retail по IDA (CSkillEffect_p_berserker → SetAbsoluteDesire, NS 161) — на новом AI ставит абсолютное attack-desire (priority -1) на кастера и снимает через resetAbsoluteTask() вместо легаси getAI().Attack(); каст к FuncTask. Legacy-ветка сохранена для мобов на старом AI. Фикс берсеркер-лока моба на танке
исправлен UseSkillTask#useSkill: cast_range=-1 (retail) как отсутствие лимита дистанции
Ретейл-скиллы с cast_range=-1 (self/AoE/конусные, напр. 16727 s_boss_helios_storm_of_fist)
исправлен Skill#addTargetsToList: affect_limit={0;0} = без лимита целей для AoE (retail)
По дизасму L2Server (CCreature::PushCreatureAfterCheckRangeAndCanSee: affectLimit<=0
= без лимита)
удалена неиспользуемая фича мировой статистики (с Линдвиора, world_statistic): DAO, менеджер, статуи победителей, парсер statues_spawns, месячный таск. Фича была отключена (AllowWorldStatistic=false), таблицы пусты во всех схемах.
исправлен Skill#checkTarget: удалён остаточный isTargetable-гейт первой итерации (перенесён в checkCondition в r<номер того коммита>) — фильтровал сбор целей affect_scope вопреки ретейлу (IDA: CSkillAction2::ValidateSkillTarget/OnTickHandle проверяют только aiming target). Фикс неполучения пати-бафов/хилов целью под p_disappear_target.
исправлен QuestState.recalcRestartTime: время рестарта DAILY-квеста обнуляется до секунд и миллисекунд (06:30:00.000). Хвост Calendar.getInstance() давал restartTime вида 06:30:45 (по всей базе разброс на всю минуту), из-за чего DailyTask в 06:30:00 заставал isNowAvailable()=false — сброс не срабатывал, квест перекэшировался как недоступный до релога.
исправлено умение Заслуга, передаваемый параметр при энчанте
исправлен KimerianManagerInstance: соло-проверка пати и корректный порядок списания билета
исправлено умение Свет Равновесия, улучшение Мощность и Перезарядка
исправлено умение Сила Воли, улучшение Мощность и Перезарядка
исправлен аи монстров в временной зоне Штаб Легиона Эмбрио, которые ходят по точкам
исправлены умения Малый Небесный Щит Гиганта, Стойкость Бессмертия Гиганта, Безмолвие Гиганта, Усыпление Гиганта, Зима Гиганта (исправлены abnormal_type умений для корректной работы по наложению и снятию эффектов)
исправлен недостающий параметр в мультиселах keep_enchanted="true"
исправлено умение Вспышка, сбрасывало цель с кастовальщика
исправлен квест Красная нить судьбы, Алмаз Иных Миров не удаляется по завершению квеста
исправлены аи монстров в Разломе Между Мирами, фикс циклического изгнания у монстров
исправлен аи монстров Крепости Астатина, корректно приходят на помощь соклановцам. Теперь при атаке по монстру все его сородичи поблизости присоединяются к бою, как и должно быть.
Правки ядра
исправлен эффект i_call_skill: наследование sub_level родительского скилла через inherit_sub_level (retail self_effect несёт ветку/уровень заточки)
исправлен PrioritySetTasks.getTopDesireValue: убрано условие absoluteTask != null, возврат живого максимума очереди по типу (ретейл CDesirePQ::_GetMaxValue)
исправлен WarriorBehavior/WizardBehavior.onEvtSeeSpell: прямая цель враждебного скилла не начисляет SEE_SPELL-хейт повторно (учтён в EVT_ATTACKED/applyEffectPoint) — устранён двойной счёт effect_point
исправлен Playable#checkPvP: убран запрет флага за саппорт врага в мирной зоне (флаг за баф флагнутого/ПК вешается как на оффе)
исправлен DimensionalRiftManager: рифт сделан полностью опциональным — тихий выход из load при отсутствии xml, null-safe getRoom и защита checkIfInRiftZone/checkIfInPeaceZone
исправлен Fishing#stop: генерация события onFishing при ручной смотке удочки
исправлен ChaosFestivalEvent#checkParticipationCond: убрана проверка рыбалки (перенесена на этап accept), добавлены проверки isDead/isTeleporting/isPK согласно офф-условиям телепорта на арену
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.