🐞 fix(gvg): 联军资源超过等级要求不让收集
This commit is contained in:
@@ -13,7 +13,7 @@ import { nowSeconds } from "../../../pubUtils/timeUtil";
|
||||
import { resResult } from "../../../pubUtils/util";
|
||||
import { getGVGCities } from "../../../services/gvg/gvgBattleService";
|
||||
import { addGVGReward, getProduceCoinCnt, handleGVGCost } from "../../../services/gvg/gvgItemService";
|
||||
import { addGVGActive, addResource, getCostSeedReward, getItemIdOfSeedType, getLeagueFarmShowResult, getLockFieldCnt, getmyContributeRank, rollbackUnPlantFields, lockField, calFarmOutput, sumOutputByResults, lockMineOrForestry, calMineOutput, calForestryOutput, checkItemCanUserInFarm } from "../../../services/gvg/gvgPrepareService";
|
||||
import { addGVGActive, addResource, getCostSeedReward, getItemIdOfSeedType, getLeagueFarmShowResult, getLockFieldCnt, getmyContributeRank, rollbackUnPlantFields, lockField, calFarmOutput, sumOutputByResults, lockMineOrForestry, calMineOutput, calForestryOutput, checkItemCanUserInFarm, checkResourceAndLv } from "../../../services/gvg/gvgPrepareService";
|
||||
import { getGVGConfig, getGVGPeriodData } from "../../../services/gvg/gvgService";
|
||||
import { sendMailByContent } from "../../../services/mailService";
|
||||
import { getAllServerName, getRoleOnlineInfo } from "../../../services/redisService";
|
||||
@@ -182,6 +182,7 @@ export class GVGProduceHandler {
|
||||
|
||||
const cities = await getGVGCities(myLeague);
|
||||
const leaguePrepare = await GVGLeaguePrepareModel.findByLeague(configId, myLeague.leagueCode);
|
||||
if(!checkResourceAndLv(leaguePrepare, GVG_RESOURCE_TYPE.FOOD)) return resResult(STATUS.GVG_LV_RESOURCE);
|
||||
|
||||
const cost: RewardInter[] = [], updateFields: { fieldId: number, seedType: number, index: number, time: number, output: number, outputStr: string }[] = [];
|
||||
for(let { fieldId, seedType, index } of seeds) {
|
||||
@@ -319,6 +320,9 @@ export class GVGProduceHandler {
|
||||
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
|
||||
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
|
||||
|
||||
const leaguePrepare = await GVGLeaguePrepareModel.findByLeague(configId, myLeague.leagueCode);
|
||||
if(!checkResourceAndLv(leaguePrepare, GVG_RESOURCE_TYPE.MINERAL)) return resResult(STATUS.GVG_LV_RESOURCE);
|
||||
|
||||
const hasItem = await GVGUserItemModel.checkItemCnt(configId, myLeague.leagueCode, roleId, itemId, 1);
|
||||
if(!hasItem) return resResult(STATUS.GVG_ITEMS_NOT_ENOUGH);
|
||||
|
||||
@@ -448,6 +452,9 @@ export class GVGProduceHandler {
|
||||
let myLeague = await GVGLeagueModel.findLeagueByGuild(guildCode);
|
||||
if(!myLeague) return resResult(STATUS.GVG_LEAGUE_NOT_EXIST);
|
||||
|
||||
const leaguePrepare = await GVGLeaguePrepareModel.findByLeague(configId, myLeague.leagueCode);
|
||||
if(!checkResourceAndLv(leaguePrepare, GVG_RESOURCE_TYPE.MINERAL)) return resResult(STATUS.GVG_LV_RESOURCE);
|
||||
|
||||
const hasItem = await GVGUserItemModel.checkItemCnt(configId, myLeague.leagueCode, roleId, itemId, 1);
|
||||
if(!hasItem) return resResult(STATUS.GVG_ITEMS_NOT_ENOUGH);
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { BackendSession } from "pinus";
|
||||
import { GVG_ACTIVE_TYPE, GVG_ITEM, GVG_PERIOD, GVG_RESOURCE_TYPE, GVG_SEED_TYPE, GVG_TECH_TYPE, ITEM_CHANGE_REASON, LEAGUE_JOB, MAIL_TYPE, PUSH_ROUTE } from "../../consts";
|
||||
import { GVGLeagueFarmModel, GVGLeagueFarmType } from "../../db/GVGLeagueFarm";
|
||||
import { GVGLeaguePrepareModel, Tech } from "../../db/GVGLeaguePrepare";
|
||||
import { GVGLeaguePrepareModel, GVGLeaguePrepareType, Tech } from "../../db/GVGLeaguePrepare";
|
||||
import { GVGUserDailyDataModel, GVGUserDailyDataType } from "../../db/GVGUserDailyData";
|
||||
import { Contribute, GVGUserDataModel } from "../../db/GVGUserData";
|
||||
import { GVGUserItemModel } from "../../db/GVGUserItem";
|
||||
@@ -156,6 +156,23 @@ export async function addResource(myLeague: GVGLeagueType, roleId: string, roleN
|
||||
return { resources: league.resources, leagueLv: league.lv, myContribute }
|
||||
}
|
||||
|
||||
export function checkResourceAndLv(gvgPrepare: GVGLeaguePrepareType, type: GVG_RESOURCE_TYPE) {
|
||||
if(!gvgPrepare) return true;
|
||||
let { lv, resources } = gvgPrepare;
|
||||
let dicGVGLeagueLv = gameData.gvgLeagueLv.get(lv);
|
||||
if(!dicGVGLeagueLv) return false;
|
||||
|
||||
if(type == GVG_RESOURCE_TYPE.FOOD) {
|
||||
return resources.food < dicGVGLeagueLv.food;
|
||||
} else if (type == GVG_RESOURCE_TYPE.MINERAL) {
|
||||
return resources.mineral < dicGVGLeagueLv.mineral;
|
||||
} else if (type == GVG_RESOURCE_TYPE.WOOD) {
|
||||
return resources.wood < dicGVGLeagueLv.wood;
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
function getResourceCnt(resourceType: GVG_RESOURCE_TYPE, count: number) {
|
||||
switch(resourceType) {
|
||||
case GVG_RESOURCE_TYPE.FOOD:
|
||||
|
||||
Reference in New Issue
Block a user