mirror of
https://github.com/2revoemag/PSF-BotServer.git
synced 2026-01-20 02:24:45 +00:00
re-use old locker entity during cases of player relog to fix registration issues
This commit is contained in:
parent
1e5e11be6b
commit
92ada951e5
|
|
@ -366,13 +366,19 @@ class AvatarActor(
|
|||
|
||||
result.onComplete {
|
||||
case Success((loadouts, implants, certs, locker)) =>
|
||||
val validatedLocker = if (avatar.locker.HasGUID || avatar.locker.Inventory.Size > 0) {
|
||||
//if locker shows indication of being previously used, this player is rejoining an active session
|
||||
avatar.locker
|
||||
} else {
|
||||
locker
|
||||
}
|
||||
avatar = avatar.copy(
|
||||
loadouts = loadouts,
|
||||
// make sure we always have the base certifications
|
||||
certifications =
|
||||
certs.map(cert => Certification.withValue(cert.id)).toSet ++ Config.app.game.baseCertifications,
|
||||
implants = implants.map(implant => Some(Implant(implant.toImplantDefinition))).padTo(3, None),
|
||||
locker = locker
|
||||
locker = validatedLocker
|
||||
)
|
||||
|
||||
staminaRegenTimer.cancel()
|
||||
|
|
|
|||
|
|
@ -1418,7 +1418,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
|
|||
//rejoin current avatar/player
|
||||
log.info(s"LoginInfo: player $playerName is alive")
|
||||
deadState = DeadState.Alive
|
||||
session = session.copy(player = p)
|
||||
session = session.copy(player = p, avatar = a)
|
||||
persist()
|
||||
setupAvatarFunc = AvatarRejoin
|
||||
avatarActor ! AvatarActor.ReplaceAvatar(a)
|
||||
|
|
@ -1428,7 +1428,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
|
|||
//convert player to a corpse (unless in vehicle); automatic recall to closest spawn point
|
||||
log.info(s"LoginInfo: player $playerName is dead")
|
||||
deadState = DeadState.Dead
|
||||
session = session.copy(player = p)
|
||||
session = session.copy(player = p, avatar = a)
|
||||
persist()
|
||||
player.Zone = inZone
|
||||
HandleReleaseAvatar(p, inZone)
|
||||
|
|
@ -1449,7 +1449,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
|
|||
tplayer.Release //for proper respawn
|
||||
tplayer.Zone = inZone
|
||||
tplayer
|
||||
}
|
||||
}, avatar = a
|
||||
)
|
||||
avatarActor ! AvatarActor.ReplaceAvatar(a)
|
||||
avatarActor ! AvatarActor.LoginAvatar(context.self)
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import net.psforever.types.{PlanetSideEmpire, PlanetSideGUID}
|
|||
|
||||
/**
|
||||
* A wrapper class that allows a player-facing locker component
|
||||
* to be treated standard `Equipment` object in the player's fifth (sixth) slot.
|
||||
* to be treated like a standard `Equipment` object in the player's fifth (sixth) slot.
|
||||
* (The opposite is not true - the equipment does not get treated as a locker component.)
|
||||
* During packet conversion and registration and general access in terms of holsters or "equipment slots",
|
||||
* the component may be be treated the same as other existing objects at the same level.
|
||||
|
|
|
|||
Loading…
Reference in a new issue