体力:修改体力逻辑

This commit is contained in:
luying
2021-06-22 20:33:45 +08:00
parent 43dd3eb400
commit 2baa41ab63
14 changed files with 184 additions and 41 deletions
@@ -549,8 +549,8 @@ export class ComBattleHandler {
let warInfo = getWarByBlueprtId(blueprtId);
if (!warInfo) return resResult(STATUS.BATTLE_MISS_INFO);
const now = Date.now(); // 当前时间戳
let apJson = await setAp(now, roleId, sid, funcs, -1 * warInfo.cost); // 扣除体力
let role = await RoleModel.findByRoleId(roleId, 'lv');
let apJson = await setAp(roleId, role.lv, -1 * warInfo.cost, sid, funcs); // 扣除体力
if(!apJson) {
return resResult(STATUS.BATTLE_ACTION_POINT_LACK);
}
@@ -123,7 +123,8 @@ export class ExpeditionBattleHandler {
return resResult(STATUS.BATTLE_MISS_INFO);
}
let apJson = await getAp(Date.now(), roleId);
let role = await RoleModel.findByRoleId(roleId, 'lv');
let apJson = await getAp(roleId, role.lv);
let { ap } = apJson;
if (ap < warInfo.cost) {
return resResult(STATUS.BATTLE_ACTION_POINT_LACK);
@@ -165,8 +166,7 @@ export class ExpeditionBattleHandler {
expeditionId,
battleId,
battleCode,
battleStatus: result.battleStatus,
apJson
battleStatus: result.battleStatus
});
}
@@ -202,8 +202,8 @@ export class ExpeditionBattleHandler {
return resResult(STATUS.BATTLE_INFO_VALIDATE_ERR);
}
const now = Date.now(); // 当前时间戳
let apJson = await setAp(now, roleId, sid, funcs, -1 * warInfo.cost); // 扣除体力
let role = await RoleModel.findByRoleId(roleId, 'lv');
let apJson = await setAp(roleId, role.lv, -1 * warInfo.cost, sid, funcs); // 扣除体力
if (!apJson) {
return resResult(STATUS.BATTLE_ACTION_POINT_LACK);
}
@@ -224,7 +224,7 @@ export class ExpeditionBattleHandler {
$set: { status: isSuccess ? 1 : 2, star }
}, true);
// 更新点数
let role = await RoleModel.increaseExpeditionPoint(roleId, isSuccess ? EXPEDITION_CONST.INCREASE_POINT : 0);
role = await RoleModel.increaseExpeditionPoint(roleId, isSuccess ? EXPEDITION_CONST.INCREASE_POINT : 0);
let { expeditionPoint = 0 } = role;
// 关卡奖励
@@ -243,7 +243,6 @@ export class ExpeditionBattleHandler {
battleCode, battleId,
battleStatus: expeditionWarRecord.battleStatus,
battleGoods: reward,
apJson,
expeditionPoint,
...actordata
});
@@ -42,7 +42,8 @@ export class NormalBattleHandler {
if (!warInfo) {
return resResult(STATUS.BATTLE_MISS_INFO);
}
let apJson = await getAp(Date.now(), roleId);
let role = await RoleModel.findByRoleId(roleId, 'lv');
let apJson = await getAp(roleId, role.lv);
let { ap } = apJson;
if (ap < warInfo.cost) {
return resResult(STATUS.BATTLE_ACTION_POINT_LACK);
@@ -104,7 +105,7 @@ export class NormalBattleHandler {
return resResult(STATUS.SUCCESS, {
battleId, battleCode, status, apJson, dailyNum, towerData, dungeonNum
battleId, battleCode, status, dailyNum, towerData, dungeonNum
});
}
@@ -153,8 +154,8 @@ export class NormalBattleHandler {
return resResult(STATUS.BATTLE_INFO_VALIDATE_ERR);
}
const now = Date.now(); // 当前时间戳
let apJson = await setAp(now, roleId, sid, funcs, -1 * warInfo.cost); // 扣除体力
let role = await RoleModel.findByRoleId(roleId, 'lv');
let apJson = await setAp(roleId, role.lv, -1 * warInfo.cost, sid, funcs); // 扣除体力
if (!apJson) {
return resResult(STATUS.BATTLE_ACTION_POINT_LACK);
}
@@ -263,7 +264,6 @@ export class NormalBattleHandler {
return resResult(STATUS.SUCCESS, {
battleCode, battleId, status,
battleGoods: reward,
apJson,
towerStatus, dailyNum, dungeonNum,
...actordata
});
@@ -288,8 +288,8 @@ export class NormalBattleHandler {
}
// 扣体力
const now = Date.now(); // 当前时间戳
let apJson = await setAp(now, roleId, sid, funcs, -1 * warInfo.cost * count); // 扣除体力
let role = await RoleModel.findByRoleId(roleId, 'lv');
let apJson = await setAp(roleId, role.lv, -1 * warInfo.cost * count, sid, funcs); // 扣除体力
if (!apJson) {
return resResult(STATUS.BATTLE_ACTION_POINT_LACK);
}
@@ -333,7 +333,6 @@ export class NormalBattleHandler {
return resResult(STATUS.SUCCESS, {
battleId, count,
battleGoods: result,
apJson,
dailyNum, dungeonNum,
...actordata
});
@@ -7,22 +7,20 @@ import { Application } from 'pinus';
import { FrontendSession } from 'pinus';
import { HeroModel } from './../../../db/Hero';
import { resResult } from '../../../pubUtils/util';
import { COM_BTL_QUALITY, ROLE_SELECT, HERO_SELECT, GUILD_SELECT, USER_GUILD_SELECT, DEBUG_MAGIC_WORD, REDIS_KEY, TASK_TYPE } from '../../../consts';
import { COM_BTL_QUALITY, HERO_SELECT, DEBUG_MAGIC_WORD, REDIS_KEY, TASK_TYPE, ENTERY_ROLE_PICK } from '../../../consts';
import { getAp } from '../../../services/actionPointService';
import { ItemModel } from '../../../db/Item';
import { chackFunOpenWhenLogin } from '../../../services/funcSwitchService';
import { loginRefresh } from '../../../services/playerEventService';
import { nowSeconds, getZeroPoint } from '../../../pubUtils/timeUtil';
import { rmRoleFromQueue, roleLeave, getRoleOnlineInfo, roleLogin } from '../../../services/redisService';
import { UserGuildModel } from '../../../db/UserGuild';
import { GuildModel } from '../../../db/Guild';
import { gameData } from '../../../pubUtils/data';
import { addRoleToGuildChannel, addRoleToSysChannel, addRoleToWorldChannel, leaveGuildChannel, leaveSysChannel, leaveWorldChannel, recentGuildMsgs, recentPrivateChatInfos, recentSysMsgs, recentWorldMsgs } from '../../../services/chatService';
import { reportOneOnline } from '../../../services/timeTaskService';
import { Rank } from '../../../services/rankService';
import { checkTaskWithRole, } from '../../../services/taskService';
import { pushData, everydayRefresh } from '../../../services/connectorService';
import { pick } from 'lodash';
export default function (app: Application) {
return new EntryHandler(app);
@@ -95,7 +93,7 @@ export class EntryHandler {
role['heros'] = heros;
role['equips'] = equips;
role['consumeGoods'] = items;
let apJson = await getAp(Date.now(), role.roleId);
let apJson = await getAp(role.roleId, role.lv);
role['apJson'] = apJson;
if (!role.showLineup) role.showLineup = role.topLineup.map(cur => cur.hid);
@@ -110,7 +108,7 @@ export class EntryHandler {
let todayZeroPoint = getZeroPoint();
role['todayZeroPoint'] = todayZeroPoint;
return resResult(STATUS.SUCCESS, { role });
return resResult(STATUS.SUCCESS, { role: pick(role, ENTERY_ROLE_PICK) });
}
@@ -6,7 +6,7 @@ import { resResult, parseGoodStr, getRandValueByMinMax, getRandEelm } from "../.
import { addItems, handleCost, decreaseItems } from "../../../services/rewardService";
import Equip, { EquipModel, EquipType } from "../../../db/Equip";
import { HeroModel, EPlace } from "../../../db/Hero";
import Role from "../../../db/Role";
import Role, { RoleModel } from "../../../db/Role";
import { calPlayerCeAndSave } from "../../../services/playerCeService";
import { getHeroJob, getGoodById, gameData, getHeroEquipByClassId } from "../../../pubUtils/data";
import { EQUIP } from "../../../pubUtils/dicParam";
@@ -17,6 +17,7 @@ import { indexOf, findIndex } from 'underscore';
import { pushEquipRefineSucMsg, pushNormalEquipMsg, pushNormalItemMsg } from "../../../services/chatService";
import { checkTaskWithHero, checkTaskWithEquip, checkTask, checkTaskWithArgs, checkTaskConditionEquipSuitJewelStage, checkActivityTask } from "../../../services/taskService";
import { useGiftPackage } from "../../../services/activity/giftPackageService";
import { getAp, setAp } from "../../../services/actionPointService";
export default function (app: Application) {
return new ItemHandler(app);
@@ -63,4 +64,57 @@ export class ItemHandler {
}
// 使用体力道具
public async useApItem(msg: { id: number, count: number }, session: BackendSession) {
let { id, count } = msg;
const roleId = session.get('roleId');
const sid = session.get('sid');
const funcs = session.get('funcs');
if (count > 0) {
let dicGoods = gameData.goods.get(id);
if (!dicGoods) {
return resResult(STATUS.DIC_DATA_NOT_FOUND);
}
let dicItid = ITID.get(dicGoods.itid);
if (!dicItid) return resResult(STATUS.DIC_DATA_NOT_FOUND);
if (dicItid.type != CONSUME_TYPE.AP) {
return resResult(STATUS.ROLE_METERIAL_ERROR);
}
let role = await RoleModel.findByRoleId(roleId, 'lv');
let { isOver } = await getAp(roleId, role.lv);
if(isOver) return resResult(STATUS.AP_IS_FULL);
let consumeResult = await handleCost(roleId, sid, [{ id: id, count: count }]);
if (!consumeResult) return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH);
let apJson = await setAp(roleId, role.lv, dicGoods.value * count, sid, funcs);
return resResult(STATUS.SUCCESS, {
apJson
});
}
return resResult(STATUS.WRONG_PARMS);
}
public async debugIncAp(msg: { ap: number }, session: BackendSession) {
const roleId = session.get('roleId');
const sid = session.get('sid');
const funcs = session.get('funcs');
let role = await RoleModel.findByRoleId(roleId, 'lv');
let apJson = await setAp(roleId, role.lv, msg.ap, sid, funcs);
if(!apJson) return resResult(STATUS.BATTLE_ACTION_POINT_LACK)
return resResult(STATUS.SUCCESS, { apJson });
}
public async debugGetAp(msg: { }, session: BackendSession) {
let roleId = session.get('roleId');
let role = await RoleModel.findByRoleId(roleId, 'lv');
let apJson = await getAp(roleId, role.lv);
return resResult(STATUS.SUCCESS, { apJson });
}
}