game skeleton
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
package item
|
||||
|
||||
import (
|
||||
inkwell "git.teletypegames.org/engines/inkwell"
|
||||
|
||||
"realworld/internal/names"
|
||||
"realworld/internal/world"
|
||||
)
|
||||
|
||||
// blackMarketArmilla is flavour, not a quest trigger: the gap between
|
||||
// legitimised technology and street reality.
|
||||
func blackMarketArmilla() inkwell.Item {
|
||||
return inkwell.Item{
|
||||
Name: names.ItemBlackArmilla,
|
||||
Description: "black-market Armilla",
|
||||
OnUseSelf: inkwell.Seq(
|
||||
inkwell.Say(names.Paul, "Jailbroken. Pushes ads, but it was cheap."),
|
||||
world.TapeSay(names.Dex, "Two slots, and both of them lie about the temperature. Don't trade me in for it."),
|
||||
),
|
||||
OnUseWith: map[string]inkwell.Action{
|
||||
// An AUTHORED failure. Nothing is consumed, the character reacts,
|
||||
// the tape remarks. Never a generic error line.
|
||||
names.ItemNoodleLetter: inkwell.Seq(
|
||||
inkwell.Say(names.Paul, "A letter and a bracelet. Brilliant."),
|
||||
world.TapeSay(names.Dex, "Nothing. Which is what I'd charge for it."),
|
||||
),
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
// Package item registers the game's inventory items.
|
||||
//
|
||||
// Personal Tapes are inventory items and quest triggers at the same time: they
|
||||
// go into slot 2 of Paul's Armilla, and loading one activates its effect.
|
||||
package item
|
||||
|
||||
import (
|
||||
inkwell "git.teletypegames.org/engines/inkwell"
|
||||
|
||||
"realworld/internal/world"
|
||||
)
|
||||
|
||||
// Register adds every item to the game.
|
||||
func Register(w *world.World) {
|
||||
for _, i := range []inkwell.Item{
|
||||
noodleLetter(),
|
||||
blackMarketArmilla(),
|
||||
mysteryTape(),
|
||||
} {
|
||||
w.G.ItemManager.Register(i)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package item
|
||||
|
||||
import (
|
||||
inkwell "git.teletypegames.org/engines/inkwell"
|
||||
|
||||
"realworld/internal/names"
|
||||
"realworld/internal/world"
|
||||
)
|
||||
|
||||
// mysteryTape is the engine of the investigation. Password-locked; it only
|
||||
// starts speaking after the club trigger (beat 6).
|
||||
func mysteryTape() inkwell.Item {
|
||||
return inkwell.Item{
|
||||
Name: names.ItemMysteryTape,
|
||||
Description: "unmarked Personal Tape",
|
||||
OnUseSelf: inkwell.Seq(
|
||||
inkwell.Say(names.Paul, "Password-locked. Of course."),
|
||||
world.TapeSay(names.Dex, "Put it in the second slot if you care that much. I did warn you."),
|
||||
),
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package item
|
||||
|
||||
import (
|
||||
inkwell "git.teletypegames.org/engines/inkwell"
|
||||
|
||||
"realworld/internal/names"
|
||||
"realworld/internal/world"
|
||||
)
|
||||
|
||||
// noodleLetter starts the story: it is what brings Paul to the city.
|
||||
func noodleLetter() inkwell.Item {
|
||||
return inkwell.Item{
|
||||
Name: names.ItemNoodleLetter,
|
||||
Description: "Noodle's letter",
|
||||
OnUseSelf: inkwell.Seq(
|
||||
inkwell.Say(names.Paul, "“Come out, Paul. Not a phone conversation.” That's all it says."),
|
||||
world.TapeSay(names.Dex, "And now you're here. And he isn't."),
|
||||
),
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user