From e522a304138bad1695fcc6211ef179db24e39487 Mon Sep 17 00:00:00 2001 From: "Derek T. Jones" Date: Tue, 11 Aug 2026 22:10:36 -0700 Subject: [PATCH 1/5] Fill out the technical index, and let it admit what it lacks The index answered every lookup the same way: it announced that an entry had appeared on the screen, and then either printed one or said the entry was corrupted. Looking up the quarter therefore produced an entry that had come up on the screen and been damaged, when what the library really had to say about a quarter was nothing at all. Entries now hand their text back instead of printing it, which is what lets 'look up' find out whether there is one before announcing that anything has appeared. A subject with no branch falls out as UNDEFINED, and that is the whole of "the library doesn't cover it" -- so the bicycle repair kit and the quarter need no branch apiece saying so. Eighteen entries join the five that were there. Several carry a clue that the game otherwise leaves to be discovered by dying: that the counter reads the room and not the wearer, so coveralls do not turn the light green; that welding light blinds at once rather than by degrees; that the airlock does not check whether anyone is ready. The rest are there because a library with five entries is not a library. Also here, all in the room being worked on: - The cartridges are an object now. They were the first noun in the room description and the only one that could not be looked at. - never_read was set TRUE and never cleared, so the index introduced itself as if for the first time however often it was read. - "the walls are lines with", "artifical", "physican". --- games/starship.arch | 284 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 235 insertions(+), 49 deletions(-) diff --git a/games/starship.arch b/games/starship.arch index 37d5f2e..bef58e7 100644 --- a/games/starship.arch +++ b/games/starship.arch @@ -2335,7 +2335,7 @@ methods 'fore' : briefing_room 'LONGDESC' : { ->>I'm standing in the ship's technical library. The walls are lines with +>>I'm standing in the ship's technical library. The walls are lined with >>thousands of cartridges; an enormous screen set into one wall reads >>"INDEX" in large letters across its screen; there is smaller writing >>beneath that. @@ -2344,6 +2344,32 @@ methods end +# The walls the room description mentions. There is nothing to be done with +# them, but they are the first thing anybody standing in here will try to +# look at, and the index has something to say about them. + +scenery cartridges + + desc : "cartridges" + syn : "cartridge" + pronoun : "them" + location : library + +methods + + 'INDEF' : "some " & desc + + 'get' : >>Not much point; there's nothing to read them with but the room. + + 'look' : { +>>Thousands of them, racked from the deck to well above my head: each one a +>>finger's length of dull grey plastic with a printed number on the end and +>>nothing else to say for itself. + } + +end + + readable tech_index desc : "technical index" @@ -2351,13 +2377,20 @@ readable tech_index never_read : TRUE + # Scratch space for the entry 'look up' is about to put on the screen, in + # the manner of the direction class's destination. + + entry : UNDEFINED + methods 'look' : >>There's some writing on the screen. 'read' : { - if never_read then + if never_read then { >>Reading the instructions, I discover the following: + never_read := FALSE + } else >>Once again: write "I can \"look up\" any object in the index; ", @@ -2365,59 +2398,212 @@ methods "on it, the entry will be displayed on this screen." } + # What the library holds. An entry hands its text back instead of printing + # it, which is what lets 'look up' find out whether there is one before + # announcing that anything has appeared on the screen. A subject with no + # branch here comes back UNDEFINED, and that is the whole of what "the + # library doesn't cover it" amounts to. + # + # Plenty of what is aboard has no business in a technical library -- a + # bicycle repair kit, a quarter, a towel -- and those are better served + # falling through to nothing than each collecting an entry to say so. + + 'ENTRY' : + case main.subj of { + + # Power + + antimatter_cell : + "Small antimatter cells are the standard high-output power source " & + "aboard, and drive everything from the gravlifter's hand unit to " & + "sidearms. The output is prodigious and cannot be throttled: a " & + "device built around a cell is built to survive one, while a " & + "device that merely accepts one will do the most violent thing it " & + "is capable of doing. Where fine work is wanted, a weaker source " & + "is called for." + + battery : + "The nine-volt dry cell is the humblest source in the catalogue, " & + "carried for instruments rather than for equipment: clocks, " & + "calculators, hand tools with nothing in them that turns. It " & + "fits the same standard socket as far more serious cells, which " & + "is a convenience to the technician and ought to be a caution to " & + "everybody else." + + # Extravehicular + + spacesuit : + "Standard out-of-ship equipment is comprised " & + "primarily of this rubber and vinyl spacesuit. The " & + "suit is one piece all the way through the gloves and " & + "boots; the only separate pieces are the helmet and " & + "air tanks." + + helmet : + "The helmet seals to the suit collar and holds a few minutes of " & + "air on its own. That reserve is meant to cover the moment " & + "between one supply and the next and nothing more ambitious than " & + "that. It is counted as a separate piece of equipment because it " & + "is separately fatal to forget." + + scuba_tanks : + "Air tanks are charged to thirty minutes and are refilled from " & + "the compressor in the recreation area, ship's air being at the " & + "wrong pressure for the purpose. The gauge on the side is " & + "honest. It is meant to be read before going out rather than " & + "during." + + airlock : + "Cycling the airlock evacuates the antechamber, and it does not " & + "ask whether anybody standing in the antechamber is ready. Full " & + "kit is a suit without holes, a helmet worn rather than carried, " & + "and a charged air supply. The absence of any one of them is " & + "sufficient by itself." + + # Radiation + + geiger_counter : + "The portable counter reports on its surroundings and not on its " & + "operator. The light shows green in clear air and flashes red " & + "near anything active. It draws so little power that its switch " & + "is the only thing standing between it and a reading, and one " & + "carried through the ship switched off has nothing whatever to " & + "say. Note that protective clothing shields the wearer and not " & + "the instrument: a red light inside a suit that is keeping you " & + "alive is the counter working exactly as designed." + + lead_coveralls : + "Lead-lined coveralls are heavy, unlovely, and the only thing " & + "aboard that makes the storage areas somewhere a person can " & + "linger. They protect whoever is wearing them, which is worth " & + "stating plainly: carrying them is not wearing them." + + uranium : + "Reactor fuel is cast in blocks and stored well away from the " & + "engine room until it is wanted. A block is far past anything " & + "that can be lifted and is fitted underneath for gravlifting. " & + "Exposure without protective clothing accumulates rather than " & + "passes, and the early symptoms are mild enough to be mistaken " & + "for the ship's own stale air." + + lead_waste : + "Spent fuel is inert and none the lighter for it. A block of it " & + "stands in the reactor chamber between firings and is swapped out " & + "rather than carried off; like the fuel it stands in for, it is " & + "fitted for gravlifting." + + reactor : + "The reactor chamber is a room rather than a machine: the " & + "hexagonal space aft of the engine room is the vessel itself, and " & + "fuelling it is a question of what is standing in it and what is " & + "not. The chamber door is shielding and not a formality. " & + "Engines are started from the panel in the engine room, and the " & + "panel will say what it believes the chamber to contain." + + # Ship systems + + elevator : + "The turbolift serves all six levels and takes its instructions " & + "by voice, there being deliberately no controls inside it for the " & + "benefit of a crew member arriving with full hands. It says what " & + "it wants and will wait indefinitely to be told. It will not " & + "open onto a level with no atmosphere." + + gravlifter : + "The anti-gravitational gravlifter, or \"lifter\", " & + "is a device " & + "which temporarily neutralizes the " & + "ship's artificial gravity over a small region. " & + "The portable hand-held unit is only half of the " & + "device; the other half is a tray with an outlet that fits the " & + "hand-held unit's plug. The tray generally covers the entire " & + "lower surface of the object to be lifted. The hand-held unit " & + "contains all the power and must be supplied with an " & + "antimatter cell in order to work." + + hand_blaster : + "Apparently its primary feature is the power focusing crystal " & + "in the barrel; it is normally powered with an antimatter cell " & + "so that it acts as a destructive weapon, but when powered " & + "with a much weaker source, it can act as either a light, a " & + "surgical instrument, or even an arc welder, depending on the " & + "strength of the power cell. A power source as weak " & + "as a calculator battery is usually sufficient for " & + "arc welding. Eye protection is not optional at welding " & + "intensities: the flash is bright enough to take a person's " & + "sight, and does so at once rather than by degrees." + + sheet_metal : + "Sheet stock is carried against hull damage and is welded into " & + "place rather than fastened; there is nothing in the ship's kit " & + "that will hold a plate against vacuum by gripping it." + + air_compressor : + "The compressor in the recreation area is an antique and runs on " & + "liquid fuel, which is why a can of the stuff is kept in the " & + "janitor's closet and nowhere else aboard. It is started by " & + "hand. It has been known to want encouragement." + + medical_couch : + "The automated medical couch located in Sickbay is a " & + "sophisticated device capable of diagnosing and curing a wide " & + "range of commonly recognized ailments. Its primary function " & + "is to detect and repair cell damage; it can recognize other " & + "ailments but cannot always cure them - there is no substitute " & + "for a knowledgeable physician." + + coffin : + "The cryogenic suspension cell, or \"coffin\", as it is " & + "commonly called because of its appearance, is used for " & + "keeping the occupant alive and monitoring their health. " & + "It performs the functions of initial freezing, " & + "maintenance, and thawing of the suspended individual. These " & + "functions are tied into the main computer so that a given " & + "individual can be awakened should the computer determine that " & + "their specialty is required." + + # Odds and ends the library was talked into carrying + + calculator : + "Personal instruments are the owner's affair, but the standard " & + "scientific calculator earns a line here for its back cover, " & + "which is not meant to come off in the field. The thin slot " & + "beside it wants something flat, and nothing in the ship's tool " & + "kit is flat enough." + + vending_machine : + "The kitchenette dispenser is coin-operated, a decision taken by " & + "somebody who had never been three years away from the nearest " & + "coin. It does not give change. It does not give anything back." + + cartridges : + "Library cartridges are read by the room and not by hand; there " & + "has been no portable reader aboard since the refit before last. " & + "The index is the way in." + + tech_index : "INDEX: see INDEX." + + # The one entry that was here and is not any more. Whatever the + # library used to know about the ship's officers, it has lost. + + captains_ID : + "Unfortunately the entry seems to be corrupted; " & + "I can't make it out." + + } # case + 'look up' : if main.dobj and main.dobj ~= self then write "I don't know how to look up anything in ", 'INDEF' -> main.dobj, "." + else if not (entry := 'ENTRY' -> self) then + write "I look up ", 'DEF' -> main.subj, + "; the screen prints NO SUCH ENTRY. It is, after all, a ", + "technical library." else { write "The entry for ", 'DEF' -> main.subj, " appears on the screen." - case main.subj of { - medical_couch : - write "The automated medical couch located in Sickbay is a ", - "sophisticated device capable of diagnosing and curing a wide ", - "range of commonly recognized ailments. Its primary function ", - "is to detect and repair cell damage; it can recognize other ", - "ailments but cannot always cure them - there is no substitute ", - "for a knowledgeable physican." - coffin : - write "The cryogenic suspension cell, or \"coffin\", as it is ", - "commonly called because of its appearance, is used for ", - "keeping the occupant alive and monitoring their health. ", - "It performs the functions of initial freezing, ", - "maintenance, and thawing of the suspended individual. These ", - "functions are tied into the main computer so that a given ", - "individual can be awakened should the computer determine that ", - "their specialty is required." - spacesuit : write "Standard out-of-ship equipment is comprised ", - "primarily of this rubber and vinyl spacesuit. The ", - "suit is one piece all the way through the gloves and ", - "boots; the only separate pieces are the helmet and ", - "air tanks." - gravlifter : - write "The anti-gravitational gravlifter, or \"lifter\", ", - "is a device ", - "which temporarily neutralizes the ", - "ship's artifical gravity over a small region. ", - "The portable hand-held unit is only half of the ", - "device; the other half is a tray with an outlet that fits the ", - "hand-held unit's plug. The tray generally covers the entire ", - "lower surface of the object to be lifted. The hand-held unit ", - "contains all the power and must be supplied with an ", - "antimatter cell in order to work." - hand_blaster : - write "Apparently its primary feature is the power focusing crystal ", - "in the barrel; it is normally powered with an antimatter cell ", - "so that it acts as a destructive weapon, but when powered ", - "with a much weaker source, it can act as either a light, a ", - "surgical instrument, or even an arc welder, depending on the ", - "strength of the power cell. A power source as weak ", - "as a calculator battery is usually sufficient for ", - "arc welding." - default : - write "Unfortunately the entry seems to be corrupted; ", - "I can't make it out." - } # case - } # else + write entry + } end From 288ecaa6787bc76f8f01783b991311454f01efae Mon Sep 17 00:00:00 2001 From: "Derek T. Jones" Date: Wed, 12 Aug 2026 11:39:25 -0700 Subject: [PATCH 2/5] Let each object answer for its own index entry The entries were a case statement over main.subj: a dispatch table written by hand, which is the one thing an object language should not need. It could also only ever yield text, so an entry had no way to give a hint that depended on anything, or to have any effect at all. Objects answer 'TechnicalIndexLookup' for themselves now. Whether the library covers a subject is the subject's own business, and an unhandled message comes back ABSENT, which is the whole of "not covered" -- the bicycle repair kit and the quarter are left out by having nothing written about them anywhere, rather than by being named in a default branch. The same test the parser already uses on 'look' in gorreven_lex. Sending is also the asking, so an entry has printed itself by the time the answer arrives. The announcement therefore names the subject and promises nothing about what follows, which is true either way and has the side benefit of showing which object a word landed on. Two entries now say different things depending on the state of the thing they describe, which is the point of the change: the Geiger counter adds a note when it is switched off, and the calculator stops hinting at its back cover once the back cover is off. The entries themselves are >> text rather than concatenated string literals, so they read as prose in the source as well as on the screen. Examining the vending machine now prints its terms. The coin goes in and does not come out, and there is exactly one coin aboard; the trap stays, but a player standing in front of the machine can read NO REFUNDS, NO CHANGE GIVEN, ALL SALES FINAL before deciding. That is the difference between a mean puzzle and an unfair one. --- games/starship.arch | 413 ++++++++++++++++++++++---------------------- 1 file changed, 210 insertions(+), 203 deletions(-) diff --git a/games/starship.arch b/games/starship.arch index bef58e7..0462697 100644 --- a/games/starship.arch +++ b/games/starship.arch @@ -150,6 +150,15 @@ methods times -:= 1 } # else + 'TechnicalIndexLookup' : { +>>The cryogenic suspension cell, or "coffin", as it is commonly called +>>because of its appearance, is used for keeping the occupant alive and +>>monitoring their health. It performs the functions of initial freezing, +>>maintenance, and thawing of the suspended individual. These functions are +>>tied into the main computer so that a given individual can be awakened +>>should the computer determine that their specialty is required. + } + end @@ -361,6 +370,14 @@ methods >>There are no visible controls or buttons of any kind. } + 'TechnicalIndexLookup' : { +>>The turbolift serves all six levels and takes its instructions by voice, +>>there being deliberately no controls inside it for the benefit of a crew +>>member arriving with full hands. It says what it wants and will wait +>>indefinitely to be told. It will not open onto a level with no +>>atmosphere. + } + end @@ -619,6 +636,19 @@ methods else >>It isn't on. + 'TechnicalIndexLookup' : { +>>The portable counter reports on its surroundings and not on its operator. +>>The light shows green in clear air and flashes red near anything active. +>>It draws so little power that its switch is the only thing standing between +>>it and a reading. Note that protective clothing shields the wearer and not +>>the instrument: a red light inside a suit that is keeping you alive is the +>>counter working exactly as designed. + if not activated then { +>>I should remember, next time I have it in my hands, that a counter which is +>>switched off is a counter with nothing to say. + } + } + end @@ -742,6 +772,14 @@ methods 'lie down on' : 'sit on' 'lay down on' : 'sit on' + 'TechnicalIndexLookup' : { +>>The automated medical couch located in Sickbay is a sophisticated device +>>capable of diagnosing and curing a wide range of commonly recognized +>>ailments. Its primary function is to detect and repair cell damage; it can +>>recognize other ailments but cannot always cure them - there is no +>>substitute for a knowledgeable physician. + } + end @@ -905,6 +943,13 @@ methods >>they look pretty heavy. } + 'TechnicalIndexLookup' : { +>>Lead-lined coveralls are heavy, unlovely, and the only thing aboard that +>>makes the storage areas somewhere a person can linger. They protect +>>whoever is wearing them, which is worth stating plainly: carrying them is +>>not wearing them. + } + end @@ -1038,6 +1083,14 @@ stop "overcome... my last sensations are of pain and heat." } } + 'TechnicalIndexLookup' : { +>>Reactor fuel is cast in blocks and stored well away from the engine room +>>until it is wanted. A block is far past anything that can be lifted and is +>>fitted underneath for gravlifting. Exposure without protective clothing +>>accumulates rather than passes, and the early symptoms are mild enough to +>>be mistaken for the ship's own stale air. + } + end @@ -1079,6 +1132,12 @@ methods location := player.location; 'MOVE' } + 'TechnicalIndexLookup' : { +>>Sheet stock is carried against hull damage and is welded into place rather +>>than fastened; there is nothing in the ship's kit that will hold a plate +>>against vacuum by gripping it. + } + end @@ -1111,6 +1170,17 @@ powersource antimatter_cell desc : "small antimatter cell" location : hand_blaster +methods + + 'TechnicalIndexLookup' : { +>>Small antimatter cells are the standard high-output power source aboard, +>>and drive everything from the gravlifter's hand unit to sidearms. The +>>output is prodigious and cannot be throttled: a device built around a cell +>>is built to survive one, while a device that merely accepts one will do the +>>most violent thing it is capable of doing. Where fine work is wanted, a +>>weaker source is called for. + } + end @@ -1210,6 +1280,17 @@ methods main.subj.location := UNDEFINED; 'MOVE' -> main.subj } + 'TechnicalIndexLookup' : { +>>Apparently its primary feature is the power focusing crystal in the barrel; +>>it is normally powered with an antimatter cell so that it acts as a +>>destructive weapon, but when powered with a much weaker source, it can act +>>as either a light, a surgical instrument, or even an arc welder, depending +>>on the strength of the power cell. A power source as weak as a calculator +>>battery is usually sufficient for arc welding. Eye protection is not +>>optional at welding intensities: the flash is bright enough to take a +>>person's sight, and does so at once rather than by degrees. + } + end @@ -1308,6 +1389,14 @@ methods "vents, and rods cover the walls. The room is hexagonal ", "and barely large enough to stand in." + 'TechnicalIndexLookup' : { +>>The reactor chamber is a room rather than a machine: the hexagonal space +>>aft of the engine room is the vessel itself, and fuelling it is a question +>>of what is standing in it and what is not. The chamber door is shielding +>>and not a formality. Engines are started from the panel in the engine +>>room, and the panel will say what it believes the chamber to contain. + } + end @@ -1318,6 +1407,14 @@ gravhalf lead_waste size : 100 +methods + + 'TechnicalIndexLookup' : { +>>Spent fuel is inert and none the lighter for it. A block of it stands in +>>the reactor chamber between firings and is swapped out rather than carried +>>off; like the fuel it stands in for, it is fitted for gravlifting. + } + end @@ -1362,6 +1459,13 @@ methods write } + 'TechnicalIndexLookup' : { +>>The helmet seals to the suit collar and holds a few minutes of air on its +>>own. That reserve is meant to cover the moment between one supply and the +>>next, and nothing more ambitious than that. It is counted as a separate +>>piece of equipment because it is separately fatal to forget. + } + end @@ -1400,6 +1504,12 @@ methods else write "I don't think ", 'DEF' -> main.dobj, " is working." + 'TechnicalIndexLookup' : { +>>Standard out-of-ship equipment is comprised primarily of this rubber and +>>vinyl spacesuit. The suit is one piece all the way through the gloves and +>>boots; the only separate pieces are the helmet and air tanks. + } + end @@ -1555,6 +1665,13 @@ methods 'exit' --> hollow_object } + 'TechnicalIndexLookup' : { +>>Cycling the airlock evacuates the antechamber, and it does not ask whether +>>anybody standing in the antechamber is ready. Full kit is a suit without +>>holes, a helmet worn rather than carried, and a charged air supply. The +>>absence of any one of them is sufficient by itself. + } + end @@ -1730,6 +1847,20 @@ methods else write "I try ", 'DEF' -> main.dobj, ", but I still can't open it." + 'TechnicalIndexLookup' : { +>>Personal instruments are the owner's affair, but the standard scientific +>>calculator earns a line here for its back cover, which is not meant to come +>>off in the field. + if open then { +>>This one is open already, which the manufacturer would want recorded as a +>>violation of the warranty. + } + else { +>>The thin slot beside it wants something flat, and nothing in the ship's +>>tool kit is flat enough. + } + } + end @@ -1738,6 +1869,16 @@ powersource battery desc : "nine-volt battery" location : calculator +methods + + 'TechnicalIndexLookup' : { +>>The nine-volt dry cell is the humblest source in the catalogue, carried for +>>instruments rather than for equipment: clocks, calculators, hand tools with +>>nothing in them that turns. It fits the same standard socket as far more +>>serious cells, which is a convenience to the technician and ought to be a +>>caution to everybody else. + } + end @@ -1860,6 +2001,12 @@ object captains_ID syn : "id|card|ID card|captain's ID" location : wallet +methods + + 'TechnicalIndexLookup' : { +>>Unfortunately the entry seems to be corrupted; I can't make it out. + } + end @@ -1894,6 +2041,16 @@ methods 'get' : >>It's way too heavy; not to mention bulky. + # The coin goes in and does not come out, and there is exactly one coin + # aboard. The trap stays; printing the terms where somebody is already + # looking is the difference between a mean puzzle and an unfair one. + + 'look' : { +>>A tall machine with a cloudy plastic front and a coin slot worn bright at +>>the edges. A strip of small print along the bottom reads: NO REFUNDS. NO +>>CHANGE GIVEN. ALL SALES FINAL. + } + 'Insert Me' : if sender ~= quarter then >>Only quarters fit. @@ -1904,6 +2061,12 @@ methods 'MENTION SELF' -> gatorade } + 'TechnicalIndexLookup' : { +>>The kitchenette dispenser is coin-operated, a decision taken by somebody +>>who had never been three years away from the nearest coin. It does not +>>give change. It does not give anything back. + } + end @@ -2070,6 +2233,13 @@ methods write "A gauge on the tanks says there are ", minutes, " minutes remaining." + 'TechnicalIndexLookup' : { +>>Air tanks are charged to thirty minutes and are refilled from the +>>compressor in the recreation area, ship's air being at the wrong pressure +>>for the purpose. The gauge on the side is honest. It is meant to be read +>>before going out rather than during. + } + end @@ -2146,6 +2316,13 @@ methods fueled := TRUE } + 'TechnicalIndexLookup' : { +>>The compressor in the recreation area is an antique and runs on liquid +>>fuel, which is why a can of the stuff is kept in the janitor's closet and +>>nowhere else aboard. It is started by hand. It has been known to want +>>encouragement. + } + end @@ -2322,6 +2499,16 @@ methods else write "It's not plugged into ", 'DEF' -> main.dobj, "." + 'TechnicalIndexLookup' : { +>>The anti-gravitational gravlifter, or "lifter", is a device which +>>temporarily neutralizes the ship's artificial gravity over a small region. +>>The portable hand-held unit is only half of the device; the other half is a +>>tray with an outlet that fits the hand-held unit's plug. The tray +>>generally covers the entire lower surface of the object to be lifted. The +>>hand-held unit contains all the power and must be supplied with an +>>antimatter cell in order to work. + } + end @@ -2367,6 +2554,12 @@ methods >>nothing else to say for itself. } + 'TechnicalIndexLookup' : { +>>Library cartridges are read by the room and not by hand; there has been no +>>portable reader aboard since the refit before last. The index is the way +>>in. + } + end @@ -2377,11 +2570,6 @@ readable tech_index never_read : TRUE - # Scratch space for the entry 'look up' is about to put on the screen, in - # the manner of the direction class's destination. - - entry : UNDEFINED - methods 'look' : >>There's some writing on the screen. @@ -2398,213 +2586,32 @@ methods "on it, the entry will be displayed on this screen." } - # What the library holds. An entry hands its text back instead of printing - # it, which is what lets 'look up' find out whether there is one before - # announcing that anything has appeared on the screen. A subject with no - # branch here comes back UNDEFINED, and that is the whole of what "the - # library doesn't cover it" amounts to. + # Whether the library covers a subject is the subject's own business. An + # object that has something to say about itself answers this message; one + # that has not lets it fall through, and an unhandled message comes back + # ABSENT, which is the whole of "the library doesn't cover it". A bicycle + # repair kit and a quarter need nothing written anywhere to be left out. # - # Plenty of what is aboard has no business in a technical library -- a - # bicycle repair kit, a quarter, a towel -- and those are better served - # falling through to nothing than each collecting an entry to say so. - - 'ENTRY' : - case main.subj of { - - # Power - - antimatter_cell : - "Small antimatter cells are the standard high-output power source " & - "aboard, and drive everything from the gravlifter's hand unit to " & - "sidearms. The output is prodigious and cannot be throttled: a " & - "device built around a cell is built to survive one, while a " & - "device that merely accepts one will do the most violent thing it " & - "is capable of doing. Where fine work is wanted, a weaker source " & - "is called for." - - battery : - "The nine-volt dry cell is the humblest source in the catalogue, " & - "carried for instruments rather than for equipment: clocks, " & - "calculators, hand tools with nothing in them that turns. It " & - "fits the same standard socket as far more serious cells, which " & - "is a convenience to the technician and ought to be a caution to " & - "everybody else." - - # Extravehicular - - spacesuit : - "Standard out-of-ship equipment is comprised " & - "primarily of this rubber and vinyl spacesuit. The " & - "suit is one piece all the way through the gloves and " & - "boots; the only separate pieces are the helmet and " & - "air tanks." - - helmet : - "The helmet seals to the suit collar and holds a few minutes of " & - "air on its own. That reserve is meant to cover the moment " & - "between one supply and the next and nothing more ambitious than " & - "that. It is counted as a separate piece of equipment because it " & - "is separately fatal to forget." - - scuba_tanks : - "Air tanks are charged to thirty minutes and are refilled from " & - "the compressor in the recreation area, ship's air being at the " & - "wrong pressure for the purpose. The gauge on the side is " & - "honest. It is meant to be read before going out rather than " & - "during." - - airlock : - "Cycling the airlock evacuates the antechamber, and it does not " & - "ask whether anybody standing in the antechamber is ready. Full " & - "kit is a suit without holes, a helmet worn rather than carried, " & - "and a charged air supply. The absence of any one of them is " & - "sufficient by itself." - - # Radiation - - geiger_counter : - "The portable counter reports on its surroundings and not on its " & - "operator. The light shows green in clear air and flashes red " & - "near anything active. It draws so little power that its switch " & - "is the only thing standing between it and a reading, and one " & - "carried through the ship switched off has nothing whatever to " & - "say. Note that protective clothing shields the wearer and not " & - "the instrument: a red light inside a suit that is keeping you " & - "alive is the counter working exactly as designed." - - lead_coveralls : - "Lead-lined coveralls are heavy, unlovely, and the only thing " & - "aboard that makes the storage areas somewhere a person can " & - "linger. They protect whoever is wearing them, which is worth " & - "stating plainly: carrying them is not wearing them." - - uranium : - "Reactor fuel is cast in blocks and stored well away from the " & - "engine room until it is wanted. A block is far past anything " & - "that can be lifted and is fitted underneath for gravlifting. " & - "Exposure without protective clothing accumulates rather than " & - "passes, and the early symptoms are mild enough to be mistaken " & - "for the ship's own stale air." - - lead_waste : - "Spent fuel is inert and none the lighter for it. A block of it " & - "stands in the reactor chamber between firings and is swapped out " & - "rather than carried off; like the fuel it stands in for, it is " & - "fitted for gravlifting." - - reactor : - "The reactor chamber is a room rather than a machine: the " & - "hexagonal space aft of the engine room is the vessel itself, and " & - "fuelling it is a question of what is standing in it and what is " & - "not. The chamber door is shielding and not a formality. " & - "Engines are started from the panel in the engine room, and the " & - "panel will say what it believes the chamber to contain." - - # Ship systems - - elevator : - "The turbolift serves all six levels and takes its instructions " & - "by voice, there being deliberately no controls inside it for the " & - "benefit of a crew member arriving with full hands. It says what " & - "it wants and will wait indefinitely to be told. It will not " & - "open onto a level with no atmosphere." - - gravlifter : - "The anti-gravitational gravlifter, or \"lifter\", " & - "is a device " & - "which temporarily neutralizes the " & - "ship's artificial gravity over a small region. " & - "The portable hand-held unit is only half of the " & - "device; the other half is a tray with an outlet that fits the " & - "hand-held unit's plug. The tray generally covers the entire " & - "lower surface of the object to be lifted. The hand-held unit " & - "contains all the power and must be supplied with an " & - "antimatter cell in order to work." - - hand_blaster : - "Apparently its primary feature is the power focusing crystal " & - "in the barrel; it is normally powered with an antimatter cell " & - "so that it acts as a destructive weapon, but when powered " & - "with a much weaker source, it can act as either a light, a " & - "surgical instrument, or even an arc welder, depending on the " & - "strength of the power cell. A power source as weak " & - "as a calculator battery is usually sufficient for " & - "arc welding. Eye protection is not optional at welding " & - "intensities: the flash is bright enough to take a person's " & - "sight, and does so at once rather than by degrees." - - sheet_metal : - "Sheet stock is carried against hull damage and is welded into " & - "place rather than fastened; there is nothing in the ship's kit " & - "that will hold a plate against vacuum by gripping it." - - air_compressor : - "The compressor in the recreation area is an antique and runs on " & - "liquid fuel, which is why a can of the stuff is kept in the " & - "janitor's closet and nowhere else aboard. It is started by " & - "hand. It has been known to want encouragement." - - medical_couch : - "The automated medical couch located in Sickbay is a " & - "sophisticated device capable of diagnosing and curing a wide " & - "range of commonly recognized ailments. Its primary function " & - "is to detect and repair cell damage; it can recognize other " & - "ailments but cannot always cure them - there is no substitute " & - "for a knowledgeable physician." - - coffin : - "The cryogenic suspension cell, or \"coffin\", as it is " & - "commonly called because of its appearance, is used for " & - "keeping the occupant alive and monitoring their health. " & - "It performs the functions of initial freezing, " & - "maintenance, and thawing of the suspended individual. These " & - "functions are tied into the main computer so that a given " & - "individual can be awakened should the computer determine that " & - "their specialty is required." - - # Odds and ends the library was talked into carrying - - calculator : - "Personal instruments are the owner's affair, but the standard " & - "scientific calculator earns a line here for its back cover, " & - "which is not meant to come off in the field. The thin slot " & - "beside it wants something flat, and nothing in the ship's tool " & - "kit is flat enough." - - vending_machine : - "The kitchenette dispenser is coin-operated, a decision taken by " & - "somebody who had never been three years away from the nearest " & - "coin. It does not give change. It does not give anything back." - - cartridges : - "Library cartridges are read by the room and not by hand; there " & - "has been no portable reader aboard since the refit before last. " & - "The index is the way in." - - tech_index : "INDEX: see INDEX." - - # The one entry that was here and is not any more. Whatever the - # library used to know about the ship's officers, it has lost. - - captains_ID : - "Unfortunately the entry seems to be corrupted; " & - "I can't make it out." - - } # case + # Sending is also the asking, so an entry has already printed itself by the + # time the answer comes back. That is why the subject is named first and + # nothing is promised about what follows: the announcement has to be true + # whether an entry turns up or not. 'look up' : if main.dobj and main.dobj ~= self then write "I don't know how to look up anything in ", 'INDEF' -> main.dobj, "." - else if not (entry := 'ENTRY' -> self) then - write "I look up ", 'DEF' -> main.subj, - "; the screen prints NO SUCH ENTRY. It is, after all, a ", - "technical library." else { - write "The entry for ", 'DEF' -> main.subj, " appears on the screen." - write entry + write "I look up ", 'DEF' -> main.subj, " in the index." + if ('TechnicalIndexLookup' -> main.subj) = ABSENT then { +>>The screen prints NO SUCH ENTRY. It is, after all, a technical library. + } } + 'TechnicalIndexLookup' : { +>>INDEX: see INDEX. + } + end From ba411271544d3837446bcf12ad6bb00b5ab422f7 Mon Sep 17 00:00:00 2001 From: "Derek T. Jones" Date: Wed, 12 Aug 2026 17:04:28 -0700 Subject: [PATCH 3/5] Corrections to voice and reveal of technical index. Also a stylistic change to model "wall of text" wiki-style expressions as single statements, usually aligned against the left edge of the editor. These are text more than they are code, and I like them to read that way in those contexts. Also made a change throughout starship.arch to use `---` as my em dash instead of ` -- ` and especially more than ` - `, in anticipation of markdown work. I haven't checked how that impacts word-wrap. --- games/bare.arch | 12 ++-- games/starship.arch | 159 ++++++++++++++++---------------------------- 2 files changed, 66 insertions(+), 105 deletions(-) diff --git a/games/bare.arch b/games/bare.arch index f2aa500..6d41ace 100644 --- a/games/bare.arch +++ b/games/bare.arch @@ -84,10 +84,14 @@ methods # is in the room. Note the use of the write statement: just one string # after the other is printed with no regard to margins. This is OK because # it will wrap the words automatically. - 'FIRSTDESC' : >>Welcome to the demonstration adventure! - >>What you are seeing here is the 'FIRSTDESC' method. - >>Although in this case there is only some writing, there is no problem - >>with putting other executable statements here as well. + 'FIRSTDESC' : +>>Welcome to the demonstration adventure! +>>What you are seeing here is the 'FIRSTDESC' method. +>>Although in this case there is only some writing, there is no problem +>>with putting other executable statements here as well. +>>The '>>' operators chain to create a single statement, so be careful; +>>if you want other executable statements, put braces around this +>>sequence. # The LONGDESC message is sent when the player first sees the room and also # whenever they type "look" by itself at the prompt. diff --git a/games/starship.arch b/games/starship.arch index 0462697..5521a44 100644 --- a/games/starship.arch +++ b/games/starship.arch @@ -84,7 +84,7 @@ methods >>I am awake. >> >>There is nothing to see; my eyes cannot focus on anything. ->>Something is happening around me - happening to me. I feel sharp, +>>Something is happening around me---happening to me. I feel sharp, >>prickling pains along my arms and in my neck, and the sound of tiny >>motors, a sense of something withdrawing from my body. >> @@ -150,14 +150,13 @@ methods times -:= 1 } # else - 'TechnicalIndexLookup' : { + 'TechnicalIndexLookup' : >>The cryogenic suspension cell, or "coffin", as it is commonly called >>because of its appearance, is used for keeping the occupant alive and >>monitoring their health. It performs the functions of initial freezing, >>maintenance, and thawing of the suspended individual. These functions are >>tied into the main computer so that a given individual can be awakened >>should the computer determine that their specialty is required. - } end @@ -370,13 +369,12 @@ methods >>There are no visible controls or buttons of any kind. } - 'TechnicalIndexLookup' : { + 'TechnicalIndexLookup' : >>The turbolift serves all six levels and takes its instructions by voice, >>there being deliberately no controls inside it for the benefit of a crew >>member arriving with full hands. It says what it wants and will wait >>indefinitely to be told. It will not open onto a level with no >>atmosphere. - } end @@ -504,7 +502,7 @@ methods 'read' : { if not viewed then { >>The diary seems to belong to the doctor; he has kept extensive notes ->>on his patients - which are of course the crewmembers. The paper is +>>on his patients---which are of course the crewmembers. The paper is >>old by now and crackles when I turn the pages. I am struck by the >>fact that it has probably been many years since all of us went into >>those glass coffins. Most of the entries are personal and I feel like @@ -514,7 +512,7 @@ methods >> viewed := TRUE } ->> "May 17, 2321 - This morning we made the last of the preparations +>> "May 17, 2321---This morning we made the last of the preparations >> before Nap Time, as we have started to refer to the upcoming cryogenic >> suspension. All ship's stores have been removed to the far end of the >> ship and sealed off until arrival. The navigator has laid in our @@ -637,15 +635,12 @@ methods >>It isn't on. 'TechnicalIndexLookup' : { ->>The portable counter reports on its surroundings and not on its operator. ->>The light shows green in clear air and flashes red near anything active. ->>It draws so little power that its switch is the only thing standing between ->>it and a reading. Note that protective clothing shields the wearer and not ->>the instrument: a red light inside a suit that is keeping you alive is the ->>counter working exactly as designed. +>>This portable counter reports the radation present in its surroundings. +>>The light shows green when levels are safe, and red when levels are +>>too high to be safe when not wearing protective clothing. if not activated then { >>I should remember, next time I have it in my hands, that a counter which is ->>switched off is a counter with nothing to say. +>>switched off doesn't do any counting. } } @@ -772,13 +767,12 @@ methods 'lie down on' : 'sit on' 'lay down on' : 'sit on' - 'TechnicalIndexLookup' : { + 'TechnicalIndexLookup' : >>The automated medical couch located in Sickbay is a sophisticated device >>capable of diagnosing and curing a wide range of commonly recognized >>ailments. Its primary function is to detect and repair cell damage; it can ->>recognize other ailments but cannot always cure them - there is no +>>recognize other ailments but cannot always cure them---there is no >>substitute for a knowledgeable physician. - } end @@ -943,12 +937,9 @@ methods >>they look pretty heavy. } - 'TechnicalIndexLookup' : { + 'TechnicalIndexLookup' : >>Lead-lined coveralls are heavy, unlovely, and the only thing aboard that ->>makes the storage areas somewhere a person can linger. They protect ->>whoever is wearing them, which is worth stating plainly: carrying them is ->>not wearing them. - } +>>lets the wearer linger in a place where radiation levels are high. end @@ -1083,13 +1074,10 @@ stop "overcome... my last sensations are of pain and heat." } } - 'TechnicalIndexLookup' : { ->>Reactor fuel is cast in blocks and stored well away from the engine room ->>until it is wanted. A block is far past anything that can be lifted and is ->>fitted underneath for gravlifting. Exposure without protective clothing ->>accumulates rather than passes, and the early symptoms are mild enough to ->>be mistaken for the ship's own stale air. - } + 'TechnicalIndexLookup' : +>>The highly radioactive reactor fuel is cast in blocks and stored well +>>away from the engine room until it is wanted. A block is far too heavy +>>to lift and is fitted underneath for gravlifting. end @@ -1132,11 +1120,10 @@ methods location := player.location; 'MOVE' } - 'TechnicalIndexLookup' : { ->>Sheet stock is carried against hull damage and is welded into place rather ->>than fastened; there is nothing in the ship's kit that will hold a plate ->>against vacuum by gripping it. - } + 'TechnicalIndexLookup' : +>>Sheet stock is carried to repair hull damage and must be welded into place. +>>There is nothing in the ship's stores that will hold something this heavy +>>by gripping it. end @@ -1172,14 +1159,13 @@ powersource antimatter_cell methods - 'TechnicalIndexLookup' : { + 'TechnicalIndexLookup' : >>Small antimatter cells are the standard high-output power source aboard, >>and drive everything from the gravlifter's hand unit to sidearms. The >>output is prodigious and cannot be throttled: a device built around a cell >>is built to survive one, while a device that merely accepts one will do the >>most violent thing it is capable of doing. Where fine work is wanted, a >>weaker source is called for. - } end @@ -1280,16 +1266,14 @@ methods main.subj.location := UNDEFINED; 'MOVE' -> main.subj } - 'TechnicalIndexLookup' : { + 'TechnicalIndexLookup' : >>Apparently its primary feature is the power focusing crystal in the barrel; >>it is normally powered with an antimatter cell so that it acts as a >>destructive weapon, but when powered with a much weaker source, it can act >>as either a light, a surgical instrument, or even an arc welder, depending >>on the strength of the power cell. A power source as weak as a calculator >>battery is usually sufficient for arc welding. Eye protection is not ->>optional at welding intensities: the flash is bright enough to take a ->>person's sight, and does so at once rather than by degrees. - } +>>optional at welding intensities. end @@ -1334,7 +1318,7 @@ methods writes "There is a shuddering roar that I can feel through the floor " writes "and walls" if reactor.open then { - writes " - but like an idiot I have left the reactor open! Blazing " + writes "---but like an idiot I have left the reactor open! Blazing " writes "lethal radiation pours out over me and cooks me like a " stop "microwave dinner." } @@ -1389,13 +1373,12 @@ methods "vents, and rods cover the walls. The room is hexagonal ", "and barely large enough to stand in." - 'TechnicalIndexLookup' : { ->>The reactor chamber is a room rather than a machine: the hexagonal space ->>aft of the engine room is the vessel itself, and fuelling it is a question ->>of what is standing in it and what is not. The chamber door is shielding ->>and not a formality. Engines are started from the panel in the engine + 'TechnicalIndexLookup' : +>>The reactor chamber is a part of the engine that's the size of a room. +>>The hexagonal space aft of the engine room is the vessel itself, and fueling +>>it is a question of what is present in the reactor. The chamber door is +>>shielding and not decorative. Engines are started from the panel in the engine >>room, and the panel will say what it believes the chamber to contain. - } end @@ -1412,7 +1395,7 @@ methods 'TechnicalIndexLookup' : { >>Spent fuel is inert and none the lighter for it. A block of it stands in >>the reactor chamber between firings and is swapped out rather than carried ->>off; like the fuel it stands in for, it is fitted for gravlifting. +>>off. Like unspect fuel, it is fitted for gravlifting. } end @@ -1459,12 +1442,10 @@ methods write } - 'TechnicalIndexLookup' : { + 'TechnicalIndexLookup' : >>The helmet seals to the suit collar and holds a few minutes of air on its >>own. That reserve is meant to cover the moment between one supply and the ->>next, and nothing more ambitious than that. It is counted as a separate ->>piece of equipment because it is separately fatal to forget. - } +>>next, and nothing more ambitious than that. end @@ -1504,11 +1485,10 @@ methods else write "I don't think ", 'DEF' -> main.dobj, " is working." - 'TechnicalIndexLookup' : { ->>Standard out-of-ship equipment is comprised primarily of this rubber and + 'TechnicalIndexLookup' : +>>This standard out-of-ship equipment is comprised primarily of this rubber and >>vinyl spacesuit. The suit is one piece all the way through the gloves and >>boots; the only separate pieces are the helmet and air tanks. - } end @@ -1665,12 +1645,10 @@ methods 'exit' --> hollow_object } - 'TechnicalIndexLookup' : { + 'TechnicalIndexLookup' : >>Cycling the airlock evacuates the antechamber, and it does not ask whether ->>anybody standing in the antechamber is ready. Full kit is a suit without ->>holes, a helmet worn rather than carried, and a charged air supply. The ->>absence of any one of them is sufficient by itself. - } +>>anybody standing in the antechamber is ready. Be wearing an intact spacesuit +>>with full air tanks and a helmet. end @@ -1847,19 +1825,9 @@ methods else write "I try ", 'DEF' -> main.dobj, ", but I still can't open it." - 'TechnicalIndexLookup' : { ->>Personal instruments are the owner's affair, but the standard scientific ->>calculator earns a line here for its back cover, which is not meant to come ->>off in the field. - if open then { ->>This one is open already, which the manufacturer would want recorded as a ->>violation of the warranty. - } - else { ->>The thin slot beside it wants something flat, and nothing in the ship's ->>tool kit is flat enough. - } - } + 'TechnicalIndexLookup' : +>>The standard scientific calculator doesn't do anything the ship's +>>computer can't. Powered by a nine-volt battery. end @@ -1871,13 +1839,12 @@ powersource battery methods - 'TechnicalIndexLookup' : { + 'TechnicalIndexLookup' : >>The nine-volt dry cell is the humblest source in the catalogue, carried for >>instruments rather than for equipment: clocks, calculators, hand tools with >>nothing in them that turns. It fits the same standard socket as far more >>serious cells, which is a convenience to the technician and ought to be a >>caution to everybody else. - } end @@ -2003,9 +1970,8 @@ object captains_ID methods - 'TechnicalIndexLookup' : { + 'TechnicalIndexLookup' : >>Unfortunately the entry seems to be corrupted; I can't make it out. - } end @@ -2061,11 +2027,10 @@ methods 'MENTION SELF' -> gatorade } - 'TechnicalIndexLookup' : { ->>The kitchenette dispenser is coin-operated, a decision taken by somebody ->>who had never been three years away from the nearest coin. It does not ->>give change. It does not give anything back. - } + 'TechnicalIndexLookup' : +>>The kitchenette dispenser is coin-operated, a decision which strikes +>>me as remarkably penny-pinching. Or quarter-pinching. +>>It does not give change. It does not give anything back. end @@ -2233,12 +2198,10 @@ methods write "A gauge on the tanks says there are ", minutes, " minutes remaining." - 'TechnicalIndexLookup' : { ->>Air tanks are charged to thirty minutes and are refilled from the ->>compressor in the recreation area, ship's air being at the wrong pressure ->>for the purpose. The gauge on the side is honest. It is meant to be read ->>before going out rather than during. - } + 'TechnicalIndexLookup' : +>>Air tanks are charged to thirty minutes and must be refilled using +>>an air compressor. The gauge on the side is meant to be read +>>before going out as well as during. end @@ -2316,12 +2279,9 @@ methods fueled := TRUE } - 'TechnicalIndexLookup' : { + 'TechnicalIndexLookup' : >>The compressor in the recreation area is an antique and runs on liquid ->>fuel, which is why a can of the stuff is kept in the janitor's closet and ->>nowhere else aboard. It is started by hand. It has been known to want ->>encouragement. - } +>>fuel. Quaint. It is started by hand. Quainter. end @@ -2499,7 +2459,7 @@ methods else write "It's not plugged into ", 'DEF' -> main.dobj, "." - 'TechnicalIndexLookup' : { + 'TechnicalIndexLookup' : >>The anti-gravitational gravlifter, or "lifter", is a device which >>temporarily neutralizes the ship's artificial gravity over a small region. >>The portable hand-held unit is only half of the device; the other half is a @@ -2507,7 +2467,6 @@ methods >>generally covers the entire lower surface of the object to be lifted. The >>hand-held unit contains all the power and must be supplied with an >>antimatter cell in order to work. - } end @@ -2548,17 +2507,15 @@ methods 'get' : >>Not much point; there's nothing to read them with but the room. - 'look' : { + 'look' : >>Thousands of them, racked from the deck to well above my head: each one a >>finger's length of dull grey plastic with a printed number on the end and >>nothing else to say for itself. - } - 'TechnicalIndexLookup' : { + 'TechnicalIndexLookup' : >>Library cartridges are read by the room and not by hand; there has been no >>portable reader aboard since the refit before last. The index is the way >>in. - } end @@ -2733,7 +2690,7 @@ bridge_furniture captains_chair methods 'LONGDESC' : { ->>I'm sitting in the captain's chair - sort of. There is an enormous +>>I'm sitting in the captain's chair---sort of. There is an enormous >>meteor in the way, smashed directly into the center of the chair. meteor_seen := TRUE } @@ -2888,7 +2845,7 @@ methods >>navigational array. Looks like there was a slight course deviation writes "three years ago" if captains_chair.meteor_seen then - writes " - probably that meteor sitting in the captain's chair -" + writes "---probably that meteor sitting in the captain's chair---" writes " that has been steadily getting worse. " if panel.engine_started then { writes "Deftly I make the corrections, feeling the floor vibrate " From df1bed96caf92d8b6f282d513c0e35339c612ff7 Mon Sep 17 00:00:00 2001 From: "Derek T. Jones" Date: Wed, 12 Aug 2026 17:24:18 -0700 Subject: [PATCH 4/5] Finish the style pass over the index entries Two spellings: the Geiger counter reported "radation", and the spent fuel block compared itself to "unspect" fuel. The spacesuit entry began "This standard out-of-ship equipment is comprised primarily of this rubber and vinyl spacesuit", the second "this" left over from promoting the first word. It is "a" spacesuit now. Braces came off two entries that the pass had left behind: lead_waste and the index's own INDEX: see INDEX. Both are a single chained >> statement like the rest, so the block was doing nothing. The Geiger counter keeps its braces, the trailing conditional making it genuinely two statements. The reactor entry had a source line one column past eighty; rewrapped. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_013Ui8UMgev1U8LW5iyQdSsJ --- games/starship.arch | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/games/starship.arch b/games/starship.arch index 5521a44..c37c384 100644 --- a/games/starship.arch +++ b/games/starship.arch @@ -635,7 +635,7 @@ methods >>It isn't on. 'TechnicalIndexLookup' : { ->>This portable counter reports the radation present in its surroundings. +>>This portable counter reports the radiation present in its surroundings. >>The light shows green when levels are safe, and red when levels are >>too high to be safe when not wearing protective clothing. if not activated then { @@ -1377,8 +1377,8 @@ methods >>The reactor chamber is a part of the engine that's the size of a room. >>The hexagonal space aft of the engine room is the vessel itself, and fueling >>it is a question of what is present in the reactor. The chamber door is ->>shielding and not decorative. Engines are started from the panel in the engine ->>room, and the panel will say what it believes the chamber to contain. +>>shielding and not decorative. Engines are started from the panel in the +>>engine room, and the panel will say what it believes the chamber to contain. end @@ -1392,11 +1392,10 @@ gravhalf lead_waste methods - 'TechnicalIndexLookup' : { + 'TechnicalIndexLookup' : >>Spent fuel is inert and none the lighter for it. A block of it stands in >>the reactor chamber between firings and is swapped out rather than carried ->>off. Like unspect fuel, it is fitted for gravlifting. - } +>>off. Like unspent fuel, it is fitted for gravlifting. end @@ -1486,7 +1485,7 @@ methods write "I don't think ", 'DEF' -> main.dobj, " is working." 'TechnicalIndexLookup' : ->>This standard out-of-ship equipment is comprised primarily of this rubber and +>>This standard out-of-ship equipment is comprised primarily of a rubber and >>vinyl spacesuit. The suit is one piece all the way through the gloves and >>boots; the only separate pieces are the helmet and air tanks. @@ -2565,9 +2564,8 @@ methods } } - 'TechnicalIndexLookup' : { + 'TechnicalIndexLookup' : >>INDEX: see INDEX. - } end From d742d3ad79be9e34cb256664945891a757718289 Mon Sep 17 00:00:00 2001 From: "Derek T. Jones" Date: Wed, 12 Aug 2026 19:23:07 -0700 Subject: [PATCH 5/5] Repin the bare golden after its FIRSTDESC gained a paragraph The note about ">>" chaining into a single statement is three more lines of prose inside a method, and prose inside a method is 157 bytes of the binary. Nothing about the format moved. The .ttl is unchanged, byte for byte, which is the whole story: the RDF dump describes the world -- objects, attributes, who is inside what -- and a string literal in a method body is none of those things. The reviewable half of this diff being empty is the evidence that only the opaque half should have changed. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_013Ui8UMgev1U8LW5iyQdSsJ --- tests/golden/bare.acx | Bin 14698 -> 14855 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/golden/bare.acx b/tests/golden/bare.acx index 84aa72cc7152efd5748ad17e2600cb54db41067b..c99909a60b975ee9d75c10e1affcb2bd164cc785 100644 GIT binary patch delta 1521 zcmY*Xe`pj(6yEuE-7JTV=jIXvhIG`}2u;swZA_yCYa!x4l~P-Ze-!raCf<>|-RtgN z^P@jvC0G$FX(oht93g}df&{S|L_|cah=_=Yh)57?C5VWKh>A$)+r6~fft{WA=DqKI z?|bvm{nbBqc#&FCOD9T;{xtdyu$^ha8{66%xsw;J4X1i|DwB%O$f+f5D^FsL#nTS85Ge9r{wY)@M9OuX+-Ye<*S&KF zCbi^wq)F#eW=j0F3b$#biAF}WrlBBccNWyVCy=$oH%Gf>$oOCSzI%>R}mCe%7gy-J? zakp{~X=;mP=a*TM`6lX9uJAlcNV!&*aJ^eFX{3VY)WL5fwv))Eh4p>UidjSxmKRR= z4&M9pf6EHiUBu;IORFj}wCnw9g^FsKV}2+r|M=lC}*lSE*?^&Ub@F7>Egrk1-VCLyk<2k zp4eIQ@ZDvV0~o{*hB1O7O30h~D8?`@cQiNkO+Xo7STn$sNP`iX!Y+NDm6#Ek#2hnp zP|gVm zUBn3WLm%pl$R(f!8bMr!USdT?cSWXXyY&5GsVnGHN`bTVmh&oAf%XJOPSWt2- z^p$B|2WA-zj8p7*=pPI*Z$Oy{Vkeklgbe=e>*hjVWkRRBF#d# z72S;8!Cl^N=Pw0C}-!qtKCq-!_&&hl#x3#QY^%^wFc^YMZ z$mkVKokpqmYI>38LSgjm4!11-Y_AGUYtU-+Z%F+9^3_Bz#SpJwH6r^cqK>j?pwran z^qZc_(EH_!mJiwoRAX^DXOMD+$kIcEVX{WZGNP?iw5Tf3VurCy?~vF1Q>qi9$GJP_ zIH#~FB26OX<|kruF$s|fX|7sGghXo*5fTv*;UpqNoJ2%Ogt)!u-uCN*@B4UvJkR^Q z@B5>>WKSJ05QoH}bJ>Dl6~3~*ijDBfqPp5F%EE?i>XzGT+U+sN42?qHPgX2-NN+XL zX*1=7#-O^kk&arHeG-cIjq{PBH`xTAF51CP@x`JYm8Y?_-D*oj^`sFu^_Z($1Px81 zv{^S2wrNB=^k^&^I>UFX4Qz`4pax$#i}hhMYFk$FJU^jUy?Oy!*ftzTC+{@>UERqp za&1FZ*CmuSyW1SywJbf{mWX$RW>6SOSdQsl#+GJ1YNfWhx+giVJ67ll6lx}U6+XvG zn))>a!5nw;h}BLJb>^nKV=GJ#78( zf5-67eS~F<>DIll$ZP8V$b+qe}%e& zl86;ccxr80&2#>}|8=|oKkk1ItKhT#omc~x0u8L2e-zlF_J}2EBNET$8?MvK+XB1T zVg6Gf#QOMr;C*(4`-9c&DE}l_Q`j%6PHRVs<`c^BesT}+-+~ov@Z2B4rA-@@3