HJ_Server/src/api_s2c/tanxian/ApiFastGuaJi.ts
2023-12-13 20:51:17 +08:00

53 lines
2.5 KiB
TypeScript

import { ApiCall } from "tsrpc";
import { PlayerFun } from '../../public/player';
import { TanXianFun } from '../../public/tanxian';
import { TeQuanFun } from "../../public/tequan";
import { ReqFastGuaJi, ResFastGuaJi } from "../../shared/protocols/tanxian/PtlFastGuaJi";
import { TanXianShared } from '../../shared/public/tanxian';
import { event_dldh_addPrize } from '../event/diaoluoduihuan/ApiOpen';
import { HongDianChange } from "../hongdian/fun";
import { getEventPrize } from './ApiEvent';
export default async function (call: ApiCall<ReqFastGuaJi, ResFastGuaJi>) {
const data = await TanXianFun.getData(call);
const maxNum = await TanXianFun.getFastGuaJiNum(call);
if (data.useFastGuaJiNum >= maxNum) return call.error(globalThis.lng.tanxian_1);
// 特权免费次数
let tqFree = await TeQuanFun.getTxFreeNum(call)
let freeNum = G.gc.tanxian_com.fastGuaJiFreeNum + tqFree
// let notFree = data.useFastGuaJiNum >= freeNum && ((data?.zztqfreeNum || 0) >= tqFree && tqFree) && (data?.useFreeGuaJiNum || 0) <= freeNum
let notFree = (data?.useFreeGuaJiNum || 0) >= freeNum
if (notFree) {
let num = G.gc.tanxian_com.fastGuaJiNeed[data.useFastGuaJiNum - freeNum ] || 0;
let need = [{ a: 'attr', t: 'rmbmoney', n: num ? num : G.gc.tanxian_com.fastGuaJiNeed[G.gc.tanxian_com.fastGuaJiNeed.length - 1] }];
await PlayerFun.checkNeedIsMeet(call, need);
await PlayerFun.cutNeed(call, need);
}
let prize = TanXianShared.getGuaJiPrize(G.gc.tanxian_com.fastGuaJiTime, call.conn.gud.mapId, false, {
shoucangpin: call.conn.gud.shoucangping
});
let eventPrize = getEventPrize(call.conn.gud.lv, G.gc.tanxian_com.fastGuaJiTime, call.conn.gud.mapId, call.conn.gud.wxcLv?.lv);
let _p = [].concat(prize.prize, prize.dlz, eventPrize.prize);
// 过滤物品数量为0的道具。
_p = _p.filter(x => x.n > 0)
// await event_dldh_addPrize(_p, call, G.gc.tanxian_com.fastGuaJiTime);
await PlayerFun.sendPrize(call, _p);
let setData = { useFastGuaJiNum: data.useFastGuaJiNum + 1, useFreeGuaJiNum: (data?.useFreeGuaJiNum || 0) + (notFree ? 0 : 1)}
if ((data?.zztqfreeNum || 0) < tqFree && tqFree) setData["zztqfreeNum"] = tqFree
TanXianFun.changeData(call, setData);
// (await call.conn.gonghui)?.addExp(20, call.uid);
HongDianChange.sendChangeKey(call.uid, ['taskhd', 'huodonghd']);
call.succ({
prize: _p,
iNum: eventPrize.iNum,
aNum: eventPrize.aNum,
useFastGuaJiNum: data.useFastGuaJiNum + 1
});
}