waaaks!
Zinctified
- Reaction score
- 255
Well, I really don't need to play multiplayer if I wanted to create videos, as long as there are players out there that saves their replay files and submit it here, then there will be no problem at all.
* Fixed Anger Bomb for exploding the units even though Anger Bomb is not the source
* Changed Impaling Fury Icon
* Changed Hero Bonus Constants
* Illusory Warrior now instantly creates Illusions
* Cleave is now unable to damage on structures nor trigger on structures
* Added Knockback on Leap which was stated on tooltip
* Reduced damage on False Reality
* Changed Skin and Icon of Mirage Heroine
* Impaling Fury now doesn't deal damage on Structures
* Supreme Strength now doesn't scale the Jungle Giant
* Fixed Impale based spell from stacking from each other
* Recoded Impale System
* Fixed the rare bug on Impale based spell
* Changed Barrage to Hunted Arrow for Deadeye
* Fixed Grave Robber Tooltip
* Fixed Impale Based spell not stopping when casted out of map bounds
* Fixed Whirlwind not stopping when casted out of map bounds
* Improved Geodart reacting on flying units.
* Changed some parts of the terrain, mostly on deep water areas.
* Added ultimate ability to Jonadrian: Divide and Combine (idea by Zack1996)
private function H2I takes handle h returns integer
return GetHandleId(h)
endfunction
Realms of the Genesis
Version 3
Change Log
* Fixed Anger Bomb for exploding the units even though Anger Bomb is not the source.
* Changed Impaling Fury Icon.
* Changed Hero Bonus Constants.
* Illusory Warrior now instantly creates Illusions.
* Cleave is now unable to damage on structures nor trigger on structures.
* Added Knockback on Leap which was stated on tooltip.
* Reduced damage on False Reality.
* Changed Skin and Icon of Mirage Heroine.
* Impaling Fury now doesn't deal damage on Structures.
* Supreme Strength now doesn't scale the Jungle Giant.
* Fixed Impale based spell from stacking from each other.
* Recoded Impale System.
* Fixed the rare bug on Impale based spell.
* Changed Barrage to Hunted Arrow for Deadeye.
* Fixed Grave Robber Tooltip.
* Fixed Impale Based spell not stopping when casted out of map bounds.
* Fixed Whirlwind not stopping when casted out of map bounds.
* Improved Geodart reacting on flying units.
* Changed some parts of the terrain, mostly on deep water areas.
* Fixed Strouf and Base Capture Bug.
* Changed Upgrade Cost on Training Ranged Sharpshooters and Increasing Range Units.
* Changed Homing pick radius from 200 to 250.
* Homing now shows area of effect.
* Added ultimate ability to Bato: Valley Crush.
* Added ultimate ability to Jonadrian: Divide and Combine (idea by Zack1996).
* Temporarily removed abilities on Bosses (Ancient Guardian and Strouf).
* Changed Icon on Supreme Strength.
lolMaybe you should make it like, create some trench and make enemies slide into it. Then Jungle Giant can use Earth Slam and hit lots of people.
scope DivideandCombine initializer init
globals
private constant integer spell = 039;A00B039;
endglobals
//Land - 1
//Grass - 2
//Water - 3
//***************************************************
//* Sand Strike - Starting Point
//* Earth
//* Bombards the target area with stones, dealing
//* 40/50/60 area damage on collision and dealing
//* 70/80/90 area damage on ground impact.
//***************************************************
globals
private constant string ssfx = "abilities\\weapons\\DemolisherMissile\\DemolisherMissile.mdl"
private constant string ssmodel = "Abilities\\Weapons\\AncientProtectorMissile\\AncientProtectorMissile.mdl"
endglobals
private struct ssCollider extends xecollider
unit c
real tx
real ty
method onUnitHit takes unit u returns nothing
local xedamage xe
local integer l = GetUnitAbilityLevel(.c,spell)
if IsUnitEnemy(u,GetOwningPlayer(.c)) and GetWidgetLife(u) > 0.405 then
set xe = xedamage.create()
set xe.dtype = DTEARTH
call xe.factor(UNIT_TYPE_STRUCTURE,0.5)
call xe.damageAOE(.c,.x,.y,200.0,30.0 + l * 10)
call xe.destroy()
if not IsUnitType(u,UNIT_TYPE_STRUCTURE) then
call UnitStun(u,.c,0.1)
endif
endif
endmethod
method loopControl takes nothing returns nothing
local real dis = SquareRoot((.tx-.x)*(.tx-.x) + (.ty-.y)*(.ty-.y))
if dis < 50.0 then
call .terminate()
endif
endmethod
method onDestroy takes nothing returns nothing
local xedamage xe = xedamage.create()
local integer l = GetUnitAbilityLevel(.c,spell)
call ShakeCamera(GetOwningPlayer(.c),5)
set xe.dtype = DTEARTH
call xe.factor(UNIT_TYPE_STRUCTURE,0.5)
call xe.damageAOE(.c,.x,.y,200.0,60.0 + l * 10)
call xe.destroy()
call DestroyEffect(AddSpecialEffect(ssfx,.x,.y))
endmethod
endstruct
private struct sandStrike
unit ssc
real ssx
real ssy
integer ssn = 0
static method SandStrikeChild takes nothing returns nothing
local timer t = GetExpiredTimer()
local sandStrike ss = GetTimerData(t)
local real x = GetUnitX(ss.ssc)
local real y = GetUnitY(ss.ssc)
local real rana = I2R(GetRandomInt(0,360))
local real tx = ss.ssx + I2R(GetRandomInt(0,400)) * Cos(rana)
local real ty = ss.ssy + I2R(GetRandomInt(0,400)) * Sin(rana)
local ssCollider xe
if ss.ssn < 10 then
set ss.ssn = ss.ssn + 1
set xe = ssCollider.create(x,y,rana)
set xe.fxpath = ssmodel
set xe.direction = rana
set xe.collisionSize = 75.0
set xe.speed = 100.
set xe.acceleration = 600.
set xe.maxSpeed = 2000.0
set xe.minSpeed = 550.
set xe.angleSpeed = 5.0
set xe.expirationTime = 5.0
call xe.setTargetPoint(tx,ty)
set xe.c = ss.ssc
set xe.tx = tx
set xe.ty = ty
else
call ReleaseTimer(t)
call ss.destroy()
endif
set t = null
endmethod
static method create takes unit c, real tx, real ty returns sandStrike
local sandStrike ss = sandStrike.allocate()
local timer t = NewTimer()
set ss.ssc = c
set ss.ssx = tx
set ss.ssy = ty
call TimerStart(t,0.16,true,function sandStrike.SandStrikeChild)
call SetTimerData(t,ss)
set t = null
return ss
endmethod
endstruct
//***************************************************
//* Sand Strike - Ending Point
//***************************************************
//***************************************************
//* Gaia's Trail - Starting Point
//* Plant
//* Sends missiles from plant extracts to the
//* target point, dealing 30/40/50 damage on
//* collision and entangles them on the ground.
//* Deals 60 area damage on ground impact.
//***************************************************
globals
private constant string gtfx = "Units\\NightElf\\Wisp\\WispExplode.mdl"
private constant string gtmodel = "Abilities\\Weapons\\KeeperGroveMissile\\KeeperGroveMissile.mdl"
private constant integer gtabilid = 039;A01N039;
private constant integer gtBuffId = 039;B004039;
private constant string gtorder = "entanglingroots"
private aBuffType gtBuff
endglobals
private struct gtCollider extends xecollider
unit c
real tx
real ty
method onUnitHit takes unit u returns nothing
local xedamage xe
local integer l = GetUnitAbilityLevel(.c,spell)
if IsUnitEnemy(u,GetOwningPlayer(.c)) and GetWidgetLife(u) > 0.405 then
set xe = xedamage.create()
set xe.dtype = DTPLANT
call xe.factor(UNIT_TYPE_STRUCTURE,0.5)
call xe.damageTarget(.c,u,20.0+10*l)
call xe.destroy()
if not IsUnitType(u,UNIT_TYPE_STRUCTURE) then
call ABuffApply(gtBuff,u,.c,1.5+0.5*l,l,0)
endif
endif
endmethod
method loopControl takes nothing returns nothing
local real dis = SquareRoot((.tx-.x)*(.tx-.x) + (.ty-.y)*(.ty-.y))
if dis < 50.0 then
call .terminate()
endif
endmethod
method onDestroy takes nothing returns nothing
local xedamage xe = xedamage.create()
call ShakeCamera(GetOwningPlayer(.c),5)
set xe.dtype = DTPLANT
call xe.factor(UNIT_TYPE_STRUCTURE,0.5)
call xe.damageAOE(.c,.x,.y,200.0,60.0)
call xe.destroy()
call DestroyEffect(AddSpecialEffect(gtfx,.x,.y))
endmethod
endstruct
private struct gaiasTrail
unit gtc
real gtx
real gty
integer gtn = 0
static method gaiasTrailChild takes nothing returns nothing
local timer t = GetExpiredTimer()
local gaiasTrail gt = GetTimerData(t)
local real x = GetUnitX(gt.gtc)
local real y = GetUnitY(gt.gtc)
local real rana = I2R(GetRandomInt(0,360))
local real tx = gt.gtx + I2R(GetRandomInt(0,400)) * Cos(rana)
local real ty = gt.gty + I2R(GetRandomInt(0,400)) * Sin(rana)
local gtCollider xe
if gt.gtn < 10 then
set gt.gtn = gt.gtn + 1
set xe = gtCollider.create(x,y,rana)
set xe.fxpath = gtmodel
set xe.direction = rana
set xe.collisionSize = 75.0
set xe.speed = 100.
set xe.acceleration = 600.
set xe.maxSpeed = 2000.0
set xe.minSpeed = 550.
set xe.angleSpeed = 5.0
set xe.expirationTime = 5.0
call xe.setTargetPoint(tx,ty)
set xe.c = gt.gtc
set xe.tx = tx
set xe.ty = ty
else
call ReleaseTimer(t)
call gt.destroy()
endif
set t = null
endmethod
static method create takes unit c, real tx, real ty returns gaiasTrail
local gaiasTrail gt = gaiasTrail.allocate()
local timer t = NewTimer()
set gt.gtc = c
set gt.gtx = tx
set gt.gty = ty
call TimerStart(t,0.16,true,function gaiasTrail.gaiasTrailChild)
call SetTimerData(t,gt)
set t = null
return gt
endmethod
endstruct
private function gtEntangle takes aBuff eb returns nothing
local xecast xc = xecast.createA()
set xc.abilityid = gtabilid
set xc.owningplayer = GetOwningPlayer(eb.caster)
set xc.level = eb.level
set xc.orderstring = gtorder
set xc.recycledelay = 2.0
call xc.castOnTarget(eb.target.u)
endfunction
private function gtClean takes aBuff eb returns nothing
call UnitRemoveAbility(eb.target.u,gtBuffId)
endfunction
//***************************************************
//* Gaia's Trail - Ending Point
//***************************************************
//***************************************************
//* Quick Sand - Starting Point
//* Water
//* Enchants the target point with water and sand,
//* creating a quick sand that sucks enemy units
//* near 600 range from it, dealing damage on enemy
//* units that comes within 300 range of the quick
//* sand. Deals 80/100/120 per second.
//***************************************************
globals
private constant real qsDur = 5.0
private constant real qsTick = 0.025
private constant string qsMDL = "Abilities\\Spells\\Human\\FlameStrike\\FlameStrikeTarget.mdl"
endglobals
private struct quickSand
unit c
real tx
real ty
real elapsed
integer l
static method qsPull takes nothing returns boolean
local timer t = GetExpiredTimer()
local quickSand d = GetTimerData(t)
local group g = NewGroup()
local unit u
local real px
local real py
local real a
local xedamage xe = xedamage.create()
set xe.dtype = DTWATER
set xe.exception = UNIT_TYPE_STRUCTURE
call xe.damageAOE(d.c,d.tx,d.ty,300.0,(20 * d.l + 60) * qsTick)
call xe.destroy()
call GroupEnumUnitsInRange(g,d.tx,d.ty,600.0,null)
set d.elapsed = d.elapsed + qsTick
loop
set u = FirstOfGroup(g)
exitwhen u == null
if IsUnitEnemy(u,GetOwningPlayer(d.c)) and GetWidgetLife(u) > 0.405 and not IsUnitType(u,UNIT_TYPE_STRUCTURE) then
set a = Atan3(GetUnitX(u),GetUnitY(u),d.tx,d.ty)
set px = GetUnitX(u) + 5 * Cos(a)
set py = GetUnitY(u) + 5 * Sin(a)
call SetUnitX(u,px)
call SetUnitY(u,py)
endif
call GroupRemoveUnit(g,u)
endloop
call ReleaseGroup(g)
set g = null
set u = null
if d.elapsed >= qsDur then
call ReleaseTimer(t)
call d.destroy()
endif
return true
endmethod
private method onDestroy takes nothing returns nothing
set .elapsed = 0
endmethod
static method create takes unit c, real tx, real ty, integer l returns quickSand
local quickSand d = quickSand.allocate()
local timer t = NewTimer()
set d.c = c
set d.tx = tx
set d.ty = ty
set d.l = l
call StartTimedEffect(AddSpecialEffect(qsMDL,d.tx,d.ty),5.0)
call TimerStart(t,qsTick, true, function quickSand.qsPull)
call SetTimerData(t,d)
call ShakeCamera(GetOwningPlayer(c),5)
set t = null
return d
endmethod
endstruct
//***************************************************
//* Quick Sand - Ending Point
//***************************************************
//***************************************************
//* Tsunami - Starting Point
//* Water
//* Conjures a Tsunami from Jon to the target point,
//* dragging enemy units near the tsunami, dealing
//* 100/200/300 damage per second on drag, slows and deals
//* 100 area damage on destruction.
//***************************************************
globals
private constant integer tdspell = 039;A01O039;
private constant integer tBuffId = 039;B00G039;
private constant string torder = "slow"
private constant string tmdl = "Abilities\\Spells\\Other\\CrushingWave\\CrushingWaveMissile.mdl"
private constant string tsfx = "Abilities\\Spells\\Other\\CrushingWave\\CrushingWaveDamage.mdl"
private aBuffType tBuff
private xecast txecast
endglobals
private struct tsCollider extends xecollider
unit c
integer l
real a
method onUnitHit takes unit u returns nothing
if IsUnitEnemy(u,GetOwningPlayer(.c)) and GetWidgetLife(u) > 0.405 and not IsUnitType(u,UNIT_TYPE_STRUCTURE) and not IsKnockedBack(u) then
call KnockbackTarget(.c,u,.a,600,600,false,false,false)
call ShakeCamera(GetOwningPlayer(u),10)
call ShakeCamera(GetOwningPlayer(.c),5)
endif
endmethod
method loopControl takes nothing returns nothing
local xedamage xe = xedamage.create()
set xe.dtype = DTWATER
set xe.exception = UNIT_TYPE_STRUCTURE
call xe.useSpecialEffect(tsfx,"chest")
call xe.damageAOE(.c,.x,.y,300.0,XE_ANIMATION_PERIOD*(100*.l))
call xe.destroy()
endmethod
private method onDestroy takes nothing returns nothing
local xedamage xd = xedamage.create()
local group g = NewGroup()
local unit u
set xd.dtype = DTWATER
set xd.exception = UNIT_TYPE_STRUCTURE
call xd.useSpecialEffect(tsfx,"chest")
call xd.damageAOE(.c,.x,.y,500.0,100.0)
call GroupEnumUnitsInRange(g,.x,.y,500.0,null)
loop
set u = FirstOfGroup(g)
exitwhen u == null
if IsUnitEnemy(u,GetOwningPlayer(.c)) and GetWidgetLife(u) > 0.405 and not IsUnitType(u,UNIT_TYPE_STRUCTURE) then
call ABuffApply(tBuff,u,.c,0.5+0.5*.l,.l,0)
endif
call GroupRemoveUnit(g,u)
endloop
call ReleaseGroup(g)
set g = null
set u = null
call xd.destroy()
endmethod
endstruct
private struct tsunami
static method create takes unit c, real tx, real ty, integer l returns tsunami
local tsunami ts = tsunami.allocate()
local real x = GetUnitX(c)
local real y = GetUnitY(c)
local real a = Atan3(x,y,tx,ty)
local tsCollider xe = tsCollider.create(x,y,a)
call ShakeCamera(GetOwningPlayer(c),5)
set xe.fxpath = tmdl
set xe.expirationTime = 1200. / 600.
set xe.collisionSize = 300.0
set xe.speed = 600.0
set xe.z = 50.0
set xe.scale = 1.25
set xe.c = c
set xe.l = l
set xe.a = a
return ts
endmethod
endstruct
private function tSlow takes aBuff eb returns nothing
local xecast xe = xecast.createA()
set xe.abilityid = tdspell
set xe.orderstring = torder
set xe.owningplayer = GetOwningPlayer(eb.caster)
set xe.level = eb.level
call xe.castOnTarget(eb.target.u)
endfunction
private function tClean takes aBuff eb returns nothing
call UnitRemoveAbility(eb.target.u,tBuffId)
endfunction
//***************************************************
//* Tsunami - Ending Point
//***************************************************
//***************************************************
//* Tree of Life
//* None
//* Creates the Tree of Life and heals nearby
//* friendlies for 10/20/30 seconds.
//***************************************************
globals
private constant integer tlunit = 039;e005039;
private constant string tlsfx = "Abilities\\Spells\\NightElf\\Tranquility\\Tranquility.mdl"
endglobals
private struct treeOfLife
unit d
static method dead takes nothing returns boolean
local timer t = GetExpiredTimer()
local treeOfLife tl = GetTimerData(t)
call KillUnit(tl.d)
call ReleaseTimer(t)
call tl.destroy()
set t = null
return true
endmethod
static method create takes unit c, real tx, real ty, integer l returns treeOfLife
local treeOfLife tl = treeOfLife.allocate()
local timer t = NewTimer()
call ShakeCamera(GetOwningPlayer(c),5)
set tl.d = CreateUnit(GetOwningPlayer(c),tlunit,tx,ty,0.0)
call TimerStart(t,10.0*l,false,function treeOfLife.dead)
call StartTimedEffect(AddSpecialEffect(tlsfx,tx,ty),10.0*l)
call SetTimerData(t,tl)
set t = null
return tl
endmethod
endstruct
//***************************************************
//* Tree of Life - Ending Point
//***************************************************
//***************************************************
//* Acid Terror
//* Plant
//* Enchants the ground with acid, creating explosions
//* of acid in random points near the target that deals
//* 50/100/150 area damage.
//***************************************************
globals
private constant string atsfx1 = "Abilities\\Spells\\Other\\AcidBomb\\BottleMissile.mdl"
private constant string atsfx2 = "Objects\\Spawnmodels\\Naga\\NagaBlood\\NagaBloodWindserpent.mdl"
endglobals
private struct acidTerror
unit c
real tx
real ty
integer l
integer ctr
static method child takes nothing returns boolean
local timer t = GetExpiredTimer()
local xedamage xe = xedamage.create()
local acidTerror at = GetTimerData(t)
local real px = at.tx + I2R(GetRandomInt(0,400)) * Cos(I2R(GetRandomInt(0,360)))
local real py = at.ty + I2R(GetRandomInt(0,400)) * Sin(I2R(GetRandomInt(0,360)))
set xe.dtype = DTPLANT
set xe.exception = UNIT_TYPE_STRUCTURE
call xe.damageAOE(at.c,px,py,100.0,50*at.l)
call ShakeCamera(GetOwningPlayer(at.c),5)
call DestroyEffect(AddSpecialEffect(atsfx1,px,py))
call DestroyEffect(AddSpecialEffect(atsfx2,px,py))
call xe.destroy()
set at.ctr = at.ctr + 1
if at.ctr >= 50 then
set at.ctr = 0
call ReleaseTimer(t)
call at.destroy()
endif
set t = null
return true
endmethod
static method create takes unit c, real tx, real ty, integer l returns acidTerror
local acidTerror at = acidTerror.allocate()
local timer t = NewTimer()
set at.c = c
set at.tx = tx
set at.ty = ty
set at.l = l
call TimerStart(t,0.1,true,function acidTerror.child)
call SetTimerData(t,at)
set t = null
return at
endmethod
endstruct
//***************************************************
//* Acid Terror - Ending Point
//***************************************************
private struct data
unit c
real tx
real ty
static method create takes unit c, integer e1, integer e2, real tx, real ty returns data
local data d = data.allocate()
local sandStrike ss
local gaiasTrail gt
local quickSand qs
local tsunami ts
local treeOfLife tl
local acidTerror at
local integer l = GetUnitAbilityLevel(c,spell)
set d.c = c
set d.tx = tx
set d.ty = ty
if e1 == 1 and e2 == 1 then
set ss = sandStrike.create(d.c,d.tx,d.ty) // sand + sand
elseif (e1 == 2 and e2 == 1) or (e1 == 1 and e2 == 2) then
set gt = gaiasTrail.create(d.c,d.tx,d.ty) // sand + grass
elseif (e1 == 3 and e2 == 1) or (e1 == 1 and e2 == 3) then
set qs = quickSand.create(d.c,d.tx,d.ty,l) // sand + water
elseif e1 == 3 and e2 == 3 then
set ts = tsunami.create(d.c,d.tx,d.ty,l) // water + water
elseif (e1 == 2 and e2 == 3) or (e1 == 3 and e2 == 2) then
set tl = treeOfLife.create(d.c,d.tx,d.ty,l)// grass + water
elseif e1 == 2 and e2 == 2 then
set at = acidTerror.create(d.c,d.tx,d.ty,l)// grass + grass
endif
return d
endmethod
endstruct
private function act takes nothing returns nothing
local unit c = SpellEvent.CastingUnit
local real x = GetUnitX(c)
local real y = GetUnitY(c)
local real x2 = SpellEvent.TargetX
local real y2 = SpellEvent.TargetY
local integer e1 = 0
local integer e2 = 0
local data d
if IsTerrainPathingType(x,y,TERRAIN_PATHING_LAND) then
if GetTerrainType(x,y) == 039;Zdrt039; or GetTerrainType(x,y) == 039;Zdtr039; or GetTerrainType(x,y) == 039;Zbks039; or GetTerrainType(x,y) == 039;Zbkl039; or GetTerrainType(x,y) == 039;Zsan039; or GetTerrainType(x,y) == 039;Ztil039; then
set e1 = 1
elseif GetTerrainType(x,y) == 039;Zdrg039; or GetTerrainType(x,y) == 039;Zgrs039; or GetTerrainType(x,y) == 039;Zvin039; then
set e1 = 2
endif
elseif IsTerrainPathingType(x,y,TERRAIN_PATHING_SHALLOW) then
set e1 = 3
elseif IsTerrainPathingType(x,y,TERRAIN_PATHING_DEEP) then
set e1 = 4
endif
if IsTerrainPathingType(x2,y2,TERRAIN_PATHING_LAND) then
if GetTerrainType(x2,y2) == 039;Zdrt039; or GetTerrainType(x2,y2) == 039;Zdtr039; or GetTerrainType(x2,y2) == 039;Zbks039; or GetTerrainType(x2,y2) == 039;Zbkl039; or GetTerrainType(x2,y2) == 039;Zsan039; or GetTerrainType(x2,y2) == 039;Ztil039; then
set e2 = 1
elseif GetTerrainType(x2,y2) == 039;Zdrg039; or GetTerrainType(x2,y2) == 039;Zgrs039; or GetTerrainType(x2,y2) == 039;Zvin039; then
set e2 = 2
endif
elseif IsTerrainPathingType(x2,y2,TERRAIN_PATHING_SHALLOW) then
set e2 = 3
elseif IsTerrainPathingType(x,y,TERRAIN_PATHING_DEEP) then
set e2 = 4
endif
set d = data.create(c,e1,e2,x2,y2)
set c = null
endfunction
private function init takes nothing returns nothing
call RegisterSpellFinishResponse(spell,act)
set gtBuff = aBuffType.create()
set gtBuff.eventCreate = gtEntangle
set gtBuff.eventCleanup = gtClean
set tBuff = aBuffType.create()
set tBuff.eventCreate = tSlow
set tBuff.eventCleanup = tClean
call XE_PreloadAbility(gtabilid)
call XE_PreloadAbility(tdspell)
endfunction
endscope
fanboys (anyone?)
What?Anyway, I suggest making the heroes, the fixing them all
Realms of the Genesis
Version 3
Change Log
* Fixed Barbarian Icon not showing up in the multiboard.
* Fixed a bug on Impale System not working on heroes that die with it.
* Fixed Illusory Warrior tool tip.
* Fixed Ground Stomp not stunning enemy units.
* Changed Fire Ball Explode icon for optimized visualization.
* Reduced collision detect on Force Throw from 60 to 50.
* Optimized some srcipts in the map that may cause lag.
* Increased damage on Valley Scatter.
* Recoded Sinner's Spree.
* Improved Damage Show system, showing red damage when you receive damage.
* Nerfed Divide and Combine.
* Added Message on Divide and Combine when successfully cast.
* Reduced Mana Cost and Cooldown on Illusory Warrior.
I think he means that he lost the open version for RotG: Reborn (the second one).oh yeah, but i freakin lost my open version, and the last version sucks
Apocalypse
The Revelation
Fire
A Sage that was never believed by the people, who turned to mastering
darkness and evil, learning dark magics and the mysteries of the void.
Promising himself that what he believed is true. Now that he is empowered
by the darkness, he will prove the people that he was true about his words,
words that once scared the people "The End of the World" which is possible
for him to do.
Inferno - Calls down a fiery meteor from the sky that strikes on the ground,
sharing the damage dealt to enemy units affected by the meteor, decreasing
the initial damage by 10 per enemy unit affected and stun duration by 0.10.
90/180/270/360 damage - 1.8 seconds initial stun.
Traumatic Blow - Casts some kind of dark mind magic to the enemy unit,
throwing enemy units near the targeted unit, sharing Apocalpyse's
dark and apocalyptic experiences to the target, increasing the target's
intelligence equal to Apocalypse's intelligence but slows and damages it
with the shared intelligence multiplied by 2 for 2 seconds, dealing
bonus damage.
40/80/120/160 damage.
Mind Shatter - If the target has higher intelligence than Apocalypse, he is
able to borrow it for 5 seconds, while deals damage if the target has
lower intelligence.
40/80/120/160 damage.
25%/50%/75%/100% intelligence stealed.
Wisdom Bomb - Summons a wisdom-based bomb to a target point that detonates
after 1 second. Deals damage in the location equal to Apocalypse's
Intelligence multiplied by a number. With the great force created by the bomb,
enemy units affected will be thrown and will lose some mana.
1/2/3/4 multiplier.
15%/30%/45%/60% mana burn.
Armageddon (Ultimate) - Apocalypse proves his witnesses that the end of the world in a
near future is possible, calling down fiery meteors from the sky that crashes
to the ground, dealing area damage and igniting affected units with the fires
of wisdom. Fires of Wisdom deals damage equal to Apocalypse's intelligence
per second, for 5 seconds.
55/110/165 damage.
Default Ability:
Fear of the Revelation - With Apocalypse's presence, enemy units near him
will feel pressure, making them unable to concentrate in battle having them
to miss their target for 15% on attack.