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.
This occured to Janook on Leviathan as Queen, except it started at the beginning of the game. I'm not sure how to reproduce it but it sounds like a new issue as of 1.2
re: Sedna Permanent Silence
re: http://www.box.net
I have a replay of the Pot-Glitch. It happens towards the end, it's when we port on Sedna on our right portal. Notice that DA swaps her and she picks it up even though she is a good distance away.
This could be Skill Queue bug and may also be related to the bug with porting being canceled by Swap sometimes.
http://www.box.net/shared/l1gtqaa5fo
Had a look into oak shield interupt,
Both DA and Sedna use a loop affect and it might be the looping that cancels out a teleport:
ie Da has
Affects = {
Interrupt = {Bool = true},
},
and sedna uses:
Affects = { Silence = {Bool = true},
Da may be able to be fixed by changing interupt to an add affect (ie
Affects = { Interrupt = {Add = 0},
}
This should not cause the interrupt to not work as this is how pentinence is coded. However, I am not sure whether DA was given a loop to allow him to teleport sheilded oak, and the interrupt during shield is a side effect. Been trying to test this change on Ai but it is difficult.
Code would be (HDemon_abilitites.lua)
################################################################################################################# # Buff: Shadow Swap ################################################################################################################# BuffBlueprint { Name = 'HDemonShadowSwap01', Debuff = true, BuffType = 'HDEMONSHADOWSWAP', EntityCategory = 'HERO', Stacks = 'REPLACE', Duration = 0.1, Affects = {
#Change
Interrupt = {Add = 0},
#End of Change
_____________________________________________
For silence a different approach is required i think. This should work, and seems to cause no negative effects ingame on or the debugger. However, once again testing is difficult.
Code would be (BuffAffects.lua)
################################################################################################################# # Silence #################################################################################################################
function Silence( unit, buffName, buffDef, buffAffects, instigator, instigatorArmy, bAfterRemove )
#Added Code
if Buff.HasBuff(unit, 'HOAKShield03') then continue elseif Buff.HasBuff(unit, 'HOAKShield04') then continue elseif Buff.HasBuff(unit, 'HOakPurity') then continue end,#End of Added Code
local val, bool = BuffCalculate(unit, buffName, 'Silence', 0, false) unit.Sync.Silenced = bool unit.Silenced = bool if (instigator and not instigator:IsDead() and unit != instigator ) then FloatTextAt(unit:GetFloatTextPositionOffset(0, 1, 0), '<LOC floattext_0015>SILENCED', 'Stunned', unit:GetArmy()) endend
________________
Also one other note, has anyone considered this might be shield running out at the end of the teleport, 6 seconds is barely long enough to do caplock and tele, considering that there is always minimum response time of 0.3 seconds, fastest possible combination would take 5.6 seconds (ie 2*response time of 0.3 + 3 second cast teleport and +2 second cap lock) and would be a feasible cause of canceling teleport on the swoosh (ie shield ends at just before teleport ends casting)?
I'm not sure what you mean by looping affect. What you displayed is a table in lua. More specifically, given this code snippet:
Affects is a data structure (called a table). It contains the fields Silence and Interrupt (it could contain more). In both cases the fields are Booleans and are both equal to true.
For:
I'm not sure what is going on. All of the other abilities with an interupt use: Interrupt = {Bool = true},
Your silence code may work out. However, I'm still not convinced there is a bug. As you suggested in your post (and as discussed on the previous page (this thread moves fairly quickly which is annoying sometimes)), it may just be due to lag. Without more evidence I'm going with the position that it is a lag effect.
Thanks for helping looking into things.
Could not replicate could you be more specific?
I think it needs a fix, i dont think that it is working as intended
Yes this is correct, however, as a comparision to an add function, the boolean is set to true for the duration of the interupt. Comparitively, the add function initiates the interruption ability but has no duration (and as warp is an instant interrupt following completion of casting this wouldnt matter). If your worried about the time of the interrupt change it to a stun
Ie
Duration = 0.5,
Stun = {Add = 0},
When the UB inflicts a unit with Plague and it dies from the damage from Plague, the unit does not explode with a Post Mortem explosion. Also, kills due to Post Mortem (and possibly Plague) do not give the UB gold.
I think so too, but I wanted to make sure that sufficient people agreed before I went ahead and did something about it. It should be simple enough.
This is hard to test as you need something with alot of health to test it. On minotaurs and archers it was looking normal.
Note to get post mortem effect you need to hit the unit at least once. you sure the units are not exploding cause you havent hit them, and instead have taken alot of damage from your creeps/ plague?
Does mines have this same effect? If not then i might have a fix
Bug:
Orb of Defiance deals 500 weapon damage, not 500 skill damge. (read: it is affected by armor)
With Queen you do over 1000 damage to creeps/giants after Ground Spikes, but it sucks against other demigods.
re: creeps
The easy way to test it is to set creep strength to high, waves to frequent, and start at level 10. Then stand in the center of the creeps. Take Post Mortem and not plague. Watch how often enemies explode. Now put a point into Plague. You'll notice that the damage spike explosion occurs very infrequently.
re: mines
No, the Regulus's mines don't give kill credit, nor do Rook's towers. The demigod wiki has a reasonable description of of the kill mechanics and what gives credit and what doesn't. I'm not certain if Regulus mines and Rook Towers should give credit, however the AOE damage due to post mortem seems to be a reasonable extension. Otherwise the UB is penalized for picking up the ability and creeping.
re: Orb of Defiance
I'm not sure which item you are talking about hedgie. The orb of defiance gives armor & health. It doesn't have a damage effect.
Sorry. Orb of Veiled Storms. 8000 gold Artifact.
zomg fixes released that whoever controls Demigod couldn't manage to somehow create on their own!
If GPG is too lazy to do them, couldn't they grant Stardock the ability to create updates to the game? Oh yeah, it's all about Elemental whatever now. Gotcha.
It's depressing that some modding work has to go to bug fixes rather than interesting new modifications to the game. I still try to play a game or so every now and then, but I keep logging on to find no games available (i.e. riiight now it's been over 30 min and my lobby is still 1/6 me). It's srsly rather depressing
oh. reading a few posts up:
I did extensive testing on UB post mortem. It does NOT provide XP, which is unlike every other aoe in the game (tested surge of faith, slam, heaven's wrath, reg mines, angelic fury, qot spikes and spikewave, orb of veiled storms, etc) which all give aoe. Obviously no Stardock / GPG response when posted on the forums several months back.
Ah, I understand now. You are correct in your report.
I checked the other items and all the demigod abilties for good measure. Only the Doomspite Grips and the Girdle of Giants are affected by armor, and both of those are cleave type attacks. I believe that the Orb of Veiled Storms was meant to be armor immune damage. I'll change it and add it.
I also looked into the tag: CanBackfire. For all abilities and items, except for the Orb of Veiled Storms and Oak's Surge of Faith, this value is set for false. The only other mention I can find of CanBackfire = true is in Giants melee attack. It also shows up in BuffAffects.lua and Weapon.lua (but nothing useful). I wonder if I should set them all equal to false just to make things consistent or just ignore it. I also couldn't find any reference to it in the supreme commander lua docs I have found.
I dunno?
I know that everyone has a lot of frustration about the status of Demigods. GPG is having problems with 3rd party netcode that failed them, coding hours, and budget problems. Stardock is having problems because they aren't the only distributor, which means they have to deal with Atari to get some things done, they have to deal with the tremendous amount of negative output by the community, and they've been pouring in money to save Demigods, when they had no responsibility to do so in the first place. The community has to deal with what they perceive as a lack of faith and support by GPG & Stardock.
This however, isn't the place for complaints. This thread and this mod is all about working with everyone, the community, with Stardock, and with GPG to make Demigods a better game.
re: Games at this time of day
Ok as mines and towers do not affect gold/xp income either i suggest that ub not getting gold from post mortem kills is due to the way this buff works. For post mortem to activate requires the creep/unit to become the instigator of the effect (and not ub/your demigod of choice as standard aoes Rawwwr used to test with) and as such ub will not be awarded the xp/gold. Prbly not easy to fix.
As for CanBackfire command.
I am pretty sure that this is used for activation of damage reflection (ie Goddess of Thorns) and so prbly shouldnt be changed.
Orb of veiled storms is a one line fix
ArmorImmune = false,
to
ArmorImmune = true,
Still looking at plague/post mortem conflict.
K found a the problem for Ub Post mortem/plague
################################################################################################################## Buff - Plague II#################################################################################################################BuffBlueprint { Name = 'HEPA01Plague02', DisplayName = '<LOC ABILITY_HEPA01_0062>Plague', Description = '<LOC ABILITY_HEPA01_0042>Taking poison damage. Spreads to allies.', BuffType = 'HEPA01PLAGUE', Debuff = true, CanBeDispelled = true, EntityCategory = 'MOBILE - UNTARGETABLE', Stacks = 'IGNORE', Duration = 30, DurationPulse = 30, Affects = { Health = {Add = -15}, }, Effects = 'Plague01', EffectsBone = -2, DamageSelf = true, CanBeEvaded = false, CanBackfire = false, CanDamageReturn = false, DamageFriendly = true, ArmorImmune = true, CanCrit = false, CanMagicResist = true, #NoFloatText = true, AffectRadius = 10, AffectChance = 100, NumIgnoreSpreadPulses = 1, # Number of pulses to wait before spreading plague Icon = '/DGUncleanBeast/NewUncleanPlague01', OnApplyBuff = function( self, unit, instigator ) unit.Callbacks.OnKilled:Add(self.UnitOnKilledCallback, self) end, OnBuffAffect = function(self, unit, instigator) #LOG("*DEBUG: OnBuffAffect unit: "..unit:GetUnitId().. " inst:"..instigator:GetUnitId()) if unit:IsDead() or instigator:IsDead() or not instigator.Plague then return end # Allows for ignoring OnBuffAffect pulses, so this doesn't trigger immediately on the first # application of plague. if unit.PlagueInstance.IgnoreAffectPulses then unit.PlagueInstance.NumIgnoredPulses = unit.PlagueInstance.NumIgnoredPulses + 1 if unit.PlagueInstance.NumIgnoredPulses >= self.NumIgnoreSpreadPulses then unit.PlagueInstance.IgnoreAffectPulses = false end return end local targets = unit:GetAIBrain():GetUnitsAroundPoint((categories.MOBILE - categories.UNTARGETABLE), unit:GetPosition(), self.AffectRadius, 'Ally') PlagueSpread02( instigator, targets, self.AffectChance ) end, OnBuffRemove = function(self, unit) #self:DecrementPlagueCounter(unit) Buff.ApplyBuff(unit, 'HEPA01PlagueImmune', unit) end, UnitOnKilledCallback = function( self, unit )
unit.Callbacks.OnKilled:Remove(self.UnitOnKilledCallback) #self:DecrementPlagueCounter(unit) end, DecrementPlagueCounter = function(self, unit) local instigator = unit.PlagueInstance.Instigator if not instigator then LOG( 'No Instigator' ) end if not instigator:IsDead() then instigator.Plague.NumPlaguedUnits = instigator.Plague.NumPlaguedUnits - 1 unit.PlagueInstance = nil end end,}
Problem code bolded.
This function removes the callback used by post mortem and so it doesnt activate. Removing it allows post mortem to work as usual. Seems to me tho that this is a development descision and not a coding accident.
Two work arounds that i can see to be fairly easy and effective:
1. delete these line of code but i am not sure what add on effect this will have.
2. Add post mortem effect to all units which die of plague. I cannot see this as a problem as i figure plague is caused by ub anyway.
Code for 2.:
OnApplyBuff = function( self, unit, instigator ) unit.Callbacks.OnKilled:Add(self.UnitOnKilledCallback, self) end, OnBuffAffect = function(self, unit, instigator) #LOG("*DEBUG: OnBuffAffect unit: "..unit:GetUnitId().. " inst:"..instigator:GetUnitId()) if unit:IsDead() or instigator:IsDead() or not instigator.Plague then return end # Allows for ignoring OnBuffAffect pulses, so this doesn't trigger immediately on the first # application of plague. if unit.PlagueInstance.IgnoreAffectPulses then unit.PlagueInstance.NumIgnoredPulses = unit.PlagueInstance.NumIgnoredPulses + 1 if unit.PlagueInstance.NumIgnoredPulses >= self.NumIgnoreSpreadPulses then unit.PlagueInstance.IgnoreAffectPulses = false end return end local targets = unit:GetAIBrain():GetUnitsAroundPoint((categories.MOBILE - categories.UNTARGETABLE), unit:GetPosition(), self.AffectRadius, 'Ally') PlagueSpread02( instigator, targets, self.AffectChance ) end, OnBuffRemove = function(self, unit) #self:DecrementPlagueCounter(unit) Buff.ApplyBuff(unit, 'HEPA01PlagueImmune', unit) end, UnitOnKilledCallback = function( self, unit )
############Added Code unit.Callbacks.OnKilled:Add(PMExplode, self)
############ End Added Code
re:Canbackfire
Canbackfire only shows up in those five files I listed, it doesn't show up anywhere else (at least with = true). My first thought was the same, that it was damage reflection tag. However, CanDamageReturn is the damage reflection tag. So that isn't what it does. Also, ONLY giants, Orb of Veiled Storms, and Surge of Faith have it set to True. I searched through every file in the dgdata.zip. I think it is leftover code that isn't being used anymore.
re:Post Mortem
The problem code you have bolded is just the plague counter which is also part of an error checking feature. It allows the you to keep track of how many units are infected with the plague, so you don't infect more than the max number allowed (30). It doesn't actually do anything. I'm not sure how you associated it with Post Mortem.
Your fix may work. I can't tell just looking at the code. If you tested it, then well it does work. However, I'm not sure we should do this until we figure out what went wrong. Looking at the code, the Post Mortem Debuff should still be on the unit when it dies. However, the explosion Callbacks.OnKilled never runs.
I want to know why not before I start adding in more code. It might be the case that only one on death call back is actually performed. It might have something todo with overkill. It might have something todo with knocking units into the air. It might be something else. I don't know.
re:Post Mortem UB gets XP
I believe that it was intended that the UB get the gold for kills by Post Mortem, something happened to break the code, somewhere though. If you look in HEPA01_Abilities.lua and lookup the fuction PMExplode and the buff HEPA01PostMortemEnemy01, you can see that Post Mortem assigns a Post Mortem caster which is the UB. This is then carried through and when damage is applied it should correctly reference the Post Mortem Caster as the instigator (and thus the UB should get gold). However, it doesn't work out that way.
another thought: perhaps a name change is in order? Maybe something more generic to perhaps increase appeal or maybe get more people to use it if it gets bundled with demigod? Maybe just Bug Fix 1.0.
In Supreme Commander we call it CBFP - Community Bug Fix Patch
I'm all for whatever. So long as its easily identified to most peeps.
Yes i tested it, thats how i know these are the lines that are causing trouble. I understand that they were for error checking, however, post mortem uses the same callback that plague removes (I will put the code side by side for you). Also notice that all this function does at the current point in time is disable post mortem ( as the plague counter has been disabled by GPG - #self:DecrementPlagueCounter(unit)
).
Post Mortem
OnBuffAffect = function(self, unit, instigator) if instigator then unit.AbilityData.PostMortem = {} unit.AbilityData.PostMortem.Caster = instigator unit.AbilityData.PostMortem.CasterArmy = instigator:GetArmy() unit.AbilityData.PostMortem.CasterBp = instigator:GetBlueprint() unit.AbilityData.PostMortem.DamageRating = instigator.Sync.DamageRating end unit.Callbacks.OnKilled:Add(PMExplode, self) if unit.PostMortemRemoveThread then KillThread(unit.PostMortemRemoveThread) end unit.PostMortemRemoveThread = ForkThread( function() WaitSeconds(self.CallbackDuration) if not unit:IsDead() then unit.Callbacks.OnKilled:Remove(PMExplode) end end ) end, OnBuffRemove = function(self, unit) unit.Callbacks.OnKilled:Remove(PMExplode) end, Icon = '/DGUncleanBeast/NewUncleanPostMortem01',}
__________________________________________________________
Plague
See how post mortem uses unit onkilledcallback function to activate the explosion? now if you look closely, as you said before plague used to use this function as an error checking unit to count the number of infected units, however on the death of the unit plague is removing the unitonkilledcallback before post mortem is activated.
As for gold with these skills:
No Ub is referenced as the instigator of the ability but not the activator of the buff.
Once again i think that it is this code:
unit.Callbacks.OnKilled:Add(PMExplode, self)
As you can see, the unit is not UB (as it would be for most abilities) but is instead the unit which has the debuff. On most items, unit refers to the instigator, and target are the units which recieve the buffs. The only exceptions to this rule that i have found are summoned units (mines and towers) and post mortem (although there may be more).
There are many great features available to you once you register, including:
Sign in or Create Account