less copy protection, more size visualization
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

1737 lines
44 KiB

  1. const characterMakers = [];
  2. math.createUnit("parsecs", {
  3. definition: "3.086e16 meters",
  4. prefixes: "long"
  5. })
  6. function makeCharacter(name, author, viewInfo, defaultSizes, defaultSize) {
  7. views = {};
  8. console.log(viewInfo)
  9. Object.entries(viewInfo).forEach(([key, value]) => {
  10. console.log(key)
  11. views[key] = {
  12. attributes: {
  13. height: {
  14. name: "Height",
  15. power: 1,
  16. type: "length",
  17. base: value.height
  18. }
  19. },
  20. image: value.image,
  21. name: value.name
  22. }
  23. if (value.weight) {
  24. views[key].attributes.weight = {
  25. name: "Mass",
  26. power: 3,
  27. type: "mass",
  28. base: value.weight
  29. };
  30. }
  31. });
  32. const entity = makeEntity(name, "author", views);
  33. if (defaultSizes) {
  34. entity.defaults = defaultSizes;
  35. }
  36. if (defaultSize) {
  37. entity.views[entity.defaultView].height = defaultSize;
  38. }
  39. return entity;
  40. }
  41. characterMakers["Fen"] = () => {
  42. return makeCharacter(
  43. "Fen",
  44. "chemicalcrux",
  45. {
  46. body: {
  47. height: math.unit(2.2428, "meter"),
  48. weight: math.unit(124.738, "kg"),
  49. name: "Body",
  50. image: {
  51. source: "./media/characters/fen/back.svg"
  52. }
  53. }
  54. },
  55. [
  56. {
  57. name: "Normal",
  58. height: math.unit(2.2428, "meter")
  59. },
  60. {
  61. name: "Big",
  62. height: math.unit(12, "feet")
  63. },
  64. {
  65. name: "Macro",
  66. height: math.unit(100, "meter")
  67. },
  68. {
  69. name: "Macro+",
  70. height: math.unit(1000, "meter")
  71. },
  72. {
  73. name: "Megamacro",
  74. height: math.unit(10, "miles")
  75. }
  76. ],
  77. math.unit(100, "meter")
  78. )
  79. };
  80. function makeSofia() {
  81. const views = {
  82. front: {
  83. attributes: {
  84. height: {
  85. name: "Height",
  86. power: 1,
  87. type: "length",
  88. base: math.unit(183, "cm")
  89. },
  90. weight: {
  91. name: "Weight",
  92. power: 3,
  93. type: "mass",
  94. base: math.unit(80, "kg")
  95. }
  96. },
  97. image: {
  98. source: "./media/characters/sofia/front.svg"
  99. },
  100. name: "Front"
  101. },
  102. back: {
  103. attributes: {
  104. height: {
  105. name: "Height",
  106. power: 1,
  107. type: "length",
  108. base: math.unit(183, "cm")
  109. },
  110. weight: {
  111. name: "Weight",
  112. power: 3,
  113. type: "mass",
  114. base: math.unit(80, "kg")
  115. }
  116. },
  117. image: {
  118. source: "./media/characters/sofia/back.svg"
  119. },
  120. name: "Back"
  121. }
  122. };
  123. const entity = makeEntity("Sofia", "ZakuraTech", views);
  124. entity.views.front.height = math.unit(96, "feet");
  125. return entity;
  126. }
  127. function makeMarch() {
  128. const views = {
  129. front: {
  130. attributes: {
  131. height: {
  132. name: "Height",
  133. power: 1,
  134. type: "length",
  135. base: math.unit(7, "feet")
  136. },
  137. weight: {
  138. name: "Weight",
  139. power: 3,
  140. type: "mass",
  141. base: math.unit(100, "kg")
  142. }
  143. },
  144. image: {
  145. source: "./media/characters/march/front.svg"
  146. },
  147. name: "Front"
  148. },
  149. foot: {
  150. attributes: {
  151. height: {
  152. name: "Height",
  153. power: 1,
  154. type: "length",
  155. base: math.unit(0.9, "feet")
  156. }
  157. },
  158. image: {
  159. source: "./media/characters/march/foot.svg"
  160. },
  161. name: "Foot"
  162. }
  163. };
  164. const entity = makeEntity("March", "March-Dragon", views);
  165. entity.defaults.push({
  166. name: "Normal",
  167. height: math.unit(7.9, "feet")
  168. });
  169. entity.defaults.push({
  170. name: "Macro",
  171. height: math.unit(220, "meters")
  172. });
  173. entity.defaults.push({
  174. name: "Megamacro",
  175. height: math.unit(2.98, "km")
  176. });
  177. entity.defaults.push({
  178. name: "Gigamacro",
  179. height: math.unit(15963, "km")
  180. });
  181. entity.defaults.push({
  182. name: "Teramacro",
  183. height: math.unit(2980000000, "kilometers")
  184. });
  185. entity.defaults.push({
  186. name: "Examacro",
  187. height: math.unit(250, "parsecs")
  188. });
  189. entity.views.front.height = math.unit(2.98, "km");
  190. return entity;
  191. }
  192. function makeNoir() {
  193. const views = {
  194. front: {
  195. attributes: {
  196. height: {
  197. name: "Height",
  198. power: 1,
  199. type: "length",
  200. base: math.unit(6, "feet")
  201. },
  202. weight: {
  203. name: "Weight",
  204. power: 3,
  205. type: "mass",
  206. base: math.unit(60, "kg")
  207. }
  208. },
  209. image: {
  210. source: "./media/characters/noir/front.svg",
  211. bottom: 0.01
  212. },
  213. name: "Front"
  214. }
  215. };
  216. const entity = makeEntity("Noir", "March-Dragon", views);
  217. entity.defaults.push({
  218. name: "Normal",
  219. height: math.unit(6.6, "feet")
  220. });
  221. entity.defaults.push({
  222. name: "Macro",
  223. height: math.unit(500, "feet")
  224. });
  225. entity.defaults.push({
  226. name: "Megamacro",
  227. height: math.unit(2.5, "km")
  228. });
  229. entity.defaults.push({
  230. name: "Gigamacro",
  231. height: math.unit(22500, "km")
  232. });
  233. entity.defaults.push({
  234. name: "Teramacro",
  235. height: math.unit(2500000000, "kilometers")
  236. });
  237. entity.defaults.push({
  238. name: "Examacro",
  239. height: math.unit(200, "parsecs")
  240. });
  241. entity.views.front.height = math.unit(2.5, "km");
  242. return entity;
  243. }
  244. function makeOkuri() {
  245. const views = {
  246. front: {
  247. attributes: {
  248. height: {
  249. name: "Height",
  250. power: 1,
  251. type: "length",
  252. base: math.unit(7, "feet")
  253. },
  254. weight: {
  255. name: "Weight",
  256. power: 3,
  257. type: "mass",
  258. base: math.unit(100, "kg")
  259. }
  260. },
  261. image: {
  262. source: "./media/characters/okuri/front.svg"
  263. },
  264. name: "Front"
  265. },
  266. back: {
  267. attributes: {
  268. height: {
  269. name: "Height",
  270. power: 1,
  271. type: "length",
  272. base: math.unit(7, "feet")
  273. },
  274. weight: {
  275. name: "Weight",
  276. power: 3,
  277. type: "mass",
  278. base: math.unit(100, "kg")
  279. }
  280. },
  281. image: {
  282. source: "./media/characters/okuri/back.svg"
  283. },
  284. name: "Back"
  285. }
  286. };
  287. const entity = makeEntity("Okuri", "OrionMechadragon", views);
  288. entity.views.front.height = math.unit(100, "miles");
  289. return entity;
  290. }
  291. function makeManny() {
  292. const views = {
  293. front: {
  294. attributes: {
  295. height: {
  296. name: "Height",
  297. power: 1,
  298. type: "length",
  299. base: math.unit(7, "feet")
  300. },
  301. weight: {
  302. name: "Weight",
  303. power: 3,
  304. type: "mass",
  305. base: math.unit(100, "kg")
  306. }
  307. },
  308. image: {
  309. source: "./media/characters/manny/front.svg"
  310. },
  311. name: "Front"
  312. },
  313. back: {
  314. attributes: {
  315. height: {
  316. name: "Height",
  317. power: 1,
  318. type: "length",
  319. base: math.unit(7, "feet")
  320. },
  321. weight: {
  322. name: "Weight",
  323. power: 3,
  324. type: "mass",
  325. base: math.unit(100, "kg")
  326. }
  327. },
  328. image: {
  329. source: "./media/characters/manny/back.svg"
  330. },
  331. name: "Back"
  332. }
  333. };
  334. const entity = makeEntity("Manny", "Dialuca01", views);
  335. entity.views.front.height = math.unit(78, "feet");
  336. return entity;
  337. }
  338. function makeAdake() {
  339. const views = {
  340. front: {
  341. attributes: {
  342. height: {
  343. name: "Height",
  344. power: 1,
  345. type: "length",
  346. base: math.unit(7, "feet")
  347. },
  348. weight: {
  349. name: "Weight",
  350. power: 3,
  351. type: "mass",
  352. base: math.unit(100, "kg")
  353. }
  354. },
  355. image: {
  356. source: "./media/characters/adake/front-1.svg"
  357. },
  358. name: "Front"
  359. },
  360. frontAlt: {
  361. attributes: {
  362. height: {
  363. name: "Height",
  364. power: 1,
  365. type: "length",
  366. base: math.unit(7, "feet")
  367. },
  368. weight: {
  369. name: "Weight",
  370. power: 3,
  371. type: "mass",
  372. base: math.unit(100, "kg")
  373. }
  374. },
  375. image: {
  376. source: "./media/characters/adake/front-2.svg",
  377. bottom: 0.005
  378. },
  379. name: "Front (Alt)"
  380. },
  381. back: {
  382. attributes: {
  383. height: {
  384. name: "Height",
  385. power: 1,
  386. type: "length",
  387. base: math.unit(7, "feet")
  388. },
  389. weight: {
  390. name: "Weight",
  391. power: 3,
  392. type: "mass",
  393. base: math.unit(100, "kg")
  394. }
  395. },
  396. image: {
  397. source: "./media/characters/adake/back.svg",
  398. },
  399. name: "Back"
  400. },
  401. kneel: {
  402. attributes: {
  403. height: {
  404. name: "Height",
  405. power: 1,
  406. type: "length",
  407. base: math.unit(5.385, "feet")
  408. },
  409. weight: {
  410. name: "Weight",
  411. power: 3,
  412. type: "mass",
  413. base: math.unit(100, "kg")
  414. }
  415. },
  416. image: {
  417. source: "./media/characters/adake/kneel.svg",
  418. bottom: 0.05
  419. },
  420. name: "Kneeling"
  421. },
  422. };
  423. const entity = makeEntity("Adake", "Dialuca01", views);
  424. entity.views.front.height = math.unit(78, "feet");
  425. return entity;
  426. }
  427. function makeElijah() {
  428. const views = {
  429. side: {
  430. attributes: {
  431. height: {
  432. name: "Height",
  433. power: 1,
  434. type: "length",
  435. base: math.unit(7, "feet")
  436. },
  437. weight: {
  438. name: "Weight",
  439. power: 3,
  440. type: "mass",
  441. base: math.unit(50, "kg")
  442. }
  443. },
  444. image: {
  445. source: "./media/characters/elijah/side.svg",
  446. bottom: 0.01
  447. },
  448. name: "Side"
  449. },
  450. foot: {
  451. attributes: {
  452. height: {
  453. name: "Height",
  454. power: 1,
  455. type: "length",
  456. base: math.unit(2, "feet")
  457. }
  458. },
  459. image: {
  460. source: "./media/characters/elijah/foot.svg",
  461. },
  462. name: "Foot"
  463. }
  464. };
  465. const entity = makeEntity("Elijah", "Elijah", views);
  466. entity.views.side.height = math.unit(175, "feet");
  467. return entity;
  468. }
  469. function makeRai() {
  470. const views = {
  471. front: {
  472. attributes: {
  473. height: {
  474. name: "Height",
  475. power: 1,
  476. type: "length",
  477. base: math.unit(7, "feet")
  478. },
  479. weight: {
  480. name: "Weight",
  481. power: 3,
  482. type: "mass",
  483. base: math.unit(80, "kg")
  484. }
  485. },
  486. image: {
  487. source: "./media/characters/rai/front.svg"
  488. },
  489. name: "Front"
  490. },
  491. side: {
  492. attributes: {
  493. height: {
  494. name: "Height",
  495. power: 1,
  496. type: "length",
  497. base: math.unit(7, "feet")
  498. },
  499. weight: {
  500. name: "Weight",
  501. power: 3,
  502. type: "mass",
  503. base: math.unit(80, "kg")
  504. }
  505. },
  506. image: {
  507. source: "./media/characters/rai/side.svg"
  508. },
  509. name: "Side"
  510. },
  511. back: {
  512. attributes: {
  513. height: {
  514. name: "Height",
  515. power: 1,
  516. type: "length",
  517. base: math.unit(7, "feet")
  518. },
  519. weight: {
  520. name: "Weight",
  521. power: 3,
  522. type: "mass",
  523. base: math.unit(80, "kg")
  524. }
  525. },
  526. image: {
  527. source: "./media/characters/rai/back.svg"
  528. },
  529. name: "Back"
  530. }
  531. };
  532. const entity = makeEntity("Rai", "shadowblade945", views);
  533. entity.views.front.height = math.unit(302, "feet");
  534. return entity;
  535. }
  536. function makeJazzy() {
  537. const views = {
  538. front: {
  539. attributes: {
  540. height: {
  541. name: "Height",
  542. power: 1,
  543. type: "length",
  544. base: math.unit(7, "feet")
  545. },
  546. weight: {
  547. name: "Weight",
  548. power: 3,
  549. type: "mass",
  550. base: math.unit(80, "kg")
  551. }
  552. },
  553. image: {
  554. source: "./media/characters/jazzy/front.svg",
  555. bottom: 0.01
  556. },
  557. name: "Front"
  558. },
  559. back: {
  560. attributes: {
  561. height: {
  562. name: "Height",
  563. power: 1,
  564. type: "length",
  565. base: math.unit(7, "feet")
  566. },
  567. weight: {
  568. name: "Weight",
  569. power: 3,
  570. type: "mass",
  571. base: math.unit(80, "kg")
  572. }
  573. },
  574. image: {
  575. source: "./media/characters/jazzy/back.svg"
  576. },
  577. name: "Back"
  578. }
  579. };
  580. const entity = makeEntity("Jazzy", "Jazzywolf", views);
  581. entity.views.front.height = math.unit(216, "feet");
  582. return entity;
  583. }
  584. function makeFlamm() {
  585. const views = {
  586. front: {
  587. attributes: {
  588. height: {
  589. name: "Height",
  590. power: 1,
  591. type: "length",
  592. base: math.unit(7, "feet")
  593. },
  594. weight: {
  595. name: "Weight",
  596. power: 3,
  597. type: "mass",
  598. base: math.unit(80, "kg")
  599. }
  600. },
  601. image: {
  602. source: "./media/characters/flamm/front.svg"
  603. },
  604. name: "Front"
  605. }
  606. };
  607. const entity = makeEntity("Flamm", "Flamm", views);
  608. entity.views.front.height = math.unit(200, "feet");
  609. return entity;
  610. }
  611. function makeZephiro() {
  612. const views = {
  613. front: {
  614. attributes: {
  615. height: {
  616. name: "Height",
  617. power: 1,
  618. type: "length",
  619. base: math.unit(7, "feet")
  620. },
  621. weight: {
  622. name: "Weight",
  623. power: 3,
  624. type: "mass",
  625. base: math.unit(80, "kg")
  626. }
  627. },
  628. image: {
  629. source: "./media/characters/zephiro/front.svg"
  630. },
  631. name: "Front"
  632. },
  633. side: {
  634. attributes: {
  635. height: {
  636. name: "Height",
  637. power: 1,
  638. type: "length",
  639. base: math.unit(7, "feet")
  640. },
  641. weight: {
  642. name: "Weight",
  643. power: 3,
  644. type: "mass",
  645. base: math.unit(80, "kg")
  646. }
  647. },
  648. image: {
  649. source: "./media/characters/zephiro/side.svg"
  650. },
  651. name: "Side"
  652. },
  653. back: {
  654. attributes: {
  655. height: {
  656. name: "Height",
  657. power: 1,
  658. type: "length",
  659. base: math.unit(7, "feet")
  660. },
  661. weight: {
  662. name: "Weight",
  663. power: 3,
  664. type: "mass",
  665. base: math.unit(80, "kg")
  666. }
  667. },
  668. image: {
  669. source: "./media/characters/zephiro/back.svg"
  670. },
  671. name: "Back"
  672. }
  673. };
  674. const entity = makeEntity("Zephiro", "Zephiro", views);
  675. entity.views.front.height = math.unit(118, "feet");
  676. entity.defaults.push({
  677. name: "Micro",
  678. height: math.unit(3, "inches")
  679. });
  680. entity.defaults.push({
  681. name: "Normal",
  682. height: math.unit(5 + 3/12, "feet")
  683. });
  684. entity.defaults.push({
  685. name: "Macro",
  686. height: math.unit(118, "feet")
  687. });
  688. return entity;
  689. }
  690. function makeFory() {
  691. const views = {
  692. front: {
  693. attributes: {
  694. height: {
  695. name: "Height",
  696. power: 1,
  697. type: "length",
  698. base: math.unit(7, "feet")
  699. },
  700. weight: {
  701. name: "Weight",
  702. power: 3,
  703. type: "mass",
  704. base: math.unit(90, "kg")
  705. }
  706. },
  707. image: {
  708. source: "./media/characters/fory/front.svg"
  709. },
  710. name: "Front"
  711. }
  712. };
  713. const entity = makeEntity("Fory", "Manny", views);
  714. entity.defaults.push({
  715. name: "Normal",
  716. height: math.unit(5, "feet")
  717. });
  718. entity.defaults.push({
  719. name: "Macro",
  720. height: math.unit(50, "feet")
  721. });
  722. entity.views.front.height = math.unit(50, "feet");
  723. return entity;
  724. }
  725. function makeKurrikage() {
  726. const views = {
  727. front: {
  728. attributes: {
  729. height: {
  730. name: "Height",
  731. power: 1,
  732. type: "length",
  733. base: math.unit(7, "feet")
  734. },
  735. weight: {
  736. name: "Weight",
  737. power: 3,
  738. type: "mass",
  739. base: math.unit(90, "kg")
  740. }
  741. },
  742. image: {
  743. source: "./media/characters/kurrikage/front.svg"
  744. },
  745. name: "Front"
  746. },
  747. back: {
  748. attributes: {
  749. height: {
  750. name: "Height",
  751. power: 1,
  752. type: "length",
  753. base: math.unit(7, "feet")
  754. },
  755. weight: {
  756. name: "Weight",
  757. power: 3,
  758. type: "mass",
  759. base: math.unit(90, "kg")
  760. }
  761. },
  762. image: {
  763. source: "./media/characters/kurrikage/back.svg"
  764. },
  765. name: "Back"
  766. },
  767. paw: {
  768. attributes: {
  769. height: {
  770. name: "Height",
  771. power: 1,
  772. type: "length",
  773. base: math.unit(1.5, "feet")
  774. }
  775. },
  776. image: {
  777. source: "./media/characters/kurrikage/paw.svg"
  778. },
  779. name: "Paw"
  780. },
  781. staff: {
  782. attributes: {
  783. height: {
  784. name: "Height",
  785. power: 1,
  786. type: "length",
  787. base: math.unit(6.7, "feet")
  788. }
  789. },
  790. image: {
  791. source: "./media/characters/kurrikage/staff.svg"
  792. },
  793. name: "Staff"
  794. },
  795. peek: {
  796. attributes: {
  797. height: {
  798. name: "Height",
  799. power: 1,
  800. type: "length",
  801. base: math.unit(1.05, "feet")
  802. }
  803. },
  804. image: {
  805. source: "./media/characters/kurrikage/peek.svg",
  806. bottom: 0.08
  807. },
  808. name: "Peeking"
  809. }
  810. };
  811. const entity = makeEntity("Kurrikage", "Kurrikage", views);
  812. entity.views.front.height = math.unit(12, "feet");
  813. return entity;
  814. }
  815. function makeShingo() {
  816. const views = {
  817. front: {
  818. attributes: {
  819. height: {
  820. name: "Height",
  821. power: 1,
  822. type: "length",
  823. base: math.unit(6, "feet")
  824. },
  825. weight: {
  826. name: "Weight",
  827. power: 3,
  828. type: "mass",
  829. base: math.unit(75, "kg")
  830. }
  831. },
  832. image: {
  833. source: "./media/characters/shingo/front.svg"
  834. },
  835. name: "Front"
  836. }
  837. };
  838. const entity = makeEntity("Shingo", "Threes", views);
  839. entity.defaults.push({
  840. name: "Micro",
  841. height: math.unit(4, "inches")
  842. });
  843. entity.defaults.push({
  844. name: "Normal",
  845. height: math.unit(6, "feet")
  846. });
  847. entity.defaults.push({
  848. name: "Macro",
  849. height: math.unit(108, "feet")
  850. });
  851. return entity;
  852. }
  853. function makeAigey() {
  854. const views = {
  855. side: {
  856. attributes: {
  857. height: {
  858. name: "Height",
  859. power: 1,
  860. type: "length",
  861. base: math.unit(6, "feet")
  862. },
  863. weight: {
  864. name: "Weight",
  865. power: 3,
  866. type: "mass",
  867. base: math.unit(75, "kg")
  868. }
  869. },
  870. image: {
  871. source: "./media/characters/aigey/side.svg"
  872. },
  873. name: "Side"
  874. }
  875. };
  876. const entity = makeEntity("Aigey", "Aigey", views);
  877. entity.defaults.push({
  878. name: "Macro",
  879. height: math.unit(200, "feet")
  880. });
  881. entity.defaults.push({
  882. name: "Megamacro",
  883. height: math.unit(100, "miles")
  884. });
  885. entity.views[entity.defaultView].height = math.unit(200, "feet");
  886. return entity;
  887. }
  888. function makeNatasha() {
  889. const views = {
  890. side: {
  891. attributes: {
  892. height: {
  893. name: "Height",
  894. power: 1,
  895. type: "length",
  896. base: math.unit(6, "feet")
  897. },
  898. weight: {
  899. name: "Weight",
  900. power: 3,
  901. type: "mass",
  902. base: math.unit(75, "kg")
  903. }
  904. },
  905. image: {
  906. source: "./media/characters/natasha/front.svg"
  907. },
  908. name: "Side"
  909. }
  910. };
  911. const entity = makeEntity("Natasha", "Natasha", views);
  912. entity.defaults.push({
  913. name: "Normal",
  914. height: math.unit(5 + 5/12, "feet")
  915. });
  916. entity.defaults.push({
  917. name: "Large",
  918. height: math.unit(12, "feet")
  919. });
  920. entity.defaults.push({
  921. name: "Macro",
  922. height: math.unit(100, "feet")
  923. });
  924. entity.defaults.push({
  925. name: "Macro+",
  926. height: math.unit(260, "feet")
  927. });
  928. entity.defaults.push({
  929. name: "Macro++",
  930. height: math.unit(1, "mile")
  931. });
  932. entity.views[entity.defaultView].height = math.unit(100, "feet");
  933. return entity;
  934. }
  935. function makeMalik() {
  936. const views = {
  937. front: {
  938. attributes: {
  939. height: {
  940. name: "Height",
  941. power: 1,
  942. type: "length",
  943. base: math.unit(6, "feet")
  944. },
  945. weight: {
  946. name: "Weight",
  947. power: 3,
  948. type: "mass",
  949. base: math.unit(75, "kg")
  950. }
  951. },
  952. image: {
  953. source: "./media/characters/malik/front.svg"
  954. },
  955. name: "Front"
  956. },
  957. side: {
  958. attributes: {
  959. height: {
  960. name: "Height",
  961. power: 1,
  962. type: "length",
  963. base: math.unit(6, "feet")
  964. },
  965. weight: {
  966. name: "Weight",
  967. power: 3,
  968. type: "mass",
  969. base: math.unit(75, "kg")
  970. }
  971. },
  972. image: {
  973. extra: 1.1539,
  974. source: "./media/characters/malik/side.svg"
  975. },
  976. name: "Side"
  977. },
  978. back: {
  979. attributes: {
  980. height: {
  981. name: "Height",
  982. power: 1,
  983. type: "length",
  984. base: math.unit(6, "feet")
  985. },
  986. weight: {
  987. name: "Weight",
  988. power: 3,
  989. type: "mass",
  990. base: math.unit(75, "kg")
  991. }
  992. },
  993. image: {
  994. source: "./media/characters/malik/back.svg"
  995. },
  996. name: "Back"
  997. },
  998. };
  999. const entity = makeEntity("Malik", "Fuzzypaws", views);
  1000. entity.defaults.push({
  1001. name: "Macro",
  1002. height: math.unit(156, "feet")
  1003. });
  1004. entity.defaults.push({
  1005. name: "Macro+",
  1006. height: math.unit(1188, "feet")
  1007. });
  1008. entity.views[entity.defaultView].height = math.unit(156, "feet");
  1009. return entity;
  1010. }
  1011. function makeSefer() {
  1012. const views = {
  1013. front: {
  1014. attributes: {
  1015. height: {
  1016. name: "Height",
  1017. power: 1,
  1018. type: "length",
  1019. base: math.unit(6, "feet")
  1020. },
  1021. weight: {
  1022. name: "Weight",
  1023. power: 3,
  1024. type: "mass",
  1025. base: math.unit(75, "kg")
  1026. }
  1027. },
  1028. image: {
  1029. source: "./media/characters/sefer/front.svg"
  1030. },
  1031. name: "Front"
  1032. },
  1033. back: {
  1034. attributes: {
  1035. height: {
  1036. name: "Height",
  1037. power: 1,
  1038. type: "length",
  1039. base: math.unit(6, "feet")
  1040. },
  1041. weight: {
  1042. name: "Weight",
  1043. power: 3,
  1044. type: "mass",
  1045. base: math.unit(75, "kg")
  1046. }
  1047. },
  1048. image: {
  1049. source: "./media/characters/sefer/back.svg"
  1050. },
  1051. name: "Back"
  1052. },
  1053. };
  1054. const entity = makeEntity("Sefer", "Fuzzypaws", views);
  1055. entity.views[entity.defaultView].height = math.unit(6, "feet");
  1056. return entity;
  1057. }
  1058. function makeMan() {
  1059. const views = {
  1060. body: {
  1061. attributes: {
  1062. height: {
  1063. name: "Height",
  1064. power: 1,
  1065. type: "length",
  1066. base: math.unit(2, "meter")
  1067. },
  1068. weight: {
  1069. name: "Weight",
  1070. power: 3,
  1071. type: "mass",
  1072. base: math.unit(80, "kg")
  1073. }
  1074. },
  1075. image: {
  1076. source: "./man.svg"
  1077. },
  1078. name: "Body"
  1079. }
  1080. };
  1081. return makeEntity("Man", "Fen", views);
  1082. }
  1083. characterMakers["North"] = () => {
  1084. return makeCharacter(
  1085. "North",
  1086. "chemicalcrux",
  1087. {
  1088. body: {
  1089. height: math.unit(2.2428, "meter"),
  1090. weight: math.unit(124.738, "kg"),
  1091. name: "Body",
  1092. image: {
  1093. extra: 1225/1050,
  1094. source: "./media/characters/north/front.svg"
  1095. }
  1096. }
  1097. },
  1098. [
  1099. {
  1100. name: "Micro",
  1101. height: math.unit(4, "inches")
  1102. },
  1103. {
  1104. name: "Macro",
  1105. height: math.unit(63, "meters")
  1106. },
  1107. {
  1108. name: "Megamacro",
  1109. height: math.unit(101, "miles")
  1110. }
  1111. ],
  1112. math.unit(101, "miles")
  1113. )
  1114. };
  1115. characterMakers["Talan"] = () => {
  1116. return makeCharacter(
  1117. "Talan",
  1118. "talanstrider",
  1119. {
  1120. body: {
  1121. height: math.unit(2, "meter"),
  1122. weight: math.unit(70, "kg"),
  1123. name: "Body",
  1124. image: {
  1125. bottom: 0.02,
  1126. source: "./media/characters/talan/front.svg"
  1127. }
  1128. }
  1129. },
  1130. [
  1131. {
  1132. name: "Normal",
  1133. height: math.unit(4, "meters")
  1134. },
  1135. {
  1136. name: "Macro",
  1137. height: math.unit(100, "meters")
  1138. },
  1139. {
  1140. name: "Megamacro",
  1141. height: math.unit(2, "miles")
  1142. },
  1143. {
  1144. name: "Gigamacro",
  1145. height: math.unit(5000, "miles")
  1146. },
  1147. {
  1148. name: "Teramacro",
  1149. height: math.unit(100, "parsecs")
  1150. }
  1151. ],
  1152. math.unit(2, "miles")
  1153. )
  1154. };
  1155. characterMakers["Gael'Rathus"] = () => {
  1156. return makeCharacter(
  1157. "Gael'Rathus",
  1158. "Kurrikage",
  1159. {
  1160. front: {
  1161. height: math.unit(2, "meter"),
  1162. weight: math.unit(90, "kg"),
  1163. name: "Front",
  1164. image: {
  1165. source: "./media/characters/gael'rathus/front.svg"
  1166. }
  1167. },
  1168. frontAlt: {
  1169. height: math.unit(2, "meter"),
  1170. weight: math.unit(90, "kg"),
  1171. name: "Front (alt)",
  1172. image: {
  1173. source: "./media/characters/gael'rathus/front-alt.svg"
  1174. }
  1175. },
  1176. frontAlt2: {
  1177. height: math.unit(2, "meter"),
  1178. weight: math.unit(90, "kg"),
  1179. name: "Front (alt 2)",
  1180. image: {
  1181. source: "./media/characters/gael'rathus/front-alt-2.svg"
  1182. }
  1183. }
  1184. },
  1185. [
  1186. {
  1187. name: "Normal",
  1188. height: math.unit(9, "feet")
  1189. },
  1190. {
  1191. name: "Large",
  1192. height: math.unit(25, "feet")
  1193. },
  1194. {
  1195. name: "Macro",
  1196. height: math.unit(0.25, "miles")
  1197. },
  1198. {
  1199. name: "Megamacro",
  1200. height: math.unit(10, "miles")
  1201. }
  1202. ],
  1203. math.unit(9, "feet")
  1204. )
  1205. };
  1206. characterMakers["Sosha"] = () => {
  1207. return makeCharacter(
  1208. "Sosha",
  1209. "Sdocat",
  1210. {
  1211. side: {
  1212. height: math.unit(2, "meter"),
  1213. weight: math.unit(140, "kg"),
  1214. name: "Side",
  1215. image: {
  1216. source: "./media/characters/sosha/side.svg"
  1217. }
  1218. },
  1219. },
  1220. [
  1221. {
  1222. name: "Normal",
  1223. height: math.unit(12, "feet")
  1224. }
  1225. ],
  1226. math.unit(12, "feet")
  1227. )
  1228. };
  1229. characterMakers["Kurribird"] = () => {
  1230. return makeCharacter(
  1231. "Kurribird",
  1232. "Kurrikage",
  1233. {
  1234. front: {
  1235. height: math.unit(2, "meter"),
  1236. weight: math.unit(50, "kg"),
  1237. name: "Front",
  1238. image: {
  1239. source: "./media/characters/kurribird/front.svg",
  1240. bottom: 0.015
  1241. }
  1242. },
  1243. frontAlt: {
  1244. height: math.unit(1.5, "meter"),
  1245. weight: math.unit(50, "kg"),
  1246. name: "Front (Alt)",
  1247. image: {
  1248. source: "./media/characters/kurribird/front-alt.svg",
  1249. extra: 1.45
  1250. }
  1251. },
  1252. },
  1253. [
  1254. {
  1255. name: "Normal",
  1256. height: math.unit(7, "feet")
  1257. },
  1258. {
  1259. name: "Big",
  1260. height: math.unit(15, "feet")
  1261. },
  1262. {
  1263. name: "Macro",
  1264. height: math.unit(1500, "feet")
  1265. },
  1266. {
  1267. name: "Megamacro",
  1268. height: math.unit(2, "miles")
  1269. }
  1270. ],
  1271. math.unit(12, "feet")
  1272. )
  1273. };
  1274. characterMakers["Elbial"] = () => {
  1275. return makeCharacter(
  1276. "Elbial",
  1277. "Neopuc",
  1278. {
  1279. front: {
  1280. height: math.unit(2, "meter"),
  1281. weight: math.unit(80, "kg"),
  1282. name: "Front",
  1283. image: {
  1284. source: "./media/characters/elbial/front.svg"
  1285. }
  1286. },
  1287. side: {
  1288. height: math.unit(2, "meter"),
  1289. weight: math.unit(80, "kg"),
  1290. name: "Side",
  1291. image: {
  1292. source: "./media/characters/elbial/side.svg"
  1293. }
  1294. },
  1295. back: {
  1296. height: math.unit(2, "meter"),
  1297. weight: math.unit(80, "kg"),
  1298. name: "Back",
  1299. image: {
  1300. source: "./media/characters/elbial/back.svg"
  1301. }
  1302. },
  1303. },
  1304. [
  1305. {
  1306. name: "Large",
  1307. height: math.unit(100, "feet")
  1308. },
  1309. {
  1310. name: "Macro",
  1311. height: math.unit(500, "feet")
  1312. },
  1313. {
  1314. name: "Megamacro",
  1315. height: math.unit(10, "miles")
  1316. },
  1317. {
  1318. name: "Gigamacro",
  1319. height: math.unit(25000, "miles")
  1320. },
  1321. {
  1322. name: "Full-Size",
  1323. height: math.unit(8000000, "gigaparsecs")
  1324. }
  1325. ],
  1326. math.unit(500, "feet")
  1327. )
  1328. };
  1329. characterMakers["Noah"] = () => {
  1330. return makeCharacter(
  1331. "Noah",
  1332. "Neopuc",
  1333. {
  1334. front: {
  1335. height: math.unit(2, "meter"),
  1336. weight: math.unit(60, "kg"),
  1337. name: "Front",
  1338. image: {
  1339. source: "./media/characters/noah/front.svg"
  1340. }
  1341. },
  1342. talons: {
  1343. height: math.unit(0.315, "meter"),
  1344. name: "Talons",
  1345. image: {
  1346. source: "./media/characters/noah/talons.svg"
  1347. }
  1348. }
  1349. },
  1350. [
  1351. {
  1352. name: "Large",
  1353. height: math.unit(50, "feet")
  1354. },
  1355. {
  1356. name: "Macro",
  1357. height: math.unit(750, "feet")
  1358. },
  1359. {
  1360. name: "Megamacro",
  1361. height: math.unit(50, "miles")
  1362. },
  1363. {
  1364. name: "Gigamacro",
  1365. height: math.unit(100000, "miles")
  1366. },
  1367. {
  1368. name: "Full-Size",
  1369. height: math.unit(3000000000, "miles")
  1370. }
  1371. ],
  1372. math.unit(750, "feet")
  1373. )
  1374. };
  1375. characterMakers["Natalya"] = () => {
  1376. return makeCharacter(
  1377. "Natalya",
  1378. "Neopuc",
  1379. {
  1380. front: {
  1381. height: math.unit(2, "meter"),
  1382. weight: math.unit(80, "kg"),
  1383. name: "Front",
  1384. image: {
  1385. source: "./media/characters/natalya/front.svg"
  1386. }
  1387. },
  1388. back: {
  1389. height: math.unit(2, "meter"),
  1390. weight: math.unit(80, "kg"),
  1391. name: "Back",
  1392. image: {
  1393. source: "./media/characters/natalya/back.svg"
  1394. }
  1395. }
  1396. },
  1397. [
  1398. {
  1399. name: "Normal",
  1400. height: math.unit(150, "feet")
  1401. },
  1402. {
  1403. name: "Megamacro",
  1404. height: math.unit(5, "miles")
  1405. },
  1406. {
  1407. name: "Full-Size",
  1408. height: math.unit(600, "kiloparsecs")
  1409. }
  1410. ],
  1411. math.unit(150, "feet")
  1412. )
  1413. };
  1414. characterMakers["Erestrebah"] = () => {
  1415. return makeCharacter(
  1416. "Erestrebah",
  1417. "Kurrikage",
  1418. {
  1419. front: {
  1420. height: math.unit(2, "meter"),
  1421. weight: math.unit(50, "kg"),
  1422. name: "Front",
  1423. image: {
  1424. source: "./media/characters/erestrebah/front.svg"
  1425. }
  1426. },
  1427. back: {
  1428. height: math.unit(2, "meter"),
  1429. weight: math.unit(50, "kg"),
  1430. name: "Back",
  1431. image: {
  1432. source: "./media/characters/erestrebah/back.svg",
  1433. extra: 1.2139
  1434. }
  1435. }
  1436. },
  1437. [
  1438. {
  1439. name: "Normal",
  1440. height: math.unit(10, "feet")
  1441. },
  1442. {
  1443. name: "Large",
  1444. height: math.unit(50, "feet")
  1445. },
  1446. {
  1447. name: "Macro",
  1448. height: math.unit(300, "feet")
  1449. },
  1450. {
  1451. name: "Macro+",
  1452. height: math.unit(750, "feet")
  1453. },
  1454. {
  1455. name: "Megamacro",
  1456. height: math.unit(3, "miles")
  1457. }
  1458. ],
  1459. math.unit(50, "feet")
  1460. )
  1461. };
  1462. characterMakers["Jennifer"] = () => {
  1463. return makeCharacter(
  1464. "Jennifer",
  1465. "Neopuc",
  1466. {
  1467. front: {
  1468. height: math.unit(2, "meter"),
  1469. weight: math.unit(80, "kg"),
  1470. name: "Front",
  1471. image: {
  1472. source: "./media/characters/jennifer/front.svg",
  1473. bottom: 0.11,
  1474. extra: 1.16
  1475. }
  1476. },
  1477. frontAlt: {
  1478. height: math.unit(2, "meter"),
  1479. weight: math.unit(80, "kg"),
  1480. name: "Front (Alt)",
  1481. image: {
  1482. source: "./media/characters/jennifer/front-alt.svg"
  1483. }
  1484. }
  1485. },
  1486. [
  1487. {
  1488. name: "Canon Height",
  1489. height: math.unit(120, "feet")
  1490. },
  1491. {
  1492. name: "Macro+",
  1493. height: math.unit(300, "feet")
  1494. },
  1495. {
  1496. name: "Megamacro",
  1497. height: math.unit(20000, "feet")
  1498. }
  1499. ],
  1500. math.unit(120, "feet")
  1501. )
  1502. };
  1503. characterMakers["Kalista"] = () => {
  1504. return makeCharacter(
  1505. "Kalista",
  1506. "Kalista",
  1507. {
  1508. front: {
  1509. height: math.unit(2, "meter"),
  1510. weight: math.unit(50, "kg"),
  1511. name: "Front",
  1512. image: {
  1513. source: "./media/characters/kalista/front.svg"
  1514. }
  1515. },
  1516. back: {
  1517. height: math.unit(2, "meter"),
  1518. weight: math.unit(50, "kg"),
  1519. name: "Back",
  1520. image: {
  1521. source: "./media/characters/kalista/back.svg"
  1522. }
  1523. }
  1524. },
  1525. [
  1526. {
  1527. name: "Uncomfortably Small",
  1528. height: math.unit(10, "feet")
  1529. },
  1530. {
  1531. name: "Small",
  1532. height: math.unit(30, "feet")
  1533. },
  1534. {
  1535. name: "Macro",
  1536. height: math.unit(100, "feet")
  1537. },
  1538. {
  1539. name: "Macro+",
  1540. height: math.unit(2000, "feet")
  1541. },
  1542. {
  1543. name: "True Form",
  1544. height: math.unit(8924, "miles")
  1545. }
  1546. ],
  1547. math.unit(100, "feet")
  1548. )
  1549. };
  1550. function makeCharacters() {
  1551. const results = [];
  1552. results.push({
  1553. name: "Sofia",
  1554. constructor: makeSofia
  1555. });
  1556. results.push({
  1557. name: "March",
  1558. constructor: makeMarch
  1559. });
  1560. results.push({
  1561. name: "Noir",
  1562. constructor: makeNoir
  1563. });
  1564. results.push({
  1565. name: "Okuri",
  1566. constructor: makeOkuri
  1567. });
  1568. results.push({
  1569. name: "Manny",
  1570. constructor: makeManny
  1571. });
  1572. results.push({
  1573. name: "Adake",
  1574. constructor: makeAdake
  1575. });
  1576. results.push({
  1577. name: "Elijah",
  1578. constructor: makeElijah
  1579. });
  1580. results.push({
  1581. name: "Rai",
  1582. constructor: makeRai
  1583. });
  1584. results.push({
  1585. name: "Jazzy",
  1586. constructor: makeJazzy
  1587. });
  1588. results.push({
  1589. name: "Flamm",
  1590. constructor: makeFlamm
  1591. });
  1592. results.push({
  1593. name: "Zephiro",
  1594. constructor: makeZephiro
  1595. });
  1596. results.push({
  1597. name: "Fory",
  1598. constructor: makeFory
  1599. });
  1600. results.push({
  1601. name: "Kurrikage",
  1602. constructor: makeKurrikage
  1603. });
  1604. results.push({
  1605. name: "Shingo",
  1606. constructor: makeShingo
  1607. });
  1608. results.push({
  1609. name: "Aigey",
  1610. constructor: makeAigey
  1611. });
  1612. results.push({
  1613. name: "Natasha",
  1614. constructor: makeNatasha
  1615. });
  1616. results.push({
  1617. name: "Malik",
  1618. constructor: makeMalik
  1619. });
  1620. results.push({
  1621. name: "Sefer",
  1622. constructor: makeSefer
  1623. });
  1624. results.push({
  1625. name: "Normal man",
  1626. constructor: makeMan
  1627. });
  1628. Object.entries(characterMakers).forEach(([key, value]) => {
  1629. results.push({
  1630. name: key,
  1631. constructor: value
  1632. });
  1633. });
  1634. return results;
  1635. }