@@ -19,7 +19,7 @@ <h2 id="day-counter">Day 1</h2>
1919 <!-- Events will be inserted here by JavaScript -->
2020 </ div >
2121
22- < button class ="button " id ="next-day "> Proceed to Next Day </ button >
22+ < button class ="button " id ="next-day "> Proceed</ button >
2323 </ main >
2424 < script type ="module " src ="events.js "> </ script >
2525 <!-- The script to collect participants follows -->
@@ -56,11 +56,26 @@ <h2 id="day-counter">Day 1</h2>
5656 const masters = participants . filter ( p => p . type === "master" ) ;
5757
5858 masters . forEach ( master => {
59- if ( master . servantName && master . servantName !== "Unknown" ) {
60- events += `<p><img src="${ master . picture } " width="50"> <strong>${ master . name } </strong> summons <strong>${ master . servantName } </strong>.</p>` ;
61- } else {
62- events += `<p><img src="${ master . picture } " width="50"> <strong>${ master . name } </strong> summons an unknown servant.</p>` ;
63- }
59+ const servant = participants . find (
60+ p => p . type === "servant" && p . masterId === master . id
61+ ) ;
62+
63+ if ( servant && servant . name !== "Unknown" ) {
64+ events += `
65+ <p>
66+ <img src="${ master . picture } " width="50">
67+ <strong>${ master . name } </strong> summons
68+ <img src="${ servant . image } " width="50">
69+ <strong>${ servant . name } </strong>.
70+ </p>` ;
71+ } else {
72+ events += `
73+ <p>
74+ <img src="${ master . picture } " width="50">
75+ <strong>${ master . name } </strong> summons an unknown servant.
76+ </p>` ;
77+ }
78+
6479 } ) ;
6580
6681 eventLog . innerHTML = events ;
@@ -126,65 +141,63 @@ <h2 id="day-counter">Day 1</h2>
126141let pastEvents = [ ] ; // store event IDs
127142let participants = JSON . parse ( localStorage . getItem ( "participants" ) ) || [ ] ;
128143
129- function appendEventLog ( message ) {
144+ function displayDayEvents ( dayNumber , events ) {
130145 const logDiv = document . getElementById ( "event-log" ) ;
131- if ( logDiv ) {
132- logDiv . innerHTML += `<p>${ message } </p>` ;
133- } else {
134- console . error ( "Event log div not found." ) ;
135- }
136- }
146+ const title = document . getElementById ( "day-title" ) ;
147+
148+ // Clear previous events
149+ logDiv . innerHTML = "" ;
150+
151+ // Update title
152+ title . textContent = `Day ${ dayNumber } ` ;
137153
154+ // Add each event as a paragraph
155+ events . forEach ( text => {
156+ const p = document . createElement ( "p" ) ;
157+ p . textContent = text ;
158+ logDiv . appendChild ( p ) ;
159+ } ) ;
160+ }
138161
139162function runDayEvents ( ) {
163+ const participants = JSON . parse ( localStorage . getItem ( "participants" ) ) || [ ] ;
164+ const aliveMasters = participants . filter ( p => p . type === "master" && p . status === "alive" ) ;
165+ const aliveServants = participants . filter ( p => p . type === "servant" && p . status === "alive" ) ;
166+
140167 console . log ( `===== DAY ${ currentDay } =====` ) ;
168+ const dayEvents = [ ] ;
141169
142- // Loop over each event
143- events . forEach ( event => {
144- const validPools = event . valid ( participants ) ;
170+ aliveMasters . forEach ( master => {
171+ const servant = aliveServants . find ( s => s . id === master . servantId ) ;
145172
146- if ( validPools . length === 0 ) {
147- console . log ( `No valid targets for event ${ event . id } ` ) ;
173+ const validEvents = events . filter ( event => {
174+ const validPool = event . valid ( participants ) ;
175+ return validPool . includes ( master ) ;
176+ } ) ;
177+
178+ if ( validEvents . length === 0 ) {
179+ console . log ( `No valid events for ${ master . name } ` ) ;
148180 return ;
149181 }
150182
151- // Pick one random target or pair
152- const chosen = validPools [ Math . floor ( Math . random ( ) * validPools . length ) ] ;
153-
154- if ( Array . isArray ( chosen ) ) {
155- // Multi-target event (like servant vs servant or servant-master betrayal)
156- event . effects ( ...chosen , participants ) ;
183+ const selectedEvent = validEvents [ Math . floor ( Math . random ( ) * validEvents . length ) ] ;
157184
158- // Generate event text using provided names
159- const eventText = processEventTemplate ( event . description , {
160- servant1 : chosen [ 0 ] ,
161- servant2 : chosen [ 1 ] ,
162- master : chosen [ 1 ] , // if second is master, works for betrayal template
163- } ) ;
185+ selectedEvent . effects ( participants , master , servant ) ;
164186
165- console . log ( eventText ) ;
166- appendEventLog ( `Day ${ currentDay } : ${ eventText } ` ) ;
167- } else {
168- // Single-target event (just a master)
169- const master = chosen ;
170- const servant = participants . find ( p => p . type === "servant" && p . masterId === master . id ) ;
187+ const eventText = processEventTemplate ( selectedEvent . description , {
188+ master,
189+ servant
190+ } ) ;
171191
172- event . effects ( master , servant , participants ) ;
173-
174- const eventText = processEventTemplate ( event . description , {
175- master,
176- servant,
177- } ) ;
178-
179- console . log ( eventText ) ;
180- appendEventLog ( `Day ${ currentDay } : ${ eventText } ` ) ;
181- }
192+ dayEvents . push ( `Day ${ currentDay } : ${ eventText } ` ) ;
182193 } ) ;
183194
195+ displayDayEvents ( currentDay , dayEvents ) ;
184196 currentDay ++ ;
185197}
186198
187199
200+
188201// Button for next days
189202document . getElementById ( "next-day" ) . addEventListener ( "click" , ( ) => {
190203 runDayEvents ( ) ; // runs once for each alive master
0 commit comments