装备:获得天晶石&合成装备
This commit is contained in:
@@ -2,9 +2,8 @@
|
||||
|
||||
import { HeroModel, HeroType, } from '../db/Hero';
|
||||
import { ItemModel } from '../db/Item';
|
||||
import { EquipModel, RandSe, Holes, RandMain, equipUpdate } from './../db/Equip';
|
||||
import { gameData, getQuenchByQualityAndGrade, getQuenchGradeByValue } from './data';
|
||||
import { RANDOM_SE_COUNT, ITID, CURRENCY_BY_TYPE, CURRENCY_TYPE, ROLE_SELECT, FIGURE_UNLOCK_CONDITION, CONSUME_TYPE, HERO_SYSTEM_TYPE, TASK_TYPE, ITEM_CHANGE_REASON } from '../consts';
|
||||
import { gameData } from './data';
|
||||
import { ITID, CURRENCY_BY_TYPE, CURRENCY_TYPE, ROLE_SELECT, FIGURE_UNLOCK_CONDITION, CONSUME_TYPE, HERO_SYSTEM_TYPE, ITEM_CHANGE_REASON } from '../consts';
|
||||
import { getRandValueByMinMax, getRandEelm } from './util';
|
||||
|
||||
import { findWhere } from 'underscore';
|
||||
@@ -12,10 +11,10 @@ import { RoleModel, RoleType, } from '../db/Role';
|
||||
import { Figure } from '../domain/dbGeneral';
|
||||
import { getTimeFun } from './timeUtil';
|
||||
import { reCalAllHeroCe } from './playerCe';
|
||||
import { checkTaskWithEquip } from './taskUtil';
|
||||
// import { checkTask, checkTaskWithHeroes, checkTaskWithEquip, accomplishTask } from './taskUtil';
|
||||
import { SkinModel, } from '../db/Skin';
|
||||
import { TaskListReturn } from '../domain/roleField/task';
|
||||
import { JewelModel, jewelUpdate, RandSe, } from '../db/Jewel';
|
||||
|
||||
/**
|
||||
* 只插入皮肤,不管那么多的
|
||||
@@ -80,76 +79,46 @@ export async function addBag(roleId: string, roleName: string, data: { id: numbe
|
||||
}
|
||||
|
||||
|
||||
export async function addEquips(roleId: string, roleName: string, weapons: { id: number, hid?: number }[], reason: number) {
|
||||
let equipInfos: equipUpdate[] = [];
|
||||
for(let weapon of weapons) {
|
||||
let info = await getAddEquipInfo(roleId, roleName, weapon);
|
||||
equipInfos.push(info);
|
||||
export async function addJewels(roleId: string, roleName: string, jewels: { id: number, hid?: number }[], reason: number) {
|
||||
let jewelInfo: jewelUpdate[] = [];
|
||||
for(let jewel of jewels) {
|
||||
let info = await getAddJewelInfo(roleId, roleName, jewel);
|
||||
jewelInfo.push(info);
|
||||
}
|
||||
|
||||
const equips = await EquipModel.createEquips(roleId, equipInfos);
|
||||
const jewelResult = await JewelModel.createJewels(roleId, jewelInfo);
|
||||
let pushMessages: TaskListReturn[] = [];
|
||||
// 任务
|
||||
for(let equip of equips) {
|
||||
let pushMessage = await checkTaskWithEquip(roleId, TASK_TYPE.EQUIP_SUIT, equip);
|
||||
if(reason == ITEM_CHANGE_REASON.EQUIP_COMPOSE) {
|
||||
let pm = await checkTaskWithEquip(roleId, TASK_TYPE.EQUIP_COMPOSE_SUIT, equip);
|
||||
pushMessages.push(...pm);
|
||||
}
|
||||
pushMessages.push(...pushMessage);
|
||||
}
|
||||
// TODO 修改任务
|
||||
// for(let equip of jewelResult) {
|
||||
// let pushMessage = await checkTaskWithEquip(roleId, TASK_TYPE.EQUIP_SUIT, equip);
|
||||
// if(reason == ITEM_CHANGE_REASON.EQUIP_COMPOSE) {
|
||||
// let pm = await checkTaskWithEquip(roleId, TASK_TYPE.EQUIP_COMPOSE_SUIT, equip);
|
||||
// pushMessages.push(...pm);
|
||||
// }
|
||||
// pushMessages.push(...pushMessage);
|
||||
// }
|
||||
|
||||
return { equips: equips.map(equip => {
|
||||
return { ...equip, inc: 1, reason }
|
||||
return { jewels: jewelResult.map(jewel => {
|
||||
return { ...jewel, count: 1, inc: 1, reason }
|
||||
}), pushMessages }
|
||||
}
|
||||
|
||||
export async function getAddEquipInfo(roleId: string, roleName: string, weapon: { id: number, hid?: number }) {
|
||||
let { id, hid = 0 } = weapon;
|
||||
let { name, quality, suitId, hole, randomEffect, itid, goodsAbility } = gameData.goods.get(id);
|
||||
let { type } = ITID.get(itid);
|
||||
export async function getAddJewelInfo(roleId: string, roleName: string, jewel: { id: number, hid?: number, eplaceId?: number }) {
|
||||
console.log('#####', jewel)
|
||||
let { id, hid = 0, eplaceId = 0 } = jewel;
|
||||
let { name, randomEffect, effectCount } = gameData.jewel.get(id);
|
||||
|
||||
// 随机属性
|
||||
let randomNum = RANDOM_SE_COUNT.get(quality);
|
||||
let randomResult: number[] = getRandEelm(randomEffect, randomNum);
|
||||
let randomResult: number[] = getRandEelm(randomEffect, effectCount);
|
||||
|
||||
let randSe: Array<RandSe> = randomResult.map((id: number, i: number) => {
|
||||
let randSe: Array<RandSe> = randomResult.map((id: number, index: number) => {
|
||||
let random = gameData.randomEffectPool.get(id)
|
||||
let rand = 0;
|
||||
if (random.id > 0) rand = getRandValueByMinMax(random.Min, random.Max, 0);
|
||||
return {
|
||||
id: i + 1,
|
||||
seid: random.id,
|
||||
rand,
|
||||
locked: false
|
||||
};
|
||||
return new RandSe(index + 1, random.id, rand);
|
||||
});
|
||||
|
||||
let randRange = 0;
|
||||
|
||||
// 淬火品相
|
||||
let randMain: RandMain[] = [];
|
||||
let grade = 0;
|
||||
for(let [ attrId, attrValue ] of goodsAbility) {
|
||||
if(attrValue > 0) {
|
||||
let { randMin, randMax } = getQuenchByQualityAndGrade(quality, grade);
|
||||
let rand = getRandValueByMinMax(randMin, randMax, 0);
|
||||
// console.log(quality, grade, rand)
|
||||
grade = getQuenchGradeByValue(quality, rand);
|
||||
randMain.push({
|
||||
id: attrId,
|
||||
rand
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
let holes = new Array<Holes>();
|
||||
for (let i = 0; i < hole; i++) {
|
||||
holes.push({ id: i + 1, isOpen: false, jewel: 0 });
|
||||
}
|
||||
|
||||
return { roleId, roleName, id, name, quality, suitId, randRange, ePlaceId: type, randSe, holes, hid, grade, randMain };
|
||||
return { roleId, roleName, id, name, hid, eplaceId, randSe };
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user