军团活动:诸侯混战自动宣战
This commit is contained in:
@@ -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);
|
||||
}
|
||||
Reference in New Issue
Block a user