Forum / Note e aggiornamenti sulla patch / [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
Messaggi: 124
Punti: 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

Risposta Rapida

Devi registrarti per rispondere in questo board.

Nephalem Attivi (Ultimi 30 Giorni)

Totale: 231
Lilith
Lilith
Zethrone
Zethrone
Prime
Prime
Raúl
Raúl
ROSSWAG
ROSSWAG
Shtilkata
Shtilkata
Slevin
Slevin
NephalemHero
NephalemHero
Marian
Marian
bettyboopers
bettyboopers
Mr.Zalupa
Mr.Zalupa
Ramso
Ramso
Bufinha
Bufinha
Gorbit
Gorbit
WhaleWarrior
WhaleWarrior
EricStf
EricStf
slim underscore
slim underscore
Zbyniekpl
Zbyniekpl
Romius
Romius
PeYoorR
PeYoorR
LancerKAGE
LancerKAGE
g00lpe
g00lpe
DalekShark
DalekShark
Tokisada
Tokisada
19_CCCP_89
19_CCCP_89
Collapse
Collapse
Szalki
Szalki
Tyanbasco
Tyanbasco
Luffy
Luffy
Sun
Sun
Satambira
Satambira
zero92
zero92
queensnix
queensnix
Spadellix
Spadellix
Igor
Igor
otonny
otonny
Quidway
Quidway
pepe071726
pepe071726
ilboy
ilboy
mayorovv
mayorovv
Bayern551
Bayern551
Cheburekk
Cheburekk
Cheburek
Cheburek
JohnWaiters
JohnWaiters
Rachmann
Rachmann
Mihes
Mihes
donsim
donsim
fs
fs
PATTO55
PATTO55
Tsuhecir
Tsuhecir
Pedrinnc
Pedrinnc
makkks1980
makkks1980
AsmodeUs
AsmodeUs
aMPhosphere
aMPhosphere
Neevely
Neevely
Joelarder
Joelarder
marker1
marker1
Möwe168
Möwe168
MrLechero
MrLechero
Sharrman
Sharrman
fadewtf
fadewtf
ysh
ysh
Diodilla
Diodilla
SandraArt
SandraArt
creo13
creo13
Stain
Stain
Don
Don
Valera
Valera
sergyljfan
sergyljfan
MatMarra
MatMarra
Rashaul
Rashaul
Vavey
Vavey
Timur123
Timur123
horus
horus
leelovesraven
leelovesraven
Velho Corvo
Velho Corvo
Test
Test
qwertyno
qwertyno
Myst
Myst
VenommOoO
VenommOoO
theYuni
theYuni
SlowGrind
SlowGrind
shadoukan
shadoukan
Lashkhor
Lashkhor
Apathos
Apathos
Axiom
Axiom
ldw2469
ldw2469
donwang
donwang
Zombie
Zombie
SSS
SSS
SpaWn
SpaWn
Unbarmherzig
Unbarmherzig
MyBigJuicy
MyBigJuicy
detonsovgav
detonsovgav
JohnP
JohnP
Elleonora
Elleonora
Gevinyusuf
Gevinyusuf
Helios
Helios
GOODSW
GOODSW
pezdetz
pezdetz
ssstrickys
ssstrickys
BlackWraith
BlackWraith
AysT
AysT
BadBunny
BadBunny
Dizitor
Dizitor
Alex VN
Alex VN
idkjustahero
idkjustahero
Virusrus_fellow
Virusrus_fellow
CyberPug
CyberPug
exeptionv
exeptionv
bernice2020
bernice2020
pastrama1
pastrama1
thieuhoangphuoc
thieuhoangphuoc
Kovydonas
Kovydonas
Yuno
Yuno
Mrfareway
Mrfareway
Ayanreii
Ayanreii
Ярослав
Ярослав
Simon1993
Simon1993
NapimOturuyom
NapimOturuyom
TR1XN3LL
TR1XN3LL
DetestoParaibas
DetestoParaibas
Goyim Killer
Goyim Killer
onkelglatze
onkelglatze
Neolass
Neolass
Sarevok
Sarevok
Belmain
Belmain
kate2254
kate2254
leandro
leandro
Soulsaver
Soulsaver
huydatai114
huydatai114
SARWESH
SARWESH
Sendai
Sendai
Abdahorn
Abdahorn
Kitteh
Kitteh
Luc1ferSam91
Luc1ferSam91
MrAteniel
MrAteniel
Иллидан
Иллидан
nsk10
nsk10
FireKing
FireKing
HolyLord
HolyLord
MoonReaper
MoonReaper
Farnham
Farnham
RageCry
RageCry
Wirt
Wirt
Belial
Belial
Moreina
Moreina
VenomKnight
VenomKnight
BattleGuard
BattleGuard
DoomMaster
DoomMaster
Zoltun
Zoltun
Albrecht
Albrecht
Gillian
Gillian
DarkSong
DarkSong
Mephisto
Mephisto
Eirena
Eirena
Akara
Akara
Adria
Adria
StormRoar
StormRoar
PrimalTouch
PrimalTouch
Deckard
Deckard
Leoric
Leoric
Myriam
Myriam
Charsi
Charsi
Maghda
Maghda
Tyrael
Tyrael
HolyBreaker
HolyBreaker
BrutalProtector
BrutalProtector
SoulGaze
SoulGaze
VenomHawk
VenomHawk
Lachdanan
Lachdanan
IronMaster
IronMaster
VenomHunter
VenomHunter
ChaosWolf
ChaosWolf
SavageWarden
SavageWarden
StormRunner
StormRunner
Diablo
Diablo
Kashya
Kashya
DarkLord
DarkLord
Azmodan
Azmodan
Aidan
Aidan
Peppin
Peppin
RageBlade
RageBlade
NetherGuard
NetherGuard
NightWitch
NightWitch
HolyClaw
HolyClaw
SavageHunter
SavageHunter
Andariel
Andariel
VenomGrasp
VenomGrasp
Cain
Cain
FierceRunner
FierceRunner
Izual
Izual
FireWarden
FireWarden
ArcaneWalker
ArcaneWalker
RageWeaver
RageWeaver
Rakanoth
Rakanoth
WarBane
WarBane
SoulReaper
SoulReaper
SavageBreaker
SavageBreaker
Kadala
Kadala
Urshi
Urshi
NobleSeeker
NobleSeeker
Kormac
Kormac
ThunderFist
ThunderFist
Jazreth
Jazreth
Griswold
Griswold
ChaosWitch
ChaosWitch
MoonWarden
MoonWarden
Auriel
Auriel
Itherael
Itherael
Isendra
Isendra
Gheed
Gheed
Orek
Orek
Malthael
Malthael
WildBorn
WildBorn
SteelBorn
SteelBorn
GrimSentinel
GrimSentinel
Ghom
Ghom
StarSong
StarSong
SunLord
SunLord
PrimalMaster
PrimalMaster
StormWhisper
StormWhisper
DarkSlayer
DarkSlayer
Leah
Leah
Imperius
Imperius
Ogden
Ogden
Cydaea
Cydaea
ArcaneBlade
ArcaneBlade
LightClaw
LightClaw
SwiftWalker
SwiftWalker
VenomQueen
VenomQueen
Colori dei ranghi
■ Admin ■ Game Master ■ Nephalem ■ Adept ■ Veteran ■ Champion ■ Legend