Adapt StoryManager for Snowman

This commit is contained in:
2025-09-13 21:19:15 -07:00
parent 74c27cba67
commit e5b8f7db4f
3 changed files with 78 additions and 46 deletions

View File

@ -1,4 +1,6 @@
var State = window.story.state
State.variables = Object.create(null)
// Game stats
State.variables.reputation = 0;
State.variables.playerKnowledge = {poetry: 0, industry: 0, astronomy: 0};

View File

@ -6,45 +6,51 @@ At the Duchess's Party
"ifid": "BE18C022-A213-466C-8DD1-DCCD5CB1DF48"
}
:: Story JavaScript [script]
:: Story JavaScript
Config.passages.nobr = true; // Deal with linebreaks.
:: Start
The footmen at the door to the duchess's city residence bows over your forged invitation, seemingly not examining at all. The uniform you wear is authentic, at least, though Frin had found a tailor who would accept some extra florins to not demand to see a letter of appointment before sewing on captain's bars. And just like that, you're in. Could it be that easy, you wonder? <br> <br>
Of course it isn't. The hall is filled with aristocrats in evening-wear, making small talk in an ever-shifting constellation. Across the room, the doors to the duchess's private rooms are firmly closed. No way to sneak in without being seen. You're going to have to find a way to [[talk your way in | Circulating]].
Of course it isn't. The hall is filled with aristocrats in evening-wear, making small talk in an ever-shifting constellation. Across the room, the doors to the duchess's private rooms are firmly closed. No way to sneak in without being seen. You're going to have to find a way to [[talk your way in |Circulating]].
:: Circulating
You mingle through the crowd, keeping a wary eye around you.<br>
<<getStoryletLinks 3 "circulating">>
<%= window.SM.getStoryletLinks(3, "circulating") %>
:: Conversation
<<set $talkingTo = $currentStorylet.character>>
You talk with $talkingTo.name. <br>
<<getStoryletLinks 3 "during conversation">>
[[Keep circulating | Circulating]]
<% s.variables.talkingTo = window.SM.currentStorylet.character %>
You talk with <%= window.SM.currentStorylet.character.name %>. <br>
<%= window.SM.getStoryletLinks(3, "during conversation") %>
[[Keep circulating|Circulating]]
:: Being approached
$currentStorylet.character.name is coming toward you to talk. <br>
You can [[talk to them | Conversation]], or risk snubbing them by [[trying to get away | Circulating][$reputation = $reputation - 1]].
<%= window.SM.currentStorylet.character.name %> is coming toward you to talk. <br>
You can [[talk to them|Conversation]], or risk snubbing them by <div onclick="s.variables.reputation -= 1">[[trying to get away|Circulating]]</div>.
:: Conversation topic
<<set $topic = $currentStorylet.topic>>
<<if $playerKnowledge[$topic] < $talkingTo[$topic] >>
$talkingTo.name tells you about <<print $conversationTopics[$topic][$playerKnowledge[$topic]]>>.
<<set $playerKnowledge[$topic] = $playerKnowledge[$topic] + 1>>
<<set $reputation = $reputation - 0.5>>
<<elseif $playerKnowledge[$topic] == $talkingTo[$topic]>>
You and $talkingTo.name discuss <<print $conversationTopics[$topic][$playerKnowledge[$topic]]>>.
<<set $reputation = $reputation + 1>>
<<elseif $playerKnowledge[$topic] > $talkingTo[$topic]>>
You tell $talkingTo.name about <<print $conversationTopics[$topic][$talkingTo[$topic]]>>.
<<set $characters[$talkingTo.id][$topic] = $talkingTo[$topic] + 1>>
They listen intently, and seem impressed.
<<set $reputation = $reputation + 2>>
<</if>><br><br>
<% var topic = window.SM.currentStorylet.character %>
[[Keep circulating | Circulating]]
<% var topic = window.SM.currentStorylet.topic
if (s.variables.playerKnowledge[topic] < s.variables.talkingTo[topic]) { %>
<%= s.variables.talkingTo.name %> tells you about <%= s.variables.conversationTopics[topic][s.variables.playerKnowledge[topic]] %>
<%
s.variables.playerKnowledge[topic] += 1
s.variables.reputation -= 0.5
} else if (s.variables.playerKnowledge[topic] == s.variables.talkingTo[topic]) { %>
You and <%= s.variables.talkingTo.name %> discuss <%= s.variables.conversationTopics[topic][s.variables.playerKnowledge[topic]] %>
<%
s.variables.reputation += 1
} else { %>
You tell <%= s.variables.talkingTo.name %> about <%= s.variables.conversationTopics[topic][s.variables.playerKnowledge[topic]] %>
They listen intently and seem impressed.
<%
s.variables.talkingTo[topic] += 1
s.variables.reputation += 2
}
%>
[[Keep circulating|Circulating]]
:: Asked to leave
The footman demands to see your invitation.