@@ -26,21 +26,21 @@ let gateActivityObj: GateActivityObject;
let cityActivityObj : CityActivityObject ;
let raceActivityObj : RaceActivityObject ;
export function getGateActivityObj() {
if ( ! gateActivityObj ) {
if ( ! gateActivityObj ) {
gateActivityObj = new GateActivityObject ( ) ;
}
return gateActivityObj ;
}
export function getCityActivityObj() {
if ( ! cityActivityObj ) {
if ( ! cityActivityObj ) {
cityActivityObj = new CityActivityObject ( ) ;
}
return cityActivityObj ;
}
export function getRaceActivityObj() {
if ( ! raceActivityObj ) {
if ( ! raceActivityObj ) {
raceActivityObj = new RaceActivityObject ( ) ;
}
return raceActivityObj ;
@@ -52,10 +52,10 @@ export function getRaceActivityObj() {
export async function setMedianCe() {
let servers = await ServerlistModel . getAllServerList ( ) ;
for ( let server of servers ) {
if ( server . serverType == 'official' ) {
for ( let server of servers ) {
if ( server . serverType == 'official' ) {
let medianRole = await RoleModel . getMedianRole ( server . id ) ;
if ( ! medianRole ) {
if ( ! medianRole ) {
await ServerlistModel . updateByServerId ( server . id , { medianCe : GUILDACTIVITY.GATEACTIVITY_ENEMYCE } ) ;
} else {
let { topLineup } = medianRole ;
@@ -75,7 +75,7 @@ export async function setMedianCe() {
*/
export async function getMedianCe ( serverId : number ) {
let server = await ServerlistModel . findByServerId ( serverId ) ;
if ( server ) {
if ( server ) {
return server . medianCe ;
}
return GUILDACTIVITY . GATEACTIVITY_ENEMYCE ;
@@ -87,7 +87,7 @@ export async function getMedianCe(serverId: number) {
*/
export function getGuildActivityStatus ( id : number ) {
let dicGuildActivity = gameData . guildActivity . get ( id ) ;
if ( ! dicGuildActivity ) return false ;
if ( ! dicGuildActivity ) return false ;
return getGuildActivityByDic ( dicGuildActivity ) ;
}
@@ -100,7 +100,7 @@ export function getGuildActivityByDic(dicGuildActivity: DicGuildActivity) {
let status = 0 , time = 0 ;
let now = nowSeconds ( ) ;
if ( now >= countdownTime && now < startTime ) {
if ( now >= countdownTime && now < startTime ) {
status = GUILD_ACTIVITY_STATUS . WAITING ;
time = startTime - now ;
} else if ( now >= startTime && now < endTime ) {
@@ -126,27 +126,27 @@ export function getGuildActivityByDic(dicGuildActivity: DicGuildActivity) {
*/
export function getRecordScore ( aid : number , round : number , record : { round : number , dataId : number } [ ] , memberRecord : GateMembersRec ) {
let dicGuildActivity = gameData . guildActivity . get ( aid ) ;
if ( ! dicGuildActivity ) return false ;
if ( ! dicGuildActivity ) return false ;
let dicWarJson = gameData . warJson . get ( dicGuildActivity . warid ) ;
if ( ! dicWarJson ) return false ;
if ( ! dicWarJson ) return false ;
let { round : curRound , enemies : historyEnemies } = memberRecord ;
let { round : curRound , enemies : historyEnemies } = memberRecord ;
let sum = 0 , newRecords = new Array < Record > ( ) ;
for ( let { round , dataId } of record ) {
if ( ! historyEnemies . includes ( dataId ) ) {
for ( let { round , dataId } of record ) {
if ( ! historyEnemies . includes ( dataId ) ) {
let enemy = dicWarJson . find ( cur = > cur . dataId == dataId ) ;
let enemyType = enemy . enemyType ;
let score = gameData . gateActivityPoint . get ( enemyType ) ;
newRecords . push ( { round , dataId , score , enemyType } ) ;
newRecords . push ( { round , dataId , score , enemyType } ) ;
sum += score ;
historyEnemies . push ( dataId ) ;
historyEnemies . push ( dataId ) ;
}
}
for ( let i = curRound + 1 ; i <= round ; i ++ ) {
for ( let i = curRound + 1 ; i <= round ; i ++ ) {
sum += gameData . gateActivityPoint . get ( GET_POINT_WAYS . ROUND_START ) ;
memberRecord . round = i ;
}
@@ -158,15 +158,15 @@ export async function getGateActivityRank(guildCode: string, serverId: number, r
let r = new Rank ( REDIS_KEY . GATE_ACTIVITY , { serverId } , true ) ;
r . setGenerFieldsFun ( generGuildActivityRankField ) ;
let { ranks : guildRank , myRank : myGuildRank } = await r . getRankListWithMyRank ( { guildCode } ) ;
if ( ! myGuildRank ) {
let { ranks : guildRank , myRank : myGuildRank } = await r . getRankListWithMyRank ( { guildCode } ) ;
if ( ! myGuildRank ) {
myGuildRank = await r . generMyRankWithGuild ( guildCode , 0 , 0 ) ;
}
let myR = new Rank ( REDIS_KEY . USER_GATE_ACTIVITY , { serverId , guildCode } ) ;
myR . setGenerFieldsFun ( generGuildActivityMemberRankField ) ;
let { ranks : memberRank , myRank : myMemberRank } = await r . getRankListWithMyRank ( { roleId } ) ;
if ( roleName && ! myMemberRank ) {
let { ranks : memberRank , myRank : myMemberRank } = await r . getRankListWithMyRank ( { roleId } ) ;
if ( roleName && ! myMemberRank ) {
myMemberRank = await r . generMyRankWithRole ( roleId , 0 , 0 ) ;
}
@@ -177,15 +177,15 @@ export async function getCityActivityRank(guildCode: string, serverId: number, c
let r = new Rank ( REDIS_KEY . CITY_ACTIVITY , { serverId , cityId } , true ) ;
r . setGenerFieldsFun ( generGuildActivityRankField ) ;
let { ranks : guildRank , myRank : myGuildRank } = await r . getRankListWithMyRank ( { guildCode } ) ;
if ( ! myGuildRank ) {
let { ranks : guildRank , myRank : myGuildRank } = await r . getRankListWithMyRank ( { guildCode } ) ;
if ( ! myGuildRank ) {
myGuildRank = await r . generMyRankWithGuild ( guildCode , 0 , 0 ) ;
}
let myR = new Rank ( REDIS_KEY . USER_CITY_ACTIVITY , { serverId , guildCode } ) ;
myR . setGenerFieldsFun ( generGuildActivityMemberRankField ) ;
let { ranks : memberRank , myRank : myMemberRank } = await r . getRankListWithMyRank ( { roleId } ) ;
if ( roleName && ! myMemberRank ) {
let { ranks : memberRank , myRank : myMemberRank } = await r . getRankListWithMyRank ( { roleId } ) ;
if ( roleName && ! myMemberRank ) {
myMemberRank = await r . generMyRankWithRole ( roleId , 0 , 0 ) ;
}
@@ -195,8 +195,8 @@ export async function getCityActivityRank(guildCode: string, serverId: number, c
export async function getRaceActivityRank ( guildCode : string , serverId : number ) {
let r = new Rank ( REDIS_KEY . RACE_ACTIVITY , { serverId } , true ) ;
r . setGenerFieldsFun ( generField ) ;
let { myRank , ranks } = await r . getRankListWithMyRank ( { guildCode } ) ;
if ( ! myRank ) {
let { myRank , ranks } = await r . getRankListWithMyRank ( { guildCode } ) ;
if ( ! myRank ) {
myRank = await r . generMyRankWithGuild ( guildCode , 0 , 0 ) ;
}
@@ -206,7 +206,7 @@ export async function getRaceActivityRank(guildCode: string, serverId: number) {
function generField ( params : GuildRankInfo ) {
let { rank , code , name , num , time } = params ;
let param = new SimpleGuildRankWithTimeParam ( rank , code , name , { distance : num / 1000 , time : time * 1000 , startTime : 0 , durability : 0 } ) ;
let param = new SimpleGuildRankWithTimeParam ( rank , code , name , { distance : num / 1000 , time : time * 1000 , startTime : 0 , durability : 0 } ) ;
return param ;
}
@@ -217,16 +217,16 @@ function generField(params: GuildRankInfo) {
*/
export async function getWoodenHorseList ( guildCode : string , serverId : number ) {
let obj = getRaceActivityObj ( ) ;
let r = new Rank ( REDIS_KEY . RACE_ACTIVITY , { serverId } , true , 5 ) ;
let r = new Rank ( REDIS_KEY . RACE_ACTIVITY , { serverId } , true , 5 ) ;
let myRank = await r . getMyRank ( { guildCode } ) ;
let startRank = myRank - 2 > 0 ? myRank - 2 : 1 ;
let myRank = await r . getMyRank ( { guildCode } ) ;
let startRank = myRank - 2 > 0 ? myRank - 2 : 1 ;
let endRank = startRank + 4 ;
let range = < GuildRankInfo [ ] > await r . getRankByRange ( startRank , endRank ) ;
let range = < GuildRankInfo [ ] > await r . getRankByRange ( startRank , endRank ) ;
let woodenHorseList = new Array < WoodenHorse > ( ) ;
for ( let { code } of range ) {
for ( let { code } of range ) {
let woodenHorse = await obj . getWoodenHorse ( code , serverId ) ;
if ( woodenHorse ) {
if ( woodenHorse ) {
woodenHorseList . push ( woodenHorse ) ;
}
}
@@ -248,13 +248,13 @@ function generGuildActivityMemberRankField(param: RoleRankInfo) {
* @param aid 活动类型
*/
export async function sendAllGuildRanks ( aid : number ) {
if ( aid == GUILD_ACTIVITY_TYPE . GATE_ACTIVITY ) {
if ( aid == GUILD_ACTIVITY_TYPE . GATE_ACTIVITY ) {
let obj = getGateActivityObj ( ) ;
let guilds = obj . getGuilds ( ) ;
for ( let [ serverId , guildCodes ] of guilds ) {
for ( let [ serverId , guildCodes ] of guilds ) {
// TODO 不需要每个军团都排序一次
for ( let guildCode of guildCodes ) {
let ranks = await getGateActivityRank ( guildCode , serverId ) ;
for ( let guildCode of guildCodes ) {
let ranks = await getGateActivityRank ( guildCode , serverId ) ;
let chatSid = await getGuildChannelSid ( guildCode ) ;
pinus . app . rpc . chat . guildRemote . pushRank . toServer ( chatSid , guildCode , ranks ) ;
}
@@ -263,8 +263,8 @@ export async function sendAllGuildRanks(aid: number) {
let obj = getCityActivityObj ( ) ;
let { cities } = obj . getAllCities ( ) ;
// console.log(JSON.stringify(cities));
for ( let { serverId , cityId , guildCodes } of cities ) {
for ( let guildCode of guildCodes ) {
for ( let { serverId , cityId , guildCodes } of cities ) {
for ( let guildCode of guildCodes ) {
let ranks = await getCityActivityRank ( guildCode , serverId , cityId ) ;
let chatSid = await getGuildChannelSid ( guildCode ) ;
pinus . app . rpc . chat . guildRemote . pushCityActRank . toServer ( chatSid , guildCode , ranks ) ;
@@ -279,11 +279,11 @@ export async function sendAllGuildRanks(aid: number) {
*/
export async function sendGuildActEndMsg ( aid : number ) {
if ( aid == GUILD_ACTIVITY_TYPE . GATE_ACTIVITY ) {
if ( aid == GUILD_ACTIVITY_TYPE . GATE_ACTIVITY ) {
let obj = getGateActivityObj ( ) ;
let guilds = obj . getGuilds ( ) ;
for ( let [ serverId , guildCodes ] of guilds ) {
for ( let guildCode of guildCodes ) {
for ( let [ serverId , guildCodes ] of guilds ) {
for ( let guildCode of guildCodes ) {
await gateActivitySettleReward ( guildCode , serverId ) ;
}
}
@@ -291,16 +291,16 @@ export async function sendGuildActEndMsg(aid: number) {
} else if ( aid == GUILD_ACTIVITY_TYPE . CITY_ACTIVITY ) {
let obj = getCityActivityObj ( ) ;
let { cities } = obj . getAllCities ( ) ;
for ( let { serverId , cityId } of cities ) {
for ( let { serverId , cityId } of cities ) {
await cityActivitySettleReward ( cityId , serverId ) ;
}
cityActivityObj = new CityActivityObject ( ) ;
} else if ( aid == GUILD_ACTIVITY_TYPE . RACE_ACTIVITY ) {
let obj = getRaceActivityObj ( ) ;
for ( let { guildCode , serverId } of obj . guildList ) {
for ( let { guildCode , serverId } of obj . guildList ) {
let woodenHorse = await obj . getWoodenHorse ( guildCode , serverId ) ;
if ( woodenHorse && woodenHorse . status != 0 ) {
if ( woodenHorse && woodenHorse . status != 0 ) {
await raceActivitySettleReward ( guildCode , woodenHorse ) ;
}
}
@@ -310,8 +310,8 @@ export async function sendGuildActEndMsg(aid: number) {
// 全服发送结束新号
export async function sendEndMsgToAll() {
let serverlist = await getAllServers ( ) ;
for ( let serverId of serverlist ) {
let serverlist = await getAllServers ( ) ;
for ( let serverId of serverlist ) {
let chatSid = await getWorldChannelSid ( serverId ) ;
pinus . app . rpc . chat . chatRemote . sendGuildActivityEnd . toServer ( chatSid , serverId ) ;
}
@@ -336,7 +336,7 @@ export async function sendSingleCityActEndMsg(cityId: number, serverId: number)
let chatSid = await getCityChannelSid ( cityId ) ;
let obj = getCityActivityObj ( ) ;
let guildCodes = obj . getGuildsInCity ( serverId , cityId ) ;
for ( let guildCode of guildCodes ) {
for ( let guildCode of guildCodes ) {
pinus . app . rpc . chat . guildRemote . sendGuildActivityEnd . toServer ( chatSid , guildCode ) ;
}
await cityActivitySettleReward ( cityId , serverId ) ;
@@ -364,14 +364,14 @@ export async function gateActivitySettleReward(guildCode: string, serverId: numb
let { gateHp , members } = obj . getObj ( guildCode , serverId ) ;
let r = new Rank ( REDIS_KEY . GATE_ACTIVITY , { serverId } , true ) ;
let rank = await r . getMyRank ( { guildCode } ) ;
let guildScore = await r . getMyScore ( { guildCode } ) ;
let rank = await r . getMyRank ( { guildCode } ) ;
let guildScore = await r . getMyScore ( { guildCode } ) ;
let rewards = getGuildAuctionRewards ( GUILD_ACTIVITY_TYPE . GATE_ACTIVITY , rank ) ;
let rec = await GuildActivityRecordModel . updateInfo ( guildCode , {
isSuccess : gateHp > 0 ,
isCompleted : true ,
let rec = await GuildActivityRecordModel . updateInfo ( guildCode , {
isSuccess : gateHp > 0 ,
isCompleted : true ,
rank , score : guildScore , remainGateHp : gateHp ,
members , memberCnt : members.length ,
auctionType : AUCTION_SOURCE.GATE ,
@@ -382,12 +382,12 @@ export async function gateActivitySettleReward(guildCode: string, serverId: numb
let myR = new Rank ( REDIS_KEY . USER_GATE_ACTIVITY , { serverId , guildCode } ) ;
let ranks = < RoleRankInfo [ ] > await myR . getRankByRange ( ) ;
for ( let { rank , roleId , num : myScore } of ranks ) {
let ranks = < RoleRankInfo [ ] > await myR . getRankByRange ( ) ;
for ( let { rank , roleId , num : myScore } of ranks ) {
let honour = dic . honour + myScore * GUILDACTIVITY . GATEACTIVITY_HONOUR_RATIO ;
await updateUserRecAndSendHonour ( honour , myScore , rank , roleId , members ) ;
}
for ( let { roleId } of members ) { // 只参加了,没有分数的人
for ( let { roleId } of members ) { // 只参加了,没有分数的人
await updateUserRecAndSendHonour ( dic . honour , 0 , 0 , roleId , members ) ;
}
@@ -416,15 +416,15 @@ export async function cityActivitySettleReward(cityId: number, serverId: number)
let obj = getCityActivityObj ( ) ;
let dicCity = gameData . cityActivity . get ( cityId ) ;
if ( ! dicCity ) return ;
if ( ! dicCity ) return ;
let gateHp = obj . getGateHpAndInc ( serverId , cityId , dicCity . hp ) ;
let isSuccess = gateHp <= 0 ; // 血条未击破则没有占领军团
let r = new Rank ( REDIS_KEY . CITY_ACTIVITY , { serverId , cityId } , true ) ;
let ranks = < GuildRankInfo [ ] > await r . getRankByRange ( ) ;
for ( let { rank : guildRank , code : guildCode , name , num } of ranks ) {
if ( guildRank == 1 ) {
if ( isSuccess ) {
let ranks = < GuildRankInfo [ ] > await r . getRankByRange ( ) ;
for ( let { rank : guildRank , code : guildCode , name , num } of ranks ) {
if ( guildRank == 1 ) {
if ( isSuccess ) {
await GuildActivityCityModel . guard ( serverId , cityId , guildCode , name ) ; // 占领
} else {
await GuildActivityCityModel . guard ( serverId , cityId , "" , "" ) ; // 无人能占领
@@ -446,14 +446,14 @@ export async function cityActivitySettleReward(cityId: number, serverId: number)
let dic = gameData . guildActivity . get ( GUILD_ACTIVITY_TYPE . CITY_ACTIVITY ) ;
let myR = new Rank ( REDIS_KEY . USER_GATE_ACTIVITY , { serverId , guildCode } ) ;
let ranks = < RoleRankInfo [ ] > await myR . getRankByRange ( ) ;
let ranks = < RoleRankInfo [ ] > await myR . getRankByRange ( ) ;
let userRank = 0 ;
for ( let { rank , roleId , num : myScore } of ranks ) {
for ( let { rank , roleId , num : myScore } of ranks ) {
let honour = dic . honour + getCityActivityRewards ( dicCity . type , guildRank , rank ) ;
await updateUserRecAndSendHonour ( honour , myScore , rank , roleId , members ) ;
userRank = rank ;
}
for ( let { roleId } of members ) { // 只参加了,没有分数的人
for ( let { roleId } of members ) { // 只参加了,没有分数的人
let honour = dic . honour + getCityActivityRewards ( dicCity . type , guildRank , userRank ) ;
await updateUserRecAndSendHonour ( honour , 0 , 0 , roleId , members ) ;
}
@@ -488,18 +488,18 @@ export async function autoDeclare(serverId: number) {
* @param sourceCode 活动唯一code
*/
export async function participants ( guildCode : string , sourceType : number , sourceCode : string ) {
if ( sourceType == AUCTION_SOURCE . BOSS ) {
if ( sourceType == AUCTION_SOURCE . BOSS ) {
let rec = await BossInstanceModel . findBySourceCode ( guildCode , sourceCode ) ;
if ( ! rec ) return [ ] ;
if ( ! rec ) return [ ] ;
return rec . ranks . map ( cur = > {
return { roleId : cur.roleId , job : cur.job }
} ) ;
} else {
let rec = await GuildActivityRecordModel . findBySourceCode ( guildCode , sourceType , sourceCode ) ;
if ( ! rec ) return [ ] ;
return rec . members || [ ] ;
if ( ! rec ) return [ ] ;
return rec . members || [ ] ;
}
}
@@ -511,14 +511,14 @@ export async function participants(guildCode: string, sourceType: number, source
export function getCities ( guildCode : string , dbCities : GuildActivityCityType [ ] ) {
let cities = new Array < CityParam > ( ) ;
for ( let [ cityId , dic ] of gameData . cityActivity ) {
for ( let [ cityId , dic ] of gameData . cityActivity ) {
let param = new CityParam ( cityId ) ;
let curCity = dbCities . find ( cur = > cur . cityId == cityId ) ;
if ( curCity ) {
param . guardGuildCode = curCity . guardGuildCode || "" ;
param . guardGuildName = curCity . guardGuildName || "" ;
param . declareCount = curCity . declareCount || 0 ;
if ( curCity ) {
param . guardGuildCode = curCity . guardGuildCode || "" ;
param . guardGuildName = curCity . guardGuildName || "" ;
param . declareCount = curCity . declareCount || 0 ;
}
param . status = getCityStatus ( guildCode , cityId , dic , dbCities ) ;
@@ -539,22 +539,22 @@ export function getCityStatus(guildCode: string, cityId: number, dic: DicCityAct
let d = getCurDay ( true ) ;
let { week , preCity } = dic ;
let activityStatus = getGuildActivityStatus ( GUILD_ACTIVITY_TYPE . CITY_ACTIVITY ) ;
if ( ! activityStatus ) {
if ( ! activityStatus ) {
return CITY_STATUS . NOT_OPEN
}
let dicGuildActivity = gameData . guildActivity . get ( GUILD_ACTIVITY_TYPE . CITY_ACTIVITY ) ;
let { openDay } = dicGuildActivity ;
let curIndex = openDay . indexOf ( week [ 0 ] ) ;
let startDay = openDay [ curIndex - 1 ] || 0 ;
let endDay = openDay [ openDay . length - 1 ] || 0 ;
if ( d >= startDay && d <= endDay ) status = CITY_STATUS . CAN_DECLARE ;
if ( d == startDay && activityStatus . status != GUILD_ACTIVITY_STATUS . END ) status = CITY_STATUS . NOT_OPEN ;
if ( d == endDay && activityStatus . status == GUILD_ACTIVITY_STATUS . END ) status = CITY_STATUS . NOT_OPEN ;
let startDay = openDay [ curIndex - 1 ] || 0 ;
let endDay = openDay [ openDay . length - 1 ] || 0 ;
if ( d >= startDay && d <= endDay ) status = CITY_STATUS . CAN_DECLARE ;
if ( d == startDay && activityStatus . status != GUILD_ACTIVITY_STATUS . END ) status = CITY_STATUS . NOT_OPEN ;
if ( d == endDay && activityStatus . status == GUILD_ACTIVITY_STATUS . END ) status = CITY_STATUS . NOT_OPEN ;
let curCity = dbCities . find ( cur = > cur . cityId == cityId ) ;
if ( curCity ) {
if ( curCity . guardGuildCode == guildCode ) {
if ( curCity ) {
if ( curCity . guardGuildCode == guildCode ) {
status = CITY_STATUS . GUARD ;
} else if ( curCity . declareGuilds . includes ( guildCode ) ) {
status = CITY_STATUS . DECLARED ;
@@ -590,39 +590,39 @@ export async function calWoodenHorseAndSend(serverId: number) {
}
let r = new Rank ( REDIS_KEY . RACE_ACTIVITY , { serverId } , true ) ;
r . setGenerFieldsFun ( fun ) ;
let ranks = < GuildRankInfo [ ] > await r . getRankByRange ( ) ;
let ranks = < GuildRankInfo [ ] > await r . getRankByRange ( ) ;
let map = new Map < number , WoodenHorse [ ] > ( ) ;
let guildRank = new Array < SimpleGuildRankWithTimeParam > ( ) ;
let l = ranks . length > 10? 10 : ranks.length ;
for ( let i = 0 ; i < l ; i ++ ) {
let { rank , code , name , num } = ranks [ i ]
let l = ranks . length > 10 ? 10 : ranks.length ;
for ( let i = 0 ; i < l ; i ++ ) {
let { rank , code , name , num } = ranks [ i ]
let _obj = await obj . getWoodenHorse ( code , serverId ) ;
let param = new SimpleGuildRankWithTimeParam ( rank , code , name , _obj ) ;
guildRank . push ( param ) ;
}
// 找到往前和往后2艘船
for ( let i = 0 ; i < ranks . length ; i ++ ) {
for ( let i = 0 ; i < ranks . length ; i ++ ) {
let { code } = ranks [ i ] ;
for ( let j = i ; j <= i + 2 ; j ++ ) {
if ( j <= ranks . length - 1 && ! map . has ( j ) ) {
for ( let j = i ; j <= i + 2 ; j ++ ) {
if ( j <= ranks . length - 1 && ! map . has ( j ) ) {
map . set ( j , new Array < WoodenHorse > ( ) ) ;
}
}
for ( let [ rank , woodenHorseList ] of map ) {
for ( let [ rank , woodenHorseList ] of map ) {
let limit = 5 ;
if ( rank - 2 < 0 ) limit += rank - 2 ;
if ( rank + 2 > ranks . length - 1 ) limit -= ( rank + 2 ) - ( ranks . length - 1 ) ;
if ( rank - 2 < 0 ) limit += rank - 2 ;
if ( rank + 2 > ranks . length - 1 ) limit -= ( rank + 2 ) - ( ranks . length - 1 ) ;
let woodenHorse = await obj . getWoodenHorse ( code , serverId ) ;
if ( ! ! woodenHorse ) {
if ( ! ! woodenHorse ) {
map . get ( rank ) . push ( woodenHorse ) ;
} else {
limit -- ; // 理论上不能出现没有woodenHorse的情况, 但是如果出现了, 以防无返回
limit -- ; // 理论上不能出现没有woodenHorse的情况, 但是如果出现了, 以防无返回
}
let len = map . get ( rank ) . length ;
if ( len >= limit ) {
if ( len >= limit ) {
// 发送
// console.log('send', woodenHorseList.length);
let curRank = ranks [ rank ] ;
@@ -630,7 +630,7 @@ export async function calWoodenHorseAndSend(serverId: number) {
let myGuildRank = new SimpleGuildRankWithTimeParam ( curRank . rank , curRank . code , curRank . name , wh ) ;
let chatSid = await getGuildChannelSid ( curRank . code ) ;
let events = obj . getEvents ( curRank . code , wh? wh.distance : 0 ) ;
let events = obj . getEvents ( curRank . code , wh ? wh.distance : 0 ) ;
pinus . app . rpc . chat . guildRemote . pushRaceHorseUpdate . toServer ( chatSid , curRank . code , woodenHorseList , { guildRank , myGuildRank } , events ) ;
map . delete ( rank ) ;
@@ -638,7 +638,7 @@ export async function calWoodenHorseAndSend(serverId: number) {
}
}
return ;
return ;
}
/**
@@ -647,7 +647,7 @@ export async function calWoodenHorseAndSend(serverId: number) {
export async function sendRaceStartMsg ( serverId : number ) {
let obj = getRaceActivityObj ( ) ;
obj . startRace ( ) ; // 设置开启活动
let chatSid = await getWorldChannelSid ( serverId ) ;
pinus . app . rpc . chat . chatRemote . sendRaceActivityStart . toServer ( chatSid , serverId ) ;
await calWoodenHorseAndSend ( serverId ) ;
@@ -665,27 +665,36 @@ export async function raceActivitySettleReward(guildCode: string, woodenHorse: W
// 计算排名,计算耐久,发送奖励
let r = new Rank ( REDIS_KEY . RACE_ACTIVITY , { serverId } , true ) ;
let isSuccess = distance >= GUILDACTIVITY . RACEACTIVITY_LENGTH ; // 血条未击破则没有占领军团
let myGuildRank = await r . getMyRank ( { guildCode } ) ;
let myGuildRank = await r . getMyRank ( { guildCode } ) ;
let members = obj . getMembersOfGuild ( guildCode ) ;
let rewards = getGuildAuctionRewards ( GUILD_ACTIVITY_TYPE . RACE_ACTIVITY , myGuildRank ) ;
let rec = await GuildActivityRecordModel . updateInfo ( guildCode , {
let rec = await GuildActivityRecordModel . updateInfo ( guildCode , {
memberCnt : members.length , members ,
isSuccess , isCompleted : true , rank : myGuildRank ,
rewards ,
woodenHorse ,
woodenHorse ,
} ) ;
if ( rec ) {
if ( rec ) {
// 奖励加入拍卖行
await genAuction ( guildCode , AUCTION_SOURCE . GATE , rec . code , serverId , rewards ) ;
let dic = gameData . guildActivity . get ( GUILD_ACTIVITY_TYPE . RACE_ACTIVITY ) ;
let honour = dic . honour + Math . floor ( durability * GUILDACTIVITY . RACEACTIVITY_DURABILITY_REWARD ) ;
for ( let { roleId } of members ) {
for ( let { roleId } of members ) {
await updateUserRecAndSendHonour ( honour , 0 , myGuildRank , roleId , members ) ;
}
}
// 删除数据
obj . deleteFromList ( guildCode ) ;
}
/**
* 军团练兵场通关层数后全团发送弹窗礼包
* @param guildCode 军团code
*/
export async function sendPopUpActivityData ( guildCode : string , serverId : number , data : any [ ] ) {
let chatSid = await getGuildChannelSid ( guildCode ) ;
pinus . app . rpc . chat . guildRemote . sendPopUpActivity . toServer ( chatSid , guildCode , data ) ;
}