forked from SoDOff-Project/sodoff
properly track mission states and rewards
This commit is contained in:
parent
94da3ff337
commit
b7e2b2f822
@ -13,10 +13,12 @@ public class ContentController : Controller {
|
||||
private readonly DBContext ctx;
|
||||
private KeyValueService keyValueService;
|
||||
private ItemService itemService;
|
||||
public ContentController(DBContext ctx, KeyValueService keyValueService, ItemService itemService) {
|
||||
private MissionService missionService;
|
||||
public ContentController(DBContext ctx, KeyValueService keyValueService, ItemService itemService, MissionService missionService) {
|
||||
this.ctx = ctx;
|
||||
this.keyValueService = keyValueService;
|
||||
this.itemService = itemService;
|
||||
this.missionService = missionService;
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
@ -452,26 +454,12 @@ public class ContentController : Controller {
|
||||
[Route("V2/ContentWebService.asmx/GetUserActiveMissionState")]
|
||||
public IActionResult GetUserActiveMissionState([FromForm] string apiToken, [FromForm] string userId) {
|
||||
Session? session = ctx.Sessions.FirstOrDefault(s => s.ApiToken == apiToken);
|
||||
UserMissionStateResult result = new UserMissionStateResult { Missions = new List<Mission>() };
|
||||
Mission tutorial = XmlUtil.DeserializeXml<Mission>(XmlUtil.ReadResourceXmlString("tutorialmission"));
|
||||
|
||||
// Update the mission with completed tasks
|
||||
List<Model.TaskStatus> taskStatuses = ctx.TaskStatuses.Where(e => e.VikingId == userId && e.MissionId == tutorial.MissionID).ToList();
|
||||
foreach (var task in taskStatuses) {
|
||||
RuleItem? rule = tutorial.MissionRule.Criteria.RuleItems.Find(x => x.ID == task.Id);
|
||||
if (rule != null && task.Completed) rule.Complete = 1;
|
||||
|
||||
Schema.Task? t = tutorial.Tasks.Find(x => x.TaskID == task.Id);
|
||||
if (t != null) {
|
||||
if (task.Completed) t.Completed = 1;
|
||||
t.Payload = task.Payload;
|
||||
}
|
||||
}
|
||||
|
||||
result.Missions.Add(tutorial);
|
||||
|
||||
if (session is null)
|
||||
return Ok("error");
|
||||
UserMissionStateResult result = new UserMissionStateResult { Missions = new List<Mission>() };
|
||||
Mission tutorial = missionService.GetMissionWithProgress(999, userId);
|
||||
|
||||
result.Missions.Add(tutorial);
|
||||
|
||||
result.UserID = Guid.Parse(session.VikingId);
|
||||
return Ok(result); // TODO: placeholder, returns the tutorial
|
||||
@ -499,24 +487,17 @@ public class ContentController : Controller {
|
||||
if (session is null || session.VikingId != userId)
|
||||
return Ok(new SetTaskStateResult { Success = false, Status = SetTaskStateStatus.Unknown });
|
||||
|
||||
Model.TaskStatus? status = ctx.TaskStatuses.FirstOrDefault(task => task.Id == taskId && task.MissionId == missionId && task.VikingId == userId);
|
||||
List<MissionCompletedResult> results = missionService.UpdateTaskProgress(missionId, taskId, userId, completed, xmlPayload);
|
||||
|
||||
if (status is null) {
|
||||
status = new Model.TaskStatus {
|
||||
Id = taskId,
|
||||
MissionId = missionId,
|
||||
VikingId = userId,
|
||||
Payload = xmlPayload,
|
||||
Completed = completed
|
||||
};
|
||||
ctx.TaskStatuses.Add(status);
|
||||
} else {
|
||||
status.Payload = xmlPayload;
|
||||
status.Completed = completed;
|
||||
}
|
||||
ctx.SaveChanges();
|
||||
SetTaskStateResult taskResult = new SetTaskStateResult {
|
||||
Success = true,
|
||||
Status = SetTaskStateStatus.TaskCanBeDone,
|
||||
};
|
||||
|
||||
return Ok(new SetTaskStateResult { Success = true, Status = SetTaskStateStatus.TaskCanBeDone });
|
||||
if (results.Count > 0)
|
||||
taskResult.MissionsCompleted = results.ToArray();
|
||||
|
||||
return Ok(taskResult);
|
||||
}
|
||||
|
||||
private RaisedPetData GetRaisedPetDataFromDragon (Dragon dragon) {
|
||||
|
@ -14,6 +14,8 @@ builder.Services.AddControllers(options => {
|
||||
builder.Services.AddDbContext<DBContext>();
|
||||
builder.Services.AddScoped<KeyValueService>();
|
||||
builder.Services.AddSingleton<ItemService>();
|
||||
builder.Services.AddSingleton<MissionStoreSingleton>();
|
||||
builder.Services.AddScoped<MissionService>();
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
|
481
src/Resources/missions.xml
Normal file
481
src/Resources/missions.xml
Normal file
@ -0,0 +1,481 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Missions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<Mission>
|
||||
<RPT>false</RPT>
|
||||
<I>999</I>
|
||||
<N>Quest 1</N>
|
||||
<PID>51</PID>
|
||||
<G>3</G>
|
||||
<P xsi:nil="true" />
|
||||
<S><Data><Setup><Scene>HubFTUEDO</Scene><Asset>RS_DATA/PfGrpQMMO_Off.unity3d/PfGrpQMMO_Off</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Setup><Scene>HubSchoolDO</Scene><Asset>RS_DATA/PfGrpFTUE2020T15.unity3d/PfGrpFTUE2020T15</Asset><Recursive>false</Recursive><Persistent>true</Persistent></Setup><Repeat>0</Repeat><Hidden>0</Hidden><Reward><Asset>PfUiMissionRewardDBDO</Asset></Reward><Random>0</Random><Title><Text>New Student</Text><ID>922059</ID></Title></Data></S>
|
||||
<A>false</A>
|
||||
<C>0</C>
|
||||
<MR>
|
||||
<Prerequisites>
|
||||
<Type>2</Type>
|
||||
<Value>False</Value>
|
||||
<ClientRule>false</ClientRule>
|
||||
</Prerequisites>
|
||||
<Prerequisites>
|
||||
<Type>1</Type>
|
||||
<Value>False</Value>
|
||||
<ClientRule>false</ClientRule>
|
||||
</Prerequisites>
|
||||
<Criteria>
|
||||
<Type>all</Type>
|
||||
<Ordered>true</Ordered>
|
||||
<Min>4</Min>
|
||||
<Repeat>1</Repeat>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>5930</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>5931</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>5932</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>2</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>2880</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>2</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>2881</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>5935</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>5936</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>5937</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>5938</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>2</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>2882</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>5940</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>5941</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>5942</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>2</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>2883</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>5944</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>6619</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
</Criteria>
|
||||
</MR>
|
||||
<V>8</V>
|
||||
<AID>201320</AID>
|
||||
<AAID>0</AAID>
|
||||
<M>
|
||||
<RPT>false</RPT>
|
||||
<I>2880</I>
|
||||
<N>FTUE2020-04</N>
|
||||
<PID>51</PID>
|
||||
<G>3</G>
|
||||
<P>999</P>
|
||||
<S><Data><Repeat>0</Repeat><Hidden>0</Hidden><Reward><Asset /></Reward><Random>0</Random><Title><Text>{{Input}} on cage</Text><ID>939800</ID></Title></Data></S>
|
||||
<A>false</A>
|
||||
<C>0</C>
|
||||
<MR>
|
||||
<Prerequisites>
|
||||
<Type>2</Type>
|
||||
<Value>False</Value>
|
||||
<ClientRule>false</ClientRule>
|
||||
</Prerequisites>
|
||||
<Prerequisites>
|
||||
<Type>1</Type>
|
||||
<Value>False</Value>
|
||||
<ClientRule>false</ClientRule>
|
||||
</Prerequisites>
|
||||
<Criteria>
|
||||
<Type>all</Type>
|
||||
<Ordered>true</Ordered>
|
||||
<Min>4</Min>
|
||||
<Repeat>1</Repeat>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>2880</MissionID>
|
||||
<ID>5933</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
</Criteria>
|
||||
</MR>
|
||||
<V>8</V>
|
||||
<AID>0</AID>
|
||||
<AAID>0</AAID>
|
||||
<Task>
|
||||
<I>5933</I>
|
||||
<N>FTUE2020-04: Click cage</N>
|
||||
<S><Data><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>Be careful. Even baby dragons can be dangerous when frightened. Step forward and {{input}} on the cage door to open it. After that, just trust your instincts!@@Hey, don't worry, you got this.</Text><ID>939805</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>CutScene</Type><Asset>RS_DATA/PfGrpFTUE2020T04CS.unity3d/PfGrpFTUE2020T04CS</Asset><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubFTUEDO</Value></Pair><Pair><Key>Type</Key><Value>DragonSelect</Value></Pair><Pair><Key>NPC</Key><Value>PfDWFTUECage</Value></Pair><Pair><Key>Asset</Key><Value>RS_DATA/PfUiFTUEDragonSelection.unity3d/PfUiFTUEDragonSelection</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Meet</Type><Title><Text>{{Input}} on the Dragon Cage</Text><ID>939804</ID></Title><Desc><Text>{{Input}} on the Dragon Cage</Text><ID>939804</ID></Desc><AutoComplete><Pair><Key>RaisedPetStage</Key><Value>BABY</Value></Pair></AutoComplete></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
</M>
|
||||
<M>
|
||||
<RPT>false</RPT>
|
||||
<I>2881</I>
|
||||
<N>FTUE2020-05</N>
|
||||
<PID>51</PID>
|
||||
<G>3</G>
|
||||
<P>999</P>
|
||||
<S><Data><Repeat>0</Repeat><Hidden>0</Hidden><Reward><Asset>PfUiMissionRewardDBDO</Asset></Reward><Random>0</Random><Title><Text>Look for a way out of the cave</Text><ID>939801</ID></Title></Data></S>
|
||||
<A>false</A>
|
||||
<C>0</C>
|
||||
<MR>
|
||||
<Prerequisites>
|
||||
<Type>2</Type>
|
||||
<Value>False</Value>
|
||||
<ClientRule>false</ClientRule>
|
||||
</Prerequisites>
|
||||
<Prerequisites>
|
||||
<Type>1</Type>
|
||||
<Value>False</Value>
|
||||
<ClientRule>false</ClientRule>
|
||||
</Prerequisites>
|
||||
<Criteria>
|
||||
<Type>all</Type>
|
||||
<Ordered>true</Ordered>
|
||||
<Min>4</Min>
|
||||
<Repeat>1</Repeat>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>2881</MissionID>
|
||||
<ID>5934</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
</Criteria>
|
||||
</MR>
|
||||
<V>8</V>
|
||||
<AID>206555</AID>
|
||||
<AAID>0</AAID>
|
||||
<Task>
|
||||
<I>5934</I>
|
||||
<N>FTUE2020-05: Look for a way out</N>
|
||||
<S><Data><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>Whoa, that was unexpected. Who would have thought you two would bond so quickly?@@You’re a natural at this! Well, mission accomplished!@@Now, what do you say we find a way out of here?</Text><ID>939807</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>This must be the heaviest part of the cave-in. With all these boulders piled up, this might be a dead end for us.@@{{dragon name}} is only a Tiny Tooth, so their dragon fire isn't quite enough to shatter that rock. But they are very close, and we can help them to grow.</Text><ID>939808</ID><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubFTUEDO</Value></Pair><Pair><Key>Name</Key><Value>PfMarker_CaveIn</Value></Pair><Pair><Key>Range</Key><Value>8</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Look for a way out of the Cave</Text><ID>939801</ID></Title><Desc><Text>Look for a way out of the Cave</Text><ID>939801</ID></Desc></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<AR>
|
||||
<a>1</a>
|
||||
<p>6</p>
|
||||
<i xsi:nil="true" />
|
||||
<t>1</t>
|
||||
<r>8399</r>
|
||||
<ii>10996</ii>
|
||||
<ai>206555</ai>
|
||||
<amulti>true</amulti>
|
||||
<mina>1</mina>
|
||||
<maxa>1</maxa>
|
||||
<d xsi:nil="true" />
|
||||
<cid>0</cid>
|
||||
<ui xsi:nil="true" />
|
||||
<atinfoid>0</atinfoid>
|
||||
<atid>0</atid>
|
||||
</AR>
|
||||
</M>
|
||||
<M>
|
||||
<RPT>false</RPT>
|
||||
<I>2882</I>
|
||||
<N>FTUE2020-10</N>
|
||||
<PID>51</PID>
|
||||
<G>3</G>
|
||||
<P>999</P>
|
||||
<S><Data><Repeat>0</Repeat><Hidden>0</Hidden><Reward><Asset /></Reward><Random>0</Random><Title><Text>Light fire</Text><ID>939802</ID></Title></Data></S>
|
||||
<A>false</A>
|
||||
<C>0</C>
|
||||
<MR>
|
||||
<Prerequisites>
|
||||
<Type>2</Type>
|
||||
<Value>False</Value>
|
||||
<ClientRule>false</ClientRule>
|
||||
</Prerequisites>
|
||||
<Prerequisites>
|
||||
<Type>1</Type>
|
||||
<Value>False</Value>
|
||||
<ClientRule>false</ClientRule>
|
||||
</Prerequisites>
|
||||
<Criteria>
|
||||
<Type>all</Type>
|
||||
<Ordered>true</Ordered>
|
||||
<Min>4</Min>
|
||||
<Repeat>1</Repeat>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>2882</MissionID>
|
||||
<ID>5939</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
</Criteria>
|
||||
</MR>
|
||||
<V>8</V>
|
||||
<AID>206242</AID>
|
||||
<AAID>0</AAID>
|
||||
<Task>
|
||||
<I>5939</I>
|
||||
<N>FTUE2020-10: Light fire</N>
|
||||
<S><Data><Setup><Scene>HubFTUEDO</Scene><Asset>PfDWHiccup</Asset><Location>PfMarker_HiccupFire</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>There’s a good spot for a signal fire. Would you ask {{dragon name}} to shoot it?</Text><ID>939810</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>That’s not going to be enough; the fire is just too small...</Text><ID>939811</ID><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubFTUEDO</Value></Pair><Pair><Key>Location</Key><Value>PfMarker_FireSpot</Value></Pair><Pair><Key>Name</Key><Value>LightFire</Value></Pair><Pair><Key>ItemName</Key><Value>PfDragonLitFirePit</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>{{Input}} on the Fire Pit to Light a Signal Fire</Text><ID>942392</ID></Title><Desc><Text>{{Input}} on the Fire Pit to Light a Signal Fire</Text><ID>942392</ID></Desc></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
</M>
|
||||
<M>
|
||||
<RPT>false</RPT>
|
||||
<I>2883</I>
|
||||
<N>FTUE2020-14</N>
|
||||
<PID>51</PID>
|
||||
<G>3</G>
|
||||
<P>999</P>
|
||||
<S><Data><Repeat>0</Repeat><Hidden>0</Hidden><Reward><Asset>PfUiMissionRewardDBDO</Asset></Reward><Random>0</Random><Title><Text>Follow Hiccup</Text><ID>939803</ID></Title></Data></S>
|
||||
<A>false</A>
|
||||
<C>0</C>
|
||||
<MR>
|
||||
<Prerequisites>
|
||||
<Type>2</Type>
|
||||
<Value>False</Value>
|
||||
<ClientRule>false</ClientRule>
|
||||
</Prerequisites>
|
||||
<Prerequisites>
|
||||
<Type>1</Type>
|
||||
<Value>False</Value>
|
||||
<ClientRule>false</ClientRule>
|
||||
</Prerequisites>
|
||||
<Criteria>
|
||||
<Type>all</Type>
|
||||
<Ordered>true</Ordered>
|
||||
<Min>4</Min>
|
||||
<Repeat>1</Repeat>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>2883</MissionID>
|
||||
<ID>5943</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
</Criteria>
|
||||
</MR>
|
||||
<V>8</V>
|
||||
<AID>207960</AID>
|
||||
<AAID>0</AAID>
|
||||
<Task>
|
||||
<I>5943</I>
|
||||
<N>FTUE2020-14: Follow Hiccup</N>
|
||||
<S><Data><Setup><Scene>HubFTUEDO</Scene><Asset>PfDWToothlessAlphaHiccupRiderPortal</Asset><Location>PfMarker_HiccupAndToothless</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>Now that you've got the hang of this, follow me and Toothless! Come on, I want to show you something cool!</Text><ID>939813</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><Objective><Pair><Key>Scene</Key><Value>HubSchoolDO</Value></Pair><Pair><Key>Location</Key><Value>PfMarker_LoadSchool</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Follow Hiccup and Toothless</Text><ID>942393</ID></Title><Desc><Text>Follow Hiccup and Toothless</Text><ID>942393</ID></Desc></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<AR>
|
||||
<a>1</a>
|
||||
<p>6</p>
|
||||
<i xsi:nil="true" />
|
||||
<t>1</t>
|
||||
<r>10897</r>
|
||||
<ii>20882</ii>
|
||||
<ai>207960</ai>
|
||||
<amulti>true</amulti>
|
||||
<mina>1</mina>
|
||||
<maxa>1</maxa>
|
||||
<d xsi:nil="true" />
|
||||
<cid>0</cid>
|
||||
<ui xsi:nil="true" />
|
||||
<atinfoid>0</atinfoid>
|
||||
<atid>0</atid>
|
||||
</AR>
|
||||
</M>
|
||||
<Task>
|
||||
<I>5930</I>
|
||||
<N>FTUE2020-01: Talk to Hiccup</N>
|
||||
<S><Data><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>Hey, are you all right, {{Name}}? That cave collapse was no joke. Give me a hand, will you? Use the movement controls to walk here and {{input}} on me.</Text><ID>939815</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>I'm glad you're okay. I guess our investigation about potential Dragon Hunters lurking in these caves paid off, it seems they had a camp right under our feet this entire time.</Text><ID>939816</ID><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubFTUEDO</Value></Pair><Pair><Key>NPC</Key><Value>PfDWHiccup</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Meet</Type><Title><Text>Walk forward and {{input}} on Hiccup</Text><ID>929442</ID></Title></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<Task>
|
||||
<I>5931</I>
|
||||
<N>FTUE2020-02: Find axe</N>
|
||||
<S><Data><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>I’d like to meet up with Toothless again, but there are a few cages here that might have dragons in them.@@We can’t just leave them. I’ll start opening this other one, do you think you could handle the one on your right?@@That lock looks rusted, though... Maybe there’s an axe somewhere around here...</Text><ID>939818</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><Objective><Pair><Key>Scene</Key><Value>HubFTUEDO</Value></Pair><Pair><Key>Name</Key><Value>PfCollectDWAxe</Value></Pair><Pair><Key>Quantity</Key><Value>1</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Find the Axe in the Cave</Text><ID>939817</ID></Title><Desc><Text>Find the Axe in the Cave</Text><ID>939817</ID></Desc></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<Task>
|
||||
<I>5932</I>
|
||||
<N>FTUE2020-03: Chop padlock</N>
|
||||
<S><Data><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>Perfect! That axe looks strong enough. I'm sure it can chop the padlock off the dragon cage without a problem!</Text><ID>939820</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>All right, that did the trick!</Text><ID>939821</ID><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubFTUEDO</Value></Pair><Pair><Key>Location</Key><Value>ChoppableCage</Value></Pair><Pair><Key>Name</Key><Value>Chop</Value></Pair><Pair><Key>ItemName</Key><Value>PfDragonCageChop</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Chop the Padlock on the Dragon Cage</Text><ID>939819</ID></Title><Desc><Text>Chop the Padlock on the Dragon Cage</Text><ID>939819</ID></Desc></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<Task>
|
||||
<I>5935</I>
|
||||
<N>FTUE2020-06: Age Up</N>
|
||||
<S><Data><Setup><Scene>HubFTUEDO</Scene><Asset>PfDWHiccup</Asset><Location>PfMarker_HiccupCaveIn</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>This will allow us to take a dragon straight to Broad Wing Stage! I'll show you how.</Text><ID>939823</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><Objective><Pair><Key>Scene</Key><Value>HubFTUEDO</Value></Pair><Pair><Key>Name</Key><Value>AgeUp</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Age Up {{dragon name}}</Text><ID>942394</ID></Title><Desc><Text>Age Up {{dragon name}}</Text><ID>942394</ID></Desc><AutoComplete><Pair><Key>RaisedPetStage</Key><Value>ADULT</Value></Pair></AutoComplete></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<Task>
|
||||
<I>5936</I>
|
||||
<N>FTUE2020-07: Shoot</N>
|
||||
<S><Data><Setup><Scene>HubFTUEDO</Scene><Asset>PfDWHiccup</Asset><Location>PfMarker_HiccupCaveIn</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>All right, let's try this now! Look for a weak spot in the rocks, then have {{dragon name}} shoot some fireballs!@@{{Input}} on the cave-in and select the [c][3eebff]Fire[/c][ffffff] button.</Text><ID>939825</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><Objective><Pair><Key>Scene</Key><Value>HubFTUEDO</Value></Pair><Pair><Key>Location</Key><Value>PfCaveInTarget</Value></Pair><Pair><Key>Name</Key><Value>LightFire</Value></Pair><Pair><Key>ItemName</Key><Value>PfCaveInTarget</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>{{Input}} on the Cave-In</Text><ID>942395</ID></Title><Desc><Text>{{Input}} on the Cave-In</Text><ID>942395</ID></Desc></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<Task>
|
||||
<I>5937</I>
|
||||
<N>FTUE2020-08: Collect Box</N>
|
||||
<S><Data><Setup><Scene>HubFTUEDO</Scene><Asset>PfDWHiccup</Asset><Location>PfMarker_HiccupCaveIn</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>That was perfect!</Text><ID>939828</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>Wait... What's that? Is that a chest?</Text><ID>939829</ID><ItemID>0</ItemID><Priority>1</Priority></Offer><End><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>A box of dragon eggs...@@Those Dragon Hunters are getting bolder than we expected.</Text><ID>941113</ID><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubFTUEDO</Value></Pair><Pair><Key>Location</Key><Value>PfCollectDWOpenArcticChest</Value></Pair><Pair><Key>Name</Key><Value>PfCollectDWOpenArcticChest</Value></Pair><Pair><Key>Quantity</Key><Value>1</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Pick up the Chest</Text><ID>939827</ID></Title><Desc><Text>Pick up the Chest</Text><ID>939827</ID></Desc></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<Task>
|
||||
<I>5938</I>
|
||||
<N>FTUE2020-09: Exit cave</N>
|
||||
<S><Data><Setup><Scene>HubFTUEDO</Scene><Asset>PfDWHiccup</Asset><Location>PfMarker_HiccupChest</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>Well, one problem at a time. {{Name}}, can you follow the path of the cave and figure out a way to set up a signal? @@My friends should be nearby, they'll be able to help us out!</Text><ID>939831</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><Objective><Pair><Key>Scene</Key><Value>HubFTUEDO</Value></Pair><Pair><Key>Name</Key><Value>PfMarker_CaveExit</Value></Pair><Pair><Key>Range</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Leave the Cave</Text><ID>939830</ID></Title><Desc><Text>Leave the Cave</Text><ID>939830</ID></Desc></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<Task>
|
||||
<I>5940</I>
|
||||
<N>FTUE2020-11: Collect Leaves</N>
|
||||
<S><Data><Setup><Scene>HubFTUEDO</Scene><Asset>PfDWHiccup</Asset><Location>PfMarker_HiccupFire</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>I’ll get some more wood stacked; can you grab some green leaves to help make this fire more smokey?</Text><ID>939833</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>CutScene</Type><Asset>RS_DATA/PfGrpFTUE2020T11CS.unity3d/PfGrpFTUE2020T11CS</Asset><ItemID>0</ItemID><Priority>0</Priority></End><End><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWAstrid</NPC><Text>There you are! Glad to see you're safe. @@Oh? I don’t think we’ve met, have we?@@{{Name}}? It's great to meet you, I’m Astrid. Seems that Hiccup's gotten himself in over his head again, huh? @@He's lucky he has good people like you around to help him out. And that’s one incredible dragon you’ve found, wow!</Text><ID>941114</ID><ItemID>0</ItemID><Priority>1</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubFTUEDO</Value></Pair><Pair><Key>Name</Key><Value>PfCollectFTUELeaf</Value></Pair><Pair><Key>Quantity</Key><Value>5</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Collect Green Leaves</Text><ID>942396</ID></Title><Desc><Text>Collect Green Leaves</Text><ID>942396</ID></Desc></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<Task>
|
||||
<I>5941</I>
|
||||
<N>FTUE2020-12: Mount</N>
|
||||
<S><Data><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>{{Name}} bonded with {{dragon name}} right away, you should’ve seen it, Astrid. I bet they’ll be flying together in no time. Speaking of which...@@{{Name}} let’s do a quick flying lesson. I’ll show you the ropes!@@First, {{input}} on the [c][3eebff]Mount[/c][ffffff] button to climb aboard your dragon.</Text><ID>939835</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><Objective><Pair><Key>Name</Key><Value>MountDragon</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Mount {{dragon name}}</Text><ID>939834</ID></Title><Desc><Text>Mount {{dragon name}}</Text><ID>939834</ID></Desc><AutoComplete><Pair><Key>Mounted</Key><Value>true</Value></Pair></AutoComplete></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<Task>
|
||||
<I>5942</I>
|
||||
<N>FTUE2020-13: Fly through rings</N>
|
||||
<S><Data><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>Alright! {{dragon name}} is ready to go. Now, you just have to learn how to fly! Why don't you get used to the controls and soar through these rings?@@{{Input}} on the [c][3eebff]Jump[/c][ffffff] button [c][3eebff]twice[/c][ffffff] to get up into the air and we can go from there.</Text><ID>939837</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>You're a natural!</Text><ID>905008</ID><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubFTUEDO</Value></Pair><Pair><Key>Location</Key><Value>PfDWToothlessAlphaGuide</Value></Pair><Pair><Key>Name</Key><Value>PfCollectRing</Value></Pair><Pair><Key>Quantity</Key><Value>5</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Fly through the Rings</Text><ID>938870</ID></Title><Desc><Text>Fly through the Rings</Text><ID>938870</ID></Desc></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<Task>
|
||||
<I>5944</I>
|
||||
<N>FTUE2020-15: Deliver Headmaster</N>
|
||||
<S><Data><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>Welcome to the School of Dragons! I have a feeling you'll fit right in.@@Can you give the box of dragon eggs that you found to the Headmaster of the School? You can't miss him – he's the stout one with all the hair!</Text><ID>939840</ID><ItemID>0</ItemID><Priority>1</Priority></Offer><Offer><Type>CutScene</Type><Asset>RS_DATA/PfGrpFTUE2020T14CS.unity3d/PfGrpFTUE2020T14CS</Asset><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHeadmaster</NPC><Text>You come highly recommended from the Chieftain of Berk himself. Welcome, {{Name}}. So, are you ready to learn how to become the Ultimate Dragon Trainer?</Text><ID>939841</ID><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubSchoolDO</Value></Pair><Pair><Key>NPC</Key><Value>PfDWHeadmaster</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Meet</Type><Title><Text>Deliver the Dragon Eggs to the Headmaster</Text><ID>942397</ID></Title><Desc><Text>Deliver the Dragon Eggs to the Headmaster</Text><ID>942397</ID></Desc></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<Task>
|
||||
<I>6619</I>
|
||||
<N>FTUE2020-16: Explain Branch Quest</N>
|
||||
<S><Data><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHeadmaster</NPC><Text>Now {{Name}}, you can learn about the many things we have to offer here at the School through our [c][3eebff]Branch Quests[/c][ffffff]</Text><ID>941799</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHeadmaster</NPC><Text>Feel free to also explore the campus, you might even encounter other students. @@We are happy to have you here with us!</Text><ID>941800</ID><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubSchoolDO</Value></Pair><Pair><Key>Name</Key><Value>CompleteTutorial</Value></Pair><Pair><Key>ItemName</Key><Value>BranchUiTutorial</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Check out the Branch Quests</Text><ID>941798</ID></Title><Desc><Text>Check out the Branch Quests</Text><ID>941798</ID></Desc></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<AR>
|
||||
<a>5</a>
|
||||
<p>1</p>
|
||||
<i xsi:nil="true" />
|
||||
<t>1</t>
|
||||
<r>3</r>
|
||||
<ii>0</ii>
|
||||
<ai>201320</ai>
|
||||
<amulti>true</amulti>
|
||||
<mina>5</mina>
|
||||
<maxa>5</maxa>
|
||||
<d xsi:nil="true" />
|
||||
<cid>0</cid>
|
||||
<ui xsi:nil="true" />
|
||||
<atinfoid>0</atinfoid>
|
||||
<atid>0</atid>
|
||||
</AR>
|
||||
<AR>
|
||||
<a>100</a>
|
||||
<p>2</p>
|
||||
<i xsi:nil="true" />
|
||||
<t>1</t>
|
||||
<r>23</r>
|
||||
<ii>0</ii>
|
||||
<ai>201320</ai>
|
||||
<amulti>true</amulti>
|
||||
<mina>100</mina>
|
||||
<maxa>100</maxa>
|
||||
<d xsi:nil="true" />
|
||||
<cid>0</cid>
|
||||
<ui xsi:nil="true" />
|
||||
<atinfoid>0</atinfoid>
|
||||
<atid>0</atid>
|
||||
</AR>
|
||||
<AR>
|
||||
<a>50</a>
|
||||
<p>8</p>
|
||||
<i xsi:nil="true" />
|
||||
<t>1</t>
|
||||
<r>609</r>
|
||||
<ii>0</ii>
|
||||
<ai>201320</ai>
|
||||
<amulti>true</amulti>
|
||||
<mina>50</mina>
|
||||
<maxa>50</maxa>
|
||||
<d xsi:nil="true" />
|
||||
<cid>0</cid>
|
||||
<ui xsi:nil="true" />
|
||||
<atinfoid>0</atinfoid>
|
||||
<atid>0</atid>
|
||||
</AR>
|
||||
<AR>
|
||||
<a>50</a>
|
||||
<p>12</p>
|
||||
<i xsi:nil="true" />
|
||||
<t>1</t>
|
||||
<r>913</r>
|
||||
<ii>0</ii>
|
||||
<ai>201320</ai>
|
||||
<amulti>true</amulti>
|
||||
<mina>50</mina>
|
||||
<maxa>50</maxa>
|
||||
<d xsi:nil="true" />
|
||||
<cid>0</cid>
|
||||
<ui xsi:nil="true" />
|
||||
<atinfoid>0</atinfoid>
|
||||
<atid>0</atid>
|
||||
</AR>
|
||||
</Mission>
|
||||
</Missions>
|
23707
src/Resources/store.xml
23707
src/Resources/store.xml
File diff suppressed because it is too large
Load Diff
@ -1,479 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Mission xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<RPT>false</RPT>
|
||||
<I>999</I>
|
||||
<N>Quest 1</N>
|
||||
<PID>51</PID>
|
||||
<G>3</G>
|
||||
<P xsi:nil="true" />
|
||||
<S><Data><Setup><Scene>HubFTUEDO</Scene><Asset>RS_DATA/PfGrpQMMO_Off.unity3d/PfGrpQMMO_Off</Asset><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Setup><Scene>HubSchoolDO</Scene><Asset>RS_DATA/PfGrpFTUE2020T15.unity3d/PfGrpFTUE2020T15</Asset><Recursive>false</Recursive><Persistent>true</Persistent></Setup><Repeat>0</Repeat><Hidden>0</Hidden><Reward><Asset>PfUiMissionRewardDBDO</Asset></Reward><Random>0</Random><Title><Text>New Student</Text><ID>922059</ID></Title></Data></S>
|
||||
<A>false</A>
|
||||
<C>0</C>
|
||||
<MR>
|
||||
<Prerequisites>
|
||||
<Type>2</Type>
|
||||
<Value>False</Value>
|
||||
<ClientRule>false</ClientRule>
|
||||
</Prerequisites>
|
||||
<Prerequisites>
|
||||
<Type>1</Type>
|
||||
<Value>False</Value>
|
||||
<ClientRule>false</ClientRule>
|
||||
</Prerequisites>
|
||||
<Criteria>
|
||||
<Type>all</Type>
|
||||
<Ordered>true</Ordered>
|
||||
<Min>4</Min>
|
||||
<Repeat>1</Repeat>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>5930</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>5931</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>5932</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>2</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>2880</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>2</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>2881</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>5935</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>5936</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>5937</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>5938</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>2</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>2882</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>5940</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>5941</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>5942</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>2</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>2883</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>5944</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>999</MissionID>
|
||||
<ID>6619</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
</Criteria>
|
||||
</MR>
|
||||
<V>8</V>
|
||||
<AID>201320</AID>
|
||||
<AAID>0</AAID>
|
||||
<M>
|
||||
<RPT>false</RPT>
|
||||
<I>2880</I>
|
||||
<N>FTUE2020-04</N>
|
||||
<PID>51</PID>
|
||||
<G>3</G>
|
||||
<P>999</P>
|
||||
<S><Data><Repeat>0</Repeat><Hidden>0</Hidden><Reward><Asset /></Reward><Random>0</Random><Title><Text>{{Input}} on cage</Text><ID>939800</ID></Title></Data></S>
|
||||
<A>false</A>
|
||||
<C>0</C>
|
||||
<MR>
|
||||
<Prerequisites>
|
||||
<Type>2</Type>
|
||||
<Value>False</Value>
|
||||
<ClientRule>false</ClientRule>
|
||||
</Prerequisites>
|
||||
<Prerequisites>
|
||||
<Type>1</Type>
|
||||
<Value>False</Value>
|
||||
<ClientRule>false</ClientRule>
|
||||
</Prerequisites>
|
||||
<Criteria>
|
||||
<Type>all</Type>
|
||||
<Ordered>true</Ordered>
|
||||
<Min>4</Min>
|
||||
<Repeat>1</Repeat>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>2880</MissionID>
|
||||
<ID>5933</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
</Criteria>
|
||||
</MR>
|
||||
<V>8</V>
|
||||
<AID>0</AID>
|
||||
<AAID>0</AAID>
|
||||
<Task>
|
||||
<I>5933</I>
|
||||
<N>FTUE2020-04: Click cage</N>
|
||||
<S><Data><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>Be careful. Even baby dragons can be dangerous when frightened. Step forward and {{input}} on the cage door to open it. After that, just trust your instincts!@@Hey, don't worry, you got this.</Text><ID>939805</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>CutScene</Type><Asset>RS_DATA/PfGrpFTUE2020T04CS.unity3d/PfGrpFTUE2020T04CS</Asset><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubFTUEDO</Value></Pair><Pair><Key>Type</Key><Value>DragonSelect</Value></Pair><Pair><Key>NPC</Key><Value>PfDWFTUECage</Value></Pair><Pair><Key>Asset</Key><Value>RS_DATA/PfUiFTUEDragonSelection.unity3d/PfUiFTUEDragonSelection</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Meet</Type><Title><Text>{{Input}} on the Dragon Cage</Text><ID>939804</ID></Title><Desc><Text>{{Input}} on the Dragon Cage</Text><ID>939804</ID></Desc><AutoComplete><Pair><Key>RaisedPetStage</Key><Value>BABY</Value></Pair></AutoComplete></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
</M>
|
||||
<M>
|
||||
<RPT>false</RPT>
|
||||
<I>2881</I>
|
||||
<N>FTUE2020-05</N>
|
||||
<PID>51</PID>
|
||||
<G>3</G>
|
||||
<P>999</P>
|
||||
<S><Data><Repeat>0</Repeat><Hidden>0</Hidden><Reward><Asset>PfUiMissionRewardDBDO</Asset></Reward><Random>0</Random><Title><Text>Look for a way out of the cave</Text><ID>939801</ID></Title></Data></S>
|
||||
<A>false</A>
|
||||
<C>0</C>
|
||||
<MR>
|
||||
<Prerequisites>
|
||||
<Type>2</Type>
|
||||
<Value>False</Value>
|
||||
<ClientRule>false</ClientRule>
|
||||
</Prerequisites>
|
||||
<Prerequisites>
|
||||
<Type>1</Type>
|
||||
<Value>False</Value>
|
||||
<ClientRule>false</ClientRule>
|
||||
</Prerequisites>
|
||||
<Criteria>
|
||||
<Type>all</Type>
|
||||
<Ordered>true</Ordered>
|
||||
<Min>4</Min>
|
||||
<Repeat>1</Repeat>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>2881</MissionID>
|
||||
<ID>5934</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
</Criteria>
|
||||
</MR>
|
||||
<V>8</V>
|
||||
<AID>206555</AID>
|
||||
<AAID>0</AAID>
|
||||
<Task>
|
||||
<I>5934</I>
|
||||
<N>FTUE2020-05: Look for a way out</N>
|
||||
<S><Data><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>Whoa, that was unexpected. Who would have thought you two would bond so quickly?@@You’re a natural at this! Well, mission accomplished!@@Now, what do you say we find a way out of here?</Text><ID>939807</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>This must be the heaviest part of the cave-in. With all these boulders piled up, this might be a dead end for us.@@{{dragon name}} is only a Tiny Tooth, so their dragon fire isn't quite enough to shatter that rock. But they are very close, and we can help them to grow.</Text><ID>939808</ID><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubFTUEDO</Value></Pair><Pair><Key>Name</Key><Value>PfMarker_CaveIn</Value></Pair><Pair><Key>Range</Key><Value>8</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Look for a way out of the Cave</Text><ID>939801</ID></Title><Desc><Text>Look for a way out of the Cave</Text><ID>939801</ID></Desc></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<AR>
|
||||
<a>1</a>
|
||||
<p>6</p>
|
||||
<i xsi:nil="true" />
|
||||
<t>1</t>
|
||||
<r>8399</r>
|
||||
<ii>10996</ii>
|
||||
<ai>206555</ai>
|
||||
<amulti>true</amulti>
|
||||
<mina>1</mina>
|
||||
<maxa>1</maxa>
|
||||
<d xsi:nil="true" />
|
||||
<cid>0</cid>
|
||||
<ui xsi:nil="true" />
|
||||
<atinfoid>0</atinfoid>
|
||||
<atid>0</atid>
|
||||
</AR>
|
||||
</M>
|
||||
<M>
|
||||
<RPT>false</RPT>
|
||||
<I>2882</I>
|
||||
<N>FTUE2020-10</N>
|
||||
<PID>51</PID>
|
||||
<G>3</G>
|
||||
<P>999</P>
|
||||
<S><Data><Repeat>0</Repeat><Hidden>0</Hidden><Reward><Asset /></Reward><Random>0</Random><Title><Text>Light fire</Text><ID>939802</ID></Title></Data></S>
|
||||
<A>false</A>
|
||||
<C>0</C>
|
||||
<MR>
|
||||
<Prerequisites>
|
||||
<Type>2</Type>
|
||||
<Value>False</Value>
|
||||
<ClientRule>false</ClientRule>
|
||||
</Prerequisites>
|
||||
<Prerequisites>
|
||||
<Type>1</Type>
|
||||
<Value>False</Value>
|
||||
<ClientRule>false</ClientRule>
|
||||
</Prerequisites>
|
||||
<Criteria>
|
||||
<Type>all</Type>
|
||||
<Ordered>true</Ordered>
|
||||
<Min>4</Min>
|
||||
<Repeat>1</Repeat>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>2882</MissionID>
|
||||
<ID>5939</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
</Criteria>
|
||||
</MR>
|
||||
<V>8</V>
|
||||
<AID>206242</AID>
|
||||
<AAID>0</AAID>
|
||||
<Task>
|
||||
<I>5939</I>
|
||||
<N>FTUE2020-10: Light fire</N>
|
||||
<S><Data><Setup><Scene>HubFTUEDO</Scene><Asset>PfDWHiccup</Asset><Location>PfMarker_HiccupFire</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>There’s a good spot for a signal fire. Would you ask {{dragon name}} to shoot it?</Text><ID>939810</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>That’s not going to be enough; the fire is just too small...</Text><ID>939811</ID><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubFTUEDO</Value></Pair><Pair><Key>Location</Key><Value>PfMarker_FireSpot</Value></Pair><Pair><Key>Name</Key><Value>LightFire</Value></Pair><Pair><Key>ItemName</Key><Value>PfDragonLitFirePit</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>{{Input}} on the Fire Pit to Light a Signal Fire</Text><ID>942392</ID></Title><Desc><Text>{{Input}} on the Fire Pit to Light a Signal Fire</Text><ID>942392</ID></Desc></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
</M>
|
||||
<M>
|
||||
<RPT>false</RPT>
|
||||
<I>2883</I>
|
||||
<N>FTUE2020-14</N>
|
||||
<PID>51</PID>
|
||||
<G>3</G>
|
||||
<P>999</P>
|
||||
<S><Data><Repeat>0</Repeat><Hidden>0</Hidden><Reward><Asset>PfUiMissionRewardDBDO</Asset></Reward><Random>0</Random><Title><Text>Follow Hiccup</Text><ID>939803</ID></Title></Data></S>
|
||||
<A>false</A>
|
||||
<C>0</C>
|
||||
<MR>
|
||||
<Prerequisites>
|
||||
<Type>2</Type>
|
||||
<Value>False</Value>
|
||||
<ClientRule>false</ClientRule>
|
||||
</Prerequisites>
|
||||
<Prerequisites>
|
||||
<Type>1</Type>
|
||||
<Value>False</Value>
|
||||
<ClientRule>false</ClientRule>
|
||||
</Prerequisites>
|
||||
<Criteria>
|
||||
<Type>all</Type>
|
||||
<Ordered>true</Ordered>
|
||||
<Min>4</Min>
|
||||
<Repeat>1</Repeat>
|
||||
<RuleItems>
|
||||
<Type>1</Type>
|
||||
<MissionID>2883</MissionID>
|
||||
<ID>5943</ID>
|
||||
<Complete>0</Complete>
|
||||
</RuleItems>
|
||||
</Criteria>
|
||||
</MR>
|
||||
<V>8</V>
|
||||
<AID>207960</AID>
|
||||
<AAID>0</AAID>
|
||||
<Task>
|
||||
<I>5943</I>
|
||||
<N>FTUE2020-14: Follow Hiccup</N>
|
||||
<S><Data><Setup><Scene>HubFTUEDO</Scene><Asset>PfDWToothlessAlphaHiccupRiderPortal</Asset><Location>PfMarker_HiccupAndToothless</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>Now that you've got the hang of this, follow me and Toothless! Come on, I want to show you something cool!</Text><ID>939813</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><Objective><Pair><Key>Scene</Key><Value>HubSchoolDO</Value></Pair><Pair><Key>Location</Key><Value>PfMarker_LoadSchool</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Follow Hiccup and Toothless</Text><ID>942393</ID></Title><Desc><Text>Follow Hiccup and Toothless</Text><ID>942393</ID></Desc></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<AR>
|
||||
<a>1</a>
|
||||
<p>6</p>
|
||||
<i xsi:nil="true" />
|
||||
<t>1</t>
|
||||
<r>10897</r>
|
||||
<ii>20882</ii>
|
||||
<ai>207960</ai>
|
||||
<amulti>true</amulti>
|
||||
<mina>1</mina>
|
||||
<maxa>1</maxa>
|
||||
<d xsi:nil="true" />
|
||||
<cid>0</cid>
|
||||
<ui xsi:nil="true" />
|
||||
<atinfoid>0</atinfoid>
|
||||
<atid>0</atid>
|
||||
</AR>
|
||||
</M>
|
||||
<Task>
|
||||
<I>5930</I>
|
||||
<N>FTUE2020-01: Talk to Hiccup</N>
|
||||
<S><Data><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>Hey, are you all right, {{Name}}? That cave collapse was no joke. Give me a hand, will you? Use the movement controls to walk here and {{input}} on me.</Text><ID>939815</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>I'm glad you're okay. I guess our investigation about potential Dragon Hunters lurking in these caves paid off, it seems they had a camp right under our feet this entire time.</Text><ID>939816</ID><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubFTUEDO</Value></Pair><Pair><Key>NPC</Key><Value>PfDWHiccup</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Meet</Type><Title><Text>Walk forward and {{input}} on Hiccup</Text><ID>929442</ID></Title></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<Task>
|
||||
<I>5931</I>
|
||||
<N>FTUE2020-02: Find axe</N>
|
||||
<S><Data><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>I’d like to meet up with Toothless again, but there are a few cages here that might have dragons in them.@@We can’t just leave them. I’ll start opening this other one, do you think you could handle the one on your right?@@That lock looks rusted, though... Maybe there’s an axe somewhere around here...</Text><ID>939818</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><Objective><Pair><Key>Scene</Key><Value>HubFTUEDO</Value></Pair><Pair><Key>Name</Key><Value>PfCollectDWAxe</Value></Pair><Pair><Key>Quantity</Key><Value>1</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Find the Axe in the Cave</Text><ID>939817</ID></Title><Desc><Text>Find the Axe in the Cave</Text><ID>939817</ID></Desc></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<Task>
|
||||
<I>5932</I>
|
||||
<N>FTUE2020-03: Chop padlock</N>
|
||||
<S><Data><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>Perfect! That axe looks strong enough. I'm sure it can chop the padlock off the dragon cage without a problem!</Text><ID>939820</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>All right, that did the trick!</Text><ID>939821</ID><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubFTUEDO</Value></Pair><Pair><Key>Location</Key><Value>ChoppableCage</Value></Pair><Pair><Key>Name</Key><Value>Chop</Value></Pair><Pair><Key>ItemName</Key><Value>PfDragonCageChop</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Chop the Padlock on the Dragon Cage</Text><ID>939819</ID></Title><Desc><Text>Chop the Padlock on the Dragon Cage</Text><ID>939819</ID></Desc></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<Task>
|
||||
<I>5935</I>
|
||||
<N>FTUE2020-06: Age Up</N>
|
||||
<S><Data><Setup><Scene>HubFTUEDO</Scene><Asset>PfDWHiccup</Asset><Location>PfMarker_HiccupCaveIn</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>This will allow us to take a dragon straight to Broad Wing Stage! I'll show you how.</Text><ID>939823</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><Objective><Pair><Key>Scene</Key><Value>HubFTUEDO</Value></Pair><Pair><Key>Name</Key><Value>AgeUp</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Age Up {{dragon name}}</Text><ID>942394</ID></Title><Desc><Text>Age Up {{dragon name}}</Text><ID>942394</ID></Desc><AutoComplete><Pair><Key>RaisedPetStage</Key><Value>ADULT</Value></Pair></AutoComplete></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<Task>
|
||||
<I>5936</I>
|
||||
<N>FTUE2020-07: Shoot</N>
|
||||
<S><Data><Setup><Scene>HubFTUEDO</Scene><Asset>PfDWHiccup</Asset><Location>PfMarker_HiccupCaveIn</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>All right, let's try this now! Look for a weak spot in the rocks, then have {{dragon name}} shoot some fireballs!@@{{Input}} on the cave-in and select the [c][3eebff]Fire[/c][ffffff] button.</Text><ID>939825</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><Objective><Pair><Key>Scene</Key><Value>HubFTUEDO</Value></Pair><Pair><Key>Location</Key><Value>PfCaveInTarget</Value></Pair><Pair><Key>Name</Key><Value>LightFire</Value></Pair><Pair><Key>ItemName</Key><Value>PfCaveInTarget</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>{{Input}} on the Cave-In</Text><ID>942395</ID></Title><Desc><Text>{{Input}} on the Cave-In</Text><ID>942395</ID></Desc></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<Task>
|
||||
<I>5937</I>
|
||||
<N>FTUE2020-08: Collect Box</N>
|
||||
<S><Data><Setup><Scene>HubFTUEDO</Scene><Asset>PfDWHiccup</Asset><Location>PfMarker_HiccupCaveIn</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>That was perfect!</Text><ID>939828</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>Wait... What's that? Is that a chest?</Text><ID>939829</ID><ItemID>0</ItemID><Priority>1</Priority></Offer><End><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>A box of dragon eggs...@@Those Dragon Hunters are getting bolder than we expected.</Text><ID>941113</ID><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubFTUEDO</Value></Pair><Pair><Key>Location</Key><Value>PfCollectDWOpenArcticChest</Value></Pair><Pair><Key>Name</Key><Value>PfCollectDWOpenArcticChest</Value></Pair><Pair><Key>Quantity</Key><Value>1</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Pick up the Chest</Text><ID>939827</ID></Title><Desc><Text>Pick up the Chest</Text><ID>939827</ID></Desc></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<Task>
|
||||
<I>5938</I>
|
||||
<N>FTUE2020-09: Exit cave</N>
|
||||
<S><Data><Setup><Scene>HubFTUEDO</Scene><Asset>PfDWHiccup</Asset><Location>PfMarker_HiccupChest</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>Well, one problem at a time. {{Name}}, can you follow the path of the cave and figure out a way to set up a signal? @@My friends should be nearby, they'll be able to help us out!</Text><ID>939831</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><Objective><Pair><Key>Scene</Key><Value>HubFTUEDO</Value></Pair><Pair><Key>Name</Key><Value>PfMarker_CaveExit</Value></Pair><Pair><Key>Range</Key><Value>3</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Visit</Type><Title><Text>Leave the Cave</Text><ID>939830</ID></Title><Desc><Text>Leave the Cave</Text><ID>939830</ID></Desc></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<Task>
|
||||
<I>5940</I>
|
||||
<N>FTUE2020-11: Collect Leaves</N>
|
||||
<S><Data><Setup><Scene>HubFTUEDO</Scene><Asset>PfDWHiccup</Asset><Location>PfMarker_HiccupFire</Location><Recursive>false</Recursive><Persistent>false</Persistent></Setup><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>I’ll get some more wood stacked; can you grab some green leaves to help make this fire more smokey?</Text><ID>939833</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>CutScene</Type><Asset>RS_DATA/PfGrpFTUE2020T11CS.unity3d/PfGrpFTUE2020T11CS</Asset><ItemID>0</ItemID><Priority>0</Priority></End><End><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWAstrid</NPC><Text>There you are! Glad to see you're safe. @@Oh? I don’t think we’ve met, have we?@@{{Name}}? It's great to meet you, I’m Astrid. Seems that Hiccup's gotten himself in over his head again, huh? @@He's lucky he has good people like you around to help him out. And that’s one incredible dragon you’ve found, wow!</Text><ID>941114</ID><ItemID>0</ItemID><Priority>1</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubFTUEDO</Value></Pair><Pair><Key>Name</Key><Value>PfCollectFTUELeaf</Value></Pair><Pair><Key>Quantity</Key><Value>5</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Collect Green Leaves</Text><ID>942396</ID></Title><Desc><Text>Collect Green Leaves</Text><ID>942396</ID></Desc></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<Task>
|
||||
<I>5941</I>
|
||||
<N>FTUE2020-12: Mount</N>
|
||||
<S><Data><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>{{Name}} bonded with {{dragon name}} right away, you should’ve seen it, Astrid. I bet they’ll be flying together in no time. Speaking of which...@@{{Name}} let’s do a quick flying lesson. I’ll show you the ropes!@@First, {{input}} on the [c][3eebff]Mount[/c][ffffff] button to climb aboard your dragon.</Text><ID>939835</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><Objective><Pair><Key>Name</Key><Value>MountDragon</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Mount {{dragon name}}</Text><ID>939834</ID></Title><Desc><Text>Mount {{dragon name}}</Text><ID>939834</ID></Desc><AutoComplete><Pair><Key>Mounted</Key><Value>true</Value></Pair></AutoComplete></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<Task>
|
||||
<I>5942</I>
|
||||
<N>FTUE2020-13: Fly through rings</N>
|
||||
<S><Data><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>Alright! {{dragon name}} is ready to go. Now, you just have to learn how to fly! Why don't you get used to the controls and soar through these rings?@@{{Input}} on the [c][3eebff]Jump[/c][ffffff] button [c][3eebff]twice[/c][ffffff] to get up into the air and we can go from there.</Text><ID>939837</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>You're a natural!</Text><ID>905008</ID><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubFTUEDO</Value></Pair><Pair><Key>Location</Key><Value>PfDWToothlessAlphaGuide</Value></Pair><Pair><Key>Name</Key><Value>PfCollectRing</Value></Pair><Pair><Key>Quantity</Key><Value>5</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Collect</Type><Title><Text>Fly through the Rings</Text><ID>938870</ID></Title><Desc><Text>Fly through the Rings</Text><ID>938870</ID></Desc></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<Task>
|
||||
<I>5944</I>
|
||||
<N>FTUE2020-15: Deliver Headmaster</N>
|
||||
<S><Data><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHiccup</NPC><Text>Welcome to the School of Dragons! I have a feeling you'll fit right in.@@Can you give the box of dragon eggs that you found to the Headmaster of the School? You can't miss him – he's the stout one with all the hair!</Text><ID>939840</ID><ItemID>0</ItemID><Priority>1</Priority></Offer><Offer><Type>CutScene</Type><Asset>RS_DATA/PfGrpFTUE2020T14CS.unity3d/PfGrpFTUE2020T14CS</Asset><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHeadmaster</NPC><Text>You come highly recommended from the Chieftain of Berk himself. Welcome, {{Name}}. So, are you ready to learn how to become the Ultimate Dragon Trainer?</Text><ID>939841</ID><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubSchoolDO</Value></Pair><Pair><Key>NPC</Key><Value>PfDWHeadmaster</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Meet</Type><Title><Text>Deliver the Dragon Eggs to the Headmaster</Text><ID>942397</ID></Title><Desc><Text>Deliver the Dragon Eggs to the Headmaster</Text><ID>942397</ID></Desc></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<Task>
|
||||
<I>6619</I>
|
||||
<N>FTUE2020-16: Explain Branch Quest</N>
|
||||
<S><Data><Offer><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHeadmaster</NPC><Text>Now {{Name}}, you can learn about the many things we have to offer here at the School through our [c][3eebff]Branch Quests[/c][ffffff]</Text><ID>941799</ID><ItemID>0</ItemID><Priority>0</Priority></Offer><End><Type>Popup</Type><Asset>PfUiMissionActionDBDO</Asset><NPC>PfDWHeadmaster</NPC><Text>Feel free to also explore the campus, you might even encounter other students. @@We are happy to have you here with us!</Text><ID>941800</ID><ItemID>0</ItemID><Priority>0</Priority></End><Objective><Pair><Key>Scene</Key><Value>HubSchoolDO</Value></Pair><Pair><Key>Name</Key><Value>CompleteTutorial</Value></Pair><Pair><Key>ItemName</Key><Value>BranchUiTutorial</Value></Pair><Pair><Key>Time</Key><Value>0</Value></Pair><Pair><Key>HideArrow</Key><Value>False</Value></Pair></Objective><Type>Action</Type><Title><Text>Check out the Branch Quests</Text><ID>941798</ID></Title><Desc><Text>Check out the Branch Quests</Text><ID>941798</ID></Desc></Data></S>
|
||||
<C>0</C>
|
||||
</Task>
|
||||
<AR>
|
||||
<a>5</a>
|
||||
<p>1</p>
|
||||
<i xsi:nil="true" />
|
||||
<t>1</t>
|
||||
<r>3</r>
|
||||
<ii>0</ii>
|
||||
<ai>201320</ai>
|
||||
<amulti>true</amulti>
|
||||
<mina>5</mina>
|
||||
<maxa>5</maxa>
|
||||
<d xsi:nil="true" />
|
||||
<cid>0</cid>
|
||||
<ui xsi:nil="true" />
|
||||
<atinfoid>0</atinfoid>
|
||||
<atid>0</atid>
|
||||
</AR>
|
||||
<AR>
|
||||
<a>100</a>
|
||||
<p>2</p>
|
||||
<i xsi:nil="true" />
|
||||
<t>1</t>
|
||||
<r>23</r>
|
||||
<ii>0</ii>
|
||||
<ai>201320</ai>
|
||||
<amulti>true</amulti>
|
||||
<mina>100</mina>
|
||||
<maxa>100</maxa>
|
||||
<d xsi:nil="true" />
|
||||
<cid>0</cid>
|
||||
<ui xsi:nil="true" />
|
||||
<atinfoid>0</atinfoid>
|
||||
<atid>0</atid>
|
||||
</AR>
|
||||
<AR>
|
||||
<a>50</a>
|
||||
<p>8</p>
|
||||
<i xsi:nil="true" />
|
||||
<t>1</t>
|
||||
<r>609</r>
|
||||
<ii>0</ii>
|
||||
<ai>201320</ai>
|
||||
<amulti>true</amulti>
|
||||
<mina>50</mina>
|
||||
<maxa>50</maxa>
|
||||
<d xsi:nil="true" />
|
||||
<cid>0</cid>
|
||||
<ui xsi:nil="true" />
|
||||
<atinfoid>0</atinfoid>
|
||||
<atid>0</atid>
|
||||
</AR>
|
||||
<AR>
|
||||
<a>50</a>
|
||||
<p>12</p>
|
||||
<i xsi:nil="true" />
|
||||
<t>1</t>
|
||||
<r>913</r>
|
||||
<ii>0</ii>
|
||||
<ai>201320</ai>
|
||||
<amulti>true</amulti>
|
||||
<mina>50</mina>
|
||||
<maxa>50</maxa>
|
||||
<d xsi:nil="true" />
|
||||
<cid>0</cid>
|
||||
<ui xsi:nil="true" />
|
||||
<atinfoid>0</atinfoid>
|
||||
<atid>0</atid>
|
||||
</AR>
|
||||
</Mission>
|
@ -3,6 +3,7 @@
|
||||
namespace sodoff.Schema;
|
||||
|
||||
[XmlRoot(ElementName = "Mission", Namespace = "")]
|
||||
[Serializable] // FIXME: Remove serializable once we have a different way of deep copying than BinaryFormatter
|
||||
public class Mission {
|
||||
[XmlElement(ElementName = "I")]
|
||||
public int MissionID;
|
||||
|
12
src/Schema/ServerMissionArray.cs
Normal file
12
src/Schema/ServerMissionArray.cs
Normal file
@ -0,0 +1,12 @@
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace sodoff.Schema;
|
||||
|
||||
// NOTE: This schema is NOT used by the client
|
||||
// This is a schema specific to the sodoff server
|
||||
[XmlRoot(ElementName = "Missions", Namespace = "")]
|
||||
public class ServerMissionArray {
|
||||
|
||||
[XmlElement(ElementName = "Mission", IsNullable = true)]
|
||||
public Mission[] MissionDataArray;
|
||||
}
|
@ -17,7 +17,6 @@ public class SetTaskStateResult {
|
||||
[XmlElement(ElementName = "R")]
|
||||
public MissionCompletedResult[] MissionsCompleted;
|
||||
|
||||
// TODO: Not needed now (requires many additional schemas)
|
||||
// [XmlElement(ElementName = "C")]
|
||||
// public CommonInventoryResponse CommonInvRes;
|
||||
[XmlElement(ElementName = "C")]
|
||||
public CommonInventoryResponse CommonInvRes;
|
||||
}
|
||||
|
104
src/Services/MissionService.cs
Normal file
104
src/Services/MissionService.cs
Normal file
@ -0,0 +1,104 @@
|
||||
using sodoff.Model;
|
||||
using sodoff.Schema;
|
||||
using System.Runtime.Serialization.Formatters.Binary;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace sodoff.Services;
|
||||
public class MissionService {
|
||||
|
||||
private readonly DBContext ctx;
|
||||
private MissionStoreSingleton missionStore;
|
||||
|
||||
public MissionService(DBContext ctx, MissionStoreSingleton missionStore) {
|
||||
this.ctx = ctx;
|
||||
this.missionStore = missionStore;
|
||||
}
|
||||
|
||||
public Mission GetMissionWithProgress(int missionId, string userId) {
|
||||
Mission mission = missionStore.GetMission(missionId);
|
||||
UpdateMissionRecursive(mission, userId);
|
||||
return mission;
|
||||
}
|
||||
|
||||
public List<MissionCompletedResult> UpdateTaskProgress(int missionId, int taskId, string userId, bool completed, string xmlPayload) {
|
||||
SetTaskProgressDB(missionId, taskId, userId, completed, xmlPayload);
|
||||
|
||||
// NOTE: This won't work if a mission can be completed by completing an inner mission
|
||||
// Let's have a mission with ID = 1
|
||||
// The mission has an inner inner mission with ID = 2
|
||||
// All tasks in mission 1 are completed
|
||||
// When the last task of mission 2 is completed the client sends SetTaskState with missionId = 2
|
||||
// Mission 2 gets completed which should also complete mission 1 because all tasks and missions are now completed
|
||||
// But there's no way of knowing that with the current data structures
|
||||
// At the moment, I don't know if a mission can be completed this way
|
||||
// I do know that outer missions have inner missions as RuleItems, and if the RuleItem is supposed to be "complete" and it isn't, the quest breaks when the player quits the game and loads the quest again
|
||||
List<MissionCompletedResult> result = new();
|
||||
if (completed) {
|
||||
Mission mission = GetMissionWithProgress(missionId, userId);
|
||||
if (AllMissionsCompleted(mission) && AllTasksCompleted(mission)) {
|
||||
result.Add(new MissionCompletedResult {
|
||||
MissionID = missionId,
|
||||
Rewards = mission.Rewards.ToArray()
|
||||
});
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private void UpdateMissionRecursive(Mission mission, string userId) {
|
||||
List<Model.TaskStatus> taskStatuses = ctx.TaskStatuses.Where(e => e.VikingId == userId && e.MissionId == mission.MissionID).ToList();
|
||||
|
||||
// Update mission rules and tasks
|
||||
foreach (var task in taskStatuses) {
|
||||
// Rules have two types - task and mission
|
||||
RuleItem? rule = mission.MissionRule.Criteria.RuleItems.Find(x => x.ID == task.Id && x.Type == RuleItemType.Task);
|
||||
if (rule != null && task.Completed) rule.Complete = 1;
|
||||
|
||||
Schema.Task? t = mission.Tasks.Find(x => x.TaskID == task.Id);
|
||||
if (t != null) {
|
||||
if (task.Completed) t.Completed = 1;
|
||||
t.Payload = task.Payload;
|
||||
}
|
||||
}
|
||||
|
||||
if (taskStatuses.Count == mission.Tasks.Count && AllMissionsCompleted(mission))
|
||||
mission.Completed = 1;
|
||||
|
||||
// Update all inner missions
|
||||
// Update rules with missions
|
||||
foreach (var innerMission in mission.Missions) {
|
||||
UpdateMissionRecursive(innerMission, userId);
|
||||
if (innerMission.Completed == 1) {
|
||||
RuleItem? rule = mission.MissionRule.Criteria.RuleItems.Find(x => x.ID == innerMission.MissionID && x.Type == RuleItemType.Mission);
|
||||
if (rule != null) rule.Complete = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SetTaskProgressDB(int missionId, int taskId, string userId, bool completed, string xmlPayload) {
|
||||
Model.TaskStatus? status = ctx.TaskStatuses.FirstOrDefault(task => task.Id == taskId && task.MissionId == missionId && task.VikingId == userId);
|
||||
|
||||
if (status is null) {
|
||||
status = new Model.TaskStatus {
|
||||
Id = taskId,
|
||||
MissionId = missionId,
|
||||
VikingId = userId,
|
||||
Payload = xmlPayload,
|
||||
Completed = completed
|
||||
};
|
||||
ctx.TaskStatuses.Add(status);
|
||||
} else {
|
||||
status.Payload = xmlPayload;
|
||||
status.Completed = completed;
|
||||
}
|
||||
ctx.SaveChanges();
|
||||
}
|
||||
|
||||
private bool AllMissionsCompleted(Mission mission) {
|
||||
return mission.Missions.FindAll(x => x.Completed == 1).Count == mission.Missions.Count;
|
||||
}
|
||||
|
||||
private bool AllTasksCompleted(Mission mission) {
|
||||
return mission.Tasks.FindAll(x => x.Completed == 1).Count == mission.Tasks.Count;
|
||||
}
|
||||
}
|
44
src/Services/MissionStoreSingleton.cs
Normal file
44
src/Services/MissionStoreSingleton.cs
Normal file
@ -0,0 +1,44 @@
|
||||
using sodoff.Schema;
|
||||
using sodoff.Util;
|
||||
using System.Runtime.Serialization.Formatters.Binary;
|
||||
|
||||
namespace sodoff.Services;
|
||||
public class MissionStoreSingleton {
|
||||
|
||||
private Dictionary<int, Mission> missions = new();
|
||||
|
||||
public MissionStoreSingleton() {
|
||||
ServerMissionArray missionArray = XmlUtil.DeserializeXml<ServerMissionArray>(XmlUtil.ReadResourceXmlString("missions"));
|
||||
foreach (var mission in missionArray.MissionDataArray) {
|
||||
SetUpRecursive(mission);
|
||||
}
|
||||
}
|
||||
|
||||
public Mission GetMission(int missionID) {
|
||||
return DeepCopy(missions[missionID]);
|
||||
}
|
||||
|
||||
private void SetUpRecursive(Mission mission) {
|
||||
missions.Add(mission.MissionID, mission);
|
||||
foreach (var innerMission in mission.Missions) {
|
||||
SetUpRecursive(innerMission);
|
||||
}
|
||||
}
|
||||
|
||||
// FIXME: Don't use BinaryFormatter for deep copying
|
||||
// FIXME: Remove <EnableUnsafeBinaryFormatterSerialization> flag from the project file once we have a different way of deep copying
|
||||
public static Mission DeepCopy(Mission original) {
|
||||
using (MemoryStream memoryStream = new MemoryStream()) {
|
||||
BinaryFormatter formatter = new BinaryFormatter();
|
||||
|
||||
formatter.Serialize(memoryStream, original);
|
||||
|
||||
memoryStream.Position = 0;
|
||||
|
||||
Mission clone = (Mission)formatter.Deserialize(memoryStream);
|
||||
|
||||
return clone;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -4,6 +4,7 @@
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
@ -13,9 +14,9 @@
|
||||
|
||||
<ItemGroup>
|
||||
<None Remove="Resources\items.xml" />
|
||||
<None Remove="Resources\missions.xml" />
|
||||
<None Remove="Resources\store.xml" />
|
||||
<None Remove="Resources\allranks.xml" />
|
||||
<None Remove="Resources\tutorialmission.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Update="Resources\childlist.xml">
|
||||
@ -41,7 +42,7 @@
|
||||
<EmbeddedResource Include="Resources\items.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Resources\tutorialmission.xml">
|
||||
<EmbeddedResource Include="Resources\missions.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
|
Loading…
x
Reference in New Issue
Block a user