import { Client } from './Client'; import 'mocha'; import { PinusWSClient } from 'pinus-robot-plugin'; import { expect } from 'chai'; import { checkBattleGoods, checkDisplayItems, checkSuccessResponse, checkTimeStamp, checkWarJson } from './CheckPatten'; import { DEBUG_MAGIC_WORD } from '../app/consts'; import { getRandSingleEelm } from './pureUtil'; import * as util from 'util'; const NORMAIL_BATTLEID = 101; const DUNGEON_BATTLEID = 5001; describe('稷下学宫测试', function () { let pinusClient: PinusWSClient; let roleInfo; before(function (done) { const c = new Client(); const timer = setInterval(() => { if (c.client) { pinusClient = c.client; roleInfo = c.roleInfo; clearInterval(timer); done(); } }, 500); }); after(function (done) { pinusClient.disconnect(); // disconnect 后等待 500ms,供服务器清理环境、退出频道等 setTimeout(() => { done(); }, 500); }); it('获取大界面', function (done) { pinusClient.request('battle.rougeHandler.getData', {}, (res) => { // console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null })); done(); }); }); it('获取一场进行中游戏数据', function (done) { pinusClient.request('battle.rougeHandler.getGame', {}, (res) => { // console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null })); done(); }); }); it('初始随机角色卡,开始游戏', function (done) { pinusClient.request('battle.rougeHandler.getInitCharaCard', { type: 1, grade: 1 }, (res) => { pinusClient.request('battle.rougeHandler.startGame', { gameCode: res.data.gameCode, authorType: 1 }, (res) => { done(); }); // console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null })); }); }); async function someAsyncOperation(route: string, param: any) { let ret: any = new Promise((resolve, reject) => { pinusClient.request(route, param, (result) => { resolve({ ...result }); }); }); return ret; } it('开始游戏', async function () { const result1: any = await someAsyncOperation('battle.rougeHandler.getGame', {}); console.log('获取游戏数据battle.rougeHandler.getGame', result1.msg); const gameCode: string = result1.data.gameCode; const nodes = result1.data.nodes; const charas = result1.data.charas; const charaCodes: string[] = [charas[0].charaCode]; for (let { layer, layerNodes } of nodes) { let detailCode = layerNodes[0].detailCode; let nodeType = layerNodes[0].type; const result2: any = await someAsyncOperation('battle.rougeHandler.chooseNode', { gameCode, layer, detailCode }); console.log('选择节点battle.rougeHandler.chooseNode', result2.msg); let chooseNodeData = result2.data; const rewards = chooseNodeData.curNode?.reward?.rewards; const warId = chooseNodeData.curNode?.warId; const shops = chooseNodeData.curNode?.shops; if (warId) { const result3: any = await someAsyncOperation('battle.rougeHandler.checkBattle', { gameCode, detailCode, warId, charaCodes }) console.log('检测挑战battle.rougeHandler.checkBattle', result3.msg); const battleCode: string = result2.data.battleCode; const status: number = 1; const round: number = 10; const rougeDamage = [{ charaCode: charas[0].charaCode, hp: charas[0].hp / 2, shield: charas[0].shield, other: '', damage: 100, heal: 1, unserDamage: 100, isAp: true, isRound: true, }] const result4: any = await someAsyncOperation('battle.rougeHandler.battleEnd', { gameCode, detailCode, battleCode, warId, status, round, rougeDamage }) console.log('挑战结算battle.rougeHandler.battleEnd', result4.msg); for (let { groupIndex, groupStatus, chooseNum, options } of rewards) { let optionIndexs: number[] = []; let alreadyNum = 0; for (let { optionIndex, optionGroup } of options) { if (optionGroup == 1) alreadyNum += 1; if (optionIndexs.length == chooseNum) continue; optionIndexs.push(optionIndex); } if (alreadyNum < chooseNum) { const result5: any = await someAsyncOperation('battle.rougeHandler.chooseReward', { gameCode, detailCode, groupIndex, optionIndexs }) console.log('领取奖励battle.rougeHandler.chooseReward', result5.msg); } } } // 商店 if (shops && shops.length > 0) { const result6: any = await someAsyncOperation('battle.rougeHandler.shopBuy', { gameCode, detailCode, optionIndex: shops[0].optionIndex }) console.log('商店购买battle.rougeHandler.shopBuy', result6.msg); } //休整点 if (nodeType == 5) { //恢复 const result7: any = await someAsyncOperation('battle.rougeHandler.recovery', { gameCode, detailCode }) console.log('休整点battle.rougeHandler.recovery', result7.msg); //招募 //强化 } //TODO } const result: any = await someAsyncOperation('battle.rougeHandler.gameEnd', { gameCode }) console.log('游戏结算battle.rougeHandler.gameEnd', result.msg); }) // it('chooseNode', function (done) { // pinusClient.request('battle.rougeHandler.chooseNode', { gameCode: '4EPoEyML', layer: 2, detailCode: 'gREeb6Ku' }, (res) => { // console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null })); // done(); // }); // }); // it('gameEnd', function (done) { // pinusClient.request('battle.rougeHandler.gameEnd', { gameCode: 'ZgaiZuom' }, (res) => { // console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null })); // done(); // }); // }); // it('shopBuy', function (done) { // pinusClient.request('battle.rougeHandler.shopBuy', { gameCode: '5b8ioYN3', detailCode: '6ZhZYDXk', optionIndex: 1 }, (res) => { // console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null })); // done(); // }); // }); // it('chooseReward', function (done) { // pinusClient.request('battle.rougeHandler.chooseReward', { gameCode: '5b8ioYN3', detailCode: 'Jv5JEneT', groupIndex: 1, optionIndexs: [0] }, (res) => { // console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null })); // done(); // }); // }); // it('checkBattle', function (done) { // pinusClient.request('battle.rougeHandler.checkBattle', { gameCode: '4EPoEyML', detailCode: 'gREeb6Ku' ,warId:107, charaCodes:['D41jpqe6']}, (res) => { // console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null })); // done(); // }); // }); // it('battleEnd', function (done) { // pinusClient.request('battle.rougeHandler.battleEnd', { gameCode: '5b8ioYN3', detailCode: 'pEu6Wetd', warId: 102, battleCode: 'R3FobvR2', status: 1, round: 5, rougeDamage: [{ charaCode: 'WaAhKQu6',hp:1, ap:1, shield:1 }] }, (res) => { // console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null })); // done(); // }); // }); // it('nodeEnd', function (done) { // pinusClient.request('battle.rougeHandler.nodeEnd', { gameCode: 'MkSLT1HY', detailCode: 'fve9s7ej' }, (res) => { // console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null })); // done();`` // }); // }); // it('chooseOption', function (done) { // pinusClient.request('battle.rougeHandler.chooseOption', { gameCode: '4EPoEyML', detailCode: 'gREeb6Ku', eventOptions:[1,4,10, 13] }, (res) => { // console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null })); // done(); // }); // }); // it('trainCard', function (done) { // pinusClient.request('battle.rougeHandler.trainCard', { gameCode: '4EPoEyML', detailCode: 'gREeb6Ku', cardCode:'GB4AtwlA' }, (res) => { // console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null })); // done(); // }); // }); // it('recovery', function (done) { // pinusClient.request('battle.rougeHandler.recovery', { gameCode: '4EPoEyML', detailCode: 'gREeb6Ku' }, (res) => { // console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null })); // done(); // }); // }); // index: NumberInt("0"), // cardCode: "ShNTcBGa", // cardId: NumberInt("10003") // it('putOnOrOffCard', function (done) { // pinusClient.request('battle.rougeHandler.putOnOrOffCard', { gameCode: '4EPoEyML', charaCode: 'GLYk8Q1C', cards: [{ index: 0, cardCode: "", }] }, (res) => { // console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null })); // done(); // }); // }); // for (let id = 20001; id <= 20034; id++) { // it('debugAddCard', function (done) { // pinusClient.request('battle.rougeHandler.debugAddCard', { tye: 3, id }, (res) => { // console.log('-x-x--x-x-x-x-x-x-x-x-x- res', util.inspect(res, { depth: null })); // done(); // }); // }); // } });