(4 intermediate revisions by the same user not shown) | |||
Line 5: | Line 5: | ||
---- | ---- | ||
{{Hokan's Dream Game}} | {{Hokan's Dream Game}} | ||
{{PersonalTOC | |||
|name = | |||
<div style=" | |image = {{#setmainimage:SF2DotP000.jpg}} | ||
__TOC__ | |listinfo =<div style="color: #333;background: #333;padding: 0 5px;width: 100%;"> __TOC__</div> | ||
</div> | }} | ||
[[:Category:Demons of the Past|Demons of the Past]] was the first game in the <span style="color:#ea3">SpellForce</span> franchise graced with <span style="color:#3e2">Achievements</span>. | [[:Category:Demons of the Past|Demons of the Past]] was the first game in the <span style="color:#ea3">SpellForce</span> franchise graced with <span style="color:#3e2">Achievements</span>. | ||
Line 85: | Line 84: | ||
The achievement is awarded when the demon portal, all trebuchets and spirits are gone.</span> | The achievement is awarded when the demon portal, all trebuchets and spirits are gone.</span> | ||
</div> | </div> | ||
<div style="border: 1px solid #b92;padding: 3px 10px;border-radius: 5px;box-shadow: 0 8px 6px -6px rgba(0,0,0,0.7); width: 90%; margin: 5px auto;position:relative;background: -webkit-linear-gradient(top, #420 0%,#210 100%);background: linear-gradient(to bottom, #420 0%,#210 100%);"><span style="display: inline-block;margin: 5px auto;vertical-align: top;">[[File: Behind_the_rabbit.jpg|Behind the rabbit|link=]]</span><span style="font-size: 20px;margin: 5px 8px;display:inline-block;color:#1f0;width: fit-content;">Behind the rabbit <i style="color: #ff0;font-size: 75%;position: absolute;right: 10px;top: 0;>11/55</i><span style="color: #cfa;font: italic 14px/2 Times New Roman;display:block;">Kill every monster in the arena.</span></span><span style="width: 100%;display:block;border-top: 1px inset #ccc;">Kill the [[ | <div style="border: 1px solid #b92;padding: 3px 10px;border-radius: 5px;box-shadow: 0 8px 6px -6px rgba(0,0,0,0.7); width: 90%; margin: 5px auto;position:relative;background: -webkit-linear-gradient(top, #420 0%,#210 100%);background: linear-gradient(to bottom, #420 0%,#210 100%);"><span style="display: inline-block;margin: 5px auto;vertical-align: top;">[[File: Behind_the_rabbit.jpg|Behind the rabbit|link=]]</span><span style="font-size: 20px;margin: 5px 8px;display:inline-block;color:#1f0;width: fit-content;">Behind the rabbit <i style="color: #ff0;font-size: 75%;position: absolute;right: 10px;top: 0;>11/55</i><span style="color: #cfa;font: italic 14px/2 Times New Roman;display:block;">Kill every monster in the arena.</span></span><span style="width: 100%;display:block;border-top: 1px inset #ccc;">Kill the [[Large Hornet]], the [[Wildfang]], the [[Red Warlock Spider]], and the [[Beast Servant]].<br> | ||
Once they are dead, a [[Creatures (Dream Games)/DotP/Killer Cat|Killer Cat]] will spawn on the Northern area. Kill it, and the achievement is yours.</span> | Once they are dead, a [[Creatures (Dream Games)/DotP/Killer Cat|Killer Cat]] will spawn on the Northern area. Kill it, and the achievement is yours.</span> | ||
</div> | </div> | ||
Line 211: | Line 210: | ||
</div> | </div> | ||
<div style="border: 1px solid #b92;padding: 3px 10px;border-radius: 5px;box-shadow: 0 8px 6px -6px rgba(0,0,0,0.7); width: 90%; margin: 5px auto;position:relative;background: -webkit-linear-gradient(top, #420 0%,#210 100%);background: linear-gradient(to bottom, #420 0%,#210 100%);"><span style="display: inline-block;margin: 5px auto;vertical-align: top;">[[File: First_strike_still_deadly.jpg|First strike still deadly|link=]]</span><span style="font-size: 20px;margin: 5px 8px;display:inline-block;color:#1f0;width: fit-content;">First strike still deadly <i style="color: #ff0;font-size: 75%;position: absolute;right: 10px;top: 0;>37/55</i><span style="color: #cfa;font: italic 14px/2 Times New Roman;display:block;">Destroy the southeastern Nameless base within 20 minutes on Difficult or Very Difficult level.</span></span><span style="width: 100%;display:block;border-top: 1px inset #ccc;">As soon as the game starts, you have 20 minutes to destroy the Nameless base located to the north of your Pact base (''starting | <div style="border: 1px solid #b92;padding: 3px 10px;border-radius: 5px;box-shadow: 0 8px 6px -6px rgba(0,0,0,0.7); width: 90%; margin: 5px auto;position:relative;background: -webkit-linear-gradient(top, #420 0%,#210 100%);background: linear-gradient(to bottom, #420 0%,#210 100%);"><span style="display: inline-block;margin: 5px auto;vertical-align: top;">[[File: First_strike_still_deadly.jpg|First strike still deadly|link=]]</span><span style="font-size: 20px;margin: 5px 8px;display:inline-block;color:#1f0;width: fit-content;">First strike still deadly <i style="color: #ff0;font-size: 75%;position: absolute;right: 10px;top: 0;>37/55</i><span style="color: #cfa;font: italic 14px/2 Times New Roman;display:block;">Destroy the southeastern Nameless base within 20 minutes on Difficult or Very Difficult level.</span></span><span style="width: 100%;display:block;border-top: 1px inset #ccc;">As soon as the game starts, you have 20 minutes to destroy the Nameless base located to the north of your Pact base (''starting area'').<br> | ||
Hint: '''Eruption''' is your friend here. At least one member of your party should have it.</span> | Hint: '''Eruption''' is your friend here. At least one member of your party should have it.</span> | ||
</div> | </div> |
Latest revision as of 22:41, 2 October 2023
Hokan's Dream Game |
ℹ The events of this game are not part of the canon story and timeline of the SpellForce universe. |
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 need to surpass that number for the achievement to trigger. - To fix some achievements, at some point you'll be guided to edit some scripts on a text editor. I recommend Notepad++
- The Elemental Magic » Earth Rank 2 spell Eruption is your best friend in this game. At least one member of your party should have it... if possible, your Avatrar too.
- 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.
- NOTE: When the option appears, give 100 gold to the Suspicious Figure to buy the Mace of the Guardian from him.
- 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, complete the main story quest, teleport back to the beginning, equip it 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.
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
I suggest you take notes for this achievement to keep track on the golems who already kicked the seal.
It's a very easy achievement to obtain but it requires some patience and bug tolerance! (sometimes the seal isn't moved correctly or it disappears - visual bug)
The achievement is awarded when all the fire golems kicked the seal at least once (you don't even need to complete the quest to achieve it)
- A ground unit
- A flying unit
- Sariel
The achievement is awarded when you defeat Sariel.
Shadow Realm
The achievement is awarded when you destroy all the demon buildings & units using shadow units only (southeastern side of the map).
Icewastes of Shalibar
This a good map filled with many respawning enemies that grant you a lot of gold killing them...
So, equip with best weapons, wear your hunting gear and let's get some sweet gold...
With a bit of grinding, soon enough you should earn enough to win the two gold related achievements: Bill Gates and Donald Duck (this one I still think they actually meant Scrooge McDuck since he's the rich greedy duck and Donald is always broke...)
Buy the Dead Fish from the Merchant at the Norcaine camp, and feed it to the penguin on the Northwestern Island.
Most times the achievement is granted upon feeding the little guy, but sometimes it requires you to deliver the "parrot" to Captain Halbeard.
- East
- Southwest
- North
- Southwest
- Southwest
- South
- Northeast
- East
The achievement is obtained when you loot the chest in the middle of the maze withouth receiving any damage.
Suggestion: While attempting this, Save Often! And if possible, also keep your party away from harm, sometimes if they get damaged, it also affects the achievement....
Plains of Argan
Starts in: Realm of the Gods - Interact with the Blue Crystal to talk with Twiddle and obtain the first quest: The Portals of the Future. Or Was it the Future of the Portals?
Ends in: Plains of Argan by solving the quest: I Said Open Sesame!
Hint: Eruption is your friend here. At least one member of your party should have it.
You just have to go to the West side of the Shaikan Camp and look for a Chest with the Cabbage. Grab it and enjoy the achievement.
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.
Steam user SqbanyPL also has the following to add on this subject:
Push the button 177013 times so as to get some dopamine
There are eight achievements which need not only grinding but also developing your avatar into different specializations. These are:
- True Dragon - Cast 200 shaikan spells
- Fire walk with me - Cast 40 Fireballs with the avatar
- Handsome - Charm 50 enemies with the avatar
- Fight fire with fire - Conjure 66 demons with the avatar
- Can't touch this - Get invulnerable 75 times with the avatar
- Cry baby - Cast Battle Cry 50 times with the avatar
- If it bleeds, we can kill him - Hit enemies with Slash 50 times
- Seven sins - Cast Salvo (Master) 40 times
Exact mechanic of these is described in another guide (I am not the author). I will only suggest a way of obtaining skills required for these achievements. It is possible to get above achievements without modifications through replaying the game and developing your avatar differently but it would take a lot of time even if playing on easy.
Please, use below modifications only for obtaining achievements. They grant your avatar a lot of experience points so natural progression will be disturbed.
Changes will be applied in map Remains of Steelcoast because of merchant who sells there weapons which enable usage of skills Slash and Salvo and because at this point your avatar surely can gain a few more levels.
(1) Open game folder - "SpellForce 2 - Demons of the Past"
Go to: \SpellForce 2 - Demons of the Past\addon3\map\Campaign\P707_Steel_Shore\script
(2) Open file "Rewards.lua"
(3) Find these lines:Reward = { SSSR_MQ_01 = { XP = 0, Gold = 0 }, SSSR_MQ_01_1 = { XP = 1500, Gold = 0 }, SSSR_MQ_01_2 = { XP = 3100, Gold = 0 },(4) Now change it to:
Reward = { SSSR_MQ_01 = { XP = 0, Gold = 0 }, SSSR_MQ_01_1 = { XP = 400000, Gold = 0 }, SSSR_MQ_01_2 = { XP = 3100, Gold = 0 },Note: Do not change the gold reward, it crashes the game. Anyway, you will find infinite source of gold in Icewastes of Shalibar.
(5) Load a save before entering Remains of Steelcoast for the first time. Choose one where your avatar will have enough undistributed skill points so as to get to every skill required for achievements.
(6) At Remains of Steelcoast go to lava pool in the middle of the map. After a cutscene you will get enough experience points for 30 level. Make a save before distributing skill points. Now you can start grinding, The Citadel is a good place for this as it spawns enemies infinitely.
Tips for grinding:
- Check merchants and your inventory. You might find accessories reducing skill cooldown.
- True Dragon might be obtained with Shaikan skills which you gain as you progress in story (Thunder of the Shaikan, Blood of the Shaikan, Time of the Shaikan) so it is possible to not spend a single skill point in a Shaikan skill tree.
- If it is possible for your character, pick at the same time these skills which have long cooldown and cannot be exploited (how, check the other guide of not my autorship) - Invulnerability and Battle cry.
I got most of this achievements in the Remains of Steelcoast (Did you know we can cast spells/shoot arrows while mounted on Jorbal?) but I also grinded a bit in the Citadel for the melee ones so I'm going to place where I got them below.
But you can try to get them somewehere else where you can use the required abilities.
And now that's also where the mod Respec by AngelTrump can be useful. Instead of replaying the game just to build the proper Avatar to tackle each kind of this achievements, you make a Save somewhere in the late game but not too close to end, reason why the Remains of Steelcoast is a good place, and each time you need to rebuild your Avatar to chase another achievement, fire up the Respec mod and just pick another set of skills for the job ahead.
And in case you want to cheat on the casting ones, you can use LogSender:NoManaUsage(1)
. Remember that on Demons of the Past to open the console you press Ctrl+K
.
Plains of Argan
You can also get it with any build of your Avatar. Simply keep using any of those Shaikan skills until the achievement triggers.
Remains of Steelcoast
You need a Recurve Bow. A lvl 19 bow can be bought from the elven merchant in a camp in the south of the Remains of Steelcoast. Achievement is quickly taken in the same place on fire golems.
The Citadel
You only need at least one dual blade, two are not necessary.
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
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 fileOnOneTimeEvent { 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.
Plains of Argan
The last four(4) achievements on the Plains of Argan (and on the game) are broken!
Again, below is how Steam user artydent managed to fix them:
Fix (mod) for the end-of-game achievements
The last march Complete Forest of Argan Knowledge is power Complete Demons of the Past on Easy or Normal level Power leads knowledge Complete Demons of the Past on Difficult level Master Investigator Complete Demons of the Past on Very Difficult level Here's a simple mod (you only need a basic text editor) to trigger those achievements the way they were intended. 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 final map wasn't entered yet. So you'll have to reload a save from before and replay the final map.
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/P710_West_Westguard/script/". All modifications will be done here.
Step 2: Create a new file "Achievements.lua" (or name it however you want) in this folder. Open the file in a text editor and copy the following into it.-- Fix to trigger the end of game achievements properly State { StateName = "INIT", OnOneTimeEvent { EventName = ">>> achievement: map completed <<<", Conditions = { QuestIsSolved {Player = "default", Quest = "ADDON3_MAP09_LUREZAZHUT"}, }, Actions = { AvatarFlagSetTrue {Player = "default", Name = "af_Achievement_P710_Completed"}, }, }, OnOneTimeEvent { EventName = ">>> achievement: game completed on EASY or NORMAL <<<", Conditions = { QuestIsSolved {Player = "default", Quest = "ADDON3_MAP09_LUREZAZHUT"}, OR { GameDifficulty {Value = 1}, GameDifficulty {Value = 2}, }, }, Actions = { AvatarFlagSetTrue {Player = "default", Name = "af_Achievement_DotP_Completed"}, }, }, OnOneTimeEvent { EventName = ">>> achievement: game completed on DIFFICULT <<<", Conditions = { QuestIsSolved {Player = "default", Quest = "ADDON3_MAP09_LUREZAZHUT"}, GameDifficulty {Value = 3}, }, Actions = { AvatarFlagSetTrue {Player = "default", Name = "af_Achievement_DotP_Completed_Difficult"}, }, }, OnOneTimeEvent { EventName = ">>> achievement: game completed on VERY DIFFICULT <<<", Conditions = { QuestIsSolved {Player = "default", Quest = "ADDON3_MAP09_LUREZAZHUT"}, GameDifficulty {Value = 4}, }, Actions = { AvatarFlagSetTrue {Player = "default", Name = "af_Achievement_DotP_Completed_VeryDifficult"}, }, }, };This is the code that will actually check the proper conditions and set the flags that will then trigger the achievements as intended.
Step 3: Open the file "_P710_West_Westguard_ScriptList.lua" in a text editor and add the name of your newly created file to the list, i.e., add the line
"Achievements.lua",somewhere within the scope of those curly brackets. That's necessary to make the game aware of your new file.
Step 4: Open the file "MQ_Addon3_Map09_LureZazhut.lua" in a text editor. Find the following place in the file
OnOneTimeEvent { Conditions = { MapTimerIsElapsed {Name = "mt_P710_EndVideoTimer", Seconds = 2}, }, Actions = { MapTimerStop {Name = "mt_P710_EndVideoTimer"}, PlayerGameEnds {}, }, },and change the number of seconds to 5 (or even higher if you want). This will give the script enough time after the final cutscene to trigger the achievements before the game abruptly ends.
Step 5 (optional): In the same file find the line
CutscenePlayBinkVideo {File = "addon3/video/outro.bik"},(which should be in the event above the one you edited in the step before). After that line simply add the line
FigureVanish {Tag = "ZazhutLure"},This step isn't strictly necessary. It simply removes Zazhut from the map after the final cutscene (in which he was defeated). Apparently, the developers didn't bother to do that but instead just abruptly ended the game. With the additional seconds from the previous step though, it is weird (and potentially deadly) if Zazhut is still fighting you at that point.
Done! Replay the final map (remember: load a savegame from before entering the map for the first time) and enjoy getting the achievements.
Btw, there is no need to replay the map on each difficulty. You can simply change the difficulty shortly before the end. (I considered being stricter and requiring a full play-through of this map without changing difficulty inbetween, but all the other difficulty-dependent achievements also allow this "cheat".)
I used the scripts as artydent wrote and since this game is so buggy, I have no problem in cheat it a bit to get the achievements...
So I played the game on normal, made a save right when Zazhut was weakened enough to lead him to the shrine, and changed the difficulty to replay the end and get every achievement.
The Hidden Achievements
These are hidden/secret achievements on the vanilla version and it is impossible to get them without changing files because a proper code line is not implemented.
Unfortunately, none of the script files contained anything related that would indicate what the original intent might have been.
Although, Steam user CUE had a theory about their original intent:
About the secret achievements: "Urban Law" and "Kubi Rule"
I've been looking at the game thoroughly, and of the 55 existing achievements, only 53 have any event that triggers them. The ones that are missing are the 2 that are supposed to be secret. They are so secret that they do not exist, only their identifier: "ach_dotp_urban_law" and "ach_dotp_kubi_rule".
There are actually 56 achievement tokens. The other is "af_Achievement_P705_Completed", which should come out when completing the island numbered internally as 705, but there is no such island, it goes directly from 704 (The Citadel) to 706 (Zarachs People). Like the 2 secret achievements, there is only the token, which is not associated with any event.
"Urban Law" may have been intended to be obtained by winning Survival mode, as in the final 2 waves we fought against developers ("The developers law" is the definition of achievement).
"Kubi Rule" may have been intended to be obtained by winning Domination mode. It seems obvious, since the objective of this mode is to dominate everyone ("Kubi rule them all"). I don't really know what that "Kubi" means, although there is a "Kubisforce" as a name of one of the developers, and it may be the name of one of them.
Nothing as been confirmed about these achievements real meaning or where we should get them, so some users made some changes into the scripts to get them.
Steam user SqbanyPL goes as far as to sugest we do one mission on the first map in order to win them... but by the end of the game, I was so tired of playing it that on my script edit, I went to the fast route and made it so that I only had to endure the first cutscenes.
Here is what I did:
- !!!IMPORTANT!!!
If you have any mod installed like the SF2 DOTP Community Patch 1.4 or any other, be sure to completely remove them from the game.
In fact, if you're a Steam player, run the Verify Files option after removing any mod from the game before attempting the following steps.
Or better yet, completely uninstal the game and do A CLEAN INSTALL WITHOUT ANY MODS!! - Go to:
\SpellForce 2 - Demons of the Past\addon3\map\Campaign\P701_Westguard\script
- Open file
cs_01_Start.lua
on Notepad++ - ... and find these lines:
State { StateName = "CutsceneFINISH", OnCutsceneFigureDespawnEvent { Conditions = { EntityTimerIsElapsed {Name = "et_CStimer", Seconds = 1}, }, Actions = { EntityTimerStop {Name = "et_CStimer"}, CameraTrackClear {}, CameraStop {}, CutsceneEnd {}, CutsceneFigureRenderAll {}, CutsceneFigureWeaponsShow {Tag = "pl_HumanAvatar"}, CutsceneFigureWeaponsShow {Tag = "HalicosCS1"}, CutsceneFigureWeaponsShow {Tag = "Ayro"}, CutsceneFigureWeaponsShow {Tag = "Murnos"}, CutsceneFigureWeaponsShow {Tag = "Craig"}, FadeInEffectStart{}, MapFlagSetTrue {Name = "mf_P701_Start_CS01_End"}, FigureVanish {Tag = "Noradim"}, FigureVanish {Tag = "Shaperconqueress"}, FigureVanish {Tag = "SoulCarrier"}, FigureVanish {Tag = "Kelar"}, FigureVanish {Tag = "HalicosCS1"}, FigureVanish {Tag = "Ayro"}, FigureVanish {Tag = "Murnos"}, FigureVanish {Tag = "Craig"}, FigureTeleport {Tag = "pl_HumanAvatar", X = 400, Y = 297}, FigureTeleport {Tag = "pl_HumanAvatar", X = 400, Y = 297}, }, GotoState = "CutsceneEnd", }, };
- Now, at the bottom of the Actions, add these lines:
AvatarFlagSetTrue {Player = "default", Name = "ach_dotp_kubi_rule"}, AvatarFlagSetTrue {Player = "default", Name = "ach_dotp_urban_law"},
- It will look like this:
State { StateName = "CutsceneFINISH", OnCutsceneFigureDespawnEvent { Conditions = { EntityTimerIsElapsed {Name = "et_CStimer", Seconds = 1}, }, Actions = { EntityTimerStop {Name = "et_CStimer"}, CameraTrackClear {}, CameraStop {}, CutsceneEnd {}, CutsceneFigureRenderAll {}, CutsceneFigureWeaponsShow {Tag = "pl_HumanAvatar"}, CutsceneFigureWeaponsShow {Tag = "HalicosCS1"}, CutsceneFigureWeaponsShow {Tag = "Ayro"}, CutsceneFigureWeaponsShow {Tag = "Murnos"}, CutsceneFigureWeaponsShow {Tag = "Craig"}, FadeInEffectStart{}, MapFlagSetTrue {Name = "mf_P701_Start_CS01_End"}, FigureVanish {Tag = "Noradim"}, FigureVanish {Tag = "Shaperconqueress"}, FigureVanish {Tag = "SoulCarrier"}, FigureVanish {Tag = "Kelar"}, FigureVanish {Tag = "HalicosCS1"}, FigureVanish {Tag = "Ayro"}, FigureVanish {Tag = "Murnos"}, FigureVanish {Tag = "Craig"}, FigureTeleport {Tag = "pl_HumanAvatar", X = 400, Y = 297}, FigureTeleport {Tag = "pl_HumanAvatar", X = 400, Y = 297}, AvatarFlagSetTrue {Player = "default", Name = "ach_dotp_kubi_rule"}, AvatarFlagSetTrue {Player = "default", Name = "ach_dotp_urban_law"}, }, GotoState = "CutsceneEnd", }, };
- Start the game, begin the Westguard map and watch the first custscene. When it's over, you should have won both achievements.