chore(release): 0.0.3
[risinglegends.git] / src / shared / profession.ts
1 import { Stats } from './stats';
2
3 export type Profession = 'Wanderer' | 'Warrior' | 'Mage' | 'Rogue';
4
5 export type ProfessionDefinition = {
6   id: Profession;
7   name: string;
8   onLevelUpStatIncrease: (level: number) => Record<Stats, number>;
9 }
10
11 export const professionList: Record<Profession, ProfessionDefinition> = {
12   'Wanderer': {
13     id: 'Wanderer',
14     name: 'Wanderer',
15     onLevelUpStatIncrease: (level) => {
16       let stats: Record<Stats, number> = {
17         strength: 0,
18         constitution: 0,
19         dexterity: 0,
20         intelligence: 0
21       };
22
23       if(level % 4 === 0) {
24         stats.constitution = 1;
25       }
26       else if(level % 3 === 0) {
27         stats.intelligence = 1;
28       }
29       else if(level % 2 === 0) {
30         stats.dexterity = 1;
31       }
32       else {
33         stats.strength = 1;
34       }
35
36       return stats;
37     }
38   },
39   'Warrior': {
40     id: 'Warrior',
41     name: 'Warrior',
42     onLevelUpStatIncrease: (level) => {
43       let stats: Record<Stats, number> = {
44         strength: 0,
45         constitution: 0,
46         dexterity: 0,
47         intelligence: 0
48       };
49
50       if(level % 2 === 0) {
51         stats.strength = 2;
52       }
53       else {
54         stats.strength = 1;
55         stats.constitution = 1;
56       }
57
58       return stats;
59     }
60   },
61   'Mage': {
62     id: 'Mage',
63     name: 'Mage',
64     onLevelUpStatIncrease: level => {
65       let stats: Record<Stats, number> = {
66         strength: 0,
67         constitution: 0,
68         dexterity: 0,
69         intelligence: 0
70       };
71
72       if(level % 2 === 0) {
73         stats.intelligence = 2;
74       }
75       else {
76         stats.intelligence = 1;
77         stats.constitution = 1;
78       }
79
80       return stats;
81     },
82   },
83   'Rogue': {
84     id: 'Rogue',
85     name: 'Rogue',
86     onLevelUpStatIncrease: level => {
87       let stats: Record<Stats, number> = {
88         strength: 0,
89         constitution: 0,
90         dexterity: 0,
91         intelligence: 0
92       };
93
94       if(level % 2 === 0) {
95         stats.dexterity = 2;
96       }
97       else {
98         stats.dexterity = 1;
99         stats.constitution = 1;
100       }
101
102       return stats;
103     },
104   }
105 };