全局:属性修改
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
import { STATUS } from '../../../consts/statusCode';
|
||||
import { RoleModel } from './../../../db/Role';
|
||||
import { HeroModel } from '../../../db/Hero';
|
||||
import { resResult, decodeIdCntArrayStr, parseGoodStr, reduceCe } from '../../../pubUtils/util';
|
||||
import { resResult, decodeIdCntArrayStr, parseGoodStr } from '../../../pubUtils/util';
|
||||
import {Application, BackendSession} from 'pinus';
|
||||
import { handleCost } from '../../../services/rewardService';
|
||||
import { getTitle, getTeraph, gameData, getScollByStar, getFriendLvByExp } from '../../../pubUtils/data';
|
||||
import { SCHOOL, SCROLL } from '../../../pubUtils/dicParam';
|
||||
import { getTeraphAttr, getAtrrNameById } from '../../../consts/constModules/abilityConst'
|
||||
import { getAtrrNameById } from '../../../consts/constModules/abilityConst'
|
||||
import { findIndex } from 'underscore';
|
||||
import { SclResultInter, SclPosInter } from '../../../pubUtils/interface';
|
||||
import { SchoolModel } from '../../../db/School';
|
||||
@@ -79,11 +79,12 @@ export class RoleHandler {
|
||||
//爵位
|
||||
async roleTitleLevelUp(msg: {}, session: BackendSession){
|
||||
let roleId = session.get('roleId');
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
let oldCe = role.ce;
|
||||
let sid: string = session.get('sid');
|
||||
let title = ++role.title;
|
||||
let titleInfo = getTitle(role.title);
|
||||
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
|
||||
let { title } = role;
|
||||
let titleInfo = getTitle(title + 1);
|
||||
if (!titleInfo)
|
||||
return resResult(STATUS.DIC_DATA_NOT_FOUND)
|
||||
if (titleInfo.lvLimited > role.lv)
|
||||
@@ -92,44 +93,47 @@ export class RoleHandler {
|
||||
let result = await handleCost(roleId, sid, consumes);
|
||||
if (!result)
|
||||
return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH);
|
||||
await RoleModel.updateRoleInfo(roleId, { title });
|
||||
let {ce} = await calAllHeroCe( sid, roleId, HERO_SYSTEM_TYPE.TITLE, [title]);
|
||||
return resResult(STATUS.SUCCESS, { roleId, title });
|
||||
|
||||
let update = { title: title + 1 }
|
||||
role = await calAllHeroCe(HERO_SYSTEM_TYPE.TITLE, sid, roleId, update);
|
||||
return resResult(STATUS.SUCCESS, { roleId, title: role.title });
|
||||
}
|
||||
|
||||
//神像强化
|
||||
async roleTeraphStrengthen(msg: {id: number, count: number}, session: BackendSession){
|
||||
let {id, count} = msg;
|
||||
let roleId = session.get('roleId');
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
let sid: string = session.get('sid');
|
||||
let index = findIndex(role.teraphs, {id});
|
||||
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
let teraphs = role.teraphs;
|
||||
let index = findIndex(teraphs, {id});
|
||||
if (index < 0)
|
||||
return resResult(STATUS.WRONG_PARMS);
|
||||
let teraph = role.teraphs[index];
|
||||
let teraphInfo = getTeraph(id, teraph.grade);
|
||||
if (!teraphInfo)
|
||||
return resResult(STATUS.DIC_DATA_NOT_FOUND)
|
||||
let attrs = [];
|
||||
for (let attrName in getTeraphAttr()) {
|
||||
let attrNameMax = attrName+'Max';
|
||||
if (teraph[attrName] < teraphInfo[attrNameMax]) {
|
||||
attrs.push(attrName);
|
||||
let teraph = teraphs[index];
|
||||
let dicTeraph = getTeraph(id, teraph.grade);
|
||||
if (!dicTeraph)
|
||||
return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
||||
|
||||
let attrs = new Array<number>(); // 可以强化的属性
|
||||
dicTeraph.mainAttrMax.forEach(( max, id) => {
|
||||
let attrName = getAtrrNameById(id);
|
||||
if (teraph[attrName] < max) {
|
||||
attrs.push(id);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (!attrs.length)
|
||||
return resResult(STATUS.ROLE_TERAPH_NOT_STRENGTHEN);
|
||||
// 随机神像中的一条属性并检查道具是否足够
|
||||
let {attr, consumes} = checkTeraphMaterialEnough(count, attrs, teraphInfo, teraph);
|
||||
for (let key in attr) {
|
||||
teraph[key] += attr[key];
|
||||
role.globalCeAttr[key].fixUp += attr[key];
|
||||
}
|
||||
|
||||
// 随机神像中的一条属性并检查道具是否足够,以及更新teraph
|
||||
let { consumes} = checkTeraphMaterialEnough(count, attrs, dicTeraph, teraph);
|
||||
|
||||
let result = await handleCost(roleId, sid, consumes);
|
||||
if (!result)
|
||||
return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH);
|
||||
await RoleModel.updateRoleInfo(roleId, { teraphs: role.teraphs, globalCeAttr: role.globalCeAttr});
|
||||
await calAllHeroCe( sid, roleId);
|
||||
|
||||
role = await calAllHeroCe(HERO_SYSTEM_TYPE.TERAPH, sid, roleId, { teraphs }, [id]);
|
||||
return resResult(STATUS.SUCCESS, { roleId, teraphs: role.teraphs });
|
||||
}
|
||||
|
||||
@@ -137,34 +141,38 @@ export class RoleHandler {
|
||||
async roleTeraphQualityUp(msg: {id: number}, session: BackendSession){
|
||||
let {id} = msg;
|
||||
let roleId = session.get('roleId');
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
let sid: string = session.get('sid');
|
||||
let index = findIndex(role.teraphs, {id});
|
||||
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
let teraphs = role.teraphs;
|
||||
let index = findIndex(teraphs, {id});
|
||||
if (index < 0)
|
||||
return resResult(STATUS.WRONG_PARMS);
|
||||
let teraph = role.teraphs[index];
|
||||
let teraph = teraphs[index];
|
||||
let teraphInfo = getTeraph(id, teraph.grade);
|
||||
if (!teraphInfo)
|
||||
return resResult(STATUS.DIC_DATA_NOT_FOUND)
|
||||
for (let attrName in getTeraphAttr()) {
|
||||
if (teraph[attrName] != teraphInfo[attrName +'Max'])
|
||||
|
||||
for(let [attrId, val] of teraph.attr) {
|
||||
if (teraph.attr.get(attrId) != teraphInfo.mainAttrMax.get(attrId))
|
||||
return resResult(STATUS.ROLE_TERAPH_NOT_QUILITY);
|
||||
teraph[attrName] = 0;
|
||||
|
||||
teraph.attr.set(attrId, 0);
|
||||
console.log('****', attrId, val)
|
||||
}
|
||||
teraph.grade++;
|
||||
teraph.grade ++;
|
||||
|
||||
|
||||
let nextTeraphInfo = getTeraph(id, teraph.grade)
|
||||
if (!nextTeraphInfo)
|
||||
return resResult(STATUS.DIC_DATA_NOT_FOUND)
|
||||
return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
||||
|
||||
let consumes = teraphInfo.upGradeMaterial;
|
||||
let result = await handleCost(roleId, sid, consumes);
|
||||
if (!result)
|
||||
return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH);
|
||||
for (let {id, number} of nextTeraphInfo.assiAttrValue) {
|
||||
let attrName = getAtrrNameById(id);
|
||||
role.globalCeAttr[attrName].ratioUp += number;
|
||||
}
|
||||
await RoleModel.updateRoleInfo(roleId, { teraphs: role.teraphs, globalCeAttr: role.globalCeAttr});
|
||||
await calAllHeroCe(sid, roleId);
|
||||
|
||||
role = await calAllHeroCe(HERO_SYSTEM_TYPE.TERAPH_UP, sid, roleId, { teraphs });
|
||||
return resResult(STATUS.SUCCESS, { roleId, teraphs: role.teraphs });
|
||||
}
|
||||
|
||||
@@ -246,7 +254,7 @@ export class RoleHandler {
|
||||
}
|
||||
|
||||
await SchoolModel.updateBySclAndPos(roleId, schoolId, positionId, { hid, isOpen })
|
||||
await calPlayerCeAndSave(sid, roleId, [], HERO_SYSTEM_TYPE.SCHOOL, [schoolId, hid, preHid]);
|
||||
await calAllHeroCe(HERO_SYSTEM_TYPE.SCHOOL, sid, roleId, {}, [schoolId, hid, preHid]);
|
||||
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
schoolId, positionId, hid, preHid, isOpen
|
||||
@@ -334,11 +342,20 @@ export class RoleHandler {
|
||||
let dicHeroScroll = getScollByStar(dicHero.quality, update.scrollStar, update.scrollQuality, update.scrollColorStar);
|
||||
update.scrollId = dicHeroScroll?dicHeroScroll.id: 0;
|
||||
|
||||
curHero = await HeroModel.updateHeroInfo(roleId, hid, update, 'hid scrollActive scrollId scrollStar scrollColorStar scrollQuality favour favourLv');
|
||||
await calPlayerCeAndSave(sid, roleId, [], HERO_SYSTEM_TYPE.SCROLL, [hid, favourLv]);
|
||||
let hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.SCROLL, sid, roleId, curHero, update); // 更新单个武将战力
|
||||
calAllHeroCe(HERO_SYSTEM_TYPE.SCROLL, sid, roleId, {}, [hid]); // 全局增加战力
|
||||
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
curHero
|
||||
curHero: {
|
||||
hid: hero.hid,
|
||||
scrollActive: hero.scrollActive,
|
||||
scrollId: hero.scrollId,
|
||||
scrollStar: hero.scrollStar,
|
||||
scrollColorStar: hero.scrollColorStar,
|
||||
scrollQuality: hero.scrollQuality,
|
||||
favour: hero.favour,
|
||||
favourLv: hero.favourLv,
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user