mirror of
https://github.com/DarkflameUniverse/DarkflameServer
synced 2024-08-30 18:43:58 +00:00
Merge pull request #451 from EmosewaMC/ShootingGalleryScoreFix
Shooting Gallery daily mission fix
This commit is contained in:
commit
3a959778fe
@ -356,7 +356,7 @@ void Mission::CheckCompletion() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SetMissionState(MissionState::MISSION_STATE_READY_TO_COMPLETE);
|
MakeReadyToComplete();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Mission::Catchup() {
|
void Mission::Catchup() {
|
||||||
|
@ -78,14 +78,7 @@ void MissionTask::SetProgress(const uint32_t value, const bool echo)
|
|||||||
|
|
||||||
std::vector<float> updates;
|
std::vector<float> updates;
|
||||||
updates.push_back(static_cast<float>(progress));
|
updates.push_back(static_cast<float>(progress));
|
||||||
|
GameMessages::SendNotifyMissionTask(entity, entity->GetSystemAddress(), static_cast<int>(info->id), static_cast<int>(1 << (mask + 1)), updates);
|
||||||
GameMessages::SendNotifyMissionTask(
|
|
||||||
entity,
|
|
||||||
entity->GetSystemAddress(),
|
|
||||||
static_cast<int>(info->id),
|
|
||||||
static_cast<int>(1 << (mask + 1)),
|
|
||||||
updates
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -190,15 +183,13 @@ bool MissionTask::InParameters(const uint32_t value) const
|
|||||||
|
|
||||||
bool MissionTask::IsComplete() const
|
bool MissionTask::IsComplete() const
|
||||||
{
|
{
|
||||||
// Minigames are the only ones where the target value is a score they need to get but the actual target is the act ID
|
return progress >= info->targetValue;
|
||||||
return GetType() == MissionTaskType::MISSION_TASK_TYPE_MINIGAME ? progress == info->target : progress >= info->targetValue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MissionTask::Complete()
|
void MissionTask::Complete()
|
||||||
{
|
{
|
||||||
// Minigames are the only ones where the target value is a score they need to get but the actual target is the act ID
|
SetProgress(info->targetValue);
|
||||||
SetProgress(GetType() == MissionTaskType::MISSION_TASK_TYPE_MINIGAME ? info->target : info->targetValue);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -352,9 +343,14 @@ void MissionTask::Progress(int32_t value, LWOOBJID associate, const std::string&
|
|||||||
if (info->target != gameID) {
|
if (info->target != gameID) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
// This special case is for shooting gallery missions that want their
|
||||||
|
// progress value set to 1 instead of being set to the target value.
|
||||||
|
if(info->targetGroup == targets && value >= info->targetValue && GetMission()->IsMission() && info->target == 1864 && info->targetGroup == "performact_score") {
|
||||||
|
SetProgress(1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
if(info->targetGroup == targets && value >= info->targetValue) {
|
if(info->targetGroup == targets && value >= info->targetValue) {
|
||||||
SetProgress(info->target);
|
SetProgress(info->targetValue);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -61,8 +61,6 @@ void SGCannon::OnStartup(Entity *self) {
|
|||||||
void SGCannon::OnPlayerLoaded(Entity *self, Entity *player) {
|
void SGCannon::OnPlayerLoaded(Entity *self, Entity *player) {
|
||||||
Game::logger->Log("SGCannon", "Player loaded\n");
|
Game::logger->Log("SGCannon", "Player loaded\n");
|
||||||
self->SetVar<LWOOBJID>(PlayerIDVariable, player->GetObjectID());
|
self->SetVar<LWOOBJID>(PlayerIDVariable, player->GetObjectID());
|
||||||
/*GameMessages::SendSetStunned(player->GetObjectID(), PUSH, player->GetSystemAddress(), LWOOBJID_EMPTY,
|
|
||||||
true, true, true, true, true, true, true);*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SGCannon::OnFireEventServerSide(Entity *self, Entity *sender, std::string args, int32_t param1, int32_t param2,
|
void SGCannon::OnFireEventServerSide(Entity *self, Entity *sender, std::string args, int32_t param1, int32_t param2,
|
||||||
@ -561,32 +559,15 @@ void SGCannon::StopGame(Entity *self, bool cancel) {
|
|||||||
|
|
||||||
auto* missionComponent = player->GetComponent<MissionComponent>();
|
auto* missionComponent = player->GetComponent<MissionComponent>();
|
||||||
|
|
||||||
if (self->GetVar<uint32_t>(TotalScoreVariable) >= 25000)
|
|
||||||
{
|
|
||||||
// For some reason the client thinks this mission is not complete?
|
|
||||||
auto* mission = missionComponent->GetMission(229);
|
|
||||||
|
|
||||||
if (mission != nullptr && !mission->IsComplete())
|
|
||||||
{
|
|
||||||
mission->Complete();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (missionComponent != nullptr) {
|
if (missionComponent != nullptr) {
|
||||||
missionComponent->Progress(
|
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_MINIGAME, self->GetVar<uint32_t>(TotalScoreVariable), self->GetObjectID(), "performact_score");
|
||||||
MissionTaskType::MISSION_TASK_TYPE_MINIGAME,
|
|
||||||
self->GetVar<uint32_t>(TotalScoreVariable),
|
|
||||||
self->GetObjectID(),
|
|
||||||
"performact_score"
|
|
||||||
);
|
|
||||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_MINIGAME, self->GetVar<uint32_t>(MaxStreakVariable), self->GetObjectID(), "performact_streak");
|
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_MINIGAME, self->GetVar<uint32_t>(MaxStreakVariable), self->GetObjectID(), "performact_streak");
|
||||||
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_ACTIVITY, m_CannonLot, 0, "", self->GetVar<uint32_t>(TotalScoreVariable));
|
missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_ACTIVITY, m_CannonLot, 0, "", self->GetVar<uint32_t>(TotalScoreVariable));
|
||||||
}
|
}
|
||||||
|
|
||||||
LootGenerator::Instance().GiveActivityLoot(player, self, GetGameID(self), self->GetVar<uint32_t>(TotalScoreVariable));
|
LootGenerator::Instance().GiveActivityLoot(player, self, GetGameID(self), self->GetVar<uint32_t>(TotalScoreVariable));
|
||||||
|
|
||||||
StopActivity(self, player->GetObjectID(), self->GetVar<uint32_t>(TotalScoreVariable),
|
StopActivity(self, player->GetObjectID(), self->GetVar<uint32_t>(TotalScoreVariable), self->GetVar<uint32_t>(MaxStreakVariable), percentage);
|
||||||
self->GetVar<uint32_t>(MaxStreakVariable), percentage);
|
|
||||||
self->SetNetworkVar<bool>(AudioFinalWaveDoneVariable, true);
|
self->SetNetworkVar<bool>(AudioFinalWaveDoneVariable, true);
|
||||||
|
|
||||||
// Give the player the model rewards they earned
|
// Give the player the model rewards they earned
|
||||||
@ -600,7 +581,6 @@ void SGCannon::StopGame(Entity *self, bool cancel) {
|
|||||||
self->SetNetworkVar<std::u16string>(u"UI_Rewards",
|
self->SetNetworkVar<std::u16string>(u"UI_Rewards",
|
||||||
GeneralUtils::to_u16string(self->GetVar<uint32_t>(TotalScoreVariable)) + u"_0_0_0_0_0_0"
|
GeneralUtils::to_u16string(self->GetVar<uint32_t>(TotalScoreVariable)) + u"_0_0_0_0_0_0"
|
||||||
);
|
);
|
||||||
self->SetVar<uint32_t>(TotalScoreVariable, 0);
|
|
||||||
|
|
||||||
GameMessages::SendRequestActivitySummaryLeaderboardData(
|
GameMessages::SendRequestActivitySummaryLeaderboardData(
|
||||||
player->GetObjectID(),
|
player->GetObjectID(),
|
||||||
@ -612,9 +592,6 @@ void SGCannon::StopGame(Entity *self, bool cancel) {
|
|||||||
0,
|
0,
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
// The end menu is not in, just send them back to the main world
|
|
||||||
//static_cast<Player*>(player)->SendToZone(1300);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GameMessages::SendActivityStop(self->GetObjectID(), false, cancel, player->GetSystemAddress());
|
GameMessages::SendActivityStop(self->GetObjectID(), false, cancel, player->GetSystemAddress());
|
||||||
|
Loading…
Reference in New Issue
Block a user