Foros / Notas de parche y actualizaciones / [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
Publicaciones: 144
Puntos: 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

Respuesta Rápida

Debes registrarte para responder en este tablero.

Nephalem Activo (Últimos 30 Días)

Total: 304
Zethrone
Zethrone
Lilith
Lilith
Prime
Prime
Raúl
Raúl
ROSSWAG
ROSSWAG
Shtilkata
Shtilkata
Slevin
Slevin
NephalemHero
NephalemHero
Castiel
Castiel
ANTARES
ANTARES
Azazelka
Azazelka
SARWESH
SARWESH
Nygus
Nygus
kuandry
kuandry
WhaleWarrior
WhaleWarrior
Lothean
Lothean
SatanCum
SatanCum
lastatin
lastatin
bokuzeus
bokuzeus
qhoenix
qhoenix
Bannmeister
Bannmeister
sergyljfan
sergyljfan
pepega123qaz
pepega123qaz
Шиза
Шиза
AkioDragon
AkioDragon
Enpisi
Enpisi
kamisama
kamisama
GrubyWor
GrubyWor
Sowaha
Sowaha
BadUnderwear
BadUnderwear
YoloWarrior
YoloWarrior
eios
eios
prosef
prosef
Empatic
Empatic
SpaM
SpaM
HugoBergeron
HugoBergeron
qnko
qnko
p3tarz
p3tarz
astrafica
astrafica
Fezalion
Fezalion
Doda
Doda
ZDU
ZDU
Rohan
Rohan
flaviork97
flaviork97
Мерлин
Мерлин
aeoxoboe
aeoxoboe
tolgaersatir
tolgaersatir
butrely
butrely
amin123
amin123
Shenity
Shenity
Akeldama223
Akeldama223
barbariskas
barbariskas
Natellis
Natellis
SoldiersLive
SoldiersLive
Washan
Washan
Entheos
Entheos
DubTeddy
DubTeddy
Antibiotik
Antibiotik
Fisher2106
Fisher2106
WorldKillers
WorldKillers
qhtjdzoq
qhtjdzoq
yejc
yejc
Death
Death
KCEJIJIOC
KCEJIJIOC
NasaPNG
NasaPNG
Alakosta
Alakosta
Robull
Robull
TheSecondBirth
TheSecondBirth
Giyu
Giyu
NETOARAUJO
NETOARAUJO
Apocalypse
Apocalypse
DimaV
DimaV
soldger
soldger
h4xg0d
h4xg0d
rock
rock
bettyboopers
bettyboopers
GufcioPL
GufcioPL
jujuna
jujuna
Abedeen
Abedeen
Onelight1997
Onelight1997
Karma
Karma
XAKCAH
XAKCAH
colombina
colombina
Sergo123
Sergo123
purplehusky
purplehusky
KozmikPulse
KozmikPulse
SheiipaO
SheiipaO
Gringouposki
Gringouposki
Komissar
Komissar
_Saimon_
_Saimon_
uny
uny
chrizt
chrizt
ne1166sk
ne1166sk
Talrasha22
Talrasha22
Anzar
Anzar
Milaneske
Milaneske
WoodyPiker
WoodyPiker
DerTod
DerTod
diabolii
diabolii
BIlly Gates
BIlly Gates
pepievroto
pepievroto
ALUCARD
ALUCARD
RT7
RT7
Barbossa
Barbossa
vasseloth
vasseloth
Beck
Beck
from125
from125
Altair
Altair
Zuzpeqt
Zuzpeqt
Исенхатор
Исенхатор
LAWREAPU
LAWREAPU
Nepcalibur
Nepcalibur
Кровососня
Кровососня
dema
dema
Vempari
Vempari
Odyssey
Odyssey
aidathecursednartanherohanui
aidathecursednartanherohanui
WarCrafT
WarCrafT
Влад
Влад
HauDueMatLol
HauDueMatLol
Vizari
Vizari
Darijus_87
Darijus_87
DRarrogante
DRarrogante
Noctilus
Noctilus
gabor210
gabor210
Vexona
Vexona
Antigoni
Antigoni
Wolferr
Wolferr
BsO
BsO
Driisco
Driisco
nomoney4me
nomoney4me
JohnnyLogic69
JohnnyLogic69
BaHaMuT
BaHaMuT
Superman
Superman
germz1986
germz1986
Zhaza1117
Zhaza1117
mr39rus
mr39rus
kiroshiva
kiroshiva
Romano00
Romano00
AziriVerze
AziriVerze
Dynia
Dynia
Nikola
Nikola
David
David
Asildur
Asildur
Jogebye
Jogebye
Er3buZ
Er3buZ
Prai
Prai
Febra
Febra
sauronnn
sauronnn
ishimura19
ishimura19
shiftey
shiftey
Addreven
Addreven
Marcello3
Marcello3
Antihero
Antihero
themlikeme
themlikeme
othic
othic
Gawkanana@002
Gawkanana@002
sierra
sierra
shannhica
shannhica
mourningstar
mourningstar
chr0nos
chr0nos
DECO_27
DECO_27
limpopo
limpopo
tommy87
tommy87
BeeKitchen
BeeKitchen
gasoline
gasoline
TheLegendaryElk
TheLegendaryElk
Awnil
Awnil
Rekkemis
Rekkemis
Lia
Lia
Denary
Denary
KaedeSan
KaedeSan
Viktoriana
Viktoriana
Negotio
Negotio
lordmart
lordmart
SeuZe
SeuZe
Calmoran
Calmoran
Salsashark
Salsashark
Arthas-Menethil
Arthas-Menethil
Jeronimo
Jeronimo
Puman
Puman
Arigoc
Arigoc
Иллидан
Иллидан
soseon
soseon
OMGAD
OMGAD
Manohino
Manohino
Dimon174
Dimon174
Png
Png
NorteDeWell
NorteDeWell
Secretive
Secretive
BABAYAGA
BABAYAGA
Dub
Dub
Kapraill
Kapraill
Redcaps
Redcaps
kalendyla
kalendyla
Amelia
Amelia
ElinDoorn
ElinDoorn
Gospoendos
Gospoendos
Shikai
Shikai
x3n7
x3n7
Penguin
Penguin
DINETH
DINETH
DVS
DVS
princedragonni
princedragonni
laberge56
laberge56
KaynSoturo
KaynSoturo
Kronos
Kronos
Bydlodevice
Bydlodevice
EviL_Knight
EviL_Knight
yanzrexxar
yanzrexxar
ChaosGrasp
ChaosGrasp
Eirena
Eirena
Albrecht
Albrecht
SteelDestroyer
SteelDestroyer
Orek
Orek
WarReaper
WarReaper
Gillian
Gillian
GhostWalker
GhostWalker
Cain
Cain
WraithMancer
WraithMancer
AncientAvenger
AncientAvenger
FierceSeeker
FierceSeeker
Peppin
Peppin
Marius
Marius
Gheed
Gheed
Itherael
Itherael
Haedrig
Haedrig
Moreina
Moreina
RageClaw
RageClaw
Wirt
Wirt
Akara
Akara
Kashya
Kashya
DeathHunter
DeathHunter
HeavenWitch
HeavenWitch
HolyClaw
HolyClaw
SilentWolf
SilentWolf
StormSong
StormSong
Baal
Baal
Ogden
Ogden
GrimGaze
GrimGaze
Lyndon
Lyndon
HeavenBlade
HeavenBlade
GrimFist
GrimFist
NightClaw
NightClaw
Kadala
Kadala
FierceWitch
FierceWitch
WraithFist
WraithFist
FierceSentinel
FierceSentinel
StarFist
StarFist
RisenTouch
RisenTouch
StarWatcher
StarWatcher
Cydaea
Cydaea
Rakanoth
Rakanoth
RisenGrasp
RisenGrasp
StormBlade
StormBlade
Isendra
Isendra
ChaosWeaver
ChaosWeaver
StormHold
StormHold
NightHunter
NightHunter
DeathBorn
DeathBorn
Kormac
Kormac
SpiritWeaver
SpiritWeaver
Diablo
Diablo
FireDestroyer
FireDestroyer
Andariel
Andariel
Imperius
Imperius
Myriam
Myriam
Lachdanan
Lachdanan
Izual
Izual
AncientClaw
AncientClaw
Adria
Adria
Tyrael
Tyrael
GhostRoar
GhostRoar
Maghda
Maghda
ArcaneKing
ArcaneKing
BloodWeaver
BloodWeaver
Charsi
Charsi
HellWatcher
HellWatcher
BoneWalker
BoneWalker
WildBane
WildBane
Urshi
Urshi
ArcaneBane
ArcaneBane
FallenMaster
FallenMaster
SteelQueen
SteelQueen
NightRoar
NightRoar
ChaosGuard
ChaosGuard
DeadlyKeep
DeadlyKeep
DeadlyCaster
DeadlyCaster
Deckard
Deckard
DarkSeeker
DarkSeeker
FrostHunter
FrostHunter
SteelBane
SteelBane
ThunderBane
ThunderBane
WickedSong
WickedSong
BoneRoar
BoneRoar
FallenKeep
FallenKeep
Leah
Leah
AncientBreaker
AncientBreaker
Griswold
Griswold
HellBreaker
HellBreaker
DeadlyBreaker
DeadlyBreaker
DeathTouch
DeathTouch
Covetous
Covetous
WildKeep
WildKeep
Colores de rango
■ Admin ■ Game Master ■ Nephalem ■ Adept ■ Veteran ■ Champion ■ Legend