新規スキル案

「新規スキル案」の編集履歴(バックアップ)一覧はこちら

新規スキル案 - (2008/06/03 (火) 22:35:40) の1つ前との変更点

追加された行は緑色になります。

削除された行は赤色になります。

function Trig_Surprise_jump_attack_Conditions takes nothing returns boolean return GetSpellAbilityId() == 'A00F' endfunction function Surprise_jump_attack_Damage takes unit c,real x,real y,real AOE,real dam returns nothing local group G=CreateGroup() local unit uTMP local location lTMP call GroupEnumUnitsInRange(G,x,y,AOE,null) loop set uTMP=FirstOfGroup(G) exitwhen uTMP==null if IsUnitEnemy(uTMP,GetOwningPlayer(c))and IsUnitDeadBJ(uTMP)==false and GetUnitAbilityLevel(uTMP,'A04R')==0 then if(IsUnitType(uTMP,UNIT_TYPE_STRUCTURE)==false)then call UnitDamageTargetBJ(c,uTMP,dam,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_DEMOLITION) else call UnitDamageTargetBJ(c,uTMP,dam/3,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_DEMOLITION) endif set lTMP=GetUnitLoc(uTMP) call RemoveLocation(lTMP) call GroupRemoveUnit(G,uTMP) else call GroupRemoveUnit(G,uTMP) endif endloop call GroupClear(G) call DestroyGroup(G) endfunction function Surprise_jump_attack_Main takes nothing returns nothing local timer Tm=GetExpiredTimer() local string Tab=H2Tx(Tm) local real Range=GetReal(Tab,"Distance") local real Angle=GetReal(Tab,"Angle") local integer Count=GetInteger(Tab,"Counter") local unit Target=GetUnit(Tab,"GeyserTarget") local unit Caster=GetUnit(Tab,"Caster") local real Height=(Count-25)*(Count-25) local real slv=GetUnitAbilityLevel(Caster,'A00F') local real AOE=300+(slv*slv-slv)*50 local real dam=GetUnitAbilityLevel(Caster,'A009') local real SpeedMod=Range*Count/50-Range local location LTarget=GetUnitLoc(Target) local location lDest=PolarProjectionBJ(LTarget,SpeedMod,Angle) if ( Count < 51 ) then call SetUnitPositionLoc(Target,lDest) call SetUnitFlyHeight(Target,775-Height,0) set Count=Count+1 if(GetRandomInt(1,4)==2)then call DestroyEffect(AddSpecialEffectTargetUnitBJ("origin",Target,"Abilities\\Spells\\Undead\\Cripple\\CrippleTarget.mdl")) endif endif if ( Count > 50 ) then call SetUnitFlyHeight(Target,GetUnitDefaultFlyHeight(Target),0) call PauseUnit(Target,false) call SetUnitPathing(Target,true) call TerrainDeformationRippleBJ(.2,true,LTarget,1.,300.,96.,1,64.) call DestroyEffect(AddSpecialEffectTargetUnitBJ("origin",Target,"Abilities\\Spells\\Orc\\WarStomp\\WarStompCaster.mdl")) call Surprise_jump_attack_Damage(Caster,GetUnitX(Target),GetUnitY(Target),AOE,dam) call PauseTimer(GetExpiredTimer()) call PolledWait(.01) call FastFlush(Tab) call DestroyTimer(GetExpiredTimer()) call RemoveLocation(LTarget) call PauseUnitBJ( false, Target ) endif call SetInteger(Tab,"Counter",Count) call RemoveLocation(lDest) endfunction function Trig_Surprise_jump_attack_Actions takes nothing returns nothing local timer Tm=CreateTimer() local string lf5=H2Tx(Tm) local unit c=GetTriggerUnit() local location Start=GetUnitLoc(c) local location tp=GetSpellTargetLoc() local real Range=DistanceBetweenPoints(Start,tp) local real Angle=AngleBetweenPoints(Start,tp) call SetHandle(lf5,"Caster",c) call SetReal(lf5,"Distance",Range) call SetReal(lf5,"Angle",Angle) call SetInteger(lf5,"Counter",1) call TimerStart(Tm,.02,true,function Surprise_jump_attack_Main) endfunction function InitTrig_Surprise_jump_attack takes nothing returns nothing set gg_trg_Surprise_jump_attack = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_Surprise_jump_attack, EVENT_PLAYER_UNIT_SPELL_EFFECT ) call TriggerAddCondition( gg_trg_Surprise_jump_attack, Condition( function Trig_Surprise_jump_attack_Conditions ) ) call TriggerAddAction( gg_trg_Surprise_jump_attack, function Trig_Surprise_jump_attack_Actions ) endfunction
scope Blur private constant function GetAbi takes nothing returns integer return 'AEev' //The spell's raw code endfunction function Trig_Blur_Conditions takes nothing returns boolean return GetLearnedSkillBJ() == GetAbi() endfunction globals private real blur = 100 private unit caster endglobals private function Blur_Main takes nothing returns nothing local real MaxC = GetUnitAbilityLevel(caster,GetAbi()) * 25 local real MinC = ( GetUnitAbilityLevel(caster,GetAbi()) - 1 ) * 25 set blur = blur + GetRandomReal(-3,3) if ( blur < MinC ) then set blur = MinC elseif ( blur > MaxC ) then set blur = MaxC endif call SetUnitVertexColorBJ(caster,100,100,100,blur) endfunction private function Trig_Blur_Actions takes nothing returns nothing local timer tm if ( GetUnitAbilityLevel(GetLearningUnit(),GetAbi()) == 1 ) then set caster = GetLearningUnit() set tm = CreateTimer() call TimerStart(tm,0.2,true,function Blur_Main) endif endfunction //=========================================================================== function InitTrig_Blur takes nothing returns nothing set gg_trg_Blur = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_Blur, EVENT_PLAYER_HERO_SKILL ) call TriggerAddCondition( gg_trg_Blur, Condition( function Trig_Blur_Conditions ) ) call TriggerAddAction( gg_trg_Blur, function Trig_Blur_Actions ) endfunction endscope

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。