装备:淬火修改读取表
This commit is contained in:
@@ -487,7 +487,8 @@ export class EquipHandler {
|
|||||||
|
|
||||||
let dicGoods = gameData.goods.get(id);
|
let dicGoods = gameData.goods.get(id);
|
||||||
if (!dicGoods) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
if (!dicGoods) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
||||||
let dicQuench = gameData.quench.get(grade);
|
let dicQuench = gameData.quenchByQuality.get(dicGoods.quality)?.get(grade);
|
||||||
|
console.log(dicQuench, dicGoods.quality, grade)
|
||||||
if (!dicQuench) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
if (!dicQuench) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
||||||
|
|
||||||
let logs: QuenchLogParam[] = [], times = 0;
|
let logs: QuenchLogParam[] = [], times = 0;
|
||||||
|
|||||||
@@ -7,11 +7,11 @@ import { HERO_SYSTEM_TYPE, TASK_TYPE } from "../consts";
|
|||||||
import { EquipType } from "../db/Equip";
|
import { EquipType } from "../db/Equip";
|
||||||
import { calEquipSeids } from '../pubUtils/playerCe';
|
import { calEquipSeids } from '../pubUtils/playerCe';
|
||||||
import { checkTask, checkTaskWithHero, checkTaskWithEquip, checkActivityTask } from './taskService';
|
import { checkTask, checkTaskWithHero, checkTaskWithEquip, checkActivityTask } from './taskService';
|
||||||
import { DicQuench } from '../pubUtils/dictionary/DicQuench';
|
|
||||||
import { handleCost } from './rewardService';
|
import { handleCost } from './rewardService';
|
||||||
import { DicGoods } from '../pubUtils/dictionary/DicGoods';
|
import { DicGoods } from '../pubUtils/dictionary/DicGoods';
|
||||||
import { QuenchLogParam } from '../domain/roleField/equip';
|
import { QuenchLogParam } from '../domain/roleField/equip';
|
||||||
import { QUENCH } from '../pubUtils/dicParam';
|
import { QUENCH } from '../pubUtils/dicParam';
|
||||||
|
import { DicQuenchQuality } from '../pubUtils/dictionary/DicQuenchQuality';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 校验前端传入的消耗数量是否准确,并返回消耗的道具并加上特殊材料needConsumes
|
* 校验前端传入的消耗数量是否准确,并返回消耗的道具并加上特殊材料needConsumes
|
||||||
@@ -155,8 +155,8 @@ export function checkEquipCanPut(hid: number, id: number) {
|
|||||||
* @param dicGoods 物品表
|
* @param dicGoods 物品表
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export async function quenchOnce(roleId: string, sid: string, randMain: RandMain[], dicQuench: DicQuench, dicGoods: DicGoods) {
|
export async function quenchOnce(roleId: string, sid: string, randMain: RandMain[], dicQuench: DicQuenchQuality, dicGoods: DicGoods) {
|
||||||
let { quality, lvLimited } = dicGoods;
|
let { quality, equipLvl } = dicGoods;
|
||||||
|
|
||||||
let canRandMain = randMain.filter(cur => { // 已升满的属性就不再淬火了
|
let canRandMain = randMain.filter(cur => { // 已升满的属性就不再淬火了
|
||||||
return cur.rand < dicQuench.singleRatioMax;
|
return cur.rand < dicQuench.singleRatioMax;
|
||||||
@@ -192,10 +192,10 @@ export async function quenchOnce(roleId: string, sid: string, randMain: RandMain
|
|||||||
}
|
}
|
||||||
value += r.rand;
|
value += r.rand;
|
||||||
}
|
}
|
||||||
let grade = getQuenchGradeByValue(value/2);
|
let grade = getQuenchGradeByValue(quality, value/2);
|
||||||
|
|
||||||
// 消耗
|
// 消耗
|
||||||
let consumes = getQuenchConsume(lvLimited, quality);
|
let consumes = getQuenchConsume(equipLvl, quality);
|
||||||
|
|
||||||
let result = await handleCost(roleId, sid, consumes);
|
let result = await handleCost(roleId, sid, consumes);
|
||||||
if(!result) return false;
|
if(!result) return false;
|
||||||
|
|||||||
@@ -459,7 +459,6 @@ export const FILENAME = {
|
|||||||
DIC_GK_NEWHERO: 'dic_zyz_gk_newhero',
|
DIC_GK_NEWHERO: 'dic_zyz_gk_newhero',
|
||||||
DIC_TASK_EXP: 'dic_zyz_mainTaskExp',
|
DIC_TASK_EXP: 'dic_zyz_mainTaskExp',
|
||||||
DIC_GK_PROBATION: 'dic_zyz_gk_probation',
|
DIC_GK_PROBATION: 'dic_zyz_gk_probation',
|
||||||
DIC_QUENCH: 'dic_zyz_quench',
|
|
||||||
DIC_QUENCH_QUALITY: 'dic_zyz_quench_quality',
|
DIC_QUENCH_QUALITY: 'dic_zyz_quench_quality',
|
||||||
DIC_QUENCH_CONSUME: 'dic_zyz_quench_consume',
|
DIC_QUENCH_CONSUME: 'dic_zyz_quench_consume',
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-11
@@ -88,8 +88,7 @@ import { dicServerName, dicServerGroupName, loadServerName } from "./dictionary/
|
|||||||
import { dicAp, loadAp, dicApMaxLevel } from './dictionary/DicAp';
|
import { dicAp, loadAp, dicApMaxLevel } from './dictionary/DicAp';
|
||||||
import { dicApBuy, dicApMaxBuyTimes, loadApBuy } from "./dictionary/DicApBuy";
|
import { dicApBuy, dicApMaxBuyTimes, loadApBuy } from "./dictionary/DicApBuy";
|
||||||
import { dicTaskExp, loadTskExp} from './dictionary/DicTaskExp';
|
import { dicTaskExp, loadTskExp} from './dictionary/DicTaskExp';
|
||||||
import { dicQuench, loadQuench } from './dictionary/DicQuench';
|
import { dicQuenchByQuality, dicQuenchRangeByQuality, dicQuenchRangeByQualityAndGrade, loadQuenchQuality } from './dictionary/DicQuenchQuality';
|
||||||
import { dicQuenchByQuality, dicQuenchByQualityAndGrade, loadQuenchQuality } from './dictionary/DicQuenchQuality';
|
|
||||||
import { dicQuenchConsume, loadQuenchConsume } from './dictionary/DicQuenchConsume';
|
import { dicQuenchConsume, loadQuenchConsume } from './dictionary/DicQuenchConsume';
|
||||||
|
|
||||||
export const gameData = {
|
export const gameData = {
|
||||||
@@ -220,10 +219,10 @@ export const gameData = {
|
|||||||
apBuy: dicApBuy,
|
apBuy: dicApBuy,
|
||||||
apMaxBuyTimes: dicApMaxBuyTimes,
|
apMaxBuyTimes: dicApMaxBuyTimes,
|
||||||
taskExp: dicTaskExp,
|
taskExp: dicTaskExp,
|
||||||
quench: dicQuench,
|
quenchRangeByQuality: dicQuenchRangeByQuality,
|
||||||
quenchByQuality: dicQuenchByQuality,
|
quenchRangeByQualityAndGrade: dicQuenchRangeByQualityAndGrade,
|
||||||
quenchByQualityAndGrade: dicQuenchByQualityAndGrade,
|
quenchConsume: dicQuenchConsume,
|
||||||
quenchConsume: dicQuenchConsume
|
quenchByQuality: dicQuenchByQuality
|
||||||
};
|
};
|
||||||
|
|
||||||
// 在此提供一些原先在gamedata中提供的方法,以便更方便获取gameData数据
|
// 在此提供一些原先在gamedata中提供的方法,以便更方便获取gameData数据
|
||||||
@@ -730,9 +729,10 @@ export function getDicSuitByTypeAndLv(suitType: number, starLevel: number) {
|
|||||||
return gameData.suitByTypeAndLv.get(`${suitType}_${starLevel}`);
|
return gameData.suitByTypeAndLv.get(`${suitType}_${starLevel}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getQuenchGradeByValue(value: number) {
|
export function getQuenchGradeByValue(quality: number, value: number) {
|
||||||
|
let dicQuench = gameData.quenchByQuality.get(quality)||[];
|
||||||
let grade = 0;
|
let grade = 0;
|
||||||
for(let [_grade, { singleRatioMin, singleRatioMax }] of gameData.quench) {
|
for(let [_grade, { singleRatioMin, singleRatioMax }] of dicQuench) {
|
||||||
if(value >= singleRatioMin && value < singleRatioMax ) {
|
if(value >= singleRatioMin && value < singleRatioMax ) {
|
||||||
grade = _grade;
|
grade = _grade;
|
||||||
}
|
}
|
||||||
@@ -748,9 +748,9 @@ export function getQuenchGradeByValue(value: number) {
|
|||||||
*/
|
*/
|
||||||
export function getQuenchByQualityAndGrade(quality: number, grade: number) {
|
export function getQuenchByQualityAndGrade(quality: number, grade: number) {
|
||||||
if(grade == 0) { // 这个品质的上下限
|
if(grade == 0) { // 这个品质的上下限
|
||||||
return gameData.quenchByQuality.get(quality);
|
return gameData.quenchRangeByQuality.get(quality);
|
||||||
} else { // 该品质该品相的上下限
|
} else { // 该品质该品相的上下限
|
||||||
return gameData.quenchByQualityAndGrade.get(`${quality}_${grade}`);
|
return gameData.quenchRangeByQualityAndGrade.get(`${quality}_${grade}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -859,7 +859,6 @@ function loadDatas() {
|
|||||||
loadAp();
|
loadAp();
|
||||||
loadApBuy();
|
loadApBuy();
|
||||||
loadTskExp();
|
loadTskExp();
|
||||||
loadQuench();
|
|
||||||
loadQuenchQuality();
|
loadQuenchQuality();
|
||||||
loadQuenchConsume();
|
loadQuenchConsume();
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ export interface DicGoods {
|
|||||||
readonly name: string;
|
readonly name: string;
|
||||||
// 等级限制
|
// 等级限制
|
||||||
readonly lvLimited: number;
|
readonly lvLimited: number;
|
||||||
|
// 星级
|
||||||
|
readonly equipLvl: number;
|
||||||
// 职业限制
|
// 职业限制
|
||||||
readonly jobLimited: number;
|
readonly jobLimited: number;
|
||||||
// 武将限制
|
// 武将限制
|
||||||
@@ -103,7 +105,8 @@ const DicGoodsKeys: KeysEnum<DicGoods> = {
|
|||||||
image_id: true,
|
image_id: true,
|
||||||
gift: true,
|
gift: true,
|
||||||
jobLimited: true,
|
jobLimited: true,
|
||||||
charLimited: true
|
charLimited: true,
|
||||||
|
equipLvl: true
|
||||||
}
|
}
|
||||||
export const dicJewel = new Map<number, DicGoods>();
|
export const dicJewel = new Map<number, DicGoods>();
|
||||||
export const dicGoods = new Map<number, DicGoods>();
|
export const dicGoods = new Map<number, DicGoods>();
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
import { readFileAndParse } from '../util'
|
|
||||||
import { FILENAME } from '../../consts'
|
|
||||||
|
|
||||||
export interface DicQuench {
|
|
||||||
// id
|
|
||||||
readonly id: number;
|
|
||||||
// 品相
|
|
||||||
readonly grade: number;
|
|
||||||
// 品相名
|
|
||||||
readonly name: string;
|
|
||||||
// 单属性最小值
|
|
||||||
readonly singleRatioMin: number;
|
|
||||||
// 单属性最大值
|
|
||||||
readonly singleRatioMax: number;
|
|
||||||
// 暴击效果,倍率
|
|
||||||
readonly critEffect: number;
|
|
||||||
// 暴击概率
|
|
||||||
readonly critProbability: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const dicQuench = new Map<number, DicQuench>(); // id => dic
|
|
||||||
export function loadQuench() {
|
|
||||||
let arr = readFileAndParse(FILENAME.DIC_QUENCH);
|
|
||||||
|
|
||||||
arr.forEach(o => {
|
|
||||||
dicQuench.set(o.grade, o);
|
|
||||||
});
|
|
||||||
arr = undefined;
|
|
||||||
}
|
|
||||||
@@ -14,29 +14,39 @@ export interface DicQuenchQuality {
|
|||||||
readonly singleRatioMax: number;
|
readonly singleRatioMax: number;
|
||||||
// 初始是否可以随机出
|
// 初始是否可以随机出
|
||||||
readonly initialAvailable: number;
|
readonly initialAvailable: number;
|
||||||
|
// 暴击率
|
||||||
|
readonly critProbability: number;
|
||||||
|
// 暴击效果
|
||||||
|
readonly critEffect: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const dicQuenchByQualityAndGrade = new Map<string, { min: number, max: number }>();
|
export const dicQuenchRangeByQualityAndGrade = new Map<string, { min: number, max: number }>();
|
||||||
export const dicQuenchByQuality = new Map<number, { min: number, max: number }>(); // quality => {}
|
export const dicQuenchRangeByQuality = new Map<number, { min: number, max: number }>(); // quality => {}
|
||||||
|
export const dicQuenchByQuality = new Map<number, Map<number, DicQuenchQuality>>(); // quality => grade => dic
|
||||||
export function loadQuenchQuality() {
|
export function loadQuenchQuality() {
|
||||||
dicQuenchByQuality.clear();
|
dicQuenchByQuality.clear();
|
||||||
dicQuenchByQualityAndGrade.clear();
|
dicQuenchRangeByQuality.clear();
|
||||||
|
dicQuenchRangeByQualityAndGrade.clear();
|
||||||
let arr = readFileAndParse(FILENAME.DIC_QUENCH_QUALITY);
|
let arr = readFileAndParse(FILENAME.DIC_QUENCH_QUALITY);
|
||||||
|
|
||||||
arr.forEach(o => {
|
arr.forEach(o => {
|
||||||
if(o.initialAvailable == 1) {
|
if(o.initialAvailable == 1) {
|
||||||
if(!dicQuenchByQuality.has(o.quality)) {
|
if(!dicQuenchRangeByQuality.has(o.quality)) {
|
||||||
dicQuenchByQuality.set(o.quality, { min: o.singleRatioMin, max: o.singleRatioMax });
|
dicQuenchRangeByQuality.set(o.quality, { min: o.singleRatioMin, max: o.singleRatioMax });
|
||||||
} else {
|
} else {
|
||||||
if(o.singleRatioMin < dicQuenchByQuality.get(o.quality).min) {
|
if(o.singleRatioMin < dicQuenchRangeByQuality.get(o.quality).min) {
|
||||||
dicQuenchByQuality.get(o.quality).min = o.singleRatioMin;
|
dicQuenchRangeByQuality.get(o.quality).min = o.singleRatioMin;
|
||||||
}
|
}
|
||||||
if(o.singleRatioMax > dicQuenchByQuality.get(o.quality).max) {
|
if(o.singleRatioMax > dicQuenchRangeByQuality.get(o.quality).max) {
|
||||||
dicQuenchByQuality.get(o.quality).max = o.singleRatioMax;
|
dicQuenchRangeByQuality.get(o.quality).max = o.singleRatioMax;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dicQuenchByQualityAndGrade.set(`${o.quality}_${o.grade}`, { min: o.singleRatioMin, max: o.singleRatioMax });
|
dicQuenchRangeByQualityAndGrade.set(`${o.quality}_${o.grade}`, { min: o.singleRatioMin, max: o.singleRatioMax });
|
||||||
}
|
}
|
||||||
|
if(!dicQuenchByQuality.has(o.quality)) {
|
||||||
|
dicQuenchByQuality.set(o.quality, new Map<number, DicQuenchQuality>());
|
||||||
|
}
|
||||||
|
dicQuenchByQuality.get(o.quality).set(o.grade, o);
|
||||||
});
|
});
|
||||||
arr = undefined;
|
arr = undefined;
|
||||||
}
|
}
|
||||||
@@ -84,7 +84,7 @@ export async function addEquips(roleId: string, roleName: string, weapon: EquipI
|
|||||||
if(attrValue > 0) {
|
if(attrValue > 0) {
|
||||||
let { min, max } = getQuenchByQualityAndGrade(quality, grade);
|
let { min, max } = getQuenchByQualityAndGrade(quality, grade);
|
||||||
let rand = getRandValueByMinMax(min, max, 0);
|
let rand = getRandValueByMinMax(min, max, 0);
|
||||||
grade = getQuenchGradeByValue(rand);
|
grade = getQuenchGradeByValue(quality, rand);
|
||||||
randMain.push({
|
randMain.push({
|
||||||
id: attrId,
|
id: attrId,
|
||||||
rand
|
rand
|
||||||
|
|||||||
Reference in New Issue
Block a user