Kershbob
New Member
- Reaction score
- 30
Yay me! It may have included a lot of change to custom text and tinkering but I made a big old working JASS trigger. I'm so proud.
Someone please tell me all the stuff wrong with it if there is anything.
Code:
function Trig_DragonSpell_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A000' ) ) then
return false
endif
return true
endfunction
function Trig_DragonSpell_Func007Func006001003001 takes nothing returns boolean
return ( IsPlayerAlly(GetOwningPlayer(GetSpellAbilityUnit()), GetOwningPlayer(GetFilterUnit())) == false )
endfunction
function Trig_DragonSpell_Func007Func006001003002 takes nothing returns boolean
return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_HERO) == true )
endfunction
function Trig_DragonSpell_Func007Func006001003 takes nothing returns boolean
return GetBooleanAnd( Trig_DragonSpell_Func007Func006001003001(), Trig_DragonSpell_Func007Func006001003002() )
endfunction
function Trig_DragonSpell_Func007Func006A takes nothing returns nothing
call UnitAddAbilityBJ( 'A004', GetEnumUnit() )
endfunction
function Trig_DragonSpell_Func007C takes nothing returns boolean
if ( not ( udg_TempInt <= 2 ) ) then
return false
endif
return true
endfunction
function Trig_DragonSpell_Func008Func003001002001 takes nothing returns boolean
return ( IsPlayerAlly(GetOwningPlayer(GetSpellAbilityUnit()), GetOwningPlayer(GetFilterUnit())) == false )
endfunction
function Trig_DragonSpell_Func008Func003001002002001 takes nothing returns boolean
return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_MECHANICAL) == false )
endfunction
function Trig_DragonSpell_Func008Func003001002002002 takes nothing returns boolean
return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_UNDEAD) == false )
endfunction
function Trig_DragonSpell_Func008Func003001002002 takes nothing returns boolean
return GetBooleanAnd( Trig_DragonSpell_Func008Func003001002002001(), Trig_DragonSpell_Func008Func003001002002002() )
endfunction
function Trig_DragonSpell_Func008Func003001002 takes nothing returns boolean
return GetBooleanAnd( Trig_DragonSpell_Func008Func003001002001(), Trig_DragonSpell_Func008Func003001002002() )
endfunction
function Trig_DragonSpell_Func008Func003A takes nothing returns nothing
local location TempPoint3 = GetUnitLoc(GetSpellAbilityUnit())
local location TempPoint = GetUnitLoc(GetSpellTargetUnit())
local location TempPoint2 = PolarProjectionBJ(TempPoint3, 120.00, GetUnitFacing(GetSpellAbilityUnit()))
set udg_TempPoint = GetUnitLoc(GetEnumUnit())
call CreateNUnitsAtLocFacingLocBJ( 1, 'n006', GetOwningPlayer(GetSpellAbilityUnit()), TempPoint2, udg_TempPoint )
call IssueTargetOrderBJ( GetLastCreatedUnit(), "deathcoil", GetEnumUnit() )
call RemoveLocation( udg_TempPoint )
endfunction
function Trig_DragonSpell_Func008C takes nothing returns boolean
if ( not ( udg_TempInt == 3 ) ) then
return false
endif
return true
endfunction
function Trig_DragonSpell_Func009C takes nothing returns boolean
if ( not ( udg_TempInt == 4 ) ) then
return false
endif
return true
endfunction
function Trig_DragonSpell_Func010C takes nothing returns boolean
if ( not ( udg_TempInt == 5 ) ) then
return false
endif
return true
endfunction
function Trig_DragonSpell_Actions takes nothing returns nothing
local unit dragon = GetSpellAbilityUnit()
local location TempPoint3 = GetUnitLoc(GetSpellAbilityUnit())
local location TempPoint = GetUnitLoc(GetSpellTargetUnit())
local location TempPoint2 = PolarProjectionBJ(TempPoint3, 120.00, GetUnitFacing(GetSpellAbilityUnit()))
local location TempPoint4 = PolarProjectionBJ(TempPoint3, -120.00, GetUnitFacing(GetSpellAbilityUnit()))
set udg_TempInt = GetRandomInt(1, 5)
if ( Trig_DragonSpell_Func007C() ) then
call CreateNUnitsAtLocFacingLocBJ( 1, 'n005', GetOwningPlayer(GetSpellAbilityUnit()), TempPoint2, TempPoint )
call IssuePointOrderLocBJ( GetLastCreatedUnit(), "silence", TempPoint2 )
set bj_wantDestroyGroup = true
set udg_TempPoint = GetUnitLoc(GetSpellAbilityUnit())
call ForGroupBJ( GetUnitsInRangeOfLocMatching(700.00, udg_TempPoint, Condition(function Trig_DragonSpell_Func007Func006001003)), function Trig_DragonSpell_Func007Func006A )
call RemoveLocation( udg_TempPoint )
return
else
endif
if ( Trig_DragonSpell_Func008C() ) then
set bj_wantDestroyGroup = true
call ForGroupBJ( GetUnitsInRectMatching(gg_rct_BossAreaDragon, Condition(function Trig_DragonSpell_Func008Func003001002)), function Trig_DragonSpell_Func008Func003A )
return
else
endif
if ( Trig_DragonSpell_Func009C() ) then
set udg_TempUnit = GetSpellAbilityUnit()
call TriggerExecute( gg_trg_Rage_Up )
call CreateNUnitsAtLocFacingLocBJ( 1, 'n007', GetOwningPlayer(GetSpellAbilityUnit()), TempPoint2, TempPoint3 )
call IssueTargetOrderBJ( GetLastCreatedUnit(), "bloodlust", GetSpellAbilityUnit() )
return
else
endif
if ( Trig_DragonSpell_Func010C() ) then
call PauseUnitBJ( true, dragon )
call SetUnitAnimation( GetLastCreatedUnit(), "spell slam" )
call TriggerSleepAction( 0.50 )
call CreateNUnitsAtLoc( 1, 'n008', GetOwningPlayer(dragon), TempPoint4, bj_UNIT_FACING )
call IssueImmediateOrderBJ( GetLastCreatedUnit(), "creepthunderclap" )
call TriggerSleepAction( 0.75 )
call PauseUnitBJ( false, dragon )
return
else
endif
endfunction
//===========================================================================
function InitTrig_DragonSpell takes nothing returns nothing
set gg_trg_DragonSpell = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_DragonSpell, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_DragonSpell, Condition( function Trig_DragonSpell_Conditions ) )
call TriggerAddAction( gg_trg_DragonSpell, function Trig_DragonSpell_Actions )
endfunction
Someone please tell me all the stuff wrong with it if there is anything.