@rpgjs/server 4.2.2 → 5.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/{lib → dist}/Gui/DialogGui.d.ts +1 -2
  2. package/{lib → dist}/Gui/Gui.d.ts +1 -2
  3. package/dist/Player/BattleManager.d.ts +22 -0
  4. package/dist/Player/ClassManager.d.ts +18 -0
  5. package/dist/Player/Event.d.ts +0 -0
  6. package/dist/Player/ItemManager.d.ts +17 -0
  7. package/dist/Player/MoveManager.d.ts +177 -0
  8. package/dist/Player/ParameterManager.d.ts +42 -0
  9. package/dist/Player/Player.d.ts +73 -0
  10. package/dist/Player/SkillManager.d.ts +23 -0
  11. package/dist/Player/StateManager.d.ts +39 -0
  12. package/{lib → dist}/RpgServer.d.ts +34 -17
  13. package/dist/RpgServerEngine.d.ts +5 -0
  14. package/dist/core/context.d.ts +2 -0
  15. package/dist/core/inject.d.ts +5 -0
  16. package/dist/core/setup.d.ts +6 -0
  17. package/dist/index.d.ts +9 -0
  18. package/dist/index.js +29673 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/module.d.ts +2 -0
  21. package/dist/rooms/lobby.d.ts +6 -0
  22. package/dist/rooms/map.d.ts +110 -0
  23. package/package.json +16 -38
  24. package/src/Gui/DialogGui.ts +3 -4
  25. package/src/Gui/Gui.ts +4 -6
  26. package/src/Player/BattleManager.ts +108 -99
  27. package/src/Player/ClassManager.ts +47 -46
  28. package/src/Player/ComponentManager.ts +26 -535
  29. package/src/Player/EffectManager.ts +44 -59
  30. package/src/Player/ElementManager.ts +70 -72
  31. package/src/Player/Event.ts +0 -0
  32. package/src/Player/GoldManager.ts +24 -6
  33. package/src/Player/GuiManager.ts +106 -97
  34. package/src/Player/ItemFixture.ts +22 -17
  35. package/src/Player/ItemManager.ts +234 -225
  36. package/src/Player/MoveManager.ts +1047 -457
  37. package/src/Player/ParameterManager.ts +59 -37
  38. package/src/Player/Player.ts +272 -1058
  39. package/src/Player/SkillManager.ts +146 -137
  40. package/src/Player/StateManager.ts +124 -98
  41. package/src/Player/VariableManager.ts +23 -3
  42. package/src/RpgServer.ts +38 -14
  43. package/src/RpgServerEngine.ts +7 -0
  44. package/src/core/context.ts +3 -0
  45. package/src/core/inject.ts +17 -0
  46. package/src/core/setup.ts +20 -0
  47. package/src/index.ts +9 -31
  48. package/src/module.ts +32 -0
  49. package/src/presets/index.ts +1 -3
  50. package/src/rooms/lobby.ts +24 -0
  51. package/src/rooms/map.ts +311 -0
  52. package/tsconfig.json +26 -23
  53. package/vite.config.ts +21 -0
  54. package/CHANGELOG.md +0 -163
  55. package/LICENSE +0 -19
  56. package/browser/manifest.json +0 -7
  57. package/browser/rpg.server.js +0 -22372
  58. package/browser/rpg.server.umd.cjs +0 -22403
  59. package/lib/Game/EventManager.d.ts +0 -54
  60. package/lib/Game/EventManager.js +0 -107
  61. package/lib/Game/EventManager.js.map +0 -1
  62. package/lib/Game/Map.d.ts +0 -191
  63. package/lib/Game/Map.js +0 -414
  64. package/lib/Game/Map.js.map +0 -1
  65. package/lib/Game/WorldMaps.d.ts +0 -17
  66. package/lib/Game/WorldMaps.js +0 -28
  67. package/lib/Game/WorldMaps.js.map +0 -1
  68. package/lib/Gui/DialogGui.js +0 -57
  69. package/lib/Gui/DialogGui.js.map +0 -1
  70. package/lib/Gui/Gui.js +0 -37
  71. package/lib/Gui/Gui.js.map +0 -1
  72. package/lib/Gui/MenuGui.js +0 -23
  73. package/lib/Gui/MenuGui.js.map +0 -1
  74. package/lib/Gui/NotificationGui.js +0 -8
  75. package/lib/Gui/NotificationGui.js.map +0 -1
  76. package/lib/Gui/ShopGui.js +0 -40
  77. package/lib/Gui/ShopGui.js.map +0 -1
  78. package/lib/Gui/index.js +0 -7
  79. package/lib/Gui/index.js.map +0 -1
  80. package/lib/Interfaces/Gui.d.ts +0 -4
  81. package/lib/Interfaces/Gui.js +0 -2
  82. package/lib/Interfaces/Gui.js.map +0 -1
  83. package/lib/Interfaces/StateStore.d.ts +0 -5
  84. package/lib/Interfaces/StateStore.js +0 -2
  85. package/lib/Interfaces/StateStore.js.map +0 -1
  86. package/lib/MatchMaker.d.ts +0 -24
  87. package/lib/MatchMaker.js +0 -42
  88. package/lib/MatchMaker.js.map +0 -1
  89. package/lib/Monitor/index.d.ts +0 -17
  90. package/lib/Monitor/index.js +0 -72
  91. package/lib/Monitor/index.js.map +0 -1
  92. package/lib/Player/BattleManager.d.ts +0 -36
  93. package/lib/Player/BattleManager.js +0 -101
  94. package/lib/Player/BattleManager.js.map +0 -1
  95. package/lib/Player/ClassManager.d.ts +0 -47
  96. package/lib/Player/ClassManager.js +0 -65
  97. package/lib/Player/ClassManager.js.map +0 -1
  98. package/lib/Player/ComponentManager.d.ts +0 -397
  99. package/lib/Player/ComponentManager.js +0 -505
  100. package/lib/Player/ComponentManager.js.map +0 -1
  101. package/lib/Player/EffectManager.d.ts +0 -46
  102. package/lib/Player/EffectManager.js +0 -75
  103. package/lib/Player/EffectManager.js.map +0 -1
  104. package/lib/Player/ElementManager.d.ts +0 -108
  105. package/lib/Player/ElementManager.js +0 -120
  106. package/lib/Player/ElementManager.js.map +0 -1
  107. package/lib/Player/GoldManager.d.ts +0 -17
  108. package/lib/Player/GoldManager.js +0 -27
  109. package/lib/Player/GoldManager.js.map +0 -1
  110. package/lib/Player/GuiManager.d.ts +0 -247
  111. package/lib/Player/GuiManager.js +0 -291
  112. package/lib/Player/GuiManager.js.map +0 -1
  113. package/lib/Player/ItemFixture.d.ts +0 -7
  114. package/lib/Player/ItemFixture.js +0 -19
  115. package/lib/Player/ItemFixture.js.map +0 -1
  116. package/lib/Player/ItemManager.d.ts +0 -331
  117. package/lib/Player/ItemManager.js +0 -475
  118. package/lib/Player/ItemManager.js.map +0 -1
  119. package/lib/Player/MoveManager.d.ts +0 -333
  120. package/lib/Player/MoveManager.js +0 -450
  121. package/lib/Player/MoveManager.js.map +0 -1
  122. package/lib/Player/ParameterManager.d.ts +0 -316
  123. package/lib/Player/ParameterManager.js +0 -408
  124. package/lib/Player/ParameterManager.js.map +0 -1
  125. package/lib/Player/Player.d.ts +0 -828
  126. package/lib/Player/Player.js +0 -927
  127. package/lib/Player/Player.js.map +0 -1
  128. package/lib/Player/SkillManager.d.ts +0 -163
  129. package/lib/Player/SkillManager.js +0 -223
  130. package/lib/Player/SkillManager.js.map +0 -1
  131. package/lib/Player/StateManager.d.ts +0 -185
  132. package/lib/Player/StateManager.js +0 -228
  133. package/lib/Player/StateManager.js.map +0 -1
  134. package/lib/Player/VariableManager.d.ts +0 -46
  135. package/lib/Player/VariableManager.js +0 -52
  136. package/lib/Player/VariableManager.js.map +0 -1
  137. package/lib/Query.d.ts +0 -127
  138. package/lib/Query.js +0 -159
  139. package/lib/Query.js.map +0 -1
  140. package/lib/RpgServer.js +0 -2
  141. package/lib/RpgServer.js.map +0 -1
  142. package/lib/Scenes/Map.d.ts +0 -136
  143. package/lib/Scenes/Map.js +0 -273
  144. package/lib/Scenes/Map.js.map +0 -1
  145. package/lib/decorators/event.d.ts +0 -43
  146. package/lib/decorators/event.js +0 -13
  147. package/lib/decorators/event.js.map +0 -1
  148. package/lib/decorators/map.d.ts +0 -178
  149. package/lib/decorators/map.js +0 -43
  150. package/lib/decorators/map.js.map +0 -1
  151. package/lib/entry-point.d.ts +0 -34
  152. package/lib/entry-point.js +0 -70
  153. package/lib/entry-point.js.map +0 -1
  154. package/lib/express/api.d.ts +0 -3
  155. package/lib/express/api.js +0 -105
  156. package/lib/express/api.js.map +0 -1
  157. package/lib/express/errors/NotAuthorized.d.ts +0 -4
  158. package/lib/express/errors/NotAuthorized.js +0 -7
  159. package/lib/express/errors/NotAuthorized.js.map +0 -1
  160. package/lib/express/errors/NotFound.d.ts +0 -4
  161. package/lib/express/errors/NotFound.js +0 -7
  162. package/lib/express/errors/NotFound.js.map +0 -1
  163. package/lib/express/server.d.ts +0 -16
  164. package/lib/express/server.js +0 -65
  165. package/lib/express/server.js.map +0 -1
  166. package/lib/index.d.ts +0 -20
  167. package/lib/index.js +0 -19
  168. package/lib/index.js.map +0 -1
  169. package/lib/inject.d.ts +0 -22
  170. package/lib/inject.js +0 -29
  171. package/lib/inject.js.map +0 -1
  172. package/lib/logs/index.js +0 -6
  173. package/lib/logs/index.js.map +0 -1
  174. package/lib/logs/item.js +0 -34
  175. package/lib/logs/item.js.map +0 -1
  176. package/lib/logs/log.js +0 -7
  177. package/lib/logs/log.js.map +0 -1
  178. package/lib/logs/skill.js +0 -19
  179. package/lib/logs/skill.js.map +0 -1
  180. package/lib/logs/state.js +0 -13
  181. package/lib/logs/state.js.map +0 -1
  182. package/lib/models/Item.d.ts +0 -10
  183. package/lib/models/Item.js +0 -2
  184. package/lib/models/Item.js.map +0 -1
  185. package/lib/presets/index.js +0 -65
  186. package/lib/presets/index.js.map +0 -1
  187. package/lib/server.d.ts +0 -137
  188. package/lib/server.js +0 -443
  189. package/lib/server.js.map +0 -1
  190. package/rpg.toml +0 -14
  191. package/src/Game/EventManager.ts +0 -125
  192. package/src/Game/Map.ts +0 -495
  193. package/src/Game/WorldMaps.ts +0 -45
  194. package/src/Interfaces/Gui.ts +0 -4
  195. package/src/Interfaces/StateStore.ts +0 -5
  196. package/src/MatchMaker.ts +0 -65
  197. package/src/Monitor/index.ts +0 -78
  198. package/src/Query.ts +0 -172
  199. package/src/Scenes/Map.ts +0 -310
  200. package/src/decorators/event.ts +0 -58
  201. package/src/decorators/map.ts +0 -226
  202. package/src/entry-point.ts +0 -111
  203. package/src/express/api.ts +0 -118
  204. package/src/express/errors/NotAuthorized.ts +0 -6
  205. package/src/express/errors/NotFound.ts +0 -6
  206. package/src/express/server.ts +0 -87
  207. package/src/inject.ts +0 -33
  208. package/src/models/Item.ts +0 -11
  209. package/src/server.ts +0 -459
  210. /package/{lib → dist}/Gui/MenuGui.d.ts +0 -0
  211. /package/{lib → dist}/Gui/NotificationGui.d.ts +0 -0
  212. /package/{lib → dist}/Gui/ShopGui.d.ts +0 -0
  213. /package/{lib → dist}/Gui/index.d.ts +0 -0
  214. /package/{lib → dist}/logs/index.d.ts +0 -0
  215. /package/{lib → dist}/logs/item.d.ts +0 -0
  216. /package/{lib → dist}/logs/log.d.ts +0 -0
  217. /package/{lib → dist}/logs/skill.d.ts +0 -0
  218. /package/{lib → dist}/logs/state.d.ts +0 -0
  219. /package/{lib → dist}/presets/index.d.ts +0 -0
@@ -1,316 +0,0 @@
1
- export declare class ParameterManager {
2
- private _paramsModifier;
3
- private _parameters;
4
- private _hp;
5
- private _sp;
6
- private _exp;
7
- private _level;
8
- /**
9
- * ```ts
10
- * player.initialLevel = 5
11
- * ```
12
- *
13
- * @title Set initial level
14
- * @prop {number} player.initialLevel
15
- * @default 1
16
- * @memberof ParameterManager
17
- * */
18
- initialLevel: number;
19
- /**
20
- * ```ts
21
- * player.finalLevel = 50
22
- * ```
23
- *
24
- * @title Set final level
25
- * @prop {number} player.finalLevel
26
- * @default 99
27
- * @memberof ParameterManager
28
- * */
29
- finalLevel: number;
30
- /**
31
- * With Object-based syntax, you can use following options:
32
- * - `basis: number`
33
- * - `extra: number`
34
- * - `accelerationA: number`
35
- * - `accelerationB: number`
36
- * @title Change Experience Curve
37
- * @prop {object} player.expCurve
38
- * @default
39
- * ```ts
40
- * {
41
- * basis: 30,
42
- * extra: 20,
43
- * accelerationA: 30,
44
- * accelerationB: 30
45
- * }
46
- * ```
47
- * @memberof ParameterManager
48
- * */
49
- expCurve: {
50
- basis: number;
51
- extra: number;
52
- accelerationA: number;
53
- accelerationB: number;
54
- };
55
- /**
56
- * Changes the health points
57
- * - Cannot exceed the MaxHP parameter
58
- * - Cannot have a negative value
59
- * - If the value is 0, a hook named `onDead()` is called in the RpgPlayer class.
60
- *
61
- * ```ts
62
- * player.hp = 100
63
- * ```
64
- * @title Change HP
65
- * @prop {number} player.hp
66
- * @default MaxHPValue
67
- * @memberof ParameterManager
68
- * */
69
- set hp(val: number);
70
- get hp(): number;
71
- /**
72
- * Changes the skill points
73
- * - Cannot exceed the MaxSP parameter
74
- * - Cannot have a negative value
75
- *
76
- * ```ts
77
- * player.sp = 200
78
- * ```
79
- * @title Change SP
80
- * @prop {number} player.sp
81
- * @default MaxSPValue
82
- * @memberof ParameterManager
83
- * */
84
- set sp(val: number);
85
- get sp(): number;
86
- /**
87
- * Changing the player's experience.
88
- * ```ts
89
- * player.exp += 100
90
- * ```
91
- *
92
- * Levels are based on the experience curve.
93
- *
94
- * ```ts
95
- * console.log(player.level) // 1
96
- * console.log(player.expForNextlevel) // 150
97
- * player.exp += 160
98
- * console.log(player.level) // 2
99
- * ```
100
- *
101
- * @title Change Experience
102
- * @prop {number} player.exp
103
- * @default 0
104
- * @memberof ParameterManager
105
- * */
106
- set exp(val: number);
107
- get exp(): number;
108
- /**
109
- * Changing the player's level.
110
- *
111
- * ```ts
112
- * player.level += 1
113
- * ```
114
- *
115
- * The level will be between the initial level given by the `initialLevel` and final level given by `finalLevel`
116
- *
117
- * ```ts
118
- * player.finalLevel = 50
119
- * player.level = 60
120
- * console.log(player.level) // 50
121
- * ```
122
- *
123
- * @title Change Level
124
- * @prop {number} player.level
125
- * @default 1
126
- * @memberof ParameterManager
127
- * */
128
- set level(val: number);
129
- get level(): number;
130
- /**
131
- * ```ts
132
- * console.log(player.expForNextlevel) // 150
133
- * ```
134
- * @title Experience for next level ?
135
- * @prop {number} player.expForNextlevel
136
- * @readonly
137
- * @memberof ParameterManager
138
- * */
139
- get expForNextlevel(): number;
140
- /**
141
- * Read the value of a parameter. Put the name of the parameter.
142
- *
143
- * ```ts
144
- * import { Presets } from '@rpgjs/server'
145
- *
146
- * const { MAXHP } = Presets
147
- *
148
- * console.log(player.param[MAXHP])
149
- * ```
150
- *
151
- * > Possible to use the `player.getParamValue(name)` method instead
152
- * @title Get Param Value
153
- * @prop {object} player.param
154
- * @readonly
155
- * @memberof ParameterManager
156
- * */
157
- get param(): {};
158
- get paramsModifier(): {
159
- [key: string]: {
160
- value?: number;
161
- rate?: number;
162
- };
163
- };
164
- /**
165
- * Changes the values of some parameters
166
- *
167
- * > It is important that these parameters have been created beforehand with the `addParameter()` method.
168
- * > By default, the following settings have been created:
169
- * - maxhp
170
- * - maxsp
171
- * - str
172
- * - int
173
- * - dex
174
- * - agi
175
- *
176
- * **Object Key**
177
- *
178
- * The key of the object is the name of the parameter
179
- *
180
- * > The good practice is to retrieve the name coming from a constant
181
- *
182
- * **Object Value**
183
- *
184
- * The value of the key is an object containing:
185
- * ```
186
- * {
187
- * value: number,
188
- * rate: number
189
- * }
190
- * ```
191
- *
192
- * - value: Adds a number to the parameter
193
- * - rate: Adds a rate to the parameter
194
- *
195
- * > Note that you can put both (value and rate)
196
- *
197
- * In the case of a state or the equipment of a weapon or armor, the parameters will be changed but if the state disappears or the armor/weapon is de-equipped, then the parameters will return to the initial state.
198
- *
199
- * @prop {Object} [paramsModifier]
200
- * @example
201
- *
202
- * ```ts
203
- * import { Presets } from '@rpgjs/server'
204
- *
205
- * const { MAXHP } = Presets
206
- *
207
- * player.paramsModifier = {
208
- * [MAXHP]: {
209
- * value: 100
210
- * }
211
- * }
212
- * ```
213
- *
214
- * 1. Player has 741 MaxHp
215
- * 2. After changing the parameter, he will have 841 MaxHp
216
- *
217
- * @title Set Parameters Modifier
218
- * @prop {number} paramsModifier
219
- * @memberof ParameterManager
220
- * */
221
- set paramsModifier(val: {
222
- [key: string]: {
223
- value?: number;
224
- rate?: number;
225
- };
226
- });
227
- get parameters(): Map<string, {
228
- start: number;
229
- end: number;
230
- }>;
231
- set parameters(val: Map<string, {
232
- start: number;
233
- end: number;
234
- }>);
235
- private _expForLevel;
236
- private getParam;
237
- getParamValue(name: string): number | never;
238
- /**
239
- * Give a new parameter. Give a start value and an end value.
240
- * The start value will be set to the level set at `player.initialLevel` and the end value will be linked to the level set at `player.finalLevel`.
241
- *
242
- * ```ts
243
- * const SPEED = 'speed'
244
- *
245
- * player.addParameter(SPEED, {
246
- * start: 10,
247
- * end: 100
248
- * })
249
- *
250
- * player.param[SPEED] // 10
251
- * player.level += 5
252
- * player.param[SPEED] // 14
253
- * ```
254
- *
255
- * @title Add custom parameters
256
- * @method player.addParameter(name,curve)
257
- * @param {name} name
258
- * @param {object} curve Scheme of the object: { start: number, end: number }
259
- * @returns {void}
260
- * @memberof ParameterManager
261
- * */
262
- addParameter(name: string, { start, end }: {
263
- start: number;
264
- end: number;
265
- }): void;
266
- /**
267
- * Gives back in percentage of health points to skill points
268
- *
269
- * ```ts
270
- * import { Presets } from '@rpgjs/server'
271
- *
272
- * const { MAXHP } = Presets
273
- *
274
- * console.log(player.param[MAXHP]) // 800
275
- * player.hp = 100
276
- * player.recovery({ hp: 0.5 }) // = 800 * 0.5
277
- * console.log(player.hp) // 400
278
- * ```
279
- *
280
- * @title Recovery HP and/or SP
281
- * @method player.recovery(params)
282
- * @param {object} params Scheme of the object: { hp: number, sp: number }. The values of the numbers must be in 0 and 1
283
- * @returns {void}
284
- * @memberof ParameterManager
285
- * */
286
- recovery({ hp, sp }: {
287
- hp?: number;
288
- sp?: number;
289
- }): void;
290
- /**
291
- * restores all HP and SP
292
- *
293
- * ```ts
294
- * import { Presets } from '@rpgjs/server'
295
- *
296
- * const { MAXHP, MAXSP } = Presets
297
- *
298
- * console.log(player.param[MAXHP], player.param[MAXSP]) // 800, 230
299
- * player.hp = 100
300
- * player.sp = 0
301
- * player.allRecovery()
302
- * console.log(player.hp, player.sp) // 800, 230
303
- * ```
304
- *
305
- * @title All Recovery
306
- * @method player.allRecovery()
307
- * @returns {void}
308
- * @memberof ParameterManager
309
- * */
310
- allRecovery(): void;
311
- }
312
- export interface ParameterManager {
313
- _class: any;
314
- $schema: any;
315
- changeRoomState(key: string): void;
316
- }
@@ -1,408 +0,0 @@
1
- import { Utils } from '@rpgjs/common';
2
- import { MAXHP, MAXSP, } from '../presets/index.js';
3
- const { isString } = Utils;
4
- export class ParameterManager {
5
- constructor() {
6
- this._paramsModifier = {};
7
- this._hp = 0;
8
- this._sp = 0;
9
- this._exp = 0;
10
- this._level = 0;
11
- /**
12
- * ```ts
13
- * player.initialLevel = 5
14
- * ```
15
- *
16
- * @title Set initial level
17
- * @prop {number} player.initialLevel
18
- * @default 1
19
- * @memberof ParameterManager
20
- * */
21
- this.initialLevel = 1;
22
- /**
23
- * ```ts
24
- * player.finalLevel = 50
25
- * ```
26
- *
27
- * @title Set final level
28
- * @prop {number} player.finalLevel
29
- * @default 99
30
- * @memberof ParameterManager
31
- * */
32
- this.finalLevel = 99;
33
- }
34
- /**
35
- * Changes the health points
36
- * - Cannot exceed the MaxHP parameter
37
- * - Cannot have a negative value
38
- * - If the value is 0, a hook named `onDead()` is called in the RpgPlayer class.
39
- *
40
- * ```ts
41
- * player.hp = 100
42
- * ```
43
- * @title Change HP
44
- * @prop {number} player.hp
45
- * @default MaxHPValue
46
- * @memberof ParameterManager
47
- * */
48
- set hp(val) {
49
- if (val > this.param[MAXHP]) {
50
- val = this.param[MAXHP];
51
- }
52
- else if (val <= 0) {
53
- this['execMethod']('onDead');
54
- val = 0;
55
- }
56
- this._hp = val;
57
- }
58
- get hp() {
59
- return this._hp;
60
- }
61
- /**
62
- * Changes the skill points
63
- * - Cannot exceed the MaxSP parameter
64
- * - Cannot have a negative value
65
- *
66
- * ```ts
67
- * player.sp = 200
68
- * ```
69
- * @title Change SP
70
- * @prop {number} player.sp
71
- * @default MaxSPValue
72
- * @memberof ParameterManager
73
- * */
74
- set sp(val) {
75
- if (val > this.param[MAXSP]) {
76
- val = this.param[MAXSP];
77
- }
78
- this._sp = val;
79
- }
80
- get sp() {
81
- return this._sp;
82
- }
83
- /**
84
- * Changing the player's experience.
85
- * ```ts
86
- * player.exp += 100
87
- * ```
88
- *
89
- * Levels are based on the experience curve.
90
- *
91
- * ```ts
92
- * console.log(player.level) // 1
93
- * console.log(player.expForNextlevel) // 150
94
- * player.exp += 160
95
- * console.log(player.level) // 2
96
- * ```
97
- *
98
- * @title Change Experience
99
- * @prop {number} player.exp
100
- * @default 0
101
- * @memberof ParameterManager
102
- * */
103
- set exp(val) {
104
- this._exp = val;
105
- const lastLevel = this.level;
106
- while (this.expForNextlevel < this._exp) {
107
- this.level += 1;
108
- }
109
- //const hasNewLevel = player.level - lastLevel
110
- }
111
- get exp() {
112
- return this._exp;
113
- }
114
- /**
115
- * Changing the player's level.
116
- *
117
- * ```ts
118
- * player.level += 1
119
- * ```
120
- *
121
- * The level will be between the initial level given by the `initialLevel` and final level given by `finalLevel`
122
- *
123
- * ```ts
124
- * player.finalLevel = 50
125
- * player.level = 60
126
- * console.log(player.level) // 50
127
- * ```
128
- *
129
- * @title Change Level
130
- * @prop {number} player.level
131
- * @default 1
132
- * @memberof ParameterManager
133
- * */
134
- set level(val) {
135
- const lastLevel = this._level;
136
- if (this.finalLevel && val > this.finalLevel) {
137
- val = this.finalLevel;
138
- }
139
- if (this._class) {
140
- for (let i = this._level; i <= val; i++) {
141
- for (let skill of this._class.skillsToLearn) {
142
- if (skill.level == i) {
143
- this['learnSkill'](skill.skill);
144
- }
145
- }
146
- }
147
- }
148
- const hasNewLevel = val - lastLevel;
149
- if (hasNewLevel > 0) {
150
- this['execMethod']('onLevelUp', [hasNewLevel]);
151
- }
152
- this._level = val;
153
- }
154
- get level() {
155
- return this._level;
156
- }
157
- /**
158
- * ```ts
159
- * console.log(player.expForNextlevel) // 150
160
- * ```
161
- * @title Experience for next level ?
162
- * @prop {number} player.expForNextlevel
163
- * @readonly
164
- * @memberof ParameterManager
165
- * */
166
- get expForNextlevel() {
167
- return this._expForLevel(this.level + 1);
168
- }
169
- /**
170
- * Read the value of a parameter. Put the name of the parameter.
171
- *
172
- * ```ts
173
- * import { Presets } from '@rpgjs/server'
174
- *
175
- * const { MAXHP } = Presets
176
- *
177
- * console.log(player.param[MAXHP])
178
- * ```
179
- *
180
- * > Possible to use the `player.getParamValue(name)` method instead
181
- * @title Get Param Value
182
- * @prop {object} player.param
183
- * @readonly
184
- * @memberof ParameterManager
185
- * */
186
- get param() {
187
- const obj = {};
188
- this._parameters.forEach((val, name) => {
189
- obj[name] = this.getParamValue(name);
190
- });
191
- return obj;
192
- }
193
- get paramsModifier() {
194
- const params = {};
195
- const paramsAvg = {};
196
- const changeParam = (paramsModifier) => {
197
- for (let key in paramsModifier) {
198
- const { rate, value } = paramsModifier[key];
199
- if (!params[key])
200
- params[key] = { rate: 0, value: 0 };
201
- if (!paramsAvg[key])
202
- paramsAvg[key] = 0;
203
- if (value)
204
- params[key].value += value;
205
- if (rate !== undefined)
206
- params[key].rate += rate;
207
- paramsAvg[key]++;
208
- }
209
- };
210
- const getModifier = (prop) => {
211
- if (!isString(prop)) {
212
- changeParam(prop);
213
- return;
214
- }
215
- for (let el of this[prop]) {
216
- if (!el.paramsModifier)
217
- continue;
218
- changeParam(el.paramsModifier);
219
- }
220
- };
221
- getModifier(this._paramsModifier);
222
- getModifier('states');
223
- getModifier('equipments');
224
- for (let key in params) {
225
- params[key].rate /= paramsAvg[key];
226
- }
227
- return params;
228
- }
229
- /**
230
- * Changes the values of some parameters
231
- *
232
- * > It is important that these parameters have been created beforehand with the `addParameter()` method.
233
- * > By default, the following settings have been created:
234
- * - maxhp
235
- * - maxsp
236
- * - str
237
- * - int
238
- * - dex
239
- * - agi
240
- *
241
- * **Object Key**
242
- *
243
- * The key of the object is the name of the parameter
244
- *
245
- * > The good practice is to retrieve the name coming from a constant
246
- *
247
- * **Object Value**
248
- *
249
- * The value of the key is an object containing:
250
- * ```
251
- * {
252
- * value: number,
253
- * rate: number
254
- * }
255
- * ```
256
- *
257
- * - value: Adds a number to the parameter
258
- * - rate: Adds a rate to the parameter
259
- *
260
- * > Note that you can put both (value and rate)
261
- *
262
- * In the case of a state or the equipment of a weapon or armor, the parameters will be changed but if the state disappears or the armor/weapon is de-equipped, then the parameters will return to the initial state.
263
- *
264
- * @prop {Object} [paramsModifier]
265
- * @example
266
- *
267
- * ```ts
268
- * import { Presets } from '@rpgjs/server'
269
- *
270
- * const { MAXHP } = Presets
271
- *
272
- * player.paramsModifier = {
273
- * [MAXHP]: {
274
- * value: 100
275
- * }
276
- * }
277
- * ```
278
- *
279
- * 1. Player has 741 MaxHp
280
- * 2. After changing the parameter, he will have 841 MaxHp
281
- *
282
- * @title Set Parameters Modifier
283
- * @prop {number} paramsModifier
284
- * @memberof ParameterManager
285
- * */
286
- set paramsModifier(val) {
287
- this._paramsModifier = val;
288
- this.changeRoomState('param');
289
- }
290
- get parameters() {
291
- return this._parameters;
292
- }
293
- set parameters(val) {
294
- this._parameters = val;
295
- }
296
- _expForLevel(level) {
297
- const { basis, extra, accelerationA, accelerationB } = this.expCurve;
298
- return Math.round(basis * (Math.pow(level - 1, 0.9 + accelerationA / 250)) * level * (level + 1) / (6 + Math.pow(level, 2) / 50 / accelerationB) + (level - 1) * extra);
299
- }
300
- getParam(name) {
301
- const features = this._parameters.get(name);
302
- if (!features) {
303
- throw `Parameter ${name} not exists. Please use addParameter() before`;
304
- }
305
- return features;
306
- }
307
- getParamValue(name) {
308
- const features = this.getParam(name);
309
- let curveVal = Math.floor((features.end - features.start) * ((this.level - 1) / (this.finalLevel - this.initialLevel))) + features.start;
310
- const modifier = this.paramsModifier[name];
311
- if (modifier) {
312
- if (modifier.rate)
313
- curveVal *= modifier.rate;
314
- if (modifier.value)
315
- curveVal += modifier.value;
316
- }
317
- return curveVal;
318
- }
319
- /**
320
- * Give a new parameter. Give a start value and an end value.
321
- * The start value will be set to the level set at `player.initialLevel` and the end value will be linked to the level set at `player.finalLevel`.
322
- *
323
- * ```ts
324
- * const SPEED = 'speed'
325
- *
326
- * player.addParameter(SPEED, {
327
- * start: 10,
328
- * end: 100
329
- * })
330
- *
331
- * player.param[SPEED] // 10
332
- * player.level += 5
333
- * player.param[SPEED] // 14
334
- * ```
335
- *
336
- * @title Add custom parameters
337
- * @method player.addParameter(name,curve)
338
- * @param {name} name
339
- * @param {object} curve Scheme of the object: { start: number, end: number }
340
- * @returns {void}
341
- * @memberof ParameterManager
342
- * */
343
- addParameter(name, { start, end }) {
344
- this._parameters.set(name, {
345
- start,
346
- end
347
- });
348
- const maxHp = this.param[MAXHP];
349
- const maxSp = this.param[MAXSP];
350
- if (name == MAXHP && this.hp > maxHp) {
351
- this.hp = maxHp; // forcing hp not to exceed maxp
352
- }
353
- else if (name == MAXSP && this.sp > maxSp) {
354
- this.sp = maxSp;
355
- }
356
- this.changeRoomState('param.' + name);
357
- }
358
- /**
359
- * Gives back in percentage of health points to skill points
360
- *
361
- * ```ts
362
- * import { Presets } from '@rpgjs/server'
363
- *
364
- * const { MAXHP } = Presets
365
- *
366
- * console.log(player.param[MAXHP]) // 800
367
- * player.hp = 100
368
- * player.recovery({ hp: 0.5 }) // = 800 * 0.5
369
- * console.log(player.hp) // 400
370
- * ```
371
- *
372
- * @title Recovery HP and/or SP
373
- * @method player.recovery(params)
374
- * @param {object} params Scheme of the object: { hp: number, sp: number }. The values of the numbers must be in 0 and 1
375
- * @returns {void}
376
- * @memberof ParameterManager
377
- * */
378
- recovery({ hp, sp }) {
379
- if (hp)
380
- this.hp = this.param[MAXHP] * hp;
381
- if (sp)
382
- this.sp = this.param[MAXSP] * sp;
383
- }
384
- /**
385
- * restores all HP and SP
386
- *
387
- * ```ts
388
- * import { Presets } from '@rpgjs/server'
389
- *
390
- * const { MAXHP, MAXSP } = Presets
391
- *
392
- * console.log(player.param[MAXHP], player.param[MAXSP]) // 800, 230
393
- * player.hp = 100
394
- * player.sp = 0
395
- * player.allRecovery()
396
- * console.log(player.hp, player.sp) // 800, 230
397
- * ```
398
- *
399
- * @title All Recovery
400
- * @method player.allRecovery()
401
- * @returns {void}
402
- * @memberof ParameterManager
403
- * */
404
- allRecovery() {
405
- this.recovery({ hp: 1, sp: 1 });
406
- }
407
- }
408
- //# sourceMappingURL=ParameterManager.js.map