use service for step_missions to allow filtering by name

also added api keys for lands
This commit is contained in:
Robert Paciorek 2025-02-11 23:20:37 +00:00
parent 3a66ffd864
commit 5a3de59a7e
8 changed files with 778 additions and 608 deletions

View File

@ -2133,12 +2133,10 @@ public class ContentController : Controller {
}
[HttpPost]
// [Produces("application/xml")]
[Produces("application/xml")]
[Route("MissionWebService.asmx/GetMission")] // old ("step") missions - used by MB and WoJS lands
public IActionResult GetMission([FromForm] int gameId, [FromForm] string name) {
if (gameId == 1) return Ok(XmlUtil.ReadResourceXmlString("missions.step_missions_wojs_al"));
if (gameId == 5) return Ok(XmlUtil.ReadResourceXmlString("missions.step_missions_mb"));
return Ok();
return Ok(missionStore.GetStepsMissions(gameId, name));
}
[HttpPost]

View File

@ -0,0 +1,725 @@
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfStepsMissionsGroup xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<StepsMissionsGroup>
<!-- World of JumpStart - Adventureland -->
<GameId>1</GameId>
<WorldName>_default_</WorldName>
<MissionData>
<Mission>
<MissionID>4</MissionID>
<Name>Lost Island Mission 1</Name>
<DisplayName xsi:nil="true"/>
<IconName xsi:nil="true"/>
<Description>Welcome to Training Island</Description>
<Experience>1</Experience>
<RewardDialog xsi:nil="true"/>
<Step>
<StepID>1</StepID>
<TaskID>1</TaskID>
</Step>
<Step>
<StepID>2</StepID>
<TaskID>2</TaskID>
</Step>
<Step>
<StepID>3</StepID>
<TaskID>3</TaskID>
</Step>
<Step>
<StepID>4</StepID>
<TaskID>4</TaskID>
</Step>
<Step>
<StepID>5</StepID>
<TaskID>5</TaskID>
</Step>
<Step>
<StepID>179</StepID>
<TaskID>349</TaskID>
</Step>
<Step>
<StepID>6</StepID>
<TaskID>6</TaskID>
</Step>
<Step>
<StepID>7</StepID>
<TaskID>7</TaskID>
</Step>
<Step>
<StepID>8</StepID>
<TaskID>8</TaskID>
</Step>
<Step>
<StepID>9</StepID>
<TaskID>9</TaskID>
</Step>
<Step>
<StepID>10</StepID>
<TaskID>10</TaskID>
</Step>
<Step>
<StepID>23</StepID>
<TaskID>18</TaskID>
</Step>
<Step>
<StepID>24</StepID>
<TaskID>19</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>18</MissionID>
<Name>Lost Island Mission 2</Name>
<DisplayName xsi:nil="true"/>
<IconName xsi:nil="true"/>
<Description>Mission 2- Congrats! Take the ship to Lost Island and get familar with home base.</Description>
<Experience>1</Experience>
<RewardDialog xsi:nil="true"/>
<Step>
<StepID>26</StepID>
<TaskID>250</TaskID>
</Step>
<Step>
<StepID>27</StepID>
<TaskID>251</TaskID>
</Step>
<Step>
<StepID>28</StepID>
<TaskID>252</TaskID>
</Step>
<Step>
<StepID>106</StepID>
<TaskID>348</TaskID>
</Step>
<Step>
<StepID>29</StepID>
<TaskID>253</TaskID>
</Step>
<Step>
<StepID>30</StepID>
<TaskID>254</TaskID>
</Step>
<Step>
<StepID>31</StepID>
<TaskID>255</TaskID>
</Step>
<Step>
<StepID>32</StepID>
<TaskID>256</TaskID>
</Step>
<Step>
<StepID>33</StepID>
<TaskID>257</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>19</MissionID>
<Name>Lost Island Mission 3</Name>
<DisplayName xsi:nil="true"/>
<IconName xsi:nil="true"/>
<Description>Mission 3- Introduction to Lost Shores</Description>
<Experience>1</Experience>
<RewardDialog xsi:nil="true"/>
<Step>
<StepID>34</StepID>
<TaskID>258</TaskID>
</Step>
<Step>
<StepID>35</StepID>
<TaskID>259</TaskID>
</Step>
<Step>
<StepID>36</StepID>
<TaskID>260</TaskID>
</Step>
<Step>
<StepID>37</StepID>
<TaskID>261</TaskID>
</Step>
<Step>
<StepID>38</StepID>
<TaskID>262</TaskID>
</Step>
<Step>
<StepID>39</StepID>
<TaskID>263</TaskID>
</Step>
<Step>
<StepID>40</StepID>
<TaskID>264</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>20</MissionID>
<Name>Lost Island Mission 4</Name>
<DisplayName xsi:nil="true"/>
<IconName xsi:nil="true"/>
<Description>Mission 4- Explore Lost Island and intro to the store</Description>
<Experience>1</Experience>
<RewardDialog xsi:nil="true"/>
<Step>
<StepID>41</StepID>
<TaskID>265</TaskID>
</Step>
<Step>
<StepID>42</StepID>
<TaskID>266</TaskID>
</Step>
<Step>
<StepID>43</StepID>
<TaskID>267</TaskID>
</Step>
<Step>
<StepID>44</StepID>
<TaskID>268</TaskID>
</Step>
<Step>
<StepID>45</StepID>
<TaskID>269</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>21</MissionID>
<Name>Lost Island Mission 5</Name>
<DisplayName xsi:nil="true"/>
<IconName xsi:nil="true"/>
<Description>Mission 5- Explore the mountain with Hops</Description>
<Experience>1</Experience>
<RewardDialog xsi:nil="true"/>
<Step>
<StepID>46</StepID>
<TaskID>270</TaskID>
</Step>
<Step>
<StepID>47</StepID>
<TaskID>271</TaskID>
</Step>
<Step>
<StepID>48</StepID>
<TaskID>272</TaskID>
</Step>
<Step>
<StepID>49</StepID>
<TaskID>273</TaskID>
</Step>
<Step>
<StepID>50</StepID>
<TaskID>274</TaskID>
</Step>
<Step>
<StepID>51</StepID>
<TaskID>275</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>22</MissionID>
<Name>Lost Island Mission 6</Name>
<DisplayName xsi:nil="true"/>
<IconName xsi:nil="true"/>
<Description>Mission 6- Punk Punk invade- Time to clean house</Description>
<Experience>1</Experience>
<RewardDialog xsi:nil="true"/>
<Step>
<StepID>52</StepID>
<TaskID>276</TaskID>
</Step>
<Step>
<StepID>53</StepID>
<TaskID>277</TaskID>
</Step>
<Step>
<StepID>54</StepID>
<TaskID>278</TaskID>
</Step>
<Step>
<StepID>55</StepID>
<TaskID>279</TaskID>
<TaskID>280</TaskID>
<TaskID>281</TaskID>
<TaskID>282</TaskID>
<TaskID>283</TaskID>
</Step>
<Step>
<StepID>56</StepID>
<TaskID>284</TaskID>
</Step>
<Step>
<StepID>57</StepID>
<TaskID>285</TaskID>
</Step>
<Step>
<StepID>58</StepID>
<TaskID>286</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>23</MissionID>
<Name>Lost Island Mission 7</Name>
<DisplayName xsi:nil="true"/>
<IconName xsi:nil="true"/>
<Description>Mission 7- Get the Lost Shores ready for the celebration</Description>
<Experience>1</Experience>
<RewardDialog xsi:nil="true"/>
<Step>
<StepID>59</StepID>
<TaskID>287</TaskID>
</Step>
<Step>
<StepID>60</StepID>
<TaskID>288</TaskID>
</Step>
<Step>
<StepID>61</StepID>
<TaskID>289</TaskID>
<TaskID>290</TaskID>
<TaskID>291</TaskID>
</Step>
<Step>
<StepID>62</StepID>
<TaskID>292</TaskID>
<TaskID>293</TaskID>
<TaskID>294</TaskID>
</Step>
<Step>
<StepID>63</StepID>
<TaskID>295</TaskID>
</Step>
<Step>
<StepID>64</StepID>
<TaskID>296</TaskID>
</Step>
<Step>
<StepID>65</StepID>
<TaskID>297</TaskID>
</Step>
<Step>
<StepID>66</StepID>
<TaskID>298</TaskID>
</Step>
<Step>
<StepID>67</StepID>
<TaskID>299</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>24</MissionID>
<Name>Lost Island Mission 8</Name>
<DisplayName xsi:nil="true"/>
<IconName xsi:nil="true"/>
<Description>Mission 8- Lets Party</Description>
<Experience>1</Experience>
<RewardDialog xsi:nil="true"/>
<Step>
<StepID>68</StepID>
<TaskID>300</TaskID>
</Step>
<Step>
<StepID>69</StepID>
<TaskID>301</TaskID>
</Step>
<Step>
<StepID>70</StepID>
<TaskID>302</TaskID>
</Step>
<Step>
<StepID>71</StepID>
<TaskID>303</TaskID>
</Step>
<Step>
<StepID>72</StepID>
<TaskID>304</TaskID>
</Step>
<Step>
<StepID>73</StepID>
<TaskID>305</TaskID>
</Step>
<Step>
<StepID>74</StepID>
<TaskID>306</TaskID>
</Step>
<Step>
<StepID>75</StepID>
<TaskID>307</TaskID>
</Step>
<Step>
<StepID>76</StepID>
<TaskID>308</TaskID>
</Step>
<Step>
<StepID>77</StepID>
<TaskID>309</TaskID>
</Step>
<Step>
<StepID>78</StepID>
<TaskID>310</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>25</MissionID>
<Name>Lost Island Mission 9</Name>
<DisplayName xsi:nil="true"/>
<IconName xsi:nil="true"/>
<Description>Mission 9- Find where Punk Punks are coming from.</Description>
<Experience>1</Experience>
<RewardDialog xsi:nil="true"/>
<Step>
<StepID>79</StepID>
<TaskID>311</TaskID>
</Step>
<Step>
<StepID>80</StepID>
<TaskID>312</TaskID>
</Step>
<Step>
<StepID>81</StepID>
<TaskID>313</TaskID>
</Step>
<Step>
<StepID>82</StepID>
<TaskID>314</TaskID>
</Step>
<Step>
<StepID>83</StepID>
<TaskID>315</TaskID>
</Step>
<Step>
<StepID>84</StepID>
<TaskID>316</TaskID>
</Step>
<Step>
<StepID>85</StepID>
<TaskID>317</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>26</MissionID>
<Name>Lost Island Mission 10</Name>
<DisplayName xsi:nil="true"/>
<IconName xsi:nil="true"/>
<Description>Mission 10- Introduce Rabbit holes and get statue</Description>
<Experience>1</Experience>
<RewardDialog xsi:nil="true"/>
<Step>
<StepID>86</StepID>
<TaskID>318</TaskID>
</Step>
<Step>
<StepID>87</StepID>
<TaskID>319</TaskID>
</Step>
<Step>
<StepID>88</StepID>
<TaskID>320</TaskID>
</Step>
<Step>
<StepID>89</StepID>
<TaskID>321</TaskID>
</Step>
<Step>
<StepID>90</StepID>
<TaskID>322</TaskID>
</Step>
<Step>
<StepID>91</StepID>
<TaskID>323</TaskID>
</Step>
<Step>
<StepID>92</StepID>
<TaskID>324</TaskID>
<TaskID>325</TaskID>
</Step>
<Step>
<StepID>93</StepID>
<TaskID>326</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>27</MissionID>
<Name>Lost Island Mission 11</Name>
<DisplayName xsi:nil="true"/>
<IconName xsi:nil="true"/>
<Description>Mission 11- Protect Lost Island from the Punk Punks</Description>
<Experience>1</Experience>
<RewardDialog xsi:nil="true"/>
<Step>
<StepID>94</StepID>
<TaskID>327</TaskID>
</Step>
<Step>
<StepID>95</StepID>
<TaskID>328</TaskID>
</Step>
<Step>
<StepID>96</StepID>
<TaskID>329</TaskID>
</Step>
<Step>
<StepID>97</StepID>
<TaskID>330</TaskID>
</Step>
<Step>
<StepID>98</StepID>
<TaskID>331</TaskID>
</Step>
<Step>
<StepID>99</StepID>
<TaskID>332</TaskID>
</Step>
<Step>
<StepID>100</StepID>
<TaskID>333</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>28</MissionID>
<Name>Lost Island Mission 12</Name>
<DisplayName xsi:nil="true"/>
<IconName xsi:nil="true"/>
<Description>Mission 12- Need to take the statue back to the valley</Description>
<Experience>1</Experience>
<RewardDialog xsi:nil="true"/>
<Step>
<StepID>101</StepID>
<TaskID>334</TaskID>
</Step>
<Step>
<StepID>102</StepID>
<TaskID>335</TaskID>
</Step>
<Step>
<StepID>103</StepID>
<TaskID>336</TaskID>
</Step>
<Step>
<StepID>104</StepID>
<TaskID>338</TaskID>
</Step>
<Step>
<StepID>105</StepID>
<TaskID>339</TaskID>
</Step>
</Mission>
</MissionData>
</StepsMissionsGroup>
<StepsMissionsGroup>
<!-- World of JumpStart - Futureland -->
<GameId>2</GameId>
<WorldName>FIXME</WorldName>
<MissionData/>
</StepsMissionsGroup>
<StepsMissionsGroup>
<!-- World of JumpStart - Marineland -->
<GameId>4</GameId>
<WorldName>FIXME</WorldName>
<MissionData/>
</StepsMissionsGroup>
<StepsMissionsGroup>
<!-- MathBlaster - male -->
<GameId>5</GameId>
<WorldName>MB Boys</WorldName>
<MissionData>
<Mission>
<MissionID>189</MissionID>
<Name>Rescue a Larva</Name>
<DisplayName>ADOPT A PET TO RAISE AND TRAIN.</DisplayName>
<IconName xsi:nil="true"/>
<Description>ADOPT A PET TO RAISE AND TRAIN.</Description>
<Experience>-1</Experience>
<RewardDialog xsi:nil="true"/>
<Step>
<StepID>326</StepID>
<TaskID>505</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>213</MissionID>
<Name>Larva Attachment</Name>
<DisplayName>Play and Feed your larva</DisplayName>
<IconName xsi:nil="true"/>
<Description>Lets get emotionally attached to the larva</Description>
<Experience>-1</Experience>
<RewardDialog>
<FileName>DlgGCM213End</FileName>
<NPC>GC</NPC>
<Bundle>RS_DATA/MBDirectedM213.unity3d</Bundle>
</RewardDialog>
<Step>
<StepID>350</StepID>
<TaskID>529</TaskID>
</Step>
<Step>
<StepID>351</StepID>
<TaskID>530</TaskID>
</Step>
<Step>
<StepID>354</StepID>
<TaskID>533</TaskID>
<TaskID>534</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>215</MissionID>
<Name>MB Boy Visit Mutt Pod</Name>
<DisplayName>Go to your Mutt Pod</DisplayName>
<IconName xsi:nil="true"/>
<Description>Visit Mutt Pod Boy</Description>
<Experience>-1</Experience>
<RewardDialog>
<FileName>DlgGCM215End</FileName>
<NPC>GC</NPC>
<Bundle>RS_DATA/MBDirectedM215.unity3d</Bundle>
</RewardDialog>
<Step>
<StepID>358</StepID>
<TaskID>539</TaskID>
</Step>
<Step>
<StepID>360</StepID>
<TaskID>541</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>217</MissionID>
<Name>MB Boy Visit Pod</Name>
<DisplayName>Go to your Pod</DisplayName>
<IconName xsi:nil="true"/>
<Description>Visit Pod Boy</Description>
<Experience>-1</Experience>
<RewardDialog>
<FileName>DlgGCM217End</FileName>
<NPC>GC</NPC>
<Bundle>RS_DATA/MBDirectedM217.unity3d</Bundle>
</RewardDialog>
<Step>
<StepID>366</StepID>
<TaskID>547</TaskID>
</Step>
<Step>
<StepID>368</StepID>
<TaskID>549</TaskID>
</Step>
<Step>
<StepID>370</StepID>
<TaskID>551</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>220</MissionID>
<Name>MB Boy Play Hyperblast</Name>
<DisplayName>Play Hyperblast</DisplayName>
<IconName xsi:nil="true"/>
<Description>Play Hyperblast Boy</Description>
<Experience>-1</Experience>
<RewardDialog xsi:nil="true"/>
<Step>
<StepID>373</StepID>
<TaskID>554</TaskID>
</Step>
</Mission>
</MissionData>
</StepsMissionsGroup>
<StepsMissionsGroup>
<!-- MathBlaster - female -->
<GameId>5</GameId>
<WorldName>MB Girls</WorldName>
<MissionData>
<Mission>
<MissionID>189</MissionID>
<Name>Rescue a Larva</Name>
<DisplayName>ADOPT A PET TO RAISE AND TRAIN.</DisplayName>
<IconName xsi:nil="true"/>
<Description>ADOPT A PET TO RAISE AND TRAIN.</Description>
<Experience>-1</Experience>
<RewardDialog xsi:nil="true"/>
<Step>
<StepID>326</StepID>
<TaskID>505</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>213</MissionID>
<Name>Larva Attachment</Name>
<DisplayName>Play and Feed your larva</DisplayName>
<IconName xsi:nil="true"/>
<Description>Lets get emotionally attached to the larva</Description>
<Experience>-1</Experience>
<RewardDialog>
<FileName>DlgGCM213End</FileName>
<NPC>GC</NPC>
<Bundle>RS_DATA/MBDirectedM213.unity3d</Bundle>
</RewardDialog>
<Step>
<StepID>350</StepID>
<TaskID>529</TaskID>
</Step>
<Step>
<StepID>351</StepID>
<TaskID>530</TaskID>
</Step>
<Step>
<StepID>354</StepID>
<TaskID>533</TaskID>
<TaskID>534</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>216</MissionID>
<Name>MB Girl Visit Mutt Pod</Name>
<DisplayName>Go to your Mutt Pod</DisplayName>
<IconName xsi:nil="true"/>
<Description>Visit Mutt Pod Girl</Description>
<Experience>-1</Experience>
<RewardDialog>
<FileName>DlgGCM216End</FileName>
<NPC>GC</NPC>
<Bundle>RS_DATA/MBDirectedM216.unity3d</Bundle>
</RewardDialog>
<Step>
<StepID>359</StepID>
<TaskID>540</TaskID>
</Step>
<Step>
<StepID>361</StepID>
<TaskID>542</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>218</MissionID>
<Name>MB Girl Visit Pod</Name>
<DisplayName>Go to your Pod</DisplayName>
<IconName xsi:nil="true"/>
<Description>Visit Pod Girl</Description>
<Experience>-1</Experience>
<RewardDialog>
<FileName>DlgGCM218End</FileName>
<NPC>GC</NPC>
<Bundle>RS_DATA/MBDirectedM218.unity3d</Bundle>
</RewardDialog>
<Step>
<StepID>367</StepID>
<TaskID>548</TaskID>
</Step>
<Step>
<StepID>369</StepID>
<TaskID>550</TaskID>
</Step>
<Step>
<StepID>371</StepID>
<TaskID>552</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>219</MissionID>
<Name>MB Girl Play Hyperblast</Name>
<DisplayName>Play Hyperblast</DisplayName>
<IconName xsi:nil="true"/>
<Description>Play Hyperblast Girl</Description>
<Experience>-1</Experience>
<RewardDialog xsi:nil="true"/>
<Step>
<StepID>372</StepID>
<TaskID>553</TaskID>
</Step>
</Mission>
</MissionData>
</StepsMissionsGroup>
</ArrayOfStepsMissionsGroup>

View File

@ -1,101 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<MissionData xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Mission>
<MissionID>189</MissionID>
<Name>Rescue a Larva</Name>
<DisplayName>ADOPT A PET TO RAISE AND TRAIN.</DisplayName>
<IconName xsi:nil="true" />
<Description>ADOPT A PET TO RAISE AND TRAIN.</Description>
<Experience>-1</Experience>
<RewardDialog xsi:nil="true" />
<Step>
<StepID>326</StepID>
<TaskID>505</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>213</MissionID>
<Name>Larva Attachment</Name>
<DisplayName>Play and Feed your larva</DisplayName>
<IconName xsi:nil="true" />
<Description>Lets get emotionally attached to the larva</Description>
<Experience>-1</Experience>
<RewardDialog>
<FileName>DlgGCM213End</FileName>
<NPC>GC</NPC>
<Bundle>RS_DATA/MBDirectedM213.unity3d</Bundle>
</RewardDialog>
<Step>
<StepID>350</StepID>
<TaskID>529</TaskID>
</Step>
<Step>
<StepID>351</StepID>
<TaskID>530</TaskID>
</Step>
<Step>
<StepID>354</StepID>
<TaskID>533</TaskID>
<TaskID>534</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>215</MissionID>
<Name>MB Boy Visit Mutt Pod</Name>
<DisplayName>Go to your Mutt Pod</DisplayName>
<IconName xsi:nil="true" />
<Description>Visit Mutt Pod Boy</Description>
<Experience>-1</Experience>
<RewardDialog>
<FileName>DlgGCM215End</FileName>
<NPC>GC</NPC>
<Bundle>RS_DATA/MBDirectedM215.unity3d</Bundle>
</RewardDialog>
<Step>
<StepID>358</StepID>
<TaskID>539</TaskID>
</Step>
<Step>
<StepID>360</StepID>
<TaskID>541</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>217</MissionID>
<Name>MB Boy Visit Pod</Name>
<DisplayName>Go to your Pod</DisplayName>
<IconName xsi:nil="true" />
<Description>Visit Pod Boy</Description>
<Experience>-1</Experience>
<RewardDialog>
<FileName>DlgGCM217End</FileName>
<NPC>GC</NPC>
<Bundle>RS_DATA/MBDirectedM217.unity3d</Bundle>
</RewardDialog>
<Step>
<StepID>366</StepID>
<TaskID>547</TaskID>
</Step>
<Step>
<StepID>368</StepID>
<TaskID>549</TaskID>
</Step>
<Step>
<StepID>370</StepID>
<TaskID>551</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>220</MissionID>
<Name>MB Boy Play Hyperblast</Name>
<DisplayName>Play Hyperblast</DisplayName>
<IconName xsi:nil="true" />
<Description>Play Hyperblast Boy</Description>
<Experience>-1</Experience>
<RewardDialog xsi:nil="true" />
<Step>
<StepID>373</StepID>
<TaskID>554</TaskID>
</Step>
</Mission>
</MissionData>

View File

@ -1,497 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<MissionData xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Mission>
<MissionID>4</MissionID>
<Name>Lost Island Mission 1</Name>
<DisplayName xsi:nil="true" />
<IconName xsi:nil="true" />
<Description>Welcome to Training Island</Description>
<Experience>1</Experience>
<RewardDialog xsi:nil="true" />
<Step>
<StepID>1</StepID>
<TaskID>1</TaskID>
</Step>
<Step>
<StepID>2</StepID>
<TaskID>2</TaskID>
</Step>
<Step>
<StepID>3</StepID>
<TaskID>3</TaskID>
</Step>
<Step>
<StepID>4</StepID>
<TaskID>4</TaskID>
</Step>
<Step>
<StepID>5</StepID>
<TaskID>5</TaskID>
</Step>
<Step>
<StepID>179</StepID>
<TaskID>349</TaskID>
</Step>
<Step>
<StepID>6</StepID>
<TaskID>6</TaskID>
</Step>
<Step>
<StepID>7</StepID>
<TaskID>7</TaskID>
</Step>
<Step>
<StepID>8</StepID>
<TaskID>8</TaskID>
</Step>
<Step>
<StepID>9</StepID>
<TaskID>9</TaskID>
</Step>
<Step>
<StepID>10</StepID>
<TaskID>10</TaskID>
</Step>
<Step>
<StepID>23</StepID>
<TaskID>18</TaskID>
</Step>
<Step>
<StepID>24</StepID>
<TaskID>19</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>18</MissionID>
<Name>Lost Island Mission 2</Name>
<DisplayName xsi:nil="true" />
<IconName xsi:nil="true" />
<Description>Mission 2- Congrats! Take the ship to Lost Island and get familar with home base.</Description>
<Experience>1</Experience>
<RewardDialog xsi:nil="true" />
<Step>
<StepID>26</StepID>
<TaskID>250</TaskID>
</Step>
<Step>
<StepID>27</StepID>
<TaskID>251</TaskID>
</Step>
<Step>
<StepID>28</StepID>
<TaskID>252</TaskID>
</Step>
<Step>
<StepID>106</StepID>
<TaskID>348</TaskID>
</Step>
<Step>
<StepID>29</StepID>
<TaskID>253</TaskID>
</Step>
<Step>
<StepID>30</StepID>
<TaskID>254</TaskID>
</Step>
<Step>
<StepID>31</StepID>
<TaskID>255</TaskID>
</Step>
<Step>
<StepID>32</StepID>
<TaskID>256</TaskID>
</Step>
<Step>
<StepID>33</StepID>
<TaskID>257</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>19</MissionID>
<Name>Lost Island Mission 3</Name>
<DisplayName xsi:nil="true" />
<IconName xsi:nil="true" />
<Description>Mission 3- Introduction to Lost Shores</Description>
<Experience>1</Experience>
<RewardDialog xsi:nil="true" />
<Step>
<StepID>34</StepID>
<TaskID>258</TaskID>
</Step>
<Step>
<StepID>35</StepID>
<TaskID>259</TaskID>
</Step>
<Step>
<StepID>36</StepID>
<TaskID>260</TaskID>
</Step>
<Step>
<StepID>37</StepID>
<TaskID>261</TaskID>
</Step>
<Step>
<StepID>38</StepID>
<TaskID>262</TaskID>
</Step>
<Step>
<StepID>39</StepID>
<TaskID>263</TaskID>
</Step>
<Step>
<StepID>40</StepID>
<TaskID>264</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>20</MissionID>
<Name>Lost Island Mission 4</Name>
<DisplayName xsi:nil="true" />
<IconName xsi:nil="true" />
<Description>Mission 4- Explore Lost Island and intro to the store</Description>
<Experience>1</Experience>
<RewardDialog xsi:nil="true" />
<Step>
<StepID>41</StepID>
<TaskID>265</TaskID>
</Step>
<Step>
<StepID>42</StepID>
<TaskID>266</TaskID>
</Step>
<Step>
<StepID>43</StepID>
<TaskID>267</TaskID>
</Step>
<Step>
<StepID>44</StepID>
<TaskID>268</TaskID>
</Step>
<Step>
<StepID>45</StepID>
<TaskID>269</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>21</MissionID>
<Name>Lost Island Mission 5</Name>
<DisplayName xsi:nil="true" />
<IconName xsi:nil="true" />
<Description>Mission 5- Explore the mountain with Hops</Description>
<Experience>1</Experience>
<RewardDialog xsi:nil="true" />
<Step>
<StepID>46</StepID>
<TaskID>270</TaskID>
</Step>
<Step>
<StepID>47</StepID>
<TaskID>271</TaskID>
</Step>
<Step>
<StepID>48</StepID>
<TaskID>272</TaskID>
</Step>
<Step>
<StepID>49</StepID>
<TaskID>273</TaskID>
</Step>
<Step>
<StepID>50</StepID>
<TaskID>274</TaskID>
</Step>
<Step>
<StepID>51</StepID>
<TaskID>275</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>22</MissionID>
<Name>Lost Island Mission 6</Name>
<DisplayName xsi:nil="true" />
<IconName xsi:nil="true" />
<Description>Mission 6- Punk Punk invade- Time to clean house</Description>
<Experience>1</Experience>
<RewardDialog xsi:nil="true" />
<Step>
<StepID>52</StepID>
<TaskID>276</TaskID>
</Step>
<Step>
<StepID>53</StepID>
<TaskID>277</TaskID>
</Step>
<Step>
<StepID>54</StepID>
<TaskID>278</TaskID>
</Step>
<Step>
<StepID>55</StepID>
<TaskID>279</TaskID>
<TaskID>280</TaskID>
<TaskID>281</TaskID>
<TaskID>282</TaskID>
<TaskID>283</TaskID>
</Step>
<Step>
<StepID>56</StepID>
<TaskID>284</TaskID>
</Step>
<Step>
<StepID>57</StepID>
<TaskID>285</TaskID>
</Step>
<Step>
<StepID>58</StepID>
<TaskID>286</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>23</MissionID>
<Name>Lost Island Mission 7</Name>
<DisplayName xsi:nil="true" />
<IconName xsi:nil="true" />
<Description>Mission 7- Get the Lost Shores ready for the celebration</Description>
<Experience>1</Experience>
<RewardDialog xsi:nil="true" />
<Step>
<StepID>59</StepID>
<TaskID>287</TaskID>
</Step>
<Step>
<StepID>60</StepID>
<TaskID>288</TaskID>
</Step>
<Step>
<StepID>61</StepID>
<TaskID>289</TaskID>
<TaskID>290</TaskID>
<TaskID>291</TaskID>
</Step>
<Step>
<StepID>62</StepID>
<TaskID>292</TaskID>
<TaskID>293</TaskID>
<TaskID>294</TaskID>
</Step>
<Step>
<StepID>63</StepID>
<TaskID>295</TaskID>
</Step>
<Step>
<StepID>64</StepID>
<TaskID>296</TaskID>
</Step>
<Step>
<StepID>65</StepID>
<TaskID>297</TaskID>
</Step>
<Step>
<StepID>66</StepID>
<TaskID>298</TaskID>
</Step>
<Step>
<StepID>67</StepID>
<TaskID>299</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>24</MissionID>
<Name>Lost Island Mission 8</Name>
<DisplayName xsi:nil="true" />
<IconName xsi:nil="true" />
<Description>Mission 8- Lets Party</Description>
<Experience>1</Experience>
<RewardDialog xsi:nil="true" />
<Step>
<StepID>68</StepID>
<TaskID>300</TaskID>
</Step>
<Step>
<StepID>69</StepID>
<TaskID>301</TaskID>
</Step>
<Step>
<StepID>70</StepID>
<TaskID>302</TaskID>
</Step>
<Step>
<StepID>71</StepID>
<TaskID>303</TaskID>
</Step>
<Step>
<StepID>72</StepID>
<TaskID>304</TaskID>
</Step>
<Step>
<StepID>73</StepID>
<TaskID>305</TaskID>
</Step>
<Step>
<StepID>74</StepID>
<TaskID>306</TaskID>
</Step>
<Step>
<StepID>75</StepID>
<TaskID>307</TaskID>
</Step>
<Step>
<StepID>76</StepID>
<TaskID>308</TaskID>
</Step>
<Step>
<StepID>77</StepID>
<TaskID>309</TaskID>
</Step>
<Step>
<StepID>78</StepID>
<TaskID>310</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>25</MissionID>
<Name>Lost Island Mission 9</Name>
<DisplayName xsi:nil="true" />
<IconName xsi:nil="true" />
<Description>Mission 9- Find where Punk Punks are coming from.</Description>
<Experience>1</Experience>
<RewardDialog xsi:nil="true" />
<Step>
<StepID>79</StepID>
<TaskID>311</TaskID>
</Step>
<Step>
<StepID>80</StepID>
<TaskID>312</TaskID>
</Step>
<Step>
<StepID>81</StepID>
<TaskID>313</TaskID>
</Step>
<Step>
<StepID>82</StepID>
<TaskID>314</TaskID>
</Step>
<Step>
<StepID>83</StepID>
<TaskID>315</TaskID>
</Step>
<Step>
<StepID>84</StepID>
<TaskID>316</TaskID>
</Step>
<Step>
<StepID>85</StepID>
<TaskID>317</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>26</MissionID>
<Name>Lost Island Mission 10</Name>
<DisplayName xsi:nil="true" />
<IconName xsi:nil="true" />
<Description>Mission 10- Introduce Rabbit holes and get statue</Description>
<Experience>1</Experience>
<RewardDialog xsi:nil="true" />
<Step>
<StepID>86</StepID>
<TaskID>318</TaskID>
</Step>
<Step>
<StepID>87</StepID>
<TaskID>319</TaskID>
</Step>
<Step>
<StepID>88</StepID>
<TaskID>320</TaskID>
</Step>
<Step>
<StepID>89</StepID>
<TaskID>321</TaskID>
</Step>
<Step>
<StepID>90</StepID>
<TaskID>322</TaskID>
</Step>
<Step>
<StepID>91</StepID>
<TaskID>323</TaskID>
</Step>
<Step>
<StepID>92</StepID>
<TaskID>324</TaskID>
<TaskID>325</TaskID>
</Step>
<Step>
<StepID>93</StepID>
<TaskID>326</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>27</MissionID>
<Name>Lost Island Mission 11</Name>
<DisplayName xsi:nil="true" />
<IconName xsi:nil="true" />
<Description>Mission 11- Protect Lost Island from the Punk Punks</Description>
<Experience>1</Experience>
<RewardDialog xsi:nil="true" />
<Step>
<StepID>94</StepID>
<TaskID>327</TaskID>
</Step>
<Step>
<StepID>95</StepID>
<TaskID>328</TaskID>
</Step>
<Step>
<StepID>96</StepID>
<TaskID>329</TaskID>
</Step>
<Step>
<StepID>97</StepID>
<TaskID>330</TaskID>
</Step>
<Step>
<StepID>98</StepID>
<TaskID>331</TaskID>
</Step>
<Step>
<StepID>99</StepID>
<TaskID>332</TaskID>
</Step>
<Step>
<StepID>100</StepID>
<TaskID>333</TaskID>
</Step>
</Mission>
<Mission>
<MissionID>28</MissionID>
<Name>Lost Island Mission 12</Name>
<DisplayName xsi:nil="true" />
<IconName xsi:nil="true" />
<Description>Mission 12- Need to take the statue back to the valley</Description>
<Experience>1</Experience>
<RewardDialog xsi:nil="true" />
<Step>
<StepID>101</StepID>
<TaskID>334</TaskID>
</Step>
<Step>
<StepID>102</StepID>
<TaskID>335</TaskID>
</Step>
<Step>
<StepID>103</StepID>
<TaskID>336</TaskID>
</Step>
<Step>
<StepID>104</StepID>
<TaskID>338</TaskID>
</Step>
<Step>
<StepID>105</StepID>
<TaskID>339</TaskID>
</Step>
</Mission>
</MissionData>

View File

@ -0,0 +1,16 @@
using System.Xml.Serialization;
namespace sodoff.Schema;
[XmlRoot(ElementName = "StepsMissionsGroup", Namespace = "")]
[Serializable]
public class StepsMissionsGroup {
[XmlElement(ElementName = "GameId")]
public int GameId;
[XmlElement(ElementName = "WorldName")]
public string WorldName;
[XmlElement(ElementName = "MissionData")]
public MissionData MissionData;
}

View File

@ -8,6 +8,7 @@ namespace sodoff.Services;
public class MissionStoreSingleton {
private Dictionary<int, Mission> missions = new();
private Dictionary<(int, string), MissionData> stepsMissions = new();
private Dictionary<int, Step> steps = new();
private int[] activeMissions;
private int[] upcomingMissions;
@ -48,6 +49,11 @@ public class MissionStoreSingleton {
activeMissionsWoJS = defaultMissions.Active;
upcomingMissionsWoJS = defaultMissions.Upcoming;
var stepsMissionsArray = XmlUtil.DeserializeXml<StepsMissionsGroup[]>(XmlUtil.ReadResourceXmlString("missions.step_missions"));
foreach (var missionGroup in stepsMissionsArray) {
stepsMissions.Add((missionGroup.GameId, missionGroup.WorldName), missionGroup.MissionData);
}
var stepArray = XmlUtil.DeserializeXml<Step[]>(XmlUtil.ReadResourceXmlString("missions.step_missions_steps"));
foreach (var step in stepArray) {
steps.Add(step.StepID.Value, step);
@ -91,6 +97,17 @@ public class MissionStoreSingleton {
return new int[0];
}
public MissionData GetStepsMissions(int gameId, string worldName) {
if (stepsMissions.ContainsKey((gameId, worldName))) {
return stepsMissions[(gameId, worldName)];
} else if (stepsMissions.ContainsKey((gameId, "_default_"))) {
return stepsMissions[(gameId, "_default_")];
} else {
Console.WriteLine($"Can't find missions for gameId={gameId} worldName={worldName}");
return new MissionData();
}
}
public Step GetStep(int stepID) {
return steps[stepID];
}

View File

@ -8,6 +8,9 @@ public class ClientVersion {
public const uint SS = 0x02000000;
public const uint WoJS = 0x01000000;
public const uint WoJS_AdvLand = 0x01000100; // World of JumpStart -- Adventureland
public const uint WoJS_FutureLand = 0x01000200; // World of JumpStart -- Futureland
public const uint WoJS_MarineLand = 0x01000300; // World of JumpStart -- Marineland
public const uint WoJS_StoryLand = 0x01000400; // World of JumpStart -- Storyland
public const uint WoJS_NewAvatar = 0x01010000; // World of JumpStart with new avatars (e.g. 1.21)
public static uint GetVersion(string apiKey) {
@ -49,6 +52,18 @@ public class ClientVersion {
apiKey == "b4e0f71a-1cda-462a-97b3-0b355e87e0c8"
) {
return WoJS_AdvLand;
} else if (
apiKey == "4fb5e29f-64e7-4cbb-8554-6f6c54b57597"
) {
return WoJS_FutureLand;
} else if (
apiKey == "dc37ef0d-e1f8-4718-8239-73e68424e384"
) {
return WoJS_MarineLand;
} else if (
apiKey == "bd69b6b9-a921-4741-a2a0-92fc40cc2e58"
) {
return WoJS_StoryLand;
}
Console.WriteLine($"Unknown apiKey value: {apiKey}");
return 0;

View File

@ -148,10 +148,7 @@
<EmbeddedResource Include="Resources\missions\step_missions_steps.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="Resources\missions\step_missions_wojs_al.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="Resources\missions\step_missions_mb.xml">
<EmbeddedResource Include="Resources\missions\step_missions.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</EmbeddedResource>
<EmbeddedResource Include="Resources\missions\badge_wojs_al.xml">