code:
:: Lunchtime overview [Twine.private]

Lunch has three basic storylines.

if gagged; serve the staff, of this and your school in a frenchmaid dress.
(at the moment only your boy school teahcers make an appeareance in
the secen)

If make-up is good; serve diner in a coutnry house; wearing
a maids uniform; but not a over fetishistic one. Because you know;
vans full of french maid driving around town will attract attention

:: Lunch entry
{
  You meekly follow the other girls to lunch.
  (if: $fatigue >70)[ You are so tired and hungry that you are looking forward to
                      lunch, or whatever passes for in this twisted school. ]

    (if: not $know_mrsjones)[A teacher, wearing a name badge reading "Mrs Jones"]
    (else:)[Mrs Jones], is standing by the door to the Dining Hall, she seems
    to be pulling some girls out of the line, and making sending them
    into different rooms. She looks at you as you approach.

(if: $gagged and ($gagWornCount >= 2))[
    |mrsjones>["I think we can consider you've had enough of that punishment, for now"].

    She selects a key from a large bunch and removes your gag. (set: $gagged=false)
    |pcspeech>["Thank you"], you stutter before the line moves forward.

    (display: "Normal Lunch")
](else-if: $gagged and ($gagWornCount < 2))[
    |mrsjones>["Juliet, since you can't eat lunch while being punished, you
    can serve the staff. Go through the door on the left to get changed into the
    correct uniform."
    ]

    (link: "Refuse as best you can")[
        |pcspeech>["Mmmph mmm!"], You attempt to complain around the ever present intruder
        in your mouth.

        |mrsjones>["I know dear, don't worry. Im sure they will be gentle"], replies Mrs Jones leading you to the side,
and through the door before you realise what happened.
        [[Continue->Frenchmaid Lunch]]
    ]
    [[Obey and go through the door->Frenchmaid Lunch]]
]
(else-if: $makeup_quality > 20)[
    |mrsjones>["Juliet, Your makeup is well done. You can help with service. Take the door on the right"
    ]

    (link: "Ignore Mrs Jones and continue.")[
        (replace: ?obey1)[]
        |mrsjones>["Juliet!! I said the door on the right."] She blocks you and the rest of the queue from
        advancing into the dining hall.

        |givein>[[Go through the door after all->Putting on waitress uniform]]

        (link: "Be stubborn and wait")[
             (replace: ?givein)[]
            |pcspeech>["No thanks. I'm happy to taking lunch with rest
            of my class."], you tell her.

            |mrsjones>["Hmm.  "Your" class, hey. Accepted your place her then. Perhaps if you just sign this
            enrollment contract we can get it all sorted out"], with flourish she produces a thick contract
            document, and proffers it for you to sign. At the top you can see it is titled "St Johns Finishing school
            for gifted young Ladies - 3 year enrollment." The girls behind you start chanting |girlspeech>["Sign! Sign Sign!"]
            in a cadence which goes straight through you.

            (set: _obq_signup = $myns.get().sissyObedienceQuotient() )\
            (if _obq_signup > 55 ) [
                This school has worn you down so much, you sign the contract just to get things over with.
                [[Go through the door->Putting on waitress uniform]]
            ](else:)[
                |signnosign>[
                You leaf through the contract in front of you. You're no lawyer but it seems
                to be straightforward contract to enroll you into this school for three terms.
                (link: "Sign")[(replace: ?signnosign)[
 You sign the contract, after all your enjoying your time here. Aren't you?

                        [[Go through the door->Putting on waitress uniform]]
                ]]
                (link: "Refuse")[(replace: ?signnosign)[

You put you hand on yout hips, stroking a pose. |pcspeech>["No"], you say, and mean it.

|mrsjones>["Ok, I guess you not ready for that then."]

(display: "Normal Lunch")
                ]]
            ]
        ]
    ]
    |obey1>[ [[Obey and go through the door->Putting on waitress uniform]] ]
]
(else:)[
    You file quietly past Mrs Jones, as her attention moves on to the girl behind.
    (display: "Normal Lunch")
]

}

:: Frenchmaid Lunch

The door clicks behind you, and you notice there is no handle on this side.\
Looking into the room you see and closthes rail with a nmber of named garment bags hanging\
from the rail. You are not surprised to see one labeled "Juliet".
There is another door on the other side of the room , with a doorbell labeled "Press only when fully dressed".
You figure you migth was well open the bag to see what is in store for you. THen you can \
plan any resistance.
You unzip the garment bag and look inside, finding a short black dress with a mass of petticoats.\
After a moments reflection you realise it is a rather fetishistic french maid's dress.
|worriedthoughts>[Oh great.]
|fm_options>[
    (link: "Just press the button")[ \
        You are so fed up with the stupid games in this schools seems to play. A voice from the other side of the door says \
        |teacher>["You're not dressed. The uniform isn't optional. Or you can just wait there and skip \
        lunch, and collect 15 demerits"]
    ]\
    [["Put on the dress, then press the button"->Putting on FM dress]]
]
(link: "Sit on the ground and wait")[\
    (replace  ?fm_options)[]\
    You decide it not worth giving the teachers the satisfaction of seeing you engage
    with there willy ideas. So just just sit on the floor. And wait.
    And wait.
    After wait seems like an ages but is probably only a hour. Mrs Jones opens the door you came in
    from. |mrsjones>["Still here. That's 15 demerits for insubordination. You better go straight\
     to your next lesson. Without Lunch"], she tells. You leaving the door open.

]
:: Putting on FM dress

{
With a sigh of resignation you strip down to your lingerie (|worriedthoughts>[Your lingerie, you
can't believe your think of these as yours now]) and lift the dress out the bag. As
you do so the most ruffled and feminine knickers you have every seen fall to the floor. It
doesn't take much imagination to realise you are suppose to wear these along with the
dress. Glancing inside the bag you find a pair of high heel court shoes, to complete the outfit.
|worriedthoughts>[Oh, boy. I'm going to look really silly wearing all this.]
}
|lingere_change>[\
(link: "Wear the knickers")[\
    Obediently you changed into the provided underwear. (set: $knickers="maid")
    (replace: ?lingere_change)[""]\
]\
(link: "Ignore the kinckers")[\
    You set aside the provided ruffled knickers, you do have some limits.\
]\
]\

|dress)[{
You step into the dress and pull zip up behind you. You can feel the weight of the petticoats
pulling down on bodice. Looking down at yourself, the ruffles around the top of the bodice frame your décolletage in
a far to realistic manner for you to be comfortable with.

Finally you slip the heels on and are ready.
}]

[[Press the button->Serving Grammar school teachers]]

:: Putting on waitress uniform

{
The door closes behind you with an onminous click, something makes you
try to poen the door agian, but as you expected you find that it has locked
behind you.

The room you are now in seems to be a small changing with another door at
the fare end with a push button by this side. A notice by the push button reads
|signage>["Ensure you are wearing the appropriate uniform before pushing
this button"]

The center of the room is filled with lockers, an it you can find a locker
labelled 'Juliet' easily. You open that locker with a little trepidation to
find a white blouse, a knee length black skirt and an apron inside. The combination would make
a cute waitress uniform.

It doesn't take much imagine to realise you are supposed to wear the
provided uniform.

[[Put on Uniform->Wear waitress outfit]]
[[Wait->?]]
}
:: Wear waitress outfit

You puton the waitress outfit, YOu wonder how women walk in skirts like this which seem to
tie you thighs together, forcing you to hobble along a little.

[[Press the button->Serving at the Country House]]

:: Serving Grammar school teachers

{
The door is opened after a moment, by a stern looking dinner lady, you points to a large tray upon which
three diner plates each covered by a polished silver dome cover sit.
You find it is heavy so you need both hands to pick it up. |teacher>["Take the tray
down the corridor through to  the dining room"],she commands.

The lady gives you a pat on the bum, as you set off, reminding you how short that skirt and
how little you can defend yourself, while carrying heavy trays. You foresee a long Lunchtime ahead.

At the end of the corridor there is a small step
(if: $feetscore <25)[
    which you fail to notice, as you reach it, and your inexperience with wearing heals sends you and
    the tray and in contents spiralling into the next room.

    You look up from this predictament and see the only think which could possibly make your situation
    worse. You are serving at the top table for the teacher of your OWN school, your recognise
    your Headmaster and Housemaster looking doing at your, not with concern, but some sort
    of relish.

    |teacher>[Well, well, what a clumsy maid. I'm feeling generous though. I offer just to cane you, or
    perhaps you like to be left with the Prefects for a bit of fun.
]
    (if $used_throatsweet >0)[
        (link: "A caning please sir.")[(goto:"Headmaster caning")]

        (link: "I'll take my chance with the prefects")[(goto:"Prefects")]

    ](else:)[

        (link: "A caning please sir.")[(goto:"Headmaster caning then toy")]

        (link: "I'll take my chance with the prefects")[(goto:"Headmasters toy")]

    ]
](else:)[
    which you notice it time to step up with only a wobble on your heels. It seems
    like you might have actually learnt something in that ballet class.

    But your relief was short lived as you face the diners in this dingin room
    to pass out first diner too, and find yourself face to face with your own
    Headmaster.

    [[continue serving->]]

    [[panic and amke run for it->]]
]

}

:: Headmasters toy

TODO :
[[Skip to Next lesson->Lesson Three]]

:: Headmaster caning then toy

TODO:

[[Skip to next lesson->Lesson Three]]

:: Serving at the Country House

TODO Server at Lunch cocktail party, for school
*benefactors*

[[Return to class->Lesson Three]]

:: Normal Lunch

{
You follow the queue, round past the serving hatch where you collect your lunch tray, upon which sits your material covered with simple
platic dome plate to keep it warm.
The line move slowly and surely in there is a palatable nervousnous and nobody speeks as you fill togheter to sit down in a orderly
fashion with the rest of the class.

You end sitting next to $friendCharacter, and opposite $enemy. You lift the lid off your
plate and reveal a relatively normal meal of sausage and mash. It only at this point you realise
you haven't been provided with any cutlery.

TODO
Forced to suggestive eat the suasges. and after a mash food fight have to live it
of the face of a desginate opponents.

}
[[Return to class->Lesson Three]]


code:
:: Mrs Jones Gag removal

(if: $gagtime < 1)[\

]\
(else:)[]
TODO: Double-click this passage to edit it.

:: Mrs Jones
<!-- A simple redirect passage for the differnt time one might visit mrs jones -->\
(if: $gagged and $gagtime >= 1 )[(display: "Mrs Jones Gag removal")]\
(else-if: $caged)[(display: "Mrs Jones' relief")]\
(else-if: $nextLessonNr is "End")[(display: "End")]

:: Escape Attempt
TODO Double-click this passage to edit it.

:: Mrs Jones' relief

You approach Mrs Jones' desk with trepidation, not knowing what to expect.\
|pcspeech>["Please, Miss. I can't concentrate with this thing on."]
|mrsjones>["That's perfectly understandable. I think I can help you, \
but you will have to show willing to fit in more the school too. If you chose one of these
treatments, I sort you little problem downstairs out."]
She lays a  set of cards face down on her desk, |mrsjones>["Just show me which one you would like."]

TODO Double-click this passage to edit it.
<!-- side quest Ideas
   paint your nails/ manicure
   get earrings
   hairdo
   pluck your eye brows.
   Leg waxing.
   intimate waxing
   laser hair removeal / beard suppresssion
   locked heels (Only if ballet already done)
   chance of different lingerie
   -->

repo_name: allisonedwards/st

license: mit


code:
:: StoryData
{
    "ifid":"5ac08b96-46b3-441a-a3fe-7d6259e8a1c3",
    "storyformat": "Harlowe-2"
}

:: StoryTitle
St John's Finishing school for gifted Young Ladies

:: Story Stylesheet [stylesheet]
.sissythings {
  color: pink;
}

tw-hook[name="boyspeech"] {
   color:cyan;
  font-style: italic;
}

tw-hook[name="jonesspeech"] {
   color:thistle;
  font-style: italic;
}

tw-hook[name="girlspeech"] {
   color:Orchid;
  font-style: italic;
}

tw-hook[name="teacher"] {
   color:HotPink;
  font-style: italic;
}

tw-hook[name="mrspayne"] {
   color:Indigo;
  font-style: italic;
}

tw-hook[name="sissythings"] {
   color:pink;
}

tw-hook[name="subbythings"] {
  color:lightcoral;
  text-shadow: 2px;

}

tw-hook[name="signage"] {
  width: 60%;
  margin: 0 auto;
    font-weight: bold;
  border-style:solid;
  display: block;
}

tw-story {
    padding: 50px 450px 50px 300px;
}
tw-passage {
  font-size:14pt;

}

tw-sidebar {
  position:fixed;
  left:220px;
}

.sidebar {

 	width: 250px;
  	float:right;
  	border-color:cyan;
    border-style:solid;
    font-size: 12pt;
    text-align:left;
}

.stat-bar {
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
	width: 200px;
	height: 20px;
	padding: 5px;
	background: #ddd;
	-webkit-border-radius: 5px;
	-moz-border-radius: 5px;
	border-radius: 5px;
	position: relative;
}
.bar {
	background: #c54;
	height: 10px;
	position: relative;
	transition: width .5s linear;
}
.q {
  font-style:italic;
  color:purple;
  margin 20px;
}

:: Story JavaScript [script]
window.harloweext = {
	//Harlowe's macro commands prevents access to properties with underscores
	//in thier name.
	"state": State,
	"$":$,
	"func": function() {
		alert("Hahsa");
	},
	"initToggler" : function (varname) {
		this.toggler_template = varname.TwineScript_Print();
		return this;
	},
	"getToggler" : function (togglename) {
			return this.toggler_template.replace(/ITM/g,togglename);
	},
	"printCmdReplace" : function ( varname, orig, replace) {
		//return "EE";
		return State.variables[varname].TwineScript_Print().replace(new RegExp(orig,"g"),replace);
	},
	"checkSissyTaskSuccess": function (difficulty, effort ) {
	    var sissy = State.variables["sissyness"];
		  var horny = State.variables["horniness"];
     	var fatigue = State.variables["fatigue"];
		  var actualEffort = Math.min(effort,100-fatigue)
		  this.increaseFatigue(Math.floor(actualEffort/2));
		  //Tired and horniness is a distraction.
		  return ((sissy + actualEffort ) - (fatigue + horny) ) > difficulty;
	  },
	"sissySkillScore": function (effort ) {
	    var sissy = State.variables["sissyness"];
		  var horny = State.variables["horniness"];
     	var fatigue = State.variables["fatigue"];
		  var actualEffort = Math.min(effort,100-fatigue)
		  this.increaseFatigue(Math.floor(actualEffort/2));
		  //Tired and horniness is a distraction.
		  console.log("SSS",sissy,actualEffort,fatigue,horny,(sissy + actualEffort ) - (fatigue + horny));
		  return ((sissy + actualEffort ) - (fatigue + horny) );
	  },
  "sissyObedienceQuotient": function ( ) {
	    var sissy = State.variables["sissyness"];
	    var horny = State.variables["horniness"];
        var fatigue = State.variables["fatigue"];
        //Tired and horny character obey without question.
	    return (sissy + fatigue + horny);
  },
	"_increaseSissyVariable": function( varname , increase) {
		var oldvalue = State.variables[varname];
		//Stop the value going below 0.
		State.variables[varname] = Math.max(0,increase+oldvalue);
		$('#'+varname+'_bar').css('width',Math.min(State.variables[varname],100) + "%");
		return "(replace: ?statusbar)[(display: \"status_inner\")]"
  },
	"sissySkillUiScore": function (name) {
		var effort = 	$('#'+name+' div.slide').slider("value") ;
		return this.sissySkillScore(effort);
	},
	"increaseSissy": function(inc){
		this._increaseSissyVariable("sissyness",inc);
		 this.increaseHorny(2);
	},
	"increaseHorny": function(inc){this._increaseSissyVariable("horniness",inc);},
	"increaseBladder": function(inc){this._increaseSissyVariable("bladder",inc);},
	"increaseFatigue": function(inc){this._increaseSissyVariable("fatigue",inc);},
	"passTime": function (len) {
		this.increaseBladder(5 * len);
   		this.increaseFatigue(2 * len);
		this.increaseHorny(5 * len);
	},
	"askAboutTaskEffort" : function (q,name,go_text ,finalvar,nexthook) {
      var fatigue = State.variables["fatigue"];
		  var maxEffort = Math.max(0,100-fatigue)
  	//var o = { 'get': function() {
		return ('
' + q +
    	      '

'+
					  '(set: _d = $("#'+name+' div.slide").slider({"slide":function(evt,ui)'+
					  ' {  if (ui.value > '+String(maxEffort)+') { evt.preventDefault(); '+
						' $("div#'+name+
						' div.err").html("You are to tired to try that hard");} '+
						' else { $("div#'+name+
						' div.err").html("");  }'+
						'}}) )'+
      	    '(link: "'+go_text+'")[' +
        	  '(set: _'+finalvar+' = $myns.get().sissySkillUiScore("'+name+'") )' +
          	'(set: _dummy = $("#'+name+
						' div.slide").slider("option","disabled",true) )' +
          	'(show: ?'+nexthook+')]'
					 );
	  //     }}
	  //return o;
	}

}

:: Disclaimer

{
This is an adult game, entirely fictional, and no ages are mentioned, the
characters are intended to be over the age of consent.

The themes of sexism and abuse in the story does not imply
the author condones these or any acts depicted herein.
}

[[I understand and still want to play->Waking up]]

:: Waking up
It must of been a good night last night. You remember avoiding your sports teacher after you won the rugger, and a bet with some mates about sneaking into the Girls Grammar.  Which you did with a few beers you had been carefully hoarding for a end of term blow out like this..

.. and remember meeting a rather nice brunette. But nothing after that.

You sit up and realise you are naked in the bed, looking around you find yourself in a what seems to be a girl's single dorm room, rather like yours would be if it wasn't filled with rugger and cricket kit, but had a lot [[pink things|Examining the pink things]] and with boy band posters instead.
There is a wardrobe, somewhat larger than yours in one corner, the door is slightly ajar and inside seems to be full of dresses and skirts.

Alongside the wardrobe is a chest of drawers and a small desk covered mostly with the same books your school uses for A-level English. A handwritten [[note->Read the note]] sits on top of the scattered homework.

 The sports kit you were wearing last night is nowhere to be seen.

[[Look in the wardrobe and the drawers]]
[[Read the note]]
[[Leaving the dorm room the first time]]

:: Look in the wardrobe and the drawers
(if: $noteRead is 1)[You take $girlCharacter's suggestion and decide to see if there is something that fits you, maybe it will be easier to sneak out if you look slightly feminine]

You never really had looked through a girl's drawers or wardrobe before, you are quite apprehensive about what you might find. Who knows what [strange frilly things]<sissythings| a girl might keep in her drawers

(set: $last_attire=$attire) \
[[Look in the wardrobe->Juliet's Wardobe]]
[[Look in the Drawers->Juliet's Drawers]]

[[Finished ->A dorm room]]

:: Leaving the dorm room the first time
(if: $attire != "naked" && $attire != "lingere" && $breastForms )[
	(goto:"Stepping out into the Corridor")
]\
(else-if: $attire is "lingere")[\
	You consider stepping out into the corridor, but given you are just wearing girlie underthings, you think better of it and head back into the [[dorm->A dorm room]]
]\
(else-if: $attire is "naked")[\
	You consider stepping out into the corridor, but given your current lack of attire think better of it and head back into the [[dorm->A dorm room]]
]\
(else:)[\
	You take one last look in the mirror, and realise your flat chest will be a big giveaway, and it is obvious in your current outfit. Perhaps you can find someway of dealing with that.

[[Turn round and look for something->A dorm room]]
]

:: Read the note
You look at the note:-

   $boyCharacter,
   Lessons have started. I can't remember what happened to your PE kit, so you're going to have to borrow something of mine.

   Wear anything that fits. But be careful Matron is on the lookout for boys.
   Somebody knows something  - So you need to get out quickly and carefully between lessons when the hallways are quiet.

   $girlCharacter xxXXxx

(if: $noteRead is 0)[So that brunette must be $girlCharacter; Right ?]
(set:$noteRead = 1)

[[Finished ->A dorm room]]

:: Examining the pink things
You've never really had the opportunity to have a good look around a girl's room before.

|sissythings>[Breast forms (self adhenisve)]
|sissythings>[Big Pink Dildo]
|sissythings>[Pink satchel]
|sissythings>[Makeup Box]
|sissythings>[Nail polish (pink)]
|sissythings>[rose quartz jewellery]
|sissythings>[pink handbag (empty)]
|sissythings>[pink chastity cage]

[[Finished ->A dorm room]]

:: A dorm room
A girl's single dorm room, full of odd [[pink things->Examining the pink things]] and has the walls covered with boy band posters.
In one corner is a wardrobe, somewhat larger, the door is slightly ajar and inside seems to be full of dresses and skirts. A chest of drawers next to it and a small desk covered mostly with the same books your school uses for A-level English.

[[Look in the wardrobe and the drawers]]
[[Read the note]]
[[Leave the room->Leaving the dorm room the first time]]

:: Init [startup]
(set:$boyCharacter = "Fred")   \
(set:$bestFriend = "Steve")   \
(set:$girlCharacter = "Juliet")  \
(set:$friendCharacter ="Alice") \
(set:$enemyCharacter = "Kate") \
(set:$madeFriend = false)\
(set:$madeEnemy = false)\
(set:$noteRead = 0) \
(set:$myns = window.harloweext ) \
(set:$myns = it.get().initToggler( (display: 'toggler') ) ) \
(set:$sissyness = 0) \
(set:$horniness = 0 ) \
(set:$fatigue = 20 ) \
(set:$arousal = 5) \
(set:$bladder = 50) \
(set:$timesSearchedCloset = 0) \
(set:$feetscore = 0) \
(set:$used_throatsweet = 0)\
(set:$has_throatsweet = false) \
(set:$heard_sweetedvoice = false) \
(set:$needs_mistress_visit = false)\
(set:$skipped_mistress_visit_nr = 0)\
(set:$gagged = false )\
(set:$gagWornCount =0 )\
(set:$makeup_quality = 0) \
(set:$photographed_sissyness = -1) \
(set:$caged = false )\
(set:$nr_exitsearches = 0 )\
(set:$not_exitsfound = (a:) )\
(set:$foundExit = false )\
(set:$places_of_interest = (a:"Roam without success"))
(set:$breastForms = false)\
(set:$braWorn = false) \
(set:$seenCage = false )\
(set:$attire = "naked" )\
(set:$demerits = 0)\
(set:$lateToClass = true)\
(set:$know_mrsjones = false)\
(set:$lessonsComplete = (a: ))
(set:$allLessons = (a: "Drama", "Ballet", "Makeup class","Sex Education"))

:: Juliet's Wardobe
You open the wardrobe and  look through the various dresses, blouses and skirts all neatly on hangers.

Holding them up to yourself you realise you basically have a choice of 4 outfits a prom dress, and school  uniform dress, a school uniform blouse and skirt, or a ballet tutu (if: $attire is in (a: "naked", "bra", "knickers"))[.
You are currently naked, but realise that you ought to put on proper underwear on first. Unless you wear the tutu, that doesn't need underwear, but ther rest will look wrong in without a bra and knickers.]\
(if: $attire is "lingere")[.
You are feeling embarassed wearing a bra, girls knickers, and nothing else.] \
(if: $attire is "prom")[, of which you are already wearing the Prom dress.  ]\
(if: $attire is "tutu")[, of which you are already wearing the Tutu.]\
(if: $attire is "winter")[, of which you are already wearing the skirt and blouse.]\
(if: $attire is "summer")[, of which you are already wearing the gingham dress.]

|prom>[(link: "Wear the Prom dress")[
(if: $attire is not "lingere")[You strip back down to your underwear before putting on the dress.]
As pick it up the prom dress you find yourself surprised at how much it weighs, and can't help \
but notice volumionus skirts of the prom dress and how they move and sway in slightly disturbing way.
You step inside the skirts, trying not to step on any of the petticoats, and then you slide your arms into the sleeves.
As you adjust the dress every movement you make sets the skirts spinning and swaying, pulling on the bodice is odd ways, and making the petticoats caress your legs, each movement causing you slight arousal. The whole effect is somewhat distracting.
Eventually you get the bodice on and reach round The back to pull the zip closed. The zip closes tightly you only have just enought flexibility to pull the zip to the top. But worse having done so you realise you will need help to take this dress off. |worriedthoughts>[Shit!]

(set: $attire="prom")(set: $attirechanged=1)(replace: ?SimpleBack, ?tutu, ?summer, ?winter )[] \
[[You look away from the almost girly you in the mirror->Look in the wardrobe and the drawers]]
]]

|tutu>[(link: "Wear the Tutu")[
Something draws you towards the Tutu, and you can't resist trying it on,
(if: $attire is "naked")[ you don't really think you need underwear with this either as it seems to have it's own tights with it which start to put on.](else-if: $attire is "lingere")[ but it feels wrong putting it on over the top of ordinary underwear so you take off the bra and knickers first, finding the breast forms in the bra staying firmly stuck to your chest. You put the bra and knickers away again in the drawers.]\
(else:)[ first you strip naked, except for the stuck on breast forms before putting on the dance outfit. ]
Drawing the white opaque tights up yours give you a little thrill. Then you step into the leotard and pull it, and it's attached tutu skirt, up over you body.
(set: _d = $myns.get().increaseSissy(10) )

You check yourself out in the mirror; (if: $breastForms)[ you paddded figure looks surpisingly feminine. Now you just need to get out of here.](else:)[ but you look like a boy in a Tutu; perhaps something extra is needed.]
(set: $attire="tutu")(set: $attirechanged=1)(replace: ?SimpleBack, ?prom, ?summer, ?winter )[]
[[You look away from the almost girly you in the mirror->Look in the wardrobe and the drawers]]
]]

|summer>[(link: "Wear the School uniform dress")[
(if: $attire is not "lingere")[You strip back down to your underwear before putting on the dress.]
A simple blue cotton gingham dress which is regularly worn by the students at seems the simplest thing to protect you modesty with. You put it on, but are alarmed by how short the skirt seems to be.(set: $attire="summer")\
(replace: ?tutu, ?prom, ?winter)[]\
]]

|winter>[(link: "Wear the School uniform blouse and skirt")[
(if: $attire is not "lingere")[You strip back down to your underwear before putting on the dress.]
The skirt and blouse uniform is surely going to the easiset thing to fit in while wearing. Putting the blouse on leaves you with tantalising sensations and you realise it seems to be made of silk. The skirt seems to hardly cover your bum, but it's all there really is.(set: $attire="winter")\
(replace: ?tutu, ?prom, ?summer)[]\
]]

(if: $attire is in (a: "naked", "bra","knickers"))[ \
  (replace: ?prom)[You feel you need underwear on before you put the prom  dress on.]\
  (replace: ?summer)[You ignore the skirt and blouse, yout can't bring yourself to go commando in a skirt that short. And without a bra the blouse will show off your manly physique.]\
  (replace: ?winter)[You ignore the dress, yout can't bring yourself to go commando in a skirt that short. And without a bra it will show off your manly physique.]\
 ]\
(if: $attire is "prom")[ \
 (replace: ?prom)[  [[Keep the prom dress on->Look in the wardrobe and the drawers]]]\
 (replace: ?winter, ?summer)[]\
 (replace: ?tutu)[You can't reach the zip to take off the prom dress. So that's what you'll have to keep wearing]
 ]\
(if: $attire is "tutu")[ \
     (replace: ?winter, ?summer, ?prom)[]\
     (replace: ?tutu)[ (link:"Remove the tutu")[You take off the tutu, leaving yourself naked again. (set: $attire="naked")] ]\
 ]\
 (if: $attire is "winter")[
 (replace: ?winter )[ [[Keep the skirt and blouse on->Look in the wardrobe and the drawers]]]\
 ]\
 (if: $attire is "summer")[
 (replace: ?summer )[ [[Keep the uniform dress on->Look in the wardrobe and the drawers]]]\
 ]
|Simpleback>[\
(set: $timesSearchedCloset = it +1 )\
[[Look elsewhere for clothes->Look in the wardrobe and the drawers]] ]

:: JS Per passage setup [header]
(mouseover-append: ?sissythings)[(set: _dummy to $myns.get().increaseSissy(5)  )]

:: Stepping out into the Corridor
You step boldy out in the corridor hoping to disguise the uncertainty you feel about walking around dressed as you are. Plucking a direction at random you turn left and walk  away from the room. You can't help notice how exposed you arse and legs are in your outfit, and that you are finding it all somewhat arousing. You inwardly grimace and hope that there will be no tell tale bulge.

You have only taken about 5 steps when you hear a command voice from behind you.  |teacher>["Girl!, Why aren't you in class, they started 10 mintues ago"].
You stop in surprise and start to reply before you realise your voice will give you away; you'll have to keep quiet and obedient until to get a chance to run for it.
|teacher>["Cat got your toungue, eh. Turn round now. Let's see who you are."]
Since you can't see any alternative you turn round slowly hoping that there is someway this disguise will hold up. But given you don't go to this school.. well the teacher isn't going to reconigse you is she?

|teacher>["Hmm. You must be $girlCharacter, the new girl - "]

(if: $attire is "tutu")[

|teacher>["Come with me ; I  will show you the way to the dance studio."]

The teacher sets off down the corridor fast enought to force you jog to keep up; as you do so you feel your breast forms and the tutu skirt bouncing and tugging in unfamiliar places. The unusual sensations make you think about that a feminine sight you must make - going down the corridor with your skirt bouncing up and down - just the thought of it makes your cock twitch in misguided excitment.

Finally you reach a door which the teacher holds open and bids you to enter and follows; inside you see a class of girls dressed like you are standing in a dance pose in front of a mirror.

|teacher>["Miss Wickham - Here is $girlCharacter, I'm sorry she is late."]

(set: $nextLesson="Ballet")] \
(if: $attire is "prom")[
|teacher>["Come with me ; I  will show you the way to the drama studio."]

The teacher sets off down the corridor fast enough to force you jog to keep up; as you do so you feel your breast forms and the dress skirt swirl around and carress your legs. The unusual sensations make you think about that a feminine sight you must make - going down the corridor with your skirt swirling, like a hollywood star - just the thought of it makes your cock twitch in misguided excitment.

Finally you reach a door which the teacher holds open and bids you to enter.
(set: $nextLesson="Drama")] \
(if: $attire is "summer")[(set: $nextLesson="Makeup class")
|teacher>["Come with me ; I  will show you the way to your first lesson."]

The teacher sets off down the corridor fast enough to force you jog to keep up; as you do so you feel your breast forms bounce and you feel really exposed underneath. You hope the panties your wearing have enough elastic to stop embarassing shpes in the short skirt of the dress.

Finally you reach a door which the teacher holds open and bids you to enter.
]\
(if: $attire is "winter")[(set: $nextLesson="Sex Education")
|teacher>["Come with me ; I  will show you the way to your first lesson."]

The teacher sets off down the corridor fast enough to force you jog to keep up; as you do so you feel your breast forms bounce and you feel really exposed underneath. You hope the panties your wearing have enough elastic to stop embarassing shpes in the short skirt.

Finally you reach a door which the teacher holds open and bids you to enter.
]\
(display: "Lesson One")

:: Lesson One
(set: $currentLesson = $nextLesson)\
(set: $currentLessonNr = "Lesson One")\
(set: $nextLessonNr = "Lesson Two")\

|lesson>[]\
\
|endLesson)[
(set: _d = $myns.get().passTime(4) )
[[Goto the Toliets|Toilets]]
[[Search for the school exit->Find way out]]
$needs_mistress_visit[ [[Goto the Headmistress's office->Headmistress 1]] ]
[[Follow the class to their next Lesson|Lesson Two]]
(if: $gagged or $caged)[ [[Visit Mrs Jones->Mrs Jones]] ]
]
(replace: ?lesson)[(display: $currentLesson)]

(set: $lessonsComplete to it + (a: $currentLesson))

(if: $currentLesson is "Sex Education")[(set: $nextLesson="Ballet")]
(else-if: $currentLesson is "Makeup class")[(set: $nextLesson=(either: "Ballet", "Drama" ))]
(else:)[(set: $nextLesson=(either: "Makeup class", "Sex Education" ))]

:: Toilets
Not surprisingly you find there are only girls toilets, this being a girl's school after all. So you enter those with some nervousness. At least you are dressed to fit in.

The gaggle of girls checking their make-up at the mirror seem to
give you a hard stare as you find an empty cubicle and hide away behind
the closed door.

(if: $caged)[\
(if: not $seenCage)[\
This is your first opportunity to really see what the Headmistress did to your cock. So you pull your skirt to the side and roll down your knickers and tights.
You find you penis is stuck inside a small plastic cage only just big enough to contain it. You try to pull it off, but it it is like you are pulling your balls off, so you stop with tears welling in your eyes from the pain. Closer inspection shows the cage is held on with a ring around your balls by a small but rather secure looking padlock.

(if: $arousal >25)[ You can see your cock struggling to expand inside the cage, giving rise to some of the frustrating feelings you've got.]It occurs to you that you will have little control of direction when peeing with this thing on.
And it's going to stop you having a good wank which may even be it's primary purpose,  or perhaps that is to stop you having 'fun' with any of the other students  - not that that has been your prime concern for a  while now.
(set: $seenCage = true)\
You sigh in relief as you empty your bladder into the toilet bowl.
](else:)[\
You sit on the toilet and push down your knickers and tights, trying not to think about the plastic device which your cock is locked into as you relieve yourself.
]\
You can't help seeing yourself in a mirror which has been fixed the back of the cubicle door. There you are with tights and knickers around your ankles dressed in a girls school uniform,  (if: $make_quality > 0)[face in girly makeup and] sitting on the toilet just like girl. (set: _d = $myns.get().increaseSissy(5) ) .  |worriedthoughts>[What have you become.]
(set: _d = $myns.get().increaseBladder(-1 * $bladder)) \
(link:"continue")[(show: ?leave)]\
]\
(else:)[\

You fumble under your skirt to find your member, and pull it free form your knickers and tights.
You stand there with the your cock in hand about to pee, wondering for a moment about your situation.\
\
(if: $horniness > 80 )[The rock hard nature of your shaft reminds, you you have other needs which must be attended to.
(link: "Wank")[(show: ?wank) ]]\
(else-if: $horniness > 60 )[\
|wchoice>[\
(link: "Wank while you are here")[(show: ?wank)(replace: ?wchoice)[]]
(link: "Don't wank")[(show: ?nowank)(replace: ?wchoice)[]]
]]\
(else:)[(link:"continue")[(show:?nowank)]]\
\
|wank)[You start stroking your hard shaft and (if: $sissyness >60)[|sissythoughts>[you can't help think about the lovely girls' clothes you have worn today as you reach your climax.]](else:)[|worriedthoughts>[you think about some of the beauties you have been sharing a class with today, and wonder wether you should find a way to get to know them better, the thought of it brings you to an abrupt climax. May be next time.]] (set: _d = $myns.get().increaseHorny(-1 * $horniness)) (set: _d = $myns.get().increaseBladder(-1 * $bladder))
You clean up, and open the door to the cubicle - the gaggle of girls that was around the mirror eailer are now surrounding the door trapping you in.

$enemyCharacter looks at you and says in a sing-song chant |enemyspeech>["We know what you've been doing."], and continues in a more normal voice |enemyspeech>["Time to see the headmistress for you."].

The girls rush forward as one and grab you.
You are trapped against the back of the cubicle there is no room to escape. You can't resist with any effectiveness as they pull you out of the cubicle, and along the corridor - you struggle to get away, but even as you get one to let go another grabs you before you can run in any directon.

Finally they reach their intended destination, open the door to the [[Headmistress's office->Headmistress 1]] and push you in.
]
|nowank)[ You recognise that the sooner you are done in the toilets, the quicker you can do something about your situation. You relieve yourself quickly. (set: _d = $myns.get().increaseBladder(-1 * $bladder))(show: ?leave)]
]
|leave)[(set: _d = $myns.get().passTime(2))(link-goto: "Go to your next lesson" ,$nextLessonNr)]

:: Lesson Two
(if: $gagged)[(set: $gagWornCount to it +1 )]\
(set: $currentLesson to $nextLesson)\
(set: $currentLessonNr = $nextLessonNr)\
(set: $nextLessonNr = "Lunch")\
(if: $needs_mistress_visit)[ (set: $skipped_mistress_visit_nr to it  +1)]\

|lesson>[]

|endLesson)[
(set: _d = $myns.get().passTime(4) )
[[Goto the Toliets|Toilets]]
[[Search for the school exit->Find way out]]
$needs_mistress_visit[ [[Goto the Headmistress's office->Headmistress 1]] ]
(if: $gagged or $caged)[ [[Visit Mrs Jones->Mrs Jones]] ]
[[Follow the class to Lunch|Lunch]]
]

(replace: ?lesson)[(display: $currentLesson)]

(set: $lessonsComplete to it + (a: $currentLesson))\
\
(set: _possLessons = $allLessons - $lessonsComplete)\
(if: ("Drama" is in _possLessons) and ("Sex Education" is in _possLessons))[(set: $nextLesson="Drama")] \
(else:)[(set: $nextLesson=(either: ..._possLessons ))]

:: Lesson Three
(if: $gagged)[(set: $gagWornCount to it +1 )]\
(set: $currentLesson to $nextLesson)\
(set: $currentLessonNr = $nextLessonNr)\
(set: $nextLessonNr = "Lesson Four")\
(if: $needs_mistress_visit)[ (set: $skipped_mistress_visit_nr to it  +1)]\

|lesson>[]

|endLesson)[
(set: _d = $myns.get().passTime(4) )
[[Goto the Toliets|Toilets]]
[[Search for the school exit->Find way out]]
(if: $gagged or $caged)[ [[Visit Mrs Jones->Mrs Jones]] ]
$needs_mistress_visit[ [[Goto the Headmistress's office->Headmistress 1]] ]
[[Follow the class to their next Lesson|Lesson Four]]
]

(replace: ?lesson)[(display: $currentLesson)]

(set: $nextLessonNr = "Lesson Four")\
(set: $lessonsComplete to it + (a: $currentLesson))\
(set: _possLessons = $allLessons - $lessonsComplete)\
(set: $nextLesson to _possLessons's 1)

:: Lesson Four
(if: $gagged)[(set: $gagWornCount to it +1 )]\
(set: $currentLesson to $nextLesson)\
(set: $currentLessonNr = $nextLessonNr)\
(set: $nextLessonNr = "End")\
(if: $needs_mistress_visit)[ (set: $skipped_mistress_visit_nr to it  +1)]\

|lesson>[]

|endLesson)[
(set: _d = $myns.get().passTime(4) )
[[Goto the Toliets|Toilets]]
[[Visit Mrs Jones->Mrs Jones]]
[[Search for the school exit->Find way out]]
[[Leave the school|Boy's school]]
]

(replace: ?lesson)[(display: $currentLesson)]

:: Find way out
(if: $nr_exitsearches is 0)[\
    (set: $tmpfound to (either: ...$places_of_interest))\
]\
(else:)[\
    (set: $tmpfound to (either: "found exit", ...$places_of_interest))\
]\
(set: $places_of_interest to $places_of_interest - (a: $tmpfound))\
(set: $nr_exitsearches to it + 1 )\
(display: $tmpfound)

:: Places in the school

TODO : Add some more 'places_of_interest'

:: found exit
{
You take the opportuinty for another look
around the school to see if you can see a way out.
(if: $caged)[\
    You arrive at the Headmistress's office door, and a Mr Jones',
    desk from a different direction to before.\ And you can now
    see an exit your previously had missed.
](else:)[\
    You seem to have arrived at the school reception desk, which is right
    by Headmistress's office.

]

 Just beyond the desk  you can see another short corrrider, with doors going to the outside world,
 at the end. You can see the rest of town tantalisingly close outside.

Now all you need to do is see if you can get past the reception desk
without notice.
(set: $foundExit=true)\
|continuation>[\
(if: $needs_mistress_visit)[(replace: ?continuation)[\
    You try to back up, so you are not noticed, but it is far too
    late, as the Lady from the Reception Desk gets up .
    |jonesSpeech>["Come to see the Headmistress at last, I see."]
    Before you knowknow it she pushes you through the door to the
    Headmistress's office.
    [[Continue->Headmistress 1]]
]]
(link-goto: "Go to your next lesson and come back later" ,$nextLessonNr)
(link:"Talk to the receptionist" )[(replace:  ?continuation)[
     TODO Add some text here (and maybe other escape optins)
    [[Back to Class->$nextLessonNr]]
]]
(link:"Make a dash for it" )[(replace:  ?continuation)[
    You decide the descrition is the better part of valour,  or
    perhaps you need to plan more carefully. Time to lay low for a moment.
    [[Back to Class->$nextLessonNr]]
]]
]

}

:: Roam without success
You don't have a lot of time between lessons, and given you experiences so
far in this school, perhpas it might be better not to be caught in the corridors
during lesson time.
You spend about ten minutes getting really turned about an not finding anything
of interest when you spot a few of the girls from your last class going into
a classroom.

(link: "Give up and follow the girls to the next Lesson")[(goto: $nextLessonNr)]

:: Lunch
(if: $gagged)[(set: $gagWornCount to it +1 )]\
(display: "Lunch entry")

(set: $nextLessonNr = "Lesson Three")(set: $currentLessonNr ="Lunch")\
(if: $needs_mistress_visit)[ (set: $skipped_mistress_visit_nr to it  +1)]\

(set: _d = $myns.get().increaseFatigue(-1 * Math.max(80,$fatigue) ) )\
(set: _d = $myns.get().passTime(3) )

(if: $gagged or $caged)[ [[Visit Mrs Jones->Mrs Jones]] ]
$needs_mistress_visit[ [[Goto the Headmistress's office->Headmistress 1]] ]
[[Goto the Toliets|Toilets]]
[[Go straight to next Lesson|Lesson Three]]

:: Headmistress 1
(set: $deviceWorn to false)\
(set: _sworn =0)
You enter the ante-chamber to the Head mistress's office, and the door closes behind you, only then noticing the lock is on this side. Both the door into the inner office and the door back out need keys to open. You realise you're stuck here until someone else opens one of the doors.

Again you wonder what sort of school is this.

Looking round the room, you see a sign reads: |signage>["Students must wear the provided restraints before Mrs Payne will see them"] under which sits a table with a strange metal contraption on it which to you looks like some sort of |subbythings>[medieval torture device].
(set: $sissyness to it + 50) \
|wait>[(link:"Wait and ignore the device")[You stand waiting for 20 minutes, you have patience. after all. (set: _d =$myns.get().increaseBladder(20))(set: $horniness = $horniness + $arousal)(set: $sissyness to it - 10)(replace: ?bladder)[(display: "Headmistress 2")]

(link:"Continue to wait")[You continue to wait. A Tannoy announcement starts "$girlCharacter, you won't be allowed out until you have met Mrs Payne."(set: _d =$myns.get().increaseBladder(20))(set: $horniness = $horniness + $arousal)(replace: ?bladder)[(display: "Headmistress 2")](link:"Complain loudly")[The Tannoy starts up again. "You can make us much fuss as you want. But it won't change anything."](set: $sissyness to it - 10)

(if: $bladder <= 99)[(link:"Continue to wait")[You continue to wait some more. Another Tannoy announcement starts "$girlCharacter, It really is in you best interests to see Mrs Payne. She will understand. We dealt with girls like you before." (set: $sissyness to it - 10)(set: _d =$myns.get().increaseBladder(20))(set: $horniness = $horniness + $arousal)(replace: ?bladder)[(display: "Headmistress 2")]

(if: $bladder <= 99)[(link:"Continue to wait")[You continue to wait some more. The tannoy repeats itself,  "$girlCharacter, It really is in you best interests to see Mrs Payne. She will understand. We dealt with girls like you before." (set: $sissyness to it - 10) (set: _d =$myns.get().increaseBladder(20))(set: $horniness = $horniness + $arousal)(replace: ?bladder)[(display: "Headmistress 2")](link:"Complain loudly")[The Tannoy starts up again. "You can make us much fuss as you want. But it won't change anything." (set: _sworn =1 ) ]
(if: $bladder <= 99)[(link:"Continue to wait")[ You wait for another 20 minues when you hear another annoucement from the tannoy quiet simple this time. "All right have it you way. But it won't go well for you." (set: _d =$myns.get().increaseBladder(20))(set: $horniness = $horniness + $arousal)(replace: ?bladder)[(display: "Headmistress 2")]
(if: $bladder <= 99)[(link:"Continue to wait")[ You try to wait another 20 mintues. (set: _d =$myns.get().increaseBladder(20))(set: $horniness = $horniness + $arousal)
(replace: ?bladder)[(display: "Headmistress 2")] ]](replace:"Complain loudly")[]]]]](replace:"Complain loudly")[]]]]]
]\
(link: "Wear the device")[(set: $deviceWorn to true)(replace: "Continue to wait")[]\
(replace: "Complain loudly")[]\
(replace: "Wait and ignore the device")[]\
(replace: ?bladder)[(display: "Headmistress 2")]\
]
|bladder>[(display: "Headmistress 2")]

:: Makeup class [class]
You enter the class and sit down at one of the desks, each desk has a· |sissythings>[small closed pink box on the top of it] . Looking at the rest of the class you can see a giggle of excitment gooing through them as they see the boxes.

|teacher>["Good Moring girls, It's time to practice your makeup".]
\
(if: $lateToClass)[\
   " $girlCharacter, come up front. We will demostrate with you. "
(set: $makeup_quality=10)\
]\
(else:)[\
    "$enemyCharacter, it's your turn to be the demonstration girl. An evening look should suite you well."
]\
\
|teacher>["Open, your boxes and lay the contents in front of you".]

The teacher goes through explaining what each of the brushes do and what the effects you can get with the different colours and you tune out a little bit.

Suddenly you attention is grabbed by the teacher addressing you directly, |teacher>["$girlCharacter - what is this brush for?"], she asks, holding up one of the mystery tools from the makeup box.

(set: _brushes = (shuffled: "putting on blusher", "doing your eyelids", "applying masacara"))(set: _brushUse = _brushes's 1)\
(set: $brushscore = $myns.get().sissySkillScore(0)) \
(if: $brushscore > 40 )[You remember, thankfully  correctly what the brush the brush is used for.
|pcspeech>["It's for _brushUse, Miss"]. you reply.
(set: _correct=true)(show: ?postBrushq)\
]\
(else:)[ (set: $questions = (shuffled:
"(if: $brushscore <= 40 )[(link:\"Say,\\\"it's for (print: 1st of _brushes)\\\"\")[(set: _correct =  true)(show: ?postBrushq ) ]]\n",
"(if: $brushscore < 20 )[(link:\"Say,\\\"it's for (print: _brushes's (2))\\\"\")[(set: _correct =  false)(show: ?postBrushq ) ]]\n",
"(if: $brushscore < 10 )[(link:\"Say,\\\"it's for (print: _brushes's (3))\\\"\")[(set: _correct =  false)(show: ?postBrushq )]]\n" ))\
\
(set: _qtext = $questions.get().join("\n"))|brushQ>[(print: _qtext)]
]
|postBrushq)[
    (replace: ?brushQ)[]\
    (if: _correct)[\
        |teacher>["Well done. So you were paying attention.]\
        (if: $used_throatsweet is 0) [\
            |teacher>[ , but it's clear from your voice we have a boy as an imposter."]
            |worriedthoughts>[Oh shit, you forgot about your voice.]\
        ]\
    ](else:) [
        |teacher>["No, I'm afraid that isn't right. 5 demerits for not paying attention"]\
        (set: $demerits to it + 5 )\
        (if: $used_throatsweet is 0 ) [\
            |teacher>[, and worse, from your voice it's clear you're an boy who has sneaked in for some nefarious reason"]\
        ]\
        (else:)[\
            |teacher>[."]\
        ]\
    ]\
    (show: ?BrushQResolved)
]\
\
|BrushQResolved)[
(if: $used_throatsweet is 0 )[
	(set: _foq = $myns.get().sissyObedienceQuotient())\
    "Now come up the front $girlCharacter,I'll do your makeup for you."
    (if: _foq >35)[\
        You get up and walk up to front of the form without even thinking about it,
    ]\
    (else:)[\
        You don't really think sounds like a good idea, so you try to hestitate and·ignore it but the teacher is already walking towards you, she graps you by the ear and literally tugs you up the front. You have no choice but to follow just because she has such painful hold of your ear. \
        |teacher>["Sit!"].\
    ]
    You sit and let her do her worst; after all you don't have much choice at this point,\
    |teacher>["close your eyes"], she says as she finishes. You do so, and then  feel a spray of cold air and smell of solvents. |teacher>["That should stop you removing your makeup without permission"]
    (set: $makeup_quality=30)(set: $makePerm= true)
    |worriedthoughts>[What!. Oh shit.·]

    (if: not $caged)[\
        |teacher>["And after the lesson the Head mistress needs a chat."]
        (set: $needs_mistress_visit = true)\
    ]\
    (show: ?endLesson)\
]\
(else:)[
    (set: _x to $myns.get().askAboutTaskEffort("How much effort are you going put into applying girly makeup to your face?","makeupslide","Paint your face", "makeupscore", "nexthook") )
    (print: _x )

    |nexthook)[
        (if: _makeupscore>30)[
            You apply the makeup with a level of skill which surprises you. You manage to achieve an cute girl look which doens't stand out too much.(set: $makeup_quality=(_makeupscore / 3) )\
            (set: _x to $myns.get().inreaseSissy( _makeupscore / 3 ) )
        ]\
        (else:)[\
            You look at your poor effort in the mirror, and realising your position is hopeless, you wondering where you go from here, when..
            |teacher>["$girlCharacter, take that off. 5 demerits for clumsiness. You'll have to complete the rest of your day without makeup."]\
            (set: $demerits to it + 5)\

            Demerits again, but no makeup. Your not sure whether you've got off lighty or have trouble stored up for later.

            Hopefully you won't be here long enough for the demerits to matter...
        ]\
        (show: ?endLesson)\
    ]\
]
]

:: Sex Education [class]
|teacher>["Today, girls we are going to be studying fellatio."]

A titter went round the class.

|teacher>["Enough of that. What is important about this - is that this is a good way to keep your man in check. Not only will he think you are doing him a favour but· you'll be gaining control over him. We will study the control aspect more in later lessons. But today we are going to practice our skills with these."]

The teacher produces a large, much larger than your own penis, dildo from behind her back, and passed a box from the floor to one of the
at the front of the class. |teacher>["Take one and pass in one, this will be yours for the term.

"We don't want to be spreading too many germs around. And on that note I should mention that when doing this on a real man, or even a sissy if that all you can get"], she stops and grins and the class who laugh obediently, you giggle  with them |worriedthoughts>[(Oh, my I'm giggling now !)] but your hearts is not in it and you wonder where it leaves you when you get home. |teacher>["... use a condom. Always. Even for this. Gnohorria in the throat is really nasty".]

You take your own dildo out of the box as it comes round, and up close it seems even bigger. The idea·
of putting this in your mouth (if: $sissyness<10)[scares you] (else:)[excites you (set: _dummy to $myns.get().increaseSissy(5) ) ]

|teacher>["After todays lesson I expect you all to be able to get this al the way in your mouth, but it will tak a lot of practice."

"But that is all right. We have to whole lesson to practice. Now, I expect you to start at the tip.·an then you should always work your way down slowly, to excite the gentleman as you got. Once you've got to the bottom, work you way up and down, but not to predicatably - keep him guessing .

"You should be able to latch the didlo to your desk and then start , I will watch and give you tips as you continue. Goodluck."]

You look at the desk a realise there is a dent into an a catch on the desk into which the dildo will go. You push the didlo down into the catch and hear click.
You see the rest of the girl starting on licking there didlos  and sucking the tips already.

|suckorescape>[
(link: "ignore it")[(replace: ?suckorescape)[
You zone out and ignore didlo  - there is no way your going to suck something that looks like a cock. Suddenly though you cry out as the teacher \
hits you on the back head - while you've got your mouth open she pushes your \
head down over the didlo.

|teacher>["Suck it bitch"], she comands, |teacher>["You've got to learn to own this or men will treat you as just a toy for their pleasure."]
(link: "continue")[(show: ?suckcock)]
]]
(link:"start licking and sucking")[(replace: ?suckorescape)[](show: ?suckcock) (set: _d = $myns.get().increaseSissy(5))]
(link: "try and leave the room")[]
]\
\
|suckcock)[\
(set: _x to $myns.get().askAboutTaskEffort("How much are you effort are you putting in to learing how to pleasure a man?","cocksuck","Suck!", "suckscore", "gag") )
(print: _x )
]\
\
|gag)[\

(if: _suckscore > 40)[
Miss Grant, starts to speak the rest of class, |teacher>["You can all finish now, $enemyCharacter unfortunately you earn the punishment for the worst girl , you know the drill"].

$enemyCharacter looks at you, |enemySpeech>["It should have been you", she snarls across the class room."]
|teacher>["Now, that's 10 extra demerits $enemyCharacter, now take your punishment."] She hands something to $enemyCharacter, you cant quite see what from behind her, but is has straps round the back her neck which the teacher secures with a padlock.

As you leave the class you see she is wearing some sort of gag. This school just gets worse and worse.
(set: _dummy to $myns.get().increaseSissy(15) )
]\
(else:)[\
You thought you been doing enough to not draw attention to yourself, but apparently not as Miss grant who seems to be suddenly behind you, says |teacher>["$girlCharacter, stop you are clearly·
the worst in the class."] You start to protest but as you start to speak you find your mouth filled again, and hear click at the back of your head. |teacher>["Perhaps wearing penis gag all through your next lesson will help you learn how to do this. You can have an extra 10 demerits for you performance. Come an see me after your next lesson. Mrs Jones at the Front Desk will remove it then"]
(set: $demerits to it + 10)
|pcspeech>["Mmph, Mmph"], you protest. But it's no use, the rest of class are looking at you and· giggling - no doubt glad they didn't suffer your fate. What sort of school is this!.

(set: $gagged to true )
(set: _dummy to $myns.get().increaseFatigue(15) )
]
(show: ?endLesson)\
]]

:: Head mistress office at end
(set: _d = $myns.get().passTime(3) )
[[Go Home|Boy's school]]

:: Nursery Ending
|sissythings>[You come to slowly, in a warm bed... , no adult sized cot.

"What the Fuck... ", you try to scream, but it comes out as "Mmph Mmph". You try to reach to your mouth to find what has been stuffed inside,  only to discover your hands are tied to the side of the cot in little pink baby Mittens.

You fall back into the cot and look upwards, into a mirror which shows the full horror of your attire.

You are dressed in a pink baby's dress, from under which you can see a pink nappy peeking below the short hem of the dress where it has ridden up as you lie in the cot. Not only are you hands in (if: $sissyness > 60)[ cute ] pink mittens but on your feet are (if: $sissyness > 60)[ even cuter ] pink booties. You mouth seems to be filled with a pacifier tied round your head with pink ribbon.

It takes you a moment or two to take all this in, and then suddenly a recording starts to play.

"Welcome to St John's Nursey for wayward infants. Your time here is a punishment term under section 13.4 of your student behaviour agreement. The rules here are:-

Students will at all times be refered to as Babies.

Babies will not speak except to agree with an adult.

The only aceptable words a baby may speak is "Ga-ga".

Babies should wear a nappy at all times.

Nappy changes are a privilege for good behaviour.

The subjects taught at this school are mandatory for all Babies.

Those subjects are:

   Appreciation of Barbie dolls
   How to hold doll's tea party.
   How to love the colour pink.

	Welcome the Rest of Your life.
]
(if: $sissyness > 80)[ This doesn't sound like punishment at all.]

The End.

:: statusbar [header]

Fatigue:

Need to Pee:

Horniness :

(if: $has_throatsweet)[(link: "Eat a sweet")[\
(set: $used_throatsweet to it + 1)\
(set: _x to $myns.get().increaseFatigue(-40))\
(set: _x to $myns.get().increaseHorny(10))\
(set: _x to $myns.get().increaseBladder(10))\
You have eaten a sweet recently.]]

:: Headmistress 2
(set: $bladderOk to true)\
(if: $bladder >= 75)[(if: $bladder <= 99)[ You begin to start to feel the need to go to toilet. You wonder how soon you can get to a toilet.]\
]\
(if: $bladder > 99)[\
(replace: "Complain loudly")[]\
(replace: "Wait and ignore the device")[]\
(replace: "Wear the device")[]\
It's to late you can't hold you bladder any longer and you piss yourself and your clothes. The room is filled with the unmistakable smell of of urine.
|mrspayne>["Oh dear Juliet. I'm sorry it has come to this, but you leave me with now choice. Your consent to the rules of your Grammr school will cover you next term's punishment. Whatever you might think."] You hear a hiss of air and then a prick as if you been hit by some sort of dart, before it all fades to black.
(set: $bladderOk to false)
[[Try to wakeup->Nursery Ending]]\
]\

$deviceWorn[\
You take a deep breath, something tells you this isn't go to be a pleasant experience and examine the device on the table.
It seems to be some sort of yoke, similar to what you have seen used to carry buckets in pairs, with the weight taken on the shoulders, but this is slighlty different. It has a hand grip at each end and a half circle which looks like it supports the back of the neck.
Given your lack of choice you pick it up by the hand holds and maneuver it with some difficult around the back or your head, you find your self standing in what you can only call the surrender position, with you hand up and out to your sides. A tannoy message comes through. "Thank you Juliet this won't take long now." A click is heard as the door, opens but there is another more worrying click from the yoke and it suddenly seems to pinch a little , you find it difficult to turn you head to look at your hands but as you wriggle the pinching goes away, and you realise that a collar and wirst cuff have closed around your neck and wrist trapping you in the device.
(set: $sworn to 0)\
|closeswear>[(link: "Swear")[ (set: $sworn =1) "Fuck.", you exclaim.]]
(link:"continue")[(replace: "Swear")[]
|mrspayne>["You can come in now, Juliet."]

You enter the headmistress' office, and you see the girl you met last night , also wearing you of those annoying yokes, waiting for you  with a teacher you you presume to be the Headmistress.

(if: $gagged)[She starts lecturing you straight away, and at the same time begins to remove your gag,(set: $gagged to false))]\

(if: $sworn is 1)[|mrspayne>["First of all Juliet, the recent language you have used is not acceptable and I will award another 20 demerits, (set: $demerits= $demerits +20) (if: $demerits > 50 )[that makes $demerits. Quite a total."]]]

|mrspayne>["Now, the see what we have here then shall we?"].
The Headmistress asks. you start to answer but she slaps you hard on the face. |mrspayne>["That was a rhetorical question girl"].
You were going to complain again but the look in her eye and the fact your cheeks are still stinging quell you. Just enough that you don't realise what is happening as she puts her hand under your skirt and manages to get a firm hard grip on your cock.

|pcspeech>["What the...."], you trail off as she give you an eye.

|mrspayne>["Juliet, you seem to not be wearing any protection. Oh My."], she exclaims is if the finding a penis under a skirt was an entirely normal outcome.

|mrspayne>["Well my dear"], she says turing to the other student, |mrspayne>["you seem to have accomplished your little challenge for this week. I hope you put your sex education lessons to good use. You may go. Mrs Jones at the desk, will release you, and give you your trousers back"].

The other student shuffles out the room as quickly as she can.

|mrspayne>["I'm sure $girlCharacter will love the opportunity to take over your role as the female lead in the schol play. Won't you? "]

Mrs Payne returns her attention to you.

|playq>[(set: _poq to $myns.get().sissyObedienceQuotient())\
(if:  _poq < 130 )[(link:"Uhm")[(replace: ?playq)[You hesitate in answering, and Mrs Payne continues without you, |mrspayne>["perfect I knew you would. Mr Baines the headmaster will be so happy."] (show: ?punishwank)]]]
(if:  _poq < 90 )[(link:"Not a chance")[(replace: ?playq)[You reply in the negative , but Mrs Payne igonres you, |mrspayne>["Oh that shuch a shame because you ARE going to play it. And enjoy kissing the boys. Or at least they will enjoy kissing you."] (show: ?punishwank)]]]
(link:"Swoon Acceptance")[(replace: ?playq)[|mrspayne>["Perfect I knew you would. Mr Baines the headmaster will be so happy"] (set: $sissyness to it + 5)]
(show: ?punishwank) ]
]\
\
|punishwank)[
(replace:"Uhm")[]\
(replace:"Not a chance")[]\
(replace:"Swoon Acceptance")[]\
(if: $horniness>50)[|mrspayne>["Now lets see.  I think you might need some help before we give you your protection."] She picks up a bowl, and puts it on the floor in front of you. Then gives you a hard stare. |mrspayne>["Don't miss - young miss"], she commands as she takes you be surprise by starting to massage your penis. You can't help but get excited by all of this and come rather quickly, as you do Mrs Payne indicates the bowl.
|cumtarget>[\

How much effort are you going to make to get you load in the bowl?

(set: _d = $("#aimslider").slider() )

(link: "Shoot")[\
(set: _cumtmp = $('#aimslider').slider("value") )\
(set: _cumscore = $myns.get().sissySkillScore(_cumtmp) )\
(set: _cumtmp = $('#aimslider').slider("option","disabled",true) )\
_cumscore
(show: ?postshot)\
] ]\
\
|postshot)[(set: _loq to $myns.get().sissyObedienceQuotient())\
(set: _d = $myns.get().increaseHorny(-1 * $horniness) )
After you have shot you load, Mrs Payne continues fiddling under your skirt, you can't see what see is doing but you feel as if something is holding your now flacid penis tight, finally there click which rings with a touch finality to it.(set: $caged to true)
(if: _cumscore < 0)[
|mrspayne>["Oh dear."] Mrs Payne exclaims looking at your terrible attempt at target practice. |mrspayne>["20 demerits and (set: $demerits to it + 20) you will kneel and lick up the rest of the mess."]
|cleancum>[
(link:"Lick it")[(replace: ?cleancum)[You carefully get down on you knees, the yoke makes the movement more difficult than you expected. and start to lick. The smell and the taste are revolting but you continue not wanting to anger Mrs Payne any more. (set: $sissyness to it + 20)(set: _kneeling to true)
]](if: _loq <70 )[
(link:"Refuse")[(replace: ?cleancum) [ You look at her and shake your head, not daring to speak. "Insolent girl, she gives your penis which she still has hold of , a sharp tug downwards and you have no option but to fall to the floor. |mrspayne>["Lick!"], she commands, forcing your head in the mess you have left on the carpet. You will shatters and you start to lick it up, despite the embarrassment and revolting taste. (set: $sissyness to it + 10)(set: _kneeling to true)
]]]
](show: ?caning)]\
(else-if: _cumscore < 30)[\
|mrspayne>["Hmm. A good effort I suppose."], Mrs Payne allows, |mrspayne>["I can only give you ten demerits."] (set: $demerits to it + 10)(show: ?kneelcmd)(show: ?kneelreq) ]
(else:)[|mrspayne>["Well done, you have escaped any more demerits" ](show: ?kneelcmd)(show: ?kneelreq)]
]](else:)[(link:"continue") [(show: ?kneelcmd)(show: ?kneelreq)]]\
]]\
|kneelcmd)[|mrspayne>["Now Kneel."]]
|kneelreq)[(set: _koq to $myns.get().sissyObedienceQuotient())\
(if: _koq < 70)[(link:"Refuse to kneel")[(replace: ?kneelreq)[ You refuse to kneel and Mrs Payne, once again grabs your cock from underneath your skirt, you try to prevent her from doing so but the yoke pulls you up short.
 (if: not $caged)[She starts fiddling under your skirt, you can't see what see is doing but you suddenly feel as if something is holding your embarrassingly flaccid penis tight, followed by a click which rings with a touch finality to it.(set: $caged to true)]
She gives you a hard yank on your privates and you fall down. As quickly as you gather your wits she has clipped the yoke to hidden ring in floor. Your not going anywhere now.
(link:"continue")[(show: ?caning)] ]]]
(link: "Kneel nicely like a sissy")[(replace: ?kneelreq)[ Not wanting to anger Mrs Payne you kneel as she asked (set: $sissyness to it + 20), As you kneel down she grabs hold of the yokes and pushes down to the floor securing it against a ring set in the floor. (if:  not $caged )[She starts fiddling under your skirt. You are powerless to resist her invasion, with you arms held to the floor by the yoke leaving your bum high in the air. You can't see what see is doing but you suddenly feel as if something is holding your embarrassingly flacid penis tight, followed by a click which rings with a touch finality to it.(set: $caged to true)]
(link:"continue")[(show: ?caning)]]\
]]]\
\
|caning)[(if: $demerits > 0)[
|mrspayne>["And time for your punishment. $demerits demerits means $demerits strokes of the cane. It is of course expected that you should thank me for each one as you count them off."] (set: $caningend = "(show: ?leave)")
\
(display: "Caning")
](else:)[
|mrspayne>["Well done $girlCharacter. It not common for a sissy to come me to without any demerits".] (link:"Continue")[(show: ?leave)]
]]\
\
|leave)[
Finally Mrs Payne, unclips you from the floor, and motions to you to stand up.
(if: $used_throatsweet > 0)[
|mrspayne>["Now one last thing, do you want to know what?]"
|popsweet)[ (replace:?qsweet)[] You start to say "_w", but as you open your mouth she inserts some sort of sweet. You can't help to suck and swallow it she holds you mouth closed. (set: $used_throatsweet =1 ) (text-colour:"plum")["What the.."], but you trail off as you discover you voice has suddenly become quite feminine. |mrspayne>["Yes that is so much better. As a student in this school you need to both sound and look the like a lady fit for society."]]
|qsweet>[
(link:"Yes")[(set: _w = "Yes")(show: ?popsweet)]
(link:"No")[(set: _w = "No")(show: ?popsweet)]\
]]
|mrspayne>["You may go to Mrs Jones to be released, before your next lesson"]

She opens the door for you and you sheepishly creep out to the corridor, where you can see the reception desk with a lady behind it you assume is Mrs Jones.

Mrs Jones beckons you over, and  gives you an appraising look.\
(set: $know_mrsjones=true)\
|jonesSpeech>["Come round here. Now"], she says indicating a way round to the area behind the reception desk. You do as she indicates as you just want to be out of the yoke.
|jonesSpeech>["As well as being the receptionist, I'm in charge of the first aid and health issues here. So I want to know if you have a problem, or something intimate you need relief from you can come and ask me."]
|worriedthoughts>[Need she just offer to wank you off?]

(if: $strokes>0)[
Once unlocked you cannot help your hands going to rub your backside, under your skirt. And y](else:)[Y]ou wonder what Mrs Payne did to your cock. You'll have to get to the toilets to see.
(set: _d = $myns.get().passTime(2) ) (set: $needs_mistress_visit= false)\
(link-goto: "Go to your next lesson" ,$nextLessonNr)
]\

:: Juliet's Drawers
You open the drawers with trepidation not knowing what |sissythings>[mysteries of feminity] you might come across.

The drawers seem to be organised into tights, knickers and bras. (if: not $braWorn)[And it is this top drawer with the bras you find another note.  Clipped to a rather lacy bra is a note which reads: |signage>[$boyCharacter, I think this one is your size. XxX]
(if: not $breastForms)[You pick up the bra and find it is rather heavier than you expect, and the bra seems to have some integral padding to ensure you have a girly shape.]]
\
(if: $attire is "tutu")[
All this lingere seems pointless if you are wearing a dance costume.
[[back->Look in the wardrobe and the drawers]]
](else-if: $attire is "prom")[\
You can't take this dress off, so you couldn't change the the bra your wearing event if there was another one, that would fit you. And you can't face fighting under the mass of petticoats to change you knickers either.
[[back->Look in the wardrobe and the drawers]]
](else-if: $attire is in (a: "winter","summer"))[
You think about changing your bra, but there isn't another one in the drawers which you think will fit you, and the idea of going without a bra doesn't seem attractive, the pain of the unsupported breast forms trying to peel your skin off was too much to bear last time, your not in any rush to try again. However the are some options for different knickers.
(set: _knickers = $myns.get().sissyObedienceQuotient() )\
(if: _knickers > 80)[
    (if: $knickers is "pinkfrilly")[\
        But really these pink frilly knickers are far the cutest. Why would you want to wear any others?
    ](else:)[\
        You look around again see the pink frilly knickers, the frills excite you so much you can't resist them. Without any hesitation you decide to change into them.(set: $knickers to "pinkfrilly")
    ]
[[back->Look in the wardrobe and the drawers]]
](else-if: _knickers < 20)[\
    (if: $knickers is not "bluereg")[\
        You feel embarrassed about the girly knickers you are wearing. The plain blue ones are looking at you, so it seems far better just to put those on. So you do. (set: $knickers to "bluereg")
    ](else:)[\
        Despite the opportunity to change your underwear you can't stomach the thought of wearing the remaining options. Your not going to be caught wearing something with frill or ruffles. And definitely NO PINK.
    ]
[[back->Look in the wardrobe and the drawers]]
](else:)[\
    |wblue>[(if: $knickers is not "bluereg" and _knickers < 60 )[(link: "Change into the plain blue knickers")[\
        After some consideration, you decide the Blue knickers are far more your style. Plain.\
        (set: $knickers="bluereg") (replace: ?wwhite)[] (replace: ?wpink)[]
    ]]]
    |wwhite>[(if: $knickers is not "whiteruffled")[(link: "Change into the white polkadot ruffled knickers")[\
        You decide on the white ruffled knickers, and take off your current ones and put on the white polka-dot ruffled knickers. The thought of wearing something with ruffles turns you on slightly.\
        (set: _d = $myns.get().increaseSissy(7))(set: $knickers="whiteruffled")\
        (replace: ?wblue)[](replace: ?wpink)[]
    ]]]
    |wpink>[(if: $knickers is not "pinkfrilly" and _knickers > 40)[(link: "Change into the pink frilly knickers")[
        The pink ones seems to excite you to much to ignore, and perhaps pink with frills might be the best way to hide your real nature. No boy would normally be see dead wearing them, so it makes for a cunning disguise.\
        (set: _d = $myns.get().increaseSissy(10))(set: $knickers="pinkfrilly")\
        (replace: ?wblue)[] (replace: ?wwhite)[]\
    ]]]

[[back->Look in the wardrobe and the drawers]]
]
](else:)[\
\
|braauto)[It seems like a sensible thing to wear the bra, if someone has gone to trouble to pick one out specially.]
|braworn)[\
    (if: $attire is "naked")[(set: $attire="bra")]\
	(if: $attire is "knickers")[(set: $attire="lingere")]\

As you put on this bra, you notice something slightly odd; not that you have a lot of experience with |sissythings>[girly underthings] in that it does up the front. You just slip your arms in the straps and clip the bra together at the front.  (set: _d = $myns.get().increaseSissy(2)) (if: not $breastForms)[As you do so, you feel the padding conform and stick the the front of your chest. You try to take the bra off quickly in surprise, and while the bra does undo as you would expect you are left with |sissythings>[two remarkably lifelike false breasts] attached to to your chest. The sensation of them pulling down on your chest without support is so uncomfortable, you put the bra back for comfort without thinking.(set: $breastForms = true)(set: $braWorn = true)]\
]\
\
(if: $attire is in (a: "bra", "lingere"))[](else:)[\
(set: _bra = $myns.get().sissyObedienceQuotient() )\
(if: _bra < 50)[(link: "Wear the bra")[(show: ?braworn)]]\
(else:)[(show: ?braworn, ?braauto)]
]\
Your search through the drawers revealled three pairs of knickers which looks like they will fit you and keep you manhood from display, a pair of basic blue cotton knickers,  a pair of white polkadot knickers with a ruffles across the back made out of a soft satin like material, and a pair of pink knickers cut quite low, but with frills around the legs and the waist.

|pinkfrilly)[(replace: ?knickerchoice)[]\
(if: $attire  is  in (a: "knickers","lingere" ))[You take off the knickers you are wearing.]
You put on the pink frilly knickers and admire your girlish looks in the mirror. (set: _d = $myns.get().increaseSissy(10))(set: $knickers="pinkfrilly")\
(if: $attire is "naked")[(set: $attire="knickers")]\
(if: $attire is "bra")[(set: $attire="lingere")]\
]\
|whiteruffled)[(replace: ?knickerchoice)[]\
(if: $attire is in (a: "knickers","lingere" ))[You take off the knickers you are wearing.]
You put on the white ruffled knickers and admire your androgynous looks in the mirror. (set: _d = $myns.get().increaseSissy(7))(set: $knickers="whiteruffled")\
(if: $attire is "naked")[(set: $attire="knickers")]\
(if: $attire is "bra")[(set: $attire="lingere")]\
]\
|bluereg)[(replace: ?knickerchoice)[]\
(if: $attire  is in (a: "knickers","lingere" ))[You take off the knickers you are wearing.]
You put on the blue kickers, and try to avoid seeing yourself in the mirror.(set: _d = $myns.get().increaseSissy(2))(set: $knickers="bluereg")\
(if: $attire is "naked")[(set: $attire="knickers")]\
(if: $attire is "bra")[(set: $attire="lingere")]\
]\
\
|knickerchoice>[
(set: _knickers = $myns.get().sissyObedienceQuotient() )\
(if: _knickers > 80 )[You can't resist the pink frilly knickers. (show: ?pinkfrilly)]\
(else-if: _knickers > 60)[ (link: "Wear pink frilly knickers")[(show: ?pinkfrilly)]
(link: "Wear white ruffled knickers")[(show: ?whiteruffled)]
You think the blue knickers are far to boring to wear.]\
(else-if: _knickers > 40)[\
(link: "Wear pink frilly knickers")[(show: ?pinkfrilly)]
(link: "Wear white ruffled knickers")[(show: ?whiteruffled)]
(link: "Wear the blue knickers")[(show: ?bluereg)]]\
(else-if: _knickers > 20)[ You think the pink knickers are far to girly to wear leaving you a choice of:
(link: "Wear white ruffled knickers")[(show: ?whiteruffled)]
(link: "Wear the blue knickers")[(show: ?bluereg)]]\
(else:)[ The only knickers you can consider wearing are the blue Knickers.
(link: "Wear the blue knickers")[(show: ?bluereg)]]\
]

[[Finished with the drawers->Look in the wardrobe and the drawers]]
]

:: Boy's school
This is the end of the story for now; you have arrived back at your owen boys boarding school in girls clothes (if: $makeup_quality > 0)[, makeup ] and breast forms glued to your chest.

No all you have to do is get the breast forms off (if: $caged)[ the cage off,],(if: $makeup_quality > 0)[, your makeup off] and your normal
boy uniform on before anybodies sees you.

That's not going to be difficult at all ...

**THE END**

Thanks for playing "St Johns Finishing School for gifted Young Ladies"

:: Caning
(set: $stroke = 1)(set: $counted=true)(set: $notcounted =0)\
(live: 5s)[(stop:)\
(set: $pain to (transition:"pulse") + (transition-time: 1s) + (text-colour: red) )\
(live: 1.5s)[\
   $counted[(if:$demerits>=$stroke)[(append: ?caningtext)[\
   $pain[*Thwack*]
   (set: $counted=false)(set: $notcounted=0)(set: _d=$myns.get().increaseFatigue(1))\
   (link: "count")[\
      |pcspeech>[" $stroke . Thank you, Mrs Payne"], you obiedently chant
   (set: _d=$myns.get().increaseSissy(1))(set: $counted=true) (set: $stroke to it +1)]]](else:)[(stop:)(append: ?caningtext)[\
   $caningend\
   (set: $demerits =0)\
   ]]
   ]\
   (if: not $counted)[(replace: ?tnkk)[](append: ?caningtext)[\
   	(if: $notcounted is 5)[\
	|mrspayne>["Here's an extra one for free while you are thinking." ]
	$pain[Thwack](set: _d=$myns.get().increaseFatigue(1))
	(set: $notcounted =0)\
	(replace: "count")[](link: "count")[\
      |pcspeech>[" $stroke . Thank you, Mrs Payne"], you obediently chant
   (set: _d=$myns.get().increaseSissy(1))(set: $counted=true) (set: $stroke to it +1)
	(set: $notcounted =0) ]]\
	(else-if: $notcounted is 3)[\
	|mrspayne>["(print: (either: "Count sissy. I haven't got all day","I said COUNT!","Surely you haven't forgotten your arithemtic already"))]
	(replace: "count")[](link: "count")[\
      |pcspeech>[" $stroke . Thank you, Mrs Payne"], you obediently chant
   (set: _d=$myns.get().increaseSissy(1))(set: $counted=true) (set: $stroke to it +1)
	]]]\
    (set: $notcounted to it +1)\
   ]\
   ]\
]\
|caningtext>[]

:: Involuntary Exceptional jumps [header]
\
(if: not ((passage:)'s name is in (a: "Toilets" ,"Pee in the corridor", "Corridor Accidents","Tried to skip Headmistress visit","Headmistress 1","Disobedient ending","Nursery Ending","Disappointed Ending","Enrolled in Finishing school ending","Mrs Jones", "Boy's school")))[
(if: $needs_mistress_visit and $skipped_mistress_visit_nr > 1)[(goto: "Tried to skip Headmistress visit")]
(if: $horniness > 95)[(goto:"Corridor Accidents")]\
(if: $bladder > 95)[(goto:"Corridor Accidents")]
]

:: Disappointed Ending
You are returned to your  usual school, and luckily only are punished by
Fagging for $boyCharacter for all of next term.

:: End
TOO Expand passage test
At the end of the school day while noone is looking you sneak out the front door and back to your school.
[[Goto you school->Boy's school]]

:: Tried to skip Headmistress visit
|teacher>["$girlCharacter, come here."], a teacher says as you round a corner in a corridor.
|teacher>["It seems you have been avoiding going to see the Headmistress. I'm sure it just an oversight on your part."]

(link:"Walk over to the teacher")[(replace:"Ignore the teacher")[]
You walk over to the teacher, in the hope there might be something you can do to placate her. But it is already to late. She grabs your arm in a firm grip and drags you down the corridor. It's a short journey and she shows you into the  [[Headmistress's Office->Headmistress 1]] \
(set: $skipped_mistress_visit_nr=0)\
]
(link:"Ignore the teacher")[(replace:"Walk over to the teacher")[] You try and quickly turn an go the other way,
|teacher>["$girlCharacter!, Don't think you can ignore me."] You try to speed up walking way from the teacher, but you fail to look where you are going properly and run straight into a pillar.(set: $skipped_mistress_visit_nr=0)\
[[Wake up->Disobedient ending]]
]

:: Disobedient ending

You come to, in some degree of pain, as you realise you are hanging from your arms.
By the feel of the air against you skin you \
immediately know you are naked again, and can still feel the weight of those prosthetic breasts pulling on your chest.
Your head was \
limp, and looking upwards, so as you open you eyes you see your wrists cuffed and held apart by an iron \
frame open some sort of pulley arrangement over your head. You begin to wonder if this whole think was some sort of setup.

As you struggle to get your feet under you to relieve some of the stress on your arms, you can hear a stern
female voice from behind you.

|teacher>["I see you are awake now. It has been decided as your punishment under section 13.4 of your student \
agreement, that you shall be enrolled in this Academy until you graduate in one of the subjects we teach here.
This school has a strict uniform policy, so the first order of the day is to get you fitted for you new uniform.
"]

With a clack of high heel an lady looking as stern as her voice, and attired to match in a white satin blouse and \
black pencil skirt steps round to the front of you. In her hands in a manilla folder from which see seems to be reading.

(if: not $caged)[\
|teacher>["Hmm, I see Mrs Payne, didn't manage getting you to take the most basic steps controlling you urges. Never mind we can do that now."]
(if: $horniness > 60)[\
|teacher>["And unlike, Mrs Payne, we won't pander you you comfort."], she says was looking \
with intent at your stiff cock. The woman picks up some sort of handheld device out of your \
sight and, well there now way to soften the below give your \
cock a sharp and extremely painful electric shock.
(if: $fatigue < 70)[(link: "Try to bite your scream back")[\
(replace: ?screaming)[]\
|teacher>["Good girl. I  should mention that students are not expected to talk unless asked a direct question by
a Mistress, Now for your first uniform item."]. Her hands grasp you now limp cock and seem to fit it into some sort of tube. Looking down when you is finished you can see you cock encased in pink plastic cage only just large enough for it as it is limp now. (set: $caged = true)
(display: "disob ending 2")
]](else:)[You don't have enough strength left to avoid screaming]
|screaming>[(link: "Scream")[
(replace "Try to bite your scream back")[]\
|pcseech>["Arrrrrrrgh!"]
You can't help but let out a (if: $used_throatsweet > 0)[girly] scream of pain, but immediately you see a frown from this woman who has you in her grip.
|teacher>["Students, are NOT allowed to speak without permission, and I count that as speaking. You can wear this to help you learn."] She grabs something off what must be a table just behind you and before you can react, she has pushed it into your mouth, Then with some care she joins the straps behind you head holding it place and stopping you from spitting it out. You use your tongue to try to find out what this invader is a find a long slightly ridged tube, in you mouth, you just about realise it supposed to a simulacrum of a penis when it actually seems to grow bigger inside you mouth. The teacher sees the look of (if: $sissyness < 60)[horror and] surprise on your face. (set: $gagged = true)
|teacher>["Yes they do get bigger if you play with them. I'd stop unless you want an accident. Now let's stop accidents down below, shall we?"] \
Her hands grasp you now limp cock and seem to fit into some sort of tube. Looking down when you is finished you can see you cock encased in pink plastic cage only just large enough for it as it is limp now. (set: $caged = true)
(display: "disob ending 2")
]]](else:)[\
|teacher>["Now for your first uniform item."]. Her hands grasp you half limp cock and jams it into some sort tube it hardly fits inside. Looking down when you is finished you can see you cock encased in pink plastic cage not really large enough for current firm state, leaving you with a definite discomfort down there. (set: $caged = true)
(display: "disob ending 2")
]](else:)[\
(display: "disob ending 2")
]

:: disob ending 2

(if: $sissyness < 30)[(set: $uniformcolour = "pink")\
|teacher>["I see you didn't manage to excel yourself at St John's, so we going to have to put you in the remedial class. \
That means you have a pink uniform to reflect your status." ]]\
(else:)[(set: $uniformcolour="black")]

(if: $makeupscore < 0 )[(set: $path = "latex")](else:)[(set: $path="silk")]\
(if: $armscore < $kisscore) [\
    (set: $uniformtype="french") (if: $feetscore<10)[(set: $shoes="ballet")](else:)[(set: $shoes="court")]
]\
(else:)[\
    (if: $feetscore < $armscore) [\
        (set: $uniformtype="victorian")
    ](else:)[\
        (set: $uniformtype="hobble" )]\
]\

{
|teacher>["These first."]. The lady holds a up a pair of $uniformcolour
   (if: $uniformtype id "french")[ruffled $path panties]
   (else-if: $uniformtype is "victorian")[$path crotchless bloomers]
   (else:)[$path panties. |teacher>["Rather simple, but we don't want a VPL do we?"], she asks clearly rhetorically.]
}
It takes her no effect to hold your feet still, and then work the garment up your legs, the sensations exciting your caged member.
(click: "Breathe")[
    |teacher>["Ahh, yes. You see you will find pleasure here. Probably more than you can stand, but you will learn."]
    She looks, at you for a moment. |teacher>["Anything to say?"],
    (if: $gagged)[|teacher>["No of course not. Let's contine, now you've caught your breath - that might be your last chance."]]
    (else:)[You open your mouth, but the look this women's face, is too .. too greedy, you realise somehow she is daring you to speak, you close your mouth again without saying anything, not wanting to give her whatever pleasure she had hoped for.]
    |teacher>["Now this is the most important part of your uniform."], She holds in front of her a $path garment, which you don't immediately recognise
    as it seems to be simply two quite rigid rectangles, connected by some lacing. She steps behind you out of your sight again.
    The garment which you suddenly realise is a corset is wrapped around your waist and she clips it together at the front with ease.
    |teacher>["We're starting you off with a relatively gentle 5 and half inch waist reduction, I can talk that much higher if you give me cause too, I suggest you don't."]
    And with that you feel the lacing being pulled tight and the air being driven from your lungs, the only consolation being the weight of your
    breasts is now taken by the corset and not your chest skin.
    She continues to lace tighter, and tighter and you begin to have to concentrate on breathing nothing else seems important anymore.
    |teacher>["Only 5 inches, that's not good enough. You'll have to consider increasing your breast size to compensate, if you want avoid punishment."]
    You stuggle to think of what punishment could be worse than a tighter corset.., but the women has moved on. In the moments you were catching
    your breath and trying to work out what she meant, she has tied your ankles together somehow.
    |teacher>["Now for your uniform dress. "]
]

PLACEHOLDER:
The woman continues to take advantage and dresses you in a $uniformcolour $path corset & knickers and then a matching $path $uniformtype maid's dress.

CONTENT: TODO

:: Dynamic Styling code [footer]
(if: $used_throatsweet is 0)[(enchant: ?pcspeech, (text-colour:"DodgerBlue"))]\
(else:)[(enchant: ?pcspeech, (text-colour:"Plum")) (append: ?pcspeech's 1st)[ ( You find yourself surprised by your voice sounding all girly now. ) ]]\
(enchant: ?worriedthoughts , (text-style:"shudder") )\
(if: $sissyness > 50)[(enchant: ?worriedthoughts , (text-colour:"Plum") )]
(else:)[(enchant: ?worriedthoughts , (text-colour:"DodgerBlue"))]

:: Enrolled in Finishing school ending
TODO Double-click this passage to edit it.

:: Corridor Accidents
(if: $horniness > 95)[

TODO: Add sepecial too horny endig on impediament.s uch a forced visit
to mrs jones.

(set: $nextLessonNr=$nextLessonSaved)\
(display: $nextLessonNr)\
]\
(if: $bladder > 100)[(goto:"Pee in the corridor")]\
(else-if: $bladder > 65)[
(set: $nextLessonSaved=$nextLessonNr)\
(set: $nextLessonNr="Involuntary Return Path")\
You are so badly in need of a pee all you can think about is going to the
toilets.
|goto>[[[Goto the Toilets->Toilets]] ]
(link:"Ignore your bladder and risk an accident")[
(set: $nextLessonNr=$nextLessonSaved)\
(replace: ?goto)[]\
(display: $nextLessonNr)\
]]

:: Involuntary Return Path
(set: $nextLessonNr=$nextLessonSaved)\
(goto: $nextLessonNr)\

:: Pee in the corridor
The pressure on your bladder suddenly becomes too much for you to take, and you cannot help emptying you bladder right where you stand.

|text>[]

|end)[
[[Wake up->Nursery Ending]]
]
\
(if: $attire is "tutu")[(replace: ?text)[\
You can feel a warm patch spread through the tights and panties sown into the leotard of the tutu, but you can't see anything past the tutu skirt. Your embrassing situation is clearly noticeable to others as you hear a voice:
|teacher>["Well $girlCharacter I think it is clear now where the best place for use is."] You feel a prick at you neck, and it all goes dark. (show: ?end)
]]\
(else-if: $attire is "naked")[(replace: ?text)[\
\
(goto: "Involuntary Return Path")\
]]\
(else:)[(replace: ?text)[\
You watch helplessly as puddle starts to form between your feeet. Your panties start to feel warm from the piss soaking them. But worse of all you look up and see a teacher saw everything.

|teacher>["Well $girlCharacter I think it is clear now where the best place for you is."] You feel a prick at you neck, and it all goes dark. (show: ?end)
]]\
]]


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   width="265.74731"
   height="265.75"
   id="svg2"
   version="1.1"
   inkscape:version="0.48.5 r10040"
   sodipodi:docname="icon.svg">
  <defs
     id="defs4" />
  <sodipodi:namedview
     id="base"
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1.0"
     inkscape:pageopacity="0.0"
     inkscape:pageshadow="2"
     inkscape:zoom="0.7"
     inkscape:cx="50.171434"
     inkscape:cy="183.96838"
     inkscape:document-units="px"
     inkscape:current-layer="layer1"
     showgrid="false"
     inkscape:snap-to-guides="false"
     inkscape:window-width="1206"
     inkscape:window-height="741"
     inkscape:window-x="0"
     inkscape:window-y="0"
     inkscape:window-maximized="0"
     fit-margin-top="0"
     fit-margin-left="0"
     fit-margin-right="0"
     fit-margin-bottom="0" />
  <metadata
     id="metadata7">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title />
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <g
     inkscape:label="Layer 1"
     inkscape:groupmode="layer"
     id="layer1"
     transform="translate(-71.971426,-713.1875)">
    <text
       xml:space="preserve"
       style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
       x="66.571426"
       y="947.505"
       id="text2985"
       sodipodi:linespacing="125%"><tspan
         sodipodi:role="line"
         id="tspan2987"
         x="66.571426"
         y="947.505"
         style="font-size:300px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:American Typewriter;-inkscape-font-specification:American Typewriter">H</tspan></text>
    <path
       style="fill:none;stroke:#000000;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
       d="m 333.71429,720.36218 0,258.57143"
       id="path2989"
       inkscape:connector-curvature="0" />
  </g>
</svg>


code:
docs
Dockerfile
*.md
.githooks
.github
.goreleaser.yaml

repo_name: orochi/shiori

path: .dockerignore


code:
#!/bin/zsh -e

golint -set_exit_status ./...
go mod tidy -v

path: .githooks/pre-commit


code:
---
name: Bug report
about: Report problems with Shiori
title: One line description of the bug
labels: type:bug
assignees: ''

---

## Data
- **Shiori version**:
- **Database Engine**:
- **Operating system**:
- **CLI/Web interface/Web Extension**:

## Describe the bug / actual behavior
A clear and concise description of what the bug is.

## Expected behavior
A clear and concise description of what you expected to happen.

## To Reproduce
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

## Screenshots
If applicable, add screenshots to help explain your problem.

## Notes
Add any other context about the problem here.


code:
---
name: Feature request
about: PLEASE READ ISSUE
title: ''
labels: ''
assignees: ''

---

Please report feature requests in the [discussions section](https://github.com/go-shiori/shiori/discussions/categories/feature-requests).

Feature requests in issues would be likely moved on there until we plan to work on them somewhere in the future. Having them in discussions helps with the conversation and voting of future new features, as well as to keep the issues section clean and with items to address only.

Thank you.


code:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates

version: 2
updates:
  # Maintain dependencies for GitHub Actions
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "weekly"
    groups:
      all:
        patterns:
          - "*"

  # Maintain dependencies for Golang
  - package-ecosystem: "gomod"
    directory: "/"
    schedule:
      interval: "monthly"
    groups:
      all:
        patterns:
          - "*"


code:
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 30
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 10
# Issues with these labels will never be considered stale
exemptLabels:
- tag:no-stale
- type:bug
- type:enhancement
- type:documentation
# Label to use when marking an issue as stale
staleLabel: tag:stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
  This issue has been automatically marked as stale because it has not had any
  activity for quite some time.

  It will be closed if no further activity occurs.

  Thank you for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false

pulls:
  daysUntilStale: 10
  daysUntilClose: 10
  onlyLabels:
    - tag:stalebot


code:
name: "Build Docker"

on: workflow_call
jobs:
  buildx:
    runs-on: ubuntu-latest
    env:
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    name: Build Docker
    steps:
      - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
        with:
          fetch-depth: 0
      - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # 3.0.2
        with:
          name: dist
      - name: Prep binaries
        working-directory: .github/workflows/docker
        run: |
          mkdir binaries
          cp -r ../../../shiori_linux_* binaries/
          mv binaries/shiori_linux_arm_7 binaries/shiori_linux_arm
          mv binaries/shiori_linux_amd64_v1 binaries/shiori_linux_amd64
          gzip -d -S binaries/.gz__  -r .
          chmod 755 binaries/shiori_linux_*/shiori

      - name: Prepare master push tags
        if: github.event_name == 'push' && github.ref == 'refs/heads/master'
        run: |
          REPO=ghcr.io/${{ github.repository }}
          TAG=$(git describe --tags)
          if [ -z "$(git tag --points-at HEAD)" ] || [[ "$TAG" == *"rc"* ]]
          then
            TAG2="dev"
          else
            TAG2="latest"
          fi
          echo "tag_flags=--tag $REPO:$TAG --tag $REPO:$TAG2" >> $GITHUB_ENV

      - name: Prepare version push tags
        if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
        run: |
          REPO=ghcr.io/${{ github.repository }}
          TAG=$(git describe --tags)
          echo "tag_flags=--tag $REPO:$TAG --tag $REPO:dev" >> $GITHUB_ENV

      - name: Prepare pull request tags
        if: github.event_name == 'pull_request'
        run: |
          echo "tag_flags=--tag ${{ github.ref }}" >> $GITHUB_ENV
          REPO=ghcr.io/${{ github.repository }}
          echo "tag_flags=--tag $REPO:pr-${{ github.event.pull_request.number }}" >> $GITHUB_ENV

      - name: Buildx
        working-directory: .github/workflows/docker
        run: |
          set -x
          echo "${{ secrets.GITHUB_TOKEN }}" | docker login -u "${{ github.repository_owner }}" --password-stdin ghcr.io
          docker buildx create --use --name builder
          docker buildx build -f Dockerfile.ci --platform=linux/amd64,arm64,linux/arm/v7 --push ${{ env.tag_flags }} .


code:
name: Delete registry tag

on:
  workflow_call:
    inputs:
      tag_name:
        description: 'The docker tag to remove'
        required: true
        type: string

jobs:
  purge-image-tag:
    name: Delete image from ghcr.io
    runs-on: ubuntu-latest
    steps:
      - name: Delete image tag
        uses: bots-house/ghcr-delete-image-action@3827559c68cb4dcdf54d813ea9853be6d468d3a4 # v1.1.0
        with:
          owner: go-shiori
          name: shiori
          token: ${{ secrets.GITHUB_TOKEN }}
          tag: ${{ inputs.tag_name }}


code:
name: "golangci-lint"

on: workflow_call

permissions:
  contents: read
  pull-requests: read
jobs:
  golangci:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
      - name: golangci-lint
        uses: golangci/golangci-lint-action@3a919529898de77ec3da873e3063ca4b10e7f5cc # 3.7.0
        with:
          version: latest

          # Optional: working directory, useful for monorepos
          # working-directory: somedir

          # Optional: golangci-lint command line arguments.
          # args: --issues-exit-code=0

          # Optional: show only new issues if it's a pull request. The default value is `false`.
          only-new-issues: true

          # Optional: if set to true then the action will use pre-installed Go.
          # skip-go-installation: true

          # Optional: if set to true then the action don't cache or restore ~/go/pkg.
          # skip-pkg-cache: true

          # Optional: if set to true then the action don't cache or restore ~/.cache/go-build.
          # skip-build-cache: true