diff --git a/components/account/Worlds/World2/Killroy/Monsters.jsx b/components/account/Worlds/World2/Killroy/Monsters.jsx new file mode 100644 index 000000000..4136e012f --- /dev/null +++ b/components/account/Worlds/World2/Killroy/Monsters.jsx @@ -0,0 +1,22 @@ +import { Card, CardContent, Stack, Typography } from '@mui/material'; +import { notateNumber, prefix } from '@utility/helpers'; +import React from 'react'; + +const Monsters = ({ killroy }) => { + return ( + + {killroy?.list?.map(({ rawName, world, killRoyKills, icon }, index) => { + return + + + + {notateNumber(killRoyKills ?? 0, 'Big')} + + + + })} + + ); +}; + +export default Monsters; diff --git a/components/account/Worlds/World2/Killroy/Schedule.jsx b/components/account/Worlds/World2/Killroy/Schedule.jsx new file mode 100644 index 000000000..1ced4b8bf --- /dev/null +++ b/components/account/Worlds/World2/Killroy/Schedule.jsx @@ -0,0 +1,40 @@ +import { Card, CardContent, Stack, Typography } from '@mui/material'; +import { format, isValid } from 'date-fns'; +import React from 'react'; +import { prefix } from '@utility/helpers'; + +const Schedule = ({ schedule }) => { + return ( + + {schedule?.map(({ classes, date, monsters }, classesIndex) => { + return + + {isValid(date) + ? format(date, 'dd/MM/yyyy HH:mm:ss') + : null} + + {classes.map(({ className, classIndex }, classIdIndex) => { + const monsterFaceId = monsters?.[classIdIndex]; + return + + + + + + + + {className} + + + + + })} + + + + })} + + ); +}; + +export default Schedule; diff --git a/components/account/Worlds/World2/Killroy/Upgrades.jsx b/components/account/Worlds/World2/Killroy/Upgrades.jsx new file mode 100644 index 000000000..4cac903d4 --- /dev/null +++ b/components/account/Worlds/World2/Killroy/Upgrades.jsx @@ -0,0 +1,27 @@ +import { Card, CardContent, Divider, Stack, Typography } from '@mui/material'; +import React from 'react'; +import { prefix } from '@utility/helpers'; + +const Upgrades = ({ killroy }) => { + return ( + + {killroy?.upgrades?.map(({ level, description, upgrade }, index) => + + + + + Lv. {level} + + {upgrade} + {description} + + + + )} + + ); +}; + +export default Upgrades; + diff --git a/components/common/NavBar/AppDrawer/AccountDrawer.jsx b/components/common/NavBar/AppDrawer/AccountDrawer.jsx index 9a95389f8..fba59f327 100644 --- a/components/common/NavBar/AppDrawer/AccountDrawer.jsx +++ b/components/common/NavBar/AppDrawer/AccountDrawer.jsx @@ -57,6 +57,7 @@ const worldsData = { { label: 'sigils', icon: 'data/LabBonus12' }, { label: 'arcadeShop', icon: 'data/PachiBall1' }, { label: 'islands', icon: 'data/Island1' }, + { label: 'killroy', icon: 'etc/Killroy_Skull' }, { label: 'weeklyBosses', icon: 'etc/SWR_Containment' }, { label: 'kangaroo', icon: 'data/RooA' }, { label: 'voteBallot', icon: 'etc/VoteBallot' } @@ -85,7 +86,6 @@ const worldsData = { { label: 'breeding', icon: 'data/ClassIcons52' }, { label: 'laboratory', icon: 'data/ClassIcons53' }, { label: 'rift', icon: 'data/Mface75' }, - { label: 'killroyPrime', icon: 'etc/KillroyPrime' }, { label: 'tome', icon: 'etc/Tome_0' } ] }, diff --git a/data/patch-notes.js b/data/patch-notes.js index db540f3e0..59275a6bf 100644 --- a/data/patch-notes.js +++ b/data/patch-notes.js @@ -3,6 +3,13 @@ import React from 'react'; /* eslint-disable react/jsx-key */ export const patchNotes = [ + { + ver: '3.2.78', + gameVer: '2.0.13', + date: '14/09/2024', + features: ['Added killroy\'s upgrades and moved killroy page to world 2'], + fixes: [] + }, { ver: '3.2.77', gameVer: '2.0.13', @@ -11,7 +18,7 @@ export const patchNotes = [ 'Added green stacks leaderboard under General', 'Added some more description to the login dialog to hopefully prevent repeated questions', 'Fixed a bug where meals appeared on a different order.', - 'Fixed calculations for bean trade in farming page', + 'Fixed calculations for bean trade in farming page' ], fixes: [] }, diff --git a/pages/account/world-2/killroy.jsx b/pages/account/world-2/killroy.jsx new file mode 100644 index 000000000..417a5b960 --- /dev/null +++ b/pages/account/world-2/killroy.jsx @@ -0,0 +1,35 @@ +import { NextSeo } from 'next-seo'; +import React, { useContext } from 'react'; +import { AppContext } from '@components/common/context/AppProvider'; +import { Stack } from '@mui/material'; +import { CardTitleAndValue } from '@components/common/styles'; +import { notateNumber } from '@utility/helpers'; +import { getKillroySchedule } from '@parsers/misc'; +import Tabber from '@components/common/Tabber'; +import Monsters from '@components/account/Worlds/World2/Killroy/Monsters'; +import Schedule from '@components/account/Worlds/World2/Killroy/Schedule'; +import Upgrades from '@components/account/Worlds/World2/Killroy/Upgrades'; + +const MyComponent = () => { + const { state } = useContext(AppContext); + const { killroy } = state?.account || { deathNote: {} }; + const schedule = getKillroySchedule(state?.account, state?.characters, state?.account?.serverVars); + return <> + + + + + + + + + + + + +}; + +export default MyComponent; diff --git a/pages/account/world-4/killroy-prime.jsx b/pages/account/world-4/killroy-prime.jsx deleted file mode 100644 index 7fe8f89d0..000000000 --- a/pages/account/world-4/killroy-prime.jsx +++ /dev/null @@ -1,71 +0,0 @@ -import { NextSeo } from 'next-seo'; -import React, { useContext } from 'react'; -import { AppContext } from '@components/common/context/AppProvider'; -import { Card, CardContent, Stack, Typography } from '@mui/material'; -import { CardTitleAndValue } from '@components/common/styles'; -import { notateNumber, prefix } from '@utility/helpers'; -import { getKillroySchedule } from '@parsers/misc'; -import Tabber from '@components/common/Tabber'; -import { format, isValid } from 'date-fns'; - -const MyComponent = () => { - const { state } = useContext(AppContext); - const { killroy } = state?.account || { deathNote: {} }; - const schedule = getKillroySchedule(state?.account, state?.characters, state?.account?.serverVars); - return <> - - - - - - - - {killroy?.list?.map(({ rawName, world, killRoyKills, icon }, index) => { - return - - - - {notateNumber(killRoyKills ?? 0, 'Big')} - - - - })} - - - {schedule?.map(({ classes, date, monsters }, classesIndex) => { - return - - {isValid(date) - ? format(date, 'dd/MM/yyyy HH:mm:ss') - : null} - - {classes.map(({ className, classIndex }, classIdIndex) => { - const monsterFaceId = monsters?.[classIdIndex]; - return - - - - - - - - {className} - - - - - })} - - - - })} - - - - -}; - -export default MyComponent; diff --git a/parsers/misc.js b/parsers/misc.js index 83b31fa6f..37f002d7c 100644 --- a/parsers/misc.js +++ b/parsers/misc.js @@ -896,12 +896,44 @@ export const getMiniBossesData = (account) => { } export const getKillRoy = (idleonData, charactersData, accountData, serverVars) => { + const skulls = accountData?.accountOptions?.[105]; const killRoyKills = tryToParse(idleonData?.KRbest); const totalKills = Object.values(killRoyKills || {}).reduce((sum, num) => sum + num, 0); const totalDamageMulti = 1 + Math.floor(Math.pow(totalKills, 0.4)) / 100; const unlockedThirdKillRoy = accountData?.accountOptions?.[227] === 1; const rooms = unlockedThirdKillRoy ? 3 : 2; const killRoyClasses = getKillRoyClasses(rooms, accountData, serverVars); + const upgrades = [ + { + level: accountData?.accountOptions?.[106], + description: 'Increases your maximum time in room. Base time is 100 seconds.', + upgrade: '+1 Second Timer' + }, + { + level: accountData?.accountOptions?.[107], + description: 'Increases chance for Talent Point drop, depends on how many Talent Point drops already got', + upgrade: '+ Talent Drops' + }, + { + level: accountData?.accountOptions?.[108], + description: 'Increases chance of dropping skulls by mobs', + upgrade: '+1% Bonus Skulls' + }, + { + level: accountData?.accountOptions?.[109], + description: 'Faster Respawn', + }, + { + level: accountData?.accountOptions?.[110], + description: 'Mobs can drop Dungeon Credits now', + upgrade: 'Dungeon Drops' + }, + { + level: accountData?.accountOptions?.[111], + description: 'Mobs can drop Pearls now', + upgrade: 'Pearl Drops' + } + ]; return { list: deathNote.map((monster) => { const monsterWithIcon = { ...monster, icon: `Mface${monsters?.[monster.rawName].MonsterFace}` }; @@ -913,7 +945,9 @@ export const getKillRoy = (idleonData, charactersData, accountData, serverVars) totalKills, totalDamageMulti, rooms, - killRoyClasses + killRoyClasses, + upgrades, + skulls }; } diff --git a/public/etc/Killroy_0.png b/public/etc/Killroy_0.png new file mode 100644 index 000000000..56e37c5c4 Binary files /dev/null and b/public/etc/Killroy_0.png differ diff --git a/public/etc/Killroy_1.png b/public/etc/Killroy_1.png new file mode 100644 index 000000000..25296bd41 Binary files /dev/null and b/public/etc/Killroy_1.png differ diff --git a/public/etc/Killroy_2.png b/public/etc/Killroy_2.png new file mode 100644 index 000000000..28e4b777f Binary files /dev/null and b/public/etc/Killroy_2.png differ diff --git a/public/etc/Killroy_3.png b/public/etc/Killroy_3.png new file mode 100644 index 000000000..e1cd5af80 Binary files /dev/null and b/public/etc/Killroy_3.png differ diff --git a/public/etc/Killroy_4.png b/public/etc/Killroy_4.png new file mode 100644 index 000000000..08c30ee84 Binary files /dev/null and b/public/etc/Killroy_4.png differ diff --git a/public/etc/Killroy_5.png b/public/etc/Killroy_5.png new file mode 100644 index 000000000..6028e1f45 Binary files /dev/null and b/public/etc/Killroy_5.png differ diff --git a/public/etc/Killroy_Skull.png b/public/etc/Killroy_Skull.png new file mode 100644 index 000000000..2f8261c00 Binary files /dev/null and b/public/etc/Killroy_Skull.png differ