Modding Diary #1: Sorcerer King: Rivals Quests

Published on Wednesday, September 21, 2016 By Brad Wardell In Sorcerer King Dev Journals



Since there’s a lot of material to go over, I’ll try to be as succinct as possible.

For Diary #1 we will cover:

  • Directory Structure
  • Quick Links
  • How to cheat
  • Sample Quest: Editing existing
  • Sample Quest: Creating new one
  • Debugging your quest
  • Sharing your Quests


Directory Structure

For our purposes, I am going to refer to this directory:

C:\Program Files (x86)\Steam\steamapps\common\Sorcerer King – Rivals (or its equivalent on your PC) as the GAME directory.


C:\Users\Draginol\Documents\My Games\SorcererKingRivals as the USER directory.


  • The Quest editor is in GAME
  • All the graphics are kept in GAME\Gfx
  • All the maps are in GAME\data\Maps
  • All the really cool stuff to mess with are in GAME\data\English
  • Quests are stored in GAME\data\English\Core Quests
  • The stuff you create will be in the corresponding sub-directory of USER.

Quick Links

Master Quest Editor manual:

Technical Quest Editor Docs:

Minor Faction Quest Docs:

Dungeon Master stuff:

Dungeon Master Docs:

Rivals Tech Docs:


How to cheat

From team. Go to Library > Sorcerer King:Rivals and right click. Choose Properties > General > Launch Options.

You'll see "These options are for Advanced Users only." (LIKE US!)

Enter "-cheat"

These are commands I find useful for finding and triggering quests:

CTL + U reveal entire map

CTL + T teleport selected unit to wherever cursor is.

CTL + M should give you 1000 mana

CTL + E should unlock all spells

CTL + C should copy any unit

Sample Quest: Looking at an existing one

Load up the Quest Editor:



To see what a finished quest looks like do this:

File->Open Quest

go to the GAME\data\english\Core Quests directory and load up one of the quests in there.



A loaded quest

Click on the Edit Quest Options button and you will see this:


Here are the key things to understand:

  1. You don’t need to enter a description
  2. You should fill in the author info though if you plan to share it.
  3. Give it a unique name (like, put your name as part of the internal name)
  4. Trigger Type of QuestLocation means it’s an actual place on the map and not, say, a random event
  5. Trigger Origin of EventLocation means that whatever is going to happen, it’s going to happen there.
  6. Quest Class of of MInor means finishing this quest doesn’t end the game. Thus if you were making an RPG, you’d have one or more of your quests be a major quest to finish the game.
  7. Is Starting Point checked means that it can be placed near your starting location.
  8. Spawn Rating of 1 means it’s relatively easy.
  9. Pref Quest Location refers to the tile design being used. We recommend you use what’s there as it is some work to create new ones.
  10. Conversation Music refers to the MP3 or WAV file that is going to be played.


Now, go back to Objective #0.

Objectives are the state machine of a quest.  So in the example here, I can kidnap someone (which isn’t very nice) or help them.

IF I kidnap them THEN I get a Popup where we have our snarky text AND we provide some rewards (pressing the Reward button shows what those rewards are)


The rewards dialog

So in this case, I get 3 things:

  1. The guy I kidnapped
  2. A resource: DoomsdayCounter of 5 (which means we’re giving the SK 5 ascension points)
  3. A resource: _Intimidating of 1 which the Dungeon Master uses to reward/punish players later in the game.

If you want to know where we have resources you can go to: GAME\data\English\CoreResources.xml

If you want to add more, you don’t have to put them in this file.  As long as they are in a file with <ResourceTypes> at the start and end.  

Getting back to the quest at hand. If you choose Help them out then the game will Goto Objective 1 AND launch a battle AND pop up a dialog with snarky dialog.

Objective 1 looks at the victory conditions. If you win then you go to objective 2 which ends the quest.

If you click on the Battle button you get this:


You can name your battle whatever you want.  It’s basically a variable that more complex quests can refer to later on in the game (“Hey, you won battle AV14 back 35 turns ago!”)


If you click on a unit you can see the type of unit is it. 

To see all the units in the game you can open GAME\dat\English\CoreUnits.xml  We also have an Excel spreadsheet SK Editor in the GAME directory that has lots of tabs that present these.

Mind you, you can create your own units. They don’t have to be in this particular file.

Similarly, there is a CoreItems.xml and a CoreWeapons.xml and so on.  You can explore these files and get pretty creative on what happens during a quest.  But for today, we’ll keep it simple.


Sample Quest: A new quest

This time, I’m going to create a new quest.


Quest Options

  1. Name your file (give it a unique name so some other modder’s quest doesn’t overwrite it. I’m going to call mine DraginolSample
  2. Name your quest (in my example, a disgusting hut)
  3. Click on Edit Quest Options.
  4. Enter your name as the author
  5. Give it a unique internal name. (like Draginol_SampleQuest_09212016)
  6. Give it an image. It’ll look for any file in the gfx directory (either in GAME or USER). I’ll use QuestPainting_Inn.png for my sample.
  7. Trigger Type: Add QuestLocation for this exmaple
  8. Trigger Origin: EventLocation
  9. SpawnRating (1=easy 4=hard) I’ll do 1.
  10. What about your preferred quest location? You can open up the GAME\data\English\CoreQuestLocations.xml file to get a list of them. I’ll use QuestLoc_Hut

This is what I have so far:



First Objective

Click the Add Objective button. Then click on the objective.


  1. Write some text for the opening dialog.
  2. Click Add Choice Option. If you tell it to goto Objective –1 that means the quest is over.
  3. Click and add a second choice option.  Click on the goto Objective and you can go to a tab to specify the text for the new objective (and it’ll automatically create the objective target).

Second objective

  1. Enter in the text the player will see from choosing this choice.
  2. Click Reward.
  3. Click Add Treasure.
  4. Choose Give Item
  5. Choose an item to give him (I opened up CoreItems.xml in notepad and searched for scroll and found Scroll_BoostHP
  6. Choose amount 1 (1 scroll).
  7. Click update treasure
  8. Click Save.
  9. Then go to file->save

That’s it.

Now it’s time to test it.

Testing your Quest

This is a very important part before sharing your creation with others.  Once you get into making quests it gets much easier. But the first time does require a little effort:

  1. Load up Sorcerer King: Rivals
  2. Go to the Workshop icon in the bottom left
  3. Load up the map editor
  4. Hit the Create button
  5. Find where it placed your starting location (the S on the map)
  6. Click on the little arrow next to the red shard button on the left. Click on the quests button.  You should get a list.  When I test, I often will move the Core Quests directory out of the GAME directory entirely just to make it easier for me to find the one I did.
  7. Select your quest and then RIGHT click near your starting location.
  8. Save your map
  9. Close Sorcerer King: Rivals (so that it will reload all the data)
  10. Load the game, start a new game and choose the map you just made.



Finding your starting location


Placing my quest near my starting location.


My question in action


If for some reason the game doesn’t place you where you thought, use those cheat keys.  Ctrl-u unhides and Ctrl-t can teleport your unit to the location.


Uploading your Quest

Now you’re ready to share your quest.

  1. Go to the Workshop again (little icon in the bottom left).
  2. ChooCse upload quest
  3. Choose upload quest

And you’re done.

We do recommend you edit the description and such on Steam.


My Quest on Steam

Have fun!