@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.
- package/{lib → dist}/Gui/DialogGui.d.ts +1 -2
- package/{lib → dist}/Gui/Gui.d.ts +1 -2
- package/dist/Player/BattleManager.d.ts +22 -0
- package/dist/Player/ClassManager.d.ts +18 -0
- package/dist/Player/Event.d.ts +0 -0
- package/dist/Player/ItemManager.d.ts +17 -0
- package/dist/Player/MoveManager.d.ts +177 -0
- package/dist/Player/ParameterManager.d.ts +42 -0
- package/dist/Player/Player.d.ts +73 -0
- package/dist/Player/SkillManager.d.ts +23 -0
- package/dist/Player/StateManager.d.ts +39 -0
- package/{lib → dist}/RpgServer.d.ts +34 -17
- package/dist/RpgServerEngine.d.ts +5 -0
- package/dist/core/context.d.ts +2 -0
- package/dist/core/inject.d.ts +5 -0
- package/dist/core/setup.d.ts +6 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +29673 -0
- package/dist/index.js.map +1 -0
- package/dist/module.d.ts +2 -0
- package/dist/rooms/lobby.d.ts +6 -0
- package/dist/rooms/map.d.ts +110 -0
- package/package.json +16 -38
- package/src/Gui/DialogGui.ts +3 -4
- package/src/Gui/Gui.ts +4 -6
- package/src/Player/BattleManager.ts +108 -99
- package/src/Player/ClassManager.ts +47 -46
- package/src/Player/ComponentManager.ts +26 -535
- package/src/Player/EffectManager.ts +44 -59
- package/src/Player/ElementManager.ts +70 -72
- package/src/Player/Event.ts +0 -0
- package/src/Player/GoldManager.ts +24 -6
- package/src/Player/GuiManager.ts +106 -97
- package/src/Player/ItemFixture.ts +22 -17
- package/src/Player/ItemManager.ts +234 -225
- package/src/Player/MoveManager.ts +1047 -457
- package/src/Player/ParameterManager.ts +59 -37
- package/src/Player/Player.ts +272 -1058
- package/src/Player/SkillManager.ts +146 -137
- package/src/Player/StateManager.ts +124 -98
- package/src/Player/VariableManager.ts +23 -3
- package/src/RpgServer.ts +38 -14
- package/src/RpgServerEngine.ts +7 -0
- package/src/core/context.ts +3 -0
- package/src/core/inject.ts +17 -0
- package/src/core/setup.ts +20 -0
- package/src/index.ts +9 -31
- package/src/module.ts +32 -0
- package/src/presets/index.ts +1 -3
- package/src/rooms/lobby.ts +24 -0
- package/src/rooms/map.ts +311 -0
- package/tsconfig.json +26 -23
- package/vite.config.ts +21 -0
- package/CHANGELOG.md +0 -163
- package/LICENSE +0 -19
- package/browser/manifest.json +0 -7
- package/browser/rpg.server.js +0 -22372
- package/browser/rpg.server.umd.cjs +0 -22403
- package/lib/Game/EventManager.d.ts +0 -54
- package/lib/Game/EventManager.js +0 -107
- package/lib/Game/EventManager.js.map +0 -1
- package/lib/Game/Map.d.ts +0 -191
- package/lib/Game/Map.js +0 -414
- package/lib/Game/Map.js.map +0 -1
- package/lib/Game/WorldMaps.d.ts +0 -17
- package/lib/Game/WorldMaps.js +0 -28
- package/lib/Game/WorldMaps.js.map +0 -1
- package/lib/Gui/DialogGui.js +0 -57
- package/lib/Gui/DialogGui.js.map +0 -1
- package/lib/Gui/Gui.js +0 -37
- package/lib/Gui/Gui.js.map +0 -1
- package/lib/Gui/MenuGui.js +0 -23
- package/lib/Gui/MenuGui.js.map +0 -1
- package/lib/Gui/NotificationGui.js +0 -8
- package/lib/Gui/NotificationGui.js.map +0 -1
- package/lib/Gui/ShopGui.js +0 -40
- package/lib/Gui/ShopGui.js.map +0 -1
- package/lib/Gui/index.js +0 -7
- package/lib/Gui/index.js.map +0 -1
- package/lib/Interfaces/Gui.d.ts +0 -4
- package/lib/Interfaces/Gui.js +0 -2
- package/lib/Interfaces/Gui.js.map +0 -1
- package/lib/Interfaces/StateStore.d.ts +0 -5
- package/lib/Interfaces/StateStore.js +0 -2
- package/lib/Interfaces/StateStore.js.map +0 -1
- package/lib/MatchMaker.d.ts +0 -24
- package/lib/MatchMaker.js +0 -42
- package/lib/MatchMaker.js.map +0 -1
- package/lib/Monitor/index.d.ts +0 -17
- package/lib/Monitor/index.js +0 -72
- package/lib/Monitor/index.js.map +0 -1
- package/lib/Player/BattleManager.d.ts +0 -36
- package/lib/Player/BattleManager.js +0 -101
- package/lib/Player/BattleManager.js.map +0 -1
- package/lib/Player/ClassManager.d.ts +0 -47
- package/lib/Player/ClassManager.js +0 -65
- package/lib/Player/ClassManager.js.map +0 -1
- package/lib/Player/ComponentManager.d.ts +0 -397
- package/lib/Player/ComponentManager.js +0 -505
- package/lib/Player/ComponentManager.js.map +0 -1
- package/lib/Player/EffectManager.d.ts +0 -46
- package/lib/Player/EffectManager.js +0 -75
- package/lib/Player/EffectManager.js.map +0 -1
- package/lib/Player/ElementManager.d.ts +0 -108
- package/lib/Player/ElementManager.js +0 -120
- package/lib/Player/ElementManager.js.map +0 -1
- package/lib/Player/GoldManager.d.ts +0 -17
- package/lib/Player/GoldManager.js +0 -27
- package/lib/Player/GoldManager.js.map +0 -1
- package/lib/Player/GuiManager.d.ts +0 -247
- package/lib/Player/GuiManager.js +0 -291
- package/lib/Player/GuiManager.js.map +0 -1
- package/lib/Player/ItemFixture.d.ts +0 -7
- package/lib/Player/ItemFixture.js +0 -19
- package/lib/Player/ItemFixture.js.map +0 -1
- package/lib/Player/ItemManager.d.ts +0 -331
- package/lib/Player/ItemManager.js +0 -475
- package/lib/Player/ItemManager.js.map +0 -1
- package/lib/Player/MoveManager.d.ts +0 -333
- package/lib/Player/MoveManager.js +0 -450
- package/lib/Player/MoveManager.js.map +0 -1
- package/lib/Player/ParameterManager.d.ts +0 -316
- package/lib/Player/ParameterManager.js +0 -408
- package/lib/Player/ParameterManager.js.map +0 -1
- package/lib/Player/Player.d.ts +0 -828
- package/lib/Player/Player.js +0 -927
- package/lib/Player/Player.js.map +0 -1
- package/lib/Player/SkillManager.d.ts +0 -163
- package/lib/Player/SkillManager.js +0 -223
- package/lib/Player/SkillManager.js.map +0 -1
- package/lib/Player/StateManager.d.ts +0 -185
- package/lib/Player/StateManager.js +0 -228
- package/lib/Player/StateManager.js.map +0 -1
- package/lib/Player/VariableManager.d.ts +0 -46
- package/lib/Player/VariableManager.js +0 -52
- package/lib/Player/VariableManager.js.map +0 -1
- package/lib/Query.d.ts +0 -127
- package/lib/Query.js +0 -159
- package/lib/Query.js.map +0 -1
- package/lib/RpgServer.js +0 -2
- package/lib/RpgServer.js.map +0 -1
- package/lib/Scenes/Map.d.ts +0 -136
- package/lib/Scenes/Map.js +0 -273
- package/lib/Scenes/Map.js.map +0 -1
- package/lib/decorators/event.d.ts +0 -43
- package/lib/decorators/event.js +0 -13
- package/lib/decorators/event.js.map +0 -1
- package/lib/decorators/map.d.ts +0 -178
- package/lib/decorators/map.js +0 -43
- package/lib/decorators/map.js.map +0 -1
- package/lib/entry-point.d.ts +0 -34
- package/lib/entry-point.js +0 -70
- package/lib/entry-point.js.map +0 -1
- package/lib/express/api.d.ts +0 -3
- package/lib/express/api.js +0 -105
- package/lib/express/api.js.map +0 -1
- package/lib/express/errors/NotAuthorized.d.ts +0 -4
- package/lib/express/errors/NotAuthorized.js +0 -7
- package/lib/express/errors/NotAuthorized.js.map +0 -1
- package/lib/express/errors/NotFound.d.ts +0 -4
- package/lib/express/errors/NotFound.js +0 -7
- package/lib/express/errors/NotFound.js.map +0 -1
- package/lib/express/server.d.ts +0 -16
- package/lib/express/server.js +0 -65
- package/lib/express/server.js.map +0 -1
- package/lib/index.d.ts +0 -20
- package/lib/index.js +0 -19
- package/lib/index.js.map +0 -1
- package/lib/inject.d.ts +0 -22
- package/lib/inject.js +0 -29
- package/lib/inject.js.map +0 -1
- package/lib/logs/index.js +0 -6
- package/lib/logs/index.js.map +0 -1
- package/lib/logs/item.js +0 -34
- package/lib/logs/item.js.map +0 -1
- package/lib/logs/log.js +0 -7
- package/lib/logs/log.js.map +0 -1
- package/lib/logs/skill.js +0 -19
- package/lib/logs/skill.js.map +0 -1
- package/lib/logs/state.js +0 -13
- package/lib/logs/state.js.map +0 -1
- package/lib/models/Item.d.ts +0 -10
- package/lib/models/Item.js +0 -2
- package/lib/models/Item.js.map +0 -1
- package/lib/presets/index.js +0 -65
- package/lib/presets/index.js.map +0 -1
- package/lib/server.d.ts +0 -137
- package/lib/server.js +0 -443
- package/lib/server.js.map +0 -1
- package/rpg.toml +0 -14
- package/src/Game/EventManager.ts +0 -125
- package/src/Game/Map.ts +0 -495
- package/src/Game/WorldMaps.ts +0 -45
- package/src/Interfaces/Gui.ts +0 -4
- package/src/Interfaces/StateStore.ts +0 -5
- package/src/MatchMaker.ts +0 -65
- package/src/Monitor/index.ts +0 -78
- package/src/Query.ts +0 -172
- package/src/Scenes/Map.ts +0 -310
- package/src/decorators/event.ts +0 -58
- package/src/decorators/map.ts +0 -226
- package/src/entry-point.ts +0 -111
- package/src/express/api.ts +0 -118
- package/src/express/errors/NotAuthorized.ts +0 -6
- package/src/express/errors/NotFound.ts +0 -6
- package/src/express/server.ts +0 -87
- package/src/inject.ts +0 -33
- package/src/models/Item.ts +0 -11
- package/src/server.ts +0 -459
- /package/{lib → dist}/Gui/MenuGui.d.ts +0 -0
- /package/{lib → dist}/Gui/NotificationGui.d.ts +0 -0
- /package/{lib → dist}/Gui/ShopGui.d.ts +0 -0
- /package/{lib → dist}/Gui/index.d.ts +0 -0
- /package/{lib → dist}/logs/index.d.ts +0 -0
- /package/{lib → dist}/logs/item.d.ts +0 -0
- /package/{lib → dist}/logs/log.d.ts +0 -0
- /package/{lib → dist}/logs/skill.d.ts +0 -0
- /package/{lib → dist}/logs/state.d.ts +0 -0
- /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
|