You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/store/index.ts
+35-1Lines changed: 35 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -31,6 +31,7 @@ export default createStore({
31
31
(1000*24*60*60);//calculate number of days until the task is due
32
32
constdateMultiplier: number=
33
33
daysToDue<0 ? -3/(daysToDue-1) : 1+1/(daysToDue+1);//if task is overdue, xp multiplier is less than 1 that decreases over time when task is overdue, else xp multiplier bonus increases (more than 1) when task gets closer to due date
34
+
letstreakMultiplier: number;//calculate task streak multiplier based on task streak, if task is completed before the due date then the streak increases else if the task is completed overdue (after the due date) reset task streak to 0
34
35
letrepeatMultiplier: number;//calculate task repetition multiplier based on task repetition occurance and task repetition frequency
35
36
if(task.repeatFrequency==1){
36
37
//if task repetition is daily
@@ -72,9 +73,41 @@ export default createStore({
72
73
//if task repetition is one-time
73
74
repeatMultiplier=5;//get 5x xp multiplier for one-time tasks
74
75
}
76
+
if(daysToDue<0){
77
+
//if task is overdue
78
+
task.streak=0;//reset task streak to 0
79
+
}else{
80
+
//if task is completed before due date (not overdue)
81
+
task.streak++;//increase task streak
82
+
}
83
+
if(task.streak==0){
84
+
streakMultiplier=1;//1x task streak multiplier
85
+
}elseif(task.streak<5){
86
+
streakMultiplier=1.1+0.05*(task.streak-1);//1.1x task streak multiplier from 1 streak plus 0.05x streak multiplier for each task streak
87
+
}elseif(task.streak<10){
88
+
streakMultiplier=1.3+0.04*(task.streak-5);//1.3x task streak multiplier from 5 streak plus 0.04x streak multiplier for each task streak
89
+
}elseif(task.streak<20){
90
+
streakMultiplier=1.5+0.02*(task.streak-10);//1.5x task streak multiplier from 10 streak plus 0.02x streak multiplier for each task streak
91
+
}elseif(task.streak<50){
92
+
streakMultiplier=1.7+0.01*(task.streak-20);//1.7x task streak multiplier from 20 streak plus 0.01x streak multiplier for each task streak
93
+
}elseif(task.streak<100){
94
+
streakMultiplier=2+0.005*(task.streak-50);//2x task streak multiplier from 50 streak plus 0.005x streak multiplier for each task streak
95
+
}elseif(task.streak<200){
96
+
streakMultiplier=2.25+0.0025*(task.streak-100);//2.25x task streak multiplier from 100 streak plus 0.0025x streak multiplier for each task streak
97
+
}elseif(task.streak<500){
98
+
streakMultiplier=2.5+0.001*(task.streak-200);//2.5x task streak multiplier from 200 streak plus 0.001x streak multiplier for each task streak
99
+
}elseif(task.streak<1000){
100
+
streakMultiplier=2.8+0.0004*(task.streak-500);//2.8x task streak multiplier from 500 task streak plus 0.0004x streak multiplier for each task streak
101
+
}else{
102
+
streakMultiplier=3;//3x task streak multiplier from 1000 task streak
0 commit comments