public void TestGroupCountForRace() { var contract = contractResource.contracts.GetContract("ct001"); KillNPCGroupContractData killNPCGroupContract = contract as KillNPCGroupContractData; Assert.AreEqual(4, killNPCGroupContract.GetGroupCount(Race.Humans)); Assert.AreEqual(4, killNPCGroupContract.GetGroupCount(Race.Criptizoids)); Assert.AreEqual(3, killNPCGroupContract.GetGroupCount(Race.Borguzands)); }
public override BaseContract Generate(Race race, int level, string sourceWorld, ContractManager manager, IContractResource resource) { var allowedByLevelAndCategoryContracts = resource.contracts.GetContracts(ContractCategory.killNPCGroup, level); if (allowedByLevelAndCategoryContracts.Count == 0) { return(null); } List <KillNPCGroupContractData> contractsWithAllowedGroups = new List <KillNPCGroupContractData>(); foreach (var c in allowedByLevelAndCategoryContracts) { var killGroupContract = c as KillNPCGroupContractData; if (killGroupContract != null) { if (killGroupContract.HasGroups(race, level)) { contractsWithAllowedGroups.Add(killGroupContract); } } } if (contractsWithAllowedGroups.Count == 0) { return(null); } KillNPCGroupContractData resultContractData = contractsWithAllowedGroups.AnyElement(); var groupData = resultContractData.GetRandomGroup(race, level); if (groupData == null) { return(null); } KillNPCGroupContract contract = new KillNPCGroupContract(resultContractData.id, 0, sourceWorld, manager, groupData.count, groupData.name, groupData.RandomZone()); return(contract); }