Skip to content

Commit 19816d3

Browse files
committed
add quests
Created an abstract class which is inherited by the other trials.
1 parent 84aa0a5 commit 19816d3

13 files changed

Lines changed: 369 additions & 100 deletions

File tree

Arrowgene.Ddon.GameServer/Scripting/Modules/QuestModule.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
using Arrowgene.Ddon.GameServer.Scripting.Interfaces;
22
using Microsoft.CodeAnalysis.Scripting;
3+
using System.Collections.Generic;
4+
using System.IO;
35

46
namespace Arrowgene.Ddon.GameServer.Scripting
57
{
@@ -10,6 +12,12 @@ public class QuestModule : GameServerScriptModule
1012
public override bool ScanSubdirectories => true;
1113
public override bool EnableHotLoad => true;
1214

15+
// Contains a list of scripts which are interfaces or abstract classes
16+
// and doesn't attempt to compile them as a quest object
17+
private HashSet<string> IgnoredScripts = [
18+
"EmblemTrial.csx"
19+
];
20+
1321
public QuestModule()
1422
{
1523
}
@@ -21,6 +29,11 @@ public override bool EvaluateResult(string path, ScriptState<object> result)
2129
return false;
2230
}
2331

32+
if (IgnoredScripts.Contains(Path.GetFileName(path)))
33+
{
34+
return true;
35+
}
36+
2437
IQuest quest = (IQuest)result.ReturnValue;
2538
if (quest == null)
2639
{

Arrowgene.Ddon.Scripts/scripts/quests/vocation/01_fighter/q60300402.csx

Lines changed: 12 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -2,110 +2,22 @@
22
* @brief Vocation Emblem Trial: Fighter
33
*/
44

5-
#load "C:\Users\Paul\Git\Arrowgene.DragonsDogmaOnline\Arrowgene.Ddon.Cli\bin\Debug\net9.0\Files\Assets\scripts\libs.csx"
5+
#load "libs.csx"
6+
#load "quests/vocation/EmblemTrial.csx"
67

7-
public class ScriptedQuest : IQuest
8+
public class ScriptedQuest : EmblemTrial
89
{
9-
public override QuestType QuestType => QuestType.Tutorial;
1010
public override QuestId QuestId => QuestId.VocationEmblemTrialFighter;
11-
public override ushort RecommendedLevel => 70;
12-
public override byte MinimumItemRank => 0;
13-
public override bool IsDiscoverable => true;
14-
public override StageInfo StageInfo => Stage.HobolicCave;
15-
public override QuestAdventureGuideCategory? AdventureGuideCategory => QuestAdventureGuideCategory.QuestUsefulForAdventure;
1611

17-
public override bool ShowInAdventureGuide(GameClient client)
18-
{
19-
return client.Character.HasQuestCompleted(QuestId.TheEmblemStonesWhereabouts) &&
20-
client.Character.ActiveCharacterJobData.Job == JobId.Fighter; ;
21-
}
22-
23-
protected override void InitializeState()
24-
{
25-
AddQuestOrderCondition(QuestOrderCondition.MinimumVocationLevel(JobId.Fighter, 70));
26-
AddQuestOrderCondition(QuestOrderCondition.Solo());
27-
}
28-
29-
private class NamedParamId
30-
{
31-
public const uint Trial0 = 1827; // Trial <name>
32-
public const uint Trial1 = 1834; // Trial <name>
33-
}
34-
35-
private class EnemyGroupId
36-
{
37-
public const uint Encounter = 10;
38-
}
39-
40-
private class QstLayoutFlag
41-
{
42-
public const uint Surabo = 5646; // Spawns Surabo
43-
}
44-
45-
protected override void InitializeRewards()
46-
{
47-
AddPointReward(PointType.ExperiencePoints, 15350);
48-
AddWalletReward(WalletType.Gold, 4618);
49-
AddWalletReward(WalletType.RiftPoints, 600);
50-
AddFixedItemReward(ItemId.EmblemStoneFighter, 1);
51-
}
52-
53-
protected override void InitializeEnemyGroups()
54-
{
55-
AddEnemies(EnemyGroupId.Encounter + 0, Stage.TrainingChapel, 1, QuestEnemyPlacementType.Manual, new()
56-
{
57-
LibDdon.Enemy.CreateAuto(EnemyId.OrcBattler, 65, 4)
58-
.SetNamedEnemyParams(NamedParamId.Trial0),
59-
LibDdon.Enemy.CreateAuto(EnemyId.OrcBattler, 65, 5)
60-
.SetNamedEnemyParams(NamedParamId.Trial0),
61-
LibDdon.Enemy.CreateAuto(EnemyId.OrcSoldier0, 65, 8)
62-
.SetNamedEnemyParams(NamedParamId.Trial0),
63-
LibDdon.Enemy.CreateAuto(EnemyId.OrcSoldier0, 65, 9)
64-
.SetNamedEnemyParams(NamedParamId.Trial0),
65-
});
66-
67-
AddEnemies(EnemyGroupId.Encounter + 1, Stage.TrainingChapel, 5, QuestEnemyPlacementType.Manual, new()
68-
{
69-
LibDdon.Enemy.CreateAuto(EnemyId.OrcSoldier0, 65, 4)
70-
.SetNamedEnemyParams(NamedParamId.Trial0),
71-
LibDdon.Enemy.CreateAuto(EnemyId.OrcBattler, 65, 5)
72-
.SetNamedEnemyParams(NamedParamId.Trial0),
73-
LibDdon.Enemy.CreateAuto(EnemyId.OrcSoldier0, 65, 8)
74-
.SetNamedEnemyParams(NamedParamId.Trial0),
75-
LibDdon.Enemy.CreateAuto(EnemyId.OrcBattler, 65, 9)
76-
.SetNamedEnemyParams(NamedParamId.Trial0),
77-
});
78-
79-
AddEnemies(EnemyGroupId.Encounter + 2, Stage.TrainingChapel, 1, QuestEnemyPlacementType.Manual, new()
80-
{
81-
LibDdon.Enemy.CreateAuto(EnemyId.CaptainOrc0, 65, 14)
82-
.SetNamedEnemyParams(NamedParamId.Trial1),
83-
LibDdon.Enemy.CreateAuto(EnemyId.OrcAimer, 65, 11)
84-
.SetNamedEnemyParams(NamedParamId.Trial1),
85-
LibDdon.Enemy.CreateAuto(EnemyId.OrcBattler, 65, 10)
86-
.SetNamedEnemyParams(NamedParamId.Trial1),
87-
});
88-
}
89-
90-
protected override void InitializeBlocks()
91-
{
92-
var process0 = AddNewProcess(0);
93-
process0.AddRawBlock(QuestAnnounceType.None)
94-
.AddCheckCmdIsTutorialQuestClear(QuestId.TheEmblemStonesWhereabouts);
95-
process0.AddNpcTalkAndOrderBlock(Stage.HobolicCave, NpcId.Gilstan, 23907);
96-
process0.AddNewTalkToNpcBlock(QuestAnnounceType.Accept, Stage.TrainingChapel, 0, 0, NpcId.Surabo, 23909)
97-
.AddQuestFlag(QuestFlagType.QstLayout, QuestFlagAction.Set, QstLayoutFlag.Surabo);
98-
process0.AddDiscoverGroupBlock(QuestAnnounceType.Update, EnemyGroupId.Encounter + 0);
99-
process0.AddDestroyGroupBlock(QuestAnnounceType.Update, EnemyGroupId.Encounter + 0, resetGroup: false);
100-
process0.AddDestroyGroupBlock(QuestAnnounceType.None, EnemyGroupId.Encounter + 1);
101-
process0.AddDestroyGroupBlock(QuestAnnounceType.None, EnemyGroupId.Encounter + 2);
102-
process0.AddNewTalkToNpcBlock(QuestAnnounceType.CheckpointAndUpdate, Stage.TrainingChapel, 0, 0, NpcId.Surabo, 25566);
103-
process0.AddTalkToNpcBlock(QuestAnnounceType.CheckpointAndUpdate, Stage.HobolicCave, NpcId.Gilstan, 26286);
104-
process0.AddTalkToNpcBlock(QuestAnnounceType.CheckpointAndUpdate, Stage.TheWhiteDragonTemple0, NpcId.Renton0, 25567);
105-
process0.AddIsStageNoBlock(QuestAnnounceType.None, Stage.TheWhiteDragonTemple0)
106-
.AddResultCmdReleaseAnnounce(ContentsRelease.FighterVocationEmblem, TutorialId.EmblemStones);
107-
process0.AddProcessEndBlock(true);
108-
}
12+
public override JobId QuestJobId => JobId.Fighter;
13+
public override uint GilstanMsgId0 => 23907;
14+
public override uint GilstanMsgId1 => 26286;
15+
public override uint SuraboQstLayoutFlag => 5646;
16+
public override uint SuraboMsgId0 => 23909;
17+
public override uint SuraboMsgId1 => 25566;
18+
public override uint RentonMsgId0 => 25567;
19+
public override ItemId EmblemItemId => ItemId.EmblemStoneFighter;
20+
public override ContentsRelease JobEmblemContentsRelease => ContentsRelease.FighterVocationEmblem;
10921
}
11022

11123
return new ScriptedQuest();
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* @brief Vocation Emblem Trial: Seeker
3+
*/
4+
5+
#load "libs.csx"
6+
#load "quests/vocation/EmblemTrial.csx"
7+
8+
public class ScriptedQuest : EmblemTrial
9+
{
10+
public override QuestId QuestId => QuestId.VocationEmblemTrialSeeker;
11+
12+
public override JobId QuestJobId => JobId.Seeker;
13+
public override uint GilstanMsgId0 => 23932;
14+
public override uint GilstanMsgId1 => 26298;
15+
public override uint SuraboQstLayoutFlag => 5650;
16+
public override uint SuraboMsgId0 => 23934;
17+
public override uint SuraboMsgId1 => 26297;
18+
public override uint RentonMsgId0 => 25595;
19+
public override ItemId EmblemItemId => ItemId.EmblemStoneSeeker;
20+
public override ContentsRelease JobEmblemContentsRelease => ContentsRelease.SeekerVocationEmblem;
21+
}
22+
23+
return new ScriptedQuest();
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* @brief Vocation Emblem Trial: Hunter
3+
*/
4+
5+
#load "libs.csx"
6+
#load "quests/vocation/EmblemTrial.csx"
7+
8+
public class ScriptedQuest : EmblemTrial
9+
{
10+
public override QuestId QuestId => QuestId.VocationEmblemTrialHunter;
11+
12+
public override JobId QuestJobId => JobId.Hunter;
13+
public override uint GilstanMsgId0 => 23917;
14+
public override uint GilstanMsgId1 => 26292;
15+
public override uint SuraboQstLayoutFlag => 5648;
16+
public override uint SuraboMsgId0 => 23919;
17+
public override uint SuraboMsgId1 => 25580;
18+
public override uint RentonMsgId0 => 25581;
19+
public override ItemId EmblemItemId => ItemId.EmblemStoneHunter;
20+
public override ContentsRelease JobEmblemContentsRelease => ContentsRelease.HunterVocationEmblem;
21+
}
22+
23+
return new ScriptedQuest();
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* @brief Vocation Emblem Trial: Priest
3+
*/
4+
5+
#load "libs.csx"
6+
#load "quests/vocation/EmblemTrial.csx"
7+
8+
public class ScriptedQuest : EmblemTrial
9+
{
10+
public override QuestId QuestId => QuestId.VocationEmblemTrialPriest;
11+
12+
public override JobId QuestJobId => JobId.Priest;
13+
public override uint GilstanMsgId0 => 23912;
14+
public override uint GilstanMsgId1 => 26289;
15+
public override uint SuraboQstLayoutFlag => 5647;
16+
public override uint SuraboMsgId0 => 23914;
17+
public override uint SuraboMsgId1 => 25573;
18+
public override uint RentonMsgId0 => 25574;
19+
public override ItemId EmblemItemId => ItemId.EmblemStonePriest;
20+
public override ContentsRelease JobEmblemContentsRelease => ContentsRelease.PriestVocationEmblem;
21+
}
22+
23+
return new ScriptedQuest();
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* @brief Vocation Emblem Trial: Shield Sage
3+
*/
4+
5+
#load "libs.csx"
6+
#load "quests/vocation/EmblemTrial.csx"
7+
8+
public class ScriptedQuest : EmblemTrial
9+
{
10+
public override QuestId QuestId => QuestId.VocationEmblemTrialShieldSage;
11+
12+
public override JobId QuestJobId => JobId.ShieldSage;
13+
public override uint GilstanMsgId0 => 23922;
14+
public override uint GilstanMsgId1 => 26295;
15+
public override uint SuraboQstLayoutFlag => 5649;
16+
public override uint SuraboMsgId0 => 23924;
17+
public override uint SuraboMsgId1 => 26294;
18+
public override uint RentonMsgId0 => 25588;
19+
public override ItemId EmblemItemId => ItemId.EmblemStoneShieldSage;
20+
public override ContentsRelease JobEmblemContentsRelease => ContentsRelease.ShieldSageVocationEmblem;
21+
}
22+
23+
return new ScriptedQuest();
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* @brief Vocation Emblem Trial: Sorcerer
3+
*/
4+
5+
#load "libs.csx"
6+
#load "quests/vocation/EmblemTrial.csx"
7+
8+
public class ScriptedQuest : EmblemTrial
9+
{
10+
public override QuestId QuestId => QuestId.VocationEmblemTrialSorcerer;
11+
12+
public override JobId QuestJobId => JobId.Sorcerer;
13+
public override uint GilstanMsgId0 => 23937;
14+
public override uint GilstanMsgId1 => 26302;
15+
public override uint SuraboQstLayoutFlag => 5651;
16+
public override uint SuraboMsgId0 => 23939;
17+
public override uint SuraboMsgId1 => 25601;
18+
public override uint RentonMsgId0 => 25602;
19+
public override ItemId EmblemItemId => ItemId.EmblemStoneSorcerer;
20+
public override ContentsRelease JobEmblemContentsRelease => ContentsRelease.SorcererVocationEmblem;
21+
}
22+
23+
return new ScriptedQuest();
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* @brief Vocation Emblem Trial: Warrior
3+
*/
4+
5+
#load "libs.csx"
6+
#load "quests/vocation/EmblemTrial.csx"
7+
8+
public class ScriptedQuest : EmblemTrial
9+
{
10+
public override QuestId QuestId => QuestId.VocationEmblemTrialWarrior;
11+
12+
public override JobId QuestJobId => JobId.Warrior;
13+
public override uint GilstanMsgId0 => 23947;
14+
public override uint GilstanMsgId1 => 26307;
15+
public override uint SuraboQstLayoutFlag => 5653;
16+
public override uint SuraboMsgId0 => 23949;
17+
public override uint SuraboMsgId1 => 25615;
18+
public override uint RentonMsgId0 => 25616;
19+
public override ItemId EmblemItemId => ItemId.EmblemStoneWarrior;
20+
public override ContentsRelease JobEmblemContentsRelease => ContentsRelease.WarriorVocationEmblem;
21+
}
22+
23+
return new ScriptedQuest();
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* @brief Vocation Emblem Trial: Element Archer
3+
*/
4+
5+
#load "libs.csx"
6+
#load "quests/vocation/EmblemTrial.csx"
7+
8+
public class ScriptedQuest : EmblemTrial
9+
{
10+
public override QuestId QuestId => QuestId.VocationEmblemTrialElementArcher;
11+
12+
public override JobId QuestJobId => JobId.ElementArcher;
13+
public override uint GilstanMsgId0 => 23942;
14+
public override uint GilstanMsgId1 => 26305;
15+
public override uint SuraboQstLayoutFlag => 5652;
16+
public override uint SuraboMsgId0 => 23944;
17+
public override uint SuraboMsgId1 => 26304;
18+
public override uint RentonMsgId0 => 25609;
19+
public override ItemId EmblemItemId => ItemId.EmblemStoneElementArcher;
20+
public override ContentsRelease JobEmblemContentsRelease => ContentsRelease.ElementArcherVocationEmblem;
21+
}
22+
23+
return new ScriptedQuest();
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* @brief Vocation Emblem Trial: Alchemist
3+
*/
4+
5+
#load "libs.csx"
6+
#load "quests/vocation/EmblemTrial.csx"
7+
8+
public class ScriptedQuest : EmblemTrial
9+
{
10+
public override QuestId QuestId => QuestId.VocationEmblemTrialAlchemist;
11+
12+
public override JobId QuestJobId => JobId.Alchemist;
13+
public override uint GilstanMsgId0 => 23952;
14+
public override uint GilstanMsgId1 => 26311;
15+
public override uint SuraboQstLayoutFlag => 5654;
16+
public override uint SuraboMsgId0 => 23954;
17+
public override uint SuraboMsgId1 => 25622;
18+
public override uint RentonMsgId0 => 25623;
19+
public override ItemId EmblemItemId => ItemId.EmblemStoneAlchemist;
20+
public override ContentsRelease JobEmblemContentsRelease => ContentsRelease.AlchemistVocationEmblem;
21+
}
22+
23+
return new ScriptedQuest();

0 commit comments

Comments
 (0)