军团活动:诸侯混战自动宣战

This commit is contained in:
luying
2022-06-28 22:01:49 +08:00
parent 38621fb153
commit c896b27131
7 changed files with 114 additions and 34 deletions
@@ -2,8 +2,8 @@ import { ServerlistModel, ServerlistType } from "../../db/Serverlist";
import { RoleModel } from "../../db/Role";
import { GUILDACTIVITY } from "../../pubUtils/dicParam";
import { gameData, getGuildAuctionRewards, getCityActivityRewards } from "../../pubUtils/data";
import { getCurDay, nowSeconds, getTimeFun } from "../../pubUtils/timeUtil";
import { GUILD_ACTIVITY_STATUS, GET_POINT_WAYS, GUILD_ACTIVITY_TYPE, REDIS_KEY, AUCTION_SOURCE, MAIL_TYPE, CITY_STATUS, DEBUG_MAGIC_WORD, GUILD_POINT_WAYS, TASK_TYPE, AUCTION_TIME, CITY_ACTIVITY_DOOR, ABI_TYPE, PUSH_ROUTE, RACE_ACTIVITY_STATUS } from "../../consts";
import { getCurDay, nowSeconds, getTimeFun, getZeroPoint } from "../../pubUtils/timeUtil";
import { GUILD_ACTIVITY_STATUS, GET_POINT_WAYS, GUILD_ACTIVITY_TYPE, REDIS_KEY, AUCTION_SOURCE, MAIL_TYPE, CITY_STATUS, DEBUG_MAGIC_WORD, GUILD_POINT_WAYS, TASK_TYPE, AUCTION_TIME, CITY_ACTIVITY_DOOR, ABI_TYPE, PUSH_ROUTE, RACE_ACTIVITY_STATUS, SHOP_REFRESH_TYPE } from "../../consts";
import { Record, UserGuildActivityRecModel } from "../../db/UserGuildActivityRec";
import { GateMembersRec, CityParam, Member, WoodenHorse } from "../../domain/battleField/guildActivity";
import { DicGuildActivity } from "../../pubUtils/dictionary/DicGuildActivity";
@@ -11,7 +11,7 @@ import { getAllServers, getRoleOnlineInfo } from "../redisService";
import { SimpleGuildRankParam, SimpleRoleRankParam, GuildRankInfo, RoleRankInfo } from "../../domain/rank";
import { pinus } from "pinus";
import { GuildActivityRecordModel } from "../../db/GuildActivityRec";
import { genAuction } from "../auctionService";
import { genAuction, guildAuctionPreview } from "../auctionService";
import { sendMailByContent } from "../mailService";
import { GuildActivityCityType, GuildActivityCityModel } from "../../db/GuildActivityCity";
import { DicCityActivity } from "../../pubUtils/dictionary/DicCityActivity";
@@ -27,6 +27,8 @@ import { Attack } from "../../domain/battleField/pvp";
import { getHonourObject } from "../role/rewardService";
import { sendMessageToCityWithSuc, sendMessageToGuildWithSuc, sendMessageToServerWithSuc } from "../pushService";
import { saveGuildGateHpLog } from "../../pubUtils/logUtil";
import { GuildActivityCityDeclareModel } from "../../db/GuildActivityCityDeclare";
import { getRandSingleEelm } from "../../pubUtils/util";
let gateActivityObj: GateActivityObject;
let cityActivityObj: CityActivityObject;
@@ -447,10 +449,10 @@ export async function cityActivitySettleReward(cityId: number, serverId: number)
for (let { rank: guildRank, code: guildCode, name, num } of ranks) {
if (guildRank == 1) {
if (isSuccess) {
console.log(dicCity)
await GuildActivityCityModel.guard(serverId, cityId, dicCity?.nextCity, guildCode, name); // 占领
await GuildActivityCityModel.guard(serverId, cityId, guildCode, name); // 占领
await declareCity(serverId, "", guildCode, dicCity.nextCity, true);
} else {
await GuildActivityCityModel.guard(serverId, cityId, 0, "", ""); // 无人能占领
await GuildActivityCityModel.guard(serverId, cityId, "", ""); // 无人能占领
}
}
let rewards = getGuildAuctionRewards(GUILD_ACTIVITY_TYPE.CITY_ACTIVITY, guildRank, cityId);
@@ -499,6 +501,7 @@ export async function cityActivitySettleReward(cityId: number, serverId: number)
*/
export async function autoDeclare(serverId: number) {
await GuildActivityCityModel.clearGuardAndStartNext(serverId);
await GuildActivityCityDeclareModel.clearDeclare(serverId);
for(let [ cityId ] of gameData.cityActivity) {
let msg = { cityId, declareGuildCode: "", declareCount: 0 };
await sendMessageToCityWithSuc(cityId, PUSH_ROUTE.GUILD_CITY_DECLARE, msg);
@@ -813,4 +816,31 @@ export async function getCityActivityGateHp(serverId: number, cityId: number) {
gateHp = dicCityActivity.hp;
}
return gateHp;
}
export async function declareCity(serverId: number, roleId: string, guildCode: string, cityId: number, isAutoDeclare: boolean) {
let declareTime = Date.now();
let declareInfo = await GuildActivityCityDeclareModel.declareIfNot(serverId, guildCode, cityId, roleId, declareTime, isAutoDeclare);
if(!!declareInfo && declareInfo.declareTime == declareTime) { // 确实没有人宣战过,自己是第一个
let cityRec = await GuildActivityCityModel.declare(serverId, cityId, guildCode);
await sendGuildCityDeclare(cityId, guildCode, cityRec.declareCount);
return true;
}
return false;
}
// 非军团长的团员自动宣战
export async function autoDeclareMyCity(serverId: number, roleId: string, guildCode: string) {
let checkResult = await GuildActivityCityDeclareModel.checkDeclartion(serverId, guildCode);
if(checkResult) return false
let cityIds = gameData.juniorCities;
let cities = await GuildActivityCityModel.findMinDeclareCountCity(serverId, cityIds);
let notDeclaredCitites = cityIds.filter(curCityId => {
return cities.findIndex(city => city.cityId == curCityId) == -1;
});
let cityId = notDeclaredCitites.length > 0? getRandSingleEelm(notDeclaredCitites): cities[0].cityId;
if(!cityId) return false;
return declareCity(serverId, roleId, guildCode, cityId, true);
}