体力:修复使用体力道具后最大恢复时间没有变化bug
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
* 体力系统
|
* 体力系统
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { ActionPointModel } from '../db/ActionPoint';
|
import { ActionPointModel, ActionPointType } from '../db/ActionPoint';
|
||||||
import { TASK_TYPE, STATUS } from '../consts';
|
import { TASK_TYPE, STATUS } from '../consts';
|
||||||
import { checkActivityTask, checkTask } from './taskService';
|
import { checkActivityTask, checkTask } from './taskService';
|
||||||
import { getDicApByLv } from '../pubUtils/data';
|
import { getDicApByLv } from '../pubUtils/data';
|
||||||
@@ -18,9 +18,14 @@ import { AP } from '../pubUtils/dicParam';
|
|||||||
* @param lv 玩家等级
|
* @param lv 玩家等级
|
||||||
*/
|
*/
|
||||||
export async function getAp(roleId: string, lv: number, fromGetAp = false) {
|
export async function getAp(roleId: string, lv: number, fromGetAp = false) {
|
||||||
|
let dataAp = await ActionPointModel.getAp(roleId);
|
||||||
|
return getApWithDataAp(lv, dataAp, fromGetAp);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getApWithDataAp(lv: number, dataAp: ActionPointType, fromGetAp = false) {
|
||||||
|
|
||||||
const now = Date.now();
|
const now = Date.now();
|
||||||
const dicAp = getDicApByLv(lv);
|
const dicAp = getDicApByLv(lv);
|
||||||
let dataAp = await ActionPointModel.getAp(roleId);
|
|
||||||
const maxAp = dicAp.maxAp; // 最大体力值
|
const maxAp = dicAp.maxAp; // 最大体力值
|
||||||
const per = AP.PERAPRESTORETIME * 1000; // 恢复时间(ms)
|
const per = AP.PERAPRESTORETIME * 1000; // 恢复时间(ms)
|
||||||
let { ap, refTime, buyRefTime = 0, buyTimes = 0 } = dataAp;
|
let { ap, refTime, buyRefTime = 0, buyTimes = 0 } = dataAp;
|
||||||
@@ -70,7 +75,7 @@ export async function setAp(roleId: string, lv: number, changeAp: number, sid: s
|
|||||||
apMaxRemainTime = 0;
|
apMaxRemainTime = 0;
|
||||||
}
|
}
|
||||||
if (ap < 0) return null // 体力不足
|
if (ap < 0) return null // 体力不足
|
||||||
await ActionPointModel.saveAp(roleId, ap, refTime);
|
let dataAp = await ActionPointModel.saveAp(roleId, ap, refTime);
|
||||||
|
|
||||||
if (isOver && ap < maxAp) { // 特殊处理,溢出之后做减少体力的操作时
|
if (isOver && ap < maxAp) { // 特殊处理,溢出之后做减少体力的操作时
|
||||||
apRemainTime = AP.PERAPRESTORETIME;
|
apRemainTime = AP.PERAPRESTORETIME;
|
||||||
@@ -82,7 +87,8 @@ export async function setAp(roleId: string, lv: number, changeAp: number, sid: s
|
|||||||
let { serverId } = await RoleModel.findByRoleId(roleId);
|
let { serverId } = await RoleModel.findByRoleId(roleId);
|
||||||
await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.BATTLE_COST_AP, -1 * changeAp,);
|
await checkActivityTask(serverId, sid, funcs, roleId, TASK_TYPE.BATTLE_COST_AP, -1 * changeAp,);
|
||||||
}
|
}
|
||||||
let apJson = { ap, maxAp, refTime, apMaxRemainTime, apRemainTime, buyTimes };
|
let apJson = await getApWithDataAp(lv, dataAp);
|
||||||
|
|
||||||
if (changeAp != 0) {
|
if (changeAp != 0) {
|
||||||
let uids = [{ uid: roleId, sid }];
|
let uids = [{ uid: roleId, sid }];
|
||||||
pinus.app.get('channelService').pushMessageByUids('onApUpdate', resResult(STATUS.SUCCESS, { apJson }), uids);
|
pinus.app.get('channelService').pushMessageByUids('onApUpdate', resResult(STATUS.SUCCESS, { apJson }), uids);
|
||||||
|
|||||||
Reference in New Issue
Block a user