Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 

684 wiersze
11 KiB

  1. module.exports = {
  2. name: 'cave',
  3. level: [14, 16],
  4. addLevel: 0,
  5. resources: {},
  6. mobs: {
  7. default: {
  8. spells: [{
  9. type: 'melee',
  10. element: 'arcane'
  11. }],
  12. regular: {
  13. drops: {
  14. chance: 35,
  15. rolls: 1
  16. }
  17. }
  18. },
  19. 'crystal snail': {
  20. level: 14,
  21. regular: {
  22. drops: {
  23. rolls: 1,
  24. noRandom: true,
  25. alsoRandom: true,
  26. blueprints: [{
  27. chance: 30,
  28. name: 'Digested Crystal',
  29. quality: 0,
  30. quest: true,
  31. sprite: [1, 1]
  32. }]
  33. }
  34. },
  35. spells: [{
  36. type: 'melee'
  37. }, {
  38. type: 'smokeBomb',
  39. radius: 0,
  40. repeat: 5,
  41. duration: 7,
  42. randomPos: true,
  43. range: 2,
  44. selfCast: 0.2,
  45. statMult: 1,
  46. damage: 0.125,
  47. element: 'arcane',
  48. cdMax: 5,
  49. particles: {
  50. scale: {
  51. start: {
  52. min: 10,
  53. max: 25
  54. },
  55. end: {
  56. min: 10,
  57. max: 0
  58. }
  59. },
  60. opacity: {
  61. start: 0.3,
  62. end: 0
  63. },
  64. lifetime: {
  65. min: 1,
  66. max: 2
  67. },
  68. speed: {
  69. start: 3,
  70. end: 0
  71. },
  72. color: {
  73. start: ['fc66f7', 'a24eff'],
  74. end: ['933159', '393268']
  75. },
  76. chance: 0.125,
  77. randomColor: true,
  78. randomScale: true,
  79. blendMode: 'add',
  80. spawnType: 'rect',
  81. spawnRect: {
  82. x: -10,
  83. y: -10,
  84. w: 20,
  85. h: 20
  86. }
  87. }
  88. }]
  89. },
  90. 'crystal whelk': {
  91. level: 16,
  92. regular: {
  93. drops: {
  94. rolls: 1,
  95. noRandom: true,
  96. alsoRandom: true,
  97. blueprints: [{
  98. chance: 35,
  99. name: 'Digested Crystal',
  100. quality: 0,
  101. quest: true,
  102. sprite: [1, 1]
  103. }]
  104. }
  105. },
  106. spells: [{
  107. type: 'melee'
  108. }, {
  109. type: 'smokeBomb',
  110. radius: 0,
  111. repeat: 5,
  112. duration: 7,
  113. randomPos: true,
  114. range: 2,
  115. selfCast: 0.2,
  116. statMult: 1,
  117. damage: 0.25,
  118. element: 'arcane',
  119. cdMax: 5,
  120. particles: {
  121. scale: {
  122. start: {
  123. min: 4,
  124. max: 14
  125. },
  126. end: {
  127. min: 2,
  128. max: 8
  129. }
  130. },
  131. opacity: {
  132. start: 0.2,
  133. end: 0
  134. },
  135. lifetime: {
  136. min: 1,
  137. max: 2
  138. },
  139. speed: {
  140. start: 2,
  141. end: 0
  142. },
  143. color: {
  144. start: ['ff6942', 'ffeb38'],
  145. end: ['953f36', '9a5a3c']
  146. },
  147. chance: 0.125,
  148. randomColor: true,
  149. randomScale: true,
  150. blendMode: 'add',
  151. spawnType: 'rect',
  152. spawnRect: {
  153. x: -10,
  154. y: -10,
  155. w: 20,
  156. h: 20
  157. }
  158. }
  159. }]
  160. },
  161. radulos: {
  162. level: 18,
  163. spawnCd: 1714,
  164. regular: {
  165. hpMult: 75,
  166. dmgMult: 2,
  167. drops: {
  168. chance: 100,
  169. rolls: 5,
  170. magicFind: [2000, 200]
  171. }
  172. },
  173. rare: {
  174. count: 0
  175. },
  176. mobile: false,
  177. spells: [{
  178. type: 'projectile',
  179. particles: {
  180. scale: {
  181. start: {
  182. min: 6,
  183. max: 18
  184. },
  185. end: {
  186. min: 2,
  187. max: 8
  188. }
  189. },
  190. color: {
  191. start: ['fc66f7', 'a24eff'],
  192. end: ['393268', '933159']
  193. },
  194. chance: 0.65,
  195. randomScale: true,
  196. randomColor: true
  197. }
  198. }, {
  199. type: 'smokeBomb',
  200. radius: 1,
  201. repeat: 4,
  202. duration: 14,
  203. randomPos: true,
  204. range: 6,
  205. selfCast: 0.25,
  206. statMult: 1,
  207. damage: 0.05,
  208. element: 'arcane',
  209. cdMax: 8,
  210. particles: {
  211. scale: {
  212. start: {
  213. min: 6,
  214. max: 18
  215. },
  216. end: {
  217. min: 4,
  218. max: 10
  219. }
  220. },
  221. opacity: {
  222. start: 0.01,
  223. end: 0
  224. },
  225. lifetime: {
  226. min: 1,
  227. max: 3
  228. },
  229. speed: {
  230. start: 2,
  231. end: 0
  232. },
  233. color: {
  234. start: ['ff4252', 'd43346'],
  235. end: ['802343', 'a82841']
  236. },
  237. chance: 0.125,
  238. randomColor: true,
  239. randomScale: true,
  240. blendMode: 'add',
  241. spawnType: 'rect',
  242. spawnRect: {
  243. x: -10,
  244. y: -10,
  245. w: 20,
  246. h: 20
  247. }
  248. }
  249. }, {
  250. type: 'summonConsumableFollower'
  251. }]
  252. },
  253. 'akarei scout': {
  254. level: 20,
  255. faction: 'akarei',
  256. attackable: false,
  257. deathRep: -3
  258. },
  259. biorn: {
  260. level: 20,
  261. attackable: false,
  262. walkDistance: 0,
  263. faction: 'akarei',
  264. deathRep: -3
  265. },
  266. veleif: {
  267. level: 20,
  268. attackable: false,
  269. walkDistance: 0,
  270. faction: 'akarei',
  271. deathRep: -3
  272. },
  273. 'akarei artificer': {
  274. level: 20,
  275. attackable: false,
  276. faction: 'akarei',
  277. deathRep: -6
  278. },
  279. 'thaumaturge yala': {
  280. level: 20,
  281. attackable: false,
  282. walkDistance: 0,
  283. faction: 'akarei',
  284. deathRep: -15,
  285. regular: {
  286. hpMult: 100,
  287. dmgMult: 2
  288. },
  289. rare: {
  290. count: 0
  291. },
  292. properties: {
  293. cpnTrade: {
  294. items: {
  295. min: 2,
  296. max: 5,
  297. minLevel: 14,
  298. maxLevel: 18,
  299. slot: 'neck',
  300. extra: []
  301. },
  302. faction: {
  303. id: 'akarei',
  304. tier: 5
  305. },
  306. markup: {
  307. buy: 0.25,
  308. sell: 20
  309. }
  310. }
  311. }
  312. }
  313. },
  314. objects: {
  315. redwall: {
  316. components: {
  317. cpnBlocker: {
  318. init: function () {
  319. this.obj.instance.physics.setCollision(this.obj.x, this.obj.y, true);
  320. this.obj.instance.objects.notifyCollisionChange(this.obj.x, this.obj.y, true);
  321. }
  322. }
  323. }
  324. },
  325. bigportal: {
  326. components: {
  327. cpnAttackAnimation: {
  328. simplify: function () {
  329. return {
  330. type: 'attackAnimation',
  331. spriteSheet: 'animBigObjects',
  332. row: 1,
  333. col: 0,
  334. frames: 6,
  335. frameDelay: 7,
  336. loop: -1,
  337. noSprite: true,
  338. hideSprite: true
  339. };
  340. }
  341. }
  342. }
  343. },
  344. pinktile: {
  345. components: {
  346. cpnParticles: {
  347. simplify: function () {
  348. return {
  349. type: 'particles',
  350. blueprint: {
  351. color: {
  352. start: ['fc66f7', 'a24eff'],
  353. end: ['933159', '393268']
  354. },
  355. scale: {
  356. start: {
  357. min: 2,
  358. max: 10
  359. },
  360. end: {
  361. min: 0,
  362. max: 2
  363. }
  364. },
  365. speed: {
  366. start: {
  367. min: 4,
  368. max: 16
  369. },
  370. end: {
  371. min: 2,
  372. max: 8
  373. }
  374. },
  375. lifetime: {
  376. min: 1,
  377. max: 4
  378. },
  379. randomScale: true,
  380. randomSpeed: true,
  381. chance: 0.04,
  382. randomColor: true,
  383. spawnType: 'rect',
  384. spawnRect: {
  385. x: -20,
  386. y: -20,
  387. w: 60,
  388. h: 60
  389. }
  390. }
  391. };
  392. }
  393. }
  394. }
  395. },
  396. walltrigger: {
  397. components: {
  398. cpnParticles: {
  399. simplify: function () {
  400. return {
  401. type: 'particles',
  402. blueprint: {
  403. color: {
  404. start: ['fff4252', 'ff6942'],
  405. end: ['802343', 'f953f36']
  406. },
  407. scale: {
  408. start: {
  409. min: 2,
  410. max: 6
  411. },
  412. end: {
  413. min: 0,
  414. max: 2
  415. }
  416. },
  417. speed: {
  418. start: {
  419. min: 0,
  420. max: 4
  421. },
  422. end: {
  423. min: 0,
  424. max: 0
  425. }
  426. },
  427. lifetime: {
  428. min: 1,
  429. max: 2
  430. },
  431. randomScale: true,
  432. randomSpeed: true,
  433. chance: 0.2,
  434. randomColor: true,
  435. spawnType: 'rect',
  436. spawnRect: {
  437. x: -20,
  438. y: -20,
  439. w: 40,
  440. h: 40
  441. }
  442. }
  443. };
  444. }
  445. },
  446. cpnTrigger: {
  447. init: function () {
  448. this.obj.instance.triggerPuzzle = {
  449. activated: []
  450. };
  451. },
  452. collisionEnter: function (o) {
  453. if (!o.player)
  454. return;
  455. let order = this.obj.order;
  456. let triggerPuzzle = this.obj.instance.triggerPuzzle;
  457. let activated = triggerPuzzle.activated;
  458. if (this.obj.forceOpen) {
  459. triggerPuzzle.activated = [];
  460. this.activate();
  461. return;
  462. }
  463. activated.push(order);
  464. let valid = true;
  465. for (let i = 0; i < activated.length; i++) {
  466. if (~~activated[i] !== i) {
  467. valid = false;
  468. break;
  469. }
  470. }
  471. if (!valid) {
  472. triggerPuzzle.activated = [];
  473. process.send({
  474. method: 'events',
  475. data: {
  476. onGetAnnouncement: [{
  477. obj: {
  478. msg: 'nothing happens'
  479. },
  480. to: [o.serverId]
  481. }]
  482. }
  483. });
  484. return;
  485. } else if (activated.length === 4) {
  486. triggerPuzzle.activated = [];
  487. this.activate();
  488. }
  489. process.send({
  490. method: 'events',
  491. data: {
  492. onGetAnnouncement: [{
  493. obj: {
  494. msg: this.obj.message
  495. },
  496. to: [o.serverId]
  497. }]
  498. }
  499. });
  500. },
  501. activate: function () {
  502. let syncer = this.obj.instance.syncer;
  503. let physics = this.obj.instance.physics;
  504. let walls = this.obj.instance.objects.objects.filter(o => (o.objZoneName === 'redWall'));
  505. walls.forEach(function (w) {
  506. w.destroyed = true;
  507. physics.setCollision(w.x, w.y, false);
  508. this.obj.instance.objects.notifyCollisionChange(w.x, w.y, false);
  509. syncer.queue('onGetObject', {
  510. x: w.x,
  511. y: w.y,
  512. components: [{
  513. type: 'attackAnimation',
  514. row: 0,
  515. col: 4
  516. }]
  517. }, -1);
  518. }, this);
  519. }
  520. }
  521. }
  522. },
  523. gas: {
  524. components: {
  525. cpnParticles: {
  526. simplify: function () {
  527. return {
  528. type: 'particles',
  529. blueprint: {
  530. color: {
  531. start: ['c0c3cf', '929398'],
  532. end: ['69696e', '69696e']
  533. },
  534. scale: {
  535. start: {
  536. min: 32,
  537. max: 18
  538. },
  539. end: {
  540. min: 16,
  541. max: 8
  542. }
  543. },
  544. speed: {
  545. start: {
  546. min: 2,
  547. max: 6
  548. },
  549. end: {
  550. min: 0,
  551. max: 4
  552. }
  553. },
  554. lifetime: {
  555. min: 4,
  556. max: 16
  557. },
  558. alpha: {
  559. start: 0.2,
  560. end: 0
  561. },
  562. randomScale: true,
  563. randomSpeed: true,
  564. chance: 0.02,
  565. randomColor: true,
  566. spawnType: 'rect',
  567. blendMode: 'screen',
  568. spawnRect: {
  569. x: -80,
  570. y: -80,
  571. w: 160,
  572. h: 160
  573. }
  574. }
  575. };
  576. }
  577. }
  578. }
  579. },
  580. bubbles: {
  581. components: {
  582. cpnParticles: {
  583. simplify: function () {
  584. return {
  585. type: 'particles',
  586. blueprint: {
  587. color: {
  588. start: ['48edff', '3fa7dd'],
  589. end: ['69696e', '42548d']
  590. },
  591. scale: {
  592. start: {
  593. min: 2,
  594. max: 8
  595. },
  596. end: {
  597. min: 2,
  598. max: 4
  599. }
  600. },
  601. speed: {
  602. start: {
  603. min: 2,
  604. max: 6
  605. },
  606. end: {
  607. min: 0,
  608. max: 4
  609. }
  610. },
  611. lifetime: {
  612. min: 1,
  613. max: 3
  614. },
  615. alpha: {
  616. start: 0.5,
  617. end: 0
  618. },
  619. randomScale: true,
  620. randomSpeed: true,
  621. chance: 0.2,
  622. randomColor: true,
  623. spawnType: 'rect',
  624. blendMode: 'screen',
  625. spawnRect: {
  626. x: -20,
  627. y: -20,
  628. w: 60,
  629. h: 60
  630. }
  631. }
  632. };
  633. }
  634. }
  635. }
  636. },
  637. shopyala: {
  638. properties: {
  639. cpnNotice: {
  640. actions: {
  641. enter: {
  642. cpn: 'dialogue',
  643. method: 'talk',
  644. args: [{
  645. targetName: 'thaumaturge yala'
  646. }]
  647. },
  648. exit: {
  649. cpn: 'dialogue',
  650. method: 'stopTalk'
  651. }
  652. }
  653. }
  654. }
  655. }
  656. }
  657. };