diff --git a/game-server/app/services/eventSercive.ts b/game-server/app/services/eventSercive.ts index 72a46d1cf..83ab25a0e 100644 --- a/game-server/app/services/eventSercive.ts +++ b/game-server/app/services/eventSercive.ts @@ -178,6 +178,7 @@ export async function refreshEvent(num: number, roleId: string, roleName: string let index = Math.floor(Math.random() * randomList.length); let dic = randomList[index]; let point = randomPosition(dic.movePointArray, prePoint, curPoint); + if(!point) break; let question = dic.eventType == EVENT_TYPE.QUIZ?randomQuestion(EVENT_QUIZ_NUM): undefined; let eventCode = genCode(8); let data = await EventRecordModel.saveEventRecord(eventCode, { @@ -191,21 +192,28 @@ export async function refreshEvent(num: number, roleId: string, roleName: string } } else { let randomList = dicEvent; + if(randomList.length == 0) return [] let curPoint = new Array(); for(let i = 0; i < num; i++) { let {dic} = getRandEelmWithWeight(randomList); // 临时处理,不出现相同的关卡id - for(let x = 0; x < 1000; x++) { + for(let x = 0; x < 1000; x++) { // 防死循环 let hasEvent = event.find(cur => { return cur.type == EVENT_TYPE.BATTLE && cur.battleId == dic.warId}); let hasPreEvent = preEvents.find(cur => { return cur.type == EVENT_TYPE.BATTLE && cur.battleId == dic.warId}); - if(!hasEvent && !hasPreEvent) break; + + if(x < 500) { // 基本不希望本轮和上轮出现过的关卡再次出现 + if(!hasEvent && !hasPreEvent) break; + } else { // 但是实在找不到,只要本轮没出现过就好 + if(!hasEvent) break; + } dic = getRandEelmWithWeight(randomList).dic; } - // if(!dic) break; + if(!dic) break; let point = randomPosition(dic.movePointArray, prePoint, curPoint); + if(!point) break; let eventCode = genCode(8); let question = dic.eventType == EVENT_TYPE.QUIZ?randomQuestion(EVENT_QUIZ_NUM): []; let data = await EventRecordModel.saveEventRecord(eventCode, { @@ -232,7 +240,7 @@ function randomPosition(positionArr: number[], prePoint: Array, curPoint range = positionArr.filter(point => {return !curPoint.includes(point)}); } if(range.length == 0) { // 还是不够,那是配表的问题,直接报错 - throw new Error('event position not enough'); + return false; } let index = Math.floor(Math.random() * range.length); let point = range[index]; diff --git a/shared/resource/jsons/dic_zyz_event.json b/shared/resource/jsons/dic_zyz_event.json index a30690a85..70c0ea7c8 100644 --- a/shared/resource/jsons/dic_zyz_event.json +++ b/shared/resource/jsons/dic_zyz_event.json @@ -8,7 +8,7 @@ "actorIDForQuestion": 0, "winReward": "11001&2000", "loseReward": "11001&1000", - "suitLevel": "1&60", + "suitLevel": "1&100", "warId": 0, "weight": 13, "movePointArray": "81&83&85&87", @@ -26,7 +26,7 @@ "actorIDForQuestion": 0, "winReward": "31002&150", "loseReward": "31002&75", - "suitLevel": "1&60", + "suitLevel": "1&100", "warId": 2001, "weight": 13, "movePointArray": "81&83&85&87", @@ -44,7 +44,7 @@ "actorIDForQuestion": 0, "winReward": "17054&40", "loseReward": "17054&20", - "suitLevel": "1&60", + "suitLevel": "1&100", "warId": 2002, "weight": 13, "movePointArray": "81&83&85&87", @@ -62,7 +62,7 @@ "actorIDForQuestion": 53, "winReward": "17055&2", "loseReward": "17055&1", - "suitLevel": "1&60", + "suitLevel": "1&100", "warId": 0, "weight": 13, "movePointArray": "81&83&85&87", @@ -80,7 +80,7 @@ "actorIDForQuestion": 12, "winReward": "31001&5000", "loseReward": "31001&2500", - "suitLevel": "1&60", + "suitLevel": "1&100", "warId": 0, "weight": 13, "movePointArray": "81&83&85&87", @@ -98,7 +98,7 @@ "actorIDForQuestion": 0, "winReward": "17051&200", "loseReward": "17051&100", - "suitLevel": "1&60", + "suitLevel": "1&100", "warId": 2003, "weight": 13, "movePointArray": "81&83&85&87", @@ -116,7 +116,7 @@ "actorIDForQuestion": 22, "winReward": "71001&1", "loseReward": "71001&1", - "suitLevel": "1&60", + "suitLevel": "1&100", "warId": 0, "weight": 13, "movePointArray": "81&83&85&87", @@ -134,7 +134,7 @@ "actorIDForQuestion": 0, "winReward": "17044&1", "loseReward": "17044&1", - "suitLevel": "1&60", + "suitLevel": "1&100", "warId": 0, "weight": 13, "movePointArray": "81&83&85&87", @@ -147,12 +147,12 @@ "eventID": 9, "eventType": 1, "quality": 1, - "name": "黄巾色将1", + "name": "土匪色首", "sSpineInUI": "SL_huangjindao", "actorIDForQuestion": 0, "winReward": "22001&1", "loseReward": "22001&1", - "suitLevel": "1&60", + "suitLevel": "1&100", "warId": 0, "weight": 13, "movePointArray": "&", @@ -160,743 +160,5 @@ "winDialogue": "12&13", "loseDialogue": "14&15", "group": 0 - }, - { - "eventID": 10, - "eventType": 1, - "quality": 1, - "name": "天降宝箱2", - "sSpineInUI": "gongbing", - "actorIDForQuestion": 0, - "winReward": "17052&2", - "loseReward": "17052&1", - "suitLevel": "90&100", - "warId": 0, - "weight": 13, - "movePointArray": "&", - "startDialogue": "1&4", - "winDialogue": "&", - "loseDialogue": "&", - "group": 0 - }, - { - "eventID": 11, - "eventType": 1, - "quality": 1, - "name": "逃兵献财2", - "sSpineInUI": "huangjindao", - "actorIDForQuestion": 0, - "winReward": "17053&1", - "loseReward": "17053&1", - "suitLevel": "90&100", - "warId": 0, - "weight": 13, - "movePointArray": "&", - "startDialogue": "2&3", - "winDialogue": "&", - "loseDialogue": "&", - "group": 0 - }, - { - "eventID": 12, - "eventType": 1, - "quality": 1, - "name": "老人奇遇2", - "sSpineInUI": "gongbing", - "actorIDForQuestion": 0, - "winReward": "60001&80", - "loseReward": "60001&40", - "suitLevel": "90&100", - "warId": 0, - "weight": 13, - "movePointArray": "&", - "startDialogue": "1&4", - "winDialogue": "&", - "loseDialogue": "&", - "group": 0 - }, - { - "eventID": 13, - "eventType": 2, - "quality": 2, - "name": "给贾诩解惑2", - "sSpineInUI": "jiaxu", - "actorIDForQuestion": 14, - "winReward": "11001&4000", - "loseReward": "11001&2000", - "suitLevel": "90&100", - "warId": 0, - "weight": 26, - "movePointArray": "&", - "startDialogue": "16&17", - "winDialogue": "18&", - "loseDialogue": "19&", - "group": 0 - }, - { - "eventID": 14, - "eventType": 2, - "quality": 2, - "name": "回答贾诩的考验2", - "sSpineInUI": "jiaxu", - "actorIDForQuestion": 14, - "winReward": "31002&200", - "loseReward": "31002&100", - "suitLevel": "90&100", - "warId": 0, - "weight": 26, - "movePointArray": "&", - "startDialogue": "16&17", - "winDialogue": "18&", - "loseDialogue": "19&", - "group": 0 - }, - { - "eventID": 15, - "eventType": 2, - "quality": 2, - "name": "帮助李典做题2", - "sSpineInUI": "lidian", - "actorIDForQuestion": 12, - "winReward": "17054&60", - "loseReward": "17054&30", - "suitLevel": "90&100", - "warId": 0, - "weight": 26, - "movePointArray": "&", - "startDialogue": "20&21&22&23&24", - "winDialogue": "25&", - "loseDialogue": "26&", - "group": 0 - }, - { - "eventID": 16, - "eventType": 3, - "quality": 2, - "name": "黄巾劫匪2", - "sSpineInUI": "huangjindao", - "actorIDForQuestion": 0, - "winReward": "17055&4", - "loseReward": "17055&2", - "suitLevel": "90&100", - "warId": 2001, - "weight": 26, - "movePointArray": "&", - "startDialogue": "5&6", - "winDialogue": "3&", - "loseDialogue": "7&", - "group": 0 - }, - { - "eventID": 17, - "eventType": 3, - "quality": 2, - "name": "解救百姓2", - "sSpineInUI": "qiangbing", - "actorIDForQuestion": 0, - "winReward": "31001&10000", - "loseReward": "31001&5000", - "suitLevel": "90&100", - "warId": 2002, - "weight": 26, - "movePointArray": "&", - "startDialogue": "27&28&29&30&31", - "winDialogue": "32&33", - "loseDialogue": "34&", - "group": 0 - }, - { - "eventID": 18, - "eventType": 3, - "quality": 2, - "name": "黄巾色将2", - "sSpineInUI": "SL_huangjindao", - "actorIDForQuestion": 0, - "winReward": "17051&400", - "loseReward": "17051&200", - "suitLevel": "90&100", - "warId": 2003, - "weight": 26, - "movePointArray": "&", - "startDialogue": "8&9&10&11", - "winDialogue": "12&13", - "loseDialogue": "14&15", - "group": 0 - }, - { - "eventID": 19, - "eventType": 1, - "quality": 2, - "name": "天降宝箱3", - "sSpineInUI": "gongbing", - "actorIDForQuestion": 0, - "winReward": "71001&2", - "loseReward": "71001&1", - "suitLevel": "90&100", - "warId": 0, - "weight": 26, - "movePointArray": "&", - "startDialogue": "1&4", - "winDialogue": "&", - "loseDialogue": "&", - "group": 0 - }, - { - "eventID": 20, - "eventType": 1, - "quality": 2, - "name": "逃兵献财3", - "sSpineInUI": "huangjindao", - "actorIDForQuestion": 0, - "winReward": "17044&2", - "loseReward": "17044&1", - "suitLevel": "90&100", - "warId": 0, - "weight": 26, - "movePointArray": "&", - "startDialogue": "2&3", - "winDialogue": "&", - "loseDialogue": "&", - "group": 0 - }, - { - "eventID": 21, - "eventType": 1, - "quality": 2, - "name": "老人奇遇3", - "sSpineInUI": "gongbing", - "actorIDForQuestion": 0, - "winReward": "22001&2", - "loseReward": "22001&1", - "suitLevel": "90&100", - "warId": 0, - "weight": 26, - "movePointArray": "&", - "startDialogue": "1&4", - "winDialogue": "&", - "loseDialogue": "&", - "group": 0 - }, - { - "eventID": 22, - "eventType": 2, - "quality": 2, - "name": "给贾诩解惑3", - "sSpineInUI": "jiaxu", - "actorIDForQuestion": 14, - "winReward": "17052&4", - "loseReward": "17052&2", - "suitLevel": "90&100", - "warId": 0, - "weight": 26, - "movePointArray": "&", - "startDialogue": "16&17", - "winDialogue": "18&", - "loseDialogue": "19&", - "group": 0 - }, - { - "eventID": 23, - "eventType": 2, - "quality": 2, - "name": "回答贾诩的考验3", - "sSpineInUI": "jiaxu", - "actorIDForQuestion": 14, - "winReward": "17053&2", - "loseReward": "17053&1", - "suitLevel": "90&100", - "warId": 0, - "weight": 26, - "movePointArray": "&", - "startDialogue": "16&17", - "winDialogue": "18&", - "loseDialogue": "19&", - "group": 0 - }, - { - "eventID": 24, - "eventType": 2, - "quality": 2, - "name": "帮助李典做题3", - "sSpineInUI": "lidian", - "actorIDForQuestion": 12, - "winReward": "60001&120", - "loseReward": "60001&60", - "suitLevel": "90&100", - "warId": 0, - "weight": 26, - "movePointArray": "&", - "startDialogue": "20&21&22&23&24", - "winDialogue": "25&", - "loseDialogue": "26&", - "group": 0 - }, - { - "eventID": 25, - "eventType": 3, - "quality": 3, - "name": "黄巾劫匪3", - "sSpineInUI": "huangjindao", - "actorIDForQuestion": 0, - "winReward": "11001&6000", - "loseReward": "11001&3000", - "suitLevel": "90&100", - "warId": 2001, - "weight": 26, - "movePointArray": "&", - "startDialogue": "5&6", - "winDialogue": "3&", - "loseDialogue": "7&", - "group": 0 - }, - { - "eventID": 26, - "eventType": 3, - "quality": 3, - "name": "解救百姓3", - "sSpineInUI": "qiangbing", - "actorIDForQuestion": 0, - "winReward": "31002&250", - "loseReward": "31002&125", - "suitLevel": "90&100", - "warId": 2002, - "weight": 26, - "movePointArray": "&", - "startDialogue": "27&28&29&30&31", - "winDialogue": "32&33", - "loseDialogue": "34&", - "group": 0 - }, - { - "eventID": 27, - "eventType": 3, - "quality": 3, - "name": "黄巾色将3", - "sSpineInUI": "SL_huangjindao", - "actorIDForQuestion": 0, - "winReward": "17054&80", - "loseReward": "17054&40", - "suitLevel": "90&100", - "warId": 2003, - "weight": 26, - "movePointArray": "&", - "startDialogue": "8&9&10&11", - "winDialogue": "12&13", - "loseDialogue": "14&15", - "group": 0 - }, - { - "eventID": 28, - "eventType": 1, - "quality": 3, - "name": "天降宝箱4", - "sSpineInUI": "gongbing", - "actorIDForQuestion": 0, - "winReward": "17055&6", - "loseReward": "17055&3", - "suitLevel": "90&100", - "warId": 0, - "weight": 26, - "movePointArray": "&", - "startDialogue": "1&4", - "winDialogue": "&", - "loseDialogue": "&", - "group": 0 - }, - { - "eventID": 29, - "eventType": 1, - "quality": 3, - "name": "逃兵献财4", - "sSpineInUI": "huangjindao", - "actorIDForQuestion": 0, - "winReward": "31001&15000", - "loseReward": "31001&7500", - "suitLevel": "90&100", - "warId": 0, - "weight": 26, - "movePointArray": "&", - "startDialogue": "2&3", - "winDialogue": "&", - "loseDialogue": "&", - "group": 0 - }, - { - "eventID": 30, - "eventType": 1, - "quality": 3, - "name": "老人奇遇4", - "sSpineInUI": "gongbing", - "actorIDForQuestion": 0, - "winReward": "17051&600", - "loseReward": "17051&300", - "suitLevel": "90&100", - "warId": 0, - "weight": 26, - "movePointArray": "&", - "startDialogue": "1&4", - "winDialogue": "&", - "loseDialogue": "&", - "group": 0 - }, - { - "eventID": 31, - "eventType": 2, - "quality": 3, - "name": "给贾诩解惑4", - "sSpineInUI": "jiaxu", - "actorIDForQuestion": 14, - "winReward": "71001&3", - "loseReward": "71001&2", - "suitLevel": "90&100", - "warId": 0, - "weight": 26, - "movePointArray": "&", - "startDialogue": "16&17", - "winDialogue": "18&", - "loseDialogue": "19&", - "group": 0 - }, - { - "eventID": 32, - "eventType": 2, - "quality": 3, - "name": "回答贾诩的考验4", - "sSpineInUI": "jiaxu", - "actorIDForQuestion": 14, - "winReward": "17044&2", - "loseReward": "17044&1", - "suitLevel": "90&100", - "warId": 0, - "weight": 26, - "movePointArray": "&", - "startDialogue": "16&17", - "winDialogue": "18&", - "loseDialogue": "19&", - "group": 0 - }, - { - "eventID": 33, - "eventType": 2, - "quality": 3, - "name": "帮助李典做题4", - "sSpineInUI": "lidian", - "actorIDForQuestion": 12, - "winReward": "17045&1", - "loseReward": "17045&1", - "suitLevel": "90&100", - "warId": 0, - "weight": 26, - "movePointArray": "&", - "startDialogue": "20&21&22&23&24", - "winDialogue": "25&", - "loseDialogue": "26&", - "group": 0 - }, - { - "eventID": 34, - "eventType": 3, - "quality": 3, - "name": "黄巾劫匪4", - "sSpineInUI": "huangjindao", - "actorIDForQuestion": 0, - "winReward": "22001&2", - "loseReward": "22001&1", - "suitLevel": "90&100", - "warId": 2001, - "weight": 26, - "movePointArray": "&", - "startDialogue": "5&6", - "winDialogue": "3&", - "loseDialogue": "7&", - "group": 0 - }, - { - "eventID": 35, - "eventType": 3, - "quality": 3, - "name": "解救百姓4", - "sSpineInUI": "qiangbing", - "actorIDForQuestion": 0, - "winReward": "17052&6", - "loseReward": "17052&3", - "suitLevel": "90&100", - "warId": 2002, - "weight": 26, - "movePointArray": "&", - "startDialogue": "27&28&29&30&31", - "winDialogue": "32&33", - "loseDialogue": "34&", - "group": 0 - }, - { - "eventID": 36, - "eventType": 3, - "quality": 3, - "name": "黄巾色将4", - "sSpineInUI": "SL_huangjindao", - "actorIDForQuestion": 0, - "winReward": "17053&3", - "loseReward": "17053&2", - "suitLevel": "90&100", - "warId": 2003, - "weight": 26, - "movePointArray": "&", - "startDialogue": "8&9&10&11", - "winDialogue": "12&13", - "loseDialogue": "14&15", - "group": 0 - }, - { - "eventID": 37, - "eventType": 1, - "quality": 3, - "name": "老人奇遇2", - "sSpineInUI": "gongbing", - "actorIDForQuestion": 0, - "winReward": "60001&80", - "loseReward": "60001&40", - "suitLevel": "90&100", - "warId": 0, - "weight": 13, - "movePointArray": "&", - "startDialogue": "1&4", - "winDialogue": "&", - "loseDialogue": "&", - "group": 0 - }, - { - "eventID": 38, - "eventType": 1, - "quality": 4, - "name": "天降宝箱", - "sSpineInUI": "gongbing", - "actorIDForQuestion": 0, - "winReward": "11001&2000", - "loseReward": "11001&1000", - "suitLevel": "90&100", - "warId": 0, - "weight": 13, - "movePointArray": "&", - "startDialogue": "1&4", - "winDialogue": "&", - "loseDialogue": "&", - "group": 0 - }, - { - "eventID": 39, - "eventType": 1, - "quality": 4, - "name": "逃兵献财", - "sSpineInUI": "huangjindao", - "actorIDForQuestion": 0, - "winReward": "31002&150", - "loseReward": "31002&75", - "suitLevel": "90&100", - "warId": 0, - "weight": 13, - "movePointArray": "&", - "startDialogue": "2&3", - "winDialogue": "&", - "loseDialogue": "&", - "group": 0 - }, - { - "eventID": 40, - "eventType": 1, - "quality": 4, - "name": "老人奇遇", - "sSpineInUI": "gongbing", - "actorIDForQuestion": 0, - "winReward": "17054&40", - "loseReward": "17054&20", - "suitLevel": "90&100", - "warId": 0, - "weight": 13, - "movePointArray": "&", - "startDialogue": "1&4", - "winDialogue": "&", - "loseDialogue": "&", - "group": 0 - }, - { - "eventID": 41, - "eventType": 2, - "quality": 4, - "name": "给贾诩解惑", - "sSpineInUI": "jiaxu", - "actorIDForQuestion": 14, - "winReward": "17055&2", - "loseReward": "17055&1", - "suitLevel": "90&100", - "warId": 0, - "weight": 13, - "movePointArray": "&", - "startDialogue": "16&17", - "winDialogue": "18&", - "loseDialogue": "19&", - "group": 0 - }, - { - "eventID": 42, - "eventType": 2, - "quality": 4, - "name": "回答贾诩的考验", - "sSpineInUI": "jiaxu", - "actorIDForQuestion": 14, - "winReward": "31001&5000", - "loseReward": "31001&2500", - "suitLevel": "90&100", - "warId": 0, - "weight": 13, - "movePointArray": "&", - "startDialogue": "16&17", - "winDialogue": "18&", - "loseDialogue": "19&", - "group": 0 - }, - { - "eventID": 43, - "eventType": 2, - "quality": 4, - "name": "帮助李典文学题", - "sSpineInUI": "lidian", - "actorIDForQuestion": 12, - "winReward": "17051&200", - "loseReward": "17051&100", - "suitLevel": "90&100", - "warId": 0, - "weight": 13, - "movePointArray": "&", - "startDialogue": "20&21&22&23&24", - "winDialogue": "25&", - "loseDialogue": "26&", - "group": 0 - }, - { - "eventID": 44, - "eventType": 3, - "quality": 4, - "name": "黄巾劫匪", - "sSpineInUI": "huangjindao", - "actorIDForQuestion": 0, - "winReward": "71001&1", - "loseReward": "71001&1", - "suitLevel": "90&100", - "warId": 2001, - "weight": 13, - "movePointArray": "&", - "startDialogue": "5&6", - "winDialogue": "3&", - "loseDialogue": "7&", - "group": 0 - }, - { - "eventID": 45, - "eventType": 3, - "quality": 4, - "name": "解救百姓", - "sSpineInUI": "qiangbing", - "actorIDForQuestion": 0, - "winReward": "17044&1", - "loseReward": "17044&1", - "suitLevel": "90&100", - "warId": 2002, - "weight": 13, - "movePointArray": "&", - "startDialogue": "27&28&29&30&31", - "winDialogue": "32&33", - "loseDialogue": "34&", - "group": 0 - }, - { - "eventID": 46, - "eventType": 3, - "quality": 4, - "name": "黄巾色将", - "sSpineInUI": "SL_huangjindao", - "actorIDForQuestion": 0, - "winReward": "22001&1", - "loseReward": "22001&1", - "suitLevel": "90&100", - "warId": 2003, - "weight": 13, - "movePointArray": "&", - "startDialogue": "8&9&10&11", - "winDialogue": "12&13", - "loseDialogue": "14&15", - "group": 0 - }, - { - "eventID": 47, - "eventType": 1, - "quality": 4, - "name": "天降宝箱2", - "sSpineInUI": "gongbing", - "actorIDForQuestion": 0, - "winReward": "17052&2", - "loseReward": "17052&1", - "suitLevel": "90&100", - "warId": 0, - "weight": 13, - "movePointArray": "&", - "startDialogue": "1&4", - "winDialogue": "&", - "loseDialogue": "&", - "group": 0 - }, - { - "eventID": 48, - "eventType": 1, - "quality": 4, - "name": "逃兵献财2", - "sSpineInUI": "huangjindao", - "actorIDForQuestion": 0, - "winReward": "17053&1", - "loseReward": "17053&1", - "suitLevel": "90&100", - "warId": 0, - "weight": 13, - "movePointArray": "&", - "startDialogue": "2&3", - "winDialogue": "&", - "loseDialogue": "&", - "group": 0 - }, - { - "eventID": 49, - "eventType": 1, - "quality": 4, - "name": "老人奇遇2", - "sSpineInUI": "gongbing", - "actorIDForQuestion": 0, - "winReward": "60001&80", - "loseReward": "60001&40", - "suitLevel": "90&100", - "warId": 0, - "weight": 13, - "movePointArray": "&", - "startDialogue": "1&4", - "winDialogue": "&", - "loseDialogue": "&", - "group": 0 - }, - { - "eventID": 50, - "eventType": 1, - "quality": 4, - "name": "老人奇遇2", - "sSpineInUI": "gongbing", - "actorIDForQuestion": 0, - "winReward": "60001&80", - "loseReward": "60001&40", - "suitLevel": "90&100", - "warId": 0, - "weight": 13, - "movePointArray": "&", - "startDialogue": "1&4", - "winDialogue": "&", - "loseDialogue": "&", - "group": 0 } ] \ No newline at end of file