2
1

9 Commity 934a9794d4 ... 2edf397be0

Autor SHA1 Správa Dátum
  ruduki2 2edf397be0 Fixed autofix code +normalize on single quotes 5 rokov pred
  ruduki2 8a92b5635d Get rid of Twee2Settings 5 rokov pred
  ruduki2 56571d09c9 since unquoted strings are getting quoted with single quotes treat them the same 5 rokov pred
  ruduki2 7b768dca88 add dependency on story_title.tw2 5 rokov pred
  ruduki2 ef7bef1354 Updates to public beach 5 rokov pred
  ruduki2 019c26a805 enable some more warnings now that autofix works pretty well. 5 rokov pred
  ruduki2 60262feb47 remove commented out code 5 rokov pred
  ruduki2 384f6a12cc move once macro widget from intro to main since it's shared 5 rokov pred
  ruduki2 5079d12505 remove duplicate start intro passage 5 rokov pred
9 zmenil súbory, kde vykonal 408 pridanie a 268 odobranie
  1. 26 67
      Rakefile
  2. 21 9
      main.tw2
  3. 54 70
      story/01_intro.tw2
  4. 69 70
      story/02_transform.tw2
  5. 9 10
      story/03_custom_girl.tw2
  6. 0 5
      story/04_money_game.tw2
  7. 3 8
      story/05_beaches.tw2
  8. 222 29
      story/06_public_beach.tw2
  9. 4 0
      storyjs.tw2

+ 26 - 67
Rakefile

@@ -73,7 +73,7 @@ file 'story_title.tw2' do
 end
 
 desc 'export sub files to Twine 2'
-task export: %w(bundle_install storyjs story.tw2) do
+task export: %w(bundle_install storyjs story.tw2 story_title.tw2) do
   files.each do |file|
     IO.write file.wrapper_file, <<~EOF
       ::StoryTitle
@@ -111,7 +111,7 @@ task import: %w(bundle_install) do
     sh(
       'bundle', 'exec', 'twee2', 'decompile',
       file.dest_file, file.source_file,
-      '--exclude=StoryJS,StoryCSS,StoryTitle',
+      '--exclude=StoryJS,StoryCSS,StoryTitle,Twee2Settings',
       '--exclude-from=../stylesheet.tw2,../storyjs.tw2,../stylesheet.tw2,../images.tw2',
     )
   end
@@ -127,7 +127,7 @@ task import_main: %w(bundle_install) do
       'bundle', 'exec', 'twee2', 'decompile',
       File.join(STORY_DIR, STORY_RELEASE_TITLE + '.html'),
       './' + file.source_file,
-      '--exclude=StoryJS,StoryCSS,StoryTitle',
+      '--exclude=StoryJS,StoryCSS,StoryTitle,Twee2Settings',
       "--exclude-from=#{excludes.join(',')}",
     )
   end
@@ -158,22 +158,31 @@ task :autofix do
           "[[#{link}]#{link_mods}]"
         when 1
           text, dest = link.split('->')
-          if text.start_with?("'")
+          quote_text = true
+          if link.start_with?('"')
+            text = text.end_with?('"') ? text[1..-2] : text[1..-1]
+          elsif text.start_with?("'")
             text = text.end_with?("'") ? text[1..-2] : text[1..-1]
+          elsif text =~ /\\|"/
+            quote_text = true
+          else
+            quote_text = false
+          end
+          
+          if quote_text
             text.gsub!(/(?<!\\)'/) { "\\'" }
-            text.gsub!(/(?<!\\)\\(?!')/) { "\\\\" }
+            text.gsub!(/\\"/) { '"' }
+            text.gsub!(/(?<!\\)\\(?!['\\])/) { "\\\\" }
+            
             text = "'#{text}'"
-          elsif link.start_with?('"')
-            text = text.end_with?('"') ? text[1..-2] : text[1..-1]
-            text.gsub!(/(?<!\\)"/) { "\\\"" }
-            text.gsub!(/(?<!\\)\\(?!")/) { "\\\\" }
-            text = "\"#{text}\""
-          elsif link =~ /\A[\[\]'"\\]*\z/
-            text.gsub!(/(?<!\\)'/) { "\\'" }
-            text.gsub!(/(?<!\\)"/) { "\\\"" }
-            text.gsub!(/(?<!\\)\\(?!['"])/) { "\\\\" }
-            text = "'" + (text.gsub("'") { "\\'" }) + "'"
+          
+            #FIXME This assumption seems dangerous?
+            # if begins with a double quote ensures it ends with one too.
+            if text[1] == '"' && text[-2] != '"'
+              text = text[0..-3] + "\"'"
+            end
           end
+          
           "[[#{text}->#{dest}]#{link_mods}]"
         else
           # TODO this doesn't really happen very much in practice, so don't worry about an autofix, just passthru
@@ -181,56 +190,6 @@ task :autofix do
           "[[#{link}]#{link_mods}]"
         end
       end
-=begin
-      .map do |link|
-        case link.scan('->').length
-        when 0
-          #link contains no ->, probably not a problem
-          text = dest = link
-          passages[title][:outbound_links] << \
-            { passage: dest, source_line: "#{file.source_file}:#{lineno}" }
-        when 1
-          # no problem
-          text, dest = link.split('->')
-          passages[title][:outbound_links] << \
-            { passage: dest, source_line: "#{file.source_file}:#{lineno}" }
-        else
-          puts "#{file.source_file}:#{lineno} link contains multiple -> definitely a problem".colorize(:red)
-          next
-        end
-        if text.start_with?('\'')
-          if !text.end_with?('\'')
-            puts "#{file.source_file}:#{lineno} link text (#{text.inspect}) does not end with single quote despite starting with one".colorize(:red)
-            next
-          end
-          text = text[1..-2]
-          text
-          .to_enum(:scan, '\'')
-          .map {Regexp.last_match.offset(0)[0]}
-          .each do |offset|
-            if text[offset - 1] != '\\'
-              puts "#{file.source_file}:#{lineno} link text (#{text.inspect}) contains unquoted single quote in body".colorize(:red)
-            end
-          end
-        elsif text.start_with?('"')
-          if !text.end_with?('"')
-            puts "#{file.source_file}:#{lineno} link text (#{text.inspect}) does not end with double quote despite starting with one".colorize(:red)
-            next
-          end
-          text = text[1..-2]
-          text
-          .to_enum(:scan, '"')
-          .map {Regexp.last_match.offset(0)[0]}
-          .each do |offset|
-            if text[offset - 1] != '\\'
-              puts "#{file.source_file}:#{lineno} link text (#{text.inspect}) contains unquoted double quote in body".colorize(:red)
-            end
-          end
-        elsif text =~ /\A[\[\]'"\\]*\z/
-          puts "#{file.source_file}:#{lineno} link text (#{text.inspect}) contains special characters but is not quoted with single or double quotes".colorize(:red)
-        end
-      end
-=end
     end.join("\n") + "\n"
     File.write(file.source_file, twee_source)
   end
@@ -309,11 +268,11 @@ task :lint do
       end
       # check for default text
       if line.strip == 'Double-click this passage to edit it.'
-        #puts "#{file.source_file}:#{lineno} has the default text \"Double-click this passage to edit it.\""
+        puts "#{file.source_file}:#{lineno} has the default text \"Double-click this passage to edit it.\""
       end
       # check for TODO/FIXME
       if line.include?('TODO') || line.include?('FIXME')
-        #puts "#{file.source_file}:#{lineno} has TODO/FIXME text: #{line}"
+        puts "#{file.source_file}:#{lineno} has TODO/FIXME text: #{line}"
       end
       # check for <<include>> as string
       if line.include?('<<include') && !line.include?('[[')

+ 21 - 9
main.tw2

@@ -7,15 +7,18 @@ This interactive story contains adult content. Make sure it is lawful in your ju
 Erotic themes:
 <ul>
 <li>breast expansion
-<li> MtF transgender transformation, magical change, fast but not instant, changed by clothing.  
-<li> teen sex (all 18+)
-<li> (optional) voyeurism
-<li> (planned) (optional) incest (brother-sister)
-<li> various lesbian sex
-<li> various straight sex
-<li> (planned) ambiguous consent (pretending to be someone else to gain sex)
-<li> sports (beach volleyball)
-<li> features bikinis and the beach prominently.
+<li>MtF transgender transformation, magical change, fast but not instant, changed by clothing.  
+<li>teen sex (all 18+)
+<li>(optional) voyeurism
+<li>(planned) (optional) incest (brother-sister)
+<li>various lesbian sex
+<li>various straight sex
+<li>(planned) ambiguous consent (pretending to be someone else to gain sex)
+<li>sports (beach volleyball)
+<li>features bikinis and the beach prominently.
+<li>cheerleaders
+<li>Greek Goddesses
+<li>Underage Drinking
 </ul>
 
 [[This game is entered into the public domain under the terms of the Creative Commons Zero License.->License]]
@@ -150,6 +153,15 @@ Graphics Used
 
 <<back>>
 
+::once macro widget [widget nobr] <1589,577>
+<<widget "once">>
+<<if $args[0].isLink and !visited($args[0].link)>>
+<<link $args[0]>><</link>><br>
+<<elseif !$args[0].isLink and !$args[1] and !visited($args[0])>>
+<<link $args[0] $args[0]>><</link>><br>
+<</if>>
+<</widget>>
+
 ::StoryIncludes
 images.tw2
 stylesheet.tw2

+ 54 - 70
story/01_intro.tw2

@@ -1,7 +1,5 @@
 ::Start Intro <565,265>
 You get off the bus from school, homework can wait. It was a half day on the Friday before spring break, so it's lunch time; you check the fridge and decide to make a PB&J. Your parents won't be home for hours.
-::Start Intro <565,265>
-You get off the bus from school, homework can wait. It was a half day on the Friday before spring break, so it's lunch time; you check the fridge and decide to make a PB&J. Your parents won't be home for hours.
 
 As you finish the sandwich, your sister, [[Jessica]], pulls into the driveway with two of her friends: [[Natalie]] and [[Sally]].
 
@@ -112,7 +110,7 @@ Natalie says, "I dunno, he had a pretty mean spike in P.E. class."
 
 Sally consoles Jessica, "Jess, this is our best bet; how do we convince him to do it?"
 
-[["Barge in and shout \"I'll do it!\""->barge in]]
+[['Barge in and shout "I\'ll do it!"'->barge in]]
 [[Keep listening.->keep listening 2][$times_spied+=1]]
 
 ::play games 2 <854,771>
@@ -173,7 +171,7 @@ You go to your room and open the bag Sally gave you. Inside, is a pink two piece
 <</if>>\
 
 [[Take your t-shirt off.->take your shirt off]]
-[["Go back to Jess's room and ask \"Wait. Why a bikini?\""->why wear bikini]]
+[['Go back to Jess\'s room and ask "Wait. Why a bikini?"'->why wear bikini]]
 
 ::play games 3 <833,1004>
 With the TV off, you listen to what your sister and her friends have to say.
@@ -182,14 +180,14 @@ With the TV off, you listen to what your sister and her friends have to say.
 
 Jessica stands in front of you with her slutty asian friend Natalie, and her nerdy friend Sally, but her friend Heather is missing. #FIXME
 
-[["\"What kind of tournament?\""->discuss further]]
-[["\"What's in it for me?\""->discuss further]]
-[["\"I'm not interested.\""->not interested][$jess_disposition-=1]]
+[['"What kind of tournament?"'->discuss further]]
+[['"What\'s in it for me?"'->discuss further]]
+[['"I\'m not interested."'->not interested][$jess_disposition-=1]]
 
 ::ignore her 2 <839,881>
 Your sister stands in front of the TV, turns it off, and scowls at you.
 
-[["\"What do you want?\""->play games 3]]
+[['"What do you want?"'->play games 3]]
 
 ::been there this whole time2 <390,1056>
 [['"I\'ve heard enough."'->just put this on]]
@@ -292,15 +290,15 @@ You hear a click as the phone turns off.
 
 Natalie winks.
 
-[["\"Sure.\""->discuss further][$nat_disposition+=1]]
-[["\"Anything for you Natalie.\""->discuss further][$nat_disposition += 2]]
-[["\"I'm still not interested.\""->new plan 1]]
+[['"Sure."'->discuss further][$nat_disposition+=1]]
+[['"Anything for you Natalie."'->discuss further][$nat_disposition += 2]]
+[['"I\'m still not interested."'->new plan 1]]
 
 ::discuss further <770,1134>
 "Can we discuss this further upstairs?" your sister begs.
 
-[["\"Sounds great.\" go upstairs to your sister's room."->go upstairs to talk]]
-[["(sarcastically) \"Whatever.\" go upstairs to your sister's room."->go upstairs to talk][$jess_disposition -= 1]]
+[['"Sounds great." go upstairs to your sister\'s room"'->go upstairs to talk]]
+[['(sarcastically) "Whatever." go upstairs to your sister\'s room.'->go upstairs to talk][$jess_disposition -= 1]]
 
 ::go upstairs to talk <626,1241>
 "Alright, so what's the deal with this tournament?" you ask.
@@ -319,9 +317,9 @@ You take off your shirt and start to untangle the bikini top to put it on.
 [[Keep putting on the bikini, It's probably just static electricity.->static electricity]]
 <<nobr>>
 <<if visitedTags('know-bikini-magical')>>
-	[["Go back to Jess's room and ask, \"Is this bikini magical?\""->Is bikini magical?]]
+	[['Go back to Jess\'s room and ask, "Is this bikini magical?"'->Is bikini magical?]]
 <<else>>
-	[["Go back to Jess's room and ask, \"What is this?\""->what is this?]]
+	[['Go back to Jess\'s room and ask, "What is this?"'->what is this?]]
 <</if>>
 <<set $current_top = 'topless'>>
 <</nobr>>
@@ -329,14 +327,14 @@ You take off your shirt and start to untangle the bikini top to put it on.
 ::what is this? <356,1598>
 "You look like you've never seen a bikini before," Jess scoffs.
 
-[["\"It's a woman's swimsuit Jess... I don't have boobs!\""->explain bikini][$jess_disposition -= 1]]
-[["\"Did you ask Natalie or Sally's brothers first if they wanted to wear it?\""->other brothers][$nat_disposition -= 1; $sally_disposition -= 1]]
-[["\"Alright, I'll get changed in my room.\""->put on suit voluntarily]]
+[['"It\'s a woman\'s swimsuit Jess... I don\'t have boobs!"'->explain bikini][$jess_disposition -= 1]]
+[['"Did you ask Natalie or Sally\'s brothers first if they wanted to wear it?"'->other brothers][$nat_disposition -= 1; $sally_disposition -= 1]]
+[['"Alright, I\'ll get changed in my room."'->put on suit voluntarily]]
 
 ::other brothers <498,1618>
 Jess gasps, "No. dipshit. Sally has an older brother in the military and Natalie has an older sister off at college, but no brothers. Needless to say neither are available to help with this."
 
-[["\"So why do you need me to wear a bikini?\""->why wear bikini]]
+[['"So why do you need me to wear a bikini?"'->why wear bikini]]
 
 ::What tournament? [know-tournament-beach-volleyball] <950,1730>
 "A beach volleyball tournament," Sally says matter of factly.
@@ -396,55 +394,46 @@ Sally joins in, "We don't need to //win// the tournament though, just placing wi
 <<if visitedTags('know-tournament-exists') and not visitedTags('know-tournament-beach-volleyball')>>
 	<<once [['"What tournament?"'->What tournament?]]>>
 <</if>>
-<<once [["\"Is there a prize?\""->Is there a prize?]]>>
+<<once [['"Is there a prize?"'->Is there a prize?]]>>
 <<if not visitedTags('know-tournament-girls-only') and not visitedTags('know-bikini-feminizes')>>
-	<<once [["\"Why do I need to wear a bikini?\""->why wear bikini]]>>
+	<<once [['"Why do I need to wear a bikini?"'->why wear bikini]]>>
 <</if>>
 <<if visitedTags('know-bikini-magical') and
      not visitedTags('know-bikini-feminizes')>>
-	<<once [["\"Enchanted bikini?\""->explain bikini feminizes]]>>
+	<<once [['"Enchanted bikini?"'->explain bikini feminizes]]>>
 <</if>>
 <<if visitedTags('know-tournament-girls-only') and not visitedTags('know-bikini-feminizes')>>
-	<<once [["\"I won't pass as a girl wearing just a bikini.\""->worried passing]]>>
+	<<once [['"I won\'t pass as a girl wearing just a bikini."'->worried passing]]>>
 <</if>>
 <<if visitedTags('know-tournament-busty')>> 
-	<<once [["\"What kind of people run this strange tournament?\""->who runs tournament?]]>>
+	<<once [['"What kind of people run this strange tournament?"'->who runs tournament?]]>>
 <</if>>
 <<if visitedTags('know-bikini-feminizes') and not visitedTags('know-bikini-busty')>>
-	<<once [["\"So.. I need to wear a magic bikini to help you with a girl's only Beach Volleyball tournament?\""->learn bikini busty]]>>
+	<<once [['"So.. I need to wear a magic bikini to help you with a girl\'s only Beach Volleyball tournament?"'->learn bikini busty]]>>
 <</if>>
 <<if visitedTags('know-bikini-heather') and not visitedTags('know-tournament-busty')>>
-		<<once [["\"Why would Heather need a magical swimsuit like this?\""->why does heather need a magic bikini]]>>
+		<<once [['"Why would Heather need a magical swimsuit like this?"'->why does heather need a magic bikini]]>>
 <</if>>
 <<if visitedTags('know-bikini-busty')>>
-	<<once [["\"Wait. If the top will give me boobs, what will the bottom do?\""->What do the bottoms do?]]
-	<<once [["\"How long will the enchantment hold out for?\""->Magic Bikni Duration]]>>
-	<<once [["\"Why do I need to wear the bikini right now?\""->Why do I need to wear the bikini right now?]]>>
+	<<once [['"Wait. If the top will give me boobs, what will the bottom do?"'->What do the bottoms do?]]
+	<<once [['"How long will the enchantment hold out for?"'->Magic Bikni Duration]]>>
+	<<once [['"Why do I need to wear the bikini right now?"'->Why do I need to wear the bikini right now?]]>>
 <</if>>
 <<if visitedTags('know-sally-enchanted-bikini')>>
-	<<once [["\"Couldn't Sally use magic to help us win the tournament?\""->magical cheating]]>>
+	<<once [['"Couldn\'t Sally use magic to help us win the tournament?"'->magical cheating]]>>
 	<<once [['"May I ask more questions about being a sorceress?"'->Can I ask more questions about being a sorceress?]]>>
 <</if>>
 <<if visitedTags('know-bikini-busty', 'know-bikini-clones', 'know-bikini-heather')>>
-	<<once [["\"Can I keep the bikini?\""->Can I keep the bikini?]]>>
+	<<once [['"Can I keep the bikini?"'->Can I keep the bikini?]]>>
 <</if>>
 <<if visitedTags('know-what-bottoms-do')>>
-	<<once [["\"Uh. do I have to wear the bottoms? Surely I could wear a non-magical bottom.\""->have to wear bottoms]]>>
+	<<once [['"Uh. do I have to wear the bottoms? Surely I could wear a non-magical bottom."'->have to wear bottoms]]>>
 <</if>>
-<<once [["\"Couldn't you get someone else?\""->get someone else?]]>>
+<<once [['"Couldn\'t you get someone else?"'->get someone else?]]>>
 <<if visitedTags('know-bikini-magical') and visitedTags('know-what-bottoms-do') and visitedTags('know-bikini-clones')>>
-	[["\"I'll compete in the volleyball tournament with you...\""->agree]]<br>
+	[['"I\'ll compete in the volleyball tournament with you..."'->agree]]<br>
 <</if>>
 
-::once macro widget [widget nobr] <1589,577>
-<<widget "once">>
-<<if $args[0].isLink and !visited($args[0].link)>>
-<<link $args[0]>><</link>><br>
-<<elseif !$args[0].isLink and !$args[1] and !visited($args[0])>>
-<<link $args[0] $args[0]>><</link>><br>
-<</if>>
-<</widget>>
-
 ::Can I keep the bikini? <333,2236>
 "Ew," Jess exclaims, "I mean no one's gonna want it back after you get your sweat all over it."
 
@@ -456,12 +445,12 @@ Sally joins in, "We don't need to //win// the tournament though, just placing wi
 "Tha..." Jess starts to say.
 
 [[Let your sister finish.->let sister finish][$jess_disposition += 5; $nat_disposition+=1; $sally_disposition += 2]]
-[["\"On one condition.\""->one condition]]
+[['"On one condition."'->one condition]]
 
 ::new bikni appearance <364,2602>
 "However you want... As long as it's a young busty woman of some sort."
 
-[["\"Okay, let's discuss the details later.\""->discuss making a bikni later][$keep_the_bikini to 'new']]
+[['"Okay, let\'s discuss the details later."'->discuss making a bikni later][$keep_the_bikini to 'new']]
 [["I don't need to keep the bikini."]]
 <<once [["Do you need a vagina to qualify as a woman?"]]>>
 
@@ -481,18 +470,18 @@ Nat replies, "I'd be honored. We'll talk after the tournament."
 
 Jess blushes. "Ew. Gross brother."
 
-[["\"Awesome.\""->what next?][$reward to "sex with nat"]]
+[['"Awesome."'->what next?][$reward to "sex with nat"]]
 <<else>>
 "No way dork," Nat rebuffs, "Not in a million years."
 
-[["\"It's the only way I'll do this.\""->virginity2][$nat_disposition -= 2; $jess_disposition -= 1]]
-[["\"Fine. I'll help anyway.\""->what next?]]
+[['"It\'s the only way I\'ll do this."'->virginity2][$nat_disposition -= 2; $jess_disposition -= 1]]
+[['"Fine. I\'ll help anyway."'->what next?]]
 <</if>>
 
 ::"Sally goes on a date with me." [nobr] <962,3175>
 <<if $sally_disposition >= 0 >>
 "Alright, I guess that's OK. I mean a date doesn't mean anything?" Sally asks, blushing.<br><br>
-[["\"Awesome.\""->what next?][$reward to "sally_date"]]
+[['"Awesome."'->what next?][$reward to "sally_date"]]
 <<if $jess_disposition >= 0 >>
 "Oh. You'll make such a cute couple," Jess adds.<br><br>
 <<else>>
@@ -500,7 +489,7 @@ Jess blushes. "Ew. Gross brother."
 
 "Jess, it's just a date, it's not like your BFF will lose her virginity to your brother," Nat says in an even tone.<br><br>
 
-[["\"So it's settled?\""->sally date 2]]
+[['"So it\'s settled?"'->sally date 2]]
 <</if>>
 <<else>>
 "Uh. I... Uh..." Sally struggles to find words.<br><br>
@@ -509,7 +498,7 @@ Jess blushes. "Ew. Gross brother."
 
 "No. Jess that's OK. It's just a date. It might be fun."<br><br>
 
-[["\"So it's settled?\""->sally date 2]]
+[['"So it\'s settled?"'->sally date 2]]
 <</if>>
 
 ::"You invite me to your college parties." [nobr] <1287,3284>
@@ -519,10 +508,10 @@ Jess blushes. "Ew. Gross brother."
 "You want to let my lame brother come to my cool college parties? Alright nerd, as long as you don't embarrass me."<br><br>
 
 <<if $keep_the_bikini == 'new'>>
-[["\"I wouldn't be your lame brother, I'd be your hotter younger sister.\""->hotter sister][$reward to "college parties as a girl"]]<br>
+[['"I wouldn\'t be your lame brother, I\'d be your hotter younger sister."'->hotter sister][$reward to "college parties as a girl"]]<br>
 <</if>>
 <</if>>
-[["\"Sweet.\""->what next?][$reward to "college parties"]]
+[['"Sweet."'->what next?][$reward to "college parties"]]
 
 ::"Sally gives me a longer-lasting feminization enchantment and you treat me like one of the girls at school." <1109,3130>
 "Oh. I never knew you felt that way. I kind of feel bad for teasing you for being a sissy wimp," Jess says before hugging you.
@@ -531,8 +520,8 @@ Sally explains, "That kind of magic is doable, but it will take a while and be e
 
 "Oh. you'll be such a cute girl," Nat mews.
 
-[["\"You guys are the best.\""->what next?][$reward to "help transitioning"]]
-[["\"Sike! I'm only in this for the money.\""->what next?]]
+[['"You guys are the best."'->what next?][$reward to "help transitioning"]]
+[['"Sike! I\'m only in this for the money."'->what next?]]
 
 ::What do the bottoms do? [know-what-bottoms-do] <191,1724>
 "It'll give you a nice round butt to go with your bust of course," Nat says.
@@ -573,16 +562,16 @@ Sally interjects, "No. The magic is imbued in both parts. It's important to wear
 ::"Do you need a vagina to qualify as a woman?" <604,2632>
 "I guess not, but you can't have an unsightly bulge, would a two inch flaccid cock be acceptable?" Sally inquires as the other girls stifle a laugh.
 
-[["\"I guess.\""->keep bikini final][$bottom_style to "girlcock"]]
+[['"I guess."'->keep bikini final][$bottom_style to "girlcock"]]
 [["I'd rather be a ken doll down there."]]
-[["\"Better than a vagina.\""->keep bikini final][$bottom_style to "girlcock"; $jess_disposition -=1]]
+[['"Better than a vagina."'->keep bikini final][$bottom_style to "girlcock"; $jess_disposition -=1]]
 
 ::"I'd rather be a ken doll down there." <489,2805>
 "Really? because that could be arranged."
 
-[["\"Yeah. Make my bikini bottom smooth as a ken doll instead of genitals.\""->keep bikini final][$bottom_style = "ken_doll"]]
-[["\"No. Make it with a pussy.\""->keep bikini final][$bottom_style = "vagina"]]
-[["\"No. Make it with the small cock.\""->keep bikini final][$bottom_style = "girlcock"]]
+[['"Yeah. Make my bikini bottom smooth as a ken doll instead of genitals."'->keep bikini final][$bottom_style = "ken_doll"]]
+[['"No. Make it with a pussy."'->keep bikini final][$bottom_style = "vagina"]]
+[['"No. Make it with the small cock."'->keep bikini final][$bottom_style = "girlcock"]]
 
 ::keep bikini final <276,2872>
 "Alright I'll make your bikini bottom transform your genitals to<<nobr>>
@@ -626,13 +615,13 @@ Jess says, "Plus the weather's really nice."
 <<silently>>
 <<if $current_top == 'heather bikini'>>\
 "Well you better finish getting changed brother, then we can practice," Jess says.
-[["\"Alright I'll meet you back here in 20.\""->put on swimsuit]]
+[['"Alright I\'ll meet you back here in 20."'->put on swimsuit]]
 <<else>>
 "We all need to get changed, then we can practice," Jess says.
-[["\"Alright I'll meet you back here in 20.\""->put on swimsuit]]
+[['"Alright I\'ll meet you back here in 20."'->put on swimsuit]]
 <</if>>
 <<if $keep_the_bikini == 'new'>>\
-[["No. we should go shopping and get the stuff for my bikini."->shopping1]]
+[['No. we should go shopping and get the stuff for my bikini.'->shopping1]]
 <</if>>\
 <</silently>>
 
@@ -690,7 +679,7 @@ Jess opens the door with her friends lining up behind her.
 
 <<include [[been there this whole time2]]>>
 
-[["\"Uh can I get some help with this?\""->help with bikini]]
+[['"Uh can I get some help with this?"'->help with bikini]]
 [[Untie and try again, but do the top part first->Tie the top part first.]]
 
 ::explain magical bikini [know-bikini-magical know-bikini-feminizes know-tournament-beach-volleyball know-sally-enchanted-bikini] <944,1628>
@@ -712,7 +701,7 @@ Sally continues, "Each bikini I made is tied to a different person and whoever p
 
 "Well it's a funny story..." Sally starts.
 
-[["\"I'm listening.\""->explain tournament detail.]]
+[['"I\'m listening."'->explain tournament detail.]]
 
 ::explain tournament detail. [know-tournament-beach-volleyball know-tournament-girls-only know-bikini-busty know-bikini-feminizes know-bikini-heather] <724,1555>
 "Right so there's this girl's only beach volleyball tournament."
@@ -780,8 +769,3 @@ You've fast-forwarded, here's what happens between now and the next passage:
 This next section is super-unfinished, but I kind of wanted to release this work-in-progress anyway. get ready to see a lot of \#TODO (or stop until I finish this part)
 
 [[Get in Jess's car and go to the beach->Which beach]]
-
-::Twee2Settings [twee2]
-@story_start_name = 'Start Intro'
-Twee2::build_config.story_ifid = 'd6480e34-cbe1-4bb9-86d3-b4cb9c511475'
-Twee2::build_config.story_format = 'SugarCube2'

+ 69 - 70
story/02_transform.tw2

@@ -5,7 +5,7 @@ You pull out the bikini top, it's a got four strings, two for the neck and two f
 
 <<if $girls_present>>\
 
-[["\"Could I get some help with this?\""->help with bikini]]
+[['"Could I get some help with this?"'->help with bikini]]
 
 <</if>>\
 
@@ -15,14 +15,14 @@ You pull out the bikini top, it's a got four strings, two for the neck and two f
 
 [[Put the bottoms on first.->bottoms first]]
 
-[["Look up \"How to tie a bikini\" on YouTube."->youtube]]
+[['Look up "How to tie a bikini" on YouTube.'->youtube]]
 
 ::Tie the top part first. [top-part-tied] <3499,1571>
 Yeah that seems to work. Now just put it over your head and oh! The back is quite hard to reach.
 
 
 
-[["\"Can I get some help with the back?\""->help with bikini]]
+[['"Can I get some help with the back?"'->help with bikini]]
 
 [[Stretch and tie the back yourself.]]
 
@@ -63,9 +63,9 @@ Nat sits behind you on your bed, and starts to massage your shoulders.
 
 [[Feel your tits.->feel your tits with nat]]
 
-[["\"I need to talk to Jess and Sally.\""->back to jess and sally]]
+[['"I need to talk to Jess and Sally."'->back to jess and sally]]
 
-[["\"I think I'd like to be alone for the next part.\""->put on bottoms second]]
+[['"I think I\'d like to be alone for the next part."'->put on bottoms second]]
 
 [[Take off your pants.->pants off 1]]
 
@@ -80,7 +80,7 @@ It takes all your dexterity, but you're able to stretch and tie the back into a
 
 [[Relax.->relax and transform]]
 
-[["\"Help! I'm growing breasts!\""->transform with nat]]\
+[['"Help! I\'m growing breasts!"'->transform with nat]]\
 
 <<set $current_top = "heather bikini">>
 
@@ -114,7 +114,7 @@ The fabric clings to your skin, and your chest starts to tingle. Electricity sur
 
 [[Look in mirror.]]
 [[Feel your new tits.]]
-[["Go back to Jess's room and declare, \"I have questions.\""->back to jess and sally]]
+[['Go back to Jess\'s room and declare, "I have questions."'->back to jess and sally]]
 
 ::look in mirror with nat [know-bikini-heather] <4075,2101>
 You look around for a mirror, but after thinking for a second, you realize you don't have one.
@@ -127,7 +127,7 @@ You look around for a mirror, but after thinking for a second, you realize you d
 
 After getting a good look in, hand the mirror back.
 
-[["\"I need to talk to Jess and Sally.\""->back to jess and sally]]
+[['"I need to talk to Jess and Sally."'->back to jess and sally]]
 
 ::feel your tits with nat <3734,2526>
 They feel so good. They're large and sensitive. You've never been in such proximity to boobs like this before, it's getting your dick hard.
@@ -135,11 +135,11 @@ They feel so good. They're large and sensitive. You've never been in such proxim
 <<if $nat_disposition >= 0>>\
 "Oh they're nice are they? May I?" Nat gestures to your décolletage.
 
-[["Go right ahead."->nat motorboats you.]]
-[["\"No. I have questions.\""->back to jess and sally]]
+[['Go right ahead.'->nat motorboats you.]]
+[['"No. I have questions."'->back to jess and sally]]
 <<else>>\
 
-[["\"I have questions.\""->back to jess and sally]]
+[['"I have questions."'->back to jess and sally]]
 <</if>>
 
 ::bikini top transformation part 2 <4096,1800>
@@ -175,8 +175,8 @@ You head back to Jess's room with your new bosom jiggling distractingly as you w
 
 Sally and Jess hold their hands up to their mouths stifling a giggle.
 
-[["\"What's the deal with these tits?\""->explain tits]]
-[["\"Oh yeah very funny, now how do we undo this?\""->undo this]]\
+[['"What\'s the deal with these tits?"'->explain tits]]
+[['"Oh yeah very funny, now how do we undo this?"'->undo this]]\
 
 <<set $current_top = 'heather bikini'>>
 
@@ -190,24 +190,24 @@ Her face lights up with pleasure as she plays with them. She slips a hand undern
 
 "I can't wait to grow my own set."
 
-[["Well there's no time like the present."->no time like the present.]]
-[["\"We can't do this Nat, you're Jessica's best friend!\""->Jess's best friend]]
+[['Well there\'s no time like the present.'->no time like the present.]]
+[['"We can\'t do this Nat, you\'re Jessica\'s best friend!"'->Jess's best friend]]
 [[Pull her in closer.->nat motorboating 2]]
 
 ::no time like the present. <3827,2652>
 "Actually, we really don't have time for this now, Sally and Jess are waiting for us."
 
-[["\"Alright.\""->back to jess and sally]]
-[["\"Not even for a quickie?\""->quickie]]
+[['"Alright."'->back to jess and sally]]
+[['"Not even for a quickie?"'->quickie]]
 
 ::Jess's best friend <4125,2721>
 "Really? Has she said something to you? I've suspected... but."
 
-[["\"I think you misunderstand, my sister doesn't *like*, you like you. She just likes your company. You hang out a lot. She has a shirtless Channing Tatum poster on her wall!\""->not lesbian.]]
-[["(lie) \"Uh.. yeah she really has the hots for you.\""->trick natalie][$lies+=1]]
-[["\"She's kind of a mystery to me actually.\""->jess a mystery]]
+[['"I think you misunderstand, my sister doesn\'t *like*, you like you. She just likes your company. You hang out a lot. She has a shirtless Channing Tatum poster on her wall!"'->not lesbian.]]
+[['(lie) "Uh.. yeah she really has the hots for you."'->trick natalie][$lies+=1]]
+[['"She\'s kind of a mystery to me actually."'->jess a mystery]]
 
-<<once [["\"Wait. Are you into girls?\""->is nat a lesbian?]]>>
+<<once [['"Wait. Are you into girls?"'->is nat a lesbian?]]>>
 
 ::nat motorboating 2 <3864,2527>
 Nat brings her head into your ample cleavage and then uses both hands to squeeze your tits together with her head between.
@@ -229,7 +229,7 @@ Your cock is now hard with anticipation.
 <<else>>\
 "No. But we'll pick up where we left off later."
 
-[["\"Alright.\""->back to jess and sally]]
+[['"Alright."'->back to jess and sally]]
 
 <</if>>\
 
@@ -265,17 +265,17 @@ She puts some on her hands, and starts to stroke your cock.
 ::not lesbian. <3970,2809>
 "In that case what's your excuse?" Nat accuses pointing to a picture of a petite Japanese woman in a swimsuit hung on your wall, "Am I not attractive to you?"
 
-[["\"No! uh. Look there's no time? can we finish this later?\""->finish this later]]
+[['"No! uh. Look there\'s no time? can we finish this later?"'->finish this later]]
 
-[["\"I have a crush on Sally!\""->pathetic sally]]
+[['"I have a crush on Sally!"'->pathetic sally]]
 
 <<set $nat_disposition -= 1>>
 
 ::trick natalie <4144,2851>
 "Oh. That's great news! How should I tell her that I feel the same way?"
 
-[["\"Tell her how you really feel... after the tournament.\""->tell her how you really feel]]
-[["\"You've been friendzoned.\""->friendzoned]]
+[['"Tell her how you really feel... after the tournament."'->tell her how you really feel]]
+[['"You\'ve been friendzoned."'->friendzoned]]
 
 <<set $nat_offlimits to true >>
 
@@ -291,7 +291,7 @@ She puts some on her hands, and starts to stroke your cock.
 
 
 
-[["\"Alright. lets head back Jess's room.\""->back to jess and sally]]
+[['"Alright. lets head back Jess\'s room."'->back to jess and sally]]
 
 <<set $nat_disposition += 1;
 
@@ -306,9 +306,9 @@ Natalie is exasperated, "What? no! that's terrible advice. The 'friendzone' isn'
 
 
 
-[["(mumble) \"Then why won't Sally go out with me?\""->pathetic sally]]
+[['(mumble) "Then why won\'t Sally go out with me?"'->pathetic sally]]
 
-[["\"Okay.\""->back to jess and sally]]
+[['"Okay."'->back to jess and sally]]
 
 ::pathetic sally <4405,3141>
 "Oh that's adorable. And pathetic. Actually the more I think about it, you two nerds were made for each other."
@@ -323,7 +323,7 @@ Nat extends her pinky.
 
 
 
-[["\"Deal.\""->crush deal.]]
+[['"Deal."'->crush deal.]]
 
 ::crush deal. <4578,3058>
 You shake pinkies: enacting the solemnest of vows: A Pinky Promise.
@@ -334,22 +334,22 @@ You shake pinkies: enacting the solemnest of vows: A Pinky Promise.
 
 
 
-[["\"Okay.\""->back to jess and sally]]
+[['"Okay."'->back to jess and sally]]
 
 ::jess a mystery <4441,2614>
 "Yeah. And you live with her. Would you... you know... find out about her for me?"
 
 
 
-[["\"Sure.\""->agree to snoop]]
+[['"Sure."'->agree to snoop]]
 
 <<if $times_spied <= 0>>\
 
-[["\"I'm not a snoop!\""->not a snoop]]
+[['"I\'m not a snoop!"'->not a snoop]]
 
 <<else>>\
 
-[["(lie) \"I'm not a snoop!\""->not a snoop][$lies += 1]]
+[['(lie) "I\'m not a snoop!"'->not a snoop][$lies += 1]]
 
 <</if>>\
 
@@ -358,9 +358,9 @@ You shake pinkies: enacting the solemnest of vows: A Pinky Promise.
 
 
 
-<<once [["\"Oh? Are you a lesbian?\""->is nat a lesbian?]]>>\
+<<once [['"Oh? Are you a lesbian?"'->is nat a lesbian?]]>>\
 
-[["\"Alright, lets head back to Jess's room.\""->back to jess and sally]]
+[['"Alright, lets head back to Jess\'s room."'->back to jess and sally]]
 
 ::not a snoop <4561,2823>
 <<if $girls_know_you_spied>>\
@@ -375,7 +375,7 @@ You shake pinkies: enacting the solemnest of vows: A Pinky Promise.
 
 
 
-[["\"Alright, lets head back to Jess's room.\""->back to jess and sally]]
+[['"Alright, lets head back to Jess\'s room."'->back to jess and sally]]
 
 ::is nat a lesbian? <4252,2778>
 "I'm bisexual..."
@@ -389,11 +389,11 @@ You shake pinkies: enacting the solemnest of vows: A Pinky Promise.
 
 
 
-[["\"Alright.\""->back to jess and sally]]
+[['"Alright."'->back to jess and sally]]
 
-[["\"I'll make it up to you later.\""->make up for this later]]
+[['"I\'ll make it up to you later."'->make up for this later]]
 
-[["\"Do we have enough time for a quickie?\""->quickie]]
+[['"Do we have enough time for a quickie?"'->quickie]]
 
 ::Pat her head. <3624,2643>
 "Dirty." Nat licks her lips seductively.
@@ -414,11 +414,11 @@ Your cock flops out and she grabs it with one hand. With the other she cups your
 
 
 
-[["\"I bet you say that to all the girls.\""->all the girls]]
+[['"I bet you say that to all the girls."'->all the girls]]
 
-[["\"I bet you say that to all the boys.\""->all the boys]]
+[['"I bet you say that to all the boys."'->all the boys]]
 
-[["\"Too big for your mouth?\""->too big for your mouth]]
+[['"Too big for your mouth?"'->too big for your mouth]]
 
 <<else>>\
 
@@ -426,7 +426,7 @@ Your cock flops out and she grabs it with one hand. With the other she cups your
 
 
 
-[["\"Not even for a quickie?\""->quickie]]
+[['"Not even for a quickie?"'->quickie]]
 
 <</if>>
 
@@ -443,11 +443,11 @@ After about a minute, Natalie, rebuffs you and stands up off the bed.
 
 
 
-[["\"Alright.\""->back to jess and sally]]
+[['"Alright."'->back to jess and sally]]
 
-[["\"I'll make it up to you later.\""->make up for this later]]
+[['"I\'ll make it up to you later."'->make up for this later]]
 
-[["\"Not even for a quickie?\""->quickie]]
+[['"Not even for a quickie?"'->quickie]]
 
 ::all the boys <3225,2772>
 "What! Are you insinuating I sleep with all the guys?"
@@ -476,7 +476,7 @@ After about a minute, Natalie, rebuffs you and stands up off the bed.
 
 
 
-[["\"I'll uh make up for this later.\""->make up for this later]]
+[['"I\'ll uh make up for this later."'->make up for this later]]
 
 ::nat give you a bj <3485,2890>
 Nat licks the head of your penis while she fondles your balls. She starts to put the whole thing in her mouth...
@@ -487,9 +487,9 @@ Nat licks the head of your penis while she fondles your balls. She starts to put
 
 
 
-[["\"I'm almost there, just keep sucking.\""->just keep sucking]]
+[['"I\'m almost there, just keep sucking."'->just keep sucking]]
 
-[["\"You better stop, we can finish this later.\""->finish this later]]
+[['"You better stop, we can finish this later."'->finish this later]]
 
 ::make up for this later <3355,2990>
 "You better. Let's go talk to the other girls."
@@ -569,7 +569,7 @@ You reluctantly put your pants back on.
 
 
 
-[["\"I'll make up for this later.\""->make up for this later]]
+[['"I\'ll make up for this later."'->make up for this later]]
 
 ::Put on clean underwear and pants. <3120,3446>
 You find some clean boxers and jeans and put them, which gives you time to soak in all that just happened.
@@ -615,13 +615,13 @@ You pull out the bikini top, it's a got four strings, two for the neck and two f
 
 
 
-[["\"Could I get some help with this?\""->help with bikini2]]
+[['"Could I get some help with this?"'->help with bikini2]]
 
 [[Tie the top part first.->tie top first2]]
 
 [[Tie the bottom part first.->tie bottom first2]]
 
-[["Look up \"How to tie a bikini\" on YouTube."->youtube2]]
+[['Look up "How to tie a bikini" on YouTube.'->youtube2]]
 
 ::help with bikini2 <1324,4156>
 "Fine. I'll help," Nat cries through the door. She enters your room, closing the door behind her and gets to work.
@@ -650,7 +650,7 @@ Nat ties the top in a simple knot then puts it around your neck. She spins you a
 
 [[Relax.->transform with nat2]]
 
-[["\"Help! I'm growing breasts!\""->transform with nat2][$mood = 'alarm']]
+[['"Help! I\'m growing breasts!"'->transform with nat2][$mood = 'alarm']]
 
 [[Try to take the bikini off.->transform with nat2][$mood = 'alarm']\
 
@@ -661,7 +661,7 @@ Yeah that seems to work. Now just put it over your head and oh! The back is quit
 
 
 
-[["\"Can I get some help with the back?\""->help with bikini2]]
+[['"Can I get some help with the back?"'->help with bikini2]]
 
 [[Stretch and tie the back yourself.->tie back yourself2]]
 
@@ -670,7 +670,7 @@ Hrm. that doesn't seem to work.
 
 
 
-[["\"Uh can I get some help with this?\""->help with bikini2]]
+[['"Uh can I get some help with this?"'->help with bikini2]]
 
 [[Untie and try again, but do the top part first->tie top first2]]
 
@@ -692,7 +692,7 @@ It takes all your dexterity, but you're able to stretch and tie the back into a
 
 [[Relax.->relax and transform2]]
 
-[["\"Help! I'm growing breasts!\""->transform with nat2][$mood to 'alarm']]\
+[['"Help! I\'m growing breasts!"'->transform with nat2][$mood to 'alarm']]\
 
 <<set $current_top = "heather bikini">>
 
@@ -787,13 +787,13 @@ They feel so good. They're large and sensitive. You've never been in such proxim
 
 
 
-[["Go right ahead."->nat motorboats you2]]
+[['Go right ahead.'->nat motorboats you2]]
 
-[["\"No. I would like some privacy.\""->privacy from nat]]
+[['"No. I would like some privacy."'->privacy from nat]]
 
 <<else>>\
 
-[["\"I would like some privacy please.\""->privacy from nat]]\
+[['"I would like some privacy please."'->privacy from nat]]\
 
 <</if>>
 
@@ -966,7 +966,7 @@ It's so stretchy it seems like its actually destroying and creating matter... if
 <</if>>\
 
 <<if $girls_present>>\
-[['"There\'s something weird about this bikini," you shout through the door.'->weird bikini]]
+[['"There\'s something weird about this bikini," you shout through the door"'->weird bikini]]
 <</if>>\
 [[Put your right leg through the leg hole.->right leg through]]
 
@@ -989,7 +989,7 @@ The fabric clings tightly, tighter than fabric should, even Lycra should be.
 <<if visitedTags('know-what-bottoms-do')>>\
 Unsurprisingly, your genitals start to shrink from the pressure of the fabric.
 <<elseif visitedTags('know-bikini-feminizes') and $girls_present>>\
-[["\"Ah! my penis is shrinking! You didn't tell me that would happen!\""->shrinking penis]]
+[['"Ah! my penis is shrinking! You didn\'t tell me that would happen!"'->shrinking penis]]
 <<else>>\
 The pressure from the bikini on your genitals builds, and they start to shrink.
 
@@ -1006,8 +1006,8 @@ The pressure from the bikini on your genitals builds, and they start to shrink.
 ::shrinking penis <2890,1446>
 You hear the girls shriek with laughter from the door.
 
-[["\"Hey it's not funny! You guys!\""->shrinking penis 2]]
-[["\"Is this some kind of prank! Make it stop!\""->shrinking penis 2]]
+[['"Hey it\'s not funny! You guys!"'->shrinking penis 2]]
+[['"Is this some kind of prank! Make it stop!"'->shrinking penis 2]]
 [[Wait for them to calm down.->shrinking penis 2]]
 
 ::bottom transform 2 <3040,1443>
@@ -1051,14 +1051,14 @@ You're completely feminized from the waist down.
 
 [[Put on bikini top.->put on top second]]
 <</if>>\
-[["\"You've got to turn me back!\" you scream through the door."->turn me back]]
+[['"You\'ve got to turn me back!" you scream through the door"'->turn me back]]
 [[Explore your womanhood.]]
 
 ::turn me back <1247,1588>
 Your sister berates you: "Like we said already, we can't turn you back until you help with the tournament."
 
-[["\"I'm calling the authorities.\""->tattle to cops/parents][$jess_disposition -= 1]]
-[["\"I'm telling Mom and Dad.\""->tattle to cops/parents][$jess_disposition -= 2; $sally_disposition -= 2]]
+[['"I\'m calling the authorities."'->tattle to cops/parents][$jess_disposition -= 1]]
+[['"I\'m telling Mom and Dad."'->tattle to cops/parents][$jess_disposition -= 2; $sally_disposition -= 2]]
 <<include [[bikini questions]]>>
 
 ::Explore your womanhood. <3298,1120>
@@ -1070,11 +1070,11 @@ You slide a hand beneath the bikini bottom and slip a a few fingers into your ne
 The top is just 2 triangle shaped pieces of fabric connected with strings.
 
 <<if $girls_present>>\
-[["\"Could I get some help with the top?\""->help with bikini]]
+[['"Could I get some help with the top?"'->help with bikini]]
 <</if>>\
 [[Tie the top part first.]]
 [[Tie the bottom part first.]]
-[["Look up \"How to tie a bikini\" on YouTube."->youtube]]
+[['Look up "How to tie a bikini" on YouTube.'->youtube]]
 
 ::put on bottoms second <3082,1905>
 Take off your pants and boxers.
@@ -1105,4 +1105,3 @@ Double-click this passage to edit it.
 "Calm down, the magic wears off after a few hours if you take the bikini off," Sally explains.
 
 <<include [[bikini questions]]>>
-

+ 9 - 10
story/03_custom_girl.tw2

@@ -278,13 +278,13 @@
 <</if>>\
 "I've got it all written down in my notes," Sally describes.
 
-[['"May I see your notes?" (refine/edit)'->custom notes]]
-[["\"That sounds great!\""->accept custom girl]]
+[['"May I see your notes?" (refine/edit"'->custom notes]]
+[['"That sounds great!"'->accept custom girl]]
 
 ::carpet matches drapes <4932,7639>
 <<if $hair_color == 'bright pink'>>\
 "Even if the drapes are bright pink?"
-[["Yeah!"->pubic hair shape]]
+[['Yeah!'->pubic hair shape]]
 <<else>>\
 <<include [[pubic hair shape]]>>
 <</if>>\
@@ -383,7 +383,7 @@ Nat and Sally head off to the shoe store.
 "Earlier, you said you wanted a custom bikini enchantment. How do you want it to look!"
 
 [['"I want to look like Heather."'->clone heather]]
-[['"Guess what kind of girl I\'d like to be." (randomize)'->random girl][$tournament_bikini = 'custom_bikini'; $heather_bikini_options = 'custom']]
+[['"Guess what kind of girl I\'d like to be." (randomize"'->random girl][$tournament_bikini = 'custom_bikini'; $heather_bikini_options = 'custom']]
 [['"I\'ll tell you exactly what I want to look like."'->custom girl][$tournament_bikini = 'custom_bikini'; $heather_bikini_options = 'custom']]
 
 ::clone heather <4210,7079>
@@ -425,7 +425,7 @@ Nat and Sally head off to the shoe store.
 "Hrm. let me think..." You can see the the look of intense thought on Sally's forehead.
 
 <<include [[custom girl 5]]>>
-[['"I don\'t like that, can you guess again?" (re-randomize)'->random girl]]
+[['"I don\'t like that, can you guess again?" (re-randomize"'->random girl]]
 
 ::get a girl name <4494,5333>
 You walk out of your room, boobs jiggling.
@@ -639,10 +639,10 @@ delete State.temporary.available_genitals[variables()['bottom_style']]
 [[Wait for Sally to respond.->custom girl 3]]
 
 ::pubic hair options <4676,7631>
-[["None."->custom girl 5][$pubic_hair = 'none']]
-[["Well the carpet should match the drapes."->carpet matches drapes]]
-[["A big muff."->custom girl 5][$pubic_hair = 'muff']]
-[["A landing strip."->custom girl 5][$pubic_hair = 'strip']]
+[['None.'->custom girl 5][$pubic_hair = 'none']]
+[['Well the carpet should match the drapes.'->carpet matches drapes]]
+[['A big muff.'->custom girl 5][$pubic_hair = 'muff']]
+[['A landing strip.'->custom girl 5][$pubic_hair = 'strip']]
 <<if ['kinda_like_heather', 'heather_sister'].include($heather_bikini_options)>>\
 <<choice [['"However, Heather keeps hers."'->heather pubes]]>>
 <</if>>\
@@ -662,4 +662,3 @@ TODO
 
 ::ff3 <2494,4691>
 Here you'll choose how to customize your bikini, if you used dialog options earlier to "keep the bikini".
-

+ 0 - 5
story/04_money_game.tw2

@@ -58,8 +58,3 @@ Double-click this passage to edit it.
 "Alright, after practice we'll head to the Mall to get you a new wardrobe."
 
 [['"New wardrobe?"']
-
-::Twee2Settings [twee2]
-Twee2::build_config.story_ifid = '3c1b2fa6-119a-4be2-98f3-83f9cb9e6801'
-Twee2::build_config.story_format = 'SugarCube2'
-

+ 3 - 8
story/05_beaches.tw2

@@ -3,7 +3,7 @@ You finish loading the gear into Jess's white 7-year-old Japanese hatchback.
 
 "Alright //girls// lets head to the beach!" Jess says.
 
-[["\"Shotgun!\""->shotgun]]
+[['"Shotgun!"'->shotgun]]
 [['Get in the backseat.'->backseat]]
 
 ::backseat <7051,4826>
@@ -156,7 +156,7 @@ Finally the path opens up to a breathtaking view of the ocean.
 ::is secret beach safe <7199,6437>
 "What! don't you trust me?"
 
-[["Of course... it's just."->reluctantly secret beach 4]]
+[['Of course... it\'s just.'->reluctantly secret beach 4]]
 
 ::reluctantly secret beach 4 <7092,6597>
 "Well then hurry up!" Jess says.
@@ -165,7 +165,7 @@ Finally the path opens up to a breathtaking view of the ocean.
 
 [[Follow the girls.->secret beach 4]]
 [['"Sure. I\'d do it for a kiss."'->do it for kiss][$jess_disposition -= 1]]
-[['"Why don\'t you show me your tits?'->secret beach - show me your tits][$jess_disposition -= 2]]
+[['"Why don\'t you show me your tits"'->secret beach - show me your tits][$jess_disposition -= 2]]
 
 ::do it for kiss <7218,6753>
 Nat puts down the net and poles and comes closer.
@@ -510,8 +510,3 @@ Double-click this passage to edit it.
 
 ::vicky named after queen victoria <5374,1266>
 Double-click this passage to edit it.
-
-::Twee2Settings [twee2]
-Twee2::build_config.story_ifid = 'c9534792-d7e5-4626-92e3-8008c88c249d'
-Twee2::build_config.story_format = 'SugarCube2'
-

+ 222 - 29
story/06_public_beach.tw2

@@ -1,4 +1,6 @@
-::public beach 1 <8835,5770>
+::public beach 1 <8764,5757>
+<<set $tried_public = true >>\
+\
 We arrive at the public beach parking lot, and it takes a while to find a spot.
 
 Sally rushes off to the beach.
@@ -19,22 +21,22 @@ Nat calls out as she gets into view, "So is the public net free?"
 [['"Bad news first."'->public beach bad news first]]
 [['"Just spit it out."'->public beach spit it out]]
 
-::public beach good news first <8539,5942>
+::public beach good news first <8509,5939>
 Sally exclaims, "Well the good news is that there's a free volleyball court we can use, and we don't need to set our net up... but the bad news is that Marci and her friends are here, and they're using the only free court is right next to them."
 
 <<include [[public beach choose court]]>>
 
-::public beach bad news first <8797,5914>
+::public beach bad news first <8765,5909>
 "Okay... the bad news. Marci and her friends are here, and they're using one of the volleyball courts, next to the only available one," Sally explains.
 
 <<include [[public beach choose court]]>>
 
-::public beach spit it out <9071,5946>
+::public beach spit it out <9077,5946>
 "Alright alright. Marci is here with her friends, and the only free volleyball court is right next to the one's she is using," Sally explains.
 
 <<include [[public beach choose court]]>>
 
-::public beach marci is here <8963,6257>
+::public beach marci is here <9089,6187>
 Jess smiles, "Oh don't tell me you have a crush?"
 
 [['"I just admire her athleticism."'->public beach admire marcis athleticism]]
@@ -71,7 +73,7 @@ Right... they think I'm Heather... 'coz I look like Heather.
 ::public beach choose court <8757,6057>
 [['"Marci is here?\'"'->public beach marci is here]]
 [['"We should setup our net far away from the public nets."'->public beach setup the nets far away]]
-[['"So we don\'t have to setup our net great, lets grab the free court before someone else does." '->public beach run to the free court]]
+[['"So we don\'t have to setup our net great, lets grab the free court before someone else does.""'->public beach run to the free court]]
 
 ::public beach distracting heckling <8315,6447>
 Jess: "I guess you're right, but we should plan on doing something mean to them later."
@@ -86,8 +88,8 @@ Sally: "I've been reading the rules, and there are _some_ minor hexes I can land
 ::public beach save time <8486,6453>
 "Yeah!" Natalie screams, as she grabs the volleyball from the back of the car, and heads to the court.
 
-[[rush over->public beach head on over]]
-[['"Hey! wait up."'->public beach head on over]]
+[[rush over->public beach talk to cheerleaders]]
+[['"Hey! wait up."'->public beach talk to cheerleaders]]
 
 ::public beach marci ally <8701,6451>
 Me: "So like the rules state we can have four pairs enter the tournament right?"
@@ -195,20 +197,17 @@ Natalie: "If you need any help with that Sal, just let me know... I'd love to se
 
 [['"That\'s the spirit! Let\\s go talk to them."'->public beach talk to cheerleaders]]
 
-::public beach head on over <9217,7185>
+::public beach talk to cheerleaders <9217,7185>
 You see Marci, the head cheerleader, and her three friends, Pratiba, Gina and Karen.
 
-Marci's boyfriend Daren was there with 3 other preppy looking dudes. The boys were sitting in beach chairs at the side of the court and they were drinking something out of silver cans while they watched the girls jiggle around in their tight-fitting swimsuits.
+Marci's boyfriend Daren is there with 3 other preppy looking dudes. The boys were sitting in beach chairs at the side of the court and they are drinking something out of silver cans while they watch the girls jiggle around in their tight-fitting swimsuits.
 
-Marci and Pratiba were on one side, playing volleyball against Gina and Karen on the other side... but something was off they were playing in slow motion, and the ball was too big... and when you got closer and you realized why: they were using an inflatable beach ball.
+Marci and Pratiba are on one side, playing volleyball against Gina and Karen on the other... but something is off they is playing in slow motion, and the ball is too big. As you get closer you realize why: they are using an inflatable beach ball.
 
-Marci sees Nat and says, "Oh hey, Natalie... too bad... oh and your friends are here too? I suppose you're here about the tournament?"
+Marci sees Nat and says, "Oh hey, Natalie... too bad... oh and your friends are here too? I suppose you're here about the tournament? Figures you'd want in on this action."
 
 <<include [[talk to the cheerleaders]]>>
 
-::public beach talk to cheerleaders <8554,7180>
-Double-click this passage to edit it.
-
 ::public beach too embarrassed <8877,6894>
 Jess: "Yeah it's the embarrassment that distracts you."
 
@@ -241,11 +240,17 @@ At this point, Natalie, Jess and Sally arrive.
 
 <<include [[talk to the cheerleaders]]>>
 
-::practicing with a beach ball <8751,7884>
+::practicing with a beach ball <8826,7878>
 Double-click this passage to edit it.
 
-::real ball <8897,7910>
-Double-click this passage to edit it.
+::real ball <8371,7830>
+Gina: "Uh yeah we know that... we're working ourselves up."
+
+Marci: "We're not practicing for the tournament, as we're super confident in our abilities."
+
+[['(whispers to Sally) "Could you make bikinis for all of them?"'->public beach plan b]]
+[['(to Jess, Nat, and Sally) "On second thought... lets\'s not be their ally."'->second thought no aliance]]
+[['"Wow... you guys really suck."'->cheerleaders suck at volleyball]]
 
 ::is that beer <9057,7904>
 Darren says, "Yeah it's Coors. You want one?"
@@ -269,7 +274,7 @@ Double-click this passage to edit it.
 ::talk to the cheerleaders <9164,7690>
 They wave at the large temporary stadium, the tournament organizers have been made, it's all roped off and it's covered in banners with the tournaments logo: A woman with two volleyballs where here breast should be.
 
-[['"Let me guess... you\'re practicing? with that?" (points at beach ball)'->practicing with a beach ball]]
+[['"Let me guess... you\'re practicing? with that?" (points at beach ball"'->practicing with a beach ball]]
 [['"The tournament will be with a real ball like this one."'->real ball]]
 [['"Is that beer?"'->is that beer]]
 [['<lie> "Oh? What tournament?"'->what tournament]]
@@ -278,12 +283,15 @@ They wave at the large temporary stadium, the tournament organizers have been ma
 ::can i have a beer <8755,8034>
 You catch the beer.
 
-[[shotgun it->shotgun the beer]]
+Sally: "Nice catch."
+
+[['"Do you have anything to shotgun this with?"'->shotgun the beer]]
+[[drink it->drink the beer]]
 
-::no beer please <8876,8207>
+::no beer please <8931,8216>
 "Suit yourself," Darren says as he takes a big slurp from the can.
 
-#TODO
+TODO - cop at the beach, but only boys are at fault.
 
 ::no beer <9097,8054>
 Marci: "Don't be a Narc."
@@ -319,21 +327,206 @@ Pratiba: "I guess, but at least at a cheer event, guys can't just whip their dic
 Double-click this passage to edit it.
 
 ::no one is masturbating to beach volleyball <9506,8230>
-Double-click this passage to edit it.
+Karen: "Uh... you'd be surprised what some guys jack it to."
+
+TODO
 
 ::pays well <9656,8230>
 Double-click this passage to edit it.
 
-::fine no narc <9000,8248>
+::cop over there <9136,8240>
+Darren: "Oh shit. Uh. put it all back in the cooler guys."
+
+The boys huriedly put all the beer back in the cooler.
+
+<<include [[saved boys asses]]>>
+
+::shotgun the beer <8843,8468>
+Darren: "Uh sure."
+
+He throws you a screw driver, and you catch it.
+
+You stab the bottom of the can and put the new hole up to your mouth while grasping the can firmly with your left hand you pull the tab with your right.
+
+Witht he vaccum holding the beer in the can releasted it starts spewing yout the bottom hole.
+
+You glug it down getting most of it, but spilling some on the beach.
+
+You wipe your brow.
+
+Nat: "Wow you're a lot cooler than I thought."
+
+Darren: "Marci, can we invite Heather to our next house party."
+
+<<include [[cop shows up at public beach]]>>
+
+::public beach plan b <8157,8003>
+The four of you huddle up, so the Cheerleaders and their dumb boyfriends can't hear you.
+
+Sally: "Maybe? what are you thinking?"
+
+You: "Well we don't have to compete in every game right, it'll be like round-robin or whatever? at least for qualifying."
+
+Sally: "Yes..."
+
+Jess: "The logistics of that could be... complicated..."
+
+Nat: "I don't think those bitches would cooperate."
+
+Sally: "And once we qualify, we have to choose our best pair, and then they get seeded into the tournament."
+
+[['"Yeah you\'re probably right... we can\'t rely on the cheerleaders."'->public beach unreliable cheerleaders]]
+[['"Correct, but we\'d compete as different teams."'->plan b part 2]]
+[['"Nevermind. This plan is too complicated."'->plan b too complicated]]
+
+::second thought no aliance <8374,8008>
+<<set $sally_disposition += 2>>
+<<set $jess_disposition += 1>>
+<<set $nat_disposition += 2>
+
+Sally: "Yeah fuck those mean bullies."
+
+Marci: "What did you call us?"
+
+[['"You heard her! Come on girls, let\'s setup far away from these cunts."'->setup far away from the cunts.]]
+[['"Come on Marci, we just want to practice volleyball on the court next to yours."'->fight for the net.]]
+
+::cheerleaders suck at volleyball <8532,8008>
+Marci: "And you Heather, suck at cheerleading. I remember your tryoug it was pathetic."
+
+[['"Come on Marci, we just want to practice volleyball on the court next to yours."'->fight for the net.]]
+[['"Whatever Marci! Come on girls, let\'s setup far away from these cunts."'->setup far away from the cunts.]]
+
+::public beach unreliable cheerleaders <7980,8146>
+Double-click this passage to edit it.
+
+::plan b part 2 <8232,8153>
 Double-click this passage to edit it.
 
-::cop over there <9146,8248>
+::setup far away from the cunts. <8362,8162>
 Double-click this passage to edit it.
 
-::shotgun the beer <8766,8228>
+::fight for the net. <8547,8170>
 Double-click this passage to edit it.
 
-::Twee2Settings [twee2]
-Twee2::build_config.story_ifid = '19A9390A-68B9-4FA9-8557-7429B0668798'
-Twee2::build_config.story_format = 'SugarCube2'
+::plan b too complicated <8111,8155>
+[['"So can we use that court over there?"'->use nextdoor court]]
+
+::use nextdoor court <8111,8305>
+Double-click this passage to edit it.
+
+::drink the beer <8673,8229>
+You crack the can, and take a glug.
+
+It's the color of piss and tastes only slightly better.
+
+[['"Delicious. Thanks Darren, but I can\'t drink a whole can."'->cannot drink a whole can]]
+[[chug the rest of the beer.]]
+
+::cannot drink a whole can <8583,8380>
+Darren: "Oh that's alright, I can drink the rest."
+
+Darren walks over and tries to take the half-drunk can of beer from you.
+
+<<include [[cop shows up at public beach]]>>
+
+::chug the rest of the beer. <8723,8390>
+You glug down the rest of the beer. You wipe the beer foam from your lip.
+
+Darren comes over, "That was amazing, you're a real party girl."
+
+<<include [[cop shows up at public beach]]>>
+
+::cop shows up at public beach <8667,8581>
+A police officer saunters over. Her muscular body strains against the blue uniform.
+
+She's wearing a baseball cap and sunglasses, and has a clearly visible holstered sidearm.
+
+"Miss, are you aware that it is illegal to consume alcoholic beverages on a public beach?"
+
+[['"Sorry officer, we\'ll stop drinking"'->sorry officer]]
+[['"No I was not aware."'->not aware drinking not allowed]]
+[['"Uh it\'s their beer."'->the boys beer]]
+[['"This isn\'t beer."'->not beer]]
+
+::sorry officer <8442,8731>
+Officer: "Sorry ain't gonna cut it. You're underage, I'm gonna need to take you to the car to check your ID."
+
+<<include [[arrested]]>>
+
+::not aware drinking not allowed <8599,8734>
+"Yeah well it doesn't matter, you're underage, and that's definitely illegal. I'm taking you to the car to check your ID."
+
+<<include [[arrested]]>>
+
+::the boys beer <8743,8737>
+Officer: "Yeah well you're the one holding the can. Do you have ID? you look underage. I'm taking you to the car."
+
+<<include [[arrested]]>>
+
+::not beer <8929,8723>
+Sally: "Yeah it's a Japanese energy drink, see..."
+
+Sally takes the can out of your hand and gives it to the officer.
+
+"Oh I see," the officer sounded disapointed, "This garbage has the same amount of caffeine as four cups of black coffee. I bet O'Shanahan would love this stuff."
+
+The officer leaves, a bit confused.
+
+<<include [[saved boys asses]]>>
+
+::saved boys asses <9136,8390>
+Darren: "Thanks, uh Heather was it? You really saved our asses."
+
+::handcuffs not necessary <8684,9063>
+Officer: "I'm officer, Whitney, what's your name?"
+
+[['"Heather"'->tell cop name is heather]]
+[['"$girl_name"'->tell cop the name is girl_name]]
+
+::arrested <8633,8887>
+She pulls out her handcuffs. "You're under arrest."
+
+[['"Those won\'t be necessary. Don\'t worry guys I\'ll be back."'->handcuffs not necessary]]
+[['"I\'m what."'->handcuffed]]
+[['Sally, help me!"'->help from Sally]]
+
+::handcuffed <8484,9060>
+Double-click this passage to edit it.
+
+::help from Sally <8903,9019>
+Sally clicks her fingers, and the officer flops sideways onto the sand.
+
+Jess asks, "What did you do?"
+
+Sally: "I knocked her out."
+
+Nat: "You can knock people out by snapping your fingers?"
+
+Sally: "It's a simple spell, easily blocked by a class z ward. Like a rabbit's foot."
+
+Jess: "What are we going to do when she wakes up."
+
+[['"Fuck. We all need to get out of here."'->get out of here]]
+
+::get out of here <8903,9169>
+Darren: "Uh thanks, whoever you are, we would have been in big trouble, but we should leave too."
+
+Marci: "Why are you thanking her? She assaulted a police officer... I think."
+
+[['"We can just head over there and set up the net? The only witnesses won\'t tell, they\'re headed out."'->setup net after cop]]
+[['"I guess we head back to the car"'->back to the car]]
+
+::setup net after cop <9002,9371>
+Double-click this passage to edit it.
+
+::back to the car <9160,9271>
+Double-click this passage to edit it.
+
+::tell cop name is heather <8609,9213>
+You arrive at a large black expedition with tinted windows.
+
+Officer Whitney: "Alright Heather. Here's what's going to happen. Give me your ID, and then get in the back."
 
+::tell cop the name is girl_name <8759,9213>
+Officer Whitney: "Alright $girl_name. Here's what's going to happen. Give me your ID, and then get in the back."

+ 4 - 0
storyjs.tw2

@@ -251,6 +251,10 @@ window.myutils.isEqual = function isEqual(a, b) {
 		'Kate',
 		'Amanda',
 	]
+  
+  $tried_public = false;
+  $tried_private = false;
+  $tried_secret = false;
 >>
 
 ::StoryCaption <1445,226>