战场:扫荡奖励
This commit is contained in:
@@ -318,7 +318,7 @@ export class NormalBattleHandler {
|
|||||||
|
|
||||||
// 发奖励
|
// 发奖励
|
||||||
let warReward = new WarReward(roleId, roleName, sid, battleId, true);
|
let warReward = new WarReward(roleId, roleName, sid, battleId, true);
|
||||||
let result = await warReward.saveReward(count);
|
let result = await warReward.saveReward(count, true);
|
||||||
|
|
||||||
let actordata = await roleLevelup(KING_EXP_RATIO_TYPE.BATTLE, roleId, warInfo.kingExp * count, session)// 主公升级经验
|
let actordata = await roleLevelup(KING_EXP_RATIO_TYPE.BATTLE, roleId, warInfo.kingExp * count, session)// 主公升级经验
|
||||||
|
|
||||||
@@ -339,7 +339,7 @@ export class NormalBattleHandler {
|
|||||||
|
|
||||||
return resResult(STATUS.SUCCESS, {
|
return resResult(STATUS.SUCCESS, {
|
||||||
battleId, count,
|
battleId, count,
|
||||||
battleGoods: result,
|
battleGoods: result,
|
||||||
dailyNum, dungeonNum,
|
dailyNum, dungeonNum,
|
||||||
...actordata
|
...actordata
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -293,6 +293,25 @@ export function combineItems(items: { id?: number, count?: number }[]) {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function combineItemAndEquips(items: { id?: number, count?: number }[]) {
|
||||||
|
let result: { id: number, count: number }[] = [];
|
||||||
|
for(let { id, count = 1 } of items) {
|
||||||
|
let dicGoods = gameData.goods.get(id);
|
||||||
|
let dicItid = ITID.get(dicGoods.itid);
|
||||||
|
if(dicItid.table != 'equip') {
|
||||||
|
let index = result.findIndex(cur => cur.id == id);
|
||||||
|
if(index == -1) {
|
||||||
|
result.push({ id, count });
|
||||||
|
} else {
|
||||||
|
result[index].count += count;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
result.push({ id, count });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
function sortItems(goods: ItemInter[], handleType: HANDLE_REWARD_TYPE) {
|
function sortItems(goods: ItemInter[], handleType: HANDLE_REWARD_TYPE) {
|
||||||
let items: { id: number, count: number }[] = []; // 可叠加道具
|
let items: { id: number, count: number }[] = []; // 可叠加道具
|
||||||
let equips: { seqId?: number, id?: number, hid?: number }[] = []; // 不可叠加装备
|
let equips: { seqId?: number, id?: number, hid?: number }[] = []; // 不可叠加装备
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
import { BattleDropModel } from '../db/BattleDrop';
|
import { BattleDropModel } from '../db/BattleDrop';
|
||||||
import { getRandEelmWithWeight, getRandSingleEelm } from '../pubUtils/util';
|
import { getRandEelmWithWeight, getRandSingleEelm } from '../pubUtils/util';
|
||||||
import { BATTLE_REWARD_TYPE, BLUEPRT_CONST } from '../consts';
|
import { BATTLE_REWARD_TYPE, BLUEPRT_CONST } from '../consts';
|
||||||
import { addItems } from './rewardService';
|
import { addItems, combineItemAndEquips } from './rewardService';
|
||||||
import { BattleBlueprtDropModel } from '../db/BattleBlueprtDrop'
|
import { BattleBlueprtDropModel } from '../db/BattleBlueprtDrop'
|
||||||
import { RoleModel } from '../db/Role';
|
import { RoleModel } from '../db/Role';
|
||||||
import { gameData } from '../pubUtils/data';
|
import { gameData } from '../pubUtils/data';
|
||||||
@@ -22,7 +22,7 @@ export class WarReward {
|
|||||||
private condition: Map<number, boolean>;
|
private condition: Map<number, boolean>;
|
||||||
private warInfo: DicWar;
|
private warInfo: DicWar;
|
||||||
private isSuccess: boolean;
|
private isSuccess: boolean;
|
||||||
private rewards: Array<{type: number, id: number, count: number, times: number}>;
|
private rewards: Array<{type?: number, id: number, count: number, times?: number}>;
|
||||||
private fixReward: Array<{id: number, count: number}>;
|
private fixReward: Array<{id: number, count: number}>;
|
||||||
private conditionReward: Array<{id: number, count: number, condition: number}>;
|
private conditionReward: Array<{id: number, count: number, condition: number}>;
|
||||||
private randomReward: Array<{id: number, count: number, frequency: number}>;
|
private randomReward: Array<{id: number, count: number, frequency: number}>;
|
||||||
@@ -169,7 +169,7 @@ export class WarReward {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async saveReward(num: number) {
|
public async saveReward(num: number, combine: boolean = false) {
|
||||||
this.rewards = new Array();
|
this.rewards = new Array();
|
||||||
// let warType = this.warInfo.warType;
|
// let warType = this.warInfo.warType;
|
||||||
|
|
||||||
@@ -179,10 +179,13 @@ export class WarReward {
|
|||||||
if(this.conditionReward) this.handleConditionReward(num, this.conditionReward);
|
if(this.conditionReward) this.handleConditionReward(num, this.conditionReward);
|
||||||
if(this.randomReward) await this.handleRandomReward(num, this.randomReward);
|
if(this.randomReward) await this.handleRandomReward(num, this.randomReward);
|
||||||
|
|
||||||
if(this.costAp > 0) await this.handlerBlueprtReward(num);
|
// if(this.costAp > 0) await this.handlerBlueprtReward(num);
|
||||||
}
|
}
|
||||||
|
|
||||||
let rewards = this.rewards.sort((a, b) => a.times - b.times)
|
let rewards = this.rewards;
|
||||||
|
if(combine) {
|
||||||
|
rewards = combineItemAndEquips(rewards);
|
||||||
|
}
|
||||||
await addItems(this.roleId, this.roleName, this.sid, rewards);
|
await addItems(this.roleId, this.roleName, this.sid, rewards);
|
||||||
return rewards;
|
return rewards;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ export function loadWar() {
|
|||||||
arr.forEach(o => {
|
arr.forEach(o => {
|
||||||
o.fixReward = parseFixReward(o.fixReward);
|
o.fixReward = parseFixReward(o.fixReward);
|
||||||
o.conditionReward = parseConditionReward(o.conditionReward);
|
o.conditionReward = parseConditionReward(o.conditionReward);
|
||||||
o.parseRandomReward = parseRandomReward(o.RandomReward||o.randomReward);
|
o.randomReward = parseRandomReward(o.RandomReward||o.randomReward);
|
||||||
o.detailUIBg = parseDetailUIBg(o.detailUIBg);
|
o.detailUIBg = parseDetailUIBg(o.detailUIBg);
|
||||||
o.jackpotReward = parseJackpotReward(o.jackpotReward);
|
o.jackpotReward = parseJackpotReward(o.jackpotReward);
|
||||||
o.teammateReward = parseFixReward(o.teammateReward);
|
o.teammateReward = parseFixReward(o.teammateReward);
|
||||||
|
|||||||
Reference in New Issue
Block a user