1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Modders Resource

Discussion in 'Tutorials' started by Doomknight, Jan 5, 2013.

  1. Doomknight

    Doomknight Guest

    After doing a bunch of datamining, I realize that there is a lot of stuff in the game that some modders may find very useful. So I've decided to post on the forums here several pages of variables (in spoilers for easier reading) for modders to use. Dunno what is or isn't useful as I'm not a modder myself. I'll be adding several replies initially to hold the pages (as there is a 65,000 character limit per post). I will list the variables as I see them in the directories within the SDT.swf file.

    I will try and group them up into "like-minded" catagories, and post interesting formulae that catches my eye. I'll add a comment or two for specific things that catches my eye with the variables. Use this resource as you like, share it, upload it, w/e. I just felt that itd be nice for modders to know what variables are available to them.
     
    aztlan likes this.
  2. Doomknight

    Doomknight Guest

    [DT]
    -> Some general variables. Also, part of the function provided is included in "settings.txt"
    public var preloaderBG:MenuBackground;
    public var preloadDisplay:PreloadDisplay;
    public var strandControl:StrandControl;
    public var soundControl:SoundControl;
    public var characterControl:CharacterControl;
    public var automaticControl:AutomaticControl;
    public var saveData:SaveData;
    public var customElementLoader:CustomElementLoader;
    public var bgLayer:Sprite;
    public var strandBackLayer:Sprite;
    public var strandBackMask:ScreenMask;
    public var sceneLayer:SceneLayer;
    public var strandFrontLayer:Sprite;
    public var strandFrontMask:ScreenMask;
    public var cumLayer:Sprite;
    public var cumLayerMask:ScreenMask;
    public var screenEffects:ScreenEffects;
    public var uiLayer:Sprite;
    public var menuLayer:Sprite;
    public var sceneMask:ScreenMask;
    public var her:Her;
    public var him:Him;
    public var himMask:HimMask;
    public var menuBG:MenuBackground;
    public var mainMenu:Menu;
    public var inGameMenu:InGameMenu;
    public var fadingBG:Boolean = false;
    public var clickPrompt:ClickPrompt;
    public var currentMousePos:Point;
    public var mouseScrollDeltas:Array;
    public var debug:TextField;
    public var debugBar:DebugBar;
    public var debugAnimationMode:uint = 0;
    public var HighlightFilter:Class;

    public function DT() : void
    {
    this.currentMousePos = new Point();
    this.mouseScrollDeltas = new Array();
    this.HighlightFilter = DT_HighlightFilter;
    addFrameScript(0, this.frame1);
    this.preloaderBG = new MenuBackground();
    addChild(this.preloaderBG);
    this.preloadDisplay = new PreloadDisplay();
    this.preloadDisplay.bar.scaleX = 0;
    this.preloadDisplay.x = 350;
    this.preloadDisplay.y = 300;
    addChild(this.preloadDisplay);
    this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, this.updatePreloader);
    this.loaderInfo.addEventListener(Event.COMPLETE, this.completePreloader);
    g.highlightShader = new Shader(new this.HighlightFilter() as ByteArray);
    g.highlight = new ShaderFilter(g.highlightShader);
    g.highlightShader.data.trans.value = [0.275];
    g.highlightShader.data.totMult.value = [0.2];
    g.cumHighlightShader = new Shader(new this.HighlightFilter() as ByteArray);
    g.cumHighlight = new ShaderFilter(g.cumHighlightShader);
    g.cumHighlightShader.data.trans.value = [1.1];
    g.cumHighlightShader.data.totMult.value = [0.5];
    this.saveData = g.newSaveData();
    try
    {
    this.initContextMenu();
    }
    catch (e:Error)
    {
    }
    return;
    }// end function

    [G]
    -> A whole bunch of different variables. Some are already in "settings.txt"
    public static var ver:String = "v1.19b";
    public static var defaultCM:ContextMenu;
    public static var screenSize:Point = new Point(700, 600);
    public static var container:Sprite;
    public static var her:Her;
    public static var him:Him;
    public static var himOverLayer:HimOverLayer;
    public static var bg:Background;
    public static var sceneLayer:SceneLayer;
    public static var backLayer:Sprite;
    public static var hairBackContainer:HairBackContainer;
    public static var mistLayer:Sprite;
    public static var strandBackLayer:Sprite;
    public static var strandFrontLayer:Sprite;
    public static var cumLayer:Sprite;
    public static var frontLayer:Sprite;
    public static var screenEffects:ScreenEffects;
    public static var stageRef:MovieClip;
    public static var clickPrompt:ClickPrompt;
    public static var inGameMenu:InGameMenu;
    public static var animationControl:AnimationControl;
    public static var strandControl:StrandControl;
    public static var soundControl:SoundControl;
    public static var automaticControl:AutomaticControl;
    public static var characterControl:CharacterControl;
    public static var saveData:SaveData;
    public static var customElementLoader:CustomElementLoader;
    public static var dialogueControl:Dialogue;
    public static var dialogueEditor:DialogueEditor;
    public static var highlightShader:Shader;
    public static var highlight:ShaderFilter;
    public static var cumHighlightShader:Shader;
    public static var cumHighlight:ShaderFilter;
    public static var shadow:DropShadowFilter;
    public static var spitShaders:Array;
    public static var cumShaders:Array;
    public static var hairCM:ColorMatrixFilter;
    public static var skinCM:ColorMatrixFilter;
    public static var gravity:Number = 5.5;
    public static var friction:Number = 1.18;
    public static var spitMass:Number = 0.4;
    public static var massGenerateSpeed:Number = 0.001;
    public static var massFlow:Number = 0.005;
    public static var maxMass:Number = 1.1;
    public static var maxStrandLength:uint = 18;
    public static var cumRGB:uint = 16776439;
    public static var currentBreathLevel:Number = 0;
    public static var breathLevelMax:Number = 50;
    public static var outOfBreathPoint:Number = 25;
    public static var strandShaders:Boolean = true;
    public static var showMouse:Boolean = true;
    public static var qualitySetting:uint = 2;
    public static var hoverOptions:Boolean = true;
    public static var mute:Boolean = false;
    public static var mirrored:Boolean = false;
    public static var invertControls:Boolean = false;
    public static var screenShotScale:Number = 1;
    public static var doubleSizeScreenshot:Boolean = false;
    public static var resetIntroOnNewChar:Boolean = false;
    public static var introResistance:Number;
    public static var defaultResistance:Number = 50;
    public static var throatResistance:Number;
    public static var defaultThroatResistance:Number = 50;
    public static var sceneZoom:Number = 0.85;
    public static var defaultZoom:Number = 0.45;
    public static var smearLipstick:Boolean = false;
    public static var spit:Boolean = true;
    public static var tears:Boolean = true;
    public static var mascara:Boolean = true;
    public static var smudging:Boolean = true;
    public static var eyeShadow:Boolean = true;
    public static var nostrilSpray:Boolean = true;
    public static var sweat:Boolean = true;
    public static var tongue:Boolean = true;
    public static var throatBulgeAmount:Number = 1;
    public static var dialogue:Boolean = false;
    public static var introSound:Boolean = true;
    public static var breathing:Boolean = true;
    public static var gagging:Boolean = true;
    public static var coughing:Boolean = true;
    public static var mascaraAmount:Number = 20;
    public static var frecklesAmount:Number = 0;
    public static var bgNum:uint = 4;
    public static var bgID:uint = 1;
    public static var himSkinType:String = "Light";
    public static var overwriteCharList:Boolean = false;
    public static var customName:String = "";
    public static var autoModeOn:Boolean = false;
    public static var autoMode:uint = 0;
    public static var handsOff:Boolean = false;
    public static var baseCharNum:uint;
    public static var storedChars:Array = new Array();
    public static var defaultModFolders:Array = new Array();
    public static var bukkakeMode:Boolean = false;
    public static var hairOverContainer:Sprite;
    public static var hairTop:MovieClip;
    public static var hairUnder:MovieClip;
    public static var hairBottom:MovieClip;
    public static var hairBack:MovieClip;
    public static var hairOverLayer:Sprite;
    public static var hairBetweenLayer:Sprite;
    public static var hairUnderLayer:Sprite;
    public static var hairBackLayer:Sprite;
    public static var hairCostumeOver:HairCostumeOver;
    public static var hairCostumeUnderOver:Sprite;
    public static var hairCostumeUnder:Sprite;
    public static var hairCostumeBack:HairCostumeBack;
    public static var costumeHitElements:Array = new Array();
    public static var currentPos:Point = new Point(0, 0);
    public static var herCurrentPos:Number = 0;
    public static var shiftDown:Boolean = false;
    public static var ctrlDown:Boolean = false;
    public static var herMouthOpeness:Number = 0;
    public static var penisOut:Boolean = false;
    public static var gameRunning:Boolean = false;
    public static var gamePaused:Boolean = false;
    public static var controlLocked:Boolean = false;
    public static var inTextField:Boolean = false;
    public static var overScrollArea:IMouseWheelScrollable;
    public static var smudgeCache:Dictionary = new Dictionary();
    public static var eyedropperScreenshot:BitmapData;
    public static var screenFreezeData:BitmapData;
    public static var screenFreeze:Bitmap;
    public static var totalFinishes:uint = 0;
    public static var capCount:uint = 0;
    public static var screenshotNum:uint = 1;
    public static var eraseParents:Array = new Array();

    [CHARACTER]
    -> This appears to allow you to create your default character which will always load. This code shows how the default SD Chan is loaded.
    package chars
    {
    import obj.*;

    public class Character extends Object
    {
    public var charName:String = "xxx";
    public var charShortName:String = "xxx";
    public var mood:String;
    public var skinType:uint = 0;
    public var noseType:uint = 0;
    public var eyebrowType:uint = 0;
    public var earType:String = "normal";
    public var iris:String = "normal";
    public var breastSize:uint = 70;
    public var hairTop:String = "SDChan";
    public var hairUnder:String = "SDChan";
    public var hairBack:String = "SDChan";
    public var hairBottom:String = "SDChan";
    public var costume:String = "SDChan";
    public var collar:uint = 1;
    public var collarFill:Object;
    public var collarFill2:Object;
    public var cuffs:uint = 1;
    public var cuffsFill:Object;
    public var headwear:String = "None";
    public var headwearFill:Object;
    public var headwearFill2:Object;
    public var earring:String = "None";
    public var earringFill:Object;
    public var bodyScale:Number = 1;
    public var armPos:String = "Back";
    public var irisFill:Object;
    public var eyebrowFill:Object;
    public var eyebrowLine:Object;
    public var scalpFill:Object;
    public var lipstickFill:Object;
    public var eyeShadow:Object;
    public var sclera:Object;
    public var blush:Object;
    public var freckles:Object;
    public var freckleAmount:Number = 0;
    public var mascara:Object;
    public var bg:uint = 3;
    public var gag:String = "none";
    public var armwearFill:Object;
    public var armwear:String = "none";
    public var legwearFill:Object;
    public var legwear:String = "none";
    public var footwearFill:Object;
    public var footwear:String = "none";
    public var pantiesFill:Object;
    public var panties:String = "none";
    public var braFill:Object;
    public var bra:String = "none";
    public var eyewear:String = "none";
    public var eyewearFill:Object;
    public var dialogue:String = "";
    public var defaultCostume:String = "";
    public var altCostume:String = "";

    public function Character() : void
    {
    this.mood = Her.NORMAL_MOOD;
    this.collarFill = {r:0, g:0, b:0, a:1};
    this.cuffsFill = {r:0, g:0, b:0, a:1};
    this.irisFill = {r:56, g:100, b:137, a:1};
    this.eyebrowFill = {r:89, g:67, b:51, a:1};
    this.eyebrowLine = {r:0, g:0, b:0, a:1};
    this.scalpFill = {r:211, g:158, b:90};
    this.lipstickFill = {r:0, g:0, b:0, a:0};
    this.eyeShadow = {r:55, g:26, b:99, a:1};
    this.sclera = {r:255, g:255, b:255, a:1};
    this.blush = {r:196, g:80, b:77, a:0.35};
    this.freckles = {r:60, g:24, b:24, a:0.8};
    this.mascara = {r:0, g:0, b:0, a:1};
    this.armwearFill = {r:0, g:0, b:0, a:1};
    this.legwearFill = {r:0, g:0, b:0, a:1};
    this.footwearFill = {r:0, g:0, b:0, a:1};
    this.pantiesFill = {r:255, g:255, b:255, a:1};
    this.braFill = {r:255, g:255, b:255, a:1};
    this.eyewearFill = {r:0, g:0, b:0, a:1};
    return;
    }// end function

    public function generateElements() : Array
    {
    return [];
    }// end function

    }
    }

    [SD CHAN]
    -> Here is an example of a character, SD Chan, the default character loaded.
    package chars
    {
    import flash.geom.*;
    import obj.*;

    public class SDChan extends Character
    {

    public function SDChan() : void
    {
    charName = "SD chan";
    charShortName = "SD chan";
    skinType = 0;
    iris = "normal";
    breastSize = 70;
    hairTop = "SDChan";
    hairUnder = "SDChan";
    hairBack = "SDChan";
    hairBottom = "SDChan";
    costume = "nude";
    irisFill = {r:56, g:100, b:137, a:1};
    eyebrowFill = {r:89, g:67, b:51, a:1};
    eyebrowLine = {r:0, g:0, b:0, a:1};
    scalpFill = {r:211, g:158, b:90};
    eyeShadow.a = 1;
    bg = 3;
    return;
    }// end function

    override public function generateElements() : Array
    {
    var _loc_1:* = new SDCHairLong();
    var _loc_2:* = new Rope(_loc_1, g.hairUnderLayer, new Point(-105, -193), null, 0, "right", 0, 0);
    var _loc_3:* = new SDCHairLong2();
    var _loc_4:* = new Rope(_loc_3, g.hairBackLayer, new Point(-50, -140));
    return [_loc_2, _loc_4];
    }// end function

    }
    }

    [ANCHOR PROP]
    -> This appears to register when the eye is hit by cum to close it.
    package obj
    {
    import flash.display.*;
    import flash.geom.*;

    public class AnchorProp extends Object
    {
    public var hit:Boolean = true;
    public var forceHit:Boolean;
    public var localPoint:Point;
    public var container:DisplayObject;
    public var originalHitTarget:DisplayObject;
    public var eyeHit:Boolean = false;

    public function AnchorProp(param1:Point = null, param2:DisplayObject = null, param3:Boolean = true) : void
    {
    this.localPoint = param1;
    this.container = param2;
    this.forceHit = param3;
    return;
    }// end function

    public function setContainer(param1:DisplayObject) : void
    {
    this.container = param1;
    if (this.originalHitTarget)
    {
    this.originalHitTarget = param1;
    }
    return;
    }// end function

    public function setOriginalHitTarget(param1:DisplayObject) : void
    {
    this.originalHitTarget = param1;
    return;
    }// end function

    public function setEyeHit() : void
    {
    this.eyeHit = true;
    return;
    }// end function

    public function get hitTarget() : DisplayObject
    {
    return this.originalHitTarget ? (this.originalHitTarget) : (this.container);
    }// end function

    public function clone() : AnchorProp
    {
    return new AnchorProp(this.localPoint.clone(), this.container, this.forceHit);
    }// end function

    }
    }
     
  3. Doomknight

    Doomknight Guest

    [STRAND CONTROL]
    -> Added entire formula, as the variables I don't think make sense without the formula present.
    package obj
    {
    import flash.display.*;
    import flash.geom.*;

    public class StrandControl extends Object
    {
    public var strands:Array;
    public var cumStrands:Array;
    public var lockedStrands:Array;
    public var maxStrands:uint = 20;

    public function StrandControl() : void
    {
    this.strands = new Array();
    this.cumStrands = new Array();
    this.lockedStrands = new Array();
    return;
    }// end function

    public function newStrand(param1:Sprite, param2:uint, param3:Number, param4:Object = null, param5:Object = null, param6:Boolean = false, param7:Point = null, param8:Boolean = false) : Strand
    {
    var _loc_9:* = new Strand(param1, param2, param3, param4, param5, param6, param8);
    new Strand(param1, param2, param3, param4, param5, param6, param8).instancePoints(param7);
    param1.addChild(_loc_9);
    this.strands.push(_loc_9);
    return _loc_9;
    }// end function

    public function checkElementAnchors(param1:DisplayObject) : void
    {
    var _loc_2:* = this.strands.concat(this.cumStrands);
    var _loc_3:* = _loc_2.length;
    var _loc_4:uint = 0;
    while (_loc_4 < _loc_3)
    {

    _loc_2[_loc_4].checkElementAnchors(param1);
    _loc_4 = _loc_4 + 1;
    }
    return;
    }// end function

    public function checkCostumeAnchors() : void
    {
    var _loc_1:* = this.strands.concat(this.cumStrands);
    var _loc_2:* = _loc_1.length;
    var _loc_3:uint = 0;
    while (_loc_3 < _loc_2)
    {

    _loc_1[_loc_3].checkCostumeAnchors();
    _loc_3 = _loc_3 + 1;
    }
    return;
    }// end function

    public function clearSpitStrands() : void
    {
    var _loc_1:* = this.strands.length;
    var _loc_2:uint = 0;
    while (_loc_2 < _loc_1)
    {

    this.strands[0].killMe();
    _loc_2 = _loc_2 + 1;
    }
    return;
    }// end function

    public function clearCumStrands() : void
    {
    var _loc_1:* = this.cumStrands.length;
    var _loc_2:uint = 0;
    while (_loc_2 < _loc_1)
    {

    this.cumStrands[0].killMe();
    _loc_2 = _loc_2 + 1;
    }
    var _loc_3:* = this.lockedStrands.length;
    _loc_2 = 0;
    while (_loc_2 < _loc_3)
    {

    this.lockedStrands[0].kill();
    _loc_2 = _loc_2 + 1;
    }
    return;
    }// end function

    public function smearStrands(param1:Point, param2:Number = 25) : void
    {
    var _loc_4:Strand = null;
    var _loc_3:* = this.strands.concat(this.cumStrands);
    for each (_loc_4 in _loc_3)
    {

    _loc_4.smear(param1, param2);
    }
    return;
    }// end function

    public function newCumStrand(param1:Point, param2:DisplayObject) : Strand
    {
    var _loc_3:* = new Strand(g.cumLayer, 1, g.randomCumMass());
    _loc_3.addSourceLink(param1, param2);
    g.cumLayer.addChild(_loc_3);
    this.cumStrands.push(_loc_3);
    return _loc_3;
    }// end function

    public function addStrand(param1:Strand, param2:Array, param3:Number) : void
    {
    var _loc_4:* = new Strand(param1.layer, 0, param3);
    new Strand(param1.layer, 0, param3).giveLinks(param2);
    _loc_4.age = param1.age;
    _loc_4.ageMax = param1.ageMax;
    _loc_4.cumStrand = param1.cumStrand;
    param1.layer.addChild(_loc_4);
    if (param1.cumStrand)
    {
    this.cumStrands.push(_loc_4);
    }
    else
    {
    this.strands.push(_loc_4);
    }
    _loc_4.distSplitDelay = 10;
    _loc_4.graphics.copyFrom(param1.graphics);
    return;
    }// end function

    public function delistStrand(param1:Strand) : void
    {
    var _loc_2:uint = 0;
    var _loc_3:uint = 0;
    var _loc_4:uint = 0;
    var _loc_5:uint = 0;
    if (param1.cumStrand)
    {
    _loc_2 = this.cumStrands.length;
    _loc_3 = 0;
    while (_loc_3 < _loc_2)
    {

    if (this.cumStrands[_loc_3] == param1)
    {
    this.cumStrands.splice(_loc_3, 1);
    break;
    }
    _loc_3 = _loc_3 + 1;
    }
    }
    else
    {
    _loc_4 = this.strands.length;
    _loc_5 = 0;
    while (_loc_5 < _loc_4)
    {

    if (this.strands[_loc_5] == param1)
    {
    this.strands.splice(_loc_5, 1);
    break;
    }
    _loc_5 = _loc_5 + 1;
    }
    }
    return;
    }// end function

    public function delistLockedStrand(param1:LockedStrand) : void
    {
    var _loc_2:* = this.lockedStrands.length;
    var _loc_3:uint = 0;
    while (_loc_3 < _loc_2)
    {

    if (this.lockedStrands[_loc_3] == param1)
    {
    this.lockedStrands.splice(_loc_3, 1);
    break;
    }
    _loc_3 = _loc_3 + 1;
    }
    return;
    }// end function

    public function maxPop() : Boolean
    {
    if (this.strands.length >= this.maxStrands)
    {
    return true;
    }
    return false;
    }// end function

    }
    }

    [STRAND LINK]
    -> Further controls for strands
    public var speed:Point;
    public var mass:Number;
    public var density:Number;
    public var minMass:Number = 0.01;
    public var minDensity:Number = 0.2;
    public var anchorAge:uint;
    public var collisionFree:uint;
    public var onEye:Boolean = false;
    public var anchorObject:AnchorProp;
    public var anchored:Boolean = false;
    public var anchorDelay:int = 0;
    public var isJustAnchored:Boolean = false;
    public var sourceLink:Boolean = false;
    public var onTongue:Boolean = false;
    public var freed:Boolean = false;
    public var globalAnchorPoint:Point;
    public var slideOnAnchor:Boolean = false;
    public var anchorSliding:Boolean = false;
    public var anchorSlideCounter:uint = 0;
    public var anchorSlideMax:uint = 45;
    public var smearCounter:uint = 0;
    public var maxSmear:uint = 150;
    public var storedInterPoints:Object;
    public var hasStoredInterPoints:Boolean = false;
    public var generateMass:Boolean;
    public var neighbour1:StrandLink;
    public var neighbour2:StrandLink;
    public var neighbourVec:Point;
    public var neighbourAng:Number;
    public var flowMult:Number;
    public var isExpanded:Boolean = false;

    [ROPE LINK]
    -> No idea what this does.
    package obj
    {
    import flash.geom.*;

    public class RopeLink extends Point
    {
    public var speed:Point;
    public var friction:Number;
    public var mass:Number;
    public var lastPos:Point;

    public function RopeLink(param1:Number, param2:Number, param3:Number, param4:Number)
    {
    this.x = param1;
    this.y = param2;
    this.friction = param3;
    this.mass = param4;
    this.speed = new Point();
    this.lastPos = new Point();
    return;
    }// end function

    public function move(param1:Point) : void
    {
    this.lastPos.x = this.x;
    this.lastPos.y = this.y;
    this.x = this.x + param1.x * this.mass;
    this.y = this.y + param1.y * this.mass;
    return;
    }// end function

    }
    }

    [STRAND]
    -> More variables for strands.
    public var layer:Sprite;
    public var strandLength:Number;
    public var links:Array;
    public var alive:Boolean;
    public var age:uint;
    public var ageMax:uint = 600;
    public var myGravity:Number;
    public var interPoints:Array;
    public var offsetPoints:Array;
    public var topCap:Point;
    public var bottomCap:Point;
    public var maxInterpDist:Number = 1000;
    public var topAnchor:Object;
    public var topAttached:Boolean;
    public var bottomAnchor:Object;
    public var bottomAttached:Boolean;
    public var topSource:Boolean;
    public var lM:Number;
    public var disappearOnAllAnchor:Boolean;
    public var sourceLink:StrandLink;
    public var cumStrand:Boolean = false;
    public var moveSmoothing:Number = 8;
    public var maxDist:Number = 120;
    public var distSplitDelay:uint;
    public var collisionFree:uint = 0;

    [LOCKED STRAND]
    -> No idea what this does.
    package obj
    {
    import flash.display.*;
    import flash.events.*;

    public class LockedStrand extends MovieClip
    {
    public var strandBitmap:Bitmap;
    public var container:Object;
    public var step:uint = 0;

    public function LockedStrand(param1:BitmapData, param2:Object) : void
    {
    this.strandBitmap = new Bitmap(param1);
    this.addChild(this.strandBitmap);
    this.container = param2;
    this.addEventListener(Event.ENTER_FRAME, this.tick);
    return;
    }// end function

    public function tick(event:Event) : void
    {
    if (this.step >= 10)
    {
    this.step = 0;
    if (this.alpha > 0)
    {
    this.alpha = this.alpha - 0.00025;
    }
    else
    {
    this.kill();
    }
    }
    else
    {
    var _loc_2:String = this;
    var _loc_3:* = this.step + 1;
    _loc_2.step = _loc_3;
    }
    return;
    }// end function

    public function kill() : void
    {
    g.strandControl.delistLockedStrand(this);
    this.removeEventListener(Event.ENTER_FRAME, this.tick);
    this.parent.removeChild(this);
    return;
    }// end function

    }
    }

    [ROPE]
    -> No idea what this does.
    public var ropeGraphic:MovieClip;
    public var ropeLength:uint;
    public var segLength:Array;
    public var segNum:Number = 4;
    public var links:Array;
    public var segments:Array;
    public var widthEstimates:Array;
    public var mass:Number = 20;
    public var friction:Number = 0.9;
    public var damping:Number = 0.595;
    public var topLocked:Boolean = false;
    public var topDamping:Number;
    public var topRotationLocked:Boolean = false;
    public var topRotationTarget:DisplayObjectContainer;
    public var subScaling:Point;
    public var anchorContainer:Object;
    public var anchorPoint:Point;
    public var lastAnchor:Point;
    public var currentAnchor:Point;
    public var impulse:Point;
    public var collisionImpulse:Point;
    public var gOffset:Number;
    public var gravityDirection:Point;
    public var leftLimited:Boolean = false;
    public var leftLimitedMultiplier:Number = 0;
    public var rightLimited:Boolean = false;
    public var rightLimitedMultiplier:Number = 0;
    public var collisionImpulses:Array;
    public var leftLimit:uint;
    public var rightLimit:uint;
    public var hairCollisionTest:Boolean = false;
     
  4. Doomknight

    Doomknight Guest

    [CHARACTER CONTROL, Part 1]
    -> Split this up into parts for easier reading.
    public var characters:Array;
    public var currentChar:uint = 0;
    public var defaultCharOrder:Array;
    public var currentName:String = "";
    public var currentHair:uint;
    public var currentIris:uint;
    public var currentSkin:uint;
    public var currentNose:uint;
    public var currentEar:uint;
    public var currentEyebrows:uint;
    public var irisRGB:Object;
    public var lipstickRGB:Object;
    public var eyebrowFillRGB:Object;
    public var eyebrowLineRGB:Object;
    public var eyeShadowRGB:Object;
    public var scleraRGB:Object;
    public var blushRGB:Object;
    public var frecklesRGB:Object;
    public var mascaraRGB:Object;
    public var nailPolishRGB:Object;
    public var breastSize:uint = 0;
    public var collarNameList:Array;
    public var gagNameList:Array;
    public var cuffsNameList:Array;
    public var ankleCuffsNameList:Array;
    public var pantiesNameList:Array;
    public var armwearNameList:Array;
    public var legwearNameList:Array;
    public var bottomsNameList:Array;
    public var footwearNameList:Array;
    public var eyewearNameList:Array;
    public var topNameList:Array;
    public var braNameList:Array;
    public var tonguePiercingNameList:Array;
    public var nipplePiercingNameList:Array;
    public var bellyPiercingNameList:Array;
    public var earringNameList:Array;
    public var headwearNameList:Array;
    public var collarControl:CharacterElementHelper;
    public var gagControl:CharacterElementHelper;
    public var cuffsControl:CharacterElementHelper;
    public var ankleCuffsControl:CharacterElementHelper;
    public var eyewearControl:CharacterElementHelper;
    public var pantiesControl:CharacterElementHelper;
    public var armwearControl:CharacterElementHelper;
    public var legwearControl:CharacterElementHelper;
    public var legwearBControl:CharacterElementHelper;
    public var bottomsControl:CharacterElementHelper;
    public var footwearControl:CharacterElementHelper;
    public var topControl:CharacterElementHelper;
    public var braControl:CharacterElementHelper;
    public var tonguePiercingControl:CharacterElementHelper;
    public var nipplePiercingControl:CharacterElementHelper;
    public var bellyPiercingControl:CharacterElementHelper;
    public var earringControl:CharacterElementHelper;
    public var headwearControl:CharacterElementHelper;
    public var blankHSL:Object;
    public var hairHSL:Object;
    public var skinHSL:Object;
    public var hisSkinHSL:Object;
    public var skinNameList:Array;
    public var skinPalettes:Dictionary;
    public var scalpFills:Array;
    public var irisTypeList:Array;
    public var breastOffset:Array;
    public var currentBreastOffset:Number;
    public var browOffsets:Array;
    public var lipOffsets:Array;
    public var currentSkinType:String;
    public var currentElements:Array;
    public var currentElementsStatus:Array;
    public var customHairLoaded:Boolean = false;
    public var customBGLoaded:Boolean = false;
    public var componentsRegistered:Boolean = false;
    public var braChangeListeners:Array;
    public var breastSizeChangeListeners:Array;
    public var waitingToSetHeadwearPosition:Boolean = false;
    public static var noseTypeList:Array = ["Normal", "Pointed", "Wedge"];
    public static var earTypeList:Array = ["Normal", "Elf", "Small"];
    public static var eyebrowsTypeList:Array = ["Normal", "Crescent", "Lines"];

    [CHARACTER CONTROL, Part 2]
    -> This appears to show what will appear in each dropdown menu. May help avid modders get there mod to show up on the lists in the game.
    public function CharacterControl() : void
    {
    this.currentHair = this.currentChar;
    this.irisRGB = {r:0, g:0, b:0, a:0};
    this.lipstickRGB = {r:0, g:0, b:0, a:0};
    this.eyebrowFillRGB = {r:0, g:0, b:0, a:0};
    this.eyebrowLineRGB = {r:0, g:0, b:0, a:0};
    this.eyeShadowRGB = {r:0, g:0, b:0, a:0};
    this.scleraRGB = {r:0, g:0, b:0, a:0};
    this.blushRGB = {r:0, g:0, b:0, a:0};
    this.frecklesRGB = {r:0, g:0, b:0, a:0};
    this.mascaraRGB = {r:0, g:0, b:0, a:0};
    this.nailPolishRGB = {r:0, g:0, b:0, a:0};
    this.collarNameList = ["None", "Leather", "Tie", "Gem Choker"];
    this.gagNameList = ["None", "Ring", "Dental", "Tube"];
    this.cuffsNameList = ["None", "Leather", "Shirt"];
    this.ankleCuffsNameList = ["None", "Leather", "Panties", "Left Ribbon", "Right Ribbon", "Left Anklet", "Right Anklet"];
    this.pantiesNameList = ["None", "Briefs", "Bikini", "Thong", "Side Tie", "High Leg"];
    this.armwearNameList = ["None", "Wrist Glove", "Elbow Glove"];
    this.legwearNameList = ["None", "Short Sock", "Sock", "Kneehigh", "Overknee", "Thighhigh", "Pantyhose", "Striped Short Sock", "Striped Sock", "Striped Kneehigh", "Striped Overknee", "Striped Thighhigh", "Latex Thighhigh", "Garter Belt", "Left Garter", "Right Garter"];
    this.bottomsNameList = ["None", "Skirt", "Bike Shorts", "Boyshorts", "Jeans", "Jean Shorts", "Miniskirt"];
    this.footwearNameList = ["None", "Highheel", "School"];
    this.eyewearNameList = ["None", "Mari", "Pince Nez", "Blindfold", "Leather"];
    this.topNameList = ["None", "T-Shirt", "Tank", "Cropped", "Cropped Tank", "Shirt"];
    this.braNameList = ["None", "Bra", "Bikini"];
    this.tonguePiercingNameList = ["None", "Barbell", "Double", "Ring"];
    this.nipplePiercingNameList = ["None", "Barbell", "Ring", "Large Ring", "Weight"];
    this.bellyPiercingNameList = ["None", "Stud", "Ring", "Gem"];
    this.earringNameList = ["None", "Stud", "Ring", "Ball", "Teardrop", "Feather"];
    this.headwearNameList = ["None", "Cat Ears", "Bat Wings", "Band", "Ox Horns", "Peach\'s Crown", "Noel\'s Cap", "Zelda\'s Circlet"];
    this.blankHSL = {h:0, s:1, l:1, c:1};
    this.hairHSL = this.blankHSL;
    this.skinHSL = this.blankHSL;
    this.hisSkinHSL = this.blankHSL;
    this.skinNameList = [SkinPalette.LIGHT_SKIN, SkinPalette.PALE_SKIN, SkinPalette.TAN_SKIN, SkinPalette.DARK_SKIN];
    this.scalpFills = [{r:227, g:189, b:168}, {r:222, g:202, b:191}, {r:241, g:182, b:138}, {r:118, g:79, b:52}];
    this.irisTypeList = ["Normal", "Bright", "Solid", "Blank", "Wide", "Sharp", "Flat", "Cat", "Swirl"];
    this.breastOffset = [2, 152, 302, 452, 602];
    this.currentBreastOffset = this.breastOffset[0];
    this.browOffsets = [0, 199, 399, 599];
    this.lipOffsets = [2, 82, 162, 242];
    this.currentSkinType = g.dataName(this.skinNameList[0]);
    this.braChangeListeners = new Array();
    this.breastSizeChangeListeners = new Array();
    this.characters = new Array();
    this.characters[0] = new SDChan();
    this.characters[1] = new SDChan2();
    this.characters[2] = new Asuka();
    this.characters[3] = new Rei();
    this.characters[4] = new Mari();
    this.characters[5] = new Misato();
    this.characters[6] = new Ino();
    this.characters[7] = new JillValentine();
    this.characters[8] = new Samus();
    this.characters[9] = new Misty();
    this.characters[10] = new Peach();
    this.characters[11] = new Noel();
    this.characters[12] = new Android18();
    this.characters[13] = new Seras();
    this.characters[14] = new TifaLockhart();
    this.characters[15] = new ZeldaTP();
    this.characters[16] = new ZeldaSS();
    this.characters[17] = new Rikku();
    this.characters[18] = new Nami();
    this.characters[19] = new HatsuneMiku();
    this.characters[20] = new Morrigan();
    this.characters[21] = new ChunLi();
    this.defaultCharOrder = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 15, 18, 19, 20, 21];
    g.baseCharNum = this.characters.length;
    this.skinPalettes = new Dictionary();
    this.skinPalettes[SkinPalette.LIGHT_SKIN] = new SkinPalette(16178890, 14925224, 13541515, 11306097, 13014407, 10974573);
    this.skinPalettes[SkinPalette.PALE_SKIN] = new SkinPalette(16050399, 14600895, 13151647, 10126976, 11509658, 9994117, 0.6);
    this.skinPalettes[SkinPalette.TAN_SKIN] = new SkinPalette(15916214, 15840906, 14000248, 11962728, 15383719, 14781802);
    this.skinPalettes[SkinPalette.DARK_SKIN] = new SkinPalette(10053953, 7753524, 5519398, 4467227, 5451558, 4465690, 0.6);
    this.collarControl = new CharacterElementHelper(this.collarNameList, this.setCollar, this.setCollarFill, this.findCollar);
    this.collarControl.setDefaultRGB("Gem Choker", null, new AlphaRGBObject(1, 255, 255, 255));
    this.collarControl.setDefaultRGB("Tie", null, new AlphaRGBObject(1, 232, 240, 255));
    this.gagControl = new CharacterElementHelper(this.gagNameList, this.setGag, this.setGagFill);
    this.cuffsControl = new CharacterElementHelper(this.cuffsNameList, this.setCuffs, this.setCuffsFill);
    this.cuffsControl.setDefaultRGB("Shirt", null, new AlphaRGBObject(1, 171, 177, 185));
    this.ankleCuffsControl = new CharacterElementHelper(this.ankleCuffsNameList);
    this.eyewearControl = new CharacterElementHelper(this.eyewearNameList, this.setEyewear, this.setEyewearFill);
    this.pantiesControl = new CharacterElementHelper(this.pantiesNameList, this.setPanties, this.setPantiesFill);
    this.armwearControl = new CharacterElementHelper(this.armwearNameList, this.setArmwear, this.setArmwearFill);
    this.legwearControl = new CharacterElementHelper(this.legwearNameList, this.setLegwearA, this.setLegwearFillA);
    this.legwearBControl = new CharacterElementHelper(this.legwearNameList, this.setLegwearB, this.setLegwearFillB);
    this.bottomsControl = new CharacterElementHelper(this.bottomsNameList, this.setBottoms, this.setBottomsFill);
    this.topControl = new CharacterElementHelper(this.topNameList, this.setTop, this.setTopFill);
    this.footwearControl = new CharacterElementHelper(this.footwearNameList, this.setFootwear, this.setFootwearFill);
    this.footwearControl.setDefaultRGB("School", null, new AlphaRGBObject(1, 254, 248, 238));
    this.footwearControl.setDefaultRGB("Highheel", null, new AlphaRGBObject(1, 0, 0, 0));
    this.braControl = new CharacterElementHelper(this.braNameList, this.setBra, this.setBraFill);
    this.tonguePiercingControl = new CharacterElementHelper(this.tonguePiercingNameList);
    this.tonguePiercingControl.setStartRGB(new AlphaRGBObject(1, 183, 187, 195));
    this.nipplePiercingControl = new CharacterElementHelper(this.nipplePiercingNameList);
    this.nipplePiercingControl.setStartRGB(new AlphaRGBObject(1, 183, 187, 195));
    this.bellyPiercingControl = new CharacterElementHelper(this.bellyPiercingNameList);
    this.bellyPiercingControl.setStartRGB(new AlphaRGBObject(1, 183, 187, 195));
    this.earringControl = new CharacterElementHelper(this.earringNameList);
    this.headwearControl = new CharacterElementHelper(this.headwearNameList);
    this.headwearControl.setDefaultRGB("Cat Ears", null, new AlphaRGBObject(1, 255, 255, 255));
    this.headwearControl.setDefaultRGB("Bat Wings", new AlphaRGBObject(1, 24, 24, 24), new AlphaRGBObject(1, 139, 42, 95));
    this.headwearControl.setDefaultRGB("Zelda\'s Circlet", new AlphaRGBObject(1, 179, 124, 55), new AlphaRGBObject(1, 62, 142, 193));
    this.headwearControl.setDefaultRGB("Noel\'s Cap", new AlphaRGBObject(1, 47, 56, 221), new AlphaRGBObject(1, 49, 100, 106));
    this.headwearControl.setDefaultRGB("Peach\'s Crown", new AlphaRGBObject(1, 255, 208, 25));
    this.headwearControl.setDefaultRGB("Ox Horns", new AlphaRGBObject(1, 239, 255, 248), new AlphaRGBObject(1, 254, 210, 26));
    this.headwearControl.registerListener(this.waitToSetHeadwearPosition);
    return;
    }// end function

    [COSTUME ELEMENT]
    ´╗┐package obj
    {
    import __AS3__.vec.*;
    import flash.display.*;
    import flash.events.*;
    import flash.geom.*;

    public class CostumeElement extends Sprite
    {
    public var showing:Boolean = true;
    public var toggleable:Boolean = true;
    public var linkedTo:Vector.<CostumeElement>;
    public var linked:Boolean = false;
    public var dynamicAnchored:Boolean = false;
    public var anchorContainer:Object;
    public var anchorPoint:Point;
    public var currentAnchor:Point;

    public function CostumeElement() : void
    {
    this.linkedTo = new Vector.<CostumeElement>;
    this.mouseChildren = false;
    this.addEventListener(MouseEvent.CLICK, this.clicked);
    return;
    }// end function

    public function makeUnToggleable() : void
    {
    this.toggleable = false;
    this.removeEventListener(MouseEvent.CLICK, this.clicked);
    return;
    }// end function

    public function dynamicAnchor(param1:Number, param2:Number, param3:Object) : void
    {
    this.anchorContainer = param3;
    this.dynamicAnchored = true;
    this.anchorPoint = new Point(param1, param2);
    this.addEventListener(Event.ENTER_FRAME, this.tick);
    return;
    }// end function

    public function tick(event:Event) : void
    {
    if (this.dynamicAnchored)
    {
    this.currentAnchor = g.sceneLayer.globalToLocal(this.anchorContainer.localToGlobal(this.anchorPoint));
    this.x = this.currentAnchor.x;
    this.y = this.currentAnchor.y;
    this.rotation = this.anchorContainer.rotation;
    }
    return;
    }// end function

    public function showingString() : String
    {
    if (this.showing)
    {
    return "1";
    }
    return "0";
    }// end function

    public function tryToHide() : void
    {
    var _loc_1:CostumeElement = null;
    if (this.toggleable)
    {
    this.hideMe();
    if (this.linked)
    {
    for each (_loc_1 in this.linkedTo)
    {

    _loc_1.hideMe();
    }
    }
    }
    return;
    }// end function

    public function hideMe() : void
    {
    this.alpha = 0;
    this.showing = false;
    return;
    }// end function

    public function showMe() : void
    {
    this.alpha = 1;
    this.showing = true;
    return;
    }// end function

    public function linkTo(param1:CostumeElement, param2:Boolean = false) : void
    {
    this.linkedTo.push(param1);
    this.linked = true;
    if (param2)
    {
    param1.addEventListener(MouseEvent.CLICK, this.clicked);
    }
    return;
    }// end function

    public function clicked(event:MouseEvent) : void
    {
    var _loc_2:CostumeElement = null;
    if (this.toggleable && g.shiftDown)
    {
    if (this.showing)
    {
    this.hideMe();
    if (this.linked)
    {
    for each (_loc_2 in this.linkedTo)
    {

    _loc_2.hideMe();
    }
    }
    }
    else
    {
    this.showMe();
    if (this.linked)
    {
    for each (_loc_2 in this.linkedTo)
    {

    _loc_2.showMe();
    }
    }
    }
    dispatchEvent(new Event("toggled"));
    }
    return;
    }// end function

    public function kill() : void
    {
    var _loc_1:CostumeElement = null;
    if (this.toggleable)
    {
    this.makeUnToggleable();
    }
    if (this.dynamicAnchored)
    {
    this.removeEventListener(Event.ENTER_FRAME, this.tick);
    }
    for each (_loc_1 in this.linkedTo)
    {

    _loc_1.removeEventListener(MouseEvent.CLICK, this.clicked);
    }
    if (this.parent)
    {
    this.parent.removeChild(this);
    }
    return;
    }// end function

    }
    }
     
  5. Doomknight

    Doomknight Guest

    [AUTOMATIC CONTROL, Part 1]
    -> Variables for controlling "Auto" modes available.
    public var t:uint = 0;
    public var nextModeTimer:int = 0;
    public var randomMode:Function;
    public var transitioning:Boolean = false;
    public var transitionSpeed:Number = 0.01;
    public var modeRatio:Number;
    public var currentPos:Point;
    public var lastPos:Point;
    public var currentPenisTipPos:Number = 0;
    public var fullLength:Number = 1;
    public var lastMode:Function;
    public var currentMode:Function;
    public var singleAction:Function;
    public var waitingForSingleAction:Boolean = false;
    public var singleActionTimer:uint = 0;
    public var singleActionTime:uint = 0;
    public var standardModes:Array;
    public var softModes:Array;
    public var hardModes:Array;
    public var selfModes:Array;
    public var currentSelfModes:Array;
    public var singleActions:Array;
    public var happySingleActions:Array;
    public var singleActionModes:Dictionary;
    public var lastModeNo:uint;
    public var offTilt:Number = 0;
    public var offTiltTarget:Number = 0;
    public var offTiltChangeTimer:uint = 0;
    public var ejaculatingModes:Array;
    public var normalEjacModes:Array;
    public var hardEjacModes:Array;
    public var softEjacModes:Array;
    public var selfEjacModes:Array;
    public var lastEjacMode:Function;
    public var deepthroatTarget:Number = 0;
    public var deepthroatProgress:Number = 0;
    public var usingDeepSlow:Boolean = false;
    public var usingFullSlow:Boolean = false;
    public static var autoModeNameList:Array = ["Normal", "Soft", "Hard", "Self"];

    [AUTOMATIC CONTROL, Part 2]
    public function AutomaticControl() : void
    {
    this.currentPos = new Point(0, 0);
    this.lastPos = new Point(0, 0);
    this.standardModes = new Array();
    this.standardModes[0] = this.holdDown;
    this.standardModes[1] = this.activeHoldDown;
    this.standardModes[2] = this.offHold;
    this.standardModes[3] = this.fullSlow;
    this.standardModes[4] = this.fullFast;
    this.standardModes[5] = this.deepFast;
    this.standardModes[6] = this.shallowSlow;
    this.standardModes[7] = this.shallowMedium;
    this.standardModes[8] = this.shallowFast;
    this.standardModes[9] = this.mediumSlow;
    this.standardModes[10] = this.tipToDeepMedium;
    this.standardModes[11] = this.mediumFast;
    this.softModes = new Array();
    this.softModes[0] = this.offHold;
    this.softModes[1] = this.shallowSlow;
    this.softModes[2] = this.shallowMedium;
    this.softModes[3] = this.mediumSlow;
    this.softModes[4] = this.tipToDeepMedium;
    this.softModes[5] = this.tipToDeepSlow;
    this.hardModes = new Array();
    this.hardModes[0] = this.holdDown;
    this.hardModes[1] = this.activeHoldDown;
    this.hardModes[2] = this.offHold;
    this.hardModes[3] = this.fullFast;
    this.hardModes[4] = this.deepFast;
    this.hardModes[5] = this.shallowFast;
    this.hardModes[6] = this.mediumFast;
    this.hardModes[7] = this.tipToDeepFast;
    this.hardModes[8] = this.fullSlam;
    this.hardModes[9] = this.hiltMove;
    this.selfModes = new Array();
    this.selfModes[0] = this.offHold;
    this.selfModes[1] = this.shallowSlow;
    this.selfModes[2] = this.shallowMedium;
    this.selfModes[3] = this.shallowMedium;
    this.selfModes[4] = this.mediumSlow;
    this.selfModes[5] = this.tipToDeepSlow;
    this.selfModes[6] = this.tipToDeepMedium;
    this.selfModes[7] = this.tipToDeepMedium;
    this.selfModes[8] = this.tipHold;
    this.selfModes[9] = this.outsideLickBalls;
    this.singleActions = new Array();
    this.singleActions[0] = this.oneDeep;
    this.happySingleActions = new Array();
    this.happySingleActions[0] = this.waggleEyebrows;
    this.happySingleActions[1] = this.waggleEyebrowsWithTongue;
    this.happySingleActions[2] = this.oneDeep;
    this.singleActionModes = new Dictionary();
    this.singleActionModes[this.waggleEyebrows] = this.offHold;
    this.singleActionModes[this.waggleEyebrowsWithTongue] = this.offHold;
    this.singleActionModes[this.oneDeep] = this.offHold;
    this.normalEjacModes = new Array();
    this.normalEjacModes[0] = this.activeHoldDown;
    this.normalEjacModes[1] = this.shallowHold;
    this.normalEjacModes[2] = this.offHold;
    this.normalEjacModes[3] = this.offHold;
    this.softEjacModes = new Array();
    this.softEjacModes[0] = this.shallowHold;
    this.softEjacModes[1] = this.offHold;
    this.softEjacModes[2] = this.offHold;
    this.hardEjacModes = new Array();
    this.hardEjacModes[0] = this.activeHoldDown;
    this.hardEjacModes[1] = this.shallowHold;
    this.hardEjacModes[2] = this.offHold;
    this.hardEjacModes[3] = this.offHold;
    this.hardEjacModes[4] = this.hiltMove;
    this.selfEjacModes = new Array();
    this.selfEjacModes[0] = this.tipHold;
    this.selfEjacModes[1] = this.shallowHold;
    this.selfEjacModes[2] = this.offHold;
    this.selfEjacModes[3] = this.offHold;
    this.currentMode = this.noMovement;
    this.ejaculatingModes = this.normalEjacModes;
    this.randomMode = this.standardAuto;
    EventBus.addListener("penisTipPosChanged", this.updatePenisTipPos);
    return;
    }// end function
     
  6. Doomknight

    Doomknight Guest

    [SCENE LAYER]

    public var camera:Point;
    public var magnitude:Point;
    public var shaking:Boolean = false;
    public var t:uint = 0;
    public var externalLayers:Array;
    public var currentZoom:Number;
    public var targetZoom:Number;
    public var zooming:Boolean = false;
    public var extendedBackgroundHeight:Number = 825;
    public var backgroundHeight:Number = 825;
    public var bgYLimit:Number;
     
  7. Doomknight

    Doomknight Guest

    [SWEAT]
    public var nearDist:Number = 4;
    public var freeGravity:Number = 3;
    public var attachedGravity:Number = 0.15;
    public var friction:Number = 0.9;
    public var predictDist:Number = 0.8;
    public var sweatParent:DisplayObjectContainer;
    public var parentsToCheck:Array;
    public var parentChildren:Array;
    public var onChild:DisplayObjectContainer;
    public var notOnParent:Boolean;
    public var attached:Boolean = false;
    public var dripping:Boolean = false;
    public var justDetached:Boolean = false;
    public var localPoint:Point;
    public var speed:Point;
    public var globalPoint:Point;
    public var predictToggle:uint = 0;
    public var gVec:Point;
    public var sVec:Point;
    public var lastVelocity:Number = 0;
    public var velocity:Number;
    public var mass:Number = 0.1;
    public var maxMass:Number = 1.2;
    public var leftPush:Number = 0;
    public var rightPush:Number = 0;
    public static var debug:Sprite;
    public static var MAX_DROPLETS:uint = 50;
    public static var currentDroplets:uint = 0;
    public static var parentPos:Dictionary;
    public static var parentLastPos:Dictionary;
    public static var parentSpeed:Dictionary;
    public static var parentLastSpeed:Dictionary;
    public static var parentAccel:Dictionary;
    public static var parentDown:Dictionary;
    public static var sweatGroups:Dictionary;
    public static var staticPrepComplete:Boolean = false;
    public static var staticTickDone:Boolean = false;

    [DROPLET]
    package obj
    {
    import flash.display.*;
    import flash.events.*;
    import flash.geom.*;

    public class Droplet extends MovieClip
    {
    public var speed:Point;
    public var padding:Number = 30;
    public var sizeFactor:Number;
    public var sizeDecrease:Number;

    public function Droplet(param1:Point, param2:Point, param3:Number, param4:Number = 0.2, param5:Number = 1, param6:Boolean = false) : void
    {
    if (param6)
    {
    this.gotoAndStop("cum");
    }
    else
    {
    this.stop();
    }
    this.alpha = param5;
    this.x = param1.x;
    this.y = param1.y;
    this.speed = param2.clone();
    this.sizeFactor = param3;
    this.sizeDecrease = param4;
    var _loc_7:* = g.getAngle(this.speed.x, this.speed.y);
    var _loc_8:* = Math.sqrt(this.speed.x * this.speed.x + this.speed.y * this.speed.y);
    this.rotation = _loc_7;
    this.scaleY = Math.min(6, Math.max(1, _loc_8 / 10)) * this.sizeFactor;
    this.scaleX = this.sizeFactor;
    this.addEventListener(Event.ENTER_FRAME, this.tick);
    return;
    }// end function

    public function tick(event:Event) : void
    {
    this.speed.x = this.speed.x / g.friction;
    this.speed.y = this.speed.y / g.friction;
    this.x = this.x + this.speed.x;
    this.y = this.y + (this.speed.y + g.gravity);
    var _loc_2:* = g.getAngle(this.speed.x, this.speed.y);
    var _loc_3:* = Math.sqrt(this.speed.x * this.speed.x + this.speed.y * this.speed.y);
    this.rotation = _loc_2;
    this.scaleY = Math.min(6, Math.max(1, _loc_3 / 10)) * this.sizeFactor;
    this.scaleX = this.sizeFactor;
    this.sizeFactor = this.sizeFactor - this.sizeDecrease;
    if (this.x < -this.padding || this.x > g.screenSize.x + this.padding)
    {
    this.killMe();
    }
    else if (this.y > g.screenSize.y + this.padding)
    {
    this.killMe();
    }
    else if (this.sizeFactor <= 0)
    {
    this.killMe();
    }
    return;
    }// end function

    public function killMe() : void
    {
    this.removeEventListener(Event.ENTER_FRAME, this.tick);
    this.parent.removeChild(this);
    return;
    }// end function

    }
    }

    [TEAR POINT]
    -> The point where Tears come from.
    package obj.her
    {
    import flash.geom.*;

    public class TearPoint extends Point
    {
    public var speedMult:Number = 1;
    public var alphaMult:Number = 1;
    public var scaling:Number = 1;
    public var age:uint = 0;
    public var mascaraTime:Number;
    public var hasMascara:Boolean;

    public function TearPoint(param1:Number, param2:Number, param3:Number) : void
    {
    super(param1, param2);
    this.speedMult = param3;
    this.alphaMult = param3;
    if (Math.random() > Math.max(0.2, 1 - g.mascaraAmount * 0.015))
    {
    this.hasMascara = true;
    }
    else
    {
    this.hasMascara = false;
    }
    if (Math.random() > 0.96 - g.mascaraAmount * 0.008)
    {
    this.mascaraTime = Math.random() * 100 + 200;
    }
    else
    {
    this.mascaraTime = Math.random() * 50 + 50;
    }
    this.mascaraTime = 1 / this.mascaraTime;
    return;
    }// end function

    public function tick() : Boolean
    {
    var _loc_1:String = this;
    var _loc_2:* = this.age + 1;
    _loc_1.age = _loc_2;
    this.speedMult = this.speedMult - 0.005;
    this.alphaMult = this.alphaMult - 0.005;
    if (this.speedMult <= 0 || this.alphaMult <= 0)
    {
    return false;
    }
    return true;
    }// end function

    public function getAge() : Number
    {
    return this.age * this.mascaraTime;
    }// end function

    }
    }

    [BREATH MIST]
    -> Controls on how her Breast mist works, I think.
    package obj.her
    {
    import flash.display.*;
    import flash.events.*;
    import flash.geom.*;

    public class BreathMist extends Sprite
    {
    public var speed:Point;
    public var angSpeed:Number;
    public var fadingIn:Boolean;
    public var maxAlpha:Number;

    public function BreathMist() : void
    {
    var _loc_1:* = Math.random() * (g.breathLevel / 40) + 3;
    var _loc_2:* = Math.random() * 2 - 1.2;
    this.speed = new Point(_loc_1, _loc_2);
    this.angSpeed = (Math.random() - 0.5) / 10;
    this.rotation = Math.random() * 360;
    this.alpha = 0;
    var _loc_3:* = 0.3 + Math.random() / 5;
    this.scaleX = _loc_3;
    this.scaleY = _loc_3;
    this.maxAlpha = Math.min(1, g.breathLevel / g.outOfBreathPoint) / 5;
    this.fadingIn = true;
    this.addEventListener(Event.ENTER_FRAME, this.tick);
    return;
    }// end function

    public function tick(event:Event) : void
    {
    this.x = this.x + this.speed.x;
    this.y = this.y + this.speed.y;
    this.scaleX = this.scaleX + 0.01;
    this.scaleY = this.scaleY + 0.01;
    this.rotation = this.rotation + this.angSpeed;
    if (this.fadingIn)
    {
    this.alpha = this.alpha + 0.1;
    if (this.alpha >= this.maxAlpha)
    {
    this.fadingIn = false;
    }
    }
    else
    {
    this.alpha = this.alpha - 0.005;
    if (this.alpha <= 0)
    {
    this.removeEventListener(Event.ENTER_FRAME, this.tick);
    this.parent.removeChild(this);
    }
    }
    return;
    }// end function

    }
    }

    [TEARS]
    -> Everything to do with tears. Lots of stuff.
    public var tearArea:Rectangle;
    public var lowerEyelidArea:Rectangle;
    public var tearsData:BitmapData;
    public var tearsLayer:Bitmap;
    public var mascaraData:BitmapData;
    public var mascaraLayer:Bitmap;
    public var tearSpotsLayer:Sprite;
    public var lowerEyelidData:BitmapData;
    public var lowerEyelidLayer:Bitmap;
    public var lowerEyelidClear:Boolean = true;
    public var oldDataBuffer:BitmapData;
    public var alphaBlendMult:uint = 255;
    public var rgbBlendMult:uint = 256;
    public var tearList:Array;
    public var tearSpotList:Array;
    public var tearGraphic:Tear;
    public var mascaraGraphic:MascaraSpot;
    public var maxTears:uint = 8;
    public var speed:Number = 0.25;
    public var eyeA:Point;
    public var eyeB:Point;
    public var eyeC:Point;
    public var eyeABVec:Point;
    public var eyeBCVec:Point;
    public var mascaraFadeTick:uint;
    public var mascaraFadeRate:uint = 20;
    public var mascaraRGB:Object;
    public var lastSmudgeTarget:Point;
    public var lastSmudge:Point;
    public var currentSmudge:Point;
    public var smudgeVec:Point;
    public var smudgeSteps:uint;
    public var smudgeToggle:Boolean;
    public var smudgeBrush:Vector.<Point>;

    public function Tears() : void
    {
    var _loc_2:int = 0;
    this.tearArea = new Rectangle(0, 0, 120, 150);
    this.lowerEyelidArea = new Rectangle(0, 0, 50, 20);
    this.eyeA = new Point(33, 1);
    this.eyeB = new Point(40, 5);
    this.eyeC = new Point(75, 4);
    this.mascaraRGB = {r:0, g:0, b:0, a:1};
    this.lastSmudge = new Point(-1, -1);
    this.currentSmudge = new Point(-1, -1);
    this.smudgeBrush = new Vector.<Point>;
    this.tearsData = new BitmapData(this.tearArea.width, this.tearArea.height, true, 0);
    this.oldDataBuffer = new BitmapData(this.tearArea.width, this.tearArea.height, true, 0);
    this.tearsLayer = new Bitmap(this.tearsData, "auto", true);
    this.tearsLayer.y = -this.tearArea.height;
    this.tearsLayer.alpha = 0.3;
    addChild(this.tearsLayer);
    this.mascaraData = new BitmapData(this.tearArea.width, this.tearArea.height, true, 0);
    this.mascaraLayer = new Bitmap(this.mascaraData, "auto", true);
    this.mascaraLayer.y = -this.tearArea.height;
    addChild(this.mascaraLayer);
    this.tearSpotsLayer = new Sprite();
    this.tearSpotsLayer.y = -this.tearArea.height;
    addChild(this.tearSpotsLayer);
    this.tearGraphic = new Tear();
    this.mascaraGraphic = new MascaraSpot();
    this.eyeABVec = new Point(this.eyeB.x - this.eyeA.x, this.eyeB.y - this.eyeA.y);
    this.eyeBCVec = new Point(this.eyeC.x - this.eyeB.x, this.eyeC.y - this.eyeB.y);
    this.tearList = new Array();
    this.tearSpotList = new Array();
    var _loc_1:int = 0;
    while (_loc_1 < 2)
    {

    _loc_2 = -25;
    while (_loc_2 <= 25)
    {

    if ((_loc_1 + _loc_2) % 2)
    {
    this.smudgeBrush.push(new Point(_loc_1, _loc_2));
    }
    _loc_2++;
    }
    _loc_1++;
    }
    return;
    }// end function
     
  8. Doomknight

    Doomknight Guest

    [IN GAME MENU, Part 1]
    -> This is the menu that pops up from the bottom of the screen
    public var tabLabels:MovieClip;
    public var helpMenu:MovieClip;
    public var characterMenu:CharacterMenu;
    public var customMenu:MovieClip;
    public var sceneMenu:MovieClip;
    public var optionsMenu:MovieClip;
    public var menuDrawerLip:MovieClip;
    public var rgbPicker:MovieClip;
    public var moddingMenu:MovieClip;
    public var closeButton:MenuCloseButton;
    public var tab1:MenuTab;
    public var tab2:MenuTab;
    public var tab3:MenuTab;
    public var hslPicker:MovieClip;
    public var tab4:MenuTab;
    public var charStoring:CharacterStoring;
    public var tab5:MenuTab;
    private var slideIn:Number = 600;
    private var slideOut:Number = 830;
    private var slidingIn:Boolean = false;
    private var slidingOut:Boolean = false;
    private var slideSmooth:Number = 2;
    private var menuOpen:Boolean = false;
    private var menuOver:Boolean = false;
    private var drawerArrowShowing:Boolean = false;
    private var overTimer:uint = 0;
    private var offTimer:int = 0;
    private var openDelay:uint = 15;
    private var closeDelay:uint = 15;
    private var currentTab:uint = 1;
    private var costumeMenuScroller:ScrollingArea;
    public var costumeMenu:MovieClip;
    private var himMenuScroller:ScrollingArea;
    private var himMenu:MovieClip;
    private var charNames:Array;
    private var charMenuOpen:Boolean = false;
    private var charMenuJustOpened:Boolean = false;
    private var charStoringOpen:Boolean = false;
    private var charStoringJustOpened:Boolean = false;
    private var irisTypes:Array;
    private var skinTypes:Array;
    private var rgbPickerOpen:Boolean = false;
    private var rgbPickerJustOpened:Boolean = false;
    private var rgbPickerTarget:Function;
    private var rgbTargetFill:String;
    private var eyedropperOn:Boolean = false;
    private var eyedropperCursor:EyedropperIcon;
    private var hslPickerOpen:Boolean = false;
    private var hslPickerJustOpened:Boolean = false;
    private var hslPickerTarget:Function;
    private var hslPickerRemoveTarget:Function;
    public var lipstickSwatch:Array;
    public var irisSwatch:Array;
    public var eyebrowSwatch:Array;
    public var eyeShadowSwatch:Array;
    public var blushSwatch:Array;
    public var legwearSwatch:Array;
    public var underwearSwatch:Array;
    private var currentSwatch:Array;
    private var clipboardSwatch:PickerSwatch;
    private var clipboardARGB:AlphaRGBObject;
    private var storedCharsBackup:FileReference;
    private var savingStoredCharsBackup:Boolean = false;
    private var browsingForStoredCharsBackup:Boolean = false;
    private var dialogueFile:FileReference;
    private var savingDialogue:Boolean = false;
    private var browsingForDialogue:Boolean = false;
    private var onlyLoadCostume:Boolean = false;

    [IN GAME MENU, Part 2]
    public function InGameMenu() : void
    {
    var _loc_2:Function = null;
    var _loc_3:Function = null;
    this.y = this.slideOut;
    this.storedCharsBackup = new FileReference();
    this.storedCharsBackup.addEventListener(Event.COMPLETE, this.storedCharsCompleteHandler);
    this.storedCharsBackup.addEventListener(Event.SELECT, this.storedCharsSelectHandler);
    this.storedCharsBackup.addEventListener(Event.CANCEL, this.storedCharsCancelHandler);
    this.dialogueFile = new FileReference();
    this.dialogueFile.addEventListener(Event.COMPLETE, this.dialogueCompleteHandler);
    this.dialogueFile.addEventListener(Event.SELECT, this.dialogueSelectHandler);
    this.dialogueFile.addEventListener(Event.CANCEL, this.dialogueCancelHandler);
    this.clipboardSwatch = new PickerSwatch();
    this.clipboardSwatch.cross.visible = false;
    this.clipboardSwatch.visible = false;
    addChild(this.clipboardSwatch);
    this.lipstickSwatch = new Array();
    this.lipstickSwatch[0] = {r:0, g:0, b:0, a:0};
    this.lipstickSwatch[1] = {r:84, g:0, b:6, a:1};
    this.lipstickSwatch[2] = {r:197, g:64, b:109, a:1};
    this.lipstickSwatch[3] = {r:255, g:167, b:188, a:1};
    this.lipstickSwatch[4] = {r:232, g:188, b:242, a:1};
    this.lipstickSwatch[5] = {r:105, g:39, b:178, a:1};
    this.lipstickSwatch[6] = {r:63, g:118, b:162, a:1};
    this.lipstickSwatch[7] = {r:0, g:0, b:0, a:1};
    this.lipstickSwatch[8] = {r:255, g:255, b:255, a:1};
    this.irisSwatch = new Array();
    this.irisSwatch[0] = {r:0, g:0, b:0, a:0};
    this.irisSwatch[1] = {r:56, g:100, b:137, a:1};
    this.irisSwatch[2] = {r:66, g:90, b:120, a:1};
    this.irisSwatch[3] = {r:46, g:111, b:100, a:1};
    this.irisSwatch[4] = {r:23, g:57, b:102, a:1};
    this.irisSwatch[5] = {r:71, g:18, b:28, a:1};
    this.irisSwatch[6] = {r:62, g:39, b:29, a:1};
    this.irisSwatch[7] = {r:70, g:100, b:37, a:1};
    this.irisSwatch[8] = {r:0, g:0, b:0, a:1};
    this.eyebrowSwatch = new Array();
    this.eyebrowSwatch[0] = {r:0, g:0, b:0, a:0};
    this.eyebrowSwatch[1] = {r:89, g:67, b:51, a:1};
    this.eyebrowSwatch[2] = {r:189, g:142, b:61, a:1};
    this.eyebrowSwatch[3] = {r:87, g:53, b:32, a:1};
    this.eyebrowSwatch[4] = {r:105, g:121, b:137, a:1};
    this.eyebrowSwatch[5] = {r:33, g:33, b:51, a:1};
    this.eyebrowSwatch[6] = {r:50, g:34, b:33, a:1};
    this.eyebrowSwatch[7] = {r:0, g:0, b:0, a:1};
    this.eyebrowSwatch[8] = {r:255, g:255, b:255, a:1};
    this.eyeShadowSwatch = new Array();
    this.eyeShadowSwatch[0] = {r:0, g:0, b:0, a:0};
    this.eyeShadowSwatch[1] = {r:55, g:26, b:99, a:1};
    this.eyeShadowSwatch[2] = {r:124, g:20, b:178, a:1};
    this.eyeShadowSwatch[3] = {r:24, g:12, b:90, a:1};
    this.eyeShadowSwatch[4] = {r:255, g:48, b:109, a:1}; this.eyeShadowSwatch[5] = {r:0, g:66, b:137, a:1};
    this.eyeShadowSwatch[6] = {r:16, g:58, b:24, a:1};
    this.eyeShadowSwatch[7] = {r:0, g:0, b:0, a:1};
    this.eyeShadowSwatch[8] = {r:255, g:255, b:255, a:1};
    this.legwearSwatch = new Array();
    this.legwearSwatch[0] = {r:0, g:0, b:0, a:0};
    this.legwearSwatch[1] = {r:22, g:8, b:0, a:1};
    this.legwearSwatch[2] = {r:82, g:0, b:6, a:1};
    this.legwearSwatch[3] = {r:255, g:126, b:167, a:0.8};
    this.legwearSwatch[4] = {r:0, g:26, b:114, a:1};
    this.legwearSwatch[5] = {r:74, g:20, b:126, a:0.9};
    this.legwearSwatch[6] = {r:63, g:118, b:162, a:1};
    this.legwearSwatch[7] = {r:0, g:0, b:0, a:1};
    this.legwearSwatch[8] = {r:255, g:255, b:255, a:0.8};
    this.underwearSwatch = this.lipstickSwatch.slice(1);
    this.underwearSwatch.splice(-2, 0, {r:128, g:128, b:128, a:1});
    this.blushSwatch = this.eyeShadowSwatch.slice();
    this.blushSwatch[0] = {r:196, g:80, b:77, a:0.35};
    var _loc_1:uint = 0;
    while (_loc_1 <= 8)
    {

    this.rgbPicker["swatch" + _loc_1].cross.visible = false;
    _loc_2 = this.getSwatchHandler(_loc_1);
    this.rgbPicker["swatch" + _loc_1].addEventListener(MouseEvent.CLICK, _loc_2);
    _loc_1 = _loc_1 + 1;
    }
    this.rgbPicker.visible = false;
    this.rgbPicker.rSlider.giveLabel(this.rgbPicker.rLabel);
    this.rgbPicker.gSlider.giveLabel(this.rgbPicker.gLabel);
    this.rgbPicker.bSlider.giveLabel(this.rgbPicker.bLabel);
    this.rgbPicker.alphaControls.aSlider.giveLabel(this.rgbPicker.alphaControls.aLabel);
    this.hslPicker.visible = false;
    this.hslPicker.swatch0.cross.visible = true;
    this.hslPicker.swatch0.swatchFill.alpha = 0;
    this.hslPicker.hSlider.giveLabel(this.hslPicker.hLabel);
    this.hslPicker.sSlider.giveLabel(this.hslPicker.sLabel);
    this.hslPicker.lSlider.giveLabel(this.hslPicker.lLabel);
    this.hslPicker.cSlider.giveLabel(this.hslPicker.cLabel);
    this.hslPicker.hSlider.setLabelRange(-180, 360);
    this.hslPicker.sSlider.setLabelRange(0, 400);
    this.hslPicker.lSlider.setLabelRange(0, 400);
    this.hslPicker.cSlider.setLabelRange(0, 400);
    this.hslPicker.swatch0.addEventListener(MouseEvent.CLICK, this.hslRemoveClicked);
    this.tabLabels.mouseEnabled = false;
    this.tabLabels.mouseChildren = false;
    this.addEventListener(Event.ENTER_FRAME, this.tick);
    this.addEventListener(MouseEvent.ROLL_OVER, this.rolledOver);
    this.addEventListener(MouseEvent.ROLL_OUT, this.rolledOut);
    this.addEventListener(MouseEvent.CLICK, this.menuClicked);
    this.menuDrawerLip.arrow.addEventListener(MouseEvent.CLICK, this.drawerArrowClicked);
    this.tab1.addEventListener(MouseEvent.CLICK, this.tab1Clicked);
    this.tab2.addEventListener(MouseEvent.CLICK, this.tab2Clicked);
    this.tab3.addEventListener(MouseEvent.CLICK, this.tab3Clicked);
    this.tab4.addEventListener(MouseEvent.CLICK, this.tab4Clicked);
    this.tab5.addEventListener(MouseEvent.CLICK, this.tab5Clicked);
    this.closeButton.addEventListener(MouseEvent.CLICK, this.closeClicked);
    this.characterMenu.closeButton.addEventListener(MouseEvent.CLICK, this.characterMenuCloseClicked);
    this.characterMenu.giveButton(this.sceneMenu.mbCharacterMenu);
    this.charNames = g.characterControl.getCharacterList();
    this.characterMenu.instanceBaseChars(this.charNames);
    this.characterMenu.visible = false;
    this.sceneMenu.mbCharacterMenu.addEventListener(MouseEvent.CLICK, this.mbCharacterMenuClicked);
    _loc_1 = 1;
    while (_loc_1 <= g.bgNum)
    {

    _loc_3 = this.getBGHandler(_loc_1);
    this.sceneMenu["cbBG" + _loc_1].addEventListener(MouseEvent.CLICK, _loc_3);
    _loc_1 = _loc_1 + 1;
    }
    this.sceneMenu.cbStyle1.addEventListener(MouseEvent.CLICK, this.style1Clicked);
    this.sceneMenu.cbStyle2.addEventListener(MouseEvent.CLICK, this.style2Clicked);
    this.sceneMenu.cbMoodNormal.addEventListener(MouseEvent.CLICK, this.moodNormalClicked);
    this.sceneMenu.cbMoodHappy.addEventListener(MouseEvent.CLICK, this.moodHappyClicked);
    this.sceneMenu.cbMoodAngry.addEventListener(MouseEvent.CLICK, this.moodAngryClicked);
    this.sceneMenu.cbMoodAhegao.addEventListener(MouseEvent.CLICK, this.moodAhegaoClicked);
    this.sceneMenu.zoomSlider.setRangeEnd(75);
    this.sceneMenu.zoomSlider.addEventListener("handleReleased", this.zoomSliderReleased);
    this.sceneMenu.zoomSlider.addEventListener("sliderChanged", this.zoomSliderChanged);
    this.sceneMenu.mbDefaultZoom.addEventListener(MouseEvent.CLICK, this.mbDefaultZoomClicked);
    this.himMenu = this.sceneMenu.himMenu;
    HimBody.bodyMenuContainer = this.himMenu.bodyMenuContainer;
    this.himMenuScroller = new ScrollingArea(200, 180, this.himMenu, 60);
    this.himMenuScroller.x = 135;
    this.himMenuScroller.y = -91;
    this.sceneMenu.addChild(this.himMenuScroller);
    g.him.setHimMenu(this.himMenu, this.underwearSwatch);
    this.himMenu.penisLengthSlider.setRangeEnd(98);
    this.himMenu.penisLengthSlider.addEventListener("handleReleased", this.penisLengthSliderReleased);
    this.himMenu.penisLengthSlider.addEventListener("sliderChanged", this.penisLengthSliderChanged);
    this.himMenu.mbDefaultPenisLength.addEventListener(MouseEvent.CLICK, this.mbDefaultPenisLengthClicked);
    this.himMenu.penisWidthSlider.setRangeEnd(98);
    this.himMenu.penisWidthSlider.addEventListener("handleReleased", this.penisWidthSliderReleased);
    this.himMenu.penisWidthSlider.addEventListener("sliderChanged", this.penisWidthSliderChanged);
    this.himMenu.mbDefaultPenisWidth.addEventListener(MouseEvent.CLICK, this.mbDefaultPenisWidthClicked);
    this.himMenu.mlBody.leftArrow.addEventListener(MouseEvent.CLICK, this.hisBodyLeftClicked);
    this.himMenu.mlBody.rightArrow.addEventListener(MouseEvent.CLICK, this.hisBodyRightClicked);
    this.himMenu.mlHisArm.leftArrow.addEventListener(MouseEvent.CLICK, this.hisArmLeftClicked);
    this.himMenu.mlHisArm.rightArrow.addEventListener(MouseEvent.CLICK, this.hisArmRightClicked);
    this.himMenu.mlHisLeftArm.leftArrow.addEventListener(MouseEvent.CLICK, this.hisLeftArmLeftClicked);
    this.himMenu.mlHisLeftArm.rightArrow.addEventListener(MouseEvent.CLICK, this.hisLeftArmRightClicked);
    this.himMenu.mlBalls.leftArrow.addEventListener(MouseEvent.CLICK, this.ballsLeftClicked);
    this.himMenu.mlBalls.rightArrow.addEventListener(MouseEvent.CLICK, this.ballsRightClicked);
    this.himMenu.ballSizeSlider.setRangeEnd(98);
    this.himMenu.ballSizeSlider.addEventListener("handleReleased", this.ballSizeSliderReleased);
    this.himMenu.ballSizeSlider.addEventListener("sliderChanged", this.ballSizeSliderChanged);
    this.himMenu.mbDefaultBallSize.addEventListener(MouseEvent.CLICK, this.mbDefaultBallSizeClicked);
    this.costumeMenu = this.sceneMenu.costumeMenu;
    this.costumeMenuScroller = new ScrollingArea(220, 180, this.costumeMenu, 60);
    this.costumeMenuScroller.x = -98;
    this.costumeMenuScroller.y = -91;
    this.sceneMenu.addChild(this.costumeMenuScroller);
    g.her.setMenu(this.costumeMenu, this.underwearSwatch);
    this.costumeMenu.resistanceSlider.setRangeEnd(119);
    this.costumeMenu.resistanceSlider.addEventListener("handleReleased", this.resistanceSliderReleased);
    this.costumeMenu.resistanceSlider.addEventListener("sliderChanged", this.resistanceSliderChanged);
    this.costumeMenu.cbResetResistance.addEventListener(MouseEvent.CLICK, this.cbResetResistanceClicked);
    this.costumeMenu.mbDefaultResistance.addEventListener(MouseEvent.CLICK, this.mbDefaultResistanceClicked);
    this.costumeMenu.throatResistanceSlider.setRangeEnd(119);
    this.costumeMenu.throatResistanceSlider.addEventListener("handleReleased", this.throatResistanceSliderReleased);
    this.costumeMenu.throatResistanceSlider.addEventListener("sliderChanged", this.throatResistanceSliderChanged);
    this.costumeMenu.mbDefaultThroatResistance.addEventListener(MouseEvent.CLICK, this.mbDefaultThroatResistanceClicked);
    this.costumeMenu.mlArms.leftArrow.addEventListener(MouseEvent.CLICK, this.armsLeftClicked);
    this.costumeMenu.mlArms.rightArrow.addEventListener(MouseEvent.CLICK, this.armsRightClicked);
    g.her.tan.registerMenuItems(this.costumeMenu.mlTan, this.costumeMenu.tanAlphaSlider);
    this.costumeMenu.mbSelectCostume.addEventListener(MouseEvent.CLICK, this.selectCostumeClicked);
    g.characterControl.collarControl.registerMenuList(this.costumeMenu.mlCollar);
    g.characterControl.collarControl.registerRGBButton(this.costumeMenu.rgbCollar, this.underwearSwatch, 256, false);
    g.characterControl.collarControl.registerSecondaryRGBButton(this.costumeMenu.rgbCollar2, this.underwearSwatch, 256, false);
    g.characterControl.gagControl.registerMenuList(this.costumeMenu.mlGag);
    g.characterControl.gagControl.registerRGBButton(this.costumeMenu.rgbGag, this.underwearSwatch, 256, false);
    g.characterControl.cuffsControl.registerMenuList(this.costumeMenu.mlCuffs);
    g.characterControl.cuffsControl.registerRGBButton(this.costumeMenu.rgbCuffs, this.underwearSwatch, 256, false);
    g.characterControl.cuffsControl.registerSecondaryRGBButton(this.costumeMenu.rgbCuffs2, this.underwearSwatch, 256, false);
    g.characterControl.ankleCuffsControl.registerMenuList(this.costumeMenu.mlAnkleCuffs);
    g.characterControl.ankleCuffsControl.registerRGBButton(this.costumeMenu.rgbAnkleCuffs, this.underwearSwatch, 256, false);
    g.characterControl.ankleCuffsControl.registerSecondaryRGBButton(this.costumeMenu.rgbAnkleCuffs2, this.underwearSwatch, 256, false);
    g.characterControl.armwearControl.registerMenuList(this.costumeMenu.mlArmwear);
    g.characterControl.armwearControl.registerRGBButton(this.costumeMenu.rgbArmwear, this.underwearSwatch, 256, false);
    g.characterControl.topControl.registerMenuList(this.costumeMenu.mlTop);
    g.characterControl.topControl.registerRGBButton(this.costumeMenu.rgbTop, this.underwearSwatch, 256);
    g.characterControl.bottomsControl.registerMenuList(this.costumeMenu.mlBottoms);
    g.characterControl.bottomsControl.registerRGBButton(this.costumeMenu.rgbBottoms, this.underwearSwatch, 256, false);
    g.characterControl.bottomsControl.registerSecondaryRGBButton(this.costumeMenu.rgbBottoms2, this.underwearSwatch, 256, false);
    g.characterControl.legwearControl.registerMenuList(this.costumeMenu.mlLegwear);
    g.characterControl.legwearControl.registerRGBButton(this.costumeMenu.rgbLegwear, this.legwearSwatch, 256);
    g.characterControl.legwearControl.registerSecondaryRGBButton(this.costumeMenu.rgbLegwear2, this.legwearSwatch, 256);
    g.characterControl.legwearBControl.registerMenuList(this.costumeMenu.mlLegwearB);
    g.characterControl.legwearBControl.registerRGBButton(this.costumeMenu.rgbLegwearB, this.legwearSwatch, 256);
    g.characterControl.legwearBControl.registerSecondaryRGBButton(this.costumeMenu.rgbLegwearB2, this.legwearSwatch, 256);
    g.characterControl.footwearControl.registerMenuList(this.costumeMenu.mlFootwear);
    g.characterControl.footwearControl.registerRGBButton(this.costumeMenu.rgbFootwear, this.underwearSwatch, 256, false);
    g.characterControl.footwearControl.registerSecondaryRGBButton(this.costumeMenu.rgbFootwear2, this.underwearSwatch, 256, false);
    g.characterControl.eyewearControl.registerMenuList(this.costumeMenu.mlEyewear);
    g.characterControl.eyewearControl.registerRGBButton(this.costumeMenu.rgbEyewear, this.underwearSwatch, 256, false);
    g.characterControl.pantiesControl.registerMenuList(this.costumeMenu.mlPanties);
    g.characterControl.pantiesControl.registerRGBButton(this.costumeMenu.rgbPanties, this.underwearSwatch, 256, false);
    g.characterControl.braControl.registerMenuList(this.costumeMenu.mlBra);
    g.characterControl.braControl.registerRGBButton(this.costumeMenu.rgbBra, this.underwearSwatch, 256, false);
    g.characterControl.tonguePiercingControl.registerMenuList(this.costumeMenu.mlTonguePiercing);
    g.characterControl.tonguePiercingControl.registerRGBButton(this.costumeMenu.rgbTonguePiercing, this.underwearSwatch, 256, false);
    g.characterControl.nipplePiercingControl.registerMenuList(this.costumeMenu.mlNipplePiercing);
    g.characterControl.nipplePiercingControl.registerRGBButton(this.costumeMenu.rgbNipplePiercing, this.underwearSwatch, 256, false);
    g.characterControl.bellyPiercingControl.registerMenuList(this.costumeMenu.mlBellyPiercing);
    g.characterControl.bellyPiercingControl.registerRGBButton(this.costumeMenu.rgbBellyPiercing, this.underwearSwatch, 256, false);
    g.characterControl.earringControl.registerMenuList(this.costumeMenu.mlEarring);
    g.characterControl.earringControl.registerRGBButton(this.costumeMenu.rgbEarring, this.underwearSwatch, 256, false);
    g.characterControl.headwearControl.registerMenuList(this.costumeMenu.mlHeadwear);
    g.characterControl.headwearControl.registerRGBButton(this.costumeMenu.rgbHeadwear, this.underwearSwatch, 256, false);
    g.characterControl.headwearControl.registerSecondaryRGBButton(this.costumeMenu.rgbHeadwear2, this.underwearSwatch, 256, false);
    this.sceneMenu.cbAuto.addEventListener(MouseEvent.CLICK, this.cbAutoClicked);
    this.sceneMenu.mlAuto.leftArrow.addEventListener(MouseEvent.CLICK, this.autoLeftClicked);
    this.sceneMenu.mlAuto.rightArrow.addEventListener(MouseEvent.CLICK, this.autoRightClicked);
    this.customMenu.mlHair.leftArrow.addEventListener(MouseEvent.CLICK, this.hairLeftClicked);
    this.customMenu.mlHair.rightArrow.addEventListener(MouseEvent.CLICK, this.hairRightClicked);
    this.customMenu.mlIris.leftArrow.addEventListener(MouseEvent.CLICK, this.irisLeftClicked);
    this.customMenu.mlIris.rightArrow.addEventListener(MouseEvent.CLICK, this.irisRightClicked);
    this.customMenu.mlSkin.leftArrow.addEventListener(MouseEvent.CLICK, this.skinLeftClicked);
    this.customMenu.mlSkin.rightArrow.addEventListener(MouseEvent.CLICK, this.skinRightClicked);
    this.customMenu.mlNose.leftArrow.addEventListener(MouseEvent.CLICK, this.noseLeftClicked);
    this.customMenu.mlNose.rightArrow.addEventListener(MouseEvent.CLICK, this.noseRightClicked);
    this.customMenu.mlEar.leftArrow.addEventListener(MouseEvent.CLICK, this.earLeftClicked);
    this.customMenu.mlEar.rightArrow.addEventListener(MouseEvent.CLICK, this.earRightClicked);
    this.customMenu.mlEyebrows.leftArrow.addEventListener(MouseEvent.CLICK, this.eyebrowsLeftClicked);
    this.customMenu.mlEyebrows.rightArrow.addEventListener(MouseEvent.CLICK, this.eyebrowsRightClicked);
    this.customMenu.breastSlider.setRangeEnd(100);
    this.customMenu.breastSlider.addEventListener("handleReleased", this.breastSliderReleased);
    this.customMenu.breastSlider.addEventListener("sliderChanged", this.breastSliderChanged);
    this.customMenu.bodySlider.setRangeEnd(100);
    this.customMenu.bodySlider.addEventListener("handleReleased", this.bodySliderReleased);
    this.customMenu.bodySlider.addEventListener("sliderChanged", this.bodySliderChanged);
    this.customMenu.mbDefaultBodyScale.addEventListener(MouseEvent.CLICK, this.mbDefaultBodyScaleClicked);
    this.customMenu.mascaraSlider.setRangeEnd(70);
    this.customMenu.mascaraSlider.addEventListener("handleReleased", this.mascaraSliderReleased);
    this.customMenu.mascaraSlider.addEventListener("sliderChanged", this.mascaraSliderChanged);
    this.customMenu.mbDefaultMascara.addEventListener(MouseEvent.CLICK, this.defaultMascaraClicked);
    this.customMenu.frecklesSlider.setRangeEnd(70);
    this.customMenu.frecklesSlider.addEventListener("handleReleased", this.frecklesSliderReleased);
    this.customMenu.frecklesSlider.addEventListener("sliderChanged", this.frecklesSliderChanged);
    this.customMenu.mbDefaultFreckles.addEventListener(MouseEvent.CLICK, this.defaultFrecklesClicked);
    this.customMenu.rgbEyeShadow.addEventListener(MouseEvent.CLICK, this.rgbEyeShadowClicked);
    this.customMenu.rgbLipstick.addEventListener(MouseEvent.CLICK, this.rgbLipstickClicked);
    this.customMenu.rgbIris.addEventListener(MouseEvent.CLICK, this.rgbIrisClicked);
    this.customMenu.rgbEyebrowFill.addEventListener(MouseEvent.CLICK, this.rgbEyebrowFillClicked);
    this.customMenu.rgbEyebrowLine.addEventListener(MouseEvent.CLICK, this.rgbEyebrowLineClicked);
    this.customMenu.rgbSclera.addEventListener(MouseEvent.CLICK, this.rgbScleraClicked);
    this.customMenu.rgbBlush.addEventListener(MouseEvent.CLICK, this.rgbBlushClicked);
    this.customMenu.rgbMascara.addEventListener(MouseEvent.CLICK, this.rgbMascaraClicked);
    this.customMenu.rgbFreckles.addEventListener(MouseEvent.CLICK, this.rgbFrecklesClicked);
    this.customMenu.rgbNailPolish.addEventListener(MouseEvent.CLICK, this.rgbNailPolishClicked);
    this.customMenu.dialogueNameTF.addEventListener(Event.CHANGE, this.dialogueNameChanged);
    this.customMenu.dialogueNameTF.addEventListener(FocusEvent.FOCUS_IN, this.textFieldFocusIn);
    this.customMenu.dialogueNameTF.addEventListener(FocusEvent.FOCUS_OUT, this.textFieldFocusOut);
    this.customMenu.mbClearDialogueName.addEventListener(MouseEvent.CLICK, this.mbClearDialogueNameClicked);
    this.customMenu.hslHerSkin.addEventListener(MouseEvent.CLICK, this.hslHerSkinClicked);
    this.customMenu.hslHerHair.addEventListener(MouseEvent.CLICK, this.hslHerHairClicked);
    this.customMenu.hslHisSkin.addEventListener(MouseEvent.CLICK, this.hslHisSkinClicked);
    this.customMenu.mbClearTints.addEventListener(MouseEvent.CLICK, this.clearTintsClicked);
    this.rgbPicker.closeButton.addEventListener(MouseEvent.CLICK, this.rgbPickerCloseClicked);
    this.rgbPicker.rSlider.addEventListener("handleReleased", this.rgbPickerReleased);
    this.rgbPicker.gSlider.addEventListener("handleReleased", this.rgbPickerReleased);
    this.rgbPicker.bSlider.addEventListener("handleReleased", this.rgbPickerReleased);
    this.rgbPicker.alphaControls.aSlider.addEventListener("handleReleased", this.rgbPickerReleased);
    this.rgbPicker.rSlider.addEventListener("sliderChanged", this.rgbPickerChanged);
    this.rgbPicker.gSlider.addEventListener("sliderChanged", this.rgbPickerChanged);
    this.rgbPicker.bSlider.addEventListener("sliderChanged", this.rgbPickerChanged);
    this.rgbPicker.alphaControls.aSlider.addEventListener("sliderChanged", this.rgbPickerChanged);
    this.rgbPicker.rLabel.addEventListener(Event.CHANGE, this.rgbPickerLabelChanged);
    this.rgbPicker.gLabel.addEventListener(Event.CHANGE, this.rgbPickerLabelChanged);
    this.rgbPicker.bLabel.addEventListener(Event.CHANGE, this.rgbPickerLabelChanged);
    this.rgbPicker.alphaControls.aLabel.addEventListener(Event.CHANGE, this.rgbPickerLabelChanged);
    this.rgbPicker.mbCopySwatch.addEventListener(MouseEvent.CLICK, this.copyRGBSwatchClicked);
    this.rgbPicker.mbPasteSwatch.addEventListener(MouseEvent.CLICK, this.pasteRGBSwatchClicked);
    this.rgbPicker.mbEyedropper.addEventListener(MouseEvent.CLICK, this.eyedropperClicked);
    this.hslPicker.closeButton.addEventListener(MouseEvent.CLICK, this.hslPickerCloseClicked);
    this.hslPicker.hSlider.addEventListener("handleReleased", this.hslPickerReleased);
    this.hslPicker.sSlider.addEventListener("handleReleased", this.hslPickerReleased);
    this.hslPicker.lSlider.addEventListener("handleReleased", this.hslPickerReleased);
    this.hslPicker.cSlider.addEventListener("handleReleased", this.hslPickerReleased);
    this.hslPicker.hSlider.addEventListener("sliderChanged", this.hslPickerChanged);
    this.hslPicker.sSlider.addEventListener("sliderChanged", this.hslPickerChanged);
    this.hslPicker.lSlider.addEventListener("sliderChanged", this.hslPickerChanged);
    this.hslPicker.cSlider.addEventListener("sliderChanged", this.hslPickerChanged);
    this.hslPicker.hLabel.addEventListener(Event.CHANGE, this.hslPickerLabelChanged);
    this.hslPicker.sLabel.addEventListener(Event.CHANGE, this.hslPickerLabelChanged);
    this.hslPicker.lLabel.addEventListener(Event.CHANGE, this.hslPickerLabelChanged);
    this.hslPicker.cLabel.addEventListener(Event.CHANGE, this.hslPickerLabelChanged);
    this.customMenu.cbLipstickSmearing.addEventListener(MouseEvent.CLICK, this.lipstickSmearingClicked);
    this.customMenu.mbShuffle.addEventListener(MouseEvent.CLICK, this.shuffleClicked);
    this.moddingMenu.mbGenerate.addEventListener(MouseEvent.CLICK, this.generateClicked);
    this.moddingMenu.mbLoad.addEventListener(MouseEvent.CLICK, this.loadClicked);
    this.moddingMenu.mbSaveDialogue.addEventListener(MouseEvent.CLICK, this.saveDialogueClicked);
    this.moddingMenu.mbLoadDialogue.addEventListener(MouseEvent.CLICK, this.loadDialogueClicked);
    this.moddingMenu.mbResetDefaultDialogue.addEventListener(MouseEvent.CLICK, this.resetDefaultDialogueClicked);
    this.moddingMenu.mbEditDialogue.addEventListener(MouseEvent.CLICK, this.editDialogueClicked);
    this.moddingMenu.mbStoreChar.addEventListener(MouseEvent.CLICK, this.storeCharClicked);
    this.moddingMenu.mbSaveBackup.addEventListener(MouseEvent.CLICK, this.saveBackupClicked);
    this.moddingMenu.mbLoadBackup.addEventListener(MouseEvent.CLICK, this.loadBackupClicked);
    this.moddingMenu.cbOverwriteCharList.addEventListener(MouseEvent.CLICK, this.cbOverwriteCharListClicked);
    this.moddingMenu.saveDataTF.addEventListener(FocusEvent.FOCUS_IN, this.textFieldFocusIn);
    this.moddingMenu.saveDataTF.addEventListener(FocusEvent.FOCUS_OUT, this.textFieldFocusOut);
    this.moddingMenu.dialogueLibraryName.addEventListener(FocusEvent.FOCUS_IN, this.textFieldFocusIn);
    this.moddingMenu.dialogueLibraryName.addEventListener(FocusEvent.FOCUS_OUT, this.textFieldFocusOut);
    this.moddingMenu.dialogueLibraryName.addEventListener(Event.CHANGE, this.dialogueLibraryNameChanged);
    this.charStoring.addEventListener("CHAR_STORED", this.characterStoredSuccessfully);
    this.charStoring.addEventListener("CHAR_DELETED", this.characterDeleted);
    this.charStoring.closeButton.addEventListener(MouseEvent.CLICK, this.charStoringCloseClicked);
    this.charStoring.visible = false;
    this.optionsMenu.cbStrandShaders.addEventListener(MouseEvent.CLICK, this.cbStrandShadersClicked);
    this.optionsMenu.cbShowMouse.addEventListener(MouseEvent.CLICK, this.cbShowMouseClicked);
    this.optionsMenu.cbHoverOptions.addEventListener(MouseEvent.CLICK, this.cbHoverOptionsClicked);
    this.optionsMenu.cbLowQuality.addEventListener(MouseEvent.CLICK, this.cbLowQualityClicked);
    this.optionsMenu.cbMedQuality.addEventListener(MouseEvent.CLICK, this.cbMedQualityClicked);
    this.optionsMenu.cbHighQuality.addEventListener(MouseEvent.CLICK, this.cbHighQualityClicked);
    this.optionsMenu.cbMirrored.addEventListener(MouseEvent.CLICK, this.cbMirroredClicked);
    this.optionsMenu.volumeSlider.addEventListener("handleReleased", this.volumeChanged);
    this.optionsMenu.cbSpit.addEventListener(MouseEvent.CLICK, this.cbSpitClicked);
    this.optionsMenu.cbTears.addEventListener(MouseEvent.CLICK, this.cbTearsClicked);
    this.optionsMenu.cbMascara.addEventListener(MouseEvent.CLICK, this.cbMascaraClicked);
    this.optionsMenu.cbSmudging.addEventListener(MouseEvent.CLICK, this.cbSmudgingClicked);
    this.optionsMenu.cbNostrilSpray.addEventListener(MouseEvent.CLICK, this.cbNostrilSprayClicked);
    this.optionsMenu.cbSweat.addEventListener(MouseEvent.CLICK, this.cbSweatClicked);
    this.optionsMenu.cbDialogue.addEventListener(MouseEvent.CLICK, this.cbDialogueClicked);
    this.optionsMenu.throatBulgeSlider.setRangeEnd(100);
    this.optionsMenu.throatBulgeSlider.addEventListener("handleReleased", this.throatBulgeSliderReleased);
    this.optionsMenu.throatBulgeSlider.addEventListener("sliderChanged", this.throatBulgeSliderChanged);
    this.optionsMenu.mbDefaultThroatBulge.addEventListener(MouseEvent.CLICK, this.mbDefaultThroatBulgeClicked);
    this.optionsMenu.cbInvertControls.addEventListener(MouseEvent.CLICK, this.cbInvertControlsClicked);
    this.optionsMenu.cbDoubleSizeScreenshot.addEventListener(MouseEvent.CLICK, this.cbDoubleSizeScreenshotClicked);
    this.optionsMenu.cbIntroSound.addEventListener(MouseEvent.CLICK, this.cbIntroSoundClicked);
    this.optionsMenu.cbBreathing.addEventListener(MouseEvent.CLICK, this.cbBreathingClicked);
    this.optionsMenu.cbGagging.addEventListener(MouseEvent.CLICK, this.cbGaggingClicked);
    this.optionsMenu.cbCoughing.addEventListener(MouseEvent.CLICK, this.cbCoughingClicked);
    this.optionsMenu.cbTongue.addEventListener(MouseEvent.CLICK, this.cbTongueClicked);
    this.optionsMenu.mbClearSpit.addEventListener(MouseEvent.CLICK, this.clearSpitClicked);
    this.optionsMenu.mbClearCum.addEventListener(MouseEvent.CLICK, this.clearCumClicked);
    this.optionsMenu.mbClearMascara.addEventListener(MouseEvent.CLICK, this.clearMascaraClicked);
    this.optionsMenu.mbClearLipstick.addEventListener(MouseEvent.CLICK, this.clearLipstickClicked);
    this.optionsMenu.mbClearAll.addEventListener(MouseEvent.CLICK, this.clearAllClicked);
    this.optionsMenu.secretOptions.cbBukkakeMode.addEventListener(MouseEvent.CLICK, this.cbBukkakeModeClicked);
    this.costumeMenu.mbSelectCostume.labelContainer.buttonLabel.text = "Select...";
    this.optionsMenu.mbClearSpit.labelContainer.buttonLabel.text = "Spit";
    this.optionsMenu.mbClearCum.labelContainer.buttonLabel.text = "Cum";
    this.optionsMenu.mbClearMascara.labelContainer.buttonLabel.text = "Mascara";
    this.optionsMenu.mbClearAll.labelContainer.buttonLabel.text = "All";
    this.optionsMenu.mbClearLipstick.labelContainer.buttonLabel.text = "Lipstick";
    this.customMenu.mbShuffle.labelContainer.buttonLabel.text = "Shuffle";
    this.customMenu.mbClearTints.labelContainer.buttonLabel.text = "Clear All";
    this.moddingMenu.mbGenerate.labelContainer.buttonLabel.text = "Generate";
    this.moddingMenu.mbLoad.labelContainer.buttonLabel.text = "Load";
    this.moddingMenu.mbSaveDialogue.labelContainer.buttonLabel.text = "Save...";
    this.moddingMenu.mbLoadDialogue.labelContainer.buttonLabel.text = "Load...";
    this.moddingMenu.mbEditDialogue.labelContainer.buttonLabel.text = "Edit...";
    this.moddingMenu.mbImportHair.labelContainer.buttonLabel.text = "Hair...";
    this.moddingMenu.mbImportBackground.labelContainer.buttonLabel.text = "Background...";
    this.moddingMenu.mbImportMod.labelContainer.buttonLabel.text = "Swf mod...";
    this.moddingMenu.mbStoreChar.labelContainer.buttonLabel.text = "Save Character...";
    this.moddingMenu.mbSaveBackup.labelContainer.buttonLabel.text = "Save...";
    this.moddingMenu.mbLoadBackup.labelContainer.buttonLabel.text = "Load...";
    this.eyedropperCursor = new EyedropperIcon();
    addChild(this.eyedropperCursor);
    this.eyedropperCursor.visible = false;
    this.updateMoods();
    this.updateHisBodyList();
    this.updateArmsList();
    this.updateHisArmList();
    this.updateHisLeftArmList();
    this.updateBallsList();
    this.updateResistanceSlider();
    this.setCBResetResistance();
    this.updateThroatResistanceSlider();
    this.setCBAuto();
    this.updateAutoList();
    this.updateZoomSlider();
    this.updatePenisLengthSlider();
    this.updatePenisWidthSlider();
    this.updateBallSizeSlider();
    this.updateHairList();
    this.irisTypes = g.characterControl.getIrisList();
    this.updateIrisList();
    this.skinTypes = g.characterControl.getSkinList();
    this.updateSkinList();
    this.updateNoseList();
    this.updateEyebrowsList();
    this.updateEarList();
    this.updateBreastSlider();
    this.updateBodySlider();
    this.updateMascaraSlider();
    this.updateFrecklesSlider();
    this.updateLipstickSmearing();
    this.updateCBSpit();
    this.updateCBSweat();
    this.updateCBTears();
    this.updateCBMascara();
    this.updateCBSmudging();
    this.updateCBNostrilSpray();
    this.updateCBIntroSound();
    this.updateCBBreathing();
    this.updateCBGagging();
    this.updateCBCoughing();
    this.updateCBTongue();
    this.updateThroatBulgeSlider();
    this.updateCBDialogue();
    this.updateCBDoubleSizeScreenshot();
    this.updateTabs();
    this.setcbStrandShaders();
    this.setcbShowMouse();
    this.setQualityCBs();
    this.setcbHoverOptions();
    this.setcbMirrored();
    this.setBGCheckboxes();
    this.setStyleCheckboxes();
    this.setDialogueLibraryName("Default");
    this.updateOverwriteCharList();
    return;
    }// end function
     
  9. Doomknight

    Doomknight Guest

    [SECRET OPTION DRAWER]
    -> This is the thing that Konashion uses to hide the Bukkake Button.
    package obj
    {
    import flash.display.*;
    import flash.events.*;

    public class SecretOptionDrawer extends MovieClip
    {
    public var cbBukkakeMode:MenuCheckboxWide;
    public var arrow:MovieClip;
    public var slideIn:Number = 253;
    public var slideOut:Number = 421;
    public var slidingIn:Boolean = false;
    public var slidingOut:Boolean = false;
    public var slideSmooth:Number = 2;
    public var drawerOpen:Boolean = false;
    public var drawerOver:Boolean = false;
    public var drawerArrowShowing:Boolean = false;
    public var overTimer:uint = 0;
    public var offTimer:int = 0;
    public var openDelay:uint = 30;
    public var closeDelay:uint = 30;

    public function SecretOptionDrawer() : void
    {
    this.addEventListener(Event.ENTER_FRAME, this.tick);
    this.addEventListener(MouseEvent.ROLL_OVER, this.rolledOver);
    this.addEventListener(MouseEvent.ROLL_OUT, this.rolledOut);
    return;
    }// end function

    public function tick(event:Event) : void
    {
    if (this.slidingIn)
    {
    this.x = this.x + (this.slideIn - this.x) / this.slideSmooth;
    if (Math.abs(this.x - this.slideIn) < 0.1)
    {
    this.x = this.slideIn;
    this.slidingIn = false;
    }
    }
    else if (this.slidingOut)
    {
    this.x = this.x + (this.slideOut - this.x) / this.slideSmooth;
    if (Math.abs(this.x - this.slideOut) < 0.1)
    {
    this.x = this.slideOut;
    this.slidingOut = false;
    this.drawerOpen = false;
    }
    }
    if (!this.drawerOpen && this.drawerOver)
    {
    var _loc_2:String = this;
    var _loc_3:* = this.overTimer + 1;
    _loc_2.overTimer = _loc_3;
    if (this.overTimer >= this.openDelay)
    {
    this.openDrawer();
    }
    }
    if (this.drawerOpen && !this.drawerOver)
    {
    var _loc_2:String = this;
    var _loc_3:* = this.offTimer + 1;
    _loc_2.offTimer = _loc_3;
    if (this.offTimer >= this.closeDelay)
    {
    this.closeDrawer();
    }
    }
    return;
    }// end function

    public function rolledOver(event:MouseEvent) : void
    {
    this.drawerOver = true;
    this.offTimer = 0;
    if (this.drawerOpen)
    {
    this.openDrawer();
    }
    else
    {
    this.arrow.gotoAndPlay("FadeIn");
    this.drawerArrowShowing = true;
    }
    return;
    }// end function

    public function rolledOut(event:MouseEvent) : void
    {
    this.drawerOver = false;
    this.overTimer = 0;
    if (this.drawerArrowShowing)
    {
    this.arrow.gotoAndPlay("FadeOut");
    this.drawerArrowShowing = false;
    }
    return;
    }// end function

    public function openDrawer() : void
    {
    this.slidingIn = true;
    this.slidingOut = false;
    this.drawerOpen = true;
    if (this.drawerArrowShowing)
    {
    this.arrow.gotoAndPlay("FadeOut");
    this.drawerArrowShowing = false;
    }
    return;
    }// end function

    public function closeDrawer() : void
    {
    if (this.drawerOpen)
    {
    this.slidingOut = true;
    this.slidingIn = false;
    }
    return;
    }// end function

    }
    }

    [RIGID BODY]
    -> No idea what this does.
    package obj
    {
    import flash.display.*;
    import flash.events.*;
    import flash.geom.*;

    public class RigidBody extends MovieClip
    {
    public var rgbFill:MovieClip;
    public var movement:Point;
    public var lastMovement:Point;
    public var acceleration:Point;
    public var lastPos:Point;
    public var pos:Point;
    public var angSpeed:Number = 0;
    public var hanging:Boolean = true;
    public var lengthMultiplier:Number;
    public var lastFrameLabel:String = "";
    public var clockwiseLimit:Number;
    public var haveClockwiseLimit:Boolean = false;
    public var antiClockwiseLimit:Number;
    public var haveAntiClockwiseLimit:Boolean = false;

    public function RigidBody() : void
    {
    this.movement = new Point();
    this.lastMovement = new Point();
    this.acceleration = new Point();
    addEventListener(Event.ENTER_FRAME, this.tick);
    addEventListener(Event.ADDED, this.childAdded);
    this.frameChanged();
    try
    {
    this.lastPos = parent.localToGlobal(new Point(this.x, this.y));
    }
    catch (e:Error)
    {
    }
    return;
    }// end function

    public function childAdded(event:Event) : void
    {
    if (event.target != this)
    {
    this.frameChanged();
    }
    return;
    }// end function

    public function setLimit(param1:Number, param2:Boolean = true) : void
    {
    if (param2)
    {
    this.clockwiseLimit = param1;
    this.haveClockwiseLimit = true;
    }
    else
    {
    this.antiClockwiseLimit = param1;
    this.haveAntiClockwiseLimit = true;
    }
    return;
    }// end function

    public function frameChanged() : void
    {
    this.lastFrameLabel = currentLabel;
    this.lengthMultiplier = Math.max(0.2, height * 0.002);
    if (height < 20)
    {
    rotation = 0;
    this.hanging = false;
    }
    else
    {
    this.hanging = true;
    }
    return;
    }// end function

    public function tick(event:Event) : void
    {
    var _loc_2:Number = NaN;
    var _loc_3:DisplayObject = null;
    var _loc_4:Point = null;
    var _loc_5:Number = NaN;
    var _loc_6:Point = null;
    var _loc_7:Number = NaN;
    if (currentLabel != this.lastFrameLabel)
    {
    this.lastFrameLabel = currentLabel;
    this.frameChanged();
    }
    this.pos = parent.localToGlobal(new Point(this.x, this.y));
    if (this.hanging)
    {
    _loc_2 = 180;
    _loc_3 = parent;
    while (_loc_3 && _loc_3 != g.sceneLayer)
    {

    _loc_2 = _loc_2 - _loc_3.rotation;
    _loc_3 = _loc_3.parent;
    }
    _loc_2 = _loc_2 * Math.PI / 180;
    _loc_4 = new Point(Math.sin(_loc_2), -Math.cos(_loc_2));
    this.movement.x = this.pos.x - this.lastPos.x;
    this.movement.y = this.pos.y - this.lastPos.y;
    this.acceleration.x = this.movement.x - this.lastMovement.x - _loc_4.x * 40;
    this.acceleration.y = this.movement.y - this.lastMovement.y - _loc_4.y * 40;
    this.lastMovement = this.movement.clone();
    _loc_5 = rotation * Math.PI / 180 + Math.PI * 0.5;
    _loc_6 = new Point(Math.sin(_loc_5), -Math.cos(_loc_5));
    _loc_7 = _loc_6.x * this.acceleration.x + _loc_6.y * this.acceleration.y;
    this.angSpeed = this.angSpeed + _loc_7 * this.lengthMultiplier * (0.9 + Math.random() * 0.2);
    this.angSpeed = this.angSpeed * 0.9;
    rotation = rotation + this.angSpeed;
    if (this.haveAntiClockwiseLimit && this.angSpeed < 0 && rotation < this.antiClockwiseLimit)
    {
    this.angSpeed = this.angSpeed * -0.7;
    }
    if (this.haveClockwiseLimit && this.angSpeed > 0 && rotation > this.clockwiseLimit)
    {
    this.angSpeed = this.angSpeed * -0.7;
    }
    }
    this.lastPos = this.pos.clone();
    return;
    }// end function

    }
    }

    [SLIDER]
    -> Believe this code allows you to create a slider in the In Game Menu. Probably. Not sure.
    package obj
    {
    import flash.display.*;
    import flash.events.*;
    import flash.text.*;

    public class Slider extends MovieClip
    {
    public var handle:ColourPickerSliderHandle;
    public var hitbox:MovieClip;
    public var bar:MovieClip;
    public var alphaType:Boolean = false;
    public var amountLabel:TextField;
    public var haveLabel:Boolean = false;
    public var labelRangeStart:Number = 0;
    public var labelRange:Number = 255;
    public var handleRangeStart:Number = 0;
    public var handleRangeEnd:Number = 128;
    public var handleRange:Number;
    public var draggingHandle:Boolean = false;

    public function Slider() : void
    {
    this.handleRange = this.handleRangeEnd - this.handleRangeStart;
    this.handle.mouseEnabled = false;
    this.handle.x = this.handleRangeStart;
    this.bar.scaleX = this.handleRange * 0.01;
    this.addEventListener(Event.ENTER_FRAME, this.tick);
    this.addEventListener(MouseEvent.MOUSE_DOWN, this.handleDragged);
    return;
    }// end function

    public function setLabelRange(param1:Number, param2:Number) : void
    {
    this.labelRangeStart = param1;
    this.labelRange = param2;
    return;
    }// end function

    public function setRangeEnd(param1:Number)
    {
    this.handleRangeEnd = param1;
    this.handleRange = this.handleRangeEnd - this.handleRangeStart;
    this.bar.scaleX = this.handleRange * 0.01;
    this.hitbox.scaleX = this.handleRange * 0.01;
    return;
    }// end function

    public function giveLabel(param1:TextField) : void
    {
    this.amountLabel = param1;
    this.amountLabel.restrict = "0-9\\-";
    this.haveLabel = true;
    return;
    }// end function

    public function setPos(param1:Number, param2:Boolean = false) : void
    {
    param1 = param1 * this.handleRange;
    this.handle.x = param1 + this.handleRangeStart;
    if (!param2)
    {
    this.setAmountLabel();
    }
    return;
    }// end function

    public function setFromLabel() : void
    {
    var _loc_1:Number = NaN;
    var _loc_2:Number = NaN;
    if (this.haveLabel)
    {
    _loc_1 = Number(this.amountLabel.text);
    _loc_1 = Math.min(this.labelRange + this.labelRangeStart, Math.max(this.labelRangeStart, Math.round(_loc_1)));
    _loc_2 = (_loc_1 - this.labelRangeStart) / this.labelRange * this.handleRange;
    this.handle.x = _loc_2 + this.handleRangeStart;
    }
    return;
    }// end function

    public function currentValue(param1:Number = 255) : Number
    {
    return Math.round((this.handle.x - this.handleRangeStart) / this.handleRange * param1) || 0;
    }// end function

    public function handleDragged(event:MouseEvent) : void
    {
    this.draggingHandle = true;
    this.stage.addEventListener(MouseEvent.MOUSE_UP, this.mouseReleased);
    return;
    }// end function

    public function mouseReleased(event:MouseEvent) : void
    {
    if (this.draggingHandle)
    {
    this.handle.x = Math.min(this.handleRangeEnd, Math.max(this.handleRangeStart, this.mouseX));
    if (this.haveLabel)
    {
    this.setAmountLabel();
    }
    dispatchEvent(new Event("sliderChanged"));
    dispatchEvent(new Event("handleReleased"));
    this.draggingHandle = false;
    }
    this.stage.removeEventListener(MouseEvent.MOUSE_UP, this.mouseReleased);
    return;
    }// end function

    public function tick(event:Event) : void
    {
    if (this.draggingHandle)
    {
    this.handle.x = Math.min(this.handleRangeEnd, Math.max(this.handleRangeStart, this.mouseX));
    dispatchEvent(new Event("sliderChanged"));
    if (this.haveLabel)
    {
    this.setAmountLabel();
    }
    }
    return;
    }// end function

    public function setAmountLabel() : void
    {
    var _loc_1:* = this.currentValue() / 255 * this.labelRange + this.labelRangeStart;
    if (this.haveLabel)
    {
    this.amountLabel.text = String(_loc_1);
    }
    return;
    }// end function

    }
    }

    [SCREEN EFFECTS]
    -> Believe this controls that white flash before cumming.
    package obj
    {
    import flash.display.*;
    import flash.events.*;

    public class ScreenEffects extends MovieClip
    {
    public var whiteFlash:MovieClip;
    public var whiteout:MovieClip;
    public var flashing:Boolean = false;
    public var pulsing:Boolean = false;
    public var stoppingPulse:Boolean = false;

    public function ScreenEffects() : void
    {
    this.whiteout.stop();
    this.whiteFlash.stop();
    this.addEventListener(Event.ENTER_FRAME, this.tick);
    return;
    }// end function

    public function showWhiteout(param1:Number) : void
    {
    param1 = Math.min(100, Math.max(1, Math.round(param1)));
    this.whiteout.gotoAndStop(param1);
    return;
    }// end function

    public function showFlash() : void
    {
    this.whiteFlash.gotoAndPlay("flash");
    this.flashing = true;
    this.pulsing = false;
    this.stoppingPulse = false;
    return;
    }// end function

    public function showPulse() : void
    {
    if (!this.pulsing)
    {
    this.whiteFlash.gotoAndPlay("pulse");
    this.stoppingPulse = false;
    this.pulsing = true;
    }
    return;
    }// end function

    public function stopPulse() : void
    {
    if (this.pulsing)
    {
    this.stoppingPulse = true;
    }
    return;
    }// end function

    public function tick(event:Event) : void
    {
    if (this.flashing)
    {
    if (this.whiteFlash.currentLabel == "flashDone")
    {
    this.flashing = false;
    this.whiteFlash.gotoAndStop("normal");
    }
    }
    if (this.pulsing)
    {
    if (this.whiteFlash.currentLabel == "pulseDone")
    {
    if (this.stoppingPulse)
    {
    this.stoppingPulse = false;
    this.pulsing = false;
    this.whiteFlash.gotoAndStop("normal");
    }
    else
    {
    this.whiteFlash.gotoAndPlay("pulse");
    }
    }
    }
    return;
    }// end function

    }
    }
     
  10. Doomknight

    Doomknight Guest

    [SOUND CONTROL]
    -> A bunch of variables for controlling sound effects. Possibly for even adding them.
    public var globalVol:Number = 1;
    public var breathing:Boolean = false;
    public var fadingBreath:Boolean = false;
    public var beingHeld:Boolean = false;
    public var playingInBreath:Boolean;
    public var justStartedBreath:Boolean;
    public var startOnInBreath:Boolean = false;
    public var openCoughing:Boolean = false;
    public var waitingToBreathe:Boolean = false;
    public var cumPlaying:uint;
    public var queuedCoughs:uint = 0;
    public var consecutiveCoughs:uint = 0;
    public var maxConsecutiveCoughs:uint = 1;
    public var quietBreathingLevel:Number = 1;
    public var lastBreath:uint;
    public var lastInBreath:uint;
    public var lastSuddenBreath:uint;
    public var lastRandomGag:uint;
    public var lastRandomHold:uint;
    public var lastRandomCough:uint;
    public var lastRandomOpenCough:uint;
    public var lastRandomDown:uint;
    public var lastRandomSuck:uint;
    public var lastRandomTouch:uint;
    public var lastRandomSplat:uint;
    public var lastRandomPassOut:uint;
    public var lastRandomSwallow:uint;
    public var lastRandomLick:uint;
    public var breathStartTime:int;
    public var leftPan:Number = -0.4;
    public var rightPan:Number = 0.4;
    public var currentBreath:SoundChannel;
    public var currentBreathST:SoundTransform;
    public var currentOpenCough:SoundChannel;
    public var currentBreathVolume:Number;
    public var currentHoldSound:SoundChannel;
    public var currentCum:SoundChannel;
    public var currentCumVolume:Number;
    public var dialogueSound:Sound;
    public var dialogueVol:Number;
    public var dialogueChannel:SoundChannel;
    public var playingDialogue:Boolean = false;
    public var dialogueStartTime:int;
    public var dialogueResumeTime:int;
    public var currentBreathSound:Sound;
    public var customCoughs:Array;
    public var normalBreath:Array;
    public var breatheIn:Array;
    public var fastBreath:Array;
    public var suddenBreath:Array;
    public var quietBreath:Array;
    public var down:Array;
    public var gag:Array;
    public var suck:Array;
    public var touch:Array;
    public var splat:Array;
    public var cough:Array;
    public var openCough:Array;
    public var held:Array;
    public var passOut:Array;
    public var swallow:Array;
    public var lick:Array;
    public var cum:Array;
    public var cumInside:Array;
    public var grab:sfxGrab;
    public var intro:sfxIntro;
    public var moan1:sfxMoan1;
    public var moan2:sfxMoan2;
    public var moanSuck1:sfxMoanSuck1;
    public var moanSuck2:sfxMoanSuck2;
    public var wretch1:sfxWretch1;
    public var wretch2:sfxWretch2;
    public var wretch3:sfxWretch3;
     
  11. Doomknight

    Doomknight Guest

    [HER, Part 1]
    -> Variables dealing with "Her", or Deepthroatee.
    public var earrings:Earrings;
    public var gagBack:MovieClip;
    public var torsoBackCostume:MovieClip;
    public var hairTop:MovieClip;
    public var torso:MovieClip;
    public var gagFront:MovieClip;
    public var eye:MovieClip;
    public var bottomLipstick:MovieClip;
    public var hairMidContainer:MovieClip;
    public var collarContainer:MovieClip;
    public var rightEyebrow:MovieClip;
    public var freckles:Freckles;
    public var tongueContainer:MovieClip;
    public var leftEyebrow:MovieClip;
    public var hairCostumeUnderLayer:MovieClip;
    public var topLipTongue:MovieClip;
    public var leftLegContainer:MovieClip;
    public var blush:MovieClip;
    public var head:MovieClip;
    public var ear:MovieClip;
    public var topLipstickContainer:MovieClip;
    public var torsoUnderCostume:MovieClip;
    public var tears:Tears;
    public var torsoBack:MovieClip;
    public var eyewear:MovieClip;
    public var hairBetweenLayer:MovieClip;
    public var initialised:Boolean = false;
    public var hairBackContainer:HairBackContainer;
    public var rightArmContainer:HerRightArmContainer;
    public var rightForeArmContainer:HerRightForeArmContainer;
    public var leftArmContainer:HerLeftArmContainer;
    public var backModContainer:Sprite;
    public var userHasClicked:uint = 0;
    public var heldTimer:uint = 0;
    public var _tan:Tan;
    public var _penisControl:HerPenisControl;
    public var currentMood:String = "Normal";
    public var deepthroatDistance:Number = 150;
    public var deepthroatStartDistance:Number = 75;
    public var hiltDistance:Number = 0;
    public var releasedPos:Number = -0.15;
    public var maxPos:Number = 1.02;
    public var minPos:Number = -0.25;
    public var pos:Number = 0;
    public var speed:Number = 0;
    public var acceleration:Number = 0;
    public var speedFriction:Number = 0.5;
    public var moveSmoothing:Number = 3;
    public var mouseHeld:Boolean = false;
    public var penisOutDelay:uint = 0;
    public var lastPenisDirection:Number = -1;
    public var penisInMouthDist:Number = 0;
    public var currentPenisTipPos:Number = 0;
    public var mouthLength:Number = 0;
    public var penisTipMouthOffset:Number = 0;
    public var intro:Boolean = true;
    public var introStartDist:Number = 80;
    public var maxIntroDist:Number;
    public var introRelaxDist:Number = 15;
    public var introPosToBeMoved:Boolean = false;
    public var firstDT:Boolean = true;
    public var movement:Number = 0;
    public var absMovement:Number = 0;
    public var previousMovement:Number = 0;
    public var lastYPos:Number;
    public var absYMovement:Number = 0;
    public var vigour:Number = 0;
    public var VIGOUR_WINCE_LEVEL:uint = 1000;
    public var downTravel:Number = 0;
    public var upTravel:Number = 0;
    public var torsoJointAng:Number = 0;
    public var torsoJointDist:Number = 0;
    public var minBodyScale:Number = 0.95;
    public var maxBodyScale:Number = 1.075;
    public var bodyScale:Number = 1;
    public var headTilt:Number = 0;
    public var headTiltScaling:Number = 1;
    public var headTiltTarget:Number = 0;
    public var headTiltAngle:Number = 0;
    public var breathingFactor:Number = 0;
    public var randomMotion:Object;
    public var previousPos:Number = 0;
    public var cheekBulgeTarget:Number = 0;
    public var cheekSuckTarget:Number = 0;
    public var suckPower:Number = 0;
    public var neckSkinOffset:Number = 2;
    public var offActionTimer:uint = 0;
    public var offActionTime:uint = 9000;
    public var noseSquashUp:LinearTween;
    public var noseSquashDown:LinearTween;
    public var currentNoseSquash:LinearTween;
    public var noseSquashAmount:Number = 0;
    public var lastNoseSquash:Boolean = false;
    public var torsoIK:IKController;
    public var leftLegStartPoint:Point;
    public var mHer:Matrix;
    public var mZero:Matrix;
    public var currentArmPosition:uint = 0;
    public var activeArmMovement:Boolean = false;
    public var armsFree:Boolean = false;
    public var armsPushing:Boolean = false;
    public var armsPushPower:Number = 0;
    public var armsPushPowerMax:Number = 40;
    public var armsPushTimer:uint;
    public var rightHandOnLegs:Point;
    public var leftHandOnLegs:Point;
    public var rightHandOnHim:Point;
    public var leftHandOnHim:Point;
    public var leftArmIK:IKController;
    public var rightArmIK:IKController;
    public var leftShoulderPos:Point;
    public var rightShoulderPos:Point;
    public var foreArmPos:Point;
    public var armIKOffset:Point;
    public var armIKOffsetSpeed:Point;
    public var gagged:Boolean = true;
    public var gaggedRotation:Number = 6;
    public var resistance:Object;
    public var previousResistance:Number;
    public var pullOff:Number = 0;
    public var pullOffPower:Object;
    public var pullingOff:Boolean = true;
    public var released:Boolean = true;
    public var coughing:Boolean = false;
    public var coughFactor:Number = 0;
    public var coughBuild:Number = 0;
    public var nextCoughTime:int;
    public var justCoughed:Boolean = false;
    public var startSwallowTimer:uint = 0;
    public var startSwallowTime:uint = 30;
    public var closedJawAngle:Number = -12;
    public var swallowTilt:Number = -0.2;
    public var aboveSwallowTilt:Boolean = false;
    public var jawAngleTarget:Number = 0;
    public var swallowing:Boolean = false;
    public var lipSkinOffset:uint = 0;
    public var jawBulgeTarget:int = 0;
    public var swallowTimer:uint = 0;
    public var swallowPoint:Number = 0;
    public var swallowSequence:Object;
    public var tongue:Tongue;
    public var topTeethTween:LinearTween;
    public var bottomTeethTween:LinearTween;
    public var clenchTeeth:Boolean = false;
    public var clenchTeethRatio:Number = 0;
    public var clenchedTeethTimer:int = 0;
    public var clenchedTeethTime:uint = 0;
    public var speaking:Boolean = false;
    public var speakStopDelay:uint = 0;
    public var targetPhoneme:Object;
    public var phonemeDelay:uint;
    public var lastUpperLipPos:uint = 0;
    public var lastLowerLipPos:uint = 0;
    public var eyeMotion:Object;
    public var eyelidMotion:Object;
    public var eyePosBlink:uint = 150;
    public var eyePosWince:uint = 200;
    public var blinkTime:uint = 1;
    public var blinkTimer:uint = 0;
    public var winceTimer:uint = 0;
    public var lookChangeTimer:int = -1;
    public var cumInEye:uint = 0;
    public var leftEyebrowNormalTween:LinearTween;
    public var rightEyebrowNormalTween:LinearTween;
    public var rightEyebrowAngryTween:LinearTween;
    public var leftEyebrowAngryTween:LinearTween;
    public var eyebrowOffsets:Vector.<uint>;
    public var passedOut:Boolean = false;
    public var passOutFactor:Number = 0;
    public var passOutMax:Number = 40;
    public var leftBreastController:BreastController;
    public var rightBreastController:BreastController;
    public var breastCostumeOn:Boolean = false;
    public var braStrapController:BraStrap;
    public var shoulderStrapController:BraStrap;
    public var topStrapController:BraStrap;
    public var cumInMouth:uint = 0;
    public var maxCumInMouth:uint = 40;
    public var droolingCum:Boolean = false;
    public var startedCumDrool:Boolean = false;
    public var currentCumDrool:Strand;
    public var cumDroolTimer:uint;
    public var cumDrool:uint;
    public var cumDroolNum:uint;
    public var cumDroolLinkFreq:uint = 4;
    public var droolingSpit:Boolean = false;
    public var startedSpitDrool:Boolean = false;
    public var currentSpitDrool:Strand;
    public var spitDroolTimer:uint;
    public var spitDroolLinkFreq:uint = 8;
    public var gagDroolTimer:uint = 0;
    public var wetGenerate:Number = 0;
    public var fullCumInMouth:uint = 25;
    public var minNostrilSpray:uint = 5;
    public var nostrilSpraying:Boolean = false;
    public var nostrilSprayToggle:Boolean = false;
    public var currentNostrilSpray:Strand;
    public var mouthFull:Boolean = false;
    public var held:Boolean = false;
    public var hilt:Boolean = false;
    public var justHilt:Boolean = false;
    public var downPlayed:Boolean = false;
    public var upPlayed:Boolean = false;
    public var breatheDelay:uint;
    public var breatheDelayTime:uint = 10;
    public var breathing:Boolean = true;
    public var topLipA:Point;
    public var topLipB:Point;
    public var midMouth:Point;
    public var bottomLipA:Point;
    public var bottomLipB:Point;
    public var offBottomLip:Point;
    public var eyelidEnd:Point;
    public var eyelidStart:Point;
    public var nostril:Point;
    public var armConnection:Point;
    public var hairLimits:Array;
    public var eyeAim:Point;
    public var hisFace:Point;
    public var eyesDown:Point;
    public var eyesUnfocused:Point;
    public var currentLookTarget:Point;
    public var nextLookTarget:Point;
    public var blankEyed:Boolean = false;
    public var debug:Sprite;
    public static var NORMAL_MOOD:String = "Normal";
    public static var HAPPY_MOOD:String = "Happy";
    public static var ANGRY_MOOD:String = "Angry";
    public static var AHEGAO_MOOD:String = "Ahegao";
    public static var fullUp:Number = -40;
    public static var fullDown:Number = 250;
    public static var range:Number = 290;
    public static var armPositions:Array = ["Back", "On Legs", "On His Legs", "Loose"];
    public static var MouthShapeAH:Object = {name:"AH", upperLip:51, lowerLip:61, jaw:-4.6};
    public static var MouthShapeOO:Object = {name:"OO", upperLip:59, lowerLip:64, jaw:-6.6};
    public static var MouthShapeUH:Object = {name:"UH", upperLip:60, lowerLip:69, jaw:-7};
    public static var MouthShapeOH:Object = {name:"OH", upperLip:45, lowerLip:51, jaw:-2.6};
    public static var MouthShapeEE:Object = {name:"EE", upperLip:71, lowerLip:67, jaw:-8.4};
    public static var MouthShapeFF:Object = {name:"FF", upperLip:65, lowerLip:75, jaw:-9};
    public static var MouthShapeMM:Object = {name:"MM", upperLip:79, lowerLip:75, jaw:-11.6};
    public static var allMouthShapes:Array = [MouthShapeAH, MouthShapeOO, MouthShapeUH, MouthShapeOH, MouthShapeEE, MouthShapeFF, MouthShapeMM];

    [HER, Part 2]
    public function Her() : void
    {
    this.backModContainer = new Sprite();
    this.randomMotion = {pos:0, speed:0, target:0, next:0};
    this.rightHandOnLegs = new Point(150, 60);
    this.leftHandOnLegs = new Point(140, 40);
    this.rightHandOnHim = new Point(-125, 240);
    this.leftHandOnHim = new Point(-125, 300);
    this.armIKOffset = new Point();
    this.armIKOffsetSpeed = new Point();
    this.resistance = {upper:0.01, boundary:0.1, lower:0, multiplier:5};
    this.previousResistance = this.resistance.upper;
    this.pullOffPower = {start:0.001, current:0, increase:5e-005, max:0.008};
    this.swallowSequence = {build:20, swallow:30, relax:40, end:60};
    this.targetPhoneme = MouthShapeUH;
    this.eyeMotion = {ang:83, target:83};
    this.eyelidMotion = {pos:50, shock:0, target:50, isClosed:false, closedTimer:0};
    this.eyebrowOffsets = new Vector.<uint>;
    this.topLipA = new Point(141, -60);
    this.topLipB = new Point(121, -52);
    this.midMouth = new Point(122, -28);
    this.bottomLipA = new Point(138, 74);
    this.bottomLipB = new Point(146, 33);
    this.offBottomLip = new Point(144, 68);
    this.eyelidEnd = new Point(84, -115);
    this.eyelidStart = new Point(41, -136);
    this.nostril = new Point(135, 68);
    this.armConnection = new Point(-7, -221);
    this.hairLimits = [-0.5, -1, 0.5];
    this.eyeAim = new Point(16, -138);
    this.hisFace = new Point(800, -270);
    this.eyesDown = new Point(800, 160);
    this.eyesUnfocused = new Point(900, 0);
    this.currentLookTarget = this.hisFace;
    this.nextLookTarget = this.hisFace;
    this.leftBreastController = new BreastController(this.torsoBack.leftBreast, this.torsoBackCostume.breastCostume);
    this.rightBreastController = new BreastController(this.torso.midLayer.rightBreast, this.torso.breastCostume, this.torso.topContainer.breastTop);
    this.torso.back.cacheAsBitmap = true;
    this.torso.backMask.cacheAsBitmap = true;
    this.torso.back.mask = this.torso.backMask;
    this.backModContainer.name = "backModContainer";
    this.backModContainer.x = this.torso.back.x;
    this.backModContainer.y = this.torso.back.y;
    this.backModContainer.rotation = this.torso.back.rotation;
    this.torso.addChildAt(this.backModContainer, (this.torso.getChildIndex(this.torso.back) + 1));
    this.leftEyebrowNormalTween = new LinearTween(this.leftEyebrow);
    this.rightEyebrowNormalTween = new LinearTween(this.rightEyebrow, this.eye.eyebrowMask);
    this.leftEyebrowAngryTween = new LinearTween(this.leftEyebrow);
    this.rightEyebrowAngryTween = new LinearTween(this.rightEyebrow, this.eye.eyebrowMask);
    this.leftEyebrowAngryTween.skewStart(-4.2, -71.9, 0.627, 0.997);
    this.leftEyebrowAngryTween.offsetStart(1, -2.25);
    this.leftEyebrowAngryTween.skewEnd(0, -63.4, 1, 0.557);
    this.leftEyebrowAngryTween.offsetEnd(-2.25, 15.25);
    this.rightEyebrowAngryTween.offsetStart(0, 0, 26);
    this.rightEyebrowAngryTween.offsetEnd(14, 8, 38);
    this.topTeethTween = new LinearTween(this.head.teeth);
    this.topTeethTween.offsetEnd(-8.2, 13.44);
    this.bottomTeethTween = new LinearTween(this.head.jaw.teeth);
    this.bottomTeethTween.offsetEnd(5.1, -8.2);
    this.noseSquashUp = new LinearTween(this.head.face.nose, this.head.headTan.face.nose);
    this.noseSquashUp.skewEnd(2.9, -11.6, 0.762, 1.041);
    this.noseSquashUp.offsetEnd(1.75, 2);
    this.noseSquashDown = new LinearTween(this.head.face.nose, this.head.headTan.face.nose);
    this.noseSquashDown.skewEnd(-2, 11.5, 0.712, 1.02);
    this.noseSquashDown.offsetEnd(3.5, 2);
    this.currentNoseSquash = this.noseSquashUp;
    this.x = fullUp;
    this.y = 275;
    this.tongue = this.tongueContainer.tongue;
    this.torsoIK = new IKController(this, this.torso, this.torso.leg, this.torso.rightCalfContainer.calf);
    this.updateKneeTarget();
    this.torsoIK.rescale(this.bodyScale);
    this.leftLegStartPoint = new Point(this.leftLegContainer.leg.x, this.leftLegContainer.leg.y);
    this.tears.addLowerEyelidMascaraLayer(this.eye.lowerEyelid.mascaraContainer);
    g.hairUnderLayer = this.hairMidContainer.hairUnderLayer;
    g.hairBetweenLayer = this.hairBetweenLayer;
    g.hairUnder = this.hairMidContainer.hairUnder;
    g.hairBottom = this.hairMidContainer.hairBottom;
    g.hairCostumeUnder = this.hairCostumeUnderLayer;
    g.characterControl.addBreastSizeChangeListener(this.breastSizeChanged);
    g.characterControl.braControl.registerListener(this.breastCostumeChanged);
    g.characterControl.topControl.registerListener(this.breastCostumeChanged);
    this.braStrapController = new BraStrap(this.torso.braStrap, this.torso.breastCostume.bra, "strapPoint", g.characterControl.braControl);
    this.shoulderStrapController = new BraStrap(this.torso.shoulderStrap, this.torso.breastCostume.bra, "shoulderStrapPoint", g.characterControl.braControl);
    this.topStrapController = new BraStrap(this.torso.topContainer.topStrap, this.torso.topContainer.breastTop, "strapPoint", g.characterControl.topControl);
    this.torso.nipplePiercing.setLimit(20);
    this.torso.leftNipplePiercing.setLimit(20);
    this.torso.chestCostume.bellyPiercing.setLimit(30);
    this.head.face.gotoAndStop("Normal");
    this.head.headTan.face.gotoAndStop("Normal");
    EventBus.addListener("penisTipPosChanged", this.updatePenisTipPos);
    this.freckles.cacheAsBitmap = true;
    return;
    }// end function
     
  12. Doomknight

    Doomknight Guest

    [HIM, Part 1]
    -> Variables dealing with "Him" / "Him Futa" or the Deepthroater.
    public var topBack:MovieClip;
    public var rightLegCostume:MovieClip;
    public var straponStraps:MovieClip;
    public var midLayer:MovieClip;
    public var leftLegCostume:MovieClip;
    public var balls:Balls;
    public var penis:MovieClip;
    public var torsoLayer:MovieClip;
    public var rightLeg:MovieClip;
    public var leftLeg:MovieClip;
    public var currentBody:IHimBody;
    public var bodies:Array;
    public var characterMenu:MovieClip;
    public var bodyNameList:Array;
    public var currentBodyID:uint = 0;
    public var currentArmPosition:uint = 0;
    public var lastSelectedArmPosition:uint = 0;
    public var currentLeftArmPosition:uint = 1;
    public var penisMask:HimMask;
    public var overLayer:HimOverLayer;
    public var armContainer:HimArmContainer;
    public var leftArmContainer:HimLeftArmContainer;
    public var bentPenis:BentPenis;
    public var bpMask:BentPenisMask;
    public var deepestPos:Number = 0;
    public var MIN_PENIS_SIZE:Number = 0.7;
    public var MAX_PENIS_SIZE:Number = 1.2;
    public var currentPenisLengthScale:Number = 1;
    public var currentPenisWidthScale:Number = 1;
    public var penisPullScale:Number = 0;
    public var MIN_BALL_SIZE:Number = 0.5;
    public var MAX_BALL_SIZE:Number = 1.3;
    public var currentBallSize:Number = 1;
    public var penisNameList:Array;
    public var currentPenis:Penis;
    public var penisControl:CharacterElementHelper;
    public var penisType1:Penis;
    public var penisType2:Penis;
    public var penisTypes:Array;
    public var ballsNameArray:Array;
    public var currentBalls:uint = 0;
    public var penisTilt:Number = 0;
    public var penisTiltSpeed:Number = 0;
    public var penisTiltTarget:Number = 0;
    public var inMouthTiltOffset:Number = 0;
    public var mouthConstraintSmoothing:Number = 0;
    public var twitchFactor:Number = 0;
    public var twitching:Boolean = false;
    public var pleasure:Number = 0;
    public var ejacPleasure:Number = 140;
    public var buildUp:Number = 0;
    public var maxPleasureTimer:uint = 0;
    public var inMouth:Boolean;
    public var handOpen:Boolean = true;
    public var ejaculating:Boolean = false;
    public var ejaculation:Array;
    public var playingCumSound:Boolean = false;
    public var spurting:Boolean = false;
    public var startedSpurt:Boolean = false;
    public var currentSpurt:Strand;
    public var spurtTimer:uint;
    public var spurtTimerStart:uint;
    public var spurt:uint;
    public var randomSpurtAngle:Number;
    public var randomSpurtAngleRange:Number;
    public var randomSpurtSpeed:Number;
    public var randomSpurtCollisionDelay:uint;
    public var spurtNum:uint;
    public var linkFreq:uint = 2;
    public var pauseTimer:uint;
    public var startSpeed:Point;
    public var timerScale:Number;
    public var bmEjaculating:Boolean = false;
    public var bmSpurtAngle:Number = 3.34159;
    public var bmTimerStart:uint = 30;
    public var bmTimer:uint = 0;
    public var lipstickData:BitmapData;
    public var lipstickLayer:Bitmap;
    public var lipstickCounter:uint = 0;
    public var lipstickBlur:BlurFilter;
    public var lipstickRGB:ColorTransform;
    public var smearGraphic:LipstickSmear;
    public var baseA:Point;
    public var baseB:Point;
    public var tipA:Point;
    public var tipB:Point;
    public var tipMid:Point;
    public static var armPositions:Array = ["Holding", "Free"];
    public static var leftArmPositions:Array = ["Hidden", "Loose"];
    public static var DEFAULT_PENIS_SIZE:Number = 1;
    public static var DEFAULT_BALL_SIZE:Number = 1;

    [HIM, Part 2]
    public function Him() : void
    {
    this.bodyNameList = ["Male", "Female"];
    this.penisNameList = ["Penis A", "Penis B", "Strapon"];
    this.ballsNameArray = ["None", "Normal"];
    this.lipstickBlur = new BlurFilter(3.5, 1);
    this.baseA = new Point(-5, 37);
    this.baseB = new Point(-13, -36);
    this.tipA = new Point(-317, 7);
    this.tipB = new Point(-310, -27);
    this.tipMid = new Point(-324, -11);
    this.x = 420;
    this.y = 135;
    this.penisMask = new HimMask();
    this.addChild(this.penisMask);
    this.penis.mask = this.penisMask;
    this.lipstickData = new BitmapData(350, 120, true, 0);
    this.lipstickLayer = new Bitmap(this.lipstickData, "auto", true);
    this.penis.lipstickElements.lipstickContainer.addChild(this.lipstickLayer);
    this.lipstickLayer.alpha = 0.8;
    this.smearGraphic = new LipstickSmear();
    this.penisType1 = new Penis(this.penis, new Point(-315, 0));
    this.penisType1.defineWidth(-321.9, -19.3, 23.4);
    this.penisType1.defineWidth(-309.5, -29.3, 44.8);
    this.penisType1.defineWidth(-291.8, -33.5, 52.5);
    this.penisType1.defineWidth(-269.5, -39.2, 60.9);
    this.penisType1.defineWidth(-261.5, -33.3, 56.6);
    this.penisType1.defineWidth(-168.4, -36.6, 71.5);
    this.penisType1.defineWidth(-31.3, -36.3, 74.6);
    this.penisType2 = new Penis(this.penis, new Point(-315, 0));
    this.penisType2.defineWidth(-318.7, -23.8, 29);
    this.penisType2.defineWidth(-293.8, -36, 55.1);
    this.penisType2.defineWidth(-286.2, -36.9, 57.4);
    this.penisType2.defineWidth(-249.2, -45, 68.6);
    this.penisType2.defineWidth(-242.7, -40.6, 65.4);
    this.penisType2.defineWidth(-154.6, -38.2, 73);
    this.penisType2.defineWidth(-27.7, -37.5, 75);
    this.penisTypes = [this.penisType1, this.penisType2, this.penisType1];
    this.currentPenis = this.penisType1;
    this.setBalls(0);
    this.penisControl = new CharacterElementHelper(this.penisNameList, this.setPenis);
    this.penisControl.setStartRGB(new AlphaRGBObject(1, 204, 94, 147));
    this.penisControl.registerComponents([this.penis], "", false);
    return;
    }// end function
     
  13. Doomknight

    Doomknight Guest

    [DROPDOWN]
    -> Code dealing with Drop Down Boxes.
    package obj.ui
    {
    import flash.display.*;
    import flash.events.*;
    import flash.text.*;

    public class Dropdown extends Sprite
    {
    private var currentSelection:String;
    private var selectedLine:DropdownMenuItem;
    private var showSelectionInLabel:Boolean = true;
    private var itemLines:Array;
    private var lineScroller:ScrollingArea;
    private var windowContainer:Sprite;
    private var windowMask:Sprite;
    private var lineContainer:Sprite;
    private var animateWindow:int;
    private var menuOpen:Boolean = false;
    private var selectionListeners:Array;
    private var arrowButton:DisplayObject;
    private var dropdownWindow:DisplayObject;
    private var dropdownLabel:TextField;

    public function Dropdown() : void
    {
    this.selectionListeners = new Array();
    this.arrowButton = this.getArrowButton();
    this.dropdownWindow = this.getDropdownWindow();
    this.dropdownLabel = this.getDropdownLabel();
    this.dropdownWindow.visible = true;
    this.dropdownLabel.mouseEnabled = false;
    this.arrowButton.addEventListener(MouseEvent.CLICK, this.arrowClicked);
    this.windowContainer = new Sprite();
    this.windowContainer.x = this.dropdownWindow.x;
    this.windowContainer.y = this.dropdownWindow.y;
    this.dropdownWindow.x = 0;
    this.dropdownWindow.y = 0;
    removeChild(this.dropdownWindow);
    this.windowContainer.addChild(this.dropdownWindow);
    this.lineContainer = new Sprite();
    this.windowContainer.addChild(this.lineContainer);
    this.windowMask = new Sprite();
    this.windowMask.graphics.beginFill(0, 1);
    this.windowMask.graphics.drawRect(0, 0, this.windowContainer.width + 20, 100);
    this.windowMask.x = this.windowContainer.x - 10;
    this.windowMask.y = this.windowContainer.y;
    var _loc_1:int = 1;
    this.windowMask.height = 1;
    this.windowMask.height = _loc_1;
    addChild(this.windowMask);
    this.windowContainer.mask = this.windowMask;
    addChild(this.windowContainer);
    this.windowContainer.alpha = 0;
    addEventListener(Event.ENTER_FRAME, this.tick);
    return;
    }// end function

    protected function getArrowButton() : DisplayObject
    {
    return this["dropdownButton"];
    }// end function

    protected function getDropdownWindow() : DisplayObject
    {
    return this["dropdownWindow"];
    }// end function

    protected function getDropdownLabel() : TextField
    {
    return this["dropdownLabel"];
    }// end function

    private function tick(event:Event) : void
    {
    if (this.animateWindow == 1)
    {
    this.windowContainer.alpha = Math.min(1, this.windowContainer.alpha + 0.2);
    this.windowMask.height = this.windowMask.height + Math.max(5, (this.windowContainer.height + 10 - this.windowMask.height) * 0.5);
    if (this.windowContainer.alpha == 1 && this.windowMask.height > this.windowContainer.height + 9)
    {
    this.windowMask.height = this.windowContainer.height + 10;
    this.animateWindow = 0;
    }
    }
    else if (this.animateWindow == -1)
    {
    this.windowContainer.alpha = Math.max(0, this.windowContainer.alpha - 0.2);
    this.windowMask.height = this.windowMask.height + Math.min(-5, (1 - this.windowMask.height) * 0.5);
    if (this.windowContainer.alpha == 0 && this.windowMask.height < 2)
    {
    this.windowMask.height = 1;
    this.animateWindow = 0;
    }
    }
    return;
    }// end function

    public function addSelectionListener(param1:Function) : void
    {
    this.selectionListeners.push(param1);
    return;
    }// end function

    public function setLabel(param1:String, param2:Boolean = false) : void
    {
    this.dropdownLabel.text = param1;
    this.showSelectionInLabel = !param2;
    return;
    }// end function

    public function setItems(param1:Array) : void
    {
    var _loc_2:DropdownMenuItem = null;
    var _loc_3:uint = 0;
    var _loc_4:uint = 0;
    for each (_loc_2 in this.itemLines)
    {

    this.lineContainer.removeChild(_loc_2);
    }
    this.itemLines = new Array();
    _loc_3 = param1.length;
    _loc_4 = 0;
    while (_loc_4 < _loc_3)
    {

    _loc_2 = new DropdownMenuItem(param1[_loc_4], this.itemClicked);
    _loc_2.y = 20 * _loc_4;
    this.lineContainer.addChild(_loc_2);
    this.itemLines.push(_loc_2);
    _loc_4 = _loc_4 + 1;
    }
    this.dropdownWindow.height = 20 * Math.min(10, _loc_3);
    if (!this.lineScroller)
    {
    this.lineScroller = new ScrollingArea(this.dropdownWindow.width - 5, this.dropdownWindow.height, this.lineContainer);
    this.windowContainer.addChild(this.lineScroller);
    }
    this.lineScroller.updateContent();
    return;
    }// end function

    public function select(param1:String) : void
    {
    var _loc_2:DropdownMenuItem = null;
    if (this.showSelectionInLabel)
    {
    this.dropdownLabel.text = param1;
    }
    for each (_loc_2 in this.itemLines)
    {

    if (_loc_2.labelText == param1)
    {
    _loc_2.select();
    this.selectedLine = _loc_2;
    this.currentSelection = _loc_2.labelText;
    continue;
    }
    _loc_2.select(false);
    }
    return;
    }// end function

    private function arrowClicked(event:MouseEvent) : void
    {
    if (this.menuOpen)
    {
    this.closeMenu();
    }
    else
    {
    this.openMenu();
    }
    return;
    }// end function

    private function itemClicked(param1:DropdownMenuItem) : void
    {
    var _loc_2:Function = null;
    var _loc_3:DropdownMenuItem = null;
    this.currentSelection = param1.labelText;
    this.selectedLine = param1;
    this.closeMenu();
    if (this.showSelectionInLabel)
    {
    this.dropdownLabel.text = param1.labelText;
    for each (_loc_3 in this.itemLines)
    {

    _loc_3.select(false);
    }
    param1.select(true);
    }
    for each (_loc_2 in this.selectionListeners)
    {

    this._loc_2(this.currentSelection);
    }
    return;
    }// end function

    private function globalClick(event:MouseEvent) : void
    {
    if (!contains(event.target as DisplayObject))
    {
    this.closeMenu();
    }
    return;
    }// end function

    private function openMenu() : void
    {
    if (!this.menuOpen)
    {
    this.animateWindow = 1;
    this.menuOpen = true;
    if (this.selectedLine)
    {
    this.lineScroller.jumpTo(this.selectedLine);
    }
    stage.addEventListener(MouseEvent.CLICK, this.globalClick);
    }
    return;
    }// end function

    private function closeMenu() : void
    {
    if (this.menuOpen)
    {
    this.animateWindow = -1;
    stage.removeEventListener(MouseEvent.CLICK, this.globalClick);
    this.menuOpen = false;
    }
    return;
    }// end function

    public function get selection() : String
    {
    return this.currentSelection;
    }// end function

    }
    }
     
  14. Doomknight

    Doomknight Guest

    [MOD FILE PATH ENTRY]
    package obj.ui
    {
    import flash.display.*;
    import flash.events.*;
    import flash.filters.*;
    import flash.text.*;
    import obj.*;

    public class ModFilePathEntry extends MovieClip
    {
    public var mbRecheck:MenuResetButton;
    public var textBackground:MovieClip;
    public var pathTF:TextField;
    public var elementLabel:TextField;
    public var modType:String;
    private var enteredPath:String;
    private var modPackage:LoadedModPackage;
    private var editable:Boolean = false;
    private var checkDefaultFolders:Boolean = false;
    private var defaultFolder:uint = 0;
    private var redGlow:GlowFilter;
    private var greenGlow:GlowFilter;
    private var labelWidth:Number;
    private var scrollingLabel:Boolean = false;
    private var labelScrollSpeed:Number;
    private const labelScrollDelay:uint = 30;
    private var labelScrollTicker:uint;

    public function ModFilePathEntry(param1:String, param2:LoadedModPackage) : void
    {
    this.redGlow = new GlowFilter(14168624, 1, 4, 4, 2, 2);
    this.greenGlow = new GlowFilter(7864151, 1, 4, 4, 2, 2);
    this.modType = param1;
    this.modPackage = param2;
    if (this.modPackage.titleString)
    {
    this.elementLabel.text = this.modPackage.titleString;
    }
    else
    {
    this.elementLabel.text = this.modType + " Filepath";
    }
    this.elementLabel.autoSize = TextFieldAutoSize.LEFT;
    this.labelWidth = this.elementLabel.textWidth;
    if (this.labelWidth > 100)
    {
    this.labelScrollTicker = this.labelScrollDelay;
    this.labelScrollSpeed = -1;
    this.scrollingLabel = true;
    this.addEventListener(Event.ENTER_FRAME, this.scrollLabel);
    }
    this.pathTF.addEventListener(FocusEvent.FOCUS_IN, this.textFieldFocusIn);
    this.pathTF.addEventListener(FocusEvent.FOCUS_OUT, this.textFieldFocusOut);
    if (this.modPackage.hasFilePath())
    {
    this.enteredPath = this.modPackage.path;
    this.pathTF.text = this.enteredPath;
    this.pathTF.type = TextFieldType.DYNAMIC;
    this.textBackground.filters = [this.greenGlow];
    this.mbRecheck.visible = false;
    }
    else
    {
    this.enteredPath = this.modPackage.fileName;
    this.pathTF.text = this.enteredPath;
    this.textBackground.filters = [this.redGlow];
    this.mbRecheck.addEventListener(MouseEvent.CLICK, this.mbRecheckClicked);
    this.pathTF.addEventListener(KeyboardEvent.KEY_UP, this.pathTyped);
    this.editable = true;
    this.checkDefaultFolders = true;
    this.recheck();
    }
    return;
    }// end function

    private function scrollLabel(event:Event) : void
    {
    if (this.labelScrollTicker > 0)
    {
    var _loc_2:String = this;
    var _loc_3:* = this.labelScrollTicker - 1;
    _loc_2.labelScrollTicker = _loc_3;
    }
    else
    {
    this.elementLabel.x = this.elementLabel.x + this.labelScrollSpeed;
    if (this.labelScrollSpeed < 0 && this.elementLabel.x <= -this.labelWidth + 90 || this.labelScrollSpeed > 0 && this.elementLabel.x >= 0)
    {
    this.labelScrollSpeed = -this.labelScrollSpeed;
    this.labelScrollTicker = this.labelScrollDelay;
    }
    }
    return;
    }// end function

    public function dataString() : String
    {
    return this.modPackage.dataString();
    }// end function

    public function kill() : void
    {
    if (this.editable)
    {
    this.makeUneditable();
    }
    if (this.scrollingLabel)
    {
    this.removeEventListener(Event.ENTER_FRAME, this.scrollLabel);
    }
    this.pathTF.removeEventListener(FocusEvent.FOCUS_IN, this.textFieldFocusIn);
    this.pathTF.removeEventListener(FocusEvent.FOCUS_OUT, this.textFieldFocusOut);
    this.modPackage = null;
    this.parent.removeChild(this);
    return;
    }// end function

    public function recheckWithFolders() : void
    {
    this.checkDefaultFolders = true;
    this.recheck();
    return;
    }// end function

    private function makeUneditable() : void
    {
    this.mbRecheck.visible = false;
    this.pathTF.type = TextFieldType.DYNAMIC;
    this.mbRecheck.removeEventListener(MouseEvent.CLICK, this.mbRecheckClicked);
    this.pathTF.removeEventListener(KeyboardEvent.KEY_UP, this.pathTyped);
    return;
    }// end function

    private function textFieldFocusIn(event:FocusEvent) : void
    {
    g.inTextField = true;
    return;
    }// end function

    private function textFieldFocusOut(event:FocusEvent) : void
    {
    g.inTextField = false;
    return;
    }// end function

    private function mbRecheckClicked(event:MouseEvent) : void
    {
    this.checkDefaultFolders = false;
    this.recheck();
    return;
    }// end function

    private function pathTyped(event:KeyboardEvent) : void
    {
    this.enteredPath = this.pathTF.text;
    if (event.charCode == 13)
    {
    this.checkDefaultFolders = false;
    this.recheck();
    }
    return;
    }// end function

    public function get pathOkay() : Boolean
    {
    return this.modPackage.hasFilePath();
    }// end function

    private function recheck() : void
    {
    if (this.checkDefaultFolders && g.defaultModFolders.length > 0)
    {
    this.pathTF.text = "Trying " + g.defaultModFolders[this.defaultFolder] + this.enteredPath;
    this.modPackage.tryToLoadFilePath(g.defaultModFolders[this.defaultFolder] + this.enteredPath, this.errorHandler, this.successHandler);
    }
    else
    {
    this.pathTF.text = "Trying " + this.enteredPath;
    this.modPackage.tryToLoadFilePath(this.enteredPath, this.errorHandler, this.successHandler);
    }
    return;
    }// end function

    private function errorHandler(event:Event) : void
    {
    if (this.checkDefaultFolders)
    {
    var _loc_2:String = this;
    var _loc_3:* = this.defaultFolder + 1;
    _loc_2.defaultFolder = _loc_3;
    if (this.defaultFolder >= g.defaultModFolders.length)
    {
    this.checkDefaultFolders = false;
    }
    this.recheck();
    }
    this.pathTF.text = this.enteredPath;
    dispatchEvent(new Event("UPDATED"));
    this.textBackground.filters = [this.redGlow];
    return;
    }// end function

    private function successHandler(event:Event) : void
    {
    if (this.checkDefaultFolders)
    {
    this.pathTF.text = g.defaultModFolders[this.defaultFolder] + this.enteredPath;
    }
    else
    {
    this.pathTF.text = this.enteredPath;
    }
    dispatchEvent(new Event("UPDATED"));
    this.makeUneditable();
    this.textBackground.filters = [this.greenGlow];
    return;
    }// end function

    }
    }
     
  15. Doomknight

    Doomknight Guest

    [PENIS]
    -> Everything to do with the penis.
    package obj.him
    {
    import __AS3__.vec.*;
    import flash.display.*;
    import flash.geom.*;
    import obj.*;

    public class Penis extends Object
    {
    public var _sourceGraphic:DisplayObject;
    public var _tip:Point;
    public var _length:Number;
    public var _fullLength:Number;
    public var _widths:Vector.<WidthDefinition>;
    public var _baseWidth:Number = 0;
    public var _basePos:Number;
    public var debug:Sprite;

    public function Penis(param1:DisplayObject, param2:Point) : void
    {
    this._basePos = -Number.MAX_VALUE;
    this._sourceGraphic = param1;
    this._tip = param2;
    this._length = Maths.vectorLength(this._tip);
    this._fullLength = this._length;
    this._widths = new Vector.<WidthDefinition>;
    return;
    }// end function

    public function getGlobalTip(param1:Number = 0, param2:Number = 0) : Point
    {
    var _loc_3:* = new Point(this._tip.x + param1, this._tip.y + param2);
    return this._sourceGraphic.localToGlobal(_loc_3);
    }// end function

    public function get length() : Number
    {
    return this._length;
    }// end function

    public function get fullLength() : Number
    {
    return this._fullLength;
    }// end function

    public function get baseWidth() : Number
    {
    return this._baseWidth;
    }// end function

    public function defineWidth(param1:Number, param2:Number, param3:Number) : void
    {
    this._widths.push(new WidthDefinition(param1, param2, param3));
    if (param1 > this._basePos)
    {
    this._baseWidth = param3;
    this._basePos = param1;
    }
    this._fullLength = Math.max(this._fullLength, this._basePos - param1);
    return;
    }// end function

    public function getPenisWidth(param1:Point, param2:Point) : Object
    {
    var _loc_6:WidthDefinition = null;
    var _loc_7:WidthDefinition = null;
    var _loc_8:WidthDefinition = null;
    var _loc_9:Number = NaN;
    var _loc_10:Number = NaN;
    var _loc_14:Number = NaN;
    var _loc_15:Number = NaN;
    var _loc_3:* = this._sourceGraphic.globalToLocal(param1);
    var _loc_4:* = this._sourceGraphic.globalToLocal(param2);
    var _loc_5:* = _loc_3.x;
    for each (_loc_8 in this._widths)
    {

    if (_loc_8.lengthPos < _loc_5)
    {
    if (!_loc_6 || _loc_6.lengthPos < _loc_8.lengthPos)
    {
    _loc_6 = _loc_8;
    }
    continue;
    }
    if (!_loc_7 || _loc_7.lengthPos > _loc_8.lengthPos)
    {
    _loc_7 = _loc_8;
    }
    }
    if (_loc_6 && _loc_7)
    {
    _loc_14 = _loc_7.lengthPos - _loc_6.lengthPos;
    _loc_15 = (_loc_5 - _loc_6.lengthPos) / _loc_14;
    _loc_9 = _loc_6.positionWidth + _loc_15 * (_loc_7.positionWidth - _loc_6.positionWidth);
    _loc_10 = _loc_6.startY + _loc_15 * (_loc_7.startY - _loc_6.startY);
    }
    else if (_loc_6)
    {
    _loc_9 = _loc_6.positionWidth;
    _loc_10 = _loc_6.startY;
    }
    else if (_loc_7)
    {
    _loc_9 = _loc_7.positionWidth;
    _loc_10 = _loc_7.startY;
    }
    else
    {
    _loc_9 = 0;
    _loc_10 = 0;
    }
    var _loc_11:* = _loc_10 - _loc_3.y - 5;
    var _loc_12:* = _loc_10 + _loc_9 - _loc_4.y + 5;
    var _loc_13:* = 90 + Maths.getAngle(_loc_5, Math.min(0, _loc_11) * Math.abs(_loc_5 / this._fullLength));
    _loc_13 = 90 + Maths.getAngle(_loc_5, Math.min(0, _loc_11) * Math.abs(_loc_5 / this._fullLength)) + (90 + Maths.getAngle(_loc_5, Math.max(0, _loc_12) * Math.abs(_loc_5 / this._fullLength)));
    _loc_13 = Maths.normaliseAngle(_loc_13);
    return {width:_loc_9, startY:_loc_10, topOffset:_loc_11, bottomOffset:_loc_12, pos:_loc_5, angOffset:_loc_13};
    }// end function

    }
    }

    class WidthDefinition extends Object
    {
    public var lengthPos:Number;
    public var startY:Number;
    public var positionWidth:Number;

    function WidthDefinition(param1:Number, param2:Number, param3:Number) : void
    {
    this.lengthPos = param1;
    this.startY = param2;
    this.positionWidth = param3;
    return;
    }// end function

    }

    [BALLS]
    -> Everything to do with His Balls.
    package obj.him
    {
    import flash.display.*;
    import flash.geom.*;

    public class Balls extends Sprite
    {
    public var leftHighlight:MovieClip;
    public var rightHighlight:MovieClip;
    public var leftOutline:MovieClip;
    public var rightOutline:MovieClip;
    public var leftFill:MovieClip;
    public var rightFill:MovieClip;
    public var G:Number = 3;
    public var PUSH:Number = 0.08;
    public var FRICTION:Number = 0.8;
    public var leftBallPos:Point;
    public var leftBallSpeed:Point;
    public var rightBallPos:Point;
    public var rightBallSpeed:Point;
    public var posDiff:Point;
    public var leftBallRatio:Number = 0;
    public var leftBallRatioChange:Number = 0;
    public var rightBallRatio:Number = 0;
    public var rightBallRatioChange:Number = 0;

    public function Balls() : void
    {
    this.leftBallPos = new Point();
    this.leftBallSpeed = new Point();
    this.rightBallPos = new Point();
    this.rightBallSpeed = new Point();
    this.posDiff = new Point();
    return;
    }// end function

    public function pushBalls(param1:Number = 0, param2:Number = 0) : void
    {
    this.leftBallSpeed.x = this.leftBallSpeed.x + param1 * this.leftBallRatio;
    this.leftBallSpeed.y = this.leftBallSpeed.y + param2 * this.leftBallRatio;
    this.rightBallSpeed.x = this.rightBallSpeed.x + param1 * this.rightBallRatio;
    this.rightBallSpeed.y = this.rightBallSpeed.y + param2 * this.rightBallRatio;
    return;
    }// end function

    public function update() : void
    {
    this.leftBallRatioChange = this.leftBallRatioChange + (Math.random() - 0.5) * 0.1;
    this.leftBallRatioChange = Math.min(0.1, Math.max(-0.1, this.leftBallRatioChange));
    this.leftBallRatio = this.leftBallRatio + this.leftBallRatioChange;
    this.leftBallRatio = Math.min(1, Math.max(1 - this.rightBallRatio, this.leftBallRatio));
    this.rightBallRatioChange = this.rightBallRatioChange + (Math.random() - 0.5) * 0.1;
    this.rightBallRatioChange = Math.min(0.1, Math.max(-0.1, this.rightBallRatioChange));
    this.rightBallRatio = this.rightBallRatio + this.rightBallRatioChange;
    this.rightBallRatio = Math.min(1, Math.max(1 - this.leftBallRatio, this.rightBallRatio));
    this.updateBall(this.leftBallPos, this.leftBallSpeed, this.leftHighlight, this.leftFill, this.leftOutline);
    this.updateBall(this.rightBallPos, this.rightBallSpeed, this.rightHighlight, this.rightFill, this.rightOutline);
    this.posDiff.x = this.leftBallPos.x - this.rightBallPos.x;
    this.posDiff.y = this.leftBallPos.y - this.rightBallPos.y;
    this.leftBallSpeed.x = this.leftBallSpeed.x - this.posDiff.x * 0.05;
    this.leftBallSpeed.y = this.leftBallSpeed.y - this.posDiff.y * 0.05;
    this.rightBallSpeed.x = this.rightBallSpeed.x + this.posDiff.x * 0.05;
    this.rightBallSpeed.y = this.rightBallSpeed.y + this.posDiff.y * 0.05;
    return;
    }// end function

    public function updateBall(param1:Point, param2:Point, param3:Sprite, param4:Sprite, param5:Sprite) : void
    {
    param2.x = param2.x - param1.x * 0.2;
    param2.y = param2.y + (this.G - param1.y * 0.2);
    param2.x = param2.x * this.FRICTION;
    param2.y = param2.y * this.FRICTION;
    param1.x = param1.x + param2.x;
    param1.y = param1.y + param2.y;
    param3.scaleY = 1 + param1.y * 0.012;
    param3.y = param1.y * 0.2;
    param4.scaleY = 1 + param1.y * 0.012;
    param5.scaleY = 1 + param1.y * 0.012;
    param3.rotation = (-param1.x) * 20;
    param4.rotation = (-param1.x) * 20;
    param5.rotation = (-param1.x) * 20;
    return;
    }// end function

    public function setSkin(param1:String) : void
    {
    this.leftFill.gotoAndStop(param1);
    this.leftHighlight.gotoAndStop(param1);
    this.rightFill.gotoAndStop(param1);
    this.rightHighlight.gotoAndStop(param1);
    return;
    }// end function

    }
    }

    [HER PENIS CONTROL]
    -> I'd assume this is for the HER Futa model.
    public var MIN_PENIS_SIZE:Number = 0.7;
    public var MAX_PENIS_SIZE:Number = 1.2;
    public var SCALING_RANGE:Number = 0.5;
    public var currentPenisLengthScale:Number = 0.85;
    public var currentPenisWidthScale:Number = 0.85;
    public var weightScaling:Number = 1;
    public var penisNameList:Array;
    public var penisControl:CharacterElementHelper;
    public var characterMenu:MovieClip;
    public var penisMenu:MovieClip;
    public var penisContainer:MovieClip;
    public var penis:MovieClip;
    public var MIN_PENIS_ANGLE:Number = -24;
    public var angSpeed:Number = 0;
    public var torsoAngle:Number = 0;
    public var lastTorsoAngle:Number = 0;
    public var wearingNone:Boolean;
    public static var DEFAULT_PENIS_SIZE:Number = 0.85;
     
  16. Doomknight

    Doomknight Guest

    [HIM MALE BODY]
    -> A lot of stuff here. Dunno what is or isn't useful. May be useful for those that want to REPLACE the HIM model.
    package obj.him.bodies
    {
    import flash.events.*;
    import flash.geom.*;
    import obj.*;
    import obj.animation.*;

    public class HimMaleBody extends HimBody
    {
    protected var armPos:Number = 0;
    protected var armSpeed:Number = 0;
    protected var lastX:Number;
    protected var xMovement:Number = 0;
    protected var rightArmIK:IKController;
    protected var leftArmIK:IKController;
    protected var shoulderPoint:Point;
    protected var leftArmDefaultPoint:Point;
    protected var leftArmTarget:Point;
    protected var leftArmSpeed:Point;
    protected var mHim:Matrix;
    protected var mLeg:Matrix;
    protected var mCalf:Matrix;
    protected var mFoot:Matrix;
    protected var mArm:Matrix;
    protected var mUpperArm:Matrix;
    protected var mHand:Matrix;
    protected var leftLegIK:IKController;
    protected var rightLegIK:IKController;
    private var topControl:CharacterElementHelper;
    private var bottomsControl:CharacterElementHelper;
    private var footwearControl:CharacterElementHelper;
    private var topNameList:Array;
    private var bottomsNameList:Array;
    private var footwearNameList:Array;
    protected var skinNameList:Array;
    protected var currentSkinID:uint = 0;
    private var hisSwatch:Array;

    public function HimMaleBody(param1:Him) : void
    {
    this.shoulderPoint = new Point(170, -380);
    this.leftArmDefaultPoint = new Point(65, 720);
    this.leftArmTarget = new Point(this.leftArmDefaultPoint.x, this.leftArmDefaultPoint.y);
    this.leftArmSpeed = new Point();
    this.topNameList = ["None", "Shirt"];
    this.bottomsNameList = ["None", "Slacks"];
    this.footwearNameList = ["None", "Loafers"];
    this.skinNameList = ["Light", "Dark"];
    super(param1);
    return;
    }// end function

    override public function move(param1:Number, param2:Number, param3:Number) : void
    {
    var _loc_6:Number = NaN;
    super.move(param1, param2, param3);
    this.xMovement = isNaN(this.lastX) ? (0) : (this.mHim.tx - this.lastX);
    if (this.mHim)
    {
    this.lastX = this.mHim.tx;
    }
    this.mHim = g.animationControl.getHisMatrix(param1);
    _him.transform.matrix = this.mHim;
    this.updateLegs();
    _him.overLayer.x = _him.x;
    _him.overLayer.y = _him.y;
    _him.overLayer.rotation = _him.rotation;
    _him.overLayer.torso.rotation = -3 + 1 * param1;
    _him.torsoLayer.torso.rotation = -3 + 1 * param1;
    _him.midLayer.hips.rotation = -3 + 1 * param1;
    var _loc_4:* = _him.globalToLocal(g.her.getArmPoint());
    if (g.her.isReleased())
    {
    this.armSpeed = this.armSpeed + (param2 - 0.3 - this.armPos) / 3;
    this.armSpeed = this.armSpeed * 0.5;
    this.armPos = Math.max(param1, this.armPos + this.armSpeed);
    }
    else
    {
    _loc_6 = this.armPos;
    this.armPos = param1;
    this.armSpeed = (this.armPos - _loc_6) * 100;
    }
    var _loc_5:* = this.armPos - param1;
    _him.armContainer.x = _him.x;
    _him.armContainer.rotation = _him.rotation;
    if (g.handsOff)
    {
    _him.armContainer.arm.x = _him.armContainer.arm.x + (80 - _him.armContainer.arm.x) * 0.25;
    _him.armContainer.arm.y = _him.armContainer.arm.y + (200 - _him.armContainer.arm.y) * 0.25;
    this.shoulderPoint.x = this.shoulderPoint.x + (170 - this.shoulderPoint.x) * 0.5;
    this.shoulderPoint.y = this.shoulderPoint.y + (-520 - this.shoulderPoint.y) * 0.5;
    }
    else
    {
    if (g.her.isReleased())
    {
    _him.armContainer.arm.x = _him.armContainer.arm.x + (_loc_4.x + _loc_5 * 250 - _him.armContainer.arm.x) * 0.5;
    _him.armContainer.arm.y = _him.armContainer.arm.y + (_loc_4.y - _loc_5 * 30 - _him.armContainer.arm.y) * 0.5;
    }
    else
    {
    _him.armContainer.arm.x = _loc_4.x + _loc_5 * 250;
    _him.armContainer.arm.y = _loc_4.y - _loc_5 * 30;
    }
    this.shoulderPoint.x = 150 + 40 * this.armPos;
    this.shoulderPoint.x = this.shoulderPoint.x + (_him.armContainer.arm.x + 580 - this.shoulderPoint.x) * 0.5;
    this.shoulderPoint.y = -450 - 100 * this.armPos;
    }
    this.updateArmPosition();
    return;
    }// end function

    protected function updateLegs() : void
    {
    this.leftLegIK.update();
    this.rightLegIK.update();
    _him.leftLeg.transform.matrix = this.leftLegIK.section1Matrix;
    _him.leftLeg.calf.transform.matrix = this.leftLegIK.section2Matrix;
    _him.leftLegCostume.transform.matrix = this.leftLegIK.section1Matrix;
    _him.leftLegCostume.calf.transform.matrix = this.leftLegIK.section2Matrix;
    _him.rightLeg.transform.matrix = this.rightLegIK.section1Matrix;
    _him.rightLeg.calf.transform.matrix = this.rightLegIK.section2Matrix;
    _him.rightLegCostume.transform.matrix = this.rightLegIK.section1Matrix;
    _him.rightLegCostume.calf.transform.matrix = this.rightLegIK.section2Matrix;
    _him.leftLeg.calf.foot.transform.matrix = this.leftLegIK.section3Matrix;
    _him.rightLeg.calf.foot.transform.matrix = this.rightLegIK.section3Matrix;
    _him.leftLegCostume.calf.foot.transform.matrix = this.leftLegIK.section3Matrix;
    _him.rightLegCostume.calf.foot.transform.matrix = this.rightLegIK.section3Matrix;
    _him.balls.rotation = _him.leftLeg.rotation;
    return;
    }// end function

    protected function updateArmPosition() : void
    {
    this.rightArmIK.newTarget(this.shoulderPoint, _him, true);
    this.rightArmIK.update(new Point(_him.armContainer.arm.x, _him.armContainer.arm.y));
    _him.armContainer.arm.transform.matrix = this.rightArmIK.section1Matrix;
    _him.armContainer.arm.upperArm.transform.matrix = this.rightArmIK.section2Matrix;
    if (g.handsOff)
    {
    _him.armContainer.arm.hand.rotation = _him.armContainer.arm.hand.rotation * 0.5;
    }
    else
    {
    _him.armContainer.arm.hand.rotation = g.her.rotation - _him.armContainer.arm.rotation;
    }
    this.leftArmSpeed.x = this.leftArmSpeed.x + ((this.leftArmDefaultPoint.x - this.leftArmTarget.x) * 0.1 - this.xMovement * 0.1);
    this.leftArmSpeed.y = this.leftArmSpeed.y + ((this.leftArmDefaultPoint.y - this.leftArmTarget.y) * 0.1 - Math.abs(this.xMovement * 0.05));
    this.leftArmTarget.x = this.leftArmTarget.x + this.leftArmSpeed.x;
    this.leftArmTarget.y = this.leftArmTarget.y + this.leftArmSpeed.y;
    this.leftArmSpeed.x = this.leftArmSpeed.x * 0.8;
    this.leftArmSpeed.y = this.leftArmSpeed.y * 0.8;
    this.leftArmIK.newTarget(new Point(this.leftArmTarget.x, this.leftArmTarget.y), _him);
    this.leftArmIK.update(null, true);
    return;
    }// end function

    override public function debugMove(param1:Point) : void
    {
    super.debugMove(param1);
    this.updateLegs();
    this.updateArmPosition();
    return;
    }// end function

    override public function loadDataPairs(param1:Array) : void
    {
    var _loc_2:Array = null;
    for each (_loc_2 in param1)
    {

    switch(_loc_2[0])
    {
    case "hisSkin":
    {
    this.setSkin(int(_loc_2[1]));
    break;
    }
    case "hisTop":
    {
    this.topControl.loadDataString(_loc_2[1]);
    break;
    }
    case "hisBottoms":
    {
    this.bottomsControl.loadDataString(_loc_2[1]);
    break;
    }
    case "hisFootwear":
    {
    this.footwearControl.loadDataString(_loc_2[1]);
    break;
    }
    default:
    {
    break;
    }
    }
    }
    return;
    }// end function

    override public function getDataString() : String
    {
    var _loc_1:* = "hisSkin:" + this.currentSkinID;
    var _loc_2:* = "hisTop:" + this.topControl.getDataString();
    var _loc_3:* = "hisBottoms:" + this.bottomsControl.getDataString();
    var _loc_4:* = "hisFootwear:" + this.footwearControl.getDataString();
    return _loc_1 + ";" + _loc_2 + ";" + _loc_3 + ";" + _loc_4;
    }// end function

    override protected function initElements() : void
    {
    this.rightLegIK = new IKController(_him, _him.rightLeg, _him.rightLeg.calf, _him.rightLeg.calf.foot);
    this.rightLegIK.newTarget(g.animationControl.getHisRightFootTarget(), g.sceneLayer, true);
    this.rightLegIK.rescale(0.9);
    this.leftLegIK = new IKController(_him, _him.leftLeg, _him.leftLeg.calf, _him.leftLeg.calf.foot);
    this.leftLegIK.newTarget(g.animationControl.getHisLeftFootTarget(), g.sceneLayer, true);
    this.rightArmIK = new IKController(_him, _him.armContainer.arm, _him.armContainer.arm.upperArm, _him.armContainer.arm.upperArm.shoulderPoint);
    this.rightArmIK.newTarget(this.shoulderPoint, _him, true);
    this.leftArmIK = new IKController(_him, _him.leftArmContainer.arm, _him.leftArmContainer.arm.foreArm, _him.leftArmContainer.arm.foreArm.hand, true);
    this.leftArmIK.newTarget(this.leftArmTarget, _him, true);
    this.topControl = new CharacterElementHelper(this.topNameList, this.setTop, this.setTopFill);
    this.topControl.setStartRGB(new AlphaRGBObject(1, 238, 242, 245));
    this.bottomsControl = new CharacterElementHelper(this.bottomsNameList, this.setBottoms, this.setBottomsFill);
    this.bottomsControl.setStartRGB(new AlphaRGBObject(1, 27, 29, 29));
    this.footwearControl = new CharacterElementHelper(this.footwearNameList, this.setFootwear, this.setFootwearFill);
    this.footwearControl.setStartRGB(new AlphaRGBObject(1, 0, 0, 0));
    return;
    }// end function

    override protected function initMenu() : void
    {
    _bodyMenu = new HimMaleBodyMenu();
    this.hisSwatch = new Array();
    this.hisSwatch[0] = {r:22, g:8, b:0, a:1};
    this.hisSwatch[1] = {r:82, g:0, b:6, a:1};
    this.hisSwatch[2] = {r:255, g:126, b:167, a:1};
    this.hisSwatch[3] = {r:0, g:26, b:114, a:1};
    this.hisSwatch[4] = {r:63, g:118, b:162, a:1};
    this.hisSwatch[5] = {r:238, g:242, b:245, a:1};
    this.hisSwatch[6] = {r:27, g:29, b:29, a:1};
    this.hisSwatch[7] = {r:0, g:0, b:0, a:1};
    this.hisSwatch[8] = {r:255, g:255, b:255, a:1};
    _bodyMenu.mlSkin.leftArrow.addEventListener(MouseEvent.CLICK, this.hisSkinLeftClicked);
    _bodyMenu.mlSkin.rightArrow.addEventListener(MouseEvent.CLICK, this.hisSkinRightClicked);
    this.topControl.registerMenuList(_bodyMenu.mlTop);
    this.topControl.registerRGBButton(_bodyMenu.rgbTop, this.hisSwatch, 489, false);
    this.bottomsControl.registerMenuList(_bodyMenu.mlBottoms);
    this.bottomsControl.registerRGBButton(_bodyMenu.rgbBottoms, this.hisSwatch, 489, false);
    this.footwearControl.registerMenuList(_bodyMenu.mlFootwear);
    this.footwearControl.registerRGBButton(_bodyMenu.rgbFootwear, this.hisSwatch, 489, false);
    this.updateSkinList();
    this.topControl.select(1);
    this.bottomsControl.select(1);
    this.footwearControl.select(1);
    return;
    }// end function

    override public function animationChanged() : void
    {
    this.rightLegIK.newTarget(g.animationControl.getHisRightFootTarget(), g.sceneLayer, true);
    this.leftLegIK.newTarget(g.animationControl.getHisLeftFootTarget(), g.sceneLayer, true);
    this.updateLegs();
    return;
    }// end function

    override public function toggleBodySettings() : void
    {
    if (g.him.currentPenisID == 1)
    {
    if (this.currentSkinID == 1)
    {
    g.him.penisControl.select(0);
    this.setSkin(0);
    }
    else
    {
    this.setSkin(1);
    }
    }
    else if (this.currentSkinID == 1)
    {
    g.him.penisControl.select(1);
    this.setSkin(0);
    }
    else
    {
    this.setSkin(1);
    }
    return;
    }// end function

    override public function shuffle() : void
    {
    var _loc_1:* = Math.floor(Math.random() * 2);
    g.him.penisControl.select(_loc_1);
    var _loc_2:* = Math.floor(Math.random() * 2);
    this.setSkin(_loc_2);
    return;
    }// end function

    override protected function setupElements() : void
    {
    this.setSkin(this.currentSkinID);
    this.topControl.resetElement();
    this.bottomsControl.resetElement();
    this.footwearControl.resetElement();
    return;
    }// end function

    override protected function setupAnimation() : void
    {
    this.rightLegIK.newSegments(_him.rightLeg, _him.rightLeg.calf, _him.rightLeg.calf.foot);
    this.leftLegIK.newSegments(_him.leftLeg, _him.leftLeg.calf, _him.leftLeg.calf.foot);
    this.rightArmIK.newSegments(_him.armContainer.arm, _him.armContainer.arm.upperArm, _him.armContainer.arm.upperArm.shoulderPoint);
    this.leftArmIK.newSegments(_him.leftArmContainer.arm, _him.leftArmContainer.arm.foreArm, _him.leftArmContainer.arm.foreArm.hand);
    return;
    }// end function

    override protected function setupMenu() : void
    {
    return;
    }// end function

    override protected function breakdownBody() : void
    {
    return;
    }// end function

    private function hisSkinLeftClicked(event:MouseEvent) : void
    {
    var _loc_2:* = Math.max(0, Math.min((this.skinNameList.length - 1), (this.currentSkinID - 1)));
    this.setSkin(_loc_2);
    g.saveData.saveCharData();
    return;
    }// end function

    private function hisSkinRightClicked(event:MouseEvent) : void
    {
    var _loc_2:* = Math.max(0, Math.min((this.skinNameList.length - 1), (this.currentSkinID + 1)));
    this.setSkin(_loc_2);
    g.saveData.saveCharData();
    return;
    }// end function

    private function updateSkinList() : void
    {
    _bodyMenu.mlSkin.itemLabel.text = this.skinNameList[this.currentSkinID];
    return;
    }// end function

    private function setSkin(param1:uint) : void
    {
    this.currentSkinID = param1;
    g.himSkinType = "Male" + this.skinNameList[this.currentSkinID];
    g.him.updatePenis();
    g.him.balls.setSkin(g.himSkinType);
    g.him.updateArm();
    g.him.torsoLayer.torso.gotoAndStop(g.himSkinType);
    g.him.leftLeg.gotoAndStop(g.himSkinType);
    g.him.leftLeg.calf.gotoAndStop(g.himSkinType);
    g.him.leftLeg.calf.foot.gotoAndStop(g.himSkinType);
    g.him.rightLeg.gotoAndStop(g.himSkinType);
    g.him.rightLeg.calf.gotoAndStop(g.himSkinType);
    g.him.rightLeg.calf.foot.gotoAndStop(g.himSkinType);
    this.updateSkinList();
    return;
    }// end function

    private function setTop(param1:uint) : void
    {
    CharacterControl.tryToSetFrameLabel(g.him.topBack, this.topControl.selectedName);
    CharacterControl.tryToSetFrameLabel(g.him.overLayer.torso.costume, this.topControl.selectedName);
    return;
    }// end function

    private function setTopFill(param1:Object, param2:String = "rgbFill") : void
    {
    var _loc_3:* = new ColorTransform(1, 1, 1, param1.a, param1.r, param1.g, param1.b);
    CharacterControl.tryToSetFill(g.him.topBack, param2, _loc_3);
    CharacterControl.tryToSetFill(g.him.overLayer.torso.costume, param2, _loc_3);
    return;
    }// end function

    private function setBottoms(param1:uint) : void
    {
    CharacterControl.tryToSetFrameLabel(g.him.rightLegCostume, this.bottomsControl.selectedName);
    CharacterControl.tryToSetFrameLabel(g.him.rightLegCostume.calf, this.bottomsControl.selectedName);
    CharacterControl.tryToSetFrameLabel(g.him.leftLegCostume, this.bottomsControl.selectedName);
    CharacterControl.tryToSetFrameLabel(g.him.leftLegCostume.calf, this.bottomsControl.selectedName);
    CharacterControl.tryToSetFrameLabel(g.him.midLayer.hips, this.bottomsControl.selectedName);
    return;
    }// end function

    private function setBottomsFill(param1:Object, param2:String = "rgbFill") : void
    {
    var _loc_3:* = new ColorTransform(1, 1, 1, param1.a, param1.r, param1.g, param1.b);
    CharacterControl.tryToSetFill(g.him.rightLegCostume, param2, _loc_3);
    CharacterControl.tryToSetFill(g.him.rightLegCostume.calf, param2, _loc_3);
    CharacterControl.tryToSetFill(g.him.leftLegCostume, param2, _loc_3);
    CharacterControl.tryToSetFill(g.him.leftLegCostume.calf, param2, _loc_3);
    CharacterControl.tryToSetFill(g.him.midLayer.hips, param2, _loc_3);
    return;
    }// end function

    private function setFootwear(param1:uint) : void
    {
    CharacterControl.tryToSetFrameLabel(g.him.rightLegCostume.calf.foot, this.footwearControl.selectedName);
    CharacterControl.tryToSetFrameLabel(g.him.leftLegCostume.calf.foot, this.footwearControl.selectedName);
    return;
    }// end function

    private function setFootwearFill(param1:Object, param2:String = "rgbFill") : void
    {
    var _loc_3:* = new ColorTransform(1, 1, 1, param1.a, param1.r, param1.g, param1.b);
    CharacterControl.tryToSetFill(g.him.rightLegCostume.calf.foot, param2, _loc_3);
    CharacterControl.tryToSetFill(g.him.leftLegCostume.calf.foot, param2, _loc_3);
    return;
    }// end function

    override public function get xDelta() : Number
    {
    return this.xMovement;
    }// end function

    }
    }

    [HIM FEMALE BODY]
    package obj.him.bodies
    {
    import flash.display.*;
    import flash.events.*;
    import flash.geom.*;
    import obj.*;
    import obj.animation.*;
    import obj.graphics.*;

    public class HimFemaleBody extends HimMaleBody
    {
    private var breastSize:uint = 130;
    private const breastOffset:Array;
    private var currentBreastOffset:Number;
    private var leftBreastController:BreastController;
    private var rightBreastController:BreastController;
    private var footwearControl:CharacterElementHelper;
    private var footwearNameList:Array;
    private var herSwatch:Array;

    public function HimFemaleBody(param1:Him) : void
    {
    this.breastOffset = [2, 152, 302, 452, 602];
    this.footwearNameList = ["None", "Highheel"];
    super(param1);
    skinNameList = g.characterControl.skinNameList;
    return;
    }// end function

    override public function loadDataPairs(param1:Array) : void
    {
    var _loc_2:Array = null;
    for each (_loc_2 in param1)
    {

    switch(_loc_2[0])
    {
    case "hisSkin":
    {
    this.setSkin(int(_loc_2[1]));
    break;
    }
    case "hisBreasts":
    {
    this.setBreasts(Math.max(1, Math.min(149, uint(_loc_2[1]))));
    this.updateBreastSlider();
    break;
    }
    case "hisFootwear":
    {
    this.footwearControl.loadDataString(_loc_2[1]);
    break;
    }
    default:
    {
    break;
    }
    }
    }
    return;
    }// end function

    override public function getDataString() : String
    {
    var _loc_1:* = "hisSkin:" + currentSkinID;
    var _loc_2:* = "hisBreasts:" + this.breastSize;
    var _loc_3:* = "hisFootwear:" + this.footwearControl.getDataString();
    return _loc_1 + ";" + _loc_2 + ";" + _loc_3;
    }// end function

    override public function move(param1:Number, param2:Number, param3:Number) : void
    {
    super.move(param1, param2, param3);
    this.leftBreastController.update(xMovement * 0.001);
    this.rightBreastController.update(xMovement * 0.001);
    return;
    }// end function

    override protected function initElements() : void
    {
    rightLegIK = new IKController(_him, _him.rightLeg, _him.rightLeg.calf, _him.rightLeg.calf.foot);
    rightLegIK.newTarget(g.animationControl.getHisRightFootTarget(), g.sceneLayer, true);
    rightLegIK.rescale(0.9);
    leftLegIK = new IKController(_him, _him.leftLeg, _him.leftLeg.calf, _him.leftLeg.calf.foot);
    leftLegIK.newTarget(g.animationControl.getHisLeftFootTarget(), g.sceneLayer, true);
    rightArmIK = new IKController(_him, _him.armContainer.arm, _him.armContainer.arm.upperArm, _him.armContainer.arm.upperArm.shoulderPoint);
    rightArmIK.newTarget(shoulderPoint, _him, true);
    leftArmIK = new IKController(_him, _him.leftArmContainer.arm, _him.leftArmContainer.arm.foreArm, _him.leftArmContainer.arm.foreArm.hand, true);
    leftArmIK.newTarget(leftArmTarget, _him, true);
    this.footwearControl = new CharacterElementHelper(this.footwearNameList, this.setFootwear, this.setFootwearFill);
    this.footwearControl.setStartRGB(new AlphaRGBObject(1, 0, 0, 0));
    return;
    }// end function

    override protected function initMenu() : void
    {
    _bodyMenu = new HimFemaleBodyMenu();
    this.herSwatch = new Array();
    this.herSwatch[0] = {r:22, g:8, b:0, a:1};
    this.herSwatch[1] = {r:82, g:0, b:6, a:1};
    this.herSwatch[2] = {r:255, g:126, b:167, a:1};
    this.herSwatch[3] = {r:0, g:26, b:114, a:1};
    this.herSwatch[4] = {r:63, g:118, b:162, a:1};
    this.herSwatch[5] = {r:238, g:242, b:245, a:1};
    this.herSwatch[6] = {r:27, g:29, b:29, a:1};
    this.herSwatch[7] = {r:0, g:0, b:0, a:1};
    this.herSwatch[8] = {r:255, g:255, b:255, a:1};
    _bodyMenu.breastSlider.setRangeEnd(100);
    _bodyMenu.breastSlider.addEventListener("handleReleased", this.breastSliderReleased);
    _bodyMenu.breastSlider.addEventListener("sliderChanged", this.breastSliderChanged);
    _bodyMenu.mlSkin.leftArrow.addEventListener(MouseEvent.CLICK, this.hisSkinLeftClicked);
    _bodyMenu.mlSkin.rightArrow.addEventListener(MouseEvent.CLICK, this.hisSkinRightClicked);
    this.updateSkinList();
    this.footwearControl.registerMenuList(_bodyMenu.mlFootwear);
    this.footwearControl.registerRGBButton(_bodyMenu.rgbFootwear, this.herSwatch, 489, false);
    return;
    }// end function

    override public function animationChanged() : void
    {
    var _loc_1:* = g.animationControl.getHisRightFootTarget();
    var _loc_2:* = g.animationControl.getHisLeftFootTarget();
    if (this.footwearControl.selectedName == "Highheel")
    {
    _loc_1.y = _loc_1.y - 60;
    _loc_1.x = _loc_1.x - 140;
    _loc_2.y = _loc_2.y - 60;
    _loc_2.x = _loc_2.x + 100;
    }
    rightLegIK.newTarget(_loc_1, g.sceneLayer, true);
    leftLegIK.newTarget(_loc_2, g.sceneLayer, true);
    updateLegs();
    return;
    }// end function

    override public function toggleBodySettings() : void
    {
    if (g.him.currentPenisID == 2)
    {
    if (currentSkinID == (skinNameList.length - 1))
    {
    g.him.penisControl.select(0);
    this.setSkin(0);
    }
    else
    {
    this.setSkin((currentSkinID + 1));
    }
    }
    else if (currentSkinID == (skinNameList.length - 1))
    {
    g.him.penisControl.select((g.him.currentPenisID + 1));
    this.setSkin(0);
    }
    else
    {
    this.setSkin((currentSkinID + 1));
    }
    return;
    }// end function

    override public function shuffle() : void
    {
    var _loc_1:* = Math.floor(Math.random() * 3);
    g.him.penisControl.select(_loc_1);
    var _loc_2:* = PaletteUtils.getHue(Math.random() * 360, PaletteUtils.midRandom(), Math.random() > 0.6 ? (PaletteUtils.midRandom()) : (null));
    g.him.penisControl.setFill(_loc_2, "rgbFill");
    var _loc_3:* = Math.floor(Math.random() * skinNameList.length);
    this.setSkin(_loc_3);
    return;
    }// end function

    override protected function setupElements() : void
    {
    if (!this.leftBreastController)
    {
    this.leftBreastController = new BreastController(_him.torsoLayer.leftBreastContainer.leftBreast);
    this.rightBreastController = new BreastController(_him.torsoLayer.rightBreastContainer.rightBreast);
    }
    this.setSkin(currentSkinID);
    this.setBreasts(this.breastSize);
    this.updateBreastSlider();
    _him.torsoLayer.leftBreastContainer.leftBreast.tan.visible = false;
    _him.torsoLayer.rightBreastContainer.rightBreast.tan.visible = false;
    _him.torsoLayer.leftBreastContainer.leftBreast.nipple.tan.visible = false;
    _him.torsoLayer.rightBreastContainer.rightBreast.nipple.tan.visible = false;
    CharacterControl.tryToSetFrameLabel(g.him.topBack, "None");
    CharacterControl.tryToSetFrameLabel(g.him.overLayer.torso.costume, "None");
    CharacterControl.tryToSetFrameLabel(g.him.rightLegCostume, "None");
    CharacterControl.tryToSetFrameLabel(g.him.rightLegCostume.calf, "None");
    CharacterControl.tryToSetFrameLabel(g.him.leftLegCostume, "None");
    CharacterControl.tryToSetFrameLabel(g.him.leftLegCostume.calf, "None");
    CharacterControl.tryToSetFrameLabel(g.him.midLayer.hips, "None");
    return;
    }// end function

    override protected function setupAnimation() : void
    {
    rightLegIK.newSegments(_him.rightLeg, _him.rightLeg.calf, _him.rightLeg.calf.foot);
    leftLegIK.newSegments(_him.leftLeg, _him.leftLeg.calf, _him.leftLeg.calf.foot);
    rightArmIK.newSegments(_him.armContainer.arm, _him.armContainer.arm.upperArm, _him.armContainer.arm.upperArm.shoulderPoint);
    leftArmIK.newSegments(_him.leftArmContainer.arm, _him.leftArmContainer.arm.foreArm, _him.leftArmContainer.arm.foreArm.hand);
    this.footwearControl.resetElement();
    return;
    }// end function

    override protected function setupMenu() : void
    {
    return;
    }// end function

    override protected function breakdownBody() : void
    {
    return;
    }// end function

    private function hisSkinLeftClicked(event:MouseEvent) : void
    {
    var _loc_2:* = Math.max(0, Math.min((skinNameList.length - 1), (currentSkinID - 1)));
    this.setSkin(_loc_2);
    g.saveData.saveCharData();
    return;
    }// end function

    private function hisSkinRightClicked(event:MouseEvent) : void
    {
    var _loc_2:* = Math.max(0, Math.min((skinNameList.length - 1), (currentSkinID + 1)));
    this.setSkin(_loc_2);
    g.saveData.saveCharData();
    return;
    }// end function

    private function updateSkinList() : void
    {
    _bodyMenu.mlSkin.itemLabel.text = skinNameList[currentSkinID];
    return;
    }// end function

    private function breastSliderReleased(event:Event) : void
    {
    g.saveData.saveCharData();
    return;
    }// end function

    private function breastSliderChanged(event:Event) : void
    {
    this.setBreasts(_bodyMenu.breastSlider.currentValue(149));
    return;
    }// end function

    public function updateBreastSlider() : void
    {
    _bodyMenu.breastSlider.setPos(this.breastSize / 149);
    return;
    }// end function

    private function setFootwear(param1:uint) : void
    {
    CharacterControl.tryToSetFrameLabel(g.him.rightLegCostume.calf.foot, this.footwearControl.selectedName);
    CharacterControl.tryToSetFrameLabel(g.him.leftLegCostume.calf.foot, this.footwearControl.selectedName);
    this.animationChanged();
    this.setFeet();
    return;
    }// end function

    private function setFootwearFill(param1:Object, param2:String = "rgbFill") : void
    {
    var _loc_3:* = new ColorTransform(1, 1, 1, param1.a, param1.r, param1.g, param1.b);
    CharacterControl.tryToSetFill(g.him.rightLegCostume.calf.foot, param2, _loc_3);
    CharacterControl.tryToSetFill(g.him.leftLegCostume.calf.foot, param2, _loc_3);
    return;
    }// end function

    private function setBreasts(param1:int = -1) : void
    {
    if (param1 == -1)
    {
    param1 = this.breastSize;
    }
    this.breastSize = param1;
    this.setBreastFrame(_him.torsoLayer.leftBreastContainer.leftBreast);
    this.setBreastFrame(_him.torsoLayer.rightBreastContainer.rightBreast);
    if (_him.torsoLayer.leftBreastContainer.leftBreast.nipple.getChildByName("leftNipple"))
    {
    _him.torsoLayer.leftBreastContainer.leftBreast.nipple.gotoAndStop("None");
    }
    else
    {
    _him.torsoLayer.leftBreastContainer.leftBreast.nipple.gotoAndStop(skinNameList[currentSkinID].toLowerCase());
    }
    if (_him.torsoLayer.rightBreastContainer.rightBreast.nipple.getChildByName("rightNipple"))
    {
    _him.torsoLayer.rightBreastContainer.rightBreast.nipple.gotoAndStop("None");
    }
    else
    {
    _him.torsoLayer.rightBreastContainer.rightBreast.nipple.gotoAndStop(skinNameList[currentSkinID].toLowerCase());
    }
    if (this.leftBreastController)
    {
    this.leftBreastController.updateFirmness(param1);
    this.rightBreastController.updateFirmness(param1);
    }
    _him.torsoLayer.leftBreastContainer.leftBreast.nipple.tan.visible = false;
    _him.torsoLayer.rightBreastContainer.rightBreast.nipple.tan.visible = false;
    return;
    }// end function

    private function setBreastFrame(param1:MovieClip) : void
    {
    if (param1.getChildByName(param1.name))
    {
    param1.gotoAndStop(this.breastOffset[4]);
    try
    {
    this.setChildrenFrame(param1.getChildByName(param1.name) as MovieClip, 2 + this.breastSize);
    }
    catch (e:Error)
    {
    }
    }
    else
    {
    this.setChildrenFrame(param1, 2 + this.breastSize);
    param1.gotoAndStop(this.currentBreastOffset + this.breastSize);
    }
    return;
    }// end function

    private function setChildrenFrame(param1:DisplayObjectContainer, param2:uint) : void
    {
    var childContainer:MovieClip;
    var target:* = param1;
    var frameNumber:* = param2;
    var numChildren:* = target.numChildren;
    var i:uint;
    while (i < numChildren)
    {

    if (target.getChildAt(i) is MovieClip)
    {
    childContainer = target.getChildAt(i) as MovieClip;
    try
    {
    childContainer.gotoAndStop(frameNumber);
    }
    catch (e:Error)
    {
    }
    this.setChildrenFrame(childContainer, frameNumber);
    }
    i = (i + 1);
    }
    return;
    }// end function

    private function setSkin(param1:uint) : void
    {
    currentSkinID = param1;
    this.currentBreastOffset = this.breastOffset[currentSkinID];
    g.himSkinType = "Female" + skinNameList[currentSkinID];
    this.setBreasts();
    g.him.updatePenis();
    g.him.balls.setSkin(g.himSkinType);
    g.him.updateArm();
    g.him.torsoLayer.torso.gotoAndStop(g.himSkinType);
    g.him.leftLeg.gotoAndStop(g.himSkinType);
    g.him.leftLeg.calf.gotoAndStop(g.himSkinType);
    g.him.rightLeg.gotoAndStop(g.himSkinType);
    g.him.rightLeg.calf.gotoAndStop(g.himSkinType);
    this.setFeet();
    this.updateSkinList();
    return;
    }// end function

    private function setFeet() : void
    {
    g.him.leftLeg.calf.foot.gotoAndStop(g.himSkinType + (this.footwearControl.selectedName == "Highheel" ? ("Highheel") : ("")));
    g.him.rightLeg.calf.foot.gotoAndStop(g.himSkinType + (this.footwearControl.selectedName == "Highheel" ? ("Highheel") : ("")));
    return;
    }// end function

    }
    }
     
  17. Doomknight

    Doomknight Guest

    [TAN]
    -> Everything to do with Tans for HER
    package obj.her
    {
    import flash.display.*;
    import flash.events.*;
    import flash.filters.*;
    import flash.utils.*;
    import obj.*;

    public class Tan extends Object
    {
    public var _standardTanItems:Array;
    public var _multiPartTanItems:Array;
    public var _skinAlphaScaling:Dictionary;
    public var _tanNameList:Array;
    public var _currentTanID:uint = 0;
    public var _preModTanID:uint = 0;
    public var _currentAlphaScaling:Number = 1;
    public var _currentTanAlpha:Number = 0;
    public var _menuList:Sprite;
    public var _alphaSlider:Slider;

    public function Tan()
    {
    this._tanNameList = ["None", "Full", "Bikini", "Swimsuit", "Swimsuit-T"];
    this.prepItems();
    this.prepScalingDictionary();
    return;
    }// end function

    public function registerMenuItems(param1:Sprite, param2:Slider) : void
    {
    this._menuList = param1;
    this._menuList["leftArrow"].addEventListener(MouseEvent.CLICK, this.tanLeftClicked);
    this._menuList["rightArrow"].addEventListener(MouseEvent.CLICK, this.tanRightClicked);
    this._alphaSlider = param2;
    this._alphaSlider.setRangeEnd(119);
    this._alphaSlider.addEventListener("handleReleased", this.alphaSliderReleased);
    this._alphaSlider.addEventListener("sliderChanged", this.alphaSliderChanged);
    this.updateMenuList();
    this.updateAlphaSlider();
    return;
    }// end function

    public function updateSkin(param1:String = "") : void
    {
    if (param1)
    {
    this._currentAlphaScaling = this._skinAlphaScaling[param1] || 0;
    }
    this.setTan();
    return;
    }// end function

    public function hideForMods() : void
    {
    this.setTan(0, false);
    return;
    }// end function

    public function getDataString() : String
    {
    var _loc_1:* = "herTan:" + g.dataName(this._tanNameList[this._currentTanID]) + "," + this._currentTanAlpha;
    return _loc_1;
    }// end function

    public function loadDataPairs(param1:Array) : void
    {
    var _loc_3:Array = null;
    var _loc_4:Array = null;
    var _loc_5:Number = NaN;
    var _loc_2:Boolean = false;
    for each (_loc_3 in param1)
    {

    switch(_loc_3[0])
    {
    case "herTan":
    {
    _loc_4 = _loc_3[1].split(",");
    if (_loc_4.length == 2)
    {
    CharacterControl.findName(_loc_4[0], this._tanNameList, this.setTan);
    this.updateMenuList();
    _loc_5 = Number(_loc_4[1]);
    if (!isNaN(_loc_5))
    {
    this.setTanAlpha(Math.max(0, Math.min(1, _loc_5)));
    this.updateAlphaSlider();
    }
    _loc_2 = true;
    }
    break;
    }
    default:
    {
    break;
    break;
    }
    }
    }
    if (!_loc_2)
    {
    this.setTan(0);
    }
    return;
    }// end function

    public function setTan(param1:int = -1, param2:Boolean = true) : void
    {
    var _loc_3:DisplayObjectContainer = null;
    if (param1 != -1 && param2)
    {
    this._currentTanID = param1;
    }
    for each (_loc_3 in this._standardTanItems)
    {

    CharacterControl.tryToSetFrameLabel(_loc_3 as MovieClip, this._tanNameList[this._currentTanID]);
    if (this._currentTanID == 0)
    {
    _loc_3.visible = false;
    continue;
    }
    _loc_3.visible = true;
    }
    if (this._currentTanID == 0)
    {
    g.her.ear.tan.visible = false;
    }
    else
    {
    g.her.ear.tan.visible = true;
    }
    for each (_loc_3 in this._multiPartTanItems)
    {

    if (this._currentTanID == 0)
    {
    _loc_3.visible = false;
    continue;
    }
    _loc_3.visible = true;
    }
    g.characterControl.setBreasts();
    this.setTanAlpha();
    this.updateMenuList();
    return;
    }// end function

    public function setTanAlpha(param1:Number = -1) : void
    {
    var _loc_4:DisplayObjectContainer = null;
    if (param1 != -1)
    {
    this._currentTanAlpha = param1;
    }
    var _loc_2:* = this._currentTanAlpha * this._currentAlphaScaling;
    var _loc_3:* = new ColorMatrixFilter([1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, _loc_2, 0]);
    for each (_loc_4 in this._standardTanItems)
    {

    if (_loc_2 > 0 && this._currentTanID != 0)
    {
    _loc_4.visible = true;
    _loc_4.alpha = _loc_2;
    continue;
    }
    _loc_4.visible = false;
    }
    g.her.ear.tan.alpha = _loc_2;
    for each (_loc_4 in this._multiPartTanItems)
    {

    if (_loc_2 > 0 && this._currentTanID != 0)
    {
    _loc_4.filters = [_loc_3];
    _loc_4.visible = true;
    continue;
    }
    _loc_4.filters = [];
    _loc_4.visible = false;
    }
    return;
    }// end function

    public function tanLeftClicked(event:MouseEvent) : void
    {
    var _loc_2:* = Math.max(0, Math.min((this._tanNameList.length - 1), (this._currentTanID - 1)));
    this.setTan(_loc_2);
    g.saveData.saveCharData();
    return;
    }// end function

    public function tanRightClicked(event:MouseEvent) : void
    {
    var _loc_2:* = Math.max(0, Math.min((this._tanNameList.length - 1), (this._currentTanID + 1)));
    this.setTan(_loc_2);
    g.saveData.saveCharData();
    return;
    }// end function

    public function updateMenuList() : void
    {
    if (this._menuList)
    {
    this._menuList["itemLabel"]["text"] = this._tanNameList[this._currentTanID];
    }
    return;
    }// end function

    public function alphaSliderReleased(event:Event) : void
    {
    g.saveData.saveCharData();
    return;
    }// end function

    public function alphaSliderChanged(event:Event) : void
    {
    this.setTanAlpha(this._alphaSlider.currentValue(100) * 0.01);
    return;
    }// end function

    public function updateAlphaSlider() : void
    {
    if (this._alphaSlider)
    {
    this._alphaSlider.setPos(this._currentTanAlpha);
    }
    return;
    }// end function

    public function prepItems() : void
    {
    this._standardTanItems = new Array();
    this._standardTanItems.push(g.her.leftLegContainer.leg.calf.tan);
    this._standardTanItems.push(g.her.leftLegContainer.leg.thigh.tan);
    this._standardTanItems.push(g.her.torsoBack.leftShoulder.tan);
    this._standardTanItems.push(g.her.torsoBack.chestBack.tan);
    this._standardTanItems.push(g.her.torsoBack.leftBreast.tan);
    this._standardTanItems.push(g.her.torsoBack.leftBreast.nipple.tan);
    this._standardTanItems.push(g.her.eye.eyebrowUnderMask.tan);
    this._standardTanItems.push(g.her.torso.midLayer.chest.tan);
    this._standardTanItems.push(g.her.torso.midLayer.rightBreast.tan);
    this._standardTanItems.push(g.her.torso.midLayer.rightBreast.nipple.tan);
    this._standardTanItems.push(g.her.torso.midLayer.forearmHand.tan);
    this._standardTanItems.push(g.her.torso.leg.thigh.tan);
    this._standardTanItems.push(g.her.torso.back.tan);
    this._standardTanItems.push(g.her.torso.rightCalfContainer.calf.tan);
    this._standardTanItems.push(g.her.rightArmContainer.upperArm.tan);
    this._standardTanItems.push(g.her.rightForeArmContainer.upperArm.foreArm.hand.tan);
    this._standardTanItems.push(g.her.rightForeArmContainer.upperArm.foreArm.tan);
    this._standardTanItems.push(g.her.leftArmContainer.upperArm.foreArm.hand.tan);
    this._standardTanItems.push(g.her.leftArmContainer.upperArm.foreArm.tan);
    this._standardTanItems.push(g.her.leftArmContainer.upperArm.tan);
    this._standardTanItems.push(g.her.head.neck.tan);
    this._standardTanItems.push(g.her.torsoBack.backside.tan);
    this._standardTanItems.push(g.her.torso.backside.tan);
    g.her.torso.back.tan.blendMode = "overlay";
    this._multiPartTanItems = new Array();
    this._multiPartTanItems.push(g.her.head.headTan);
    return;
    }// end function

    public function prepScalingDictionary() : void
    {
    this._skinAlphaScaling = new Dictionary();
    this._skinAlphaScaling[SkinPalette.LIGHT_SKIN] = 0.995;
    this._skinAlphaScaling[SkinPalette.PALE_SKIN] = 0.995;
    this._skinAlphaScaling[SkinPalette.TAN_SKIN] = 0.6;
    this._skinAlphaScaling[SkinPalette.DARK_SKIN] = 0.5;
    return;
    }// end function

    }
    }

    [NECK]
    -> Variables used for Her Neck. Includes swallowing variables!
    public var highlight1:MovieClip;
    public var outline16:MovieClip;
    public var highlight2:MovieClip;
    public var highlight3:MovieClip;
    public var highlight4:MovieClip;
    public var outline8:MovieClip;
    public var highlight5:MovieClip;
    public var outline9:MovieClip;
    public var highlight6:MovieClip;
    public var highlight7:MovieClip;
    public var outline6:MovieClip;
    public var highlight8:MovieClip;
    public var outline7:MovieClip;
    public var highlight9:MovieClip;
    public var outline4:MovieClip;
    public var outline5:MovieClip;
    public var outline2:MovieClip;
    public var outline10:MovieClip;
    public var outline3:MovieClip;
    public var outline11:MovieClip;
    public var outline0:MovieClip;
    public var outline12:MovieClip;
    public var outline1:MovieClip;
    public var highlight10:MovieClip;
    public var outline13:MovieClip;
    public var highlight11:MovieClip;
    public var outline14:MovieClip;
    public var highlight0:MovieClip;
    public var outline15:MovieClip;
    public var neckPoints:Array;
    public var numPoints:uint;
    public var highlightPoints:Array;
    public var numHighlightPoints:uint;
    public var frontEndPoint:uint;
    public var shadeLight:uint = 16178890;
    public var shade1:uint = 14925224;
    public var shade2:uint = 13541515;
    public var shade3:uint = 11306097;
    public var mainGradient:Matrix;
    public var highlightGradient:Matrix;
    public var swallowing:Boolean = false;
    public var swallowProgress:Number = 0;
    public var swallowSize:Number = 10;
    public var swallowStart:Number = 0.2;
    public var bulgeSize:Number = 35;
    public var bulgeVec:Point;
    public var throatBulgeAmount:Number = 1;
    public var _tanLayer:Sprite;
    public var tanAlpha:Number = 1;
     
  18. Doomknight

    Doomknight Guest

    [TONGUE, Part 1]
    -> ALL the details on the Tongue. Seperated into parts for easier reading.
    package obj.her
    {
    import flash.display.*;
    import flash.events.*;
    import flash.geom.*;
    import flash.utils.*;

    public class Tongue extends MovieClip
    {
    public var piercingBack:MovieClip;
    public var piercing:MovieClip;
    public var tipPoint:MovieClip;
    public var tongueOut:Boolean = false;
    public var tongueOutStartFrame:uint = 3;
    public var tongueOutEndFrame:uint = 33;
    public var mouthFull:Boolean = false;
    public var mouthFullTimer:Number = 0;
    public var mouthFullTime:int = 0;
    public var currentPos:Number = 0;
    public var nearTip:Boolean = false;
    public var startedOff:Boolean = false;
    public var playingAction:Boolean = false;
    public var cumOnTongue:int = 0;
    public var swallowTimer:uint = 0;
    public var swallowTime:uint = 0;
    public var increasedAction:uint = 0;
    public var waitingForOut:Boolean = false;
    public var waitingForIn:Boolean = false;
    public var fastIn:Boolean = false;
    public var waitingToTouch:Boolean = false;
    public var tiltOffset:Number = 0;
    public var actionTimer:uint = 0;
    public var nextActionTime:uint;
    public var nearTimer:uint = 0;
    public var nearTime:uint;
    public var wiggleSpeed:Number = 0;
    public var nextAction:Function = null;
    public var currentAction:Function = null;
    public var offActions:Array;
    public var tipActions:Array;
    public var shaftActions:Array;
    public var actionTime:uint;
    public var hangingOut:Boolean = false;
    public var solidAction:Dictionary;
    public var tiltSpeeds:Dictionary;
    public var pushPower:Dictionary;

    [TONGUE, Part 2]
    public function Tongue() : void
    {
    this.nextActionTime = Math.floor(Math.random() * 60) + 15;
    this.nearTime = Math.ceil(Math.random() * 20) + 10;
    addFrameScript(75, this.frame76, 114, this.frame115, 138, this.frame139, 164, this.frame165, 188, this.frame189, 205, this.frame206);
    this.nextAction = this.doNothing;
    this.offActions = new Array();
    this.offActions[0] = this.startMovingTongueIn;
    this.offActions[1] = this.startMovingTongueIn;
    this.offActions[2] = this.startMovingTongueIn;
    this.offActions[3] = this.startMovingTongueOut;
    this.offActions[4] = this.doNothing;
    this.offActions[5] = this.lick;
    this.offActions[6] = this.longLick;
    this.offActions[7] = this.smallLick;
    this.offActions[8] = this.tinyLick;
    this.offActions[9] = this.quickLick;
    this.shaftActions = new Array();
    this.shaftActions[0] = this.startMovingTongueIn;
    this.shaftActions[1] = this.doNothing;
    this.shaftActions[2] = this.tinyLick;
    this.shaftActions[3] = this.shaftLick;
    this.tipActions = new Array();
    this.tipActions[0] = this.lick;
    this.tipActions[1] = this.longLick;
    this.tipActions[2] = this.smallLick;
    this.tipActions[3] = this.tinyLick;
    this.tipActions[4] = this.quickLick;
    this.solidAction = new Dictionary();
    this.solidAction[this.startMovingTongueIn] = false;
    this.solidAction[this.startMovingTongueOut] = false;
    this.solidAction[this.doNothing] = false;
    this.solidAction[this.lick] = true;
    this.solidAction[this.longLick] = true;
    this.solidAction[this.smallLick] = true;
    this.solidAction[this.tinyLick] = true;
    this.solidAction[this.quickLick] = true;
    this.solidAction[this.shaftLick] = false;
    this.tiltSpeeds = new Dictionary();
    this.tiltSpeeds[this.lick] = 0.3;
    this.tiltSpeeds[this.longLick] = 0.15;
    this.tiltSpeeds[this.smallLick] = 0.25;
    this.tiltSpeeds[this.tinyLick] = 0.25;
    this.tiltSpeeds[this.quickLick] = 0.3;
    this.pushPower = new Dictionary();
    this.pushPower[this.lick] = -0.1;
    this.pushPower[this.longLick] = -0.1;
    this.pushPower[this.smallLick] = -0.05;
    this.pushPower[this.tinyLick] = -0.05;
    this.pushPower[this.quickLick] = -0.05;
    this.gotoAndStop("InDone");
    addEventListener(Event.ENTER_FRAME, this.tick);
    return;
    }// end function

    [TONGUE, Part 3]
    public function tick(event:Event) : void
    {
    this.updatePiercing();
    return;
    }// end function

    public function setMouthFull(param1:Boolean = true) : void
    {
    this.mouthFull = param1;
    this.mouthFullTimer = 0;
    this.mouthFullTime = Math.floor(Math.random() * 60);
    return;
    }// end function

    public function encourage(param1:uint = 5) : void
    {
    this.increasedAction = param1;
    return;
    }// end function

    public function hangOut() : void
    {
    this.hangingOut = true;
    this.startMovingTongue("out");
    return;
    }// end function

    public function stopHangingOut() : void
    {
    this.hangingOut = false;
    this.startFastIn();
    return;
    }// end function

    public function startMovingTongue(param1:String)
    {
    if (param1 == "out")
    {
    if (g.tongue && !this.tongueOut && !g.her.isSpeaking() && !g.her.teethClenched)
    {
    this.waitingForIn = false;
    this.waitingForOut = true;
    this.mouthFullTimer = 0;
    }
    }
    else if (param1 == "in" && this.tongueOut)
    {
    this.waitingForIn = true;
    this.waitingForOut = false;
    }
    return;
    }// end function

    public function startFastIn() : void
    {
    this.waitingForIn = true;
    this.waitingForOut = false;
    this.fastIn = true;
    return;
    }// end function

    public function get tip() : Point
    {
    return new Point(this.tipPoint.x, this.tipPoint.y);
    }// end function

    public function getPush() : Number
    {
    if (this.solidAction[this.currentAction])
    {
    return this.pushPower[this.currentAction];
    }
    return 0;
    }// end function

    public function getHeadTilt() : Number
    {
    return this.tiltOffset;
    }// end function

    public function block() : Boolean
    {
    if (this.solidAction[this.currentAction] && this.startedOff)
    {
    return true;
    }
    return false;
    }// end function

    public function okayToHit() : Boolean
    {
    if (this.tongueOut)
    {
    return true;
    }
    return false;
    }// end function

    public function cumHit() : void
    {
    this.swallowTimer = 0;
    var _loc_1:String = this;
    var _loc_2:* = this.cumOnTongue + 1;
    _loc_1.cumOnTongue = _loc_2;
    return;
    }// end function

    public function cumRemoved() : void
    {
    this.cumOnTongue = Math.max(0, (this.cumOnTongue - 1));
    return;
    }// end function

    public function ejaculating() : void
    {
    if (this.checkOff())
    {
    this.startMovingTongue("out");
    }
    return;
    }// end function

    public function touched() : Boolean
    {
    if (this.waitingToTouch)
    {
    g.him.givePleasure(Math.random() * 25 + 100);
    this.waitingToTouch = false;
    g.soundControl.playLick();
    return true;
    }
    return false;
    }// end function

    public function update(param1:Number, param2:Number, param3:Number, param4:Number) : void
    {
    this.currentPos = param1;
    this.tiltOffset = this.tiltOffset * 0.8;
    if (param2 > 30 || param4 > 300)
    {
    this.startFastIn();
    }
    if (this.waitingForOut && (this.currentAction == null || this.currentAction == this.startMovingTongueOut))
    {
    this.moveTongueOut();
    }
    else if (this.waitingForIn && (this.currentAction == null || this.currentAction == this.startMovingTongueIn))
    {
    this.moveTongueIn();
    }
    else if (this.playingAction)
    {
    var _loc_5:String = this;
    var _loc_6:* = this.actionTime + 1;
    _loc_5.actionTime = _loc_6;
    if (this.solidAction[this.currentAction])
    {
    this.tiltOffset = this.tiltOffset - 0.5 * (1 - Math.cos(this.actionTime * this.tiltSpeeds[this.currentAction]));
    }
    if (this.currentFrameLabel == "InDone" || this.currentFrameLabel == "OutDone")
    {
    this.playingAction = false;
    this.currentAction = null;
    this.waitingToTouch = false;
    if (this.currentFrameLabel == "OutDone")
    {
    this.gotoAndStop(this.tongueOutEndFrame);
    }
    }
    }
    else
    {
    if (this.cumOnTongue > 0)
    {
    var _loc_5:String = this;
    var _loc_6:* = this.swallowTimer + 1;
    _loc_5.swallowTimer = _loc_6;
    if (this.swallowTimer > this.swallowTime)
    {
    this.startMovingTongue("in");
    }
    }
    if (this.tongueOut)
    {
    if (this.mouthFull)
    {
    if (this.mouthFullTime >= 0)
    {
    if (this.mouthFullTimer < this.mouthFullTime)
    {
    this.mouthFullTimer = this.mouthFullTimer + g.her.currentPenisDistance * 0.0025;
    }
    else
    {
    this.mouthFullTime = -1;
    this.startMovingTongue("in");
    }
    }
    }
    }
    if (!g.her.passedOut && !g.her.isSpeaking())
    {
    if (this.checkNearTip() || this.increasedAction > 0)
    {
    if (this.nearTimer < this.nearTime)
    {
    this.wiggleTongue(this.nearTime - this.nearTimer);
    var _loc_5:String = this;
    var _loc_6:* = this.nearTimer + 1;
    _loc_5.nearTimer = _loc_6;
    }
    else if (param3 < 10 && param4 < 300)
    {
    if (!this.tongueOut)
    {
    this.startMovingTongue("out");
    }
    else
    {
    this.performRandomTipAction();
    }
    this.nearTimer = 0;
    }
    }
    else
    {
    this.nearTimer = 0;
    if (this.actionTimer < this.nextActionTime)
    {
    this.wiggleTongue(this.nextActionTime - this.actionTimer);
    var _loc_5:String = this;
    var _loc_6:* = this.actionTimer + 1;
    _loc_5.actionTimer = _loc_6;
    }
    else
    {
    this.performNextAction();
    }
    }
    }
    }
    this.wiggleSpeed = this.wiggleSpeed * 0.9;
    if (this.increasedAction > 0)
    {
    var _loc_5:String = this;
    var _loc_6:* = this.increasedAction - 1;
    _loc_5.increasedAction = _loc_6;
    }
    return;
    }// end function

    public function updatePiercing() : void
    {
    var _loc_1:* = g.getAngle(Math.min(25, this.tipPoint.x), this.tipPoint.y);
    this.piercing.x = this.tipPoint.x;
    this.piercing.y = this.tipPoint.y;
    this.piercing.rotation = _loc_1;
    this.piercingBack.x = this.tipPoint.x;
    this.piercingBack.y = this.tipPoint.y;
    this.piercingBack.rotation = _loc_1;
    return;
    }// end function

    public function wiggleTongue(param1:int = 0) : void
    {
    var _loc_2:uint = 0;
    param1 = Math.max(0, param1);
    if (this.currentLabel == "TongueOut")
    {
    _loc_2 = Math.max(this.tongueOutEndFrame - 10, this.tongueOutEndFrame - param1);
    this.wiggleSpeed = this.wiggleSpeed + (Math.random() - 0.5);
    if (this.hangingOut)
    {
    this.wiggleSpeed = Math.max(-2, Math.min(2, this.wiggleSpeed));
    }
    else
    {
    this.wiggleSpeed = Math.max(-1.2, Math.min(1.2, this.wiggleSpeed));
    }
    this.gotoAndStop(Math.max(_loc_2, Math.min(this.tongueOutEndFrame, this.currentFrame + Math.round(this.wiggleSpeed))));
    }
    return;
    }// end function

    public function performRandomTipAction() : void
    {
    var _loc_1:uint = 0;
    this.actionTimer = 0;
    if (this.increasedAction > 0)
    {
    this.nextActionTime = Math.floor(Math.random() * 15) + 5;
    this.nearTime = Math.random() * 10;
    }
    else
    {
    this.nextActionTime = Math.floor(Math.random() * 60) + 15;
    this.nearTime = Math.ceil(Math.random() * 40) + 5;
    }
    if (this.increasedAction > 0 && !this.tongueOut)
    {
    this.nextAction = this.startMovingTongueOut;
    }
    else
    {
    _loc_1 = Math.floor(Math.random() * this.tipActions.length);
    this.nextAction = this.tipActions[_loc_1];
    }
    this.performNextAction();
    return;
    }// end function

    public function randomAction() : void
    {
    var _loc_1:Array = null;
    var _loc_2:uint = 0;
    this.actionTimer = 0;
    this.mouthFullTimer = 0;
    if (this.increasedAction > 0)
    {
    this.nextActionTime = Math.floor(Math.random() * 15) + 5;
    }
    else
    {
    this.nextActionTime = Math.floor(Math.random() * 60) + 15;
    }
    if (g.her.currentPenisDistance > 0 && this.mouthFull)
    {
    _loc_1 = this.shaftActions;
    }
    else
    {
    _loc_1 = this.offActions;
    }
    if (this.increasedAction > 0)
    {
    _loc_2 = Math.floor(Math.random() * (_loc_1.length - 1)) + 1;
    }
    else
    {
    _loc_2 = Math.floor(Math.random() * _loc_1.length);
    }
    this.nextAction = _loc_1[_loc_2];
    return;
    }// end function

    public function performNextAction() : void
    {
    this.actionTime = 0;
    this.nearTip = this.checkNearTip();
    this.startedOff = this.checkOff();
    this.currentAction = this.nextAction;
    this.playingAction = true;
    this.nextAction();
    this.randomAction();
    return;
    }// end function

    public function checkNearTip() : Boolean
    {
    if (g.her.currentPenisDistance > -60 && (g.her.currentPenisDistance < 30 || g.penisOut))
    {
    return true;
    }
    return false;
    }// end function

    public function checkOff() : Boolean
    {
    if (g.her.currentPenisDistance < 0)
    {
    return true;
    }
    return false;
    }// end function

    public function startMovingTongueIn() : void
    {
    if (this.tongueOut)
    {
    this.startMovingTongue("in");
    }
    else
    {
    this.playingAction = false;
    }
    return;
    }// end function

    public function startMovingTongueOut() : void
    {
    if (!this.tongueOut)
    {
    this.startMovingTongue("out");
    }
    else
    {
    this.playingAction = false;
    }
    return;
    }// end function

    public function moveTongueIn() : void
    {
    this.playingAction = true;
    if (this.currentLabel == "OutDone")
    {
    this.gotoAndStop(this.tongueOutEndFrame);
    }
    else
    {
    if (this.fastIn)
    {
    this.gotoAndStop(Math.max(this.tongueOutStartFrame, this.currentFrame - 4));
    }
    else
    {
    this.gotoAndStop(Math.max(this.tongueOutStartFrame, this.currentFrame - 2));
    }
    if (this.currentFrame == this.tongueOutStartFrame)
    {
    this.swallowTime = Math.ceil(Math.random() * 60) + 15;
    this.waitingForIn = false;
    this.fastIn = false;
    this.cumOnTongue = 0;
    this.gotoAndStop("InDone");
    }
    if (this.hangingOut)
    {
    this.fastIn = false;
    this.waitingForIn = false;
    this.startMovingTongue("out");
    }
    this.tongueOut = false;
    }
    return;
    }// end function

    public function moveTongueOut() : void
    {
    this.playingAction = true;
    if (this.currentLabel == "InDone")
    {
    this.gotoAndStop(this.tongueOutStartFrame);
    }
    else
    {
    this.gotoAndStop(Math.min(this.tongueOutEndFrame, this.currentFrame + 2));
    if (this.currentFrame == this.tongueOutEndFrame)
    {
    this.waitingForOut = false;
    this.tongueOut = true;
    this.gotoAndStop("OutDone");
    }
    }
    return;
    }// end function

    public function doNothing() : void
    {
    this.playingAction = false;
    return;
    }// end function

    public function lick() : void
    {
    if (this.tongueOut)
    {
    this.gotoAndPlay("Lick");
    this.tongueOut = false;
    if (this.increasedAction > 0 || Math.random() > 0.5)
    {
    this.startMovingTongue("out");
    }
    this.waitingToTouch = true;
    }
    return;
    }// end function

    public function longLick() : void
    {
    if (this.tongueOut)
    {
    this.gotoAndPlay("LongLick");
    this.tongueOut = false;
    if (this.increasedAction > 0 || Math.random() > 0.5)
    {
    this.startMovingTongue("out");
    }
    this.waitingToTouch = true;
    }
    return;
    }// end function

    public function smallLick() : void
    {
    if (this.tongueOut)
    {
    this.gotoAndPlay("SmallLick");
    this.waitingToTouch = true;
    }
    return;
    }// end function

    public function tinyLick() : void
    {
    if (this.tongueOut)
    {
    this.gotoAndPlay("TinyLick");
    this.waitingToTouch = true;
    }
    return;
    }// end function

    public function quickLick() : void
    {
    if (this.tongueOut)
    {
    this.gotoAndPlay("QuickLick");
    this.waitingToTouch = true;
    }
    return;
    }// end function

    public function shaftLick() : void
    {
    if (this.tongueOut)
    {
    this.gotoAndPlay("ShaftLick");
    this.waitingToTouch = true;
    }
    return;
    }// end function

    function frame76()
    {
    gotoAndStop("InDone");
    return;
    }// end function

    function frame115()
    {
    gotoAndStop("InDone");
    return;
    }// end function

    function frame139()
    {
    gotoAndStop("OutDone");
    return;
    }// end function

    function frame165()
    {
    gotoAndStop("OutDone");
    return;
    }// end function

    function frame189()
    {
    gotoAndStop("OutDone");
    return;
    }// end function

    function frame206()
    {
    gotoAndStop("OutDone");
    return;
    }// end function

    }
    }
     
  19. Doomknight

    Doomknight Guest

    [IK CONTROLLER]
    -> Has a bunch of stuff I dunno about, but it appears to deal with the Tapping of Her fingers when shes losing breath.
    public var dropping:Boolean = false;
    public var reversed:int;
    public var coordinateSpace:DisplayObject;
    public var s1:DisplayObject;
    public var s2:DisplayObject;
    public var s3:DisplayObject;
    public var s1L:Number;
    public var s1LSq:Number;
    public var s1OffsetAng:Number;
    public var s1StartPoint:Point;
    public var s2L:Number;
    public var s2LSq:Number;
    public var s2OffsetAng:Number;
    public var s2StartPoint:Point;
    public var s3StartPoint:Point;
    public var lastS1Ang:Number;
    public var lastS2Ang:Number;
    public var s1AS:Number = 0;
    public var s2AS:Number = 0;
    public var maxL:Number;
    public var scaling:Number = 1;
    public var endRotationTargets:Array;
    public var endRotationAngle:Number = 0;
    public var v:Point;
    public var offsetAng:Number;
    public var totalL:Number;
    public var totalLSq:Number;
    public var s1Ang:Number = 0;
    public var s2Ang:Number = 0;
    public var s3Ang:Number = 0;
    public var m1Ang:Number = 0;
    public var m2Ang:Number = 0;
    public var m1:Matrix;
    public var m2:Matrix;
    public var m3:Matrix;
    public var springV:Point;
    public var s3Mass:Number = 6;
    public var reversedEnd:Boolean = false;
    public var maxSlipDist:Number = 65;
    public var slipping:Boolean = false;
    public var slipTimer:uint = 0;
    public var slipTime:uint = 15;
    public var gravity:Number = 15;
    public var speed:Point;
    public var friction:Number = 0.6;
    public var mass:Number = 10;
    public var currentPoint:Point;
    public var localTargetPoint:Point;
    public var originalTarget:Point;
    public var targetPoint:Point;
    public var targetPointCoordinateSpace:DisplayObject;
    public var tapping:Boolean = false;
    public var tapVector:Point;
    public var tapDist:Number = 0;
    public var tapSpeed:Number = 0;
    public var tapMultiplier:Number = 1;
    public var tapPower:Number = 0;
    public var maxTapPower:Number = 4;

    [BREAST CONTROLLER]
    -> Variables and stuff for controlling Her Breasts. BreastFirmness in "settings.txt".
    package obj.animation
    {
    import flash.display.*;
    import flash.geom.*;

    public class BreastController extends Object
    {
    public var _breast:DisplayObject;
    public var _costumeLayers:Array;
    public var _breastOrigin:Point;
    public var _originalRotation:Number;
    public var _breastFirmness:Number = 0.2;
    public var _breastMatrix:Matrix;
    public var _costumeOn:Boolean = false;
    public var _flip:int = 1;
    public var _skew:Number = 0;
    public var _speed:Number = 0;

    public function BreastController(param1:DisplayObject, ... args) : void
    {
    args = 0;
    var _loc_4:uint = 0;
    this._breastMatrix = new Matrix();
    this._breast = param1;
    this._breastOrigin = new Point(this._breast.x, this._breast.y);
    this._originalRotation = this._breast.rotation;
    this._flip = Math.round(this._breast.transform.matrix.a / this._breast.scaleX);
    this._costumeLayers = new Array();
    if (args)
    {
    args = args.length;
    _loc_4 = 0;
    while (_loc_4 < args)
    {

    if (args[_loc_4] is DisplayObject)
    {
    this._costumeLayers.push(args[_loc_4]);
    }
    _loc_4 = _loc_4 + 1;
    }
    }
    return;
    }// end function

    public function accelerate(param1:Number) : void
    {
    this._speed = this._speed + param1;
    return;
    }// end function

    public function update(param1:Number = 0, param2:Number = 0, param3:Number = 0, param4:Number = 0) : void
    {
    var _loc_5:DisplayObject = null;
    this._speed = this._speed + ((-this._skew) * this._breastFirmness + param1);
    this._speed = this._speed * (0.7 + Math.random() * 0.1);
    this._skew = this._skew + this._speed;
    this._breastMatrix.identity();
    this._breastMatrix.rotate(param2 / 180 * Math.PI);
    this._breastMatrix.translate(this._breastOrigin.x + param3, this._breastOrigin.y + param4);
    this._breastMatrix.scale(0.95 + Math.cos(this._skew * 5) * 0.1, 1);
    this._breastMatrix.b = this._skew;
    this._breast.transform.matrix = this._breastMatrix;
    for each (_loc_5 in this._costumeLayers)
    {

    _loc_5.transform.matrix = this._breastMatrix;
    }
    return;
    }// end function

    public function updateFirmness(param1:uint, param2:Boolean = false) : void
    {
    this._breastFirmness = Math.max(0.2, 0.2 + (60 - param1) * 0.01);
    this._costumeOn = param2;
    if (this._costumeOn)
    {
    this._breastFirmness = Math.max(0.2, this._breastFirmness + 0.1);
    }
    return;
    }// end function

    }
    }

    [MAIN ANIMATION]
    -> Dunno about anything of this.
    package obj.animation
    {
    import flash.geom.*;
    import obj.*;

    public class MainAnimation extends Object
    {
    public var herTween:LinearTween;
    public var herKneeTarget:Point;
    public var altVector:Point;
    public var altRange:Number;
    public var torsoMinAng:Number;
    public var torsoStartAng:Number;
    public var torsoAngMultiplier:Number;
    public var torsoMinDist:Number;
    public var torsoStartDist:Number;
    public var torsoDistMultiplier:Number;
    public var hisTween:LinearTween;
    public var hisLeftFootTarget:Point;
    public var hisRightFootTarget:Point;
    public var posScaling:Function;
    public var tipPosEstimate:Number = 0.15;
    public var penisLength:Number = -1;

    public function MainAnimation() : void
    {
    this.posScaling = this.noScaling;
    return;
    }// end function

    public function getHerMatrix(param1:Number, param2:Number) : Matrix
    {
    param1 = this.posScaling(param1);
    var _loc_3:* = this.herTween.tween(param1);
    var _loc_4:* = new Point();
    new Point().x = this.altVector.x * this.altRange * param2;
    _loc_4.y = this.altVector.y * this.altRange * param2;
    _loc_3.translate(_loc_4.x, _loc_4.y);
    return _loc_3;
    }// end function

    public function getHisMatrix(param1:Number) : Matrix
    {
    param1 = this.posScaling(param1);
    var _loc_2:* = this.hisTween.tween(param1);
    return _loc_2;
    }// end function

    public function get estimateTipPos() : Number
    {
    var _loc_1:Number = NaN;
    var _loc_2:Number = NaN;
    var _loc_3:Number = NaN;
    var _loc_4:Point = null;
    var _loc_5:Point = null;
    var _loc_6:Number = NaN;
    if (this.penisLength != g.him.currentPenisLength)
    {
    _loc_6 = g.him.currentPenisLength;
    _loc_1 = this.herTween.translationLength;
    _loc_2 = this.hisTween.translationLength;
    _loc_3 = _loc_1 + _loc_2;
    _loc_4 = g.sceneLayer.globalToLocal(g.him.getPenisTipPoint());
    _loc_5 = g.sceneLayer.globalToLocal(g.him.getPenisBasePoint());
    _loc_6 = Maths.vectorLength(new Point(_loc_4.x - _loc_5.x, _loc_4.y - _loc_5.x));
    _loc_6 = _loc_6 - 65;
    this.tipPosEstimate = (_loc_3 - _loc_6) / _loc_3;
    }
    return this.tipPosEstimate;
    }// end function

    public function noScaling(param1:Number) : Number
    {
    return param1;
    }// end function

    }
    }
     
  20. Doomknight

    Doomknight Guest

    [ANIMATION CONTROL]
    -> Appears to control the two fucking options: Default and Facefuck.
    package obj.animation
    {
    import flash.geom.*;
    import flash.utils.*;
    import obj.*;

    public class AnimationControl extends Object
    {
    public var currentAnimation:String = "default";
    public var animations:Dictionary;
    public var linearPenisOutTransition:Number = 0;
    public var smoothedPenisOutTransition:Number = 0;
    public static var DEFAULT:String = "default";
    public static var FACE_FUCK:String = "face_fuck";

    public function AnimationControl() : void
    {
    this.animations = new Dictionary();
    var defaultAnimation:* = new MainAnimation();
    var defaultHer:* = new LinearTween();
    defaultHer.offsetStart(-40, 270, -15);
    defaultHer.offsetEnd(250, 367.3, -20);
    var defaultHim:* = new LinearTween();
    defaultHim.offsetStart(420, 135, -3);
    defaultHim.offsetEnd(340, 135);
    defaultAnimation.herTween = defaultHer;
    defaultAnimation.herKneeTarget = new Point(160, 1240);
    defaultAnimation.altVector = new Point(0, 1);
    defaultAnimation.altRange = 80;
    defaultAnimation.hisTween = defaultHim;
    defaultAnimation.hisLeftFootTarget = new Point(625, 1315);
    defaultAnimation.hisRightFootTarget = new Point(620, 1168);
    defaultAnimation.torsoMinAng = 4.3;
    defaultAnimation.torsoStartAng = 3.43;
    defaultAnimation.torsoAngMultiplier = 0.61;
    defaultAnimation.torsoMinDist = 180;
    defaultAnimation.torsoStartDist = 130;
    defaultAnimation.torsoDistMultiplier = 35;
    this.animations[DEFAULT] = defaultAnimation;
    var faceFuckAnimation:* = new MainAnimation();
    var ffHer:* = new LinearTween();
    ffHer.offsetStart(35, 300, -15);
    ffHer.offsetEnd(145, 382.3, -20);
    var ffHim:* = new LinearTween();
    ffHim.offsetStart(470, 160, -3);
    ffHim.offsetEnd(235, 150);
    faceFuckAnimation.herTween = ffHer;
    faceFuckAnimation.herKneeTarget = new Point(20, 1240);
    faceFuckAnimation.altVector = new Point(0, 1);
    faceFuckAnimation.altRange = 80;
    faceFuckAnimation.hisTween = ffHim;
    faceFuckAnimation.hisLeftFootTarget = new Point(520, 1300);
    faceFuckAnimation.hisRightFootTarget = new Point(550, 1133);
    faceFuckAnimation.torsoMinAng = 4.3;
    faceFuckAnimation.torsoStartAng = 3.9;
    faceFuckAnimation.torsoAngMultiplier = 0.3;
    faceFuckAnimation.torsoMinDist = 180;
    faceFuckAnimation.torsoStartDist = 145;
    faceFuckAnimation.torsoDistMultiplier = 5;
    faceFuckAnimation.posScaling = function (param1:Number) : Number
    {
    return param1 > 0 ? (Math.pow(param1, 1.5)) : (param1);
    }// end function
    ;
    this.animations[FACE_FUCK] = faceFuckAnimation;
    return;
    }// end function

    public function stepAnimation() : void
    {
    var _loc_1:* = g.her.move(g.currentPos.x, g.currentPos.y);
    g.herCurrentPos = _loc_1;
    g.him.move(_loc_1, g.currentPos.x, g.currentPos.y);
    g.her.updateArms();
    return;
    }// end function

    public function setAnimation(param1:String) : void
    {
    this.currentAnimation = param1;
    this.dispatchUpdates();
    this.stepAnimation();
    return;
    }// end function

    public function loadStyle(param1:String) : void
    {
    if (this.animations[param1])
    {
    this.currentAnimation = param1;
    this.dispatchUpdates();
    }
    return;
    }// end function

    public function dispatchUpdates() : void
    {
    g.him.animationChanged();
    g.her.updateKneeTarget();
    EventBus.dispatch("penisTipPosChanged");
    return;
    }// end function

    public function get currentAnimationID() : uint
    {
    if (this.currentAnimation == FACE_FUCK)
    {
    return 2;
    }
    return 1;
    }// end function

    public function get currentAnimationName() : String
    {
    return this.currentAnimation;
    }// end function

    public function debugSetLeftFoot(param1:Point) : void
    {
    this.animations[this.currentAnimation].hisLeftFootTarget = param1;
    g.him.animationChanged();
    return;
    }// end function

    public function debugSetRightFoot(param1:Point) : void
    {
    this.animations[this.currentAnimation].hisRightFootTarget = param1;
    g.him.animationChanged();
    return;
    }// end function

    public function update() : void
    {
    if (g.penisOut && this.linearPenisOutTransition < 1)
    {
    this.linearPenisOutTransition = Math.min(1, this.linearPenisOutTransition + 0.1);
    this.smoothedPenisOutTransition = (1 - Math.cos(this.linearPenisOutTransition * Math.PI)) * 0.5;
    }
    else if (!g.penisOut && this.linearPenisOutTransition > 0)
    {
    this.linearPenisOutTransition = Math.max(0, this.linearPenisOutTransition - 0.1);
    this.smoothedPenisOutTransition = (1 - Math.cos(this.linearPenisOutTransition * Math.PI)) * 0.5;
    }
    return;
    }// end function

    public function get penisOutTransition() : Number
    {
    return this.smoothedPenisOutTransition;
    }// end function

    public function estimateTipPos() : Number
    {
    return this.animations[this.currentAnimation].estimateTipPos;
    }// end function

    public function getHerMatrix(param1:Number, param2:Number) : Matrix
    {
    var _loc_3:* = this.animations[this.currentAnimation];
    var _loc_4:* = _loc_3.getHerMatrix(param1, param2 * Math.max(this.smoothedPenisOutTransition, Math.max(0, param1 * 2 - 0.5)));
    _loc_3.getHerMatrix(param1, param2 * Math.max(this.smoothedPenisOutTransition, Math.max(0, param1 * 2 - 0.5))).translate(0, (-g.him.currentPenisBaseWidth) * 0.5 * (param1 > 0 ? (param1) : (0)));
    var _loc_5:* = new Point(_loc_4.tx - _loc_3.herKneeTarget.x, _loc_4.ty - _loc_3.herKneeTarget.y);
    var _loc_6:* = Math.sqrt(_loc_5.x * _loc_5.x + _loc_5.y * _loc_5.y);
    var _loc_7:* = 1100 * g.her.bodyScale;
    if (_loc_6 > _loc_7)
    {
    _loc_5.x = _loc_5.x * (_loc_7 / _loc_6);
    _loc_5.y = _loc_5.y * (_loc_7 / _loc_6);
    _loc_4.tx = _loc_3.herKneeTarget.x + _loc_5.x;
    _loc_4.ty = _loc_3.herKneeTarget.y + _loc_5.y;
    }
    return _loc_4;
    }// end function

    public function getHerKneeTarget() : Point
    {
    var _loc_1:* = this.animations[this.currentAnimation];
    return _loc_1.herKneeTarget.clone();
    }// end function

    public function getHisMatrix(param1:Number) : Matrix
    {
    var _loc_2:* = this.animations[this.currentAnimation];
    var _loc_3:* = _loc_2.getHisMatrix(param1);
    return _loc_3;
    }// end function

    public function getHisLeftFootTarget() : Point
    {
    var _loc_1:* = this.animations[this.currentAnimation];
    return _loc_1.hisLeftFootTarget.clone();
    }// end function

    public function getHisRightFootTarget() : Point
    {
    var _loc_1:* = this.animations[this.currentAnimation];
    return _loc_1.hisRightFootTarget.clone();
    }// end function

    public function get torsoMinAng() : Number
    {
    var _loc_1:* = this.animations[this.currentAnimation];
    return _loc_1.torsoMinAng;
    }// end function

    public function get torsoStartAng() : Number
    {
    var _loc_1:* = this.animations[this.currentAnimation];
    return _loc_1.torsoStartAng;
    }// end function

    public function get torsoAngMultiplier() : Number
    {
    var _loc_1:* = this.animations[this.currentAnimation];
    return _loc_1.torsoAngMultiplier;
    }// end function

    public function get torsoMinDist() : Number
    {
    var _loc_1:* = this.animations[this.currentAnimation];
    return _loc_1.torsoMinDist;
    }// end function

    public function get torsoStartDist() : Number
    {
    var _loc_1:* = this.animations[this.currentAnimation];
    return _loc_1.torsoStartDist;
    }// end function

    public function get torsoDistMultiplier() : Number
    {
    var _loc_1:* = this.animations[this.currentAnimation];
    return _loc_1.torsoDistMultiplier;
    }// end function

    }
    }

    [LINEAR TWEEN]
    -> No idea what this does.
    package obj.animation
    {
    import __AS3__.vec.*;
    import flash.display.*;
    import flash.geom.*;
    import flash.utils.*;
    import obj.*;

    public class LinearTween extends Object
    {
    public var _targets:Vector.<DisplayObject>;
    public var _inverseRatio:Number;
    public var _startMatrix:Matrix;
    public var _endMatrix:Matrix;
    public var _tweenMatrix:Matrix;
    public var _startAng:Number = 0;
    public var _endAng:Number = 0;
    public var _startSkew:Point;
    public var _endSkew:Point;
    public var _baseObject:DisplayObject;
    public var _offsetMatrices:Dictionary;
    public var _skewed:Boolean = false;

    public function LinearTween(... args) : void
    {
    args = undefined;
    var _loc_3:Matrix = null;
    var _loc_4:Matrix = null;
    this._startSkew = new Point();
    this._endSkew = new Point();
    this._targets = new Vector.<DisplayObject>;
    this._offsetMatrices = new Dictionary();
    for each (args in args)
    {

    if (args is DisplayObject)
    {
    this._targets.push(args);
    if (!this._baseObject)
    {
    this._baseObject = args;
    continue;
    }
    if (args.parent != this._baseObject.parent)
    {
    _loc_3 = this._baseObject.parent.transform.matrix;
    _loc_4 = args.parent.transform.matrix;
    _loc_4.invert();
    _loc_3.concat(_loc_4);
    this._offsetMatrices[args] = _loc_3;
    }
    }
    }
    this._startMatrix = new Matrix();
    this._endMatrix = new Matrix();
    this._tweenMatrix = new Matrix();
    if (this._targets.length > 0)
    {
    this._startMatrix = this._targets[0].transform.matrix.clone();
    this._endMatrix = this._targets[0].transform.matrix.clone();
    }
    return;
    }// end function

    public function tween(param1:Number) : Matrix
    {
    var _loc_2:DisplayObject = null;
    var _loc_3:Number = NaN;
    var _loc_4:Number = NaN;
    var _loc_5:Number = NaN;
    var _loc_6:Matrix = null;
    if (this._skewed)
    {
    this._tweenMatrix.a = this._startMatrix.a + param1 * (this._endMatrix.a - this._startMatrix.a);
    this._tweenMatrix.d = this._startMatrix.d + param1 * (this._endMatrix.d - this._startMatrix.d);
    this._tweenMatrix.c = Math.tan(this._startSkew.x + param1 * (this._endSkew.x - this._startSkew.x));
    this._tweenMatrix.b = Math.tan(this._startSkew.y + param1 * (this._endSkew.y - this._startSkew.y));
    }
    else
    {
    _loc_3 = this._startAng + param1 * (this._endAng - this._startAng);
    _loc_4 = Math.cos(_loc_3);
    _loc_5 = Math.sin(_loc_3);
    this._tweenMatrix.a = _loc_4;
    this._tweenMatrix.b = _loc_5;
    this._tweenMatrix.c = -_loc_5;
    this._tweenMatrix.d = _loc_4;
    }
    this._tweenMatrix.tx = this._startMatrix.tx + param1 * (this._endMatrix.tx - this._startMatrix.tx);
    this._tweenMatrix.ty = this._startMatrix.ty + param1 * (this._endMatrix.ty - this._startMatrix.ty);
    for each (_loc_2 in this._targets)
    {

    if (this._offsetMatrices[_loc_2])
    {
    _loc_6 = this._tweenMatrix.clone();
    _loc_6.concat(this._offsetMatrices[_loc_2]);
    _loc_2.transform.matrix = _loc_6;
    continue;
    }
    _loc_2.transform.matrix = this._tweenMatrix;
    }
    return this._tweenMatrix;
    }// end function

    public function offsetStart(param1:Number = 0, param2:Number = 0, param3:Number = 0) : void
    {
    this._startMatrix.translate(param1, param2);
    if (param3 != 0)
    {
    this._startAng = param3 / 180 * Math.PI;
    this._skewed = false;
    }
    return;
    }// end function

    public function offsetEnd(param1:Number = 0, param2:Number = 0, param3:Number = 0) : void
    {
    this._endMatrix.translate(param1, param2);
    if (param3 != 0)
    {
    this._endAng = param3 / 180 * Math.PI;
    this._skewed = false;
    }
    return;
    }// end function

    public function skewStart(param1:Number, param2:Number, param3:Number = 0, param4:Number = 0) : void
    {
    this._startSkew = new Point(param1 / 180 * Math.PI, param2 / 180 * Math.PI);
    if (param3)
    {
    this._startMatrix.a = param3;
    }
    if (param4)
    {
    this._startMatrix.d = param4;
    }
    this._skewed = true;
    return;
    }// end function

    public function skewEnd(param1:Number, param2:Number, param3:Number = 0, param4:Number = 0) : void
    {
    this._endSkew = new Point(param1 / 180 * Math.PI, param2 / 180 * Math.PI);
    if (param3)
    {
    this._endMatrix.a = param3;
    }
    if (param4)
    {
    this._endMatrix.d = param4;
    }
    this._skewed = true;
    return;
    }// end function

    public function rotateStart(param1:Number) : void
    {
    this._startAng = param1;
    this._skewed = false;
    return;
    }// end function

    public function rotateEnd(param1:Number) : void
    {
    this._endAng = param1;
    this._skewed = false;
    return;
    }// end function

    public function get start() : Matrix
    {
    return this._startMatrix;
    }// end function

    public function get end() : Matrix
    {
    return this._endMatrix;
    }// end function

    public function get translationLength() : Number
    {
    var _loc_1:* = new Point(this._endMatrix.tx - this._startMatrix.tx, this._endMatrix.ty - this._startMatrix.ty);
    return Maths.vectorLength(_loc_1);
    }// end function

    }
    }