Skip to main content

On Sale: GamesAssetsToolsTabletopComics
Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines
(+1)

I'm doing this on a text editor at work, so I hope I got it right:

booleans {
   has_bought_ring : boolean "false";
}
on_command {
   : match "get ring" {
      : if (is_present "ring" && !has_bought_ring) {
         : print "\"$100 please.\"";
      }
   }
   : match "buy ring;give money" {
      : if (is_present "ring") {
         : if (is_carried "money") {
            : set_true "has_bought_ring";
            : destroy "money";
            : print "\"It's yours.\"";
         }
         : print "No money.";
      }
   }
}

I am assuming that you are in a jewelry store with a ring on display. There is a shop attendant to sell you the ring. It costs $100. You have some money in your pocket. It happens to be $100. The money is destroyed when you buy the ring so that you can't use it again. After purchasing the ring, it is left for you to take. Alternatively, replace :destroy "money"; with :swap o1 = "money" o2 = "ring"; if you want the ring to be pocketted automatically.

A sample transcript might go like this:

> GET RING

"$100 please."

> BUY RING

"It's yours."

>GET RING

[auto redescribe occurs]