Skip to content

Commit

Permalink
Mod update 1.3.17
Browse files Browse the repository at this point in the history
More fixes. Can now kill Tamani to remove her.

Closes #186, closes #188, fixes #192, fixes #194
  • Loading branch information
Kitteh6660 committed Apr 10, 2016
1 parent 0afb854 commit ea471ec
Show file tree
Hide file tree
Showing 16 changed files with 416 additions and 292 deletions.
4 changes: 2 additions & 2 deletions classes/classes/CoC.as
Original file line number Diff line number Diff line change
Expand Up @@ -396,8 +396,8 @@ the text from being too boring.
//model.debug = debug; // TODO: Set on model?

//Version NUMBER
ver = "1.0.2_mod_1.3.16";
version = ver + " (<b>Nostalgia Ahoy</b>)";
ver = "1.0.2_mod_1.3.17";
version = ver + " (<b>More Fixes</b>)";

//Indicates if building for mobile?
mobile = false;
Expand Down
4 changes: 2 additions & 2 deletions classes/classes/GlobalFlags/kFLAGS.as
Original file line number Diff line number Diff line change
Expand Up @@ -2279,8 +2279,8 @@ public static const CODEX_ENTRY_ZEBRAS:int
public static const ACHIEVEMENT_PROGRESS_EGG_HUNTER:int = 2271;
public static const CURRENT_WEATHER:int = 2272;
public static const WEATHER_CHANGE_COOLDOWN:int = 2273; //4 hours to prevent weather from changing too fast.
public static const UNKNOWN_FLAG_NUMBER_02274:int = 2274;
public static const UNKNOWN_FLAG_NUMBER_02275:int = 2275;
public static const TAMANI_DEFEAT_COUNTER:int = 2274; //If this reaches 4, you can bad-end Tamani.
public static const TAMANI_BAD_ENDED:int = 2275; //Determines if Tamani is bad-ended. (Killed)
public static const UNKNOWN_FLAG_NUMBER_02276:int = 2276;
public static const UNKNOWN_FLAG_NUMBER_02277:int = 2277;
public static const UNKNOWN_FLAG_NUMBER_02278:int = 2278;
Expand Down
4 changes: 2 additions & 2 deletions classes/classes/Scenes/Areas/Forest.as
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ package classes.Scenes.Areas
if (flags[kFLAGS.CORRUPTED_GLADES_DESTROYED] < 100 && rand(100) >= Math.round(flags[kFLAGS.CORRUPTED_GLADES_DESTROYED] * 0.5)) choice[choice.length] = 2; //Corrupted Glade
choice[choice.length] = 3; //Akbal
choice[choice.length] = 4; //Kitsunes
if (flags[kFLAGS.TAMANI_TIME_OUT] == 0 && player.gender > 0 && (player.totalCocks() > 0 || player.hasKeyItem("Deluxe Dildo") < 0)) choice[choice.length] = 5; //Tamani
if (flags[kFLAGS.TAMANI_TIME_OUT] == 0 && player.gender > 0 && flags[kFLAGS.TAMANI_BAD_ENDED] == 0 && (player.totalCocks() > 0 || player.hasKeyItem("Deluxe Dildo") < 0)) choice[choice.length] = 5; //Tamani
if (flags[kFLAGS.CAMP_CABIN_PROGRESS] >= 4 && flags[kFLAGS.CAMP_CABIN_WOOD_RESOURCES] < 100 && rand(2) == 0) choice[choice.length] = 6; //Gather woods

//Every tenth exploration finds a pumpkin if eligible!
Expand Down Expand Up @@ -206,7 +206,7 @@ package classes.Scenes.Areas
//==============================
switch(select) {
case 0: //Tamani 25% of all goblin encounters encounter rate
if (rand(4) <= 0 && flags[kFLAGS.TAMANI_TIME_OUT] == 0 && player.gender > 0 && (player.totalCocks() > 0 || player.hasKeyItem("Deluxe Dildo") < 0)) {
if (rand(4) <= 0 && flags[kFLAGS.TAMANI_TIME_OUT] == 0 && player.gender > 0 && flags[kFLAGS.TAMANI_BAD_ENDED] == 0 && (player.totalCocks() > 0 || player.hasKeyItem("Deluxe Dildo") < 0)) {
if (player.totalCocks() > 0 && flags[kFLAGS.TAMANI_DAUGHTER_PREGGO_COUNTDOWN] == 0 && flags[kFLAGS.TAMANI_NUMBER_OF_DAUGHTERS] >= 24) {
tamaniDaughtersScene.encounterTamanisDaughters();
}
Expand Down
13 changes: 12 additions & 1 deletion classes/classes/Scenes/Areas/Forest/ErlKingScene.as
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,12 @@ package classes.Scenes.Areas.Forest
menu();
addButton(0, "Run", repeatWildHuntChase);
addButton(1, "Wait", repeatWildHuntWait);
if (playerHuntScore() >= 200) {
outputText("Since you're definitely able to escape, you could purposefully hold back your speed and keep the chase interesting.");
addButton(5, "Run (Get Caught)", repeatWildHuntCaught, 110);
addButton(10, "Run (Lose)", repeatWildHuntCaught, 90);
}

}

protected function repeatWildHuntWait():void
Expand Down Expand Up @@ -337,7 +343,12 @@ package classes.Scenes.Areas.Forest
outputText("The ropes are thicker than your wrist, and you could probably untie them, given time, but the spin of the net, combined with the mind-bending terror of the fog has left you no room to think. The hounds are snarling, the world is spinning, you’re prey, and you’ve been caught.\n\n");

if (player.bunnyScore() >= 4 || player.kitsuneScore() >= 4 || player.harpyScore() >= 4 || pScore > 100) repeatWildHuntAWinnerIsYou();
else repeatWildHuntGivenToTheHounds();
else {
repeatWildHuntGivenToTheHounds();
//menu();
//addButton(0, "Next", repeatWildHuntGivenToTheHounds);
//addButton(1, "FIGHT!", fightTheHounds); (If I have time)
}
}

public function repeatWildHuntGivenToTheHounds():void
Expand Down
21 changes: 15 additions & 6 deletions classes/classes/Scenes/Areas/Forest/Faerie.as
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public function encounterFaerie():void {
else outputText("\n\nYou lazily make a grab for her and easily snatch her out of the air. Her body is sticky with a mix of desire and your last encounter. You can feel her humping against your pinky while she begs, \"<i>Come on, let me crawl into your " + player.armorName + " and wrap myself around your shaft. I promise I'll only drink a little pre-cum this time, just enough to let me get off. I'll be a good faerie slut, just let me get you off!</i>\"\n\nDo you let the faerie get you off?", false);
dynStats("lus", player.lib/10+2);
doYesNo(faerieCaptureHJ, letFaerieGo);
if (player.statusEffectv1(StatusEffects.FaerieFucked) < 5) addButton(2, "Never", disableFaerieEncounterForGood);
addButton(2, "Never", disableFaerieEncounterForGood);
return;
}
dynStats("lus", player.lib/10+2);
Expand All @@ -46,8 +46,11 @@ public function encounterFaerie():void {
outputText("The faerie slows the beating of her wings and hovers towards you. You dismiss your fearful notions, certain a small faerie is quite harmless to you.\n\n", false);
outputText("How do you react?", false);
//Shoo Away, Nothing, RAEP
if (player.hasVagina()) simpleChoices("Shoo Away", faerieShooAway, "Nothing", faerieDoNothing, "Rape", faerieRAEP, "", null, "", null);
else simpleChoices("Shoo Away", faerieShooAway, "Nothing", faerieDoNothing, "", null, "", null, "", null);
menu();
addButton(0, "Shoo Away", faerieShooAway);
addButton(1, "Nothing", faerieDoNothing);
if (player.hasVagina()) addButton(2, "Rape", faerieRAEP);
addButton(4, "No More!", disableFaerieEncounterForGood, true);
}

private function faerieRAEP():void {
Expand Down Expand Up @@ -203,11 +206,17 @@ private function letFaerieGo():void {
doNext(camp.returnToCampUseOneHour);
}
//Disable Faerie encounter
private function disableFaerieEncounterForGood():void {
private function disableFaerieEncounterForGood(alt:Boolean = false):void {
spriteSelect(17);
clearOutput();
outputText("You apologize and release her, letting her fly away on gossamer wings. She thanks you, buzzing up to your lips and planting a chaste kiss on your mouth. She zips away into the woods without a glance back...", false);
outputText("\n\nYou make a mental note and resolve to never catch her again.");
if (alt) {
outputText("You tell the fairy to never bother you again. She looks heartbroken but knows that she's making the promise never to bother you.", false);
outputText("\n\nYou have the feeling that you'll never be seeing her again...");
}
else {
outputText("You apologize and release her, letting her fly away on gossamer wings. She thanks you, buzzing up to your lips and planting a chaste kiss on your mouth. She zips away into the woods without a glance back...", false);
outputText("\n\nYou make a mental note and resolve to never catch her again.");
}
flags[kFLAGS.FAERIE_ENCOUNTER_DISABLED] = 1;
doNext(camp.returnToCampUseOneHour);
}
Expand Down
18 changes: 4 additions & 14 deletions classes/classes/Scenes/Areas/Forest/Tamani.as
Original file line number Diff line number Diff line change
Expand Up @@ -79,23 +79,13 @@ package classes.Scenes.Areas.Forest

override public function defeated(hpVictory:Boolean):void
{
clearOutput();
if (hpVictory) {
outputText("Tamani is defeated!", true);
outputText("Tamani is defeated!");
} else {
outputText("Tamani gives up on defeating you and starts masturbating!", true);
outputText("Tamani gives up on defeating you and starts masturbating!");
}
if (player.lust >= 33 && player.totalCocks() > 0 && flags[kFLAGS.SFW_MODE] <= 0) {
outputText(" You could fuck her, but if that's the case why did you bother fighting her?\n\nWhat do you do to her?", false);
var temp:Function = null;
var temp2:Function = null;
if (player.hasCock() && player.cockThatFits(analCapacity()) >= 0) temp = game.forest.tamaniScene.tamaniAnalShits;
//NOT PREGGERS
if (!game.forest.tamaniScene.pregnancy.isPregnant && player.canOvipositSpider()) {
temp2 = game.forest.tamaniScene.tamaniBeaten;
}
game.simpleChoices("Fuck", game.forest.tamaniScene.tamaniSexWon, "Buttfuck", temp, "", null, "Lay Eggs", temp2, "Leave", game.combat.cleanupAfterCombat);
}
else game.combat.cleanupAfterCombat();
game.forest.tamaniScene.tamaniVictoryMenu();
}

override public function won(hpVictory:Boolean, pcCameWorms:Boolean):void
Expand Down
88 changes: 87 additions & 1 deletion classes/classes/Scenes/Areas/Forest/TamaniScene.as
Original file line number Diff line number Diff line change
Expand Up @@ -840,6 +840,31 @@ internal function getRapedByTamaniYouHypnoSlut():void {
else doNext(camp.returnToCampUseOneHour);
}

public function tamaniVictoryMenu():void {
flags[kFLAGS.TAMANI_DEFEAT_COUNTER]++;
if (player.lust >= 33 && player.totalCocks() > 0 && flags[kFLAGS.SFW_MODE] <= 0) {
outputText(" You could fuck her, but if that's the case why did you bother fighting her?");
outputText("\n\nWhat do you do to her?");
menu();
addButton(0, "Fuck", tamaniSexWon);
addButton(1, "Buttfuck", tamaniAnalShits);
if (!getGame().forest.tamaniScene.pregnancy.isPregnant && player.canOvipositSpider()) addButton(2, "Lay Eggs", tamaniBeaten); //NOT PREGGERS
if (flags[kFLAGS.TAMANI_DEFEAT_COUNTER] >= 4 && monster.HP <= 0) addButton(3, "Bad-End Her", killTamani);
addButton(4, "Leave", combat.cleanupAfterCombat);
}
else {
if (flags[kFLAGS.TAMANI_DEFEAT_COUNTER] >= 4 && monster.HP <= 0) {
outputText(" If you're tired of Tamani trying to force herself upon you, you could kill her.");
addButton(3, "Bad-End Her", killTamani);
addButton(4, "Leave", combat.cleanupAfterCombat);
}
else {
combat.cleanupAfterCombat();
}

}
}

internal function tamaniAnalShits():void {
spriteSelect(56);
var x:Number = player.cockThatFits(monster.analCapacity());
Expand Down Expand Up @@ -894,7 +919,18 @@ internal function tamaniBeaten():void {
player.orgasm();
combat.cleanupAfterCombat();
}


private function killTamani():void {
clearOutput();
outputText("Tamani has really gotten to your nerves and you tire of her forcing herself upon you. You step over and grab her head. \"<i>NO!</i>\" Tamani cries out. You tell her that she should haven't had forced herself upon you. You snap her neck and set her lifeless body on the ground.");
outputText("\n\nWith Tamani no more, you take her satchel and return to your camp.");
monster.XP += 100; //Gain more XP as Tamani's removed from the game.
flags[kFLAGS.TAMANI_BAD_ENDED] = 1;
player.createKeyItem("Tamani's Satchel", 2, 1, 1, 100);
if (pregnancy.isPregnant) pregnancy.knockUpForce(); //Clear pregnancy.
combat.cleanupAfterCombat();
}

//Butts McGee Facesitting Tamaniz
private function preferTamaniFemdom():void {
clearOutput();
Expand Down Expand Up @@ -939,5 +975,55 @@ private function acceptTamaniFacesits():void {
dynStats("lus", 20+player.lib/20);
doNext(camp.returnToCampUseOneHour);
}

public function openTamanisSatchel():void {
clearOutput();
var isEmpty:Boolean = true;
outputText("You open the satchel taken from Tamani and take a look inside. ");
if (player.hasKeyItem("Deluxe Dildo") < 0) {
outputText("\n\n<b>(You find a well-crafted pink dildo inside! There are also other stuff you can take if you like.)</b>");
player.createKeyItem("Deluxe Dildo", 0, 0, 0, 0);
}
menu();
if (player.keyItemv1("Tamani's Satchel") > 0) {
outputText("\nThere " + (player.keyItemv1("Tamani's Satchel") == 1 ? "is a container" : "are two containers") + " of pasty sustance labelled as 'Reducto'.");
addButton(0, consumables.REDUCTO.shortName, satchelTakeItem, consumables.REDUCTO, 1);
isEmpty = false;
}
if (player.keyItemv2("Tamani's Satchel") > 0) {
outputText("\nThere's a bottle of pink hair dye inside.");
addButton(1, consumables.PINKDYE.shortName, satchelTakeItem, consumables.PINKDYE, 2);
isEmpty = false;
}
if (player.keyItemv3("Tamani's Satchel") > 0) {
outputText("\nThere " + (player.keyItemv3("Tamani's Satchel") == 1 ? "is a bottle" : "are two bottles") + " of pink fluid, labelled 'Lust Draft'.");
addButton(2, consumables.L_DRAFT.shortName, satchelTakeItem, consumables.L_DRAFT, 3);
isEmpty = false;
}
if (player.keyItemv4("Tamani's Satchel") > 0) {
outputText("\nThere are 100 gems inside within the satchel. You can take them if you want.");
addButton(3, "Gems", satchelTakeGems);
isEmpty = false;
}
outputText("\n\n");
addButton(14, "Close", inventory.checkKeyItems, false);
if (isEmpty) {
clearOutput();
outputText("The satchel is devoid of its content. You discard the empty satchel.");
player.removeKeyItem("Tamani's Satchel");
doNext(inventory.checkKeyItems);
}
}
private function satchelTakeItem(item:ItemType, keyValue:int):void {
player.addKeyValue("Tamani's Satchel", keyValue, -1);
inventory.takeItem(item, openTamanisSatchel);
}
private function satchelTakeGems():void {
player.gems += 100;
player.addKeyValue("Tamani's Satchel", 4, -100);
statScreenRefresh();
openTamanisSatchel();
}

}
}
4 changes: 2 additions & 2 deletions classes/classes/Scenes/Areas/Lake.as
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ package classes.Scenes.Areas
kGAMECLASS.helScene.helSexualAmbush();
return;
}
if (player.exploredLake % 20 == 0) {
if (player.exploredLake % 20 == 0 || (flags[kFLAGS.HUNGER_ENABLED] > 0 && player.hunger < 10 && rand(5) == 0)) {
calluScene.ottahGirl();
return;
}
Expand All @@ -50,7 +50,7 @@ package classes.Scenes.Areas
addButton(3, "Black", eggChoose, 5);
addButton(4, "Purple", eggChoose, 1);
addButton(5, "Brown", eggChoose, 0);
addButton(9, "Escape", eggChooseEscape);
addButton(14, "Escape", eggChooseEscape);
return;
}
//Did it already output something?
Expand Down
1 change: 1 addition & 0 deletions classes/classes/Scenes/Camp.as
Original file line number Diff line number Diff line change
Expand Up @@ -2809,6 +2809,7 @@ private function updateAchievements():void {
if (flags[kFLAGS.JOJO_DEAD_OR_GONE] == 2) NPCsBadEnds++;
if (flags[kFLAGS.CORRUPTED_MARAE_KILLED] > 0) NPCsBadEnds++;
if (flags[kFLAGS.FUCK_FLOWER_KILLED] > 0) NPCsBadEnds++;
if (flags[kFLAGS.TAMANI_BAD_ENDED] > 0) NPCsBadEnds++;
if (flags[kFLAGS.D3_GARDENER_DEFEATED] == 3) NPCsBadEnds++; //Dungeon 3 encounters
if (flags[kFLAGS.D3_CENTAUR_DEFEATED] == 1) NPCsBadEnds++;
if (flags[kFLAGS.D3_MECHANIC_FIGHT_RESULT] == 1) NPCsBadEnds++;
Expand Down
2 changes: 1 addition & 1 deletion classes/classes/Scenes/Dungeons/D3/LethiceScenes.as
Original file line number Diff line number Diff line change
Expand Up @@ -539,7 +539,7 @@ package classes.Scenes.Dungeons.D3
else
{
outputText("You decide it’s better not to tell the erstwhile Demon Queen who she was, and what she’s done. If she doesn’t remember anything, then... well, you did intend to give her a second chance, didn’t you? Reminding her of what her horde has done to the world can only lead to misery, and her drawing the ire of those she’s hurt.");
outputText("\n\nSo you give her the name of [lethice.name], and tell her that she’s a creation of the goddess Marae, a redeemed soul made manifest. She stares at you with wide eyes as you half-explain and half-lie about her origins, who she is now and what world she’s been born into. The very mention of demons, creatures running wild across the tainted realm, sends shivers through her, and recounting their deeds to destroy her <i>“mother”</i> and the pure beings of Mareth brings tears to her eyes.");
outputText("\n\nSo you give her the name of " + flags[kFLAGS.LETHICE_NAME] + ", and tell her that she’s a creation of the goddess Marae, a redeemed soul made manifest. She stares at you with wide eyes as you half-explain and half-lie about her origins, who she is now and what world she’s been born into. The very mention of demons, creatures running wild across the tainted realm, sends shivers through her, and recounting their deeds to destroy her <i>“mother”</i> and the pure beings of Mareth brings tears to her eyes.");
}
menu();
addButton(0,"Next",redemptionIV);
Expand Down
12 changes: 11 additions & 1 deletion classes/classes/Scenes/Dungeons/DeepCave/ValaScene.as
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ package classes.Scenes.Dungeons.DeepCave
outputText("You bend down to comfort the girl and offer her a shoulder to lean on as you help her to her feet. As you expected, the weight of her milky tits nearly surpasses the rest of her body. She clings to you happily, stroking and rubbing her bare skin against your body. She is adamantly ignoring your efforts to dissuade her amorous advances, merely cooing \"<i>master</i>\" and \"<i>pleasure</i>\" over and over again. If you had the right materials, you might be able to mix something to heal the damage her captors have done to the fairy's mind.\n\n", false);
//Choicez go here. I can haz fucks?
simpleChoices("", null, "", null, "Reject", rejectFuckingVala, "", null, "", null);
if (player.hasItem(consumables.PURHONY, 1) || player.hasItem(consumables.P_PEARL, 1)) addButton(0, "Fix Her", healVala);
if (player.hasItem(consumables.PURHONY, 1) || player.hasItem(consumables.P_PEARL, 1) || player.hasItem(consumables.PPHILTR, 1)) addButton(0, "Fix Her", healVala);
if (player.gender > 0) addButton(1, "Sex", ValaGetsSexed);
}

Expand All @@ -100,6 +100,16 @@ package classes.Scenes.Dungeons.DeepCave
//[Next]
doNext(healValaPartTwoTheHealingHealsOfRevenge);
}
else if (player.hasItem(consumables.PPHILTR,1)) {
player.consumeItem(consumables.PPHILTR, 1);
outputText("You have the hunch that Purity Philter will do the trick. You set the broken girl down and she clings onto your ", false);
if (player.lowerBody == LOWER_BODY_TYPE_NAGA) outputText("tail", false);
else outputText(player.leg(), false);
outputText(" as you walk, and you end up dragging her across the dungeon floor leaving a trail of her cum behind you. Before things can get too out of hand with the needy girl, you pull out the vial of Purity Philter and forcibly hold her mouth open. She makes no protestation, instead gleefully opens wide, tongue thrashing about in anticipation. You pour the entire cool liquid into her mouth. Freezing sensations surges through her as she stiffens, feeling almost frozen in place.\n\n", false);
outputText("The effects of your cure are more potent than you expected. The fairy lays stiffly and you wait patiently for a few minutes. Gradually, her motions slow and her breath calms to a more normal pace. When she looks back up at you, her eyes are clear at last, the pollution of lust burned away by the honey's restorative properties. She gives you a genuine smile and speaks with a voice like the rushing of wind over reeds. \"<i>Thank you. I cannot express my gratitude for what you've done. The fate you've saved me from was worse than any death these wretched creatures could have subjected me to.</i>\"", false);
//[Next]
doNext(healValaPartTwoTheHealingHealsOfRevenge);
}
//Pearl!
else {
player.consumeItem(consumables.P_PEARL,1);
Expand Down
Loading

0 comments on commit ea471ec

Please sign in to comment.