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.
Files changed (337) hide show
  1. package/package.json +2 -2
  2. package/.screepsrc +0 -39
  3. package/assets/gift.png +0 -0
  4. package/assets/map/W0N0.png +0 -0
  5. package/assets/map/W0N1.png +0 -0
  6. package/assets/map/W0N10.png +0 -0
  7. package/assets/map/W0N2.png +0 -0
  8. package/assets/map/W0N3.png +0 -0
  9. package/assets/map/W0N4.png +0 -0
  10. package/assets/map/W0N5.png +0 -0
  11. package/assets/map/W0N6.png +0 -0
  12. package/assets/map/W0N7.png +0 -0
  13. package/assets/map/W0N8.png +0 -0
  14. package/assets/map/W0N9.png +0 -0
  15. package/assets/map/W10N0.png +0 -0
  16. package/assets/map/W10N1.png +0 -0
  17. package/assets/map/W10N10.png +0 -0
  18. package/assets/map/W10N2.png +0 -0
  19. package/assets/map/W10N3.png +0 -0
  20. package/assets/map/W10N4.png +0 -0
  21. package/assets/map/W10N5.png +0 -0
  22. package/assets/map/W10N6.png +0 -0
  23. package/assets/map/W10N7.png +0 -0
  24. package/assets/map/W10N8.png +0 -0
  25. package/assets/map/W10N9.png +0 -0
  26. package/assets/map/W1N0.png +0 -0
  27. package/assets/map/W1N1.png +0 -0
  28. package/assets/map/W1N10.png +0 -0
  29. package/assets/map/W1N2.png +0 -0
  30. package/assets/map/W1N3.png +0 -0
  31. package/assets/map/W1N4.png +0 -0
  32. package/assets/map/W1N5.png +0 -0
  33. package/assets/map/W1N6.png +0 -0
  34. package/assets/map/W1N7.png +0 -0
  35. package/assets/map/W1N8.png +0 -0
  36. package/assets/map/W1N9.png +0 -0
  37. package/assets/map/W2N0.png +0 -0
  38. package/assets/map/W2N1.png +0 -0
  39. package/assets/map/W2N10.png +0 -0
  40. package/assets/map/W2N2.png +0 -0
  41. package/assets/map/W2N3.png +0 -0
  42. package/assets/map/W2N4.png +0 -0
  43. package/assets/map/W2N5.png +0 -0
  44. package/assets/map/W2N6.png +0 -0
  45. package/assets/map/W2N7.png +0 -0
  46. package/assets/map/W2N8.png +0 -0
  47. package/assets/map/W2N9.png +0 -0
  48. package/assets/map/W3N0.png +0 -0
  49. package/assets/map/W3N1.png +0 -0
  50. package/assets/map/W3N10.png +0 -0
  51. package/assets/map/W3N2.png +0 -0
  52. package/assets/map/W3N3.png +0 -0
  53. package/assets/map/W3N4.png +0 -0
  54. package/assets/map/W3N5.png +0 -0
  55. package/assets/map/W3N6.png +0 -0
  56. package/assets/map/W3N7.png +0 -0
  57. package/assets/map/W3N8.png +0 -0
  58. package/assets/map/W3N9.png +0 -0
  59. package/assets/map/W4N0.png +0 -0
  60. package/assets/map/W4N1.png +0 -0
  61. package/assets/map/W4N10.png +0 -0
  62. package/assets/map/W4N2.png +0 -0
  63. package/assets/map/W4N3.png +0 -0
  64. package/assets/map/W4N4.png +0 -0
  65. package/assets/map/W4N5.png +0 -0
  66. package/assets/map/W4N6.png +0 -0
  67. package/assets/map/W4N7.png +0 -0
  68. package/assets/map/W4N8.png +0 -0
  69. package/assets/map/W4N9.png +0 -0
  70. package/assets/map/W5N0.png +0 -0
  71. package/assets/map/W5N1.png +0 -0
  72. package/assets/map/W5N10.png +0 -0
  73. package/assets/map/W5N2.png +0 -0
  74. package/assets/map/W5N3.png +0 -0
  75. package/assets/map/W5N4.png +0 -0
  76. package/assets/map/W5N5.png +0 -0
  77. package/assets/map/W5N6.png +0 -0
  78. package/assets/map/W5N7.png +0 -0
  79. package/assets/map/W5N8.png +0 -0
  80. package/assets/map/W5N9.png +0 -0
  81. package/assets/map/W6N0.png +0 -0
  82. package/assets/map/W6N1.png +0 -0
  83. package/assets/map/W6N10.png +0 -0
  84. package/assets/map/W6N2.png +0 -0
  85. package/assets/map/W6N3.png +0 -0
  86. package/assets/map/W6N4.png +0 -0
  87. package/assets/map/W6N5.png +0 -0
  88. package/assets/map/W6N6.png +0 -0
  89. package/assets/map/W6N7.png +0 -0
  90. package/assets/map/W6N8.png +0 -0
  91. package/assets/map/W6N9.png +0 -0
  92. package/assets/map/W7N0.png +0 -0
  93. package/assets/map/W7N1.png +0 -0
  94. package/assets/map/W7N10.png +0 -0
  95. package/assets/map/W7N2.png +0 -0
  96. package/assets/map/W7N3.png +0 -0
  97. package/assets/map/W7N4.png +0 -0
  98. package/assets/map/W7N5.png +0 -0
  99. package/assets/map/W7N6.png +0 -0
  100. package/assets/map/W7N7.png +0 -0
  101. package/assets/map/W7N8.png +0 -0
  102. package/assets/map/W7N9.png +0 -0
  103. package/assets/map/W8N0.png +0 -0
  104. package/assets/map/W8N1.png +0 -0
  105. package/assets/map/W8N10.png +0 -0
  106. package/assets/map/W8N2.png +0 -0
  107. package/assets/map/W8N3.png +0 -0
  108. package/assets/map/W8N4.png +0 -0
  109. package/assets/map/W8N5.png +0 -0
  110. package/assets/map/W8N6.png +0 -0
  111. package/assets/map/W8N7.png +0 -0
  112. package/assets/map/W8N8.png +0 -0
  113. package/assets/map/W8N9.png +0 -0
  114. package/assets/map/W9N0.png +0 -0
  115. package/assets/map/W9N1.png +0 -0
  116. package/assets/map/W9N10.png +0 -0
  117. package/assets/map/W9N2.png +0 -0
  118. package/assets/map/W9N3.png +0 -0
  119. package/assets/map/W9N4.png +0 -0
  120. package/assets/map/W9N5.png +0 -0
  121. package/assets/map/W9N6.png +0 -0
  122. package/assets/map/W9N7.png +0 -0
  123. package/assets/map/W9N8.png +0 -0
  124. package/assets/map/W9N9.png +0 -0
  125. package/assets/map/zoom2/W11N11.png +0 -0
  126. package/assets/map/zoom2/W11N3.png +0 -0
  127. package/assets/map/zoom2/W11N7.png +0 -0
  128. package/assets/map/zoom2/W3N11.png +0 -0
  129. package/assets/map/zoom2/W3N3.png +0 -0
  130. package/assets/map/zoom2/W3N7.png +0 -0
  131. package/assets/map/zoom2/W7N11.png +0 -0
  132. package/assets/map/zoom2/W7N3.png +0 -0
  133. package/assets/map/zoom2/W7N7.png +0 -0
  134. package/assets/season1/floor.png +0 -0
  135. package/assets/season1/score-container.svg +0 -28
  136. package/assets/season1/season-collector-body.svg +0 -1
  137. package/assets/season1/season-collector-core.svg +0 -1
  138. package/assets/season1/walls.png +0 -0
  139. package/assets/season2/symbol_aleph-container.svg +0 -24
  140. package/assets/season2/symbol_aleph-decoder.svg +0 -1
  141. package/assets/season2/symbol_ayin-container.svg +0 -21
  142. package/assets/season2/symbol_ayin-decoder.svg +0 -1
  143. package/assets/season2/symbol_beth-container.svg +0 -20
  144. package/assets/season2/symbol_beth-decoder.svg +0 -1
  145. package/assets/season2/symbol_daleth-container.svg +0 -18
  146. package/assets/season2/symbol_daleth-decoder.svg +0 -1
  147. package/assets/season2/symbol_gimmel-container.svg +0 -17
  148. package/assets/season2/symbol_gimmel-decoder.svg +0 -1
  149. package/assets/season2/symbol_he-container.svg +0 -24
  150. package/assets/season2/symbol_he-decoder.svg +0 -1
  151. package/assets/season2/symbol_heth-container.svg +0 -23
  152. package/assets/season2/symbol_heth-decoder.svg +0 -1
  153. package/assets/season2/symbol_kaph-container.svg +0 -20
  154. package/assets/season2/symbol_kaph-decoder.svg +0 -1
  155. package/assets/season2/symbol_lamedh-container.svg +0 -19
  156. package/assets/season2/symbol_lamedh-decoder.svg +0 -1
  157. package/assets/season2/symbol_mem-container.svg +0 -26
  158. package/assets/season2/symbol_mem-decoder.svg +0 -1
  159. package/assets/season2/symbol_nun-container.svg +0 -20
  160. package/assets/season2/symbol_nun-decoder.svg +0 -1
  161. package/assets/season2/symbol_pe-container.svg +0 -20
  162. package/assets/season2/symbol_pe-decoder.svg +0 -1
  163. package/assets/season2/symbol_qoph-container.svg +0 -21
  164. package/assets/season2/symbol_qoph-decoder.svg +0 -1
  165. package/assets/season2/symbol_res-container.svg +0 -19
  166. package/assets/season2/symbol_res-decoder.svg +0 -1
  167. package/assets/season2/symbol_samekh-container.svg +0 -27
  168. package/assets/season2/symbol_samekh-decoder.svg +0 -1
  169. package/assets/season2/symbol_sim-container.svg +0 -20
  170. package/assets/season2/symbol_sim-decoder.svg +0 -1
  171. package/assets/season2/symbol_taw-container.svg +0 -21
  172. package/assets/season2/symbol_taw-decoder.svg +0 -1
  173. package/assets/season2/symbol_teth-container.svg +0 -22
  174. package/assets/season2/symbol_teth-decoder.svg +0 -1
  175. package/assets/season2/symbol_tsade-container.svg +0 -22
  176. package/assets/season2/symbol_tsade-decoder.svg +0 -1
  177. package/assets/season2/symbol_waw-container.svg +0 -21
  178. package/assets/season2/symbol_waw-decoder.svg +0 -1
  179. package/assets/season2/symbol_yodh-container.svg +0 -25
  180. package/assets/season2/symbol_yodh-decoder.svg +0 -1
  181. package/assets/season2/symbol_zayin-container.svg +0 -21
  182. package/assets/season2/symbol_zayin-decoder.svg +0 -1
  183. package/assets-stock/gift.png +0 -0
  184. package/assets-stock/map/W0N0.png +0 -0
  185. package/assets-stock/map/W0N1.png +0 -0
  186. package/assets-stock/map/W0N10.png +0 -0
  187. package/assets-stock/map/W0N2.png +0 -0
  188. package/assets-stock/map/W0N3.png +0 -0
  189. package/assets-stock/map/W0N4.png +0 -0
  190. package/assets-stock/map/W0N5.png +0 -0
  191. package/assets-stock/map/W0N6.png +0 -0
  192. package/assets-stock/map/W0N7.png +0 -0
  193. package/assets-stock/map/W0N8.png +0 -0
  194. package/assets-stock/map/W0N9.png +0 -0
  195. package/assets-stock/map/W10N0.png +0 -0
  196. package/assets-stock/map/W10N1.png +0 -0
  197. package/assets-stock/map/W10N10.png +0 -0
  198. package/assets-stock/map/W10N2.png +0 -0
  199. package/assets-stock/map/W10N3.png +0 -0
  200. package/assets-stock/map/W10N4.png +0 -0
  201. package/assets-stock/map/W10N5.png +0 -0
  202. package/assets-stock/map/W10N6.png +0 -0
  203. package/assets-stock/map/W10N7.png +0 -0
  204. package/assets-stock/map/W10N8.png +0 -0
  205. package/assets-stock/map/W10N9.png +0 -0
  206. package/assets-stock/map/W1N0.png +0 -0
  207. package/assets-stock/map/W1N1.png +0 -0
  208. package/assets-stock/map/W1N10.png +0 -0
  209. package/assets-stock/map/W1N2.png +0 -0
  210. package/assets-stock/map/W1N3.png +0 -0
  211. package/assets-stock/map/W1N4.png +0 -0
  212. package/assets-stock/map/W1N5.png +0 -0
  213. package/assets-stock/map/W1N6.png +0 -0
  214. package/assets-stock/map/W1N7.png +0 -0
  215. package/assets-stock/map/W1N8.png +0 -0
  216. package/assets-stock/map/W1N9.png +0 -0
  217. package/assets-stock/map/W2N0.png +0 -0
  218. package/assets-stock/map/W2N1.png +0 -0
  219. package/assets-stock/map/W2N10.png +0 -0
  220. package/assets-stock/map/W2N2.png +0 -0
  221. package/assets-stock/map/W2N3.png +0 -0
  222. package/assets-stock/map/W2N4.png +0 -0
  223. package/assets-stock/map/W2N5.png +0 -0
  224. package/assets-stock/map/W2N6.png +0 -0
  225. package/assets-stock/map/W2N7.png +0 -0
  226. package/assets-stock/map/W2N8.png +0 -0
  227. package/assets-stock/map/W2N9.png +0 -0
  228. package/assets-stock/map/W3N0.png +0 -0
  229. package/assets-stock/map/W3N1.png +0 -0
  230. package/assets-stock/map/W3N10.png +0 -0
  231. package/assets-stock/map/W3N2.png +0 -0
  232. package/assets-stock/map/W3N3.png +0 -0
  233. package/assets-stock/map/W3N4.png +0 -0
  234. package/assets-stock/map/W3N5.png +0 -0
  235. package/assets-stock/map/W3N6.png +0 -0
  236. package/assets-stock/map/W3N7.png +0 -0
  237. package/assets-stock/map/W3N8.png +0 -0
  238. package/assets-stock/map/W3N9.png +0 -0
  239. package/assets-stock/map/W4N0.png +0 -0
  240. package/assets-stock/map/W4N1.png +0 -0
  241. package/assets-stock/map/W4N10.png +0 -0
  242. package/assets-stock/map/W4N2.png +0 -0
  243. package/assets-stock/map/W4N3.png +0 -0
  244. package/assets-stock/map/W4N4.png +0 -0
  245. package/assets-stock/map/W4N5.png +0 -0
  246. package/assets-stock/map/W4N6.png +0 -0
  247. package/assets-stock/map/W4N7.png +0 -0
  248. package/assets-stock/map/W4N8.png +0 -0
  249. package/assets-stock/map/W4N9.png +0 -0
  250. package/assets-stock/map/W5N0.png +0 -0
  251. package/assets-stock/map/W5N1.png +0 -0
  252. package/assets-stock/map/W5N10.png +0 -0
  253. package/assets-stock/map/W5N2.png +0 -0
  254. package/assets-stock/map/W5N3.png +0 -0
  255. package/assets-stock/map/W5N4.png +0 -0
  256. package/assets-stock/map/W5N5.png +0 -0
  257. package/assets-stock/map/W5N6.png +0 -0
  258. package/assets-stock/map/W5N7.png +0 -0
  259. package/assets-stock/map/W5N8.png +0 -0
  260. package/assets-stock/map/W5N9.png +0 -0
  261. package/assets-stock/map/W6N0.png +0 -0
  262. package/assets-stock/map/W6N1.png +0 -0
  263. package/assets-stock/map/W6N10.png +0 -0
  264. package/assets-stock/map/W6N2.png +0 -0
  265. package/assets-stock/map/W6N3.png +0 -0
  266. package/assets-stock/map/W6N4.png +0 -0
  267. package/assets-stock/map/W6N5.png +0 -0
  268. package/assets-stock/map/W6N6.png +0 -0
  269. package/assets-stock/map/W6N7.png +0 -0
  270. package/assets-stock/map/W6N8.png +0 -0
  271. package/assets-stock/map/W6N9.png +0 -0
  272. package/assets-stock/map/W7N0.png +0 -0
  273. package/assets-stock/map/W7N1.png +0 -0
  274. package/assets-stock/map/W7N10.png +0 -0
  275. package/assets-stock/map/W7N2.png +0 -0
  276. package/assets-stock/map/W7N3.png +0 -0
  277. package/assets-stock/map/W7N4.png +0 -0
  278. package/assets-stock/map/W7N5.png +0 -0
  279. package/assets-stock/map/W7N6.png +0 -0
  280. package/assets-stock/map/W7N7.png +0 -0
  281. package/assets-stock/map/W7N8.png +0 -0
  282. package/assets-stock/map/W7N9.png +0 -0
  283. package/assets-stock/map/W8N0.png +0 -0
  284. package/assets-stock/map/W8N1.png +0 -0
  285. package/assets-stock/map/W8N10.png +0 -0
  286. package/assets-stock/map/W8N2.png +0 -0
  287. package/assets-stock/map/W8N3.png +0 -0
  288. package/assets-stock/map/W8N4.png +0 -0
  289. package/assets-stock/map/W8N5.png +0 -0
  290. package/assets-stock/map/W8N6.png +0 -0
  291. package/assets-stock/map/W8N7.png +0 -0
  292. package/assets-stock/map/W8N8.png +0 -0
  293. package/assets-stock/map/W8N9.png +0 -0
  294. package/assets-stock/map/W9N0.png +0 -0
  295. package/assets-stock/map/W9N1.png +0 -0
  296. package/assets-stock/map/W9N10.png +0 -0
  297. package/assets-stock/map/W9N2.png +0 -0
  298. package/assets-stock/map/W9N3.png +0 -0
  299. package/assets-stock/map/W9N4.png +0 -0
  300. package/assets-stock/map/W9N5.png +0 -0
  301. package/assets-stock/map/W9N6.png +0 -0
  302. package/assets-stock/map/W9N7.png +0 -0
  303. package/assets-stock/map/W9N8.png +0 -0
  304. package/assets-stock/map/W9N9.png +0 -0
  305. package/assets-stock/map/zoom2/W11N11.png +0 -0
  306. package/assets-stock/map/zoom2/W11N3.png +0 -0
  307. package/assets-stock/map/zoom2/W11N7.png +0 -0
  308. package/assets-stock/map/zoom2/W3N11.png +0 -0
  309. package/assets-stock/map/zoom2/W3N3.png +0 -0
  310. package/assets-stock/map/zoom2/W3N7.png +0 -0
  311. package/assets-stock/map/zoom2/W7N11.png +0 -0
  312. package/assets-stock/map/zoom2/W7N3.png +0 -0
  313. package/assets-stock/map/zoom2/W7N7.png +0 -0
  314. package/db.json +0 -1
  315. package/example-mods/change-constant.js +0 -30
  316. package/example-mods/cli-method.js +0 -12
  317. package/example-mods/cronjob.js +0 -14
  318. package/example-mods/custom-objects/advanced.js +0 -93
  319. package/example-mods/custom-objects/intent-custom.js +0 -76
  320. package/example-mods/custom-objects/intent.js +0 -102
  321. package/example-mods/custom-objects/simple.js +0 -35
  322. package/example-mods/driver-method.js +0 -17
  323. package/example-mods/http-endpoint.js +0 -9
  324. package/example-mods/notifications-mailer/notifications-mailer.js +0 -35
  325. package/example-mods/player-sandbox.js +0 -15
  326. package/example-mods/process-object.js +0 -12
  327. package/example-mods/renderer/draw-parameterized.js +0 -111
  328. package/example-mods/renderer/draw.js +0 -49
  329. package/example-mods/renderer/sprite-animated.js +0 -89
  330. package/example-mods/renderer/sprite-parameterized.js +0 -75
  331. package/example-mods/renderer/sprite.js +0 -24
  332. package/example-mods/room-history.js +0 -49
  333. package/example-mods/tick-duration.js +0 -7
  334. package/example-mods/welcome-text.js +0 -8
  335. package/nomods.json +0 -6
  336. package/season2.json +0 -7
  337. 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
- };
@@ -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,9 +0,0 @@
1
- // Add an endpoint /api/test to the HTTP server
2
-
3
- module.exports = function(config) {
4
- if(config.backend) {
5
- config.backend.router.get('/test', (request, response) => {
6
- response.json({ok: 1, foo: request.query.foo});
7
- })
8
- }
9
- };
@@ -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
- }