🚧Page Under Construction |
Hokan's Dream Game |
ℹ The events of this game are not part of the canon story and timeline of the SpellForce universe. |
Achievements (DotP)
Demons of the Past was the first game in the SpellForce franchise graced with Achievements.
Now the thing is that Demons of the Past is sort of a buggy fest even after all this years since its release... and so are its Achievements.
In this article I'm not going to teach you how to get ALL the Achievements, not the ones that most of the time work as intended anyway, but hopefully I can share how I did managed to get them all, including the broken ones.
⚠ This is not a guide on how to play the game nor how to get ALL Achievements, simply how I managed to get them all. Don't be surprised if YOU get some of them on different locations.
Ok. First things, first...
- It's highly recomended that you play the game with the SF2 DOTP Community Patch 1.4
- You should also install the mod Respec by AngelTrump.
If nothing else, it will be of great help later to get those count-dependent achievements. These achievements may seem like they are not working at times, but that's because sometimes the scripts don't count the clicks properly, so instead of the necessary amount of clicks you may have to surpass that number for the achievement to trigger. - Most achievements will work as intended, others are plain broken for good and there's a few we can fix with a simple script edit.
- On the Difficult or Very Difficult level's requirement, the game only detect your level on the moment when trigger the achievement, so for some of these achievements, you can play them on Normal (or Easy), Make a Save just before triggering the achievement, change settings for a higher Difficulty to obtain the achievement and then go back to your current setting of Difficulty.
- I'm going to separate the achievement's list below by map and into 3 categories:
- Normal: These can be obtained with no problem
- Count-Dependent: These require count click to obtain, like the number of spell casting.
- Broken: These are the buggy ones or just plain broken. Some can be fixed with a script edit, others not so much...
- There are a total of 55 achievements.
Most achievements are handled within the script files (and worked for me).
If they don't trigger for you, then either something is missing or some other bug is doing its thing.
Now, let's go into the achievements' list. I'll try to keep things simple with the Icon, Name and description as it is on Steam and GoG. Below, it's my own commentary with a tip to help on the right direction.
Normal
These can be obtained with no major problem If they don't trigger for you, then either something is missing or some other bug is afoot.
Westguard
After the whole base is razed to the ground, you can kill the Lich to earn the achievement.
The Stepping Stones
After obtaining the mace, equip it, complete the main story quest, teleport back to the beginning and enter the city again. (Don't unequip the mace until you get the achievement)
To earn this achievement, you need to cross the city again without being caught by the guards.
(*IMPORTANT*: Save very often)
You will know when you are caught because the guards will yell, turn hostile and run to attack you. At this point you have to reload to a previous save because the achievement is lost.
If the achievement is attempted after obtaining the Difficulty courts achievement, just make sure you have the mace equipped, run to any guard to make them all hostile and slaughter them all! (Be careful with the commander, he's tough)
The achievement is awarded when all the enemies in the city are dead.
NOTE: When the option appears, give 100 gold to the Suspicious Figure to buy the Mace of the Guardian from him.
Not difficult at all...
Realm of the Gods
The achievement is awarded when the demon portal, all trebuchets and spirits are gone.
Once they are dead, a Killer Cat will spawn on the Northern area. Kill it, and the achievement is yours.
Achievement Granted!
The Citadel
Anyway, there are some reports that this achievement sometimes only triggers when visiting back the Citadel, not when completing all main quests in the map.
Probably another random bug...
Depths of Kul'Rath
Be careful with the huge level 25 one, she will burst out tiny level 30 brats once killed.
Remains of Steelcoast
Anyway, there are some reports that this achievement sometimes only triggers when visiting back the Citadel, not when completing all main quests in the map.
Probably another random bug...
Count-Dependent
I could try to explain how the game deals with this kind of achievements, but Steam user artydent did it better than I could ever do:
Some of those achievements have occasionally been reported as broken. In principle they all work though, but not always as expected. Here's what you should be aware of when trying to get them:
- Spells are counted only in Campaign Mode, not in Free Game or any other modes.
- Casting with different avatars is NOT cumulative for the achievement. And progress is lost if you keep playing from an earlier savefile.
- Sometimes, casting the right spell simply doesn't count for the achievement. (See technical details below for an explanation.) In particular, if you cast multiple Shaikan spells in quick succession, usually just one will count for the True Blood achievement.
Unfortunately, there is no way to see whether a spell just counted or not.- The description of If it bleeds, we can kill him is a bit misleading. It's also just about how often the avatar is casting the spell.
- For each of those achievements, both the basic version and the mastered version of the spell work. (Even for Seven sins the basic spell works. The description is misleading.)
- If the spell requires a target and the avatar is too far away, the spell counter is repeatedly increased (about every 5-6 seconds) while the avatar moves towards the target. (See technical details below for an explanation.)
This can be exploited to farm those achievements relatively quickly: With a very long way to the spell target (or by repeatedly switching between two targets in opposite directions) it's possible to get the achievement without actually casting the spell, which eliminates any waiting time for recharging the spell or the mana.
For anyone interested, here are the technical details:
All achievement detection is script-based. There is an achievement script (which is only used for the campaign) that deals (among other things) with the spell counting for the achievements.
The script attempts to detect when the player is casting an achievement-relevant spell, and upon successful detection an associated counter is increased. Those counters belong to the avatar and are regularly saved/loaded when you save/load your game, that's why progress for such an achievement can't be split between different games.
Now to the more technical part of how the script attempts to detect spell casting.
For each of those achievements, the script defines an event handler that (when enabled) keeps checking whether the avatar is currently in the process of casting one of the relevant spells. However, the event handler has a built-in delay between those checks (about 2-3 seconds for me, but that might also depend on the computer). Maybe this is done to not put the script engine under too much stress, or maybe just as a measure to avoid multiple detections for a single casting. Anyway, the side effect is that an unfortunately timed spell - even though the casting itself takes 1-2 seconds - might happen right inbetween two checks and is therefore not counted towards the achievement. There is still a good chance that a (randomly timed) spell is detected though. (But of course there is the possibility that a too regular spell casting - e.g. when farming for such an achievement - might accidentally fall right into the detection gap every single time, so better keep some randomness in the timing.)
There is more to it. After the mentioned event handler detects a spell and responds to it, it automatically becomes disabled. Now it would be bad if it stayed disabled, because no further spell could be detected, so in addition to increasing the spell counter the handler also re-enables a second event handler. That one checks whether the first handler is disabled and then re-enables it and becomes disabled itself. (I am not 100% sure why it is done this way, considering that in some other places the game actually uses event handlers that can act repeatedly without disabling. Those aren't used often though, in fact most repeat events in the game are done with this disabling and re-enabling. There might be some technical reason for this.) This second event handler also has a built-in delay between its checks (slightly longer than the first), which means that after an achievement-relevant spell is detected, there is a longer delay (combination of the delays of the two handlers, about 5-6 seconds for me) until another spell for that achievement can be detected. (There is an exception for the first detection on any map, but let's not get too technical here.) That delay is mainly an issue for the True Blood achievement when someone casts multiple spells in quick succession (because a single event handler is used for all the associated spells). All the other achievements only have a single associated spell anyway, so the recharge time usually prevents to cast it in quick succession. (But maybe with a lot of equipment that reduces recharge times, this can become an issue for other achievements, too.)
Now to the exploit. When a spell targets something further away and there is a movement path to it, then the game apparently considers the avatar to be already casting while moving towards the target. Which means that the first event handler quickly triggers and increases the spell counter, gets disabled but re-enabled after a delay, triggers again after a delay and so on. Due to the combined delay of both event handlers, spell detection (and thus counter increase) happens every 5-6 seconds.
Westguard
Broken
These are the buggy ones or just plain broken. Some can be fixed with a simple script edit, others not so much...
The Citadel
This achievement is broken. Below is how Steam user artydent managed to fix it:
For this achievement it's not 100% clear what the exact intent had been. Here's a simple mod (you only need a basic text editor) to trigger this achievement in a way that at least fits the description without making it too trivial. Technically, this is a bit of cheating though, so don't do it if that makes you uncomfortable.
IMPORTANT: The modification will only have an effect on games where the Citadel map was never entered yet. So you'll have to reload a save from before that and replay the map (or at least parts of it until you get the achievement).
Step 1: Find the steam library (the one you use for SF2-DotP) on your hard drive and find the "SpellForce 2 - Demons of the Past" folder in it. Enter the sub folder "addon3/map/Campaign/P704_The_Citadel/script/". All modifications will be done here.
Step 2: Open the file "Achievements.lua" in a text editor. Find the following place in the file
OnOneTimeEvent { EventName = ">>> achi: gates closed <<<", Conditions = { SetUpdateInterval {Steps = 10}, --- ??? MapFlagIsTrue {Name = "mf_P704_xxx"}, }, Actions = { AvatarFlagSetTrue {Name = "af_Achievement_P704_Closed"}, }, },
and replace this part by
OnOneTimeEvent { Name = "Event_Achi_All_Gates_Open", Conditions = { SetUpdateInterval {Steps = 20}, GateIsOpen {Tag = "Gate2"}, GateIsOpen {Tag = "Gate4"}, GateIsOpen {Tag = "Gate5"}, GateIsOpen {Tag = "Gate6"}, }, Actions = { MapFlagSetTrue {Name = "mf_P704_Gates_Opened"}, }, }, OnOneTimeEvent { EventName = ">>> achi: gates closed <<<", Conditions = { SetUpdateInterval {Steps = 20}, MapFlagIsTrue {Name = "mf_P704_Gates_Opened"}, GateIsClosed {Tag = "Gate2"}, GateIsClosed {Tag = "Gate4"}, GateIsClosed {Tag = "Gate5"}, GateIsClosed {Tag = "Gate6"}, }, Actions = { AvatarFlagSetTrue {Name = "af_Achievement_P704_Closed"}, }, },
Done! Enter the Citadel map (remember: load a savegame from before entering it for the first time), open all the gates you can, close all the gates you can, and get the achievement.
Hints to get the achievement: There are only four gates that you can open and also close. All four must be open at some point, later all four must be closed. If you don't know where to find the levers, you could just start the quests for all four factions, each one has an "open gate" quest for one of these gates.
Additional remark: Given the name of the achievement I assume that the original intent might have been more complex, involving cutting off attack routes for the factions. To implement this (without breaking things) would have required significantly more changes though (adding some lever handling, modifying attack routes accordingly, etc.). I didn't consider it worthwhile to attempt this, especially because the scripts for this map are already quite complex and a lot of things on this map are unfinished or buggy anyway.