mirror of
https://github.com/2revoemag/PSF-BotServer.git
synced 2026-07-13 07:24:53 +00:00
a few tweaks
This commit is contained in:
parent
a59b8244fe
commit
bf5eb191dd
2 changed files with 12 additions and 26 deletions
|
|
@ -165,7 +165,7 @@ class SquadInvitationManager(subs: SquadSubscriptionEntity, parent: ActorRef) {
|
||||||
val availableForJoiningSquad = notLimitedByEnrollmentInSquad(invitedPlayerSquadOpt, invitedPlayer)
|
val availableForJoiningSquad = notLimitedByEnrollmentInSquad(invitedPlayerSquadOpt, invitedPlayer)
|
||||||
acceptedInvite match {
|
acceptedInvite match {
|
||||||
case Some(RequestRole(petitioner, features, position))
|
case Some(RequestRole(petitioner, features, position))
|
||||||
if availableForJoiningSquad && canEnrollInSquad(features, petitioner.CharId) =>
|
if canEnrollInSquad(features, petitioner.CharId) =>
|
||||||
//player requested to join a squad's specific position
|
//player requested to join a squad's specific position
|
||||||
//invitedPlayer is actually the squad leader; petitioner is the actual "invitedPlayer"
|
//invitedPlayer is actually the squad leader; petitioner is the actual "invitedPlayer"
|
||||||
if (JoinSquad(petitioner, features, position)) {
|
if (JoinSquad(petitioner, features, position)) {
|
||||||
|
|
@ -174,7 +174,7 @@ class SquadInvitationManager(subs: SquadSubscriptionEntity, parent: ActorRef) {
|
||||||
}
|
}
|
||||||
|
|
||||||
case Some(IndirectInvite(recruit, features))
|
case Some(IndirectInvite(recruit, features))
|
||||||
if availableForJoiningSquad && canEnrollInSquad(features, recruit.CharId) =>
|
if canEnrollInSquad(features, recruit.CharId) =>
|
||||||
//tplayer / invitedPlayer is actually the squad leader
|
//tplayer / invitedPlayer is actually the squad leader
|
||||||
val recruitCharId = recruit.CharId
|
val recruitCharId = recruit.CharId
|
||||||
HandleVacancyInvite(features, recruitCharId, invitedPlayer, recruit) match {
|
HandleVacancyInvite(features, recruitCharId, invitedPlayer, recruit) match {
|
||||||
|
|
@ -456,7 +456,7 @@ class SquadInvitationManager(subs: SquadSubscriptionEntity, parent: ActorRef) {
|
||||||
(Some(rejectingPlayer), Some(leaderCharId))
|
(Some(rejectingPlayer), Some(leaderCharId))
|
||||||
|
|
||||||
case Some(RequestRole(rejected, features, _))
|
case Some(RequestRole(rejected, features, _))
|
||||||
if notLeaderOfThisSquad(squadsToLeaders, features.Squad.GUID, rejectingPlayer) =>
|
if notLeaderOfThisSquad(squadsToLeaders, features.Squad.GUID, rejected.CharId) =>
|
||||||
//rejected is the would-be squad member; rejectingPlayer is the squad leader who rejected the request
|
//rejected is the would-be squad member; rejectingPlayer is the squad leader who rejected the request
|
||||||
features.DeniedPlayers(rejected.CharId)
|
features.DeniedPlayers(rejected.CharId)
|
||||||
(Some(rejectingPlayer), None)
|
(Some(rejectingPlayer), None)
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import java.io.{PrintWriter, StringWriter}
|
||||||
import scala.collection.concurrent.TrieMap
|
import scala.collection.concurrent.TrieMap
|
||||||
import scala.collection.mutable
|
import scala.collection.mutable
|
||||||
//
|
//
|
||||||
import net.psforever.objects.{Default, LivePlayerList, Player}
|
import net.psforever.objects.{LivePlayerList, Player}
|
||||||
import net.psforever.objects.teamwork.{Member, Squad, SquadFeatures}
|
import net.psforever.objects.teamwork.{Member, Squad, SquadFeatures}
|
||||||
import net.psforever.objects.avatar.{Avatar, Certification}
|
import net.psforever.objects.avatar.{Avatar, Certification}
|
||||||
import net.psforever.objects.definition.converter.StatConverter
|
import net.psforever.objects.definition.converter.StatConverter
|
||||||
|
|
@ -902,9 +902,8 @@ class SquadService extends Actor {
|
||||||
val squad = features.Squad
|
val squad = features.Squad
|
||||||
subs.UserEvents.get(charId) match {
|
subs.UserEvents.get(charId) match {
|
||||||
case Some(events)
|
case Some(events)
|
||||||
if !memberToSquad.contains(charId) &&
|
if squad.isAvailable(position, player.avatar.certifications) &&
|
||||||
squad.Leader.CharId != charId &&
|
EnsureEmptySquad(charId) =>
|
||||||
squad.isAvailable(position, player.avatar.certifications) =>
|
|
||||||
memberToSquad(charId) = squad.GUID
|
memberToSquad(charId) = squad.GUID
|
||||||
subs.MonitorSquadDetails.subtractOne(charId)
|
subs.MonitorSquadDetails.subtractOne(charId)
|
||||||
invitations.handleCleanup(charId)
|
invitations.handleCleanup(charId)
|
||||||
|
|
@ -1083,6 +1082,7 @@ class SquadService extends Actor {
|
||||||
pSquadOpt match {
|
pSquadOpt match {
|
||||||
//member of the squad; leave the squad
|
//member of the squad; leave the squad
|
||||||
case Some(features) =>
|
case Some(features) =>
|
||||||
|
LeaveSquad(charId, features)
|
||||||
val squad = features.Squad
|
val squad = features.Squad
|
||||||
val size = squad.Size
|
val size = squad.Size
|
||||||
subs.UserEvents.remove(charId) match {
|
subs.UserEvents.remove(charId) match {
|
||||||
|
|
@ -1093,25 +1093,11 @@ class SquadService extends Actor {
|
||||||
if (size > 2) {
|
if (size > 2) {
|
||||||
GetLeadingSquad(charId, pSquadOpt) match {
|
GetLeadingSquad(charId, pSquadOpt) match {
|
||||||
case Some(_) =>
|
case Some(_) =>
|
||||||
//leader of a squad; search for a suitable substitute leader
|
//leader of a squad; the squad will be disbanded. Same logic as when a SL uses /leave and the squad is disband.
|
||||||
squad.Membership.drop(1).find { _.CharId > 0 } match {
|
PanicDisbandSquad(
|
||||||
case Some(member) =>
|
features,
|
||||||
//leader was shifted into a subordinate position and will retire from duty
|
squad.Membership.collect { case member if member.CharId > 0 && member.CharId != charId => member.CharId }
|
||||||
SquadActionMembershipPromote(
|
)
|
||||||
charId,
|
|
||||||
member.CharId,
|
|
||||||
features,
|
|
||||||
SquadServiceMessage(null, null, SquadAction.Membership(SquadRequestType.Promote, charId, Some(member.CharId), "", None)),
|
|
||||||
Default.Actor
|
|
||||||
)
|
|
||||||
LeaveSquad(charId, features)
|
|
||||||
case _ =>
|
|
||||||
//the squad will be disbanded
|
|
||||||
PanicDisbandSquad(
|
|
||||||
features,
|
|
||||||
squad.Membership.collect { case member if member.CharId > 0 && member.CharId != charId => member.CharId }
|
|
||||||
)
|
|
||||||
}
|
|
||||||
case None =>
|
case None =>
|
||||||
//not the leader of a full squad; tell other members that we are leaving
|
//not the leader of a full squad; tell other members that we are leaving
|
||||||
SquadSwitchboard.PanicLeaveSquad(
|
SquadSwitchboard.PanicLeaveSquad(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue