blob: a68b9eea6f44c51d3c1744c08887775aa678c502 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
<script>
import { level, paWeather } from "./stores";
import ew from "./ew";
import { onMount } from "svelte";
import { formatUtc } from "./times";
import { getMatches } from "./bestiary";
import day from "dayjs";
import relativeTime from "dayjs/plugin/relativeTime";
day.extend(relativeTime);
onMount(async () => {
updateWeatherStores();
});
let date = new Date().getTime() * (1440 / 70);
let matches, upMatches, otherMatches, normalMatches, pagosForecast;
newMatches();
setInterval(() => {
date = new Date().getTime() * (1440 / 70);
}, 1000);
$: currentEzTime = formatUtc(date);
function updateWeatherStores() {
paWeather.set(ew.forecast(ew.PAGOS_WEATHER));
}
function formatWeathers(weathers) {
if (weathers.length === 1) {
return ew.getWeatherName(weathers[0]);
}
return weathers
.map((w, i) => {
if (i + 1 === weathers.length) {
return `and ${ew.getWeatherName(w)}`;
}
return `${ew.getWeatherName(w)}, `;
})
.join("");
}
function newMatches() {
pagosForecast = ew.forecast(ew.PAGOS_WEATHER);
matches = getMatches(pagosForecast, $level).sort(
(a, b) => a.level < b.level
);
upMatches = matches.filter((m) => m.uptime.isUp);
normalMatches = matches.filter((m) => !m.special);
otherMatches = matches.filter((m) => m.special && !m.uptime.isUp);
}
function formatNextUptime(futures) {
let i;
futures.find((f, idx) => {
if (f) i = idx;
return f;
});
if (i) {
return `in ${day(pagosForecast[i + 1].date).fromNow()}`;
}
return "in the far future";
}
function levelChanged(evt) {
level.set(Number(evt.target.value));
newMatches();
}
</script>
<div class="app">
<h2>
Level: <input on:change={levelChanged} type="number" min="1" max="60" />
</h2>
Level is {$level}<br />
Time is {currentEzTime}<br />
<h5>matches</h5>
<ul>
{#each upMatches as m (m.name)}
<li>
<em>(Lv{m.level})</em> <strong>{m.name}</strong>
({#if m.mutating}mutates{/if}{#if m.augmenting}augments{/if} in {formatWeathers(
m.uptime.weathers
)})
</li>
{/each}
</ul>
<h5>regular enemies</h5>
<ul>
{#each normalMatches as m (m.name)}
<li><em>(Lv{m.level})</em> <strong>{m.name}</strong></li>
{/each}
</ul>
<h5>special enemies that do not mutate/augment right now</h5>
<ul>
{#each otherMatches as m (m.name)}
<li>
<em>(Lv{m.level})</em> <strong>{m.name}</strong>
({#if m.mutating}mutates{/if}{#if m.augmenting}augments{/if}
{formatNextUptime(m.uptime.futureUptime)})
</li>
{/each}
</ul>
Pagos Weather is {pagosForecast[0].weatherName}
</div>
<style></style>
|