@@ -15,12 +15,18 @@ function App() {
15
15
const [ clicks , setClicks ] = useState ( 0 ) ; //set initial clicks pressed to 0
16
16
const [ clickMultiplier , setClickMultiplier ] = useState ( 1 ) ; //set initial click multiplier to 1
17
17
const [ clickersMultiplier , setClickersMultiplier ] = useState ( 1 ) ; //set initial clickers multiplier to 1
18
+ const [ timeMultiplierBonus , setTimeMultiplierBonus ] = useState ( 0 ) ; //set initial time multiplier bonus to 0
19
+ const [ clickMultiplierBonus , setClickMultiplierBonus ] = useState ( 0 ) ; //set initial click multiplier bonus to 0
20
+ const [ clickerBonus , setClickerBonus ] = useState ( 0 ) ; //set initial clicker bonus to 0
18
21
const [ clickers , setClickers ] = useState ( 1 ) ; //set initial clickers to 1
19
22
const [ seconds , setSeconds ] = useState ( 0 ) ; //set initial seconds played to 0
20
23
const updateClickers = useCallback ( ( ) => {
21
24
//update click multiplier for clickers
22
- setClickMultiplier ( ( prevMultiplier ) => clickers * clickersMultiplier ) ; //set click multiplier
23
- } , [ clickersMultiplier , clickers ] ) ;
25
+ setClickMultiplier (
26
+ ( prevMultiplier ) =>
27
+ clickers * clickersMultiplier + ( pointsPerSecond * clickerBonus ) / 100 ,
28
+ ) ; //set click multiplier
29
+ } , [ clickers , clickersMultiplier , pointsPerSecond , clickerBonus ] ) ;
24
30
const updateAutoClickers = useCallback ( ( ) => {
25
31
//update points per second for autoclickers
26
32
setPointsPerSecond (
@@ -43,14 +49,20 @@ function App() {
43
49
autoClickersLevelBonus * 3 +
44
50
autoClickersBonus * 4 +
45
51
autoClickersBonusMultiplier * 5 ) ) /
46
- 100 ) ,
52
+ 100 ) *
53
+ ( 1 + ( timeMultiplierBonus * seconds ) / 10000 ) *
54
+ ( 1 + ( clickMultiplierBonus * clicks ) / 10000 ) ,
47
55
) ; //set points per second
48
56
} , [
49
57
autoClickers ,
50
58
autoClickersBonus ,
51
59
autoClickersBonusMultiplier ,
52
60
autoClickersLevelBonus ,
53
61
autoClickersMultiplier ,
62
+ clickMultiplierBonus ,
63
+ clicks ,
64
+ seconds ,
65
+ timeMultiplierBonus ,
54
66
] ) ;
55
67
useEffect ( ( ) => {
56
68
const interval = setInterval ( ( ) => {
@@ -174,6 +186,42 @@ function App() {
174
186
updateAutoClickers ( ) ; //update auto clickers value
175
187
}
176
188
}
189
+ function upgradeTimeMultiplierBonus ( ) {
190
+ //upgrade time multiplier bonus based on number of seconds passed
191
+ if (
192
+ checkPointsForUpgrade ( points , 2.5e3 * Math . pow ( 10 , timeMultiplierBonus ) )
193
+ ) {
194
+ setPoints (
195
+ ( prevPoints ) => prevPoints - 2.5e3 * Math . pow ( 10 , timeMultiplierBonus ) ,
196
+ ) ;
197
+ setTimeMultiplierBonus (
198
+ ( prevTimeMultiplierBonus ) => prevTimeMultiplierBonus + 1 ,
199
+ ) ; //increase time multiplier bonus by 1
200
+ updateAutoClickers ( ) ; //update auto clickers value
201
+ }
202
+ }
203
+ function upgradeClickMultiplierBonus ( ) {
204
+ //upgrade click multiplier bonus based on number of seconds passed
205
+ if (
206
+ checkPointsForUpgrade ( points , 5e3 * Math . pow ( 10 , clickMultiplierBonus ) )
207
+ ) {
208
+ setPoints (
209
+ ( prevPoints ) => prevPoints - 5e3 * Math . pow ( 10 , clickMultiplierBonus ) ,
210
+ ) ;
211
+ setClickMultiplierBonus (
212
+ ( prevClickMultiplierBonus ) => prevClickMultiplierBonus + 1 ,
213
+ ) ; //increase click multiplier bonus by 1
214
+ updateAutoClickers ( ) ; //update auto clickers value
215
+ }
216
+ }
217
+ function upgradeClickerBonus ( ) {
218
+ //upgrade clicker bonus based on points per second
219
+ if ( checkPointsForUpgrade ( points , 1e3 * Math . pow ( 10 , clickerBonus ) ) ) {
220
+ setPoints ( ( prevPoints ) => prevPoints - 1e3 * Math . pow ( 10 , clickerBonus ) ) ;
221
+ setClickerBonus ( ( prevClickerBonus ) => prevClickerBonus + 1 ) ; //increase clicker bonus by 1
222
+ updateAutoClickers ( ) ; //update auto clickers value
223
+ }
224
+ }
177
225
return (
178
226
//dynamic app HTML output
179
227
< div className = "App" >
@@ -220,6 +268,29 @@ function App() {
220
268
Upgrade Clicker Multiplier
221
269
</ button >
222
270
< CostDisplay cost = { 100 * Math . pow ( 2 , clickersMultiplier - 1 ) } />
271
+ Time Multiplier Bonus:{ " " }
272
+ < NumericDisplay value = { timeMultiplierBonus } shortForm = { false } />
273
+ < br />
274
+ { /*upgrade time multiplier bonus*/ }
275
+ < button onClick = { ( ) => upgradeTimeMultiplierBonus ( ) } >
276
+ Upgrade Time Multiplier Bonus
277
+ </ button >
278
+ < CostDisplay cost = { 2.5e3 * Math . pow ( 10 , timeMultiplierBonus ) } />
279
+ Click Multiplier Bonus:{ " " }
280
+ < NumericDisplay value = { clickMultiplierBonus } shortForm = { false } />
281
+ < br />
282
+ { /*upgrade click multiplier bonus*/ }
283
+ < button onClick = { ( ) => upgradeClickMultiplierBonus ( ) } >
284
+ Upgrade Click Multiplier Bonus
285
+ </ button >
286
+ < CostDisplay cost = { 5e3 * Math . pow ( 10 , clickMultiplierBonus ) } />
287
+ Clicker Bonus: < NumericDisplay value = { clickerBonus } shortForm = { false } />
288
+ < br />
289
+ { /*upgrade clicker bonus*/ }
290
+ < button onClick = { ( ) => upgradeClickerBonus ( ) } >
291
+ Upgrade Clicker Bonus
292
+ </ button >
293
+ < CostDisplay cost = { 1e3 * Math . pow ( 10 , clickerBonus ) } />
223
294
Autoclicker Level:{ " " }
224
295
< NumericDisplay value = { autoClickers } shortForm = { false } />
225
296
< br />
0 commit comments