StartingCharacters.ts 28 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090
  1. setup.getStartingCharacter = function(id=undefined){
  2. id ??= State.variables.startCharacter;
  3. let currentData = clone(setup.startingCharacters[id]);
  4. currentData.inheritance = [id];
  5. if("parent" in currentData){
  6. let parentData = setup.getStartingCharacter(currentData.parent);
  7. let newcurrentData = setup.mergeDeep(parentData,currentData,{inheritance:[...parentData.inheritance,...currentData.inheritance]});
  8. currentData = newcurrentData;
  9. delete currentData.parent;
  10. }
  11. return currentData;
  12. }
  13. setup.getStartingCharactersByFilter = function(filters,shallow = true){
  14. let result = {};
  15. charLoop: for (const [charId, charData] of Object.entries(setup.startingCharacters)) {
  16. for (const [filterKey, filterValue] of Object.entries(filters)) {
  17. if(charData[filterKey] !== filterValue)
  18. continue charLoop;
  19. if(shallow)
  20. result[charId] = charData;
  21. else
  22. result[charId] = setup.getStartingCharacter(charId);
  23. }
  24. }
  25. return result;
  26. }
  27. setup.startingCharacterApply = function(characterId){
  28. const startCharacterData = setup.getStartingCharacter(characterId);
  29. const variables = State.variables;
  30. variables.startCharacter = characterId;
  31. variables.pc.avatar = startCharacterData.image;
  32. if(startCharacterData.time){
  33. if(startCharacterData.time.start){
  34. variables.time.initTime(
  35. startCharacterData.time.start[0],
  36. startCharacterData.time.start[1],
  37. startCharacterData.time.start[2],
  38. startCharacterData.time.start[3],
  39. startCharacterData.time.start[4]);
  40. }
  41. }
  42. variables.housing.home = startCharacterData.housing.home;
  43. for(const [_key,_value] of Object.entries(startCharacterData.pc ?? {})){
  44. variables.pc[_key] = _value;
  45. }
  46. for(const [_locationId,_locationValue] of Object.entries(startCharacterData.location ?? {})){
  47. for(const [_fieldId,_fieldValue] of Object.entries(_locationValue ?? {})){
  48. variables.location.set(_locationId,_fieldId,_fieldValue);
  49. }
  50. }
  51. for(const [_locationTag,_locationTagValue] of Object.entries(startCharacterData.locationTags ?? {})){
  52. for(const [_fieldId,_fieldValue] of Object.entries(_locationTagValue ?? {})){
  53. variables.location.setTagValue(_locationTag,_fieldId,_fieldValue);
  54. }
  55. }
  56. for(const [_key,_value] of Object.entries(startCharacterData.quests ?? {})){
  57. if(_value === true){
  58. variables.quest(_key).start();
  59. }
  60. }
  61. for(const [_key,_value] of Object.entries(startCharacterData.skills ?? {})){
  62. variables.pc.skillSetLevel(_key,_value);
  63. }
  64. for(const [_key,_value] of Object.entries(startCharacterData.traits ?? {})){
  65. variables.pc.traitSet(_key,_value);
  66. }
  67. for(const [_key,_value] of Object.entries(startCharacterData.finances ?? {})){
  68. variables.finances[_key] = _value;
  69. }
  70. for(const [_key,_value] of Object.entries(startCharacterData.items ?? {})){
  71. if(typeof _value == "number")
  72. variables.inventory.set(_key,_value);
  73. else if(typeof _value === "object"){
  74. if(_value.generateFunction)
  75. variables.inventory.set(_key,1,undefined,setup[_value.generateFunction](...(_value.generateParameters ?? [])));
  76. else
  77. variables.inventory.set(_key,1,undefined,_value);
  78. }
  79. }
  80. //<!-- NPCs -->
  81. //<!-- BULK -->
  82. for(const [_key,_value] of Object.entries(startCharacterData.npcs?.bulk ?? {})){
  83. let _filters = _value.filters ?? {};
  84. for(const [_fieldKey,_fieldValue] of Object.entries(_value.values ?? {})){
  85. variables.npcs.setBulkByFilter(_filters,_fieldKey,_fieldValue);
  86. }
  87. }
  88. //<!-- IDs: Need to come bulk so they don't get overwritten -->
  89. for(const [_key,_value] of Object.entries(startCharacterData.npcs?.ids ?? {})){
  90. for(const [_fieldKey,_fieldValue] of Object.entries(_value)){
  91. variables.npcs.set(_key,_fieldKey,_fieldValue);
  92. }
  93. }
  94. //<!-- School stuff -->
  95. if(startCharacterData.school){
  96. for(const [_key,_value] of Object.entries(startCharacterData.school.grades ?? {})){
  97. variables.quest('school').func('grade_award',_key,_value);
  98. }
  99. variables.quest('school').func('initGroupMembership',startCharacterData.school.group);
  100. }
  101. //<!--Wardrobe -->
  102. for(const [_key,_value] of Object.entries(startCharacterData.wardrobe?.items ?? {})){
  103. if(_value === 'wear')
  104. variables.wardrobe.wear(_key);
  105. else if(_value === 'add')
  106. variables.wardrobe.add(_key);
  107. }
  108. for(const [_key,_value] of Object.entries(startCharacterData.wardrobe?.itemsByFilter ?? {})){
  109. let _filters = _value.filters;
  110. let _count = _value.count ?? 1;
  111. let _action = _value.action ?? 'add';
  112. let _itemIds = variables.wardrobe.allItemIdsFiltered(_filters,_count,true);
  113. for(const _itemId of _itemIds){
  114. switch(_action){
  115. case 'add':
  116. variables.wardrobe.add(_itemId);
  117. break;
  118. case 'wear':
  119. variables.wardrobe.wear(_itemId);
  120. break;
  121. }
  122. }
  123. }
  124. }
  125. setup.startingCharacterTagsIncludes = function(tag){
  126. const startData = setup.getStartingCharacter(State.variables.startCharacter) ?? {};
  127. const startDataTags = startData.tags ?? [];
  128. return startDataTags.includes(tag);
  129. }
  130. setup.startingCharacters ??= {};
  131. setup.startingCharacters.default = {
  132. pc:{
  133. faceGeneticAttractiveness: 0,
  134. hairColor: 0,
  135. hairLength: 300,
  136. teethQuality: 1,
  137. tits: 2,
  138. pcs_hgt: 167
  139. },
  140. finances:{
  141. cash: 2000
  142. },
  143. items:{
  144. sanpad:10
  145. },
  146. npcs:{
  147. bulk:{
  148. parents_social:{
  149. filters:{
  150. group: 'group_parents_social'
  151. }
  152. }
  153. }
  154. }
  155. };
  156. setup.startingCharacters.sg_starting_category = {
  157. parent: 'default',
  158. housing:{
  159. home: 'homeParents'
  160. },
  161. quests:{
  162. school: true,
  163. school_mother: true,
  164. mother_virgin: true,
  165. christina: true
  166. },
  167. npcs:{
  168. bulk:{
  169. cool:{
  170. filters:{
  171. group: 'cool'
  172. },
  173. values:{
  174. fam: 150,
  175. rel: 30
  176. }
  177. },
  178. jocks:{
  179. filters:{
  180. group: 'jocks'
  181. },
  182. values:{
  183. fam: 150,
  184. rel: 30
  185. }
  186. },
  187. nerds:{
  188. filters:{
  189. group: 'nerds'
  190. },
  191. values:{
  192. fam: 150,
  193. rel: 30
  194. }
  195. },
  196. ouctasts:{
  197. filters:{
  198. group: 'ouctasts'
  199. },
  200. values:{
  201. fam: 150,
  202. rel: 30
  203. }
  204. },
  205. gopniks:{
  206. filters:{
  207. group: 'gopniks'
  208. },
  209. values:{
  210. fam: 150,
  211. rel: 30
  212. }
  213. },
  214. teachers:{
  215. filters:{
  216. group: 'teachers'
  217. },
  218. values:{
  219. fam: 50,
  220. rel: 50
  221. }
  222. }
  223. }
  224. },
  225. wardrobe:{
  226. items:{
  227. 'danilovich_swim_one_16':'add'
  228. }
  229. },
  230. tags: ['sg']
  231. }
  232. setup.startingCharacters.nerd = {
  233. parent: 'sg_starting_category',
  234. label: 'Nerd',
  235. image: 'system/1_openings/2_sg/nerd_0.jpg',
  236. desc: 'Nerds, geeks and good students - These students tend to do well in school and are well liked by teachers and other adults. They tend to not have many friends outside of their own social group, however, and are also sometimes picked on or bullied. They are subpar athletically and place less value on looks and social skills than other cliques.',
  237. pc:{
  238. bmi: 24,
  239. legHairVisibility: 4,
  240. skinAppearance: 0,
  241. tan: 0
  242. },
  243. skills:{
  244. chess:20,
  245. computer:20,
  246. gaming:20,
  247. highHeels:5,
  248. inhibition:10,
  249. intelligence:45,
  250. makeup:15,
  251. },
  252. items:{
  253. nerd_startarting_book_1:{
  254. generateFunction:'generateBook',
  255. generateParameters:['fantasy']
  256. },
  257. nerd_startarting_book_2:{
  258. generateFunction:'generateBook',
  259. generateParameters:['scifi']
  260. }
  261. },
  262. finances:{
  263. cash: 5000
  264. },
  265. traits:{
  266. nerd_points:60,
  267. nerd_status:2,
  268. nerd_lernHome:5,
  269. },
  270. school:{
  271. grades:{ art:75, bio:80, comp:80, eng:85, geo:80, his:80, lit:80, math:85, mus:75, pe:60, rus:80, sci:90, shop:55 },
  272. group: 'nerds'
  273. },
  274. npcs:{
  275. bulk:{
  276. nerds:{
  277. values:{
  278. fam: 500,
  279. rel: 65
  280. }
  281. },
  282. parents_social:{
  283. values:{
  284. rel: 70
  285. }
  286. }
  287. }
  288. },
  289. tags: ['nerd']
  290. };
  291. setup.startingCharacters.nerd_queen = {
  292. parent: 'nerd',
  293. label: 'Queen of the nerds',
  294. image: 'system/1_openings/2_sg/nerd_1.jpg',
  295. desc: `While you love all things nerdy, what you love the most is hanging out with your fellow nerds and doing nerdy things together. This has made you fairly social for a nerd and more general in your areas of knowledge. As you got older and started to develop as a woman, it also made you much more aware of your sexuality than most nerds are comfortable with. As such, you cultivated that awareness more than most and are now more at ease with your body than most of the other nerds.
  296. By nerd standards, you are confident, dynamic and attractive and this has led to you being the leader of your group of friends. You are more acceptable to other social groups as a result, especially the cool kids, who seem to respect your social skills and looks.`,
  297. pc:{
  298. bmi: 20,
  299. faceGeneticAttractiveness: 1,
  300. hairColor: 3,
  301. legHairVisibility: 1,
  302. skinAppearance: 1,
  303. teethQuality:0,
  304. tits: 4,
  305. willpowermax: 70
  306. },
  307. skills:{
  308. charisma:40,
  309. highHeels:25,
  310. inhibition:20,
  311. makeup:30,
  312. people:20,
  313. persuasion:20,
  314. iceskating:10,
  315. spirit:40,
  316. },
  317. items:{
  318. cosmetics:10,
  319. razor:10
  320. },
  321. npcs:{
  322. bulk:{
  323. cool:{ values:{ fam: 300, rel: 50}},
  324. jocks:{ values:{ fam: 200, rel: 40}},
  325. nerds:{ values:{ rel: 75}},
  326. gopniks:{values:{ fam: 200, rel: 20}},
  327. ouctasts:{values:{ fam: 200, rel: 30}},
  328. }
  329. },
  330. wardrobe:{
  331. itemsByFilter:{
  332. anyFashionistaPurse:{
  333. filters:{
  334. vendor:'fashionista',
  335. type: 'purse'
  336. },
  337. action: 'wear'
  338. }
  339. }
  340. }
  341. };
  342. setup.startingCharacters.goodStudent = {
  343. parent: 'nerd',
  344. label: 'Good student',
  345. image: 'system/1_openings/2_sg/nerd_2.jpg',
  346. desc: `You just love school, and your grades are more than good enough to attend the university of your choosing after graduation - all you have to do is not let them slip. You have always tried to absorb every bit of knowledge possible and have done everything you can to excel in school. While this attitude has gained you a lot of respect from the other nerds, it didn't earn you a lot of friends and you never found the time for sports.
  347. You are often asked to be a tutor and sometimes find yourself forced to do others' homework for them. You have excellent grades, and your mother is very proud of you. She has shown her appreciation for your hard work by rewarding you with money.`,
  348. pc:{
  349. hairLength: 300,
  350. willpowermax: 75
  351. },
  352. skills:{
  353. intelligence:60,
  354. playInstrument:10,
  355. art:10,
  356. },
  357. traits:{
  358. nerd_points:100,
  359. nerd_status:3,
  360. },
  361. school:{
  362. grades:{ art:90, bio:90, comp:90, eng:90, geo:90, his:90, lit:90, math:90, mus:90, pe:55, rus:90, sci:90, shop:55 }
  363. },
  364. finances:{
  365. cash: 7000
  366. },
  367. items:{
  368. },
  369. npcs:{
  370. },
  371. wardrobe:{
  372. }
  373. };
  374. setup.startingCharacters.computerGeek = {
  375. parent: 'nerd',
  376. label: 'Computer geek',
  377. image: 'system/1_openings/2_sg/nerd_3.jpg',
  378. desc: `You were always into computers, whether it be by playing video games, taking computers apart or learning programing and even hacking. You love everything about computers, but this passion left you little time to make friends - real-life friends, at least. You have managed to befriend many online players that you talk to while you play various video games, however, and you rarely spend any time outdoors, nor money on clothes or other girly stuff. You are far more interested in saving your money for a better computer in order to play even better games.
  379. You've considered hosting a web series of video games or vlogs - you even took the time to learn how to video edit - but you aren't sure if you want to put yourself out there like that.`,
  380. pc:{
  381. bmi: 20,
  382. hairColor: 3,
  383. willpowermax: 60
  384. },
  385. skills:{
  386. intelligence:55,
  387. computer:40,
  388. hacking:20,
  389. gaming:30,
  390. },
  391. traits:{
  392. },
  393. school:{
  394. grades:{ comp:95}
  395. },
  396. location:{
  397. bedrPar:{
  398. furniture:{
  399. computer: {}
  400. }
  401. }
  402. },
  403. locationTags:{
  404. homeParents:{
  405. internet: true
  406. }
  407. },
  408. npcs:{
  409. },
  410. wardrobe:{
  411. }
  412. };
  413. setup.startingCharacters.chessPlayer = {
  414. parent: 'nerd',
  415. label: 'Avid chess player',
  416. image: 'system/1_openings/2_sg/nerd_4.jpg',
  417. desc: `You were always into chess as a child, and have studied all the great chess masters. You can name them all, as well as their favorite strategies! You find nothing more interesting than matching your wits against someone else's in a game of chess. It has left you with the ability to often see the consequences of your actions better than most as you are used to looking several moves ahead.
  418. All of this has left you with little time to make many friends, and you rarely spend any time outdoors.`,
  419. pc:{
  420. hairColor: 3,
  421. hairLength: 200,
  422. willpowermax: 65
  423. },
  424. skills:{
  425. intelligence:55,
  426. perception:40,
  427. reaction:40,
  428. chess:40,
  429. },
  430. traits:{
  431. },
  432. school:{
  433. },
  434. items:{
  435. },
  436. npcs:{
  437. },
  438. wardrobe:{
  439. }
  440. };
  441. setup.startingCharacters.jock = {
  442. parent: 'sg_starting_category',
  443. label: 'Jock',
  444. image: 'system/1_openings/2_sg/jock_0.jpg',
  445. desc: "Jocks and natural athletes - These students are gifted in their chosen sport and are very athletically inclined. This means that they tend to be fit and in good shape, often making them better looking than many of the other students. They get along with other jocks and are respected by the cool kids while being feared by the nerds and losers. They don't value academic achievements and can come into conflict with the gopniks and other troublemakers.",
  446. pc:{
  447. bmi: 20,
  448. legHairVisibility: 2,
  449. tan: 20
  450. },
  451. skills:{
  452. agility:45,
  453. bushcraft:5,
  454. dance:10,
  455. football:10,
  456. highHeels:20,
  457. iceskating:20,
  458. inhibition:20,
  459. makeup:30,
  460. people:10,
  461. reaction:45,
  462. run:20,
  463. spirit:45,
  464. strength:75,
  465. vitality:45,
  466. volleyball:10,
  467. },
  468. items:{
  469. cosmetics: 10,
  470. hairScrunchie: 10,
  471. razor: 10,
  472. sanpad: 20,
  473. tampon: 20,
  474. },
  475. school:{
  476. grades:{ art:55, bio:55, comp:55, eng:55, geo:55, his:55, lit:55, math:55, mus:55, pe:95, rus:55, sci:55, shop:55 },
  477. group: 'jocks'
  478. },
  479. npcs:{
  480. bulk:{
  481. cool:{
  482. values:{
  483. fam: 300,
  484. rel: 55
  485. }
  486. },
  487. jocks:{
  488. values:{
  489. fam: 500,
  490. rel: 65
  491. }
  492. }
  493. }
  494. },
  495. wardrobe:{
  496. itemsByFilter:{
  497. anyFashionistaPurse:{
  498. filters:{
  499. vendor:'fashionista',
  500. type: 'purse'
  501. },
  502. action: 'wear'
  503. }
  504. }
  505. }
  506. };
  507. setup.startingCharacters.volleyball = {
  508. parent: 'jock',
  509. label: 'Volleyball player',
  510. image: 'system/1_openings/2_sg/jock_1.jpg',
  511. desc: `Ever since the first time you played volleyball, you have been in love with the sport. You spent a lot of your free time trying to improve your ability, and it paid off; you're actually quite good now! Your obsession with volleyball, however, has had some repercussions on your school performance. You're a sub-par student, and you haven't made many friends other than your fellow jocks. You are especially close with <<=$npc('A13').firstname>> and your coach.`,
  512. pc:{
  513. bmi: 21,
  514. hairColor: 3,
  515. hairLength: 400,
  516. tits: 3,
  517. willpowermax: 70
  518. },
  519. skills:{
  520. volleyball:50,
  521. },
  522. finances:{
  523. },
  524. items:{
  525. },
  526. npcs:{
  527. bulk:{
  528. cool:{ values:{ fam: 200, rel: 50}},
  529. jocks:{ values:{ fam: 300, rel: 50}},
  530. },
  531. ids:{
  532. A13:{rel: 80,fam:700},
  533. A69:{rel: 80,fam:700},
  534. }
  535. }
  536. };
  537. setup.startingCharacters.dancer = {
  538. parent: 'jock',
  539. label: 'Dancer',
  540. image: 'system/1_openings/2_sg/jock_2.jpg',
  541. desc: `You fell in love with dancing at an early age and never looked back. You spent a lot of your free time trying to improve your skills, and it paid off; you're actually quite good now!
  542. <<=$npc('A11').firstname>> helpfully pointed out that an added benefit of dance was a greater increase in your flexibility (that is, of course, typical of <<=$npc('A11').firstname>>). Your obsession with dancing, however, has had some repercussions on your school performance. You're a sub-par student, and you haven't made many friends other than your fellow jocks.
  543. You are particularly close with <<=$npc('A23').firstname>>, who is just as passionate about dancing as you are. You trained a lot together as children and have a mutual respect for each other's abilities.`,
  544. pc:{
  545. bmi: 19,
  546. hairColor: 0,
  547. hairLength: 300,
  548. skinAppearance: 1,
  549. tan: 5,
  550. willpowermax: 80
  551. },
  552. skills:{
  553. agility:50,
  554. charisma:40,
  555. dance:50,
  556. highHeels:30,
  557. inhibition:30,
  558. makeup:40,
  559. perform:35,
  560. spirit:45,
  561. },
  562. finances:{
  563. },
  564. items:{
  565. },
  566. school:{
  567. grades:{mus:95},
  568. },
  569. npcs:{
  570. bulk:{
  571. },
  572. ids:{
  573. A23:{rel: 85,fam:700},
  574. A144:{rel: 70,fam:600},
  575. }
  576. }
  577. };
  578. // TODO: Eveerything below is dummy
  579. setup.startingCharacters.runner = {
  580. parent: 'jock',
  581. label: 'Runner',
  582. image: 'system/1_openings/2_sg/jock_3.jpg',
  583. desc: `Ever since you first tried track, you have been in love with the sport. When you're running, the rest of the world fades away and you experience a natural high like no other. You spent a lot of your free time trying to get better at it, and it paid off; you're actually quite good now! Your obsession with running, however, has had some repercussions on your school performance. You're a sub-par student, and you haven't made many friends other than your fellow jocks and your coach.`,
  584. pc:{
  585. },
  586. skills:{
  587. },
  588. finances:{
  589. },
  590. items:{
  591. },
  592. school:{
  593. },
  594. npcs:{
  595. }
  596. };
  597. setup.startingCharacters.football = {
  598. parent: 'jock',
  599. label: 'Football player',
  600. image: 'system/1_openings/2_sg/jock_4.jpg',
  601. desc: `Ever since your first football game, you have been in love with the sport. You spent a lot of your free time trying to get better at it, and it paid off; you're actually quite good now! Your obsession with football has had some repercussions on your school performance, however, and you're now a sub-par student. You haven't made many friends other than your fellow jocks, especially <<=$npc('A149').firstname>> and your coach.`,
  602. pc:{
  603. },
  604. skills:{
  605. },
  606. finances:{
  607. },
  608. items:{
  609. },
  610. school:{
  611. },
  612. npcs:{
  613. }
  614. };
  615. setup.startingCharacters.cool = {
  616. parent: 'sg_starting_category',
  617. label: 'Popular kid',
  618. image: 'system/1_openings/2_sg/popular_0.jpg',
  619. desc: `The popular, cool and beautiful - These students are typically socially-gifted and are often blessed with natural good looks. They are envied by many because of this, and most want to be their friends. More than any other clique, they have the ability to ruin someone's reputation and make them social outcasts, which earns them the fear of many students. Being cool and good looking is all they value, so they tend to be subpar both athletically and academically.
  620. You spent most of your childhood outdoors, playing with other boys and girls. As a result, you're quite healthy and have a keen understanding about how to get yourself out of trouble (or shifting the blame to someone else). You were never very interested in school or sports, however, and are only a sub-par student. Your popularity has negatively impacted your relationship with <<=$npc('A11').firstname>>, and you're not as close as you once were.`,
  621. pc:{
  622. bmi: 22,
  623. legHairVisibility: 1,
  624. tan: 5,
  625. teethQuality:0,
  626. willpowermax: 70
  627. },
  628. skills:{
  629. charisma:45,
  630. dance:10,
  631. highHeels:30,
  632. iceskating:10,
  633. inhibition:20,
  634. makeup:40,
  635. people:30,
  636. perception: 45,
  637. persuasion: 30,
  638. spirit:45,
  639. },
  640. finances:{
  641. cash: 3000
  642. },
  643. items:{
  644. cosmetics: 20,
  645. hairScrunchie: 10,
  646. razor: 20,
  647. sanpad: 20,
  648. tampon: 20,
  649. },
  650. school:{
  651. grades:{ art:65, bio:65, comp:65, eng:65, geo:65, his:65, lit:65, math:65, mus:65, pe:65, rus:65, sci:65, shop:55 },
  652. group: 'cool'
  653. },
  654. npcs:{
  655. bulk:{
  656. cool:{
  657. values:{
  658. fam: 500,
  659. rel: 65
  660. }
  661. },
  662. jocks:{
  663. values:{
  664. fam: 300,
  665. rel: 55
  666. }
  667. }
  668. }
  669. },
  670. wardrobe:{
  671. itemsByFilter:{
  672. anyFashionistaPurse:{
  673. filters:{
  674. vendor:'fashionista',
  675. type: 'purse'
  676. },
  677. action: 'wear'
  678. }
  679. }
  680. }
  681. };
  682. setup.startingCharacters.beautiful = {
  683. parent: 'cool',
  684. label: 'Beautiful',
  685. image: 'system/1_openings/2_sg/popular_2.jpg',
  686. desc: `You might not be the smartest, be the most social or have the toughest attitude - but what you do have is natural good looks. You blossomed earlier than most girls and the boys took note, especially <<=$npc('A11').firstname>>, who started acting differently around you. As you got older your looks only improved, and you are often considered one of the best looking girls wherever you go.
  687. You are especially popular with the cool kids and jocks.`,
  688. pc:{
  689. bmi: 20,
  690. faceGeneticAttractiveness:2,
  691. hairColor: 0,
  692. hairLength: 400,
  693. skinAppearance: 2,
  694. tan: 50,
  695. tits:4,
  696. willpowermax: 80
  697. },
  698. skills:{
  699. highHeels:40,
  700. inhibition:25,
  701. makeup:50,
  702. people:20,
  703. },
  704. finances:{
  705. },
  706. items:{
  707. comb: 1,
  708. cosmetics: 50,
  709. sunblock: 10,
  710. },
  711. school:{
  712. grades:{},
  713. },
  714. npcs:{
  715. bulk:{
  716. },
  717. ids:{
  718. }
  719. }
  720. };
  721. setup.startingCharacters.sociable = {
  722. parent: 'cool',
  723. label: 'Sociable',
  724. image: 'system/1_openings/2_sg/popular_1.jpg',
  725. desc: `You're friends with all of the important kids at school, which is what really matters. You were very social growing up and enjoyed being around others, often becoming the center of attention.
  726. You've always had a knack for knowing the right thing to say at the right moment, which led to many other students wanting to be your friend. You can, with a little work, get along with nearly anyone if you put your mind to it.`,
  727. pc:{
  728. hairColor: 3,
  729. hairLength: 250,
  730. },
  731. skills:{
  732. charisma:50,
  733. people:40,
  734. },
  735. finances:{
  736. },
  737. items:{
  738. },
  739. school:{
  740. grades:{},
  741. },
  742. npcs:{
  743. bulk:{
  744. },
  745. ids:{
  746. }
  747. }
  748. };
  749. setup.startingCharacters.gopnik = {
  750. parent: 'sg_starting_category',
  751. label: 'Gopnik',
  752. image: 'system/1_openings/2_sg/gopnik_0.jpg',
  753. desc: `Gopniks, rebels, punks and troublemakers - These students don't play by the rules and, in fact, will often happily piss on them if given half a chance. They are in decent shape from all of their fighting and troublemaking, but their predilection for drinking, smoking and drugs often counteracts this to a point. They are not the most well-liked students; teachers and parents alike take a dim view of them, as do the local police. Most students fear them, either from the years of bullying or from the gopniks' willingness to fight. Some students secretly envy their carefree attitude and apparent ability to sneer and wave off many of the social pitfalls that other students face.`,
  754. pc:{
  755. bmi: 22,
  756. legHairVisibility: 4,
  757. tan: 10,
  758. willpowermax: 75
  759. },
  760. skills:{
  761. agility:40,
  762. highHeels:10,
  763. inhibition:25,
  764. makeup:25,
  765. people:10,
  766. reaction:40,
  767. run:20,
  768. spirit:40,
  769. strength: 50,
  770. vitality: 40,
  771. },
  772. finances:{
  773. },
  774. items:{
  775. cosmetics: 10,
  776. razor: 10,
  777. sanpad: 30,
  778. tampon: 10,
  779. },
  780. school:{
  781. grades:{ art:25, bio:25, comp:25, eng:25, geo:25, his:25, lit:25, math:25, mus:25, pe:80, rus:25, sci:25, shop:80 },
  782. group: 'gopniks'
  783. },
  784. npcs:{
  785. bulk:{
  786. gopniks:{
  787. values:{
  788. fam: 500,
  789. rel: 65
  790. }
  791. },
  792. teachers:{
  793. values:{
  794. rel: 30
  795. }
  796. },
  797. }
  798. },
  799. wardrobe:{
  800. }
  801. };
  802. setup.startingCharacters.truegopnik = {
  803. parent: 'gopnik',
  804. label: 'Gopnik',
  805. image: 'system/1_openings/2_sg/gopnik_1.jpg',
  806. desc: `You are a gopnik. While you're still low in the gopnik pecking order, you've already proven yourself to them and most of them accept you as an equal. You have problems at home and school due to your antisocial behavior. This is especially true with your mother and stepfather, who see you going down the wrong path.
  807. The jocks have a not so friendly rivalry with you and the other gopniks. While you don't get along, some of them have mutal respect for you.`,
  808. pc:{
  809. bmi: 23,
  810. hairColor:1
  811. },
  812. skills:{
  813. defense: 35,
  814. jabs: 35,
  815. kick: 35,
  816. punch: 35,
  817. strength: 70,
  818. vitality: 45,
  819. },
  820. finances:{
  821. },
  822. items:{
  823. },
  824. school:{
  825. },
  826. npcs:{
  827. bulk:{
  828. gopniks:{
  829. values:{
  830. fam: 500,
  831. rel: 75
  832. }
  833. },
  834. parents_social:{
  835. values:{
  836. rel: 30
  837. }
  838. },
  839. }
  840. },
  841. wardrobe:{
  842. }
  843. };
  844. setup.startingCharacters.troublemaker = {
  845. parent: 'gopnik',
  846. label: 'Troublemaker',
  847. image: 'system/1_openings/2_sg/gopnik_2.jpg',
  848. desc: `You are a troublemaker. Nothing makes you happier than causing problems, whether it be petty larceny, getting into fights or vandalism. You live for the thrill of breaking the rules. You get along fairly well with the gopniks and they accept you as a kindred spirit, loving your willingness to jump head first into any and all trouble you run across - and if you can't find any, you will happily make your own, which keeps things lively.
  849. You have problems at home and school due to your antisocial behavior. This is especially true with your mother and stepfather, who see you going down the wrong path. You are well known to both your teachers and the police.`,
  850. pc:{
  851. bmi: 20,
  852. hairColor:0,
  853. willpowermax: 70
  854. },
  855. skills:{
  856. defense:20,
  857. inhibition:30,
  858. jabs: 20,
  859. kick: 20,
  860. punch: 20,
  861. spirit:40,
  862. strength: 60,
  863. vitality: 40,
  864. },
  865. traits:{
  866. nerd_points:-50,
  867. },
  868. finances:{
  869. },
  870. items:{
  871. },
  872. npcs:{
  873. bulk:{
  874. gopniks:{
  875. values:{
  876. fam: 500,
  877. rel: 75
  878. }
  879. },
  880. parents_social:{
  881. values:{
  882. rel: 25
  883. }
  884. },
  885. }
  886. },
  887. wardrobe:{
  888. items:{
  889. dolls_purse_16:'wear'
  890. }
  891. }
  892. };
  893. /*setup.startingCharacters.vitekGirlfriend = {
  894. parent: 'gopnik',
  895. label: "Vitek's girlfriend",
  896. image: 'system/1_openings/2_sg/gopnik_3.jpg',
  897. desc: `You are <<=$npc('A9').nickname_possessive>> girlfriend. You love the thrill and danger of hanging out with the gopniks, even if you lack the true attitude yourself. You met <<=$npc('A9').nickname>> after he and <<=$npc('A11').firstname>> became friends. There was something about his bad boy attitude that drew you in, and you soon found yourself falling for him.
  898. As you developed, he started to take an interest in you as well and you soon started dating. You're not technically a gopnik - you are considered more of a wannabe - but the rest of the gopniks seem to accept you anyways. You're not sure what would happen if you ever broke up with <<=$npc('A9').nickname>>, however, as being his girlfriend and hanging out with the other gopniks has cost you any real, close friends outside of their group.`,
  899. pc:{
  900. bmi: 20,
  901. hairColor:0,
  902. tits:4,
  903. willpowermax: 70
  904. },
  905. skills:{
  906. defense:20,
  907. inhibition:30,
  908. jabs: 20,
  909. kick: 20,
  910. punch: 20,
  911. spirit:40,
  912. strength: 60,
  913. vitality: 40,
  914. },
  915. traits:{
  916. nerd_points:-50,
  917. },
  918. finances:{
  919. },
  920. items:{
  921. },
  922. npcs:{
  923. bulk:{
  924. gopniks:{
  925. values:{
  926. fam: 500,
  927. rel: 75
  928. }
  929. },
  930. parents_social:{
  931. values:{
  932. rel: 25
  933. }
  934. },
  935. }
  936. },
  937. wardrobe:{
  938. items:{
  939. dolls_purse_16:'wear'
  940. }
  941. }
  942. };*/
  943. setup.startingCharacters.outcast = {
  944. parent: 'sg_starting_category',
  945. label: 'Social Outcast',
  946. image: 'system/1_openings/2_sg/outcast_0.jpg',
  947. desc: `Losers, teachers' pets, sluts and the ugly - These students are the outcasts, the people no one likes to spend time with, other than to bully them. Perhaps they are just socially awkward and never made many friends, broke one of the unwritten social rules, are ugly, a snitch, a slut and/or an outed gay boy. Either way, they all have one thing in common: they are easy targets to bully and mock.`,
  948. pc:{
  949. bmi: 22,
  950. legHairVisibility: 4,
  951. tan: 10,
  952. willpowermax: 75
  953. },
  954. /*
  955. skills:{
  956. agility:40,
  957. highHeels:10,
  958. inhibition:25,
  959. makeup:25,
  960. people:10,
  961. reaction:40,
  962. run:20,
  963. spirit:40,
  964. strength: 50,
  965. vitality: 40,
  966. },
  967. finances:{
  968. },
  969. items:{
  970. cosmetics: 10,
  971. razor: 10,
  972. sanpad: 30,
  973. tampon: 10,
  974. },
  975. */
  976. school:{
  977. grades:{ art:50, bio:50, comp:50, eng:50, geo:50, his:50, lit:50, math:50, mus:50, pe:50, rus:50, sci:50, shop:50 },
  978. group: 'outcasts'
  979. },/*
  980. npcs:{
  981. bulk:{
  982. gopniks:{
  983. values:{
  984. fam: 500,
  985. rel: 65
  986. }
  987. },
  988. teachers:{
  989. values:{
  990. rel: 30
  991. }
  992. },
  993. }
  994. },
  995. wardrobe:{
  996. }*/
  997. };
  998. setup.startingCharacters.ugly = {
  999. parent: 'outcast',
  1000. label: 'Ugly duckling',
  1001. image: 'system/1_openings/2_sg/outcast_2.jpg',
  1002. desc: `Some girls blossom early and others have natural good looks - you got neither. In fact, you seem to have been cursed with an androgynous face and body, and have been mistaken for a boy more times than you would care to admit.
  1003. Your body seems to have grown out of sync, leaving you looking odd and, at best, unattractive for most of your life. Now in your teens, your body is starting to even out in growth, but you're still very androgynous and still considered ugly.
  1004. Your lack of good looks has made you a social pariah. Nobody seems to like you or want to spend time with you unless they are making fun of you.`,
  1005. pc:{
  1006. bmi: 31,
  1007. faceGeneticAttractiveness: -2,
  1008. hairColor:2,
  1009. tits:5,
  1010. willpowermax: 55
  1011. },
  1012. skills:{
  1013. inhibition: 5
  1014. }
  1015. }