xy-server/game/object/FivePhases.ts
2025-04-23 09:34:08 +08:00

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;
}
}