Skip to content

Commit

Permalink
Implement Sarn resuce INK
Browse files Browse the repository at this point in the history
  • Loading branch information
filiph committed Sep 18, 2020
1 parent fd86f67 commit f0d3f88
Show file tree
Hide file tree
Showing 21 changed files with 1,024 additions and 237 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ FOR_LOCATION: $start_bogus_location
COMMAND: N/A

INK:
// TODO: make a variant for when we di this near Darg's tent (i.e. no "shadows")
// TODO: make a variant for when we do this near Darg's tent (i.e. no "shadows")
I am almost about to retreat back to the shadows when I hear a soft, gurgling sound. Darg's head opens its dead eyes, and an ugly, unnatural grin appears on the face.

[[RULESET]]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ ACTION: $strip_dead_hawkman
COMMAND: Hawkman's suit >> Take

PREREQUISITES:
!(c.world.currentSituation as RoomRoamingSituation).monstersAlive
!c.getRoomRoaming().monstersAlive
&&
!c.playerRoom.isSynthetic
&&
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
APPROACH: $conet FROM $smithy
PREREQUISITES:
// Between the two events, there is no way from the $smithy.
!c.hasHappened(evSavedSarn)
||
c.hasHappened(evTookSarnToBleeds)

// ---
ROOM: $conet
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,19 +26,14 @@ FIGHT_SITUATION:
generateJailerFight

AFTER_MONSTERS_CLEARED:
TODO: I try to talk to Sarn, but he doesn't respond. He's trying to keep forging the weapons. "I must do this, the jailer told me to do this." Finally, I snap Sarn out of it, at least to stop forging and follow me.

TODO: I take Sarn (and his hammer) through the Pyramid and outside, where he starts sobbing. I try to be mad at Sarn but instead I just take Sarn to Jisad and leave him there. He'll be safe at Jisad's.

// TODO: what if we haven't met Jisad yet? - quickly introduce and set kbBlindGuide

As I leave the hut, I nod to both men, and Jisad, though blind, seems to notice the nod while Sarn doesn't.

I sigh and turn my back to them, and walk out to The Bleeds. This has not happened the way I imagined it.

[[CODE]]
c.markHappened(evSavedSarn);
c.movePlayer('bleeds_main');
// Use the ink defined in sarn_rescue.egb.txt.
w.pushSituation(InkSituation.initialized(
w.randomInt(),
"sarn_rescue_ink_ink",
));
[[ENDCODE]]


Expand Down Expand Up @@ -73,3 +68,26 @@ Sarn retreats to a corner of the room and looks at the floor, waiting.
[[CODE]]
c.startOptionalFight();
[[ENDCODE]]


NOTES:

Old AFTER_MONSTERS_CLEARED:

TODO: I try to talk to Sarn, but he doesn't respond. He's trying to keep forging the weapons. "I must do this, the jailer told me to do this." Finally, I snap Sarn out of it, at least to stop forging and follow me.

IF I know jisad: go straight to him, otherwise, we must meet him

"Where are we going?"

* "Safety."
* "Hell."

TODO: I take Sarn (and his hammer) through the Pyramid and outside, where he starts sobbing. I try to be mad at Sarn but instead I just take Sarn to Jisad and leave him there. He'll be safe at Jisad's.

// TODO: what if we haven't met Jisad yet? - quickly introduce and set kbBlindGuide

As I leave the hut, I nod to both men, and Jisad, though blind, seems to notice the nod while Sarn doesn't.

I sigh and turn my back to them, and walk out to The Bleeds. This has not happened the way I imagined it.

Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
ACTION: $sarn_rescue_ink
FOR_LOCATION: $start_bogus_location
COMMAND: N/A

INK:
The fight is over. I wheel around and turn to my brother. He looks at the dead jailer, then at me. Does he even recognize me?

* “I came for you.”

“For me,” Sarn says. <>

* “It’s me, Aren.”

“Aren,” he says. <>

-

<> I wait a little, but there’s nothing more.

* “What did they do to you?”

No response. <>

* “I guess karma finally caught up with you, brother.”

And yet, I feel none of the satisfaction I expected. <>

-

<> Sarn just stands there, as if waiting for orders. From whom, though? The jailer is dead.


// —--
ACTION: $take_sarn_to_bleeds
COMMAND: Take Sarn to safety
FOR_LOCATION: $smithy
PREREQUISITES:
!c.getRoomRoaming().monstersAlive

INK:
I usher Sarn out of the smithy and through the places I know, downwards. Sarn is obedient but slow to react. I can’t risk combat with my brother in tow.

If anyone is to kill him, it is going to be me.

After a tedious journey down the Pyramid, we arrive at the Bleeds.

[[CODE]]
c.movePlayer('bleeds_main');
[[ENDCODE]]

[[RULESET]]
[[RULE]]
c.knows(JisadFacts.name)
[[THEN]]
I look for a place to rest, and see Jisad’s porch.

“Brother, you say?” Jisad says after I ask for help. “Take chairs from the kitchen and bring them. You can sit beside me.”
[[ENDRULE]]
[[RULE]]
// Don’t know Jisad.
$DEFAULT
[[THEN]]
I look for a place to rest. The only dwelling that could be even remotely described as inviting is a little house with a porch and a man sitting outside.

I approach him and realize that the man is blind.

“I’m Jisad,” the man tells me. “Welcome to San Francisco.”

[[CODE]]
c.learn(JisadFacts.name);
[[ENDCODE]]

I ask if I can rest with my brother on his porch.

“Brother, you say?” Jisad asks. “Take chairs from the kitchen and bring them. You can sit beside me.”
[[ENDRULE]]
[[ENDRULESET]]

In a moment, Sarn, Jisad and I sit on the porch, facing the center of the Bleeds. Briny wind ruffles our hair and chills our hands.

* “Are you okay now, Sarn?”

“Yes,” he says. But it’s a mechanical answer. He’s getting worse. <>

* “Snap out of it, brother.”

No response, of course. <>

-

<> During our descent from the top of the Pyramid, Sarn reacted less and less, with shorter sentences. I realize that the scumbag is dying. Something in my brother is dying.

“The fight is not over.”

I turn around in surprise. This is Jisad talking.

* “What do you mean?”

“There are things larger than ourselves,” Jisad says, straightening on his seat. “Larger than life. We can take what we want for ourselves, we can solve our own little problems.”

Jisad touches just below his missing eyes.

“But that doesn’t mean the fight is over. The fight is not over.”

* “What fight?”

“You came here to accomplish something,” Jisad says. “Everyone does. And you succeeded.”

He turns to me, as if trying to make eye contact.

“Congratulations.”

* * “I achieved nothing.”

“Your brother,” Jisad says, and stops there. There’s a pause.

* * “Thank you.”

-

“The real fight is larger," Jisad continues. "It carries on even after we die. If you take up _that_ fight, you become immortal.”

[[CODE]]
c.markHappened(evTookSarnToBleeds);
[[ENDCODE]]
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
APPROACH: $junction FROM $barracks
APPROACH: $junction FROM $elevator_28
APPROACH: $junction FROM $reservoir
APPROACH: $junction FROM $smithy
APPROACH: $junction FROM $cockroach_farm

APPROACH: $junction FROM $smithy
PREREQUISITES:
// Between the two events, there is no way from the $smithy.
!c.hasHappened(evSavedSarn)
||
c.hasHappened(evTookSarnToBleeds)


// ---
ROOM: $junction

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ I am in a maze of twisty little passages, all alike. All crawling with cockroach

DESCRIPTION: $NONE

// TODO: examine - learn this is a farm

// ---
ROOM: $cockroach_farm_after_open_dam
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ generateBattlefieldFight
DESCRIPTION: $NONE

AFTER_MONSTERS_CLEARED:
[We] stand in the middle of this large room and for the first time I notice the faint smell of old, dried blood. Except for the new ones, there is no corpse here. The orcs moved them elsewhere, or maybe they just tossed them through the window panes. The blood, though, they did not clear. And so death is here, filling the room, like steam fills a room after hot bath.
The fight is over. [We] stand in the middle of this large room and for the first time I notice the faint smell of old, dried blood. Except for the new ones, there is no corpse here. The orcs moved them elsewhere, or maybe they just tossed them through the window panes. The blood, though, they did not clear. And so death is here, filling the room, like steam fills a room after hot bath.

A glorious battle this was, I'm sure. It became a scab.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ w.actionHasBeenPerformed("talk_to_oracle_greetings")
COMPLETE_SUCCESS_DESCRIPTION:
"I worked there as a kid."

TODO

[[CODE]]
c.learn(KeepGateFacts.oracleWorkedInKeep);
[[ENDCODE]]
Expand All @@ -55,6 +57,8 @@ c.knows(KeepGateFacts.oracleWorkedInKeep)
COMPLETE_SUCCESS_DESCRIPTION:
Oracle describes a convoluted series of steps to open the gate.

TODO

[[CODE]]
c.learn(KeepGateFacts.keepGateUnlock);
[[ENDCODE]]
Expand All @@ -75,6 +79,8 @@ c.hasItem(northSkullId)
COMPLETE_SUCCESS_DESCRIPTION:
Oracle is very thankful.

TODO

[[CODE]]
c.removeItemFromPlayer(northSkullId);
[[ENDCODE]]
Expand All @@ -94,7 +100,7 @@ c.knows(DogheadFacts.somethingCalledDoghead)
w.actionHasBeenPerformed("talk_to_oracle_greetings")

INK:
"There's a prophesy. A man with a dog's head will come and save this place. The Pyramid was never an easy place to live in. Even before the Orcs came, death and violence was common."
TODO "There's a prophesy. A man with a dog's head will come and save this place. The Pyramid was never an easy place to live in. Even before the Orcs came, death and violence was common."

[[CODE]]
c.learn(OrcsFacts.inPyramid);
Expand Down Expand Up @@ -211,7 +217,7 @@ w.actionHasBeenPerformed("talk_to_oracle_greetings")
c.knows(DeathlessFacts.somethingCalledDeathless)

INK:
"They are a cult. They worship the ancients, and all artifacts from them. They've been here in the Pyramid for longer than the farmers, or the Knight, or the orcs."
TODO "They are a cult. They worship the ancients, and all artifacts from them. They've been here in the Pyramid for longer than the farmers, or the Knight, or the orcs."

[[CODE]]
c.learn(OrcsFacts.inPyramid);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,15 +58,15 @@ c.hasHappened(evCaravanArrived) && !c.hasHappened(evCaravanDeparted)
[[THEN]]
With the caravan, the village is lively. The villagers have their doors open, talking with each other and with the arrivals.

The talking and commotion is especially vivid near the local trader's building. On the other end of the liveliness spectrum, there's a small dwelling with a porch here that most people ignore. A blind man sits there, wearing a coat.
The talking and commotion is especially vivid near the local trader's building. On the other end of the liveliness spectrum, there's a small dwelling with a porch here that most people ignore. [[IF c.knows(JisadFacts.name)]]Jisad sits there.[[ELSE]]A blind man sits there, wearing a coat.[[ENDIF]]
[[ENDRULE]]

[[RULE]]
$DEFAULT
[[THEN]]
At any point I can see at least a few villagers going about their business. They all walk fast and seldom talk to each other. [[IF !c.hasHappened(evQuake1)]]Something bad is happening.[[ENDIF]]

Every door is shut except for two. One is the entrance into the trader's shop. The second open door belongs to a small dwelling with a porch. A blind man sits outside on a stool, wearing a coat.
Every door is shut except for two. One is the entrance into the trader's shop. The second open door belongs to a small dwelling with a porch. [[IF c.knows(JisadFacts.name)]]Jisad sits outside on a stool.[[ELSE]]A blind man sits outside on a stool, wearing a coat.[[ENDIF]]
[[ENDRULE]]
[[ENDRULESET]]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ FOR_LOCATION: $bleeds_main

PREREQUISITES:
c.knows(JisadFacts.blindPerson)
&&
!c.knows(JisadFacts.name)

INK:
"Hello there. Nice to meet you! I am Jisad, the blind guide." He smiles.
Expand Down
23 changes: 21 additions & 2 deletions edgehead/assets/text/Knights/locations/096_bleeds/100_sarn.egb.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,27 @@
// ---
ACTION: $sarn_slap
ACTION: $sarn_talk_in_bleeds
COMMAND: Sarn >> Talk >> "What happened up there?"
FOR_LOCATION: $bleeds_main

PREREQUISITES:
c.hasHappened(evSavedSarn)

INK:
Sarn is unresponsive.
Sarn doesn't answer. He rocks back and forth and doesn't even look up.

* "Do you hear me?"

Sarn nods, almost imperceptibly. But the rocking continues, and <>

* "What happened to you?"

Sarn continues rocking, and <>

-

<> he keeps staring into distance.

Did I travel all this way, did I go through all this, for nothing? [[IF c.playerHasWoodenFoot]]My left foot starts to itch. The foot that isn't there anymore.[[ENDIF]][[IF c.playerHasAsthma]]I feel my lungs constrict. I fight off the urge to cough, and remember the cold, cold nights after my brother left.[[ENDIF]][[IF c.playerHasDebt]]My right hand makes a fist as I remember the months after my brother left, and the crippling debt that is still with us today.[[ENDIF]]


// ---
Expand Down Expand Up @@ -52,3 +66,8 @@ c.hasItem(letterFromFatherId)

COMPLETE_SUCCESS_DESCRIPTION:
Sarn listens intently. There seems to be a little bit of recognition in his face. By the time I finish reading, he looks happier, though still out of it.


NOTES:

There could be a Sarn >> Kill option if we wanted to be a lot darker. That would end the game? If not, then we'd have to tread carefully, especially around the ending. If we do end the game with killing Sarn, then the "Win" screen must reflect that it's just one of the choices.
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ FIRST_MAP_NAME: Smoke
FIRST_HINT: The smoke is black as death but the pillar is narrow. Looks like nothing more than a camp fire. Someone is not afraid to be found.

// This is not needed as of this writing, as we never re-visit. But we might change that in the future.
MAP_NAME: Ancient rubble
HINT: It's the place I met the goblin patrol.
MAP_NAME: Wilderness near the Bleeds
HINT: It's the place where I met the goblin patrol.

FIRST_DESCRIPTION:
There is no path in the direction of the smoke. [We] go through the brush and step over logs and ancient rubble.
Expand All @@ -24,7 +24,15 @@ When [we] come out of a particularly nasty shrub, I hear a short, guttural sound

"You lost, peasant?"

He doesn't wait for an answer and readies a spear. The spear is painted white: as white as the albino's skin.

The goblin is starting to advance towards me.


DESCRIPTION: $NONE

FIGHT_SITUATION:
generateBleedsGoblinSkirmishPatrol

AFTER_MONSTERS_CLEARED:
The fight is over.
Loading

0 comments on commit f0d3f88

Please sign in to comment.