UberFix
The UberFix is a compilation of bugfixes for Demigods version 1.2. The patches incorporated into the modare listed below along with the creator of the patch.
Download:
v1.02
Installer format: www.box.net (Recommended Download)
filesize: 334,609 bytes
MD5 Checksum: 5322667e9be4dbd0fc9cb44823a6dc81
Source Code: www.box.net
Old Versions
v1.01
Installer format: www.box.net
filesize: 322,544 bytes (Downloaded 223 times)
v1.00
Downloaded 178 times
zip format: 16.5 KB v1.00 Mediafire v1.00 Box.net
exe format: 301.2KB v1.00 Box.net
Currently Included Patches
Uberfix 1.02
UberFix 1.01
UberFix 1.00
Current Buglist (Todo list: Verified and replicatable)
Bugs Requiring Research List (requires verification and a reliable replication method)
Current Unfixable Errors (Can't do list)
Current Nonbugs (Feature List)
Bugs Fixed by Previous Official Patches (SD & GPG fixed it list)(not complete, just ones that come up)
Current Potential Additions to the BugFix (Addition list) 1. SkillInfoMod 2. AIMod by Peppe
Current Semi-Active Project Members
Ptarth - guy who does stuff
awuffleablehedgie - guy who finds bugs
UhelligGudn - new guy with lots of energy
Plea to Community
If we want Stardock and Gas Powered Games to increase their support of Demigods, we need to demonstrate our commitment and our willingness to support it. If we want to accomplish anything worthwhile to demonstrate our commitment, we need to work together. If you have time, please consider helping out. Every little bit helps.
Hm, maybe you have answered this question somewhere already, but why did you make 1.01 a separate mod?
I wrote up some instructions to send to someone who was interested in working on the UberFix. I'm going to post them here since they are useful. It isn't completely correct, but it is good enough for an initial start.
I code using notepad, you can get a LUA editor, but it doesn't offer us that much in turns of usefulness. The majority of the functions and code we will be writing will have to run within the demigods game itself.
Demigod's uses a hook method of activating mods. That means we will be putting files into a mod directory and the game will add those files when an actual game starts. There are some other ways of doing things, but this is the main way it works.
If you haven't already done so, download the Uberfix, install it, and then browse around the files in it.
The main data file we work with is dgdata.zip. It is downloaded to your root Demigods directory whenever there is an update. You'll want to extract out all the files into a subdirectory (not under root Demigods, you want to keep it somewhere else). The files and file structure of dgdata.zip are what we get to work with. Only files that are loaded when a game starts will we be able to change. If we want to change other things it either has to be outside of the files that the executable runs, or we will have to modify the executable.
Demigods is a Peer to Peer game, which means that to enforce anticheating, it checks all the files during play. It also verifies the hash of the dgdata.zip file on startup. To change the hash is actually trivial, you just have to do a search and replace, but that does prevent you from using the mods with others.
In the Uberfix post in the Mods forum is the buglist. I'm the only maintainer for it, but it is pretty complete. Those are the majority of the issues to be addressed.
To enable debugging, you'll need to open the Game.prefs file located (on Windows XP) at c:\Documents and Settings\<user name>\My Documents\My Games\Gas Powered Games\Demigod\Game.prefs and add the following to the end:
debug = { enable_debug_facilities = true}
Save it afterwards.
The most important technique is debugging and testing code is to run demigods in window mode and to enable the cosole with ctrl+F9. This will show the logger and give you some idea of what's going on. You can also restart a game without having to quit it by pressing ctrl+f10. This will not load new files, only ones that you have changed.
Most of the time what we are going to be doing is tracing down functions that aren't working quite right. This will involve finding the function that is breaking and then searching for the functions that it calls or that call it, which may be functioning incorrectly. The best way to do this is via a direct text search of extract dgdata.zip files.
If you haven't setup your OS to do a decent search of text files, you'll need to do that. Google it on and it should provide isntructions.
There is a list of the hotkeys that the debugger allows you to use. I need to dig it up or you can just search the data file to find it. It is fairly self-explanatory, however most of them don't do anything useful.
Demigods uses the Moho Engine, which is the engine used in Supreme Commander. The version that demigods uses is slightly different, however most of the information is very similar. I use Supreme Commander wikis are a technical reference for somethings.
Many of the functions and properties of objects you'll have to learn about via experience. If you have questions, ask away.
I should also send you a copy of the code that someone else wrote that allows for Logging of tables better. Currently the logging options are rather bad, so you'll find it helps.
I think that is a lot of the stuff you'll need to worry about at this point. Sorry if it is a little disjointed. I was trying to get all the information out there quickly.
I'm looking into Lord Erebus's Poisoned Blood Ability. I'd like some second opinions.
When a Lord Erebus drops a Poisoned Blood Potion and a teammate drinks it should it:
If the Lord Erebus manages to kill a teammate with a Poisoned Blood Potion which should occur:
If the Lord Erebus manages to kill himself with a Poisoned Blood Potion, should it be different than killing a teammate?
My personal thoughts are that when a teammate drinks a Poisoned Blood Poition either it shouldn't do any damage, or should function as the potion its rollover describes it to be. Other thoughts?
Definitely be a normal potion for team mates. Since you have a Lord Erebus ally, you shouldnt be afraid of him killing you that way. Team mate drinks poison blood = normal potion.
Option number 4.
Lord Erebus shouldnt be able to commit suicide, and escape getting killed by the enemy. Right now as it is, you even get gold/xp from killing yourself with your own potion. This shouldnt happen. Erebus drinks his own potion = normal potion heal.
p.s. But if Erebus drinks enemy Erebus's poison blood, it SHOULD do damage to him. This actually might be very difficult to mod, as the game might confuse the 2 potions (your own, or your enemy's).
My thought is that poison is still poison (unless your teammates have built up an immunity to iocane powder). As a result, it should do the same amount of damage.
I don't know, though... the logic gets a little tricky. I guess the main question is should his poison blood be helpful to his teammates... should poison be helpful... I'm pretty much up in the air on this one.
Well, we have to becareful that we don't imply real world physics into a game. Just because something is called poison doesn't mean it acts just like real poison. Likewise, we could assume that the Erebus gives his teammates an antidote to his blood so it acts like a healing potion.
In the end this is about balance. Should an Erebus's teammates be penalized for his skill choice? Also recall how infrequently this will make a difference. As long as we remove the ability for the Erebus to farm his own death, it shouldn't make much of a difference.
Progress report
So, I'm still waiting on some feedback on if my Poisoned Blood Fix worked, until then I've been working on Effects that Stop Regen not working.
I think I've found the problem, and because it was hilarious, I'm going to share it with everyone.
The source of the problem comes from how Buffs are applied (which is declared in BuffAffects.lua). Here is the applicable code snippet (with parts resolved).
The important lines are bolded. First, mult is declared as 1. Next we loop through all of the buffs on a unit. For each Buff v, we multiply its effect by the number of instances of that buff on a unit (v.count). We take the base value that is being modified, add to it the additive buffs and then multiply by the multiplicative buffs.
The glitch comes from how multiplicative buffs and buffs that stop regen interact. The effect of stopping health and mana regeneration (in Oculus at least) is created by setting a buff with a Mult = 0.0.
If we run this through the above code, the following happens
So the effect of having a buff with Mult = 0 is... nothing. It doesn't change anything.That seems to be the reason why it doesn't work. Now, I'm trying to track this down in other places to see if this is consistent. The problem is I know there are abilities that stop regen, but I can't remember which ones. If I could get help from the crowd, I'd appreciate it. What abilities and items stop regeneration?
One of the biggest problems with the Demigods modding community is that there isno central depository of information. This results in much of the work beingvery redundant. The Stardock forum, the GPG forum, the Supreme Commander Wikis, and the currently available mods are only methods of transfering this knowledgefrom one modder to the next, and they don't tend to be very good about it. Infollowing I'm going to record how I went about tracking down the Poisoned Bloodproblem with Lord Erebus.The first part in making a mod, or in this case fixing a bug, is to specify thecurrent behavior, the desired behaviors, and how the two are different. In thiscase the problem is:Lord Erebus possesses an ability that allows him to drop poisoned health potionswhen he dies. When a demigod consumes this potion, he loses 750 or 1500 healthinstead of healing. If Lord Erebus kills a demigod with this damage, he receivescredit and gold for the kill. However, there is an additional complication. Whena Lord Erebus consumes his own potion, he also gets credit for killing himself. Likewise, when he kills a teammate, his gets credit.The problem with this is that this is abuseable and not fair.It is abuseable because a Lord Erebus can use the potions to farm himself. Hegains 1500 gold every time he commit suicide. By repeatedly committing suicide,he could gain a huge gold advantage. It is not fairbecause a Lord Erebus can kill himself voluntarily by drinking his own potion,cheating his enemies out of the rewards for killing him. It also penalizes hisown teammates for having him die, in contrast to other demigods which drop auseful item for their teammates upon death.The desired behavior would be for the poisoned potions to kill enemies. However,what effect should the potion have on allies? This is a tougher question thatmoves from bugfixing to balancing. The effect of Poisoned Blood drinking istrivial, the amount of times this will effect games is very small. However, itdoes have an effect. The effect from the original Demigods is definitelyincorrect. At this point, I'm going to tentatively say that our goal is tohave the potions be normal potions of healing for the allies of the Lord Erebusand be normal poisoned blood potions for his enemies. This allows for theintended effect of hurting his enemies while not poisoning his teammates.Since I have now defined the effect I'm trying to achieve, I can now try toimpliment the effect. In this case I need to be able to have the Poisoned BloodPotion have different effects based upon the team that consumes the potion.To do this, I need to find the code that relates to the Poisoned Blood Ability.A search of the contents of dgdata.zip reveals the following files contain"PoisonedBlood":
EffectTemplates.luaThis file contains the emmiters or graphics specifications. There are twoeffects that are used by Poisoned Blood. The first is when a potion is consumed.This is the effect: PoisonedBlood01. The second is the effect that occursaround a potion while it is on the game playing field: Health02. Effects containentries for Small, Medium, Large, and Huge targets to allow different graphicsfor each target of the effect. Each entry is further divided between low,medium, and high. These refer to the level of graphics that are currently beingdisplayed. This file is of no interest for changing how potions work.LootDefinitions.luaThis file contains the Blueprints for the Potions. The Poisoned Blood potionscorrespond to HVampirePoisonedBlood01 and HVampirePoisonedBlood02. The blueprintspecifies which PowerUp is associated with the item and also contains a weight.The weight determines how likely a particular type of potion is to be created.For Poisoned Blood Potions there is only one choice, therefore weight's value ismeaningless. However, it is present because it is referenced by the code thatcreates loot drops.PowerUpDefinitions.luaThis file contains the Blueprints for the Poisoned Blood Potion ability. Theentry resembles that of an item or ability. This entry specifies thecharacteristics of the Poisoned Blood Potion. Two versions of the Potion exist,one each level of the Poisoned Blood Potion. I will now go over the entry forPoisoned Blood Potion 1 line by line. Poisoned Blood Potion 2 is very similar,the differences are trivial.
Now, one important question, is how does the game known who created the potion.Looking back upon the code, there is no immediate obvious answer to this question.However, whenever a Demigod dies to Poisoned Blood Potion, the Lord Erebus getsthe kill and the gold. This suggests that there is information being carried alongwith the potion, that isn't obvious. When your investigating a charctercan select its properties can be seen in game by opening the console andpressing shift+F7 (I think). However, items are unselectable, so that doesn't work.The best solution I have is to include LOG comments in functions that are usedby the object. (Editor's Note: Another curious find is that when Lord Erebus iskilled by his own Poisoned Blood potion, the game does not count it as suicide.However, when a Demigod consumes a potion that gives them -100000 health, it iscounted as a suicide. This is interesting, but I haven't check out why it occurs)In this case, we have another lead. This lead comes from the awarding of creditfor kills. This requires tracing what happens when demigods die. There are(at least) three places that contain this information.DeathThread (heroUtil.lua) is the function that deals with removing the demigod.ForgeUnit.lua contains the damage and death functionsConquest.lua contains the rewards for killing units and heros.It seems that the Poisoned Blood potion may be bring along an instigator field.This would explain how the Poisoned Blood potion credits the Lord Erebus.Given this information, the route I chose to fix the problem was to used nestedbuffs. The declaration for the effect of the Poisoned Blood potion is in thePowerUpBlueprints. PowerUps do not have all of the inbuilt functions that Buffshave. It would be more elegant to add features to PowerUps, however with theUberFix I'm trying to avoid changing things too drastically. The feature thatI am looking for would be called OnApplyPowerUp. However, since it doesn'texist, I'm going to use Buffs.The nest Buff solution is to apply the initial buff and then have that buffapply a new buff. The first buff will do nothing besides specify the secondbuff. First I'm going to show you the completed code, then I'll discuss it inmore detail.
There are two features of note in this code. The first is the OnApplyBuff function. This function allows for other functions to occur when the buff is first applied to the target. There is another counterpart function, OnBuffAffect. I believe this occurs each time the buff pulses. (Editor's Note: Buffs can be set to pulse every X seconds. When this occurs a specific effect occurs. This is displayed in abilities like Lord Erebus's Vampire Creation Aura and the Queen of Thorn's Compost Aura).
The first buff, HVampirePoisonedBlood01, when applied checks to see if theconsumer of the potion (unit) is a teammate of the Erebus who dropped thepotion (instigator). If it is an ally, the HVampirePoisonedBlood01Heal buff isapplied. If it is an enemy, the HVampirePoisonedBlood01Damage is applied.The only other tricky part is: Affects = { Health = {Add = 0}, },Looking at the code, you should note that it doesn't do anything. In fact, theBuff code terminates early because there the value is 0. However, this snippetis important for the AI. To detect and use potions, the AI relies on thePowerUpBlueprint having a buff that contains an affectType (Health, Energy, etc)and an Add or Mult value. In moving to a nested buff solution I removed thisline from the Buff declared in the PowerUpBlueprint. I couldn't move thesecondary buffs into the PowerUpBlueprint because they would then all beperformed when the PowerUp was activated. (Editor's Note: Credit goes to Peppefor helping me figure out this part). In this snippet is not present, the AIwill ignore the Poisoned Blood potions.That should be about it. If you have questions or suggestions on how to make allof this more clear, please post them. Hopefully we can start making moretutorials and editorials on how the LUA in Demigods works.
goodness... i've got some reading to do...
Update: Torch Bearer Fireball Slow Down Bug
Teseer reported that the Torch Bearer occasionally has Fireballs that are very slow. I tried to replicate this a number of ways and I was only able to reproduce it in one way. However, I think this might explain his observations.
When a target teleports after a fireball is in flight, the target seeking features of the Fireball activate. In the Fireball's projectile file there was no acceleration. This means that as long as the fireball was headed in the generally correct direction, there wasn't a problem. However if the target teleports to a location that requires the fireball to drastically change its heading, the fireball slowed down because it couldn't accelerate in the correct direction (very quickly at least, it still does, but it is a small value). If Teseer was playing against players with very fast movement speeds or that teleported (Bat Swarm, Cloak of the Night, Demon Assassin or Teleport Scroll), this behavior should be reproduced.
To fix the problem I added Acceleration and MaxSpeed to the Fireball03_proj.bp (which is the fireball currently used in the game for the Torch Bearer's Fireball).
If Teseer or anyone wants to test this to confirm, here is a link to a test mod that contains the Fix. It changes Fireball 1 to have a longer range and shorter cooldown so you can test it more easily. It also contains a modified Scale Helm which adds viewing distance to make sniping it easier. (It also contains a few other bits and pieces which aren't really important, leftovers really).
Also, does anyone have any experience with how often the Torch Bearer's regular attack misses? I was toying around with him today and occasionally his projectile would display the same problems as his Fireball ability. I wasn't sure if this is an issue or not.
Since I've been spamming the thread today, I might as well throw this in as well.
After working on the Poisoned Blood Ability I've come to the conclusion that suicide abilities are probably not intended. Lord Erebus's wasn't coded very well. The only other ability that allows you to do so is the Unclean Beast's Ooze. Ooze is also more likely to be done accidentally or out of spite. I don't think this is an intended behavior. So, I'm going to make Unclean Beast automatically come out of Ooze when low on life. If anyone has any strong objections, make your opinion known and provide a reasonable rational for your opinion.
I really dug the in depth walk through. Good read. Thanks for posting.
I think that UB's suicide is on purpose.
I remember checking the code about it in the past, and I found the neccessary code required for a suicide. While Erebus's suicide on the other hand is accidental. It just counts in all Demigods (including himself) able to be killed by the poison.
And UB's suicide has a message on the screen too, so it is definitely intentional.
UB - ooze: "pacov has suicided"
Erebus - poisoned blood: "pacov has killed pacov (+1000 Gold)"
The suicide code is generic to all demigods. It occurs whenever the instigator is the same as the unit that dies. I'm not sure why it doesn't fire when a poisoned blood potion takes effect.
Here is the snippet from conquest.lua that is relevant.
I never checked these lines, LOL
Then yes, you are correct (even though this is reeeeeeeeaaally strange that this happens only with UB, and not with erebus)
The only thing I can think of, is that it was probably meant to do more than just commit suicide with only UB demigod, because the game had 2 other game modes, from what I know of, 1 was Capture the Flag, and the other was something with chest treasures (something like that), but they were removed before release, so my guess is that it was meant for something else, but they left it still active for some reason.
Update: Ooze
Well, I feel reather stupid today for two reasons.
1. When merging blueprints the statement is:
On the other hand if you use:
Demigods will infinite loop with a message reporting it failed to find the correct mesh for the modified unit.
So remember kids, table keys are case sensitive.
2. When trying to figure out if an ability has an intended effect, check the code first.
Looking at the Ooze code, it actually possesses the correct code to kick the Unclean Beast out of Ooze when low on life. There are two problems with it though.
On the bright side this clears up any debate about the issue, it is obviously a bug. If you want proof but don't want to look at the code yourself, try committing suicide with Ooze 1 (outside of combat). You can't do it. You'll get down to 100 health. The check will kick in and you will end up with around 64 hp.
For those who are interested in the code, here is the original and below it is my fix for Ooze 4.
As you can see, I made a couple of changes. First, I move the Buff.ApplyBuff (which causes the damage) down and inside the if statement. If the Unclean Beast fails the health check, then and only then is the Buff.ApplyBuff ran. In contrast in the original version the check was made AFTER that Buff was applied. This is what caused the 1 extra tick effect to occur.
Good point, but then why there is the message "xxxx has suicided" ?
Is my assumption correct, that it was left from maybe a different game mode or something?
My guess would be that it is a coincidence.
Consider this, the person who wrote the death code is most likely not the person who wrote the Demigod Abilities code, especially the Unclean Beast's code. What I would expect is that whomever wrote the death code added it in as a possible outcome, without knowing if there was an ability that would trigger it. It would be the same for someone who was writing the healing effects. You wouldn't write one just to add health and stop. You would add one that can handle health, energy, etc.
Yeah that makes sense.
But this isnt very professional on GPG's behalf isnt it?
I'm not sure I can back you up on that claim.
First, I'm not a professional programmer, so I'm probably not qualified to have an opinion on the subject. However, ignoring that, it doesn't seem to unreasonable for this sort of random occurence. The individual steps leading up to all of these are reasonable. It makes sense to code the contingency for a demigod killing itself and giving it a different message. It makes sense that the person who originally wrote the Ooze code to have written it the way they did. It also makes sense for the person who balanced the Ooze ability to not consider the possibility that the Ooze could lead to suicides in rare cases.
Looking at it from a bug perspective, it is a very minor flaw. The frequency of the event is tiny, it requires a UB near death to have Ooze on. Likewise, no one really was convinced it was a bug until I got around to looking at the code just recently. Given that it has escaped notice for this long, I willing to say that it wasn't something that we should criticize GPG's professional skills for.
Fair enough, for me
So, back on page 5 TrouserSnake69 suggested that Oculus's Sacrifice skill didn't work. However, not one verified or agreed with him, nor did he sound confident he was correct. It turns out that not only is he correct, he also found a potentially huge bug.
The problem is how Demigods treats the NOT statement. Typically NOT is used to indicate the presence of a variable, here is an example:
In this case, IF data.Radius lacks a value then an error is reported.
However, in Sacrifice the following is used:
The intent of this code was to check to see if Entity V is an Ally of Unit and is also not the same as Unit. If both of these are true, then heal the unit (data is a negative number so it is a heal). Notice that NOT is supposed to apply to the outcome of (unit == v).
However, if we verify this using a True Table. We find something troublesome and interesting. By including a log statement in the previous code snippet I generated the following table.
We find that NOT (X == Y) is not the same as NOT X ==Y. (This is seen in the last two columns).
NOT X == Y only confirms if X has a value. NOT (X == Y) does the check that we want.
This broke Sacrfice because NOT Unit == V was always FALSE, so the heal effect never occured. (Since Unit always exists, NOT Unit is always FALSE).
Why is this so troublesome? Well, NOT X==Y being the same as NOT (X == Y) is pretty standard in programming language. Its absence is unexpected. This means that there may be additional effects in the code where the writers intended NOT (X == Y), but wrote NOT X == Y. This should be verified, and that's a lot of work.
Also, I fixed Sacrifice.
Here is the contents of DefaultKeyMap.lua. This is a useful resource for new modders, especially if you keep forgetting what file it is in.
['Esc'] = 'escape', ['F10'] = 'options_menu', ['Pageup'] = 'chat_page_up', ['Pagedown'] = 'chat_page_down', ['Shift-Pageup'] = 'chat_line_up', ['Shift-Pagedown'] = 'chat_line_down', ['NumSlash'] = 'show_frametime', ['W'] = 'pan_up', ['A'] = 'pan_left', ['S'] = 'pan_down', ['D'] = 'pan_right', ['Q'] = 'rotate_left', ['E'] = 'rotate_right', ['Space'] = 'cam_free', ['Ctrl'] = 'restrict_selection_to_demigods', # This is a dummy entry for the keybinds page, can't actually be bound to a function}defaultUserKeyMap = { ['K'] = 'show_skills', ['C'] = 'show_player_stats', ['1'] = 'use_ability_1', ['2'] = 'use_ability_2', ['3'] = 'use_ability_3', ['4'] = 'use_ability_4', ['5'] = 'use_summon_1', ['6'] = 'use_summon_2', ['7'] = 'use_summon_3', ['8'] = 'control_minions_soldiers', ['9'] = 'control_minions_archers', ['0'] = 'control_minions_priests', ['I'] = 'control_minions_special', ['M'] = 'control_minions_all', ['N'] = 'control_minions_allplushero', ['O'] = 'control_minions_regroup', ['H'] = 'control_demigod', ['F1'] = 'use_inventory_1', ['F2'] = 'use_inventory_2', ['F3'] = 'use_inventory_3', ['F4'] = 'use_achievement', ['W'] = 'pan_up', ['A'] = 'pan_left', ['S'] = 'pan_down', ['D'] = 'pan_right', ['Q'] = 'rotate_left', ['E'] = 'rotate_right', ['equals'] = 'zoom_in', ['minus'] = 'zoom_out', ['T'] = 'track_unit', ['Backspace'] = 'reset_camera', ['Space'] = 'cam_free', ['Tab'] = 'toggle_score', ['Tilde'] = 'cycle_lifebars', ['P'] = 'ping_alert', #['Pause'] = 'pause', ['PrintScreen'] = 'cap_frame', ['F12'] = 'toggle_team_color', ['Ctrl'] = 'restrict_selection_to_demigods', # This is a dummy entry for the keybinds page, can't actually be bound to a function ['NumMinus'] = 'decrease_game_speed', ['NumPlus'] = 'increase_game_speed', ['NumStar'] = 'reset_game_speed', ['F9'] = 'debug_toggle_log_window',}debugKeyMap = { ['Ctrl-L'] = 'debug_output_logs', ['Ctrl-A'] = 'debug_achievements', ['Ctrl-Alt-P'] = 'debug_navpath', ['Alt-F2'] = 'debug_create_unit', ['Alt-T'] = 'debug_teleport', ['Alt-A'] = 'debug_run_opponent_AI', ['Ctrl-Alt-B'] = 'debug_blingbling', ['Alt-Delete'] = 'debug_destroy_units', ['Ctrl-Alt-Comma'] = 'debug_graphics_fidelity_0', ['Ctrl-Alt-Period'] = 'debug_graphics_fidelity_1', ['Ctrl-Alt-Slash'] = 'debug_graphics_fidelity_2', ['Ctrl-Alt-M'] = 'debug_toggle_ren_environment', ['Alt-F3'] = 'debug_scenario_method_f3', ['Shift-F3'] = 'debug_scenario_method_shift_f3', ['Ctrl-F3'] = 'debug_scenario_method_ctrl_f3', ['Shift-F4'] = 'debug_scenario_method_shift_f4', ['Ctrl-F4'] = 'debug_scenario_method_ctrl_f4', ['Ctrl-Alt-F4'] = 'debug_scenario_method_ctrl_alt_f3', ['Ctrl-Shift-F4'] = 'debug_scenario_method_f4', ['Ctrl-Shift-F5'] = 'debug_scenario_method_f5', ['Shift-F5'] = 'debug_scenario_method_shift_f5', ['Ctrl-F5'] = 'debug_scenario_method_ctrl_f5', ['Ctrl-Alt-F5'] = 'debug_scenario_method_ctrl_alt_f5', ['Shift-F6'] = 'debug_create_entity', ['Shift-F7'] = 'debug_show_stats', ['Shift-F8'] = 'debug_show_army_stats', ['Shift-F9'] = 'debug_show_cvp_stats', ['Alt-F9'] = 'debug_open_lua_debugger', ['Alt-F11'] = 'debug_show_frame_stats', ['Ctrl-Alt-W'] = 'debug_render_wireframe', ['Ctrl-Shift-W'] = 'debug_weapons', ['Ctrl-Alt-O'] = 'debug_grid', ['Alt-Q'] = 'debug_show_focus_ui_control', ['Alt-W'] = 'debug_dump_focus_ui_control', ['Alt-D'] = 'debug_dump_ui_controls', ['Alt-V'] = 'debug_skeletons', ['Alt-B'] = 'debug_bones', ['Ctrl-Shift-X'] = 'debug_redo_console_command', ['Ctrl-Shift-C'] = 'debug_copy_units', ['Ctrl-Shift-V'] = 'debug_paste_units', ['Alt-C'] = 'debug_cam_zoom_near', ['Alt-N'] = 'debug_nodamage', ['Ctrl-Alt-E'] = 'debug_show_emitter_window', ['Ctrl-Alt-R'] = 'debug_reload_effect_templates', ['Ctrl-Alt-Shift-R'] = 'debug_reload_effect_utilities', ['Ctrl-Alt-Z'] = 'debug_sally_shears', ['Ctrl-Shift-Alt-C'] = 'debug_collision', ['Ctrl-Slash'] = 'debug_pause_single_step', ['Ctrl-F10'] = 'debug_restart_session', ['Alt-F'] = 'set_level_25', ['Alt-G'] = 'give_all_skills', ['Ctrl-U'] = 'debug_ui', ['Ctrl-Shift-Alt-D'] = 'debug_damage', ['Ctrl-Shift-U'] = 'debug_dump_frames', ['Ctrl-Shift-E'] = 'debug_erics_ring', ['Ctrl-NumMinus'] = 'debug_corpse_delay_decrease', ['Ctrl-NumPlus'] = 'debug_corpse_delay_increase', ['Ctrl-K'] = 'suicide', ['NumMinus'] = 'decrease_game_speed', ['NumPlus'] = 'increase_game_speed', ['NumStar'] = 'reset_game_speed', ['Ctrl-Alt-Shift-P'] = 'pause',}
ptarth - debating about the release of 1.02 instead of keeping with 1.01 for the tourney. Is there anything you are working on atm that you were thinking of rolling into 1.02 or could you go live with 1.02 (as a beta initially) with what's listed in your changlog currently?
Hmm... if its good to go in your opinion, please release 1.02 as a beta asap and link to it in the op. I'll get people using it asap then.
There are many great features available to you once you register, including:
Sign in or Create Account