Grurf said:I think I should create the Omnislash spell to end all Omnislash spells. Leakless, lagless and easy to implement. Could you describe the ability for me? I know it is from Final Fantasy VII and that Cloud casts it, but what exactly does it look like? If you have a screenshot, that would be very helpful to add good-looking effects.
PB_and_J said:It is from Dota.
PB_and_J said:Thats the 2nd time this thread that me and adde almost posted at the same time. (1 min apart max).
Sry I'm hijacking this thread
x
x-----X
X
|
|
x
X-----x
x
|
|
X
------------------------------------------------------
MPQDraft fatal exception report:
10/08/2005 17:27:39.781
Exception code: c0000005 EXCEPTION_ACCESS_VIOLATION
Fault address: 77421333 01:00090333 C:\WINDOWS\system32\SHELL32.dll
Handler address: 100022a0 01:000012a0 C:\DOCUME~1\Grurf\LOCALS~1\Temp\Emb60.tmp
Registers:
EAX:0c146670
EBX:08cca7b8
ECX:217fe9ae
EDX:00000000
ESI:217ff5c8
EDI:08c1d2e8
CS:EIP:001b:77421333
SS:ESP:0023:217fdee8 EBP:217feb80
DS:0023 ES:0023 FS:0038 GS:0000
Flags:00010246
Call stack:
Address Frame Logical addr Module
77421333 217feb80 0001:00090333 C:\WINDOWS\system32\SHELL32.dll
77429bfd 217ff5e4 0001:00098bfd C:\WINDOWS\system32\SHELL32.dll
77429b07 217ffe10 0001:00098b07 C:\WINDOWS\system32\SHELL32.dll
77429a16 217ffe7c 0001:00098a16 C:\WINDOWS\system32\SHELL32.dll
Stack bytes:
0x217fdee8: 0x217fdef8: 0x217fdf08: 0x217fdf18: 0x217fdf28: 0x217fdf38: 0x217fdf48: 0x217fdf58: 0x217fdf68: 0x217fdf78: 0x217fdf88: 0x217fdf98: 0x217fdfa8: 0x217fdfb8: 0x217fdfc8: 0x217fdfd8: 0x217fdfe8: 0x217fdff8: 0x217fe008: 0x217fe018: 0x217fe028: 0x217fe038: 0x217fe048: 0x217fe058: 0x217fe068: 0x217fe078: 0x217fe088: 0x217fe098: 0x217fe0a8: 0x217fe0b8: 0x217fe0c8: 0x217fe0d8: 0x217fe0e8: 0x217fe0f8: 0x217fe108: 0x217fe118: 0x217fe128: 0x217fe138: 0x217fe148: 0x217fe158: 0x217fe168: 0x217fe178: 0x217fe188: 0x217fe198: 0x217fe1a8: 0x217fe1b8: 0x217fe1c8: 0x217fe1d8: 0x217fe1e8: 0x217fe1f8: 0x217fe208: 0x217fe218: 0x217fe228: 0x217fe238: 0x217fe248: 0x217fe258: 0x217fe268: 0x217fe278: 0x217fe288: 0x217fe298: 0x217fe2a8: 0x217fe2b8: 0x217fe2c8: 0x217fe2d8:
Code bytes:
0x77421333: 0x77421343: 0x77421353: 0x77421363:
x
\
\
\
X
X
\
\
\
x
Now 2 Triggerfunction Trig_omnislash_selection_Conditions takes nothing returns boolean
if ( not ( GetUnitTypeId(GetTriggerUnit()) == 'Nbbc' ) ) then
return false
endif
return true
endfunction
function Trig_omnislash_selection_Actions takes nothing returns nothing
call SelectUnitRemoveForPlayer( GetTriggerUnit(), GetTriggerPlayer() )
endfunction
//===========================================================================
function InitTrig_omnislash_selection takes nothing returns nothing
set gg_trg_omnislash_selection = CreateTrigger( )
call DisableTrigger( gg_trg_omnislash_selection )
call TriggerRegisterPlayerSelectionEventBJ( gg_trg_omnislash_selection, Player(1), true )
call TriggerRegisterPlayerSelectionEventBJ( gg_trg_omnislash_selection, Player(2), true )
call TriggerRegisterPlayerSelectionEventBJ( gg_trg_omnislash_selection, Player(3), true )
call TriggerRegisterPlayerSelectionEventBJ( gg_trg_omnislash_selection, Player(4), true )
call TriggerRegisterPlayerSelectionEventBJ( gg_trg_omnislash_selection, Player(5), true )
call TriggerRegisterPlayerSelectionEventBJ( gg_trg_omnislash_selection, Player(7), true )
call TriggerRegisterPlayerSelectionEventBJ( gg_trg_omnislash_selection, Player(8), true )
call TriggerRegisterPlayerSelectionEventBJ( gg_trg_omnislash_selection, Player(9), true )
call TriggerRegisterPlayerSelectionEventBJ( gg_trg_omnislash_selection, Player(10), true )
call TriggerRegisterPlayerSelectionEventBJ( gg_trg_omnislash_selection, Player(11), true )
call TriggerAddCondition( gg_trg_omnislash_selection, Condition( function Trig_omnislash_selection_Conditions ) )
call TriggerAddAction( gg_trg_omnislash_selection, function Trig_omnislash_selection_Actions )
endfunction
now the last one:function Trig_OmniSlashEffect_Func005001003001001001001 takes nothing returns boolean
return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false )
endfunction
function Trig_OmniSlashEffect_Func005001003001001001002 takes nothing returns boolean
return ( GetUnitAbilityLevelSwapped('A04R', GetFilterUnit()) != 1 )
endfunction
function Trig_OmniSlashEffect_Func005001003001001001 takes nothing returns boolean
return GetBooleanAnd( Trig_OmniSlashEffect_Func005001003001001001001(), Trig_OmniSlashEffect_Func005001003001001001002() )
endfunction
function Trig_OmniSlashEffect_Func005001003001001002 takes nothing returns boolean
return ( IsUnitVisible(GetFilterUnit(), udg_BushidoOwner) == true )
endfunction
function Trig_OmniSlashEffect_Func005001003001001 takes nothing returns boolean
return GetBooleanAnd( Trig_OmniSlashEffect_Func005001003001001001(), Trig_OmniSlashEffect_Func005001003001001002() )
endfunction
function Trig_OmniSlashEffect_Func005001003001002 takes nothing returns boolean
return ( IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(udg_BushidoBladeUnit)) == true )
endfunction
function Trig_OmniSlashEffect_Func005001003001 takes nothing returns boolean
return GetBooleanAnd( Trig_OmniSlashEffect_Func005001003001001(), Trig_OmniSlashEffect_Func005001003001002() )
endfunction
function Trig_OmniSlashEffect_Func005001003002001 takes nothing returns boolean
return ( IsUnitAliveBJ(GetFilterUnit()) == true )
endfunction
function Trig_OmniSlashEffect_Func005001003002002001 takes nothing returns boolean
return ( GetUnitTypeId(GetFilterUnit()) != 'e00C' )
endfunction
function Trig_OmniSlashEffect_Func005001003002002002 takes nothing returns boolean
return ( GetUnitTypeId(GetFilterUnit()) != 'o003' )
endfunction
function Trig_OmniSlashEffect_Func005001003002002 takes nothing returns boolean
return GetBooleanAnd( Trig_OmniSlashEffect_Func005001003002002001(), Trig_OmniSlashEffect_Func005001003002002002() )
endfunction
function Trig_OmniSlashEffect_Func005001003002 takes nothing returns boolean
return GetBooleanAnd( Trig_OmniSlashEffect_Func005001003002001(), Trig_OmniSlashEffect_Func005001003002002() )
endfunction
function Trig_OmniSlashEffect_Func005001003 takes nothing returns boolean
return GetBooleanAnd( Trig_OmniSlashEffect_Func005001003001(), Trig_OmniSlashEffect_Func005001003002() )
endfunction
function Trig_OmniSlashEffect_Func005A takes nothing returns nothing
call GroupAddUnitSimple( GetEnumUnit(), udg_BushidoGroup )
endfunction
function Trig_OmniSlashEffect_Func006C takes nothing returns boolean
if ( not ( udg_Omni1 == false ) ) then
return false
endif
return true
endfunction
function Trig_OmniSlashEffect_Func007Func001C takes nothing returns boolean
if ( ( IsUnitDeadBJ(udg_BushidoBladeUnit) == true ) ) then
return true
endif
if ( ( IsUnitGroupEmptyBJ(udg_BushidoGroup) == true ) ) then
return true
endif
return false
endfunction
function Trig_OmniSlashEffect_Func007C takes nothing returns boolean
if ( not Trig_OmniSlashEffect_Func007Func001C() ) then
return false
endif
return true
endfunction
function Trig_OmniSlashEffect_Actions takes nothing returns nothing
set bj_wantDestroyGroup = true
call AddSpecialEffectTargetUnitBJ( "chest", udg_BushidoBladeUnit, "Abilities\\Spells\\NightElf\\Blink\\BlinkCaster.mdl" )
set udg_BushidoRandomNumber = GetRandomInt(150, 250)
call GroupClear( udg_BushidoGroup )
call ForGroupBJ( GetUnitsInRangeOfLocMatching(550.00, GetUnitLoc(udg_RandPer), Condition(function Trig_OmniSlashEffect_Func005001003)), function Trig_OmniSlashEffect_Func005A )
if ( Trig_OmniSlashEffect_Func006C() ) then
set udg_RandPer = GroupPickRandomUnit(udg_BushidoGroup)
else
call DoNothing( )
endif
if ( Trig_OmniSlashEffect_Func007C() ) then
call DoNothing( )
else
call SetUnitPositionLocFacingBJ( udg_BushidoBladeUnit, PolarProjectionBJ(GetUnitLoc(udg_RandPer), 50.00, GetRandomDirectionDeg()), AngleBetweenPoints(GetUnitLoc(udg_BushidoBladeUnit), GetUnitLoc(udg_RandPer)) )
call SetUnitAnimation( udg_BushidoBladeUnit, "Attack" )
call UnitDamageTargetBJ( udg_BushidoBladeUnit, udg_RandPer, I2R(udg_BushidoRandomNumber), ATTACK_TYPE_HERO, DAMAGE_TYPE_NORMAL )
call AddSpecialEffectTargetUnitBJ( "chest", udg_BushidoBladeUnit, "Abilities\\Spells\\NightElf\\Blink\\BlinkCaster.mdl" )
endif
endfunction
//===========================================================================
function InitTrig_OmniSlashEffect takes nothing returns nothing
set gg_trg_OmniSlashEffect = CreateTrigger( )
call TriggerAddAction( gg_trg_OmniSlashEffect, function Trig_OmniSlashEffect_Actions )
endfunction
done if u didnt understand i may take it and put in a free trigger codefunction Trig_omnislash_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A066' ) ) then
return false
endif
return true
endfunction
function Trig_omnislash_Func020C takes nothing returns boolean
if ( not ( GetUnitAbilityLevelSwapped('A066', udg_BushidoBladeUnit) > 1 ) ) then
return false
endif
return true
endfunction
function Trig_omnislash_Func021C takes nothing returns boolean
if ( not ( GetUnitAbilityLevelSwapped('A066', udg_BushidoBladeUnit) > 2 ) ) then
return false
endif
return true
endfunction
function Trig_omnislash_Actions takes nothing returns nothing
call EnableTrigger( gg_trg_omnislash_selection )
set udg_BushidoOwner = GetOwningPlayer(GetTriggerUnit())
set udg_BushidoBladeUnit = GetTriggerUnit()
call SelectUnitRemoveForPlayer( udg_BushidoBladeUnit, udg_BushidoOwner )
call SetUnitVertexColorBJ( udg_BushidoBladeUnit, 100, 100, 100, 50.00 )
call SetUnitPathing( udg_BushidoBladeUnit, false )
call SetUnitInvulnerable( udg_BushidoBladeUnit, true )
set udg_RandPer = GetSpellTargetUnit()
set udg_Omni1 = true
call TriggerSleepAction( 0.01 )
call ConditionalTriggerExecute( gg_trg_OmniSlashEffect )
set udg_Omni1 = false
call PolledWait( 0.25 )
call ConditionalTriggerExecute( gg_trg_OmniSlashEffect )
call PolledWait( 0.25 )
call ConditionalTriggerExecute( gg_trg_OmniSlashEffect )
call PolledWait( 0.25 )
if ( Trig_omnislash_Func020C() ) then
call ConditionalTriggerExecute( gg_trg_OmniSlashEffect )
call PolledWait( 0.25 )
call ConditionalTriggerExecute( gg_trg_OmniSlashEffect )
call PolledWait( 0.25 )
else
call DoNothing( )
endif
if ( Trig_omnislash_Func021C() ) then
call ConditionalTriggerExecute( gg_trg_OmniSlashEffect )
call PolledWait( 0.25 )
call ConditionalTriggerExecute( gg_trg_OmniSlashEffect )
call PolledWait( 0.25 )
call ConditionalTriggerExecute( gg_trg_OmniSlashEffect )
call PolledWait( 0.25 )
else
call DoNothing( )
endif
call GroupClear( udg_BushidoGroup )
call SetUnitPathing( udg_BushidoBladeUnit, true )
call SetUnitInvulnerable( udg_BushidoBladeUnit, false )
call SetUnitScalePercent( udg_BushidoBladeUnit, 100.00, 100.00, 100.00 )
call SetUnitVertexColorBJ( udg_BushidoBladeUnit, 100, 100, 100, 0.00 )
call SelectUnitAddForPlayer( udg_BushidoBladeUnit, udg_BushidoOwner )
call DisableTrigger( gg_trg_omnislash_selection )
endfunction
//===========================================================================
function InitTrig_omnislash takes nothing returns nothing
set gg_trg_omnislash = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_omnislash, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_omnislash, Condition( function Trig_omnislash_Conditions ) )
call TriggerAddAction( gg_trg_omnislash, function Trig_omnislash_Actions )
endfunction