Discovered some new commands/cheats!

Discuss Drakan: Order of the Flame with fellow players and post any technical problems here where an 'unofficial' support team will try and help you. Gameplay help questions can go here too.
Post Reply
UCyborg
Dragon
Posts: 433
Joined: Sun Jul 07, 2013 7:24 pm
Location: Slovenia

Discovered some new commands/cheats!

Post by UCyborg »

Yesterday, I was messing around with Drakan using debugger. Wanted to figure out how foghack cheat works but instead, I have discovered some commands that can be typed in singleplayer after pressing the backslash key or whatever you have set for chat in multiplayer. I haven't seen them mentioned anywhere before. Most of them also require developer mode to be enabled.

eatme - makes Rynn bigger. Can be typed in multiple times.

drinkme - makes Rynn smaller. Can be typed in multiple times.

hud - hides or displays Heads-Up-Display (actually just health and inventory, inventory won't work if HUD is disabled).

tele X Y Z - takes away control from Rynn and switches camera to free mode and positions it on specified map coordinates.

teleport - just takes the camera way up in the blackness, you can get back using "floy".

goto X Z Y - moves camera to specified map coordinates. You must already be in flying mode for it to work (floy). Don't know what's the point of it since "tele" works well for that purpose. And yes, it's XZY, not XYZ.

lights! - creates some sort of dynamic light entity and binds it to Rynn so it looks like she's emitting light.

mr_clean - kills nearby enemies (unlike "giants" cheat, it doesn't gib them).

bye - commits suicide.

kurt - commits suicide.

nnyr - commits suicide and also gibs Rynn into pieces (if you're riding Arokh, gibs and blood come out of Rynn but her model doesn't disappear).

mcon - unknown

mcoff - unknown

identity - not sure, positions Rynn or Arokh on some specific point on the map.

panshot - makes some sort of special screenshot in game installation directory and names it PANO-X.TGA
X is a number. No idea what it means though.

exit - quits the game to desktop. Doesn't require developer mode and it also works in multiplayer. If this was known in the times multiplayer was active, pardon me, I haven't been around in those times.

Edit: added some codes I missed the first time.
Last edited by UCyborg on Sun Oct 25, 2015 10:22 pm, edited 4 times in total.
"When a human being takes his life in depression, this is a natural death of spiritual causes. The modern barbarity of 'saving' the suicidal is based on a hair-raising misapprehension of the nature of existence." - Peter Wessel Zapffe

User avatar
Arokhs Twin
Site Admin
Posts: 1295
Joined: Wed Jul 18, 2001 9:36 pm
Location: United Kingdom
Contact:

Re: Discovered some new commands/cheats!

Post by Arokhs Twin »

I never knew these codes existed. How did you manage to find them? Is there something hidden in the source code that gives a list of commands?
By fire and by blood I join with thee in the Order of the Flame!
Webmaster of Arokh's Lair

UCyborg
Dragon
Posts: 433
Joined: Sun Jul 07, 2013 7:24 pm
Location: Slovenia

Re: Discovered some new commands/cheats!

Post by UCyborg »

Since the source code is not available for this game I definitely coudn't look there for answers. But you can basically open any program/game that doesn't have some special protection in any of those special programs called disassemblers/debuggers which show you the program code in assembly language, which is the lowest-level language you can still work with but it's very difficult to figure that kind of code out, what it does, how it does. Two well known programs of that kind are OllyDbg and IDA (Interactive Disassembler).

When you compile your program/game, your source code, written in some higher-level language like C++, is translated into computer architecture specific machine instructions, in this case into instructions specific to all x86 compatible processors. The final result of compilation process is the executable file. In the process, all details like variable names, function names, how complex data structures are formed and everything in the source code that makes it coder-friendly are lost. So unless the developer made the program/game open-sourced, disassemblers/debuggers are the only options you have left to figure out how certain parts of the code work and perhaps fix some less complex bugs. You can also insert your own code (in assembly ofcourse) at the end of the executable's file code section, but the space there is limited. The technique is called codecave and here are some details for those who are interested.

One thing that's very helpful are human-readable words (coders call them strings) found in the executable file. It's how I managed to find the function that takes field of view for its parameter so easily which enabled me to implement widescreen code in AiO Patch. By searching for word "fov" I found a whole function in Dragon.rfl at address 0x10920 (plus base address) which compares what you type in-game at chat prompt with commands the game knows and if it finds a match, executes whatever cheat/command you wanted it to execute. And apparently this function isn't the only place that processess whatever you type in chat prompt. I actually haven't found out about "exit" command there, I just randomly typed in "exit", hoping it would work and it just worked.

And to answer your question, I don't think such command that would list every code exists. Or maybe it just hasn't been discovered yet.
"When a human being takes his life in depression, this is a natural death of spiritual causes. The modern barbarity of 'saving' the suicidal is based on a hair-raising misapprehension of the nature of existence." - Peter Wessel Zapffe

UCyborg
Dragon
Posts: 433
Joined: Sun Jul 07, 2013 7:24 pm
Location: Slovenia

Re: Discovered some new commands/cheats!

Post by UCyborg »

Looks like someone found out about kurt, bye and nnyr back in 2001. And then there is also "teleport". Found the site yesterday while Googling for Drakan stuff.

http://ukrfaq.narod.ru/ru/game/quest/drakan.htm
"When a human being takes his life in depression, this is a natural death of spiritual causes. The modern barbarity of 'saving' the suicidal is based on a hair-raising misapprehension of the nature of existence." - Peter Wessel Zapffe

User avatar
Mechanist
Dragon
Posts: 303
Joined: Wed Mar 07, 2018 7:27 pm
Location: Poland

Re: Discovered some new commands/cheats!

Post by Mechanist »

I've figured out some more about what the PANSHOT code does.

As far as I can discern, it just takes a perfectly normal screenshot... then rotates the player 90 degrees counterclockwise.

Not sure what the number in the filename is, though.
At first glance it appeared to be related to the camera's Y-rotation angle. However, that does not appear to be the case.

The number is taken from a function which modifies a global variable. But the variable in question is accessed by a bunch of unrelated code, and it's not even consistent. When Rynn is standing idle, sometimes a few dozen frames will pass between updates of that variable; sometimes as little as 1 frame.
There is also no obvious pattern regarding the resulting numbering; for all I know it might effectively be completely random.

It looks like the PANSHOT code was intended for taking panoramic screenshots by invoking it 4 times in succession.
But the feature looks half-baked at best:
  • Taking a PANSHOT does not hide the GUI,
  • It also does not hide the player character, so the resulting "panorama" would have the player facing in 4 different directions at the same time,
  • Game time passes normally between invocations, so moving actors in the scene will have moved inbetween the PANSHOTs, possibly messing up the result,
  • The way the numbers are assigned to the PANSHOTs makes no sense.
I think it's a placeholder for what was supposed to be a proper panorama-taking screenshot function, which never got implemented in the end due to development time constraints.

Post Reply