Selfish Giant
Oscar Wilde

const beautifulGarden = new Garden({ name: "BeautifulGarden" })
.with( Grass.SOFT, Flowers.STARLIKE, Trees.PEACH.times(12))
.surroundedBy( Structure.WALL.HIGH);
const childrenVillage = Group.of("VillageChildren").idle();
const selfishGiant = new Character("SelfishGiant");
selfishGiant
.returnFrom( Years.AWAY(7))
.see(childrenVillage.playIn(beautifulGarden))
.jawTighten()
.coldVoice().say("My garden is my own! Out!")
.ban(childrenVillage);
childrenVillage
.react(Fear.TRUE)
.gasp()
.scream("Ah! The Giant!")
.scatterOutside(beautifulGarden)
.holdBreath()
.exhaleSlow();
beautifulGarden.silence().fall();
// Giant builds the wall and fixes the sign
selfishGiant
.build(Structure.WALL.HIGH.around(beautifulGarden))
.sign(Notice.text("Let all keep away from my garden!"))
.say("Now no one shall enter my garden!");
// the garden becomes closed and empty
beautifulGarden
.surroundedBy(Structure.WALL.HIGH)
.lock( Season.SPRING, Season.SUMMER, Season.AUTUMN)
.allow(Season.WINTER)
.silence()
.fall();
Season.WINTER
.enable()
.wind(Wind.NORTH)
.bring( Weather.FROST, Weather.HAIL)
.howl("Hooo…");
const hole = Structure.WALL.makeHole( beautifulGarden);
childrenVillage
.moveTo(Structure.WALL)
.whisper("Shh… a hole!")
.through(hole)
.blinkRapid()
.playUnder(Trees.ALL);
beautifulGarden.allow(Season.SPRING).sigh();
// far corner stays winter — a small boy struggles
const smallBoy = childrenVillage
.filter(member => member.isYounger());
smallBoy
.enter(beautifulGarden)
.deepInto()
.moveTo(tree)
.browKnit()
.lipQuiver()
.try(Act.CLIMB)
.fail()
.slipHands()
.clingTrunk()
.inhaleSharp()
.blinkRapid()
.cry()
.shakyVoice().say("Tree… please…").wordsTrail()
.heart.race();
selfishGiant
.wake()
.blinkSlow()
.browLift()
.steadyVoice().mutter("Music? In my garden?")
.look()
.shouldersDrop()
.softenHeart()
.open(Gate.MAIN)
.allow(childrenVillage)
.set(Flag.SAFE, true);
childrenVillage.peek().holdBreath(1);
// help → lift → kiss
selfishGiant
.stepTo(smallBoy)
.kneel()
.softVoice().say("Little one, why did you not play with the others?");
smallBoy
.wipeTear()
.shakyVoice().say("The tree was tall, and I was small.")
.eyesShine()
.lookUp();
selfishGiant
.feel(Emotion.PITY)
.smile("gentle")
.steadyVoice().say("Come, let me help you.")
.inhaleSharp()
.lift(Gently.TRUE)
.exhaleSlow();
selfishGiant.hand.right.lift(smallBoy).to(branch);
SmallBoy
.hold(branch)
.arm.left.stabilize()
.hand.left.touch(tree.trunk)
.feelWarm(branch)
.eyesShine()
.see(tree.nearby.bloom().rustleLight());
smallBoy
.holdBranch()
.leanIn()
.kiss(selfishGiant.cheek)
.say("Thank you, for letting me in.")
.laughWide()
.heart.steady();
selfishGiant
.hand.right.touch(selfishGiant.cheekWith( kiss.from(smallBoy)))
.eyesCloud()
.tearWell()
.wipeTear()
.exhaleWarm()
.smile()
.tag(Disposition.KIND);
childrenVillage
.peek()
.returnTo(beautifulGarden)
.regroup()
.playDaily();
beautifulGarden.setPriority( Priority.KIDS_FIRST);
selfishGiant
.stand()
.straightenBack()
.destroy(Structure.WALL)
.steadyVoice().say("This garden belongs to all children!");
childrenVillage
.browLift()
.cheer("Hooray! The Giant is kind now!")
.runSunlitPaths()
.laughWide();
beautifulGarden.fillWith( Laughter, Light, Blossoms);
Time.pass( Years.MANY);
selfishGiant
.growOld()
.sit("sunny bench")
.softVoice().say("Where are you, my dear little boy?");
beautifulGarden
.morning(Season.WINTER)
.whiten(Blossoms.WHITE);
smallBoy
.appearAt(beautifulGarden.corner("far"))
.glowSoft()
.showWounds({ hands: 2, feet: 2 });
smallBoy
.pause()
.steadyVoice()
.say("These are the wounds of Love.");
selfishGiant
.stagger()
.browKnit()
.jawTighten()
.voiceBreaks().say("Who dared hurt you?")
.heart.sink();
smallBoy
.steadyVoice()
.say("These are the wounds of Love.")
.pause()
.softVoice()
.say("You once let me play in your garden;")
.say("today you shall come with me to my garden — Paradise.")
.wordsTrail();
selfishGiant
.blinkSlow()
.shouldersDrop()
.closeEyes()
.smileSoftly()
.exhaleSlow()
.answer("Yes… I am ready.");
beautifulGarden
.setMode( GardenMode.SPRING_FOREVER)
.bloom( Blossoms.WHITE_FOREVER)
.birds( Sound.MORNING_CHOIR);
selfishGiant.sleep().dreamOf(smallBoy);
Heaven.open()
.send("soft-light")
.collect([ Token.LOVE, selfishGiant])
.routeTo(Place.PARADISE);
childrenVillage
.find(selfishGiant)
.hush()
.holdBreath(1)
.softVoice().say("He is sleeping.")
.exhaleSlow();