GUI makes Jassing easier as well, but that isn't better.
how can i convert a spell from jass to vjass? is it jass making scope, private functions and etc? Cuz when i tried to do that, my test map displayed an error about the spell
function Cond takes nothing returns boolean
return GetSpellAbilityId() == 039;A002039;
endfunction
function ChainHeal takes nothing returns nothing
local unit cast = GetTriggerUnit()
local unit prevtarg
local unit targ = GetSpellTargetUnit()
local unit nexttarg
local location p = GetUnitLoc(targ)
local group postargets = GetUnitsInRangeOfLocAll( 500.00 , p)
local group donetargets = CreateGroup()
local integer noofdone = 0
local integer heroint = GetHeroStatBJ(bj_HEROSTAT_INT, cast, true)
local real x1 = GetUnitX(cast)
local real y1 = GetUnitY(cast)
local real x2 = GetUnitX(targ)
local real y2 = GetUnitY(targ)
local lightning lightA
local lightning lightB
if IsPlayerAlly(GetOwningPlayer(targ), GetOwningPlayer(cast)) == true and IsUnitInGroup( targ , donetargets ) == false then
set lightA = AddLightning("HWPB" , true , x1, y1 , x2 , y2 )
set lightB = AddLightning("HWSB" , true , x1, y1 , x2 , y2 )
call SetUnitLifeBJ(targ , ( GetUnitStateSwap(UNIT_STATE_LIFE, targ) + ( 3 * heroint)))
endif
set nexttarg = GroupPickRandomUnit(postargets)
call RemoveLocation(p)
set p = GetUnitLoc(nexttarg)
set postargets = GetUnitsInRangeOfLocAll(500.00, p)
call GroupAddUnitSimple( targ, donetargets )
call GroupRemoveGroup( donetargets, postargets )
set prevtarg = targ
set targ = nexttarg
set heroint = ( ( heroint * 3 ) / 4 )
set x1 = GetUnitX(prevtarg)
set y1 = GetUnitY(prevtarg)
set x2 = GetUnitX(targ)
set y2 = GetUnitY(targ)
call TriggerSleepAction(0.01)
if lightA != null then
call DestroyLightning ( lightA )
endif
if lightB != null then
call DestroyLightning ( lightB )
endif
set lightA = null
set lightB = null
loop
exitwhen noofdone == 16 or targ == null
if IsPlayerAlly(GetOwningPlayer(targ), GetOwningPlayer(cast)) == true and IsUnitInGroup( targ , donetargets ) == false then
set lightA = AddLightning("HWPB" , true , x1, y1 , x2 , y2 )
set lightB = AddLightning("HWSB" , true , x1, y1 , x2 , y2 )
call SetUnitLifeBJ(targ , ( GetUnitStateSwap(UNIT_STATE_LIFE, targ) + ( 3 * heroint)))
endif
set nexttarg = GroupPickRandomUnit(postargets)
call RemoveLocation(p)
set p = GetUnitLoc(nexttarg)
set postargets = GetUnitsInRangeOfLocAll(500.00, p)
call GroupAddUnitSimple( targ, donetargets )
call GroupRemoveGroup( donetargets, postargets )
set prevtarg = targ
set targ = nexttarg
set heroint = ( ( heroint * 3 ) / 4 )
call TriggerSleepAction(0.01)
if lightA != null then
call DestroyLightning ( lightA )
endif
if lightB != null then
call DestroyLightning ( lightB )
endif
set lightA = null
set lightB = null
endloop
set cast = null
set targ = null
set prevtarg = null
set nexttarg = null
set p = null
set postargets = null
set donetargets = null
endfunction
function InitTrig_ChainHeal takes nothing returns nothing
set gg_trg_ChainHeal = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ( gg_trg_ChainHeal, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_ChainHeal, Condition(function Cond))
call TriggerAddAction( gg_trg_ChainHeal, function ChainHeal)
endfunction
scope ChainHeal initializer Init
private function Conditions takes nothing returns boolean
return GetSpellAbilityId() == 039;A002039;
endfunction
private function Actions takes nothing returns nothing
local unit cast = GetTriggerUnit()
local unit prevtarg
local unit targ = GetSpellTargetUnit()
local unit nexttarg
local location p = GetUnitLoc(targ)
local group postargets = GetUnitsInRangeOfLocAll( 500.00 , p)
local group donetargets = CreateGroup()
local integer noofdone = 0
local integer heroint = GetHeroStatBJ(bj_HEROSTAT_INT, cast, true)
local real x1 = GetUnitX(cast)
local real y1 = GetUnitY(cast)
local real x2 = GetUnitX(targ)
local real y2 = GetUnitY(targ)
local lightning lightA
local lightning lightB
if IsPlayerAlly(GetOwningPlayer(targ), GetOwningPlayer(cast)) == true and IsUnitInGroup( targ , donetargets ) == false then
set lightA = AddLightning("HWPB" , true , x1, y1 , x2 , y2 )
set lightB = AddLightning("HWSB" , true , x1, y1 , x2 , y2 )
call SetUnitLifeBJ(targ , ( GetUnitStateSwap(UNIT_STATE_LIFE, targ) + ( 3 * heroint)))
endif
set nexttarg = GroupPickRandomUnit(postargets)
call RemoveLocation(p)
set p = GetUnitLoc(nexttarg)
set postargets = GetUnitsInRangeOfLocAll(500.00, p)
call GroupAddUnitSimple( targ, donetargets )
call GroupRemoveGroup( donetargets, postargets )
set prevtarg = targ
set targ = nexttarg
set heroint = ( ( heroint * 3 ) / 4 )
set x1 = GetUnitX(prevtarg)
set y1 = GetUnitY(prevtarg)
set x2 = GetUnitX(targ)
set y2 = GetUnitY(targ)
call TriggerSleepAction(0.01)
if lightA != null then
call DestroyLightning ( lightA )
endif
if lightB != null then
call DestroyLightning ( lightB )
endif
set lightA = null
set lightB = null
loop
exitwhen noofdone == 16 or targ == null
if IsPlayerAlly(GetOwningPlayer(targ), GetOwningPlayer(cast)) == true and IsUnitInGroup( targ , donetargets ) == false then
set lightA = AddLightning("HWPB" , true , x1, y1 , x2 , y2 )
set lightB = AddLightning("HWSB" , true , x1, y1 , x2 , y2 )
call SetUnitLifeBJ(targ , ( GetUnitStateSwap(UNIT_STATE_LIFE, targ) + ( 3 * heroint)))
endif
set nexttarg = GroupPickRandomUnit(postargets)
call RemoveLocation(p)
set p = GetUnitLoc(nexttarg)
set postargets = GetUnitsInRangeOfLocAll(500.00, p)
call GroupAddUnitSimple( targ, donetargets )
call GroupRemoveGroup( donetargets, postargets )
set prevtarg = targ
set targ = nexttarg
set heroint = ( ( heroint * 3 ) / 4 )
call TriggerSleepAction(0.01)
if lightA != null then
call DestroyLightning ( lightA )
endif
if lightB != null then
call DestroyLightning ( lightB )
endif
set lightA = null
set lightB = null
endloop
set cast = null
set targ = null
set prevtarg = null
set nexttarg = null
set p = null
set postargets = null
set donetargets = null
endfunction
private function Init takes nothing returns nothing
local trigger trig = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ( trig, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( trig, Condition(function Conditions))
call TriggerAddAction( trig, function Actions)
endfunction
endscope
return GetSpellAbilityId() == 039;A002039;
I don't have the jass helper...if i will want to use vJass, the whole team working on a map will have to use jasshelper?
i downloaded jass helper, but it displays an error, when i want to switch it on...
it says it didn't find bin\SFmpq.dll