19 次代码提交 269db0ddaf ... 5aa85b39bb

作者 SHA1 备注 提交日期
  Ruduki2 5aa85b39bb import main 5 年之前
  Ruduki2 57b5e2c7e1 Add public beach 5 年之前
  Ruduki2 f9a90a1430 slight refactor to make things less hardcoded 5 年之前
  Ruduki2 d05ac9058c fix gemfile 5 年之前
  Ruduki2 195d792d8a Add in ff3 link to fix links 5 年之前
  Ruduki2 9fb179f485 remove garbage passages 5 年之前
  Ruduki2 b7a10e455f html formatting 5 年之前
  Ruduki2 007b759d2c whitespace and fixing stuff 5 年之前
  Ruduki2 b991d59baf check for links with setters in them 5 年之前
  Ruduki2 e1dd24398a more linter checks 5 年之前
  Ruduki2 f35aaa2a9d whitespace changes 5 年之前
  Ruduki2 fb427611b4 include as a link instead of as text 5 年之前
  Ruduki2 818cf6484b add ff passages back 5 年之前
  Ruduki2 0bb5f490b6 ignore duplicate Twee2Settings 5 年之前
  Ruduki2 27752d8c6c colorize output and check for duplicate titles 5 年之前
  Ruduki2 9b1b771b31 whitespace changes 5 年之前
  Ruduki2 88618157c3 add colorize gem 5 年之前
  Ruduki2 fe17d57bda fix line endings and add in blackmail storyline 5 年之前
  Ruduki2 5b3bf7a7af more lint checks 5 年之前
共有 9 个文件被更改,包括 2268 次插入1162 次删除
  1. 3 1
      .gitignore
  2. 6 2
      Gemfile
  3. 101 12
      Rakefile
  4. 20 20
      main.tw2
  5. 27 2
      story/01_intro.tw2
  6. 1109 565
      story/02_transform.tw2
  7. 662 557
      story/03_custom_girl.tw2
  8. 0 3
      story/05_beaches.tw2
  9. 340 0
      story/06_public_beach.tw2

+ 3 - 1
.gitignore

@@ -2,4 +2,6 @@
 /watch.html
 /release.html
 /*_wrapper.tw2
-/Gemfile.lock
+/Gemfile.lock
+/story.tw2
+/story_title.tw2

+ 6 - 2
Gemfile

@@ -1,2 +1,6 @@
-gem 'twee2', git: 'https://github.com/harvimt/twee2.git', branch: 'release-0.6.0'
-gem 'rake'
+source 'https://rubygems.org'
+#gem 'twee2', git: 'https://github.com/harvimt/twee2.git', branch: 'release-0.7.0'
+gem 'twee2', path: '../twee2'
+gem 'rake'
+gem 'colorize'
+gem 'uuidtools'

+ 101 - 12
Rakefile

@@ -1,15 +1,26 @@
 task default: %w(develop)
+begin
+  require 'colorize'
+  String.disable_colorization = false
+rescue LoadError
+end
+
+require 'set'
+
 STORY_DIR=File.join(ENV['USERPROFILE'], 'Documents\\Twine\\Stories')
 STORY_TITLE = 'Volleyball'
 STORY_FORMAT = 'SugarCube'
 STORY_FORMAT_PATH = "story_formats/sugarcube-2.28.2-for-twine-2.1-local/sugarcube-2"
 STORY_FORMAT_VERSION = '2.28.2'
+STORY_RELEASE_TITLE = 'Volleyball Chapter 1 v0.5'
+
 FILES = {
   '01_intro' => '01 Intro',
   '02_transform' => '02 Transform',
   '03_custom_girl' => '03 Custom Girl',
   '04_money_game' => '04 Money Games',
   '05_beaches' => '05 Beaches',
+  '06_public_beach' => '06 Public Beach',
 }
 
 def files
@@ -24,16 +35,16 @@ def files
   end
 end
 
-task develop: %w(bundle_install storyjs) do
+task develop: %w(bundle_install storyjs story.tw2 story_title.tw2) do
   sh "bundle exec twee2 build '--format=#{STORY_FORMAT_PATH}' main.tw2 develop.html"
 end
 
-task watch: %w(bundle_install storyjs) do
+task watch: %w(bundle_install storyjs story.tw2 story_title.tw2) do
   sh 'start watch.html'  # FIXME non-windows
   sh "bundle exec twee2 watch '--format=#{STORY_FORMAT_PATH}'  main.tw2 watch.html"
 end
 
-task release: %w(bundle_install storyjs) do
+task release: %w(bundle_install storyjs story.tw2 story_title.tw2) do
   sh "bundle exec twee2 build '--format=#{STORY_FORMAT_PATH}' main.tw2 release.html"
 end
 
@@ -45,8 +56,24 @@ task :storyjs do
   )
 end
 
+file 'story.tw2' do
+  File.open('story.tw2', 'w') do |f|
+    f.puts('::StoryIncludes')
+    files.each do |file|
+      f.puts(file.source_file)
+    end
+  end
+end
+
+file 'story_title.tw2' do
+  File.open('story_title.tw2', 'w') do |f|
+    f.puts('::StoryTitle')
+    f.puts("#{STORY_RELEASE_TITLE}")
+  end
+end
+
 desc 'export sub files to Twine 2'
-task export: %w(bundle_install storyjs) do
+task export: %w(bundle_install storyjs story.tw2) do
   files.each do |file|
     IO.write file.wrapper_file, <<~EOF
       ::StoryTitle
@@ -56,6 +83,7 @@ task export: %w(bundle_install storyjs) do
       @story_start_name = 'Start #{file.long_name}'
       Twee2::build_config.story_format = '#{STORY_FORMAT}'
       Twee2::build_config.story_format_version = '#{STORY_FORMAT_VERSION}'
+      Twee2::build_config.story_ifid = ''
       
       ::StoryIncludes
       images.tw2
@@ -89,6 +117,21 @@ task import: %w(bundle_install) do
   end
 end
 
+task import_main: %w(bundle_install) do
+  file_set = Set.new(files)
+  base_excludes=%w[../stylesheet.tw2 ../storyjs.tw2 ../stylesheet.tw2 ../images.tw2]
+  files.each do |file|
+    other_files = (file_set - Set.new(file)).map { |f| f.source_file }
+    excludes = others_files + base_excludes
+    sh(
+      'bundle', 'exec', 'twee2', 'decompile',
+      File.join(STORY_DIR, STORY_RELEASE_TITLE), file.source_file,
+      '--exclude=StoryJS,StoryCSS,StoryTitle',
+      "--exclude-from=../stylesheet.tw2,../storyjs.tw2,../stylesheet.tw2,../images.tw2',
+    )
+  end
+end
+
 task :bundle_install do
   sh 'bundle check || bundle install'
 end
@@ -98,28 +141,47 @@ task :clean do
 end
 
 task :lint do
+  titles = Set.new
+  passages = {}
+  title = nil
   files.each do |file|
     twee_source = IO.read(file.source_file)
     twee_source.lines.each_with_index do |line, lineno|
       lineno += 1
+      # check for duplicate
+      if line.start_with?('::') && !line.start_with?('::StoryIncludes')
+        title = line.match(/^:: *([^\[]*?) *(\[(.*?)\])? *(<(.*?)>)? *$/)[1]
+        #puts title
+        if title != 'Twee2Settings' && titles.include?(title)
+          puts "#{file.source_file}:#{lineno} duplicate title #{title}".red
+        end
+        titles.add(title)
+        passages[title] = {outbound_links: [], inbound_links: [], source_line: "#{file.source_file}:#{lineno}"}
+      end
+      
+      # check links
       line
-      .scan(%r{\[\[([^\]]*)\]\]})
+      .scan(%r{\[\[(.+?)\](\[(.+?)\])?\]})
       .map { |x| x[0] }
       .each do |link|
         case link.scan('->').length
         when 0
           #link contains no ->, probably not a problem
-          text = link
+          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
-          warn("link contains multiple -> definitely a problem")
+          puts "#{file.source_file}:#{lineno} link contains multiple -> definitely a problem".colorize(:red)
           next
         end
         if text.start_with?('\'')
           if !text.end_with?('\'')
-            warn "#{file.source_file}:#{lineno} link text (#{text.inspect}) does not end with single quote despite starting with one"
+            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]
@@ -128,12 +190,12 @@ task :lint do
           .map {Regexp.last_match.offset(0)[0]}
           .each do |offset|
             if text[offset - 1] != '\\'
-              warn "#{file.source_file}:#{lineno} link text (#{text.inspect}) contains unquoted single quote in body"
+              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?('"')
-            warn "#{file.source_file}:#{lineno} link text (#{text.inspect}) does not end with double quote despite starting with one"
+            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]
@@ -142,13 +204,40 @@ task :lint do
           .map {Regexp.last_match.offset(0)[0]}
           .each do |offset|
             if text[offset - 1] != '\\'
-              warn "#{file.source_file}:#{lineno} link text (#{text.inspect}) contains unquoted double quote in body"
+              puts "#{file.source_file}:#{lineno} link text (#{text.inspect}) contains unquoted double quote in body".colorize(:red)
             end
           end
         elsif text =~ /\A[\[\]'"\\]*\z/
-          warn "#{file.source_file}:#{lineno} link text (#{text.inspect}) contains special characters but is not quoted with single or double quotes"
+          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
+      # 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.\""
+      end
+      # check for TODO/FIXME
+      if line.include?('TODO') || line.include?('FIXME')
+        #puts "#{file.source_file}:#{lineno} has TODO/FIXME text: #{line}"
+      end
+      # check for <<include>> as string
+      if line.include?('<<include') && !line.include?('[[')
+        puts "#{file.source_file}:#{lineno} has an <<include>>, but no link"
+      end
+
+    end
+  end
+  passages.each do |title, passage|
+    passage[:outbound_links].each do |link|
+      if passages[link[:passage]]
+        passages[link[:passage]][:inbound_links] << {passage: title, source_file: passage[:source_line]}
+      else
+        puts "#{link[:source_line]} (title=#{title}) links to non-existent passage #{link[:passage]}".red
+      end
+    end
+  end
+  passages.each do |title, passage|
+    if passage[:inbound_links].empty? && title != 'Twee2Settings'
+      puts "#{passage[:source_line]} (title=#{title}) has no inbound links"
     end
   end
 end

+ 20 - 20
main.tw2

@@ -1,20 +1,22 @@
-::StoryTitle
-Volleyball Chapter 1 v0.5
+::StoryIncludes
+story_title.tw2
 
 ::landing <553,58>
 This interactive story contains adult content. Make sure it is lawful in your jurisdiction to consume such content.
 
 Erotic themes:
-- breast expansion
-- MtF transgender transformation, magicial change, fast but not instant, changed by clothing.  
-- teen sex (all 18+)
-- (optional) voyeurism
-- (planned) (optional) incest (brother-sister)
-- various lesbian sex
-- various straight sex
-- (planned) ambiguous consent (pretending to be someone else to gain sex)
-- sports (beach volleyball)
-- features bikinis and the beach prominently.
+<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.
+</ul>
 
 [[This game is entered into the public domain under the terms of the Creative Commons Zero License.->License]]
 [[Third-Party Software]]
@@ -115,9 +117,11 @@ The person who associated a work with this deed has dedicated the work to the pu
 You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission. See Other Information below.
 
 Other Information
-- In no way are the patent or trademark rights of any person affected by CC0, nor are the rights that other persons may have in the work or in how the work is used, such as publicity or privacy rights.
-- Unless expressly stated otherwise, the person who associated a work with this deed makes no warranties about the work, and disclaims liability for all uses of the work, to the fullest extent permitted by applicable law.
-- When using or citing the work, you should not imply endorsement by the author or the affirmer.
+<ul>
+<li> In no way are the patent or trademark rights of any person affected by CC0, nor are the rights that other persons may have in the work or in how the work is used, such as publicity or privacy rights.
+<li> Unless expressly stated otherwise, the person who associated a work with this deed makes no warranties about the work, and disclaims liability for all uses of the work, to the fullest extent permitted by applicable law.
+<li> When using or citing the work, you should not imply endorsement by the author or the affirmer.
+</ul>
 
 <a href="https://creativecommons.org/publicdomain/zero/1.0/">Read the full text of the license on Creative Commons</a>
 
@@ -150,11 +154,7 @@ Graphics Used
 images.tw2
 stylesheet.tw2
 storyjs.tw2
-story/01_intro.tw2
-story/02_transform.tw2
-story/03_custom_girl.tw2
-story/04_money_game.tw2
-story/05_beaches.tw2
+story.tw2
 after.tw2
 
 ::Twee2Settings [twee2]

+ 27 - 2
story/01_intro.tw2

@@ -753,8 +753,33 @@ Sally continues, "Heather couldn't make it so we gave you her bikini."
 

 <<include [[bikini questions]]>>
 
+::ff1 <2611,4486>
+Alright, you've chosen to fast forward:
+
+brief summary, of what happens
+
+- put on the magic bikini (either top first or bottom first, or the top or bottom you didn't put on before now).
+- option to seduce Natalie (similar to previous scene).
+
+Walk out into the living room and talk to the girls and:
+[[Fast Forward ⏩->get a girl name]]
+
+::ff2 <2596,4016>
+You've fast-forwarded, here's what happens between now and the next passage:
+
+- There's a "mini-game" for cash. This is used when you visit the mall later after practice
+- ways to get cash:
+	- beg/borrow from any of the girls
+	- steal (from your parents, either cash or credit card)
+	- find loose change in the couch
+	- destroy your piggy bank to get the change
+- Your sister lets you borrow some clothes for the ride to the beach.
+
+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'
-
+Twee2::build_config.story_format = 'SugarCube2'

+ 1109 - 565
story/02_transform.tw2

@@ -1,565 +1,1109 @@
-::static electricity <3215,1867>
-You pull out the bikini top, it's a got four strings, two for the neck and two for the back. 

-

-<<if $girls_present>>\

-[["\"Could I get some help with this?\""->help with bikini]]

-<</if>>\

-[[Tie the top part first.]]

-[[Tie the bottom part first.]]

-[[Put the bottoms on first.->bottoms first]]

-[["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]]

-[[Stretch and tie the back yourself.]]
-
-::Tie the bottom part first. <3510,1953>
-Hrm. that doesn't seem to work.
-
-::transform with nat <3772,2037>
-<<if not $nat_present>>\

-Natalie comes into your room and looks at you.

-

-<</if>>\

-<<if $mood is 'alarm'>>\

-"No baby, it's alright, this is how it's supposed to work."

-

-<</if>>\

-Nat sits behind you on your bed, and starts to massage your shoulders.

-

-"Oh. You're becoming such a cute girl."

-

-<<include [[bikini top transformation part 2]]>>

-

-<<if $current_bottom == 'heather bikini' >>\

-"There, you're all done," Nat announces.

-<<else>>\

-"There, you're all done... on the top at least." Nat announces.

-<</if>>\

-

-[[Look in mirror.->look in mirror with nat]]

-[[Feel your tits.->feel your tits with nat]]

-[["\"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]]

-[[Take off your pants.->pants off 1]]
-
-::Stretch and tie the back yourself. [know-bikini-feminizes know-bikini-magical] <3701,1600>
-It takes all your dexterity, but you're able to stretch and tie the back into a passable bow.

-

-<<include [[bikini top transformation part 1]]>>

-

-[[Relax.->relax and transform]]

-[["\"Help! I'm growing breasts!\""->transform with nat]]\

-<<set $current_top = "heather bikini">>
-
-::help with bikini [know-bikini-feminizes know-bikini-magical] <3405,2149>
-"Fine. I'll help," Nat cries through the door. She enters your room, closing the door behind her and gets to work.

-

-<<if visitedTags('top-part-tied')>>\

-Nat sneaks around to your back and deftly ties a beautiful bow.

-<<else>>\

-Nat ties the top in a simple knot then puts it around your neck. She spins you around and ties the back in a bow.

-<</if>>\

-

-<<include [[bikini top transformation part 1]]>>

-

-[[Relax.->transform with nat]]

-[["\"Help! I'm growing breasts!\""->transform with nat][$mood = 'alarm']

-[[Try to take the bikini off.->transform with nat][$mood = 'calm']]\

-<<set $nat_present=true;>>
-
-::bikini top transformation part 1 <3630,1891>
-The fabric clings to your skin, and your chest starts to tingle. Electricity surges painlessly through your body and you feel woozy. Your chest starts to swell, filling out the bikini.\

-<<set $current_top = 'heather bikini'>>
-
-::relax and transform <4070,1596>
-<<include [[bikini top transformation part 2]]>>

-

-[[Look in mirror.]]

-[[Feel your new tits.]]

-[["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.

-

-"Can I borrow a mirror?"

-

-"Sure thing," Nat replies as she pulls a makeup mirror from her purse and hands it over.

-

-<<include [[mirror description]]>>

-

-After getting a good look in, hand the mirror back.

-

-[["\"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.

-

-<<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]]

-<<else>>

-[["\"I have questions.\""->back to jess and sally]]<</if>>
-
-::bikini top transformation part 2 <4096,1800>
-It's hard to tell exactly what you're becoming from the inside, but you're not feeling as woozy anymore, but your chest continues to swell, and your face is rearranging itself. You can feel hair on your neck, it must be growing.
-
-::Look in mirror. [know-bikini-heather] <4282,1880>
-You don't have a full length mirror in your room, so you rush out to the bathroom.

-

-<<include "mirror description">>

-

-[[Go back to Jess's room.->back to jess and sally]]
-
-::Feel your new tits. <4402,1653>
-They feel so good. They're large and sensitive. You've never been in such proximity to boobs like this before,\

-<<if $current_bottom == 'heather bikini'>>\

-it's getting your new pussy all wet.

-

-[[Slip some fingers in your pussy.]]

-<<else>>\

-it's getting your dick hard.

-

-[[Play with your dick.]]

-[[Put on bikini bottoms.->put on bottoms second]]

-<</if>>\

-[[Ugh. there's no time for this. I need answers.->back to jess and sally]]

-<<silently>>FIXME -- add a short masturbation sequence.<</silently>>
-
-::back to jess and sally [know-bikini-feminizes know-bikini-busty] <3317,2372>
-You head back to Jess's room with your new bosom jiggling distractingly as you walk.

-

-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]]\

-<<set $current_top = 'heather bikini'>>
-
-::mirror description <4363,2164>
-You look just like Jess's friend Heather: long brown hair and soft feminine features, except your skin glows like you're in a skin care commercial and your tits are massive.
-
-::nat motorboats you. <4068,2560>
-Natalie grabs your tits and starts massaging them.

-

-Her face lights up with pleasure as she plays with them. She slips a hand underneath the bikini and starts fiddling with your rock hard nipple.

-

-"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]]

-[[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]]
-
-::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]]

-<<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.

-

-Nat waggles her head and gets nice and comfy betwixt your new mounds.

-

-Your cock is now hard with anticipation.

-

-[[Grab her ass.]]

-[[Pat her head.]]

-[[Pull her into a kiss.]]
-
-::quickie <3741,2892>
-<<if $nat_disposition >= 1>>

-"I guess there's time for a quick handjob."

-

-[[Take off your pants.]]

-<<else>>

-"No. But we'll pick up where we left off later."

-

-[["\"Alright.\""->back to jess and sally]]

-<</if>>
-
-::Take off your pants. <3759,3022>
-You take off your pants and lay back on the bed. Your penis is stiff as a flagpole pointing at the ceiling. Nat gets on the bed with you but with her hands with easy access to your crotch.

-

-<<if $nat_disposition >= 3>>

-"You know what they say about the best way to give a handjob?"

-

-She doesn't wait for your reply.

-

-"Use your mouth."

-

-<<include [[nat give you a bj]]>>

-<<else>>

-Natalie rummages around in her purse and pulls out a small bottle of lube.

-

-She puts some on her hands, and starts to stroke your cock.

-

-[[Play with your tits while she strokes.]]

-[[Put a hand down Natalie's shorts.]]

-[[Pretend Natalie is your sister.]]

-[[Pretend Natalie is Sally.]]

-<</if>>
-
-::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]]

-[["\"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]]

-<<set $nat_offlimits to true >>
-
-::finish this later <3999,3100>
-"Fine, get yourself sorted, and I'll meet you back in Jess's room."

-

-[[Go back to Jess's room.->back to jess and sally]]
-
-::tell her how you really feel <4129,3033>
-"That's good advice, you're surprisingly wise."

-

-[["\"Alright. lets head back Jess's room.\""->back to jess and sally]]

-<<set $nat_disposition += 1;

-      $nat_offlimits to true; >>
-
-::friendzoned <4267,3043>
-Natalie is exasperated, "What? no! that's terrible advice. The 'friendzone' isn't a real thing!"

-

-"Let's go back to the group, you probably have questions I can't answer."

-

-[["(mumble) \"Then why won't Sally go out with me?\""->pathetic 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."

-

-Nat strokes her chin, "I have an idea: Why don't I put in a good word for you with Sally, and you do the same for me with your sister, and we promise each other that after this is over we both ask our crush out?"

-

-Nat extends her pinky.

-

-[["\"Deal.\""->crush deal.]]
-
-::crush deal. <4578,3058>
-You shake pinkies: enacting the solemnest of vows: A Pinky Promise.

-

-"Lets get back to the group, I bet you have questions."

-

-[["\"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]]

-<<if $times_spied <= 0>>\

-[["\"I'm not a snoop!\""->not a snoop]]

-<<else>>\

-[["(lie) \"I'm not a snoop!\""->not a snoop][$lies += 1]]

-<</if>>\
-
-::agree to snoop <4364,2915>
-"Thanks a million. I'll try to make it up to you somehow... just not sexually."

-

-<<once [["\"Oh? Are you a lesbian?\""->is nat a lesbian?]]>>\

-[["\"Alright, lets head back to Jess's room.\""->back to jess and sally]]
-
-::not a snoop <4561,2823>
-<<if $girls_know_you_spied>>\

-"We both know that's not true. You'd be spying for love this time though."

-<<else>>\

-"Okay, but if you find out anything... accidentally... let me know."

-<</if>>\

-

-[["\"Alright, lets head back to Jess's room.\""->back to jess and sally]]
-
-::is nat a lesbian? <4252,2778>
-"I'm bisexual..."

-

-<<return "\"Oh.\"">>
-
-::Grab her ass. <3717,2723>
-"Oh. I think we're starting something we don't have time to finish: Sally and Jess are waiting on us."

-

-[["\"Alright.\""->back to jess and sally]]

-[["\"I'll make it up to you later.\""->make up for this later]]

-[["\"Do we have enough time for a quickie?\""->quickie]]
-
-::Pat her head. <3624,2643>
-"Dirty." Nat licks her lips seductively.

-

-<<if $nat_disposition >= 2>>\

-Her hands travel from your bust to your fly which she slides open.

-

-Your cock flops out and she grabs it with one hand. With the other she cups your balls.

-

-"Oh. you're bigger than I expected." 

-

-[["\"I bet you say that to all the girls.\""->all the girls]]

-[["\"I bet you say that to all the boys.\""->all the boys]]

-[["\"Too big for your mouth?\""->too big for your mouth]]

-<<else>>\

-"...but we don't really have time for that now."

-

-[["\"Not even for a quickie?\""->quickie]]

-<</if>>
-
-::Pull her into a kiss. <3953,2699>
-You use both hands and pull her head to yours. You both tilt our heads and start kissing passionately.

-

-After about a minute, Natalie, rebuffs you and stands up off the bed.

-

-"We don't have time for this, Jess and Sally are waiting."

-

-[["\"Alright.\""->back to jess and sally]]

-[["\"I'll make it up to you later.\""->make up for this later]]

-[["\"Not even for a quickie?\""->quickie]]
-
-::all the boys <3225,2772>
-"What! Are you insinuating I sleep with all the guys?"

-

-"No. It's just..."

-

-"Whatever, I'm not in the mood anymore and Nat and Jess are waiting on us. Put on your pants."

-

-[[re-zip your fly.]]
-
-::too big for your mouth <3331,2866>
-"No cock is too big for me."

-

-<<include [[nat give you a bj]]>>
-
-::re-zip your fly. <3197,2938>
-"Hurry up lets go," Nat insists.

-

-[["\"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...

-

-"What's going on in there? We have to practice," Jess shouts through the door.

-

-[["\"I'm almost there, just keep sucking.\""->just keep sucking]]

-[["\"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."

-

-[[Walk back to Jess's room->back to jess and sally]]
-
-::just keep sucking <3489,3020>
-"No you're not, I barely started. Look, I hate giving guys blue balls, but we need to finish this later."

-

-[[Put your pants back on.]]
-
-::Play with your tits while she strokes. <3465,3206>
-You fondle your own tits, they're so bouncy and soft.

-

-"Oh you like them don't you? I like them too."

-

-Nat grabs one as well, tweaking it with one hand while she continues jacking you off with the other.

-

-<<include [[handjob climax]]>>
-
-::Put a hand down Natalie's shorts. <3627,3219>
-You slide a hand down Natalie's shorts and slip a finger into her slit.

-

-It's wet and moist and Nat moans with pleasure. Your stimulation of her is reciprocated, she starts stroking harder and faster.

-

-<<include [[handjob climax]]>>
-
-::Pretend Natalie is your sister. <3795,3210>
-You close your eyes and imagine Jess naked with her strong athletic hands gripping and stroking you. She's been so mean to you your whole life, would it kill her to do something nice for you? Her long brown hair shakes as she strokes.<<set $eyes_closed to true>>

-

-<<include [[handjob climax]]>>
-
-::Pretend Natalie is Sally. <3932,3217>
-You close your eyes and imagine Sally with her big green eyes behind smart glasses... with her joyous smile framed by locks of ginger hair and soft freckles. That's the ticket, Sally uses mathematical precision to stroke optimally.<<set $eyes_closed to true>>

-

-<<include [[handjob climax]]>>
-
-::handjob climax <3687,3440>
-Nat uses one finger to massages the head of your penis. Then, she strokes with the other hand. Faster, faster, squeezing harder. It feels so good!

-

-You orgasm, spewing little drops of cum into the air. 

-

-Nat licks some of the cum off her fingers.

-

-"Better freshen up. I'll meet you in Jess's room," Nat leaves.

-

-[[Put on clean underwear and pants.]]
-
-::Put your pants back on. <3355,3125>
-You reluctantly put your pants back on.

-

-[["\"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.

-

-[[Head back to Jess's Room.->back to jess and sally]]

-

-<<silently>>

-Clothing:

-current_top = $current_top

-current_bottom = $current_bottom

-<</silently>>
-
-::youtube <3330,1657>
-Huh. so there are lots of fancy ways apparently, but the normal way is to tie the top first, then put it over your neck and tie the back. Tying the back can be hard to reach, so many people like to get help from a partner.

-

-[[Tie the top part.->Tie the top part first.]]
-
-::put on swimsuit <802,3585>
-You take the swimsuit out of the bag and separate it into it's two parts.

-//Ow!// It zaps you a little bit.

-

-[[Put on the top first.->put on top first]]

-[[Put on the bottom first->put on bottom first]]\

-<<set $current_top = 'topless'>>
-
-::put on top first <1343,3841>
-You pull out the bikini top, it's a got four strings, two for the neck and two for the back. 

-

-[["\"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]]
-
-::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.

-

-<<include [[Nat bikini description]]>>

-

-<<if visitedTags('top-part-tied')>>\

-Nat sneaks around to your back and deftly ties a beautiful bow.

-<<else>>\

-Nat ties the top in a simple knot then puts it around your neck. She spins you around and ties the back in a bow.

-<</if>>\

-

-<<include [[bikini top transformation part 1]]>>

-

-[[Relax.->transform with nat2]]

-[["\"Help! I'm growing breasts!\""->transform with nat2][$mood = 'alarm']]

-[[Try to take the bikini off.->transform with nat2][$mood = 'alarm']\

-<<set $nat_present to true>>
-
-::tie top first2 [top-part-tied] <1515,4007>
-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 bikini2]]

-[[Stretch and tie the back yourself.->tie back yourself2]]
-
-::tie bottom first2 <1194,4004>
-Hrm. that doesn't seem to work.

-

-[["\"Uh can I get some help with this?\""->help with bikini2]]

-[[Untie and try again, but do the top part first->tie top first2]]
-
-::youtube2 <1709,4002>
-Huh. so there are lots of fancy ways apparently, but the normal way is to tie the top first, then put it over your neck and tie the back. Tying the back can be hard to reach, so many people like to get help from a partner.

-

-[[Tie the top part.->tie top first2]]
-
-::tie back yourself2 <1498,4157>
-It takes all your dexterity, but you're able to stretch and tie the back into a passable bow.

-

-<<include [[bikini top transformation part 1]]>>

-

-[[Relax.->relax and transform2]]

-[["\"Help! I'm growing breasts!\""->transform with nat2][$mood to 'alarm']]\

-<<set $current_top = "heather bikini">>
-
-::transform with nat2 <1454,4321>
-<<if not $nat_present>>\

-Natalie comes into your room wearing her bikini and looks at you.

-

-<<include [[Nat bikini description]]>>

-

-<</if>>\

-<<if $mood is 'alarm'>>\

-"No baby, it's alright, this is how it's supposed to work."

-

-<</if>>\

-Nat sits behind you on your bed, and starts to massage your shoulders.

-

-"Oh. You're becoming such a cute girl."

-

-<<include [[bikini top transformation part 2]]>>

-

-"There, you're all done," Nat announces.

-

-[[Look in mirror.->look in mirror with nat2]]

-[[Feel your tits.->feel your tits with nat2]]

-[[May I have some privacy?->privacy from nat]]
-
-::relax and transform2 <1640,4311>
-<<include [[bikini top transformation part 2]]>>

-

-[[Look in mirror.->mirror2]]

-[[Feel your new tits.->feel your tits2]]

-[[Continue to put on the bottoms.->put on bottoms2]]
-
-::mirror2 <1631,4523>
-You don't have a full length mirror in your room, so you rush out to the bathroom.

-

-<<include [[mirror description]]>>

-

-[[Continue to put on the bottoms.->put on bottoms2]]
-
-::feel your tits2 <1856,4451>
-You squeeze and squish your new
-
-::put on bottoms2 <439,3993>
-Double-click this passage to edit it.
-
-::privacy from nat <434,4116>
-Nat leaves the room, you can put on the bottoms now.
-
-::put on bottom first <368,3861>
-Double-click this passage to edit it.
-
-::look in mirror with nat2 <1299,4491>
-Double-click this passage to edit it.
-
-::feel your tits with nat2 <1472,4501>
-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.

-

-<<if $nat_disposition >= 0 and not $nat>>\

-"Oh they're nice are they? May I?" Nat gestures to your décolletage.

-

-[["Go right ahead."->nat motorboats you2]]

-[["\"No. I would like some privacy.\""->privacy from nat]]

-<<else>>\

-[["\"I would like some privacy please.\""->privacy from nat]]\

-<</if>>
-
-::nat motorboats you2 <1472,4651>
-Double-click this passage to edit it.
-
-::Nat bikini description <1204,4311>
-Nat's angelic face is the same as ever, but in the magic swimsuit, her figure has been transformed from her normal rod thin to a curvaceous hourglass.

-

-Bulbous mounds seem suspended by the swimsuit, trying to escape; and her ass fills out the bottoms quite nicely
-
-::all the girls <3595,2780>
-"I don't actually because most of the girls I go down on don't have cocks."

-

-<<include [[nat give you a bj]]>>
-
-::Twee2Settings [twee2]
-Twee2::build_config.story_ifid = '280fc8f3-e8a7-4dcb-9e1f-e54237740772'
-Twee2::build_config.story_format = 'SugarCube2'
-
+::static electricity <3215,1867>
+You pull out the bikini top, it's a got four strings, two for the neck and two for the back. 
+
+
+
+<<if $girls_present>>\
+
+[["\"Could I get some help with this?\""->help with bikini]]
+
+<</if>>\
+
+[[Tie the top part first.]]
+
+[[Tie the bottom part first.]]
+
+[[Put the bottoms on first.->bottoms first]]
+
+[["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]]
+
+[[Stretch and tie the back yourself.]]
+
+::Tie the bottom part first. <3510,1953>
+Hrm. that doesn't seem to work.
+
+::transform with nat <3772,2037>
+<<if not $nat_present>>\
+
+Natalie comes into your room and looks at you.
+
+
+
+<</if>>\
+
+<<if $mood is 'alarm'>>\
+
+"No baby, it's alright, this is how it's supposed to work."
+
+
+
+<</if>>\
+
+Nat sits behind you on your bed, and starts to massage your shoulders.
+
+"Oh. You're becoming such a cute girl."
+
+<<include [[bikini top transformation part 2]]>>
+
+<<if $current_bottom == 'heather bikini' >>\
+"There, you're all done," Nat announces.
+<<else>>\
+"There, you're all done... on the top at least." Nat announces.
+<</if>>\
+
+
+[[Look in mirror.->look in mirror with nat]]
+
+[[Feel your tits.->feel your tits with nat]]
+
+[["\"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]]
+
+[[Take off your pants.->pants off 1]]
+
+::Stretch and tie the back yourself. [know-bikini-feminizes know-bikini-magical] <3701,1600>
+It takes all your dexterity, but you're able to stretch and tie the back into a passable bow.
+
+
+
+<<include [[bikini top transformation part 1]]>>
+
+
+
+[[Relax.->relax and transform]]
+
+[["\"Help! I'm growing breasts!\""->transform with nat]]\
+
+<<set $current_top = "heather bikini">>
+
+::help with bikini [know-bikini-feminizes know-bikini-magical] <3405,2149>
+"Fine. I'll help," Nat cries through the door. She enters your room, closing the door behind her and gets to work.
+
+<<if visitedTags('top-part-tied')>>\
+Nat sneaks around to your back and deftly ties a beautiful bow.
+<<else>>\
+Nat ties the top in a simple knot then puts it around your neck. She spins you around and ties the back in a bow.
+<</if>>\
+
+<<include [[bikini top transformation part 1]]>>
+
+[[Relax.->transform with nat]]
+
+[["\"Help! I'm growing breasts!\""->transform with nat][$mood = 'alarm']
+
+[[Try to take the bikini off.->transform with nat][$mood = 'calm']]\
+
+<<set $nat_present=true;>>
+
+::bikini top transformation part 1 <3630,1891>
+The fabric clings to your skin, and your chest starts to tingle. Electricity surges painlessly through your body and you feel woozy. Your chest starts to swell, filling out the bikini.\
+
+<<set $current_top = 'heather bikini'>>
+
+::relax and transform <4070,1596>
+<<include [[bikini top transformation part 2]]>>
+
+
+[[Look in mirror.]]
+[[Feel your new tits.]]
+[["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.
+
+"Can I borrow a mirror?"
+
+"Sure thing," Nat replies as she pulls a makeup mirror from her purse and hands it over.
+
+<<include [[mirror description]]>>
+
+After getting a good look in, hand the mirror back.
+
+[["\"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.
+
+<<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]]
+<<else>>\
+
+[["\"I have questions.\""->back to jess and sally]]
+<</if>>
+
+::bikini top transformation part 2 <4096,1800>
+It's hard to tell exactly what you're becoming from the inside, but you're not feeling as woozy anymore, but your chest continues to swell, and your face is rearranging itself. You can feel hair on your neck, it must be growing.
+
+::Look in mirror. [know-bikini-heather] <4282,1880>
+You don't have a full length mirror in your room, so you rush out to the bathroom.
+
+<<include [[mirror description]]>>
+
+[[Go back to Jess's room.->back to jess and sally]]
+
+::Feel your new tits. <4402,1653>
+They feel so good. They're large and sensitive. You've never been in such proximity to boobs like this before,\
+
+<<if $current_bottom == 'heather bikini'>>\
+It's getting your new pussy all wet.
+
+[[Slip some fingers in your pussy.]]
+
+<<else>>\
+it's getting your dick hard.
+
+[[Play with your dick.]]
+[[Put on bikini bottoms.->put on bottoms second]]
+<</if>>\
+[[Ugh. there's no time for this. I need answers.->back to jess and sally]]
+
+<<silently>>FIXME -- add a short masturbation sequence.<</silently>>
+
+::back to jess and sally [know-bikini-feminizes know-bikini-busty] <3317,2372>
+You head back to Jess's room with your new bosom jiggling distractingly as you walk.
+
+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]]\
+
+<<set $current_top = 'heather bikini'>>
+
+::mirror description <4363,2164>
+You look just like Jess's friend Heather: long brown hair and soft feminine features, except your skin glows like you're in a skin care commercial and your tits are massive.
+
+::nat motorboats you. <4068,2560>
+Natalie grabs your tits and starts massaging them.
+
+Her face lights up with pleasure as she plays with them. She slips a hand underneath the bikini and starts fiddling with your rock hard nipple.
+
+"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]]
+[[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]]
+
+::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]]
+
+<<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.
+
+Nat waggles her head and gets nice and comfy betwixt your new mounds.
+
+Your cock is now hard with anticipation.
+
+[[Grab her ass.]]
+[[Pat her head.]]
+[[Pull her into a kiss.]]
+
+::quickie <3741,2892>
+<<if $nat_disposition >= 1>>\
+"I guess there's time for a quick handjob."
+
+[[Take off your pants.]]
+
+<<else>>\
+"No. But we'll pick up where we left off later."
+
+[["\"Alright.\""->back to jess and sally]]
+
+<</if>>\
+
+::Take off your pants. <3759,3022>
+You take off your pants and lay back on the bed. Your penis is stiff as a flagpole pointing at the ceiling. Nat gets on the bed with you but with her hands with easy access to your crotch.
+
+<<if $nat_disposition >= 3>>
+
+"You know what they say about the best way to give a handjob?"
+
+She doesn't wait for your reply.
+
+"Use your mouth."
+
+<<include [[nat give you a bj]]>>
+
+<<else>>
+
+Natalie rummages around in her purse and pulls out a small bottle of lube.
+
+She puts some on her hands, and starts to stroke your cock.
+
+[[Play with your tits while she strokes.]]
+
+[[Put a hand down Natalie's shorts.]]
+
+[[Pretend Natalie is your sister.]]
+
+[[Pretend Natalie is Sally.]]
+
+<</if>>
+
+::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]]
+
+[["\"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]]
+
+<<set $nat_offlimits to true >>
+
+::finish this later <3999,3100>
+"Fine, get yourself sorted, and I'll meet you back in Jess's room."
+
+
+
+[[Go back to Jess's room.->back to jess and sally]]
+
+::tell her how you really feel <4129,3033>
+"That's good advice, you're surprisingly wise."
+
+
+
+[["\"Alright. lets head back Jess's room.\""->back to jess and sally]]
+
+<<set $nat_disposition += 1;
+
+      $nat_offlimits to true; >>
+
+::friendzoned <4267,3043>
+Natalie is exasperated, "What? no! that's terrible advice. The 'friendzone' isn't a real thing!"
+
+
+
+"Let's go back to the group, you probably have questions I can't answer."
+
+
+
+[["(mumble) \"Then why won't Sally go out with me?\""->pathetic 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."
+
+
+
+Nat strokes her chin, "I have an idea: Why don't I put in a good word for you with Sally, and you do the same for me with your sister, and we promise each other that after this is over we both ask our crush out?"
+
+
+
+Nat extends her pinky.
+
+
+
+[["\"Deal.\""->crush deal.]]
+
+::crush deal. <4578,3058>
+You shake pinkies: enacting the solemnest of vows: A Pinky Promise.
+
+
+
+"Lets get back to the group, I bet you have questions."
+
+
+
+[["\"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]]
+
+<<if $times_spied <= 0>>\
+
+[["\"I'm not a snoop!\""->not a snoop]]
+
+<<else>>\
+
+[["(lie) \"I'm not a snoop!\""->not a snoop][$lies += 1]]
+
+<</if>>\
+
+::agree to snoop <4364,2915>
+"Thanks a million. I'll try to make it up to you somehow... just not sexually."
+
+
+
+<<once [["\"Oh? Are you a lesbian?\""->is nat a lesbian?]]>>\
+
+[["\"Alright, lets head back to Jess's room.\""->back to jess and sally]]
+
+::not a snoop <4561,2823>
+<<if $girls_know_you_spied>>\
+
+"We both know that's not true. You'd be spying for love this time though."
+
+<<else>>\
+
+"Okay, but if you find out anything... accidentally... let me know."
+
+<</if>>\
+
+
+
+[["\"Alright, lets head back to Jess's room.\""->back to jess and sally]]
+
+::is nat a lesbian? <4252,2778>
+"I'm bisexual..."
+
+
+
+<<return "\"Oh.\"">>
+
+::Grab her ass. <3717,2723>
+"Oh. I think we're starting something we don't have time to finish: Sally and Jess are waiting on us."
+
+
+
+[["\"Alright.\""->back to jess and sally]]
+
+[["\"I'll make it up to you later.\""->make up for this later]]
+
+[["\"Do we have enough time for a quickie?\""->quickie]]
+
+::Pat her head. <3624,2643>
+"Dirty." Nat licks her lips seductively.
+
+
+
+<<if $nat_disposition >= 2>>\
+
+Her hands travel from your bust to your fly which she slides open.
+
+
+
+Your cock flops out and she grabs it with one hand. With the other she cups your balls.
+
+
+
+"Oh. you're bigger than I expected." 
+
+
+
+[["\"I bet you say that to all the girls.\""->all the girls]]
+
+[["\"I bet you say that to all the boys.\""->all the boys]]
+
+[["\"Too big for your mouth?\""->too big for your mouth]]
+
+<<else>>\
+
+"...but we don't really have time for that now."
+
+
+
+[["\"Not even for a quickie?\""->quickie]]
+
+<</if>>
+
+::Pull her into a kiss. <3953,2699>
+You use both hands and pull her head to yours. You both tilt our heads and start kissing passionately.
+
+
+
+After about a minute, Natalie, rebuffs you and stands up off the bed.
+
+
+
+"We don't have time for this, Jess and Sally are waiting."
+
+
+
+[["\"Alright.\""->back to jess and sally]]
+
+[["\"I'll make it up to you later.\""->make up for this later]]
+
+[["\"Not even for a quickie?\""->quickie]]
+
+::all the boys <3225,2772>
+"What! Are you insinuating I sleep with all the guys?"
+
+
+
+"No. It's just..."
+
+
+
+"Whatever, I'm not in the mood anymore and Nat and Jess are waiting on us. Put on your pants."
+
+
+
+[[re-zip your fly.]]
+
+::too big for your mouth <3331,2866>
+"No cock is too big for me."
+
+
+
+<<include [[nat give you a bj]]>>
+
+::re-zip your fly. <3197,2938>
+"Hurry up lets go," Nat insists.
+
+
+
+[["\"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...
+
+
+
+"What's going on in there? We have to practice," Jess shouts through the door.
+
+
+
+[["\"I'm almost there, just keep sucking.\""->just keep sucking]]
+
+[["\"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."
+
+
+
+[[Walk back to Jess's room->back to jess and sally]]
+
+::just keep sucking <3489,3020>
+"No you're not, I barely started. Look, I hate giving guys blue balls, but we need to finish this later."
+
+
+
+[[Put your pants back on.]]
+
+::Play with your tits while she strokes. <3465,3206>
+You fondle your own tits, they're so bouncy and soft.
+
+
+
+"Oh you like them don't you? I like them too."
+
+
+
+Nat grabs one as well, tweaking it with one hand while she continues jacking you off with the other.
+
+
+
+<<include [[handjob climax]]>>
+
+::Put a hand down Natalie's shorts. <3627,3219>
+You slide a hand down Natalie's shorts and slip a finger into her slit.
+
+
+
+It's wet and moist and Nat moans with pleasure. Your stimulation of her is reciprocated, she starts stroking harder and faster.
+
+
+
+<<include [[handjob climax]]>>
+
+::Pretend Natalie is your sister. <3795,3210>
+You close your eyes and imagine Jess naked with her strong athletic hands gripping and stroking you. She's been so mean to you your whole life, would it kill her to do something nice for you? Her long brown hair shakes as she strokes.<<set $eyes_closed to true>>
+
+
+
+<<include [[handjob climax]]>>
+
+::Pretend Natalie is Sally. <3932,3217>
+You close your eyes and imagine Sally with her big green eyes behind smart glasses... with her joyous smile framed by locks of ginger hair and soft freckles. That's the ticket, Sally uses mathematical precision to stroke optimally.<<set $eyes_closed to true>>
+
+
+
+<<include [[handjob climax]]>>
+
+::handjob climax <3687,3440>
+Nat uses one finger to massages the head of your penis. Then, she strokes with the other hand. Faster, faster, squeezing harder. It feels so good!
+
+
+
+You orgasm, spewing little drops of cum into the air. 
+
+
+
+Nat licks some of the cum off her fingers.
+
+
+
+"Better freshen up. I'll meet you in Jess's room," Nat leaves.
+
+
+
+[[Put on clean underwear and pants.]]
+
+::Put your pants back on. <3355,3125>
+You reluctantly put your pants back on.
+
+
+
+[["\"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.
+
+
+
+[[Head back to Jess's Room.->back to jess and sally]]
+
+
+
+<<silently>>
+
+Clothing:
+
+current_top = $current_top
+
+current_bottom = $current_bottom
+
+<</silently>>
+
+::youtube <3330,1657>
+Huh. so there are lots of fancy ways apparently, but the normal way is to tie the top first, then put it over your neck and tie the back. Tying the back can be hard to reach, so many people like to get help from a partner.
+
+
+
+[[Tie the top part.->Tie the top part first.]]
+
+::put on swimsuit <802,3585>
+You take the swimsuit out of the bag and separate it into it's two parts.
+
+//Ow!// It zaps you a little bit.
+
+
+
+[[Put on the top first.->put on top first]]
+
+[[Put on the bottom first->put on bottom first]]\
+
+<<set $current_top = 'topless'>>
+
+::put on top first <1343,3841>
+You pull out the bikini top, it's a got four strings, two for the neck and two for the back. 
+
+
+
+[["\"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]]
+
+::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.
+
+
+
+<<include [[Nat bikini description]]>>
+
+
+
+<<if visitedTags('top-part-tied')>>\
+
+Nat sneaks around to your back and deftly ties a beautiful bow.
+
+<<else>>\
+
+Nat ties the top in a simple knot then puts it around your neck. She spins you around and ties the back in a bow.
+
+<</if>>\
+
+
+
+<<include [[bikini top transformation part 1]]>>
+
+
+
+[[Relax.->transform with nat2]]
+
+[["\"Help! I'm growing breasts!\""->transform with nat2][$mood = 'alarm']]
+
+[[Try to take the bikini off.->transform with nat2][$mood = 'alarm']\
+
+<<set $nat_present to true>>
+
+::tie top first2 [top-part-tied] <1515,4007>
+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 bikini2]]
+
+[[Stretch and tie the back yourself.->tie back yourself2]]
+
+::tie bottom first2 <1194,4004>
+Hrm. that doesn't seem to work.
+
+
+
+[["\"Uh can I get some help with this?\""->help with bikini2]]
+
+[[Untie and try again, but do the top part first->tie top first2]]
+
+::youtube2 <1709,4002>
+Huh. so there are lots of fancy ways apparently, but the normal way is to tie the top first, then put it over your neck and tie the back. Tying the back can be hard to reach, so many people like to get help from a partner.
+
+
+
+[[Tie the top part.->tie top first2]]
+
+::tie back yourself2 <1498,4157>
+It takes all your dexterity, but you're able to stretch and tie the back into a passable bow.
+
+
+
+<<include [[bikini top transformation part 1]]>>
+
+
+
+[[Relax.->relax and transform2]]
+
+[["\"Help! I'm growing breasts!\""->transform with nat2][$mood to 'alarm']]\
+
+<<set $current_top = "heather bikini">>
+
+::transform with nat2 <1454,4321>
+<<if not $nat_present>>\
+
+Natalie comes into your room wearing her bikini and looks at you.
+
+
+
+<<include [[Nat bikini description]]>>
+
+
+
+<</if>>\
+
+<<if $mood is 'alarm'>>\
+
+"No baby, it's alright, this is how it's supposed to work."
+
+
+
+<</if>>\
+
+Nat sits behind you on your bed, and starts to massage your shoulders.
+
+
+
+"Oh. You're becoming such a cute girl."
+
+
+
+<<include [[bikini top transformation part 2]]>>
+
+
+
+"There, you're all done," Nat announces.
+
+
+
+[[Look in mirror.->look in mirror with nat2]]
+
+[[Feel your tits.->feel your tits with nat2]]
+
+[[May I have some privacy?->privacy from nat]]
+
+::relax and transform2 <1640,4311>
+<<include [[bikini top transformation part 2]]>>
+
+
+
+[[Look in mirror.->mirror2]]
+
+[[Feel your new tits.->feel your tits2]]
+
+[[Continue to put on the bottoms.->put on bottoms2]]
+
+::mirror2 <1631,4523>
+You don't have a full length mirror in your room, so you rush out to the bathroom.
+
+
+
+<<include [[mirror description]]>>
+
+
+
+[[Continue to put on the bottoms.->put on bottoms2]]
+
+::feel your tits2 <1856,4451>
+You squeeze and squish your new
+
+::put on bottoms2 <439,3993>
+Double-click this passage to edit it.
+
+::privacy from nat <434,4116>
+Nat leaves the room, you can put on the bottoms now.
+
+::put on bottom first <368,3861>
+Double-click this passage to edit it.
+
+::look in mirror with nat2 <1299,4491>
+Double-click this passage to edit it.
+
+::feel your tits with nat2 <1472,4501>
+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.
+
+
+
+<<if $nat_disposition >= 0 and not $nat>>\
+
+"Oh they're nice are they? May I?" Nat gestures to your décolletage.
+
+
+
+[["Go right ahead."->nat motorboats you2]]
+
+[["\"No. I would like some privacy.\""->privacy from nat]]
+
+<<else>>\
+
+[["\"I would like some privacy please.\""->privacy from nat]]\
+
+<</if>>
+
+::nat motorboats you2 <1472,4651>
+Double-click this passage to edit it.
+
+::Nat bikini description <1204,4311>
+Nat's angelic face is the same as ever, but in the magic swimsuit, her figure has been transformed from her normal rod thin to a curvaceous hourglass.
+
+
+
+Bulbous mounds seem suspended by the swimsuit, trying to escape; and her ass fills out the bottoms quite nicely
+
+::all the girls <3595,2780>
+"I don't actually because most of the girls I go down on don't have cocks."
+
+
+
+<<include [[nat give you a bj]]>>
+
+
+::new plan 1 <1518,841>
+"Alright girls sounds like we need a new plan," Jess announces.
+
+The three of them head back upstairs.
+
+[[Play more video games.->new plan - play games]]
+[[Spy on them.->new plan - spy on them]]
+
+::new plan - play games <1696,1055>
+You play some more games, you're getting into it. You're even starting to forget about your sister and her stupid friends, when you hear footsteps on the stairs. Maybe they're headed out somewhere?
+
+They wander into the kitchen (which is adjacent to the family room where you're playing games) and Jess calls out, "So we're headed to the beach, wanna come?"
+
+[['"Nah."'->new plan - no]]
+[['"Uh. sure? I guess?"'->new plan - maybe]]
+<<if false>><<silently>>TODO<</silently>>\
+[['"Oh. no. I heard what you\'re planning!"'->new plan - called out]]
+<</if>>
+
+::new plan - spy on them <1346,1051>
+Double-click this passage to edit it.
+
+::new plan - no <1546,1205>
+Jess says, "I hope you won't hold this against me, but we really need your help." 
+
+"Do you recognize these?" she continues, holding up a pair of plaid boxers.
+
+[['"Uh. they\'re boxers?"'->new plan - generic boxers]]
+[['"Those are my boxers!"'->new plan - my boxers]]
+
+::new plan - maybe <1696,1205>
+Double-click this passage to edit it.
+
+::new plan - called out <1846,1205>
+Double-click this passage to edit it.
+
+::new plan - generic boxers <1471,1355>
+"They're your boxers brother!"
+
+[['"Oh. well dad and I wear the same brand, it\'s a pretty common style of boxers, but..."'->nat puts on boxers]]
+
+::new plan - my boxers <1621,1355>
+"Correct."
+
+<<include [[nat puts on boxers]]>>
+
+::nat puts on boxers <1561,1525>
+Nat turns around and strips. She's completely naked now, back to you, making sure to cover herself. You can see her cute ass though.
+
+Jess hands the boxers to Nat.
+
+[['"Nice butt Nat."'->nat transforms][$nat_disposition += 1]]
+[['"Look I appreciate the show, but what is this about?"'->nat transforms]]
+
+::nat transforms <1558,1675>
+Nat steps into the boxers one leg at a time, and then adjusts the waist.
+
+Then there's a change. She grows taller. Her complexion changes. Her hair shortens. Her butt sucks in.
+
+She turns around, you're waiting to see Nat's boobs, but you just see a flat chest. You look up. It's your face she's wearing.
+
+She speaks with your voice, "I'm you now. Sally used her magic on your boxer shorts."
+
+[['"What?"'->after nat transforms]]
+[['"I don\'t understand."'->after nat transforms]]
+
+::after nat transforms <1558,1825>
+"I figure we'll do something similar with Billy..." Jess says.
+
+Jess bends Nat over, and mock humps her behind.
+
+Sally starts to giggle, it spreads to the rest of them.
+
+"Everyone will think you're gay."
+
+[['"Oh lighten up, it\'s 2017, no one cares if you\'re gay."'->no homo]]
+[['"But I am gay."'->am gay]]
+[['"Fine! I\'ll help, but I do so under protest."'->agree under protest]]
+
+::no homo <1711,1955>
+"Maybe not, but you won't want a sex tape to spread." Jess adds.
+
+<<include [[one alteration]]>>
+
+::am gay <1464,1975>
+The three of them are stunned.
+
+[['"Nah. Just kidding."'->just kidding about being gay]]
+[['"Billy isn\'t really my type though."'->billy not my type]]
+[['"So are you going to continue with your blackmail plan?"'->continue blackmail]]
+
+::agree under protest <1868,1938>
+Double-click this passage to edit it.
+
+::just kidding about being gay <1651,2061>
+"So will you help us or not?" Jess asks.
+
+[['"Fine! I\'ll help with your tournament."'->agree under protest]]
+
+::billy not my type <1441,2181>
+"Well, you'd still be embarrassed by the sex tape," Jess adds.
+
+<<include [[one alteration]]>>
+
+::continue blackmail <1587,2291>
+"Yes," Natalie says.
+
+<<include [[one alteration]]>>
+
+::tournament help under duress <1171,2175>
+Double-click this passage to edit it.
+
+::no blackmail <1714,2355>
+The girls huddle and whisper.
+
+"Look, that's all we got, we think you will be deeply humiliated," Jess says.
+
+[['"Fine! I\'ll help with your tournament."'->agree under protest]]
+[['(crying) You\'re all mean. How could you do this to me?"'->upside]]
+
+::one alteration <1784,2181>
+Sally breaks her silence, "Besides, we made one alteration to reality."
+
+Natalie drops her drawers to her knees.
+
+You're expecting, your modest penis to flop out at you, but instead you see a tiny nub of a micropenis.
+
+[['"Fine! I\'ll help with your tournament."'->agree under protest]]
+[['"I won\'t give in to your magical blackmail!"'->no blackmail]]
+[['"I\'ll just show anyone who asks what my real penis looks like and they\'ll know it is some kind of photoshop."'->no blackmail]]
+
+::upside <1714,2505>
+Double-click this passage to edit it.
+
+::shopping1 <5556,3386>
+\#TODO - the girls will want you to put on the top and bottom before they'll go shopping with you.
+
+
+::bottoms first <2936,1903>
+Better start with the bottoms.
+
+You start by getting completely naked.
+<<set $current_bottom = 'naked'; $current_top = 'topless'>>\
+
+You get the bottoms out of the bag and start to stretch them out so they will fit. The elasticity is unlike anything you've felt before.
+
+<<if visitedTags('know-bikini-magical')>>\
+The magic seems to have made the bikini stretchier than it would normally be: it's actually creating more fabric as you stretch, but once resistance is removed, it shrinks back down..
+<<else>>\
+It's so stretchy it seems like its actually destroying and creating matter... if you didn't know that magic wasn't real, you might think this was the work of sorcery.
+<</if>>\
+
+<<if $girls_present>>\
+[['"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]]
+
+::weird bikini <2741,2118>
+<<silently>>
+This passage is kind of complicated, I feel like they should reveal one hint? Depending on what the player already knows.
+
+May also need to differentiate between being told vs knowing. (which seems like a lot of work maybe?)
+<</silently>>\
+<<if visitedTags('know-bikini-FIXME')>>\
+<<elseif visitedTags('know-FIXME')>>\
+<<else>>\
+<</if>>\
+
+::right leg through <3038,1580>
+Once your right leg is through, there's nothing else to do besides put your left leg through, then you pull the small piece of fabric up your legs, and situate it so it's covering your penis and ass.
+
+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]]
+<<else>>\
+The pressure from the bikini on your genitals builds, and they start to shrink.
+
+<<if $girls_present>>\
+[['"Help! my penis is shrinking!"'->shrinking penis]]
+<<else>>
+[[Dial 911->call authorities penis shrinking]]
+[[Call your sister and confess.->call sister penis shrinking]]
+<</if>>\
+<</if>>\
+[[Relax.->bottom transform 2]]
+<<set $current_bottom = 'heather bikini'>>\
+
+::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]]
+[[Wait for them to calm down.->shrinking penis 2]]
+
+::bottom transform 2 <3040,1443>
+You relax and let the sensations was over you.
+
+Your penis shrinks.
+
+Your leg hair is absorbed into your skin.
+
+Your balls pull up into your body and are gone.
+
+The bones in your legs and pelvis rearrange, not painfully, but strangely.
+
+A slit opens up between your legs and what's left of your penis settles on top.
+
+<<if $current_top == 'heather bikini' >>\
+You're a complete woman now.
+<<else>>\
+You're completely feminized from the waist down.
+<</if>>\
+
+[[Continue to put on the top.->put on top second]]
+[[Explore your womanhood.]]
+
+::shrinking penis 2 [know-tournament-girls-only know-what-bottoms-do know-bikini-heather] <2970,1260>
+"Sorry about that," Sally says through the door stifling a chuckle, "but the tournament is girls only, and they'll all be in skimpy bikinis, we can't have you getting an erection and outing yourself."
+
+Your penis shrinks to near nothingness. Your pelvic bones start to rearrange, it's strange to feel your bones move in ways they're not supposed to, but it isn't painful.
+
+Sally continues, "Besides I made that bikini for Heather"
+
+A slit opens up betweeen your legs; what's left of your penis moves on top of it.
+
+It now occurs to you that the fuzz on your legs is gone, it must have shrunk away in the process. Your feet and legs are dainty and shorter than before.
+
+<<if $current_top == 'heather bikini' >>\
+You're a complete woman now.
+
+<<else>>\
+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]]
+[[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]]
+<<include [[bikini questions]]>>
+
+::Explore your womanhood. <3298,1120>
+You slide a hand beneath the bikini bottom and slip a a few fingers into your new slit.
+
+\#TODO
+
+::put on top second <3323,1353>
+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]]
+<</if>>\
+[[Tie the top part first.]]
+[[Tie the bottom part first.]]
+[["Look up \"How to tie a bikini\" on YouTube."->youtube]]
+
+::put on bottoms second <3082,1905>
+Take off your pants and boxers.
+<<set $current_bottom = 'naked'>>\
+
+You get the bottoms out of the bag and start to stretch them out so they will fit. The elasticity is unlike anything you've felt before.
+
+The magic seems to have made the bikini stretchier than it would normally be: it's actually creating more fabric as you stretch, but once resistance is removed, it shrinks back down..
+
+[[Put your right leg through the leg hole.->right leg through]]
+
+::pants off 1 <4085,1991>
+Double-click this passage to edit it.
+
+::Slip some fingers in your pussy. <4610,1736>
+\#TODO
+
+::Play with your dick. <4577,1519>
+\#TODO
+
+::call authorities penis shrinking <2713,1733>
+\#TODO
+
+::call sister penis shrinking <2706,1600>
+\#TODO
+
+::tattle to cops/parents <1426,1788>
+"Calm down, the magic wears off after a few hours if you take the bikini off," Sally explains.
+
+<<include [[bikini questions]]>>

+ 662 - 557
story/03_custom_girl.tw2

@@ -1,557 +1,662 @@
-::custom girl <4671,6822>
-<<set

-	_breast_sizes = {

-		'D': 'just big enough to get me into the tournament',

-		'DD': 'as big as mine are now',

-		'E': 'a little bigger than they are now',

-		'EE': 'as big as possible',

-	}

->>\

-"Make the breasts <<cyclinglinkd "$breast_size" _breast_sizes>>."

-

-"Give me a <<cyclinglink "$butt_size" "flat" "small" "round" "bubble">> butt."

-

-"I want <<cyclinglink "$skin_tone" "black" "dark brown" "brown" "olive" "tan" "fair" "pale">> skin, <<cyclinglink "$hair_color" "black" "brown" "blonde" "platinum blonde" "red" "bright pink">> hair, and <<cyclinglink "$eye_color" "brown" "blue" "green">> eyes."

-

-"Also, give me <<cyclinglink "$facial_feature" "duck lips" "freckles" "squinty eyes" "a button nose">>, please."

-

-[['"Did you get all that?"'->custom girl 2]]

-[[DEBUG->custom girl 5]]
-
-::custom girl 2 <4668,6978>
-"Of course I got all that," Sally says, tapping her notepad with her pencil which you hadn't noticed her pull out of her purse.

-

-<<include [[custom girl 2.5]]>>
-
-::custom girl 3 <4665,7250>
-<<if $keep_genitals>>\

-"Of course I remembered, but I've been thinking, I could make you a second set of bottoms for use after the tournament is over."

-<<else>>\

-<<switch $new_genitals>>\

-<<case "vagina">>\

-"Good choice. I like my vagina, but why don't I give you a second set of bottoms for use after the tournament?"

-<<set $genitals1 = "vagina" >>\

-<<case "girlcock">>\

-"Sure. We need to keep you limp for the duration of the tournament, but I suppose I could give you second set of bottoms that let you get hard."

-<<case "kendoll">>\

-"Maybe that's for the best during the tournament, but I could make you a second set for afterwards. Would you like that?"

-<<case "normal_penis" "massive_dong">>\

-"We can't have a your bulge showing during the tournament, but I could give you a second set of bottoms for later."

-<<case "futanari">>\

-"Hrm. That's tricky magic. I couldn't do it in time for the tournament, but I could make you a second set afterwards?"

-<<default>>\

-\#ERROR\#

-<</if>>\

-<<if $keep_the_bikini == 'new' >>\

-<<choice [['"I\'d get to keep both sets of bottoms right?"'->both sets]]>>

-<</if>>\

-

-<<include [[genital chooser]]>>
-
-::both sets <4814,7307>
-"Of course, but you'll only be able to use the first one during the tournament. I don't have time //right// now to make pair."

-

-<<include [[genital chooser]]>>
-
-::genital chooser <4666,7379>
-<set 

-	_genitals_1_opts = {

-		vagina: 'a pussy',

-		girlcock: 'a small, flaccid cock',

-		kendoll: 'nothing at all'

-	}

-	_genitals_2_opts = {

-		normal_penis: 'my normal cock',

-		massive_dong: 'a massive dong for the',

-		futanari: 'both a dick and a pussy for the',

-		none: 'I don\'t need a'

-	}

->>\

-"Give me <<cyclinglinkd "$genitals1" _genitals_1_opts>> between my legs for the first pair."

-

-"And, <<cyclinglinkd "$genitals2" _genitals_2_opts>> second pair."

-

-[[Tell Sally what you want.->custom girl 4]]
-
-::custom girl 4 <4670,7508>
-"What about pubic hair?"

-

-<<inlude [[pubic hair options]]>>
-
-::custom girl 5 <4395,7629>
-<<nobr>>

-<<set _hotness = 0;

-			_bimbo = ($facial_feature == 'duck lips') ? 1 : 0;

-	  _breast_sizes = {

-		  'D': 'just big enough to get you into the tournament',

-		  'DD': 'as big as they are now',

-		  'E': 'a little bigger than they are now',

-		  'EE': 'as big as possible'

-	  }

->>

-<<switch $breast_size>>

-<<case "D" "DD">>

-	<<set _hotness += 1>>

-<<case "E">>

-	<<set _hotness += 2 >>

-<<case "EE">>

-	<<set _hotness += 4;

-		  _bimbo += 1>>

-<<default>>

-\#\#ERROR\#\# invalid breast_size $breast_size

-<</switch>>

-<<switch $butt_size>>

-<<case "flat">>

-	<<set _hotness -= 1>>

-<<case "small">>

-	<<set _hotness += 0>>

-<<case "round">>

-	<<set _hotness += 1>>

-<<case "bubble">>

-	<<set _hotness += 2; _bimbo += 1>>

-<<default>>

-\#\#ERROR\#\# invalid butt_size $butt_size

-<</switch>>

-

-<<set

-	_girl = [];

-	_unmentioned = ['skin', 'hair', 'eyes', 'face', 'butt']; >>

-

-<<if _hotness >= 5>>

-	<<set _girl.push("smokin' hot")>>

-<<elseif _hotness >= 4>>

-	<<set _girl.push('hot')>>

-<<else>>

-	<<set _girl.push('cute')>>

-<</if>>

-

-<<if $skin_tone == 'black' && $facial_feature != 'squinty eyes'>>

-	<<set 

-		_girl.push('black');

-		_unmentioned.delete('skin')>>

-<</if>>

-<<if _bimbo >= 3>>

-

-	<<if $hair_color == 'blonde'>>

-		<<set

-			_girl.push('blonde');

-			_unmentioned.delete('hair') >>

-	<</if>>

-	<<if $facial_feature == 'squinty eyes'>>

-		<<set 

-			_girl.push('asian');

-			_unmentioned.delete('face') >>

-	<</if>>

-	<<set _girl.push('bimbo')>>

-<<elseif $hair_color == 'blonde'>>

-	<<set _girl.push('blonde')>>

-	<<if $facial_feature == 'squinty eyes' >>

-		<<set _girl.push('asian');

-			  _unmentioned.delete('face') >>

-	<</if>>

-	<<set _unmentioned.delete('hair') >>

-<<elseif $hair_color == 'brown' || $hair_color == 'red'>>

-	<<if $facial_feature == 'squinty eyes' >>

-		<<set _girl.push('asian');

-			  _unmentioned.delete('face') >>

-	<</if>>

-	<<if $hair_color == 'red'>>

-		<<if $facial_feature == 'freckles'>>

-			<<set

-				

-				_girl.push('ginger');

-				_unmentioned.delete('face');

-				_unmentioned.delete('hair');

-				>>

-		<<else>>

-			<<set

-				_girl.push('redhead');

-				_unmentioned.delete('hair');

-			>>

-		<</if>>

-	<<elseif $hair_color == 'brown'>>

-		<<set

-			_girl.push('brunette');

-			_unmentioned.delete('hair');

-			>>

-	<<else>>

-		\#\#ERROR\#\# invalid hair_color $hair_color (must be red or brown in this block)

-	<</if>>

-	<<set _unmentioned.delete('hair') >>

-<<elseif $facial_feature == 'squinty eyes'>>

-	<<set

-		_girl.push('asian');

-		_unmentioned.delete('face'); >>

-<<else>>

-	<<set _girl.push('girl')>>

-<</if>>

-<<set _features = [] >>

-<<if _unmentioned.includes('skin')>>

-	<<if $skin_tone == 'black'>>

-		<<set _features.push('dark skin')>>

-	<<else>>

-		<<set _features.push($skin_tone + ' skin')>>

-	<</if>>

-<</if>>

-<<if _unmentioned.includes('hair')>>

-	<<set _features.push($hair_color + ' hair')>>

-<</if>>

-<<if _unmentioned.includes('eyes')>>

-	<<set _features.push($eye_color + ' eyes')>>

-<</if>>

-<<if _unmentioned.includes('face')>>

-	<<set _features.push($facial_feature)>>

-<</if>>

-

-<<if _features.length == 0>>

-<<elseif _features.length == 1>>

-	<<set _girl.push('with ' + _features[0]) >>

-<<elseif _features.length == 2>>

-	<<set _girl.push('with ' + _features[0] + ' and ' + _features[1])>>

-<<else>>

-	<<set _girl.push('with') >>

-	<<set _girl.push(

-		_features.slice(0, -1).join(', ')

-		+ ', and ' +

-		_features.slice(-1)[0]

-	)>>

-<</if>>

-<</nobr>>\

-<<switch $heather_bikini_options>>

-<<case 'heather_sister'>>

-"You want to look like Heather's long lost sister," Sally states.

-<<case 'kinda_like_heather'>>

-"You kinda want to look like Heather," Sally states.

-<<case 'custom'>>\

-"On top, you wanna be a <<=_girl.join(' ')>>, and you want your boobs to be <<= _breast_sizes[$breast_size]>>."

-<<default>>\

-\#\#ERROR\#\# - invald $$heather_bikini_options $heather_bikini_options

-<</switch>>\

-<<set

-	_genitals_1_opts = {

-		vagina: 'a vagina',

-		girlcock: 'a small, flaccid cock',

-		kendoll: 'nothing at all, like a Ken Doll'

-	};

-	_genitals_2_opts = {

-		normal_penis: 'a normal cock',

-		massive_dong: 'a massive dong',

-		futanari: 'penis and vagina',

-		none: 'no second set of bottoms'

-	};

-	_pubic_hair_opts = {

-		heart: 'heart-shaped',

-		bolt: 'lighting bolt shaped',

-		strip: 'landing strip',

-		muff: 'muff',

-		natural: 'natural',

-		none: 'no'

-	};

->>\

-"On bottom, you want a $butt_size butt in back, and <<=_genitals_1_opts[$genitals1]>> with <<=_pubic_hair_opts[$pubic_hair]>> pubic hair in front."

-<<if $genitals2 == 'none'>>\

-"You don't want a second bikini bottom."

-<<else>>\

-"For your second bikini, which is only for non-tournament use, you want the same deal but with a <<=_genitals_2_opts[$genitals2]>> instead."

-<</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]]
-
-::carpet matches drapes <4932,7639>
-<<if $hair_color == 'bright pink'>>\

-"Even if the drapes are bright pink?"

-[["Yeah!"->pubic hair shape]]

-<<else>>\

-<<include [[pubic hair shape]]>>

-<</if>>
-
-::pubic hair shape <4672,7994>
-"So what kind of shape do you want it in?"

-

-[['"Heart shaped."'->custom girl 5][$pubic_hair = 'heart']]

-[['"Lightning bolt shaped."'->custom girl 5][$pubic_hair = 'bolt']]

-[['"A little landing strip."'->custom girl 5][$pubic_hair = 'strip']]

-[['"A massive muff."'->custom girl 5][$pubic_hair = 'muff']]

-[['"Just let it grow naturally."'->custom girl 5][$pubic_hair = 'natural']]
-
-::custom notes [nobr] <4165,7624>
-<<set

-	_genitals_1_opts = {

-		vagina: 'a vagina',

-		girlcock: 'a small, flaccid cock',

-		kendoll: 'nothing at all'

-	};

-	_genitals_2_opts = {

-		normal_penis: 'a normal cock',

-		massive_dong: 'a massive dong',

-		futanari: 'penis and vagina',

-		none: 'no second set of bottoms'

-	};

-	_pubic_hair_opts = {

-		heart: 'heart-shaped',

-		bolt: 'lighting bolt shaped',

-		strip: 'landing strip',

-		muff: 'muff',

-		natural: 'natural',

-		none: 'none'

-	};

->>

-<div class="notepad">

-<div class="lines" style="height: 606px"></div>

-<h4>Bikini for $girl_name</h4>

-<ul class="list">

-<li>Cup Size: <<cyclinglink "$breast_size" D DD E EE>></li>

-<li>Butt Size: <<cyclinglink "$butt_size" "flat" "small" "round" "bubble">></li>

-<li>Skin Tone: <<cyclinglink "$skin_tone" "black" "dark brown" "brown" "olive" "tan" "fair" "pale">></li>

-<li>Hair Color: <<cyclinglink "$hair_color" "black" "brown" "blonde" "platinum blonde" "red" "bright pink">></li>

-<li>Eye Color: <<cyclinglink "$eye_color" "brown" "blue" "green">></li>

-<li>Facial Feature: <<cyclinglink "$facial_feature" "duck lips" "freckles" "squinty eyes" "a button nose">></li>

-<li>Genitals #1: <<cyclinglinkd "$genitals1" _genitals_1_opts>></li>

-<li>Genitals #2: <<cyclinglinkd "$genitals2" _genitals_2_opts>></li>

-<li>Pubic Hair: <<cyclinglinkd "$pubic_hair" _pubic_hair_opts>></li>

-</ul>

-</div>

-<br><br>

-<a id="hand-back-link" data-passage="custom girl 5">Hand back notes, "That looks good."</a>

-<<script>>

-var _old_vars =  JSON.parse(JSON.stringify(variables()));

-function on_cyclinkLink_click(){

-	if(passage() != 'custom notes'){

-		throw 'passage is not custom notes!';

-	}

-	if (myutils.isEqual(variables(), _old_vars)){

-		$('#hand-back-link').text('Hand back notes, "That looks good."');

-	} else {

-		window.v1 = variables();

-		window.v2 = _old_vars;

-		$('#hand-back-link').text('Hand back notes, "I\'ve made some changes."');

-	}

-}

-

-$(document).on('click', '.cyclingLink', on_cyclinkLink_click);

-prehistory["custom notes"] = function (taskName) {

-	delete prehistory["custom notes"];

-	$(document).off('click', '.cyclingLink', on_cyclinkLink_click);

-};

-

-<</script>>
-
-::custom girl start <4204,6740>
-"What! They have shoes on sale!" Nat exlaims.

-

-"Let's go try on shoes!" Jess replies.

-

-"That's okay, I need to talk with $girl_name about something," Sally says.

-

-Jess replies, "Alright we'll meet up with you at the coffee shop."

-

-Nat and Sally head off to the shoe store.

-

-[['"So what did you want to talk about?"'->custom girl 0]]
-
-::custom girl 0 <4206,6912>
-"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']]

-[['"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>
-<<set

-	_use_heather_bik_opts = {

-		heather: "I'd like to wear the Heather bikini I'm currently wearing during the tournament and get a second bikini to keep.",

-		custom: "I'd rather wear a custom bikini during the tournament."

-	};

-	_custom_bik_opts = {

-		"heather_sister": "Yeah! Make my custom bikini make me look like Heather's sister!",

-		"kinda_like_heather": "Just make the custom bikini make me kinda look like Heather.",

-		"custom_bikini": "I'd like a fully custom bikini."

-	}

->>\

-"You can wear the Heather bikini for the tournament, but I can't let you keep it. I could enchant your bikini so you looked like her long lost sister though."

-

-"<<cyclinglinkd "$tournament_bikini" _use_heather_bik_opts>>"

-

-"<<cyclinglinkd "$heather_bikini_options" _custom_bik_opts>>"

-

-[[Continue.->clone heather 2]]
-
-::random girl <4056,7077>
-<<set

-	$breast_size = Array.random(['D', 'DD', 'E', 'EE'])

-	$butt_size = Array.random(["flat", "small", "round", "bubble"])

-	$skin_tone = Array.random(["black", "dark brown", "brown", "olive", "tan", "fair", "pale"])

-	$hair_color = Array.random(["black", "brown", "blonde", "platinum blonde", "red", "bright pink"])

-	$eye_color = Array.random(["brown", "blue", "green"])

-	$facial_feature = Array.random(["duck lips", "freckles", "squinty eyes", "a button nose"])

-	$genitals1 = Array.random(['vagina', 'girlcock', 'kendoll']);

-	$genitals2 = Array.random(['normal_penis', 'massive_dong','futanari', 'none'])

-	$pubic_hair = Array.random(['heart', 'bolt', 'muff', 'natural', 'none'])

->>\

-\

-"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]]
-
-::get a girl name <4494,5333>
-You walk out of your room, boobs jiggling.

-

-"Oh you look great! What are we going to call you?" Sally asks.

-

-"Yeah we can't call you by your name while you're a girl," Jess adds.

-

-[['"Why not Heather?"'->call me a name that's in-use][$girl_name = 'Heather']]

-[['"What do you want to call me?"'->girls decide name]]

-[['"I have an idea."'->custom name][$girl_name = $girl_names.pluck()]]
-
-::call me a name that's in-use <4261,5483>
-"We can't call you '$girl_name' that would be confusing!" Jess retorts.

-

-Natalie says, "Yeah think up a better name."

-

-"Pick a different name," Sally suggests.

-

-<<include [[custom name]]>>
-
-::custom name <4495,5469>
-<<set

-_rand_girl_name = $girl_names.pluck()

->>

-"I want to be called <<textbox "$girl_name" _rand_girl_name>>."

-

-[[Speak->custom name 2]]

-<<if $girl_names.length >= 2 >>\

-[[Think of a new name->custom name]]

-<<else>>

-You're out of ideas, thinking longer won't help.

-<</if>>
-
-::girls decide name <4647,5475>
-Sally says, "I've always liked the name Kathryn."

-

-Jess mocks Sally, "You've always liked strong women, haven't you Sally? Like Captain Kathryn Janeway from Star Trek: Voyager?"

-

-Sally puts her hands up, "Guilty, I would do whatever Janeway said."

-

-The girls laugh.

-

-Jess continues, "Anyway, I always wanted a sister named Barbara."

-

-Natalie says, "Did you play with lots of Barbie toys as a kid?'

-

-Jess mumbles under her breath, "As if you didn't have Barbie Dolls."

-

-Natalie suggests, "Why don't you go with Alexandra, or Alex for short?"

-

-[[Go with Jess's Suggestion, Barbara->custom name 2][$girl_name = 'Barbara'; $jess_disposition += 2]]

-[[Go with Nat's Suggestion, Alex->custom name 2][$girl_name = 'Alex'; $nat_disposition += 2]]

-[[Go with Sally's Suggestion, Kathryn->custom name 2][$girl_name = 'Kathryn'; $sally_disposition += 2]]
-
-::custom name 2 <4489,5639>
-<<silently>>

-<<set _names_in_use = [

-//FIXME I could do this smarter with like regexes or starts with, but whatever

-  'heather',

-  'jess',

-  'jes',

-  'jessica',

-  'jessi',

-  'jesse',

-  'jessy',

-  'nat',

-  'natalie',

-  'sally',

-  'sal',

-] >>

-<<set $girl_name = $girl_name.replace(/^\s+|\s+$/g, '') >>

-<<if !$girl_name.match(/[A-Z]/) >>

-<<set $girl_name = $girl_name.toLocaleUpperFirst()>>

-<</if>>

-<</silently>>\

-<<if _names_in_use.includes($girl_name.toLowerCase())>>\

-<<include [[call me a name that's in-use]]>>

-<<elseif $girl_name == 'Amanda'>>

-"Oh that's clever, because, 'Your a man... duh!'"

-

-[['"Maybe I should pick something else."'->custom name]]

-[['"That\'s exactly what I was thinking!"'->amanda1]]

-[['"No? I just like the name \'Amanda\'."'->amanda2]]

-<<elseif $girl_name == ''>>\

-"We've got to call you something..." Jess says.

-

-<<include [[custom name]]>>\

-<<else>>\

-"Oh that's a great name, we'll be sure to call you '$girl_name' while you're a girl," your sister responds.

-<</if>>\

-[[Fast Forward ⏩->ff2]]
-
-::clone heather 2 <4410,7081>
-<<switch $heather_bikini_options>>\

-<<case "heather_sister" "kinda_like_heather">>\

-<<set

-	$breast_size = 'DD'

-	$butt_size = 'round'

-	$skin_tone = 'fair'

-	$hair_color = 'brown'

-	$eye_color = 'brown'

-	$facial_feature = 'a button nose'

-	$genitals1 = $bottom_style

-	$genitals2 = 'none'

-	$pubic_hair = 'natural'

->>\

-

-<<include [[custom girl 2.5]]>>

-<<case "custom_bikini">>\

-<<include [[custom girl]]>>

-<</switch>>
-
-::accept custom girl <4390,7870>
-TODO
-
-::custom girl 2.5 <4663,7115>
-<<set

-	_available_genitals = {

-		vagina: 'a vagina',

-		girlcock: 'a small, flaccid cock',

-		kendoll: 'nothing',

-		normal_penis: 'my normal penis',

-		massive_dong: 'a massive dong',

-		futanari: 'a penis and vagina'

-	};

->>

-<<nobr>>

-"Okay, earlier, I said I wanted,

-<<switch $bottom_style>>

-<<case 'vagina'>>a vagina,

-<<case 'girlcock'>>a small, flaccid cock,

-<<case 'kendoll'>>to be as smooth as a ken doll,

-<<default>>

-\#ERROR\# - invalid $$bottom_style "$bottom_style"

-<</switch>>

-

-<span class="keep-genitals"><<click "and I just wanted to make sure you remembered.">>

-<<addclass ".keep-genitals" "hidden">>

-<<removeclass ".swap-genitals" "hidden">>

-<<set $keep_genitals = true>>

-<</click>></span><span class="swap-genitals hidden"><<click "but I've changed my mind.">>

-<<removeclass ".keep-genitals" "hidden">>

-<<addclass ".swap-genitals" "hidden">>

-<<set $keep_genitals = false>>

-<<script>>

-State.temporary.available_genitals = JSON.parse(JSON.stringify(variables().available_genitals));

-delete State.temporary.available_genitals[variables()['bottom_style']]

-<</script>>

-

-<span class="swap-genitals hidden"><br><br>"I'd really like <<cyclinglinkd "$new_genitals" _available_genitals>> between my legs when I'm transformed."

-</span>

-<</nobr>>

-

-[[Wait for Sally to respond.->custom girl 3]]
-
-::Twee2Settings [twee2]
-Twee2::build_config.story_ifid = '4f77b5fa-7426-4858-ae77-587e5bd8fb93'
-Twee2::build_config.story_format = 'SugarCube2'
-
+::custom girl <4671,6822>
+<<set
+  _breast_sizes = {
+    'D': 'just big enough to get me into the tournament',
+    'DD': 'as big as mine are now',
+    'E': 'a little bigger than they are now',
+    'EE': 'as big as possible',
+  }
+
+>>\
+
+"Make the breasts <<cyclinglinkd "$breast_size" _breast_sizes>>."
+
+"Give me a <<cyclinglink "$butt_size" "flat" "small" "round" "bubble">> butt."
+
+"I want <<cyclinglink "$skin_tone" "black" "dark brown" "brown" "olive" "tan" "fair" "pale">> skin, <<cyclinglink "$hair_color" "black" "brown" "blonde" "platinum blonde" "red" "bright pink">> hair, and <<cyclinglink "$eye_color" "brown" "blue" "green">> eyes."
+
+"Also, give me <<cyclinglink "$facial_feature" "duck lips" "freckles" "squinty eyes" "a button nose">>, please."
+
+[['"Did you get all that?"'->custom girl 2]]
+[[DEBUG->custom girl 5]]
+
+::custom girl 2 <4668,6978>
+"Of course I got all that," Sally says, tapping her notepad with her pencil which you hadn't noticed her pull out of her purse.
+
+<<include [[custom girl 2.5]]>>
+
+::custom girl 3 <4665,7250>
+<<if $keep_genitals>>\
+
+"Of course I remembered, but I've been thinking, I could make you a second set of bottoms for use after the tournament is over."
+
+<<else>>\
+<<switch $new_genitals>>\
+<<case "vagina">>\
+"Good choice. I like my vagina, but why don't I give you a second set of bottoms for use after the tournament?"
+<<set $genitals1 = "vagina" >>\
+<<case "girlcock">>\
+"Sure. We need to keep you limp for the duration of the tournament, but I suppose I could give you second set of bottoms that let you get hard."
+<<case "kendoll">>\
+"Maybe that's for the best during the tournament, but I could make you a second set for afterwards. Would you like that?"
+<<case "normal_penis" "massive_dong">>\
+"We can't have a your bulge showing during the tournament, but I could give you a second set of bottoms for later."
+<<case "futanari">>\
+"Hrm. That's tricky magic. I couldn't do it in time for the tournament, but I could make you a second set afterwards?"
+<<default>>\
+\#ERROR\#
+<</if>>\
+<<if $keep_the_bikini == 'new' >>\
+<<choice [['"I\'d get to keep both sets of bottoms right?"'->both sets]]>>
+<</if>>\
+
+<<include [[genital chooser]]>>
+
+::both sets <4814,7307>
+"Of course, but you'll only be able to use the first one during the tournament. I don't have time //right// now to make pair."
+
+<<include [[genital chooser]]>>
+
+::genital chooser <4666,7379>
+<set 
+  _genitals_1_opts = {
+    vagina: 'a pussy',
+    girlcock: 'a small, flaccid cock',
+    kendoll: 'nothing at all'
+  }
+  _genitals_2_opts = {
+    normal_penis: 'my normal cock',
+    massive_dong: 'a massive dong for the',
+    futanari: 'both a dick and a pussy for the',
+    none: 'I don\'t need a'
+  }
+>>\
+
+"Give me <<cyclinglinkd "$genitals1" _genitals_1_opts>> between my legs for the first pair."
+
+"And, <<cyclinglinkd "$genitals2" _genitals_2_opts>> second pair."
+
+[[Tell Sally what you want.->custom girl 4]]
+
+::custom girl 4 <4670,7508>
+"What about pubic hair?"
+
+<<inlude [[pubic hair options]]>>
+::custom girl 5 <4395,7629>
+<<nobr>>
+
+<<set _hotness = 0;
+      _bimbo = ($facial_feature == 'duck lips') ? 1 : 0;
+    _breast_sizes = {
+      'D': 'just big enough to get you into the tournament',
+      'DD': 'as big as they are now',
+      'E': 'a little bigger than they are now',
+      'EE': 'as big as possible'
+    }
+>>
+
+<<switch $breast_size>>
+<<case "D" "DD">>
+  <<set _hotness += 1>>
+<<case "E">>
+  <<set _hotness += 2 >>
+<<case "EE">>
+  <<set _hotness += 4;
+        _bimbo += 1>>
+<<default>>
+\#\#ERROR\#\# invalid breast_size $breast_size
+<</switch>>
+
+<<switch $butt_size>>
+<<case "flat">>
+  <<set _hotness -= 1>>
+<<case "small">>
+  <<set _hotness += 0>>
+<<case "round">>
+  <<set _hotness += 1>>
+<<case "bubble">>
+  <<set _hotness += 2; _bimbo += 1>>
+<<default>>
+\#\#ERROR\#\# invalid butt_size $butt_size
+<</switch>>
+<<set
+  _girl = [];
+  _unmentioned = ['skin', 'hair', 'eyes', 'face', 'butt']; >>
+<<if _hotness >= 5>>
+  <<set _girl.push("smokin' hot")>>
+<<elseif _hotness >= 4>>
+  <<set _girl.push('hot')>>
+<<else>>
+  <<set _girl.push('cute')>>
+<</if>>
+
+<<if $skin_tone == 'black' && $facial_feature != 'squinty eyes'>>
+  <<set 
+    _girl.push('black');
+    _unmentioned.delete('skin')>>
+<</if>>
+
+<<if _bimbo >= 3>>
+  <<if $hair_color == 'blonde'>>
+    <<set
+      _girl.push('blonde');
+      _unmentioned.delete('hair') >>
+  <</if>>
+
+  <<if $facial_feature == 'squinty eyes'>>
+    <<set 
+      _girl.push('asian');
+      _unmentioned.delete('face') >>
+  <</if>>
+
+  <<set _girl.push('bimbo')>>
+
+<<elseif $hair_color == 'blonde'>>
+  <<set _girl.push('blonde')>>
+  <<if $facial_feature == 'squinty eyes' >>
+    <<set _girl.push('asian');
+        _unmentioned.delete('face') >>
+  <</if>>
+  <<set _unmentioned.delete('hair') >>
+<<elseif $hair_color == 'brown' || $hair_color == 'red'>>
+  <<if $facial_feature == 'squinty eyes' >>
+    <<set _girl.push('asian');
+        _unmentioned.delete('face') >>
+  <</if>>
+  <<if $hair_color == 'red'>>
+    <<if $facial_feature == 'freckles'>>
+      <<set
+        _girl.push('ginger');
+        _unmentioned.delete('face');
+        _unmentioned.delete('hair');
+        >>
+    <<else>>
+      <<set
+        _girl.push('redhead');
+        _unmentioned.delete('hair');
+      >>
+    <</if>>
+
+  <<elseif $hair_color == 'brown'>>
+    <<set
+      _girl.push('brunette');
+      _unmentioned.delete('hair');
+      >>
+  <<else>>
+    \#\#ERROR\#\# invalid hair_color $hair_color (must be red or brown in this block)
+  <</if>>
+
+  <<set _unmentioned.delete('hair') >>
+<<elseif $facial_feature == 'squinty eyes'>>
+  <<set
+    _girl.push('asian');
+    _unmentioned.delete('face'); >>
+<<else>>
+  <<set _girl.push('girl')>>
+<</if>>
+
+<<set _features = [] >>
+
+<<if _unmentioned.includes('skin')>>
+  <<if $skin_tone == 'black'>>
+    <<set _features.push('dark skin')>>
+  <<else>>
+    <<set _features.push($skin_tone + ' skin')>>
+  <</if>>
+<</if>>
+
+<<if _unmentioned.includes('hair')>>
+  <<set _features.push($hair_color + ' hair')>>
+<</if>>
+
+<<if _unmentioned.includes('eyes')>>
+  <<set _features.push($eye_color + ' eyes')>>
+<</if>>
+
+<<if _unmentioned.includes('face')>>
+  <<set _features.push($facial_feature)>>
+<</if>>
+
+<<if _features.length == 0>>
+<<elseif _features.length == 1>>
+  <<set _girl.push('with ' + _features[0]) >>
+<<elseif _features.length == 2>>
+  <<set _girl.push('with ' + _features[0] + ' and ' + _features[1])>>
+<<else>>
+  <<set _girl.push('with') >>
+  <<set _girl.push(
+    _features.slice(0, -1).join(', ')
+    + ', and ' +
+    _features.slice(-1)[0]
+  )>>
+<</if>>
+<</nobr>>\
+
+<<switch $heather_bikini_options>>
+<<case 'heather_sister'>>
+"You want to look like Heather's long lost sister," Sally states.
+<<case 'kinda_like_heather'>>
+"You kinda want to look like Heather," Sally states.
+<<case 'custom'>>\
+"On top, you wanna be a <<=_girl.join(' ')>>, and you want your boobs to be <<= _breast_sizes[$breast_size]>>."
+<<default>>\
+\#\#ERROR\#\# - invalid $$heather_bikini_options $heather_bikini_options
+<</switch>>\
+
+<<set
+  _genitals_1_opts = {
+    vagina: 'a vagina',
+    girlcock: 'a small, flaccid cock',
+    kendoll: 'nothing at all, like a Ken Doll'
+  };
+
+  _genitals_2_opts = {
+    normal_penis: 'a normal cock',
+    massive_dong: 'a massive dong',
+    futanari: 'penis and vagina',
+    none: 'no second set of bottoms'
+  };
+
+  _pubic_hair_opts = {
+    heart: 'heart-shaped',
+    bolt: 'lighting bolt shaped',
+    strip: 'landing strip',
+    muff: 'muff',
+    natural: 'natural',
+    none: 'no'
+  };
+
+>>\
+
+"On bottom, you want a $butt_size butt in back, and <<=_genitals_1_opts[$genitals1]>> with <<=_pubic_hair_opts[$pubic_hair]>> pubic hair in front."
+
+<<if $genitals2 == 'none'>>\
+"You don't want a second bikini bottom."
+<<else>>\
+"For your second bikini, which is only for non-tournament use, you want the same deal but with a <<=_genitals_2_opts[$genitals2]>> instead."
+<</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]]
+
+::carpet matches drapes <4932,7639>
+<<if $hair_color == 'bright pink'>>\
+"Even if the drapes are bright pink?"
+[["Yeah!"->pubic hair shape]]
+<<else>>\
+<<include [[pubic hair shape]]>>
+<</if>>\
+
+::pubic hair shape <4672,7994>
+"So what kind of shape do you want it in?"
+
+[['"Heart shaped."'->custom girl 5][$pubic_hair = 'heart']]
+[['"Lightning bolt shaped."'->custom girl 5][$pubic_hair = 'bolt']]
+[['"A little landing strip."'->custom girl 5][$pubic_hair = 'strip']]
+[['"A massive muff."'->custom girl 5][$pubic_hair = 'muff']]
+[['"Just let it grow naturally."'->custom girl 5][$pubic_hair = 'natural']]
+
+::custom notes [nobr] <4165,7624>
+<<set
+  _genitals_1_opts = {
+    vagina: 'a vagina',
+    girlcock: 'a small, flaccid cock',
+    kendoll: 'nothing at all'
+  };
+
+  _genitals_2_opts = {
+    normal_penis: 'a normal cock',
+    massive_dong: 'a massive dong',
+    futanari: 'penis and vagina',
+    none: 'no second set of bottoms'
+  };
+
+  _pubic_hair_opts = {
+    heart: 'heart-shaped',
+    bolt: 'lighting bolt shaped',
+    strip: 'landing strip',
+    muff: 'muff',
+    natural: 'natural',
+    none: 'none'
+  };
+>>
+
+<div class="notepad">
+<div class="lines" style="height: 606px"></div>
+<h4>Bikini for $girl_name</h4>
+<ul class="list">
+<li>Cup Size: <<cyclinglink "$breast_size" D DD E EE>></li>
+<li>Butt Size: <<cyclinglink "$butt_size" "flat" "small" "round" "bubble">></li>
+<li>Skin Tone: <<cyclinglink "$skin_tone" "black" "dark brown" "brown" "olive" "tan" "fair" "pale">></li>
+<li>Hair Color: <<cyclinglink "$hair_color" "black" "brown" "blonde" "platinum blonde" "red" "bright pink">></li>
+<li>Eye Color: <<cyclinglink "$eye_color" "brown" "blue" "green">></li>
+<li>Facial Feature: <<cyclinglink "$facial_feature" "duck lips" "freckles" "squinty eyes" "a button nose">></li>
+<li>Genitals #1: <<cyclinglinkd "$genitals1" _genitals_1_opts>></li>
+<li>Genitals #2: <<cyclinglinkd "$genitals2" _genitals_2_opts>></li>
+<li>Pubic Hair: <<cyclinglinkd "$pubic_hair" _pubic_hair_opts>></li>
+</ul>
+</div>
+<br><br>
+
+<a id="hand-back-link" data-passage="custom girl 5">Hand back notes, "That looks good."</a>
+
+<<script>>
+var _old_vars =  JSON.parse(JSON.stringify(variables()));
+function on_cyclinkLink_click(){
+  if(passage() != 'custom notes'){
+    throw 'passage is not custom notes!';
+  }
+
+  if (myutils.isEqual(variables(), _old_vars)){
+    $('#hand-back-link').text('Hand back notes, "That looks good."');
+  } else {
+    window.v1 = variables();
+    window.v2 = _old_vars;
+    $('#hand-back-link').text('Hand back notes, "I\'ve made some changes."');
+  }
+}
+
+$(document).on('click', '.cyclingLink', on_cyclinkLink_click);
+prehistory["custom notes"] = function (taskName) {
+  delete prehistory["custom notes"];
+  $(document).off('click', '.cyclingLink', on_cyclinkLink_click);
+};
+
+<</script>>
+
+::custom girl start <4204,6740>
+"What! They have shoes on sale!" Nat exlaims.
+
+"Let's go try on shoes!" Jess replies.
+
+"That's okay, I need to talk with $girl_name about something," Sally says.
+
+Jess replies, "Alright we'll meet up with you at the coffee shop."
+
+Nat and Sally head off to the shoe store.
+
+[['"So what did you want to talk about?"'->custom girl 0]]
+
+::custom girl 0 <4206,6912>
+"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']]
+[['"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>
+<<set
+  _use_heather_bik_opts = {
+    heather: "I'd like to wear the Heather bikini I'm currently wearing during the tournament and get a second bikini to keep.",
+    custom: "I'd rather wear a custom bikini during the tournament."
+  };
+
+  _custom_bik_opts = {
+    "heather_sister": "Yeah! Make my custom bikini make me look like Heather's sister!",
+    "kinda_like_heather": "Just make the custom bikini make me kinda look like Heather.",
+    "custom_bikini": "I'd like a fully custom bikini."
+  }
+>>\
+
+"You can wear the Heather bikini for the tournament, but I can't let you keep it. I could enchant your bikini so you looked like her long lost sister though."
+
+"<<cyclinglinkd "$tournament_bikini" _use_heather_bik_opts>>"
+"<<cyclinglinkd "$heather_bikini_options" _custom_bik_opts>>"
+
+[[Continue.->clone heather 2]]
+
+::random girl <4056,7077>
+<<set
+  $breast_size = Array.random(['D', 'DD', 'E', 'EE'])
+  $butt_size = Array.random(["flat", "small", "round", "bubble"])
+  $skin_tone = Array.random(["black", "dark brown", "brown", "olive", "tan", "fair", "pale"])
+  $hair_color = Array.random(["black", "brown", "blonde", "platinum blonde", "red", "bright pink"])
+  $eye_color = Array.random(["brown", "blue", "green"])
+  $facial_feature = Array.random(["duck lips", "freckles", "squinty eyes", "a button nose"])
+  $genitals1 = Array.random(['vagina', 'girlcock', 'kendoll']);
+  $genitals2 = Array.random(['normal_penis', 'massive_dong','futanari', 'none'])
+  $pubic_hair = Array.random(['heart', 'bolt', 'muff', 'natural', 'none'])
+>>\
+
+\
+
+"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]]
+
+::get a girl name <4494,5333>
+You walk out of your room, boobs jiggling.
+
+"Oh you look great! What are we going to call you?" Sally asks.
+
+"Yeah we can't call you by your name while you're a girl," Jess adds.
+
+[['"Why not Heather?"'->call me a name that's in-use][$girl_name = 'Heather']]
+[['"What do you want to call me?"'->girls decide name]]
+[['"I have an idea."'->custom name][$girl_name = $girl_names.pluck()]]
+
+::call me a name that's in-use <4261,5483>
+"We can't call you '$girl_name' that would be confusing!" Jess retorts.
+
+Natalie says, "Yeah think up a better name."
+
+"Pick a different name," Sally suggests.
+
+<<include [[custom name]]>>
+
+::custom name <4495,5469>
+<<set
+_rand_girl_name = $girl_names.pluck()
+>>
+
+"I want to be called <<textbox "$girl_name" _rand_girl_name>>."
+
+[[Speak->custom name 2]]
+
+<<if $girl_names.length >= 2 >>\
+[[Think of a new name->custom name]]
+<<else>>
+You're out of ideas, thinking longer won't help.
+<</if>>
+
+::girls decide name <4647,5475>
+Sally says, "I've always liked the name Kathryn."
+
+Jess mocks Sally, "You've always liked strong women, haven't you Sally? Like Captain Kathryn Janeway from Star Trek: Voyager?"
+
+Sally puts her hands up, "Guilty, I would do whatever Janeway said."
+
+The girls laugh.
+
+Jess continues, "Anyway, I always wanted a sister named Barbara."
+
+Natalie says, "Did you play with lots of Barbie toys as a kid?'
+
+Jess mumbles under her breath, "As if you didn't have Barbie Dolls."
+
+Natalie suggests, "Why don't you go with Alexandra, or Alex for short?"
+
+[[Go with Jess's Suggestion, Barbara->custom name 2][$girl_name = 'Barbara'; $jess_disposition += 2]]
+[[Go with Nat's Suggestion, Alex->custom name 2][$girl_name = 'Alex'; $nat_disposition += 2]]
+[[Go with Sally's Suggestion, Kathryn->custom name 2][$girl_name = 'Kathryn'; $sally_disposition += 2]]
+
+::custom name 2 <4489,5639>
+<<silently>>
+<<set _names_in_use = [
+//FIXME I could do this smarter with like regexes or starts with, but whatever
+  'heather',
+  'jess',
+  'jes',
+  'jessica',
+  'jessi',
+  'jesse',
+  'jessy',
+  'nat',
+  'natalie',
+  'sally',
+  'sal',
+] >>
+
+<<set $girl_name = $girl_name.replace(/^\s+|\s+$/g, '') >>
+<<if !$girl_name.match(/[A-Z]/) >>
+<<set $girl_name = $girl_name.toLocaleUpperFirst()>>
+<</if>>
+<</silently>>\
+<<if _names_in_use.includes($girl_name.toLowerCase())>>\
+<<include [[call me a name that's in-use]]>>
+<<elseif $girl_name == 'Amanda'>>
+"Oh that's clever, because, 'Your a man... duh!'"
+
+[['"Maybe I should pick something else."'->custom name]]
+[['"That\'s exactly what I was thinking!"'->amanda1]]
+[['"No? I just like the name \'Amanda\'."'->amanda2]]
+
+<<elseif $girl_name == ''>>\
+
+"We've got to call you something..." Jess says.
+
+<<include [[custom name]]>>\
+<<else>>\
+"Oh that's a great name, we'll be sure to call you '$girl_name' while you're a girl," your sister responds.
+<</if>>\
+
+[[Fast Forward ⏩->ff2]]
+
+::clone heather 2 <4410,7081>
+<<switch $heather_bikini_options>>\
+
+<<case "heather_sister" "kinda_like_heather">>\
+
+<<set
+
+  $breast_size = 'DD'
+
+  $butt_size = 'round'
+
+  $skin_tone = 'fair'
+
+  $hair_color = 'brown'
+
+  $eye_color = 'brown'
+
+  $facial_feature = 'a button nose'
+
+  $genitals1 = $bottom_style
+
+  $genitals2 = 'none'
+
+  $pubic_hair = 'natural'
+
+>>\
+
+
+
+<<include [[custom girl 2.5]]>>
+
+<<case "custom_bikini">>\
+
+<<include [[custom girl]]>>
+
+<</switch>>
+
+::accept custom girl <4390,7870>
+TODO
+
+::custom girl 2.5 <4663,7115>
+<<set
+
+  _available_genitals = {
+
+    vagina: 'a vagina',
+
+    girlcock: 'a small, flaccid cock',
+
+    kendoll: 'nothing',
+
+    normal_penis: 'my normal penis',
+
+    massive_dong: 'a massive dong',
+
+    futanari: 'a penis and vagina'
+
+  };
+
+>>
+
+<<nobr>>
+
+"Okay, earlier, I said I wanted,
+
+<<switch $bottom_style>>
+
+<<case 'vagina'>>a vagina,
+
+<<case 'girlcock'>>a small, flaccid cock,
+
+<<case 'kendoll'>>to be as smooth as a ken doll,
+
+<<default>>
+
+\#ERROR\# - invalid $$bottom_style "$bottom_style"
+
+<</switch>>
+
+
+
+<span class="keep-genitals"><<click "and I just wanted to make sure you remembered.">>
+
+<<addclass ".keep-genitals" "hidden">>
+
+<<removeclass ".swap-genitals" "hidden">>
+
+<<set $keep_genitals = true>>
+
+<</click>></span><span class="swap-genitals hidden"><<click "but I've changed my mind.">>
+
+<<removeclass ".keep-genitals" "hidden">>
+
+<<addclass ".swap-genitals" "hidden">>
+
+<<set $keep_genitals = false>>
+
+<<script>>
+
+State.temporary.available_genitals = JSON.parse(JSON.stringify(variables().available_genitals));
+
+delete State.temporary.available_genitals[variables()['bottom_style']]
+
+<</script>>
+
+<span class="swap-genitals hidden"><br><br>"I'd really like <<cyclinglinkd "$new_genitals" _available_genitals>> between my legs when I'm transformed."
+
+</span>
+
+<</nobr>>
+
+[[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']]
+<<if ['kinda_like_heather', 'heather_sister'].include($heather_bikini_options)>>\
+<<choice [['"However, Heather keeps hers."'->heather pubes]]>>
+<</if>>\
+::amanda1 <4617,5794>
+TODO
+[[Fast Forward ⏩->ff2]]
+
+::amanda2 <4759,5794>
+TODO
+[[Fast Forward ⏩->ff2]]
+
+::heather pubes <4669,7766>
+"You know what... I don't know how Heather keeps her pubes, and I don't wanna ask," Sally says, "Natural I guess."
+
+<<include [[pubic hair options]]>>
+
+::ff3 <2494,4691>
+Here you'll choose how to customize your bikini, if you used dialog options earlier to "keep the bikini".

+ 0 - 3
story/05_beaches.tw2

@@ -478,9 +478,6 @@ Double-click this passage to edit it.
 ::nude olympics <6651,7614>
 Double-click this passage to edit it.
 
-::"'I\'m ${girl_name} and this is Sally."' <6899,7480>
-Double-click this passage to edit it.
-
 ::name puzzle start <8708,6734>
 [['"Vicky is..."'->name puzzle vicky]]
 [['"Van is..."'->name puzzle van]]

+ 340 - 0
story/06_public_beach.tw2

@@ -0,0 +1,340 @@
+::Arrive at Public Beach <8657,508>
+We arrive at the public beach parking lot, and it takes a while to find a spot.
+
+Sally rushes off to the beach.
+
+Jess calls out, "Hey! we gotta unload the car!"
+
+Sally, "They have nets already setup, that's the heaviest thing, if one of the public one's is free we just need a ball."
+
+The rest of us wait for her to get back, in the short while I start checking out the ladies in bikinis. It's the height of summer and the beach is packed with good looking (and not so good looking) guys and gals wearing very skimpy clothes.
+
+Sally gets back.
+
+Nat calls out as she gets into view, "So is the public net free?"
+
+"I've got good news and I've got bad news."
+
+[['"Good news first."'->public beach good news first]]
+[['"Bad news first."'->public beach bad news first]]
+[['"Just spit it out."'->public beach spit it out]]
+
+::public beach good news first <8507,658>
+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 <8657,645>
+"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 <8807,658>
+"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 <8819,937>
+Jess smiles, "Oh don't tell me you have a crush?"
+
+[['"I just admire her athleticism."'->public beach admire marcis athleticism]]
+[['"No. Her boyfriend Darren makes fun of me for being a nerd."->public beach teased for nerdiness]]
+[['<lie> "No."'->lie about crush]]<<silently>>TODO - add $lies+=1<</silently>>
+
+::public beach setup the nets far away <8391,941>
+"Oh don't be a scaredy cat," Natalie admonishes, "They're cheerleaders not vampires."
+
+Jess says, "Marci may be a stuck up bitch, but she cheered real hard for us during the championship last year."
+
+Sally: "Yeah! but that's when her coach and stuff are watching, in halways and stuff they're super mean. They TPed my house!"
+
+[['"Their heckling will be distracting. We should practive far away from them."'->public beach distracting heckling]]
+[['"I guess you're right. We'll save a lot of time walking and setting up/taking down the net."'->public beach save time]]
+[['"Hear me out... Marci could be our ally."'->public beach marci ally]]
+
+::public beach run to the free court <8831,1866>
+You grab a volleyball from the back of the car, and head over the burm. Going fast enough to claim the free court before someone else does.
+
+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 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 sees you first and waves, "Hey Heather, sorry you didn't make the squad this year."
+
+Right... they think I'm Heather... 'coz I look like Heather.
+
+[['"I would never join your stupid squad."'->public beach run to the court 2]]
+[['"Thanks? I guess."'->public beach run to the court 2]]
+
+::public beach choose court <8642,793>
+[['"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]]
+
+::public beach distracting heckling <8171,1127>
+Jess: "I guess you're right, but we should plan on doing something mean to them later."
+
+Natalie: "... Jess... you're super passive aggressive, and I love it."
+
+Sally: "I've been reading the rules, and there are _some_ minor hexes I can land without getting in too much trouble."
+
+[['"Let's go. I'll carry the net."'->public beach carry the net]]
+[['"Lets' go. I'll scout ahead and find a place."'->public beach scout ahead]]
+
+::public beach save time <8342,1133>
+"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]]
+
+::public beach marci ally <8557,1131>
+Me: "So like the rules state we can have four pairs enter the tournament right?"
+
+Sally: "Yeah."
+
+Me: "And Marci and her friends are already... uh... physically elligible."
+
+Natalie: "Yeah they're stacked. Jiggle all over the place when they're in the air."
+
+Me: "And two more pairs competing on our team means twice the chance to win."
+
+Sally: "It also means halving the winnings if we win. And they don't know how to play volleyball very well."
+
+[['"You said it yourself, earlier this isn\'t about winning, so much as it\'s about qualifying"'->public beach qualifying more important than winning]]
+[['"I don't know how to play volleyball very well... but you're letting me on your team..."'->public beach 
+[['"They're plenty athletic! have you seen the throws and things they do, it\'s impressive!"'->public beach impressive cheering]]
+
+::public beach admire marcis athleticism <8691,1024>
+Jess: "Sure, I'm _sure_ it's her athleticism you admire."
+
+Natalie adjusts her bikini top, "You know with these swimsuits Sally made we have at least as much _athleticism_ as Marci does."
+
+Sally: "Don't be silly guys, if anything these things are gonna make it harder to jump around in."
+
+[['"No, Sally, not literal athleticism..."'->public beach not literal athleticism]]
+[['"So hear me out, we could team up with the cheerleaders."'->public beach marci ally]]
+
+::public beach teased for nerdiness <8829,1232>
+Sally: "It's okay, Marci teased me for being a nerd. We better find a spot far away from Marci and Darren."
+<<silently TODO in crease $sally_disposition>>
+
+[['"Alright, I'll carry the net."'->public beach carry the net]]
+[['"Alright. I'll scout ahead and find a place."'->public beach scout ahead]]
+
+::lie about crush <9030,1238>
+Jess: "I'm your sister I can tell when you're lying about these sorts of things."
+
+[['"She's the head cheerleader, the most popular girl in school... of course I have a crush on her."'->public beach marci crush]]
+[['"Yeah she's super hot alright. I'm attacted to super hot girls... this isn't a surprise."'->public beach marci crush]]
+[['"I actually have a thing for Darren..."'->public beach Darren]]
+
+::public beach not literal athleticism <8711,1236>
+Sally looks quizzically, and then says "Oh!" and giggles.
+
+Yeah $girl_name, "I guess you got more _athleticism_ than you bargained for."
+
+[['"Cute. But hear me out we can use the cheerleaders."'->public beach marci ally]]
+
+::public beach marci crush <9154,1380>
+Jess: "Yeah alright, I suppose Marci has some assets that you might have a hard time ignoring, but she's just such a stuck up bitch."
+
+[['"Listen here me out we can use the cheerleader's help."'->public beach marci ally]]
+[['"I don't think I can be near her, I would be too distracted by embarrassment."'->public beach too embarrassed]]
+
+::public beach Darren <8647,1465>
+Jess and Natalie laugh.
+
+Jess: "Darren? Isn't he like a linebacker?"
+
+Natalie: "He's like all muscle."
+
+Sally: "$girl_name's personal romantic preferences aren't any of our business..."
+
+Jess: "I'm sorry, it's just I'm imagining $boy_name with Darren... it's kinda cute."
+
+Sally: "Look anybody would be better for Darren than that ice cold bitch Mari."
+
+Natalie: "Hey, why did you never put a hex on her or whatever?"
+
+Sally: "I thought about it, but there are like... rules..."
+
+[['"Listen here me out we can use the cheerleader's help."'->public beach marci ally]]
+[['"I don't think I can be near him, I would be too distracted by embarrassment."'->public beach too embarrassed]]
+
+::public beach carry the net <8685,1871>
+Double-click this passage to edit it.
+
+::public beach scout ahead <8543,1869>
+Double-click this passage to edit it.
+
+::public beach qualifying more important than winning <8444,1300>
+Sally: "I guess, but we'd still have to split it eight ways instead of four."
+
+Jess: "An eight way split is still a lot of money... yeah."
+
+Natalie: "I guess I can pretend not to hate Marci's guts for a few days."
+
+Sally: "I guess I can too, but I'm looking up the legal Hex limit later."
+
+[['"Alright, let's get down and talk to them."'->public beach talk to cheerleaders]]
+
+::public beach impressive cheering <8558,1295>
+Natalie: "Yeah it's super impressive, they get thrown high into the air, and then when they come down you can see under their skirt..."
+
+Natalie snickers.
+
+Sally: "I don't care how _impressive_ they are or how much _athleticism_ they have... I don't think I can work with Marci."
+
+Jess: "Sal... we wouldn't pair you up with Marci. You'd just have to grin and bear it for a few days... and then like you'd be rich."
+
+Sally: "But Marci would be rich too!" Sally thinks... "Ugh when I say that out loud it does sound petty huh. I guess I can take it, but not for too long... and I'm definitely looking up the legel Hex limit."
+
+Natalie: "If you need any help with that Sal, just let me know... I'd love to see Marci as a frog... or something."
+
+[['"That\'s the spirit! Let\s go talk to them."'->public beach talk to cheerleaders]]
+
+::public beach head on over <8985,1865>
+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 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 sees Nat and says, "Oh hey, Natalie... too bad... oh and your friends are here too? I suppose you're here about the tournament?"
+
+<<include [[talk to the cheerleaders]]>>
+
+::public beach talk to cheerleaders <8410,1860>
+Double-click this passage to edit it.
+
+::public beach too embarrassed <8843,1574>
+Jess: "Yeah it's the embarrassment that distracts you."
+
+Sally: "I guess we better find a spot far away from Marci and Darren to setup our net."
+
+[['"Let's go, I\'ll scout ahead"'->public beach scout ahead]]
+[['"Let's go, I\ll carry the net"'->public beach carry the net]]
+
+::public beach run to the court 2 <8831,2014>
+They stop playing and turn towards you, giving the guys a good look at all their asses.
+
+"Oh my god Marci, look at her!" Gina is staring at your tits. The girls are staring at your voluminous cleavage. Darren who had been distracted by Gina's ass, looks over and nods at the other guys.
+
+Marci: "I haven't seen you in a while... Looks like you would make the squad if you tried out next year.
+
+[['"Uh... my eyes are up here..."'->public beach my eyes are up here.]]
+[['"Uh yeah... I guess I\'m kind of a late bloomer."'->run to the free court 3]]
+
+::public beach my eyes are up here. <8756,2168>
+Marci: "I didn't mean it like that... I'm not into girls, it's just we require a certain amount of jiggle..."
+
+Gina: "Yeah the uniforms don't come in small chest sizes."
+
+<<include [[run to the free court 3]]>>
+
+::run to the free court 3 <8906,2166>
+At this point, Natalie, Jess and Sally arrive.
+
+"Anyway, I assume you're here about the volleyball tournament? We're competing in it."
+
+<<include [[talk to the cheerleaders]]>>
+
+::practicing with a beach ball <8584,2498>
+Double-click this passage to edit it.
+
+::real ball <8717,2506>
+Double-click this passage to edit it.
+
+::is that beer <8877,2523>
+Darren says, "Yeah it's Coors. You want one?"
+
+[['"Sure."'->can i have a beer]]
+[['"No thanks."'->no beer please]]
+[['"You really shouldn\'t have beer..."'->no beer]]
+
+::what tournament <9266,2483>
+Marci: "It's like this weird reality show? I guess? It's not on T.V. internet only... but they have girls play beach volleyball, and give cash prizes."
+
+Gina: "They gotta have curves though, like us. No skinny bitches."
+
+[['"Cash prizes."'->cash prizes]]
+[['"Oh so you need to be good at volleyball huh... wouldn't it be great if you... had some training? from... people who know how to play volleyball."'->help train]]
+[['"So it's like porn?"->porn]]
+
+::use nextdoor net <9479,2484>
+Double-click this passage to edit it.
+
+::talk to the cheerleaders <8931,2314>
+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]]
+[['"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]]
+[['"Oh no we\'re not competing, but we\'d like to use the net next to yours."'->use nextdoor net]]
+
+::can i have a beer <8629,2674>
+You catch the beer.
+
+[[shotgun it->shotgun the beer]]
+
+::no beer please <8721,2803>
+"Suit yourself," Darren says as he takes a big slurp from the can.
+
+#TODO
+
+::no beer <8917,2694>
+Marci: "Don't be a Narc."
+
+[['"Fine. Fine."'->no beer please]]
+[['"Look I\'m just saying, ther\'s a cop right over there."'->cop over there]]
+
+::cash prizes <9076,2658>
+Karen: "Yeah the winning team gets a million dollars!"
+
+Marci: "We ain't exactly stellar players... so we're pretty sure we can't win the whole thing, but your team gets a hundred thousand just for qualifying, that's 25 grand split four ways."
+
+[['"Could we join your team?"'->join your team]]
+[['"We... uh actually know how to play volleyball, maybe we could help you?"'->help train]]
+[[
+
+::help train <9226,2661>
+Double-click this passage to edit it.
+
+::porn <9401,2676>
+Karen: "No! it's not naked or anything."
+
+Gina: "Oh come on, it's kinda porn-ish. We'd be sexualizing ourselves for a presumably male audience."
+
+Marci: "But that's not that much difference than a cheerleading meet."
+
+Pratiba: "I guess, but at least at a cheer event, guys can't just whip their dicks out, if they're watching it in the privacy of their homes... on their computer."
+
+[['"Oh come on... no one's masturbating to... beach vollyeball."'->no one is masturbating to beach volleyball]]
+[['"Well I guess that\'s why it pays well."'->pays well]]
+
+::join your team <9076,2808>
+Double-click this passage to edit it.
+
+::no one is masturbating to beach volleyball <9326,2826>
+Double-click this passage to edit it.
+
+::pays well <9476,2826>
+Double-click this passage to edit it.
+
+::fine no narc <8842,2844>
+Double-click this passage to edit it.
+
+::cop over there <8966,2844>
+Double-click this passage to edit it.
+
+::shotgun the beer <8611,2824>
+Double-click this passage to edit it.
+
+::Twee2Settings [twee2]
+@story_start_name = 'Arrive at Public Beach'
+Twee2::build_config.story_ifid = '19A9390A-68B9-4FA9-8557-7429B0668798'
+Twee2::build_config.story_format = 'SugarCube2'
+