mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-11-09 17:58:20 +00:00
Frakjaw Battle instance fixes (#409)
* Update NjMonastryBossInstance.cpp * Changed spawn position to be 1. * Changed stored variable from vector to int Added clarifying comments
This commit is contained in:
parent
933cdee414
commit
84cf79906b
@ -47,9 +47,8 @@ void NjMonastryBossInstance::OnStartup(Entity *self) {
|
||||
void NjMonastryBossInstance::OnPlayerLoaded(Entity *self, Entity *player) {
|
||||
ActivityTimerStop(self, WaitingForPlayersTimer);
|
||||
|
||||
// Join the player in the activity and charge for joining
|
||||
// Join the player in the activity
|
||||
UpdatePlayer(self, player->GetObjectID());
|
||||
TakeActivityCost(self, player->GetObjectID());
|
||||
|
||||
// Buff the player
|
||||
auto* destroyableComponent = player->GetComponent<DestroyableComponent>();
|
||||
@ -59,23 +58,22 @@ void NjMonastryBossInstance::OnPlayerLoaded(Entity *self, Entity *player) {
|
||||
destroyableComponent->SetImagination((int32_t) destroyableComponent->GetMaxImagination());
|
||||
}
|
||||
|
||||
// Track the player ID
|
||||
// Add player ID to instance
|
||||
auto totalPlayersLoaded = self->GetVar<std::vector<LWOOBJID>>(TotalPlayersLoadedVariable);
|
||||
if (totalPlayersLoaded.empty() || std::find(totalPlayersLoaded.begin(), totalPlayersLoaded.end(), player->GetObjectID()) != totalPlayersLoaded.end()) {
|
||||
totalPlayersLoaded.push_back(player->GetObjectID());
|
||||
}
|
||||
totalPlayersLoaded.push_back(player->GetObjectID());
|
||||
|
||||
// Properly position the player
|
||||
self->SetVar<std::vector<LWOOBJID>>(TotalPlayersLoadedVariable, totalPlayersLoaded);
|
||||
TeleportPlayer(player, totalPlayersLoaded.size());
|
||||
// This was always spawning all players at position one before and other values cause players to be invisible.
|
||||
TeleportPlayer(player, 1);
|
||||
|
||||
// Large teams face a tougher challenge
|
||||
if (totalPlayersLoaded.size() > 2)
|
||||
if (totalPlayersLoaded.size() >= 3)
|
||||
self->SetVar<bool>(LargeTeamVariable, true);
|
||||
|
||||
// Start the game if all players in the team have loaded
|
||||
auto* team = TeamManager::Instance()->GetTeam(player->GetObjectID());
|
||||
if (team == nullptr || totalPlayersLoaded.size() >= team->members.size()) {
|
||||
if (team == nullptr || totalPlayersLoaded.size() == team->members.size()) {
|
||||
StartFight(self);
|
||||
return;
|
||||
}
|
||||
@ -93,6 +91,7 @@ void NjMonastryBossInstance::OnPlayerLoaded(Entity *self, Entity *player) {
|
||||
|
||||
void NjMonastryBossInstance::OnPlayerExit(Entity *self, Entity *player) {
|
||||
UpdatePlayer(self, player->GetObjectID(), true);
|
||||
//TODO: Add functionality to dynamically turn off the large team variable when enough players leave.
|
||||
GameMessages::SendNotifyClientObject(self->GetObjectID(), u"PlayerLeft", 0, 0,
|
||||
player->GetObjectID(), "", UNASSIGNED_SYSTEM_ADDRESS);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user