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