304 lines
10 KiB
TypeScript
304 lines
10 KiB
TypeScript
import ExpUtil from "../core/ExpUtil";
|
|
import DB from "../utils/DB";
|
|
import PlayerMgr from "../object/PlayerMgr";
|
|
import SKDataUtil from "../gear/SKDataUtil";
|
|
import ChangeCard from "../object/ChangeCard";
|
|
import * as schedule from "node-schedule";
|
|
import SKCxfUtil from "../gear/SKCxfUtil";
|
|
import {Operate} from "../role/EEnum";
|
|
|
|
export default class FivePhases {
|
|
static shared = new FivePhases();
|
|
fplist: any[];
|
|
|
|
constructor(){
|
|
this.fplist = [];
|
|
}
|
|
|
|
init() {
|
|
this.readDB();
|
|
}
|
|
|
|
readDB() {
|
|
let sql = `SELECT * FROM qy_five_phases`;
|
|
DB.query(sql, (error: any, rows: any) => {
|
|
for (let i = 0; i < rows.length; i++) {
|
|
this.fplist.push({
|
|
roleid: rows[i].roleid,//角色id
|
|
fplevel: rows[i].five_phases_level, //五行等级
|
|
jinlevel: rows[i].jin_level, //金等级
|
|
jinexp: rows[i].jin_exp, //金经验
|
|
mulevel: rows[i].mu_level, //木等级
|
|
muexp: rows[i].mu_exp, //木经验
|
|
shuilevel: rows[i].shui_level, //水等级
|
|
shuiexp: rows[i].shui_exp, //水经验
|
|
huolevel: rows[i].huo_level, //火等级
|
|
huoexp: rows[i].huo_exp, //火经验
|
|
tulevel: rows[i].tu_level, //土等级
|
|
tuexp: rows[i].tu_exp, //土经验
|
|
count: rows[i].use_count, //次数
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
//获取五行
|
|
getFivePhasesByRoleid(roleid: number, type: number = 1) {
|
|
for (let key in this.fplist) {
|
|
let f = this.fplist[key];
|
|
if (f.roleid == roleid) {
|
|
if(type == 1){
|
|
f.upexp = ExpUtil.getFivePhasesExp(f.jinlevel);
|
|
}
|
|
if(type == 2){
|
|
f.upexp = ExpUtil.getFivePhasesExp(f.mulevel);
|
|
}
|
|
if(type == 3){
|
|
f.upexp = ExpUtil.getFivePhasesExp(f.shuilevel);
|
|
}
|
|
if(type == 4){
|
|
f.upexp = ExpUtil.getFivePhasesExp(f.huolevel);
|
|
}
|
|
if(type == 5){
|
|
f.upexp = ExpUtil.getFivePhasesExp(f.tulevel);
|
|
}
|
|
return f;
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
addJinExp(roleid: any, exp: number){
|
|
let fp = this.getFivePhasesByRoleid(roleid,1);
|
|
if(fp == undefined){
|
|
return;
|
|
}
|
|
if(fp.count<=0){//修炼次数小于0
|
|
return;
|
|
}
|
|
let player = PlayerMgr.shared.getPlayerByRoleId(roleid);
|
|
let upexp = ExpUtil.getFivePhasesExp(fp.jinlevel);//获取升级所需的经验
|
|
fp.jinexp += exp;
|
|
let isleavelup = false;
|
|
while (fp.jinexp >= upexp) {
|
|
fp.jinexp -= upexp;
|
|
fp.jinlevel++;
|
|
isleavelup = true;
|
|
upexp = ExpUtil.getFivePhasesExp(fp.jinlevel);
|
|
}
|
|
if(isleavelup){
|
|
this.fpMarkup(fp);//升级计算五行修炼加成
|
|
DB.updateFivePhasesById(fp,roleid);
|
|
}
|
|
if(player){
|
|
SKCxfUtil.getCxfRecordOperate({
|
|
roleId: player.roleid,
|
|
roleName: player.name,
|
|
operateType: Operate.ITEM,
|
|
operateDepict: "金灵珠",
|
|
operateResSerial: player.roleid,
|
|
operateResName: player.name,
|
|
operateContent: SKDataUtil.toJson(fp, "{}")
|
|
})
|
|
}
|
|
player.send('s2c_five_phases', {
|
|
vecRow: SKDataUtil.toJson(fp, "{}"),
|
|
upexp: upexp,
|
|
});
|
|
}
|
|
|
|
addMuExp(roleid: any, exp: number){
|
|
let fp = this.getFivePhasesByRoleid(roleid,2);
|
|
if(fp == undefined){
|
|
return;
|
|
}
|
|
if(fp.count<=0){
|
|
return;
|
|
}
|
|
let player = PlayerMgr.shared.getPlayerByRoleId(roleid);
|
|
let upexp = ExpUtil.getFivePhasesExp(fp.mulevel);//获取升级所需的经验
|
|
fp.muexp += exp;
|
|
let isleavelup = false;
|
|
while (fp.muexp >= upexp) {
|
|
fp.muexp -= upexp;
|
|
fp.mulevel++;
|
|
isleavelup = true;
|
|
upexp = ExpUtil.getFivePhasesExp(fp.mulevel);
|
|
}
|
|
if(isleavelup){
|
|
this.fpMarkup(fp);//升级计算五行修炼加成
|
|
DB.updateFivePhasesById(fp,roleid);
|
|
}
|
|
if(player){
|
|
SKCxfUtil.getCxfRecordOperate({
|
|
roleId: player.roleid,
|
|
roleName: player.name,
|
|
operateType: Operate.ITEM,
|
|
operateDepict: "木灵珠",
|
|
operateResSerial: player.roleid,
|
|
operateResName: player.name,
|
|
operateContent: SKDataUtil.toJson(fp, "{}")
|
|
})
|
|
}
|
|
player.send('s2c_five_phases', {
|
|
vecRow: SKDataUtil.toJson(fp, "{}"),
|
|
upexp: upexp,
|
|
});
|
|
}
|
|
|
|
addShuiExp(roleid: any, exp: number){
|
|
let fp = this.getFivePhasesByRoleid(roleid,3);
|
|
if(fp == undefined){
|
|
return;
|
|
}
|
|
if(fp.count<=0){
|
|
return;
|
|
}
|
|
let player = PlayerMgr.shared.getPlayerByRoleId(roleid);
|
|
let upexp = ExpUtil.getFivePhasesExp(fp.shuilevel);//获取升级所需的经验
|
|
fp.shuiexp += exp;
|
|
let isleavelup = false;
|
|
while (fp.shuiexp >= upexp) {
|
|
fp.shuiexp -= upexp;
|
|
fp.shuilevel++;
|
|
isleavelup = true;
|
|
upexp = ExpUtil.getFivePhasesExp(fp.shuilevel);
|
|
}
|
|
if(isleavelup){
|
|
this.fpMarkup(fp);//升级计算五行修炼加成
|
|
DB.updateFivePhasesById(fp,roleid);
|
|
}
|
|
if(player){
|
|
SKCxfUtil.getCxfRecordOperate({
|
|
roleId: player.roleid,
|
|
roleName: player.name,
|
|
operateType: Operate.ITEM,
|
|
operateDepict: "水灵珠",
|
|
operateResSerial: player.roleid,
|
|
operateResName: player.name,
|
|
operateContent: SKDataUtil.toJson(fp, "{}")
|
|
})
|
|
}
|
|
player.send('s2c_five_phases', {
|
|
vecRow: SKDataUtil.toJson(fp, "{}"),
|
|
upexp: upexp,
|
|
});
|
|
}
|
|
|
|
addHuoExp(roleid: any, exp: number){
|
|
let fp = this.getFivePhasesByRoleid(roleid,4);
|
|
if(fp == undefined){
|
|
return;
|
|
}
|
|
if(fp.count<=0){
|
|
return;
|
|
}
|
|
let player = PlayerMgr.shared.getPlayerByRoleId(roleid);
|
|
let upexp = ExpUtil.getFivePhasesExp(fp.huolevel);//获取升级所需的经验
|
|
fp.huoexp += exp;
|
|
let isleavelup = false;
|
|
while (fp.huoexp >= upexp) {
|
|
fp.huoexp -= upexp;
|
|
fp.huolevel++;
|
|
isleavelup = true;
|
|
upexp = ExpUtil.getFivePhasesExp(fp.huolevel);
|
|
}
|
|
if(isleavelup){
|
|
this.fpMarkup(fp);//升级计算五行修炼加成
|
|
DB.updateFivePhasesById(fp,roleid);
|
|
}
|
|
if(player){
|
|
SKCxfUtil.getCxfRecordOperate({
|
|
roleId: player.roleid,
|
|
roleName: player.name,
|
|
operateType: Operate.ITEM,
|
|
operateDepict: "火灵珠",
|
|
operateResSerial: player.roleid,
|
|
operateResName: player.name,
|
|
operateContent: SKDataUtil.toJson(fp, "{}")
|
|
})
|
|
}
|
|
player.send('s2c_five_phases', {
|
|
vecRow: SKDataUtil.toJson(fp, "{}"),
|
|
upexp: upexp,
|
|
});
|
|
}
|
|
|
|
addTuExp(roleid: any, exp: number){
|
|
let fp = this.getFivePhasesByRoleid(roleid,5);
|
|
if(fp == undefined){
|
|
return;
|
|
}
|
|
if(fp.count<=0){
|
|
return;
|
|
}
|
|
let player = PlayerMgr.shared.getPlayerByRoleId(roleid);
|
|
let upexp = ExpUtil.getFivePhasesExp(fp.tulevel);//获取升级所需的经验
|
|
fp.tuexp += exp;
|
|
let isleavelup = false;
|
|
while (fp.tuexp >= upexp) {
|
|
fp.tuexp -= upexp;
|
|
fp.tulevel++;
|
|
isleavelup = true;
|
|
upexp = ExpUtil.getFivePhasesExp(fp.tulevel);
|
|
}
|
|
if(isleavelup){
|
|
this.fpMarkup(fp);//升级计算五行修炼加成
|
|
DB.updateFivePhasesById(fp,roleid);
|
|
}
|
|
if(player){
|
|
SKCxfUtil.getCxfRecordOperate({
|
|
roleId: player.roleid,
|
|
roleName: player.name,
|
|
operateType: Operate.ITEM,
|
|
operateDepict: "土灵珠",
|
|
operateResSerial: player.roleid,
|
|
operateResName: player.name,
|
|
operateContent: SKDataUtil.toJson(fp, "{}")
|
|
})
|
|
}
|
|
player.send('s2c_five_phases', {
|
|
vecRow: SKDataUtil.toJson(fp, "{}"),
|
|
upexp: upexp
|
|
});
|
|
}
|
|
|
|
fplevelup(data: any){
|
|
let fp = this.getFivePhasesByRoleid(data.roleid);
|
|
let player = PlayerMgr.shared.getPlayerByRoleId(data.roleid);
|
|
let isleavelup = false;
|
|
if(fp.mulevel > fp.fplevel && fp.shuilevel > fp.fplevel && fp.huolevel > fp.fplevel && fp.tulevel > fp.fplevel && fp.jinlevel > fp.fplevel){
|
|
fp.fplevel++;
|
|
isleavelup = true;
|
|
}else{
|
|
player.send('s2c_notice', {
|
|
strRichText: '请先提升其他五行等级'
|
|
});
|
|
return
|
|
}
|
|
if(isleavelup){
|
|
DB.updateFivePhasesById(fp,data.roleid);
|
|
}
|
|
player.send('s2c_five_phases', {
|
|
vecRow: SKDataUtil.toJson(fp, "{}")
|
|
});
|
|
}
|
|
|
|
//计算五行加成
|
|
fpMarkup(fp: any){
|
|
let cardlist = ChangeCard.shared.cardlist;
|
|
for(let i = 0; i < cardlist.length; i++){
|
|
let card = cardlist[i];
|
|
let fivephases = SKDataUtil.jsonBy(card.fivephases);//变身卡五行
|
|
card.fpmarkup = ((((fivephases.jin / 100) * fp.jinlevel) + ((fivephases.mu / 100) * fp.mulevel) + ((fivephases.shui / 100) * fp.shuilevel) + ((fivephases.huo / 100) * fp.huolevel) + ((fivephases.tu / 100) * fp.tulevel))) * 2;
|
|
}
|
|
}
|
|
|
|
//获取五行加成
|
|
getfpMarkup(roleid: number, card: any){
|
|
let fp = this.getFivePhasesByRoleid(roleid);
|
|
let fivephases = SKDataUtil.jsonBy(card.fivephases);//变身卡五行
|
|
let fpmarkup = ((((fivephases.jin / 100) * fp.jinlevel) + ((fivephases.mu / 100) * fp.mulevel) + ((fivephases.shui / 100) * fp.shuilevel) + ((fivephases.huo / 100) * fp.huolevel) + ((fivephases.tu / 100) * fp.tulevel))) * 2;
|
|
return fpmarkup;
|
|
}
|
|
} |