@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,111 +1,125 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import {
|
|
2
|
+
Constructor,
|
|
3
|
+
isArray,
|
|
4
|
+
isInstanceOf,
|
|
5
|
+
isString,
|
|
6
|
+
RpgCommonPlayer,
|
|
7
|
+
} from "@rpgjs/common";
|
|
8
|
+
import { SkillLog } from "../logs";
|
|
9
|
+
import { RpgPlayer } from "./Player";
|
|
10
|
+
import { Effect } from "./EffectManager";
|
|
8
11
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Interface defining dependencies from other mixins that SkillManager needs
|
|
14
|
+
*/
|
|
15
|
+
interface SkillManagerDependencies {
|
|
16
|
+
sp: number;
|
|
17
|
+
skills(): any[];
|
|
18
|
+
hasEffect(effect: string): boolean;
|
|
19
|
+
databaseById(id: string): any;
|
|
20
|
+
applyStates(player: RpgPlayer, skill: any): void;
|
|
21
|
+
}
|
|
19
22
|
|
|
20
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Interface defining what SkillManager adds to a class
|
|
25
|
+
*/
|
|
26
|
+
export interface IWithSkillManager {
|
|
27
|
+
getSkill(skillClass: any | string): any;
|
|
28
|
+
learnSkill(skillId: any | string): any;
|
|
29
|
+
forgetSkill(skillId: any | string): any;
|
|
30
|
+
useSkill(skillId: any | string, otherPlayer?: RpgPlayer | RpgPlayer[]): any;
|
|
31
|
+
}
|
|
21
32
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
33
|
+
export function WithSkillManager<TBase extends Constructor<RpgCommonPlayer & SkillManagerDependencies>>(
|
|
34
|
+
Base: TBase
|
|
35
|
+
): Constructor<IWithSkillManager> & TBase {
|
|
36
|
+
return class extends Base implements IWithSkillManager {
|
|
37
|
+
private _getSkillIndex(skillClass: any | string) {
|
|
38
|
+
return this.skills().findIndex((skill) => {
|
|
39
|
+
if (isString(skill)) {
|
|
40
|
+
return skill.id == skillClass;
|
|
41
|
+
}
|
|
42
|
+
if (isString(skillClass)) {
|
|
43
|
+
return skillClass == (skill.id || skill);
|
|
44
|
+
}
|
|
45
|
+
return isInstanceOf(skill, skillClass);
|
|
46
|
+
});
|
|
32
47
|
}
|
|
33
48
|
|
|
34
49
|
/**
|
|
35
50
|
* Retrieves a learned skill. Returns null, if not found
|
|
36
51
|
* ```ts
|
|
37
52
|
* import Fire from 'your-database/skills/fire'
|
|
38
|
-
*
|
|
53
|
+
*
|
|
39
54
|
* player.getSkill(Fire)
|
|
40
55
|
* ```
|
|
41
|
-
*
|
|
56
|
+
*
|
|
42
57
|
* @title Get Skill
|
|
43
58
|
* @method player.getSkill(skillClass)
|
|
44
59
|
* @param {SkillClass | string} skillClass or data id
|
|
45
60
|
* @returns {instance of SkillClass | null}
|
|
46
61
|
* @memberof SkillManager
|
|
47
62
|
*/
|
|
48
|
-
getSkill(skillClass:
|
|
49
|
-
|
|
50
|
-
|
|
63
|
+
getSkill(skillClass: any | string) {
|
|
64
|
+
const index = this._getSkillIndex(skillClass);
|
|
65
|
+
return this.skills()[index] ?? null;
|
|
51
66
|
}
|
|
52
67
|
|
|
53
68
|
/**
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
learnSkill(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
return instance
|
|
69
|
+
* Learn a skill. Attributes the coefficient 1 to the parameter INT (intelligence) if cd is not present on the class.
|
|
70
|
+
*
|
|
71
|
+
* `onLearn()` method is called on the SkillClass
|
|
72
|
+
*
|
|
73
|
+
* ```ts
|
|
74
|
+
* import Fire from 'your-database/skills/fire'
|
|
75
|
+
*
|
|
76
|
+
* player.learnSkill(Fire)
|
|
77
|
+
* ```
|
|
78
|
+
*
|
|
79
|
+
* @title Learn Skill
|
|
80
|
+
* @method player.learnSkill(skillClass)
|
|
81
|
+
* @param {SkillClass | string} skillId or data id
|
|
82
|
+
* @throws {SkillLog} alreadyLearned
|
|
83
|
+
* If the player already knows the skill
|
|
84
|
+
* ```
|
|
85
|
+
{
|
|
86
|
+
id: SKILL_ALREADY_LEARNED,
|
|
87
|
+
msg: '...'
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
* @returns {instance of SkillClass}
|
|
91
|
+
* @memberof SkillManager
|
|
92
|
+
*/
|
|
93
|
+
learnSkill(skillId: any | string) {
|
|
94
|
+
if (this.getSkill(skillId)) {
|
|
95
|
+
throw SkillLog.alreadyLearned(skillId);
|
|
96
|
+
}
|
|
97
|
+
const instance = this.databaseById(skillId);
|
|
98
|
+
this.skills().push(instance);
|
|
99
|
+
this["execMethod"]("onLearn", [this], instance);
|
|
100
|
+
return instance;
|
|
87
101
|
}
|
|
88
102
|
|
|
89
103
|
/**
|
|
90
104
|
* Forget a skill
|
|
91
|
-
*
|
|
105
|
+
*
|
|
92
106
|
* `onForget()` method is called on the SkillClass
|
|
93
|
-
*
|
|
107
|
+
*
|
|
94
108
|
* ```ts
|
|
95
109
|
* import Fire from 'your-database/skills/fire'
|
|
96
|
-
*
|
|
110
|
+
*
|
|
97
111
|
* try {
|
|
98
|
-
* player.forgetSkill(Fire)
|
|
112
|
+
* player.forgetSkill(Fire)
|
|
99
113
|
* }
|
|
100
114
|
* catch (err) {
|
|
101
115
|
* console.log(err)
|
|
102
116
|
* }
|
|
103
117
|
* ```
|
|
104
|
-
*
|
|
118
|
+
*
|
|
105
119
|
* @title Forget Skill
|
|
106
120
|
* @method player.learnSkill(skillClass)
|
|
107
|
-
* @param {SkillClass | string}
|
|
108
|
-
* @throws {SkillLog} notLearned
|
|
121
|
+
* @param {SkillClass | string} skillId or data id
|
|
122
|
+
* @throws {SkillLog} notLearned
|
|
109
123
|
* If trying to forget a skill not learned
|
|
110
124
|
* ```
|
|
111
125
|
* {
|
|
@@ -116,63 +130,63 @@ export class SkillManager {
|
|
|
116
130
|
* @returns {instance of SkillClass}
|
|
117
131
|
* @memberof SkillManager
|
|
118
132
|
*/
|
|
119
|
-
forgetSkill(
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
133
|
+
forgetSkill(skillId: any | string) {
|
|
134
|
+
if (isString(skillId)) skillId = this.databaseById(skillId);
|
|
135
|
+
const index = this._getSkillIndex(skillId);
|
|
136
|
+
if (index == -1) {
|
|
137
|
+
throw SkillLog.notLearned(skillId);
|
|
138
|
+
}
|
|
139
|
+
const instance = this.skills()[index];
|
|
140
|
+
this.skills().splice(index, 1);
|
|
141
|
+
this["execMethod"]("onForget", [this], instance);
|
|
142
|
+
return instance;
|
|
129
143
|
}
|
|
130
144
|
|
|
131
145
|
/**
|
|
132
146
|
* Using a skill
|
|
133
|
-
*
|
|
147
|
+
*
|
|
134
148
|
* `onUse()` method is called on the SkillClass
|
|
135
|
-
*
|
|
149
|
+
*
|
|
136
150
|
* If other players are indicated then damage will be done to these other players. The method `applyDamage()` will be executed
|
|
137
|
-
*
|
|
151
|
+
*
|
|
138
152
|
* ```ts
|
|
139
153
|
* import Fire from 'your-database/skills/fire'
|
|
140
|
-
*
|
|
154
|
+
*
|
|
141
155
|
* try {
|
|
142
|
-
* player.useSkill(Fire)
|
|
156
|
+
* player.useSkill(Fire)
|
|
143
157
|
* }
|
|
144
158
|
* catch (err) {
|
|
145
159
|
* console.log(err)
|
|
146
160
|
* }
|
|
147
161
|
* ```
|
|
148
|
-
*
|
|
149
|
-
* or
|
|
150
|
-
*
|
|
151
|
-
*
|
|
162
|
+
*
|
|
163
|
+
* or
|
|
164
|
+
*
|
|
165
|
+
*
|
|
152
166
|
* * ```ts
|
|
153
167
|
* import Fire from 'your-database/skills/fire'
|
|
154
|
-
*
|
|
168
|
+
*
|
|
155
169
|
* try {
|
|
156
|
-
* player.useSkill(Fire, otherPlayer)
|
|
170
|
+
* player.useSkill(Fire, otherPlayer)
|
|
157
171
|
* }
|
|
158
172
|
* catch (err) {
|
|
159
173
|
* console.log(err)
|
|
160
174
|
* }
|
|
161
175
|
* ```
|
|
162
|
-
*
|
|
176
|
+
*
|
|
163
177
|
* @title Use Skill
|
|
164
178
|
* @method player.useSkill(skillClass,otherPlayer)
|
|
165
|
-
* @param {SkillClass | string}
|
|
166
|
-
* @param {Array<RpgPlayer> | RpgPlayer} [otherPlayer]
|
|
167
|
-
* @throws {SkillLog} restriction
|
|
168
|
-
* If the player has the `Effect.CAN_NOT_SKILL` effect
|
|
179
|
+
* @param {SkillClass | string} skillId or data id
|
|
180
|
+
* @param {Array<RpgPlayer> | RpgPlayer} [otherPlayer]
|
|
181
|
+
* @throws {SkillLog} restriction
|
|
182
|
+
* If the player has the `Effect.CAN_NOT_SKILL` effect
|
|
169
183
|
* ```
|
|
170
184
|
* {
|
|
171
185
|
* id: RESTRICTION_SKILL,
|
|
172
186
|
* msg: '...'
|
|
173
187
|
* }
|
|
174
188
|
* ```
|
|
175
|
-
* @throws {SkillLog} notLearned
|
|
189
|
+
* @throws {SkillLog} notLearned
|
|
176
190
|
* If the player tries to use an unlearned skill
|
|
177
191
|
* ```
|
|
178
192
|
* {
|
|
@@ -180,7 +194,7 @@ export class SkillManager {
|
|
|
180
194
|
* msg: '...'
|
|
181
195
|
* }
|
|
182
196
|
* ```
|
|
183
|
-
* @throws {SkillLog} notEnoughSp
|
|
197
|
+
* @throws {SkillLog} notEnoughSp
|
|
184
198
|
* If the player does not have enough SP to use the skill
|
|
185
199
|
* ```
|
|
186
200
|
* {
|
|
@@ -188,7 +202,7 @@ export class SkillManager {
|
|
|
188
202
|
* msg: '...'
|
|
189
203
|
* }
|
|
190
204
|
* ```
|
|
191
|
-
* @throws {SkillLog} chanceToUseFailed
|
|
205
|
+
* @throws {SkillLog} chanceToUseFailed
|
|
192
206
|
* If the chance to use the skill has failed (defined with the `hitRate` property)
|
|
193
207
|
* ```
|
|
194
208
|
* {
|
|
@@ -196,47 +210,42 @@ export class SkillManager {
|
|
|
196
210
|
* msg: '...'
|
|
197
211
|
* }
|
|
198
212
|
* ```
|
|
199
|
-
*
|
|
213
|
+
*
|
|
200
214
|
* `onUseFailed()` method is called on the SkillClass
|
|
201
|
-
*
|
|
215
|
+
*
|
|
202
216
|
* @returns {instance of SkillClass}
|
|
203
217
|
* @memberof SkillManager
|
|
204
218
|
* @todo
|
|
205
219
|
*/
|
|
206
|
-
useSkill(
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
220
|
+
useSkill(skillId: any | string, otherPlayer?: RpgPlayer | RpgPlayer[]) {
|
|
221
|
+
const skill = this.getSkill(skillId);
|
|
222
|
+
if (this.hasEffect(Effect.CAN_NOT_SKILL)) {
|
|
223
|
+
throw SkillLog.restriction(skillId);
|
|
224
|
+
}
|
|
225
|
+
if (!skill) {
|
|
226
|
+
throw SkillLog.notLearned(skillId);
|
|
227
|
+
}
|
|
228
|
+
if (skill.spCost > this.sp) {
|
|
229
|
+
throw SkillLog.notEnoughSp(skillId, skill.spCost, this.sp);
|
|
230
|
+
}
|
|
231
|
+
this.sp -= skill.spCost / (this.hasEffect(Effect.HALF_SP_COST) ? 2 : 1);
|
|
232
|
+
const hitRate = skill.hitRate ?? 1;
|
|
233
|
+
if (Math.random() > hitRate) {
|
|
234
|
+
this["execMethod"]("onUseFailed", [this, otherPlayer], skill);
|
|
235
|
+
throw SkillLog.chanceToUseFailed(skillId);
|
|
236
|
+
}
|
|
237
|
+
if (otherPlayer) {
|
|
238
|
+
let players: any = otherPlayer;
|
|
239
|
+
if (!isArray(players)) {
|
|
240
|
+
players = [otherPlayer];
|
|
210
241
|
}
|
|
211
|
-
|
|
212
|
-
|
|
242
|
+
for (let player of players) {
|
|
243
|
+
this.applyStates(player, skill);
|
|
244
|
+
player.applyDamage(this, skill);
|
|
213
245
|
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
this.sp -= (skill.spCost / (this.hasEffect(Effect.HALF_SP_COST) ? 2 : 1))
|
|
218
|
-
const hitRate = skill.hitRate ?? 1
|
|
219
|
-
if (Math.random() > hitRate) {
|
|
220
|
-
this['execMethod']('onUseFailed', [this, otherPlayer], skill)
|
|
221
|
-
throw SkillLog.chanceToUseFailed(skillClass)
|
|
222
|
-
}
|
|
223
|
-
if (otherPlayer) {
|
|
224
|
-
let players: any = otherPlayer
|
|
225
|
-
if (!isArray(players)) {
|
|
226
|
-
players = [otherPlayer]
|
|
227
|
-
}
|
|
228
|
-
for (let player of players) {
|
|
229
|
-
this.applyStates(player, skill)
|
|
230
|
-
player.applyDamage(this, skill)
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
this['execMethod']('onUse', [this, otherPlayer], skill)
|
|
234
|
-
return skill
|
|
246
|
+
}
|
|
247
|
+
this["execMethod"]("onUse", [this, otherPlayer], skill);
|
|
248
|
+
return skill;
|
|
235
249
|
}
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
applyMixins(SkillManager, [ParameterManager, StateManager, EffectManager])
|
|
239
|
-
|
|
240
|
-
export interface SkillManager extends ParameterManager, StateManager, EffectManager {
|
|
241
|
-
databaseById(skillClass: any),
|
|
250
|
+
};
|
|
242
251
|
}
|