Disallow accepting already completed contracts
This commit is contained in:
@@ -55,7 +55,7 @@ public class ActivateContract : ICloudScriptFunction<FYActivateContractRequest,
|
|||||||
throw new CloudScriptException("CloudScript was not called within a http request");
|
throw new CloudScriptException("CloudScript was not called within a http request");
|
||||||
}
|
}
|
||||||
var userId = context.User.FindAuthUserId();
|
var userId = context.User.FindAuthUserId();
|
||||||
var userData = await _userDataService.FindAsync(userId, userId, new List<string>{"ContractsActive"});
|
var userData = await _userDataService.FindAsync(userId, userId, new List<string>{"ContractsActive", "ContractsOneTimeCompleted"});
|
||||||
var titleData = _titleDataService.Find(new List<string>{"Contracts"});
|
var titleData = _titleDataService.Find(new List<string>{"Contracts"});
|
||||||
|
|
||||||
var contracts = JsonSerializer.Deserialize<Dictionary<string, TitleDataContractInfo>>(titleData["Contracts"]);
|
var contracts = JsonSerializer.Deserialize<Dictionary<string, TitleDataContractInfo>>(titleData["Contracts"]);
|
||||||
@@ -67,6 +67,15 @@ public class ActivateContract : ICloudScriptFunction<FYActivateContractRequest,
|
|||||||
Status = 3 // EYActivateContractRequestStatus::FAILED_GETTING_STATIC_DATA
|
Status = 3 // EYActivateContractRequestStatus::FAILED_GETTING_STATIC_DATA
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
var contractsCompleted = JsonSerializer.Deserialize<FYGetCompletedContractsResult>(userData["ContractsOneTimeCompleted"].Value);
|
||||||
|
if (contractsCompleted.ContractsIDs.Contains(request.ContractID)) {
|
||||||
|
return new FYActivateContractResult
|
||||||
|
{
|
||||||
|
UserID = userId,
|
||||||
|
Error = "Contract is already completed",
|
||||||
|
Status = 1 // EYActivateContractRequestStatus::CONTRACT_OF_THIS_FACTION_IS_ALREADY_ACTIVE
|
||||||
|
};
|
||||||
|
}
|
||||||
// TODO: Contract unlock criteria
|
// TODO: Contract unlock criteria
|
||||||
|
|
||||||
var progress = new int[contract.Objectives.Length];
|
var progress = new int[contract.Objectives.Length];
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
using Prospect.Server.Api.Models.Data;
|
using Prospect.Server.Api.Models.Data;
|
||||||
using Prospect.Server.Api.Services.Auth.Extensions;
|
using Prospect.Server.Api.Services.Auth.Extensions;
|
||||||
@@ -243,6 +243,9 @@ public class ClaimActiveContract : ICloudScriptFunction<FYClaimCompletedActiveCo
|
|||||||
// TODO: Check for next unlock in contracts instead of relying on client
|
// TODO: Check for next unlock in contracts instead of relying on client
|
||||||
var newContracts = new List<FYActiveContractPlayerData>();
|
var newContracts = new List<FYActiveContractPlayerData>();
|
||||||
foreach (var contractIdToUnlock in request.ContractsToUnlock) {
|
foreach (var contractIdToUnlock in request.ContractsToUnlock) {
|
||||||
|
if (contractsCompleted.ContractsIDs.Contains(contractIdToUnlock)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
var contractToUnlock = contracts[contractIdToUnlock];
|
var contractToUnlock = contracts[contractIdToUnlock];
|
||||||
var progress = new int[contractToUnlock.Objectives.Length];
|
var progress = new int[contractToUnlock.Objectives.Length];
|
||||||
// TODO: Automatically set max progress of kill and visit objectives. To remove once kill and visit objectives are reported by the client.
|
// TODO: Automatically set max progress of kill and visit objectives. To remove once kill and visit objectives are reported by the client.
|
||||||
|
|||||||
Reference in New Issue
Block a user