function Trig_EHunter02_Conditions takes nothing returns boolean
if ( not ( GetAttacker() == udg_Character ) ) then
return false
endif
return true
endfunction
function HunterT01_Conditions takes nothing returns boolean
if ( not GetBooleanAnd( GetEventDamage() > 0.00, GetEventDamageSource() == udg_Character ) ) then
return false
endif
return true
endfunction
function HunterT01_Actions takes nothing returns nothing
local location Cha = GetUnitLoc(udg_Character)
if ( not ( GetRandomInt(1, 100) <= 25 ) ) then
call UnitDamageTargetBJ( udg_DamageDummy01, GetTriggerUnit(), GetEventDamage(), ATTACK_TYPE_HERO, DAMAGE_TYPE_NORMAL )
call CreateTextTagLocBJ( ( I2S(R2I(( 2.00 * GetEventDamage() ))) + "!" ), Cha, 75.00, 10.00, 100.00, 0.00, 0.00, 0 )
call SetTextTagPermanentBJ( GetLastCreatedTextTag(), false )
call SetTextTagLifespanBJ( GetLastCreatedTextTag(), 2.25 )
call SetTextTagVelocityBJ( GetLastCreatedTextTag(), 64, 90 )
call CreateNUnitsAtLoc( 1, 'h005', GetOwningPlayer(udg_Character), Cha, bj_UNIT_FACING )
call SetUnitAbilityLevelSwapped( 'A004', GetLastCreatedUnit(), GetUnitAbilityLevelSwapped('A003', udg_Character) )
call IssueTargetOrderBJ( GetLastCreatedUnit(), "acidbomb", GetTriggerUnit() )
call UnitApplyTimedLifeBJ( 0.30, 'BTLF', GetLastCreatedUnit() )
call SetUnitLifeBJ( udg_Character, ( GetUnitStateSwap(UNIT_STATE_LIFE, udg_Character) + ( 30.00 + ( 15.00 * I2R(GetUnitAbilityLevelSwapped('A003', udg_Character)) ) ) ) )
call AddSpecialEffectTargetUnitBJ( "origin", udg_Character, "Abilities\\Spells\\Undead\\VampiricAura\\VampiricAuraTarget.mdl" )
call DestroyEffectBJ( GetLastCreatedEffectBJ() )
else
endif
call RemoveLocation(Cha)
call DestroyTrigger( GetTriggeringTrigger() )
endfunction
function Trig_EHunter02_Actions takes nothing returns nothing
local trigger HunterT01 = CreateTrigger()
call TriggerRegisterUnitEvent( HunterT01, GetTriggerUnit(), EVENT_UNIT_DAMAGED )
call TriggerAddCondition( HunterT01, Condition( function HunterT01_Conditions ) )
call TriggerAddAction( HunterT01, function HunterT01_Actions )
endfunction
//===========================================================================
function InitTrig_EHunter02 takes nothing returns nothing
set gg_trg_EHunter02 = CreateTrigger( )
call DisableTrigger( gg_trg_EHunter02 )
call TriggerRegisterAnyUnitEventBJ( gg_trg_EHunter02, EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition( gg_trg_EHunter02, Condition( function Trig_EHunter02_Conditions ) )
call TriggerAddAction( gg_trg_EHunter02, function Trig_EHunter02_Actions )
endfunction
영웅(udg_Character)이 공격모션을 취하면 공격 당하는놈을 변수로 저장하여 1회용 트리거에 공격 받음 이벤트로 추가시키고,
1회용 트리거에서 데미지 받음이 성립되면 확률에따라 스킬효과가 발동됩니다.
그리고 마지막에 트리거를 파괴해줍니다.
이 맵은 1인용 맵입니다.
캐릭터 공격의 경우 평타말고 나머지 스킬 데미지는 전부 더미가 주도록 해 놨고..
아이템중에 이몰레이션 효과있는 아이템도 없어서 저정도로 해놔도 발동자체에 오류는 없을듯 한데.
누수가 걱정되네요. 지점은 지웠지만;
그냥 보기엔 없는것 같은데 뭔가좀 찝찝해서..
그리고 한가지더 질문하자면
분명 확률은 25%인데
너무 잘 터집니다.ㅠ? 뭔가 확률이 이상해요..
---------------------
계속 보다보니 빗나감이 뜨거나 모션 취하는 중에 옆에서 다른 뭔가가 데미지를 주면 1회용 트리거가 안없어지고 찌꺼기로 남을것 같기도 한데 잘 몰겠슴다
Trig_EHunter02_Actions 에서 데미지 백스윙 포인트 수치만큼 대기시간 주고 마지막에 트리거 파괴할까도 생각해봤는데
공속 빨라지면 꼬일거 같기도..
근대 s신공쓰면 트리거가 슥슥 중첩되서 한방 팍 치는순간 몰렸던 트리거가 한번에 터져버릴것 같은데욤