<img width="100%" height="30%" src="MagicWorldOfBimbo/Village/AmyHouse/1.jpg">
[[💤Sleep]]
[[Find Amy]]
<div class="disabled-button">Spy Amy. (Next Update)</div>
[[Back to the City|Village]]
<<script>>
if (window.audio) {
window.audio.pause();
window.audio.currentTime = 0;
delete window.audio;
}
window.audio = new Audio('MagicWorldOfBimbo/Music/1DateAmy.mp3');
window.audio.loop = true;
window.audio.volume = $("#musicVolumeSlider").length > 0 ?
($("#musicVolumeSlider").val() / 100) : State.variables.musicVolume / 100 ;
window.audio.play().catch(function(error) {
console.log("Audio playback failed:", error);
});
<</script>><video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Intro/AmyS2A.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<typeNEW 30ms>>\
<<speech "Amy">>But are you retarded? You're still shaken. Look, I use my hands to caress my chest and smear my breasts of course, just like this... uh... so sensitive I can barely brush them...
<</speech>>
[[Hey what was that noise?]]
<</typeNEW>>:: Exemple avec révélation progressive
Vous examinez le vieux livre.
<<linkappend "Lire la première page">>
La première page contient une introduction mystérieuse.
<<linkappend "Continuer la lecture">>
Vous découvrez que le livre parle d'un trésor caché.
<<linkappend "Tourner la page">>
Une carte apparaît sur la page suivante!
<</linkappend>>
<</linkappend>>
<</linkappend>>
:: Exemple avec options
Le garde vous arrête à l'entrée de la cité.
"Halte là ! Que venez-vous faire ici ?"
<<linkappend "Je suis un marchand">>
"Un marchand, hein? Montrez-moi votre permis de commerce."
<<link "Montrer le permis">><<goto "Entrée Acceptée">><</link>>
<<link "Avouer ne pas en avoir">><<goto "Entrée Refusée">><</link>>
<</linkappend>>
<<linkappend "Je suis un voyageur">>
"Un voyageur? D'où venez-vous?"
<<link "Du nord">><<goto "Tavern">><</link>>
<<link "Du sud">><<goto "Interrogatoire Sud">><</link>>
<</linkappend>>
:: Exemple avec remove
Vous apercevez une créature étrange dans les buissons.
<<linkappend "Plante" remove>>
<<shake 400ms>><<linkappend "Plante encorer" remove>><</linkappend>><</shake>>
<</linkappend>><<if $gold >= 5>>\
<span style="color: #FFD700; display: flex; align-items: center; gap: 5px;">You paid 5 🪙</span>\
<<script>>
var soundEffect = new Audio('MagicWorldOfBimbo/Sounds/01-ShopBuy.ogg');
soundEffect.volume = State.variables.musicVolume / 100;
soundEffect.play();
<</script>>\
<<set $gold -= 5>>\
<<set $Armor = 1>>\
<div class="purchase-container">
<img width="100%" height="30%" src="MagicWorldOfBimbo/Village/Shop/yes.jpg" class="purchase-image">
<div class="purchase-overlay">\
<div class="purchase-effect">ARMOR ACQUIRED!</div>\
</div>\
</div>\
<<speech "Seller">>Thank you for your purchase, sir. With this armor, the enemies of the forest will not harm you.<</speech>>
<<else>>\
<img width="100%" height="30%" src="MagicWorldOfBimbo/Village/Shop/no.jpg">
<<speech "Seller">><span class="bounce">Sorry!, but you need at least 5 gold pieces</span>. Come back when you have enough money.<</speech>>
<</if>>\
[[Back to the City|Village]]
<style>
.bounce {
display: inline-block;
animation: bounce 0.5s infinite;
}
@keyframes bounce {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-10px); }
}
/* Purchase animation styles */
.purchase-container {
position: relative;
overflow: hidden;
margin-bottom: 10px;
}
.purchase-image {
animation: pulse 1s ease-in-out;
}
.purchase-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
pointer-events: none;
}
.purchase-effect {
color: #FFD700;
font-size: 2em;
font-weight: bold;
text-shadow: 0 0 10px #FFD700, 0 0 20px #FFD700;
background-color: rgba(0, 0, 0, 0.5);
padding: 10px 20px;
border-radius: 10px;
animation: fadeInOut 2s ease-in-out forwards;
transform: scale(0);
}
@keyframes pulse {
0% { filter: brightness(1); }
50% { filter: brightness(1.5); }
100% { filter: brightness(1); }
}
@keyframes fadeInOut {
0% { opacity: 0; transform: scale(0) rotate(-10deg); }
20% { opacity: 1; transform: scale(1.2) rotate(5deg); }
80% { opacity: 1; transform: scale(1) rotate(0); }
100% { opacity: 0; transform: scale(0.8); }
}
</style>BONUS :
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Intro/Bonus/1.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Intro/Bonus/2.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Intro/Bonus/3.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Intro/Bonus/4.mp4" type="video/mp4">
Your browser does not support the video tag.
</video><img width="100%" height="30%" src="MagicWorldOfBimbo/Village/Date/Park/BJ/0.jpg">
<<speech "Amy">>I can't leave you like this, it's my fault if you've such a boner. Show it to me... What the... By the Goddess, it's huge!<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Village/Date/Park/BJ/1.jpg">
<<speech "Amy">>Why didn't you tell me you had such a monster? It's like a flower to me! Hmmm and the smell is intoxicating. I can't resist, I must... Kiss!<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Village/Date/Park/BJ/2.jpg">
<<speech "Amy">>And taste it! Glup... Mmmmh... Yummy!<</speech>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Date/Park/BJ/3.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Amy">>Let me show you how I deepthroat big things like this... Glok! Glug! Do you like ?<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Village/Date/Park/BJ/4b.webp">
<<speech "Amy">>Fuck, it's huge! It's the first time I struggle to swallow entirely a human dick! Glog! Shlop!<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Village/Date/Park/BJ/5.webp">
<<speech "Amy">>But it's delicious... Shlop! Hmmmm... I'm getting accustomed, now it fits down my throat... Glog! So good.... MMMMMHHH....<</speech>>
<<linkappend "Cumming">>
<<script>>
var soundEffect = new Audio('MagicWorldOfBimbo/Sounds/Sperm1.wav');
soundEffect.volume = $("#volumeSlider").val() / 100 || 0.3;
soundEffect.play();
<</script>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Village/Date/Park/BJ/6.png">
<<speech "Amy">>Oh! You're cumming already! Slurp! My tight throat and tiny mouth were that good? Slurp! Hey even your semen tastes good! Yum! Gulp!! <</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Village/Date/Park/BJ/7.webp">
<<speech "Amy">> Gulp! I'm a bit disturbed... Your dick drove me a bit wild. And your sperm is so delicious! Let me drink it all! GULP! GULP! <</speech>>
<</linkappend>>
[[Back to the City|Village]]<<set _randomImg = Math.floor(Math.random() * 10)>>
<<set _rockImg = '<img id="rockImage" width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Witch/BuyScroll/' + _randomImg + '.jpg">'>>
<<print _rockImg>>
<<speech "Witch">>Please examine the shelves behind me to find a scroll. The shelves, I said, what are you looking at? Ok it's very narrow, but you can skirt around me, there's enough space for two persons... I think. Don't be afraid to brush me."
<</speech>>
<<if $Life < 45>>
<<speech "Witch">>Some parchments are dangerous. Come back when your life is full.<</speech>>
<</if>>
<<if $Life > 45>>
<<linkreplace "🕮 Search for a new scroll..." t8n>>
<<set $FoundScroll += 1>>
Searching...<<timed 1s transition>><br>Check at left... <<next>><br> Hit the shelf... <<next>>
<<if $FoundScroll == 1>>
<br><<shake 400ms>>🔥You burned your hands on a scroll of fire (-20 HP).<</shake>><<set $Life -= 30>>
<<elseif $FoundScroll == 3>>
<br><<shake 200ms>>🕮 Free tits scroll found!<</shake>>
<<elseif $FoundScroll == 5>>
<br><<shake 400ms>>☠️A parchment has poisoned you.(-30 HP).<</shake>> <<set $Life -= 50>>
<<elseif $FoundScroll == 7>>
<br><<shake 200ms>>🕮 Invisible scroll found!<</shake>>
<<elseif $FoundScroll == 10>>
<br><<shake 400ms>>☠️A parchment has cursed you.(1 HP).<</shake>> <<set $Life = 1>>
<<elseif $FoundScroll == 12>>
<br><<shake 200ms>>🕮 X-Ray scroll found!<</shake>>
<<elseif $FoundScroll > 12>>
<br><<shake 200ms>>🕮 Nothing more to search...(Next Update)<</shake>>
<<set $FoundScroll = 13>>
<<else>>
<br><<shake 100ms>> Nothing...<</shake>>
<</if>>
<<run $("#life-progress").val($Life)>>
<<next>>
[[Search again|🕮 Searching for a new spell]]
<</timed>>
<</linkreplace>>
<</if>>
<<if $FoundScroll > 2>>
<div class="disabled-button">Learn free tits scroll 500🪙 (Next Update)</div>
<</if>>
<<if $FoundScroll > 6>>
<div class="disabled-button">Learn invisible scroll 1000🪙 (Next Update)</div>
<</if>>
<<if $FoundScroll > 12>>
<div class="disabled-button">Learn X-ray scroll 5000🪙 (Next Update)</div>
<</if>>
<br>
[[Back to the Forest|Enter the forest]]
<<set $relations = {
"Amy": { level: State.variables.AmyRelation, pic: "MagicWorldOfBimbo/Amy.jpg", Desc: "Your future girlfriend?" },
"Witch": { level: State.variables.WitchRelation, pic: "MagicWorldOfBimbo/Witch.jpg", Desc: "The powerful witch of the forest" },
"Seller": { level: 2, pic: "MagicWorldOfBimbo/Seller.jpg", Desc: "a hot saleswoman"},
"Elena": { level: 0, pic: "MagicWorldOfBimbo/Elena.jpg", Desc: "the person who woke you up" }
}>>
<div class="relations-table">
<<for _name, _data range $relations>>
<div class="character-row">
<div class="character-cell">
<div class="character-avatar">
<<print '<img src="' + _data.pic + '" alt="' + _name + '">'>>
</div>
<div class="character-info">
<span class="character-name"><<= _name >></span>
<span class="character-desc"><<= _data.Desc >></span>
</div>
</div>
<div class="level-cell">
<div class="level-display">
<span class="relation-level">Level <<= _data.level >></span>
<div class="hearts">
<<for _i range 5>>
<<if _i < _data.level>>
<span class="heart heart-red">❤</span>
<<else>>
<span class="heart heart-gray">❤</span>
<</if>>
<</for>>
</div>
</div>
</div>
</div>
<</for>>
</div>
<style>
.relations-table {
width: 100%;
max-width: 700px;
margin: 0 auto;
font-family: Arial, sans-serif;
}
.character-row {
display: flex;
align-items: center;
background: rgba(255, 255, 255, 0.8);
border-radius: 12px;
margin-bottom: 15px;
padding: 15px;
box-shadow: 0 3px 6px rgba(0, 0, 0, 0.1);
transition: transform 0.3s ease;
}
.character-row:hover {
transform: translateY(-3px);
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.15);
background: rgba(255, 255, 255, 0.95);
}
.character-cell {
display: flex;
align-items: center;
flex: 2;
}
.level-cell {
flex: 1;
text-align: center;
}
.character-avatar {
width: 60px;
height: 60px;
margin-right: 15px;
flex-shrink: 0;
}
.character-avatar img {
width: 100%;
height: 100%;
border-radius: 50%;
border: 3px solid #4a89dc;
object-fit: cover;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.character-info {
display: flex;
flex-direction: column;
}
.character-name {
font-size: 18px;
font-weight: bold;
color: #2c3e50;
margin-bottom: 5px;
}
.character-desc {
font-size: 14px;
color: #7f8c8d;
line-height: 1.4;
}
.level-display {
display: flex;
flex-direction: column;
align-items: center;
}
.relation-level {
font-size: 16px;
font-weight: bold;
color: #e74c3c;
margin-bottom: 8px;
}
.hearts {
line-height: 1;
}
.heart {
font-size: 1.5em;
margin: 0 2px;
transition: transform 0.2s ease;
}
.heart:hover {
transform: scale(1.4);
}
.heart-red {
color: #e74c3c;
text-shadow: 0 0 5px rgba(231, 76, 60, 0.3);
}
.heart-gray {
color: #bdc3c7;
}
/* Responsive */
@media (max-width: 600px) {
.character-row {
flex-direction: column;
text-align: center;
padding: 20px;
}
.character-cell {
flex-direction: column;
margin-bottom: 15px;
}
.character-avatar {
margin-right: 0;
margin-bottom: 10px;
}
.character-info {
align-items: center;
}
.character-desc {
text-align: center;
}
}
</style><h3>💖 Support us and🔒unlock all locked scenes 💖</h3>
<span style="color: #eeeeee;">💦</span> <span style="color: #eeeeee;">Bonus Scenes / Early sex Scenes / Menu NSFW scenes</span><br>
<span style="color: #eeeeee;">💪</span> <span style="color: #eeeeee;">Cheat code (Golds, Mana, Amor, Weapons, Life)</span> <br>
<span style="color: #eeeeee;">🔞</span> <span style="color: #eeeeee;">Early access to the next update.</span><br>
<a href="https://www.patreon.com/adn700" target="_blank" class="clickable-image">
<img src="MagicWorldOfBimbo/Patreon.jpg" alt="Patreon" style="width: 100%; max-width: 500px; transition: transform 0.3s;">
Patreon : ADN700
</a>
<a href="https://doctorbimbo.fanbox.cc/" target="_blank" class="clickable-image">
<img src="MagicWorldOfBimbo/LogoFanCC.png" alt="Fan CC" style="width: 100%; max-width: 500px; transition: transform 0.3s;">
Fanbox : Doctor Bimbo
</a>
<style>
.clickable-image {
display: inline-block;
position: relative;
text-decoration: none;
}
.clickable-image:hover img {
transform: scale(1.03);
box-shadow: 0 5px 15px rgba(0,0,0,0.3);
}
.image-caption {
position: absolute;
bottom: 0;
left: 0;
right: 0;
background: rgba(0,0,0,0.7);
color: white;
padding: 8px;
border-bottom-left-radius: 8px;
border-bottom-right-radius: 8px;
opacity: 0;
transition: opacity 0.3s;
}
</style>Some long text...
<<if $choice1>>
\Long replacement text for choice 1...
\<<else>>
\<<linkreplace "Choice 1">>Long replacement text for choice 1...<<set $choice1 to true>><</linkreplace>>
\<</if>>
<<if $choice2>>
\Long replacement text for choice 2...
\<<else>>
\<<linkreplace "Choice 2">>Long replacement text for choice 2...<<set $choice2 to true>><</linkreplace>>
\<</if>>
<<if $choice3>>
\Long replacement text for choice 3...
\<<else>>
\<<linkreplace "Choice 3">>Long replacement text for choice 3...<<set $choice3 to true>><</linkreplace>>
\<</if>>
[[Continue|Other]]Some long text...
<<if $choice1>>
\Long replacement text for choice 1...
\<<else>>
\<<linkreplace "Choice 1">>Long replacement text for choice 1...<<set $choice1 to true>><</linkreplace>>
\<</if>>
<<if $choice2>>
\Long replacement text for choice 2...
\<<else>>
\<<linkreplace "Choice 2">>Long replacement text for choice 2...<<set $choice2 to true>><</linkreplace>>
\<</if>>
<<if $choice3>>
\Long replacement text for choice 3...
\<<else>>
\<<linkreplace "Choice 3">>Long replacement text for choice 3...<<set $choice3 to true>><</linkreplace>>
\<</if>>
[[Continue|Other]]:: Départ
Vous flânez tranquillement sur la place du marché, admirant un étal de choux particulièrement... chouettes. Soudain, un garde s'approche, l'air sévère.
<<linkappend "Déclencher une cascade d'éternuements exagérés">>
<<set $compte_eternuements to 0>>
<<timed 0.5s>>
<<goto "Eternuement1">>
<</timed>>
<</linkappend>>
<<linkappend "Faire semblant d'être un touriste perdu">>
Le garde lève un sourcil. "Vous êtes nouveau ici, n'est-ce pas ? Circulez, circulez, y a rien à voir ! (sauf les choux...)"
<<goto "Circulation">>
<</linkappend>>
<<linkappend "Tenter un pot-de-vin avec un navet">>
Vous sortez un navet de votre sac et le tendez au garde avec un sourire. "Pour... la circulation ?"
Le garde hésite, puis répond : "C'est... original. Mais non. Circulez !"
<<goto "Circulation">>
<</linkappend>>
:: Eternuement1
ATCHOUM !
<<set $compte_eternuements to $compte_eternuements + 1>>
<<if $compte_eternuements lt 5>>
<<timed 0.5s>>
<<goto "Eternuement2">>
<</timed>>
<<else>>
Le garde, visiblement irrité, vous fait signe de partir. "Assez ! Circulez avant que je ne vous fasse éternuer en prison !"
<<goto "Circulation">>
<</if>>
:: Eternuement2
ATCHOUM ! ATCHOUM !
<<set $compte_eternuements to $compte_eternuements + 1>>
<<if $compte_eternuements lt 5>>
<<timed 0.5s>>
<<goto "Eternuement1">>
<</timed>>
<<else>>
Le garde, visiblement irrité, vous fait signe de partir. "Assez ! Circulez avant que je ne vous fasse éternuer en prison !"
<<goto "Circulation">>
<</if>>
:: Circulation
Vous vous éloignez à contrecœur, murmurant quelque chose sur "les joies de la vie citadine". Où voulez-vous aller maintenant ?
:: Taverne
Vous entrez dans une taverne sombre et enfumée. L'odeur de bière et de vieux fromage vous frappe.
(À suivre...)<!-- Small image that the player can click -->
<img src="MagicWorldOfBimbo/Amy.jpg" alt="Small Image" class="clickable-image" onclick="showImageModal('MagicWorldOfBimbo/Amy.jpg')">
<!-- Modal for displaying the larger image -->
<div id="image-modal" class="modal">
<span class="close" onclick="closeImageModal()">×</span>
<img id="modal-image" class="modal-content">
</div>
<style>
/* Style for the clickable image */
.clickable-image {
width: 150px;
height: auto;
cursor: pointer;
border: 2px solid #ccc;
border-radius: 5px;
transition: transform 0.2s ease;
}
.clickable-image:hover {
transform: scale(1.05);
border-color: #777;
}
/* Modal styles */
.modal {
display: none; /* Hidden by default */
position: fixed;
z-index: 1000;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgba(0, 0, 0, 0.9);
}
.modal-content {
display: block;
margin: auto;
max-width: 80%;
max-height: 80%;
margin-top: 5%;
}
.close {
position: absolute;
top: 20px;
right: 35px;
color: white;
font-size: 40px;
font-weight: bold;
cursor: pointer;
}
.close:hover {
color: #ccc;
}
</style>
<script>
// Function to show the modal with the larger image
function showImageModal(imageUrl) {
const modal = document.getElementById("image-modal");
const modalImg = document.getElementById("modal-image");
modal.style.display = "block";
modalImg.src = imageUrl;
}
// Function to close the modal
function closeImageModal() {
const modal = document.getElementById("image-modal");
modal.style.display = "none";
}
</script>
dsds<<shakescreen "300ms">>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/7.jpg" class="damage-effect">
<<speech "Elena">>Oh you're cumming... in my mouth... already? you could have warned!<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/8.jpg" class="damage-effect">
<<speech "Elena">>GULP! GULP! Oh my goddess, I'm having trouble swallowing it all, there's too much! But I must focus, the toxin must be entirely drained!<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/9.jpg" class="damage-effect">
<<speech "Elena">>Slurp! Gulp! It's getting thicker and thicker. GULP! But I won't let you down! GULP! <</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/10.jpg">
<<speech "Elena">>Gulp! I hope I won't get pregnant with all the cream I'm swallowing. Just kidding slurp!<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/11.jpg" class="damage-effect">
<<speech "Elena">>I swallowed it all! What a feast, I'm replete. If I've known you had that much cum, we would have started with the blowjob! Sir, are you okay?<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/12.jpg" class="damage-effect">
<<speech "Elena">>I feel much better. Your rich semen healed me for sure. You are my savior, and deserve a reward.<</speech>>
<span class="attack-effect">
"You may have dreamed you saved her, but in fact it's the last idea you have before you die..."
</span>
[[Restart|NewStart]]
<<if $CheatCode == 1>>[[Dream of anal sex reward!]]<<endif>>
<<if $CheatCode == 0>><div class="disabled-button">Bonus anal's sex.<a href="https://doctorbimbo.itch.io/magic-world-of-bimbo" target="blank">✨ Support Us ✨</a></div>\<<endif>>
<style>
.attack-effect {
display: inline-block;
font-weight: bold;
color: red;
animation: attack 0.5s infinite;
}
@keyframes attack {
0% {
transform: translateX(0) translateY(0);
color: red;
text-shadow: 0 0 5px rgba(255, 0, 0, 0.8);
}
25% {
transform: translateX(-5px) translateY(-5px);
color: darkred;
text-shadow: 0 0 10px rgba(255, 0, 0, 0.8);
}
50% {
transform: translateX(5px) translateY(5px);
color: orange;
text-shadow: 0 0 15px rgba(255, 165, 0, 0.8);
}
75% {
transform: translateX(-5px) translateY(-5px);
color: yellow;
text-shadow: 0 0 20px rgba(255, 255, 0, 0.8);
}
100% {
transform: translateX(0) translateY(0);
color: red;
text-shadow: 0 0 5px rgba(255, 0, 0, 0.8);
}
}
</style><<set _randomImg = Math.floor(Math.random() * 6)>>\
<div id="combat-ui" style="text-align: center;">\
<<print '<video width="100%" height="30%" playsinline autoplay loop muted alt="Enemy" id="enemy-img">' +
'<source src="MagicWorldOfBimbo/Forest/DeepForest/' + _randomImg + '.mp4" type="video/mp4">' + 'Your browser does not support the video tag.</video>'>>
<nobr>
<div id="attack-bar-container" style="width: 300px; height: 30px; background-color: #555; margin: 0 auto 15px; position: relative; border: 2px solid white; overflow: hidden; border-radius: 5px; box-shadow: inset 0 1px 3px rgba(0,0,0,0.5);">
<div id="bar-blue-left" style="position: absolute; left: 0%; top: 0; width: 25%; height: 100%; background-color: dodgerblue;"></div>
<div id="bar-orange-left" style="position: absolute; left: 25%; top: 0; width: 15%; height: 100%; background-color: orange;"></div>
<div id="bar-red-center" style="position: absolute; left: 40%; top: 0; width: 20%; height: 100%; background-color: crimson;"></div>
<div id="bar-orange-right" style="position: absolute; left: 60%; top: 0; width: 15%; height: 100%; background-color: orange;"></div>
<div id="bar-blue-right" style="position: absolute; left: 75%; top: 0; width: 25%; height: 100%; background-color: dodgerblue;"></div>
<div id="attack-cursor" style="position: absolute; left: 0%; top: 0; width: 4px; height: 100%; background-color: black; z-index: 1;"></div>
</div>\
\
<button id="attack-button">Fight</button>\
\
\
<div id="attack-feedback" style="margin-top: 15px; font-weight: bold; line-height: 1.4;"> </div>\
\
<div id="combat-continue" style="margin-top: 20px; display: none;">\
<<if $Life > 8>><<endif>>
</div>\
</nobr>
</div>
<style>
#attack-button {
display: block; margin: 0 auto; width: 250px;
padding: 12px 20px; font-size: 1.1em; font-weight: bold;
cursor: pointer; background-color: crimson; color: white;
border: none; border-radius: 5px; text-transform: uppercase;
transition: background-color 0.2s ease, transform 0.1s ease;
}
#attack-button:hover { background-color: darkred; }
#attack-button:active { transform: scale(0.98); }
#attack-button:disabled {
cursor: not-allowed; background-color: #993333; opacity: 0.7;
}
#attack-feedback {
padding: 5px;
border: 2px solid transparent;
display: inline-block;
min-width: 280px;
min-height: 5em;
vertical-align: top;
}
</style>
<<script>>
var CONFIG_CURSOR_SPEED = 200; // Déclaration en dehors de la fonction $(document).one(...)
var blueZone1End = 25;
var orangeZone1End = 40;
var redZoneEnd = 60;
var orangeZone2End = 75;
var results = {
critical: { Critique: 20, gold: 10, hpLost: 5, color: 'crimson', label: 'Perfect Combat!' },
good: { damage: 10, gold: 5, hpLost: 10, color: 'orange', label: 'Medium Combat!' },
weak: { damage: 5, gold: 2, hpLost: 20, color: 'dodgerblue',label: 'Low Combat.' }
};
$(document).one(':passagedisplay', function (ev) {
var cursorPosPercent = 0;
var cursorDirection = 1;
var intervalId = null;
var lastUpdateTime = performance.now();
var cursor = $('#attack-cursor');
var button = $('#attack-button');
var feedback = $('#attack-feedback');
var continueLinks = $('#combat-continue');
var enemyImage = $('#enemy-img');
function updateCursor() {
var now = performance.now();
var deltaTime = (now - lastUpdateTime) / 1000;
lastUpdateTime = now;
cursorPosPercent += cursorDirection * CONFIG_CURSOR_SPEED * deltaTime;
if (cursorPosPercent >= 100) {
cursorPosPercent = 100; cursorDirection = -1;
} else if (cursorPosPercent <= 0) {
cursorPosPercent = 0; cursorDirection = 1;
}
cursor.css('left', cursorPosPercent + '%');
}
function handleAttack() {
enemyImage.css('filter', 'grayscale(100%)');
if (intervalId !== null) {
clearInterval(intervalId);
intervalId = null;
}
button.prop('disabled', true);
var finalPos = cursorPosPercent;
var attackResult;
if (finalPos > orangeZone1End && finalPos <= redZoneEnd) {
attackResult = results.critical;
} else if ((finalPos > blueZone1End && finalPos <= orangeZone1End) ||
(finalPos > redZoneEnd && finalPos <= orangeZone2End)) {
attackResult = results.good;
} else {
attackResult = results.weak;
}
var message = `<span style="color: ${attackResult.color}; font-weight:bold;">${attackResult.label}</span><br>`;
message += `Enemy is KO.<br>`;
message += `You lost ${attackResult.hpLost} HP.<br>`;
message += `You gained ${attackResult.gold} Gold.`;
if (State.variables.Life < 10)
{message += `Low HP, Need to rest.`;
}
feedback.css({ 'border': `2px solid ${attackResult.color}` });
feedback.html(message);
try {
console.log(`Updating variables: Enemy HP -= ${attackResult.damage}, Player HP -= ${attackResult.hpLost}, Player Gold += ${attackResult.gold}`);
State.variables.gold += attackResult.gold;
State.variables.Life -=attackResult.hpLost
// Afficher la nouvelle valeur
} catch (e) {
console.error("Error updating Sugarcube variables. Make sure $enemyHP, $playerHP, and $playerGold are initialized.", e);
feedback.append("<br><span style='color:red;font-size:0.8em;'>Error updating game state! Check console (F12).</span>");
}
continueLinks.show();
}
function startGame() {
enemyImage.css('filter', 'none');
cursorPosPercent = 0; cursorDirection = 1;
cursor.css('left', '0%');
feedback.html(' ');
feedback.css({'border-color': 'transparent'});
button.prop('disabled', false);
continueLinks.hide();
lastUpdateTime = performance.now();
if (intervalId === null) {
intervalId = setInterval(updateCursor, 16);
}
}
button.on('mousedown', handleAttack);
startGame();
$(document).one(':passagedone', function (ev) {
if (intervalId !== null) { clearInterval(intervalId); intervalId = null; }
button.off('mousedown', handleAttack);
});
});
<</script>><<set $helenaEat to 1>>
You unlock a new way to die!
[[Restart|NewStart]]<div class="video-container">\
<video class="video" autoplay muted playsinline loop>\
<source src="MagicWorldOfBimbo/Intro/AmyS4Dream.mp4" type="video/mp4">\
</video>\
<div class="fade-overlay"></div>\
</div>\
<<typeNEW 30ms>>\
<<speech "You">>I'm dreaming ?!! What was that strange wolf? Amy ?...
<</speech>>
<</typeNEW>>
[[Restart|NewStart]]
<style>
.video-container {
position: relative;
width: 100%;
height: 100%;
}
.video {
width: 100%;
height: 100%;
}
.fade-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
animation: fadeToBlack 4s infinite;
pointer-events: none;
z-index: 1;
}
@keyframes fadeToBlack {
0% { background-color: rgba(0, 0, 0, 1); }
25% { background-color: rgba(0, 0, 0, 0.1); }
50% { background-color: rgba(0, 0, 0, 0.8); }
75% { background-color: rgba(0, 0, 0, 0.2); }
100% { background-color: rgba(0, 0, 0, 1); }
}
</style><img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/Anal/1.jpg">
<<speech "Elena">>As a reward, do you want to sodomize me Sir? To get though my tight little asshole? Males usually love it!<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/Anal/2.jpg">
<<speech "Elena">>Of course you want! Wow, what impetuosity, forcing me to sit on your manhood! Mmmmh your big penis fits perfectly in there...<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/Anal/3.jpg">
<<speech "Elena">>Aaaah... Yes! I'm gonna like this even more than I thought. Let me move on your pole... Yes, like that, let me stretch my anus on your beautiful dick.<</speech>>
<video width="100%" height="30%" playsinline autoplay loop muted >
<source src="MagicWorldOfBimbo/Intro/Bl-Elena/Anal/4a.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Elena">>Oh yes I'm cumming already.... Keep going....<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/Anal/4.webp">
<<speech "Elena">>Deeper... just a little further... Yes, you got this. So gewd to have your huge cock up my ass while I'm touching my pussy!<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/Anal/5.jpg">
<<speech "Elena">>Mmm... feels so good right there. Don't stop, I want another anal orgasm!<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/Anal/6.jpg">
<<speech "Elena">>Oh, yes... keep going... like that. Hard and deep in my asshole! Make my big tits bounce as you're banging me!<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/Anal/7.webp">
<<speech "Elena">>You're getting bigger in the bottom of my ass... Please hold on, I'm close... Oh, yes. You feel so good massaging my rectum like that.<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/Anal/8.jpg">
<<speech "Elena">>Oh yes take me from behind... Anal doggy's my favorite! I'm getting so excited... I'm going to... I'm so close!<</speech>>
<<linkappend "Cumming">>
<<script>>
var soundEffect = new Audio('MagicWorldOfBimbo/Sounds/Sperm1.wav');
soundEffect.volume = $("#volumeSlider").val() / 100 || 0.3;
soundEffect.play();
<</script>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/Anal/9.jpg">
<<speech "Elena">>Ah yes... please... fill my bowels with your cum...I need you to explode inside of me. So hot!<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/Anal/10.jpg">
<<speech "Elena">>More... please, more! I want to feel that again. I need more hot thick semen in my asshole!<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/Anal/11.jpg">
<<speech "Elena">>I feel amazing now... complete. You're the best. I feel so relaxed. Let me taste your sperm from my ass! Slurp! Gulp! Yummy... And perfect to oil my boobs... What a gift!<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/Anal/12.jpg">
<<speech "Elena">>I feel so full... As if I was pregnant with cum! Did you give me all your seed? You must have saved it for months. You really went all in!<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/Anal/13.jpg">
<<speech "Elena">>Is it just me, or is something wrong? Are you okay?! You seem a little pale... Hey stay with me, I want to see if you can fill me even more, my saviour...<</speech>>
<span class="attack-effect">
"You may have dreamed you have saved and banged her, but you still die... Maybe you'll manage to assfuck her this way in real life one day... in another life?"
</span>
<</linkappend>>
[[Restart|NewStart]]
<style>
.attack-effect {
display: inline-block;
font-weight: bold;
color: red;
animation: attack 0.5s infinite;
}
@keyframes attack {
0% {
transform: translateX(0) translateY(0);
color: red;
text-shadow: 0 0 5px rgba(255, 0, 0, 0.8);
}
25% {
transform: translateX(-5px) translateY(-5px);
color: darkred;
text-shadow: 0 0 10px rgba(255, 0, 0, 0.8);
}
50% {
transform: translateX(5px) translateY(5px);
color: orange;
text-shadow: 0 0 15px rgba(255, 165, 0, 0.8);
}
75% {
transform: translateX(-5px) translateY(-5px);
color: yellow;
text-shadow: 0 0 20px rgba(255, 255, 0, 0.8);
}
100% {
transform: translateX(0) translateY(0);
color: red;
text-shadow: 0 0 5px rgba(255, 0, 0, 0.8);
}
}
</style><video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Intro/A4.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<typeNEW 30ms>>\
<<speech "Elena">>They're delicious! Here, have some too...<</speech>>
<<linkappend "Eat berries">>
<<speech "Elena">>My stomach is kind of upset. How are you feeling?!<</speech>>
<span class="attack-effect">
"As the poison you've just ingested took effect, you fainted after a moment..."
</span>
[[Die of poisoning]]
<<if $helenaEat neq 1>><div class="disabled-button">Extract the poison with a blowjob.</div><<endif>>
<<if $helenaEat eq 1>>[[Extract the poison with a blowjob.]]<<endif>>
<</linkappend>>
<</typeNEW>>
<style>
.attack-effect {
display: inline-block;
font-weight: bold;
color: red;
animation: attack 0.5s infinite;
}
@keyframes attack {
0% {
transform: translateX(0) translateY(0);
color: red;
text-shadow: 0 0 5px rgba(255, 0, 0, 0.8);
}
25% {
transform: translateX(-5px) translateY(-5px);
color: darkred;
text-shadow: 0 0 10px rgba(255, 0, 0, 0.8);
}
50% {
transform: translateX(5px) translateY(5px);
color: orange;
text-shadow: 0 0 15px rgba(255, 165, 0, 0.8);
}
75% {
transform: translateX(-5px) translateY(-5px);
color: yellow;
text-shadow: 0 0 20px rgba(255, 255, 0, 0.8);
}
100% {
transform: translateX(0) translateY(0);
color: red;
text-shadow: 0 0 5px rgba(255, 0, 0, 0.8);
}
}
</style><span class="gradient-text">*** End of this Update ***</span>
Thank you for playing my little demo! I hope you had as much fun playing it as I had making it.
If you enjoyed it and would like to see more, please leave a comment below / Like. Your feedback is greatly appreciated!
[[Restart|NewStart]]
[[BONUS]]
<style>
.gradient-text {
background: linear-gradient(90deg, red, orange, yellow, green, orange, red, violet);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
</style>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/1.jpg">
[[Back to the City|Village]]
<<if $WitchRelation == 0>>\
[[Go to the tree house|WitchInit]]
<<endif>>\
<<if $WitchRelation > 0>>\
[[Go to the Witch|WitchShop]]
<<endif>>\
<<if $WitchRelation >= 1 and $Mana >1 >>\
[[Find animals in the Forest|FightForest1]]
<<endif>>\
<<if $Mana < 2 or $WitchRelation < 1>>\
<div class="disabled-button">Forest (need Mana 🧪)</div>\
<<endif>>\
<<if $Weapon >0 and $Life >10 >>\
[[Deep-Forest|Deep-Forest2]]
<</if>>\
<<if $Weapon == 0>>\
<div class="disabled-button">Deep-Forest (Requis Weapon and 10Life)</div>\
<</if>>\
<<script>>
if (window.audio) {
window.audio.pause();
window.audio.currentTime = 0;
delete window.audio;
}
window.audio = new Audio('MagicWorldOfBimbo/Music/1Forest2.mp3');
window.audio.loop = true;
window.audio.volume = $("#volumeSlider").length > 0 ?
($("#volumeSlider").val() / 100) :
State.variables.musicVolume / 100;
window.audio.play().catch(function(error) {
console.log("Audio playback failed:", error);
});
<</script>><video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Intro/Bl-Elena/1.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<typeNEW 20ms>>\
<<speech "Elena">>Oh no, this fruit is poisonous for you? What about me? What should I do? I don't feel very well either...
<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/2.jpg" class="damage-effect">
<<speech "Elena">>What, a blowjob to extract the venom? It makes sense, I've heard some forest toxins accumulate in the balls. Yes, that might be the solution, you're so clever! Hold on, I'll readily drain the toxin! <</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/3.jpg" class="damage-effect">
<<speech "Elena">>But what a huge, thick veiny cock! How am I supposed to make it fit in my tiny, innocent mouth? But I must make an effort to save you.<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/4.jpg" class="damage-effect">
<<speech "Elena">>Slurps... glub!<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/5.webp">
<<speech "Elena">>Gluuuups... Glok!<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/6.jpg" class="damage-effect">
<<speech "Elena">>Sluuurp! I feel better, seems your tasty precum is curing me. But what about you? Do you want me to put it between my huge tits while I deepthroat you? Shlop!<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/6b.webp">
[[Cum]]
<</typeNEW>><<set _randomEnemy = Math.floor(Math.random() * 4)>>
<<if _randomEnemy == 0>>
<span id="premierePhrase">A beautiful doe appears ! But wait, she looks... humanoid? She wears clothes?!?
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Forest/level1/intro.mp4" type="video/mp4">
Your browser does not support the video tag.
</video></span>
[[Continue to walk|FightForest1]]
<span class="cast-spell-lien"><<link "Cast the spell...">><<replace #contenu>>
<<script>>
var soundEffect = new Audio('MagicWorldOfBimbo/Sounds/Spell.wav');
soundEffect.volume = State.variables.musicVolume / 100;
soundEffect.play();
<</script>>
<<set _randomSpell = Math.floor(Math.random() * 99)>>
<<if _randomSpell >= 80>>
<<set $Mana -= 20>>
<span class="gradient-text">Cost 🧪: Mana - 20</span>
<span class="bounce"><span class="gradient-text"><H1>
The spell has failed. Would you like to try again?</H1></span></span>
[[Try again|FightForest1]]
[[Leave|Enter the forest]]
<</if>>
<<if _randomSpell < 80>>
<span class="gradient-text">Cost 🧪: Mana - 20</span>
<div class="purchase-container">
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Forest/level1/0.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<div class="purchase-overlay">
<div class="magic-effect-container">
<div class="magic-circle"></div>
<div class="magic-aura"></div>
<div class="magic-rays"></div>
<div class="magic-energy"></div>
</div>
</div>
</div>
The doe gradually transforms into a human female... well, still with antlers...
<<set $Mana -= 20>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/level1/2.jpg">
"Yo...u Sa...ve me...Thanks!"
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/level1/3.jpg">
"I... sense you are in.... heat and ready to... reproduce."
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/level1/4.jpg">
"Please... Let's... breed... I need semen... right now!"
<<run incrementQuestProgress("Transform 10 women for the witch.")>>
<<set $CaptureForest += 1>>
<<linkappend "Show her your cock">>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/level1/10.jpg">
"OOOh. Better than in my wildest dreams... Bigger than the deer! Oh... I remember your smell... Where? When?"
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/level1/11.jpg">
"Slurp! Shlop! Give me... your gift! Slurp! Glop!"
<<linkappend "Cumming">>
<<script>>
var soundEffect = new Audio('MagicWorldOfBimbo/Sounds/Sperm1.wav');
soundEffect.volume = State.variables.musicVolume / 100;
soundEffect.play();
<</script>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/level1/12.jpg" id="ShakeHit">
"You're cumming... I want to taste and savour it! Hmmm! my savior you taste so good... I remember that taste... It was you who... Gulp! Gulp! Who what!? Gulp!"
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/level1/13.jpg">
"Gulp! I don't care! I want you to impregnate me! Gulp! You're the male I've always dreamed of..."
<</linkappend>>
<</linkappend>>
[[Back to the forest|Enter the forest]]
<</if>>
<</replace>><<remove "#premierePhrase">><<remove ".cast-spell-lien">><<script>>
window.scrollTo(0, document.body.scrollHeight);
<</script>><</link>></span>
<span id="contenu"></span>
<span class="cast-spell-lien"></span>
<</if>>
<<if _randomEnemy == 1>>
<span id="premierePhrase">A bizarre, big-titted bipedal sheep appears !
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Sheep/1.jpg">
</span>
[[Continue to walk|FightForest1]]
<span class="cast-spell-lien"><<link "Cast the spell...">><<replace #contenu>>
<<script>>
var soundEffect = new Audio('MagicWorldOfBimbo/Sounds/Spell.wav');
soundEffect.volume = State.variables.musicVolume / 100;
soundEffect.play();
<</script>>
<<set _randomSpell = Math.floor(Math.random() * 99)>>
<<if _randomSpell >= 80>>
<<set $Mana -= 20>>
<span class="gradient-text">Cost 🧪: Mana - 20</span>
<span class="bounce"><span class="gradient-text"><H1>
The spell has failed. Would you like to try again?</H1></span></span>
[[Try again|FightForest1]]
[[Leave|Enter the forest]]
<</if>>
<<if _randomSpell < 80>>
<span class="gradient-text">Cost 🧪: Mana - 20</span>
<div class="purchase-container">
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Forest/Sheep/2.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<div class="purchase-overlay">
<div class="magic-effect-container">
<div class="magic-circle"></div>
<div class="magic-aura"></div>
<div class="magic-rays"></div>
<div class="magic-energy"></div>
</div>
</div>
</div>
The sheep gradually transforms into a human female.. Well, still with strange sheep ears, and walking on all four...
<<set $Mana -= 20>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Forest/Sheep/3.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
"Lick lick.... She doesn't speak, but clearly wants something..."
<<run incrementQuestProgress("Transform 10 women for the witch.")>>
<<set $CaptureForest += 1>>
<<linkappend "Show her your cock">>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Sheep/5.jpg">
At least she seems to behave like a human. Mesmerized by your thick manhood, she gazes at you intensely.
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Sheep/6.jpg">
Probably remembering skills she had when she was totally human, she puts your cock between her beautiful tits, squeezes them and starts to suck on it like a pro!
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Forest/Sheep/6.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
Only grabbing it with her tits, she deepthroats your cock avidly while gazing at your eyes as if you were her god. You're in heaven!
<<linkappend "Cumming">>
<<script>>
var soundEffect = new Audio('MagicWorldOfBimbo/Sounds/Sperm1.wav');
soundEffect.volume = State.variables.musicVolume / 100;
soundEffect.play();
<</script>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Sheep/7.jpg" id="ShakeHit">
You can't resist and erupt in her mouth. She doesn't hesitate and greedily feasts on your semen as if it was the best food she ever had!
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Sheep/7a.jpg" id="ShakeHit">
Her mouth still filled with sperm, she used her voice for the first time, to beg you to fuck her!
<<linkappend "Fuck her">>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Sheep/8.jpg">
You take her doggystyle and she enjoys it a lot, jumping on your big cock! Clearly she wants more.
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Sheep/8a.jpg">
Grabbing her perfect ass, you bang her pussy mercilessly, watching her open, welcoming asshole. The view is so hot that you don't last long...
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Sheep/9.jpg">
She moans with deep satisfaction as you ejaculate another huge load in her wet pussy, frustrated not to have even time to test her anus.
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Sheep/10.jpg">
It'll be for another time. Your balls are empty, and it was so good the were-ship lost her mind. You're not sure she'll recover it, the witch's spell is not perfect...
<</linkappend>>
<</linkappend>>
<</linkappend>>
[[Back to the forest|Enter the forest]]
<</if>>
<</replace>><<remove "#premierePhrase">><<remove ".cast-spell-lien">><<script>>
window.scrollTo(0, document.body.scrollHeight);
<</script>><</link>></span>
<span id="contenu"></span>
<span class="cast-spell-lien"></span>
<</if>>
<<if _randomEnemy == 2>>
<span id="premierePhrase">A strange bipedal Bunny appears ! Wait, she's wearing a corset??
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Bunny/0.jpg">
</span>
[[Continue to walk|FightForest1]]
<span class="cast-spell-lien"><<link "Cast the spell...">><<replace #contenu>>
<<script>>
var soundEffect = new Audio('MagicWorldOfBimbo/Sounds/Spell.wav');
soundEffect.volume = State.variables.musicVolume / 100;
soundEffect.play();
<</script>>
<<set _randomSpell = Math.floor(Math.random() * 99)>>
<<if _randomSpell >= 80>>
<<set $Mana -= 20>>
<span class="gradient-text">Cost 🧪: Mana - 20</span>
<span class="bounce"><span class="gradient-text"><H1>
The spell has failed. Would you like to try again?</H1></span></span>
[[Try again|FightForest1]]
[[Leave|Enter the forest]]
<</if>>
<<if _randomSpell < 80>>
<span class="gradient-text">Cost 🧪: Mana - 20</span>
<div class="purchase-container">
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Forest/Bunny/1.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<div class="purchase-overlay">
<div class="magic-effect-container">
<div class="magic-circle"></div>
<div class="magic-aura"></div>
<div class="magic-rays"></div>
<div class="magic-energy"></div>
</div>
</div>
</div>
The bunny gradually transforms into a human... Well, a human with long rabbit ears...
<<set $$Mana -= 20>>
"Ohh!"
<<set $CaptureForest += 1>>
<<run incrementQuestProgress("Transform 10 women for the witch.")>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Forest/Bunny/2.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
"The woman can't speak, obviously, but rubs her beautiful breasts as she gazes at you intensely."
<<speech "You">>"She wants something? How can I communicate with her. Maybe she's hungry? What does a rabbit eat?"<</speech >>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Bunny/3.png">
You are certain she wants to eat something. She smiles, you must have understood!
<<set $CaptureForest += 1>>
<<linkappend "Give her a carrot">>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Bunny/4.jpg">
As you retrieve a wild carrot, the rabbit-woman gets on all four and open her mouth, drooling like a starving beast. You were right!
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Bunny/5.png">
But she surprises you and stick the big carrot directly in her pussy, moaning in pleasure!
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Bunny/6.webp">
She's losing her mind masturbating with this big thing.
<<linkappend "Deeper!">>
<<script>>
var soundEffect = new Audio('MagicWorldOfBimbo/Sounds/Sperm1.wav');
soundEffect.volume = State.variables.musicVolume / 100;
soundEffect.play();
<</script>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Bunny/7.png" id="ShakeHit">
She cries in ecstasy as you help her to push it deeper! She rapidly has an orgasm but won't say any word. The witch's potion can't restore their memory...
<</linkappend>>
<</linkappend>>
[[Back to the forest|Enter the forest]]
<</if>>
<</replace>><<remove "#premierePhrase">><<remove ".cast-spell-lien">><<script>>
window.scrollTo(0, document.body.scrollHeight);
<</script>><</link>></span>
<span id="contenu"></span>
<span class="cast-spell-lien"></span>
<</if>>
<<if _randomEnemy == 3>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/rose.jpg" >
<<if getQuestProgress("Bring 20 roses to Amy.") >= 1>>
<<linkappend "Pick 5 roses">>
<<run incrementQuestProgress("Bring 20 roses to Amy.",5)>>
<<speech "You">>*I'll ask to massage her...*<</speech>>
<</linkappend>>
<</if>>
[[Continue to walk|FightForest1]]
<</if>>
<style>
.bounce {
display: inline-block;
animation: bounce 0.5s infinite;
}
@keyframes bounce {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-10px); }
}
/* Purchase container */
.purchase-container {
position: relative;
overflow: hidden;
margin-bottom: 10px;
}
.purchase-image {
animation: pulse 0.8s ease-in-out;
}
.purchase-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
@keyframes pulse {
0% { filter: brightness(1); }
50% { filter: brightness(1.8); }
100% { filter: brightness(1); }
}
/* Magic effects container */
.magic-effect-container {
position: absolute;
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
z-index: 10;
overflow: hidden;
}
/* Main magic circle */
.magic-circle {
position: absolute;
width: 10px;
height: 10px;
border-radius: 50%;
background-color: rgba(100, 200, 255, 0.1);
box-shadow: 0 0 15px 8px rgba(100, 200, 255, 0.4),
inset 0 0 15px 8px rgba(100, 200, 255, 0.4);
border: 3px solid rgba(150, 230, 255, 0.7);
transform: scale(0);
opacity: 0;
animation: circleExpand 2s forwards;
}
@keyframes circleExpand {
0% {
transform: scale(0) rotate(0deg);
opacity: 0;
}
20% {
opacity: 0.95;
}
70% {
transform: scale(20) rotate(180deg);
opacity: 0.8;
border-width: 3px;
}
100% {
transform: scale(30) rotate(360deg);
opacity: 0;
border-width: 1px;
}
}
/* Magic circle after element - FIXED POSITIONING */
.magic-circle::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 130%;
height: 130%;
border-radius: 50%;
border: 2px dashed rgba(200, 240, 255, 0.6);
transform: translate(-50%, -50%);
animation: rotateCircle 3s linear infinite;
}
@keyframes rotateCircle {
0% { transform: translate(-50%, -50%) rotate(0deg); }
100% { transform: translate(-50%, -50%) rotate(360deg); }
}
/* Magic rays */
.magic-rays {
position: absolute;
width: 200%;
height: 200%;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) scale(0.5) rotate(0deg);
background:
repeating-conic-gradient(
rgba(150,230,255,0) 0deg,
rgba(150,230,255,0) 18deg,
rgba(150,230,255,0.3) 20deg
);
border-radius: 50%;
opacity: 0;
animation: raysEffect 2.5s forwards;
animation-delay: 0.5s;
}
@keyframes raysEffect {
0% {
opacity: 0;
transform: translate(-50%, -50%) scale(0.5) rotate(0deg);
}
20% {
opacity: 0.7;
transform: translate(-50%, -50%) scale(0.7) rotate(30deg);
}
80% {
opacity: 0.4;
transform: translate(-50%, -50%) scale(1) rotate(70deg);
}
100% {
opacity: 0;
transform: translate(-50%, -50%) scale(1.2) rotate(90deg);
}
}
/* Magic aura */
.magic-aura {
position: absolute;
width: 100%;
height: 100%;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) scale(0.5);
border-radius: 50%;
background: radial-gradient(
ellipse at center,
rgba(100,200,255,0.4) 0%,
rgba(100,200,255,0.1) 50%,
rgba(100,200,255,0) 70%
);
opacity: 0;
filter: blur(5px);
animation: auraPulse 2s forwards;
animation-delay: 0.2s;
}
@keyframes auraPulse {
0% {
opacity: 0;
transform: translate(-50%, -50%) scale(0.5);
}
30% {
opacity: 0.8;
transform: translate(-50%, -50%) scale(1);
}
70% {
opacity: 0.6;
transform: translate(-50%, -50%) scale(1.5);
}
100% {
opacity: 0;
transform: translate(-50%, -50%) scale(2);
}
}
/* Blue glow effect */
.purchase-container::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(100,200,255,0.1);
animation: blueGlow 2.5s forwards;
}
@keyframes blueGlow {
0% {
backdrop-filter: blur(0px);
background: rgba(100,200,255,0);
}
30% {
backdrop-filter: blur(3px);
background: rgba(100,200,255,0.4);
}
70% {
backdrop-filter: blur(2px);
background: rgba(150,230,255,0.2);
}
100% {
backdrop-filter: blur(0px);
background: rgba(100,200,255,0);
}
}
.gradient-text {
background: linear-gradient(90deg, red, orange, yellow, green, orange, red, violet);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
display: block;
margin-left: 10ch;
}
.bounce {
display: inline-block;
animation: bounce 0.5s infinite;
}
@keyframes bounce {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-10px); }
}
</style><<set _randomImg = Math.floor(Math.random() * 11)>>
<<set _phrases to [
"Do you like watching me cook? How bizarre, am I that talented? Or is it because of some of my moves? I confess it's sometimes difficult, with my two fun bags in the way giggle!",
"Do you want to go for a walk? We both need to stretch... our legs, I think. And everyone loves watching me walking I don't know why giggle.",
"No no no, you will not taste until it is finished, you gourmand! You talked about the meal, right?",
"I'm a little hot, what about you? Make me think to put on something less warm.",
"Oh... I'm asleep on my feet I'm going to sleep here and now... mmmhh... What about you, you don't want to sleep? What do you have in mind right now? Nevermind, don't worry about me you can also use the bed...",
"Have I already shown you my dancing for the plants in the garden? Giggle all true men love it, what about ya?",
"...snore...",
"The more roses I receive from my suitors, the more I am in love, hahaha! That's simple!",
"HAHAHA! Yes, I'm bit high, I drank another glass of Volka Milk. I can't get enough of this drink and its special ingredient... You'll never guess what it is!",
"do you like my nightie? Sorry if it's a bit audacious, but I've only that.",
"I'm going to sleep on the sofa, you can use my bed. Sorry I'm too tired to change the sheets I hope it doesn't bother you. See you later...",
"Why are you watching me sleep? I'm not an extraordinary person!"
]>>
<<print '<video width="100%" height="30%" playsinline autoplay loop muted>' +
'<source src="MagicWorldOfBimbo/Village/AmyHouse/Find/' + _randomImg + '.mp4" type="video/mp4">' +
'Your browser does not support the video tag.</video>'>>
<<typeNEW 30ms>>
<<speech "Amy">><<print _phrases[_randomImg]>><</speech>>
<<include Quest-Rose>>
[[Walking with Amy]]
[[Amy's House]]
[[Back to the City|Village]]
<</typeNEW>><video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Intro/A5.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<typeNEW 30ms>>\
<<speech "Elena">>Follow me, I've discovered these beautiful, deep red berries growing wild. We need to regain some strength, and they look edible and tasty.
<</speech>>
[[Eat berries]]
<</typeNEW>><video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Date/Park/1.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Amy">>As the village's herbalist, my duty is to take care of the flowers and look after the plant supplies. Yes I know, I don't look like an herbalist giggle, but that's my work and I love it! Nobody else could go to the forest for these roses... Unless...<</speech>>
<<include Quest-Rose>>
<div id="choices">
<<link "I want to fuck you...💀" >>
<<replace "#choices" t8n>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Date/Park/E1.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Amy">>Are you serious? I am very disappointed in you. All men are the same. Always thinking about degrading things. I don't know what I'm doing here. <</speech>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Date/Park/Leave.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Amy">>Perv! I'm leaving... And don't stare at my butt like that!
<</speech>>
[[Return to the village|Village]]
<</replace>>
<</link>>
<<linkappend2 "Can you show me how you work?" t8n>>
<<replace "#choices" t8n>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Date/Park/B1.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Amy">>This might sound odd, but you've got to show plants that you love them. For this, you have to dance beside them. I've discovered it works better when I get on my knees and shake my booty just like that, see? Wanna help and dance with me?<</speech>>
<<linkappend2 "Do you show the plants in the forest you love them too?" t8n>>
<<speech "Amy">>Yes, that's also why I went, but it's too dangerous. I hope you'll be able to bring me back there, and I'll dance for them just like that.<</speech>>
<</linkappend2>>
<<linkappend2 "I don't like dancing..." t8n>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Date/Park/B2.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Amy">>Oh you don't like when I shake my butt? Really sorry sir, it's true sometimes people think this dance is vulgar. But... if I take off my top, will you dance with me?<</speech>>
<<linkappend2 "We have a deal!" t8n>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Date/Park/Topless1.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<script>>
window.scrollTo(0, document.body.scrollHeight);
<</script>>
<<speech "Amy">>You're amusing. Enjoy the view then, I know the plants love watching my big round breasts as they bounce just like that. Do you like my titties, aren't they too small for you? Oh, are you getting a hard-on?<</speech>>
<<if $CheatCode == 1 or $AmyRelation > 1>>[[💦Blowjob Amy |Blowjob Amy]]
<<else>>
<div class="disabled-button">Blowjob Amy. (Need Amy: ❤️❤️🖤 or <a href="https://doctorbimbo.itch.io/magic-world-of-bimbo" target="blank">Support Us</a>)</div>
<<endif>>
[[Back to the City|Village]]
<</linkappend2>>
<</linkappend2>>
<</replace>>
<</linkappend2>>
<<script>>
window.scrollTo(0, document.body.scrollHeight);
<</script>>
</div><<set $AmyDrink += 1>>
<<typeNEW 30ms>>
<<set _randomImg = Math.floor(Math.random() * 11)>>
<<set _phrases to [
"I love dancing in this bar. It feels just like home to me. All the customers love see me moving you know? I'm such a lucky girl.",
"And you, do you like milk? And how do you prefer to drink it? I can't do without it, I love it in any form.",
"A witch lives in the forest; she might be able to help you remember who you are. But don't let her manipulate you, she loves captivate men with her bouncing big udders. When you're in front of her, think about mine!",
"Please kill the wolf and I will be indebted to you... I'll do whatever you want.",
"I've been coming to this bar for years! The owner immediately liked me, and always offers me free drinks, I don't know why giggle!",
"I look serene, but I'm still afraid. I don't like the wolf, in the forest... I fear it's a werewolf. Will you protect me?.",
"I love my sisters, and you?❤️If you're kind, I'll tell them you're a good boy. But I'm hotter than them, don't you think so?",
"I promise, if you kill the wolf, we will go for a walk in the forest. What will happen then? Oh I can imagine so many exciting things... hmmmm.",
"Milk has many benefits for the skin. It makes my tits softer, and I suspect they grow bigger! In reality I love oiling them with it as much as drinking it.",
"I love how they infuse the milk with vanilla before mixing the drink. Or is it vanillla? Anyway I love the taste, it's so yummy.",
"Mines offer work to earn money quickly.",
"I'm wondering when the forest will be secure. The beasts are so strange there, some magic may be at work."
]>>
<<set _randomVid = Math.floor(Math.random() * 10) + 1>>
<<print '<video width="100%" height="30%" playsinline autoplay loop muted>' +
'<source src="MagicWorldOfBimbo/Village/Milk/Videos/' + _randomVid + '.mp4" type="video/mp4">' +
'Your browser does not support the video tag.</video>'>>
<<speech "Amy">><<print _phrases[_randomImg]>><</speech>>
<<if $AmyDrink > 1>>
<<set _randomImg2 = Math.floor(Math.random() * 15)>>
<<set _phrases2 to [
"All this white fluid filling my stomach makes me feel alive",
"Drink with me, this milk can make your semen more potent and taste stronger... Why am I saying this!?😅",
"Are you looking at my breasts? Hey don't be ashamed, I know how big and sexy they are, it must be so difficult for you...",
"Have you heard about the King's parties? I was told they're super hot. The king has... very specific tastes",
"I don't know what they put in the milk, but sometimes I feel my breasts getting bigger. Don't say that to Elena!",
"Is it me or Elena who has the biggest breasts? Be honest, it's me, isn't it? It's thanks to my massage oil!",
"Be honest. Do you find me pretty? Not too vulgar?",
"I'm always hot here... I always wish I could remove my top... Just kidding!",
"I always want to dance when I'm here, to feel the gaze of the customers on my body...",
"I shouldn't drink that much, I know how it always ends up when I'm drunk...",
"Oops, I forgot my panties, don't look.",
"Okay, I admit it, I didn't wear any panties, do you like that?",
"Shall we do something else?",
"Are you getting me another round?"
]>>
<<print '<img width="100%" height="30%" src="MagicWorldOfBimbo/Village/Milk/' + _randomImg + '.jpg">'>>
<<speech "Amy">><<print _phrases2[_randomImg2]>><</speech>>
<</if>>
<<if $AmyDrink > 2>>
<<speech "Amy">>My god, I think I drank too much...<</speech>>
<<set _randomImgTits = Math.floor(Math.random() * 6)>>
<<linkappend2 "show me your breasts to prove you haven't drunk too much">>
<<print '<video width="100%" height="30%" playsinline autoplay loop muted>' +
'<source src="MagicWorldOfBimbo/Village/Milk/Videos/Showtits/' + _randomImgTits + '.mp4" type="video/mp4">' +
'Your browser does not support the video tag.</video>'>>
<<speech "Amy">>Too easy, ha, ha here they are! My huge, round, sexy tits!!!
Ooops what am I doing, you got me hahaha you naughty boy! A chance it's not the first time I put them on display in this place giggle.<</speech>>
<</linkappend2>>
<</if>>
[[Drink again|Glass of Milk]]
[[Walking with Amy]]
[[Amy's House]]
<</typeNEW>>📜<span class="gradient-text">The true game starts now.
💖- Deepen your connection with characters to reveal options.
⚔ - Become the village's savior.
👑 - Piece together the fragments of your identity...</span>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/3.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<typeNEW 30ms>>\
<<speech "Amy">>Great, follow me, it's just around the corner up there.
Why are you staying behind? Are you that exhausted by the escape?
- Nevermind. The village has a shop, a tavern, and readily available work if you want earn money. You need money you know?
<</speech>>
<<linkappend2 "The view is... I mean, this city seems really nice.">>\
<<speech "Amy">>Yes, this is a beautiful city, teeming with cute and kind women, but we are often attacked by creatures.<</speech>>
<</linkappend2>>
[[Go to the Tavern with Amy|TavernFirstDrink]]
<</typeNEW>>
<style>
.gradient-text {
background: linear-gradient(90deg, red, orange, yellow, green, orange, red, violet);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
</style><video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Guild/0.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Character">>Welcome! Thanks for coming to help the guild. If you're looking for some well-paying small jobs, I'd suggest you go see the soldier or the farmer.
<</speech>>
[[Farmer Girl]]
[[Warrior Girl]]
[[Back to the City|Village]]
Next Mission :
Sewer
Wood
Stone<<include "Music">>
-----------------------------------
<<speech "Character">>I specialize in armor, what do you need?
<</speech>>
-------------------------------
<audio src="medieval-story-by-frank-schroeter-from-filmmusic-io.mp3" controls autoplay>
Votre navigateur ne supporte pas l'audio.
</audio>
---------------------------------
<<shakescreen "300ms">>
<<shake 400ms>>This text will shake for 2 seconds.<</shake>>
<<shake 1s>><img width="100%" height="30%" src="MagicWorldOfBimbo/Amy.jpg" class="damage-effect">.<</shake>>
----------------------------------
Bounce du text :
<span class="bounce">Ouch !!</span>
en bas :
<style>
.bounce {
display: inline-block;
animation: bounce 0.5s infinite;
}
@keyframes bounce {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-10px); }
}
</style>
-------------------------------------
Quest :
<<set $activeQuests.push({
name: "Trouver l'épée magique",
progress: 0,
total: 1,
completed: false
})>>
et
<<set $activeQuests[0].progress++>>
<<if $activeQuests[0].progress >= $activeQuests[0].total>>
<<set $activeQuests[0].completed = true>>
<</if>><<set $Life += 1>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Intro/2.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<typeNEW 30ms>>\
<<speech "Elena">>With my sisters, we were looking for rare herbs but we got lost in the forest...<</speech>>
<<linkappend2 "Who are your sisters?" t8n>>\
<<speech "Elena">>There's my cute little sister Amy who healed you, with her bright eyes and contagious laughter, and my warrior sister Sym, a bit crazy but very strong.<</speech>>
<</linkappend2>>\
[[Talk to Elena]][[Talk to Amy]][[Talk to Sym]]
<</typeNEW>>
<<run addQuest("Find the village", 1)>>
<<script>>
if (window.audio) {
window.audio.pause();
window.audio.currentTime = 0;
delete window.audio;
}
window.audio = new Audio('MagicWorldOfBimbo/Music/1Forest.mp3');
window.audio.loop = true;
window.audio.volume = 0.3; // Adjust volume (0.0 to 1.0)
window.audio.play().catch(function(error) {
console.log("Audio playback failed:", error);
});
<</script>><video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Intro/AmyS3A.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<typeNEW 30ms>>\
<<speech "Amy">>Oh no! It's the strange wolf, run everyone! Faster... girls, run!
<</speech>>
[[Running in their wake?]]
<</typeNEW>><<script>>
var soundEffect = new Audio('MagicWorldOfBimbo/Sounds/Spell.wav');
soundEffect.volume = $("#volumeSlider").length > 0 ?
($("#volumeSlider").val() / 100) :
State.variables.musicVolume / 100;
soundEffect.play();
<</script>>
<<shakescreen "1s">>
<span class="gradient-text">You are casting a magic spell. GuNakeeeed !!!!</span>
<video width="100%" height="30%" playsinline autoplay loop muted >
<source src="MagicWorldOfBimbo/Intro/Sym/1.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Sym">>My clothes have disappeared! ! Pervvv !!!<h2>Uhhaaaaahhhh...</h2><</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Sym/2b.jpg" class="damage-effect">
<<speech "Sym">>You're not getting away with this, let's fight!!<</speech>>
<span class="attack-effect">Hit!</span>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Sym/2c.jpg" id="ShakeHit">
<<speech "Sym">>How did you do that little troll!<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Sym/3a.jpg">
<<speech "Sym">>Is that not enough for you? Then eat my foot!!<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Sym/3b.jpg" id="ShakeHit">
<<speech "Sym">>You're not so smug now! Are you falling down?<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Sym/3c.jpg" class="damage-effect">
<<speech "Sym">>Sleep well!<</speech>>
[[Restart|NewStart]]
<style>
.gradient-text {
background: linear-gradient(90deg, red, orange, yellow, green, orange, red, violet);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
display: block;
margin-left: 10ch;
}
.attack-effect {
display: inline-block;
font-weight: bold;
color: red;
animation: attack 0.5s infinite;
}
@keyframes attack {
0% {
transform: translateX(0) translateY(0);
color: red;
text-shadow: 0 0 5px rgba(255, 0, 0, 0.8);
}
25% {
transform: translateX(-5px) translateY(-5px);
color: darkred;
text-shadow: 0 0 10px rgba(255, 0, 0, 0.8);
}
50% {
transform: translateX(5px) translateY(5px);
color: orange;
text-shadow: 0 0 15px rgba(255, 165, 0, 0.8);
}
75% {
transform: translateX(-5px) translateY(-5px);
color: yellow;
text-shadow: 0 0 20px rgba(255, 255, 0, 0.8);
}
100% {
transform: translateX(0) translateY(0);
color: red;
text-shadow: 0 0 5px rgba(255, 0, 0, 0.8);
}
}
</style><<speech "Witch">>Oh, that's great, come follow me and listen. Where did I put it? Oh I know, it's hidden in my cleavage ha,ha. With this scroll, you'll be able to learn your first spell!
<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Witch/Scroll/1.jpg">
<<speech "Witch">>Focus on my mouth please. It's here. OK, it's very simple, you have to repeat 'BiBialu Abra' twice.
<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Witch/Scroll/2.png">
<<speech "Witch">>But be careful! You have to raise 2 fingers towards the sky. Always better with 2 fingers...
<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Witch/Scroll/3a.webp">
<<speech "Witch">>Once the blue light sparks on your fingers, aim at the target, and it will transform... well, if I'm correct. Fingers crossed. In any case, you'll suck their bestiality out and I'll be able to use it to... nevermind.
<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Witch/Scroll/4.png">
<<speech "Witch">>I'll wait for your success. Don't let me and the villagers down, think about me.
<</speech>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Forest/Witch/Scroll/0.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<set $Mana += 20>>
<<speech "Witch">>Here, here's the scroll, good luck to you! Rescue more than 10 women and then return to me.<</speech>>
<<run addQuest("Transform 10 women for the witch.", 10)>>
[[📜Take the parchment and leave|Enter the forest]]<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Intro/AmyS1.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<typeNEW 30ms>>\
<<speech "Amy">>But sorry, I can't get a massage right now.
It's dangerous here, but I also think I put on too much of that rose oil on my chest before I went out. It looks a bit swollen... And it's too sensitive. I bet you understand.
<</speech>>
<<linkappend2 "Where we can find roses that make chests swell???" t8n>>\
<<speech "Amy">>In the 'deep forest'... In fact, it's why we are lost, I was running low on rose and I thought I could find this sector alone...<</speech>>\
<</linkappend2>>\
[[And how do you give yourself a massage?]]
<</typeNEW>><img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/EndForest.png" class="damage-effect">
<span class="attack-effect">
"The wolf is attacking you!"
</span>
[[Dream]]
<style>
.damage-effect {
animation: colorChange 2s infinite;
}
@keyframes colorChange {
0% { filter: sepia(50%) hue-rotate(-50deg) saturate(200%); } /* Rouge */
33% { filter: sepia(50%) hue-rotate(60deg) saturate(200%); } /* Vert */
66% { filter: sepia(50%) hue-rotate(180deg) saturate(200%); } /* Bleu */
100% { filter: sepia(50%) hue-rotate(-50deg) saturate(200%); } /* Retour au rouge */
}
.attack-effect {
display: inline-block;
font-weight: bold;
color: red;
animation: attack 0.5s infinite;
}
@keyframes attack {
0% {
transform: translateX(0) translateY(0);
color: red;
text-shadow: 0 0 5px rgba(255, 0, 0, 0.8);
}
25% {
transform: translateX(-5px) translateY(-5px);
color: darkred;
text-shadow: 0 0 10px rgba(255, 0, 0, 0.8);
}
50% {
transform: translateX(5px) translateY(5px);
color: orange;
text-shadow: 0 0 15px rgba(255, 165, 0, 0.8);
}
75% {
transform: translateX(-5px) translateY(-5px);
color: yellow;
text-shadow: 0 0 20px rgba(255, 255, 0, 0.8);
}
100% {
transform: translateX(0) translateY(0);
color: red;
text-shadow: 0 0 5px rgba(255, 0, 0, 0.8);
}
}
</style><img width="100%" height="30%" src="MagicWorldOfBimbo/Village/1.jpg">
<<typeNEW 30ms>>\After 4 hours running, you escaped the wolf and found your way across the forest. It is really an eerie place, with strange and menacing animals. At long last, you arrive at a village. A girl is coming your way. She is...
[[Wait for the girl]]
<</typeNEW>>
<<set $activeQuests[0].progress++>>
<<if $activeQuests[0].progress >= $activeQuests[0].total>>
<<set $activeQuests[0].completed = true>>
<</if>><div id="video-container" style="width: 100%; height: 30%;">
<video id="video-player" width="100%" height="100%" playsinline autoplay muted>
<source src="MagicWorldOfBimbo/Forest/Witch/Earn1.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
</div>
<script>
// Liste des vidéos à jouer en séquence
const videoSources = [
"MagicWorldOfBimbo/Forest/Witch/0a.mp4",
"MagicWorldOfBimbo/Forest/Witch/Earn1.mp4",
"MagicWorldOfBimbo/Forest/Witch/yes.mp4"
// Ajoutez d'autres vidéos selon vos besoins
];
let currentVideoIndex = 0;
const videoPlayer = document.getElementById("video-player");
// Fonction pour charger la vidéo suivante
function loadNextVideo() {
currentVideoIndex = (currentVideoIndex + 1) % videoSources.length;
videoPlayer.src = videoSources[currentVideoIndex];
videoPlayer.play().catch(error => {
console.log("Erreur de lecture vidéo:", error);
});
}
// Passer à la vidéo suivante lorsque la vidéo actuelle se termine
videoPlayer.addEventListener("ended", loadNextVideo);
// Gérer les erreurs de lecture
videoPlayer.addEventListener("error", () => {
console.log("Erreur de lecture pour la vidéo:", videoSources[currentVideoIndex]);
loadNextVideo(); // Passer à la suivante en cas d'erreur
});
</script>// Code pour le passage qui gère la musique
<<script>>
if (!window.audio) {
window.audio = new Audio('medieval-story-by-frank-schroeter-from-filmmusic-io.mp3');
window.audio.loop = true;
window.audio.volume = 0.3;
}
// Créer un objet pour gérer l'état de la musique
if (!window.musicState) {
window.musicState = {
volume: 0.3,
isPlaying: false
};
}
// Ajouter les contrôles au menu de gauche
$(document).ready(function() {
let controls = `
<div id="music-controls" style="padding: 10px;">
<h3>Contrôles Musique</h3>
<button id="toggleMusic" style="margin: 5px;">▶️ Play/Pause</button><br>
<input type="range" id="volumeSlider" min="0" max="100" value="30" style="width: 100%;">
<span id="volumeValue">30%</span>
</div>
`;
// Ajouter les contrôles au menu de gauche (UI-bar)
$("#ui-bar").append(controls);
// Gérer le bouton play/pause
$("#toggleMusic").click(function() {
if (window.audio.paused) {
window.audio.play();
window.musicState.isPlaying = true;
} else {
window.audio.pause();
window.musicState.isPlaying = false;
}
});
// Gérer le contrôle du volume
$("#volumeSlider").on('input', function() {
let volume = $(this).val() / 100;
window.audio.volume = volume;
window.musicState.volume = volume;
$("#volumeValue").text($(this).val() + "%");
});
});
<</script>><<typeNEW 35ms>>\
You wake up in a forest, the sun's rays filtering through the leaves.
Suddenly, a beautiful elf emerges from the bushes.
<</typeNEW>>
<div class="video-container">\
<video width="100%" height="30%" playsinline autoplay loop muted >
<source src="MagicWorldOfBimbo/Intro/1.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<div class="fade-overlay"></div>\
</div>\
<<typeNEW 30ms>>\
<<speech "Elena">>Hey mister, how are you? Are you awake? I'm Elena... We need help...
<</speech>>
<<linkappend2 "...Where am I?">>\
<video class="video" autoplay muted playsinline loop>\
<source src="MagicWorldOfBimbo/Intro/AmyS4Dream.mp4" type="video/mp4">\
</video>\
<<speech "Amy">>We found you in these woods, you were unconscious. I took care of you and used my skills to heal you. Now you are awake, please, help us. We are lost!<</speech>>\
<</linkappend2>>\
[[Help her]]
<</typeNEW>>
<style>
.video-container {
position: relative;
width: 100%;
height: 100%;
}
.video {
width: 100%;
height: 100%;
}
.fade-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
animation: fadeToBlack 4s infinite;
pointer-events: none;
z-index: 1;
}
@keyframes fadeToBlack {
0% { background-color: rgba(0, 0, 0, 1); }
25% { background-color: rgba(0, 0, 0, 0.1); }
50% { background-color: rgba(0, 0, 0, 0.8); }
75% { background-color: rgba(0, 0, 0, 0.2); }
100% { background-color: rgba(0, 0, 0, 1); }
}
</style> <<script>>
$(document).ready(function() {
let slider = document.getElementById("musicVolumeSlider");
if (slider) {
/* Force la position visuelle du slider à la valeur actuelle */
slider.value = SugarCube.State.variables.musicVolume;
/* Met à jour le texte affiché */
$('#musicVolumeValue').text(slider.value);
}
});
<</script>>
<h2><u>Music Volumes</u></h2>
<div style="margin-bottom: 20px;">
<label for="musicVolumeSlider">Musique: <span id="musicVolumeValue"><<print $musicVolume>></span>%</label>
<input type="range" id="musicVolumeSlider"
min="0" max="100" value="<<print $musicVolume>>"
style="width: 100%; border: none; outline: none; background: transparent;"
oninput="
/* Vérifier si l'objet audio existe avant de modifier son volume */
if (window.audio) {
window.audio.volume = this.value/100;
}
$('#musicVolumeValue').text(this.value);
SugarCube.State.variables.musicVolume = Number(this.value);
">
</div>
<hr>
<h2><u>Typewriter Settings</u></h2>
(slow text writing)
<div class="option-line">
<label for="toggleTypewriterOption">✍️ Typing :</label>
<button id="toggleTypewriterOption" style="padding: 5px 10px;"
onclick="(function(){
setup.typewriterEnabled = !setup.typewriterEnabled;
this.textContent = setup.typewriterEnabled ? 'ON' : 'OFF';
return false;
})">
<<print setup.typewriterEnabled ? 'ON' : 'OFF'>>
</button>
</div>
<<script>>
$(document).on('click', '#toggleTypewriterOption', function() {
setup.typewriterEnabled = !setup.typewriterEnabled;
$(this).text(`${setup.typewriterEnabled ? 'ON' : 'OFF'}`);
});
<</script>>
<hr>
<h2><u>Pics Avatar</u></h2>
[[Avatar]]
<hr>
<h2><u>Languages :</u></h2>
<img src="MagicWorldOfBimbo/Flag.png" alt="Patreon" style="width: 100%; max-width: 500px; transition: transform 0.3s;">
<a href="https://adn700.com/Games/MagicTrans.php" target="_blank">
Translate the game here
</a><div id="test">\
After the <<link "first">>
<<replace "#test">>After the <<link "but I didn't do anything to you">>xxx
<<replace "#test">>After the <<link "third">>
<<replace "#test">>After the phase,
after passionate nights and intimate days1,<</replace>>
<</link>> phase, after passionate nights and intimate days2,<</replace>>
<</link>> phase,
after passionate nights and intimate days3,<</replace>>
<</link>> phase,<br> after passionate nights and intimate days0,
\</div>
<div id="choices">\
<<link "Tell the truth.">>
<<replace "#choices">>"Yavin 4," you murmur.<</replace>>
<</link>>
<<link "Lie.">>
<<replace "#choices">>"Dantooine," you murmur. "They're on Dantooine."<</replace>>
<</link>>
\</div><<if $gold >= 5>>\
<span style="color: #FFD700; display: flex; align-items: center; gap: 5px;">You paid 5 🪙</span>\
<<set $gold -= 5>>\
<<set $Mana = $ManaMax>>\
<<run $("#mana-progress").val($Mana)>>
<<script>>
var soundEffect = new Audio('MagicWorldOfBimbo/Sounds/01-ShopBuy.ogg');
soundEffect.volume = $("#volumeSlider").val() / 100 || 0.3;
soundEffect.play();
<</script>>
<div class="purchase-container">
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Forest/Witch/yes2.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<div class="purchase-overlay">\
<div class="purchase-effect">POTION CONSUMED!</div>\
</div>\
</div>\
<<speech "Witch">>Thank you for your purchase. I love kind customers like you with big... purses.<</speech>>
<<else>>\
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Forest/Witch/no2.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Witch">><span class="bounce">Sorry, but you need at least 5 gold pieces</span>. Too bad, I'll drink it for you... Come back when you have enough money.<</speech>>
<</if>>\
[[Return to he Forest|Enter the forest]]
<style>
.bounce {
display: inline-block;
animation: bounce 0.5s infinite;
}
@keyframes bounce {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-10px); }
}
/* Purchase animation styles */
.purchase-container {
position: relative;
overflow: hidden;
margin-bottom: 10px;
}
.purchase-image {
animation: pulse 1s ease-in-out;
}
.purchase-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
pointer-events: none;
}
.purchase-effect {
color: #FFD700;
font-size: 2em;
font-weight: bold;
text-shadow: 0 0 10px #FFD700, 0 0 20px #FFD700;
background-color: rgba(0, 0, 0, 0.5);
padding: 10px 20px;
border-radius: 10px;
animation: fadeInOut 2s ease-in-out forwards;
transform: scale(0);
}
@keyframes pulse {
0% { filter: brightness(1); }
50% { filter: brightness(1.5); }
100% { filter: brightness(1); }
}
@keyframes fadeInOut {
0% { opacity: 0; transform: scale(0) rotate(-10deg); }
20% { opacity: 1; transform: scale(1.2) rotate(5deg); }
80% { opacity: 1; transform: scale(1) rotate(0); }
100% { opacity: 0; transform: scale(0.8); }
}
</style>// Ajouter une nouvelle quête
<<run addQuest("Sauver le village", "Éliminer les bandits qui menacent le village", 5, "principale")>>
// Mettre à jour la progression d'une quête
<<run updateQuestProgress("Sauver le village", 3)>>
// Incrémenter la progression d'une quête
<<run incrementQuestProgress("Sauver le village")>>
// Vérifier la progression d'une quête
<<if getQuestProgress("Sauver le village") >= 3>>
Le chef des bandits commence à s'inquiéter...
<</if>>
// Vérifier si une quête est complétée
<<if isQuestCompleted("Sauver le village")>>
Les villageois vous acclament en héros !
<</if>>
// Marquer une quête comme complétée
<<run completeQuest("Sauver le village")>>
// Delete
<<run removeQuest("Bring 20 roses to Amy.")>>
Vous avez <<print questProgress("Bring 20 roses to Amy.")>> roses sur 20 pour Amy.
<span class="gradient-text">*** End of this Update ***</span>
Thank you for playing my little demo! I hope you had as much fun playing it as I had making it.
If you enjoyed it and would like to see more, please leave a comment below / Like. Your feedback is greatly appreciated!
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Relax/1.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Amy">>I will miss you very much.<</speech>>\
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Relax/2.mp4" type="video/mp4">
<source src="MagicWorldOfBimbo/Village/Relax/3.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Amy">>Look at my breasts one last time.❤️<</speech>>\
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Relax/3.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Amy">>Promis, I'll get a massage next time?<</speech>>\
[[Restart|NewStart]]
[[BONUS]]
<style>
.gradient-text {
background: linear-gradient(90deg, red, orange, yellow, green, orange, red, violet);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
</style><video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Intro/AmyS3B.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<typeNEW 30ms>>\
<<speech "Amy">>Don't follow me, you idiot, run somewhere else!!
<</speech>>
[[Move eastwards]]
[[Move north]]
<</typeNEW>>Jump to the scene :
[[Dream of anal sex reward!]]
<img width="100%" height="30%" src="MagicWorldOfBimbo/Intro/Bl-Elena/Anal/1.jpg">
[[Blowjob Amy]]
<img width="100%" height="30%" src="MagicWorldOfBimbo/Village/Date/Park/BJ/0.jpg">
<<set $CheatCode = 1>>\
[[💦Rose Massage]]
<img width="100%" height="30%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/01.jpg">
<<set $CheatCode = 1>>\
[[💦Tits-Semen]]
<video width="100%" height="30%" playsinline autoplay loop muted>\
<source src="MagicWorldOfBimbo/Forest/Witch/TitsJob/1.mp4" type="video/mp4">
</video>
[[Sex after transform animals|FightForest1]]
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/level1/4.jpg">
<<set _randomImg = Math.floor(Math.random() * 2)>>
<<print '<video width="100%" height="30%" playsinline autoplay loop muted>' +
'<source src="MagicWorldOfBimbo/Village/Shop/' + _randomImg + '.mp4" type="video/mp4" playbackrate="3.1">' +
'Your browser does not support the video tag.</video>'>>
<<typeNEW 40ms>>\
<<speech "Seller">>Hello sir! I specialize in armor, weapon, tools, what do you need?
<</speech>>
<<if $miningpickaxe == 0>>\
[[Bronze mining pickaxe (💰5po)|miningpickaxe]]
<</if>>\
<<if $Armor == 0>>\
[[Armor level 1 (Forest) (💰5po)|Armor1]]
<</if>>\
<<if $Weapon == 0>>\
[[Weapon level 1 (Deep-Forest) (💰10po)|Weapon1]]
<</if>>\
[[Back to the City|Village]]
<</typeNEW>>"Dreaming..." <<timed 1s transition>> "Zzzzz..." <<next>>
<<set $Life to $LifeMax>>
<<run $("#life-progress").val($Life)>>
<<set _randomImg = Math.floor(Math.random() * 5)>>
<<set _phrases to [
"Oh you're awake! You slept well? Sorry I couldn't help watching you will you were dreaming. You look in good shape, full of... vitality. Shall we go for a walk?",
"Do you want a hug to wake you up properly?",
"I've planned a lot of different things for today: shopping, taking care of my flowers, and maybe a walk with you?",
"I thought of you last night. What did you dream about?",
"How about we start the day with a little massage?"
]>>
<<speech "Amy">><<print _phrases[_randomImg]>><</speech>>
<<print '<video width="100%" height="30%" playsinline autoplay loop muted>' +
'<source src="MagicWorldOfBimbo/Village/AmyHouse/Sleep/' + _randomImg + '.mp4" type="video/mp4">' +
'Your browser does not support the video tag.</video>'>>
<<next>>
[[Walking with Amy]]
[[Back to the City|Village]]
<</timed>><img width="100%" height="20%" src="MagicWorldOfBimbo/PresentationF95.jpg"><!-- Tableau des quêtes -->
<div id="quest-panel">
<h3>Quêtes</h3>
<div class="quest-list">
<<if $activeQuests && $activeQuests.length > 0>>
<<for _i to 0; _i < $activeQuests.length; _i++>>
<div class="quest-item">
<div class="quest-icon">📜</div>
<div class="quest-info">
<div class="quest-name"><<print $activeQuests[_i].name>></div>
<div class="quest-progress"><<print $activeQuests[_i].progress>>/<<print $activeQuests[_i].total>></div>
</div>
<div class="quest-status <<print $activeQuests[_i].completed ? 'completed' : 'in-progress'>>">
<<print $activeQuests[_i].completed ? "✓" : "">>
</div>
</div>
<</for>>
<<else>>
<div class="quest-item empty">
<div class="quest-icon">📜</div>
<div class="quest-name">No active quest</div>
</div>
<</if>>
</div>
</div>
<!-- Tableau des stats -->
<div id="status-panel">
<h3>Stats</h3>
<!-- Barre de vie -->
<div class="stat-container">
<div class="stat-icon health-icon"></div>
<div class="stat-bar-container">
<progress id="life-progress" @value="$Life" max="100" class="life-bar"></progress>
</div>
</div>
<!-- Barre de mana -->
<div class="stat-container">
<div class="stat-icon mana-icon"></div>
<div class="stat-bar-container">
<progress id="mana-progress" @value="$Mana" max="100" class="mana-bar"></progress>
<<print Math.floor($Mana)>>/<<print Math.floor($ManaMax)>>
</div>
</div>
<!-- Or (Gold) -->
<div class="stat-container">
<div class="stat-value gold-value">💰<<print $gold>></div>
</div>
<style>
/* Style pour l'élément progress (barre de progression) */
progress {
appearance: none;
-webkit-appearance: none;
width: 100%;
height: 16px;
border: none;
border-radius: 3px;
margin-bottom: 6px;
overflow: hidden;
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3);
}
/* Style de la barre de progression pour différents navigateurs */
progress::-webkit-progress-bar {
background-color: rgba(0, 0, 0, 0.3);
border-radius: 3px;
}
/* Style spécifique pour la barre de vie */
#life-progress::-webkit-progress-value {
background: linear-gradient(to bottom, #e74c3c, #c0392b);
border-radius: 0;
transition: width 0.3s ease-in-out;
}
#life-progress::-moz-progress-bar {
background: linear-gradient(to bottom, #e74c3c, #c0392b);
border-radius: 0;
transition: width 0.3s ease-in-out;
}
/* Style spécifique pour la barre de mana */
#mana-progress::-webkit-progress-value {
background: linear-gradient(to bottom, #3498db, #2980b9);
border-radius: 0;
transition: width 0.3s ease-in-out;
}
#mana-progress::-moz-progress-bar {
background: linear-gradient(to bottom, #3498db, #2980b9);
border-radius: 0;
transition: width 0.3s ease-in-out;
}
/* Nouveaux styles pour le conteneur et le texte */
.bar-container {
position: relative;
margin-bottom: 10px;
}
.bar-text {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 12px;
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.7);
pointer-events: none; /* Pour que le texte n'interfère pas avec les clics */
}
</style>
<style>
@import url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css');
/* Styles communs pour les deux panneaux */
#status-panel, #quest-panel {
background: linear-gradient(to bottom, #2c3e50, #1a2530);
border: 1px solid #34495e;
border-radius: 6px;
padding: 10px;
color: #ecf0f1;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
max-width: 250px;
}
#quest-panel {
margin-bottom: 8px;
}
#status-panel h3, #quest-panel h3 {
margin-top: 0;
margin-bottom: 6px;
border-bottom: 1px solid #34495e;
padding-bottom: 4px;
font-size: 1em;
display: flex;
align-items: center;
}
#status-panel h3 {
color: #3498db;
}
#quest-panel h3 {
color: #f39c12;
}
.icon-character:before {
font-family: 'FontAwesome';
margin-left: 5px;
}
/* Styles pour les statistiques */
.stat-container {
display: flex;
align-items: center;
margin-bottom: 4px;
}
.stat-icon {
width: 20px;
text-align: center;
margin-right: 5px;
font-family: 'FontAwesome';
}
.health-icon { color: #e74c3c; }
.mana-icon { color: #3498db; }
.armor-icon { color: #95a5a6; }
.gold-icon { color: #f1c40f; }
.gold-value {
color: #f1c40f !important;
}
.stat-bar-container {
flex-grow: 1;
height: 16px;
border-radius: 3px;
overflow: hidden;
}
.stat-bar {
height: 100%;
color: white;
text-align: center;
font-size: 0.7em;
line-height: 16px;
text-shadow: 0 1px 1px rgba(0, 0, 0, 0.7);
transition: width 0.3s ease-in-out;
display: flex;
align-items: center;
justify-content: center;
}
#health-bar {
background: linear-gradient(to bottom, #e74c3c, #c0392b);
}
#mana-bar {
background: linear-gradient(to bottom, #3498db, #2980b9);
}
.stat-value {
min-width: 25px;
text-align: right;
font-weight: bold;
color: #95a5a6;
}
/* Styles pour les quêtes */
.quest-list {
display: flex;
flex-direction: column;
gap: 4px;
}
.quest-item {
display: flex;
align-items: center;
padding: 4px 6px;
background: rgba(52, 73, 94, 0.5);
border-radius: 3px;
border-left: 3px solid #f39c12;
}
.quest-item.empty {
opacity: 0.5;
border-left-color: #7f8c8d;
}
.quest-icon {
width: 20px;
text-align: center;
margin-right: 6px;
}
.quest-info {
flex-grow: 1;
}
.quest-name {
font-size: 0.8em;
font-weight: bold;
}
.quest-progress {
font-size: 0.7em;
color: #bdc3c7;
}
.quest-status {
width: 20px;
height: 20px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 0.7em;
}
.quest-status.in-progress {
background-color: #2980b9;
color: #ecf0f1;
}
.quest-status.completed {
background-color: #27ae60;
color: #ecf0f1;
}
/* Styles restants */
.separator {
height: 1px;
background-color: #34495e;
margin: 5px 0;
}
.inventory-section {
margin-top: 3px;
}
.inventory-list {
display: flex;
flex-direction: column;
gap: 3px;
}
.inventory-item {
display: flex;
align-items: center;
padding: 3px 5px;
background: rgba(52, 73, 94, 0.5);
border-radius: 3px;
border-left: 3px solid #3498db;
}
.inventory-item.empty {
opacity: 0.5;
border-left-color: #7f8c8d;
}
.item-icon {
font-family: 'FontAwesome';
width: 16px;
text-align: center;
margin-right: 5px;
}
.health-potion { color: #e74c3c; }
.mana-potion { color: #3498db; }
.strength-potion { color: #e67e22; }
.item-name {
flex-grow: 1;
font-size: 0.8em;
}
.item-count {
background-color: #2c3e50;
border-radius: 3px;
min-width: 20px;
height: 20px;
font-size: 0.8em;
display: flex;
align-items: center;
justify-content: center;
}
</style>
<<script>>
// Fonction d'ajout de quête qui vérifie si la quête existe déjà
function addQuest(questName, progressTotal) {
// Initialiser le tableau activeQuests s'il n'existe pas encore
if (!State.variables.activeQuests) {
State.variables.activeQuests = [];
}
// Vérifier si une quête avec le même nom existe déjà
const questExists = State.variables.activeQuests.some(quest => quest.name === questName);
// Si la quête n'existe pas déjà, l'ajouter
if (!questExists) {
State.variables.activeQuests.push({
name: questName,
progress: 0,
total: progressTotal,
completed: false
});
// Rafraîchir l'affichage pour montrer la nouvelle quête
Engine.show();
return true; // La quête a été ajoutée avec succès
}
return false; // La quête existait déjà
}
// Fonction pour mettre à jour la progression d'une quête
function updateQuestProgress(questName, newProgress) {
if (!State.variables.activeQuests) return false;
for (let i = 0; i < State.variables.activeQuests.length; i++) {
if (State.variables.activeQuests[i].name === questName) {
State.variables.activeQuests[i].progress = newProgress;
// Marquer comme complétée si progress >= total
if (newProgress >= State.variables.activeQuests[i].total) {
State.variables.activeQuests[i].completed = true;
}
// Rafraîchir l'affichage
Engine.show();
return true;
}
}
return false; // Quête non trouvée
}
// Fonction pour compléter une quête directement
function completeQuest(questName) {
if (!State.variables.activeQuests) return false;
for (let i = 0; i < State.variables.activeQuests.length; i++) {
if (State.variables.activeQuests[i].name === questName) {
State.variables.activeQuests[i].progress = State.variables.activeQuests[i].total;
State.variables.activeQuests[i].completed = true;
// Rafraîchir l'affichage
Engine.show();
return true;
}
}
return false; // Quête non trouvée
}
// Fonction pour supprimer une quête
function removeQuest(questName) {
if (!State.variables.activeQuests) return false;
const initialLength = State.variables.activeQuests.length;
State.variables.activeQuests = State.variables.activeQuests.filter(quest => quest.name !== questName);
if (State.variables.activeQuests.length < initialLength) {
// Rafraîchir l'affichage
Engine.show();
return true;
}
return false; // Quête non trouvée
}
<</script>><<if $wasMenuItemEntered>>
<<link "BACK" $pastPassage>>
<<set $wasMenuItemEntered = false>>
<</link>>
<<else>>
<<if $stage == 0>>\
<<set $wasMenuItemEntered = true>>
<<set $pastPassage to passage()>>
<</link>><</if>>
<<link "💖 Characters" "Characters">>
<<set $wasMenuItemEntered = true>>
<<set $pastPassage to passage()>>
<</link>>
<<link "⚙️ Options" "Options">>
<<set $wasMenuItemEntered = true>>
<<set $pastPassage to passage()>>
<</link>>
<<link "🔒 Cheats" "Cheat">>
<<set $wasMenuItemEntered = true>>
<<set $pastPassage to passage()>>
<</link>>
<</if>>// Désactive la suppression automatique des espaces blancs
Config.passages.nobr = false;
$(document).on(':passagedisplay', function() {
updateStatBars();
});
// Mettre à jour manuellement après modifications de variables
function updateStatBars() {
const vieRatio = State.variables.Life / State.variables.LifeMax;
const manaRatio = State.variables.Mana / State.variables.ManaMax;
$("#health-bar").css("width", (vieRatio * 100) + "%");
$("#health-bar").text(State.variables.Life + "/" + State.variables.LifeMax);
$("#mana-bar").css("width", (manaRatio * 100) + "%");
$("#mana-bar").text(State.variables.Mana + "/" + State.variables.ManaMax);
}
// Hook pour que la fonction soit appelée après chaque changement de variable
$(document).on(':stateupdate', function() {
updateStatBars();
});V0.06test<<switch random(1,4)>>\
<<case 1>>\
sdsds
<<case 2>>\
qsdqsdqs
<<case 3>>\
xwcwcxcxw
<<case 4>>\
<<goto "SB12">>
<</switch>>\
Fin
<<set $Life = 50>>
<<run updateBars()>><video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Intro/AmyS0.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<typeNEW 30ms>>\
<<speech "Amy">>Hello sir, nice to meet you! I really wanted to find some roses to make massage oil, but we got lost...
Why are you looking at me like that? Oh I know, how cute, you're thinking about giving me a massage to de-stress me. So kind of you sir!
<</speech>>
[[Massage]]
<</typeNEW>><video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Intro/A1.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<typeNEW 30ms>>\
<<speech "Elena">>There's something weird about this forest, the animals are strange...
<</speech>>
<<speech "Elena">>I'm putting on my new outfit, and we're going to find something to eat. I'm hungry...
<</speech>>
<<linkappend2 "...Have you lost your clothes?" t8n>>\
<<speech "Elena">>Amy and I went swimming, and our clothes were gone when we got back... Sym didn't bath, she preferred to fight a bear, yes, and kept her clothes.<</speech>>\
<</linkappend2>>\
[[Why are you worried, Elena?]][[Find something to eat]]
<</typeNEW>><video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Intro/BA1.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<typeNEW 30ms>>\
<<speech "Sym">>What are you, some kind of little human? A goofball? I'm not a fan of that look you're giving to me."
<</speech>>
<<linkappend2 "I'm human?">>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Intro/BA2.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Sym">>⚔Oh, a human? Well, I despise you! This is entirely your fault if we're lost... Humans told Amy to go to the Deep Forest. Humans stole her and Elena's clothe...
<</speech>>
<<speech "You">><span class="shake">💀Oups..</span><</speech>>
<</linkappend2>>
<<linkappend2 "And why not a magician?" t8n>>
<<speech "Sym">>You look like a troll! The last extremely powerful mage I met made my clothes disappear with this spell "GuNaked"<</speech>>
[[I am a magician, GuNaked]]
<</linkappend2>>
<</typeNEW>>
<style>
.shake {
display: inline-block;
animation: shake 0.5s infinite;
}
@keyframes shake {
0%, 100% { transform: translateX(0); }
25% { transform: translateX(-5px); }
75% { transform: translateX(5px); }
}
</style><video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Forest/Witch/yes0.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<if $CheatCode eq 0>><div class="disabled-button">TitsJob Witch. (Support us)</div><<endif>>
<<if $CheatCode eq 1>>
<<speech "Witch">>I've a request, sir. Giggle, I smile even if it's a bit embarrassing. I'd need semen from a powerful mage for brewing my potions... It's a great ingredient. I think YOU could help.<</speech>>
<<linkappend2 "But I told you, I'm not a mage; and certainly not powerful!">>
<video width="100%" height="30%" playsinline autoplay loop muted>\
<source src="MagicWorldOfBimbo/Forest/Witch/TitsJob/00.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Witch">>I'm not surprised by your reserve and humility, you're an honorable man. Ooops sorry please don't mind my tits, this outfit's definitely too tight. Ha, ha! So, can I at least test your sperm one time? In any case, I'll make you feel good during the harvest...<</speech>>
<<linkappend2 "Yes please... Harvest my semen" false>>
<video width="100%" height="30%" playsinline autoplay loop muted>\
<source src="MagicWorldOfBimbo/Forest/Witch/TitsJob/1.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Witch">>I knew I could count on you. Now stop forcing yourself to stare at my eyes and look how I shake my big boobs. Does it make you hard? Of course it does. Good, now show me your cock, so that we can start the harvest.<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Witch/TitsJob/2.png">
<<speech "Witch">>OH! Beautiful specimen sir! I shouldn't be impressed, it's exactly what I expected from a powerful being like you. Don't worry, I'll take care of that marvel. Oh my god, I'm really sorry sir, it's so thrilling, I have to taste it. Can I?<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Witch/TitsJob/2.webp">
<<speech "Witch">>Thank you so much! GLOP!!! MMMMhhh that's no small piece of meat! And it tastes so gewd! I mean... I'm certain the semen will be perfect for my potions! Let me taste it again... It's to be sure it's hard enough for the harvest! SHLOP!<</speech>>
<<linkappend2 "Hey who was that? Behind you!" false>>
<<speech "Witch">>SHLOP! GLOK! YUM! Don't worry, villagers come from time to time to bring me food and herbs! SHLOP! Focus instead on my lips on your big cock! SLURP!<</speech>>
<<linkappend2 "OK please continue" false>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Witch/TitsJob/3.jpg">
<<speech "Witch">>She is very hard, perfect. Such a beautiful thing. Look at my eyes, see how much I want your sperm. And now let me show you my favourite trick!<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Witch/TitsJob/3B.webp">
<<speech "Witch">>Here we go, right between my big fun bags! Nice, it's so big that it emerges from my boobs, I'll be able to lick and suck the tip while I titfuck you. That gonna be fun!!! Are you excited?<</speech>>
<<linkappend2 "Are you doing that for fun?" false>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Witch/TitsJob/3C.webp">
<<speech "Witch">>NOOO! Absolutely not, I'm not a whore! Listen, I'm an alchemist, I always search new powerful ingredients to make the most helpful potions! If sperm is the best component, well, I must collect some. Do you think I'm too pushy, or too slutty, in my approach?<</speech>>
<<linkappend2 "Never mind, please proceed!" false>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Forest/Witch/TitsJob/4.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Witch">>Oh I thought you'd never ask! Let's go then... I squeeze your massive pole between my watermelons just like that... Can you feel their soft skin on your meat? Yes you do... Then I lick the tip... SLURP!<</speech>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Forest/Witch/TitsJob/4B.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Witch">>It's very pleasant you know, the best part in my job, I could that all day long. Especially with such a big cock, it's made for titjobs! SLURP! SLRP!<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Witch/TitsJob/5.webp">
<<speech "Witch">>Already ready to cum? Very happy you appreciated my service. The best way to collect your semen is to ejaculate in my mouth. Please give it to me, I'll do the rest.<</speech>>
<<linkappend2 "Cum!" false>>
<<script>>
var soundEffect = new Audio('MagicWorldOfBimbo/Sounds/Sperm1.wav');
soundEffect.volume = $("#volumeSlider").val() / 100 || 0.3;
soundEffect.play();
<</script>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Witch/TitsJob/6.webp">
<<speech "Witch">>Oh my gosh sir, you're spurting your magic semen all over my face! I can feel how, thick, smelly, and potent it is, mmmmhhh... But I told you to come in my mouth! Let me help you...<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Witch/TitsJob/7B.webp">
<<speech "Witch">>GLOP! SHLOP! Got it! A chance you're ejaculating so much! GULP! I may taste it a little bit if you don't mind! GULP! <</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Witch/TitsJob/7.webp">
<<speech "Witch">>Damn, there's much more than what I needed. But please don't mind me, finish to plaster my face, I'm indebted to you after all... Sigh...<</speech>>
<</linkappend2>>
<</linkappend2>>
<</linkappend2>>
<</linkappend2>>
<</linkappend2>>
<</linkappend2>>
<</linkappend2>>
<<endif>>
[[Return to he Forest|Enter the forest]]<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/4b.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<typeNEW 25ms>>
<<speech "Amy">>At last back to my favourite place.... Mmmh I feel so well, so serene in this tavern, what do you think? Trust me, they sell the best drinks in the village. What do you plan to do now you are here?<</speech>>
<<linkappend2 "First where can I sleep in the village?">>
<<set $AmyRelation = 1>>
<<speech "Amy">>Since you've helped me in the forest, I'd insist you stay at my place.<</speech>>
<<include "relationshipIcon">>
<<speech "You">>Sounds a great plan. So generous, thank you so much...<</speech>>
<<linkappend2 "Let's drink !">>
<<set $Life +=30>>
<<run $("#life-progress").val($Life)>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Milk/Videos/1.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Amy">>The milk is absolutely delicious here, you should try. Mmmh, so gewd to be back home, yummy... Gulp... Ooopsie! Oh no, I've spilled milk all over myself AGAIN... Sooo clumsy. <</speech>>
<<linkappend2 "Ahem, did you do that on purpose (So that I stay longer in the village)?">>
<<speech "Amy">>No, absolutely not... haha what a mess I did, I'm so sorry!<</speech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/Milk/b3.jpg">
<<speech "Amy">>But I'm all wet and sticky now, I hope you're not shocked.
I need to go to change my clothes and put on something less prudish. Go take a walk around village and we'll meet up again at my home. I give you the address. <</speech>>
[[Go to the village|Village]]
<</linkappend2>>
<</linkappend2>>
<</linkappend2>>
<</typeNEW>><img src="<<= setup.getRandomImage('MagicWorldOfBimbo/Village/Work/', '', 10) >>">
<<set $imagePath = setup.getRandomImage('MagicWorldOfBimbo/Village/Work/', '', 10)>>
<img src="<<=$imagePath>>">
<<script>>
setup.getRandomImage('MagicWorldOfBimbo/Village/Work/', '', 10)
setup.getRandomImage = function(folder, prefix, count) {
const randomNum = Math.floor(Math.random() * count) + 1;
return `${folder}/${prefix}${randomNum}.jpg`;
};
// Utilisation : setup.getRandomImage("images", "image", 10); // Pour 10 images
<</script>><<if $gold === undefined>>\
<<set $gold = 0>>\
<<set $SymQuest = 0>>\
<<set $helenaEat = 0>>\
<<set $AmyRelation = 0>>\
<<set $AmyDrink = 0>>\
<<set $WitchRelation = 0>>\
<<set $CheatCode = 0>>\
<<set $SecretScenes = 0>>\
<<set $Armor = 0>>\
<<set $Weapon = 0>>\
<<set $miningpickaxe = 0>>\
<<set $potionlevel1 = 0>>\
<<set $CaptureForest = 0>>\
<<set $Life = 10>>\
<<set _Life = 10>>\
<<set $LifeMax = 100>>\
<<set $Mana = 5>>\
<<set $ManaMax = 100>>\
<<set $_randomAction to 0>>\
<<set _randomAction to 0>>\
<<set $GuildAccess = 0>>\
<<set $FoundScroll to 0>>\
<<set $Futa to 0>>\
<<set $man = "man">>\
<<set $duke = "duke">>\
<<set $boy = "boy">>\
<<set $activeQuests = []>>\
<<set $CONFIG_CURSOR_SPEED = 200>>
<<set $YouPics = "MagicWorldOfBimbo/Avatar/You/0.jpg">>
<<set $musicVolume = 30>>\
<<set $soundVolume = 30>>\
<<endif>>\<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/1.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
Where would you like to go?
[[Amy's House]]
[[Work]]
[[Shop]]
[[Walk in the Street]]
<<if $GuildAccess == 1>>
[[Guild]]
<</if>>
<<if $Armor == 0>>
<div class="disabled-button">Go to the Forest. (Need Armor 🛡️)</div>
<<else>>
[[Forest|Enter the forest]]
<<endif>>
<<script>>
if (window.audio) {
window.audio.pause();
window.audio.currentTime = 0;
delete window.audio;
}
window.audio = new Audio('MagicWorldOfBimbo/Music/1Village.mp3');
window.audio.loop = true;
window.audio.volume = $("#musicVolumeSlider").length > 0 ?
($("#musicVolumeSlider").val() / 100) : State.variables.musicVolume / 100 ;
window.audio.play().catch(function(error) {
console.log("Audio playback failed:", error);
});
<</script>><video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/2.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<typeNEW 30ms>>\
<<speech "Amy">>That's fantastic, you escaped the wolf! Usually humans like you are not fast enough.<</speech>>
<<linkappend2 "What about you?" t8n>>
<<speech "Amy">>My sisters and I arrived about an hour ago, even if we were impeded by our breasts. I've even had time to put this much more decent outfit on!<</speech>>
<</linkappend2>>
<<linkappend2 "How did you find your way?" t8n>>
<<speech "Amy">>We met a cute village guard in the forest and he showed us the way. So kind, I hope I'll meet him again. Hey, would you like to grab a drink to relax after that adventure? I know a cool tavern! <</speech>>
<</linkappend2>>
<<set $activeQuests = $activeQuests.filter(function(quest) {
return quest.name !== "Find the village";
})>>
[[Go for the Drink]]
<</typeNEW>>
<<script>>
// Fonction pour jouer un fichier audio
function playAudio(audioPath) {
// Vérifie si l'audio en cours est différent du nouveau
if (!window.audio || window.audio.src.split('/').pop() !== audioPath.split('/').pop()) {
// Si un audio existe déjà, l'arrête
if (window.audio) {
window.audio.pause();
window.audio.currentTime = 0;
}
// Crée et configure le nouvel audio
window.audio = new Audio(audioPath);
window.audio.loop = true;
window.audio.volume = $("#volumeSlider").val() / 100 || 0.3;
window.audio.play().catch(function(error) {
console.log("Audio playback failed:", error);
});
console.log("Nouvelle musique démarrée: " + audioPath);
} else {
console.log("Même musique déjà en cours: " + audioPath);
}
}
// Appel de la fonction avec le chemin de votre fichier audio
playAudio('MagicWorldOfBimbo/Music/1Village.mp3');
<</script>><<set $_randomAction += 1>>
<<if $_randomAction is 8>>
<<set $_randomAction = 0>>
<</if>>
<<if $_randomAction == 0>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Walk/1.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Sym">>Are you still a demon? Of course you are. Leave quickly before I hit you.
<</speech>>
<div id="choices">
<<link2 "I'm not a Demon." >>
<<replace "#choices" t8n>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Walk/1a.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Sym">>You're going to leave here and now, you dark mage!<</speech>>
<</replace>>
<</link2>>
<<link2 "Can we talk ?">>
<<replace "#choices">><<speech "Sym">>You'll talk with my Sword!<</speech>><</replace>>
<</link2>>
</div>
<</if>>
<<if $_randomAction == 1>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Walk/2.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Character">>Oh! Hello sir, sorry I'm so happy, I'm going to be a mistress for the king himself. I'm coming from very far, but he's fond of buxom blonds like me, it'll be easy! I hear he pays well, but I hope the other rumours about what he likes are not true.
<</speech>>
<<linkappend2 "Can I have a mistress too ?">>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Walk/2b.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Character">>Sorry, but a good, loving busty mistress requires riches you know? Funny, your wood armor suggests otherwise.
<</speech>>
<</linkappend2>>
<</if>>
<<if $_randomAction == 2>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Walk/3.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Elena">>Oh I'm glad to see you again, it was quite an adventure... Please don't tell everyone I lost my clothes at the lake. At least I've been able to put on a beautiful dress, not too revealing as you can see, when I returned home!
<</speech>>
<</if>>
<<if $_randomAction == 3>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Walk/4.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<set $GuildAccess = 1>>
<<speech "Character">>Hello, my young friend. A guild has opened, and we are looking for adventurers to undertake missions or recruit warriors.
<</speech>>
<</if>>
<<if $_randomAction == 4>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Walk/5.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Character">>I defend the city against hostile creatures. It's not easy because we're short on manpower.
<</speech>>
<</if>>
<<if $_randomAction == 5>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Walk/6.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<set $GuildAccess = 1>>
<<speech "Character">>We need people like you to contribute to food production. The Farmer has posted a mission in the guild if you want...
<</speech>>
<</if>>
<<if $_randomAction == 6>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Walk/7.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<set $GuildAccess = 1>>
<<speech "Character">>My domain is the sewers. I destroy creatures all day long. You've got some nice armor there. Come see us at the guild; the missions pay well.
<</speech>>
<</if>>
<<if $_randomAction == 7>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Walk/8.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Character">>I've discovered that a significant malevolence exists nearby. We must locate it and cleanse it.
<</speech>>
<</if>>
[[Continue to Walk|Walk in the Street]]
[[Leave|Village]]<<set _randomImg = Math.floor(Math.random() * 5)>>
<<set _phrases to [
"I want to get some exercise, I need to shake that body. What do you suggest?",
"What a beautiful day! The weather is nice and people seem so happy... See the look in their eyes when they spot me? Where do you want to go?",
"Let's go, let's run, we're sure to find a nice place. Stay behind me my friend!",
"The last milk glass I drank makes me feel good.... Mmmmh",
"This way my new friend... You're staying behind again, are you tired? Take your time, enjoy the street view, it's very special."
]>>
<<print '<video width="100%" height="30%" playsinline autoplay loop muted>' +
'<source src="MagicWorldOfBimbo/Village/Date/' + _randomImg + '.mp4" type="video/mp4">' +
'Your browser does not support the video tag.</video>'>>
<<typeNEW 0ms>>
<<speech "Amy">><<print _phrases[_randomImg]>><</speech>>
<<linkappend2 "You are beautiful !" t8n>>
<<speech "Amy">>Stop, you sweet-talking boy, you're going to make me blush!<</speech>>
<</linkappend2>>
[[Tavern|Glass of Milk]]
[[Garden]]
[[Amy's House]]
<<if $AmyRelation < 3>><div class="disabled-button">Walk in the Forest. (Kill the Wolf) (Next Update)</div>
<<endif>>
<<if $AmyRelation < 5>><div class="disabled-button">WaterFall (Kill 2 Wolf) (Next Update)</div>
<<endif>>
<</typeNEW>><<if $gold >= 10>>\
<span style="color: #FFD700; display: flex; align-items: center; gap: 5px;">You paid 10 🪙</span>\
<<script>>
var soundEffect = new Audio('MagicWorldOfBimbo/Sounds/01-ShopBuy.ogg');
soundEffect.volume = State.variables.musicVolume / 100;
soundEffect.play();
<</script>>\
<<set $gold -= 10>>\
<<set $Weapon = 1>>\
<div class="purchase-container">
<img width="100%" height="30%" src="MagicWorldOfBimbo/Village/Shop/yes.jpg" class="purchase-image">
<div class="purchase-overlay">\
<div class="purchase-effect">WEAPON ACQUIRED!</div>\
</div>\
</div>\
<<speech "Seller">>Thank you for your purchase. With this weapon, the enemies of the deep forest will not harm you.<</speech>>
<<else>>\
<img width="100%" height="30%" src="MagicWorldOfBimbo/Village/Shop/no.jpg">
<<speech "Seller">><span class="bounce">Sorry!, but you need at least 5 gold pieces</span>. Come back when you have enough money.<</speech>>
<</if>>\
[[Back to the City|Village]]
<style>
.bounce {
display: inline-block;
animation: bounce 0.5s infinite;
}
@keyframes bounce {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-10px); }
}
/* Purchase animation styles */
.purchase-container {
position: relative;
overflow: hidden;
margin-bottom: 10px;
}
.purchase-image {
animation: pulse 1s ease-in-out;
}
.purchase-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
pointer-events: none;
}
.purchase-effect {
color: #FFD700;
font-size: 2em;
font-weight: bold;
text-shadow: 0 0 10px #FFD700, 0 0 20px #FFD700;
background-color: rgba(0, 0, 0, 0.5);
padding: 10px 20px;
border-radius: 10px;
animation: fadeInOut 2s ease-in-out forwards;
transform: scale(0);
}
@keyframes pulse {
0% { filter: brightness(1); }
50% { filter: brightness(1.5); }
100% { filter: brightness(1); }
}
@keyframes fadeInOut {
0% { opacity: 0; transform: scale(0) rotate(-10deg); }
20% { opacity: 1; transform: scale(1.2) rotate(5deg); }
80% { opacity: 1; transform: scale(1) rotate(0); }
100% { opacity: 0; transform: scale(0.8); }
}
</style><video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Intro/A2.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<typeNEW 30ms>>\
<<speech "Elena">>Can't you see? My chest is <span class="bounce">huge</span>, and the only bra I could find in this damn forest is too small... It's so uncomfortable!
<</speech>>
[[You can take it off in this case, it doesn't bother me.|You can remove it]]
[[Talk to Amy]]
<</typeNEW>>
<style>
.bounce {
display: inline-block;
animation: bounce 0.5s infinite;
}
@keyframes bounce {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-10px); }
}
</style><video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Forest/Witch/0a.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<typeNEW 30ms>>\
<<speech "Witch">>Oh good, a magician! Listen Sir, someone has changed villagers of the region into animals. Please help me to restore them. I want to try a spell which could help in this regard and I can teach you how to cast it.
<</speech>>
<<speech "You">>Me? A magician? You must be mistaken. Argh, I don't remember anything anymore...
<</speech>>
<<speech "Witch">>This is really strange, but I feel a lot of power coming from you. Hey are you listening, what are you looking at? If you're willing to help me with the transformed persons, I'll help you.
<</speech>>
<<set $WitchRelation = 1>>
[[Learn the spell]]
<</typeNEW>>
<<script>>
// Fonction pour jouer un fichier audio
function playAudio(audioPath) {
// Vérifie si l'audio en cours est différent du nouveau
if (!window.audio || window.audio.src.split('/').pop() !== audioPath.split('/').pop()) {
// Si un audio existe déjà, l'arrête
if (window.audio) {
window.audio.pause();
window.audio.currentTime = 0;
}
// Crée et configure le nouvel audio
window.audio = new Audio(audioPath);
window.audio.loop = true;
window.audio.volume = $("#volumeSlider").length > 0 ?
($("#volumeSlider").val() / 100) :
0.3;
window.audio.play().catch(function(error) {
console.log("Audio playback failed:", error);
});
console.log("Nouvelle musique démarrée: " + audioPath);
} else {
console.log("Même musique déjà en cours: " + audioPath);
}
}
// Appel de la fonction avec le chemin de votre fichier audio
playAudio('MagicWorldOfBimbo/Music/1Witch.mp3');
<</script>><video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Forest/Witch/Earn1.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<typeNEW 30ms>>\
<<speech "Witch">>Do you need energy to cast the spell big boy? That's your lucky day, I also sell mana potions. I've magical scrolls too, yes. Do you want some?
<</speech>>
[[Drink a mana potion (💰 5po) |PotionManaBuy]]
[[🕮 Searching for a new spell]]
[[Talk with the Witch]]
<<include Quest-Witch-Transform>>
[[Return to he Forest|Enter the forest]]
<</typeNEW>>
<<script>>
// Fonction pour jouer un fichier audio
function playAudio(audioPath) {
// Vérifie si l'audio en cours est différent du nouveau
if (!window.audio || window.audio.src.split('/').pop() !== audioPath.split('/').pop()) {
// Si un audio existe déjà, l'arrête
if (window.audio) {
window.audio.pause();
window.audio.currentTime = 0;
}
// Crée et configure le nouvel audio
window.audio = new Audio(audioPath);
window.audio.loop = true;
window.audio.volume = $("#volumeSlider").length > 0 ?
($("#volumeSlider").val() / 100) :
State.variables.musicVolume / 100;
window.audio.play().catch(function(error) {
console.log("Audio playback failed:", error);
});
console.log("Nouvelle musique démarrée: " + audioPath);
} else {
console.log("Même musique déjà en cours: " + audioPath);
}
}
// Appel de la fonction avec le chemin de votre fichier audio
playAudio('MagicWorldOfBimbo/Music/1Witch.mp3');
<</script>><<set _randomImg = Math.floor(Math.random() * 11)>>
<<set _rockImg = '<img id="rockImage" width="100%" height="30%" src="MagicWorldOfBimbo/Village/Work/' + _randomImg + '.jpg">'>>
<<print _rockImg>>
To your surprise, the miners are mostly women. Busty females with long legs and round asses, working hard and efficiently. You're going to enjoy working here despite the efforts!
/* Créons un élément audio une seule fois */
<<script>>
if (!window.rockSound) {
window.rockSound = new Audio("MagicWorldOfBimbo/Sounds/rockHit.mp3");
}
<</script>>
<<if $Life < 25>>
<<speech "You">>I need to rest, I don't have enough life to mine.(Amy's house)<</speech>>
<</if>>
<<if $Life > 25>>
<<linkreplace "⛏️Hit the rock" t8n>><br>
<<run $("#rockImage").addClass("shake")>>
<<run window.rockSound.currentTime = 0; window.rockSound.play()>>
<<timed 400ms>><<run $("#rockImage").removeClass("shake")>><</timed>>
<<shake 400ms>>The rock trembles!<</shake>>
<<linkreplace "⛏️Hit again" t8n>><br>
<<set _damage = Math.floor(random(5, 25))>>
<<set $Life -= _damage>>
<<run $("#rockImage").addClass("shake")>>
<<run window.rockSound.currentTime = 0; window.rockSound.play()>>
<<timed 400ms>><<run $("#rockImage").removeClass("shake")>><</timed>>
<<shake 400ms>>🪨A stone falls on you! <span style="color: red;">You lose _damage life points!</span><</shake>>
<<run $("#life-progress").val($Life)>>
<<linkreplace "⛏️Last hit!" t8n>><br>
<<run $("#rockImage").addClass("shake")>>
<<run window.rockSound.currentTime = 0; window.rockSound.play()>>
<<timed 400ms>><<run $("#rockImage").removeClass("shake")>><</timed>>
<<shake 400ms>>Gold is here!<</shake>>
<<set _WorkGold = Math.floor(Math.random() * 3)+1>>
<<if $miningpickaxe > 0>>
<<set _WorkGold +=5>>
<</if>>
<br>You earn _WorkGold gold pieces💰.
<<set $gold += _WorkGold>>
[[Work again|Work]]
<</linkreplace>>
<</linkreplace>>
<</linkreplace>>
<</if>>
<br><br>
[[Back to the village|Village]]<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Intro/A3.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<typeNEW 30ms>>\
<<speech "Elena">>Thank you very much, I feel better already. I'm going to relax my breasts for a few minutes if you don't mind, then we'll go get something to eat.
<</speech>>
[[Find something to eat]]
[[Talk to Amy]]
<</typeNEW>><!-- Widget pour le jeu de timing avec design amélioré, compatible avec SugarCube 3.7 -->
<<widget "timinggame">>
<<set $gameActive = true>>
<<set $gameResult = "">>
<div id="game-container" style="width: 340px; height: 80px; border: 3px solid #333; border-radius: 10px; position: relative; margin: 20px auto; background: #f0f0f0; box-shadow: 0 6px 10px rgba(0,0,0,0.3);">
<!-- Zone verte (succès) -->
<div style="position: absolute; width: 60px; height: 74px; background-color: #4CAF50; left: 140px; top: 3px; border-radius: 5px; box-shadow: inset 0 0 10px rgba(0,0,0,0.2);"></div>
<!-- Zones rouges (échec) -->
<div style="position: absolute; width: 140px; height: 74px; background-color: #F44336; left: 0px; top: 3px; border-radius: 5px 0 0 5px; box-shadow: inset 0 0 10px rgba(0,0,0,0.2);"></div>
<div style="position: absolute; width: 140px; height: 74px; background-color: #F44336; left: 200px; top: 3px; border-radius: 0 5px 5px 0; box-shadow: inset 0 0 10px rgba(0,0,0,0.2);"></div>
<!-- Barre mobile -->
<div id="moving-bar" style="position: absolute; width: 14px; height: 74px; background-color: #2196F3; left: 0px; top: 3px; border-radius: 4px; box-shadow: 0 0 6px rgba(33,150,243,0.8);"></div>
</div>
<div style="text-align: center; margin-top: 15px;">
<button id="game-button" style="padding: 10px 25px; background-color: #2196F3; color: white; border: none; border-radius: 5px; font-weight: bold; cursor: pointer; box-shadow: 0 3px 5px rgba(0,0,0,0.2); transition: all 0.2s;">CLIQUEZ AU BON MOMENT!</button>
</div>
<div id="result-message" style="text-align: center; margin-top: 15px; font-weight: bold; height: 24px;"></div>
<div id="game-continue" style="display: none; text-align: center; margin-top: 20px;">
<<if $gameResult eq "success">>
<<link [[Continuer (Réussite)]]>>
<<goto "SuccessPassage">>
<</link>>
<<else>>
<<link [[Réessayer]]>>
<<goto "GamePassage">>
<</link>>
<<link [[Abandonner (Échec)]]>>
<<goto "FailurePassage">>
<</link>>
<</if>>
</div>
<script>
(function() {
// Variables pour le jeu
var barPosition = 0;
var direction = 1;
var speed = 10;
var gameActive = true;
var gameInterval;
// Animation de la barre
gameInterval = setInterval(function() {
if (!gameActive) {
clearInterval(gameInterval);
return;
}
// Déplacer la barre
barPosition += direction * speed;
// Changer de direction si la barre atteint les bords
if (barPosition >= 326 || barPosition <= 0) {
direction *= -1;
}
// Mettre à jour la position visuelle de la barre
$("#moving-bar").css("left", barPosition + "px");
}, 20);
// Gestionnaire d'événement pour le bouton
$("#game-button").on("click", function() {
if (!gameActive) return;
gameActive = false;
clearInterval(gameInterval);
// Effet visuel du bouton cliqué
$(this).css({
"background-color": "#0D47A1",
"box-shadow": "0 1px 2px rgba(0,0,0,0.2)",
"transform": "translateY(2px)"
});
// Vérifier si le joueur a cliqué dans la zone verte
if (barPosition >= 140 && barPosition <= 200) {
SugarCube.State.variables.gameResult = "success";
$("#result-message").html("✅ RÉUSSITE! <span style='color:green'>Excellent timing!</span>");
} else {
SugarCube.State.variables.gameResult = "failure";
$("#result-message").html("❌ ÉCHEC! <span style='color:darkred'>Pas assez précis!</span>");
}
// Permettre de continuer l'histoire après 1 seconde
setTimeout(function() {
$("#game-continue").fadeIn(500);
}, 1000);
});
})();
</script>
<</widget>>
<<timinggame>><<if $gold >= 5>>\
<span style="color: #FFD700; display: flex; align-items: center; gap: 5px;">You paid 5 🪙</span>\
<<script>>
var soundEffect = new Audio('MagicWorldOfBimbo/Sounds/01-ShopBuy.ogg');
soundEffect.volume = State.variables.musicVolume / 100;
soundEffect.play();
<</script>>\
<<set $gold -= 5>>\
<<set $miningpickaxe = 1>>\
<div class="purchase-container">
<img width="100%" height="30%" src="MagicWorldOfBimbo/Village/Shop/yes.jpg" class="purchase-image">
<div class="purchase-overlay">\
<div class="purchase-effect">TOOL ACQUIRED!</div>\
</div>\
</div>\
<<speech "Seller">>Thank you for your purchase this tool. Mining will be faster.<</speech>>
<<else>>\
<img width="100%" height="30%" src="MagicWorldOfBimbo/Village/Shop/no.jpg">
<<speech "Seller">><span class="bounce">Sorry!, but you need at least 5 gold pieces</span>. Come back when you have enough money.<</speech>>
<</if>>\
[[Back to the City|Village]]
<style>
.bounce {
display: inline-block;
animation: bounce 0.5s infinite;
}
@keyframes bounce {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-10px); }
}
/* Purchase animation styles */
.purchase-container {
position: relative;
overflow: hidden;
margin-bottom: 10px;
}
.purchase-image {
animation: pulse 1s ease-in-out;
}
.purchase-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
pointer-events: none;
}
.purchase-effect {
color: #FFD700;
font-size: 2em;
font-weight: bold;
text-shadow: 0 0 10px #FFD700, 0 0 20px #FFD700;
background-color: rgba(0, 0, 0, 0.5);
padding: 10px 20px;
border-radius: 10px;
animation: fadeInOut 2s ease-in-out forwards;
transform: scale(0);
}
@keyframes pulse {
0% { filter: brightness(1); }
50% { filter: brightness(1.5); }
100% { filter: brightness(1); }
}
@keyframes fadeInOut {
0% { opacity: 0; transform: scale(0) rotate(-10deg); }
20% { opacity: 1; transform: scale(1.2) rotate(5deg); }
80% { opacity: 1; transform: scale(1) rotate(0); }
100% { opacity: 0; transform: scale(0.8); }
}
</style><div class="simple-heart-transform">
<p>Your relationship is improving <span id="transformingHeart">🖤</span></p>
</div>
<style>
.simple-heart-transform {
text-align: center;
margin: 10px auto;
font-family: Arial, sans-serif;
background: linear-gradient(to bottom, #ff6b97, #ff0066);
border: 1px solid black;
padding: 10px;
border-radius: 4px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
width: 60%;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
}
.simple-heart-transform p {
font-size: 0.9em;
margin: 0;
color: white;
display: flex;
align-items: center;
justify-content: center;
gap: 5px;
width: 100%;
}
#transformingHeart {
font-size: 1.2em;
animation: heartTransform 2s forwards;
position: relative;
display: inline-block;
}
@keyframes heartTransform {
0% { opacity: 1; }
40% { opacity: 0; }
60% { opacity: 0; }
100% { opacity: 1; }
}
#transformingHeart::after {
content: "❤️";
position: absolute;
left: 0;
opacity: 0;
animation: heartAppear 2s forwards;
}
@keyframes heartAppear {
0% { opacity: 0; }
40% { opacity: 0; }
60% { opacity: 0.5; }
100% { opacity: 1; }
}
</style>
<script>
setTimeout(function() {
document.getElementById('transformingHeart').style.opacity = 0;
setTimeout(function() {
document.getElementById('transformingHeart').innerHTML = "❤️";
document.getElementById('transformingHeart').style.opacity = 1;
}, 1000);
}, 1000);
</script><span class="rotate">This text rotates!</span>
<style>
.rotate {
display: inline-block;
animation: rotate 2s linear infinite;
}
@keyframes rotate {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
</style>
html
Copy
<span class="gradient-text">This text has a gradient!</span>
<style>
.gradient-text {
background: linear-gradient(90deg, red, orange, yellow, green, blue, indigo, violet);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
</style>
<span class="highlight-hover">Hover over me!</span>
<style>
.highlight-hover {
transition: background-color 0.3s ease;
}
.highlight-hover:hover {
background-color: yellow;
}
</style>
<span class="bounce">This text bounces!</span>
<style>
.bounce {
display: inline-block;
animation: bounce 1s infinite;
}
@keyframes bounce {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-10px); }
}
</style>
<span class="shake">This text shakes!</span>
<style>
.shake {
display: inline-block;
animation: shake 0.5s infinite;
}
@keyframes shake {
0%, 100% { transform: translateX(0); }
25% { transform: translateX(-5px); }
75% { transform: translateX(5px); }
}
</style>
<span class="fade-in">This text will fade in.</span>
<style>
.fade-in {
opacity: 0;
animation: fadeIn 2s ease-in forwards;
}
@keyframes fadeIn {
to { opacity: 1; }
}
</style>
<span class="typewriter">This text will appear as if it's being typed.</span>
<style>
.typewriter {
display: inline-block;
overflow: hidden;
border-right: .15em solid orange;
white-space: nowrap;
margin: 0 auto;
letter-spacing: .15em;
animation: typing 3.5s steps(40, end), blink-caret .75s step-end infinite;
}
@keyframes typing {
from { width: 0; }
to { width: 100%; }
}
@keyframes blink-caret {
from, to { border-color: transparent; }
50% { border-color: orange; }
}
</style>
<span class="attack-effect">Enemy Attack!</span>
<style>
.attack-effect {
display: inline-block;
font-weight: bold;
color: red;
animation: attack 0.5s infinite;
}
@keyframes attack {
0% {
transform: translateX(0) translateY(0);
color: red;
text-shadow: 0 0 5px rgba(255, 0, 0, 0.8);
}
25% {
transform: translateX(-5px) translateY(-5px);
color: darkred;
text-shadow: 0 0 10px rgba(255, 0, 0, 0.8);
}
50% {
transform: translateX(5px) translateY(5px);
color: orange;
text-shadow: 0 0 15px rgba(255, 165, 0, 0.8);
}
75% {
transform: translateX(-5px) translateY(-5px);
color: yellow;
text-shadow: 0 0 20px rgba(255, 255, 0, 0.8);
}
100% {
transform: translateX(0) translateY(0);
color: red;
text-shadow: 0 0 5px rgba(255, 0, 0, 0.8);
}
}
</style>:: Map
<!-- Style pour positionner les images et les boutons -->
<style>
#map-container {
position: relative;
}
#map-container img {
width: 100%;
height: 100%;
}
.map-button {
position: absolute;
background: none;
border: none;
cursor: pointer;
padding: 0;
/* Ajoute des propriétés pour masquer le bouton, mais le garder cliquable */
background-color: rgba(0, 0, 0, 0); /* Transparent */
border: none;
}
.map-button:hover {
background-color: rgba(0, 0, 0, 0.2); /* Semi-transparent */
}
#button1 {
top: 20%; /* Position verticale (ajustez) */
left: 30%; /* Position horizontale (ajustez) */
width: 50px; /* Largeur de votre bouton (ajustez) */
height: 30px; /* Hauteur de votre bouton (ajustez) */
}
.button1-link:hover {
border: 2px solid blue; /* Ajoute une bordure bleue au survol */
background-color: rgba(0, 0, 0, 0.2); /* Semi-transparent */
}
#button2 {
top: 60%; /* Position verticale (ajustez) */
left: 70%; /* Position horizontale (ajustez) */
width: 50px; /* Largeur de votre bouton (ajustez) */
height: 30px; /* Hauteur de votre bouton (ajustez) */
}
.button2-link:hover {
border: 2px solid blue; /* Ajoute une bordure bleue au survol */
background-color: rgba(0, 0, 0, 0.2); /* Semi-transparent */
}
#button1 {
/* ... autres propriétés ... */
background-image: url("MagicWorldOfBimbo/Map/B1.png");
background-size: cover; /* Pour que l'image remplisse le bouton */
}
</style>
<!-- Conteneur de la carte -->
<div id="map-container">
<img src="MagicWorldOfBimbo/Map/map.png" alt="Carte">
<!-- Boutons cliquables -->
<button id="button1" class="map-button" data-passage="Tavern"></button>
<button id="button2" class="map-button" data-passage="Forest"></button>
</div>
<script>
// Gestion des clics sur les boutons
$(document).on("click", ".map-button", function() {
var passage = $(this).data("passage");
Engine.show(passage); // Utilise Engine.show pour changer de passage
});
</script>
:: Tavern
Vous êtes dans la taverne.
:: Forest
Vous êtes dans la forêt.
<<if getQuestProgress("Bring 20 roses to Amy.") == 0 and $AmyRelation == 1>>
<<linkappend2 "📜Quest : Rose" >>
<<speech "Amy">>Oh, really? You want to bring me roses from the forest? So chivalrous, I'm so happy to have met you. I need twenty roses to make a massage oil... Take this last one as a sample.🌹<</speech>>
<<run addQuest("Bring 20 roses to Amy.",20)>>
<<run incrementQuestProgress("Bring 20 roses to Amy.")>>
<</linkappend2>>
<</if>>
<<if getQuestProgress("Bring 20 roses to Amy.") >= 19 and $AmyRelation == 1>>
<<linkappend2 "📜Quest : Rose Finished" >>
<<speech "Amy">>OH ! Thanks... we need to celebrat that... come with me...<</speech>>
<<set $AmyRelation = 2>>
<<run removeQuest("Bring 20 roses to Amy.")>>
<<include "relationshipIcon">>
[[💦Rose Massage]]
<</linkappend2>>
<</if>>
<<if $AmyRelation < 2>>
<div class="disabled-button">💦Rose Massage.<span style="font-size: 60%;"> (Need Amy: ❤️❤️🖤)</span></div>
<<else>>
[[💦Rose Massage]]
<<endif>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/01.jpg">
<<speech "Amy">>Here you are! Please enter, my saviour. I got comfortable and started to oint my skin with the oil I was able to brew thanks to your roses. Now, would you be nice and give me the massage you proposed in the forest?<</speech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/02.jpg">
<<speech "Amy">>What are you looking at? Ha, yes, my skin's all shiny because of the oil. I didn't have time to spread the last drops before you step into, but I guess you can help me with that. Please have a look to check where are the remaining drops, don't hesistate. <</speech>>
<<linkappend2 "Inspect her body?" Nospeech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/03.jpg">
<<speech "Amy">>Oh, there are still white, creamy drops on my big butt? I did such a mess... Well, I guess it's your task now. Spread the cream on my butt and legs please. Don't worry for the string, I put it on to make the massage easy.<</speech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/06.jpg">
<<speech "Amy">>Very well, your warm hands on my ass cheeks feel good. Spread the cream, go on, make it penetrate my skin...<</speech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/04.jpg">
<<speech "Amy">>Very good job my friend! I'm perfectly ointed. Now the massage can start for real, what do you think? I can see in your eyes that you want to continue to service my butt, it's a great idea!<</speech>>
<<linkappend2 "Massage her butt?" Nospeech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/05.jpg">
<<speech "Amy">>Mmmmh yes, this is so good and relaxing, I missed that so much! It's a blessing we found you in the forest, really! Continue!<</speech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/07.jpg">
<<speech "Amy">>Why are you stopping? Oh, I see, you want to admire your work... Well deserved. Don't hesistate to continue to massage my butt cheeks, they're still sore after all the running the forest. Please. Oh, you want to remove my string? Please do, it'll be more comfortable for both of us.<</speech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/08.jpg">
<<speech "Amy">>Oh yes, if feels better now I'm nude there. Mmmh, this is very good, you're really an expert. I love when a male knows how to handle my butt you know? I needed it so bad.<</speech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/09.jpg">
<<speech "Amy">>Oh, it's already done? Maybe you want to massage something else? Yes I removed my top too, I didn't feel the need to keep it, I feel at ease with you. But for real, I'd like you to continue to work my ass.<</speech>>
<<linkappend2 "Massage her butt again?" Nospeech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/10.jpg">
<<speech "Amy">>Yes, open my legs like that, have a better look... A butt like this needs to be pampered, don't you think? <</speech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/11.webp">
<<speech "Amy">>Oh I knew you'd agree! Yes massage my big round ass cheeks again! Harder! We're having so much fun!<</speech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/12.jpg">
<<speech "Amy">>OK my hero, I stop teasing you. Of course you deserve a better reward than just checking and touching my butt. Come before me and show me your dick. You deserve no less than a good, sloppy blowjob!<</speech>>
<<linkappend2 "Show your cock?" Nospeech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/13.jpg">
Amy is astonished by the size of your dick, but she doesn't lose time and immediately stick it in her mouth!
<<speech "Amy">>Oh my goddess it is such a magnificent pole! I can resist I... SLUUUUURP! Hmmm, it tastes very gewd! SLLRRP! SLRRP! That gonna be fun! <</speech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/14.jpg">
<<speech "Amy">>Shlop! Slurp! Shlop! You like it? Wait, we're not even started yet. Do you remember, you're here for a massage. I meant, a cock like this deserves a throat massage! Let me show you... <</speech>>
<<linkappend2 "Deepthroat action?" Nospeech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/15.webp">
Under your incredulous gaze, Amy brutally shoves your massive dick down her throat, and undertakes to give your the deepthroat of your life, drooling like a beast as she's fucking her own face of your pole, and rebounding on her huge tits as she frantically forces her throat on your manhood!
<<speech "Amy">>GLOP! GLOK! KOPF! SLRRRP! SLRRRP! GAH enjoy! GLOK!<</speech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/16b.webp">
You can't believe your eyes as she makes it fit balls deep in her slutty mouth, struggling against her gag reflex. Out of oxygen, she seems about to lose her mind but doesn't lose her focus, resting on her big udders as if they were comfortable pillows. Mesmerized, you can't hold for long...
<<speech "Amy">>GLOK! GLOK! KOPF! COME! GIMME YOUR CUM! GLUG! KFFF!<</speech>>
<<linkappend2 "Ejaculate?" Nospeech>>
<<script>>
var soundEffect = new Audio('MagicWorldOfBimbo/Sounds/Sperm1.wav');
soundEffect.volume = $("#volumeSlider").val() / 100 || 0.3;
soundEffect.play();
<</script>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/17.webp">
Unable to resist any longer, you pull your dick out of her throat and burst into thick ropes of white goo! Realizing at last that you're coming, Amy smiles, happy to have rewarded you. But you're ejaculating so much sperm that the elf girl stands in awe, her mouth wide open...
<<speech "Amy">>Oh my goddess you're cumming, what a thick creamy load, that's fantastic! Only monsters ejaculate like that!!<</speech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/19.jpg">
Unwillingly you fill her open mouth with a huge load of semen. You fear Amy will be disgusted, but on the contrary, she seems to savour the taste. Then she slowly, delicately spits a part of your load on her big boobs...
<<speech "Amy">>Slurp! Gulp! HMMMMHHH it tastes so yummy! You're such a perfect male... SPURT! Don't worry, I don't want to waste your gift, on the contrary...<</speech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/18.jpg">
<<speech "Amy">>... my boobies need more cream and yours will be perfect. Ooooh it feels so good, so warm on my breasts. See the mess you've done? These huge pillow of flesh are completely plastered!<</speech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/20.jpg">
<<speech "Amy">>Ohlalala but you're still coming! Your cock's a blessing my saviour... I think your balls were really to full, they need to be emptied more frequently giggle.<</speech>>
<<linkappend2 "Watch her eating your cum?" Nospeech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/21.jpg">
<<speech "Amy">>SLURP! GULP! The taste is so powerful, so delicious! Yes, it's decided! From now on you're going to feed me with your sperm every day, it'd be a shame to waste such a nectar! GULP! You know what to do if you want to stay in this house. <</speech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/22.jpg">
<<speech "Amy">>Look at me when I swallow your cum! GULP! So fucking thick and tasty! SLURP! My new favourite drink! I want to feast on it everytime I need! GULP! I don't want you to waste it with other girls do you hear me? SLURP! <</speech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/23.jpg">
<<speech "Amy">>Oh my gawd, it feels also so good on my tits... Fuck the massage oil, I can't believe I finally found a better potion to make my boobs softer and bigger! No need for returning to the forest, I want you to smear my watermelons with your sperm every day too!<</speech>>
<<if $SecretScenes == 1>>
<<linkappend2 "Take her on the table?" Nospeech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/24.jpg">
Amy's dirty speech arouses you so much that you get hard again nearly instantly. Pleased by what she sees, Amy pushes you so that you lie on your back on the massage table. Then she mounts you!
<<speech "Amy">>Oh my... You're so virile! I didn't expect such endurance from a human, but we're going to have even more fun. I want to ride this magnificent cock so bad!<</speech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/25.jpg">
<<speech "Amy">>Mmmh completely inside, you fill me so deep! Be prepared for the ride of your life my hero! Yes look at my eyes while I fuck you hard!<</speech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/26.jpg">
After a few strokes with her hips, Amy crouches on your cock!
<<speech "Amy">>Oh yes, this way it'll enter even deeper, and I'll be able to dance on your pole with more strength! Enjoy the view of my boucing tits while I impale myself!<</speech>>
<<linkappend2 "Cum in her pussy?" Nospeech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/27.jpg">
<<speech "Amy">>Yes Yes Yes it's so good! I can feel that you already want to cum in me my saviour, please don't hold back!<</speech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/28.jpg">
<<speech "Amy">>OOOOH yes give me your thick hot semen! Fill meeee!<</speech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/29.jpg">
<<speech "Amy">>Heaven! I can fill your sperm as it floods my womb! There is so much, this is so good. I'm such a lucky girl... Don't move and let me do... this is your reward after all...<</speech>>
<<linkappend2 "Continue to bang her?" Nospeech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/30.jpg">
Suddenly Amy starts to ride your cock again, with even more strength! She makes you become hard again for the second time in a row with her juicy, sperm-flooded cunt. As her tits bounce like never before, your big cock punches her stomach and forces her to spit up some of the sperm she swallowed!
<<speech "Amy">>OH YES TAKE ME! Hard again? You're such a fabulous lover! Ha! Ha! Ha! MORE! MORE! BURP! Ooopsie scuse me, I ate so much cum that I can't keep it all...<</speech>>
<img width="100%" height="20%" src="MagicWorldOfBimbo/Village/AmyHouse/Massage/31.jpg">
The view of Amy spitting cum on her big bouncing tits as she rides you at incredible space makes you ejaculate for the third time!!
<<speech "Amy">>Spurt! Burp! Yum! Love to see me with mouth full of your milk, right? OH YES! CUM IN ME AGAIN! This is the best fuck I had in months my friend! YEEEES! We must definitely do it again!!<</speech>>
<</linkappend2>>
<</linkappend2>>
<</linkappend2>>
<<else>>
<div class="disabled-button">💎Exclusif scenes (Take her on the table!)</div>
<<endif>>
<</linkappend2>>
<</linkappend2>>
<</linkappend2>>
<</linkappend2>>
<</linkappend2>>
<</linkappend2>>
<</linkappend2>>
[[Amy's House]]
<<if getQuestProgress("Transform 10 women for the witch.") == 0 and $WitchRelation == 0>>
<<linkappend2 "📜Quest : Transform women" >>
<<speech "Witch">>Oh, really? You want help ? Transform 10 women in the forest and come back.<</speech>>
<<run addQuest("Transform 10 women for the witch.",10)>>
<<run incrementQuestProgress("Transform 10 women for the witch.")>>
<</linkappend2>>
<</if>>
<<if getQuestProgress("Transform 10 women for the witch.") >= 9 and $WitchRelation == 1>>
<<linkappend2 "📜Quest : Transform Finished" >>
<<speech "Witch">>OH ! Thanks... we need to celebrat that... come with me...<</speech>>
<<set $WitchRelation = 2>>
<<run removeQuest("Transform 10 women for the witch.")>>
<<include "relationshipIcon">>
[[💦Tits-Semen]]
<</linkappend2>>
<</if>>
<<if $WitchRelation == 1>>
<div class="disabled-button">💦 Tits-Semen. (Need Witch: ❤️❤️🖤)</div>
<<else>>
[[💦Tits-Semen]]
<<endif>>
<video width="100%" height="30%" playsinline autoplay loop muted>\
<source src="MagicWorldOfBimbo/Forest/Witch/TitsJob/0.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Witch">>I've a request, sir. It's a bit embarrassing, so don't judge me please... Sigh. I'd need semen from a powerful mage for brewing my potions... It's a great ingredient. I think YOU could help.<</speech>>
<<linkappend2 "But I told you, I'm not a mage; and certainly not powerful!">>
<video width="100%" height="30%" playsinline autoplay loop muted>\
<source src="MagicWorldOfBimbo/Forest/Witch/TitsJob/00.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Witch">>I'm not surprised by your reserve and humility, you're an honorable man. Ooops sorry please don't mind my tits, this outfit's definitely too tight. Ha, ha! So, can I at least test your sperm one time? In any case, I'll make you feel good during the harvest...<</speech>>
<<linkappend2 "Yes please... Harvest my semen" false>>
<video width="100%" height="30%" playsinline autoplay loop muted>\
<source src="MagicWorldOfBimbo/Forest/Witch/TitsJob/1.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Witch">>I knew I could count on you. Now stop forcing yourself to stare at my eyes and look how I shake my big boobs. Does it make you hard? Of course it does. Good, now show me your cock, so that we can start the harvest.<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Witch/TitsJob/2.png">
<<speech "Witch">>OH! Beautiful specimen sir! I shouldn't be impressed, it's exactly what I expected from a powerful being like you. Don't worry, I'll take care of that marvel. Oh my god, I'm really sorry sir, it's so thrilling, I have to taste it. Can I?<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Witch/TitsJob/2.webp">
<<speech "Witch">>Thank you so much! GLOP!!! MMMMhhh that's no small piece of meat! And it tastes so gewd! I mean... I'm certain the semen will be perfect for my potions! Let me taste it again... It's to be sure it's hard enough for the harvest! SHLOP!<</speech>>
<<linkappend2 "Hey who was that? Behind you!" false>>
<<speech "Witch">>SHLOP! GLOK! YUM! Don't worry, villagers come from time to time to bring me food and herbs! SHLOP! Focus instead on my lips on your big cock! SLURP!<</speech>>
<<linkappend2 "OK please continue" false>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Witch/TitsJob/3.jpg">
<<speech "Witch">>She is very hard, perfect. Such a beautiful thing. Look at my eyes, see how much I want your sperm. And now let me show you my favourite trick!<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Witch/TitsJob/3B.webp">
<<speech "Witch">>Here we go, right between my big fun bags! Nice, it's so big that it emerges from my boobs, I'll be able to lick and suck the tip while I titfuck you. That gonna be fun!!! Are you excited?<</speech>>
<<linkappend2 "Are you doing that for fun?" false>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Witch/TitsJob/3C.webp">
<<speech "Witch">>NOOO! Absolutely not, I'm not a whore! Listen, I'm an alchemist, I always search new powerful ingredients to make the most helpful potions! If sperm is the best component, well, I must collect some. Do you think I'm too pushy, or too slutty, in my approach?<</speech>>
<<linkappend2 "Never mind, please proceed!" false>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Forest/Witch/TitsJob/4.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Witch">>Oh I thought you'd never ask! Let's go then... I squeeze your massive pole between my watermelons just like that... Can you feel their soft skin on your meat? Yes you do... Then I lick the tip... SLURP!<</speech>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Forest/Witch/TitsJob/4B.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Witch">>It's very pleasant you know, the best part in my job, I could that all day long. Especially with such a big cock, it's made for titjobs! SLURP! SLRP!<</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Witch/TitsJob/5.webp">
<<speech "Witch">>Already ready to cum? Very happy you appreciated my service. The best way to collect your semen is to ejaculate in my mouth. Please give it to me, I'll do the rest.<</speech>>
<<linkappend2 "Cum!" false>>
<<script>>
var soundEffect = new Audio('MagicWorldOfBimbo/Sounds/Sperm1.wav');
soundEffect.volume = $("#volumeSlider").val() / 100 || 0.3;
soundEffect.play();
<</script>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Witch/TitsJob/6.webp">
<<speech "Witch">>Oh my gosh sir, you're spurting your magic semen all over my face! I can feel how, thick, smelly, and potent it is, mmmmhhh... But I told you to come in my mouth! Let me help you...<</speech>>
<img width="100%" height="30%" <img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Witch/TitsJob/7B.webp">
<<speech "Witch">>GLOP! SHLOP! Got it! A chance you're ejaculating so much! GULP! I may taste it a little bit if you don't mind! GULP! <</speech>>
<img width="100%" height="30%" src="MagicWorldOfBimbo/Forest/Witch/TitsJob/7.webp">
<<speech "Witch">>Damn, there's much more than what I needed. But please don't mind me, finish to plaster my face, I'm indebted to you after all... Sigh...<</speech>>
<</linkappend2>>
<</linkappend2>>
<</linkappend2>>
<</linkappend2>>
<</linkappend2>>
<</linkappend2>>
<</linkappend2>>
[[Return to he Forest|Enter the forest]]<<script>>
// Initialize combat variables
// Only set these values if not already defined or at start of combat
$(document).ready(function() {
// Reset enemy health at the start of each new combat
State.variables.enemyHealth = 100;
State.variables.combatOver = false;
// Initialize player stats only if they don't exist
if (typeof State.variables.Life === 'undefined') {
State.variables.Life = 100;
}
if (typeof State.variables.Mana === 'undefined') {
State.variables.Mana = 30;
}
if (typeof State.variables.Gold === 'undefined') {
State.variables.Gold = 0;
}
if (typeof State.variables.gold === 'undefined') {
State.variables.gold = State.variables.Gold;
}
// Update UI with current values
$("#enemy-health-bar").css("width", State.variables.enemyHealth + "%");
$("#enemy-health-text").text(State.variables.enemyHealth + "/100");
$("#player-health-bar").css("width", State.variables.Life + "%");
$("#player-health-text").text(State.variables.Life + "/100");
$("#life-progress").attr("value", State.variables.Life);
$("#player-mana-bar2").css("width", State.variables.Mana + "%");
$("#player-mana-text").text(State.variables.Mana + "/100");
$("#mana-progress").attr("value", State.variables.Mana);
});
// Sound effects
if (!window.combatSounds) {
window.combatSounds = {
physical: new Audio("MagicWorldOfBimbo/Sounds/sfx_punch1.ogg"),
magic: new Audio("MagicWorldOfBimbo/Sounds/Spell.wav"),
gold: new Audio("MagicWorldOfBimbo/Sounds/01-ShopBuy.ogg")
};
}
// Attack message arrays
window.attackMessages = {
physical: [
"You hit the enemy in the head!",
"You strike the enemy in the chest!",
"You attack the enemy's legs!",
"You wound the enemy's arm!",
"Your attack hits the enemy's shoulder!"
],
magic: [
"You cast a fireball at the enemy!",
"You unleash a lightning bolt!",
"You channel icy energy at the enemy!",
"A magical force strikes the enemy!",
"Your arcane blast hits the enemy!"
],
enemy: [
"The enemy hits you in the head!",
"The enemy strikes you in the chest!",
"The enemy attacks your legs!",
"The enemy wounds your arm!",
"The enemy's attack hits your shoulder!"
]
};
// Attack function
window.attackEnemy = function(attackType) {
// Safety check - ensure enemy health is properly initialized
if (typeof State.variables.enemyHealth === 'undefined' || State.variables.enemyHealth <= 0) {
State.variables.enemyHealth = 100;
$("#enemy-health-bar").css("width", State.variables.enemyHealth + "%");
$("#enemy-health-text").text(State.variables.enemyHealth + "/100");
}
if (State.variables.combatOver) return;
// Check if magic attack and enough mana
if (attackType === 'magic' && State.variables.Mana < 20) {
$("#damage-message").text("Not enough mana for magic attack! (need 20) You have only: " + State.variables.Mana);
return;
}
// Play appropriate sound based on attack type
let sound = (attackType === 'physical') ? window.combatSounds.physical : window.combatSounds.magic;
// Animations and sound
if (attackType === 'physical') {
$("#enemyImage").addClass("shake");
setTimeout(() => { $("#enemyImage").removeClass("shake"); }, 400);
} else {
$("#playerImage").addClass("magic-cast");
$("#enemyImage").addClass("shake");
setTimeout(() => {
$("#playerImage").removeClass("magic-cast");
$("#enemyImage").removeClass("shake");
}, 400);
// Use mana for magic attack
State.variables.Mana -= 20;
if (State.variables.Mana < 0) State.variables.Mana = 0;
$("#player-mana-bar2").css("width", State.variables.Mana + "%");
$("#player-mana-text").text(State.variables.Mana + "/100");
$("#mana-progress").attr("value", State.variables.Mana);
}
// Play sound
if (sound && sound.play) {
sound.currentTime = 0;
sound.play().catch(e => console.log("Audio error:", e));
}
// Calculate damage based on attack type
let playerDamage, enemyDamage;
switch(attackType) {
case 'physical':
playerDamage = Math.floor(Math.random() * 10) + 5; // 5-14 damage
break;
case 'magic':
playerDamage = Math.floor(Math.random() * 25) + 15; // 15-39 damage
break;
}
// Apply damage to enemy
State.variables.enemyHealth -= playerDamage;
if (State.variables.enemyHealth < 0) State.variables.enemyHealth = 0;
// Display player attack message
let msgArray = (attackType === 'physical') ? window.attackMessages.physical : window.attackMessages.magic;
let playerMsg = msgArray[Math.floor(Math.random() * msgArray.length)];
$("#damage-message").text(playerMsg + " (-" + playerDamage + " HP)");
// Update enemy health bar
$("#enemy-health-bar").css("width", State.variables.enemyHealth + "%");
$("#enemy-health-text").text(State.variables.enemyHealth + "/100");
// Check if enemy is defeated
if (State.variables.enemyHealth <= 0) {
// Enemy defeated - make enemy video grayscale with transition
$("#enemyImage").addClass("defeated");
// Calculate gold reward
let goldReward = Math.floor(Math.random() * 41) + 10; // Random between 10 and 50
State.variables.Gold += goldReward;
State.variables.gold = State.variables.Gold; // Synchronize gold variables
// Update gold display
$("#player-gold-text").text(State.variables.Gold);
$("#stat-value gold-value").text(State.variables.gold);
$(".gold-value").html("🪙" + State.variables.gold);
// Show gold reward message
$("#damage-message").removeClass("damage-message").addClass("gold-reward")
.html(`You defeated the enemy!<br>You found <strong>${goldReward}</strong> gold coins!`);
// Play gold sound if available
if (window.combatSounds.gold && window.combatSounds.gold.play) {
window.combatSounds.gold.currentTime = 0;
window.combatSounds.gold.play().catch(e => console.log("Audio error:", e));
}
// Enemy defeated - show victory actions
State.variables.combatOver = true;
$("#combat-controls").html(`
<div style="text-align: center; color: green; margin-top: 20px;">
<strong>Victory!</strong>
</div>
<div class="combat-actions" id="after-combat-actions">
<div class="continue-button" id="continue-button">Continue Adventure</div>
<div class="return-button" id="return-button">Return to Village</div>
</div>
`);
// Clear existing handlers to prevent double bindings
$(document).off("click", "#continue-button");
$(document).off("click", "#return-button");
// Add event listeners for new buttons
$(document).on("click", "#continue-button", function() {
Engine.play("Deep-Forest2");
});
$(document).on("click", "#return-button", function() {
Engine.play("Village");
});
}
// If enemy is still alive, they counter-attack
else {
setTimeout(() => {
// Calculate enemy damage here, instead of earlier
enemyDamage = Math.floor(Math.random() * 15) + 5; // 5-19 damage
// Enemy attack animation - shake ONLY the player image
$("#playerImage").addClass("shake");
if (window.combatSounds.physical && window.combatSounds.physical.play) {
window.combatSounds.physical.currentTime = 0;
window.combatSounds.physical.play().catch(e => console.log("Audio error:", e));
}
setTimeout(() => { $("#playerImage").removeClass("shake"); }, 400);
// Enemy attacks - apply damage
State.variables.Life -= enemyDamage;
if (State.variables.Life < 0) State.variables.Life = 0;
// Display enemy attack message
let enemyMsg = window.attackMessages.enemy[Math.floor(Math.random() * window.attackMessages.enemy.length)];
$("#damage-message").text(enemyMsg + " (-" + enemyDamage + " HP)");
// Update player health bar
$("#player-health-bar").css("width", State.variables.Life + "%");
$("#player-health-text").text(State.variables.Life + "/100");
$("#life-progress").attr("value", State.variables.Life);
// Check if combat is over - player died
if (State.variables.Life <= 0) {
State.variables.combatOver = true;
$("#combat-controls").html(`
<div style="text-align: center; color: red; margin-top: 20px;">
<strong>You have been defeated!</strong>
</div>
<div class="return-button" id="defeat-return">Return to Village</div>
`);
// Clear existing handler to prevent double bindings
$(document).off("click", "#defeat-return");
$(document).on("click", "#defeat-return", function() {
// Reset health before returning to village
State.variables.Life = 100;
Engine.play("Village");
});
}
}, 1000);
}
};
// Add event handlers for buttons - first remove any existing handlers
$(document).ready(function() {
// Clear existing handlers
$(document).off("click", "#attack-physical");
$(document).off("click", "#attack-magic");
$(document).off("click", "#escape-button");
// Add new handlers
$(document).on("click", "#attack-physical", function() {
attackEnemy('physical');
});
$(document).on("click", "#attack-magic", function() {
attackEnemy('magic');
});
$(document).on("click", "#escape-button", function() {
Engine.play("Enter the forest");
});
});
<</script>><<set _randomImg = Math.floor(Math.random() * 6)>>
<span id="tempMessage">
A hostile creature...
</span>
<<timed 1.0s>>
<<replace "#tempMessage">>⚔ A hostile creature emerges before you...<br><</replace>><br><br>
/* CSS for health bars and animations */
<style>
.combat-container {
display: flex;
justify-content: space-between;
margin-bottom: 20px;
color: white;
}
.defeated {
filter: grayscale(100%);
transition: filter 1s ease-in-out;
}
.character-container {
width: 45%;
text-align: center;
}
.character-image {
max-width: 150px;
max-height: 150px;
display: block;
margin: 0 auto 10px auto;
border: 3px solid #555;
box-shadow: 0 0 15px rgba(0,0,0,0.7);
}
.health-bar, .mana-bar2 {
width: 100%;
background-color: #ddd;
border-radius: 5px;
padding: 3px;
margin-bottom: 5px;
box-shadow: 0 0 5px rgba(0,0,0,0.3);
}
.health-bar-inner {
background-color: #4CAF50;
height: 20px;
border-radius: 3px;
transition: width 0.5s;
}
.mana-bar2-inner {
background-color: #2196F3;
height: 20px;
border-radius: 3px;
transition: width 0.5s;
}
.enemy-health-bar-inner {
background-color: #F44336;
}
.stats-text {
color: white;
font-weight: bold;
text-shadow: 1px 1px 2px black;
}
.damage-message {
border: 2px solid white;
padding: 10px;
margin: 15px 0;
background-color: #0066cc;
text-align: center;
color: white;
font-weight: bold;
box-shadow: 0 0 10px rgba(0,0,0,0.5);
}
.gold-reward {
border: 2px solid gold;
padding: 10px;
margin: 15px 0;
background-color: #663300;
text-align: center;
color: gold;
font-weight: bold;
box-shadow: 0 0 10px rgba(0,0,0,0.5);
animation: goldShine 2s ease-in-out;
}
.shake {
animation: shake 0.5s;
}
.magic-cast {
animation: pulse 1s;
}
.combat-actions {
display: flex;
flex-direction: column;
margin-top: 20px;
gap: 10px;
}
.combat-button {
background-color: #8A2BE2;
color: white;
padding: 10px;
border-radius: 5px;
text-align: center;
cursor: pointer;
font-weight: bold;
box-shadow: 0 0 5px rgba(0,0,0,0.5);
}
.continue-button {
background-color: #4CAF50;
color: white;
padding: 10px;
border-radius: 5px;
text-align: center;
cursor: pointer;
font-weight: bold;
box-shadow: 0 0 5px rgba(0,0,0,0.5);
margin-top: 10px;
}
.return-button {
background-color: #FF9800;
color: white;
padding: 10px;
border-radius: 5px;
text-align: center;
cursor: pointer;
font-weight: bold;
box-shadow: 0 0 5px rgba(0,0,0,0.5);
margin-top: 10px;
}
.combat-button:hover, .continue-button:hover, .return-button:hover {
filter: brightness(1.1);
}
.magic-button {
background-color: #4E42B3;
}
.escape-button {
background-color: #FF5722;
}
@keyframes shake {
0%, 100% { transform: translateX(0); }
10%, 30%, 50%, 70%, 90% { transform: translateX(-5px); }
20%, 40%, 60%, 80% { transform: translateX(5px); }
}
@keyframes pulse {
0% { transform: scale(1); filter: brightness(1); }
50% { transform: scale(1.05); filter: brightness(1.5); }
100% { transform: scale(1); filter: brightness(1); }
}
@keyframes goldShine {
0% { box-shadow: 0 0 5px rgba(255,215,0,0.3); }
50% { box-shadow: 0 0 25px rgba(255,215,0,0.8); }
100% { box-shadow: 0 0 5px rgba(255,215,0,0.3); }
}
</style>
/* Initialize combat variables - CORRECTED CODE */
<<if typeof $hasInit === 'undefined'>>
<<set $hasInit = true>>
<<set $enemyHealth = 100>>
<<if typeof State.variables.Life === 'undefined'>>
<<set State.variables.Life = 100>>
<</if>>
<<if typeof State.variables.Mana === 'undefined'>>
<<set State.variables.Mana = 100>>
<</if>>
<<if typeof State.variables.Gold === 'undefined'>>
<<set State.variables.Gold = 0>>
<</if>>
<</if>>
/*<<set $enemyHealth = 57>> Force enemy health to be set for combat */
<<set $combatOver = false>>
/* Health bars and character images */
<div class="combat-container">
<div class="character-container">
<img id="playerImage" class="character-image" src="MagicWorldOfBimbo/You.jpg" alt="Player">
<strong>Your Health</strong>
<div class="health-bar">
<div id="player-health-bar" class="health-bar-inner" style="width: <<= State.variables.Life >>%"></div>
</div>
<span id="player-health-text" class="stats-text"><<= State.variables.Life >>/100</span>
</div>
<div class="character-container">
<<print '<video width="100%" height="55%" id="enemyImage" class="character-image" style="object-fit: cover; object-position: center;border-radius: 15px;" playsinline autoplay loop muted alt="Enemy" id="enemy-img">' +
'<source src="MagicWorldOfBimbo/Forest/DeepForest/' + _randomImg + '.mp4" type="video/mp4">' + 'Your browser does not support the video tag.</video>'>>
<strong>Enemy Health</strong>
<div class="health-bar">
<div id="enemy-health-bar" class="health-bar-inner enemy-health-bar-inner" style="width: <<= $enemyHealth >>%"></div>
</div>
<span id="enemy-health-text" class="stats-text"><<= $enemyHealth >>/100</span>
</div>
</div>
/* Combat message */
<div id="damage-message" class="damage-message">...</div>
<div id="combat-controls">
<<if !$combatOver>>
/* Combat actions */
<div class="combat-actions">
<div class="combat-button" id="attack-physical">⚔️ Physical Attack</div>
<div class="combat-button magic-button" id="attack-magic">✨ Magic Attack</div>
<div class="combat-button escape-button" id="escape-button">🏃 Escape</div>
</div>
<<else>>
<div class="combat-actions" id="after-combat-actions">
<div class="continue-button" id="continue-button">Continue Adventure</div>
<div class="return-button" id="return-button">Return to Village</div>
</div>
<</if>>
</div>
<<include CombatSys>>
<</timed>><video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Guild/Farmer/0.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Character">>...
<</speech>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Guild/Farmer/1.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Character">>Sorry, I don't have any missions yet. Come back in the next game update. If you want to see more, support us!
<</speech>>
<a href="https://doctorbimbo.itch.io/magic-world-of-bimbo" target="blank">✨ Support Us ✨</a>
[[Back to the guild|Guild]]<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Guild/Warrior/0.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Character">>Just a moment, I'm finishing my exercises!
<</speech>>
<video width="100%" height="30%" playsinline autoplay loop muted>
<source src="MagicWorldOfBimbo/Village/Guild/Warrior/1.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<<speech "Character">>Sorry, I don't have any missions yet. Come back in the next game update. If you want to see more, support the dev!
<</speech>>
<a href="https://doctorbimbo.itch.io/magic-world-of-bimbo" target="blank">✨ Support Us ✨</a>
[[Back to the guild|Guild]]Your avatar :
<div class="avatar-selection">
<div class="avatar-option">
<img src="MagicWorldOfBimbo/Avatar/You/0.jpg" >
<button class="select-btn" data-avatar="MagicWorldOfBimbo/Avatar/You/0.jpg" >Select</button>
</div>
<div class="avatar-option">
<img src="MagicWorldOfBimbo/Avatar/You/1.jpg" width="300px" height="200px">
<button class="select-btn" data-avatar="MagicWorldOfBimbo/Avatar/You/1.jpg">Select</button>
</div>
<div class="avatar-option">
<img src="MagicWorldOfBimbo/Avatar/You/2.jpg" width="300px" height="200px">
<button class="select-btn" data-avatar="MagicWorldOfBimbo/Avatar/You/2.jpg">Select</button>
</div>
<div class="avatar-option">
<img src="MagicWorldOfBimbo/Avatar/You/3.jpg">
<button class="select-btn" data-avatar="MagicWorldOfBimbo/Avatar/You/3.jpg">Select</button>
</div>
<div class="avatar-option">
<img src="MagicWorldOfBimbo/Avatar/You/4.jpg">
<button class="select-btn" data-avatar="MagicWorldOfBimbo/Avatar/You/4.jpg">Select</button>
</div>
<div class="avatar-option">
<img src="MagicWorldOfBimbo/Avatar/You/5.jpg">
<button class="select-btn" data-avatar="MagicWorldOfBimbo/Avatar/You/5.jpg">Select</button>
</div>
<div class="avatar-option">
<img src="MagicWorldOfBimbo/Avatar/You/6.jpg">
<button class="select-btn" data-avatar="MagicWorldOfBimbo/Avatar/You/6.jpg">Select</button>
</div>
</div>
<style>
.avatar-selection {
display: flex;
justify-content: center;
flex-wrap: wrap;
gap: 0px;
margin: 0px 0;
}
.avatar-option {
display: flex;
flex-direction: column;
align-items: center;
width: 120px;
}
.avatar-option img {
width: 100px; /* Taille uniforme pour toutes les images */
height: 100px; /* Taille uniforme pour toutes les images */
min-height: 200px;
min-width: 100px;
border-radius: 50%;
margin-bottom: 10px;
cursor: pointer;
object-fit: cover; /* Pour assurer que l'image couvre bien le cercle */
border: 3px solid transparent; /* Bordure pour indiquer la sélection */
transition: border-color 0.3s;
border-style: solid;
border-color: #fff;
}
.avatar-option.selected img {
border-color: gold; /* Bordure dorée pour l'avatar sélectionné */
}
.select-btn {
background-color: #1e3a8a;
color: white;
border: none;
border-radius: 4px;
padding: 5px 10px;
cursor: pointer;
transition: background-color 0.3s;
width: 100px; /* Largeur fixe pour tous les boutons */
text-align: center;
}
.select-btn:hover {
background-color: #1e40af;
}
/* Pour indiquer l'avatar actuellement sélectionné */
.avatar-option.selected .select-btn {
background-color: gold;
color: black;
}
.path-display {
margin: 20px auto;
padding: 10px;
background-color: #f0f0f0;
border: 1px solid #ccc;
border-radius: 4px;
max-width: 80%;
display: none; /* Caché par défaut */
text-align: center;
font-weight: bold;
}
.path-btn {
background-color: #4a5568;
color: white;
border: none;
border-radius: 4px;
padding: 8px 15px;
cursor: pointer;
margin: 10px auto;
display: block;
}
.path-btn:hover {
background-color: #2d3748;
}
</style>
<<script>>
$(document).on('click', '.select-btn', function() {
var imagePath = $(this).data('avatar');
State.variables.YouPics = imagePath;
$(document).find('.You .avatar').css('background-image', 'url(' + imagePath + ')');
// Mise à jour visuelle du bouton et de l'image sélectionnés
$('.avatar-option').removeClass('selected');
$(this).parent().addClass('selected');
// Mettre à jour le chemin affiché
$('#current-path').text(imagePath);
// Afficher automatiquement le chemin quand un avatar est sélectionné
$('.path-display').show();
});
$(document).on('click', '#show-path', function() {
$('.path-display').toggle();
if ($('.path-display').is(':visible')) {
$(this).text('Masquer le chemin');
} else {
$(this).text('Afficher le chemin');
}
});
// Effet de zoom en cliquant sur l'image (optionnel)
$(document).on('click', '.avatar-option img', function() {
// Simuler un clic sur le bouton "Sélectionner" correspondant
$(this).siblings('.select-btn').click();
});
<</script>>
[[Back|Options]]