Góp vui tí
function Trig_2707_Conditions takes nothing returns boolean
if(not(IsUnitAlly(GetAttacker(),Player(0)))) then
return false
endif
if(not(IsUnitType(GetAttacker(),UNIT_TYPE_HERO))) then
return false
endif
return true
endfunction
function Trig_2707_Func01 takes nothing returns boolean
return(IsUnitAliveBJ(GetFilterUnit())==true)
endfunction
function Trig_2707_Func02 takes nothing returns boolean
return(IsUnitEnemy(GetFilterUnit(),GetOwningPlayer(GetAttacker()))==true)
endfunction
function Trig_2707_Func03 takes nothing returns boolean
return GetBooleanAnd(Trig_2707_Func01(),Trig_2707_Func02())
endfunction
function Trig_2707_Func04 takes nothing returns nothing
local unit att=GetAttacker()
local integer i=GetRandomInt(1,100)
local location C=GetUnitLoc(GetTriggerUnit())
local location R=GetUnitLoc(GetAttacker())
local location E=GetUnitLoc(GetAttackedUnitBJ())
local real SH=CountUnitsInGroup(GetUnitsInRangeOfLocMatching((1000.00+GetRandomReal(800,2500)),R,Condition(function Trig_2707_Func03)))
local real A=(I2R(GetHeroStr(att,true)+GetHeroAgi(att,true)+GetHeroInt(att,true))*SquareRoot(I2R(GetUnitLevel(att))))
local real S= DistanceBetweenPoints(R,E)
call SetUnitLifeBJ(att,(GetUnitState(att,UNIT_STATE_LIFE)+(GetUnitState(att,UNIT_STATE_MAX_LIFE)*2.00)))
if i>=(20+(GetUnitLevel(att)*SH)/S) and S>=550 and S<=1000 then
call UnitDamageTargetBJ(att,GetEnumUnit(),((A*SH)+S)/1000,ATTACK_TYPE_SIEGE,DAMAGE_TYPE_ENHANCED)
call ModifyHeroStat(bj_HEROSTAT_STR,att,bj_MODIFYMETHOD_ADD,R2I(GetRandomReal(1,(GetUnitLevel(att)*SH)/S)))
call ModifyHeroStat(bj_HEROSTAT_AGI,att,bj_MODIFYMETHOD_ADD,R2I(GetRandomReal(1,(GetUnitLevel(att)*SH)/S)))
call ModifyHeroStat(bj_HEROSTAT_INT,att,bj_MODIFYMETHOD_ADD,R2I(GetRandomReal(1,(GetUnitLevel(att)*SH)/S)))
call DestroyEffect(AddSpecialEffectTargetUnitBJ("origin",GetEnumUnit(),"Abilities\\Spells\\Orc\\LightningBolt\\LightningBoltMissile.mdl"))
else
endif
if i>=(15+(GetUnitLevel(att)*SH)/S) and S>=501 and S<=600 then
call UnitDamageTargetBJ(att,GetEnumUnit(),((A*SH)+S)/880,ATTACK_TYPE_SIEGE,DAMAGE_TYPE_ENHANCED)
call ModifyHeroStat(bj_HEROSTAT_STR,att,bj_MODIFYMETHOD_ADD,R2I(GetRandomReal(2,(GetUnitLevel(att)*SH)/S)))
call ModifyHeroStat(bj_HEROSTAT_AGI,att,bj_MODIFYMETHOD_ADD,R2I(GetRandomReal(2,(GetUnitLevel(att)*SH)/S)))
call ModifyHeroStat(bj_HEROSTAT_INT,att,bj_MODIFYMETHOD_ADD,R2I(GetRandomReal(2,(GetUnitLevel(att)*SH)/S)))
call DestroyEffect(AddSpecialEffectTargetUnitBJ("origin",GetEnumUnit(),"Abilities\\Spells\\Orc\\LightningBolt\\LightningBoltMissile.mdl"))
else
endif
if i>=(12+(GetUnitLevel(att)*SH)/S) and S>=401 and S<=500 then
call UnitDamageTargetBJ(att,GetEnumUnit(),((A*SH)+S)/660,ATTACK_TYPE_SIEGE,DAMAGE_TYPE_ENHANCED)
call ModifyHeroStat(bj_HEROSTAT_STR,att,bj_MODIFYMETHOD_ADD,R2I(GetRandomReal(3,(GetUnitLevel(att)*SH)/S)))
call ModifyHeroStat(bj_HEROSTAT_AGI,att,bj_MODIFYMETHOD_ADD,R2I(GetRandomReal(3,(GetUnitLevel(att)*SH)/S)))
call ModifyHeroStat(bj_HEROSTAT_INT,att,bj_MODIFYMETHOD_ADD,R2I(GetRandomReal(3,(GetUnitLevel(att)*SH)/S)))
call DestroyEffect(AddSpecialEffectTargetUnitBJ("origin",GetEnumUnit(),"Abilities\\Spells\\Orc\\LightningBolt\\LightningBoltMissile.mdl"))
else
endif
if i>=(10+(GetUnitLevel(att)*SH)/S) and S>=301 and S<=400 then
call UnitDamageTargetBJ(att,GetEnumUnit(),((A*SH)+S)/440,ATTACK_TYPE_SIEGE,DAMAGE_TYPE_ENHANCED)
call ModifyHeroStat(bj_HEROSTAT_STR,att,bj_MODIFYMETHOD_ADD,R2I(GetRandomReal(4,(GetUnitLevel(att)*SH)/S)))
call ModifyHeroStat(bj_HEROSTAT_AGI,att,bj_MODIFYMETHOD_ADD,R2I(GetRandomReal(4,(GetUnitLevel(att)*SH)/S)))
call ModifyHeroStat(bj_HEROSTAT_INT,att,bj_MODIFYMETHOD_ADD,R2I(GetRandomReal(4,(GetUnitLevel(att)*SH)/S)))
call DestroyEffect(AddSpecialEffectTargetUnitBJ("origin",GetEnumUnit(),"Abilities\\Spells\\Orc\\LightningBolt\\LightningBoltMissile.mdl"))
else
endif
if i>=(7+(GetUnitLevel(att)*SH)/S) and S>=201 and S<=300 then
call UnitDamageTargetBJ(att,GetEnumUnit(),((A*SH)+S)/230,ATTACK_TYPE_SIEGE,DAMAGE_TYPE_ENHANCED)
call ModifyHeroStat(bj_HEROSTAT_STR,att,bj_MODIFYMETHOD_ADD,R2I(GetRandomReal(5,(GetUnitLevel(att)*SH)/S)))
call ModifyHeroStat(bj_HEROSTAT_AGI,att,bj_MODIFYMETHOD_ADD,R2I(GetRandomReal(5,(GetUnitLevel(att)*SH)/S)))
call ModifyHeroStat(bj_HEROSTAT_INT,att,bj_MODIFYMETHOD_ADD,R2I(GetRandomReal(5,(GetUnitLevel(att)*SH)/S)))
call DestroyEffect(AddSpecialEffectTargetUnitBJ("origin",GetEnumUnit(),"Abilities\\Spells\\Orc\\LightningBolt\\LightningBoltMissile.mdl"))
else
endif
if i>=(5+(GetUnitLevel(att)*SH)/S) and S>=0 and S<=200 then
call UnitDamageTargetBJ(att,GetEnumUnit(),((A*SH)+S)/120,ATTACK_TYPE_SIEGE,DAMAGE_TYPE_ENHANCED)
call ModifyHeroStat(bj_HEROSTAT_STR,att,bj_MODIFYMETHOD_ADD,R2I(GetRandomReal(6,(GetUnitLevel(att)*SH)/S)))
call ModifyHeroStat(bj_HEROSTAT_AGI,att,bj_MODIFYMETHOD_ADD,R2I(GetRandomReal(6,(GetUnitLevel(att)*SH)/S)))
call ModifyHeroStat(bj_HEROSTAT_INT,att,bj_MODIFYMETHOD_ADD,R2I(GetRandomReal(6,(GetUnitLevel(att)*SH)/S)))
call DestroyEffect(AddSpecialEffectTargetUnitBJ("overhead",GetEnumUnit(),"Abilities\\Spells\\Orc\\LightningBolt\\LightningBoltMissile.mdl"))
else
endif
set C=null
set att=null
set R=null
set E=null
endfunction
function Trig_2707_Actions takes nothing returns nothing
local location C=GetUnitLoc(GetTriggerUnit())
local group G=GetUnitsInRangeOfLocMatching((600.00+GetRandomReal(100,1500)),C,Condition(function Trig_2707_Func03))
call CreateTextTagLocBJ("Ha Ha",C,90.,5.,100,.0,.0,0)
call SetTextTagVelocityBJ(GetLastCreatedTextTag(),90.,90)
call SetTextTagPermanent(GetLastCreatedTextTag(),false)
call SetTextTagLifespan(GetLastCreatedTextTag(),3.)
call SetTextTagFadepoint(GetLastCreatedTextTag(),1.)
call ForGroupBJ(G,function Trig_2707_Func04)
call GroupClear(G)
call DestroyGroup(G)
call RemoveLocation(C)
set C=null
set G=null
endfunction
function InitTrig_2707 takes nothing returns nothing
set gg_trg_2707=CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(gg_trg_2707,EVENT_PLAYER_UNIT_ATTACKED)
call TriggerAddCondition(gg_trg_2707,Condition(function Trig_2707_Conditions))
call TriggerAddAction(gg_trg_2707,function Trig_2707_Actions)
endfunction
mô tả trigger khi player 0 attack có % gây damage trong 1 khu vực và được+vào stat(damage +stat và % hit phụ thuộc vào khoảng cách giữa player và unit và số lượng unit trong range)