포럼 / 패치 노트 및 업데이트 / [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
게시물: 130
포인트: 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일)

총계: 252
Zethrone
Zethrone
Lilith
Lilith
Prime
Prime
Raúl
Raúl
ROSSWAG
ROSSWAG
Shtilkata
Shtilkata
Slevin
Slevin
lhfslucass
lhfslucass
Buharestiks
Buharestiks
NephalemHero
NephalemHero
Wariatt
Wariatt
SandraArt
SandraArt
nsk10
nsk10
xmodspawn
xmodspawn
Saga_boi
Saga_boi
Alexios
Alexios
Laki
Laki
WhaleWarrior
WhaleWarrior
Flaperin1034
Flaperin1034
FraG
FraG
Stokkel
Stokkel
maestro888
maestro888
akiptogel
akiptogel
Cypher01
Cypher01
Sergo123
Sergo123
Denzza
Denzza
SteelRat
SteelRat
AndariellMozi
AndariellMozi
Dewa
Dewa
EnhantoN
EnhantoN
BaziCew
BaziCew
one2one
one2one
rranca
rranca
bettyboopers
bettyboopers
Cancerian
Cancerian
ArianaGlande
ArianaGlande
Shinjuro
Shinjuro
shanksss
shanksss
Noct
Noct
gustaviinx
gustaviinx
stempess
stempess
Cypher02
Cypher02
Alvin
Alvin
fernando
fernando
JohnWaiters
JohnWaiters
Blorpsoda
Blorpsoda
Sy2t3mEnemy
Sy2t3mEnemy
Jhowzinho
Jhowzinho
overlydigital
overlydigital
Sociopath
Sociopath
TheR
TheR
OnkelEiernacken
OnkelEiernacken
okolodka
okolodka
Иллидан
Иллидан
nagisa1337
nagisa1337
Johnny21Walker
Johnny21Walker
Kitibosi
Kitibosi
dodik
dodik
ZeMeR
ZeMeR
thanhuy
thanhuy
VesbarHR
VesbarHR
Saig
Saig
anionexuk3
anionexuk3
Naraku
Naraku
Lexa7480
Lexa7480
Zestiny
Zestiny
Flanger
Flanger
serzile88
serzile88
gothviolence
gothviolence
SeveN
SeveN
PPzhang
PPzhang
Anemon
Anemon
SnoopLooL
SnoopLooL
IH1GAMI
IH1GAMI
AndarieL
AndarieL
karapuzzz
karapuzzz
kilerz
kilerz
onkelglatze
onkelglatze
dawarka
dawarka
onkelg
onkelg
kransolo
kransolo
Bubs0n
Bubs0n
жизньцветка
жизньцветка
Aroc
Aroc
Ridliscott
Ridliscott
Heliossec
Heliossec
gnomohabe
gnomohabe
MiDAS
MiDAS
Xaker
Xaker
Drache
Drache
Fanarik3
Fanarik3
Gats1
Gats1
Romzulkin
Romzulkin
cybernox
cybernox
Gurrble
Gurrble
SenhordoEngenho
SenhordoEngenho
masck
masck
ancientoten
ancientoten
Bobotie
Bobotie
Aratorn98
Aratorn98
Lyam
Lyam
Hraesvelgr
Hraesvelgr
Malvinka
Malvinka
Gats
Gats
Haseo
Haseo
jokerudo
jokerudo
Keleborn96
Keleborn96
Saido4ka
Saido4ka
Paragon
Paragon
Maks
Maks
utee
utee
gksz
gksz
waffess
waffess
Xenatrix
Xenatrix
leishen
leishen
SLISKI JOHNNY
SLISKI JOHNNY
morasaquin
morasaquin
djmax1234
djmax1234
cristallyx
cristallyx
Botexus
Botexus
BRONX
BRONX
Nepcalibur
Nepcalibur
BloodCherry
BloodCherry
Leoncius
Leoncius
amigoconvenido
amigoconvenido
Edwin
Edwin
Kornet
Kornet
T4L1
T4L1
MarkiiNTNT
MarkiiNTNT
Danijel
Danijel
Seeko
Seeko
Дима Кемерово
Дима Кемерово
MrZip
MrZip
MrBaks
MrBaks
Kogollones
Kogollones
Waker
Waker
Sokorol
Sokorol
Thassarian
Thassarian
Arsakgg
Arsakgg
niqora
niqora
SantosDom
SantosDom
Ténébreux
Ténébreux
shakiratar
shakiratar
PaulinDoBailao
PaulinDoBailao
Thazpoa
Thazpoa
ruse037
ruse037
Victorskyyy1
Victorskyyy1
OOCCPoo
OOCCPoo
leandro
leandro
Tekata1984
Tekata1984
Aquele Sus o Amongus
Aquele Sus o Amongus
Talrasha22
Talrasha22
Jidix
Jidix
Yuri1
Yuri1
AudReS
AudReS
jdy
jdy
xScotty1
xScotty1
brindeds
brindeds
Шурави
Шурави
Lirex
Lirex
Kikimora
Kikimora
SpiritWatcher
SpiritWatcher
SavageHold
SavageHold
Aidan
Aidan
Griswold
Griswold
Zoltun
Zoltun
ShadowSoul
ShadowSoul
Leoric
Leoric
Lachdanan
Lachdanan
Warriv
Warriv
Ogden
Ogden
Peppin
Peppin
Myriam
Myriam
WraithAvenger
WraithAvenger
TrueHold
TrueHold
Maghda
Maghda
Leah
Leah
Deckard
Deckard
Diablo
Diablo
Malthael
Malthael
DoomTouch
DoomTouch
Itherael
Itherael
PrimalWatcher
PrimalWatcher
FrostWhisper
FrostWhisper
HeavenConqueror
HeavenConqueror
Mephisto
Mephisto
Imperius
Imperius
Tyrael
Tyrael
Cain
Cain
Marius
Marius
ChaosSage
ChaosSage
HeavenReaper
HeavenReaper
Covetous
Covetous
Urshi
Urshi
Cydaea
Cydaea
ChaosShade
ChaosShade
BloodCry
BloodCry
SoulBlade
SoulBlade
AncientWolf
AncientWolf
Kashya
Kashya
WarWhisper
WarWhisper
Wirt
Wirt
NightFang
NightFang
Moreina
Moreina
Duriel
Duriel
RisenKeep
RisenKeep
Kadala
Kadala
BrutalMaster
BrutalMaster
Auriel
Auriel
Kormac
Kormac
RisenMaster
RisenMaster
BloodFang
BloodFang
SunKeep
SunKeep
FrostCaster
FrostCaster
DarkSeeker
DarkSeeker
Orek
Orek
SavageMancer
SavageMancer
ChaosSentinel
ChaosSentinel
RageSlayer
RageSlayer
PrimalFist
PrimalFist
Gillian
Gillian
WickedMancer
WickedMancer
WraithQueen
WraithQueen
HellWatcher
HellWatcher
DarkHeart
DarkHeart
FierceHunter
FierceHunter
Gheed
Gheed
Izual
Izual
Rakanoth
Rakanoth
ShadowMancer
ShadowMancer
DarkMancer
DarkMancer
DreadDestroyer
DreadDestroyer
IronDestroyer
IronDestroyer
SteelKing
SteelKing
VenomGrasp
VenomGrasp
GhostSong
GhostSong
FierceSlayer
FierceSlayer
Baal
Baal
PrimalKeep
PrimalKeep
WraithMancer
WraithMancer
ArcaneSeeker
ArcaneSeeker
Lyndon
Lyndon
SoulHunter
SoulHunter
Jazreth
Jazreth
FallenRider
FallenRider
RageHold
RageHold
HolyWitch
HolyWitch
StormHold
StormHold
Ghom
Ghom
Akara
Akara
Eirena
Eirena
WickedMaster
WickedMaster
등급 색상
■ Admin ■ Game Master ■ Nephalem ■ Adept ■ Veteran ■ Champion ■ Legend