Array
(
[scriptVersion] => 8
[oeValues] => Array
(
[auto] => Array
(
)
[Art] => ReplaceableTextures\CommandButtons\BTNOgre.blp
[turnRate] => 3
[dmgplus1] => 5725
[bldtm] => 1
[goldcost] => 3750
[sides1] => 1
[manaN] => 50
[acquire] => 800
[upgrades] => Array
(
)
[Upgrade] => Array
(
)
[Name] => Cho'Gall
[weapTp1] => missile
[MissileHoming] => 1
[file] => units\creeps\Ogre\Ogre.mdl
[uberSplat] => YTDB
[Missilespeed] => 1500
[dice1] => 1
[RngBuff1] => 250
[regenMana] => 1
[modelScale] => 0.9
[rangeN1] => 900
[atkType1] => siege
[cool1] => 2
[Ubertip] => Leader of the Twilight Hammer, a powerful ogre mage adept in both brawn and brains during combat.
[abilList] => Array
(
)
[moveHeight] => 14
[buildingShadow] => Array
(
)
[targs1] => Array
(
)
[weapsOn] => 1
)
[settings] => Array
(
[balanceTip] => Array
(
)
[abil_factor] => 0.60
[author] => Moppy
[alpha] => 255
[authorDisplay] => |c006969FFMoppy|r
[version] => 1.0
[element] => darkness
[rarity] => unique
)
[effects] => Array
(
[0] => Array
(
[x] => -1.12281
[y] => 3.24981
[z] => -25.6
[scale] => 0.35
[rot] => 1.5708
[file] => Doodads\Icecrown\Rocks\Icecrown_Crystal\Icecrown_Crystal0.mdl
[red] => 255
[green] => 1
[blue] => 255
[alpha] => 255
[pitch] => -0.7
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[1] => Array
(
[x] => 1.29589
[y] => 4.78377
[z] => -32
[scale] => 0.35
[rot] => 0.785398
[file] => Doodads\Icecrown\Rocks\Icecrown_Crystal\Icecrown_Crystal0.mdl
[red] => 255
[green] => 1
[blue] => 255
[alpha] => 255
[pitch] => -0.7
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[2] => Array
(
[x] => 0.636134
[y] => 3.94536
[z] => -51.2
[scale] => 0.35
[rot] => 0
[file] => Doodads\Icecrown\Rocks\Icecrown_Crystal\Icecrown_Crystal0.mdl
[red] => 255
[green] => 1
[blue] => 255
[alpha] => 255
[pitch] => -0.7
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[3] => Array
(
[x] => 0.181338
[y] => 3.70784
[z] => -38.4
[scale] => 0.35
[rot] => 2.3562
[file] => Doodads\Icecrown\Rocks\Icecrown_Crystal\Icecrown_Crystal0.mdl
[red] => 255
[green] => 1
[blue] => 255
[alpha] => 255
[pitch] => -0.7
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[4] => Array
(
[x] => 0.170726
[y] => 1.58881
[z] => -51.2
[scale] => 0.35
[rot] => 3.14159
[file] => Doodads\Icecrown\Rocks\Icecrown_Crystal\Icecrown_Crystal0.mdl
[red] => 255
[green] => 1
[blue] => 255
[alpha] => 255
[pitch] => -0.7
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[5] => Array
(
[x] => -41.8664
[y] => -42.2775
[z] => -32
[scale] => 0.595
[rot] => 5.41052
[file] => Doodads\Icecrown\Props\IceTorch\IceTorch.mdl
[red] => 255
[green] => 255
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[6] => Array
(
[x] => 45.3393
[y] => -42.0645
[z] => -32
[scale] => 0.595
[rot] => 5.41052
[file] => Doodads\Icecrown\Props\IceTorch\IceTorch.mdl
[red] => 255
[green] => 255
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[7] => Array
(
[x] => -5.5032
[y] => -36.5204
[z] => 0
[scale] => 0.35
[rot] => 5.49779
[file] => Doodads\LordaeronSummer\Props\SkullPile\SkullPile1.mdl
[red] => 255
[green] => 255
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[8] => Array
(
[x] => 42.4768
[y] => -39.6136
[z] => 0
[scale] => 0.35
[rot] => 4.01426
[file] => Doodads\LordaeronSummer\Props\SkullPile\SkullPile2.mdl
[red] => 255
[green] => 255
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[9] => Array
(
[x] => -40.4931
[y] => -48.3437
[z] => 0
[scale] => 0.35
[rot] => 4.71239
[file] => Doodads\LordaeronSummer\Props\SkullPile\SkullPile3.mdl
[red] => 255
[green] => 255
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[10] => Array
(
[x] => 16.6671
[y] => -32.9287
[z] => 0
[scale] => 0.35
[rot] => 3.49066
[file] => Doodads\LordaeronSummer\Props\SkullPile\SkullPile2.mdl
[red] => 255
[green] => 255
[blue] => 255
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
[11] => Array
(
[x] => -0.422924
[y] => 0.867802
[z] => -76.8
[scale] => 0.7
[rot] => 1.5708
[file] => Doodads\Cityscape\Props\FountainRuined\FountainRuined.mdl
[red] => 75
[green] => 60
[blue] => 75
[alpha] => 255
[pitch] => 0
[advanced] => false
[animation] => Array
(
)
[aniSpeed] => 50
[pcolor] => 255
)
)
[dmgTable] => Array
(
)
[triggers] => Array
(
[0] => Array
(
[name] => On Attack
[code] => local integer randomSpellID = GetRandomInt(1, 100)
local unit towerunit = tower.getUnit()
local Unit c = Event.getTarget()
local Projectile p
if randomSpellID <= 40 then
call TriggerSleepAction(0.46)
call SFXAtUnit("Abilities\\Spells\\Orc\\WarStomp\\WarStompCaster.mdl", c.getUnit())
set p = Projectile.createFromUnitToUnit(moppy_cho_gall_slam_shot, tower, 1, 0, tower, c, true, false, false)
elseif randomSpellID <= 80 and not c.isImmune() then
call SetUnitAnimation(towerunit, "Spell - OgreMagi Only")
call TriggerSleepAction(0.66)
call SFXAtUnit("Abilities\\Spells\\Other\\Incinerate\\FireLordDeathExplode.mdl", c.getUnit())
call SFXAtUnit("Abilities\\Spells\\Undead\\DeathCoil\\DeathCoilSpecialArt.mdl", c.getUnit())
set p = Projectile.createFromUnitToUnit(moppy_cho_gall_spell_shot, tower, 1, 0, tower, c, true, false, false)
call QueueUnitAnimation(towerunit, "stand")
else
call SetUnitAnimation(towerunit, "Attack Slam - OgreLord Only")
call TriggerSleepAction(0.66)
call tower.getOwner().displayFloatingText("FEEL MY WRATH!", tower, 255, 100, 100)
call SFXAtUnit("Abilities\\Spells\\Orc\\WarStomp\\WarStompCaster.mdl", c.getUnit())
set p = Projectile.createFromUnitToUnit(moppy_cho_gall_slam_shot, tower, 1, 0, tower, c, true, false, false)
call SFXAtUnit("Abilities\\Spells\\Other\\Incinerate\\FireLordDeathExplode.mdl", c.getUnit())
call SFXAtUnit("Abilities\\Spells\\Undead\\DeathCoil\\DeathCoilSpecialArt.mdl", c.getUnit())
set p = Projectile.createFromUnitToUnit(moppy_cho_gall_spell_shot, tower, 1, 0, tower, c, true, false, false)
call QueueUnitAnimation(towerunit, "stand")
endif
[values] => Array
(
[visible] => true
[icon] => ReplaceableTextures\CommandButtons\BTNDeathPact.blp
[name] => Cho'Gall's Wrath
[short_explain] => Randomly casts one of two abilities on attack. Has a small chance to cast both simultaneously instead.
[ONATTACK_chance] => 1.0
[ONATTACK_chanceLevelAdd] => 0.0
[long_explain] => Cho'Gall will randomly cast one of the following abilities on attack:|n|n|cffFF8000Shattering Slam:|r |cffFFFF8040%|r chance, deals |cffFFFF8050%|r of Cho'Gall's attack damage in a |cffFFFF80200|r AoE, applying a |cffFFFF8030%|r slow for |cffFFFF803|r seconds|n|cffFF8000Shadowflame:|r |cffFFFF8040%|r chance, deals |cffFFFF805000|r spell damage in a |cffFFFF80200|r AoE, reducing armor by |cffFFFF805|r for |cffFFFF803|r seconds|n|nAdditionally, Cho'Gall has a |cffFFFF8020%|r chance to cast both |cffFF8000Shattering Slam|r and |cffFF8000Shadowflame|r simultaneously.|n|n|cffFF8000Level Bonus:|r|n|cffFFFF80+1%|r of Cho'Gall's attack damage (Shattering Slam)|n|cffFFFF80+100|r spell damage (Shadowflame)
)
)
[1] => Array
(
[name] => Header
[code] => globals
BuffType moppy_cho_gall_slow
BuffType moppy_cho_gall_armor_shred
BuffType moppy_cho_gall_ogre_rage
ProjectileType moppy_cho_gall_slam_shot
ProjectileType moppy_cho_gall_spell_shot
MultiboardValues moppy_cho_gall_stats
endglobals
function moppy_cho_gall_slam_throw takes Projectile p, Unit target returns nothing
local Tower tower = p.getCaster()
local integer lvl = tower.getLevel()
local real dmg = tower.getCurrentAttackDamageWithBonus()
local real AttackDmgBonus
local Iterate i = Iterate.overUnitsInRangeOfUnit(tower, TARGET_TYPE_CREEPS, target, 200)
if Event.isAttackDamageCritical() and tower.userReal < 1.59 then // To truly make it stop at 160 stacks, otherwise it's going to be 161
call Effect.createScaled("Abilities\\Spells\\NightElf\\BattleRoar\\RoarCaster.mdl", tower.getX(), tower.getY(), 0.0, 0.0, 1.0).setLifetime(1.0)
set tower.userReal = tower.userReal + 0.01
call tower.modifyProperty(MOD_DAMAGE_ADD_PERC, 0.01)
if tower.userReal == 0.3 then
call tower.modifyProperty(MOD_DMG_TO_HUMANOID, 0.25)
call tower.getOwner().displayFloatingText("NOBODY CAN STOP ME!", tower, 255, 100, 100)
call Effect.createSimpleOnUnit("Abilities\\Spells\\Orc\\Bloodlust\\BloodlustTarget.mdl", tower, "left hand") // Visual indicator for first upgrade
elseif tower.userReal == 0.6 then
call tower.modifyProperty(MOD_DMG_TO_MASS, 0.25)
call tower.getOwner().displayFloatingText("NOBODY CAN STOP ME!!", tower, 255, 100, 100)
elseif tower.userReal == 0.9 then
call tower.modifyProperty(MOD_ATK_CRIT_DAMAGE, 1.0)
call tower.getOwner().displayFloatingText("NOBODY CAN STOP ME!!!", tower, 255, 100, 100)
elseif tower.userReal == 1.2 then
call tower.modifyProperty(MOD_MULTICRIT_COUNT, 2)
call tower.getOwner().displayFloatingText("NOBODY CAN STOP ME!!!!", tower, 255, 100, 100)
endif
endif
loop
set target = i.next()
exitwhen target == 0
call tower.doAttackDamage(target, (dmg / 2) + ((dmg / 25) * lvl), tower.calcAttackMulticrit(0.0, 0.0, 0))
call moppy_cho_gall_slow.applyCustomTimed(tower, target, lvl, 3.0)
endloop
endfunction
function moppy_cho_gall_spell_throw takes Projectile p, Unit target returns nothing
local Tower tower = p.getCaster()
local integer lvl = tower.getLevel()
local real SpellCrit = tower.calcSpellCritNoBonus()
local real SpellDmgBonus
local Iterate i = Iterate.overUnitsInRangeOfUnit(tower, TARGET_TYPE_CREEPS, target, 200)
if SpellCrit > 1 and tower.userReal2 < 1.59 then // To truly make it stop at 160 stacks, otherwise it's going to be 161
call Effect.createScaled("Abilities\\Spells\\Other\\HowlOfTerror\\HowlCaster.mdl", tower.getX(), tower.getY(), 0.0, 0.0, 1.0).setLifetime(1.0)
set tower.userReal2 = tower.userReal2 + 0.01
call tower.modifyProperty(MOD_SPELL_DAMAGE_DEALT, 0.01)
if tower.userReal2 == 0.3 then
call tower.modifyProperty(MOD_DMG_TO_NATURE, 0.25)
call tower.getOwner().displayFloatingText("MY POWER RISES!", tower, 255, 100, 100)
call Effect.createSimpleOnUnit("Abilities\\Weapons\\IllidanMissile\\IllidanMissile.mdl", tower, "right hand").setColor(255, 1, 255, 255) // Visual indicator for first upgrade
elseif tower.userReal2 == 0.6 then
call tower.modifyProperty(MOD_DMG_TO_BOSS, 0.25)
call tower.getOwner().displayFloatingText("MY POWER RISES!!", tower, 255, 100, 100)
elseif tower.userReal2 == 0.9 then
call tower.modifyProperty(MOD_DEBUFF_RESISTANCE, 0.3)
call tower.getOwner().displayFloatingText("MY POWER RISES!!!", tower, 255, 100, 100)
elseif tower.userReal2 == 1.2 then
call tower.modifyProperty(MOD_SPELL_CRIT_DAMAGE, 2.0)
call tower.getOwner().displayFloatingText("MY POWER RISES!!!!", tower, 255, 100, 100)
endif
endif
loop
set target = i.next()
exitwhen target == 0
call tower.doSpellDamage(target, 5000 + (100 * lvl), tower.calcSpellCritNoBonus())
call moppy_cho_gall_armor_shred.applyCustomTimed(tower, target, lvl, 3.0)
endloop
endfunction
//Do not remove or rename this function!
//Put your initialization tasks here, this function will be called on map init
private function init takes nothing returns nothing
local Modifier s = Modifier.create()
local Modifier a = Modifier.create()
local Modifier r = Modifier.create()
set moppy_cho_gall_slow = BuffType.create(0.0, 0.0, false)
call s.addModification(MOD_MOVESPEED, -0.3, -0.006)
call moppy_cho_gall_slow.setBuffModifier(s)
call moppy_cho_gall_slow.setBuffIcon('@@0@@')
set moppy_cho_gall_slam_shot = ProjectileType.create(".mdl", 50, 5000)
call moppy_cho_gall_slam_shot.enableHoming(moppy_cho_gall_slam_throw, 0.0)
set moppy_cho_gall_armor_shred = BuffType.create(0.0, 0.0, false)
call a.addModification(MOD_ARMOR, -5.0, -0.1)
call moppy_cho_gall_armor_shred.setBuffModifier(a)
call moppy_cho_gall_armor_shred.setBuffIcon('@@1@@')
set moppy_cho_gall_spell_shot = ProjectileType.create(".mdl", 50, 5000)
call moppy_cho_gall_spell_shot.enableHoming(moppy_cho_gall_spell_throw, 0.0)
set moppy_cho_gall_ogre_rage = BuffType.create(0.0, 0.0, true)
call r.addModification(MOD_ATTACKSPEED, 0.5, 0.01)
call r.addModification(MOD_ATK_CRIT_CHANCE, 0.25, 0.005)
call r.addModification(MOD_SPELL_CRIT_CHANCE, 0.25, 0.005)
call moppy_cho_gall_ogre_rage.setBuffModifier(r)
call moppy_cho_gall_ogre_rage.setBuffIcon('@@2@@')
set moppy_cho_gall_stats = MultiboardValues.create(2)
call moppy_cho_gall_stats.setKey(0, "Attack Damage Bonus")
call moppy_cho_gall_stats.setKey(1, "Spell Damage Bonus")
endfunction
[values] => Array
(
[visible] => true
[icon] => ReplaceableTextures\CommandButtons\BTNOrbOfFire.blp
[name] => Cho's Dominance
[short_explain] => Critical hits permanently increase attack damage. Unlocks new abilities as power grows.
[long_explain] => Each time Cho'Gall lands a critical hit, he permanently gains |cffFFFF80+1%|r bonus attack damage, up to a maximum of |cffFFFF80160|r stacks. As Cho'Gall's bonus attack damage increases, he will unlock additional abilities, further enhancing his combat prowess.|n|nAt |cffFFFF8030|r stacks: |cffFFFF80+25%|r damage to humanoids|nAt |cffFFFF8060|r stacks: |cffFFFF80+25%|r damage to masses|nAt |cffFFFF8090|r stacks: |cffFFFF80+x1|r crit damage|nAt |cffFFFF80120|r stacks: |cffFFFF80+2x|r multicrit
)
)
[2] => Array
(
[name] => On Tower Details
[code] => call moppy_cho_gall_stats.setValue(0, formatPercent(tower.userReal, 1))
call moppy_cho_gall_stats.setValue(1, formatPercent(tower.userReal2, 1))
return moppy_cho_gall_stats
[values] => Array
(
[0] => Array
(
[_value] => 0
[typ] => string
)
)
)
[3] => Array
(
[name] => On Damage
[code] => set Event.damage = 0 // To make regular attack deal no damage
[values] => Array
(
[ONDAMAGE_chance] => 1.0
[visible] => true
[icon] => ReplaceableTextures\CommandButtons\BTNOrbOfDarkness.blp
[name] => Gall's Authority
[short_explain] => Critical spell hits permanently increase spell damage. Unlocks new abilities as power grows.
[ONDAMAGE_chanceLevelAdd] => 0.0
[long_explain] => Each time Cho'Gall lands a critical spell hit, he permanently gains |cffFFFF80+1%|r bonus spell damage, up to a maximum of |cffFFFF80160|r stacks. As Cho'Gall's bonus spell damage increases, he will unlock additional abilities, further enhancing his magical proficiency.|n|nAt |cffFFFF8030|r stacks: |cffFFFF80+25%|r damage to nature|nAt |cffFFFF8060|r stacks: |cffFFFF80+25%|r damage to bosses|nAt |cffFFFF8090|r stacks: |cffFFFF80+30%|r debuff resistance|nAt |cffFFFF80120|r stacks: |cffFFFF80+x2|r spell crit damage
)
)
[4] => Array
(
[name] => Autocast
[code] => local integer lvl = tower.getLevel()
call moppy_cho_gall_ogre_rage.applyCustomTimed(tower, tower, lvl, 5.0)
call tower.getOwner().displayFloatingText("GRAAAHHH!", tower, 255, 100, 100)
[values] => Array
(
[AUTOCAST_cooldown] => 10
[AUTOCAST_autoRange] => 900
[AUTOCAST_manacost] => 25
[icon] => ReplaceableTextures\CommandButtons\BTNMaskOfDeath.blp
[AUTOCAST_range] => 900
[AUTOCAST_targetType] => 0
[AUTOCAST_numBuffsBeforeIdle] => 0
[caster_art] => Abilities\Spells\Demon\DemonBoltImpact\DemonBoltImpact.mdl
[long_explain] => Increases attack speed by |cffFFFF80+50%|r, and crit chance and spell crit chance by |cffFFFF80+25%|r. Lasts |cffFFFF805|r seconds.|n|n|cffFF8000Level Bonus:|r|n|cffFFFF80+1%|r attack speed|n|cffFFFF80+0.5%|r crit chance and spell crit chance
[target_art] =>
[AUTOCAST_autocastType] => AC_TYPE_OFFENSIVE_IMMEDIATE
[AUTOCAST_buffType] => 0
[AUTOCAST_isExtended] => false
[name] => Ogre Rage
[AUTOCAST_targetSelf] => true
[short_explain] => Increases attack speed, crit chance, and spell crit chance.
)
)
[5] => Array
(
[name] => On Tower Creation
[code] => local Tower preceding = Event.getPrecedingTower()
local real AttackDmgBonus
local real SpellDmgBonus
// To keep all attack damage stacks if for whatever reason Cho'Gall gets replaced with another Cho'Gall
if(preceding.getFamily() == tower.getFamily()) then
set AttackDmgBonus = preceding.userReal
set tower.userReal = AttackDmgBonus
call tower.modifyProperty(MOD_DAMAGE_ADD_PERC, AttackDmgBonus)
else
set tower.userReal = 0.0 // Loses all attack damage stacks if Cho'Gall gets replaced with anything else
endif
// To keep all spell damage stacks if for whatever reason Cho'Gall gets replaced with another Cho'Gall
if(preceding.getFamily() == tower.getFamily()) then
set SpellDmgBonus = preceding.userReal2
set tower.userReal2 = SpellDmgBonus
call tower.modifyProperty(MOD_SPELL_DAMAGE_DEALT, SpellDmgBonus)
else
set tower.userReal2 = 0.0 // Loses all spell damage stacks if Cho'Gall gets replaced with anything else
endif
[values] => Array
(
[visible] => false
[icon] =>
[name] =>
[short_explain] =>
[long_explain] =>
)
)
)
[abilities] => Array
(
)
[buffs] => Array
(
[0] => Array
(
[id] => @@0@@
[derivedFrom] => BNab
[oeValues] => Array
(
[Targetattach] => overhead
[EditorName] => Shattering Slam
[Buffubertip] => Slowed.
[TargetArt] => Abilities\Spells\Orc\StasisTrap\StasisTotemTarget.mdl
[Bufftip] => Shattering Slam
[Buffart] => ReplaceableTextures\CommandButtons\BTNDeathPact.blp
)
)
[1] => Array
(
[id] => @@1@@
[derivedFrom] => BNab
[oeValues] => Array
(
[Targetattach] => overhead
[EditorName] => Shadowflame
[Buffubertip] => Reduced Armor.
[TargetArt] => Abilities\Spells\Other\HowlOfTerror\HowlTarget.mdl
[Bufftip] => Shadowflame
[Buffart] => ReplaceableTextures\CommandButtons\BTNDeathPact.blp
)
)
[2] => Array
(
[id] => @@2@@
[derivedFrom] => BNab
[oeValues] => Array
(
[EditorName] => Ogre Rage
[Buffubertip] => Increased attack speed. Increased crit chance and spell crit chance.
[TargetArt] => Abilities\Spells\Demon\DemonBoltImpact\DemonBoltImpact.mdl
[Bufftip] => Ogre Rage
[Buffart] => ReplaceableTextures\CommandButtons\BTNMaskOfDeath.blp
)
)
)
[units] => Array
(
)
[references] => Array
(
)
[lightning] => Array
(
)
)