Section 1
//Animation_1 (PussyTracker_Raven_fla.Animation_1)
package PussyTracker_Raven_fla {
import flash.display.*;
public dynamic class Animation_1 extends MovieClip {
public function Animation_1(){
addFrameScript(242, frame243);
}
function frame243(){
stop();
}
}
}//package PussyTracker_Raven_fla
Section 2
//MainVideo_47 (PussyTracker_Raven_fla.MainVideo_47)
package PussyTracker_Raven_fla {
import flash.display.*;
public dynamic class MainVideo_47 extends MovieClip {
public function MainVideo_47(){
addFrameScript(339, frame340, 659, frame660, 1087, frame1088, 1413, frame1414, 1828, frame1829);
}
function frame660(){
gotoAndPlay("Part2");
}
function frame1088(){
gotoAndPlay("Part3");
}
function frame340(){
gotoAndPlay("Part1");
}
function frame1414(){
gotoAndPlay("Part4");
}
function frame1829(){
stop();
}
}
}//package PussyTracker_Raven_fla
Section 3
//StatsSection_56 (PussyTracker_Raven_fla.StatsSection_56)
package PussyTracker_Raven_fla {
import flash.display.*;
import flash.text.*;
public dynamic class StatsSection_56 extends MovieClip {
public var stat1:TextField;
public var stat3:TextField;
public var stat2:TextField;
public var stat5:TextField;
public var bar2:MovieClip;
public var bar3:MovieClip;
public var bar4:MovieClip;
public var bar5:MovieClip;
public var bg3:MovieClip;
public var bg5:MovieClip;
public var stat4:TextField;
public var bg4:MovieClip;
public var bg2:MovieClip;
public var bar1:MovieClip;
public var bg1:MovieClip;
}
}//package PussyTracker_Raven_fla
Section 4
//textcopy_3 (PussyTracker_Raven_fla.textcopy_3)
package PussyTracker_Raven_fla {
import flash.display.*;
public dynamic class textcopy_3 extends MovieClip {
public function textcopy_3(){
addFrameScript(59, frame60);
}
function frame60(){
stop();
}
}
}//package PussyTracker_Raven_fla
Section 5
//TrackerHolder_49 (PussyTracker_Raven_fla.TrackerHolder_49)
package PussyTracker_Raven_fla {
import flash.display.*;
import flash.text.*;
public dynamic class TrackerHolder_49 extends MovieClip {
public var txtName:TextField;
public var image3:MovieClip;
public var image2:MovieClip;
public var image1:MovieClip;
public var image4:MovieClip;
public var mcStatHolder:MovieClip;
public var mcImage:MovieClip;
public var mcCover:MovieClip;
}
}//package PussyTracker_Raven_fla
Section 6
//UpsellPageLose_48 (PussyTracker_Raven_fla.UpsellPageLose_48)
package PussyTracker_Raven_fla {
import flash.display.*;
import flash.text.*;
public dynamic class UpsellPageLose_48 extends MovieClip {
public var tracker2:MovieClip;
public var tracker4:MovieClip;
public var txtMessage:TextField;
public var tracker3:MovieClip;
public var buttonReplay:SimpleButton;
public var tracker1:MovieClip;
}
}//package PussyTracker_Raven_fla
Section 7
//UpsellPageWin_60 (PussyTracker_Raven_fla.UpsellPageWin_60)
package PussyTracker_Raven_fla {
import flash.display.*;
import flash.text.*;
public dynamic class UpsellPageWin_60 extends MovieClip {
public var tracker2:MovieClip;
public var tracker4:MovieClip;
public var txtMessage:TextField;
public var tracker3:MovieClip;
public var buttonReplay:SimpleButton;
public var tracker1:MovieClip;
}
}//package PussyTracker_Raven_fla
Section 8
//water1copy2_34 (PussyTracker_Raven_fla.water1copy2_34)
package PussyTracker_Raven_fla {
import flash.display.*;
public dynamic class water1copy2_34 extends MovieClip {
public function water1copy2_34(){
addFrameScript(30, frame31);
}
function frame31(){
stop();
}
}
}//package PussyTracker_Raven_fla
Section 9
//ChaseItem (ChaseItem)
package {
import flash.display.*;
public class ChaseItem extends MovieClip {
public var friction:Number;
public var size:Number;
public var yPos:Number;
public var ySpeed:Number;
public var acc:Number;
public var maxDistance:Number;
public var xSpeed:Number;
private var main:Main;
public var xPos:Number;
private var gameConfig:GameConfig;
public function ChaseItem(){
gameConfig = new GameConfig();
acc = gameConfig.chasingItemBaseAcc;
xSpeed = 0;
ySpeed = 0;
friction = gameConfig.chasingItemBaseFriction;
size = gameConfig.chasingItemBaseSize;
setSize();
maxDistance = 10;
xPos = 0;
yPos = 0;
}
public function onTarget():Boolean{
var _local1:Number;
var _local2:Number;
var _local3:Number;
_local1 = getTargetXDistance();
_local2 = getTargetYDistance();
_local3 = Math.sqrt(((_local1 * _local1) + (_local2 * _local2)));
if (_local3 < size){
return (true);
};
return (false);
}
private function setSize(){
this.width = (size * 2);
this.height = (size * 2);
}
private function getTargetXDistance():Number{
return ((-(xPos) + this.parent.mouseX));
}
private function getTargetYDistance():Number{
return ((-(yPos) + this.parent.mouseY));
}
public function newLevel(){
size = (size + gameConfig.chasingItemSizeGrowth);
setSize();
acc = (acc + gameConfig.chasingItemAccGrowth);
friction = (friction + gameConfig.chasingItemFrictionGrowth);
}
public function animate(){
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
_local1 = getTargetXDistance();
_local2 = getTargetYDistance();
_local3 = Math.sqrt(((_local1 * _local1) + (_local2 * _local2)));
_local4 = Math.atan2(_local2, _local1);
_local5 = Math.cos(_local4);
_local6 = Math.sin(_local4);
if (_local3 > maxDistance){
_local7 = 1;
} else {
_local7 = (1 - ((maxDistance - _local3) / maxDistance));
};
xSpeed = (xSpeed + ((_local7 * _local5) * acc));
ySpeed = (ySpeed + ((_local7 * _local6) * acc));
xPos = (xPos + xSpeed);
yPos = (yPos + ySpeed);
xSpeed = (xSpeed * friction);
ySpeed = (ySpeed * friction);
this.x = xPos;
this.y = yPos;
}
}
}//package
Section 10
//electra1 (electra1)
package {
import flash.media.*;
public dynamic class electra1 extends Sound {
}
}//package
Section 11
//electra2 (electra2)
package {
import flash.media.*;
public dynamic class electra2 extends Sound {
}
}//package
Section 12
//electra3 (electra3)
package {
import flash.media.*;
public dynamic class electra3 extends Sound {
}
}//package
Section 13
//electraLoop (electraLoop)
package {
import flash.media.*;
public dynamic class electraLoop extends Sound {
}
}//package
Section 14
//GameConfig (GameConfig)
package {
public class GameConfig {
public var guyIncreaseAmmount:Number;
public var cXMLRootLocation:String;
public var targetItemBaseAcc:Number;
public var cName:String;
public var targetItemSizeGrowth:Number;
public var defaultXML:XML;
public var chasingItemSizeGrowth:Number;
public var girlIncreaseAmmount:Number;
public var cMochiClickMenu:String;
public var cTrackerID:int;
public var chasingItemBaseAcc:Number;
public var girlDecreaseAmmount:Number;
public var cMochiWin:String;
public var targetItemAccGrowth:Number;
public var targetItemFrictionGrowth:Number;
public var targetItemBaseFriction:Number;
public var guyDecreseAmmount:Number;
public var cMochiLose:String;
public var targetItemBaseSize:Number;
public var chasingItemFrictionGrowth:Number;
public var cLogoURL:String;
public var cMaxStatBarLength;
public var chasingItemBaseFriction:Number;
public var chasingItemAccGrowth:Number;
public var cMochiUpsell:String;
public var cMochiReplay:String;
public var cMochiClickSplash:String;
public var cMochiPlay:String;
public var chasingItemBaseSize:Number;
public function GameConfig(){
cTrackerID = 6;
cName = "Raven";
cMaxStatBarLength = 105;
cXMLRootLocation = "http://www.funsexgames.com/ourgames";
cLogoURL = "http://www.fishadultgames.com/free-sex-games/raven-freshman-fuck.php";
cMochiPlay = "85c97160";
cMochiClickSplash = "05ebca67";
cMochiClickMenu = "4f09485b";
cMochiWin = "b082e9bd";
cMochiLose = "647acb82";
cMochiReplay = "79b6aef9";
cMochiUpsell = "16a91884";
defaultXML = <game id="6" active="true" upsellSWF="" separateUpsellPages="false">
<winmessage>You taught Raven a thing or two! How about her friends?</winmessage>
<losemessage>Raven is insatiable! Maybe you can satisfy another girl.</losemessage>
<upsellitem type="both">
<name>Brunette</name>
<link>http://www.fishadultgames.com/free-sex-games/busty-brunette-facial-adventure.php</link>
<image>1</image>
<stats>
<stat text="allure" value="50" nobar="false"/>
<stat text="sensitivity" value="75" nobar="false"/>
<stat text="technique" value="50" nobar="false"/>
<stat text="tease" value="90" nobar="false"/>
<stat text="concentration" value="50" nobar="false"/>
</stats>
</upsellitem>
<upsellitem type="both">
<name>Megan</name>
<link>http://www.fishadultgames.com/free-sex-games/megan-a-fox-nude.php</link>
<image>2</image>
<stats>
<stat text="allure" value="50" nobar="false"/>
<stat text="sensitivity" value="75" nobar="false"/>
<stat text="technique" value="25" nobar="false"/>
<stat text="tease" value="30" nobar="false"/>
<stat text="concentration" value="10" nobar="false"/>
</stats>
</upsellitem>
<upsellitem type="both">
<name>Redhead</name>
<link>http://www.fishadultgames.com/free-sex-games/redhead-anal-adventure.php</link>
<image>3</image>
<stats>
<stat text="allure" value="80" nobar="false"/>
<stat text="sensitivity" value="75" nobar="false"/>
<stat text="technique" value="80" nobar="false"/>
<stat text="tease" value="50" nobar="false"/>
<stat text="concentration" value="35" nobar="false"/>
</stats>
</upsellitem>
<upsellitem type="both">
<name>Dwarf</name>
<link>http://www.fishadultgames.com/free-sex-games/fuck-dwarf-game.php</link>
<image>4</image>
<stats>
<stat text="allure" value="70" nobar="false"/>
<stat text="sensitivity" value="70" nobar="false"/>
<stat text="technique" value="70" nobar="false"/>
<stat text="tease" value="90" nobar="false"/>
<stat text="concentration" value="100" nobar="false"/>
</stats>
</upsellitem>
</game>
;
chasingItemBaseAcc = 0.4;
chasingItemBaseFriction = 0.98;
chasingItemBaseSize = 40;
chasingItemSizeGrowth = 2.5;
chasingItemAccGrowth = 0.14;
chasingItemFrictionGrowth = -0.0015;
targetItemBaseAcc = 1;
targetItemBaseFriction = 0.6;
targetItemBaseSize = 50;
targetItemSizeGrowth = 0;
targetItemAccGrowth = 0.1;
targetItemFrictionGrowth = -0.01;
guyIncreaseAmmount = 1;
guyDecreseAmmount = -0.2;
girlIncreaseAmmount = 1;
girlDecreaseAmmount = -0.002;
}
}
}//package
Section 15
//LogoSymbol (LogoSymbol)
package {
import flash.display.*;
public dynamic class LogoSymbol extends MovieClip {
}
}//package
Section 16
//Main (Main)
package {
import flash.display.*;
import flash.events.*;
import flash.text.*;
import flash.media.*;
import flash.utils.*;
import flash.net.*;
public class Main {
private var guyIndicator:TextField;
private var guyMeterRate:Number;
private var currentLevel;// = 1
private var guyMeter:Meter;
private var sChannel:SoundChannel;
private var chaseItem:ChaseItem;
private var defaultXML:XML;
private var imageLoaderArray:Array;
private var gameResultString:String;
private var maxGirlValue:Number;
private var bExternalUpsell:Boolean;
private var girlValue:Number;
private var gameState:String;
private var finalXML:XML;
private var targetItem:TargetItem;
private var loopSound:Sound;
private var girlMeter:Meter;
private var videoBox:MovieClip;
private var girlIndicator:TextField;
private var gameConfig:GameConfig;
private var swfLoader:Loader;
private var upsellTimer:Timer;
private var girlMeterRate:Number;
private var eChannel:SoundChannel;
private var timeLine:MovieClip;
private var bHasUpsell:Boolean;
private var guyValue:Number;
private var levelIndicator:TextField;
private var configLoader:URLLoader;
private var maxGuyValue:Number;
private var bInitializationComplete:Boolean;
public function Main(_arg1:MovieClip){
var _local2:URLRequest;
currentLevel = 1;
super();
gameConfig = new GameConfig();
defaultXML = gameConfig.defaultXML;
finalXML = defaultXML;
timeLine = _arg1;
bExternalUpsell = false;
bHasUpsell = true;
gameResultString = "";
bInitializationComplete = false;
imageLoaderArray = new Array();
videoBox = (timeLine.videoBox as MovieClip);
girlIndicator = (timeLine.girlTargetText as TextField);
guyIndicator = (timeLine.guyTargetText as TextField);
levelIndicator = (timeLine.levelText as TextField);
girlMeter = (timeLine.girlMeterBar as Meter);
guyMeter = (timeLine.guyMeterBar as Meter);
updateGameState("init");
timeLine.buttonPlayMore.visible = false;
timeLine.buttonPlayMore.addEventListener(MouseEvent.CLICK, playMoreButtonClicked);
timeLine.playButton.addEventListener(MouseEvent.CLICK, playButtonClicked);
timeLine.playButton.visible = false;
timeLine.buttonReplay.addEventListener(MouseEvent.CLICK, replayButtonClicked);
timeLine.buttonReplay.visible = false;
upsellTimer = new Timer(3000, 0);
upsellTimer.addEventListener(TimerEvent.TIMER, upsellTimerTick);
timeLine.videoBox.addFrameScript((timeLine.videoBox.totalFrames - 1), stopVideo);
initializeGame();
_local2 = new URLRequest(((((gameConfig.cXMLRootLocation + "/") + gameConfig.cTrackerID) + ".xml?ID=") + gameConfig.cTrackerID));
configLoader = new URLLoader();
configLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorFunction);
configLoader.addEventListener(IOErrorEvent.IO_ERROR, errorFunction);
configLoader.addEventListener(Event.COMPLETE, completeFunction);
configLoader.load(_local2);
}
private function errorFunction(_arg1:IOErrorEvent){
finalXML = defaultXML;
checkExternalUpsell();
}
private function newLevel():void{
var _local1:Boolean;
var _local2:*;
var _local3:Sound;
var _local4:SoundTransform;
_local1 = false;
if (chaseItem){
chaseItem.newLevel();
};
targetItem.newLevel();
currentLevel++;
_local2 = Math.floor((Math.random() * 3));
if (_local2 == 0){
_local3 = new electra1();
};
if (_local2 == 1){
_local3 = new electra2();
};
if (_local2 == 2){
_local3 = new electra3();
};
eChannel = _local3.play(0, 1);
_local4 = eChannel.soundTransform;
_local4.volume = 0.25;
eChannel.soundTransform = _local4;
if (currentLevel == 1){
levelIndicator.text = "Nice work! You just made her cum! Keep your cursor in the circle!";
_local1 = true;
};
if (currentLevel == 2){
levelIndicator.text = "Yes, she is liking this! But watch out for your own excitement level.";
chaseItem = new ChaseItem();
timeLine.addChild(chaseItem);
_local1 = true;
};
if (currentLevel == 3){
levelIndicator.text = "When you touch the black circle your excitment level raises quickly. Stay in the pink. Avoid the black!";
timeLine.addChild(chaseItem);
_local1 = true;
};
if (currentLevel == 5){
levelIndicator.text = "Good job! You are making her very happy! If you can give 15 more she will be satisfied... for now.";
videoBox.gotoAndPlay("Part2");
chaseItem.xPos = 700;
_local1 = true;
};
if (currentLevel == 10){
levelIndicator.text = "Getting closer! If you can give 10 more she will be satisfied... for now.";
videoBox.gotoAndPlay("Part3");
chaseItem.xPos = 700;
_local1 = true;
};
if (currentLevel == 15){
levelIndicator.text = "Getting closer! If you can give 5 more she will be satisfied... for now.";
videoBox.gotoAndPlay("Part4");
chaseItem.xPos = 700;
_local1 = true;
};
if (currentLevel == 20){
MochiBot.track(timeLine, gameConfig.cMochiWin);
gameResultString = "win";
timeLine.removeChild(targetItem);
timeLine.removeChild(chaseItem);
lose("You did it!! Go for the gold!");
chaseItem.xPos = 700;
videoBox.gotoAndPlay("Part5");
_local1 = true;
};
if (_local1 == false){
if (currentLevel < 5){
levelIndicator.text = (((((("You have made " + gameConfig.cName) + " cum ") + currentLevel) + " times.\n Give her ") + (5 - currentLevel)) + " more for a new position");
} else {
if (currentLevel < 10){
levelIndicator.text = (((((("You have made " + gameConfig.cName) + " cum ") + currentLevel) + " times.\n Give her ") + (10 - currentLevel)) + " more for a new position");
} else {
if (currentLevel < 15){
levelIndicator.text = (((((("You have made " + gameConfig.cName) + " cum ") + currentLevel) + " times.\n Give her ") + (15 - currentLevel)) + " more for a new position");
} else {
if (currentLevel > 15){
levelIndicator.text = (((((("You have made " + gameConfig.cName) + " cum ") + currentLevel) + " times.\n Give her ") + (20 - currentLevel)) + " more and it will be your turn.");
};
};
};
};
};
girlValue = (girlValue / 3);
}
private function loadingComplete(){
var _local1:int;
var _local2:int;
var _local3:int;
var _local4:int;
bInitializationComplete = true;
if (bExternalUpsell == false){
timeLine.mcUpsellPageWin.txtMessage.text = "";
timeLine.mcUpsellPageLose.txtMessage.text = "";
timeLine.mcUpsellPageWin.buttonReplay.addEventListener(MouseEvent.CLICK, replayButtonClicked);
timeLine.mcUpsellPageLose.buttonReplay.addEventListener(MouseEvent.CLICK, replayButtonClicked);
_local3 = 1;
while (_local3 < 5) {
timeLine.mcUpsellPageWin[("tracker" + _local3)].visible = false;
timeLine.mcUpsellPageLose[("tracker" + _local3)].visible = false;
_local4 = 1;
while (_local4 < 6) {
timeLine.mcUpsellPageWin[("tracker" + _local3)].mcStatHolder[("stat" + _local4)].visible = false;
timeLine.mcUpsellPageWin[("tracker" + _local3)].mcStatHolder[("stat" + _local4)].mouseEnabled = false;
timeLine.mcUpsellPageWin[("tracker" + _local3)].mcStatHolder[("bg" + _local4)].visible = false;
timeLine.mcUpsellPageWin[("tracker" + _local3)].mcStatHolder[("bar" + _local4)].visible = false;
timeLine.mcUpsellPageLose[("tracker" + _local3)].mcStatHolder[("stat" + _local4)].visible = false;
timeLine.mcUpsellPageLose[("tracker" + _local3)].mcStatHolder[("stat" + _local4)].mouseEnabled = false;
timeLine.mcUpsellPageLose[("tracker" + _local3)].mcStatHolder[("bg" + _local4)].visible = false;
timeLine.mcUpsellPageLose[("tracker" + _local3)].mcStatHolder[("bar" + _local4)].visible = false;
_local4++;
};
_local4 = 1;
while (_local4 < 5) {
timeLine.mcUpsellPageWin[("tracker" + _local3)][("image" + _local4)].visible = false;
timeLine.mcUpsellPageLose[("tracker" + _local3)][("image" + _local4)].visible = false;
_local4++;
};
timeLine.mcUpsellPageWin[("tracker" + _local3)].addEventListener(MouseEvent.MOUSE_UP, trackerClicked);
timeLine.mcUpsellPageWin[("tracker" + _local3)].buttonMode = true;
timeLine.mcUpsellPageLose[("tracker" + _local3)].addEventListener(MouseEvent.MOUSE_UP, trackerClicked);
timeLine.mcUpsellPageLose[("tracker" + _local3)].buttonMode = true;
_local3++;
};
timeLine.mcUpsellPageWin.txtMessage.text = finalXML.winmessage;
timeLine.mcUpsellPageLose.txtMessage.text = finalXML.losemessage;
if (finalXML.@separateUpsellPages == "true"){
_local1 = 1;
_local2 = 1;
_local3 = 0;
while (_local3 < finalXML.upsellitem.length()) {
if (_local1 < 5){
if (finalXML.upsellitem[_local3].@type == "win"){
setupTrackerItem(timeLine.mcUpsellPageWin[("tracker" + _local1)], finalXML.upsellitem[_local3]);
_local1++;
};
};
if (_local2 < 5){
if (finalXML.upsellitem[_local3].@type == "lose"){
setupTrackerItem(timeLine.mcUpsellPageLose[("tracker" + _local1)], finalXML.upsellitem[_local3]);
_local2++;
};
};
_local3++;
};
} else {
_local1 = 1;
_local3 = 0;
while (_local3 < finalXML.upsellitem.length()) {
if (_local1 < 5){
if (finalXML.upsellitem[_local3].@type == "both"){
setupTrackerItem(timeLine.mcUpsellPageWin[("tracker" + _local1)], finalXML.upsellitem[_local3]);
_local1++;
};
};
_local3++;
};
};
};
if (gameState == "finish"){
timeLine.buttonPlayMore.visible = true;
};
}
private function stopVideo(){
timeLine.videoBox.gotoAndStop(timeLine.videoBox.totalFrames);
if ((((bHasUpsell == true)) && ((bInitializationComplete == true)))){
upsellTimer.start();
};
}
private function upsellTimerTick(_arg1:TimerEvent){
var t = _arg1;
upsellTimer.stop();
if (bExternalUpsell == true){
try {
Object(swfLoader.content).upsellPlay(finalXML, gameResultString, this);
} catch(e) {
};
};
updateGameState("upsell");
}
private function initializeGame(){
updateGameState("mainpage");
}
private function lose(_arg1:String):void{
updateGameState("finish");
videoBox.stop();
sChannel.stop();
levelIndicator.text = _arg1;
}
private function swfError(_arg1:Event){
loadingComplete();
}
private function swfLoaded(_arg1:Event){
timeLine.mcUpsellInsertion.addChild(swfLoader.content);
timeLine.mcUpsellInsertion.visible = false;
bExternalUpsell = true;
bHasUpsell = true;
loadingComplete();
}
private function completeFunction(_arg1:Event){
var checkXML:XML;
var e = _arg1;
checkXML = XML(configLoader.data);
if (checkXML.games.game.(@id = 1).@active == "true"){
finalXML = checkXML.games.game.(@id = 1);
} else {
finalXML = defaultXML;
};
checkExternalUpsell();
}
private function setupTrackerItem(_arg1:MovieClip, _arg2:XML){
var _local3:Number;
var _local4:int;
var _local5:URLRequest;
var _local6:Loader;
_arg1.txtName.text = _arg2.name;
_arg1.trackerLink = _arg2.link;
if (_arg2.image.toString().length < 5){
_arg1[("image" + _arg2.image)].visible = true;
} else {
_local5 = new URLRequest(_arg2.image);
_local6 = new Loader();
_local6.load(_local5);
imageLoaderArray[imageLoaderArray.length] = _local6;
_arg1.mcImage.addChild(_local6);
};
_local4 = 0;
while (_local4 < _arg2.stats.stat.length()) {
if (_local4 < 5){
if (_arg2.stats.stat[_local4].@nobar == "false"){
_arg1.mcStatHolder[("bg" + (_local4 + 1))].visible = true;
};
_arg1.mcStatHolder[("stat" + (_local4 + 1))].visible = true;
_arg1.mcStatHolder[("stat" + (_local4 + 1))].text = _arg2.stats.stat[_local4].@text;
_local3 = parseInt(_arg2.stats.stat[_local4].@value);
_local3 = (_local3 / 100);
_arg1.mcStatHolder[("bar" + (_local4 + 1))].width = (gameConfig.cMaxStatBarLength * _local3);
_arg1.mcStatHolder[("bar" + (_local4 + 1))].visible = true;
_arg1.visible = true;
};
_local4++;
};
}
private function newFrame(_arg1:Event){
if (gameState != "play"){
return;
};
if (chaseItem){
chaseItem.animate();
if (chaseItem.onTarget()){
guyIndicator.text = "guy target: yes";
guyValue = (guyValue + (currentLevel * gameConfig.guyIncreaseAmmount));
} else {
guyIndicator.text = "guy target: no";
guyValue = (guyValue + gameConfig.guyDecreseAmmount);
};
};
targetItem.animate();
if (targetItem.onTarget()){
girlIndicator.text = "girl target: yes";
girlValue = (girlValue + gameConfig.girlIncreaseAmmount);
} else {
girlValue = (girlValue + (gameConfig.girlDecreaseAmmount * currentLevel));
girlIndicator.text = "girl target: no";
};
if (girlValue >= maxGirlValue){
newLevel();
};
if (girlValue < 0){
girlValue = 0;
};
if (guyValue < 0){
guyValue = 0;
};
girlMeter.maxValue = maxGirlValue;
girlMeter.currentValue = girlValue;
girlMeter.showValue();
guyMeter.maxValue = maxGuyValue;
guyMeter.currentValue = guyValue;
guyMeter.showValue();
if (girlValue <= 0){
MochiBot.track(timeLine, gameConfig.cMochiLose);
gameResultString = "lose";
timeLine.removeChild(targetItem);
timeLine.removeChild(chaseItem);
lose((("You lost the rhythm and " + gameConfig.cName) + " is left unsatisfied."));
};
if (guyValue >= maxGuyValue){
MochiBot.track(timeLine, gameConfig.cMochiLose);
gameResultString = "lose";
timeLine.removeChild(targetItem);
timeLine.removeChild(chaseItem);
lose((("You blew it! Don't feel to bad, " + gameConfig.cName) + " is a lot to handle. Better luck next time."));
};
}
private function checkExternalUpsell(){
var _local1:URLRequest;
if (finalXML.@upsellSWF != ""){
_local1 = new URLRequest(finalXML.@upsellSWF);
swfLoader = new Loader();
swfLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, swfError);
swfLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoaded);
swfLoader.load(_local1);
} else {
loadingComplete();
};
}
private function playButtonClicked(_arg1:MouseEvent){
upsellTimer.stop();
updateGameState("play");
timeLine.levelText.text = (("Put your mouse cursor in the pink circle to start pleasing " + gameConfig.cName) + ".");
timeLine.addEventListener("enterFrame", newFrame);
guyMeter.myColor = 0x999999;
start();
timeLine.addChild(targetItem);
}
private function trackerClicked(_arg1:Event){
var tempRequest:URLRequest;
var e = _arg1;
MochiBot.track(timeLine, gameConfig.cMochiUpsell);
tempRequest = new URLRequest(e.currentTarget.trackerLink);
try {
navigateToURL(tempRequest, "_self");
} catch(e) {
navigateToURL(tempRequest, "_blank");
};
}
public function getGameConfig():GameConfig{
return (gameConfig);
}
private function start(){
var _local1:SoundTransform;
trace("game start. creating target item");
targetItem = new TargetItem();
loopSound = new electraLoop();
sChannel = loopSound.play(0, 10000);
_local1 = sChannel.soundTransform;
_local1.volume = 0.5;
sChannel.soundTransform = _local1;
videoBox.gotoAndPlay(1);
girlValue = 100;
maxGirlValue = 200;
guyValue = 0;
maxGuyValue = 1000;
currentLevel = 0;
}
private function playMoreButtonClicked(_arg1:MouseEvent){
var m = _arg1;
upsellTimer.stop();
trace("play more clicked");
if (bExternalUpsell == true){
try {
Object(swfLoader.content).upsellPlay(finalXML, gameResultString, this);
} catch(e) {
};
};
updateGameState("upsell");
}
private function replayButtonClicked(_arg1:Event){
MochiBot.track(timeLine, gameConfig.cMochiReplay);
upsellTimer.stop();
trace("replay clicked");
chaseItem = null;
updateGameState("mainpage");
}
public function updateGameState(_arg1:String){
trace(("new game state: " + _arg1));
gameState = _arg1;
timeLine.playButton.visible = false;
timeLine.mcUpsellInsertion.visible = false;
timeLine.buttonReplay.visible = false;
timeLine.levelText.visible = false;
timeLine.txtExcitement.visible = false;
videoBox.visible = false;
girlIndicator.visible = false;
guyIndicator.visible = false;
levelIndicator.visible = false;
girlMeter.visible = false;
guyMeter.visible = false;
timeLine.mcMainPage.visible = false;
timeLine.buttonPlayMore.visible = false;
timeLine.mcUpsellPageWin.visible = false;
timeLine.mcUpsellPageLose.visible = false;
switch (gameState){
case "init":
timeLine.mcMainPage.visible = true;
break;
case "mainpage":
timeLine.playButton.visible = true;
timeLine.mcMainPage.visible = true;
break;
case "play":
videoBox.visible = true;
girlIndicator.visible = true;
guyIndicator.visible = true;
levelIndicator.visible = true;
girlMeter.visible = true;
guyMeter.visible = true;
timeLine.txtExcitement.visible = true;
break;
case "finish":
videoBox.visible = true;
levelIndicator.visible = true;
timeLine.buttonReplay.visible = true;
if ((((bHasUpsell == true)) && ((bInitializationComplete == true)))){
timeLine.buttonPlayMore.visible = true;
if (gameResultString == "lose"){
upsellTimer.start();
};
};
break;
case "upsell":
if (bExternalUpsell == true){
timeLine.mcUpsellInsertion.visible = true;
} else {
if (finalXML.@separateUpsellPages == "true"){
if (gameResultString == "win"){
timeLine.mcUpsellPageWin.visible = true;
} else {
timeLine.mcUpsellPageLose.visible = true;
};
} else {
timeLine.mcUpsellPageWin.visible = true;
if (gameResultString == "win"){
timeLine.mcUpsellPageWin.txtMessage.text = finalXML.winmessage;
} else {
timeLine.mcUpsellPageWin.txtMessage.text = finalXML.losemessage;
};
};
};
break;
};
}
}
}//package
Section 17
//Meter (Meter)
package {
import flash.display.*;
public class Meter extends MovieClip {
public var myColor:Number;
public var bar:MovieClip;
public var maxValue:Number;
public var currentValue:Number;
public var maxWidth:Number;// = 200
public var myBar:MovieClip;
public function Meter(){
maxWidth = 200;
super();
myBar = (this.bar as MovieClip);
maxValue = 100;
myColor = 16751103;
}
public function showValue(){
var _local1:Number;
myBar.graphics.clear();
myBar.graphics.beginFill(myColor, 1);
if (currentValue > maxValue){
currentValue = maxValue;
};
_local1 = ((currentValue / maxValue) * maxWidth);
myBar.graphics.drawRect(0, 0, _local1, 10);
}
}
}//package
Section 18
//MochiBot (MochiBot)
package {
import flash.display.*;
import flash.net.*;
import flash.system.*;
public dynamic class MochiBot extends Sprite {
public static function track(_arg1:Sprite, _arg2:String):MochiBot{
var _local3:MochiBot;
var _local4:String;
var _local5:URLVariables;
var _local6:String;
var _local7:URLRequest;
var _local8:Loader;
if (Security.sandboxType == "localWithFile"){
return (null);
};
_local3 = new (MochiBot);
_arg1.addChild(_local3);
Security.allowDomain("*");
Security.allowInsecureDomain("*");
_local4 = "http://core.mochibot.com/my/core.swf";
_local5 = new URLVariables();
_local5["sb"] = Security.sandboxType;
_local5["v"] = Capabilities.version;
_local5["swfid"] = _arg2;
_local5["mv"] = "8";
_local5["fv"] = "9";
_local6 = _local3.root.loaderInfo.loaderURL;
if (_local6.indexOf("http") == 0){
_local5["url"] = _local6;
} else {
_local5["url"] = "local";
};
_local7 = new URLRequest(_local4);
_local7.contentType = "application/x-www-form-urlencoded";
_local7.method = URLRequestMethod.POST;
_local7.data = _local5;
_local8 = new Loader();
_local3.addChild(_local8);
_local8.load(_local7);
return (_local3);
}
}
}//package
Section 19
//Preloader (Preloader)
package {
import flash.display.*;
import flash.text.*;
public dynamic class Preloader extends MovieClip {
public var txtLoading:TextField;
}
}//package
Section 20
//preloaderTantra (preloaderTantra)
package {
import flash.display.*;
import flash.events.*;
import flash.text.*;
import flash.utils.*;
import flash.net.*;
public class preloaderTantra extends MovieClip {
public var guyTargetText:TextField;
public var mcUpsellPageLose:MovieClip;
public var girlTargetText:TextField;
public var logoAnimation:MovieClip;
public var guyMeterBar:Meter;
public var mcUpsellInsertion:MovieClip;
public var videoBox:MovieClip;
public var m:Main;
public var txtExcitement:TextField;
private var bAppDone:Boolean;// = false
public var buttonPlayMore:SimpleButton;
public var girlMeterBar:Meter;
public var timelineMC:MovieClip;
public var playButton:SimpleButton;
public var mcMainPage:MovieClip;
public var mcUpsellPageWin:MovieClip;
public var preloaderMC:Preloader;
private var bLogoComplete:Boolean;// = false
private var waitTimer:Timer;
public var levelText:TextField;
private var loadingMC:MovieClip;
private var gameConfig:GameConfig;
public var buttonLogo2:LogoSymbol;
public var buttonReplay:SimpleButton;
public function preloaderTantra(){
var onRootLoaderInit:Function;
var onRootLoaderProgress:Function;
var onRootLoaderComplete:Function;
var logoClick:Function;
var logoClick2:Function;
var timerDone:Function;
var logoComplete:Function;
var checkComplete:Function;
bAppDone = false;
bLogoComplete = false;
super();
onRootLoaderInit = function (_arg1:Event):void{
var _local2:Number;
var _local3:Number;
var _local4:Number;
_local2 = _arg1.target.bytesLoaded;
_local3 = _arg1.target.bytesTotal;
_local4 = (_local2 / _local3);
if (bAppDone == false){
timelineMC.preloaderMC.txtLoading.text = (("Loading - " + Math.floor((_local4 * 100))) + "%");
};
};
onRootLoaderProgress = function (_arg1:ProgressEvent):void{
var _local2:Number;
var _local3:Number;
var _local4:Number;
_local2 = _arg1.target.bytesLoaded;
_local3 = _arg1.target.bytesTotal;
_local4 = (_local2 / _local3);
if (bAppDone == false){
timelineMC.preloaderMC.txtLoading.text = (("Loading - " + Math.floor((_local4 * 100))) + "%");
};
};
onRootLoaderComplete = function (_arg1:Event):void{
bAppDone = true;
checkComplete();
};
logoClick = function (_arg1:Event){
var _local2:URLRequest;
MochiBot.track(timelineMC, gameConfig.cMochiClickSplash);
_local2 = new URLRequest(gameConfig.cLogoURL);
navigateToURL(_local2, "_blank");
};
logoClick2 = function (_arg1:Event){
var _local2:URLRequest;
MochiBot.track(timelineMC, gameConfig.cMochiClickMenu);
_local2 = new URLRequest(gameConfig.cLogoURL);
navigateToURL(_local2, "_blank");
};
timerDone = function (_arg1:Event){
waitTimer.stop();
bLogoComplete = true;
checkComplete();
};
logoComplete = function (){
timelineMC.logoAnimation.gotoAndStop(243);
waitTimer.start();
};
checkComplete = function (){
if ((((bAppDone == true)) && ((bLogoComplete == true)))){
timelineMC.gotoAndStop("Start");
timelineMC.buttonLogo2.visible = true;
};
};
addFrameScript(0, frame1, 9, frame10);
gameConfig = new GameConfig();
timelineMC = this;
MochiBot.track(this, gameConfig.cMochiPlay);
timelineMC.preloaderMC.txtLoading.text = "Loading - 0%";
timelineMC.logoAnimation.addEventListener(MouseEvent.MOUSE_UP, logoClick);
timelineMC.buttonLogo2.addEventListener(MouseEvent.MOUSE_UP, logoClick2);
timelineMC.buttonLogo2.buttonMode = true;
timelineMC.buttonLogo2.visible = false;
timelineMC.logoAnimation.buttonMode = true;
waitTimer = new Timer(4000, 1);
waitTimer.addEventListener(TimerEvent.TIMER, timerDone);
timelineMC.logoAnimation.addFrameScript(242, logoComplete);
this.loaderInfo.addEventListener(Event.INIT, onRootLoaderInit);
this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, onRootLoaderProgress);
this.loaderInfo.addEventListener(Event.COMPLETE, onRootLoaderComplete);
if (this.loaderInfo.bytesLoaded >= this.loaderInfo.bytesTotal){
bAppDone = true;
checkComplete();
};
}
function frame10(){
m = new Main(this);
stop();
}
function frame1(){
stop();
}
}
}//package
Section 21
//TargetItem (TargetItem)
package {
import flash.display.*;
public class TargetItem extends MovieClip {
public var friction:Number;
public var size:Number;
public var yPos:Number;
public var ySpeed:Number;
public var acc:Number;
public var maxDistance:Number;
public var xSpeed:Number;
private var main:Main;
public var xPos:Number;
private var gameConfig:GameConfig;
public var targetY:Number;
public var targetX:Number;
public function TargetItem(){
gameConfig = new GameConfig();
acc = gameConfig.targetItemBaseAcc;
friction = gameConfig.targetItemBaseFriction;
size = gameConfig.targetItemBaseSize;
xSpeed = 0;
ySpeed = 0;
maxDistance = 50;
setSize();
getNewTarget();
xPos = -10;
yPos = 200;
}
public function onTarget():Boolean{
var _local1:Number;
var _local2:Number;
var _local3:Number;
_local1 = (-(xPos) + parent.mouseX);
_local2 = (-(yPos) + parent.mouseY);
_local3 = Math.sqrt(((_local1 * _local1) + (_local2 * _local2)));
if (_local3 < size){
return (true);
};
return (false);
}
private function setSize(){
this.width = (size * 2);
this.height = (size * 2);
}
private function getNewTarget(){
targetX = (Math.random() * 600);
targetY = ((Math.random() * 300) + 90);
}
private function getTargetXDistance():Number{
return ((-(xPos) + targetX));
}
public function newLevel(){
size = (size + gameConfig.targetItemSizeGrowth);
setSize();
acc = (acc + gameConfig.targetItemAccGrowth);
friction = (friction + gameConfig.targetItemFrictionGrowth);
}
private function getTargetYDistance():Number{
return ((-(yPos) + targetY));
}
public function animate(){
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
_local1 = getTargetXDistance();
_local2 = getTargetYDistance();
_local3 = Math.sqrt(((_local1 * _local1) + (_local2 * _local2)));
if (_local3 < 5){
getNewTarget();
};
_local4 = Math.atan2(_local2, _local1);
_local5 = Math.cos(_local4);
_local6 = Math.sin(_local4);
if (_local3 > maxDistance){
_local7 = 1;
} else {
_local7 = (1 - ((maxDistance - _local3) / maxDistance));
};
xSpeed = (xSpeed + ((_local7 * _local5) * acc));
ySpeed = (ySpeed + ((_local7 * _local6) * acc));
xPos = (xPos + xSpeed);
yPos = (yPos + ySpeed);
xSpeed = (xSpeed * friction);
ySpeed = (ySpeed * friction);
this.x = xPos;
this.y = yPos;
}
}
}//package