|
Post by 40hex on Feb 2, 2009 20:29:49 GMT -6
Hi Mantera and everyone else. I'm new around here, and a huge LOMSE fan from way back. I've been using your mods for a while now and really like those too. I hadn't played the game too recently, but I was suddenly reminded of LOMSE the other day by an old friend of mine and we decided to play a good old fashioned 1 on 1 LAN game. Unfortunately, my memory had failed me on the numerous coding bugs. So I have a proposition: Being the capable reverse engineer that I am, I would like to attempt to disassemble the main EXE and try to manually correct some of these network latency / lag issues. Normally I would just attack this thing head on and not even mention anything to anyone until I had cold hard results to show you, but the fact is I am very time restricted. I would like to ask all of you who read this for a favor so I can do you one (if it's possible): Please reply with links or documentation of major bugs that you would like corrected, along with ways to reproduce those bugs. If anyone knows specifically what causes those damn resync issues give me every bit of info you can so I can try to track down the coding bug. Every bit of information helps, and I will keep you all posted on any progress I make. Also, please (for now) keep your responses limited to coding bugs, not gameplay flaws. In other words, I know that the AI is weak but that's just not something I can fix without source code (etc etc, you get the idea). However, specific issues may be fixable with a little work. So let me know what you think, and feel free to toss me any suggestions or information about how the internals of the game work from your own experiences (ahem...Mantera). If you guys help me, I will try to help you.
Thanks, 40Hex
|
|
|
Post by Boaster on Feb 2, 2009 21:40:04 GMT -6
Actually the AI is controlled a majority by the game script. As far as bugs themselves, most of them are game script based as well. As far as reverse engineering the game itself, the only thing I think that would further things along is if the game bit size were increased. That might allow LOMSE to last in the 64 bit era. Another bit of coding in the EXE would be to increase the screen size from 640x480 to 800x600 or even further. Other than those two things, I can only think of what I would like to do to the main EXE. - Add more unit stats, just additional generic stats, but specifically additional physical resistance types and damage types to correspond (UNITTYPE_BLUNT_RESISTANCE, UNITTYPE_SLASHING_RESISTANCE, UNITTYPE_PIERCING_RESISTANCE, UNITTYPE_BLUNT_ATTACK, UNITTYPE_SLASH_ATTACK, UNITTYPE_PIERCE_ATTACK).
- Allow any unit to have CURRENT mana (labeled as UNIT_WIZARD_MANA).
- Add a code controlled by artifacts to recharge (/can_recharge true/false def /recharge 3 def, /recharge_amount 1 def; recharge would be the number of turns before it recharges)
- Extend the range of the transfer artifact unit ability (not the spells). Currently limited to a 3 tile distance.
- Allow the game to search for a "patch.mpq" which basically overrides anything that exists in any other MPQ. This would be ENORMOUSLY helpful. There would be no need to redistribute full archives when new images are created to use in the game. Mods updates would be able to include new images built in. This would be the most helpful.
- Add new unit abilities (similar to Spit Web, which is limited to targeting only enemies). On ability that target's self automatically and one that targets allies.
- [EDIT] Fix an issue that allows UNITTYPE_FRAMES_PER_GRID, UNITTYPE_MISSILE_SPEED to be adjusted by artifacts and spells. Currently are READ only attributes, and are not adjustable. While the value themselves can be adjusted, their effects do not change.
- Change the way the game searches for the sprites which appear in the army roster in the bottom of the screen. Currently looks at the unit's UNITTYPE_CODE. I'd like to have this be adjustable, perhaps with a new unit stat called UNITTYPE_ROSTER_SPRITE.
- Unit stat, usable as a counter, called UNITTYPE_COUNTER. Would be used to keep track of a number of different things.
- A new unit stat, UNITTYPE_SPECIAL_COUNTER to keep track in the unit's stats, as to whether or not it has the special building modifiers on the unit.
I'm pretty sure that these new stats would be SUPER EASY since there's already a list of which you could simple just rename, such as: - UNITTYPE_MAGISTRATE_REQUIRED => UNITTYPE_BLUNT_RESISTANCE
- UNITTYPE_MARKETPLACE_REQUIRED => UNITTYPE_SLASHING_RESISTANCE
- UNITTYPE_MISSILE_UPGRADE_REQUIRED => UNITTYPE_PIERCING_RESISTANCE
- UNITTYPE_BLACKSMITH_REQUIRED => UNITTYPE_BLUNT_ATTACK
- UNITTYPE_SHIPYARD_REQUIRED => UNITTYPE_SLASH_ATTACK
- UNITTYPE_TAVERN_REQUIRED => UNITTYPE_PIERCE_ATTACK
- UNITTYPE_TEMPLE_REQUIRED => UNITTYPE_COUNTER (useful for miscellaneous).
- UNITTYPE_STABLES_REQUIRED => UNITTYPE_SPECIAL_COUNTER
I know a little bit about reverse engineering the game's coding, not the EXE data. Learning what I've learned wasn't easy. You know how to do things I do not, especially with being able to reverse engineer EXE files. Pretty much, you've been the person I've been waiting to show up for a long, long time. Here's hoping that you can fulfill my requests. It would certainly advance my mod, or any other's mod to a new level. [Additional] Modify how much experience the Chaos Arena grants to followers. Current grants 650 experience.
|
|
|
Post by 40hex on Feb 2, 2009 22:09:09 GMT -6
Ok Mantera, I've read through your suggestions and many of them seem quite plausible from the EXE editing point of view, and some of them don't. Believe me, I understand you when you say it took you awhile to learn everything you know because I'm a self-taught modder, programmer, and reverse engineer myself with years of experience in failure with the sprinkled in successes that keep me going. Allow me to articulate better the limitations of EXE modification without the source code of the original EXE so you don't get your hopes set too high up, because there are some strict unmodifiable limitations. There's just no way around it without rewriting the entire EXE from scratch.
Some of your suggestions I just don't understand because I don't know enough about the scripting language or game-specific variables as you do. While I have much experience with this kind of thing, as I'm sure you're aware every game is different. I'm willing to learn about LOMSE if you've got the time to explain, but you're just gonna have to bear with me. While I understand what you mean by your suggestions, I'll need you to show me how I can find those variables on my own to edit them.
So for my initial appraisal of the situation, out of your suggestions these are the ones that can very likely be done: 1. Extend the range of the transfer artifact unit ability (not the spells). Currently limited to a 3 tile distance. 2. Fix an issue that allows UNITTYPE_FRAMES_PER_GRID, UNITTYPE_MISSILE_SPEED 3. Your list of easy changes (variable renames) does in fact look easy also.
Now, about your other suggestions. I realize that the other suggestions you made have considerable merit, but there's something you have to understand about reversing an EXE: It has to be done purely in assembly language. That means when I'm editing the file directly, I can't see variable names, I just see numbers and some very basic assembly routines. If I can manage to track down the places in the exe where certain things are done that we want to change, then we will change them. But as for making direct additions, such as new variables, (e.g. your artifact codes, more unit stats, etc) that would require an entire rewrite of the exe from scratch. You cannot pick and choose part of an exe to keep because each line of an exe is interdependent.
There is also something else we can try to do, which is replace certain variables. For example, if there some unused or basically useless variables that the game does not rely on we may be able to replace them with some alternative functionality. However, all of these things are going to require alot of time so don't expect instant results. I have to manually go through the assembly code and try to make heads or tails of the functions and sift through quite alot.
One final thing I would like to ask: Have you ever managed to get the game to run in a windowed mode? This would make my life sooo much easier.
So to sum up what I need you to explain before I can begin editing: Where are the scripts stored? How can I edit them? Is there any kind of reference as to what the different scrips/variables do in the game? Can I run the game in windowed mode? What programs do you use to, as you put it, reverse engineer the games data?
Also note that I don't expect you to sit there and right me a book about everything you know about LOMSE editing. If you can point me in the right direction and give me help when I ask I am more then capable of figuring plenty out on my own.
Thanks, 40Hex
|
|
|
Post by 40hex on Feb 2, 2009 22:13:28 GMT -6
Also, I forgot to mention if you know of any bugs that you have been unable to fix (e.g. a menu that loads something wrong, a button that doesn't work, a workaround you would like) now is the time to mention that. I already to plan to modify the 3.01 version so that you can always create a network game regardless of whether or not the CD is in. Toss me your suggestions here... (that goes for everybody, not just Mantera)
|
|
|
Post by Boaster on Feb 2, 2009 23:00:44 GMT -6
So to sum up what I need you to explain before I can begin editing: Where are the scripts stored? How can I edit them? Is there any kind of reference as to what the different scrips/variables do in the game? Can I run the game in windowed mode? What programs do you use to, as you put it, reverse engineer the games data? This may be your biggest help: members.iinet.net.au/~peterykwong/GSAlphaIndex11.pdfAlso, notice the edit part on the FRAMES_PER_GRID and MISSILE_SPEED part in the previous thread. Scripts are all located in gs.mpq. GS stands for Game Script. Very basic, almost C++ like language. Edit them Notepad. Simple enough. The refrence, that link above with the PDF should be helpful. Windowed mode? No. I use WinMPQ for on the fly editing. I use Ladik MPQ to recompile files I have set out in a folder, to recreate the gs.mpq for updates to the mod. I use Notepad++ for editing, much nicer than window's notepad. I hope this was helpful [By the way], if you can just rename the stats, I can take care of how they're implemented. No problem.
|
|
|
Post by Boaster on Feb 2, 2009 23:01:39 GMT -6
Also, I forgot to mention if you know of any bugs that you have been unable to fix (e.g. a menu that loads something wrong, a button that doesn't work, a workaround you would like) now is the time to mention that. I already to plan to modify the 3.01 version so that you can always create a network game regardless of whether or not the CD is in. Toss me your suggestions here... (that goes for everybody, not just Mantera) As far as I know, the 301 EXE has really no difference from the 300 EXE. This is just what I've noticed. Maybe you'll notice something to the contrary.
|
|
|
Post by 40hex on Feb 3, 2009 11:10:25 GMT -6
After comparing the Exes (3.00 & 3.01), while it may not appear there are any differences there actually are, even if only superficial. MD5 hashes for comparison if you're interested: Original Game lomse.exe 3.0.0.1: DFA42545C9EA66B3B21D5F3D2357391A Patched to 3.0.1.1: 6C88139F717A77F118E4EAE6EC8FD049
Interestingly enough the original game is actually 3.0.0.1 and not just 3.00, and the patch is actually 3.0.1.1. Not that it makes any difference to anyone, just a point of interest.
Now for the things listed below, did you just want them renamed so it will be easier for you to edit them in the script language? If that's the case it shouldn't be too difficult and I'm going to take the liberty of figuring out how to do that now. # UNITTYPE_MAGISTRATE_REQUIRED => UNITTYPE_BLUNT_RESISTANCE # UNITTYPE_MARKETPLACE_REQUIRED => UNITTYPE_SLASHING_RESISTANCE # UNITTYPE_MISSILE_UPGRADE_REQUIRED => UNITTYPE_PIERCING_RESISTANCE # UNITTYPE_BLACKSMITH_REQUIRED => UNITTYPE_BLUNT_ATTACK # UNITTYPE_SHIPYARD_REQUIRED => UNITTYPE_SLASH_ATTACK # UNITTYPE_TAVERN_REQUIRED => UNITTYPE_PIERCE_ATTACK # UNITTYPE_TEMPLE_REQUIRED => UNITTYPE_COUNTER # UNITTYPE_STABLES_REQUIRED => UNITTYPE_SPECIAL_COUNTER
As for the artifact limit to 3 tiles, it would save me a lot of time if you knew the variable name (similar to the ones above) for that limit. Such as, ARTIFACT_MAX_DISTANCE or whatever. Otherwise I can try to track that down on my own.
And I'm looking into those read-only values now, but it's extremely difficult to edit lomse code because I can't use a debugger in fullscreen mode. That means trying to figure out the code manually unless I can figure out a way to force windowed mode (which I'm also looking into). Anyway, if/when I get results I will post here. If I manage to solve the stuff above without too much difficulty I will then take a look into implementing some of your other suggestions, but again don't set your hopes too high. Let's just wait and see how well the editing goes.
Be back soon, -40Hex
|
|
|
Post by 40hex on Feb 3, 2009 11:45:37 GMT -6
Ok, I've had some mixed editing results. Because of the way an EXE is structured, variable renames must remain the same fixed text length. So I have renamed the variables you wanted renamed, but I had to use extended names in most cases. Here is a list of the new names and a link to the updated exe for you to test. I apologize I could not do exactly the names you wanted, but maybe I will figure out a workaround soon. - UNITTYPE_MARKETPLACE_REQUIRED => UNITTYPE_SLASHING_RESISTANCE_
- UNITTYPE_MISSILE_UPGRADE_REQUIRED => UNITTYPE_PIERCING_RESISTANCE_PRCR
- UNITTYPE_BLACKSMITH_REQUIRED => UNITTYPE_BLUNT_ATTACK_BNTATK
- UNITTYPE_SHIPYARD_REQUIRED => UNITTYPE_SLASH_ATTACK_SLAT
- UNITTYPE_TAVERN_REQUIRED => UNITTYPE_PIERCE_ATTACK_P
- UNITTYPE_TEMPLE_REQUIRED => UNITTYPE_COUNTER_COUNTER
- UNITTYPE_STABLES_REQUIRED => UNITTYPE_SPECIAL_COUNTER_
Modified exe: rapidshare.com/files/193447085/lomse.zip.htmlAs for the other things, the following information would help: What happens when you try to use the teleport artifact ability on a space too far away? If you get an error message of any kind, please post the text here. What do you mean by allow any unit to have CURRENT mana? Do you mean even non-wizard containing units? Do artifacts come with any variables by default, and if so please give me one of their names so I can track it down. (e.g. ARTIFACT_ABILITY_NAME) When you click the create button in the local area network multiplayer area, and nothing happens, what is the general cause of this? Does the game detect no network, or does it not detect my cd? I ask because I have edited the exe in such a way so that it always thinks the cd is in, so the create button now shows up all the time (without the cd there is only a join button). However, when I click it nothing happens and I'm trying to fix this. (Note that the lomse.exe I posted above does not contain my cd check crack, only the text modified to minimize possible errors) Also note that the exe I modified was the 3.0.1.1 version, and you should be running a game install that was patched to 3.0.1.1. Otherwise you may get errors. If the exe doesn't work or crashes, it may be because the game requires some of the renamed variables. You will have to test it and let me know how it goes so I can fix that if it happens.
|
|
|
Post by Boaster on Feb 3, 2009 16:36:28 GMT -6
This is the best that I can give you regarding the Transfer Artifacts UNIT ability. Taken from: "gs\generic.gs" /teleport_artifacts{ /dummy begin /to_a exch def /from_a exch def from_a anythinglocation to_a anythinglocation ; griddistance 3 le griddistance 9 le { 0 from_a 0{iscurrentartifactwielded? not{1 add}if}enumunitartifacts 0 gt {from_a 0{iscurrentartifactwielded? not{from_a 0 to_a 0 artifactself transferartifact}if}enumunitartifacts} {soundfxdict /C_fizzle get playsoundfx T_special_teleport_artifact_no_artifacts storydict begin ask_ok_modal end}ifelse } { soundfxdict /C_fizzle get playsoundfx T_special_teleport_artifact_fail storydict begin ask_ok_modal end }ifelse end }/dummy currentdict replace bind def end The griddistance 3 le is actually the original made as a comment. Now as for the variables you renamed, if at all possible, I would like them to be renamed in such a way that doesn't leave extra text at the end. I'll try to come up with variable names that use all characters of text. I'll have to do it later after my meeting at work. I cannot do it now, for times sake.
|
|
|
Post by 40hex on Feb 3, 2009 17:56:21 GMT -6
Ok, I've successfully managed to isolate many of the games subroutines. It appears that the scripts refer to actual functions inside of the game with the same names. I have found the 'griddistance' function, which appears to be an all purpose function which takes 5 variables. I'm guessing by that script you posted that the first variable is the distance. I'm not really sure what I should modify inside of the function as it seems that a specific number would be somewhere inside of a script and not the exe. Not to say you haven't obviously looked, it's just something that I can't seem to track down in the exe itself. Worst comes to worst I'll try to edit some things in the griddistance function and see what happens.
I've managed to patch the game so that it always thinks the CD is in and allows you to create a Direct Cable connection game. The LAN game still does nothing on clicking create after hours of experimenting with the code and about 300 hacks.
As for the names on those variables, it would work if you could come up with names that are the same length.
There are 2 main problems preventing me from locating most of the code I need to edit: 1. The game actually exits shortly after starting, runs DPStub.exe, which in turn restarts LOMSE. This is a problem because it detaches my debugger from the exe. 2. When I try to reattach a debugger to the reloaded exe, the game always crashes. This is likely due to either it's outdated construction or anti-debugger measures taken by the software company.
Since the game restarts on its own I can't trace the code, so I'm trying to find a way to hook into DPStub.exe, and then hook from there into LOMSE again. I have managed to successfully force the game into windowed mode, but as you can see have encountered problems that I don't even run into in most modern games.
As for that script you posted, what separates that version of teleport artifact (unit based) from any other version? Do they use separate scripts?
Thanks and I'll keep working, -40Hex
|
|
|
Post by Boaster on Feb 3, 2009 20:09:11 GMT -6
As for that script you posted, what separates that version of teleport artifact (unit based) from any other version? Do they use separate scripts? The Teleport Artifact spells are much easier to edit. Since this is not a spell and only performs a single function and has a limit set hidden somewhere. I've tried adjusting the value to allow more than 3 tile distance to use the ability, but to no avail.
|
|
|
Post by 40hex on Feb 3, 2009 20:21:04 GMT -6
What exactly is 'griddistance 3 le { … }' supposed to do? It would help me understand the assembly if I knew what I was looking at. And also, have you tried changing 'le' to 'ge'?
|
|
|
Post by Boaster on Feb 3, 2009 20:52:28 GMT -6
It's suppose to transfer unwielded artifacts from one army to another. And yes, I have tried changing le to ge.
Also, I have decided to try something a little different with the variable renaming.
# UNITTYPE_SHIPYARD_REQUIRED => UNITTYPE_UNIT_ATTACK_TYPES # UNITTYPE_MISSILE_UPGRADE_REQUIRED => UNITTYPE_PHYSICAL_RESISTANCE_TYPE
I will see if I can get this to work as arrays, unless you can tell me if they're locked as single integers.
Well, I've tried setting the stats as arrays themselves, but no good. So scrap that.
Here's what I did come up with though. All but one were fixed to rename perfectly:
# UNITTYPE_BLACKSMITH_REQUIRED => UNITTYPE_SLASH_ATTACK_RESIST
# UNITTYPE_MAGISTRATE_REQUIRED => UNITTYPE_CRUSH_ATTACK_RESIST
# UNITTYPE_MARKETPLACE_REQUIRED => UNITTYPE_PIERCE_ATTACK_RESIST
# UNITTYPE_TEMPLE_REQUIRED => UNITTYPE_PIERCING_ATTACK
# UNITTYPE_TAVERN_REQUIRED => UNITTYPE_SLASHING_ATTACK
# UNITTYPE_STABLES_REQUIRED => UNITTYPE_CRUSHING_ATTACK1
# UNITTYPE_SHIPYARD_REQUIRED => UNITTYPE_INVISIBLE_COUNTER
# UNITTYPE_MISSILE_UPGRADE_REQUIRED => UNITTYPE_SPECIAL_BUILDING_COUNTER
I would like to know if putting a period in place of the 1 would make any difference or not.
|
|
|
Post by 40hex on Feb 3, 2009 21:13:13 GMT -6
Here's an updated exe with the following slight modifications: rapidshare.com/files/193636077/lomse.zip.htmlA. CD Check has been removed, and also replaced with a success code so multiplayer thinks the disk is in. (not sure if the other crack did that) B. The following variable name changes: - UNITTYPE_MAGISTRATE_REQUIRED => UNITTYPE_BLUNT_RESISTANCE_BR
- UNITTYPE_MARKETPLACE_REQUIRED => UNITTYPE_SLASHING_RESISTANCE_
- UNITTYPE_MISSILE_UPGRADE_REQUIRED => UNITTYPE_PHYSICAL_RESISTANCE_TYPE
- UNITTYPE_BLACKSMITH_REQUIRED => UNITTYPE_BLUNT_ATTACK_BNTATK
- UNITTYPE_SHIPYARD_REQUIRED => UNITTYPE_UNIT_ATTACK_TYPES
- UNITTYPE_TAVERN_REQUIRED => UNITTYPE_PIERCE_ATTACK_P
- UNITTYPE_TEMPLE_REQUIRED => UNITTYPE_COUNTER_COUNTER
- UNITTYPE_STABLES_REQUIRED => UNITTYPE_SPECIAL_COUNTER_
If you want me to change some of the other names let me know, I realize some of my creations are kind of lame. I'm still looking into fixing several bugs, and will post beta trial exes here for testing. I don't have the time or resources to extensively test every one of my modifications, so I'm going to have to rely on you for that. I also can't tell you by looking at the data whether or not it's an array, but it looks like it can only hold an integer value. I'm not too sure because the LOMSE memory management system is a little funky and I'm still trying to come to grips with how it's all put together. When I know more so will you. -40Hex
|
|
|
Post by Boaster on Feb 3, 2009 21:16:32 GMT -6
You were probably typing as I was editing my post, but here are the variable renames one more time:
# UNITTYPE_BLACKSMITH_REQUIRED => UNITTYPE_SLASH_ATTACK_RESIST
# UNITTYPE_MAGISTRATE_REQUIRED => UNITTYPE_CRUSH_ATTACK_RESIST
# UNITTYPE_MARKETPLACE_REQUIRED => UNITTYPE_PIERCE_ATTACK_RESIST
# UNITTYPE_TEMPLE_REQUIRED => UNITTYPE_PIERCING_ATTACK
# UNITTYPE_TAVERN_REQUIRED => UNITTYPE_SLASHING_ATTACK
# UNITTYPE_STABLES_REQUIRED => UNITTYPE_CRUSHING_ATTACK1
# UNITTYPE_SHIPYARD_REQUIRED => UNITTYPE_INVISIBLE_COUNTER
# UNITTYPE_MISSILE_UPGRADE_REQUIRED => UNITTYPE_SPECIAL_BUILDING_COUNTER
Any chance you think you might be able to find out how to enable "UNIT_WIZARD_MANA" for units that are not wizards? This would be helpful.
|
|
|
Post by 40hex on Feb 3, 2009 21:27:51 GMT -6
Fixing the EXE now, you were typing as I was ;D
|
|
|
Post by 40hex on Feb 3, 2009 22:13:48 GMT -6
Latest update: rapidshare.com/files/193649917/lomse.zip.htmlCD Check removed. Renamed variables: - UNITTYPE_MAGISTRATE_REQUIRED => UNITTYPE_CRUSH_ATTACK_RESIST
- UNITTYPE_MARKETPLACE_REQUIRED => UNITTYPE_PIERCE_ATTACK_RESIST
- UNITTYPE_MISSILE_UPGRADE_REQUIRED => UNITTYPE_SPECIAL_BUILDING_COUNTER
- UNITTYPE_BLACKSMITH_REQUIRED => UNITTYPE_SLASH_ATTACK_RESIST
- UNITTYPE_SHIPYARD_REQUIRED => UNITTYPE_INVISIBLE_COUNTER
- UNITTYPE_TAVERN_REQUIRED => UNITTYPE_SLASHING_ATTACK
- UNITTYPE_TEMPLE_REQUIRED => UNITTYPE_PIERCING_ATTACK
- UNITTYPE_STABLES_REQUIRED => UNITTYPE_CRUSHING_ATTACK1
Looking into UNIT_WIZARD_MANA. I've found it, it's just a matter of figuring out where all of the decisions are made so I can edit that. It's not proving too easy either, but I'm working on it.
|
|
|
Post by Boaster on Feb 3, 2009 22:51:35 GMT -6
I can't seem to do anything with the renamed variables.
In 'units\easyunit.gs' it creates dictionary references which correspond to each unit stat variable (i.e. UNITTYPE_ATTACK, variable reference is zero, as seen in the PDF).
In 'units\easyunit.gs' it creates dictionary references in order. /attack is the first dictionary reference.
Go on down the line and /temple_required is the 34 (counting from zero). In the PDF UNITTYPE_TEMPLE_REQUIRED uses the variable reference 33 (which in actuality the 34th, since it starts at zero instead of 1).
If I change '/temple_required 0' to '/piercing_attack 0' the game sends back error messages to me.
So, next thing to find out is if you can find a simple "temple_required" variable in the EXE.
You could try just renaming DPstub.exe to put it out of the way.
|
|
|
Post by 40hex on Feb 4, 2009 12:30:00 GMT -6
Ok, I've finally had some success. While that variable problem is strange and I'm looking into it, I've managed to finally solve some problems. You were right about renaming DPStub, don't know why it didn't occur to me. Although I had already solved the problem on my own by some patching, that's a little simpler.
First, I have successfully managed to patch the game so that it always creates a new game when you want to host. The reason sometimes you clicked create and nothing happened on the LAN screen is because a checksum was being performed by Storm.dll. I have patched LOMSE to ignore that checksum call.
Secondly, I have tracked down the main game loop which is responsible for pretty much everything. It's a bit massive and complicated, but here's what I need to solve the artifact problem that you can provide for me: A game save which is saved just before using the unit ability teleport artifact. It doesn't matter what difficulty, faith, etc. I just need you to save the game with a unit which is capable of using that ability, and please save it with the screen focused on that unit during that faith's turn. This will help for a large number of reasons, the least of which is that griddistance is called about 10000 times every frame, and at least this will limit the possibilities. It would actually help even more if you sold/disbanded every other unit except that one. This way I will be able to track down the griddistance bug easily (I have to run the game in a glitchy forced windowed mode / debugged / hacked version of itself, and the screen is difficult to see when actually in the game), and if I do successfully fix it we'll be on the way to correcting more bugs.
Thanks, -40Hex
|
|
|
Post by Boaster on Feb 4, 2009 16:22:40 GMT -6
mantera.xorgate.com/TransArtifact.zipThe save game is set up with a Grand Magician and Hydra. Hydra has Luckstone in his inventory. Loading game with any version of the GS5 mod should be okay, just make sure you have the pic5r2.mpq installed too.
|
|