@@ -11,9 +11,8 @@ namespace XbTool.Xb2.GameData
11
11
{
12
12
public static class Conditions
13
13
{
14
- public static string ParseGameCond ( BdatStringCollection tables , int condId )
14
+ public static string ParseGameCond ( BdatStringItem condition )
15
15
{
16
- var condition = tables . Tables [ "FLD_ConditionList" ] . Items . FirstOrDefault ( x => x . Id == condId ) ;
17
16
string s = "" ;
18
17
for ( int i = 0 ; i < 8 ; i ++ )
19
18
{
@@ -216,35 +215,36 @@ public static string EventJudge(BdatStringCollection tables, int[] args) // EVT_
216
215
return $ "1bit flag { id + 0xc327 } == { val } ";
217
216
218
217
case 26 :
219
- return ParseGameCond ( tables , id ) ;
218
+ return ParseGameCond ( tables . Tables [ "FLD_ConditionList" ] . Items . FirstOrDefault ( x => x . Id == id ) ) ;
220
219
221
220
default :
222
221
break ;
223
222
}
224
223
225
224
return "" ;
226
225
}
227
- public static void PrintEventConditions ( BdatStringItem bdatEvent , IEnumerable < string > scriptFiles , IEnumerable < BdatStringItem > listEvents )
226
+ public static BdatStringItem PrintEventConditions ( BdatStringItem bdatEvent , IEnumerable < string > scriptFiles , IEnumerable < BdatStringItem > listEvents )
228
227
{
229
228
if ( bdatEvent == null )
230
229
Console . WriteLine ( "null bdat event!" ) ;
231
230
else if ( bdatEvent . ReferencedBy . Any ( trigger => trigger . Values . ContainsKey ( "Title" ) ) ) // H2H - not doing probably
232
231
{
233
232
Console . WriteLine ( "H2H Event" ) ;
234
233
var refItem = bdatEvent . ReferencedBy . FirstOrDefault ( trigger => trigger . Values . ContainsKey ( "Title" ) ) ;
235
-
236
234
}
237
235
else if ( bdatEvent . ReferencedBy . Any ( trigger => trigger . Values . ContainsKey ( "NpcID" ) ) ) // NPC - done
238
236
{
239
237
var refItem = bdatEvent . ReferencedBy . FirstOrDefault ( trigger => trigger . Values . ContainsKey ( "NpcID" ) ) ;
240
238
Console . Write ( "Talk to " ) ;
241
239
PrintNpcCondition ( refItem ) ;
240
+ return refItem ;
242
241
}
243
242
else if ( bdatEvent . ReferencedBy . Any ( trigger=> trigger . Values . ContainsKey ( "name" ) ) ) // EventPop - done
244
243
{
245
244
var refItem = bdatEvent . ReferencedBy . FirstOrDefault ( trigger => trigger . Values . ContainsKey ( "name" ) ) ;
246
245
Console . Write ( "Trigger " ) ;
247
246
PrintEventPopConditions ( refItem ) ;
247
+ return refItem ;
248
248
249
249
}
250
250
else if ( bdatEvent . ReferencedBy . Any ( trigger => trigger . Values . ContainsKey ( "QuestTitle" ) ) ) // Quest - done (maybe)
@@ -258,78 +258,78 @@ public static void PrintEventConditions(BdatStringItem bdatEvent, IEnumerable<st
258
258
{
259
259
Console . WriteLine ( "Linked Event" ) ;
260
260
var refItem = bdatEvent . ReferencedBy . FirstOrDefault ( trigger => trigger . Values . ContainsKey ( "evtName" ) ) ;
261
- PrintEventConditions ( refItem , scriptFiles , listEvents ) ;
261
+ return PrintEventConditions ( refItem , scriptFiles , listEvents ) ;
262
262
}
263
263
else // Not Found (probably scripts) - done
264
264
{
265
265
string scriptFile = scriptFiles . FirstOrDefault ( fileName => File . ReadLines ( fileName ) . Any ( line => line . Contains ( $ "evt_status::change(32, { bdatEvent . Id } ") ) ) ;
266
- Scripts script = new Scripts ( scriptFile ) ;
267
- script . PrintEventTriggerConditions ( $ "evt_status::change(32, { bdatEvent . Id } ", scriptFiles , listEvents ) ;
266
+ Scripts script = new Scripts ( scriptFile , listEvents ) ;
267
+ return script . PrintEventTriggerConditions ( $ "evt_status::change(32, { bdatEvent . Id } ", scriptFiles , listEvents ) ;
268
268
}
269
+ return null ;
269
270
}
270
271
271
- private static void PrintEventPopConditions ( BdatStringItem eventPop )
272
+ public static void PrintEventPopConditions ( BdatStringItem eventPop ) => Console . WriteLine ( ParseEventPopCondition ( eventPop ) ) ;
273
+ public static void PrintNpcCondition ( BdatStringItem npc ) => Console . WriteLine ( ParseNpcCondition ( npc ) ) ;
274
+
275
+ public static string ParseEventPopCondition ( BdatStringItem eventPop )
272
276
{
273
- Console . WriteLine ( $ "Event { eventPop [ "name" ] . DisplayString } ") ;
274
- if ( eventPop [ "ScenarioFlagMin" ] . DisplayString != "" || eventPop [ "ScenarioFlagMax" ] . DisplayString != "" )
275
- {
276
- Console . Write ( "Scenario required: " ) ;
277
- if ( eventPop [ "ScenarioFlagMin" ] . DisplayString != "" )
278
- Console . Write ( $ "{ eventPop [ "ScenarioFlagMin" ] . DisplayString } <= ") ;
279
- Console . Write ( "scenarioFlag" ) ;
280
- if ( eventPop [ "ScenarioFlagMax" ] . DisplayString != "" )
281
- Console . Write ( $ " <= { eventPop [ "ScenarioFlagMax" ] . DisplayString } ") ;
282
- Console . WriteLine ( ) ;
283
- }
284
- if ( eventPop [ "QuestFlag" ] . Reference != null )
285
- {
286
- var questFlag = eventPop [ "QuestFlag" ] . Reference ;
287
- Console . Write ( "Required quest progress: " ) ;
288
- Console . Write ( ParseQuestName ( questFlag ) ) ;
289
- Console . Write ( " with progress: " ) ;
290
- Console . WriteLine ( ParseQuestProgress ( int . Parse ( eventPop [ "QuestFlagMin" ] . ValueString ) , int . Parse ( eventPop [ "QuestFlagMax" ] . ValueString ) ) ) ;
291
- }
277
+ string s = $ "Event { eventPop [ "name" ] . DisplayString } \n ";
278
+ s += ParseScenarioItem ( eventPop ) ;
279
+ s += ParseQuestItem ( eventPop ) ;
292
280
if ( eventPop [ "Condition" ] . DisplayString != null )
293
281
{
294
- Console . Write ( "Condition Required: " ) ;
295
- Console . WriteLine ( ParseGameCond ( eventPop . Table . Collection , int . Parse ( eventPop [ "Condition" ] . DisplayString ) ) ) ;
282
+ s += ParseGameCond ( eventPop . Table . Collection . Tables [ "FLD_ConditionList" ] . Items . FirstOrDefault ( x => x . Id == int . Parse ( eventPop [ "Condition" ] . DisplayString ) ) ) + "\n " ;
296
283
}
297
- Console . WriteLine ( ) ;
284
+ return s + " \n " ;
298
285
}
299
286
300
- private static void PrintNpcCondition ( BdatStringItem npc )
287
+ public static string ParseNpcCondition ( BdatStringItem npc )
301
288
{
302
- Console . WriteLine ( $ "NPC { npc [ "NpcID" ] . DisplayString } ") ;
303
- if ( npc [ "ScenarioFlagMin" ] . DisplayString != "" || npc [ "ScenarioFlagMax" ] . DisplayString != "" )
289
+ string s = $ "Speak to NPC { npc [ "NpcID" ] . DisplayString } \n ";
290
+ s += ParseScenarioItem ( npc ) ;
291
+ s += ParseQuestItem ( npc ) ;
292
+ if ( npc [ "Condition" ] . DisplayString != null )
304
293
{
305
- Console . Write ( "Scenario required: " ) ;
306
- if ( npc [ "ScenarioFlagMin" ] . DisplayString != "" )
307
- Console . Write ( $ "{ npc [ "ScenarioFlagMin" ] . DisplayString } <= ") ;
308
- Console . Write ( "scenarioFlag" ) ;
309
- if ( npc [ "ScenarioFlagMax" ] . DisplayString != "" )
310
- Console . Write ( $ " <= { npc [ "ScenarioFlagMax" ] . DisplayString } ") ;
311
- Console . WriteLine ( ) ;
294
+ s += ParseGameCond ( npc . Table . Collection . Tables [ "FLD_ConditionList" ] . Items . FirstOrDefault ( x => x . Id == int . Parse ( npc [ "Condition" ] . DisplayString ) ) ) + "\n " ;
312
295
}
313
- if ( npc [ "QuestFlag " ] . Reference != null )
296
+ if ( npc [ "TimeRange " ] . DisplayString != "" )
314
297
{
315
- var questFlag = npc [ "QuestFlag" ] . Reference ;
316
- Console . Write ( "Required quest progress: " ) ;
317
- Console . Write ( ParseQuestName ( questFlag ) ) ;
318
- Console . Write ( " with progress: " ) ;
319
- Console . WriteLine ( ParseQuestProgress ( int . Parse ( npc [ "QuestFlagMin" ] . ValueString ) , int . Parse ( npc [ "QuestFlagMax" ] . ValueString ) ) ) ;
298
+ s += $ "Time of day: { npc [ "TimeRange" ] . DisplayString } \n ";
320
299
}
321
- if ( npc [ "Condition" ] . DisplayString != null )
300
+
301
+ return s + "\n " ;
302
+ }
303
+
304
+ public static string ParseScenarioItem ( BdatStringItem itm )
305
+ {
306
+ string s = "" ;
307
+ if ( itm [ "ScenarioFlagMin" ] . DisplayString != "" || itm [ "ScenarioFlagMax" ] . DisplayString != "" )
322
308
{
323
- Console . WriteLine ( ParseGameCond ( npc . Table . Collection , int . Parse ( npc [ "Condition" ] . DisplayString ) ) ) ;
309
+ s += "Scenario required: " ;
310
+ if ( itm [ "ScenarioFlagMin" ] . DisplayString != "" )
311
+ s += $ "{ itm [ "ScenarioFlagMin" ] . DisplayString } <= ";
312
+ s += "scenarioFlag" ;
313
+ if ( itm [ "ScenarioFlagMax" ] . DisplayString != "" )
314
+ s += $ " <= { itm [ "ScenarioFlagMax" ] . DisplayString } ";
315
+ s += "\n " ;
324
316
}
325
- if ( npc [ "TimeRange" ] . DisplayString != "" )
317
+ return s ;
318
+ }
319
+
320
+ public static string ParseQuestItem ( BdatStringItem itm )
321
+ {
322
+ if ( itm [ "QuestFlag" ] . Reference != null )
326
323
{
327
- Console . WriteLine ( $ "Time of day: { npc [ "TimeRange" ] . DisplayString } ") ;
324
+ var questFlag = itm [ "QuestFlag" ] . Reference ;
325
+ string questName = ParseQuestName ( questFlag ) ;
326
+ string questProgress = ParseQuestProgress ( int . Parse ( itm [ "QuestFlagMin" ] . ValueString ) , int . Parse ( itm [ "QuestFlagMax" ] . ValueString ) ) ;
327
+ return "Required quest progress: " + questName + " with progress: " + questProgress + "\n " ;
328
328
}
329
- Console . WriteLine ( ) ;
329
+ return "" ;
330
330
}
331
331
332
- private static string ParseQuestName ( BdatStringItem quest )
332
+ public static string ParseQuestName ( BdatStringItem quest )
333
333
{
334
334
if ( quest [ "FlagPRT" ] . DisplayString == "" )
335
335
{
@@ -345,7 +345,7 @@ private static string ParseQuestName(BdatStringItem quest)
345
345
}
346
346
}
347
347
348
- private static string ParseQuestProgress ( int flagMin , int flagMax )
348
+ public static string ParseQuestProgress ( int flagMin , int flagMax )
349
349
{
350
350
string s = "" ;
351
351
string [ ] options = { "Not Started" , "Started" , "Finished (A)" , "Finished (B)" } ;
0 commit comments