포럼 / 패치 노트 및 업데이트 / [v1.2.7] Update: Offline AI, PvP Retaliation, Per-Player Campaign, Quest Recovery, Clan Reopen, Watchdog & Verbose-Log Gates

[v1.2.7] Update: Offline AI, PvP Retaliation, Per-Player Campaign, Quest Recovery, Clan Reopen, Watchdog & Verbose-Log Gates

Avatar
#1
Zethrone
admin
게시물: 72
포인트: 99999
Apr 26, 2026 #1

Nephalem,


This is the largest v1.2.7 drop of the cycle. It bundles a brand-new Offline AI mode, a server-wide PvP retaliation hook, the long-awaited Per-Player Campaign isolation in MMO games, automatic quest position recovery on relog, the clan disband / reopen fix, the auto-restart watchdog, smart walk-in loot, and a complete pass over verbose trace logs.


Offline AI - Lineage 2 style "offline shop / bot" for D3
  • .offline command: turns the active character into a server-driven bot that keeps ticking while the account is logged out. A second .offline disengages and restores manual control without a relog.
  • Stays online to others: the BNet socket is preserved so the toon remains visible in the connected players list, party UI, chat roster, and other observers still see attacks broadcast from the character.
  • Auto-revive home anchor: the spot where the bot was engaged becomes its respawn anchor. Death restores it to that exact world position so it can keep defending hubs/farm spots.
  • Full hotbar rotation: uses left-click, right-click and the four number-key skills with independent cooldowns. Slots 2-5 fire BEFORE the left-click filler so number keys are not starved.
  • Tier-based engagement: classifies targets into melee, ranged-engage and chase tiers with per-tier reach, broadcast cadence and bearing tolerance.
  • Run animation sync: chase steps now broadcast the Run animation at Running_Rate_Total AND advance authoritative player.Position to the EXACT same destination, removing the projectile/melee origin desync we had on long pursuits.
  • HP potion guard: drinks a health potion below a configurable HP fraction with a local cooldown layered above the in-game 30s buff.

PvP Retaliation - server-wide hook
  • HitPayload integration: any successful Player-vs-Player damage event now notifies the offline AI of the attacker, regardless of damage threshold or skill type.
  • Memory window: the bot prioritises the last attacker over nearest-hostile selection while the retaliation memory is fresh (configurable seconds), then falls back to standard targeting.
  • Cross-team option: can be configured to retaliate even against same-team grief hits, covering friendly-fire scenarios.

Smart Walk-In Loot Pickup
  • Passive vacuum every tick: reuses the existing gold-pickup radius for blood shards and platinum, plus a sweep for ground potions on every AI tick.
  • Active idle pickup: when there is no hostile in range, the bot now walks toward the nearest gold pile or potion using the same Run-animation chase helper used for combat.
  • Walk-onto-pile fix: the chase helper used to stop ~7 yards short of the target (combat margin), which kept the bot just outside the gold-pickup radius. Loot chases now pass stopShortYards = 0 so the toon walks fully onto the pile and the passive vacuum collects it on the SAME tick.
  • Independent toggles: gold and potion pickup can be enabled/disabled separately, with a configurable search radius.

Per-Player Campaign in MMO mode
  • CampaignQuestMode = Personal: in GlobalMmoMode games each player now tracks their own quest and step independently. The shared engine still drives world triggers, but quest UI, NPC popups and rewards are per-player.
  • No more shared fast-forward dragging: when a player completes a personal step ahead of others, the shared engine is NOT fast-forwarded if any other initialised player is in the game. Confirmed fix for the Thor/Hécate cathedral monster never spawning.
  • Atomic step pre-sync: ActV cloister door (and any step-guarded AddOnLoadWorldAction) now fires for the instigator on personal advance because Game.CurrentStep is counter-bumped before the OnAdvance lambda runs - no shared AdvanceTo, no broadcasts, no triggers.
  • NPC Conversation_Icon per-observer: the gold quest diamond is now broadcast to KeyParam slots 0..7 with same-tick ping-pong + 4 timed retries. Renders for ALL classes (Crusader included), every join order, host or guest.
  • World-effect isolation: StartConversation, PlayCutscene, AddOnLoadWorldAction, AddFollower, UnlockTeleport, SetActorOperable/Visible, AddQuestConversation, RemoveConversations all scope to the personal trigger target during replay.
  • NPC repair pass: after a personal advance, RepairNPCStateForBehindPlayers re-runs trigger setup for the lowest-step player so destructive Conversations.Clear() calls do not block other players.

Quest Recovery on Relog (Rejoin Position Cache)
  • Atomic snapshot on Leave Game: world SNO + position + rotation are stored in-process and keyed by Toon.PersistentID when the player leaves, gets disconnected, runs !unstuck or undergoes session takeover.
  • Restore on next join: when the player rejoins within 24h on the same server process, Game.Enter() teleports them back to the EXACT world+coords+rotation they left from, before the act/quest start fallback kicks in.
  • Config gates: RejoinPositionEnabled for the normal Leave/disconnect path and RejoinPositionUnstuckEnabled for !unstuck, both independent. RejoinPositionLogVerbose for diagnostics.
  • Lobby cutscene + DB read-only fix: in personal-campaign mode the GameDescriptor is now fully read-only for quest/act/step (DB is the sole source of truth) and the act-start cutscene plays from Toon.CurrentQuestId, restoring intro flow even when the client resends stale GameCreateParams.

Clan / Guild - reopen, dissolve, no zombies
  • Disbanded clans no longer reserve names/tags: GuildManager.CreateNewGuild now filters !g.Disbanded in the uniqueness check, so a player can recreate a clan with the same (or any) name immediately after disbanding.
  • Full channel dissolution: Guild.Disband() now dissolves both the clan Channel and the GroupChatChannel, then removes the entry from GuildManager.Guilds. ChannelManager.DissolveChannel actually deletes the channel from memory (the previous Channels.Remove(id) was commented out, leaking channels forever).
  • No zombie clan refs: GetClans(), GetCommunities() and PreLoadGuilds() all filter Disbanded so the BNet UI never resolves a stale clan onto a player on relog.

Server Watchdog and Auto-Restart
  • Scheduled restarts: uptime-based or fixed UTC clock-times list with blue chat countdown announcements at configurable warn marks (auto 30s/10s).
  • Hard freeze trigger: any single Game whose TickCounter stalls past the hard threshold with players present forces an emergency restart.
  • Multi-game freeze trigger: simultaneous soft-frozen games above the configured threshold trigger an emergency restart too.
  • Join-failure flood trigger: orphan SGameId / unresolved hero spikes within the rolling window trigger an emergency restart so players can join again.
  • Always-on relauncher: a detached supervisor cmd is armed at boot and restarts the executable on ANY exit (graceful, crash, OS kill, freeze). Drop a no_relaunch.flag file to opt out for a single shutdown.

Safe Zone Verification
  • Re-audited the safe-zone gate in HitPayload: cities are protected when SafeZonesEnabled = true, InvasionEventEnabled = false and CityInvasionEnabled = false. The default config now ships with this triple set so hubs are PvP-safe and town NPCs cannot be force-attacked outside event windows.

Quality and safety
  • 0 errors on full server solution rebuild after every iteration of the offline AI, retaliation hook, loot rework, log-gate pass, per-player quest fixes and clan dissolution work.
  • Every offline-AI tunable (tick interval, attack/ranged/chase ranges, chase step, broadcast reach, bearing tolerance, broadcast refresh, potion HP fraction, cooldowns per slot, loot radius, retaliation memory, etc.).
  • No regressions to the spawn repopulation, dedup or rejoin-position systems shipped in v1.2.6.

Expected gameplay impact
  • Players can park their character in farm spots or city-invasion zones and the bot keeps defending and looting until they return.
  • PK attempts on offline characters now meet a real fight - the AI locks onto the attacker instead of running a static pattern.
  • Group sessions in MMO Campaign no longer collapse into "stuck" steps - everyone progresses on their own quest line, but world events stay coherent.
  • Logging back in returns you to the exact spot you left from, so quest progress and farming routes are not lost on disconnect or restart.
  • Disbanding a clan releases the name immediately, with no leftover channels or zombie member references.
  • Cleaner live console for admins, with a single flag flip to enable any specific trace family on demand.


Engage with .offline in-game and report any movement/animation desync, loot pickup gaps, PvP retaliation issues, personal-quest desync or clan reopen problems with hero name, zone and UTC time in Support.


- Zethrone Team

빠른 답글

이 게시판에 답글을 달려면 등록해야 합니다.

활성 네팔렘 (최근 30일)

총계: 255
Zethrone
Zethrone
Lilith
Lilith
onkelglatze
onkelglatze
Prime
Prime
Raúl
Raúl
ROSSWAG
ROSSWAG
Shtilkata
Shtilkata
Slevin
Slevin
Inmo
Inmo
therion
therion
NephalemHero
NephalemHero
Иллидан
Иллидан
Mihes
Mihes
kenimal
kenimal
creo13
creo13
Diodilla
Diodilla
Kazuyaki
Kazuyaki
WhaleWarrior
WhaleWarrior
Sarevok
Sarevok
Emaow
Emaow
locker27
locker27
jjphat
jjphat
Xenatrix
Xenatrix
cornbread
cornbread
Handresk
Handresk
Morningstar
Morningstar
Zrit
Zrit
МихаНовиков
МихаНовиков
Deus92
Deus92
Nonoboni64
Nonoboni64
Volbeat
Volbeat
Skullknock
Skullknock
KpucTu666
KpucTu666
Luckily
Luckily
Sunblight
Sunblight
LuvUrMom
LuvUrMom
ltpbro
ltpbro
WoodyPiker
WoodyPiker
Nouri174
Nouri174
Aroc
Aroc
chrizt
chrizt
bans
bans
poplolkirill
poplolkirill
hnpstar
hnpstar
CheersLove
CheersLove
xmarkxkillx
xmarkxkillx
Ketahanan
Ketahanan
Bob Bobbington
Bob Bobbington
Daemon
Daemon
jose
jose
Sadep
Sadep
HerringThe3rd
HerringThe3rd
HaZe
HaZe
Asmodean95
Asmodean95
PrastaryPL
PrastaryPL
WeatherStorm
WeatherStorm
darck
darck
Luhen
Luhen
ZYX
ZYX
VisaWie
VisaWie
Dacz
Dacz
karcious
karcious
Uniko
Uniko
nsk10
nsk10
Naisu
Naisu
Neogrifo
Neogrifo
panters
panters
DivineHistorian
DivineHistorian
drpleb
drpleb
WojtoxiPL
WojtoxiPL
Uriel
Uriel
tatarius
tatarius
daymien
daymien
kskyy
kskyy
Vasile
Vasile
Spuik
Spuik
Lelouch@
Lelouch@
Deftones
Deftones
mikkelfromdenmark
mikkelfromdenmark
0lak
0lak
Manohino
Manohino
demigod
demigod
Duriell
Duriell
Osazee
Osazee
Sambertres
Sambertres
FalseHate
FalseHate
Poison
Poison
Yxsf
Yxsf
Mitnik123!kintim
Mitnik123!kintim
jayRzzz
jayRzzz
Jun0201
Jun0201
qnko
qnko
Forang
Forang
ghostride2r
ghostride2r
DMS
DMS
UNHolyBlunts
UNHolyBlunts
RobenesAlmeida
RobenesAlmeida
Maltha
Maltha
Skulltiras
Skulltiras
nyodemix
nyodemix
igor
igor
woweko
woweko
Backer
Backer
Xixi
Xixi
Demiurg10
Demiurg10
Galeros
Galeros
zaluski
zaluski
Zig
Zig
merami05
merami05
kervald1
kervald1
gremory
gremory
sergi64
sergi64
souldadog3
souldadog3
Visteron
Visteron
Batsu
Batsu
Jekis
Jekis
zonibox
zonibox
mavrikk
mavrikk
chefjack
chefjack
Nyx
Nyx
Kvadrax
Kvadrax
Mauriicios
Mauriicios
BlueSpeedy777
BlueSpeedy777
contacess
contacess
Immoralist
Immoralist
kaspiyan
kaspiyan
Senjumaru
Senjumaru
Nxno
Nxno
boyganz
boyganz
KETTLE
KETTLE
maikale
maikale
Kermatykki
Kermatykki
DoodleViper
DoodleViper
loliboli
loliboli
Rodrigo
Rodrigo
rondinoni
rondinoni
Daniel
Daniel
tooonify
tooonify
QQQ
QQQ
Littleluna
Littleluna
Izha
Izha
VIRUS
VIRUS
Yurapro
Yurapro
razesniper64
razesniper64
Moon
Moon
Zoldayck
Zoldayck
MadMardigan49
MadMardigan49
Akeno
Akeno
Imperator_
Imperator_
Infinitearms
Infinitearms
Tiki
Tiki
Lexis
Lexis
hawkdog
hawkdog
TheNightman
TheNightman
Peposo
Peposo
rst
rst
burakbas
burakbas
metalmaniac
metalmaniac
SLISKI JOHNNY
SLISKI JOHNNY
Sacrifice
Sacrifice
Falco
Falco
AliCaTe
AliCaTe
Rakamalekum
Rakamalekum
carter
carter
wholeyone
wholeyone
KSL101
KSL101
Mapley
Mapley
Primes
Primes
Baphomet
Baphomet
MrPaquet3
MrPaquet3
Nerengot
Nerengot
MiDAS
MiDAS
Lyndon
Lyndon
Urshi
Urshi
Moreina
Moreina
RageSlayer
RageSlayer
HolyCry
HolyCry
Maghda
Maghda
Orek
Orek
Griswold
Griswold
AncientShade
AncientShade
WickedWhisper
WickedWhisper
GrimWitch
GrimWitch
DarkClaw
DarkClaw
Imperius
Imperius
Warriv
Warriv
Cydaea
Cydaea
Kormac
Kormac
Auriel
Auriel
Ogden
Ogden
AncientSeeker
AncientSeeker
Wirt
Wirt
Andariel
Andariel
Adria
Adria
Farnham
Farnham
Itherael
Itherael
Haedrig
Haedrig
HolyQueen
HolyQueen
SunLord
SunLord
Lachdanan
Lachdanan
WraithSong
WraithSong
BattleWatcher
BattleWatcher
RunSage
RunSage
DeathBorn
DeathBorn
ArcaneFist
ArcaneFist
Leoric
Leoric
NetherBane
NetherBane
Aidan
Aidan
DreadWalker
DreadWalker
Charsi
Charsi
Tyrael
Tyrael
BattleShade
BattleShade
Mephisto
Mephisto
Rakanoth
Rakanoth
DeadlyCry
DeadlyCry
Gheed
Gheed
Diablo
Diablo
Eirena
Eirena
Covetous
Covetous
Kadala
Kadala
Malthael
Malthael
DoomBlade
DoomBlade
ThunderSentinel
ThunderSentinel
Izual
Izual
BattleHowl
BattleHowl
LightGaze
LightGaze
PrimalWarden
PrimalWarden
HeavenMaster
HeavenMaster
Albrecht
Albrecht
Baal
Baal
Duriel
Duriel
RisenClaw
RisenClaw
FallenFist
FallenFist
Azmodan
Azmodan
DeadlySeeker
DeadlySeeker
Jazreth
Jazreth
RageWitch
RageWitch
BoneStrike
BoneStrike
Myriam
Myriam
ChaosSeeker
ChaosSeeker
Cain
Cain
FallenWatcher
FallenWatcher
LightWolf
LightWolf
ThunderGaze
ThunderGaze
SpiritDestroyer
SpiritDestroyer
DoomQueen
DoomQueen
SoulKing
SoulKing
Leah
Leah
MoonFang
MoonFang
DeathBreaker
DeathBreaker
NobleKing
NobleKing
HeavenGaze
HeavenGaze
AncientLord
AncientLord
WildStrike
WildStrike
NightBorn
NightBorn
등급 색상
■ Admin ■ Game Master ■ Nephalem ■ Adept ■ Veteran ■ Champion ■ Legend