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.
 
 
 

1864 line
47 KiB

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