mirror of
https://github.com/DaanVandenBosch/phantasmal-world.git
synced 2025-04-04 22:58:29 +08:00
Filter out more quests that don't drop items.
This commit is contained in:
parent
15e652a5f4
commit
5f7a4d5c1d
@ -2561,6 +2561,37 @@
|
||||
"Girtablulu": 12
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 31,
|
||||
"name": "Black Paper's Dangerous Deal",
|
||||
"episode": 4,
|
||||
"enemyCounts": {
|
||||
"SandRappy": 47,
|
||||
"DelRappy": 1,
|
||||
"Dorphon": 11,
|
||||
"DorphonEclair": 1,
|
||||
"Zu": 14,
|
||||
"Pazuzu": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 34,
|
||||
"name": "Black Paper's Dangerous Deal 2",
|
||||
"episode": 4,
|
||||
"enemyCounts": {
|
||||
"GoranDetonator": 5,
|
||||
"MerissaAA": 3,
|
||||
"PyroGoran": 14,
|
||||
"MerissaA": 9,
|
||||
"DelRappy": 6,
|
||||
"SatelliteLizard": 9,
|
||||
"Goran": 8,
|
||||
"Girtablulu": 1,
|
||||
"Zu": 3,
|
||||
"Pazuzu": 1,
|
||||
"SandRappy": 7
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 902,
|
||||
"name": "Christmas Fiasco",
|
||||
@ -2616,6 +2647,26 @@
|
||||
"GoranDetonator": 22
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 314,
|
||||
"name": "MAXIMUM ATTACK 3 Ver2",
|
||||
"episode": 4,
|
||||
"enemyCounts": {
|
||||
"BaBoota": 47,
|
||||
"Zu": 46,
|
||||
"SatelliteLizard": 237,
|
||||
"SandRappy": 83,
|
||||
"Astark": 54,
|
||||
"Boota": 45,
|
||||
"ZeBoota": 39,
|
||||
"Dorphon": 10,
|
||||
"MerissaA": 99,
|
||||
"Goran": 101,
|
||||
"PyroGoran": 103,
|
||||
"GoranDetonator": 32,
|
||||
"Girtablulu": 4
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 303,
|
||||
"name": "Maximum Attack 4th Stage -A-",
|
||||
|
@ -19,8 +19,9 @@ class HuntMethodStore {
|
||||
`${process.env.PUBLIC_URL}/quests.${Server[server].toLowerCase()}.json`
|
||||
);
|
||||
const quests = await response.json() as QuestDto[];
|
||||
const methods = new Array<HuntMethod>();
|
||||
|
||||
const methods = quests.map(quest => {
|
||||
for (const quest of quests) {
|
||||
let totalCount = 0;
|
||||
const enemyCounts = new Map<NpcType, number>();
|
||||
|
||||
@ -35,18 +36,36 @@ class HuntMethodStore {
|
||||
}
|
||||
}
|
||||
|
||||
return new HuntMethod(
|
||||
`q${quest.id}`,
|
||||
quest.name,
|
||||
new SimpleQuest(
|
||||
quest.id,
|
||||
// Filter out some quests.
|
||||
switch (quest.id) {
|
||||
// The following quests are left out because their enemies don't drop anything.
|
||||
case 31: // Black Paper's Dangerous Deal
|
||||
case 34: // Black Paper's Dangerous Deal 2
|
||||
case 1305: // Maximum Attack S (Ep. 1)
|
||||
case 1306: // Maximum Attack S (Ep. 2)
|
||||
case 1307: // Maximum Attack S (Ep. 4)
|
||||
case 313: // Beyond the Horizon
|
||||
|
||||
// MAXIMUM ATTACK 3 Ver2 is filtered out because its actual enemy count depends on the path taken.
|
||||
// TODO: generate a method per path.
|
||||
case 314:
|
||||
continue;
|
||||
}
|
||||
|
||||
methods.push(
|
||||
new HuntMethod(
|
||||
`q${quest.id}`,
|
||||
quest.name,
|
||||
quest.episode,
|
||||
enemyCounts
|
||||
),
|
||||
/^\d-\d.*/.test(quest.name) ? 0.75 : (totalCount > 400 ? 0.75 : 0.5)
|
||||
new SimpleQuest(
|
||||
quest.id,
|
||||
quest.name,
|
||||
quest.episode,
|
||||
enemyCounts
|
||||
),
|
||||
/^\d-\d.*/.test(quest.name) ? 0.75 : (totalCount > 400 ? 0.75 : 0.5)
|
||||
)
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
this.loadFromLocalStorage(methods, server);
|
||||
return methods;
|
||||
|
@ -42,6 +42,8 @@ export class OptimalMethod {
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: take into account mothmants spawned from mothverts.
|
||||
// TODO: take into account split slimes.
|
||||
// TODO: Prefer methods that don't split pan arms over methods that do.
|
||||
// For some reason this doesn't actually seem to be a problem, should probably investigate.
|
||||
// TODO: Show expected value or probability per item per method.
|
||||
|
@ -53,9 +53,6 @@ async function update() {
|
||||
|
||||
/**
|
||||
* Shop quests are not processed.
|
||||
* MAXIMUM ATTACK 3 Ver2 is left out because its actual enemy count depends on the path taken.
|
||||
* Black Paper's Dangerous Deal and Black Paper's Dangerous Deal 2 are left out because their
|
||||
* enemies don't drop anything.
|
||||
*
|
||||
* TODO: Missing quests:
|
||||
* - Maximum Attack 4th Stage -1R-
|
||||
@ -64,7 +61,8 @@ async function update() {
|
||||
* - Knight of Coral
|
||||
* - Knight of Coral Advent
|
||||
* - CAL's Clock Challenge
|
||||
* - The Value of Money (can't be parsed)
|
||||
* - The Value of Money (quest3_e.dat, can't be parsed, luckily doesn't have enemies)
|
||||
* Note: The MA4R quests use a random area variation per area from the ABC MA quests. E.g. MA4-1R will use a random caves 2 variation from MA4-1A, MA4-1B or MA4-1C. Same for mines 2 and ruins 2.
|
||||
*/
|
||||
function updateQuests() {
|
||||
logger.info('Updating quest data.');
|
||||
@ -113,14 +111,6 @@ function processQuest(path: string, quests: QuestDto[]) {
|
||||
|
||||
if (q.questNo == null) {
|
||||
throw new Error('No questNo.');
|
||||
} else {
|
||||
// Filter out some quests.
|
||||
switch (q.questNo) {
|
||||
case 31: // Black Paper's Dangerous Deal
|
||||
case 34: // Black Paper's Dangerous Deal 2
|
||||
case 314: // MAXIMUM ATTACK 3 Ver2
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
const enemyCounts: { [npcTypeCode: string]: number } = {};
|
||||
|
Loading…
Reference in New Issue
Block a user