How to Keep Terms Consistent in Text Adventure Negotiations: How Are Promises, Offers, and Retractions Recorded?
In text adventure negotiations, terms can quietly change by the third round. Track each statement as an offer, promise, or retraction so accepted conditions stay consistent and reversals have consequences.

Introduction
When negotiation reaches the third round, the most likely problem is that the terms are quietly changed. In the first round, the other party says "borrow the airship for three days"; in the second round, it becomes "borrow for five days"; in the third round, "a deposit is required" suddenly appears. If the player remembers the earlier text, they will feel the world is untrustworthy. The solution is not to make the author memorize everything, but to break each statement into three types of records: offer, promise, and retraction. An offer is "what I propose"; a promise is "what both sides confirmed"; a retraction is "who canceled which item, and when." Keep the three separate, and the terms will not get mixed up.
First Build a Negotiation Ledger
The ledger does not need to be complex; one table is enough. Before each round of negotiation, write clearly: who is speaking, what they want, what they are willing to give, and what they explicitly refuse. The following uses a fictional teaching example; the numbers and exact words in the example are made up, not actual test data.
Story background: the player wants to borrow an airship to go to the northern Wind-Eroded Valley. The airship belongs to an organization called the "Grey Falcon Caravan," and the manager is named Rella. Airship borrowing rights are a story resource and do not involve real-world transactions.
First round of dialogue:
Rella: "The airship can be borrowed, for three days. You are responsible for filling the fuel, and leave one person here to help me repair the mast." Player: "Three days is not enough. I want five days. We will provide the fuel, but no one can stay." Rella: "Five days is no good. Four days, no one needs to stay, but when you return you must bring a box of crystal sand from the Wind-Eroded Valley."
At the end of this round, the ledger should record:
| Round | Speaker | Type | Content | Status |
|---|---|---|---|---|
| 1 | Rella | Offer | Borrow for three days; player adds fuel and leaves one person to repair the mast | Rejected by player |
| 1 | Player | Counter-offer | Borrow for five days; player provides fuel, no one stays | Rejected by Rella |
| 1 | Rella | Counter-offer | Borrow for four days, no one stays, bring back a box of crystal sand | Pending confirmation |
Key point: Rella's first statement, "leave one person to repair the mast," has already been rejected by the player, and it cannot automatically come back later. If in the third round Rella says, "Didn't you agree to leave someone?" that is inconsistent terms, unless in between there was a round that explicitly re-proposed and accepted it.
Distinguish "Proposing" from "Accepting"
Many authors treat words spoken by a character as directly established terms, so when a character later goes back on them, readers do not know who is right. An effective approach is to add a status field to each term: proposed, accepted, rejected, retracted, expired.
Second round of dialogue continues:
Player: "Four days is fine, and crystal sand is fine too. But if we do not return in four days, the crystal sand is waived." Rella: "No. Four days is fixed, and the crystal sand is fixed too. One day late, the crystal sand doubles." Player: "Then I will not borrow it." Rella: "Wait. One day late, bring one more box, no doubling. That is my bottom line."
After this round, the ledger updates:
| Round | Speaker | Type | Content | Status |
|---|---|---|---|---|
| 2 | Player | Counter-offer | Four days, bring crystal sand, but waive crystal sand if overdue | Rejected by Rella |
| 2 | Rella | Counter-offer | Four days, one day late doubles crystal sand | Rejected by player |
| 2 | Player | Retraction | States they will not borrow it | Negotiation paused |
| 2 | Rella | Counter-offer | Four days, one day late bring one more box, no doubling | Pending confirmation |
"I will not borrow it" is a retraction. It retracts all of the player's previously unconfirmed offers, but it does not automatically retract the terms Rella has already given. Rella's later "bring one more box, no doubling" is a new offer, not a modification of the old offer. If the author writes here that "Rella remembers she just said doubling," it will be contradictory.
Third Round: Acceptance, Promises, and Consequences of Going Back
In the third round, let both sides confirm:
Player: "Four days, we provide fuel, no one stays. When we return, we bring one box of crystal sand. One day late, bring one more box, no doubling. Is that all?" Rella: "That is all. The airship can leave at sunrise tomorrow."
Only at this point does the first "accepted promise" appear. Mark this item separately in the ledger:
| Promise ID | Content | Proposed round | Accepted round | Status |
|---|---|---|---|---|
| P1 | Borrow the airship for four days; player provides fuel, no one stays | 1-2 | 3 | Valid |
| P2 | Player brings back one box of crystal sand | 1-2 | 3 | Valid |
| P3 | One day late, bring one more box, no doubling | 2 | 3 | Valid |
Once a promise is established, any later change must go through "retraction" or "re-offer"; it cannot be directly overwritten. For example, in the fourth round Rella wants to add a condition:
Rella: "I thought about it. You should still leave one person. The mast really lacks manpower."
This line can happen in the story, but it is not a "reminder"; it is "going back on the deal." The author must clearly write that she is overturning the already accepted P1. The consequences of going back can be listed in advance in a table, giving the writing a basis:
| Party going back | Content of going back | Impact on story resources | Possible reaction from the other side |
|---|---|---|---|
| Rella | Demands someone stay, overturns P1 | Player has one fewer usable character | Player can refuse, or demand compensation |
| Player | Does not bring crystal sand, overturns P2 | Caravan has one fewer box of crystal sand | Rella can refuse the next borrowing |
| Rella | One day late doubles, overturns P3 | Player pays one more box | Player can suspend cooperation |
This table is not a rules engine; it is only a writing prompt. It ensures that going back has a cost, rather than casually changing terms.
Completion Check Before the End of Each Round
After writing a round of negotiation, check against the following five items:
- Who proposed new terms this round? Do the new terms conflict with already accepted promises?
- Did anyone treat "proposed" as "already agreed"?
- Are rejections and retractions clearly written? Have rejected terms come back later?
- If going back occurs, which promise ID is being overturned? Has the consequence landed on story resources?
- At the start of the next round, do the terms both sides remember match the ledger?
As long as these five items all line up, the negotiation will not change prices out of thin air every round. The ledger can be written in a corner of the document and does not need to be shown to the player, but the author must have one. When AI-generated dialogue is involved, accepted promises can be put into the prompt as a context summary, but the output may still deviate and needs to be checked manually against the ledger.
Finally, do a small action: open the negotiation scene you are writing, and copy all conditional sentences from the most recent three rounds of dialogue into a three-column table—who said it, what the condition is, and the current status. After copying, check whether any condition changed content without any "retraction" or "re-offer." If you find one, add a line of character dialogue explaining why it changed.


