type fixture : t { predicates { fixture_requires(fixture, o); reveals_item(fixture, o); reveals_readable(fixture, readable); hidden_readable(readable); sealed(fixture); fixture_keeps_use(fixture); fixture_consumes_use(fixture); } rules { use/fixture/item/keep :: $at(P, r) & $at(fixture, r) & sealed(fixture) & $in(o, I) & $fixture_requires(fixture, o) & $fixture_keeps_use(fixture) & stored_item(o') & $reveals_item(fixture, o') -> at(o', r); use/fixture/item/consume :: $at(P, r) & $at(fixture, r) & sealed(fixture) & in(o, I) & $fixture_requires(fixture, o) & $fixture_consumes_use(fixture) & stored_item(o') & $reveals_item(fixture, o') -> at(o', r); use/fixture/readable/keep :: $at(P, r) & $at(fixture, r) & sealed(fixture) & $in(o, I) & $fixture_requires(fixture, o) & $fixture_keeps_use(fixture) & hidden_readable(readable) & $reveals_readable(fixture, readable) -> at(readable, r); use/fixture/readable/consume :: $at(P, r) & $at(fixture, r) & sealed(fixture) & in(o, I) & $fixture_requires(fixture, o) & $fixture_consumes_use(fixture) & hidden_readable(readable) & $reveals_readable(fixture, readable) -> at(readable, r); } reverse_rules { use/fixture/item/keep :: use/fixture/item/keep; use/fixture/item/consume :: use/fixture/item/consume; use/fixture/readable/keep :: use/fixture/readable/keep; use/fixture/readable/consume :: use/fixture/readable/consume; } inform7 { type { kind :: "fixture-like"; definition :: "fixture-like is a kind of thing. fixture-like is fixed in place."; } predicates { fixture_requires(fixture, o) :: ""; reveals_item(fixture, o) :: ""; reveals_readable(fixture, readable) :: ""; hidden_readable(readable) :: ""; sealed(fixture) :: ""; fixture_keeps_use(fixture) :: ""; fixture_consumes_use(fixture) :: ""; } commands { use/fixture/item/keep :: "use {o} on {fixture}" :: "unlocking the {fixture} with the {o}"; use/fixture/item/consume :: "use {o} on {fixture}" :: "unlocking the {fixture} with the {o}"; use/fixture/readable/keep :: "use {o} on {fixture}" :: "unlocking the {fixture} with the {o}"; use/fixture/readable/consume :: "use {o} on {fixture}" :: "unlocking the {fixture} with the {o}"; } code :: """ Understand "use [something] on [something]" as unlocking it with. """; } }