From 35dcd367cbf1954f654cb3e3731194fdf1d6bc57 Mon Sep 17 00:00:00 2001 From: ZeroRin Date: Sat, 2 Sep 2023 14:36:28 +0800 Subject: [PATCH] add turn selection --- main.js | 50 +++++++++++++++++++++++++++++++++----------- text/ch/ui_text.json | 1 + 2 files changed, 39 insertions(+), 12 deletions(-) diff --git a/main.js b/main.js index 546b972..0c6fde3 100644 --- a/main.js +++ b/main.js @@ -283,17 +283,19 @@ const calculateTheaterLevelAdjustments = () => { theaterAreaToLevelAdjustments = {}; Theater_area.forEach((area) => { - const levelsMatch = area.enemy_lv.match(/^(-?\d+),.*,(-?\d+)$/); + eval(`levelsMatch = [${area.enemy_lv}];`) + // const levelsMatch = area.enemy_lv.match(/^(-?\d+),.*,(-?\d+)$/); const teamMatch = area.enemy_group.matchAll(/(?:^|,)(\d+)-/g); if (levelsMatch) { theaterAreaToLevelAdjustments[area.id] = { - min: Number(levelsMatch[1]), - max: Number(levelsMatch[2]), + min: Math.min.apply(null, levelsMatch), + max: Math.max.apply(null, levelsMatch), + levels: levelsMatch, enemyTeamIds: [...teamMatch].map((match) => Number(match[1])), }; } }); - //console.log(theaterAreaToLevelAdjustments); + // console.log(theaterAreaToLevelAdjustments); }; const calculateDefDrillTeamLevels = () => { @@ -1050,12 +1052,14 @@ function missioncreat(){ .map(([k, v]) => ``).join(""); var missionOptionsHtml = missionOptions.map((opt) => ``).join(""); - var output = `
${UI_TEXT["map_select"]} ▷
-
-
- - -
`; + var output = ` +
${UI_TEXT["map_select"]} ▷
+
+
+ + ${UI_TEXT["turnselect"]} +
+ `; $("#campaignchose").html(output); @@ -1087,6 +1091,16 @@ function missioncreat(){ updatemap(); }); + + $("#turnselect").change(function(){ + // CHANGE FROM GFWIKI: Campaign/map select now goes through URL state. + const campaign = $("#campaignselect").val(); + const mission = $("#missionselect").val(); + window.history.pushState({}, '', `#campaign=${campaign}&mission=${mission}`); + + enemydisplay(Number($("#enemyselect").val())); + updatemap(); + }); $(window).on('hashchange', function() { updatemap(); }); @@ -2227,9 +2241,14 @@ function showDefenseDrill(mission) { function efectcal(enemy_team_id, levelOffset=0, armorCoef=600) { var efect = 0; - let data = []; + if (Number($("#campaignselect").val()) < 6000){ + turn = $("#turnselect").val() + teamData = Enemy_team_map[enemy_team_id]; + eval(`correction_turn={${teamData["correction_turn"]}}`) + levelOffset = correction_turn[Number(turn)] || 0 + } Enemy_in_team_by_team_id[Number(enemy_team_id)].forEach(({enemy_character_type_id, level, number, def_percent}) => { - var level = Number(level) + (levelOffset || 0); + level = level+levelOffset var charatype = Enemy_character_type_by_id[enemy_character_type_id]; var attr_number = Number(number); @@ -2655,6 +2674,13 @@ function enemydisplay(enemy_team_id){ def: getTheaterEnemyAttributeRange(charatype, "def", level, adjustments), }; } else { + teamData = Enemy_team.find((team) => team.id === Number(enemy_team_id)); + if (teamData) { + var turn = $("#turnselect").val() + eval(`correction_turn={${teamData["correction_turn"]}}`) + levelOffset = correction_turn[Number(turn)] || 0 + level = level + levelOffset + } displayedValues = { level: level, hp: bround(enemyattribute(charatype , "maxlife" , level)), diff --git a/text/ch/ui_text.json b/text/ch/ui_text.json index 4293e4d..1fc83b7 100644 --- a/text/ch/ui_text.json +++ b/text/ch/ui_text.json @@ -2,6 +2,7 @@ "comma": ",", "map_select": "战役选择", + "turnselect": "回合数", "campaigns": { "1000": "[主线] 第零战役", "1001": "[主线] 第一战役",