From db31fbb79685f27ede31cf4df96f65883c0bcb2f Mon Sep 17 00:00:00 2001 From: thepaperpilot Date: Sat, 25 Feb 2023 14:47:37 -0600 Subject: [PATCH] Added 13 new Coots note: Faint and Hurt abilities NYI, and none of these are tested --- index.html | 13 + public/Mogul Money Coots.png | Bin 1444 -> 1440 bytes public/SlimeCoots.png | Bin 0 -> 1584 bytes public/aimen coots.png | Bin 0 -> 1626 bytes public/cdawg va.png | Bin 0 -> 1655 bytes public/chessboxing coots.png | Bin 0 -> 2348 bytes public/frog Coots.png | Bin 0 -> 1484 bytes public/hasan coots.png | Bin 0 -> 1668 bytes public/ironmouse coots.png | Bin 0 -> 1991 bytes public/luddy Coots.png | Bin 0 -> 1363 bytes public/mario coots.png | Bin 0 -> 1585 bytes public/mr beast coots.png | Bin 0 -> 1403 bytes public/nick coots.png | Bin 0 -> 1680 bytes public/smash coots.png | Bin 0 -> 1860 bytes public/streamer award coots.png | Bin 0 -> 1889 bytes src/data/projEntry.tsx | 423 +++++++++++++++++++++++++++++++- src/data/socket.tsx | 7 + src/data/types.d.ts | 8 +- 18 files changed, 439 insertions(+), 12 deletions(-) create mode 100644 public/SlimeCoots.png create mode 100644 public/aimen coots.png create mode 100644 public/cdawg va.png create mode 100644 public/chessboxing coots.png create mode 100644 public/frog Coots.png create mode 100644 public/hasan coots.png create mode 100644 public/ironmouse coots.png create mode 100644 public/luddy Coots.png create mode 100644 public/mario coots.png create mode 100644 public/mr beast coots.png create mode 100644 public/nick coots.png create mode 100644 public/smash coots.png create mode 100644 public/streamer award coots.png diff --git a/index.html b/index.html index f2bf39d..46f9aba 100644 --- a/index.html +++ b/index.html @@ -57,6 +57,19 @@ + + + + + + + + + + + + + Profectus diff --git a/public/Mogul Money Coots.png b/public/Mogul Money Coots.png index 8a9d71b923a8436b297e2b537529acc3318841d7..a72a5be95077ebcdece521768b7eb7d04605728e 100644 GIT binary patch literal 1440 zcmZWp4^Wb47)MKMy4YGfES-PWZDW^bwK7Yz(4-Zu&>^H#p>$n(nxY{XkXBw0SN>XX_IO`Y~(r83?F|3?mqtXOrH$_kHfY=Y8Mb^ZcIQ`;;f( z_O9~r_kqD+tFZepc$aORn=8FtD}Lzs3YYPq;`i=`2^62agu%R0u$WlF$y&qky&N)e zt@i{*_v^m$6dr)BXeMCNZhTvK*T;bWtTg1yi*c>!*4X9sh509{)<5+r&G@nOK?ou? zynhd-aCL#mpZD=#ctJU+Ny;g_ z5;*4z_XxQL`|u#_Vnj6}YoJjvt4&ct9mg2ZekH_j$xMklx?XGZ*)57R2fPAY19JNoA+|_tezI}P7Y2G0bPK%eAUTx{OhRE+HbLp0sqX# zRd=H}ZSc3)uBU5y%kPo_>BivVnf=sVRfwA@nE-s}Udf4fPa>|z=+Szd!Jy`3UP^8Lj!+p`3 zTJ%&GB)46W7Lk6}l@%RT%H<4^;sx@DZ4l5Uc~EruFOQ3Fl7BTGs^W#TV%dq37YC?h zaq@NR4B>QN%YZ{x3XmKqDN>;Y;BG;0rJOCxW_jlzE9hf?8(mB}EffPZac5`}ucR@F z`f+JeMWtJqUFbk2+1N5#&)76_m`5L*)|PASc0XYR^i8P2)|Mf$@K#ZG=MK1Cn-s zk*n$JpzVrqNMDm9w@oS1aTOK;2Niqh`VO@U)dXDQNTYg}W>-1;q~&fxQ!p|0Dc>p| z|2{R|e`%XIxF#P9Jel_Ak=Ci1;?O0|`7Wm(LT`@72@*{e)pL979vnun`$*}3z&n<1 literal 1444 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 literal 0 HcmV?d00001 diff --git a/public/aimen coots.png b/public/aimen coots.png new file mode 100644 index 0000000000000000000000000000000000000000..799538050804e85bde4c4916d7f84988fea1cb46 GIT binary patch literal 1626 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 F2>@(fY2*L^ literal 0 HcmV?d00001 diff --git a/public/mario coots.png b/public/mario coots.png new file mode 100644 index 0000000000000000000000000000000000000000..b5f33eef858d925dbb09213e0f01cf3c2a12f402 GIT binary patch literal 1585 zcmZWqYfzF|7$z%qa^1EvEKS`@-fGF&up|h{3!AQkA>(=hl4iP~7@BttTPoKz&DwRF zwk;8FO(v$c%J;EU=r%6dT0n?d_yx3D;fh$vAQ?!@&Q7C!&OGP5f6jZ(^E~H$HG z?{;6|wE}@axW~psQylS+|AwoxW2QVg?BWPZ@+i9_5gqak{~!>{4YAP?iN!plhLB$O z?YjQgbTKBH>QT0uE@&@%+En<{6>|9~8AwS8j=*{@a|sNqIE%!25H~IJ&IqCkT(L31 zNYdETdg75&W#n&K6J4Egshv@t6()M=7QM{cW3kRvuN1w+2iq{u`b+jWqrEaiZ+yk# zxWC)B?!Nm-T3@KR*|a{VTNnn!|KLYoXwirq2Y`EMTo}r3t+yod|&_!A`x0Ll-TCNak-3sb1i^plop1X zd6TBvtcoW~zCVPR$94eqU_jPeWs<6Ig2n!{FW#2)DRdS}jy4}sZJT=U*8jHEjv#|p z1ODC@LOk?EFV(tdxr0pw!-M&dY0~YbryiIJ9)L;knkpQ>`h1)Uom&e;B^Z8YbDH!A zfQK{DFd9GL+&lpM1%8PDL$LKJq_Y4aYluow+9Y|>S#_WFv16DqAJsQrFQgI2z$?;KD*ML7og5c!gIjD)xesX4oyIv z#Ha?DTVaGUjcE|7!eyr8&q0BY34bxUV0XqjC)gRV$J$vgdaGVCslUv#eB#`Ox= z0TQtf7VEvHQhp~Ir5bH0HB9&8!h_^RA#)UaY1f%bUU7Ij$4RX>Y+qbOR7pzKi5EI+ zkePSYhuW6dbSt-^l#@qmLKBp=SqX8-I?aT2{b#U5VAzRhjF=()CXMK3?%U#XtOKJn zzkpixJFkz`B=sbZiI=*{5c6mc(_^}f4_=w4Yw5>w%%W*;W~zm2kDoAU-8Pf9vCyrxD*A$Uck-q)%2m; zMKnt}>{GIXyk8Ogxi|P2_c+)uQB?5+xFd;;<>^M>$vJzN-f%u64 zn8A+zu5y&YmEPnzxO}Z>S4{>xL;Lm+bHb#Qe0>l7+pwI*wD$N}K|yB?TTu+N*Xp_S?qwT; SuLm7}03wzcAKekT@8rLvugWX{ literal 0 HcmV?d00001 diff --git a/public/mr beast coots.png b/public/mr beast coots.png new file mode 100644 index 0000000000000000000000000000000000000000..00ce77a7e2f3865aed21680726c27a661185ef9e GIT binary patch literal 1403 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE4M+yv$zcaljKx9jP7LeL$-HD>U^Vr0aSW-L z^Y-q>?pRkD)(5ppYG>V47`Y7<*SK|WHJZw3&8pp*>*D>FUB@g-(8M!6dEr{AXz|qz z*Ip(qZS9Oy;Z)*ayqhaDJ7US)`9>e_?R~%RbM4a)73F2q4{vCnxidQ(Xd?ogIh^!{ zea?*t`QL(zca=T9{yX^m!~YfUW(1-X4sQ1=uicl`8@5$;6O({1Lx&nnt6FyBF}uvrt+vJarBz@5 z?Fr2e+3MVVbYkRo=P-oXK$qNlp?e{qx=1U$Y`@Ht>Z;fu53`E@yy;f|Ua7{fbGzo* zAugzUA*M&~5>DK%x9`5p`dd9&@4c?_h0b3;FFJBt+0t45SNUY`S^;J1^8H#4atR@< z0eL~|Y25TjM}ptiT5R9{Z};oZ_O-u)ivOI6-*0;S{@r~yzy958XJ5O9iSyz3V5c2&@i2Bj0@2_HR)~tX1d8++Bi+eKnYqs6>np>T?+4A3S zh0QDHS{LoG-1jrNdfx5*TcTIK`u;vnA;J+B@<5-M{i^?;nd}Hx$M60 z_ih)zy!wrE(<|9%=dHF=7w)THu`N9`k`WOhz_{F;-&hs<=f~k^Kf*443;8Y>dTgI* z)r#BmDi5HV+nwE5^>v%o-nAD4R#i`4HMwN!tAF!D?<%LTg3=8d_I^F+e)i+5yIFbdZK5i$*}A=lT({*O6|~++|=C0Rnr!4-y0e8Z` zM|F7k&+osA>z^B%pt?l&oy(1_(zW0J-_g1!YgT^seCS^}U;+^9R^EIMJ@SukbqK!8 z7dv;$s%OD7Puo04%cjzQ?SBhPzfQJK3b}f3VO;Wdjo`DNf1SH0&_B0F6j28GB8spX ad+QmRlN|-uUYW@W67_WTb6Mw<&;$VPymYYu literal 0 HcmV?d00001 diff --git a/public/nick coots.png b/public/nick coots.png new file mode 100644 index 0000000000000000000000000000000000000000..5c60c488a95df2930e565133917995cb95959e8f GIT binary patch literal 1680 zcmZXUc~DbV6vm%SSt=E^Qrm)nmTI&Xl?tQ?F)mOD)Pz8aAhHNDh#@dEAj>mU5Jl-w zsZbpy5Ckl1f`(wG5)!LWDv_{=2J%P%(L6;Sm;iaiur%7yagsZ8@BQc8bI$zkcfRuh zM4uJQZI%N7u!7+06{x@OyxA6J`ZI7S!CZeWqX+uz12~d(F95*IkKnbJlFmfrk;j5l z*LA3xxaBni0eKN#ZGlzzv#CK~{^2t@EukB&H{a|07s}aI;s52wIS0c-s@em#?r4rW zU0&S7w(#rwB$@EkTT+|w#lQho%FS(}VRNC{!vjv+Jtci69UDxZ8||1LMLkGleSQ5Z z*WRwn0w|SoVIMJ>#o=rWU2?cxJ8lltc>(JSfIT+LPPv!>@xSVWip5m$P}+*inM;Rd z8-f8}N1*VB_c4dcm#)ifgRl|M&J#z&YSHfNcG0G9pMC`NSpZe50bgo@r8O-z5GklF zq0mS{H%;Cp|3Bi<@yLG)d{dvqM=PT)!nJ<&X)(`VAM<%6Jx!!#@ItnUJifzZP!SUZ1u;)#nX@XjxwtS-6TUfKQCf_@CXTui>#M}bA!AnnJ zV&v_kl7l$@mK0W#!vzQ>^jl?spkVFhPDsb&-Wc8_r!;&xH~QHcWLo%Z3J?jF&B6(W znLf}4(oEaqAytra$Rl(uuGh_#yECO#D#@TlYy)$RL>QkPm<&}#dAQ7+!J$G>4B9rO zRdngjq7>;$E5r@9Pud2ijL_x=W@%&%4 z@RhtS?F1HIGOdX9@6tY)dGT>+raVTODJ~ z`;!t|?=4z}A#eucPGYu^CY)X})_IfVSP2Mb32-|V)BOj6(0QYgx6$4gZhnFUP^mCFUC&y@cj13f*uVL(5!DR?zjM81sxFpiwUKHDQI#UdnwEDA z+!bTsZn^Bsis#`)xI2ve{Zt-Inp>p$Ffh+>k0HX22b!N KdU5te<@^Vi$oRMb literal 0 HcmV?d00001 diff --git a/public/smash coots.png b/public/smash coots.png new file mode 100644 index 0000000000000000000000000000000000000000..59739be6b0576cc7f5a300ea2f0d882d45a5b522 GIT binary patch literal 1860 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 F`!C2=Ww-zU literal 0 HcmV?d00001 diff --git a/src/data/projEntry.tsx b/src/data/projEntry.tsx index cf675e5..735828f 100644 --- a/src/data/projEntry.tsx +++ b/src/data/projEntry.tsx @@ -37,6 +37,19 @@ import tieButton from "../../public/Tie Button.png"; import vespa from "../../public/Vespa Coots.png"; import victoryButton from "../../public/Victory Button.png"; import victoryFace from "../../public/win face.png"; +import connor from "../../public/cdawg va.png"; +import chessboxing from "../../public/chessboxing coots.png"; +import frog from "../../public/frog Coots.png"; +import hasan from "../../public/hasan coots.png"; +import ironmouse from "../../public/ironmouse coots.png"; +import luddy from "../../public/luddy Coots.png"; +import mario from "../../public/mario coots.png"; +import beast from "../../public/mr beast coots.png"; +import nick from "../../public/nick coots.png"; +import slime from "../../public/SlimeCoots.png"; +import smash from "../../public/smash coots.png"; +import awards from "../../public/streamer award coots.png"; +import aimen from "../../public/aimen coots.png"; import CharacterSlot from "./CharacterSlot.vue"; import "./common.css"; import "./socket"; @@ -57,7 +70,8 @@ export const characters: Record = { <> Livestream joined: Deal {char.exp >= 6 ? 6 : char.exp >= 3 ? 4 : 2}{" "} - Relevancy damage to every character on a stream + Relevancy damage to every Coots on either + livestream )), performAbility(char) { @@ -80,7 +94,7 @@ export const characters: Record = { <> Livestream joined: Gain {char.exp >= 6 ? 3 : char.exp >= 3 ? 2 : 1}{" "} - Presence for every character on that livestream + Presence for every Coots on that livestream )), performAbility(char) { @@ -117,6 +131,86 @@ export const characters: Record = { main.gold.value += goldGain; } }, + mario: { + nickname: "Mario Coots", + initialPresence: 1, + initialRelevancy: 1, + display: mario, + abilityType: "LivestreamJoined", + abilityDescription: char => + jsx(() => ( + <> + Livestream joined: Deal {char.exp >= 6 ? 3 : char.exp >= 3 ? 2 : 1}{" "} + + Presence damage to 2 Coots that most recently + joined the enemy livestream + + )), + performAbility(char) { + if (main.battle.value == null) { + return; + } + const damage = char.exp >= 6 ? 3 : char.exp >= 3 ? 2 : 1; + let opposingTeam: Character[]; + if (main.battle.value.streamers.includes(char)) { + opposingTeam = main.battle.value.enemyStreamers; + } else { + opposingTeam = main.battle.value.streamers; + } + for (let i = 0; i < 2 && i < opposingTeam.length; i++) { + opposingTeam[i].presence -= damage; + } + } + }, + aimen: { + nickname: "Aimen Coots", + initialPresence: 1, + initialRelevancy: 2, + display: aimen, + abilityType: "Sold", + abilityDescription: char => + jsx(() => ( + <> + Sold: Give {char.exp >= 6 ? 3 : char.exp >= 3 ? 2 : 1}{" "} + + Relevancy to leftmost Coots + + )), + performAbility(char) { + const team = main.team.value.filter(m => m != null); + if (team.length === 0) { + return; + } + const relevancyGain = char.exp >= 6 ? 3 : char.exp >= 3 ? 2 : 1; + team[team.length - 1]!.relevancy += relevancyGain; + } + }, + nick: { + nickname: "Nick Coots", + initialPresence: 2, + initialRelevancy: 1, + display: nick, + abilityType: "LivestreamEnded", + abilityDescription: char => + jsx(() => ( + <> + Livestream ended: Each coots on this livestream gain{" "} + {char.exp >= 6 ? 3 : char.exp >= 3 ? 2 : 1} + Presence + + )), + performAbility(char) { + if (main.battle.value == null) { + return; + } + const gain = char.exp >= 6 ? 3 : char.exp >= 3 ? 2 : 1; + if (main.battle.value.streamers.includes(char)) { + main.battle.value.streamers.forEach(s => (s.presence += gain)); + } else { + main.battle.value.enemyStreamers.forEach(s => (s.presence += gain)); + } + } + }, // Tier 2 maid: { nickname: "Maid Coots", @@ -127,7 +221,7 @@ export const characters: Record = { abilityDescription: char => jsx(() => ( <> - Level up: Every character gains {char.exp >= 3 ? 2 : 1}{" "} + Level up: Give every Coots {char.exp >= 3 ? 2 : 1}{" "} Relevancy and Presence @@ -153,10 +247,10 @@ export const characters: Record = { jsx(() => ( <> Livestream joined: Summon a lv{" "} - {char.exp >= 6 ? 3 : char.exp >= 3 ? 2 : 1} Ludwig Coots with this character's + {char.exp >= 6 ? 3 : char.exp >= 3 ? 2 : 1} Ludwig Coots with this Coots' Relevancy and - Presence. + Presence )), performAbility(char) { @@ -189,9 +283,9 @@ export const characters: Record = { <> Livestream ended: Gain {char.exp >= 6 ? 3 : char.exp >= 3 ? 2 : 1}{" "} - Relevancy for every character on either - livestream with more - Relevancy. + Relevancy for every Coots on either livestream + with more + Relevancy )), performAbility(char) { @@ -206,6 +300,135 @@ export const characters: Record = { .length); } }, + chessbox: { + nickname: "Chessboxing Coots", + initialRelevancy: 3, + initialPresence: 2, + display: chessboxing, + abilityType: "StreamStarted", + abilityDescription: char => + jsx(() => ( + <> + Stream started: Permanently gain{" "} + {char.exp >= 6 ? 3 : char.exp >= 3 ? 2 : 1} + Relevancy and swap + Relevancy and + Presence + + )), + performAbility(char) { + const gain = char.exp >= 6 ? 3 : char.exp >= 3 ? 2 : 1; + const temp = char.relevancy + gain; + char.relevancy = char.presence; + char.presence = temp; + } + }, + hasan: { + nickname: "Chessboxing Coots", + initialRelevancy: 2, + initialPresence: 3, + display: hasan, + abilityType: "StartTurn", + abilityDescription: char => + jsx(() => ( + <> + Turn started: If you won the last battle, all Coots gain + {char.exp >= 6 ? 3 : char.exp >= 3 ? 2 : 1} + Relevancy + + )), + performAbility(char) { + if (main.outcome.value !== "Victory") { + return; + } + const gain = char.exp >= 6 ? 3 : char.exp >= 3 ? 2 : 1; + main.team.value.forEach(m => { + if (m != null) { + m.relevancy += gain; + } + }); + } + }, + beast: { + nickname: "Mr.Beast Coots", + initialRelevancy: 2, + initialPresence: 2, + display: beast, + abilityType: "StartTurn", + abilityDescription: char => + jsx(() => ( + <> + Turn started: Gain + {char.exp >= 6 ? 6 : char.exp >= 3 ? 4 : 2} + Moguls + + )), + performAbility(char) { + const gain = char.exp >= 6 ? 6 : char.exp >= 3 ? 4 : 2; + main.gold.value += gain; + } + }, + frog: { + nickname: "Mr.Beast Coots", + initialRelevancy: 1, + initialPresence: 2, + display: frog, + abilityType: "Faint", + abilityDescription: char => + jsx(() => ( + <> + Either stat hits 0: Summon a lv{" "} + {char.exp >= 6 ? 3 : char.exp >= 3 ? 2 : 1} Mogul Mail Coots with this Coots' + + Relevancy and + Presence + + )), + performAbility(char) { + if (main.battle.value == null) { + return; + } + const level = char.exp >= 6 ? 3 : char.exp >= 3 ? 2 : 1; + const newChar = { + type: "mail", + exp: level === 3 ? 6 : level === 2 ? 3 : 1, + presence: char.presence, + relevancy: char.relevancy + }; + main.queue.value.push({ action: "LivestreamJoined", target: newChar }); + if (main.battle.value.streamers.includes(char)) { + main.battle.value.streamers.push(newChar); + } else { + main.battle.value.enemyStreamers.push(newChar); + } + } + }, + moves: { + nickname: "Mogul Moves Coots", + initialRelevancy: 1, + initialPresence: 2, + display: moves, + abilityType: "LivestreamJoined", + abilityDescription: char => + jsx(() => ( + <> + Livestream joined: Gain {char.exp >= 6 ? 3 : char.exp >= 3 ? 2 : 1}{" "} + + Relevancy for every battle you've won + + )), + performAbility(char) { + if (main.battle.value == null) { + return; + } + const gain = char.exp >= 6 ? 3 : char.exp >= 3 ? 2 : 1; + if (main.battle.value.streamers.includes(char)) { + char.relevancy += gain * main.wins.value; + } else { + char.relevancy += gain * main.battle.value.enemyWins; + } + } + }, // Tier 3 money: { nickname: "Mogul Money Coots", @@ -220,7 +443,7 @@ export const characters: Record = { {char.exp >= 6 ? 3 : char.exp >= 3 ? 2 : 1} Presence if you have 2 or more - Moguls. + Moguls )), performAbility(char) { @@ -239,10 +462,10 @@ export const characters: Record = { abilityDescription: () => jsx(() => ( <> - Livestream joined: Set the character that most recently joined the enemy + Livestream joined: Set the Coots that most recently joined the enemy livestream's Presence to 0. This effect does not improve on - level up. + level up )), performAbility(char) { @@ -263,6 +486,184 @@ export const characters: Record = { } } } + }, + smash: { + nickname: "Smash Coots", + initialRelevancy: 2, + initialPresence: 4, + display: smash, + abilityType: "Hurt", + abilityDescription: char => + jsx(() => ( + <> + Hurt: Gain {char.exp >= 6 ? 6 : char.exp >= 3 ? 4 : 2}{" "} + + Relevancy + + )), + performAbility(char) { + if (main.battle.value == null) { + return; + } + const gain = char.exp >= 6 ? 6 : char.exp >= 3 ? 4 : 2; + char.relevancy += gain; + } + }, + connor: { + nickname: "CDawgVA Coots", + initialRelevancy: 2, + initialPresence: 2, + display: connor, + abilityType: "Faint", + abilityDescription: char => + jsx(() => ( + <> + Either stat hits 0: Summon a lv{" "} + {char.exp >= 6 ? 3 : char.exp >= 3 ? 2 : 1} Ironmouse Coots + + )), + performAbility(char) { + if (main.battle.value == null) { + return; + } + const level = char.exp >= 6 ? 3 : char.exp >= 3 ? 2 : 1; + const newChar = { + type: "ironmouse", + exp: level === 3 ? 6 : level === 2 ? 3 : 1, + presence: characters.ironmouse.initialPresence, + relevancy: characters.ironmouse.initialRelevancy + }; + main.queue.value.push({ action: "LivestreamJoined", target: newChar }); + if (main.battle.value.streamers.includes(char)) { + main.battle.value.streamers.push(newChar); + } else { + main.battle.value.enemyStreamers.push(newChar); + } + } + }, + luddy: { + nickname: "Luddy Coots", + initialRelevancy: 2, + initialPresence: 3, + display: luddy, + abilityType: "LivestreamEnded", + abilityDescription: char => + jsx(() => ( + <> + Livestream ended: Deal {char.exp >= 6 ? 9 : char.exp >= 3 ? 6 : 3}{" "} + + Presence damage to the Coots on the enemy + livestream with the highest + Presence + + )), + performAbility(char) { + if (main.battle.value == null) { + return; + } + if (main.battle.value.streamers.includes(char)) { + const m = main.battle.value.enemyStreamers.reduce((a, b) => { + if (a.presence > b.presence) { + return a; + } + return b; + }); + if (m != null) { + m.presence -= 3; + } + } else { + const m = main.battle.value.streamers.reduce((a, b) => { + if (a.presence > b.presence) { + return a; + } + return b; + }); + if (m != null) { + m.presence -= 3; + } + } + } + }, + slime: { + nickname: "Slime Coots", + initialRelevancy: 3, + initialPresence: 3, + display: slime, + abilityType: "LivestreamJoined", + abilityDescription: char => + jsx(() => ( + <> + Livestream joined: Give {char.exp >= 6 ? 4 : char.exp >= 3 ? 3 : 2}{" "} + + Relevancy and + Presence to the Coots who most recently joined + this livestream. + + )), + performAbility(char) { + if (main.battle.value == null) { + return; + } + const gain = char.exp >= 6 ? 4 : char.exp >= 3 ? 3 : 2; + if (main.battle.value.streamers.includes(char)) { + if (main.battle.value.streamers.length > 1) { + main.battle.value.streamers[1].relevancy += gain; + main.battle.value.streamers[1].presence += gain; + } + } else { + if (main.battle.value.enemyStreamers.length > 1) { + main.battle.value.enemyStreamers[1].relevancy += gain; + main.battle.value.enemyStreamers[1].presence += gain; + } + } + } + }, + awards: { + nickname: "Streamer Awards Coots", + initialRelevancy: 3, + initialPresence: 3, + display: awards, + abilityType: "StartTurn", + abilityDescription: char => + jsx(() => ( + <> + Turn Started: If you won the last battle, gain{" "} + {char.exp >= 6 ? 3 : char.exp >= 3 ? 2 : 1} + Moguls for every battle you've won + + )), + performAbility(char) { + if (main.outcome.value !== "Victory") { + return; + } + const gain = char.exp >= 6 ? 3 : char.exp >= 3 ? 2 : 1; + main.gold.value += gain * main.wins.value; + } + }, + // Other + ironmouse: { + nickname: "Ironmouse Coots", + initialRelevancy: 5, + initialPresence: 5, + display: ironmouse, + abilityType: "LivestreamJoined", + abilityDescription: char => + jsx(() => ( + <> + Livestream joined: Gain {char.exp >= 6 ? 6 : char.exp >= 3 ? 4 : 2}{" "} + + Relevancy and + Presence + + )), + performAbility(char) { + if (main.battle.value == null) { + return; + } + const gain = char.exp >= 6 ? 6 : char.exp >= 3 ? 4 : 2; + char.relevancy += gain; + char.presence += gain; + } } }; diff --git a/src/data/socket.tsx b/src/data/socket.tsx index 5ab38b0..9888e03 100644 --- a/src/data/socket.tsx +++ b/src/data/socket.tsx @@ -144,6 +144,13 @@ function setupSocket(socket: Socket) }, 0); main.showRefreshAnim.value = true; setTimeout(() => (main.showRefreshAnim.value = false), 500); + setTimeout(() => { + main.team.value.forEach(m => { + if (m != null && characters[m.type].abilityType === "StartTurn") { + characters[m.type].performAbility(m); + } + }); + }, 1250); }); socket.on("reroll", shop => { main.gold.value--; diff --git a/src/data/types.d.ts b/src/data/types.d.ts index 3a2fb68..6470e4b 100644 --- a/src/data/types.d.ts +++ b/src/data/types.d.ts @@ -1,6 +1,12 @@ import { CoercableComponent } from "features/feature"; -type AbilityTypes = "LivestreamJoined" | "Sold" | "LevelUp" | "LivestreamEnded" | "StreamStarted"; +type AbilityTypes = + | "LivestreamJoined" + | "Sold" + | "LevelUp" + | "LivestreamEnded" + | "StreamStarted" + | "StartTurn"; interface CharacterInfo { nickname: string;