11$ ( ".debug" ) . hide ( ) ;
22let playerHp = 100 ;
3- let enemyHp = 140 ;
3+ let enemyHp = 160 ;
4+ let playerMaxHp = 100 ;
5+ let enemyMaxHp = 160 ;
46let playerExtraDmg = 1 ;
57let enemyExtraDmg = 1.1 ;
6- let moveNames = [ ]
7- let isntFirefox = typeof InstallTrigger === 'undefined' ;
8- let isntSafari = / c o n s t r u c t o r / i. test ( window . HTMLElement ) || ( function ( p ) { return p . toString ( ) === "[object SafariRemoteNotification]" ; } ) ( ! window [ 'safari' ] || ( typeof safari !== 'undefined' && window [ 'safari' ] . pushNotification ) ) ;
9- isntSafari = ! isntSafari
10-
11- if ( isntFirefox && isntSafari ) {
12- alert ( "Please use Firefox/Safari or else the buttons commit die." )
13- } else if ( ! isntFirefox ) {
14- console . log ( "^^ that is because feature checking" )
15- } ;
8+ let moveNames = [ ] ;
9+ let selectableMoves = [ ] ;
10+ let movePool = [ ] ;
11+ let movesChosen = 1 ;
12+ let isFirefox = navigator . userAgent . match ( / f i r e f o x | f x i o s / i)
13+ let isSafari = navigator . userAgent . match ( / s a f a r i / i) ;
14+
15+ if ( isFirefox || isSafari ) {
16+ console . log ( "goob job" )
17+ } else {
18+ alert ( "Please use Firefox or Safari or else the buttons do the funny." )
19+ }
20+
1621console . log ( "yo hi snooper if somethings red tell me ok? also run playerHp = -2" )
1722
1823let params = window . location . search ;
@@ -23,6 +28,7 @@ newHp = Number(newHp)
2328newDmg = Number ( newDmg )
2429if ( newHp ) {
2530 enemyHp = newHp ;
31+ enemyMaxHp = newHp ;
2632 $ ( "#enemy-hp" ) . html ( newHp ) ;
2733} if ( newDmg ) {
2834 enemyExtraDmg = newDmg ;
@@ -33,10 +39,17 @@ $('#button-2').prop("disabled", true);
3339$ ( '#button-3' ) . prop ( "disabled" , true ) ;
3440$ ( '#button-4' ) . prop ( "disabled" , true ) ;
3541
42+ function setupAi ( ) {
43+ for ( i of Array ( 4 ) . keys ( ) ) {
44+ let sNum = Math . random ( ) * selectableMoves . length ;
45+ let sSelected = selectableMoves . splice ( Math . floor ( sNum ) , 1 ) [ 0 ]
46+ movePool . push ( sSelected ) ;
47+ }
48+ }
49+
3650function debug ( key ) {
37- console . log ( 'run' )
3851 if ( key . code === "F7" ) {
39- console . log ( 'yes ' ) ;
52+ console . log ( 'opened debug HAXOR :O ' ) ;
4053 $ ( ".debug" ) . show ( ) ;
4154 }
4255}
@@ -67,8 +80,8 @@ function display(top, bottom) {
6780}
6881
6982function moveAi ( ) {
70- let num = Math . random ( ) * moveNames . length ;
71- let selected = moveNames [ Math . floor ( num ) ] ;
83+ let num = Math . random ( ) * movePool . length ;
84+ let selected = movePool [ Math . floor ( num ) ] ;
7285 eval ( `${ selected } .useMove("enemy")` )
7386}
7487
@@ -103,17 +116,43 @@ function handleWin() {
103116 }
104117}
105118
119+ function evalUse ( name , user ) {
120+ eval ( `${ name } .useMove("${ user } ")` )
121+ }
122+
106123class Move {
107- constructor ( name , dmg , target , effect ) {
124+ constructor ( name , dmg , target , effect , heal , codeName ) {
108125 this . name = name ;
109126 this . dmg = dmg ;
110127 if ( target != "$D" ) {
111128 this . target = target ;
112129 this . effect = effect ;
113130 }
114- moveNames . push ( name . toLowerCase ( ) )
131+ this . heal = heal ;
132+ if ( heal >= 0 ) {
133+ this . healType = "heal" ;
134+ } else {
135+ this . healType = "recoil" ;
136+ } ;
137+ this . codeName = codeName ;
138+ moveNames . push ( codeName ) ;
139+ selectableMoves = [ ...moveNames ]
140+ this . addFunction = `${ codeName } .addToMoves()`
141+ this . useFunction = `${ codeName } .useMove("player")`
142+ $ ( "#moveSelector" ) . append ( `<button class="move" id="add-${ codeName } " onclick="${ this . addFunction } ">${ name } </button>` )
115143 }
116144
145+ addToMoves ( ) {
146+ $ ( `#button-${ movesChosen } ` ) . html ( this . name ) ;
147+ $ ( `#button-${ movesChosen } ` ) . attr ( "onclick" , `${ this . useFunction } ` )
148+ movesChosen += 1 ;
149+ $ ( `#add-${ this . codeName } ` ) . remove ( ) ;
150+ if ( movesChosen === 5 ) {
151+ $ ( "#moveSelector" ) . remove ( ) ;
152+ loop1 ( ) ;
153+ }
154+ }
155+
117156 useMove ( user ) {
118157 switch ( user ) {
119158 case "player" :
@@ -122,18 +161,24 @@ class Move {
122161 randomDamageBoost += 0.9
123162 pDamageDealt *= randomDamageBoost
124163 enemyHp -= pDamageDealt ;
164+ playerHp += this . heal * playerExtraDmg ;
165+ playerHp = Math . min ( playerHp , playerMaxHp ) ;
125166 if ( this . target === "user" ) {
126167 playerExtraDmg += this . effect ;
127168 } else if ( this . target === "enemy" ) {
128169 enemyExtraDmg += this . effect ;
129170 }
130171
131- if ( this . dmg != 0 ) {
172+ if ( this . dmg != 0 && this . heal >= 0 ) {
132173 display ( `You used ${ this . name } !` , `It dealt ${ Math . round ( pDamageDealt ) } damage.` )
133174 } else if ( this . target === "user" ) {
134175 display ( `You used ${ this . name } !` , `Your attack increased by ${ this . effect * 100 } %.` )
135176 } else if ( this . target === "enemy" ) {
136177 display ( `You used ${ this . name } !` , `The opponent's attack decreased by ${ this . effect * - 100 } %.` )
178+ } else if ( this . heal > 0 ) {
179+ display ( `You used ${ this . name } !` , `It brought your HP back up to ${ Math . round ( playerHp ) } .` )
180+ } else if ( this . heal < 0 ) {
181+ display ( `You use ${ this . name } !` , `It dealt ${ Math . round ( pDamageDealt ) } damage with ${ Math . round ( this . heal * playerExtraDmg * - 1 ) } recoil.` )
137182 }
138183 toggleButtons ( ) ;
139184 setTimeout ( loop2 , 1500 )
@@ -144,18 +189,23 @@ class Move {
144189 eRandomDamageBoost += 0.9
145190 eDamageDealt *= eRandomDamageBoost
146191 playerHp -= eDamageDealt ;
192+ enemyHp += this . heal * enemyExtraDmg ;
193+ enemyHp = Math . min ( enemyHp , enemyMaxHp ) ;
147194 if ( this . target === "user" ) {
148195 enemyExtraDmg += this . effect ;
149196 } else if ( this . target === "enemy" ) {
150197 playerExtraDmg += this . effect ;
151198 }
152-
153- if ( this . dmg != 0 ) {
199+ if ( this . dmg != 0 && this . heal >= 0 ) {
154200 display ( `The opponent used ${ this . name } !` , `It dealt ${ Math . round ( eDamageDealt ) } damage.` )
155201 } else if ( this . target === "user" ) {
156202 display ( `The opponent used ${ this . name } !` , `The opponent's attack increased by ${ this . effect * 100 } %.` )
157203 } else if ( this . target === "enemy" ) {
158204 display ( `The opponent used used ${ this . name } !` , `Your attack decreased by ${ this . effect * - 100 } %.` )
205+ } else if ( this . heal > 0 ) {
206+ display ( `The opponent used ${ this . name } !` , `It brought its HP back up to ${ Math . round ( enemyHp ) } .` )
207+ } else if ( this . heal < 0 ) {
208+ display ( `The opponent used ${ this . name } !` , `It dealt ${ Math . round ( eDamageDealt ) } damage with ${ Math . round ( this . heal * enemyExtraDmg * - 1 ) } recoil.` )
159209 }
160210
161211 break ;
@@ -165,11 +215,13 @@ class Move {
165215
166216}
167217
168- let bonk = new Move ( "Bonk" , 40 , "$D" , 0 ) ;
169- let stronkify = new Move ( "Stronkify" , 0 , "user" , 0.2 ) ;
170- let belittle = new Move ( "Belittle" , 0 , "enemy" , - 0.15 ) ;
171- let tickle = new Move ( "Tickle" , 10 , "$D" , 0 ) ;
172- // Kalob was a special child
173-
218+ // let name = new Move("name", dmg, effectTarget, effectPower, heal, "codename")
219+ let bonk = new Move ( "Bonk" , 40 , "$D" , 0 , 0 , "bonk" ) ;
220+ let stronk = new Move ( "Stronkify" , 0 , "user" , 0.2 , 0 , "stronk" ) ;
221+ let belittle = new Move ( "Belittle" , 0 , "enemy" , - 0.15 , 0 , "belittle" ) ;
222+ let tickle = new Move ( "Tickle" , 10 , "enemy" , - 0.1 , 0 , "tickle" ) ;
223+ let lick = new Move ( "Lick Wounds" , 0 , "$D" , 0 , 30 , "lick" ) ;
224+ let hyperbonk = new Move ( "HYPERBONK" , 50 , "$D" , 0 , - 30 , "hyperbonk" )
225+ // Kalob was a special child. He belittled people so they could not lick their wounds using a baseball bat to bonk them
174226document . addEventListener ( "keydown" , debug )
175- setTimeout ( loop1 , 1000 )
227+ setupAi ( )
0 commit comments