mirror of
https://github.com/DaanVandenBosch/phantasmal-world.git
synced 2025-04-04 22:58:29 +08:00
Added support for splitting pan arms in the hunt optimizer. Fixed a bug.
This commit is contained in:
parent
92ee40de65
commit
308352ed27
@ -1,129 +1,124 @@
|
||||
episode: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
|
||||
quest hours Hildebear Hildeblue Rag Rappy Al Rappy Monest Savage Wolf Barbarous Wolf Booma Gobooma Gigobooma Dragon Grass Assassin Poison Lily Nar Lily Nano Dragon Evil Shark Pal Shark Guil Shark Pofuilly Slime Pouilly Slime Pan Arms De Rol Le Dubchic Gilchic Garanz Sinow Beat Sinow Gold Canadine Canane Dubswitch Vol Opt Delsaber Chaos Sorcerer Dark Gunner Chaos Bringer Dark Belra Dimenian La Dimenian So Dimenian Bulclaw Claw Dark Falz Hildebear Hildeblue Rag Rappy Love Rappy Monest Poison Lily Nar Lily Grass Assassin Dimenian La Dimenian So Dimenian Dark Belra Barba Ray Savage Wolf Barbarous Wolf Pan Arms Dubchic Gilchic Garanz Dubswitch Delsaber Chaos Sorcerer Gol Dragon Sinow Berill Sinow Spigell Merillia Meriltas Mericarol Merikle Mericus Ul Gibbon Zol Gibbon Gibbles Gee Gi Gue Gal Gryphon Deldepth Delbiter Dolmolm Dolmdarl Morfos Recobox Epsilon Sinow Zoa Sinow Zele Ill Gill Del Lily Olga Flow Sand Rappy Del Rappy Astark Satellite Lizard Yowie Merissa A Merissa AA Girtablulu Zu Pazuzu Boota Ze Boota Ba Boota Dorphon Dorphon Eclair Goran Pyro Goran Goran Detonator Saint-Milion Shambertin Kondrieu Normal Box Gold Box
|
||||
Valentine's Event 0,50 8 3 11 9 11 3 23 5
|
||||
AOL CUP -Maximum Attack- 0,50 11 1 25 18 59 24 37 81 13 54 12 23 6 6 96 22 34 3 79 2
|
||||
Maximum Attack 4th Stage -A- (Ep. I) 0,33 25 63 14 43 21 28 16 20 46 12 17 21 67 3 4 7 31 3 23 37 33 30 8 51
|
||||
Maximum Attack 4th Stage -B- (Ep. I) 0,33 28 62 22 20 40 32 14 21 21 13 19 16 59 3 4 10 24 5 27 13 18 25 11 52
|
||||
Maximum Attack 4th Stage -C- (Ep. I) 0,33 28 62 22 20 40 32 14 24 19 16 17 19 48 4 3 7 18 12 9 11 11 20 5 17 1
|
||||
Principal's Gift 0,50 6 68 2 22 3 20 1
|
||||
White Day 0,50 26 5 24 24 24 7 4
|
||||
Endless Nightmare #1 0,50 8 19 4 29 4 60 32 23
|
||||
Endless Nightmare #2 0,50 20 32 6 152 44 28 5
|
||||
Endless Nightmare #3 0,50 37 108 10 48 14 84 2 8
|
||||
Endless Nightmare #4 0,50 44 3 21 13 28 49 59 49 6 90
|
||||
Mop-up Operation #1 0,50 2 10 5 14 23 36
|
||||
Mop-up Operation #2 0,50 10 9 18 72 21 24
|
||||
Mop-up Operation #3 0,50 9 59 6 17 7 55 2 2
|
||||
Mop-up Operation #4 0,50 13 5 6 12 35 27 33 50
|
||||
Today's Rate 0,50 52 7 1 1 53 5 6 9 47 6 27 7 25 3
|
||||
Fragment of Memory 0,50 81 68 77 16 38 226 86 237 1
|
||||
Gallon's Treachery 0,50 22 7 16 13 14 5 1 3 2 3 3 3 10 12
|
||||
Lost HAVOC VULCAN 0,50 68 28 81 49 54 156 94 89 36 152 1
|
||||
Lost HEAT SWORD 0,33 12 10 7 26 7 34 38 53 1
|
||||
Lost ICE SPINNER 1,00 37 56 26 129 65 125 7 5 1
|
||||
Lost SOUL BLADE 0,50 17 85 26 70 37 112 4 4 1
|
||||
Rappy's Holiday 0,50 75 10 15 20 20 11 13
|
||||
Labyrinthine Trial 0,50 14 15 2 10 38 16 12 6
|
||||
Towards the Future 0,50 4 1 2 1 12 6 7 1 13 5 13 5 7 5 4 1 1 26 3 12 2 24 1 1 1 2 4 4 17 4 14 1
|
||||
Dream Messenger 0,50 8 8 1 49
|
||||
Festivity On The Beach 0,50 15
|
||||
Pioneer Halloween 0,50 2 57 25 1 51 8 30 1
|
||||
Maximum Attack 2 0,50 18 35 6 20 21 27 14 56 5 10 52 17 36 19 2 76 97 7 1 1 106 78 8 122 9
|
||||
Maximum Attack 4th Stage -A- (Ep. II) 0,33 20 8 32 21 1 29 41 6 62 12 7 55 51 20 56 12 7
|
||||
Maximum Attack 4th Stage -B- (Ep. II) 0,33 25 12 52 42 6 1 1 16 27 67 25 2 51 53 38 42 12 18
|
||||
Maximum Attack 4th Stage -C- (Ep. II) 0,33 22 14 24 20 4 6 6 14 26 14 45 15 10 19 44 38 16 58 4 18 18 21 28
|
||||
Phantasmal World #1 0,50 25 7 83 41 6 45 20 122 12
|
||||
Phantasmal World #2 0,50 24 9 54 42 114 26 9 80
|
||||
Phantasmal World #3 0,50 31 27 103 57 47 27 33 22
|
||||
Phantasmal World #4 1,00 11 6 6 20 22 19 20 9 72 57
|
||||
The East Tower 0,50 2 2 16 5 1 3 6 9 6 8 8 3 14 1 4 7
|
||||
The West Tower 0,50 6 1 1 5 7 14 10 10 36 1 7 6 8 9
|
||||
Reach for the Dream 0,50 4 2 6 19 3 1 7
|
||||
Respective Tomorrow 0,50 5 10 2 19 3 18 9 1 1 1 1 28 1 1 6 1 1 3 19 2 6 1 1 6 3 4 88 5 1 1 2 4 4 62 1 9 1 3 3 1
|
||||
LOGiN presents 勇場のマッチレース 0,50 88 19 46 70 84 14 20 59 51 22 4 94 52 22
|
||||
Maximum Attack 4th Stage -A- (Ep. IV) 0,33 57 13 68 56 58 20 18 13 16 3 30 26 6
|
||||
Maximum Attack 4th Stage -B- (Ep. IV) 0,33 60 11 58 50 20 3 48 24 15 17 3 40 32 19
|
||||
Maximum Attack 4th Stage -C- (Ep. IV) 0,33 73 16 69 74 37 6 33 20 22 16 13 37 26 18
|
||||
New Mop-up Operation #1 0,50 37 22 32 20 8 20 5 5 2
|
||||
New Mop-up Operation #2 0,50 20 11 41 23 5 31 36 14 5
|
||||
New Mop-up Operation #3 0,50 38 73 41 4 4 108 55 16
|
||||
New Mop-up Operation #4 0,50 29 25 38 24 1 46 40 3
|
||||
New Mop-up Operation #5 0,50 11 38 40 25 4 19 37 30 7
|
||||
War of Limits 1 0,50 42 42 51 25 12 47 12 10 5
|
||||
War of Limits 2 0,50 37 11 92 37 5 39 74 25 3
|
||||
War of Limits 3 0,50 47 37 66 6 85 87 26 4
|
||||
War of Limits 4 0,50 26 30 26 28 3 1 37 36 16
|
||||
War of Limits 5 0,50 44 48 41 11 4 15 49 19 7
|
||||
MAXIMUM ATTACK 3 Ver2 0,50 83 54 122 115 99 4 46 45 39 47 10 101 103 32
|
||||
1-1:Planet Ragol 0,50 2 4 36 4 40 7 6
|
||||
1-2:Torrential Woods 0,50 5 17 3 19 7 35 31 16
|
||||
1-3:Subterranean Den 0,50 5 12 3 33 10 45 32 15 1
|
||||
2-1:Infernal Cavern 0,75 18 37 17 114 18 3
|
||||
2-2:Deep Within 0,75 20 59 15 165 31 7 16
|
||||
2-3:The Mutation 0,75 7 41 12 89 42 24 10 2 13
|
||||
2-4:Waterway Shadow 0,75 16 36 4 17 165 87 28 4 4 1
|
||||
3-1:The Facility 0,75 3 115 12 2 47 2 1
|
||||
3-2:Machines Attack 0,75 22 60 9 14 2 59 2 7
|
||||
3-3:Central Control 0,75 11 93 4 16 6 90 3 3 1
|
||||
4-1:The Lost Ruins 0,75 14 42 3 8 4 41 1 4 10 13 18 61 7 3 5 89
|
||||
4-2:Buried Relics 0,75 31 20 2 28 55 6 5 50
|
||||
4-3:Hero & Daughter 0,75 26 4 30 7 5 75 50 22 8 122
|
||||
4-4:The Tomb Stirs 0,75 17 16 10 25 82 35 34 7 55
|
||||
4-5:Dark Inheritance 0,75 26 11 36 9 12 111 78 44 6 143 1
|
||||
5-1:Test/VR Temple 1 0,75 5 13 3 29 2 16 17 33
|
||||
5-2:Test/VR Temple 2 0,75 11 23 6 52 17 21 25 15 7
|
||||
5-3:Test/VR Temple 3 0,75 9 4 4 35 12 17 17 12 9
|
||||
5-4:Test/VR Temple 4 0,75 5 29 5 56 5 24 14 47 23 8
|
||||
5-5:Test/VR Temple 5 0,75 11 26 6 63 16 21 34 27 9 1
|
||||
6-1:Test/Spaceship 1 0,75 32 24 5 54 7 12
|
||||
6-2:Test/Spaceship 2 0,75 50 24 9 8 84 5 3 17 5
|
||||
6-3:Test/Spaceship 3 0,75 36 27 15 16 50 1 5 26 5
|
||||
6-4:Test/Spaceship 4 0,75 39 36 8 10 87 6 3 25 11
|
||||
6-5:Test/Spaceship 5 0,75 41 32 10 10 92 5 3 27 11 1
|
||||
7-1:From the Past 0,75 3 55 17 4 20 3 20
|
||||
7-2:Seeking Clues 0,75 3 37 19 1 25 43 6 8
|
||||
7-3:Silent Beach 0,75 4 29 8 30 45 1 94 5
|
||||
7-4:Central Control 0,75 11 6 22 6 4 17 18 3 34 4
|
||||
7-5:Isle of Mutants 0,75 11 6 59 42 1 43 56 1 132 1 1
|
||||
8-1:Below the Waves 0,75 9 3 35 17 25 23 3
|
||||
8-2:Desire's End 0,75 2 4 34 43 25 28 24 5
|
||||
8-3:Purple Lamplight 0,75 7 7 23 38 19 41 39 4 1
|
||||
9-1:Missing Research 0,75 26 10 40 12 67 48 27 1
|
||||
9-2:Data Retrieval 0,75 41 18 28 18 48 21 24 5
|
||||
9-3:Reality & Truth 0,75 24 9 31 4 13 21 22 50 1
|
||||
9-4:Pursuit 0,75 30 17 34 5 17 45 55 29 5
|
||||
9-5:The Chosen (1/2) 0,75 36 5 46 9 25 10 12 5 3 2 62 20 9
|
||||
9-6:The Chosen (2/2) 0,75 12 21 19 34 1 2 25 34 4
|
||||
9-7:Sacred Ground 0,75 28 39 11 29 1 5 54 38 11
|
||||
9-8:The Final Cycle 0,75 45 41 63 47 1 6 57 61 8 1
|
||||
Point of Disaster 0,25 50 31 50 31 4 1 20 24 8 6 9 10 4 3 1
|
||||
Battle Training 0,50 2 2 12 2 14 3
|
||||
Claiming a Stake 0,50 5 1 1 19 2
|
||||
Magnitude of Metal 0,50 4 1 16
|
||||
Journalistic Pursuit 0,50 1 11 3 12 1 18 9 6
|
||||
The Fake in Yellow 0,50 47
|
||||
Native Research 0,50 2 13 4 10 4 29 13 8
|
||||
Forest of Sorrow 0,13 16 15 4 14 7 26 15 3
|
||||
Gran Squall 0,50 4 15 7 18 4 24 13 7
|
||||
Addicting Food 0,50 19 62 2 19 195 38 15 13 7
|
||||
The Lost Bride 0,50 2 20 2 33 6 5 7
|
||||
Waterfall Tears 0,50 6 18 12 37 6 1
|
||||
Black Paper 0,50 12 20 2 14 94 31 10 8 3
|
||||
Secret Delivery 0,50 9 18 5 59 9 5 5
|
||||
Soul of a Blacksmith 0,50 5 11 5 28 11 31 29 27 1 14 17 6 12 125 44 25 9 2 6
|
||||
Letter from Lionel 0,50 5 17 2 19 4 34 15 5 4 36 2 74 19 9 11 1
|
||||
The Grave's Butler 0,50 9 22 4 35 7 2 1
|
||||
Knowing One's Heart 0,50 22 5 2 29 1
|
||||
The Retired Hunter 0,50 1 8 2 7 6 6 4 3 3 3 4 17 7 18 1 42
|
||||
Dr. Osto's Research 0,50 13 27 3 2 15 3
|
||||
Unsealed Door 0,50 1 13 97 6 2 62 3 3
|
||||
Soul of Steel 0,50 22 1 2 1 5 11 4 7 14 12 14 4 40
|
||||
Doc's Secret Plan 0,50 9 11 7 47 7 1 6 29
|
||||
Seek my Master 0,50 21 3 20 2 9 43 24 4 2 86
|
||||
From the Depths 0,50 11 3 17 6 4 41 23 11 7 71
|
||||
Central Dome Fire Swirl 0,50 4 19 19 14 9 19 34
|
||||
Seat of the Heart 0,50 3 7 2 9 3 12 11 12 2 25 1 16 16 3 2 1 1 2 5 5 12 4 8 4 6 10 5 2 13 1 7 2
|
||||
Pioneer Spirit 0,50 40 1 14 25 29 31 3 21 8 2 4 4 40 29 5
|
||||
Warrior's Pride 0,50 61 46 51 53 29 35 10 23 13
|
||||
The Restless Lion 0,50 8 16 13 14 3 13 10 1
|
||||
To the End of the Wilderness 0,50 56 14 14 41 13 77 55 47 2
|
||||
Maximum Attack 4th Stage -A- (Ep. I) 0.33 25 63 14 43 21 28 16 20 46 12 17 21 67 3 4 7 31 3 23 37 33 30 8 51
|
||||
Maximum Attack 4th Stage -B- (Ep. I) 0.33 28 62 22 20 40 32 14 21 21 13 19 16 59 3 4 10 24 5 27 13 18 25 11 52
|
||||
Maximum Attack 4th Stage -C- (Ep. I) 0.33 28 62 22 20 40 32 14 24 19 16 17 19 48 4 3 7 18 12 9 11 11 20 5 17 1
|
||||
Principal's Gift 0.5 6 68 2 22 3 20 1
|
||||
Endless Nightmare #1 0.5 8 19 4 29 4 60 32 23
|
||||
Endless Nightmare #2 0.5 20 32 6 152 44 28 5
|
||||
Endless Nightmare #3 0.5 37 108 10 48 14 84 2 8
|
||||
Endless Nightmare #4 0.5 44 3 21 13 28 49 59 49 6 90
|
||||
Mop-up Operation #1 0.5 2 10 5 14 23 36
|
||||
Mop-up Operation #2 0.5 10 9 18 72 21 24
|
||||
Mop-up Operation #3 0.5 9 59 6 17 7 55 2 2
|
||||
Mop-up Operation #4 0.5 13 5 6 12 35 27 33 50
|
||||
Today's Rate 0.5 52 7 1 1 53 5 6 9 47 6 27 7 25 3
|
||||
Fragment of Memory 0.5 81 68 77 16 38 226 86 237 1
|
||||
Gallon's Treachery 0.5 22 7 16 13 14 5 1 3 2 3 3 3 10 12
|
||||
Lost HAVOC VULCAN 0.5 68 28 81 49 54 156 94 89 36 152 1
|
||||
Lost HEAT SWORD 0.33 12 10 7 26 7 34 38 53 1
|
||||
Lost ICE SPINNER 1 37 56 26 129 65 125 7 5 1
|
||||
Lost SOUL BLADE 0.5 17 85 26 70 37 112 4 4 1
|
||||
Rappy's Holiday 0.5 75 10 15 20 20 11 13
|
||||
Labyrinthine Trial 0.5 14 15 2 10 38 16 12 6
|
||||
Towards the Future 0.5 4 1 2 1 12 6 7 1 13 5 13 5 7 5 4 1 1 26 3 12 2 24 1 1 1 2 4 4 17 4 14 1
|
||||
Dream Messenger 0.5 8 8 1 49
|
||||
Maximum Attack 2 0.5 18 35 6 20 21 27 14 56 5 10 52 17 36 19 2 76 97 7 1 1 106 78 8 122 9
|
||||
Maximum Attack 4th Stage -A- (Ep. II) 0.33 20 8 32 21 1 29 41 6 62 12 7 55 51 20 56 12 7
|
||||
Maximum Attack 4th Stage -B- (Ep. II) 0.33 25 12 52 42 6 1 1 16 27 67 25 2 51 53 38 42 12 18
|
||||
Maximum Attack 4th Stage -C- (Ep. II) 0.33 22 14 24 20 4 6 6 14 26 14 45 15 10 19 44 38 16 58 4 18 18 21 28
|
||||
Phantasmal World #1 0.5 25 7 83 41 6 45 20 122 12
|
||||
Phantasmal World #2 0.5 24 9 54 42 114 26 9 80
|
||||
Phantasmal World #3 0.5 31 27 103 57 47 27 33 22
|
||||
Phantasmal World #4 1 11 6 6 20 22 19 20 9 72 57
|
||||
The East Tower 0.5 2 2 16 5 1 3 6 9 6 8 8 3 14 1 4 7
|
||||
The West Tower 0.5 6 1 1 5 7 14 10 10 36 1 7 6 8 9
|
||||
Reach for the Dream 0.5 4 2 6 19 3 1 7
|
||||
Respective Tomorrow 0.5 5 10 2 19 3 18 9 1 1 1 1 28 1 1 6 1 1 3 19 2 6 1 1 6 3 4 88 5 1 1 2 4 4 62 1 9 1 3 3 1
|
||||
LOGiN presents 勇場のマッチレース 1 88 19 46 70 84 14 20 59 51 22 4 94 52 22
|
||||
Maximum Attack 4th Stage -A- (Ep. IV) 0.33 57 13 68 56 58 20 18 13 16 3 30 26 6
|
||||
Maximum Attack 4th Stage -B- (Ep. IV) 0.33 60 11 58 50 20 3 48 24 15 17 3 40 32 19
|
||||
Maximum Attack 4th Stage -C- (Ep. IV) 0.33 73 16 69 74 37 6 33 20 22 16 13 37 26 18
|
||||
New Mop-up Operation #1 0.5 37 22 32 20 8 20 5 5 2
|
||||
New Mop-up Operation #2 0.5 20 11 41 23 5 31 36 14 5
|
||||
New Mop-up Operation #3 0.5 38 73 41 4 4 108 55 16
|
||||
New Mop-up Operation #4 0.5 29 25 38 24 1 46 40 3
|
||||
New Mop-up Operation #5 0.5 11 38 40 25 4 19 37 30 7
|
||||
War of Limits 1 0.5 42 42 51 25 12 47 12 10 5
|
||||
War of Limits 2 0.5 37 11 92 37 5 39 74 25 3
|
||||
War of Limits 3 0.5 47 37 66 6 85 87 26 4
|
||||
War of Limits 4 0.5 26 30 26 28 3 1 37 36 16
|
||||
War of Limits 5 0.5 44 48 41 11 4 15 49 19 7
|
||||
MAXIMUM ATTACK 3 Ver2 0.5 83 54 122 115 99 4 46 45 39 47 10 101 103 32
|
||||
1-1:Planet Ragol 0.5 2 4 36 4 40 7 6
|
||||
1-2:Torrential Woods 0.5 5 17 3 19 7 35 31 16
|
||||
1-3:Subterranean Den 0.5 5 12 3 33 10 45 32 15 1
|
||||
2-1:Infernal Cavern 0.75 18 37 17 114 18 3
|
||||
2-2:Deep Within 0.75 20 59 15 165 31 7 16
|
||||
2-3:The Mutation 0.75 7 41 12 89 42 24 10 2 13
|
||||
2-4:Waterway Shadow 0.75 16 36 4 17 165 87 28 4 4 1
|
||||
3-1:The Facility 0.75 3 115 12 2 47 2 1
|
||||
3-2:Machines Attack 0.75 22 60 9 14 2 59 2 7
|
||||
3-3:Central Control 0.75 11 93 4 16 6 90 3 3 1
|
||||
4-1:The Lost Ruins 0.75 14 42 3 8 4 41 1 4 10 13 18 61 7 3 5 89
|
||||
4-2:Buried Relics 0.75 31 20 2 28 55 6 5 50
|
||||
4-3:Hero & Daughter 0.75 26 4 30 7 5 75 50 22 8 122
|
||||
4-4:The Tomb Stirs 0.75 17 16 10 25 82 35 34 7 55
|
||||
4-5:Dark Inheritance 0.75 26 11 36 9 12 111 78 44 6 143 1
|
||||
5-1:Test/VR Temple 1 0.75 5 13 3 29 2 16 17 33
|
||||
5-2:Test/VR Temple 2 0.75 11 23 6 52 17 21 25 15 7
|
||||
5-3:Test/VR Temple 3 0.75 9 4 4 35 12 17 17 12 9
|
||||
5-4:Test/VR Temple 4 0.75 5 29 5 56 5 24 14 47 23 8
|
||||
5-5:Test/VR Temple 5 0.75 11 26 6 63 16 21 34 27 9 1
|
||||
6-1:Test/Spaceship 1 0.75 32 24 5 54 7 12
|
||||
6-2:Test/Spaceship 2 0.75 50 24 9 8 84 5 3 17 5
|
||||
6-3:Test/Spaceship 3 0.75 36 27 15 16 50 1 5 26 5
|
||||
6-4:Test/Spaceship 4 0.75 39 36 8 10 87 6 3 25 11
|
||||
6-5:Test/Spaceship 5 0.75 41 32 10 10 92 5 3 27 11 1
|
||||
7-1:From the Past 0.75 3 55 17 4 20 3 20
|
||||
7-2:Seeking Clues 0.75 3 37 19 1 25 43 6 8
|
||||
7-3:Silent Beach 0.75 4 29 8 30 45 1 94 5
|
||||
7-4:Central Control 0.75 11 6 22 6 4 17 18 3 34 4
|
||||
7-5:Isle of Mutants 0.75 11 6 59 42 1 43 56 1 132 1 1
|
||||
8-1:Below the Waves 0.75 9 3 35 17 25 23 3
|
||||
8-2:Desire's End 0.75 2 4 34 43 25 28 24 5
|
||||
8-3:Purple Lamplight 0.75 7 7 23 38 19 41 39 4 1
|
||||
9-1:Missing Research 0.75 26 10 40 12 67 48 27 1
|
||||
9-2:Data Retrieval 0.75 41 18 28 18 48 21 24 5
|
||||
9-3:Reality & Truth 0.75 24 9 31 4 13 21 22 50 1
|
||||
9-4:Pursuit 0.75 30 17 34 5 17 45 55 29 5
|
||||
9-5:The Chosen (1/2) 0.75 36 5 46 9 25 10 12 5 3 2 62 20 9
|
||||
9-6:The Chosen (2/2) 0.75 12 21 19 34 1 2 25 34 4
|
||||
9-7:Sacred Ground 0.75 28 39 11 29 1 5 54 38 11
|
||||
9-8:The Final Cycle 0.75 45 41 63 47 1 6 57 61 8 1
|
||||
Point of Disaster 0.25 50 31 50 31 4 1 20 24 8 6 9 10 4 3 1
|
||||
Battle Training 0.5 2 2 12 2 14 3
|
||||
Claiming a Stake 0.5 5 1 1 19 2
|
||||
Magnitude of Metal 0.5 4 1 16
|
||||
Journalistic Pursuit 0.5 1 11 3 12 1 18 9 6
|
||||
The Fake in Yellow 0.5 47
|
||||
Native Research 0.5 2 13 4 10 4 29 13 8
|
||||
Forest of Sorrow 0.13 16 15 4 14 7 26 15 3
|
||||
Gran Squall 0.5 4 15 7 18 4 24 13 7
|
||||
Addicting Food 0.5 19 62 2 19 195 38 15 13 7
|
||||
The Lost Bride 0.5 2 20 2 33 6 5 7
|
||||
Waterfall Tears 0.5 6 18 12 37 6 1
|
||||
Black Paper 0.5 12 20 2 14 94 31 10 8 3
|
||||
Secret Delivery 0.5 9 18 5 59 9 5 5
|
||||
Soul of a Blacksmith 0.5 5 11 5 28 11 31 29 27 1 14 17 6 12 125 44 25 9 2 6
|
||||
Letter from Lionel 0.5 5 17 2 19 4 34 15 5 4 36 2 74 19 9 11 1
|
||||
The Grave's Butler 0.5 9 22 4 35 7 2 1
|
||||
Knowing One's Heart 0.5 22 5 2 29 1
|
||||
The Retired Hunter 0.5 1 8 2 7 6 6 4 3 3 3 4 17 7 18 1 42
|
||||
Dr. Osto's Research 0.5 13 27 3 2 15 3
|
||||
Unsealed Door 0.5 1 13 97 6 2 62 3 3
|
||||
Soul of Steel 0.5 22 1 2 1 5 11 4 7 14 12 14 4 40
|
||||
Doc's Secret Plan 0.5 9 11 7 47 7 1 6 29
|
||||
Seek my Master 0.5 21 3 20 2 9 43 24 4 2 86
|
||||
From the Depths 0.5 11 3 17 6 4 41 23 11 7 71
|
||||
Central Dome Fire Swirl 0.5 4 19 19 14 9 19 34
|
||||
Seat of the Heart 0.5 3 7 2 9 3 12 11 12 2 25 1 16 16 3 2 1 1 2 5 5 12 4 8 4 6 10 5 2 13 1 7 2
|
||||
Pioneer Spirit 0.5 40 1 14 25 29 31 3 21 8 2 4 4 40 29 5
|
||||
Warrior's Pride 0.5 61 46 51 53 29 35 10 23 13
|
||||
The Restless Lion 0.5 8 16 13 14 3 13 10 1
|
||||
To the End of the Wilderness 0.5 56 14 14 41 13 77 55 47 2
|
|
@ -328,9 +328,10 @@ export class EnemyDrop implements ItemDrop {
|
||||
export class HuntMethod {
|
||||
constructor(
|
||||
/**
|
||||
* Time taken in hours.
|
||||
* The time it takes to complete the quest in hours.
|
||||
*/
|
||||
public time: number,
|
||||
public name: string,
|
||||
public quest: SimpleQuest
|
||||
) { }
|
||||
}
|
||||
|
@ -20,46 +20,35 @@ class HuntMethodStore {
|
||||
return NpcType.byNameAndEpisode(enemy, parseInt(episode, 10))!;
|
||||
});
|
||||
|
||||
return rows.slice(2)
|
||||
.filter(row => {
|
||||
const questName = row[0];
|
||||
// TODO: let's not hard code this...
|
||||
switch (questName) {
|
||||
case 'MAXIMUM ATTACK 3 Ver2':
|
||||
case 'LOGiN presents 勇場のマッチレース':
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
})
|
||||
.map(row => {
|
||||
const questName = row[0];
|
||||
const time = parseFloat(row[1]);
|
||||
return rows.slice(2).map(row => {
|
||||
const questName = row[0];
|
||||
const time = parseFloat(row[1]);
|
||||
|
||||
const npcs = row.slice(2, -2).flatMap((cell, cellI) => {
|
||||
const amount = parseInt(cell, 10);
|
||||
const type = npcTypeByIndex[cellI];
|
||||
const enemies = [];
|
||||
const npcs = row.slice(2, -2).flatMap((cell, cellI) => {
|
||||
const amount = parseInt(cell, 10);
|
||||
const type = npcTypeByIndex[cellI];
|
||||
const enemies = [];
|
||||
|
||||
if (type) {
|
||||
for (let i = 0; i < amount; i++) {
|
||||
enemies.push(new SimpleNpc(type));
|
||||
}
|
||||
} else {
|
||||
console.error(`Couldn't get type for cellI ${cellI}.`);
|
||||
if (type) {
|
||||
for (let i = 0; i < amount; i++) {
|
||||
enemies.push(new SimpleNpc(type));
|
||||
}
|
||||
} else {
|
||||
console.error(`Couldn't get type for cellI ${cellI}.`);
|
||||
}
|
||||
|
||||
return enemies;
|
||||
});
|
||||
|
||||
return new HuntMethod(
|
||||
time,
|
||||
new SimpleQuest(
|
||||
questName,
|
||||
npcs
|
||||
)
|
||||
);
|
||||
return enemies;
|
||||
});
|
||||
|
||||
return new HuntMethod(
|
||||
time,
|
||||
questName,
|
||||
new SimpleQuest(
|
||||
questName,
|
||||
npcs
|
||||
)
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import solver from 'javascript-lp-solver';
|
||||
import { IObservableArray, observable, runInAction } from "mobx";
|
||||
import { Difficulties, Difficulty, Item, NpcType, SectionId, SectionIds, KONDRIEU_PROB, RARE_ENEMY_PROB } from "../domain";
|
||||
import { Difficulties, Difficulty, Item, NpcType, SectionId, SectionIds, KONDRIEU_PROB, RARE_ENEMY_PROB, HuntMethod } from "../domain";
|
||||
import { huntMethodStore } from "./HuntMethodStore";
|
||||
import { itemDropStore } from './ItemDropStore';
|
||||
|
||||
@ -29,8 +29,9 @@ export class OptimizationResult {
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Deal with hidoom and migium.
|
||||
// TODO: Prefer methods that don't split pan arms over methods that do.
|
||||
// TODO: Row of totals.
|
||||
// TODO: save state in url for easy sharing.
|
||||
// TODO: group similar methods (e.g. same difficulty, same quest and similar ID).
|
||||
// This way people can choose their preferred section ID.
|
||||
// TODO: order of items in results table should match order in wanted table.
|
||||
@ -56,14 +57,24 @@ class HuntOptimizerStore {
|
||||
}
|
||||
|
||||
// Add a variable to the LP model per method per difficulty per section ID.
|
||||
// When a method with pan arms is encountered, two variables are added. One for the method
|
||||
// with migiums and hidooms and one with pan arms.
|
||||
// Each variable has a time property to minimize and a property per item with the number
|
||||
// of enemies that drop the item multiplied by the corresponding drop rate as its value.
|
||||
type Variable = {
|
||||
time: number,
|
||||
[itemName: string]: number
|
||||
[itemName: string]: number,
|
||||
}
|
||||
const variables: { [methodName: string]: Variable } = {};
|
||||
|
||||
type VariableDetails = {
|
||||
method: HuntMethod,
|
||||
difficulty: Difficulty,
|
||||
sectionId: SectionId,
|
||||
splitPanArms: boolean,
|
||||
}
|
||||
const variableDetails: Map<string, VariableDetails> = new Map();
|
||||
|
||||
const wantedItems = new Set(this.wantedItems.filter(w => w.amount > 0).map(w => w.item));
|
||||
|
||||
for (const method of methods) {
|
||||
@ -93,25 +104,66 @@ class HuntOptimizerStore {
|
||||
}
|
||||
}
|
||||
|
||||
for (const diff of Difficulties) {
|
||||
for (const sectionId of SectionIds) {
|
||||
const variable: Variable = {
|
||||
time: method.time
|
||||
};
|
||||
let addVariable = false;
|
||||
// Create a secondary counts map if there are any pan arms that can be split into
|
||||
// migiums and hidooms.
|
||||
const countsList: Array<Map<NpcType, number>> = [counts];
|
||||
const panArmsCount = counts.get(NpcType.PanArms);
|
||||
const panArms2Count = counts.get(NpcType.PanArms2);
|
||||
|
||||
for (const [npcType, count] of counts.entries()) {
|
||||
const drop = dropTable.getDrop(diff, sectionId, npcType);
|
||||
if (panArmsCount || panArms2Count) {
|
||||
const splitCounts = new Map(counts);
|
||||
|
||||
if (drop && wantedItems.has(drop.item)) {
|
||||
const value = variable[drop.item.name] || 0;
|
||||
variable[drop.item.name] = value + count * drop.rate;
|
||||
addVariable = true;
|
||||
if (panArmsCount) {
|
||||
splitCounts.delete(NpcType.PanArms);
|
||||
splitCounts.set(NpcType.Migium, panArmsCount);
|
||||
splitCounts.set(NpcType.Hidoom, panArmsCount);
|
||||
}
|
||||
|
||||
if (panArms2Count) {
|
||||
splitCounts.delete(NpcType.PanArms2);
|
||||
splitCounts.set(NpcType.Migium2, panArms2Count);
|
||||
splitCounts.set(NpcType.Hidoom2, panArms2Count);
|
||||
}
|
||||
|
||||
countsList.push(splitCounts);
|
||||
}
|
||||
|
||||
for (let i = 0; i < countsList.length; i++) {
|
||||
const counts = countsList[i];
|
||||
const splitPanArms = i === 1;
|
||||
|
||||
for (const diff of Difficulties) {
|
||||
for (const sectionId of SectionIds) {
|
||||
const variable: Variable = {
|
||||
time: method.time
|
||||
};
|
||||
let addVariable = false;
|
||||
|
||||
for (const [npcType, count] of counts.entries()) {
|
||||
const drop = dropTable.getDrop(diff, sectionId, npcType);
|
||||
|
||||
if (drop && wantedItems.has(drop.item)) {
|
||||
const value = variable[drop.item.name] || 0;
|
||||
variable[drop.item.name] = value + count * drop.rate;
|
||||
addVariable = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (addVariable) {
|
||||
variables[`${diff}\t${sectionId}\t${method.quest.name}`] = variable;
|
||||
if (addVariable) {
|
||||
let name = `${diff}\t${sectionId}\t${method.name}`;
|
||||
|
||||
if (splitPanArms) {
|
||||
name += ' (Split Pan Arms)';
|
||||
}
|
||||
|
||||
variables[name] = variable;
|
||||
variableDetails.set(name, {
|
||||
method,
|
||||
difficulty: diff,
|
||||
sectionId,
|
||||
splitPanArms
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -136,14 +188,13 @@ class HuntOptimizerStore {
|
||||
return;
|
||||
}
|
||||
|
||||
for (const [method, runsOrOther] of Object.entries(result)) {
|
||||
const [diffStr, sIdStr, methodName] = method.split('\t', 3);
|
||||
for (const [variableName, runsOrOther] of Object.entries(result)) {
|
||||
const details = variableDetails.get(variableName);
|
||||
|
||||
if (sIdStr && methodName) {
|
||||
if (details) {
|
||||
const { method, difficulty, sectionId, splitPanArms } = details;
|
||||
const runs = runsOrOther as number;
|
||||
const variable = variables[method];
|
||||
const diff = (Difficulty as any)[diffStr];
|
||||
const sectionId = (SectionId as any)[sIdStr];
|
||||
const variable = variables[variableName];
|
||||
|
||||
const items = new Map<Item, number>();
|
||||
|
||||
@ -157,10 +208,10 @@ class HuntOptimizerStore {
|
||||
}
|
||||
|
||||
this.result.push(new OptimizationResult(
|
||||
diff,
|
||||
difficulty,
|
||||
sectionId,
|
||||
methodName,
|
||||
0.5,
|
||||
method.name + (splitPanArms ? ' (Split Pan Arms)' : ''),
|
||||
method.time,
|
||||
runs,
|
||||
items
|
||||
));
|
||||
|
Loading…
Reference in New Issue
Block a user