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.
 
 
 

1993 line
50 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.defaults.push({
  613. name: "Normal",
  614. height: math.unit(9.5, "feet")
  615. });
  616. entity.defaults.push({
  617. name: "Macro",
  618. height: math.unit(200, "feet")
  619. });
  620. entity.views.front.height = math.unit(200, "feet");
  621. return entity;
  622. }
  623. function makeZephiro() {
  624. const views = {
  625. front: {
  626. attributes: {
  627. height: {
  628. name: "Height",
  629. power: 1,
  630. type: "length",
  631. base: math.unit(7, "feet")
  632. },
  633. weight: {
  634. name: "Weight",
  635. power: 3,
  636. type: "mass",
  637. base: math.unit(80, "kg")
  638. }
  639. },
  640. image: {
  641. source: "./media/characters/zephiro/front.svg"
  642. },
  643. name: "Front"
  644. },
  645. side: {
  646. attributes: {
  647. height: {
  648. name: "Height",
  649. power: 1,
  650. type: "length",
  651. base: math.unit(7, "feet")
  652. },
  653. weight: {
  654. name: "Weight",
  655. power: 3,
  656. type: "mass",
  657. base: math.unit(80, "kg")
  658. }
  659. },
  660. image: {
  661. source: "./media/characters/zephiro/side.svg"
  662. },
  663. name: "Side"
  664. },
  665. back: {
  666. attributes: {
  667. height: {
  668. name: "Height",
  669. power: 1,
  670. type: "length",
  671. base: math.unit(7, "feet")
  672. },
  673. weight: {
  674. name: "Weight",
  675. power: 3,
  676. type: "mass",
  677. base: math.unit(80, "kg")
  678. }
  679. },
  680. image: {
  681. source: "./media/characters/zephiro/back.svg"
  682. },
  683. name: "Back"
  684. }
  685. };
  686. const entity = makeEntity("Zephiro", "Zephiro", views);
  687. entity.views.front.height = math.unit(118, "feet");
  688. entity.defaults.push({
  689. name: "Micro",
  690. height: math.unit(3, "inches")
  691. });
  692. entity.defaults.push({
  693. name: "Normal",
  694. height: math.unit(5 + 3/12, "feet")
  695. });
  696. entity.defaults.push({
  697. name: "Macro",
  698. height: math.unit(118, "feet")
  699. });
  700. return entity;
  701. }
  702. function makeFory() {
  703. const views = {
  704. front: {
  705. attributes: {
  706. height: {
  707. name: "Height",
  708. power: 1,
  709. type: "length",
  710. base: math.unit(7, "feet")
  711. },
  712. weight: {
  713. name: "Weight",
  714. power: 3,
  715. type: "mass",
  716. base: math.unit(90, "kg")
  717. }
  718. },
  719. image: {
  720. source: "./media/characters/fory/front.svg"
  721. },
  722. name: "Front"
  723. }
  724. };
  725. const entity = makeEntity("Fory", "Manny", views);
  726. entity.defaults.push({
  727. name: "Normal",
  728. height: math.unit(5, "feet")
  729. });
  730. entity.defaults.push({
  731. name: "Macro",
  732. height: math.unit(50, "feet")
  733. });
  734. entity.views.front.height = math.unit(50, "feet");
  735. return entity;
  736. }
  737. function makeKurrikage() {
  738. const views = {
  739. front: {
  740. attributes: {
  741. height: {
  742. name: "Height",
  743. power: 1,
  744. type: "length",
  745. base: math.unit(7, "feet")
  746. },
  747. weight: {
  748. name: "Weight",
  749. power: 3,
  750. type: "mass",
  751. base: math.unit(90, "kg")
  752. }
  753. },
  754. image: {
  755. source: "./media/characters/kurrikage/front.svg"
  756. },
  757. name: "Front"
  758. },
  759. back: {
  760. attributes: {
  761. height: {
  762. name: "Height",
  763. power: 1,
  764. type: "length",
  765. base: math.unit(7, "feet")
  766. },
  767. weight: {
  768. name: "Weight",
  769. power: 3,
  770. type: "mass",
  771. base: math.unit(90, "kg")
  772. }
  773. },
  774. image: {
  775. source: "./media/characters/kurrikage/back.svg"
  776. },
  777. name: "Back"
  778. },
  779. paw: {
  780. attributes: {
  781. height: {
  782. name: "Height",
  783. power: 1,
  784. type: "length",
  785. base: math.unit(1.5, "feet")
  786. }
  787. },
  788. image: {
  789. source: "./media/characters/kurrikage/paw.svg"
  790. },
  791. name: "Paw"
  792. },
  793. staff: {
  794. attributes: {
  795. height: {
  796. name: "Height",
  797. power: 1,
  798. type: "length",
  799. base: math.unit(6.7, "feet")
  800. }
  801. },
  802. image: {
  803. source: "./media/characters/kurrikage/staff.svg"
  804. },
  805. name: "Staff"
  806. },
  807. peek: {
  808. attributes: {
  809. height: {
  810. name: "Height",
  811. power: 1,
  812. type: "length",
  813. base: math.unit(1.05, "feet")
  814. }
  815. },
  816. image: {
  817. source: "./media/characters/kurrikage/peek.svg",
  818. bottom: 0.08
  819. },
  820. name: "Peeking"
  821. }
  822. };
  823. const entity = makeEntity("Kurrikage", "Kurrikage", views);
  824. entity.views.front.height = math.unit(12, "feet");
  825. return entity;
  826. }
  827. function makeShingo() {
  828. const views = {
  829. front: {
  830. attributes: {
  831. height: {
  832. name: "Height",
  833. power: 1,
  834. type: "length",
  835. base: math.unit(6, "feet")
  836. },
  837. weight: {
  838. name: "Weight",
  839. power: 3,
  840. type: "mass",
  841. base: math.unit(75, "kg")
  842. }
  843. },
  844. image: {
  845. source: "./media/characters/shingo/front.svg"
  846. },
  847. name: "Front"
  848. }
  849. };
  850. const entity = makeEntity("Shingo", "Threes", views);
  851. entity.defaults.push({
  852. name: "Micro",
  853. height: math.unit(4, "inches")
  854. });
  855. entity.defaults.push({
  856. name: "Normal",
  857. height: math.unit(6, "feet")
  858. });
  859. entity.defaults.push({
  860. name: "Macro",
  861. height: math.unit(108, "feet")
  862. });
  863. return entity;
  864. }
  865. function makeAigey() {
  866. const views = {
  867. side: {
  868. attributes: {
  869. height: {
  870. name: "Height",
  871. power: 1,
  872. type: "length",
  873. base: math.unit(6, "feet")
  874. },
  875. weight: {
  876. name: "Weight",
  877. power: 3,
  878. type: "mass",
  879. base: math.unit(75, "kg")
  880. }
  881. },
  882. image: {
  883. source: "./media/characters/aigey/side.svg"
  884. },
  885. name: "Side"
  886. }
  887. };
  888. const entity = makeEntity("Aigey", "Aigey", views);
  889. entity.defaults.push({
  890. name: "Macro",
  891. height: math.unit(200, "feet")
  892. });
  893. entity.defaults.push({
  894. name: "Megamacro",
  895. height: math.unit(100, "miles")
  896. });
  897. entity.views[entity.defaultView].height = math.unit(200, "feet");
  898. return entity;
  899. }
  900. function makeNatasha() {
  901. const views = {
  902. side: {
  903. attributes: {
  904. height: {
  905. name: "Height",
  906. power: 1,
  907. type: "length",
  908. base: math.unit(6, "feet")
  909. },
  910. weight: {
  911. name: "Weight",
  912. power: 3,
  913. type: "mass",
  914. base: math.unit(75, "kg")
  915. }
  916. },
  917. image: {
  918. source: "./media/characters/natasha/front.svg"
  919. },
  920. name: "Side"
  921. }
  922. };
  923. const entity = makeEntity("Natasha", "Natasha", views);
  924. entity.defaults.push({
  925. name: "Normal",
  926. height: math.unit(5 + 5/12, "feet")
  927. });
  928. entity.defaults.push({
  929. name: "Large",
  930. height: math.unit(12, "feet")
  931. });
  932. entity.defaults.push({
  933. name: "Macro",
  934. height: math.unit(100, "feet")
  935. });
  936. entity.defaults.push({
  937. name: "Macro+",
  938. height: math.unit(260, "feet")
  939. });
  940. entity.defaults.push({
  941. name: "Macro++",
  942. height: math.unit(1, "mile")
  943. });
  944. entity.views[entity.defaultView].height = math.unit(100, "feet");
  945. return entity;
  946. }
  947. function makeMalik() {
  948. const views = {
  949. front: {
  950. attributes: {
  951. height: {
  952. name: "Height",
  953. power: 1,
  954. type: "length",
  955. base: math.unit(6, "feet")
  956. },
  957. weight: {
  958. name: "Weight",
  959. power: 3,
  960. type: "mass",
  961. base: math.unit(75, "kg")
  962. }
  963. },
  964. image: {
  965. source: "./media/characters/malik/front.svg"
  966. },
  967. name: "Front"
  968. },
  969. side: {
  970. attributes: {
  971. height: {
  972. name: "Height",
  973. power: 1,
  974. type: "length",
  975. base: math.unit(6, "feet")
  976. },
  977. weight: {
  978. name: "Weight",
  979. power: 3,
  980. type: "mass",
  981. base: math.unit(75, "kg")
  982. }
  983. },
  984. image: {
  985. extra: 1.1539,
  986. source: "./media/characters/malik/side.svg"
  987. },
  988. name: "Side"
  989. },
  990. back: {
  991. attributes: {
  992. height: {
  993. name: "Height",
  994. power: 1,
  995. type: "length",
  996. base: math.unit(6, "feet")
  997. },
  998. weight: {
  999. name: "Weight",
  1000. power: 3,
  1001. type: "mass",
  1002. base: math.unit(75, "kg")
  1003. }
  1004. },
  1005. image: {
  1006. source: "./media/characters/malik/back.svg"
  1007. },
  1008. name: "Back"
  1009. },
  1010. };
  1011. const entity = makeEntity("Malik", "Fuzzypaws", views);
  1012. entity.defaults.push({
  1013. name: "Macro",
  1014. height: math.unit(156, "feet")
  1015. });
  1016. entity.defaults.push({
  1017. name: "Macro+",
  1018. height: math.unit(1188, "feet")
  1019. });
  1020. entity.views[entity.defaultView].height = math.unit(156, "feet");
  1021. return entity;
  1022. }
  1023. function makeSefer() {
  1024. const views = {
  1025. front: {
  1026. attributes: {
  1027. height: {
  1028. name: "Height",
  1029. power: 1,
  1030. type: "length",
  1031. base: math.unit(6, "feet")
  1032. },
  1033. weight: {
  1034. name: "Weight",
  1035. power: 3,
  1036. type: "mass",
  1037. base: math.unit(75, "kg")
  1038. }
  1039. },
  1040. image: {
  1041. source: "./media/characters/sefer/front.svg"
  1042. },
  1043. name: "Front"
  1044. },
  1045. back: {
  1046. attributes: {
  1047. height: {
  1048. name: "Height",
  1049. power: 1,
  1050. type: "length",
  1051. base: math.unit(6, "feet")
  1052. },
  1053. weight: {
  1054. name: "Weight",
  1055. power: 3,
  1056. type: "mass",
  1057. base: math.unit(75, "kg")
  1058. }
  1059. },
  1060. image: {
  1061. source: "./media/characters/sefer/back.svg"
  1062. },
  1063. name: "Back"
  1064. },
  1065. };
  1066. const entity = makeEntity("Sefer", "Fuzzypaws", views);
  1067. entity.views[entity.defaultView].height = math.unit(6, "feet");
  1068. return entity;
  1069. }
  1070. function makeMan() {
  1071. const views = {
  1072. body: {
  1073. attributes: {
  1074. height: {
  1075. name: "Height",
  1076. power: 1,
  1077. type: "length",
  1078. base: math.unit(2, "meter")
  1079. },
  1080. weight: {
  1081. name: "Weight",
  1082. power: 3,
  1083. type: "mass",
  1084. base: math.unit(80, "kg")
  1085. }
  1086. },
  1087. image: {
  1088. source: "./man.svg"
  1089. },
  1090. name: "Body"
  1091. }
  1092. };
  1093. return makeEntity("Man", "Fen", views);
  1094. }
  1095. characterMakers["North"] = () => {
  1096. return makeCharacter(
  1097. "North",
  1098. "chemicalcrux",
  1099. {
  1100. body: {
  1101. height: math.unit(2.2428, "meter"),
  1102. weight: math.unit(124.738, "kg"),
  1103. name: "Body",
  1104. image: {
  1105. extra: 1225/1050,
  1106. source: "./media/characters/north/front.svg"
  1107. }
  1108. }
  1109. },
  1110. [
  1111. {
  1112. name: "Micro",
  1113. height: math.unit(4, "inches")
  1114. },
  1115. {
  1116. name: "Macro",
  1117. height: math.unit(63, "meters")
  1118. },
  1119. {
  1120. name: "Megamacro",
  1121. height: math.unit(101, "miles")
  1122. }
  1123. ],
  1124. math.unit(101, "miles")
  1125. )
  1126. };
  1127. characterMakers["Talan"] = () => {
  1128. return makeCharacter(
  1129. "Talan",
  1130. "talanstrider",
  1131. {
  1132. body: {
  1133. height: math.unit(2, "meter"),
  1134. weight: math.unit(70, "kg"),
  1135. name: "Body",
  1136. image: {
  1137. bottom: 0.02,
  1138. source: "./media/characters/talan/front.svg"
  1139. }
  1140. }
  1141. },
  1142. [
  1143. {
  1144. name: "Normal",
  1145. height: math.unit(4, "meters")
  1146. },
  1147. {
  1148. name: "Macro",
  1149. height: math.unit(100, "meters")
  1150. },
  1151. {
  1152. name: "Megamacro",
  1153. height: math.unit(2, "miles")
  1154. },
  1155. {
  1156. name: "Gigamacro",
  1157. height: math.unit(5000, "miles")
  1158. },
  1159. {
  1160. name: "Teramacro",
  1161. height: math.unit(100, "parsecs")
  1162. }
  1163. ],
  1164. math.unit(2, "miles")
  1165. )
  1166. };
  1167. characterMakers["Gael'Rathus"] = () => {
  1168. return makeCharacter(
  1169. "Gael'Rathus",
  1170. "Kurrikage",
  1171. {
  1172. front: {
  1173. height: math.unit(2, "meter"),
  1174. weight: math.unit(90, "kg"),
  1175. name: "Front",
  1176. image: {
  1177. source: "./media/characters/gael'rathus/front.svg"
  1178. }
  1179. },
  1180. frontAlt: {
  1181. height: math.unit(2, "meter"),
  1182. weight: math.unit(90, "kg"),
  1183. name: "Front (alt)",
  1184. image: {
  1185. source: "./media/characters/gael'rathus/front-alt.svg"
  1186. }
  1187. },
  1188. frontAlt2: {
  1189. height: math.unit(2, "meter"),
  1190. weight: math.unit(90, "kg"),
  1191. name: "Front (alt 2)",
  1192. image: {
  1193. source: "./media/characters/gael'rathus/front-alt-2.svg"
  1194. }
  1195. }
  1196. },
  1197. [
  1198. {
  1199. name: "Normal",
  1200. height: math.unit(9, "feet")
  1201. },
  1202. {
  1203. name: "Large",
  1204. height: math.unit(25, "feet")
  1205. },
  1206. {
  1207. name: "Macro",
  1208. height: math.unit(0.25, "miles")
  1209. },
  1210. {
  1211. name: "Megamacro",
  1212. height: math.unit(10, "miles")
  1213. }
  1214. ],
  1215. math.unit(9, "feet")
  1216. )
  1217. };
  1218. characterMakers["Sosha"] = () => {
  1219. return makeCharacter(
  1220. "Sosha",
  1221. "Sdocat",
  1222. {
  1223. side: {
  1224. height: math.unit(2, "meter"),
  1225. weight: math.unit(140, "kg"),
  1226. name: "Side",
  1227. image: {
  1228. source: "./media/characters/sosha/side.svg"
  1229. }
  1230. },
  1231. },
  1232. [
  1233. {
  1234. name: "Normal",
  1235. height: math.unit(12, "feet")
  1236. }
  1237. ],
  1238. math.unit(12, "feet")
  1239. )
  1240. };
  1241. characterMakers["Kurribird"] = () => {
  1242. return makeCharacter(
  1243. "Kurribird",
  1244. "Kurrikage",
  1245. {
  1246. front: {
  1247. height: math.unit(2, "meter"),
  1248. weight: math.unit(50, "kg"),
  1249. name: "Front",
  1250. image: {
  1251. source: "./media/characters/kurribird/front.svg",
  1252. bottom: 0.015
  1253. }
  1254. },
  1255. frontAlt: {
  1256. height: math.unit(1.5, "meter"),
  1257. weight: math.unit(50, "kg"),
  1258. name: "Front (Alt)",
  1259. image: {
  1260. source: "./media/characters/kurribird/front-alt.svg",
  1261. extra: 1.45
  1262. }
  1263. },
  1264. },
  1265. [
  1266. {
  1267. name: "Normal",
  1268. height: math.unit(7, "feet")
  1269. },
  1270. {
  1271. name: "Big",
  1272. height: math.unit(15, "feet")
  1273. },
  1274. {
  1275. name: "Macro",
  1276. height: math.unit(1500, "feet")
  1277. },
  1278. {
  1279. name: "Megamacro",
  1280. height: math.unit(2, "miles")
  1281. }
  1282. ],
  1283. math.unit(12, "feet")
  1284. )
  1285. };
  1286. characterMakers["Elbial"] = () => {
  1287. return makeCharacter(
  1288. "Elbial",
  1289. "Neopuc",
  1290. {
  1291. front: {
  1292. height: math.unit(2, "meter"),
  1293. weight: math.unit(80, "kg"),
  1294. name: "Front",
  1295. image: {
  1296. source: "./media/characters/elbial/front.svg"
  1297. }
  1298. },
  1299. side: {
  1300. height: math.unit(2, "meter"),
  1301. weight: math.unit(80, "kg"),
  1302. name: "Side",
  1303. image: {
  1304. source: "./media/characters/elbial/side.svg"
  1305. }
  1306. },
  1307. back: {
  1308. height: math.unit(2, "meter"),
  1309. weight: math.unit(80, "kg"),
  1310. name: "Back",
  1311. image: {
  1312. source: "./media/characters/elbial/back.svg"
  1313. }
  1314. },
  1315. },
  1316. [
  1317. {
  1318. name: "Large",
  1319. height: math.unit(100, "feet")
  1320. },
  1321. {
  1322. name: "Macro",
  1323. height: math.unit(500, "feet")
  1324. },
  1325. {
  1326. name: "Megamacro",
  1327. height: math.unit(10, "miles")
  1328. },
  1329. {
  1330. name: "Gigamacro",
  1331. height: math.unit(25000, "miles")
  1332. },
  1333. {
  1334. name: "Full-Size",
  1335. height: math.unit(8000000, "gigaparsecs")
  1336. }
  1337. ],
  1338. math.unit(500, "feet")
  1339. )
  1340. };
  1341. characterMakers["Noah"] = () => {
  1342. return makeCharacter(
  1343. "Noah",
  1344. "Neopuc",
  1345. {
  1346. front: {
  1347. height: math.unit(2, "meter"),
  1348. weight: math.unit(60, "kg"),
  1349. name: "Front",
  1350. image: {
  1351. source: "./media/characters/noah/front.svg"
  1352. }
  1353. },
  1354. talons: {
  1355. height: math.unit(0.315, "meter"),
  1356. name: "Talons",
  1357. image: {
  1358. source: "./media/characters/noah/talons.svg"
  1359. }
  1360. }
  1361. },
  1362. [
  1363. {
  1364. name: "Large",
  1365. height: math.unit(50, "feet")
  1366. },
  1367. {
  1368. name: "Macro",
  1369. height: math.unit(750, "feet")
  1370. },
  1371. {
  1372. name: "Megamacro",
  1373. height: math.unit(50, "miles")
  1374. },
  1375. {
  1376. name: "Gigamacro",
  1377. height: math.unit(100000, "miles")
  1378. },
  1379. {
  1380. name: "Full-Size",
  1381. height: math.unit(3000000000, "miles")
  1382. }
  1383. ],
  1384. math.unit(750, "feet")
  1385. )
  1386. };
  1387. characterMakers["Natalya"] = () => {
  1388. return makeCharacter(
  1389. "Natalya",
  1390. "Neopuc",
  1391. {
  1392. front: {
  1393. height: math.unit(2, "meter"),
  1394. weight: math.unit(80, "kg"),
  1395. name: "Front",
  1396. image: {
  1397. source: "./media/characters/natalya/front.svg"
  1398. }
  1399. },
  1400. back: {
  1401. height: math.unit(2, "meter"),
  1402. weight: math.unit(80, "kg"),
  1403. name: "Back",
  1404. image: {
  1405. source: "./media/characters/natalya/back.svg"
  1406. }
  1407. }
  1408. },
  1409. [
  1410. {
  1411. name: "Normal",
  1412. height: math.unit(150, "feet")
  1413. },
  1414. {
  1415. name: "Megamacro",
  1416. height: math.unit(5, "miles")
  1417. },
  1418. {
  1419. name: "Full-Size",
  1420. height: math.unit(600, "kiloparsecs")
  1421. }
  1422. ],
  1423. math.unit(150, "feet")
  1424. )
  1425. };
  1426. characterMakers["Erestrebah"] = () => {
  1427. return makeCharacter(
  1428. "Erestrebah",
  1429. "Kurrikage",
  1430. {
  1431. front: {
  1432. height: math.unit(2, "meter"),
  1433. weight: math.unit(50, "kg"),
  1434. name: "Front",
  1435. image: {
  1436. source: "./media/characters/erestrebah/front.svg"
  1437. }
  1438. },
  1439. back: {
  1440. height: math.unit(2, "meter"),
  1441. weight: math.unit(50, "kg"),
  1442. name: "Back",
  1443. image: {
  1444. source: "./media/characters/erestrebah/back.svg",
  1445. extra: 1.2139
  1446. }
  1447. }
  1448. },
  1449. [
  1450. {
  1451. name: "Normal",
  1452. height: math.unit(10, "feet")
  1453. },
  1454. {
  1455. name: "Large",
  1456. height: math.unit(50, "feet")
  1457. },
  1458. {
  1459. name: "Macro",
  1460. height: math.unit(300, "feet")
  1461. },
  1462. {
  1463. name: "Macro+",
  1464. height: math.unit(750, "feet")
  1465. },
  1466. {
  1467. name: "Megamacro",
  1468. height: math.unit(3, "miles")
  1469. }
  1470. ],
  1471. math.unit(50, "feet")
  1472. )
  1473. };
  1474. characterMakers["Jennifer"] = () => {
  1475. return makeCharacter(
  1476. "Jennifer",
  1477. "Neopuc",
  1478. {
  1479. front: {
  1480. height: math.unit(2, "meter"),
  1481. weight: math.unit(80, "kg"),
  1482. name: "Front",
  1483. image: {
  1484. source: "./media/characters/jennifer/front.svg",
  1485. bottom: 0.11,
  1486. extra: 1.16
  1487. }
  1488. },
  1489. frontAlt: {
  1490. height: math.unit(2, "meter"),
  1491. weight: math.unit(80, "kg"),
  1492. name: "Front (Alt)",
  1493. image: {
  1494. source: "./media/characters/jennifer/front-alt.svg"
  1495. }
  1496. }
  1497. },
  1498. [
  1499. {
  1500. name: "Canon Height",
  1501. height: math.unit(120, "feet")
  1502. },
  1503. {
  1504. name: "Macro+",
  1505. height: math.unit(300, "feet")
  1506. },
  1507. {
  1508. name: "Megamacro",
  1509. height: math.unit(20000, "feet")
  1510. }
  1511. ],
  1512. math.unit(120, "feet")
  1513. )
  1514. };
  1515. characterMakers["Kalista"] = () => {
  1516. return makeCharacter(
  1517. "Kalista",
  1518. "Kalista",
  1519. {
  1520. front: {
  1521. height: math.unit(2, "meter"),
  1522. weight: math.unit(50, "kg"),
  1523. name: "Front",
  1524. image: {
  1525. source: "./media/characters/kalista/front.svg"
  1526. }
  1527. },
  1528. back: {
  1529. height: math.unit(2, "meter"),
  1530. weight: math.unit(50, "kg"),
  1531. name: "Back",
  1532. image: {
  1533. source: "./media/characters/kalista/back.svg"
  1534. }
  1535. }
  1536. },
  1537. [
  1538. {
  1539. name: "Uncomfortably Small",
  1540. height: math.unit(10, "feet")
  1541. },
  1542. {
  1543. name: "Small",
  1544. height: math.unit(30, "feet")
  1545. },
  1546. {
  1547. name: "Macro",
  1548. height: math.unit(100, "feet")
  1549. },
  1550. {
  1551. name: "Macro+",
  1552. height: math.unit(2000, "feet")
  1553. },
  1554. {
  1555. name: "True Form",
  1556. height: math.unit(8924, "miles")
  1557. }
  1558. ],
  1559. math.unit(100, "feet")
  1560. )
  1561. };
  1562. characterMakers["GiantGrowingVixen"] = () => {
  1563. return makeCharacter(
  1564. "GiantGrowingVixen",
  1565. "GiantGrowingVixen",
  1566. {
  1567. front: {
  1568. height: math.unit(2, "meter"),
  1569. weight: math.unit(120, "kg"),
  1570. name: "Front",
  1571. image: {
  1572. source: "./media/characters/ggv/front.svg"
  1573. }
  1574. },
  1575. side: {
  1576. height: math.unit(2, "meter"),
  1577. weight: math.unit(120, "kg"),
  1578. name: "Side",
  1579. image: {
  1580. source: "./media/characters/ggv/side.svg"
  1581. }
  1582. }
  1583. },
  1584. [
  1585. {
  1586. name: "Extremely Puny",
  1587. height: math.unit(9 + 5/12, "feet")
  1588. },
  1589. {
  1590. name: "Horribly Small",
  1591. height: math.unit(47.7, "miles")
  1592. },
  1593. {
  1594. name: "Reasonably Sized",
  1595. height: math.unit(25000, "parsecs")
  1596. }
  1597. ],
  1598. math.unit(47.7, "miles")
  1599. )
  1600. };
  1601. characterMakers["Napalm"] = () => {
  1602. return makeCharacter(
  1603. "Napalm",
  1604. "RathDaKrogan",
  1605. {
  1606. front: {
  1607. height: math.unit(2, "meter"),
  1608. weight: math.unit(75, "lb"),
  1609. name: "Front",
  1610. image: {
  1611. source: "./media/characters/napalm/front.svg"
  1612. }
  1613. },
  1614. back: {
  1615. height: math.unit(2, "meter"),
  1616. weight: math.unit(75, "lb"),
  1617. name: "Back",
  1618. image: {
  1619. source: "./media/characters/napalm/back.svg"
  1620. }
  1621. }
  1622. },
  1623. [
  1624. {
  1625. name: "Standard",
  1626. height: math.unit(55, "feet")
  1627. }
  1628. ],
  1629. math.unit(55, "feet")
  1630. )
  1631. };
  1632. characterMakers["Asana"] = () => {
  1633. return makeCharacter(
  1634. "Asana",
  1635. "Asana",
  1636. {
  1637. front: {
  1638. height: math.unit(7 + 5/6, "feet"),
  1639. weight: math.unit(325, "lb"),
  1640. name: "Front",
  1641. image: {
  1642. source: "./media/characters/asana/front.svg",
  1643. extra: 1128/1068
  1644. }
  1645. },
  1646. back: {
  1647. height: math.unit(7 + 5/6, "feet"),
  1648. weight: math.unit(325, "lb"),
  1649. name: "Back",
  1650. image: {
  1651. source: "./media/characters/asana/back.svg",
  1652. extra: 1128/1068
  1653. }
  1654. },
  1655. },
  1656. [
  1657. {
  1658. name: "Standard",
  1659. height: math.unit(7 + 5/6, "feet")
  1660. },
  1661. {
  1662. name: "Large",
  1663. height: math.unit(10, "meters")
  1664. },
  1665. {
  1666. name: "Macro",
  1667. height: math.unit(2500, "meters")
  1668. },
  1669. {
  1670. name: "Megamacro",
  1671. height: math.unit(5e6, "meters")
  1672. },
  1673. {
  1674. name: "Examacro",
  1675. height: math.unit(5e12, "lightyears")
  1676. }
  1677. ],
  1678. math.unit(7 + 5/6, "feet")
  1679. )
  1680. };
  1681. characterMakers["Ebony"] = () => {
  1682. return makeCharacter(
  1683. "Ebony",
  1684. "Lazerwolf",
  1685. {
  1686. front: {
  1687. height: math.unit(2, "meter"),
  1688. weight: math.unit(60, "kg"),
  1689. name: "Front",
  1690. image: {
  1691. source: "./media/characters/ebony/front.svg",
  1692. bottom: 0.03,
  1693. extra: 1045/810 + 0.03
  1694. }
  1695. },
  1696. side: {
  1697. height: math.unit(2, "meter"),
  1698. weight: math.unit(60, "kg"),
  1699. name: "Side",
  1700. image: {
  1701. source: "./media/characters/ebony/side.svg",
  1702. bottom: 0.03,
  1703. extra: 1045/810 + 0.03
  1704. }
  1705. },
  1706. back: {
  1707. height: math.unit(2, "meter"),
  1708. weight: math.unit(60, "kg"),
  1709. name: "Back",
  1710. image: {
  1711. source: "./media/characters/ebony/back.svg",
  1712. bottom: 0.01,
  1713. extra: 1045/810 + 0.01
  1714. }
  1715. },
  1716. },
  1717. [
  1718. {
  1719. name: "Standard",
  1720. height: math.unit(9/8 * (7 + 5/12), "feet")
  1721. }
  1722. ],
  1723. math.unit(7 + 5/12, "feet")
  1724. )
  1725. };
  1726. characterMakers["Mountain"] = () => {
  1727. return makeCharacter(
  1728. "Mountain",
  1729. "Asana",
  1730. {
  1731. front: {
  1732. height: math.unit(6, "feet"),
  1733. weight: math.unit(175, "lb"),
  1734. name: "Front",
  1735. image: {
  1736. source: "./media/characters/mountain/front.svg"
  1737. }
  1738. },
  1739. back: {
  1740. height: math.unit(6, "feet"),
  1741. weight: math.unit(175, "lb"),
  1742. name: "Back",
  1743. image: {
  1744. source: "./media/characters/mountain/back.svg"
  1745. }
  1746. },
  1747. },
  1748. [
  1749. {
  1750. name: "Large",
  1751. height: math.unit(20, "meters")
  1752. },
  1753. {
  1754. name: "Macro",
  1755. height: math.unit(300, "meters")
  1756. },
  1757. {
  1758. name: "Gigamacro",
  1759. height: math.unit(10000, "km")
  1760. },
  1761. {
  1762. name: "Examacro",
  1763. height: math.unit(10e9, "lightyears")
  1764. }
  1765. ],
  1766. math.unit(10000, "km")
  1767. )
  1768. };
  1769. characterMakers["Rick"] = () => {
  1770. return makeCharacter(
  1771. "Rick",
  1772. "Victni",
  1773. {
  1774. front: {
  1775. height: math.unit(8, "feet"),
  1776. weight: math.unit(500, "lb"),
  1777. name: "Front",
  1778. image: {
  1779. source: "./media/characters/rick/front.svg"
  1780. }
  1781. }
  1782. },
  1783. [
  1784. {
  1785. name: "Normal",
  1786. height: math.unit(8, "feet")
  1787. },
  1788. {
  1789. name: "Macro",
  1790. height: math.unit(5, "km")
  1791. }
  1792. ],
  1793. math.unit(8, "feet")
  1794. )
  1795. };
  1796. function makeCharacters() {
  1797. const results = [];
  1798. results.push({
  1799. name: "Sofia",
  1800. constructor: makeSofia
  1801. });
  1802. results.push({
  1803. name: "March",
  1804. constructor: makeMarch
  1805. });
  1806. results.push({
  1807. name: "Noir",
  1808. constructor: makeNoir
  1809. });
  1810. results.push({
  1811. name: "Okuri",
  1812. constructor: makeOkuri
  1813. });
  1814. results.push({
  1815. name: "Manny",
  1816. constructor: makeManny
  1817. });
  1818. results.push({
  1819. name: "Adake",
  1820. constructor: makeAdake
  1821. });
  1822. results.push({
  1823. name: "Elijah",
  1824. constructor: makeElijah
  1825. });
  1826. results.push({
  1827. name: "Rai",
  1828. constructor: makeRai
  1829. });
  1830. results.push({
  1831. name: "Jazzy",
  1832. constructor: makeJazzy
  1833. });
  1834. results.push({
  1835. name: "Flamm",
  1836. constructor: makeFlamm
  1837. });
  1838. results.push({
  1839. name: "Zephiro",
  1840. constructor: makeZephiro
  1841. });
  1842. results.push({
  1843. name: "Fory",
  1844. constructor: makeFory
  1845. });
  1846. results.push({
  1847. name: "Kurrikage",
  1848. constructor: makeKurrikage
  1849. });
  1850. results.push({
  1851. name: "Shingo",
  1852. constructor: makeShingo
  1853. });
  1854. results.push({
  1855. name: "Aigey",
  1856. constructor: makeAigey
  1857. });
  1858. results.push({
  1859. name: "Natasha",
  1860. constructor: makeNatasha
  1861. });
  1862. results.push({
  1863. name: "Malik",
  1864. constructor: makeMalik
  1865. });
  1866. results.push({
  1867. name: "Sefer",
  1868. constructor: makeSefer
  1869. });
  1870. results.push({
  1871. name: "Normal man",
  1872. constructor: makeMan
  1873. });
  1874. Object.entries(characterMakers).forEach(([key, value]) => {
  1875. results.push({
  1876. name: key,
  1877. constructor: value
  1878. });
  1879. });
  1880. return results;
  1881. }