screeps 4.2.14 → 4.2.15
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/package.json +2 -2
- package/.screepsrc +0 -39
- package/assets/gift.png +0 -0
- package/assets/map/W0N0.png +0 -0
- package/assets/map/W0N1.png +0 -0
- package/assets/map/W0N10.png +0 -0
- package/assets/map/W0N2.png +0 -0
- package/assets/map/W0N3.png +0 -0
- package/assets/map/W0N4.png +0 -0
- package/assets/map/W0N5.png +0 -0
- package/assets/map/W0N6.png +0 -0
- package/assets/map/W0N7.png +0 -0
- package/assets/map/W0N8.png +0 -0
- package/assets/map/W0N9.png +0 -0
- package/assets/map/W10N0.png +0 -0
- package/assets/map/W10N1.png +0 -0
- package/assets/map/W10N10.png +0 -0
- package/assets/map/W10N2.png +0 -0
- package/assets/map/W10N3.png +0 -0
- package/assets/map/W10N4.png +0 -0
- package/assets/map/W10N5.png +0 -0
- package/assets/map/W10N6.png +0 -0
- package/assets/map/W10N7.png +0 -0
- package/assets/map/W10N8.png +0 -0
- package/assets/map/W10N9.png +0 -0
- package/assets/map/W1N0.png +0 -0
- package/assets/map/W1N1.png +0 -0
- package/assets/map/W1N10.png +0 -0
- package/assets/map/W1N2.png +0 -0
- package/assets/map/W1N3.png +0 -0
- package/assets/map/W1N4.png +0 -0
- package/assets/map/W1N5.png +0 -0
- package/assets/map/W1N6.png +0 -0
- package/assets/map/W1N7.png +0 -0
- package/assets/map/W1N8.png +0 -0
- package/assets/map/W1N9.png +0 -0
- package/assets/map/W2N0.png +0 -0
- package/assets/map/W2N1.png +0 -0
- package/assets/map/W2N10.png +0 -0
- package/assets/map/W2N2.png +0 -0
- package/assets/map/W2N3.png +0 -0
- package/assets/map/W2N4.png +0 -0
- package/assets/map/W2N5.png +0 -0
- package/assets/map/W2N6.png +0 -0
- package/assets/map/W2N7.png +0 -0
- package/assets/map/W2N8.png +0 -0
- package/assets/map/W2N9.png +0 -0
- package/assets/map/W3N0.png +0 -0
- package/assets/map/W3N1.png +0 -0
- package/assets/map/W3N10.png +0 -0
- package/assets/map/W3N2.png +0 -0
- package/assets/map/W3N3.png +0 -0
- package/assets/map/W3N4.png +0 -0
- package/assets/map/W3N5.png +0 -0
- package/assets/map/W3N6.png +0 -0
- package/assets/map/W3N7.png +0 -0
- package/assets/map/W3N8.png +0 -0
- package/assets/map/W3N9.png +0 -0
- package/assets/map/W4N0.png +0 -0
- package/assets/map/W4N1.png +0 -0
- package/assets/map/W4N10.png +0 -0
- package/assets/map/W4N2.png +0 -0
- package/assets/map/W4N3.png +0 -0
- package/assets/map/W4N4.png +0 -0
- package/assets/map/W4N5.png +0 -0
- package/assets/map/W4N6.png +0 -0
- package/assets/map/W4N7.png +0 -0
- package/assets/map/W4N8.png +0 -0
- package/assets/map/W4N9.png +0 -0
- package/assets/map/W5N0.png +0 -0
- package/assets/map/W5N1.png +0 -0
- package/assets/map/W5N10.png +0 -0
- package/assets/map/W5N2.png +0 -0
- package/assets/map/W5N3.png +0 -0
- package/assets/map/W5N4.png +0 -0
- package/assets/map/W5N5.png +0 -0
- package/assets/map/W5N6.png +0 -0
- package/assets/map/W5N7.png +0 -0
- package/assets/map/W5N8.png +0 -0
- package/assets/map/W5N9.png +0 -0
- package/assets/map/W6N0.png +0 -0
- package/assets/map/W6N1.png +0 -0
- package/assets/map/W6N10.png +0 -0
- package/assets/map/W6N2.png +0 -0
- package/assets/map/W6N3.png +0 -0
- package/assets/map/W6N4.png +0 -0
- package/assets/map/W6N5.png +0 -0
- package/assets/map/W6N6.png +0 -0
- package/assets/map/W6N7.png +0 -0
- package/assets/map/W6N8.png +0 -0
- package/assets/map/W6N9.png +0 -0
- package/assets/map/W7N0.png +0 -0
- package/assets/map/W7N1.png +0 -0
- package/assets/map/W7N10.png +0 -0
- package/assets/map/W7N2.png +0 -0
- package/assets/map/W7N3.png +0 -0
- package/assets/map/W7N4.png +0 -0
- package/assets/map/W7N5.png +0 -0
- package/assets/map/W7N6.png +0 -0
- package/assets/map/W7N7.png +0 -0
- package/assets/map/W7N8.png +0 -0
- package/assets/map/W7N9.png +0 -0
- package/assets/map/W8N0.png +0 -0
- package/assets/map/W8N1.png +0 -0
- package/assets/map/W8N10.png +0 -0
- package/assets/map/W8N2.png +0 -0
- package/assets/map/W8N3.png +0 -0
- package/assets/map/W8N4.png +0 -0
- package/assets/map/W8N5.png +0 -0
- package/assets/map/W8N6.png +0 -0
- package/assets/map/W8N7.png +0 -0
- package/assets/map/W8N8.png +0 -0
- package/assets/map/W8N9.png +0 -0
- package/assets/map/W9N0.png +0 -0
- package/assets/map/W9N1.png +0 -0
- package/assets/map/W9N10.png +0 -0
- package/assets/map/W9N2.png +0 -0
- package/assets/map/W9N3.png +0 -0
- package/assets/map/W9N4.png +0 -0
- package/assets/map/W9N5.png +0 -0
- package/assets/map/W9N6.png +0 -0
- package/assets/map/W9N7.png +0 -0
- package/assets/map/W9N8.png +0 -0
- package/assets/map/W9N9.png +0 -0
- package/assets/map/zoom2/W11N11.png +0 -0
- package/assets/map/zoom2/W11N3.png +0 -0
- package/assets/map/zoom2/W11N7.png +0 -0
- package/assets/map/zoom2/W3N11.png +0 -0
- package/assets/map/zoom2/W3N3.png +0 -0
- package/assets/map/zoom2/W3N7.png +0 -0
- package/assets/map/zoom2/W7N11.png +0 -0
- package/assets/map/zoom2/W7N3.png +0 -0
- package/assets/map/zoom2/W7N7.png +0 -0
- package/assets/season1/floor.png +0 -0
- package/assets/season1/score-container.svg +0 -28
- package/assets/season1/season-collector-body.svg +0 -1
- package/assets/season1/season-collector-core.svg +0 -1
- package/assets/season1/walls.png +0 -0
- package/assets/season2/symbol_aleph-container.svg +0 -24
- package/assets/season2/symbol_aleph-decoder.svg +0 -1
- package/assets/season2/symbol_ayin-container.svg +0 -21
- package/assets/season2/symbol_ayin-decoder.svg +0 -1
- package/assets/season2/symbol_beth-container.svg +0 -20
- package/assets/season2/symbol_beth-decoder.svg +0 -1
- package/assets/season2/symbol_daleth-container.svg +0 -18
- package/assets/season2/symbol_daleth-decoder.svg +0 -1
- package/assets/season2/symbol_gimmel-container.svg +0 -17
- package/assets/season2/symbol_gimmel-decoder.svg +0 -1
- package/assets/season2/symbol_he-container.svg +0 -24
- package/assets/season2/symbol_he-decoder.svg +0 -1
- package/assets/season2/symbol_heth-container.svg +0 -23
- package/assets/season2/symbol_heth-decoder.svg +0 -1
- package/assets/season2/symbol_kaph-container.svg +0 -20
- package/assets/season2/symbol_kaph-decoder.svg +0 -1
- package/assets/season2/symbol_lamedh-container.svg +0 -19
- package/assets/season2/symbol_lamedh-decoder.svg +0 -1
- package/assets/season2/symbol_mem-container.svg +0 -26
- package/assets/season2/symbol_mem-decoder.svg +0 -1
- package/assets/season2/symbol_nun-container.svg +0 -20
- package/assets/season2/symbol_nun-decoder.svg +0 -1
- package/assets/season2/symbol_pe-container.svg +0 -20
- package/assets/season2/symbol_pe-decoder.svg +0 -1
- package/assets/season2/symbol_qoph-container.svg +0 -21
- package/assets/season2/symbol_qoph-decoder.svg +0 -1
- package/assets/season2/symbol_res-container.svg +0 -19
- package/assets/season2/symbol_res-decoder.svg +0 -1
- package/assets/season2/symbol_samekh-container.svg +0 -27
- package/assets/season2/symbol_samekh-decoder.svg +0 -1
- package/assets/season2/symbol_sim-container.svg +0 -20
- package/assets/season2/symbol_sim-decoder.svg +0 -1
- package/assets/season2/symbol_taw-container.svg +0 -21
- package/assets/season2/symbol_taw-decoder.svg +0 -1
- package/assets/season2/symbol_teth-container.svg +0 -22
- package/assets/season2/symbol_teth-decoder.svg +0 -1
- package/assets/season2/symbol_tsade-container.svg +0 -22
- package/assets/season2/symbol_tsade-decoder.svg +0 -1
- package/assets/season2/symbol_waw-container.svg +0 -21
- package/assets/season2/symbol_waw-decoder.svg +0 -1
- package/assets/season2/symbol_yodh-container.svg +0 -25
- package/assets/season2/symbol_yodh-decoder.svg +0 -1
- package/assets/season2/symbol_zayin-container.svg +0 -21
- package/assets/season2/symbol_zayin-decoder.svg +0 -1
- package/assets-stock/gift.png +0 -0
- package/assets-stock/map/W0N0.png +0 -0
- package/assets-stock/map/W0N1.png +0 -0
- package/assets-stock/map/W0N10.png +0 -0
- package/assets-stock/map/W0N2.png +0 -0
- package/assets-stock/map/W0N3.png +0 -0
- package/assets-stock/map/W0N4.png +0 -0
- package/assets-stock/map/W0N5.png +0 -0
- package/assets-stock/map/W0N6.png +0 -0
- package/assets-stock/map/W0N7.png +0 -0
- package/assets-stock/map/W0N8.png +0 -0
- package/assets-stock/map/W0N9.png +0 -0
- package/assets-stock/map/W10N0.png +0 -0
- package/assets-stock/map/W10N1.png +0 -0
- package/assets-stock/map/W10N10.png +0 -0
- package/assets-stock/map/W10N2.png +0 -0
- package/assets-stock/map/W10N3.png +0 -0
- package/assets-stock/map/W10N4.png +0 -0
- package/assets-stock/map/W10N5.png +0 -0
- package/assets-stock/map/W10N6.png +0 -0
- package/assets-stock/map/W10N7.png +0 -0
- package/assets-stock/map/W10N8.png +0 -0
- package/assets-stock/map/W10N9.png +0 -0
- package/assets-stock/map/W1N0.png +0 -0
- package/assets-stock/map/W1N1.png +0 -0
- package/assets-stock/map/W1N10.png +0 -0
- package/assets-stock/map/W1N2.png +0 -0
- package/assets-stock/map/W1N3.png +0 -0
- package/assets-stock/map/W1N4.png +0 -0
- package/assets-stock/map/W1N5.png +0 -0
- package/assets-stock/map/W1N6.png +0 -0
- package/assets-stock/map/W1N7.png +0 -0
- package/assets-stock/map/W1N8.png +0 -0
- package/assets-stock/map/W1N9.png +0 -0
- package/assets-stock/map/W2N0.png +0 -0
- package/assets-stock/map/W2N1.png +0 -0
- package/assets-stock/map/W2N10.png +0 -0
- package/assets-stock/map/W2N2.png +0 -0
- package/assets-stock/map/W2N3.png +0 -0
- package/assets-stock/map/W2N4.png +0 -0
- package/assets-stock/map/W2N5.png +0 -0
- package/assets-stock/map/W2N6.png +0 -0
- package/assets-stock/map/W2N7.png +0 -0
- package/assets-stock/map/W2N8.png +0 -0
- package/assets-stock/map/W2N9.png +0 -0
- package/assets-stock/map/W3N0.png +0 -0
- package/assets-stock/map/W3N1.png +0 -0
- package/assets-stock/map/W3N10.png +0 -0
- package/assets-stock/map/W3N2.png +0 -0
- package/assets-stock/map/W3N3.png +0 -0
- package/assets-stock/map/W3N4.png +0 -0
- package/assets-stock/map/W3N5.png +0 -0
- package/assets-stock/map/W3N6.png +0 -0
- package/assets-stock/map/W3N7.png +0 -0
- package/assets-stock/map/W3N8.png +0 -0
- package/assets-stock/map/W3N9.png +0 -0
- package/assets-stock/map/W4N0.png +0 -0
- package/assets-stock/map/W4N1.png +0 -0
- package/assets-stock/map/W4N10.png +0 -0
- package/assets-stock/map/W4N2.png +0 -0
- package/assets-stock/map/W4N3.png +0 -0
- package/assets-stock/map/W4N4.png +0 -0
- package/assets-stock/map/W4N5.png +0 -0
- package/assets-stock/map/W4N6.png +0 -0
- package/assets-stock/map/W4N7.png +0 -0
- package/assets-stock/map/W4N8.png +0 -0
- package/assets-stock/map/W4N9.png +0 -0
- package/assets-stock/map/W5N0.png +0 -0
- package/assets-stock/map/W5N1.png +0 -0
- package/assets-stock/map/W5N10.png +0 -0
- package/assets-stock/map/W5N2.png +0 -0
- package/assets-stock/map/W5N3.png +0 -0
- package/assets-stock/map/W5N4.png +0 -0
- package/assets-stock/map/W5N5.png +0 -0
- package/assets-stock/map/W5N6.png +0 -0
- package/assets-stock/map/W5N7.png +0 -0
- package/assets-stock/map/W5N8.png +0 -0
- package/assets-stock/map/W5N9.png +0 -0
- package/assets-stock/map/W6N0.png +0 -0
- package/assets-stock/map/W6N1.png +0 -0
- package/assets-stock/map/W6N10.png +0 -0
- package/assets-stock/map/W6N2.png +0 -0
- package/assets-stock/map/W6N3.png +0 -0
- package/assets-stock/map/W6N4.png +0 -0
- package/assets-stock/map/W6N5.png +0 -0
- package/assets-stock/map/W6N6.png +0 -0
- package/assets-stock/map/W6N7.png +0 -0
- package/assets-stock/map/W6N8.png +0 -0
- package/assets-stock/map/W6N9.png +0 -0
- package/assets-stock/map/W7N0.png +0 -0
- package/assets-stock/map/W7N1.png +0 -0
- package/assets-stock/map/W7N10.png +0 -0
- package/assets-stock/map/W7N2.png +0 -0
- package/assets-stock/map/W7N3.png +0 -0
- package/assets-stock/map/W7N4.png +0 -0
- package/assets-stock/map/W7N5.png +0 -0
- package/assets-stock/map/W7N6.png +0 -0
- package/assets-stock/map/W7N7.png +0 -0
- package/assets-stock/map/W7N8.png +0 -0
- package/assets-stock/map/W7N9.png +0 -0
- package/assets-stock/map/W8N0.png +0 -0
- package/assets-stock/map/W8N1.png +0 -0
- package/assets-stock/map/W8N10.png +0 -0
- package/assets-stock/map/W8N2.png +0 -0
- package/assets-stock/map/W8N3.png +0 -0
- package/assets-stock/map/W8N4.png +0 -0
- package/assets-stock/map/W8N5.png +0 -0
- package/assets-stock/map/W8N6.png +0 -0
- package/assets-stock/map/W8N7.png +0 -0
- package/assets-stock/map/W8N8.png +0 -0
- package/assets-stock/map/W8N9.png +0 -0
- package/assets-stock/map/W9N0.png +0 -0
- package/assets-stock/map/W9N1.png +0 -0
- package/assets-stock/map/W9N10.png +0 -0
- package/assets-stock/map/W9N2.png +0 -0
- package/assets-stock/map/W9N3.png +0 -0
- package/assets-stock/map/W9N4.png +0 -0
- package/assets-stock/map/W9N5.png +0 -0
- package/assets-stock/map/W9N6.png +0 -0
- package/assets-stock/map/W9N7.png +0 -0
- package/assets-stock/map/W9N8.png +0 -0
- package/assets-stock/map/W9N9.png +0 -0
- package/assets-stock/map/zoom2/W11N11.png +0 -0
- package/assets-stock/map/zoom2/W11N3.png +0 -0
- package/assets-stock/map/zoom2/W11N7.png +0 -0
- package/assets-stock/map/zoom2/W3N11.png +0 -0
- package/assets-stock/map/zoom2/W3N3.png +0 -0
- package/assets-stock/map/zoom2/W3N7.png +0 -0
- package/assets-stock/map/zoom2/W7N11.png +0 -0
- package/assets-stock/map/zoom2/W7N3.png +0 -0
- package/assets-stock/map/zoom2/W7N7.png +0 -0
- package/db.json +0 -1
- package/example-mods/change-constant.js +0 -30
- package/example-mods/cli-method.js +0 -12
- package/example-mods/cronjob.js +0 -14
- package/example-mods/custom-objects/advanced.js +0 -93
- package/example-mods/custom-objects/intent-custom.js +0 -76
- package/example-mods/custom-objects/intent.js +0 -102
- package/example-mods/custom-objects/simple.js +0 -35
- package/example-mods/driver-method.js +0 -17
- package/example-mods/http-endpoint.js +0 -9
- package/example-mods/notifications-mailer/notifications-mailer.js +0 -35
- package/example-mods/player-sandbox.js +0 -15
- package/example-mods/process-object.js +0 -12
- package/example-mods/renderer/draw-parameterized.js +0 -111
- package/example-mods/renderer/draw.js +0 -49
- package/example-mods/renderer/sprite-animated.js +0 -89
- package/example-mods/renderer/sprite-parameterized.js +0 -75
- package/example-mods/renderer/sprite.js +0 -24
- package/example-mods/room-history.js +0 -49
- package/example-mods/tick-duration.js +0 -7
- package/example-mods/welcome-text.js +0 -8
- package/nomods.json +0 -6
- package/season2.json +0 -7
- package/steam_appid.txt +0 -1
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
// Change a global constant
|
|
2
|
-
|
|
3
|
-
module.exports = function (config) {
|
|
4
|
-
if(config.common) {
|
|
5
|
-
config.common.constants.MAX_CREEP_SIZE = 70;
|
|
6
|
-
config.common.constants.SPAWN_ENERGY_START = 1000000;
|
|
7
|
-
config.common.constants.SPAWN_ENERGY_CAPACITY = 1000000;
|
|
8
|
-
config.common.constants.CREEP_SPAWN_TIME = 0;
|
|
9
|
-
}
|
|
10
|
-
if (config.engine) {
|
|
11
|
-
const cl = console.log;
|
|
12
|
-
config.engine.on('playerSandbox', sandbox => {
|
|
13
|
-
// cl(sandbox.get('C'));
|
|
14
|
-
// console.log('emited');
|
|
15
|
-
|
|
16
|
-
/*
|
|
17
|
-
sandbox.run('\
|
|
18
|
-
global.MAX_CREEP_SIZE = 70;\
|
|
19
|
-
global.SPAWN_ENERGY_START = 1000000;\
|
|
20
|
-
global.SPAWN_ENERGY_CAPACITY = 1000000;\
|
|
21
|
-
global.CREEP_SPAWN_TIME = 0;\
|
|
22
|
-
');
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
});
|
|
27
|
-
console.log(`Mod loaded into engine`);
|
|
28
|
-
//console.log(`Engine config found by mod: ${JSON.stringify(config.engine, 0, 2)}`)
|
|
29
|
-
}
|
|
30
|
-
};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
// Add test() method to the CLI sandbox environment
|
|
2
|
-
|
|
3
|
-
module.exports = function(config) {
|
|
4
|
-
if(config.cli) {
|
|
5
|
-
config.cli.on('cliSandbox', function(sandbox) {
|
|
6
|
-
sandbox.test = function() {
|
|
7
|
-
sandbox.print('This is the test!');
|
|
8
|
-
return 'Test result';
|
|
9
|
-
};
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
};
|
package/example-mods/cronjob.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
// Add a new cron job function
|
|
2
|
-
|
|
3
|
-
var cnt = 0;
|
|
4
|
-
module.exports = function(config) {
|
|
5
|
-
if(config.cronjobs) {
|
|
6
|
-
config.cronjobs.myCronJob = [
|
|
7
|
-
5, // interval in seconds
|
|
8
|
-
function myCronJob() {
|
|
9
|
-
cnt++;
|
|
10
|
-
console.log(cnt); // Output goes to backend log
|
|
11
|
-
}
|
|
12
|
-
];
|
|
13
|
-
}
|
|
14
|
-
};
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
// Add an object with type "myobject" visually represented by a green circle
|
|
2
|
-
// It should have a counter incrementing each tick
|
|
3
|
-
|
|
4
|
-
module.exports = function(config) {
|
|
5
|
-
|
|
6
|
-
if(config.backend) {
|
|
7
|
-
// Add side panel
|
|
8
|
-
config.backend.customObjectTypes.myobject = {
|
|
9
|
-
sidepanel: '<div><label>Counter:</label><span>{{object.counter}}</span></div>'
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
// Add visuals, see examples in renderer
|
|
13
|
-
config.backend.renderer.metadata['myobject'] = {
|
|
14
|
-
calculations: [
|
|
15
|
-
{
|
|
16
|
-
id: 'displayCounter',
|
|
17
|
-
props: ['counter'],
|
|
18
|
-
func: {$state: 'counter'}
|
|
19
|
-
}
|
|
20
|
-
],
|
|
21
|
-
processors: [
|
|
22
|
-
{
|
|
23
|
-
type: 'draw',
|
|
24
|
-
once: true,
|
|
25
|
-
payload: {
|
|
26
|
-
drawings: [
|
|
27
|
-
{ method: 'beginFill', params: [0x77FF77] },
|
|
28
|
-
{ method: 'drawCircle', params: [0,0,40] },
|
|
29
|
-
{ method: 'endFill' }
|
|
30
|
-
],
|
|
31
|
-
}
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
type: 'text',
|
|
35
|
-
props: ['counter'],
|
|
36
|
-
payload: {
|
|
37
|
-
text: { $calc: 'displayCounter' },
|
|
38
|
-
style: { align: 'center', fill: '#000000', fontSize: 50, fontWeight: 'bold' },
|
|
39
|
-
anchor: {x: 0.5, y: 0.5}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
]
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
if(config.engine) {
|
|
47
|
-
// Add MyObject prototype to user scripts
|
|
48
|
-
config.engine.registerCustomObjectPrototype('myobject', 'MyObject', {
|
|
49
|
-
properties: {
|
|
50
|
-
counter: object => object.counter
|
|
51
|
-
},
|
|
52
|
-
prototypeExtender(prototype, scope) {
|
|
53
|
-
prototype.getCounter = function() {
|
|
54
|
-
scope.globals.console.log('Current counter is:', this.counter);
|
|
55
|
-
return this.counter + '!';
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
findConstant: 10000
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
// Increment the counter each tick
|
|
62
|
-
config.engine.on('processObject', function(object, roomObjects, roomTerrain, gameTime,
|
|
63
|
-
roomInfo, objectsUpdate, usersUpdate) {
|
|
64
|
-
|
|
65
|
-
if(object.type == 'myobject') {
|
|
66
|
-
objectsUpdate.update(object, {
|
|
67
|
-
counter: object.counter + 1
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/*
|
|
75
|
-
|
|
76
|
-
How to test
|
|
77
|
-
|
|
78
|
-
Add a new object using CLI:
|
|
79
|
-
|
|
80
|
-
storage.db['rooms.objects'].insert({type: 'myobject', room: yourRoomName,
|
|
81
|
-
x: 20, y: 20, counter: 0});
|
|
82
|
-
|
|
83
|
-
Now you will see a green circle at this position in the room.
|
|
84
|
-
This object will have MyObject prototype in your script,
|
|
85
|
-
you can address it this way:
|
|
86
|
-
|
|
87
|
-
var objects = Game.rooms[yourRoomName].find(10000);
|
|
88
|
-
|
|
89
|
-
You will see how its counter grows:
|
|
90
|
-
|
|
91
|
-
console.log(objects[0].counter);
|
|
92
|
-
|
|
93
|
-
*/
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
// Add an object with type "myobject" visually represented by a green circle
|
|
2
|
-
// It should have a command for increment the counter
|
|
3
|
-
|
|
4
|
-
module.exports = function(config) {
|
|
5
|
-
|
|
6
|
-
if(config.backend) {
|
|
7
|
-
// Add visuals
|
|
8
|
-
config.backend.customObjectTypes.myobject = {
|
|
9
|
-
|
|
10
|
-
svg: `<ellipse cx="0" cy="0" rx="40" ry="40" fill="#77ff77"></ellipse>
|
|
11
|
-
<text x="0" y="20" text-anchor="middle" font-size="50"
|
|
12
|
-
fill="#000000" font-weight="bold">{{object.counter}}</text>`,
|
|
13
|
-
|
|
14
|
-
sidepanel: '<div><label>Counter:</label><span>{{object.counter}}</span></div>'
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
if(config.engine) {
|
|
19
|
-
|
|
20
|
-
// Add a new custom intent type description.
|
|
21
|
-
// It is global for all object types
|
|
22
|
-
config.engine.customIntentTypes.incCounter = {
|
|
23
|
-
incValue: 'number'
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
// Add MyObject prototype to user scripts
|
|
27
|
-
config.engine.registerCustomObjectPrototype('myobject', 'MyObject', {
|
|
28
|
-
properties: {
|
|
29
|
-
counter: object => object.counter
|
|
30
|
-
},
|
|
31
|
-
prototypeExtender(prototype, scope) {
|
|
32
|
-
prototype.increment = function(value) {
|
|
33
|
-
scope.intents.set(this.id, 'incCounter', {incValue: value});
|
|
34
|
-
return 0;
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
findConstant: 10000
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
// Add "incCounter" command processing
|
|
41
|
-
config.engine.on('processObjectIntents', function(object, userId, intents, roomObjects,
|
|
42
|
-
roomTerrain, gameTime, roomInfo, objectsUpdate,
|
|
43
|
-
usersUpdate) {
|
|
44
|
-
|
|
45
|
-
if (object.type == 'myobject') {
|
|
46
|
-
if (intents.incCounter) {
|
|
47
|
-
objectsUpdate.update(object, {
|
|
48
|
-
counter: object.counter + intents.incCounter.incValue
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/*
|
|
57
|
-
|
|
58
|
-
How to test
|
|
59
|
-
|
|
60
|
-
Add a new object using CLI:
|
|
61
|
-
|
|
62
|
-
storage.db['rooms.objects'].insert({type: 'myobject', room: yourRoomName,
|
|
63
|
-
x: 20, y: 20, counter: 0});
|
|
64
|
-
|
|
65
|
-
Now you will see a green circle at this position in the room.
|
|
66
|
-
This object will have MyObject prototype in your script,
|
|
67
|
-
you can address it this way:
|
|
68
|
-
|
|
69
|
-
var objects = Game.rooms[yourRoomName].find(10000);
|
|
70
|
-
|
|
71
|
-
Run the command:
|
|
72
|
-
|
|
73
|
-
objects[0].increment(2);
|
|
74
|
-
console.log(objects[0].counter);
|
|
75
|
-
|
|
76
|
-
*/
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
// Add an object with type "myobject" visually represented by a green circle
|
|
2
|
-
// It should be able to run the "move" command
|
|
3
|
-
|
|
4
|
-
module.exports = function(config) {
|
|
5
|
-
|
|
6
|
-
if(config.backend) {
|
|
7
|
-
// Add visuals
|
|
8
|
-
config.backend.customObjectTypes.myobject = {
|
|
9
|
-
svg: `<ellipse cx="0" cy="0" rx="40" ry="40" fill="#77ff77"></ellipse>`
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
if(config.engine) {
|
|
14
|
-
// Add MyObject prototype to user scripts
|
|
15
|
-
config.engine.registerCustomObjectPrototype('myobject', 'MyObject', {
|
|
16
|
-
userOwned: true,
|
|
17
|
-
prototypeExtender(prototype, scope) {
|
|
18
|
-
prototype.move = function(direction) {
|
|
19
|
-
scope.intents.set(this.id, 'move', {direction});
|
|
20
|
-
return 0;
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
findConstant: 10000
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
// Add "move" command processing logic
|
|
27
|
-
config.engine.on('processObjectIntents', function(object, userId, intents, roomObjects,
|
|
28
|
-
roomTerrain, gameTime, roomInfo, objectsUpdate,
|
|
29
|
-
usersUpdate) {
|
|
30
|
-
|
|
31
|
-
if(object.type == 'myobject') {
|
|
32
|
-
if(intents.move) {
|
|
33
|
-
var x = object.x, y = object.y;
|
|
34
|
-
switch(intents.move.direction) {
|
|
35
|
-
case 1: {
|
|
36
|
-
y = object.y - 1;
|
|
37
|
-
break;
|
|
38
|
-
}
|
|
39
|
-
case 2: {
|
|
40
|
-
x = object.x + 1;
|
|
41
|
-
y = object.y - 1;
|
|
42
|
-
break;
|
|
43
|
-
}
|
|
44
|
-
case 3: {
|
|
45
|
-
x = object.x + 1;
|
|
46
|
-
break;
|
|
47
|
-
}
|
|
48
|
-
case 4: {
|
|
49
|
-
x = object.x + 1;
|
|
50
|
-
y = object.y + 1;
|
|
51
|
-
break;
|
|
52
|
-
}
|
|
53
|
-
case 5: {
|
|
54
|
-
y = object.y + 1;
|
|
55
|
-
break;
|
|
56
|
-
}
|
|
57
|
-
case 6: {
|
|
58
|
-
x = object.x - 1;
|
|
59
|
-
y = object.y + 1;
|
|
60
|
-
break;
|
|
61
|
-
}
|
|
62
|
-
case 7: {
|
|
63
|
-
x = object.x - 1;
|
|
64
|
-
break;
|
|
65
|
-
}
|
|
66
|
-
case 8: {
|
|
67
|
-
x = object.x - 1;
|
|
68
|
-
y = object.y - 1;
|
|
69
|
-
break;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
objectsUpdate.update(object, {x,y});
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/*
|
|
80
|
-
|
|
81
|
-
How to test
|
|
82
|
-
|
|
83
|
-
Find your user id:
|
|
84
|
-
|
|
85
|
-
storage.db.users.findOne({username: yourUserName})
|
|
86
|
-
|
|
87
|
-
Add a new owned object using CLI:
|
|
88
|
-
|
|
89
|
-
storage.db['rooms.objects'].insert({type: 'myobject', room: yourRoomName,
|
|
90
|
-
x: 20, y: 20, user: yourUserId});
|
|
91
|
-
|
|
92
|
-
Now you will see a green circle at this position in the room.
|
|
93
|
-
This object will have MyObject prototype in your script,
|
|
94
|
-
you can address it this way:
|
|
95
|
-
|
|
96
|
-
var objects = Game.rooms[yourRoomName].find(10000);
|
|
97
|
-
|
|
98
|
-
Now you can move it:
|
|
99
|
-
|
|
100
|
-
objects[0].move(TOP);
|
|
101
|
-
|
|
102
|
-
*/
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
// Add an object with type "myobject" visually represented by a green circle
|
|
2
|
-
|
|
3
|
-
module.exports = function(config) {
|
|
4
|
-
|
|
5
|
-
if(config.backend) {
|
|
6
|
-
// Add visuals
|
|
7
|
-
config.backend.customObjectTypes.myobject = {
|
|
8
|
-
svg: '<ellipse cx="0" cy="0" rx="40" ry="40" fill="#77ff77"></ellipse>'
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
if(config.engine) {
|
|
13
|
-
// Add MyObject prototype to user scripts
|
|
14
|
-
config.engine.registerCustomObjectPrototype('myobject', 'MyObject', {
|
|
15
|
-
findConstant: 10000
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/*
|
|
21
|
-
|
|
22
|
-
How to test
|
|
23
|
-
|
|
24
|
-
Add a new object using CLI:
|
|
25
|
-
|
|
26
|
-
storage.db['rooms.objects'].insert({type: 'myobject', room: yourRoomName,
|
|
27
|
-
x: 20, y: 20});
|
|
28
|
-
|
|
29
|
-
Now you will see a green circle at this position in the room.
|
|
30
|
-
This object will have MyObject prototype in your script,
|
|
31
|
-
you can address it this way:
|
|
32
|
-
|
|
33
|
-
Game.rooms[yourRoomName].find(10000);
|
|
34
|
-
|
|
35
|
-
*/
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
// Change driver.getAllUsers method and exclude particular users from executing
|
|
2
|
-
|
|
3
|
-
var _ = require('lodash');
|
|
4
|
-
|
|
5
|
-
module.exports = function(config) {
|
|
6
|
-
if(config.engine) {
|
|
7
|
-
var oldGetAllUsers = config.engine.driver.getAllUsers;
|
|
8
|
-
config.engine.driver.getAllUsers = function() {
|
|
9
|
-
var promise = oldGetAllUsers.apply(this, Array.prototype.slice.call(arguments));
|
|
10
|
-
|
|
11
|
-
return promise.then(result => {
|
|
12
|
-
_.remove(result, {username: 'user_to_exclude'});
|
|
13
|
-
return result;
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
};
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
module.exports = function(config) {
|
|
2
|
-
|
|
3
|
-
if(config.backend) {
|
|
4
|
-
|
|
5
|
-
var nodemailer = require('nodemailer');
|
|
6
|
-
var transporter = nodemailer.createTransport('smtps://user%40gmail.com:pass@smtp.gmail.com');
|
|
7
|
-
|
|
8
|
-
config.backend.on('sendUserNotifications', function(user, notifications) {
|
|
9
|
-
|
|
10
|
-
if(!user.email) {
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
var mailOptions = {
|
|
15
|
-
from: 'Private Screeps Mailer <user@gmail.com>',
|
|
16
|
-
to: user.email,
|
|
17
|
-
subject: 'Screeps private server notifications'
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
mailOptions.text = notifications.length + ' notifications received:\n\n';
|
|
21
|
-
|
|
22
|
-
notifications.forEach(notification => {
|
|
23
|
-
mailOptions.text += `${notification.message}\n[${notification.type}] (${notification.count})\n\n`;
|
|
24
|
-
})
|
|
25
|
-
|
|
26
|
-
transporter.sendMail(mailOptions, function (error, info) {
|
|
27
|
-
if (error) {
|
|
28
|
-
return console.error(error);
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
// Add a new function to player sandbox space
|
|
2
|
-
// Try to run `test()` using your in-game console
|
|
3
|
-
|
|
4
|
-
module.exports = function(config) {
|
|
5
|
-
if(config.engine) {
|
|
6
|
-
config.engine.on('playerSandbox', function(sandbox, userId) {
|
|
7
|
-
sandbox.set('myInValue', 123);
|
|
8
|
-
sandbox.run(`function test() {
|
|
9
|
-
console.log('Current game tick is:', Game.time, 'myInValue:', global.myInValue);
|
|
10
|
-
global.myOutValue = 999;
|
|
11
|
-
}`);
|
|
12
|
-
console.log(`User ${userId} global.myOutValue=${sandbox.get('myOutValue')}`);
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
// Disable Source Keepers spawning
|
|
2
|
-
|
|
3
|
-
module.exports = function(config) {
|
|
4
|
-
if(config.engine) {
|
|
5
|
-
config.engine.on('processObject', function(object, roomObjects, roomTerrain, gameTime,
|
|
6
|
-
roomInfo, objectsUpdate, usersUpdate) {
|
|
7
|
-
if(object.type == 'keeperLair') {
|
|
8
|
-
object._skip = true; // This object will not be processed
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
};
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
// Add simple graphic for custom object type "test"
|
|
2
|
-
// Use this CLI command to add it in the game:
|
|
3
|
-
// storage.db['rooms.objects'].insert({type: "test", room: "W3N3", x: 20, y: 20, score: 0, scoreMax: 100});
|
|
4
|
-
// Then try to set the score property:
|
|
5
|
-
// storage.db['rooms.objects'].update({type: 'test'}, {$set: {score: 30}});
|
|
6
|
-
//
|
|
7
|
-
// See renderer documentation: https://github.com/screeps/renderer
|
|
8
|
-
|
|
9
|
-
module.exports = function (config) {
|
|
10
|
-
if (config.backend) {
|
|
11
|
-
config.backend.renderer.metadata['test'] = {
|
|
12
|
-
calculations: [
|
|
13
|
-
{
|
|
14
|
-
// it is addressed from the second draw processor below
|
|
15
|
-
id: 'scoreDrawRadius',
|
|
16
|
-
//recalculate when `score` or `scoreMax` are changed
|
|
17
|
-
props: ['score','scoreMax'],
|
|
18
|
-
// 40 * state / stateMax
|
|
19
|
-
func: {
|
|
20
|
-
$mul: [
|
|
21
|
-
40,
|
|
22
|
-
{$div: [
|
|
23
|
-
{$state: 'score'},
|
|
24
|
-
{$state: 'scoreMax'}
|
|
25
|
-
]}
|
|
26
|
-
]
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
],
|
|
30
|
-
processors: [
|
|
31
|
-
|
|
32
|
-
// base rectangle
|
|
33
|
-
{
|
|
34
|
-
type: 'draw',
|
|
35
|
-
once: true,
|
|
36
|
-
payload: {
|
|
37
|
-
drawings: [
|
|
38
|
-
// Each element here describes a PIXI.Graphics method
|
|
39
|
-
// See http://pixijs.download/dev/docs/PIXI.Graphics.html
|
|
40
|
-
{
|
|
41
|
-
method: 'lineStyle',
|
|
42
|
-
params: [
|
|
43
|
-
5,
|
|
44
|
-
0xFFAAFF
|
|
45
|
-
],
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
method: 'beginFill',
|
|
49
|
-
params: [0xFF00FF]
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
method: 'drawRoundedRect',
|
|
53
|
-
params: [
|
|
54
|
-
-40,
|
|
55
|
-
-40,
|
|
56
|
-
80,
|
|
57
|
-
80,
|
|
58
|
-
10,
|
|
59
|
-
],
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
method: 'endFill'
|
|
63
|
-
},
|
|
64
|
-
],
|
|
65
|
-
},
|
|
66
|
-
},
|
|
67
|
-
|
|
68
|
-
// a circle with radius depending on the `score` property
|
|
69
|
-
{
|
|
70
|
-
type: 'draw',
|
|
71
|
-
props: ['score','scoreMax'], // recreate this drawing when `score` or `scoreMax` are changed
|
|
72
|
-
when: {$gt: [{$state: 'score'}, 0]}, // only display if `score` property is greater than 0
|
|
73
|
-
payload: {
|
|
74
|
-
drawings: [
|
|
75
|
-
{
|
|
76
|
-
method: 'beginFill',
|
|
77
|
-
params: [0xFFFFFF]
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
method: 'drawCircle',
|
|
81
|
-
params: [
|
|
82
|
-
0,
|
|
83
|
-
0,
|
|
84
|
-
{$calc: 'scoreDrawRadius'}
|
|
85
|
-
],
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
method: 'endFill'
|
|
89
|
-
},
|
|
90
|
-
],
|
|
91
|
-
},
|
|
92
|
-
},
|
|
93
|
-
|
|
94
|
-
// add some conditional lighting
|
|
95
|
-
{
|
|
96
|
-
type: 'sprite',
|
|
97
|
-
once: true,
|
|
98
|
-
layer: 'lighting',
|
|
99
|
-
when: {$gt: [{$state: 'score'}, 0]}, // only display if `score` property is greater than 0
|
|
100
|
-
payload: {
|
|
101
|
-
texture: 'glow',
|
|
102
|
-
width: 800,
|
|
103
|
-
height: 800,
|
|
104
|
-
tint: 0xFFFFFF,
|
|
105
|
-
},
|
|
106
|
-
},
|
|
107
|
-
|
|
108
|
-
],
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
// Add simple graphic for custom object type "test"
|
|
2
|
-
// Use this CLI command to add it in the game:
|
|
3
|
-
// storage.db['rooms.objects'].insert({type: "test", room: "W3N3", x: 20, y: 20});
|
|
4
|
-
//
|
|
5
|
-
// See renderer documentation: https://github.com/screeps/renderer
|
|
6
|
-
|
|
7
|
-
module.exports = function (config) {
|
|
8
|
-
if (config.backend) {
|
|
9
|
-
config.backend.renderer.metadata['test'] = {
|
|
10
|
-
processors: [
|
|
11
|
-
{
|
|
12
|
-
type: 'draw',
|
|
13
|
-
once: true,
|
|
14
|
-
payload: {
|
|
15
|
-
drawings: [
|
|
16
|
-
// Each element here describes a PIXI.Graphics method
|
|
17
|
-
// See http://pixijs.download/dev/docs/PIXI.Graphics.html
|
|
18
|
-
{
|
|
19
|
-
method: 'lineStyle',
|
|
20
|
-
params: [
|
|
21
|
-
5,
|
|
22
|
-
0xFFAAFF
|
|
23
|
-
],
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
method: 'beginFill',
|
|
27
|
-
params: [0xFF00FF]
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
method: 'drawRoundedRect',
|
|
31
|
-
params: [
|
|
32
|
-
-40,
|
|
33
|
-
-40,
|
|
34
|
-
80,
|
|
35
|
-
80,
|
|
36
|
-
10,
|
|
37
|
-
],
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
method: 'endFill'
|
|
41
|
-
},
|
|
42
|
-
],
|
|
43
|
-
},
|
|
44
|
-
},
|
|
45
|
-
|
|
46
|
-
],
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|