@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
package/lib/Gui/index.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { Gui } from './Gui.js';
|
|
2
|
-
import { DialogGui } from './DialogGui.js';
|
|
3
|
-
import { MenuGui } from './MenuGui.js';
|
|
4
|
-
import { ShopGui } from './ShopGui.js';
|
|
5
|
-
import { NotificationGui } from './NotificationGui.js';
|
|
6
|
-
export { Gui, DialogGui, MenuGui, ShopGui, NotificationGui };
|
|
7
|
-
//# sourceMappingURL=index.js.map
|
package/lib/Gui/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Gui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EACH,GAAG,EACH,SAAS,EACT,OAAO,EACP,OAAO,EACP,eAAe,EAClB,CAAA"}
|
package/lib/Interfaces/Gui.d.ts
DELETED
package/lib/Interfaces/Gui.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Gui.js","sourceRoot":"","sources":["../../src/Interfaces/Gui.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StateStore.js","sourceRoot":"","sources":["../../src/Interfaces/StateStore.ts"],"names":[],"mappings":""}
|
package/lib/MatchMaker.d.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { RpgPlayer } from './Player/Player';
|
|
2
|
-
interface MatchMakerPayload {
|
|
3
|
-
playerId: string;
|
|
4
|
-
mapName: string;
|
|
5
|
-
}
|
|
6
|
-
export interface MatchMakerResponse {
|
|
7
|
-
url: string;
|
|
8
|
-
port: number;
|
|
9
|
-
serverId: string;
|
|
10
|
-
}
|
|
11
|
-
export interface MatchMakerOption {
|
|
12
|
-
endpoint?: string;
|
|
13
|
-
headers?: any;
|
|
14
|
-
callback?: (payload: MatchMakerPayload) => MatchMakerResponse;
|
|
15
|
-
}
|
|
16
|
-
export declare class RpgMatchMaker {
|
|
17
|
-
private options;
|
|
18
|
-
private endpoint?;
|
|
19
|
-
private headers?;
|
|
20
|
-
private callback?;
|
|
21
|
-
constructor(options: MatchMakerOption);
|
|
22
|
-
getServer(player: RpgPlayer): Promise<MatchMakerResponse | null>;
|
|
23
|
-
}
|
|
24
|
-
export {};
|
package/lib/MatchMaker.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import axios from 'axios';
|
|
2
|
-
import { Utils } from '@rpgjs/common';
|
|
3
|
-
import { inject } from './inject.js';
|
|
4
|
-
import { RpgServerEngine } from './server.js';
|
|
5
|
-
export class RpgMatchMaker {
|
|
6
|
-
constructor(options) {
|
|
7
|
-
this.options = options;
|
|
8
|
-
this.endpoint = options.endpoint;
|
|
9
|
-
this.headers = options.headers;
|
|
10
|
-
this.callback = options.callback;
|
|
11
|
-
}
|
|
12
|
-
async getServer(player) {
|
|
13
|
-
const currentServerId = inject(RpgServerEngine).serverId;
|
|
14
|
-
const payload = {
|
|
15
|
-
playerId: player.id,
|
|
16
|
-
mapName: player.map
|
|
17
|
-
};
|
|
18
|
-
let res = {};
|
|
19
|
-
if (this.callback) {
|
|
20
|
-
res = this.callback(payload);
|
|
21
|
-
if (Utils.isPromise(res)) {
|
|
22
|
-
res = await res;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
if (this.endpoint) {
|
|
26
|
-
try {
|
|
27
|
-
res = await axios.post(this.endpoint, payload, {
|
|
28
|
-
headers: this.headers
|
|
29
|
-
}).then(res => res.data);
|
|
30
|
-
}
|
|
31
|
-
catch (err) {
|
|
32
|
-
console.log('There is a problem with the MatchMaker webservice.');
|
|
33
|
-
throw err;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
if (currentServerId == res.serverId) {
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
return res;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=MatchMaker.js.map
|
package/lib/MatchMaker.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MatchMaker.js","sourceRoot":"","sources":["../src/MatchMaker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAErC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAmB1C,MAAM,OAAO,aAAa;IAKtB,YAAoB,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;QACzC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAiB;QAC7B,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAA;QACxD,MAAM,OAAO,GAAsB;YAC/B,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,OAAO,EAAE,MAAM,CAAC,GAAG;SACtB,CAAA;QACD,IAAI,GAAG,GAAG,EAAwB,CAAA;QAClC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YAC5B,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;gBACtB,GAAG,GAAG,MAAM,GAAG,CAAA;aAClB;SACJ;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI;gBACA,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAqB,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE;oBAC/D,OAAO,EAAE,IAAI,CAAC,OAAO;iBACxB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;aAC3B;YACD,OAAO,GAAG,EAAE;gBACR,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAA;gBACjE,MAAM,GAAG,CAAA;aACZ;SACJ;QACD,IAAI,eAAe,IAAI,GAAG,CAAC,QAAQ,EAAE;YACjC,OAAO,IAAI,CAAA;SACd;QACD,OAAO,GAAG,CAAA;IACd,CAAC;CACJ"}
|
package/lib/Monitor/index.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from '@rpgjs/common';
|
|
2
|
-
declare class Monitor extends EventEmitter {
|
|
3
|
-
private monitors;
|
|
4
|
-
private lastTime;
|
|
5
|
-
loopMs: any;
|
|
6
|
-
totalConnected: number;
|
|
7
|
-
get status(): {
|
|
8
|
-
loop: any;
|
|
9
|
-
totalConnected: number;
|
|
10
|
-
};
|
|
11
|
-
getStatusOf(id: any): any;
|
|
12
|
-
update(server: any): void;
|
|
13
|
-
addMonitor(socket: any): void;
|
|
14
|
-
removeMonitor(id: any): void;
|
|
15
|
-
}
|
|
16
|
-
declare const _default: Monitor;
|
|
17
|
-
export default _default;
|
package/lib/Monitor/index.js
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from '@rpgjs/common';
|
|
2
|
-
class Monitor extends EventEmitter {
|
|
3
|
-
constructor() {
|
|
4
|
-
super(...arguments);
|
|
5
|
-
this.monitors = new Map();
|
|
6
|
-
this.totalConnected = 0;
|
|
7
|
-
}
|
|
8
|
-
get status() {
|
|
9
|
-
return {
|
|
10
|
-
loop: this.loopMs,
|
|
11
|
-
totalConnected: this.totalConnected
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
getStatusOf(id) {
|
|
15
|
-
return this.monitors.get(id);
|
|
16
|
-
}
|
|
17
|
-
update(server) {
|
|
18
|
-
const { scheduler, options } = server;
|
|
19
|
-
if (this.lastTime) {
|
|
20
|
-
const hrtime = process.hrtime(this.lastTime);
|
|
21
|
-
this.loopMs = hrtime[1] / 1e6;
|
|
22
|
-
}
|
|
23
|
-
const period = scheduler.options.period;
|
|
24
|
-
if (this.loopMs > period + 20) {
|
|
25
|
-
const { stepRate } = options;
|
|
26
|
-
console.warn('%s - Warning Low FPS. %s players connected. Game Loop: %s FPS', new Date(), this.totalConnected, Math.round(stepRate / (this.loopMs / period)));
|
|
27
|
-
}
|
|
28
|
-
this.lastTime = process.hrtime();
|
|
29
|
-
}
|
|
30
|
-
addMonitor(socket) {
|
|
31
|
-
// TODO
|
|
32
|
-
/*
|
|
33
|
-
let bytesIn = 0
|
|
34
|
-
let bytesOut = 0
|
|
35
|
-
const update = () => {
|
|
36
|
-
this.monitors.set(id, {
|
|
37
|
-
bytesIn: bytesIn.toFixed(2),
|
|
38
|
-
bytesOut: bytesOut.toFixed(2)
|
|
39
|
-
})
|
|
40
|
-
}
|
|
41
|
-
const id = socket.id
|
|
42
|
-
socket.use((packet, next) => {
|
|
43
|
-
const size = ('42'+JSON.stringify(packet)).length
|
|
44
|
-
bytesIn += size
|
|
45
|
-
update()
|
|
46
|
-
this.emit('update', this.monitors.get(id))
|
|
47
|
-
next()
|
|
48
|
-
})
|
|
49
|
-
socket._emit = socket.emit.bind(socket)
|
|
50
|
-
socket.emit = (name, data) => {
|
|
51
|
-
let size = 0
|
|
52
|
-
let obj = data
|
|
53
|
-
if (name == 'worldUpdate') {
|
|
54
|
-
obj = Object.assign({}, data)
|
|
55
|
-
size += Buffer.byteLength(obj.dataBuffer)
|
|
56
|
-
obj.dataBuffer = {_placeholder: true, num: 0}
|
|
57
|
-
}
|
|
58
|
-
size += `451-["${name},${JSON.stringify(obj)}"]`.length
|
|
59
|
-
bytesOut += size
|
|
60
|
-
update()
|
|
61
|
-
return socket._emit(name, data)
|
|
62
|
-
}
|
|
63
|
-
*/
|
|
64
|
-
this.totalConnected++;
|
|
65
|
-
}
|
|
66
|
-
removeMonitor(id) {
|
|
67
|
-
this.monitors.delete(id);
|
|
68
|
-
this.totalConnected--;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
export default new Monitor();
|
|
72
|
-
//# sourceMappingURL=index.js.map
|
package/lib/Monitor/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Monitor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAG5C,MAAM,OAAQ,SAAQ,YAAY;IAAlC;;QACY,aAAQ,GAAqB,IAAI,GAAG,EAAE,CAAA;QAG9C,mBAAc,GAAW,CAAC,CAAA;IAoE9B,CAAC;IAlEG,IAAI,MAAM;QACN,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,MAAM;YACjB,cAAc,EAAE,IAAI,CAAC,cAAc;SACtC,CAAA;IACL,CAAC;IAED,WAAW,CAAC,EAAE;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAChC,CAAC;IAED,MAAM,CAAC,MAAM;QACT,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;QACrC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;SAChC;QACD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAA;QACvC,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,EAAE,EAAE;YAC3B,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;YAC5B,OAAO,CAAC,IAAI,CAAC,+DAA+D,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;SAChK;QACD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAA;IACpC,CAAC;IAED,UAAU,CAAC,MAAM;QACb,OAAO;QACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA+BE;QACF,IAAI,CAAC,cAAc,EAAE,CAAA;IACzB,CAAC;IAED,aAAa,CAAC,EAAE;QACZ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACxB,IAAI,CAAC,cAAc,EAAE,CAAA;IACzB,CAAC;CACJ;AAED,eAAe,IAAI,OAAO,EAAE,CAAA"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { ParameterManager } from './ParameterManager';
|
|
2
|
-
import { RpgPlayer } from './Player';
|
|
3
|
-
import { ElementManager } from './ElementManager';
|
|
4
|
-
import { EffectManager } from './EffectManager';
|
|
5
|
-
import { RpgServerEngine } from '../server';
|
|
6
|
-
export declare class BattleManager {
|
|
7
|
-
/**
|
|
8
|
-
* Apply damage. Player will lose HP. the `attackerPlayer` parameter is the other player, the one who attacks.
|
|
9
|
-
*
|
|
10
|
-
* If you don't set the skill parameter, it will be a physical attack.
|
|
11
|
-
* The attack formula is already defined but you can customize it in the server options
|
|
12
|
-
*
|
|
13
|
-
* ```ts
|
|
14
|
-
* player.applyDamage(attackerPlayer) // returns { damage: number }
|
|
15
|
-
* ```
|
|
16
|
-
*
|
|
17
|
-
* @title Apply Damage
|
|
18
|
-
* @method player.applyDamage(attackerPlayer,skill)
|
|
19
|
-
* @param {RpgPlayer} attackerPlayer The attacking player
|
|
20
|
-
* @param {any} [skill]
|
|
21
|
-
* @returns {object}
|
|
22
|
-
* @memberof BattleManager
|
|
23
|
-
* */
|
|
24
|
-
applyDamage(attackerPlayer: RpgPlayer, skill?: any): {
|
|
25
|
-
damage: number;
|
|
26
|
-
critical: boolean;
|
|
27
|
-
elementVulnerable: boolean;
|
|
28
|
-
guard: boolean;
|
|
29
|
-
superGuard: boolean;
|
|
30
|
-
};
|
|
31
|
-
getFormulas(name: string): any;
|
|
32
|
-
}
|
|
33
|
-
export interface BattleManager extends ParameterManager, ElementManager, EffectManager {
|
|
34
|
-
name: string;
|
|
35
|
-
server: RpgServerEngine;
|
|
36
|
-
}
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { Utils } from '@rpgjs/common';
|
|
2
|
-
import { ParameterManager } from './ParameterManager.js';
|
|
3
|
-
import { ATK, PDEF, SDEF } from '../presets/index.js';
|
|
4
|
-
import { Effect } from '@rpgjs/database';
|
|
5
|
-
import { ElementManager } from './ElementManager.js';
|
|
6
|
-
import { EffectManager } from './EffectManager.js';
|
|
7
|
-
const { applyMixins } = Utils;
|
|
8
|
-
export class BattleManager {
|
|
9
|
-
/**
|
|
10
|
-
* Apply damage. Player will lose HP. the `attackerPlayer` parameter is the other player, the one who attacks.
|
|
11
|
-
*
|
|
12
|
-
* If you don't set the skill parameter, it will be a physical attack.
|
|
13
|
-
* The attack formula is already defined but you can customize it in the server options
|
|
14
|
-
*
|
|
15
|
-
* ```ts
|
|
16
|
-
* player.applyDamage(attackerPlayer) // returns { damage: number }
|
|
17
|
-
* ```
|
|
18
|
-
*
|
|
19
|
-
* @title Apply Damage
|
|
20
|
-
* @method player.applyDamage(attackerPlayer,skill)
|
|
21
|
-
* @param {RpgPlayer} attackerPlayer The attacking player
|
|
22
|
-
* @param {any} [skill]
|
|
23
|
-
* @returns {object}
|
|
24
|
-
* @memberof BattleManager
|
|
25
|
-
* */
|
|
26
|
-
applyDamage(attackerPlayer, skill) {
|
|
27
|
-
const getParam = (player) => {
|
|
28
|
-
const params = {};
|
|
29
|
-
this.parameters.forEach((val, key) => {
|
|
30
|
-
params[key] = player.param[key];
|
|
31
|
-
});
|
|
32
|
-
return {
|
|
33
|
-
[ATK]: player.atk,
|
|
34
|
-
[PDEF]: player.pdef,
|
|
35
|
-
[SDEF]: player.sdef,
|
|
36
|
-
...params
|
|
37
|
-
};
|
|
38
|
-
};
|
|
39
|
-
let damage = 0, fn;
|
|
40
|
-
let critical = false;
|
|
41
|
-
let guard = false;
|
|
42
|
-
let superGuard = false;
|
|
43
|
-
let elementVulnerable = false;
|
|
44
|
-
const paramA = getParam(attackerPlayer);
|
|
45
|
-
const paramB = getParam(this);
|
|
46
|
-
if (skill) {
|
|
47
|
-
fn = this.getFormulas('damageSkill');
|
|
48
|
-
if (!fn) {
|
|
49
|
-
throw new Error('Skill Formulas not exists');
|
|
50
|
-
}
|
|
51
|
-
damage = fn(paramA, paramB, skill);
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
fn = this.getFormulas('damagePhysic');
|
|
55
|
-
if (!fn) {
|
|
56
|
-
throw new Error('Physic Formulas not exists');
|
|
57
|
-
}
|
|
58
|
-
damage = fn(paramA, paramB);
|
|
59
|
-
const coef = this.coefficientElements(attackerPlayer);
|
|
60
|
-
if (coef >= 2) {
|
|
61
|
-
elementVulnerable = true;
|
|
62
|
-
}
|
|
63
|
-
damage *= coef;
|
|
64
|
-
fn = this.getFormulas('damageCritical');
|
|
65
|
-
if (fn) {
|
|
66
|
-
let newDamage = fn(damage, paramA, paramB);
|
|
67
|
-
if (damage != newDamage) {
|
|
68
|
-
critical = true;
|
|
69
|
-
}
|
|
70
|
-
damage = newDamage;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
if (this.hasEffect(Effect.GUARD)) {
|
|
74
|
-
fn = this.getFormulas('damageGuard');
|
|
75
|
-
if (fn) {
|
|
76
|
-
let newDamage = fn(damage, paramA, paramB);
|
|
77
|
-
if (damage != newDamage) {
|
|
78
|
-
guard = true;
|
|
79
|
-
}
|
|
80
|
-
damage = newDamage;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
if (this.hasEffect(Effect.SUPER_GUARD)) {
|
|
84
|
-
damage /= 4;
|
|
85
|
-
superGuard = true;
|
|
86
|
-
}
|
|
87
|
-
this.hp -= damage;
|
|
88
|
-
return {
|
|
89
|
-
damage,
|
|
90
|
-
critical,
|
|
91
|
-
elementVulnerable,
|
|
92
|
-
guard,
|
|
93
|
-
superGuard
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
getFormulas(name) {
|
|
97
|
-
return this.server.damageFormulas[name];
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
applyMixins(BattleManager, [ParameterManager, ElementManager, EffectManager]);
|
|
101
|
-
//# sourceMappingURL=BattleManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BattleManager.js","sourceRoot":"","sources":["../../src/Player/BattleManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { ParameterManager } from './ParameterManager';
|
|
2
|
-
import { ItemManager } from './ItemManager';
|
|
3
|
-
type ClassClass = {
|
|
4
|
-
new (...args: any[]): any;
|
|
5
|
-
};
|
|
6
|
-
type ActorClass = {
|
|
7
|
-
new (...args: any[]): any;
|
|
8
|
-
};
|
|
9
|
-
export declare class ClassManager {
|
|
10
|
-
_class: any;
|
|
11
|
-
/**
|
|
12
|
-
* Assign a class to the player
|
|
13
|
-
*
|
|
14
|
-
* ```ts
|
|
15
|
-
* import { Fighter } from 'my-database/classes/fighter'
|
|
16
|
-
*
|
|
17
|
-
* player.setClass(Fighter)
|
|
18
|
-
* ```
|
|
19
|
-
*
|
|
20
|
-
* @title Set Class
|
|
21
|
-
* @method player.setClass(ClassClass)
|
|
22
|
-
* @param {ClassClass | string} class class or id
|
|
23
|
-
* @returns {instance of ClassClass}
|
|
24
|
-
* @memberof ClassManager
|
|
25
|
-
* */
|
|
26
|
-
setClass(_class: ClassClass | string): any;
|
|
27
|
-
/**
|
|
28
|
-
* Allows to give a set of already defined properties to the player (default equipment, or a list of skills to learn according to the level)
|
|
29
|
-
*
|
|
30
|
-
* ```ts
|
|
31
|
-
* import { Hero } from 'my-database/classes/hero'
|
|
32
|
-
*
|
|
33
|
-
* player.setActor(Hero)
|
|
34
|
-
* ```
|
|
35
|
-
*
|
|
36
|
-
* @title Set Actor
|
|
37
|
-
* @method player.setActor(ActorClass)
|
|
38
|
-
* @param {ActorClass | string} actorClass actor class or id
|
|
39
|
-
* @returns {instance of ActorClass}
|
|
40
|
-
* @memberof ClassManager
|
|
41
|
-
* */
|
|
42
|
-
setActor(actorClass: ActorClass | string): any;
|
|
43
|
-
}
|
|
44
|
-
export interface ClassManager extends ParameterManager, ItemManager {
|
|
45
|
-
name: string;
|
|
46
|
-
}
|
|
47
|
-
export {};
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { Utils } from '@rpgjs/common';
|
|
2
|
-
import { ParameterManager } from './ParameterManager.js';
|
|
3
|
-
import { ItemManager } from './ItemManager.js';
|
|
4
|
-
const { applyMixins, isString } = Utils;
|
|
5
|
-
export class ClassManager {
|
|
6
|
-
/**
|
|
7
|
-
* Assign a class to the player
|
|
8
|
-
*
|
|
9
|
-
* ```ts
|
|
10
|
-
* import { Fighter } from 'my-database/classes/fighter'
|
|
11
|
-
*
|
|
12
|
-
* player.setClass(Fighter)
|
|
13
|
-
* ```
|
|
14
|
-
*
|
|
15
|
-
* @title Set Class
|
|
16
|
-
* @method player.setClass(ClassClass)
|
|
17
|
-
* @param {ClassClass | string} class class or id
|
|
18
|
-
* @returns {instance of ClassClass}
|
|
19
|
-
* @memberof ClassManager
|
|
20
|
-
* */
|
|
21
|
-
setClass(_class) {
|
|
22
|
-
if (isString(_class))
|
|
23
|
-
_class = this.databaseById(_class);
|
|
24
|
-
this._class = new _class();
|
|
25
|
-
this['execMethod']('onSet', [this], this._class);
|
|
26
|
-
return this._class;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Allows to give a set of already defined properties to the player (default equipment, or a list of skills to learn according to the level)
|
|
30
|
-
*
|
|
31
|
-
* ```ts
|
|
32
|
-
* import { Hero } from 'my-database/classes/hero'
|
|
33
|
-
*
|
|
34
|
-
* player.setActor(Hero)
|
|
35
|
-
* ```
|
|
36
|
-
*
|
|
37
|
-
* @title Set Actor
|
|
38
|
-
* @method player.setActor(ActorClass)
|
|
39
|
-
* @param {ActorClass | string} actorClass actor class or id
|
|
40
|
-
* @returns {instance of ActorClass}
|
|
41
|
-
* @memberof ClassManager
|
|
42
|
-
* */
|
|
43
|
-
setActor(actorClass) {
|
|
44
|
-
if (isString(actorClass))
|
|
45
|
-
actorClass = this.databaseById(actorClass);
|
|
46
|
-
const actor = new actorClass();
|
|
47
|
-
['name', 'initialLevel', 'finalLevel', 'expCurve'].forEach(key => {
|
|
48
|
-
if (actor[key])
|
|
49
|
-
this[key] = actor[key];
|
|
50
|
-
});
|
|
51
|
-
for (let param in actor.parameters) {
|
|
52
|
-
this.addParameter(param, actor.parameters[param]);
|
|
53
|
-
}
|
|
54
|
-
for (let item of actor.startingEquipment) {
|
|
55
|
-
this.addItem(item);
|
|
56
|
-
this.equip(item, true);
|
|
57
|
-
}
|
|
58
|
-
if (actor.class)
|
|
59
|
-
this.setClass(actor.class);
|
|
60
|
-
this['execMethod']('onSet', [this], actor);
|
|
61
|
-
return actor;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
applyMixins(ClassManager, [ParameterManager, ItemManager]);
|
|
65
|
-
//# sourceMappingURL=ClassManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ClassManager.js","sourceRoot":"","sources":["../../src/Player/ClassManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAO,eAAe,CAAA;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,MAAM,EACF,WAAW,EACX,QAAQ,EACX,GAAG,KAAK,CAAA;AAKT,MAAM,OAAO,YAAY;IAIrB;;;;;;;;;;;;;;SAcK;IACL,QAAQ,CAAC,MAA2B;QAChC,IAAI,QAAQ,CAAC,MAAM,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;QACxD,IAAI,CAAC,MAAM,GAAG,IAAK,MAAqB,EAAE,CAAA;QAC1C,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAChD,OAAO,IAAI,CAAC,MAAM,CAAA;IACtB,CAAC;IAED;;;;;;;;;;;;;;SAcK;IACL,QAAQ,CAAC,UAA+B;QACpC,IAAI,QAAQ,CAAC,UAAU,CAAC;YAAE,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;QACpE,MAAM,KAAK,GAAG,IAAK,UAAyB,EAAE,CAAC;QAC/C,CAAC,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC7D,IAAI,KAAK,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;QACF,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,EAAE;YAChC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;SACpD;QACD,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,iBAAiB,EAAE;YACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAClB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;SACzB;QACD,IAAI,KAAK,CAAC,KAAK;YAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC3C,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAA;QAC1C,OAAO,KAAK,CAAA;IAChB,CAAC;CACJ;AAED,WAAW,CAAC,YAAY,EAAE,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC,CAAA"}
|