Merge branch 'master' of gitlab.trgame.cn:zyztech/zyz_server

This commit is contained in:
mamengke01
2020-12-18 19:46:48 +08:00
6 changed files with 60 additions and 30 deletions

View File

@@ -9,7 +9,7 @@ import Role from "../../../db/Role";
import { calPlayerCeAndSave } from "../../../services/playerCeService";
import { getGoodById, gameData, getJewelById } from "../../../pubUtils/data";
import { EQUIP } from "../../../pubUtils/dicParam";
import { ITID } from "../../../consts/constModules/itemConst";
import { ITID, SPEICAL_ITEM } from "../../../consts/constModules/itemConst";
const _ = require('underscore');
@@ -23,7 +23,7 @@ export class EquipHandler {
}
// 合成装备
// test接口添加任意道具
public async addItem(msg: { id: number, count: number}, session: BackendSession) {
let roleId: string = session.get('roleId');
let roleName: string = session.get('roleName');
@@ -53,7 +53,7 @@ export class EquipHandler {
for(let {id, seqId} of equips) {
if(specialMaterial.ids.includes(id)) {
costCount++;
cost.push({id, seqId, count: 1, type: GOOD_TYPE.EQUIP });
cost.push({id, seqId, count: 1 });
}
}
if(specialMaterial.count > costCount) {
@@ -69,7 +69,7 @@ export class EquipHandler {
let result = await handleCost(roleId, sid, cost);
if(!result) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
let items = [{type: GOOD_TYPE.EQUIP, id: gid, count: 1}];
let items = [{ id: gid, count: 1}];
let goods = await addItems(roleId, roleName, sid, items);
return resResult(STATUS.SUCCESS, { goods });
}
@@ -101,6 +101,7 @@ export class EquipHandler {
let {coin} = await Role.findByRoleId(roleId);
let maxLv = type == EQUIP_STRENGTHEN_TYPE.SINGLE?minLv + 1:playerLv;
if(maxLv > playerLv) maxLv = playerLv;
if(minLv >= maxLv) {
return resResult(STATUS.ROLE_EQUIP_REACH_MAX);
}
@@ -172,25 +173,29 @@ export class EquipHandler {
return resResult(STATUS.ROLE_INFO_NOT_FOUND)
}
// let {successRate} = dicRefine;
// for(let {id, count} of material) {
let {successRate} = dicRefine;
for(let {id, count} of material) {
let dicGoods = gameData.goods.get(id);
if(!dicGoods) return resResult(STATUS.ROLE_INFO_NOT_FOUND);
if(!SPEICAL_ITEM.REFINE_ADD_RATE.includes(id)) {
return resResult(STATUS.ROLE_WRONG_ITEM)
}
successRate += count * dicGoods.value;
if(isNaN(successRate)) console.error(id, count, dicGoods.value);
}
// }
let ran = Math.floor(Math.random() * 100)
let isSuccess = ran <= dicRefine.successRate;
let ran = Math.floor(Math.random() * 100);
let isSuccess = ran <= successRate;
console.log(successRate, ran, isSuccess)
// 消耗道具提升成功率 每个道具提升10%成功率
// 精炼
if(isSuccess) {
curEplace.refineLv++;
} else {
curEplace.refineCount++;
}
// TODO 消耗
let cost = dicRefine.material;
// 消耗
let cost = dicRefine.material.concat(material);
let result = await handleCost(roleId, sid, cost);
if(!result) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
@@ -218,8 +223,19 @@ export class EquipHandler {
return resResult(STATUS.EQUIP_HAVE_NO_RANDSE);
}
if(lock) { // 仅在上锁时消耗
let result = await handleCost(roleId, sid, []);
if(lock) { // 仅在上锁时消耗,根据已有的锁的数量判断消耗
let lockNum = randSe.filter(cur => cur.locked).length;
let consumes:Array<{id: number, count: number}> = [];
if (lockNum == 0) {
consumes = parseReward(EQUIP.EQUIP_ONE_LOCKED);
} else if (lockNum == 1) {
consumes = parseReward(EQUIP.EQUIP_TWO_LOCKED);
} else if (lockNum == 2) {
consumes = parseReward(EQUIP.EQUIP_THREE_LOCKED);
} else {
consumes = parseReward(EQUIP.EQUIP_FOUR_LOCKED);
}
let result = await handleCost(roleId, sid, consumes);
if(!result) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
}
@@ -231,7 +247,7 @@ export class EquipHandler {
}
// TODO 装备洗炼消耗TODO
// 装备洗炼
public async reStrengthen(msg: { eid: number }, session: BackendSession) {
let roleId: string = session.get('roleId');
// let roleName: string = session.get('roleName');
@@ -241,7 +257,7 @@ export class EquipHandler {
let equip = await EquipModel.findbySeqId(eid);
if(!equip) return resResult(STATUS.EQUIP_NOT_FIND);
let {id, randSe} = equip;
let {id, randSe, reStrengthenNum = 0} = equip;
if(!randSe || randSe.length <=0 ) {
return resResult(STATUS.EQUIP_HAVE_NO_RANDSE);
}
@@ -271,16 +287,22 @@ export class EquipHandler {
return resResult(STATUS.ROLE_EQUIP_CANNOT_RESTRENGTHEN);
}
// TODO 消耗
let cost = new Array<ItemInter>();
if(lockNum == 0) {
// 消耗
let consumes:Array<{id: number, count: number}> = [];
if (reStrengthenNum == 0) {
consumes = parseReward(EQUIP.EQUIP_ONE_REFORGED);
} else if (reStrengthenNum == 1) {
consumes = parseReward(EQUIP.EQUIP_TWO_REFORGED);
} else if (reStrengthenNum == 2) {
consumes = parseReward(EQUIP.EQUIP_THREE_REFORGED);
} else {
consumes = parseReward(EQUIP.EQUIP_FOUR_REFORGED);
}
let result = await handleCost(roleId, sid, cost);
let result = await handleCost(roleId, sid, consumes);
if(!result) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
let equipResult = await EquipModel.updateEquipInfo(eid, { randSe })
let equipResult = await EquipModel.updateEquipInfo(eid, { randSe, reStrengthenNum: reStrengthenNum + 1 })
let curEquip = {
seqId: equipResult.seqId,
id: equipResult.id,