ReVolver
Mega Super Ultra Cool Member
- Reaction score
- 609
In the war of Humans and Orcs that occured long ago many Orcish warriors were corrupted by demonic influence and became tools of blackest darkness. One such warrior was the leader of the Half-Tribe of the Bloodied Axe Clan; Mogul Kahn. Mogul was slain by human Paladins but mysteriously was seen fighting alongside the Scourge around the time Mannoroth started to command the Orcs in the war against Archimonde. The Axe has been revived by demons and uses his reflexes and powerful blows to hunt down and seek out the Sentinels' agile warriors and cut them down to size, even projecting his lust for war onto them.
Implement Instructions:
-Requires NewGen World Editor
-Kattana's Handle Variables
Spells:
Berserker's Call
JASS:
scope BerserkersCall
//===========================================================================
// Mogul Kahn's Berserker's Call
// Description: Mogul Kahn focuses all of his enemies' hatred on him, causing them to attack him at all costs.
// 300 AoE.
// Level 1 - 1.5 seconds, 5 bonus armor.
// Level 2 - 2 seconds, 10 bonus armor.
// Level 3 - 2.5 seconds, 15 bonus armor.
// Level 4 - 3 seconds, 20 bonus armor.
//
// Author: Orc_Tamer
// Date: 07.December.2007
//
// You will need:
// Berserker's Call Ability 'A003'
// Berserker's Call Buff 'B002'
// Berserker's Call Item Armor Bonus Ability 'A004'
//
//===========================================================================
globals
private integer SpellID = 039;A003039;
private integer Armor = 039;A004039;
private unit Axe
private real AoE = 300
private real Wait
endglobals
private function Conditions takes nothing returns boolean
return GetSpellAbilityId() == SpellID
endfunction
private function BUnit takes nothing returns boolean
return GetBooleanAnd( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(Axe)) == true, IsUnitAliveBJ(GetFilterUnit()) == true )
endfunction
private function AttackAxe takes nothing returns nothing
if UnitHasBuffBJ(GetFilterUnit(),039;B002039;) == true then
call IssueTargetOrder(GetEnumUnit(), "attack", Axe)
endif
endfunction
private function Actions takes nothing returns nothing
local timer t = CreateTimer()
local group g = CreateGroup()
local unit tmpUnit
set Axe = GetTriggerUnit()
call GroupEnumUnitsInRange(g, GetUnitX(Axe), GetUnitY(Axe), AoE, Condition(function BUnit))
loop
set tmpUnit = FirstOfGroup(g)
exitwhen (tmpUnit == null)
call IssueTargetOrder(tmpUnit, "attack", Axe)
call TimerStart(t,.5,true,function AttackAxe)
call GroupRemoveUnit(g, tmpUnit)
endloop
set Wait = 1 + .5*GetUnitAbilityLevel(Axe,SpellID)
call UnitAddAbility(Axe,Armor)
call SetUnitAbilityLevel(Axe,Armor, GetUnitAbilityLevel(Axe,SpellID))
call DisableTrigger( GetTriggeringTrigger() )
call PolledWait(Wait)
call PauseTimer(t)
call DestroyTimer(t)
call UnitRemoveAbility(Axe, Armor)
set Axe = null
call EnableTrigger( GetTriggeringTrigger())
call DestroyGroup(g)
endfunction
public function InitTrig takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( t, Condition( function Conditions ) )
call TriggerAddAction( t, function Actions )
endfunction
endscope
Battle Hunger
JASS:
scope BattleHunger
//===========================================================================
// Mogul Kahn's Battle Hunger
// Description: Afflicts a target with a terrible killing hunger. The target will take damage per second until it kills a unit.
// Level 1 - 15 damage/second, lasts 10 seconds.
// Level 2 - 20 damage/second, lasts 15 seconds.
// Level 3 - 25 damage/second, lasts 20 seconds.
// Level 4 - 30 damage/second, lasts 25 seconds.
//
// Author: Orc_Tamer
// Date: 07.December.2007
//
// You will need:
// Battle Hunger Ability 'A002'
// Battle Hunger Buff 'B001'
// RemoveHunger Trigger
//
//===========================================================================
globals
private integer SpellID = 039;A002039; //Battle Hunger's Spell Raw Code
private integer BuffID = 039;B001039; //Battle Hunger's Buff Raw Code
private real Duration = 5 //This is the base number for the equation #+5*Level of Battle Hunger
private real Damage = 10 //This is the base number for the equation #+5*Level of Battle Hunger
endglobals
private function Conditions takes nothing returns boolean
return GetSpellAbilityId() == SpellID
endfunction
private function HungerDamage takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit c = GetHandleUnit(t,"victim")
local unit tg = GetHandleUnit(t,"source")
local integer time = GetHandleInt(t, "update")
local integer d = GetHandleInt(t,"duration")
if UnitHasBuffBJ(c, BuffID) == true and IsUnitAliveBJ(c) == true then
call UnitDamageTarget(tg, c,Damage+5*GetUnitAbilityLevel(tg,SpellID), true, true, ATTACK_TYPE_MAGIC, DAMAGE_TYPE_NORMAL, null)
call SetHandleReal(t, "duration", d-1)
endif
if (d <= 1) or IsUnitAliveBJ(c) == false or UnitHasBuffBJ(c, BuffID) == false then
call FlushHandleLocals(t)
call DestroyTimer(t)
set t = null
set c = null
set tg = null
endif
endfunction
private function Actions takes nothing returns nothing
local timer t = CreateTimer()
local unit c = GetTriggerUnit()
local unit tg = GetSpellTargetUnit()
local integer time = 1
local integer d = R2I(Duration+5*GetUnitAbilityLevel(tg,SpellID))
call SetHandleHandle(t, "victim", tg)
call SetHandleHandle(t, "source", c)
call SetHandleInt(t, "update", time)
call SetHandleInt(t, "duration",d)
call TimerStart(t, time, true, function HungerDamage)
endfunction
public function InitTrig takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( t, Condition( function Conditions ) )
call TriggerAddAction( t, function Actions )
endfunction
endscope
Counter Helix
JASS:
scope CounterHelix
//===========================================================================
// Mogul Kahn's Counter Helix
// Description: Mogul Kahn counters some blows made to him dealing damage to all nearby enemy units.
// Level 1 - 15% chance to counter with 100 damage.
// Level 2 - 15% chance to counter with 125 damage.
// Level 3 - 15% chance to counter with 150 damage.
// Level 4 - 15% chance to counter with 175 damage.
//
// Author: Orc_Tamer
// Date: 07.December.2007
//
// You will need:
// Counter Helix Ability 'A000'
// Counter Helix Buff 'B000'
// Remove Hunger Trigger
//
//===========================================================================
globals
private integer SpellID = 039;A000039;
private integer BuffID = 039;B000039;
private integer Damage = 100
private integer Radius = 300
private integer Chance = 15
private string SpellEffect = "Abilities\\Spells\\Other\\Stampede\\StampedeMissileDeath.mdl"
endglobals
private function Conditions takes nothing returns boolean
return GetUnitAbilityLevel(GetTriggerUnit(),BuffID) > 0
return GetRandomInt(1,100) <= Chance
endfunction
private function IsAttackedEnemy takes nothing returns boolean
return IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(GetTriggerUnit())) == true and IsUnitAliveBJ(GetFilterUnit()) == true
endfunction
private function Actions takes nothing returns nothing
local unit attacked = GetTriggerUnit()
local group g = CreateGroup()
local unit tmpUnit
call GroupEnumUnitsInRange(g, GetUnitX(attacked), GetUnitY(attacked), Radius, Condition(function IsAttackedEnemy))
call SetUnitAnimation(attacked, "spin")
loop
set tmpUnit = FirstOfGroup(g)
exitwhen (tmpUnit == null)
call UnitDamageTarget(attacked, tmpUnit, Damage+25*GetUnitAbilityLevel(attacked,SpellID), true, true, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL, null)
call DestroyEffect(AddSpecialEffectTarget(SpellEffect, tmpUnit,"chest"))
call GroupRemoveUnit(g, tmpUnit)
endloop
call DisableTrigger(GetTriggeringTrigger())
call TriggerSleepAction(.6)
call SetUnitAnimation(attacked, "stand")
call EnableTrigger(GetTriggeringTrigger())
call DestroyGroup(g)
set attacked = null
set tmpUnit = null
set g = null
endfunction
public function InitTrig takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( t, Condition( function Conditions ) )
call TriggerAddAction( t, function Actions )
endfunction
endscope
Culling Blade
JASS:
scope CullingBlade
//===========================================================================
// Mogul Kahn's Culling Blade
// Description: Purges the weak from Mogul Kahn's sight. Deals moderate damage, but will kill a target that is low on life.
// Level 1 - Deals 150 damage, will kill if target is below 300.
// Level 2 - Deals 250 damage, will kill if target is below 450.
// Level 3 - Deals 300 damage, will kill if target is below 625.
//
// Author: Orc_Tamer
// Date: 07.December.2007
//
// You will need:
// Culling Blade Ability 'A001'
//
//===========================================================================
globals
private integer SpellID = 039;A001039;
endglobals
private function Conditions takes nothing returns boolean
return GetSpellAbilityId() == SpellID
endfunction
private function Actions takes nothing returns nothing
local unit caster = GetTriggerUnit()
local unit target = GetSpellTargetUnit()
if GetUnitState(target,UNIT_STATE_LIFE) <= 300 and GetUnitAbilityLevel(caster,SpellID) == 1 then
call UnitDamageTarget(caster,target,10000000.,true,true, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_UNKNOWN,WEAPON_TYPE_WHOKNOWS)
elseif GetUnitAbilityLevel(caster,SpellID) == 1 then
call SetUnitLifeBJ( target, ( GetUnitStateSwap(UNIT_STATE_LIFE, target) - 150.00 ) )
endif
if GetUnitState(target,UNIT_STATE_LIFE) <= 450 and GetUnitAbilityLevel(caster,SpellID) == 2 then
call UnitDamageTarget(caster,target,10000000.,true,true, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_UNKNOWN,WEAPON_TYPE_WHOKNOWS)
elseif GetUnitAbilityLevel(caster,SpellID) == 2 then
call SetUnitLifeBJ( target, ( GetUnitStateSwap(UNIT_STATE_LIFE, target) - 250.00 ) )
endif
if GetUnitState(target,UNIT_STATE_LIFE) <= 625 and GetUnitAbilityLevel(caster,SpellID) == 3 then
call UnitDamageTarget(caster,target,10000000.,true,true, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_UNKNOWN,WEAPON_TYPE_WHOKNOWS)
elseif GetUnitAbilityLevel(caster,SpellID) == 3 then
call SetUnitLifeBJ( target, ( GetUnitStateSwap(UNIT_STATE_LIFE, target) - 300.00 ) )
endif
set caster = null
set target = null
endfunction
public function InitTrig takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( t, Condition( function Conditions ) )
call TriggerAddAction( t, function Actions )
endfunction
endscope