Ha ha ha ha, no problem
You're still doing it.
---
WARNING - Subjective bugfix follows
---
Armor and Damage types
ArmorTypes.lua
Code: c++
- Structure = {
- Normal = 1.0,
- Hero = 1.0,
- SpellFire = 1.0,
- Spell = 1.0,
- Light = 1.0,
- Arrow = 1.0,
- Artillery = 2.0,
- },
Structure is the only ArmorType that takes non-standard damage from all weapon types, and the only one for that is for Artillery (which deal 2x damage).
Artillery weapons are as follows:
- Rook's Trebuchet (level 8 upgrade - does a whopping 500 damage per shot to towers!)
- Trebuchet's on Fortresses (with upgrade)
- Catapults
- Giants
This has the rather noticeable lack of the Siege Archer idols, and the surprising existence for Giants.
SiegeArcher01:
DamageType = 'Normal',
What I suggest is:
1) Giants lose their Artillery DamageType. They aren't really artillery units :-/
2) Siege Idols gain the Artillery DamageType. This borders on overpowered, however, so to balance it, halve their damage. Now they do less damage to demigods, normal (artillery) damage to structures.
---
DA does not respond after using WarpStrike:
FollowThroughTime = 0.3,
All four levels of WarpStrike have a .3 FollowThroughTime.
Follow Through for abilities below. Note that changing forms { UB: Ooze, Reg: Angelic Fury, Queen: Open/Close, TB: Fire/Ice } (with the exception of Reg's Angelic Fury) do not have Follow Through times and instead are defined manually with special logic.
Ooze: No pause or followThrough penalty. Period.
TB:
- Frozen Heart: looks like .3 seconds for no abilities but you can move normally
- Relive the Immolation: 1.8 seconds
Code: c++
- FireState = State{
- Main = function(self)
- #LOG("*DEBUG: Fire State")
- # Setup delay time between ice and fire mode.
- if Buff.HasBuff(self, 'HEMA01IceWeaponEnable') then
- Buff.RemoveBuff(self, 'HEMA01IceWeaponEnable')
- end
- Buff.ApplyBuff(self, 'HEMA01IceWeaponDisable', self)
- self:SetAbilities(true, false)
- self:DestroyAmbientEffects()
- # stop this dude in his tracks self:GetNavigator():AbortMove()
- Buff.ApplyBuff(self, 'Immobile')
- self.Sync.AvatarState = 2
- # Create character based fire ambient effects
- self:ForkThread(self.PlayFxFireAmbients, 0.1)
- self.Character:SetCharacter('MageFire', true)
- self.Character:PlayAction('CastEndFireMode')
- WaitSeconds(1.5)
- #LOG("*DEBUG: Immobile: FALSE")
- if Buff.HasBuff(self, 'HEMA01FireWeaponDisable') then
- Buff.RemoveBuff(self, 'HEMA01FireWeaponDisable')
- Buff.ApplyBuff(self, 'HEMA01FireWeaponEnable', self)
- end
- self.Character:PlayIdle()
- WaitSeconds(0.2)
- Buff.RemoveBuff(self, 'Immobile')
- WaitSeconds(0.1)...
Queen:
- PackedState (Closing)
Code: c++
- PackedState = State{ Main = function(self)
- #Buff.ApplyBuff(self, 'Immobile')
- if Buff.HasBuff( self, 'HQueenPrimaryWeaponEnable') then
- Buff.RemoveBuff( self, 'HQueenPrimaryWeaponEnable' )
- end
- Buff.ApplyBuff(self, 'HQueenPrimaryWeaponDisable', self)
- self.TransitionImmobilityActive = true
- self.Character:SetCharacter('Queen', true)
- AbilFile.ShowAbilities(self, 'HQUEENPACKED') AbilFile.HideAbilities(self, 'HQUEENUNPACKED')
- self.Character:PlayAction('Close')
- self.AbilityData.Queen.IsPacked = true
- #self:GetNavigator():AbortMove()
- #self.Character.IsMoving = false
- self.Sync.AvatarState = 1
- WaitSeconds(1.5)
- self.Character:PlayIdle()
- if Buff.HasBuff( self, 'HQueenPackedWeaponDisable' ) then
- Buff.RemoveBuff( self, 'HQueenPackedWeaponDisable' )
- Buff.ApplyBuff( self, 'HQueenPackedWeaponEnable' )
- end
- #Buff.RemoveBuff(self, 'Immobile')
- self.TransitionImmobilityActive = false
- Buff.ApplyBuff(self, 'HQueenPackedBuffs', self)
- if Buff.HasBuff(self, 'HQueenAbilityDisable') then
- Buff.RemoveBuff(self, 'HQueenAbilityDisable')
- end
- self:DestroyAmbientEffects()
- end,
- UnpackedState (Opening)
Code: c++
- UnpackedState = State{ Main = function(self)
- #Buff.ApplyBuff(self, 'Immobile')
- if Buff.HasBuff( self, 'HQueenPackedWeaponEnable') then
- Buff.RemoveBuff( self, 'HQueenPackedWeaponEnable' )
- end
- Buff.ApplyBuff( self, 'HQueenPackedWeaponDisable', self )
- self.TransitionImmobilityActive = true
- self.AbilityData.Queen.IsPacked = true
- self.Character:SetCharacter('Queen_Unpacked', true)
- AbilFile.ShowAbilities(self, 'HQUEENUNPACKED') AbilFile.HideAbilities(self, 'HQUEENPACKED')
- self.Character:PlayMove()
- self.Character:PlayAction('Open')
- self.Sync.AvatarState = 2
- WaitSeconds(1.5)
- #self.Character:PlayIdle()
- if Buff.HasBuff(self, 'HQueenPackedBuffs') then
- Buff.RemoveBuff(self, 'HQueenPackedBuffs')
- end
- self.AbilityData.Queen.IsPacked = false
- self:CreateAmbientEffects()
- if Buff.HasBuff( self, 'HQueenPrimaryWeaponDisable' ) then
- Buff.RemoveBuff( self, 'HQueenPrimaryWeaponDisable' )
- Buff.ApplyBuff( self, 'HQueenPrimaryWeaponEnable' )
- end
- #Buff.RemoveBuff(self, 'Immobile')
- self.TransitionImmobilityActive = false
- if Buff.HasBuff(self, 'HQueenAbilityDisable') then
- Buff.RemoveBuff(self, 'HQueenAbilityDisable')
- end
- end,
---------- DA ----------
WarpStrike - 0.3 <- should be .1
Spine Attack - 0.1
Warp Area - 0.1
Shadow Swap - 0.1
---------- TB ----------
Fireball - 0.3 <- Probably for Animation? Followthru on STaff
Fire Nova - 0.5 <- Probably for Animation? Explosion radius or maybe flying back up to full height
Circle of Fire - 0.5 <- Probably for Animation? Putting staff back into normal position
Deep Freeze - 1.0 <- BIG DEAL! Why? Typo? They want it to be a 1 second "instant" cast? No animation for it!
Frost Nova - 0.6 <- Why you can't use Frost Nova I for escape. .8 second cast + .6 second follow > 1 second stun and 4 second 10% snare. Probably the time it takes for him to stand up again (animation).
Rain of Ice - 0.9 <- For Animation, put hand back down. Not a big deal since it is a .1 second cast and the rain takes .9 seconds to fall so that's probably why
--------- UB ---------
Venom Spit - 0.5
Bestial Wrath - 0.5 <- Why the ability is usless. It's only a .5 cast, but for 10% of the duration you stand there like an idiot
Foul Grasp - NONE!!!! This is probably why you can break Grasp (a feature I've never assumed was intentional because you can't issue movement commands since you have an Immobile buff). Should be 2.0 seconds or at least 0.1. I will also bitch and moan here that Foul Grasp should be channeled and if it gets interrupted or broken the stunned character should be able to move again. In fact, this is what it looks like should happen:
Code: c++
- function EndGraspCancel(def, unit) #LOG("*DEBUG: Ending foul grasp")
- unit.Callbacks.OnWeaponFire:Remove(EndGrasp)
- unit.Callbacks.OnKilled:Remove(EndGrasp)
- unit.Callbacks.OnStunned:Remove(EndGrasp)
- unit.Callbacks.OnFrozen:Remove(EndGrasp)
- unit.Callbacks.OnMotionHorzEventChange:Remove(Moved)
- unit.Callbacks.OnAbilityBeginCast:Remove(EndGraspCancel)
- local target = unit.AbilityData.FoulGraspTarget
- if target and not target:IsDead() then # Why does this not occur!
- Buff.RemoveBuff(target, 'Immobile')
- Buff.RemoveBuff(target, 'HEPA01FoulGraspStun01')
- if Buff.HasBuff(target, 'WeaponDisable') then
- Buff.RemoveBuff(target, 'WeaponDisable')
- end
- target.Callbacks.OnKilled:Remove(EndGrasp)
- end
--------- Reg ---------
Snipe - .5 <- to stand back up
Mark of the Betrayer - .9 <- Possibly similar to Rain of Ice. It's a .1 second cast time but they want it to "act" like a 1 second ability cast
Angelic Fury - 1.5 <- Animation Enable
Angelic Fury Off - 1.0 <- Animation Disable
Explosive Mine - NONE <- probably should be .1
--------- Oak ---------
Shield - .7
Penitence - .7
Surge of Faith - .5
Raise Dead Ward - .5
--------- Occ ---------
ChainLighting - .2 <- Probably animation (putting hand back down)
Blast Off! - .25
Ball Lightning - .86 <- Maybe animation? But why should Occ care about Ball animation?
BrainStorm - .28 <- Probably animation (waving wand)
--------- QoT ---------
Summon Shamblers - .1
Mulch - .5 <- Probably animation (black curls)
Uproot - 1.0 <- no wonder this ability sucks
Ground Spikes - 1.5 <- Animation isn't that long
Spikes Wave - 1.0 <- Probalby animation
Bramble Shield - 1.5 <- Possibly "balance" since it is an instant-cast. But shouldn't be that long
-------- Rook --------
Hammer Slam - .5 <- Animation
Boulder Roll - .5 <- Animation
Struct Trans - NONE! - Which is good, we want to be able to cancel it with a movement command (unlike grasp... and note that when you cancel Struct you don't continue to deal damage)
Power of the Tower - NONE - could make .1 for consistency but the animation of the tower is seperate
--------- Sed ---------
Pounce - 1.2 <- why you stand there like an idiot after pouncing
Horn of the Yeti - .5
Heal - .5
Silence - .5
--------- Ereb ---------
Bite - 1.0
Mass Charm - 1.0
Mist - NONE <- Not an issue. Entering mist he is stuck anyway, exiting he should be free to move. Maybe make it .1 for consistency
Batswarm - NONE <- how much I would love to make this 4.0 seconds
it should probably be left as-is or .1 for consistency
------------
Discuss. In general, I'm in favor of a wide-spread decrease in FollowThroughTime. It's extremely frustrating and I feel that it is quite stupid. It also is really quite asymetrical (UB has virtually no FollowThrough, DA can't use WarpStrike properly on a running target unless he is much faster, but Erebus suffers really bad FollowThrough on Bite and Charm).
For proper animation, I understand why there is slight follow-through on certain abilities, but I again, think that lowering follow-through for the majority of abilities would result in a much more fluid player experience.