倚天魔兽

 找回密码
 立即注册
查看: 4784|回复: 1
打印 上一主题 下一主题

永恒3C无限全部源代码

[复制链接]
跳转到指定楼层
楼主
发表于 2013-4-17 23:37:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
globals
//globals from YDWEBase:
constant boolean LIBRARY_YDWEBase=true
//全局缓存
        //integer abcdefghij = 15
string bj_AllString=".................................!.#$%&'()*+,-./0123456789:;<=>.@ABCDEFGHIJKLMNOPQRSTUVWXYZ[.]^_`abcdefghijklmnopqrstuvwxyz{|}~................................................................................................................................"
//全局系统变量
unit bj_lastAbilityCastingUnit=null
unit bj_lastAbilityTargetUnit=null
unit bj_lastPoolAbstractedUnit=null
unitpool bj_lastCreatedUnitPool=null
item bj_lastMovedItemInItemSlot=null
item bj_lastCombinedItem=null
item bj_lastPoolAbstractedItem=null
itempool bj_lastCreatedItemPool=null
attacktype bj_lastSetAttackType= ATTACK_TYPE_NORMAL
damagetype bj_lastSetDamageType= DAMAGE_TYPE_NORMAL
weapontype bj_lastSetWeaponType= WEAPON_TYPE_WHOKNOWS
real yd_MapMaxX=0
real yd_MapMinX=0
real yd_MapMaxY=0
real yd_MapMinY=0
//跳跃系统优先级
integer MoveMoreLevel_JumpTimer=3
//TimerSystem
timer TimerSystem_TimerZero=null
//        timer TimerSystem_Timer=null         //最小时间计时器  可以自动开启和关闭
real TimerSystem_Timeout=0.01
integer TimerSystem_Steps=0
integer TimerSystem_StepsMax=0
timer TimerSystem_BigTimer=null
real TimerSystem_BigTimeout=1
integer TimerSystem_BigSteps=0
integer TimerSystem_RunIndex=0
//系统数组
force FilterFuncSyStem_force
filterfunc array FilterFuncSyStem_filterfunc
integer FilterFuncSyStem_Index=0
//endglobals from YDWEBase
//globals from Around:
constant boolean LIBRARY_Around=true
constant timer Around__AROUND_TIM= CreateTimer()
constant real Around__AROUND_INTER= 0.01
//endglobals from Around
//globals from YDWEJumpTimer:
constant boolean LIBRARY_YDWEJumpTimer=true
//endglobals from YDWEJumpTimer
//globals from YDWEMath:
constant boolean LIBRARY_YDWEMath=true
location yd_locHelper= Location(0.0, 0.0)
//endglobals from YDWEMath
//globals from YDWESetGuard:
constant boolean LIBRARY_YDWESetGuard=true
//endglobals from YDWESetGuard
//globals from YDWETimerSystem:
constant boolean LIBRARY_YDWETimerSystem=true
force yd_RunBoolexpr
integer yd_ctimer_current_index
integer yd_ctimer_list_index
integer yd_ctimer_list_proc_index
boolean array yd_ctimer_list_index_boolean
boolexpr array yd_ctimer_list_proc
boolexpr yd_ctimer_RemoveUnit_proc
boolexpr yd_ctimer_DestroyTimer_proc
boolexpr yd_ctimer_RemoveItem_proc
boolexpr yd_ctimer_DestroyEffect_proc
boolexpr yd_ctimer_DestroyLightning_proc
boolexpr yd_ctimer_RunTrigger_proc
timer TimerSystem_Timer
//    force FilterFuncSyStem_force
//endglobals from YDWETimerSystem
//globals from YDWETriggerEvent:
constant boolean LIBRARY_YDWETriggerEvent=true
//endglobals from YDWETriggerEvent
//globals from YDWETimerPattern:
constant boolean LIBRARY_YDWETimerPattern=true
constant real YDWETimerPattern__TIMER_PATTERN_RADIUS= 120.0
        //private location loc = Location(0.0, 0.0)
boolexpr YDWETimerPattern__bexpr= null
rect YDWETimerPattern__area= null
//endglobals from YDWETimerPattern
    // User-defined
boolean array udg_Occupy
boolean array udg_PlayerLeft
integer array udg_BetPlayerClicked
sound array udg_StompSound
integer udg_i= 0
string array udg_PlayerColor
unit array udg_Init_Hero_Unit
rect array udg_Region
location array udg_Region_Centers
location udg_Temp_Point= null
group udg_Shield_Group= null
group udg_Shield_Group_Count= null
location udg_Temp_Point2= null
effect udg_CycloneEffect= null
location udg_Explode_Corpes_Position= null
location udg_Fanofknives_Piont= null
location udg_Chute_Random_Point= null
group udg_Chute_Target_Group= null
location udg_Chute_Target_Point= null
unit udg_Whirlwind_Unit= null
unit udg_Orb_Die= null
unit udg_Orb_Effect= null
effect udg_StompTargetEffect= null
unit udg_StompTarget= null
unit array udg_StompDooms
location udg_MoreArrowTPoint= null
location udg_Target_Point= null
integer udg_Mode= 0
trigger udg_Temp_Trigger= null
unit array udg_Divine_Unit1
force udg_LightPlayerGroup= null
force udg_DarkPlayerGroup= null
integer udg_OnLinePlayerLight= 0
integer udg_OnLinePlayerDark= 0
integer udg_Experience_Dark= 0
integer udg_Experience_Light= 0
boolean udg_Multitude_PK_Mode= false
boolean udg_Multitude_PK_Request= false
unit udg_DestinyUnit= null
boolean udg_SPK_ModeOn= false
player udg_SPK_YaoqingPlayer= null
unit udg_SPK_YaoqingUnit= null
player udg_SPK_JieshouPlayer= null
unit udg_SPK_JieshouUnit= null
player udg_SPK_WinnerPlayer= null
unit udg_SPK_WinUnit= null
effect udg_GO= null
effect udg_NoOrYes= null
timer udg_SPK_DialogTimeOut= null
dialog udg_SPK_Dialog= null
timerdialog udg_TimerWindowSPK_Dialog= null
player udg_NullPlayer= null
button udg_SPK_Accept= null
button udg_SPK_Reject= null
timer udg_TimerSPK= null
timerdialog udg_TimerWindowSPK= null
boolean udg_HeroInPKArea= false
integer udg_LightBuildLevel= 0
integer udg_LevelDifference= 0
unit udg_SPK_LostUnit= null
player array udg_BetPlayer
unit array udg_Divine_Unit2
timer udg_BetSPKTimeOut= null
timerdialog udg_TimerWindowBet= null
integer udg_ClickedDone= 0
unit udg_MPK_YaoqingUnit= null
integer array udg_MPK_Clicked
integer udg_MPK_DialogAmount= 0
integer udg_MPK_DialogAmount_Light= 0
integer udg_MPK_DialogAmount_Dark= 0
timer udg_MPK_TimeOut= null
timerdialog udg_TimerWindowMPK= null
integer udg_MPK_ClickedDone= 0
integer udg_MPK_Clicked_Accept_Light= 0
integer udg_MPK_Clicked_Accept_Dark= 0
integer udg_MPK_Clicked_Reject_Dark= 0
integer udg_MPK_Clicked_Reject_Light= 0
timer udg_MPK_ReadyTime= null
timerdialog udg_TimerWindowMPK_Ready= null
real udg_MPK_Value_Light= 0
group udg_MPK_Group_Light= null
group udg_MPK_Group_Dark= null
integer udg_MPK_Light_Bounty= 0
integer udg_MPK_Dark_Bounty= 0
boolean udg_DestinyState= false
integer udg_RandomDestiny= 0
boolean udg_PlayerOneTrue= false
player udg_PlayerOne= null
boolean array udg_PlayerModeSet
timer udg_Player_Mode_Set= null
timerdialog udg_TimerWindowPlayerModeSet= null
dialog udg_ChooseHeroMode= null
button udg_FreeHeroSelect= null
button udg_RandomAllHero= null
group udg_Attack_Group_Light= null
integer udg_DarkBuildLevel= 0
integer udg_ForceLevel= 0
integer udg_Game_Time_Seconds= 0
integer udg_Game_Time_Minutes= 0
integer udg_Game_Time_Hours= 0
integer udg_Game_Time_TenSeconds= 0
integer udg_Game_Time_TenMinutes= 0
string udg_Game_Time_String
integer udg_RandomHeroID= 0
integer udg_MoneyToEach= 0
integer udg_MoneyToSplit= 0
location udg_Shield_Point= null
unit array udg_VoodooUnit
group udg_Roulette_Targets_Group= null
unit array udg_Roulette_Target
location array udg_Roulette_Point
terraindeformation udg_Roulette_Deformation= null
location udg_Roulette_Caster_Point= null
group udg_Roulette_Caster_Group= null
unit array udg_Roulette_Caster
location udg_Quake_Point= null
boolean udg_LightFireMode= false
effect array udg_Ligtht_Fire_Effect
location array udg_EffectPoint
integer udg_Wind_Current_Shadows= 0
real udg_Wind_Jump_Distance= 0
boolean udg_Wind_Jump_Mode= false
unit array udg_Wind_Jump_Shadow
unit udg_Wind_Jump_Target= null
location udg_Wind_Jump_Target_Point= null
unit udg_Wind_Jump_Unit= null
location udg_Wind_Jump_Unit_Point= null
integer udg_MAX_LOOP= 0
integer udg_MAX_SHADOWS= 0
integer udg_Index= 0
integer udg_x= 0
real udg_Angle= 0
unit udg_Temp_Unit= null
integer udg_TimeSecond= 0
location array udg_Skill_bm
location array udg_Skill_lich
location array udg_Skill_LE
integer udg_Skill_PLn= 0
real udg_JunpIndex= 0
unit udg_JumpCaster= null
real udg_JumpAngle= 0
real udg_JumpdDist= 0
location array udg_Skill_PL
dialog udg_ChooseMatchMode= null
button udg_ChooseMatchModeFun= null
button udg_ChooseMatchModeNoFun= null
force udg_Play_OB= null
integer udg_TimeMinute= 0
unit udg_Image_Unit= null
location udg_MoreArrowEffectPoint= null
integer udg_MoreArrowEffectNum= 0
unit udg_MoreArrowEffectUnit= null
location udg_ThunderclapPoint= null
integer udg_ThunderclapNum= 0
real udg_ThunderclapAngle= 0
location udg_ThunderclapHeroPoint= null
timer array udg_ReviveTimer
timerdialog array udg_TimerWindow
force udg_Groups_Message= null
dialog array udg_MPK_Player
button array udg_MPK_Accept
button array udg_MPK_Reject
dialog array udg_BetPK
button array udg_PKWin_Yaoqing
button array udg_PKWin_Jieshou
button array udg_Dogfall
button array udg_Disclaim
group udg_DeathKill_Group= null
integer udg_CFS_N= 0
integer udg_CFS_M= 0
location udg_CFS_P= null
gamecache udg_GC_HeroRevive= null
group udg_Defend_Group= null
integer udg_Defend_N= 0
group udg_MoreDRAN_Group= null
boolean udg_MarchMode= false
integer udg_BetDialogAmount= 0
boolean array udg_Notify
location udg_Moonlight_Point= null
unit udg_Moonlight_Unit= null
rect udg_Chunte_Zoon= null
group udg_Chute_Group= null
rect udg_Quake_Zoon= null
location udg_Bumo_Hero_Point= null
location udg_Bump_Point= null
location udg_Laser_Point= null
location udg_Laser_Hero_Point= null
location array udg_N545_Point
group udg_Roar_Group= null
location udg_Roar_Point= null
dialog udg_ChoosePickMode= null
button udg_PickOwner= null
button udg_PickAll= null
string array udg_Hexa
boolean udg_CampChangeYorN= false
location udg_StopmTargetPoint= null
integer udg_AI_Random_Way= 0
group udg_AI_Hero_Light= null
group udg_AI_Hero_Dark= null
group udg_Attack_Group_Dark= null
gamecache udg_GC= null
unit udg_AI_hero= null
integer udg_AI_i= 0
integer udg_AI_type= 0
integer array udg_AI_Ability
string array udg_AI_learn_sequence
boolean array udg_NotIngame
location udg_Pal_Roar_Point= null
boolean udg_DeathMode= false
dialog udg_ChooseDeathMode= null
button udg_ChooseDeathModeT= null
button udg_ChooseDeathModeF= null
unit udg_Check_Hero= null
timer udg_Roar_Timer= null
location udg_Volcano_Point= null
boolean udg_RandomHero= false
real udg_MPK_Value_Dark= 0
integer array udg_HeroOwner
integer array udg_HeroType
unit array udg_SwapHero
integer array udg_Swap_I
unit array udg_Swap_Hero
player array udg_Swap_Player
leaderboard udg_Rank= null
timer udg_MagicShield_Timer= null
timer udg_WaterChain_Timer= null
timer udg_Whirlwind_Timer= null
force udg_TopGroup= null
force udg_BotGroup= null
real udg_DarkPortalDamage= 0
location udg_DarkPortalPoint= null
group udg_DarkPortalGroup= null
multiboard udg_MultiPanel= null
integer array udg_DestroyTowerNum
integer array udg_BuyCCRNum
integer array udg_BuyMerNum
integer array udg_HeroNum
integer array udg_HeroKillNum
integer array udg_HeroDeathNum
string array udg_HeroLogo
integer array udg_HeroResurNum
integer array udg_UseJFNum
integer array udg_UseTTNum
integer array udg_UseCSNum
integer array udg_UseCMNum
integer array udg_Morse
item array udg_MorseItem
integer udg_Returnmode= 0
force udg_ReturnPlayers= null
force udg_DisablehelpPlayers= null
location udg_MoreArrowUPoint= null
group udg_Roulette_Pick_Group= null
timer udg_CycloneTimer= null
integer array udg_UseJHNum
integer array udg_BuyCCCNum
timer udg_DuskTimer= null
integer udg_DuskNum= 0
real udg_Roulette_Angel= 0
rect udg_RoarRect= null
unit udg_DarkPortalUnit= null
integer udg_StompNum= 0
timer array udg_TimerOfRush
integer udg_MagicShieldNum= 0
integer udg_WhirlwindNum= 0
location udg_TriggerPointA= null
location udg_TriggerPointB= null
group udg_TriggerGroupA= null
string array udg_PlayerNames
location array udg_TempPoint
location array udg_LightningRoarPoint
integer udg_LightningRoarNum= 0
boolean udg_AllCampPick= false
group udg_kof97_cd_group= null
timer udg_timerd_cd= null
unit array udg_unit
location udg_point= null
effect udg_TX= null
integer udg_zhengshu= 0
group udg_zu= null
unit udg_chufa= null
unit udg_mubiao= null
location array udg_dian
unit array udg_danwei
integer array udg_zhengchu
real array udg_shishu
boolean array udg_buer
effect udg_texiao= null
timer udg_JSQ= null
group udg_direnzu2= null
group udg_shanghaizu= null
group udg_wuxingzu= null
group udg_wuxingjiaxuezu= null
group udg_wuxingzhuandongzu= null
group udg_wuxingxiaoguozu= null
group udg_wuxingshanghaizu= null
integer udg_MH_Level= 0
real udg_MH_Angle= 0
unit array udg_MH_Unit
integer udg_MH_Links= 0
unit array udg_MH_Link
group udg_Temp_Group= null
string array udg_noodle
boolean udg_boolean= false
location array udg_p
unit array udg_u
real udg_Xo= 0
real udg_Yo= 0
real udg_Zo= 0
timer udg_t= null
real udg_radius= 0
real array udg_dis
group array udg_g
integer array udg_n
integer array udg_angle
real array udg_X
real array udg_Y
real array udg_Z
lightning array udg_SD1
real array udg_h
integer array udg_num
location array udg_PointPlayer
unit udg_Hero_Hong= null
unit udg_Unit_Hong= null
location array udg_P_Hong
integer array udg_Int_Hong
destructable udg_Tree_Hong= null
unit udg_CJUnit_Hong= null
timer array udg_ReviveTimer1
timerdialog array udg_TimerWindow1
boolean udg_Multitude_PK_RequestAA= false
boolean udg_Multitude_PK_ModeAAA= false
boolean udg_HeroInPKAreaAAA= false
timer array udg_ReviveTimer2
timerdialog array udg_TimerWindow2
timer udg_MPK_ReadyTime1= null
timerdialog udg_TimerWindowMPK_Ready1= null
timer udg_MPK_ReadyTime2= null
timerdialog udg_TimerWindowMPK_Ready2= null
unit array udg_X_Hero
location array udg_X_Point
real array udg_X_Real
timer udg_X_Timer= null
unit udg_jurendedw= null
unit array udg_aa
real array udg_b
real udg_basicdamage= 0
real array udg_damage
location udg_loc= null
location udg_locoff= null
integer udg_loop= 0
unit udg_triunit= null
location udg_Ravage= null
timer udg_MPK_ReadyTime3= null
timerdialog udg_TimerWindowMPK_Ready3= null
timer udg_MPK_ReadyTime4= null
timerdialog udg_TimerWindowMPK_Ready4= null
unit udg_zyzs_unit= null
group udg_zy= null
integer udg_langshijian= 0
unit array udg_lq
real udg_lqelt= 0
unit array udg_DW
location udg_D1= null
location udg_D2= null
location udg_D3= null
group udg_zytt= null
group udg_lqelt_zu= null
group udg_zy_xiongmao= null
integer udg_zs= 0
unit udg_z_niu= null
location udg_z_mubiao= null
force udg_wanjiazu= null
real array udg_bingfengqiu_15sjss
integer array udg_bingfengqiu_blcishu
boolean array udg_bingfengqiu_boz
trigger udg_bingfengqiu_chufa= null
location array udg_bingfengqiu_jnd
integer udg_bingfengqiu_jsq= 0
real array udg_bingfengqiu_juli
unit udg_bingfengqiu_jusfdw= null
location array udg_bingfengqiu_mld
location array udg_bingfengqiu_sfd
boolean array udg_bingfengqiu_sjboz
real array udg_bingfengqiu_sjjuss
real array udg_bingfengqiu_sjss
real array udg_bingfengqiu_sjsunhuan
real array udg_bingfengqiu_sudu
real array udg_bingfengqiu_sulv
real array udg_bingfengqiu_x
real array udg_bingfengqiu_y
location array udg_bingfengqiu_yyd
integer array udg_bingfengqiu_zhblgeshu
real array udg_bingfengqiu_zuizhongcd
texttag array udg_PIAO
group array udg_qiuqiu_dwz
location udg_qiuqiu_jnd= null
integer array udg_wanjia_mfbj_jilv
group udg_zy_jufeng= null
leaderboard array udg_Panel
item udg_chenmo= null
real udg_chenmocishu= 0
unit array udg_A_______u
unit array udg_AQ
unit array udg_AQ2
integer array udg_DQ
integer array udg_DQ2
integer array udg_DQ3
real array udg_EQ
location array udg_IQ
group array udg_OQ
timer array udg_RQ
location array udg_dianw
real udg_shishuw= 0
integer udg_zhenshuw= 0
real array udg_PDSP_Add_High
real array udg_PDSP_Angle
group udg_PDSP_Group= null
real array udg_PDSP_High
boolean udg_PDSP_On= false
location array udg_PDSP_Point
location array udg_PDSP_Point_Part_Time
location array udg_PDSP_Test_Point
timer udg_PDSP_Timer= null
unit array udg_PDSP_Unit
integer array udg_Unit_Int
location udg_adian= null
real array udg_Mudun_Shujie_Chicun
location array udg_Mudun_Shujie_Point
group array udg_Mudun_Shujie_Shu
location array udg_Renshu_5W
group array udg_Renshu_5W_Z
location udg_dian104= null
integer udg_jiduishuzi= 0
unit array udg_jituidanwei
group udg_jituidanweizu= null
real array udg_jituidiaodu3
real array udg_jituijiaodu1
real udg_jituijiaodu2= 0
location udg_jituipoint= null
effect udg_jituixiaoguo= null
location array udg_movepoint
integer udg_shu= 0
location array udg_targetpointa
unit array udg_unittt
effect udg_xiaoguo= null
group udg_Shuidun_Shuizhenbi= null
location array udg_Temp_PointB
unit array udg_Tunit
location array udg_Tpoint
real array udg_Tdamage
group array udg_Tteam
integer array udg_TNumberZ
location udg_dianlong= null
location udg_dianS= null
location udg_dianshui= null
location udg_dianshuibo= null
group array udg_SL
location udg_locoffQQ= null
unit array udg_KKX_Hero
real array udg_KKX_N
location array udg_KKX_Point
button udg_ChooseDeathModeG= null
location array udg_afuhuodian
boolean udg_HerogerenPK= false
timer array udg_ReviveTimer3
timerdialog array udg_TimerWindow3
timer udg_MPK_ReadyTime5= null
timerdialog udg_TimerWindowMPK_Ready5= null
real array udg_Asiwangcishu
real udg_Amenkan= 0
force udg_Alianmengzu= null
real udg_Awanjiashu= 0
location array udg_D5
real udg_zongtiwanjiashu= 0
force udg_suoyouwanjia= null
multiboard udg_MultiPanel2= null
force udg_panghangzu= null
real udg_niudun= 0
integer udg_niudunzheng= 0
group udg_zy_jufeng2= null
timer udg_t2= null
group udg_fmh= null
group udg_najia30= null
boolean udg_najia31= false
timer udg_ttt= null
group udg_wuyao15= null
integer udg_najiashu= 0
location udg_najia30dian= null
boolean udg_Multitude_PK_RequestBB= false
boolean udg_HeroInPKAreaBB= false
boolean udg_Multitude_PK_ModeBB= false
real udg_feifeiguangming= 0
real udg_feifeiheian= 0
location array udg_feifeidian
timer array udg_ReviveTimer4
timerdialog array udg_TimerWindow4
real array udg_feifeishengming
timer udg_MPK_ReadyTime6= null
timerdialog udg_TimerWindowMPK_Ready6= null
location array udg_jiansheng
group array udg_jianshengzu
boolean udg_jianshengsiwang= false
boolean udg_JIANSHENG15= false
location array udg_D6
location udg_dian2= null
location udg_dian105= null
location udg_dian106= null
location udg_dian107= null
integer udg_shanghaizhi= 0
unit udg_AI_hero12= null
group udg_Lqs30= null
location udg_D21= null
group udg_longzu= null
location array udg_dong
unit udg_danweilong= null
location udg_dianyanlong= null
location array udg_dianlongquan
unit udg_mubiao1= null
group udg_mengquanzu= null
unit udg_danweihupao= null
unit udg_danweimeng= null
timer udg_mengquanjishi= null
player udg_mengquanwanjia= null
unit array udg_linghun
player array udg_linghunwanjia
boolean udg_zhuangzai= false
force udg_fanheizu= null
player array udg_fanheiwanjia
real udg_Afanhei= 0
button udg_ChooseDeathModeSI= null
integer udg_Rfanhei= 0
boolean array udg_goufeiqubie
unit udg_asun= null
location array udg_ashangdi
boolean udg_ashangdizhi= false
integer udg_ashang= 0
group udg_lqs31= null
group udg_lqs32= null
real udg_jiaodushenyuan= 0
group udg_JASS15= null

    // Generated
rect gg_rct_Auditoria1= null
rect gg_rct_Auditoria2= null
rect gg_rct_Circle01= null
rect gg_rct_Circle02= null
rect gg_rct_Circle03= null
rect gg_rct_Circle04= null
rect gg_rct_Circle05= null
rect gg_rct_Circle06= null
rect gg_rct_Circle07= null
rect gg_rct_Circle08= null
rect gg_rct_Circle09= null
rect gg_rct_Circle10= null
rect gg_rct_Circle11= null
rect gg_rct_Circle12= null
rect gg_rct_Circle21= null
rect gg_rct_Circle22= null
rect gg_rct_Circle23= null
rect gg_rct_Circle24= null
rect gg_rct_Circle25= null
rect gg_rct_Circle26= null
rect gg_rct_Circle27= null
rect gg_rct_Circle28= null
rect gg_rct_Circle29= null
rect gg_rct_Circle30= null
rect gg_rct_Circle31= null
rect gg_rct_Circle32= null
rect gg_rct_Dark_Bottom= null
rect gg_rct_Dark_Middle= null
rect gg_rct_Dark_Random= null
rect gg_rct_Dark_Start= null
rect gg_rct_Dark_Top= null
rect gg_rct_Dark_Hero_Box= null
rect gg_rct_DarkHome= null
rect gg_rct_Destiny= null
rect gg_rct_DestinyIn= null
rect gg_rct_DestinyOutArea= null
rect gg_rct_Hero_Cave= null
rect gg_rct_Hero_Enter= null
rect gg_rct_Hero_In= null
rect gg_rct_Hero_Leave= null
rect gg_rct_Hero_Out= null
rect gg_rct_Light_Bottom= null
rect gg_rct_Light_Middle= null
rect gg_rct_Light_Random= null
rect gg_rct_Light_Start= null
rect gg_rct_Light_Top= null
rect gg_rct_Light_Hero_Box= null
rect gg_rct_LightHome= null
rect gg_rct_MonsterEnter= null
rect gg_rct_MonsterIn= null
rect gg_rct_MonsterLeave= null
rect gg_rct_MonsterOut= null
rect gg_rct_PKPlace= null
rect gg_rct_PKRequesterStart= null
rect gg_rct_PKResopnsorStart= null
rect gg_rct_PunishZone= null
rect gg_rct_ShowTime= null
rect gg_rct_SkeletonEnter= null
rect gg_rct_SkeletonIn= null
rect gg_rct_SkeletonLeave= null
rect gg_rct_SkeletonOut= null
rect gg_rct_StoneEnter= null
rect gg_rct_StoneIn= null
rect gg_rct_StoneLeave= null
rect gg_rct_StoneOut= null
rect gg_rct_Wolf_Cave= null
rect gg_rct_WolfEnter= null
rect gg_rct_WolfIn= null
rect gg_rct_WolfLeave= null
rect gg_rct_WolfOut= null
rect gg_rct_TreePlantA= null
rect gg_rct_TreePlantB= null
rect gg_rct_HideModeA= null
rect gg_rct_HideModeB= null
rect gg_rct_Circle33= null
rect gg_rct_Circle13= null
rect gg_rct_tiaozhanPK= null
rect gg_rct_wudiquyuA= null
rect gg_rct_wudiquyuB= null
rect gg_rct_tiaozhanzhongxin= null
rect gg_rct_wudiquyuAA= null
rect gg_rct_wudiquyuBB= null
rect gg_rct_Circle14= null
rect gg_rct_zhaohuanA= null
rect gg_rct_zhaohuanB= null
rect gg_rct_Circle34= null
rect gg_rct_______MH= null
rect gg_rct_____________u= null
rect gg_rct_wumingdong= null
rect gg_rct_Circle35= null
rect gg_rct_Circle15= null
rect gg_rct_shenmidongxue= null
rect gg_rct_shenmidongxue1= null
rect gg_rct_shenmidonxue2= null
rect gg_rct_Circle16= null
rect gg_rct_Circle36= null
rect gg_rct_wumingdongwudi= null
rect gg_rct_Circle17= null
rect gg_rct_Circle37= null
rect gg_rct___________________u= null
rect gg_rct___________________2= null
rect gg_rct___________________3= null
rect gg_rct_zhongxian1= null
rect gg_rct_zhongxian2= null
rect gg_rct_zhongxian3= null
rect gg_rct_guangmingfeifei= null
rect gg_rct_heianfeifei= null
rect gg_rct_feifeidazhan= null
rect gg_rct_gui1= null
rect gg_rct_gui2= null
rect gg_rct_Circle38= null
rect gg_rct_Circle18= null
rect gg_rct_15dong= null
rect gg_rct_20dong= null
rect gg_rct_30dong= null
rect gg_rct_Circle19= null
rect gg_rct_Circle39= null
sound gg_snd_Credits= null
sound gg_snd_PH1= null
sound gg_snd_SoulGem= null
sound gg_snd_WarlockAppears= null
sound gg_snd_PigDeath= null
sound gg_snd_SealDeath= null
sound gg_snd_SheepDeath= null
sound gg_snd_BuildingDeathLargeHuman= null
sound gg_snd_HeroicVictory= null
trigger gg_trg_test= null
trigger gg_trg_MultitudePKRequestgoufei= null
trigger gg_trg_MultitudePKDialogBB= null
trigger gg_trg_MPKDialogAction01BB= null
trigger gg_trg_MPKDialogAction02BB= null
trigger gg_trg_MPKDialogAction03BB= null
trigger gg_trg_MPKDialogAction04BB= null
trigger gg_trg_MPKDialogAction05BB= null
trigger gg_trg_MPKDialogAction07BB= null
trigger gg_trg_MPKDialogAction08BB= null
trigger gg_trg_MPKDialogAction09BB= null
trigger gg_trg_MPKDialogAction10BB= null
trigger gg_trg_MPKDialogAction11BB= null
trigger gg_trg_MPKDialogTimeOutBB= null
trigger gg_trg_MPKDialogStatisticBB= null
trigger gg_trg_MPKStatisticTimeOutBB= null
trigger gg_trg_MPKHeroEntersPKAreaBB= null
trigger gg_trg_qiangzhizantingyingxiong= null
trigger gg_trg_MPKTurnOffTriggerBB= null
trigger gg_trg_MPKTurnOnTriggerBB= null
trigger gg_trg_quyugoufei= null
trigger gg_trg_quyugoufei2= null
trigger gg_trg_MPKLIGHTVictoryBB= null
trigger gg_trg_MPKdarkVictoryBB= null
trigger gg_trg_MPKLightHeroDieBB= null
trigger gg_trg_MPKDarkHeroDieBB= null
trigger gg_trg_feifei1= null
trigger gg_trg_feifei2= null
trigger gg_trg_feifei3= null
trigger gg_trg_feifei4= null
trigger gg_trg_feifei5= null
trigger gg_trg_feifei7= null
trigger gg_trg_feifei8= null
trigger gg_trg_feifei9= null
trigger gg_trg_feifei10= null
trigger gg_trg_feifei11= null
trigger gg_trg_feifeiceshi= null
trigger gg_trg_JTtisheng= null
trigger gg_trg_JTxiajiang= null
trigger gg_trg_HeroSelect01= null
trigger gg_trg_HeroSelect02= null
trigger gg_trg_HeroSelect03= null
trigger gg_trg_HeroSelect04= null
trigger gg_trg_HeroSelect05= null
trigger gg_trg_HeroSelect06= null
trigger gg_trg_HeroSelect07= null
trigger gg_trg_HeroSelect08= null
trigger gg_trg_HeroSelect09= null
trigger gg_trg_HeroSelect10= null
trigger gg_trg_HeroSelect11= null
trigger gg_trg_HeroSelect12= null
trigger gg_trg_HeroSelect13= null
trigger gg_trg_HeroSelect14= null
trigger gg_trg_HeroSelect15= null
trigger gg_trg_HeroSelect16= null
trigger gg_trg_HeroSelect17= null
trigger gg_trg_HeroSelect18= null
trigger gg_trg_HeroSelect19= null
trigger gg_trg_HeroSelect21= null
trigger gg_trg_HeroSelect22= null
trigger gg_trg_HeroSelect23= null
trigger gg_trg_HeroSelect24= null
trigger gg_trg_HeroSelect25= null
trigger gg_trg_HeroSelect26= null
trigger gg_trg_HeroSelect27= null
trigger gg_trg_HeroSelect28= null
trigger gg_trg_HeroSelect29= null
trigger gg_trg_HeroSelect30= null
trigger gg_trg_HeroSelect31= null
trigger gg_trg_HeroSelect32= null
trigger gg_trg_HeroSelect33= null
trigger gg_trg_HeroSelect34= null
trigger gg_trg_HeroSelect35= null
trigger gg_trg_HeroSelect36= null
trigger gg_trg_HeroSelect37= null
trigger gg_trg_HeroSelect38= null
trigger gg_trg_HeroSelect39= null
trigger gg_trg_HeroSelect41= null
trigger gg_trg_HeroSelect42= null
trigger gg_trg_HeroSelect43= null
trigger gg_trg_HeroSelect44= null
trigger gg_trg_HeroRevive= null
trigger gg_trg_HeroReviveTavern= null
trigger gg_trg_HeroRevive_90= null
trigger gg_trg_HeroReviveTimer01= null
trigger gg_trg_HeroReviveTimer02= null
trigger gg_trg_HeroReviveTimer03= null
trigger gg_trg_HeroReviveTimer04= null
trigger gg_trg_HeroReviveTimer05= null
trigger gg_trg_HeroReviveTimer06= null
trigger gg_trg_HeroReviveTimer07= null
trigger gg_trg_HeroReviveTimer08= null
trigger gg_trg_HeroReviveTimer09= null
trigger gg_trg_HeroReviveTimer10= null
trigger gg_trg_HeroReviveTimer11= null
trigger gg_trg_HeroReviveTimer12= null
trigger gg_trg_HeroReviveTimer13= null
trigger gg_trg_HeroReviveTimer14= null
trigger gg_trg_HeroReviveTimer15= null
trigger gg_trg_HeroReviveTimer16= null
trigger gg_trg_HeroReviveTimer17= null
trigger gg_trg_HeroReviveTimer18= null
trigger gg_trg_HeroReviveTimer19= null
trigger gg_trg_HeroReviveTimer21= null
trigger gg_trg_HeroReviveTimer22= null
trigger gg_trg_HeroReviveTimer23= null
trigger gg_trg_HeroReviveTimer24= null
trigger gg_trg_HeroReviveTimer25= null
trigger gg_trg_HeroReviveTimer26= null
trigger gg_trg_HeroReviveTimer27= null
trigger gg_trg_HeroReviveTimer28= null
trigger gg_trg_HeroReviveTimer29= null
trigger gg_trg_HeroReviveTimer30= null
trigger gg_trg_HeroReviveTimer31= null
trigger gg_trg_HeroReviveTimer32= null
trigger gg_trg_HeroReviveTimer33= null
trigger gg_trg_HeroReviveTimer34= null
trigger gg_trg_HeroReviveTimer35= null
trigger gg_trg_HeroReviveTimer36= null
trigger gg_trg_HeroReviveTimer37= null
trigger gg_trg_HeroReviveTimer38= null
trigger gg_trg_HeroReviveTimer39= null
trigger gg_trg_HeroReviveTimer41= null
trigger gg_trg_HeroReviveTimer42= null
trigger gg_trg_SinglePKRequest= null
trigger gg_trg_SPKDialogAction= null
trigger gg_trg_SPKDialogTimeOut= null
trigger gg_trg_SPKHeroEnterPKArea= null
trigger gg_trg_SPKTimerExpired= null
trigger gg_trg_SPKVictory= null
trigger gg_trg_SPKHeroEscaper= null
trigger gg_trg_SinglePKBet= null
trigger gg_trg_SPKBetTimeOut= null
trigger gg_trg_SPKBetAction01= null
trigger gg_trg_SPKBetAction02= null
trigger gg_trg_SPKBetAction03= null
trigger gg_trg_SPKBetAction04= null
trigger gg_trg_SPKBetAction05= null
trigger gg_trg_SPKBetAction07= null
trigger gg_trg_SPKBetAction08= null
trigger gg_trg_SPKBetAction09= null
trigger gg_trg_SPKBetAction10= null
trigger gg_trg_SPKBetAction11= null
trigger gg_trg_SPKBetIndemnity= null
trigger gg_trg_MultitudePKRequest= null
trigger gg_trg_MultitudePKDialog= null
trigger gg_trg_MPKDialogAction01= null
trigger gg_trg_MPKDialogAction02= null
trigger gg_trg_MPKDialogAction03= null
trigger gg_trg_MPKDialogAction04= null
trigger gg_trg_MPKDialogAction05= null
trigger gg_trg_MPKDialogAction07= null
trigger gg_trg_MPKDialogAction08= null
trigger gg_trg_MPKDialogAction09= null
trigger gg_trg_MPKDialogAction10= null
trigger gg_trg_MPKDialogAction11= null
trigger gg_trg_MPKDialogTimeOut= null
trigger gg_trg_MPKDialogStatistic= null
trigger gg_trg_MPKStatisticTimeOut= null
trigger gg_trg_MPKHeroEntersPKArea= null
trigger gg_trg_qiangzhiquwudi= null
trigger gg_trg_tuanzhanshengyushijian= null
trigger gg_trg_MPKHeroEntersPlus= null
trigger gg_trg_MPKHeroEscaper= null
trigger gg_trg_xiongmao= null
trigger gg_trg_MPKHeroEscaperdanwei= null
trigger gg_trg_MPKReviveHero= null
trigger gg_trg_MPKTurnOffTrigger= null
trigger gg_trg_MPKTurnOnTrigger= null
trigger gg_trg_MPKLightHeroDie= null
trigger gg_trg_MPKDarkHeroDie= null
trigger gg_trg_MPKLightVictory= null
trigger gg_trg_MPKDarkVictory= null
trigger gg_trg_HeroRevive_jingjichang= null
trigger gg_trg_HeroReviveTimer01_jingji= null
trigger gg_trg_HeroReviveTimer02_jingji= null
trigger gg_trg_HeroReviveTimer03_jingji= null
trigger gg_trg_HeroReviveTimer04_jingji= null
trigger gg_trg_HeroReviveTimer05_jingji= null
trigger gg_trg_HeroReviveTimer06_jingji= null
trigger gg_trg_HeroReviveTimer07_jingji= null
trigger gg_trg_HeroReviveTimer08_jingji= null
trigger gg_trg_HeroReviveTimer09_jingji= null
trigger gg_trg_HeroReviveTimer10_jingji= null
trigger gg_trg_HeroReviveTimer11_jingji= null
trigger gg_trg_HeroReviveTimer12_jingji= null
trigger gg_trg_HeroReviveTimer13_jingji= null
trigger gg_trg_HeroReviveTimer14_jingji= null
trigger gg_trg_HeroReviveTimer15_jingji= null
trigger gg_trg_HeroReviveTimer16_jingji= null
trigger gg_trg_HeroReviveTimer17_jingji= null
trigger gg_trg_HeroReviveTimer18_jingji= null
trigger gg_trg_HeroReviveTimer19_jingji= null
trigger gg_trg_HeroReviveTimer21_jingji= null
trigger gg_trg_HeroReviveTimer22_jingji= null
trigger gg_trg_HeroReviveTimer23_jingji= null
trigger gg_trg_HeroReviveTimer24_jingji= null
trigger gg_trg_HeroReviveTimer25_jingji= null
trigger gg_trg_HeroReviveTimer26_jingji= null
trigger gg_trg_HeroReviveTimer27_jingji= null
trigger gg_trg_HeroReviveTimer28_jingji= null
trigger gg_trg_HeroReviveTimer29_jingji= null
trigger gg_trg_HeroReviveTimer30_jingji= null
trigger gg_trg_HeroReviveTimer31_jingji= null
trigger gg_trg_HeroReviveTimer32_jingji= null
trigger gg_trg_HeroReviveTimer33_jingji= null
trigger gg_trg_HeroReviveTimer34_jingji= null
trigger gg_trg_HeroReviveTimer35_jingji= null
trigger gg_trg_HeroReviveTimer36_jingji= null
trigger gg_trg_HeroReviveTimer37_jingji= null
trigger gg_trg_HeroReviveTimer38_jingji= null
trigger gg_trg_HeroReviveTimer39_jingji= null
trigger gg_trg_LightAttack= null
trigger gg_trg_DarkAttack= null
trigger gg_trg_AttackLightCastle= null
trigger gg_trg_AttackDarkCastle= null
trigger gg_trg_Wavefor53Sec= null
trigger gg_trg_Wavefor63Sec= null
trigger gg_trg_Wavefor73Sec= null
trigger gg_trg_Wavefor83Sec= null
trigger gg_trg_Wavefor123Sec= null
trigger gg_trg_Wavefor133Sec= null
trigger gg_trg_Wavefor143Sec= null
trigger gg_trg_Wavefor153Sec= null
trigger gg_trg_Wavefor200Sec= null
trigger gg_trg_Wavefor280Sec= null
trigger gg_trg_Wavefor340Sec= null
trigger gg_trg_Wavefor550Sec= null
trigger gg_trg_Wavefor380Sec= null
trigger gg_trg_Wavefor570Sec= null
trigger gg_trg_Wavefor480Sec= null
trigger gg_trg_Wavefor680Sec= null
trigger gg_trg_Wavefor780Sec= null
trigger gg_trg_Wavefor880Sec= null
trigger gg_trg_Wavefor1150Sec= null
trigger gg_trg_Upgradefor900Sec= null
trigger gg_trg_TreeRefresh= null
trigger gg_trg_TimeLeft= null
trigger gg_trg_AION= null
trigger gg_trg_AIOFF= null
trigger gg_trg_AIAttack= null
trigger gg_trg_AIRevive= null
trigger gg_trg_AIPowerUp= null
trigger gg_trg_AISet= null
trigger gg_trg_AIHeroLevelUp= null
trigger gg_trg_AIPlayLeft= null
trigger gg_trg_ToBeOB= null
trigger gg_trg_Test= null
trigger gg_trg_Lens= null
trigger gg_trg_Learn= null
trigger gg_trg_ReturnHero= null
trigger gg_trg_Disablehelp= null
trigger gg_trg_ClearText= null
trigger gg_trg_SwapHero= null
trigger gg_trg_lianmengjuanzhou= null
trigger gg_trg_lianmengjiesan= null
trigger gg_trg_ToAntherRegion= null
trigger gg_trg_Rank= null
trigger gg_trg_RankAction= null
trigger gg_trg_MultiPanel= null
trigger gg_trg_xinpaihangbang= null
trigger gg_trg_ClearFoeverSlien= null
trigger gg_trg_jianshengxiao= null
trigger gg_trg_ChangeOwner= null
trigger gg_trg_BuySinglePK= null
trigger gg_trg_BuyPowerUp= null
trigger gg_trg_BuyAILevelUp= null
trigger gg_trg_BuyHeroNew= null
trigger gg_trg_BuySentryWard= null
trigger gg_trg_BuyCCRCCC= null
trigger gg_trg_BuyMer= null
trigger gg_trg_BuyTPLVLup= null
trigger gg_trg_BuyRevive= null
trigger gg_trg_UseItemsNum= null
trigger gg_trg_Discarded= null
trigger gg_trg_Herolvlup= null
trigger gg_trg_HeroLearnSkill= null
trigger gg_trg_BuildingDestroyed= null
trigger gg_trg_KillHeroBounty= null
trigger gg_trg_FF15= null
trigger gg_trg_FF20= null
trigger gg_trg_FF30= null
trigger gg_trg_FF40= null
trigger gg_trg_LightVictory= null
trigger gg_trg_LightVictory2= null
trigger gg_trg_DarkVictory= null
trigger gg_trg_DarkVictory2= null
trigger gg_trg_NoShareUnits= null
trigger gg_trg_NoShareItems= null
trigger gg_trg_MoneySplit= null
trigger gg_trg_Notification= null
trigger gg_trg_SellHero= null
trigger gg_trg_Check= null
trigger gg_trg_Destiny= null
trigger gg_trg_DestinyAction= null
trigger gg_trg_EntersPKArea= null
trigger gg_trg_EntersPKAreaAAA= null
trigger gg_trg_EntersZone= null
trigger gg_trg_feifeiquyu= null
trigger gg_trg_RandomHeroSelectMode= null
trigger gg_trg_GetRandomNumberLight= null
trigger gg_trg_GetRandomNumberDark= null
trigger gg_trg_SkeletonCaveIn= null
trigger gg_trg_SkeletonCaveOut= null
trigger gg_trg_shenmidongxue= null
trigger gg_trg_shenmidonxue2= null
trigger gg_trg_StoneCaveIn= null
trigger gg_trg_StoneCaveOut= null
trigger gg_trg_MonsterCaveIn= null
trigger gg_trg_MonsterCaveOut= null
trigger gg_trg_WolfCaveIn= null
trigger gg_trg_WolfCaveOut= null
trigger gg_trg_HeroCaveIn= null
trigger gg_trg_HeroCaveOut= null
trigger gg_trg_maidiwenjiangli= null
trigger gg_trg_wumingdongjiangli= null
trigger gg_trg_kuloudongjiangli= null
trigger gg_trg_shitoudongjiangli= null
trigger gg_trg_30dongjiangli= null
trigger gg_trg_40dongjiangli= null
trigger gg_trg_wumingdonghuifu= null
trigger gg_trg_15dong= null
trigger gg_trg_20dong= null
trigger gg_trg_30dong= null
trigger gg_trg_40dong= null
trigger gg_trg_maidiwen1= null
trigger gg_trg_Share= null
trigger gg_trg_youhun1= null
trigger gg_trg_diyuemo= null
trigger gg_trg_diyuchuansong= null
trigger gg_trg_yanlonglieyan= null
trigger gg_trg_qianliyixian= null
trigger gg_trg_mengquanhupao= null
trigger gg_trg_mengquanjishi= null
trigger gg_trg_mengquansiwang= null
trigger gg_trg_dangtouyijian= null
trigger gg_trg_linghunguisu= null
trigger gg_trg_beizhuangzai= null
trigger gg_trg_goumaiwupin= null
trigger gg_trg_Shuidun_Shuizhenbi= null
trigger gg_trg_chaoshuisiyi= null
trigger gg_trg_SDXX= null
trigger gg_trg_Renshu_5W= null
trigger gg_trg_quntijitui= null
trigger gg_trg_shijian= null
trigger gg_trg_Shadowstikeb_5= null
trigger gg_trg_duochongxue_mingjie= null
trigger gg_trg_Shadowstikeb_3= null
trigger gg_trg_Shadowstikeb_4= null
trigger gg_trg_A1= null
trigger gg_trg_Mudun_Shujie_1= null
trigger gg_trg_Mudun_Shujie_2= null
trigger gg_trg_CHONGFENGtk= null
trigger gg_trg_____________u= null
trigger gg_trg____________________u= null
trigger gg_trg________________u= null
trigger gg_trg_CoustomTrigger= null
trigger gg_trg_NewTrigger_001= null
trigger gg_trg_CoustomTrigger_______u= null
trigger gg_trg__________u= null
trigger gg_trg_CHONGFENG= null
trigger gg_trg_chongfengjieshu= null
trigger gg_trg_chongfengjieshu_______u= null
trigger gg_trg_tiaoyueyiji= null
trigger gg_trg_tiaoyuejieshu= null
trigger gg_trg_tiaoyuejieshu_______u= null
trigger gg_trg_shilianji= null
trigger gg_trg_chongcifengsha= null
trigger gg_trg_zyzs3= null
trigger gg_trg_zyzs2= null
trigger gg_trg_zyzs= null
trigger gg_trg_Shadowstikeb_2_______u= null
trigger gg_trg_MoreArrowEffectguangxiasan= null
trigger gg_trg_YXHW01= null
trigger gg_trg_lqelt= null
trigger gg_trg_lq2lt= null
trigger gg_trg_longjuanjufeng= null
trigger gg_trg_longjuanjufeng2= null
trigger gg_trg_longjuanjufeng2_______u= null
trigger gg_trg_Shadowstikeb_2= null
trigger gg_trg________________________2= null
trigger gg_trg________________________2_______u= null
trigger gg_trg________________________2______________u= null
trigger gg_trg_Sanitys_Eclipse= null
trigger gg_trg_Ravage= null
trigger gg_trg_Hong_R1= null
trigger gg_trg_Hong_R2= null
trigger gg_trg_Hong_R3= null
trigger gg_trg_Stand_X= null
trigger gg_trg_Go_X= null
trigger gg_trg_siwangqishi_______u= null
trigger gg_trg_hdsd= null
trigger gg_trg_LimitAttack= null
trigger gg_trg_SHENSHENGZhIGUANG= null
trigger gg_trg_LightningRoar= null
trigger gg_trg_LightningRoarbeifen= null
trigger gg_trg_Divineshield= null
trigger gg_trg_MagicShieldA= null
trigger gg_trg_MagicShieldB= null
trigger gg_trg_Thunderbolt= null
trigger gg_trg_Thunderclap= null
trigger gg_trg_ExplodeBody= null
trigger gg_trg_Avatar= null
trigger gg_trg_shanqiuzhiwang= null
trigger gg_trg_FlameStrike= null
trigger gg_trg_CycloneCasting= null
trigger gg_trg_CycloneEnd= null
trigger gg_trg_Entang= null
trigger gg_trg_jiuchanxugen= null
trigger gg_trg_Lightning= null
trigger gg_trg_MoonLight= null
trigger gg_trg_MoonLight____u= null
trigger gg_trg_Moonlight2= null
trigger gg_trg_Shadowstikeb_1= null
trigger gg_trg_Demon= null
trigger gg_trg_Vortex= null
trigger gg_trg_Immolation= null
trigger gg_trg_Shadowstikeb= null
trigger gg_trg_Shadowstrike= null
trigger gg_trg_FanofKnives= null
trigger gg_trg_ExplodeCorpse= null
trigger gg_trg_A= null
trigger gg_trg_B= null
trigger gg_trg_B_______u= null
trigger gg_trg_ManyArrow= null
trigger gg_trg_shengqishi= null
trigger gg_trg_ChuteSpell= null
trigger gg_trg_WaterChain= null
trigger gg_trg_Elements= null
trigger gg_trg_chazhuangshandian= null
trigger gg_trg_najia30= null
trigger gg_trg_najia30yun= null
trigger gg_trg_najia30jieshu= null
trigger gg_trg_najia30TZ= null
trigger gg_trg_najia30shui1= null
trigger gg_trg_NAJIA30jiaxue= null
trigger gg_trg_NAJIA30wuli= null
trigger gg_trg_NAJIA30shandian= null
trigger gg_trg_najiafeng= null
trigger gg_trg_najiafeng2= null
trigger gg_trg_chazhuangshandian2= null
trigger gg_trg_Laser= null
trigger gg_trg_N545= null
trigger gg_trg_liejieshexian1= null
trigger gg_trg_liejieshexian2= null
trigger gg_trg_liejieshexian3= null
trigger gg_trg_fangzibaozha= null
trigger gg_trg_Image= null
trigger gg_trg_Second_Image= null
trigger gg_trg_Whirlwind= null
trigger gg_trg_WhirlwindBuff= null
trigger gg_trg_jiansheng30= null
trigger gg_trg_jianshenggua= null
trigger gg_trg_JIANSHENGXUEXI= null
trigger gg_trg_jiansheng302= null
trigger gg_trg_Earthquakejiansheng= null
trigger gg_trg_Shadowstikeb_6= null
trigger gg_trg_Earthquake= null
trigger gg_trg_bingmoquanJASS= null
trigger gg_trg_UrusBump= null
trigger gg_trg_zhanzhengjianta= null
trigger gg_trg_BumpDistance= null
trigger gg_trg__________A= null
trigger gg_trg__________B= null
trigger gg_trg_niudun= null
trigger gg_trg_niudunbeidong= null
trigger gg_trg_niudunbeidong_______u= null
trigger gg_trg_niudun1= null
trigger gg_trg_niudun2= null
trigger gg_trg_niudun3= null
trigger gg_trg_niudun4= null
trigger gg_trg_niudungongji= null
trigger gg_trg_niudungongji2= null
trigger gg_trg__________A_______u= null
trigger gg_trg__________B_______u= null
trigger gg_trg_Hex= null
trigger gg_trg_yaoshu2= null
trigger gg_trg_zhiliao= null
trigger gg_trg_VoodooCast= null
trigger gg_trg_VoodooEnd= null
trigger gg_trg_siwangqishi= null
trigger gg_trg_DarkAgesCast= null
trigger gg_trg_siqijineng= null
trigger gg_trg_Frostnova= null
trigger gg_trg_ElementFlutter= null
trigger gg_trg_ElementFlutterEnd= null
trigger gg_trg_OrbCasting= null
trigger gg_trg_OrbEffect= null
trigger gg_trg_Distancejudgment= null
trigger gg_trg_Orbfinish= null
trigger gg_trg_wuyao15= null
trigger gg_trg_wuyao15jieshu= null
trigger gg_trg_BeetlesAttack= null
trigger gg_trg_xq= null
trigger gg_trg_StompEffect= null
trigger gg_trg_StompSound= null
trigger gg_trg_Ensnare= null
trigger gg_trg_BlackArrow= null
trigger gg_trg_BlackArrowshen= null
trigger gg_trg_BlackArrowaigewen= null
trigger gg_trg_MoreDoom= null
trigger gg_trg_MoreDRAB= null
trigger gg_trg_MoreArrowEffect= null
trigger gg_trg_LightningArrowAction= null
trigger gg_trg_MoreDRABand15End= null
trigger gg_trg_Windbreaker= null
trigger gg_trg_yihunfeijian= null
trigger gg_trg_yihunzhuanhuan= null
trigger gg_trg_yihunzhuanhuan2= null
trigger gg_trg_dijingdilei= null
trigger gg_trg_yihuajiemu= null
trigger gg_trg_yongbingxitong= null
trigger gg_trg_yongbingfuhuo= null
trigger gg_trg_longxiedai= null
trigger gg_trg_longxiedai2= null
trigger gg_trg_longxiedai3= null
trigger gg_trg_leishenfuti= null
trigger gg_trg_WUYUN= null
trigger gg_trg_WUYUN_xin= null
trigger gg_trg_wuyunxinxin= null
trigger gg_trg_WUYUN2= null
trigger gg_trg_binghuoshuangjian= null
trigger gg_trg_binghuoshuangjian2= null
trigger gg_trg_Shadowstikeb_7= null
trigger gg_trg_longqishi30= null
trigger gg_trg_longqishi30NINGJING= null
trigger gg_trg_LONGQISHISHANCHU= null
trigger gg_trg_LONGQISHIFANTAN= null
trigger gg_trg_ManaBurn= null
trigger gg_trg_heianzhishen= null
trigger gg_trg_HotPain= null
trigger gg_trg_DarkPortalEffact= null
trigger gg_trg_DarkPortalDamage= null
trigger gg_trg_shangdiqifu= null
trigger gg_trg_shangdiqifu1= null
trigger gg_trg_shangdiqifu2= null
trigger gg_trg_DuskAcction= null
trigger gg_trg_DarkLight= null
trigger gg_trg_DuskTimer= null
trigger gg_trg_Divine_Cast= null
trigger gg_trg_Divine_Action= null
trigger gg_trg_Divine_End= null
trigger gg_trg_SoulBurn= null
trigger gg_trg_LHRS= null
trigger gg_trg_RouletteCast= null
trigger gg_trg_RouletteTargetPlus= null
trigger gg_trg_RouletteTargetMove= null
trigger gg_trg_RouletteTargetHigh= null
trigger gg_trg_RouletteTargetDead= null
trigger gg_trg_RouletteEnd= null
trigger gg_trg_yanmie= null
trigger gg_trg_VolcanoCast= null
trigger gg_trg_VolcanoEnd= null
trigger gg_trg_LightFireAction= null
trigger gg_trg_QuakeEffect= null
trigger gg_trg_LightEffect= null
trigger gg_trg_FireEffect= null
trigger gg_trg_LastExplosions= null
trigger gg_trg_LightFireEnd= null
trigger gg_trg_Windwalk01= null
trigger gg_trg_Windwalk02= null
trigger gg_trg_Windwalk03= null
trigger gg_trg_Windwalk04= null
trigger gg_trg_JumpCast= null
trigger gg_trg_JumpEffect= null
trigger gg_trg_JumpOrderAttack= null
trigger gg_trg_JumpStartAttack= null
trigger gg_trg_JumpFinish= null
trigger gg_trg_JumpCancel= null
trigger gg_trg_DeathKill1= null
trigger gg_trg_DeathKill2= null
trigger gg_trg_DeathKill3= null
trigger gg_trg_FlameStrike_______u= null
trigger gg_trg_Roar= null
trigger gg_trg_xiong= null
trigger gg_trg_RoarMove= null
trigger gg_trg_Beast= null
trigger gg_trg_FalseDeath= null
trigger gg_trg_How= null
trigger gg_trg_qunshouchongji= null
trigger gg_trg_SkillEnd= null
trigger gg_trg_SkillStart= null
trigger gg_trg_Lightning_Storm= null
trigger gg_trg_jinglingpaoxiao= null
trigger gg_trg_shandianfengbao= null
trigger gg_trg_hailongjuanfeng= null
trigger gg_trg_qidaoyishi= null
trigger gg_trg_bingfengzhiqiu= null
trigger gg_trg_zhirehuanghun= null
trigger gg_trg_TranquilityInvulnerability= null
trigger gg_trg_bianshen_emo= null
trigger gg_trg_StarfallInvulnerability= null
trigger gg_trg_najia30wudi= null
trigger gg_trg_dafa30= null
trigger gg_trg_lqs30= null
trigger gg_trg_dangtouyijianwudi= null
trigger gg_trg_YIXING2= null
trigger gg_trg_DarkAttackInvulnerability= null
trigger gg_trg_xiaoY30= null
trigger gg_trg_JASS15= null
trigger gg_trg_JASS1501= null
trigger gg_trg_xiaoY301= null
trigger gg_trg_MapInitialization= null
trigger gg_trg_StartGame= null
trigger gg_trg_NextPlayer= null
trigger gg_trg_Choose= null
trigger gg_trg_ChooseMatchMode= null
trigger gg_trg_ChooseMatchMode_______u= null
trigger gg_trg_xianzhichemmo= null
trigger gg_trg_ChooseHeroMode= null
trigger gg_trg_ChoosePickMode= null
trigger gg_trg_ChooseDeathMode= null
trigger gg_trg_CampKeep= null
trigger gg_trg_ExpRateLight= null
trigger gg_trg_ExpRateDark= null
trigger gg_trg_DMHeroRevive= null
trigger gg_trg_DMLightVictory= null
trigger gg_trg_DMDarkVictory= null
trigger gg_trg_yingxiong100= null
trigger gg_trg_yingxiong50= null
trigger gg_trg_quanbulianmeng= null
trigger gg_trg_DeathMode= null
trigger gg_trg_siwangmoshi= null
trigger gg_trg_siwangfanhei= null
trigger gg_trg_zhengchangmoshi= null
trigger gg_trg_yingxiongmoshi= null
trigger gg_trg_GameBeging_______u= null
trigger gg_trg_swchaxun= null
trigger gg_trg_jichutiaojian= null
trigger gg_trg_jiarulianmeng= null
trigger gg_trg_guangmingjiemeng= null
trigger gg_trg_heiantongmeng= null
trigger gg_trg_lianmengdaqishanchushijian= null
trigger gg_trg_wudiyingxiong= null
trigger gg_trg_wudiyingxiong_______u= null
trigger gg_trg_daojishishanchudaqi= null
trigger gg_trg_Morse= null
trigger gg_trg_HideModeA= null
trigger gg_trg_HideModeB= null
trigger gg_trg_GameBeging= null
trigger gg_trg_Game45SecLater= null
trigger gg_trg_HeroSelect01_______u= null
trigger gg_trg_HeroSelect02_______u= null
trigger gg_trg_HeroSelect03_______u= null
trigger gg_trg_HeroSelect04_______u= null
trigger gg_trg_HeroSelect05_______u= null
trigger gg_trg_HeroSelect06_______u= null
trigger gg_trg_HeroSelect07_______u= null
trigger gg_trg_HeroSelect08_______u= null
trigger gg_trg_HeroSelect09_______u= null
trigger gg_trg_HeroSelect10_______u= null
trigger gg_trg_HeroSelect11_______u= null
trigger gg_trg_HeroSelect12_______u= null
trigger gg_trg_HeroSelect13_______u= null
trigger gg_trg_HeroSelect14_______u= null
trigger gg_trg_HeroSelect15_______u= null
trigger gg_trg_HeroSelect16_______u= null
trigger gg_trg_HeroSelect17_______u= null
trigger gg_trg_HeroSelect18_______u= null
trigger gg_trg_HeroSelect19_______u= null
trigger gg_trg_HeroSelect21_______u= null
trigger gg_trg_HeroSelect22_______u= null
trigger gg_trg_HeroSelect23_______u= null
trigger gg_trg_HeroSelect24_______u= null
trigger gg_trg_HeroSelect25_______u= null
trigger gg_trg_HeroSelect26_______u= null
trigger gg_trg_HeroSelect27_______u= null
trigger gg_trg_HeroSelect28_______u= null
trigger gg_trg_HeroSelect29_______u= null
trigger gg_trg_HeroSelect30_______u= null
trigger gg_trg_HeroSelect31_______u= null
trigger gg_trg_HeroSelect32_______u= null
trigger gg_trg_HeroSelect33_______u= null
trigger gg_trg_HeroSelect34_______u= null
trigger gg_trg_HeroSelect35_______u= null
trigger gg_trg_HeroSelect36_______u= null
trigger gg_trg_HeroSelect37_______u= null
trigger gg_trg_HeroSelect38_______u= null
trigger gg_trg_HeroSelect39_______u= null
trigger gg_trg_KillHeroBounty_______u= null
trigger gg_trg_HeroRevive_______u= null
trigger gg_trg_Herogeren01= null
trigger gg_trg_Herogeren02= null
trigger gg_trg_Herogeren03= null
trigger gg_trg_Herogeren04= null
trigger gg_trg_Herogeren05= null
trigger gg_trg_Herogeren06= null
trigger gg_trg_Herogeren07= null
trigger gg_trg_Herogeren08= null
trigger gg_trg_Herogeren09= null
trigger gg_trg_Herogeren10= null
trigger gg_trg_Herogeren11= null
trigger gg_trg_Herogeren12= null
trigger gg_trg_Herogeren13= null
trigger gg_trg_Herogeren14= null
trigger gg_trg_Herogeren15= null
trigger gg_trg_Herogeren16= null
trigger gg_trg_Herogeren17= null
trigger gg_trg_Herogeren18= null
trigger gg_trg_Herogeren19= null
trigger gg_trg_Herogeren21= null
trigger gg_trg_Herogeren22= null
trigger gg_trg_Herogeren23= null
trigger gg_trg_Herogeren24= null
trigger gg_trg_Herogeren25= null
trigger gg_trg_Herogeren26= null
trigger gg_trg_Herogeren27= null
trigger gg_trg_Herogeren28= null
trigger gg_trg_Herogeren29= null
trigger gg_trg_Herogeren30= null
trigger gg_trg_Herogeren31= null
trigger gg_trg_Herogeren32= null
trigger gg_trg_Herogeren33= null
trigger gg_trg_Herogeren34= null
trigger gg_trg_Herogeren35= null
trigger gg_trg_Herogeren36= null
trigger gg_trg_Herogeren37= null
trigger gg_trg_Herogeren38= null
trigger gg_trg_Herogeren39= null
trigger gg_trg_xc= null
trigger gg_trg_xc_2= null
trigger gg_trg_CD= null
trigger gg_trg_NOCD= null
trigger gg_trg_NOlan= null
trigger gg_trg_xc_______u= null
trigger gg_trg_xc_2_______u= null
trigger gg_trg_tuanzhanA= null
trigger gg_trg_tuanzhanB= null
trigger gg_trg_tuanzhanAA= null
trigger gg_trg_tuanzhanBB= null
trigger gg_trg_xuechifangwudi1= null
trigger gg_trg_xuechifangwudi2= null
trigger gg_trg_guangmangquanzhang= null
trigger gg_trg_guangmangquanzhang2= null
trigger gg_trg_shanchude= null
trigger gg_trg_MultitudePKRequestAAA= null
trigger gg_trg_MultitudePKDialogAAA= null
trigger gg_trg_MPKDialogAction01_______u= null
trigger gg_trg_MPKDialogAction02_______u= null
trigger gg_trg_MPKDialogAction03_______u= null
trigger gg_trg_MPKDialogAction04_______u= null
trigger gg_trg_MPKDialogAction05_______u= null
trigger gg_trg_MPKDialogAction07_______u= null
trigger gg_trg_MPKDialogAction08_______u= null
trigger gg_trg_MPKDialogAction09_______u= null
trigger gg_trg_MPKDialogAction10_______u= null
trigger gg_trg_MPKDialogAction11_______u= null
trigger gg_trg_MPKDialogStatisticAAA= null
trigger gg_trg_MPKDialogTimeOutAAA= null
trigger gg_trg_MPKStatisticTimeOutAAA= null
trigger gg_trg_MPKHeroEntersPKAreaAAA= null
trigger gg_trg_qiangzhiquwudi2= null
trigger gg_trg_MPKHeroEscaperAAA= null
trigger gg_trg_xiongmao_______u= null
trigger gg_trg_MPKHeroEscaperAAAdanwei= null
trigger gg_trg_MPKReviveHeroAAA= null
trigger gg_trg_MPKTurnOffTriggerAAA= null
trigger gg_trg_MPKHeroEntersPlusAAA= null
trigger gg_trg_MPKLightVictoryAAA= null
trigger gg_trg_shijianjishiqi= null
trigger gg_trg_daojishishanchu= null
trigger gg_trg_MPKTurnOnTriggerAAA= null
trigger gg_trg_HeroReviveAAA= null
trigger gg_trg_HeroReviveTimer01_______u= null
trigger gg_trg_HeroReviveTimer02_______u= null
trigger gg_trg_HeroReviveTimer03_______u= null
trigger gg_trg_HeroReviveTimer04_______u= null
trigger gg_trg_HeroReviveTimer05_______u= null
trigger gg_trg_HeroReviveTimer06_______u= null
trigger gg_trg_HeroReviveTimer07_______u= null
trigger gg_trg_HeroReviveTimer08_______u= null
trigger gg_trg_HeroReviveTimer09_______u= null
trigger gg_trg_HeroReviveTimer10_______u= null
trigger gg_trg_HeroReviveTimer11_______u= null
trigger gg_trg_HeroReviveTimer12_______u= null
trigger gg_trg_HeroReviveTimer13_______u= null
trigger gg_trg_HeroReviveTimer14_______u= null
trigger gg_trg_HeroReviveTimer15_______u= null
trigger gg_trg_HeroReviveTimer16_______u= null
trigger gg_trg_HeroReviveTimer17_______u= null
trigger gg_trg_HeroReviveTimer18_______u= null
trigger gg_trg_HeroReviveTimer19_______u= null
trigger gg_trg_HeroReviveTimer21_______u= null
trigger gg_trg_HeroReviveTimer22_______u= null
trigger gg_trg_HeroReviveTimer23_______u= null
trigger gg_trg_HeroReviveTimer24_______u= null
trigger gg_trg_HeroReviveTimer25_______u= null
trigger gg_trg_HeroReviveTimer26_______u= null
trigger gg_trg_HeroReviveTimer27_______u= null
trigger gg_trg_HeroReviveTimer28_______u= null
trigger gg_trg_HeroReviveTimer29_______u= null
trigger gg_trg_HeroReviveTimer30_______u= null
trigger gg_trg_HeroReviveTimer31_______u= null
trigger gg_trg_HeroReviveTimer32_______u= null
trigger gg_trg_HeroReviveTimer33_______u= null
trigger gg_trg_HeroReviveTimer34_______u= null
trigger gg_trg_HeroReviveTimer35_______u= null
trigger gg_trg_HeroReviveTimer36_______u= null
trigger gg_trg_HeroReviveTimer37_______u= null
trigger gg_trg_HeroReviveTimer38_______u= null
trigger gg_trg_HeroReviveTimer39_______u= null
trigger gg_trg_DMHSd= null
trigger gg_trg_DMHCam= null
trigger gg_trg_Set_panel= null
trigger gg_trg_Set_panel_______u= null
trigger gg_trg_Change_Value= null
trigger gg_trg_paihangxianshi= null
trigger gg_trg_paihangxianshi_______u= null
trigger gg_trg_zidongFMH= null
trigger gg_trg_jishiqi1= null
trigger gg_trg_paichu= null
trigger gg_trg_chaxungengxin= null
unit gg_unit_etoe_0000= null
unit gg_unit_unp2_0001= null
unit gg_unit_nmre_0023= null
unit gg_unit_npig_0225= null
unit gg_unit_nbfl_0006= null
unit gg_unit_ngad_0333= null
unit gg_unit_ngme_0021= null
unit gg_unit_Nplh_0257= null
unit gg_unit_nmre_0022= null
unit gg_unit_ngme_0024= null
unit gg_unit_nshe_0204= null
unit gg_unit_N00J_0331= null
unit gg_unit_ngad_0031= null
unit gg_unit_ngme_0030= null
unit gg_unit_nmrc_0113= null
unit gg_unit_nbal_0216= null
unit gg_unit_hatw_0011= null
unit gg_unit_hatw_0019= null
unit gg_unit_ncop_0102= null
unit gg_unit_n00B_0080= null
unit gg_unit_n00E_0079= null
unit gg_unit_Nbst_0310= null
unit gg_unit_Ntin_0309= null
unit gg_unit_Hmkg_0059= null
unit gg_unit_ntav_0248= null
unit gg_unit_n003_0301= null
unit gg_unit_Udea_0071= null
unit gg_unit_ngad_0020= null
unit gg_unit_nskf_0025= null
unit gg_unit_n003_0305= null
unit gg_unit_hpea_0214= null
unit gg_unit_n003_0303= null
unit gg_unit_n003_0302= null
unit gg_unit_n003_0304= null
unit gg_unit_nmre_0112= null
unit gg_unit_n003_0306= null
unit gg_unit_Nngs_0256= null
unit gg_unit_nmre_0033= null
unit gg_unit_Ulic_0072= null
unit gg_unit_hhou_0291= null
unit gg_unit_n003_0300= null
unit gg_unit_ndfl_0007= null
unit gg_unit_Hpal_0032= null
unit gg_unit_hhou_0290= null
unit gg_unit_hhou_0289= null
unit gg_unit_ncop_0085= null
unit gg_unit_ncop_0086= null
unit gg_unit_ncop_0087= null
unit gg_unit_ncop_0088= null
unit gg_unit_ncop_0089= null
unit gg_unit_ncop_0090= null
unit gg_unit_nchw_0245= null
unit gg_unit_nchw_0244= null
unit gg_unit_ninf_0091= null
unit gg_unit_ninf_0092= null
unit gg_unit_ncop_0095= null
unit gg_unit_ncop_0096= null
unit gg_unit_ncop_0097= null
unit gg_unit_ncop_0098= null
unit gg_unit_ncop_0099= null
unit gg_unit_ncop_0100= null
unit gg_unit_ncop_0101= null
unit gg_unit_ncp3_0047= null
unit gg_unit_ncp3_0103= null
unit gg_unit_n001_0255= null
unit gg_unit_ngme_0111= null
unit gg_unit_hatw_0034= null
unit gg_unit_hatw_0035= null
unit gg_unit_nbsm_0223= null
unit gg_unit_nbsm_0222= null
unit gg_unit_ncop_0209= null
unit gg_unit_ncop_0208= null
unit gg_unit_nmed_0207= null
unit gg_unit_npig_0226= null
unit gg_unit_npig_0224= null
unit gg_unit_npig_0227= null
unit gg_unit_Hamg_0058= null
unit gg_unit_ngad_0110= null
unit gg_unit_ngst_0230= null
unit gg_unit_nshe_0200= null
unit gg_unit_nshe_0201= null
unit gg_unit_nshe_0202= null
unit gg_unit_nshe_0203= null
unit gg_unit_npig_0205= null
unit gg_unit_ngst_0220= null
unit gg_unit_ngst_0221= null
unit gg_unit_ngst_0228= null
unit gg_unit_ngst_0229= null
unit gg_unit_negt_0206= null
unit gg_unit_nwwd_0234= null
unit gg_unit_nwwd_0235= null
unit gg_unit_nwwd_0236= null
unit gg_unit_nwwd_0237= null
unit gg_unit_nwwd_0238= null
unit gg_unit_nwwd_0239= null
unit gg_unit_nwwd_0240= null
unit gg_unit_ngnw_0241= null
unit gg_unit_nskg_0287= null
unit gg_unit_nskg_0282= null
unit gg_unit_nskg_0283= null
unit gg_unit_nskg_0284= null
unit gg_unit_nskg_0285= null
unit gg_unit_nskg_0286= null
unit gg_unit_nggr_0332= null
unit gg_unit_nggr_0273= null
unit gg_unit_nlrv_0250= null
unit gg_unit_nlrv_0251= null
unit gg_unit_nlrv_0252= null
unit gg_unit_nlrv_0253= null
unit gg_unit_Ofar_0069= null
unit gg_unit_ntav_0249= null
unit gg_unit_n003_0299= null
unit gg_unit_hhou_0288= null
unit gg_unit_hhou_0258= null
unit gg_unit_Hvwd_0065= null
unit gg_unit_n003_0298= null
unit gg_unit_n003_0297= null
unit gg_unit_Emoo_0062= null
unit gg_unit_nskf_0219= null
unit gg_unit_nskf_0264= null
unit gg_unit_nskf_0265= null
unit gg_unit_nskf_0266= null
unit gg_unit_nskf_0267= null
unit gg_unit_nskf_0268= null
unit gg_unit_nskf_0311= null
unit gg_unit_Ekee_0061= null
unit gg_unit_h008_0292= null
unit gg_unit_h008_0296= null
unit gg_unit_nssp_0254= null
unit gg_unit_h008_0293= null
unit gg_unit_Ewar_0064= null
unit gg_unit_Edem_0063= null
unit gg_unit_Obla_0067= null
unit gg_unit_Otch_0068= null
unit gg_unit_Hpal_0057= null
unit gg_unit_h008_0294= null
unit gg_unit_h008_0295= null
unit gg_unit_Nalc_0066= null
unit gg_unit_Nfir_0076= null
unit gg_unit_Usyl_0075= null
unit gg_unit_N002_0077= null
unit gg_unit_Hblm_0060= null
unit gg_unit_N00H_0078= null
unit gg_unit_Oshd_0070= null
unit gg_unit_Udre_0074= null
unit gg_unit_Ucrl_0073= null
unit gg_unit_nchg_0093= null
unit gg_unit_nchg_0094= null
unit gg_unit_nchg_0215= null
unit gg_unit_nchr_0217= null
unit gg_unit_nchr_0242= null
unit gg_unit_nchr_0243= null
unit gg_unit_nfel_0246= null
unit gg_unit_nfel_0247= null
unit gg_unit_ndqp_0259= null
unit gg_unit_ndqp_0260= null
unit gg_unit_ndqp_0261= null
unit gg_unit_Nbrn_0262= null
unit gg_unit_h00A_0269= null
unit gg_unit_hsor_0272= null
unit gg_unit_hmpr_0271= null
unit gg_unit_Nbrn_0274= null
unit gg_unit_E015_0275= null
unit gg_unit_ncop_0363= null
unit gg_unit_ngad_0387= null
unit gg_unit_ncop_0335= null
unit gg_unit_u004_0277= null
unit gg_unit_H002_0386= null
unit gg_unit_ngad_0383= null
unit gg_unit_Npbm_0280= null
unit gg_unit_Hjai_0425= null
unit gg_unit_Hlgr_0426= null
unit gg_unit_ncop_0429= null
unit gg_unit_ncop_0430= null
unit gg_unit_ncop_0431= null
unit gg_unit_nskg_0462= null
unit gg_unit_nwwd_0470= null
unit gg_unit_negm_0434= null
unit gg_unit_nwwd_0471= null
unit gg_unit_negm_0436= null
unit gg_unit_negm_0437= null
unit gg_unit_negm_0438= null
unit gg_unit_negm_0439= null
unit gg_unit_negm_0440= null
unit gg_unit_negm_0441= null
unit gg_unit_negm_0442= null
unit gg_unit_negm_0443= null
unit gg_unit_negm_0444= null
unit gg_unit_nskf_0445= null
unit gg_unit_nskf_0446= null
unit gg_unit_nskf_0447= null
unit gg_unit_nskf_0448= null
unit gg_unit_nskf_0449= null
unit gg_unit_nskf_0450= null
unit gg_unit_nskf_0451= null
unit gg_unit_nskf_0452= null
unit gg_unit_nskg_0459= null
unit gg_unit_nskg_0460= null
unit gg_unit_nskg_0458= null
unit gg_unit_nskg_0453= null
unit gg_unit_nskg_0454= null
unit gg_unit_nskg_0455= null
unit gg_unit_nskg_0456= null
unit gg_unit_nskg_0463= null
unit gg_unit_nbal_0432= null
unit gg_unit_ninf_0457= null
unit gg_unit_ninf_0461= null
unit gg_unit_nwwd_0464= null
unit gg_unit_nwwd_0465= null
unit gg_unit_nwwd_0466= null
unit gg_unit_nwwd_0467= null
unit gg_unit_nwwd_0468= null
unit gg_unit_nwwd_0469= null
unit gg_unit_negm_0433= null
unit gg_unit_negm_0435= null
unit gg_unit_H00C_0473= null
unit gg_unit_Uwar_0475= null
unit gg_unit_N014_0478= null
unit gg_unit_E020_0479= null
unit gg_unit_ngnw_0480= null
unit gg_unit_N00J_0483= null
unit gg_unit_N00J_0484= null
unit gg_unit_N00J_0485= null
unit gg_unit_N00J_0486= null
unit gg_unit_N00J_0487= null
unit gg_unit_N00J_0488= null
unit gg_unit_N00J_0489= null
unit gg_unit_N00J_0490= null
unit gg_unit_N00J_0491= null
unit gg_unit_N00J_0492= null
unit gg_unit_N00J_0493= null
unit gg_unit_N00H_0498= null
unit gg_unit_H00I_0499= null
unit gg_unit_Harf_0501= null
unit gg_unit_U00C_0503= null

gamecache YDGC

trigger l__library_init

//JASSHelper struct globals:
constant integer si__Around__Data=1
integer si__Around__Data_F=0
integer si__Around__Data_I=0
integer array si__Around__Data_V
integer array s__Around__Data_Structs
integer s__Around__Data_Total= 0
unit array s__Around__Data_caster
unit array s__Around__Data_obj
real array s__Around__Data_dur
real array s__Around__Data_inter
real array s__Around__Data_each
real array s__Around__Data_rate
real array s__Around__Data_dis
real array s__Around__Data_rise
real array s__Around__Data_angle
real array s__Around__Data_radius
real array s__Around__Data_height
constant integer si__YDVector3=2
integer si__YDVector3_F=0
integer si__YDVector3_I=0
integer array si__YDVector3_V
real array s__YDVector3_x
real array s__YDVector3_y
real array s__YDVector3_z
constant integer si__YDWETimerPattern__Thread=3
integer si__YDWETimerPattern__Thread_F=0
integer si__YDWETimerPattern__Thread_I=0
integer array si__YDWETimerPattern__Thread_V
integer array s__YDWETimerPattern__Thread_des
integer array s__YDWETimerPattern__Thread_pos
integer array s__YDWETimerPattern__Thread_vel
integer array s__YDWETimerPattern__Thread_dec
unit array s__YDWETimerPattern__Thread_caster
unit array s__YDWETimerPattern__Thread_target
unit array s__YDWETimerPattern__Thread_obj
real array s__YDWETimerPattern__Thread_ac
real array s__YDWETimerPattern__Thread_bc
real array s__YDWETimerPattern__Thread_dist
real array s__YDWETimerPattern__Thread_step
real array s__YDWETimerPattern__Thread_amount
integer array s__YDWETimerPattern__Thread_switch
integer array s__YDWETimerPattern__Thread_follow
integer array s__YDWETimerPattern__Thread_unitid
integer array s__YDWETimerPattern__Thread_skills
integer array s__YDWETimerPattern__Thread_order
integer array s__YDWETimerPattern__Thread_level
string array s__YDWETimerPattern__Thread_dsfx
string array s__YDWETimerPattern__Thread_gsfx
string array s__YDWETimerPattern__Thread_wsfx
string array s__YDWETimerPattern__Thread_part
boolean array s__YDWETimerPattern__Thread_recyclable
boolean array s__YDWETimerPattern__Thread_killdest
boolean array s__YDWETimerPattern__Thread_volume
group array s__YDWETimerPattern__Thread_except
timer array s__YDWETimerPattern__Thread_t
constant integer si__Parabola=4
constant integer si__Linear=5
constant integer si__Deceleration=6
integer array si__YDWETimerPattern__Thread_type
trigger array st__YDWETimerPattern__Thread_onDestroy
integer f__arg_this

endglobals


//Generated allocator of Around__Data
function s__Around__Data__allocate takes nothing returns integer
local integer this=si__Around__Data_F
    if (this!=0) then
        set si__Around__Data_F=si__Around__Data_V[this]
    else
        set si__Around__Data_I=si__Around__Data_I+1
        set this=si__Around__Data_I
    endif
    if (this>8190) then
        return 0
    endif

   set s__Around__Data_caster[this]= null
   set s__Around__Data_obj[this]= null
   set s__Around__Data_dur[this]= 0.
   set s__Around__Data_inter[this]= 0.
   set s__Around__Data_each[this]= 0.
   set s__Around__Data_rate[this]= 0.
   set s__Around__Data_dis[this]= 0.
   set s__Around__Data_rise[this]= 0.
   set s__Around__Data_angle[this]= 0.
   set s__Around__Data_radius[this]= 0.
   set s__Around__Data_height[this]= 0
    set si__Around__Data_V[this]=-1
return this
endfunction

//Generated destructor of Around__Data
function s__Around__Data_deallocate takes integer this returns nothing
    if this==null then
        return
    elseif (si__Around__Data_V[this]!=-1) then
        return
    endif
    set si__Around__Data_V[this]=si__Around__Data_F
    set si__Around__Data_F=this
endfunction

//Generated allocator of YDVector3
function s__YDVector3__allocate takes nothing returns integer
local integer this=si__YDVector3_F
    if (this!=0) then
        set si__YDVector3_F=si__YDVector3_V[this]
    else
        set si__YDVector3_I=si__YDVector3_I+1
        set this=si__YDVector3_I
    endif
    if (this>8190) then
        return 0
    endif

    set si__YDVector3_V[this]=-1
return this
endfunction

//Generated destructor of YDVector3
function s__YDVector3_deallocate takes integer this returns nothing
    if this==null then
        return
    elseif (si__YDVector3_V[this]!=-1) then
        return
    endif
    set si__YDVector3_V[this]=si__YDVector3_F
    set si__YDVector3_F=this
endfunction

//Generated method caller for YDWETimerPattern__Thread.onDestroy
function sc__YDWETimerPattern__Thread_onDestroy takes integer this returns nothing
    set f__arg_this=this
    call TriggerEvaluate(st__YDWETimerPattern__Thread_onDestroy[3])
endfunction

//Generated allocator of YDWETimerPattern__Thread
function s__YDWETimerPattern__Thread__allocate takes nothing returns integer
local integer this=si__YDWETimerPattern__Thread_F
    if (this!=0) then
        set si__YDWETimerPattern__Thread_F=si__YDWETimerPattern__Thread_V[this]
    else
        set si__YDWETimerPattern__Thread_I=si__YDWETimerPattern__Thread_I+1
        set this=si__YDWETimerPattern__Thread_I
    endif
    if (this>8190) then
        return 0
    endif

    set si__YDWETimerPattern__Thread_type[this]=3
    set si__YDWETimerPattern__Thread_V[this]=-1
return this
endfunction

//Generated destructor of YDWETimerPattern__Thread
function sc__YDWETimerPattern__Thread_deallocate takes integer this returns nothing
    if this==null then
        return
    elseif (si__YDWETimerPattern__Thread_V[this]!=-1) then
        return
    endif
    set f__arg_this=this
    call TriggerEvaluate(st__YDWETimerPattern__Thread_onDestroy[si__YDWETimerPattern__Thread_type[this]])
    set si__YDWETimerPattern__Thread_V[this]=si__YDWETimerPattern__Thread_F
    set si__YDWETimerPattern__Thread_F=this
endfunction

//Generated allocator of Parabola
function s__Parabola__allocate takes nothing returns integer
local integer this=s__YDWETimerPattern__Thread__allocate()
local integer kthis
    if(this==0) then
        return 0
    endif
    set si__YDWETimerPattern__Thread_type[this]=4
    set kthis=this

return this
endfunction


//Generated allocator of Deceleration
function s__Deceleration__allocate takes nothing returns integer
local integer this=s__YDWETimerPattern__Thread__allocate()
local integer kthis
    if(this==0) then
        return 0
    endif
    set si__YDWETimerPattern__Thread_type[this]=6
    set kthis=this

return this
endfunction


//Generated allocator of Linear
function s__Linear__allocate takes nothing returns integer
local integer this=s__YDWETimerPattern__Thread__allocate()
local integer kthis
    if(this==0) then
        return 0
    endif
    set si__YDWETimerPattern__Thread_type[this]=5
    set kthis=this

return this
endfunction


//library YDWEBase:



//===========================================================================
//Return bug
//===========================================================================

//===========================================================================
//Return bug
//===========================================================================
function YDWEH2I takes handle h returns integer
    return h
    return 0
endfunction

function YDWEI2U takes integer i returns unit
    return i
    return null
endfunction

function YDWEI2It takes integer i returns item
    return i
    return null
endfunction

function YDWEI2P takes integer i returns player
    return i
    return null
endfunction

function YDWEI2Tm takes integer i returns timer
    return i
    return null
endfunction

function YDWEI2T takes integer i returns trigger
    return i
    return null
endfunction

function YDWEI2Pt takes integer i returns location
    return i
    return null
endfunction

function YDWEI2G takes integer i returns group
    return i
    return null
endfunction

function YDWEI2M takes integer i returns multiboard
    return i
    return null
endfunction

function YDWEI2Mt takes integer i returns multiboarditem
    return i
    return null
endfunction

function YDWEI2Tt takes integer i returns texttag
    return i
    return null
endfunction

function YDWEI2Ln takes integer i returns lightning
    return i
    return null
endfunction

function YDWEI2Rn takes integer i returns region
    return i
    return null
endfunction

function YDWEI2Rt takes integer i returns rect
    return i
    return null
endfunction

function YDWEI2Lb takes integer i returns leaderboard
    return i
    return null
endfunction

function YDWEI2E takes integer i returns effect
    return i
    return null
endfunction

function YDWEI2Da takes integer i returns destructable
    return i
    return null
endfunction

function YDWEI2TC takes integer i returns triggercondition
    return i
    return null
endfunction

function YDWEI2TA takes integer i returns triggeraction
    return i
    return null
endfunction

function YDWEI2Et takes integer i returns event
    return i
    return null
endfunction

function YDWEI2Fc takes integer i returns force
    return i
    return null
endfunction

function YDWEI2BE takes integer i returns boolexpr
    return i
    return null
endfunction

function YDWEI2Sd takes integer i returns sound
    return i
    return null
endfunction

function YDWEI2TD takes integer i returns timerdialog
    return i
    return null
endfunction

function YDWEI2Ta takes integer i returns trackable
    return i
    return null
endfunction

function YDWEI2D takes integer i returns dialog
    return i
    return null
endfunction

function YDWEI2Bt takes integer i returns button
    return i
    return null
endfunction

function YDWEI2Qt takes integer i returns quest
    return i
    return null
endfunction

function YDWEI2QI takes integer i returns questitem
    return i
    return null
endfunction

function GetHandleId takes handle h returns integer
    return h
    return 0
endfunction

function YDWEGetGameCache takes nothing returns gamecache
    return YDGC
endfunction

//清空
function YDWEFlushAllData takes nothing returns nothing
    call FlushGameCache(YDGC)
endfunction

function YDWEFlushMissionByInteger takes integer i returns nothing
    call FlushStoredMission(YDGC, I2S(i))
endfunction

function YDWEFlushMissionByString takes string s returns nothing
    call FlushStoredMission(YDGC, s)
endfunction

function YDWEFlushStoredIntegerByInteger takes integer i,integer j returns nothing
    call FlushStoredInteger(YDGC, I2S(i), I2S(j))
endfunction

function YDWEFlushStoredIntegerByString takes string s1,string s2 returns nothing
    call FlushStoredInteger(YDGC, s1, s2)
endfunction

function YDWEHaveSavedIntegerByInteger takes integer i,integer j returns boolean
    return HaveStoredInteger(YDGC, I2S(i), I2S(j))
endfunction

function YDWEHaveSavedIntegerByString takes string s1,string s2 returns boolean
    return HaveStoredInteger(YDGC, s1, s2)
endfunction

//store and get integer
function YDWESaveIntegerByInteger takes integer pTable,integer pKey,integer i returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), i)
endfunction

function YDWESaveIntegerByString takes string pTable,string pKey,integer i returns nothing
    call StoreInteger(YDGC, pTable, pKey, i)
endfunction

function YDWEGetIntegerByInteger takes integer pTable,integer pKey returns integer
    return GetStoredInteger(YDGC, I2S(pTable), I2S(pKey))
endfunction

function YDWEGetIntegerByString takes string pTable,string pKey returns integer
    return GetStoredInteger(YDGC, pTable, pKey)
endfunction

//store and get real
function YDWESaveRealByInteger takes integer pTable,integer pKey,real r returns nothing
    call StoreReal(YDGC, I2S(pTable), I2S(pKey), r)
endfunction

function YDWESaveRealByString takes string pTable,string pKey,real r returns nothing
    call StoreReal(YDGC, pTable, pKey, r)
endfunction

function YDWEGetRealByInteger takes integer pTable,integer pKey returns real
    return GetStoredReal(YDGC, I2S(pTable), I2S(pKey))
endfunction

function YDWEGetRealByString takes string pTable,string pKey returns real
    return GetStoredReal(YDGC, pTable, pKey)
endfunction

//store and get string
function YDWESaveStringByInteger takes integer pTable,integer pKey,string s returns nothing
    call StoreString(YDGC, I2S(pTable), I2S(pKey), s)
endfunction

function YDWESaveStringByString takes string pTable,string pKey,string s returns nothing
    call StoreString(YDGC, pTable, pKey, s)
endfunction

function YDWEGetStringByInteger takes integer pTable,integer pKey returns string
    return GetStoredString(YDGC, I2S(pTable), I2S(pKey))
endfunction

function YDWEGetStringByString takes string pTable,string pKey returns string
    return GetStoredString(YDGC, pTable, pKey)
endfunction

//store and get boolean
function YDWESaveBooleanByInteger takes integer pTable,integer pKey,boolean b returns nothing
    call StoreBoolean(YDGC, I2S(pTable), I2S(pKey), b)
endfunction

function YDWESaveBooleanByString takes string pTable,string pKey,boolean b returns nothing
    call StoreBoolean(YDGC, pTable, pKey, b)
endfunction

function YDWEGetBooleanByInteger takes integer pTable,integer pKey returns boolean
    return GetStoredBoolean(YDGC, I2S(pTable), I2S(pKey))
endfunction

function YDWEGetBooleanByString takes string pTable,string pKey returns boolean
    return GetStoredBoolean(YDGC, pTable, pKey)
endfunction

//Covert Unit
function YDWESaveUnitByInteger takes integer pTable,integer pKey,unit u returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(u))
endfunction

function YDWESaveUnitByString takes string pTable,string pKey,unit u returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(u))
endfunction

function YDWEGetUnitByInteger takes integer pTable,integer pKey returns unit
    return YDWEI2U(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetUnitByString takes string pTable,string pKey returns unit
    return YDWEI2U(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert UnitID
function YDWESaveUnitIDByInteger takes integer pTable,integer pKey,integer uid returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), uid)
endfunction

function YDWESaveUnitIDByString takes string pTable,string pKey,integer uid returns nothing
    call StoreInteger(YDGC, pTable, pKey, uid)
endfunction

function YDWEGetUnitIDByInteger takes integer pTable,integer pKey returns integer
    return GetStoredInteger(YDGC, I2S(pTable), I2S(pKey))
endfunction

function YDWEGetUnitIDByString takes string pTable,string pKey returns integer
    return GetStoredInteger(YDGC, pTable, pKey)
endfunction

//Covert AbilityID
function YDWESaveAbilityIDByInteger takes integer pTable,integer pKey,integer abid returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), abid)
endfunction

function YDWESaveAbilityIDByString takes string pTable,string pKey,integer abid returns nothing
    call StoreInteger(YDGC, pTable, pKey, abid)
endfunction

function YDWEGetAbilityIDByInteger takes integer pTable,integer pKey returns integer
    return GetStoredInteger(YDGC, I2S(pTable), I2S(pKey))
endfunction

function YDWEGetAbilityIDByString takes string pTable,string pKey returns integer
    return GetStoredInteger(YDGC, pTable, pKey)
endfunction

//Covert Player
function YDWESavePlayerByInteger takes integer pTable,integer pKey,player p returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(p))
endfunction

function YDWESavePlayerByString takes string pTable,string pKey,player p returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(p))
endfunction

function YDWEGetPlayerByInteger takes integer pTable,integer pKey returns player
    return YDWEI2P(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetPlayerByString takes string pTable,string pKey returns player
    return YDWEI2P(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert Item
function YDWESaveItemByInteger takes integer pTable,integer pKey,item it returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(it))
endfunction

function YDWESaveItemByString takes string pTable,string pKey,item it returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(it))
endfunction

function YDWEGetItemByInteger takes integer pTable,integer pKey returns item
    return YDWEI2It(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetItemByString takes string pTable,string pKey returns item
    return YDWEI2It(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert ItemID
function YDWESaveItemIDByInteger takes integer pTable,integer pKey,integer itid returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), itid)
endfunction

function YDWESaveItemIDByString takes string pTable,string pKey,integer itid returns nothing
    call StoreInteger(YDGC, pTable, pKey, itid)
endfunction

function YDWEGetItemIDByInteger takes integer pTable,integer pKey returns integer
    return GetStoredInteger(YDGC, I2S(pTable), I2S(pKey))
endfunction

function YDWEGetItemIDByString takes string pTable,string pKey returns integer
    return GetStoredInteger(YDGC, pTable, pKey)
endfunction

//Covert Timer
function YDWESaveTimerByInteger takes integer pTable,integer pKey,timer t returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(t))
endfunction

function YDWESaveTimerByString takes string pTable,string pKey,timer t returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(t))
endfunction

function YDWEGetTimerByInteger takes integer pTable,integer pKey returns timer
    return YDWEI2Tm(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetTimerByString takes string pTable,string pKey returns timer
    return YDWEI2Tm(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert Trigger
function YDWESaveTriggerByInteger takes integer pTable,integer pKey,trigger trg returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(trg))
endfunction

function YDWESaveTriggerByString takes string pTable,string pKey,trigger trg returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(trg))
endfunction

function YDWEGetTriggerByInteger takes integer pTable,integer pKey returns trigger
    return YDWEI2T(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetTriggerByString takes string pTable,string pKey returns trigger
    return YDWEI2T(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert Location
function YDWESaveLocationByInteger takes integer pTable,integer pKey,location pt returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(pt))
endfunction

function YDWESaveLocationByString takes string pTable,string pKey,location pt returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(pt))
endfunction

function YDWEGetLocationByInteger takes integer pTable,integer pKey returns location
    return YDWEI2Pt(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetLocationByString takes string pTable,string pKey returns location
    return YDWEI2Pt(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert Group
function YDWESaveGroupByInteger takes integer pTable,integer pKey,group g returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(g))
endfunction

function YDWESaveGroupByString takes string pTable,string pKey,group g returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(g))
endfunction

function YDWEGetGroupByInteger takes integer pTable,integer pKey returns group
    return YDWEI2G(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetGroupByString takes string pTable,string pKey returns group
    return YDWEI2G(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert multiboard
function YDWESaveMultiboardByInteger takes integer pTable,integer pKey,multiboard m returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(m))
endfunction

function YDWESaveMultiboardByString takes string pTable,string pKey,multiboard m returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(m))
endfunction

function YDWEGetMultiboardByInteger takes integer pTable,integer pKey returns multiboard
    return YDWEI2M(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetMultiboardByString takes string pTable,string pKey returns multiboard
    return YDWEI2M(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert multiboarditem
function YDWESaveMultiboardItemByInteger takes integer pTable,integer pKey,multiboarditem mt returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(mt))
endfunction

function YDWESaveMultiboardItemByString takes string pTable,string pKey,multiboarditem mt returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(mt))
endfunction

function YDWEGetMultiboardItemByInteger takes integer pTable,integer pKey returns multiboarditem
    return YDWEI2Mt(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetMultiboardItemByString takes string pTable,string pKey returns multiboarditem
    return YDWEI2Mt(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert Texttag
function YDWESaveTextTagByInteger takes integer pTable,integer pKey,texttag tt returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(tt))
endfunction

function YDWESaveTextTagByString takes string pTable,string pKey,texttag tt returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(tt))
endfunction

function YDWEGetTextTagByInteger takes integer pTable,integer pKey returns texttag
    return YDWEI2Tt(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetTextTagByString takes string pTable,string pKey returns texttag
    return YDWEI2Tt(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert lightning
function YDWESaveLightningByInteger takes integer pTable,integer pKey,lightning ln returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(ln))
endfunction

function YDWESaveLightningByString takes string pTable,string pKey,lightning ln returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(ln))
endfunction

function YDWEGetLightningByInteger takes integer pTable,integer pKey returns lightning
   return YDWEI2Ln(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetLightningByString takes string pTable,string pKey returns lightning
    return YDWEI2Ln(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert region
function YDWESaveRegionByInteger takes integer pTable,integer pKey,region rn returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(rn))
endfunction

function YDWESaveRegionByString takes string pTable,string pKey,region rn returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(rn))
endfunction

function YDWEGetRegionByInteger takes integer pTable,integer pKey returns region
    return YDWEI2Rn(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetRegionByString takes string pTable,string pKey returns region
    return YDWEI2Rn(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert rect
function YDWESaveRectByInteger takes integer pTable,integer pKey,rect rt returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(rt))
endfunction

function YDWESaveRectByString takes string pTable,string pKey,rect rt returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(rt))
endfunction

function YDWEGetRectByInteger takes integer pTable,integer pKey returns rect
    return YDWEI2Rt(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetRectByString takes string pTable,string pKey returns rect
    return YDWEI2Rt(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert leaderboard
function YDWESaveLeaderboardByInteger takes integer pTable,integer pKey,leaderboard lb returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(lb))
endfunction

function YDWESaveLeaderboardByString takes string pTable,string pKey,leaderboard lb returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(lb))
endfunction

function YDWEGetLeaderboardByInteger takes integer pTable,integer pKey returns leaderboard
    return YDWEI2Lb(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetLeaderboardByString takes string pTable,string pKey returns leaderboard
    return YDWEI2Lb(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert effect
function YDWESaveEffectByInteger takes integer pTable,integer pKey,effect e returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(e))
endfunction

function YDWESaveEffectByString takes string pTable,string pKey,effect e returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(e))
endfunction

function YDWEGetEffectByInteger takes integer pTable,integer pKey returns effect
    return YDWEI2E(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetEffectByString takes string pTable,string pKey returns effect
    return YDWEI2E(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert destructable
function YDWESaveDestructableByInteger takes integer pTable,integer pKey,destructable da returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(da))
endfunction

function YDWESaveDestructableByString takes string pTable,string pKey,destructable da returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(da))
endfunction

function YDWEGetDestructableByInteger takes integer pTable,integer pKey returns destructable
    return YDWEI2Da(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetDestructableByString takes string pTable,string pKey returns destructable
    return YDWEI2Da(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert triggercondition
function YDWESaveTriggerConditionByInteger takes integer pTable,integer pKey,triggercondition tc returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(tc))
endfunction

function YDWESaveTriggerConditionByString takes string pTable,string pKey,triggercondition tc returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(tc))
endfunction

function YDWEGetTriggerConditionByInteger takes integer pTable,integer pKey returns triggercondition
    return YDWEI2TC(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetTriggerConditionByString takes string pTable,string pKey returns triggercondition
    return YDWEI2TC(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert triggeraction
function YDWESaveTriggerActionByInteger takes integer pTable,integer pKey,triggeraction ta returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(ta))
endfunction

function YDWESaveTriggerActionByString takes string pTable,string pKey,triggeraction ta returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(ta))
endfunction

function YDWEGetTriggerActionByInteger takes integer pTable,integer pKey returns triggeraction
    return YDWEI2TA(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetTriggerActionByString takes string pTable,string pKey returns triggeraction
    return YDWEI2TA(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert event
function YDWESaveTriggerEventByInteger takes integer pTable,integer pKey,event et returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(et))
endfunction

function YDWESaveTriggerEventByString takes string pTable,string pKey,event et returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(et))
endfunction

function YDWEGetTriggerEventByInteger takes integer pTable,integer pKey returns event
    return YDWEI2Et(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetTriggerEventByString takes string pTable,string pKey returns event
    return YDWEI2Et(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert force
function YDWESaveForceByInteger takes integer pTable,integer pKey,force fc returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(fc))
endfunction

function YDWESaveForceByString takes string pTable,string pKey,force fc returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(fc))
endfunction

function YDWEGetForceByInteger takes integer pTable,integer pKey returns force
    return YDWEI2Fc(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetForceByString takes string pTable,string pKey returns force
    return YDWEI2Fc(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert boolexpr
function YDWESaveBoolexprByInteger takes integer pTable,integer pKey,boolexpr be returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(be))
endfunction

function YDWESaveBoolexprByString takes string pTable,string pKey,boolexpr be returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(be))
endfunction

function YDWEGetBoolexprByInteger takes integer pTable,integer pKey returns boolexpr
    return YDWEI2BE(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetBoolexprByString takes string pTable,string pKey returns boolexpr
    return YDWEI2BE(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert sound
function YDWESaveSoundByInteger takes integer pTable,integer pKey,sound sd returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(sd))
endfunction

function YDWESaveSoundByString takes string pTable,string pKey,sound sd returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(sd))
endfunction

function YDWEGetSoundByInteger takes integer pTable,integer pKey returns sound
    return YDWEI2Sd(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetSoundByString takes string pTable,string pKey returns sound
    return YDWEI2Sd(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert timerdialog
function YDWESaveTimerDialogByInteger takes integer pTable,integer pKey,timerdialog td returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(td))
endfunction

function YDWESaveTimerDialogByString takes string pTable,string pKey,timerdialog td returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(td))
endfunction

function YDWEGetTimerDialogByInteger takes integer pTable,integer pKey returns timerdialog
    return YDWEI2TD(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetTimerDialogByString takes string pTable,string pKey returns timerdialog
    return YDWEI2TD(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert trackable
function YDWESaveTrackableByInteger takes integer pTable,integer pKey,trackable ta returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(ta))
endfunction

function YDWESaveTrackableByString takes string pTable,string pKey,trackable ta returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(ta))
endfunction

function YDWEGetTrackableByInteger takes integer pTable,integer pKey returns trackable
    return YDWEI2Ta(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetTrackableByString takes string pTable,string pKey returns trackable
    return YDWEI2Ta(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert dialog
function YDWESaveDialogByInteger takes integer pTable,integer pKey,dialog d returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(d))
endfunction

function YDWESaveDialogByString takes string pTable,string pKey,dialog d returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(d))
endfunction

function YDWEGetDialogByInteger takes integer pTable,integer pKey returns dialog
    return YDWEI2D(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetDialogByString takes string pTable,string pKey returns dialog
    return YDWEI2D(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert button
function YDWESaveButtonByInteger takes integer pTable,integer pKey,button bt returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(bt))
endfunction

function YDWESaveButtonByString takes string pTable,string pKey,button bt returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(bt))
endfunction

function YDWEGetButtonByInteger takes integer pTable,integer pKey returns button
    return YDWEI2Bt(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetButtonByString takes string pTable,string pKey returns button
    return YDWEI2Bt(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert quest
function YDWESaveQuestByInteger takes integer pTable,integer pKey,quest qt returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(qt))
endfunction

function YDWESaveQuestByString takes string pTable,string pKey,quest qt returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(qt))
endfunction

function YDWEGetQuestByInteger takes integer pTable,integer pKey returns quest
    return YDWEI2Qt(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetQuestByString takes string pTable,string pKey returns quest
    return YDWEI2Qt(GetStoredInteger(YDGC, pTable, pKey))
endfunction

//Covert questitem
function YDWESaveQuestItemByInteger takes integer pTable,integer pKey,questitem qi returns nothing
    call StoreInteger(YDGC, I2S(pTable), I2S(pKey), YDWEH2I(qi))
endfunction

function YDWESaveQuestItemByString takes string pTable,string pKey,questitem qi returns nothing
    call StoreInteger(YDGC, pTable, pKey, YDWEH2I(qi))
endfunction

function YDWEGetQuestItemByInteger takes integer pTable,integer pKey returns questitem
    return YDWEI2QI(GetStoredInteger(YDGC, I2S(pTable), I2S(pKey)))
endfunction

function YDWEGetQuestItemByString takes string pTable,string pKey returns questitem
    return YDWEI2QI(GetStoredInteger(YDGC, pTable, pKey))
endfunction

function YDWES2I takes string s returns integer
    return s
    return 0
endfunction

function GetSpellTargetX takes nothing returns real
    local location point=GetSpellTargetLoc()
    local real x=GetLocationX(point)
    call RemoveLocation(point)
    set point=null
    return x
endfunction

function GetSpellTargetY takes nothing returns real
    local location point=GetSpellTargetLoc()
    local real y=GetLocationY(point)
    call RemoveLocation(point)
    set point=null
    return y
endfunction





















//============================
//杞?崲handle涓篿nteger
//===========================================================================
function YDWEGetUnitID takes unit u returns integer
    return YDWEH2I(u)
endfunction

function YDWEGetItemID takes item it returns integer
    return YDWEH2I(it)
endfunction

function YDWEGetPlayerID takes player p returns integer
    return YDWEH2I(p)
endfunction

function YDWEGetTimerID takes timer t returns integer
    return YDWEH2I(t)
endfunction

function YDWEGetTriggerID takes trigger trg returns integer
    return YDWEH2I(trg)
endfunction

function YDWEGetGroupID takes group g returns integer
    return YDWEH2I(g)
endfunction

function YDWEGetLocationID takes location point returns integer
    return YDWEH2I(point)
endfunction

function YDWEGetUnitTypeID takes integer uid returns integer
    return uid
endfunction

function YDWEGetAbilityTypeID takes integer ab returns integer
    return ab
endfunction

function YDWEGetItemTypeID takes integer itid returns integer
    return itid
endfunction

function YDWEGetMultiboardID takes multiboard m returns integer
    return YDWEH2I(m)
endfunction

function YDWEGetMultiboardItemID takes multiboarditem mt returns integer
    return YDWEH2I(mt)
endfunction

function YDWEGetTextTagID takes texttag tt returns integer
    return YDWEH2I(tt)
endfunction

function YDWEGetLightningID takes lightning ln returns integer
    return YDWEH2I(ln)
endfunction

function YDWEGetRegionID takes region rn returns integer
    return YDWEH2I(rn)
endfunction

function YDWEGetRectID takes rect rt returns integer
    return YDWEH2I(rt)
endfunction

function YDWEGetLeaderboardID takes leaderboard lb returns integer
    return YDWEH2I(lb)
endfunction

function YDWEGetEffectID takes effect e returns integer
    return YDWEH2I(e)
endfunction

function YDWEGetDestructableID takes destructable da returns integer
    return YDWEH2I(da)
endfunction

function YDWEGetTriggerConditionID takes triggercondition tc returns integer
    return YDWEH2I(tc)
endfunction

function YDWEGetTriggerActionID takes triggeraction ta returns integer
    return YDWEH2I(ta)
endfunction

function YDWEGetTriggerEventID takes event et returns integer
    return YDWEH2I(et)
endfunction

function YDWEGetForceID takes force fc returns integer
    return YDWEH2I(fc)
endfunction

function YDWEGetBoolexprID takes boolexpr be returns integer
    return YDWEH2I(be)
endfunction

function YDWEGetSoundID takes sound sd returns integer
    return YDWEH2I(sd)
endfunction

function YDWEGetTimerDialogID takes timerdialog td returns integer
    return YDWEH2I(td)
endfunction

function YDWEGetTrackableID takes trackable ta returns integer
    return YDWEH2I(ta)
endfunction

function YDWEGetDialogID takes dialog d returns integer
    return YDWEH2I(d)
endfunction

function YDWEGetButtonID takes button bt returns integer
    return YDWEH2I(bt)
endfunction

//返回单位 物品 闪电 命令ID的类型为整数  --UI需
function YDWEConverUnitcodeToInt takes integer uid returns integer
    return uid
endfunction

function YDWEConverItemcodeToInt takes integer itid returns integer
    return itid
endfunction

function YDWEConverAbilcodeToInt takes integer abid returns integer
    return abid
endfunction

function YDWEConverOrdercodeToInt takes integer orderid returns integer
    return orderid
endfunction

//===========================================================================
//===========================================================================
//Custom functions added by wataloo&Everguo
//===========================================================================
//===========================================================================

//===========================================================================
//返回参数
//===========================================================================
//地图边界判断
function YDWECoordinateX takes real x returns real
    set x=RMaxBJ(x, yd_MapMinX)
    set x=RMinBJ(x, yd_MapMaxX)
    return x
endfunction

function YDWECoordinateY takes real y returns real
    set y=RMaxBJ(y, yd_MapMinY)
    set y=RMinBJ(y, yd_MapMaxY)
    return y
endfunction
//两个单位之间的距离
function YDWEDistanceBetweenUnits takes unit a,unit b returns real
    return SquareRoot(( GetUnitX(a) - GetUnitX(b) ) * ( GetUnitX(a) - GetUnitX(b) ) + ( GetUnitY(a) - GetUnitY(b) ) * ( GetUnitY(a) - GetUnitY(b) ))
endfunction
//两个单位之间的角度
function YDWEAngleBetweenUnits takes unit from,unit to returns real
    return bj_RADTODEG * Atan2(GetUnitY(to) - GetUnitY(from), GetUnitX(to) - GetUnitX(from))
endfunction
//生成区域
function YDWEGetRect takes real x,real y,real width,real height returns rect
    return Rect(x - width * 0.5, y - height * 0.5, x + width * 0.5, y + height * 0.5)
endfunction


//===========================================================================
//设置单位可以飞行
//===========================================================================
function YDWEFlyEnable takes unit u returns nothing
    call UnitAddAbility(u, 'Amrf')
    call UnitRemoveAbility(u, 'Amrf')
endfunction

//===========================================================================
//字符窜与ID转换
//===========================================================================
function YDWEId2S takes integer value returns string
    local string charMap=bj_AllString
    local string result= ""
    local integer remainingValue= value
    local integer charValue
    local integer byteno
    set byteno=0
    loop
        set charValue=ModuloInteger(remainingValue, 256)
        set remainingValue=remainingValue / 256
        set result=SubString(charMap, charValue, charValue + 1) + result
        set byteno=byteno + 1
        exitwhen byteno == 4
    endloop
    return result
endfunction

function YDWES2Id takes string targetstr returns integer
    local string originstr=bj_AllString
    local integer strlength=StringLength(targetstr)
    local integer a=0
    local integer b=0
    local integer numx=1
    local integer result=0
    loop
    exitwhen b > strlength - 1
        set numx=R2I(Pow(256, strlength - 1 - b))
        set a=1
        loop
            exitwhen a > 255
            if SubString(targetstr, b, b + 1) == SubString(originstr, a, a + 1) then
                set result=result + a * numx
                set a=256
            endif
            set a=a + 1
        endloop
        set b=b + 1
    endloop
    return result
endfunction

function YDWES2UnitId takes string targetstr returns integer
    return YDWES2Id(targetstr)
endfunction

function YDWES2ItemId takes string targetstr returns integer
    return YDWES2Id(targetstr)
endfunction

function YDWEI2UnitId takes integer targetint returns integer
    return targetint
endfunction

function YDWEI2ItemId takes integer targetint returns integer
    return targetint
endfunction

function GetLastMovedItemInItemSlot takes nothing returns item
    return bj_lastMovedItemInItemSlot
endfunction

function GetLastCombinedItem takes nothing returns item
    return bj_lastCombinedItem
endfunction

function GetLastAbilityCastingUnit takes nothing returns unit
    return bj_lastAbilityCastingUnit
endfunction

function GetLastAbilityTargetUnit takes nothing returns unit
    return bj_lastAbilityTargetUnit
endfunction

function YDWECreateQuest takes integer questType,string title,string description,string iconPath returns quest
    return CreateQuestBJ(questType, title, description, iconPath)
endfunction

function YDWECreateQuestItem takes quest whichQuest,string description returns questitem
    return CreateQuestItemBJ(whichQuest, description)
endfunction

function YDWESetMapLimitCoordinate takes real MinX,real MaxX,real MinY,real MaxY returns nothing
    set yd_MapMaxX=MaxX
    set yd_MapMinX=MinX
    set yd_MapMaxY=MaxY
    set yd_MapMinY=MinY
endfunction

//===========================================================================
//===========================================================================
//地图初始化
//===========================================================================
//===========================================================================
//物品合成
function YDWESyStemItemCombineTriggerAction takes nothing returns nothing
    local integer i=(GetStoredInteger(YDGC, ("YDWESyStemItemCombineRegistTrigger" ), ( "TriggerNumber"))) // INLINED!!
    local trigger array trg
    loop
        set trg[i]=(YDWEI2T(GetStoredInteger(YDGC, ("YDWESyStemItemCombineRegistTrigger" ), ( I2S(i))))) // INLINED!!
        if trg[i] != null and TriggerEvaluate(trg[i]) == true and IsTriggerEnabled(trg[i]) == true then
            call TriggerExecute(trg[i])
        endif
        set trg[i]=null
        set i=i - 1
        exitwhen i <= 0
    endloop
endfunction

//YDWE特殊技能结束事件
function YDWESyStemAbilityCastingOverTriggerAction takes unit hero,integer index returns nothing
    local integer i= (GetStoredInteger(YDGC, ("YDWESyStemAbilityCastingOverRegistTrigger" ), ( "TriggerNumber"))) // INLINED!!
    local integer abiltype= 0
    local trigger array trg
    loop
        set trg[i]=(YDWEI2T(GetStoredInteger(YDGC, ("YDWESyStemAbilityCastingOverRegistTrigger" ), ( I2S(i))))) // INLINED!!
        set abiltype=(GetStoredInteger(YDGC, ("YDWESyStemAbilityCastingOverRegistTrigger" ), ( I2S(YDWEH2I(trg[i])) + "AbilityType"))) // INLINED!!
        if trg[i] != null and IsTriggerEnabled(trg[i]) == true and index == abiltype then
            set bj_lastAbilityCastingUnit=hero
            call ConditionalTriggerExecute(trg[i])
        endif
        set trg[i]=null
        set i=i - 1
        exitwhen i <= 0
    endloop
endfunction


//===========================================================================
//系统函数完善
//===========================================================================
function YDWEIfThenElse takes boolexpr b,code c1,code c2 returns nothing
    local trigger trg=CreateTrigger()
    local triggercondition tc=TriggerAddCondition(trg, b)
    local boolean b1=TriggerEvaluate(trg)
    if b1 == true then
        call TimerStart(CreateTimer(), 0, false, c1)
      else
        call TimerStart(CreateTimer(), 0, false, c2)
    endif
    call TriggerRemoveCondition(trg, tc)
    //call DestroyCondition(tc)
    call DestroyTrigger(trg)
    set trg=null
    set tc=null
endfunction

function YDWEIfThenElseMultiple takes nothing returns nothing

endfunction
function YDWEForLoopAMultiple takes nothing returns nothing
endfunction

function YDWECreateUnitPool takes nothing returns nothing
    set bj_lastCreatedUnitPool=CreateUnitPool()
endfunction

function YDWEPlaceRandomUnit takes unitpool up,player p,real x,real y,real face returns nothing
    set bj_lastPoolAbstractedUnit=PlaceRandomUnit(up, p, x, y, face)
endfunction

function YDWEGetLastUnitPool takes nothing returns unitpool
    return bj_lastCreatedUnitPool
endfunction

function YDWEGetLastPoolAbstractedUnit takes nothing returns unit
    return bj_lastPoolAbstractedUnit
endfunction

function YDWECreateItemPool takes nothing returns nothing
    set bj_lastCreatedItemPool=CreateItemPool()
endfunction

function YDWEPlaceRandomItem takes itempool ip,real x,real y returns nothing
    set bj_lastPoolAbstractedItem=PlaceRandomItem(ip, x, y)
endfunction

function YDWEGetLastItemPool takes nothing returns itempool
    return bj_lastCreatedItemPool
endfunction

function YDWEGetLastPoolAbstractedItem takes nothing returns item
    return bj_lastPoolAbstractedItem
endfunction

function YDWESetAttackDamageWeaponType takes attacktype at,damagetype dt,weapontype wt returns nothing
    set bj_lastSetAttackType=at
    set bj_lastSetDamageType=dt
    set bj_lastSetWeaponType=wt
endfunction
      //unitpool bj_lastCreatedPool=null
    //unit bj_lastPoolAbstractedUnit=null

//===========================================================================
//===========================================================================
//飘动的红丝带
//===========================================================================
function YDWELocalVariableInitiliation takes nothing returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "GlobalsTriggerRunSteps"))) // INLINED!!
    set TriggerRunSteps=TriggerRunSteps + 1
    call StoreInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "GlobalsTriggerRunSteps" ), ( TriggerRunSteps)) // INLINED!!
    call StoreInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps" ), ( TriggerRunSteps)) // INLINED!!
endfunction

function YDWEWaitForLocalVariable takes real time returns nothing
    local integer TriggerRunSteps=(GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
// call BJDebugMsg("绛夊緟涔嬪墠TriggerRunSteps= "+I2S(TriggerRunSteps))
    call TriggerSleepAction(time)
// call BJDebugMsg("绛夊緟涔嬪悗TriggerRunSteps= "+I2S(TriggerRunSteps))
    call StoreInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps" ), ( TriggerRunSteps)) // INLINED!!
endfunction

function YDWELocalVariableEnd takes nothing returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call FlushStoredMission(YDGC, (dir)) // INLINED!!
endfunction

//integer
function YDWESetLocalVariableInteger takes string s,integer i returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreInteger(YDGC, (dir ), ( s ), ( i)) // INLINED!!
endfunction

function YDWEGetLocalVariableInteger takes string s returns integer
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (GetStoredInteger(YDGC, (dir ), ( s))) // INLINED!!
endfunction

function YDWESetLocalVariableIntegerArray takes string s,integer index,integer i returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreInteger(YDGC, (dir ), ( s + I2S(index) ), ( i)) // INLINED!!
endfunction

function YDWEGetLocalVariableIntegerArray takes string s,integer index returns integer
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (GetStoredInteger(YDGC, (dir ), ( s + I2S(index)))) // INLINED!!
endfunction

//real
function YDWESetLocalVariableReal takes string s,real R returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreReal(YDGC, (dir ), ( s ), (( R)*1.0)) // INLINED!!
endfunction

function YDWEGetLocalVariableReal takes string s returns real
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (GetStoredReal(YDGC, (dir ), ( s))) // INLINED!!
endfunction

function YDWESetLocalVariableRealArray takes string s,integer index,real R returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreReal(YDGC, (dir ), ( s + I2S(index) ), (( R)*1.0)) // INLINED!!
endfunction

function YDWEGetLocalVariableRealArray takes string s,integer index returns real
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (GetStoredReal(YDGC, (dir ), ( s + I2S(index)))) // INLINED!!
endfunction
//string
function YDWESetLocalVariableString takes string s,string str returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreString(YDGC, (dir ), ( s ), ( str)) // INLINED!!
endfunction

function YDWEGetLocalVariableString takes string s returns string
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (GetStoredString(YDGC, (dir ), ( s))) // INLINED!!
endfunction

function YDWESetLocalVariableStringArray takes string s,integer index,string str returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreString(YDGC, (dir ), ( s + I2S(index) ), ( str)) // INLINED!!
endfunction

function YDWEGetLocalVariableStringArray takes string s,integer index returns string
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (GetStoredString(YDGC, (dir ), ( s + I2S(index)))) // INLINED!!
endfunction
//boolean
function YDWESetLocalVariableBoolean takes string s,boolean bl returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreBoolean(YDGC, (dir ), ( s ), ( bl)) // INLINED!!
endfunction

function YDWEGetLocalVariableBoolean takes string s returns boolean
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (GetStoredBoolean(YDGC, (dir ), ( s))) // INLINED!!
endfunction

function YDWESetLocalVariableBooleanArray takes string s,integer index,boolean bl returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreBoolean(YDGC, (dir ), ( s + I2S(index) ), ( bl)) // INLINED!!
endfunction

function YDWEGetLocalVariableBooleanArray takes string s,integer index returns boolean
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (GetStoredBoolean(YDGC, (dir ), ( s + I2S(index)))) // INLINED!!
endfunction
//unit
function YDWESetLocalVariableUnit takes string s,unit u returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreInteger(YDGC, (dir ), ( s ), YDWEH2I(( u))) // INLINED!!
endfunction

function YDWEGetLocalVariableUnit takes string s returns unit
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (YDWEI2U(GetStoredInteger(YDGC, (dir ), ( s)))) // INLINED!!
endfunction

function YDWESetLocalVariableUnitArray takes string s,integer index,unit u returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreInteger(YDGC, (dir ), ( s + I2S(index) ), YDWEH2I(( u))) // INLINED!!
endfunction

function YDWEGetLocalVariableUnitArray takes string s,integer index returns unit
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (YDWEI2U(GetStoredInteger(YDGC, (dir ), ( s + I2S(index))))) // INLINED!!
endfunction

//unit code
function YDWESetLocalVariableUnitID takes string s,integer uid returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreInteger(YDGC, (dir ), ( s ), ( uid)) // INLINED!!
endfunction

function YDWEGetLocalVariableUnitID takes string s returns integer
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (GetStoredInteger(YDGC, (dir ), ( s))) // INLINED!!
endfunction

function YDWESetLocalVariableUnitIDArray takes string s,integer index,integer uid returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreInteger(YDGC, (dir ), ( s + I2S(index) ), ( uid)) // INLINED!!
endfunction

function YDWEGetLocalVariableUnitIDArray takes string s,integer index returns integer
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (GetStoredInteger(YDGC, (dir ), ( s + I2S(index)))) // INLINED!!
endfunction
//ability code
function YDWESetLocalVariableAbilityID takes string s,integer abid returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreInteger(YDGC, (dir ), ( s ), ( abid)) // INLINED!!
endfunction

function YDWEGetLocalVariableAbilityID takes string s returns integer
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (GetStoredInteger(YDGC, (dir ), ( s))) // INLINED!!
endfunction

function YDWESetLocalVariableAbilityIDArray takes string s,integer index,integer abid returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreInteger(YDGC, (dir ), ( s + I2S(index) ), ( abid)) // INLINED!!
endfunction

function YDWEGetLocalVariableAbilityIDArray takes string s,integer index returns integer
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (GetStoredInteger(YDGC, (dir ), ( s + I2S(index)))) // INLINED!!
endfunction
//item
function YDWESetLocalVariableItem takes string s,item it returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreInteger(YDGC, (dir ), ( s ), YDWEH2I(( it))) // INLINED!!
endfunction

function YDWEGetLocalVariableItem takes string s returns item
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (YDWEI2It(GetStoredInteger(YDGC, (dir ), ( s)))) // INLINED!!
endfunction

function YDWESetLocalVariableItemArray takes string s,integer index,item it returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreInteger(YDGC, (dir ), ( s + I2S(index) ), YDWEH2I(( it))) // INLINED!!
endfunction

function YDWEGetLocalVariableItemArray takes string s,integer index returns item
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (YDWEI2It(GetStoredInteger(YDGC, (dir ), ( s + I2S(index))))) // INLINED!!
endfunction
//item code
function YDWESetLocalVariableItemID takes string s,integer itid returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreInteger(YDGC, (dir ), ( s ), ( itid)) // INLINED!!
endfunction

function YDWEGetLocalVariableItemID takes string s returns integer
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (GetStoredInteger(YDGC, (dir ), ( s))) // INLINED!!
endfunction

function YDWESetLocalVariableItemIDArray takes string s,integer index,integer itid returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreInteger(YDGC, (dir ), ( s + I2S(index) ), ( itid)) // INLINED!!
endfunction

function YDWEGetLocalVariableItemIDArray takes string s,integer index returns integer
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (GetStoredInteger(YDGC, (dir ), ( s + I2S(index)))) // INLINED!!
endfunction
//location
function YDWESetLocalVariableLocation takes string s,location point returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreInteger(YDGC, (dir ), ( s ), YDWEH2I(( point))) // INLINED!!
endfunction

function YDWEGetLocalVariableLocation takes string s returns location
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (YDWEI2Pt(GetStoredInteger(YDGC, (dir ), ( s)))) // INLINED!!
endfunction

function YDWESetLocalVariableLocationArray takes string s,integer index,location point returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreInteger(YDGC, (dir ), ( s + I2S(index) ), YDWEH2I(( point))) // INLINED!!
endfunction

function YDWEGetLocalVariableLocationArray takes string s,integer index returns location
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (YDWEI2Pt(GetStoredInteger(YDGC, (dir ), ( s + I2S(index))))) // INLINED!!
endfunction
//group
function YDWESetLocalVariableGroup takes string s,group g returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreInteger(YDGC, (dir ), ( s ), YDWEH2I(( g))) // INLINED!!
endfunction

function YDWEGetLocalVariableGroup takes string s returns group
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (YDWEI2G(GetStoredInteger(YDGC, (dir ), ( s)))) // INLINED!!
endfunction

function YDWESetLocalVariableGroupArray takes string s,integer index,group g returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreInteger(YDGC, (dir ), ( s + I2S(index) ), YDWEH2I(( g))) // INLINED!!
endfunction

function YDWEGetLocalVariableGroupArray takes string s,integer index returns group
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (YDWEI2G(GetStoredInteger(YDGC, (dir ), ( s + I2S(index))))) // INLINED!!
endfunction
//effect
function YDWESetLocalVariableEffect takes string s,effect e returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreInteger(YDGC, (dir ), ( s ), YDWEH2I(( e))) // INLINED!!
endfunction

function YDWEGetLocalVariableEffect takes string s returns effect
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (YDWEI2E(GetStoredInteger(YDGC, (dir ), ( s)))) // INLINED!!
endfunction

function YDWESetLocalVariableEffectArray takes string s,integer index,effect e returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreInteger(YDGC, (dir ), ( s + I2S(index) ), YDWEH2I(( e))) // INLINED!!
endfunction

function YDWEGetLocalVariableEffectArray takes string s,integer index returns effect
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (YDWEI2E(GetStoredInteger(YDGC, (dir ), ( s + I2S(index))))) // INLINED!!
endfunction

//rect
function YDWESetLocalVariableRect takes string s,rect rt returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreInteger(YDGC, (dir ), ( s ), YDWEH2I(( rt))) // INLINED!!
endfunction

function YDWEGetLocalVariableRect takes string s returns rect
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (YDWEI2Rt(GetStoredInteger(YDGC, (dir ), ( s)))) // INLINED!!
endfunction

function YDWESetLocalVariableRectArray takes string s,integer index,rect rt returns nothing
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    call StoreInteger(YDGC, (dir ), ( s + I2S(index) ), YDWEH2I(( rt))) // INLINED!!
endfunction

function YDWEGetLocalVariableRectArray takes string s,integer index returns rect
    local integer TriggerRunSteps= (GetStoredInteger(YDGC, (I2S(YDWEH2I(GetTriggeringTrigger())) ), ( "TriggerRunSteps"))) // INLINED!!
    local string dir= I2S(YDWEH2I(GetTriggeringTrigger())) + I2S(TriggerRunSteps)
    return (YDWEI2Rt(GetStoredInteger(YDGC, (dir ), ( s + I2S(index))))) // INLINED!!
endfunction
//===========================================================================
//===========================================================================
//全局函数
//===========================================================================
//===========================================================================

//===========================================================================
//物品属性系
//===========================================================================
function YDWEItemAbilityStorage takes integer itid,integer ab returns nothing
    local integer index= (GetStoredInteger(YDGC, (I2S(itid) ), ( "AbilityStorageIndex"))) // INLINED!!
    set index=index + 1
    call StoreInteger(YDGC, (I2S(itid) ), ( "AbilityStorage" + I2S(index) ), ( ab)) // INLINED!!
    call StoreInteger(YDGC, (I2S(itid) ), ( "AbilityStorageIndex" ), ( index)) // INLINED!!
endfunction

//===========================================================================
//拾取物品触发
//===========================================================================
function YDWEItemAbilitySystemByAbility_CON takes nothing returns boolean
    local unit hero= GetTriggerUnit()
    local item it=GetManipulatedItem()
    local trigger trg=(YDWEI2T(GetStoredInteger(YDGC, (I2S(YDWEH2I(hero)) ), ( "MulItemSlotByAbility")))) // INLINED!!
    local integer itid=GetItemTypeId(it)
    local integer index= (GetStoredInteger(YDGC, (I2S(itid) ), ( "AbilityStorageIndex"))) // INLINED!!
    local integer array skills
    local integer i=0
    local integer N=(GetStoredInteger(YDGC, (I2S(YDWEH2I(trg)) ), ( "ItemSlotNum"))) // INLINED!!
    local boolean OnOff=(GetStoredBoolean(YDGC, (I2S(YDWEH2I(hero)) ), ( "YDWEItemAbilitySystemTriggerClose"))) // INLINED!!
    if index == 0 or OnOff == true then
        set it=null
        set hero=null
        set trg=null
        return false
    endif
    loop
        set i=i + 1
        exitwhen i > index
        set skills[i]=(GetStoredInteger(YDGC, (I2S(itid) ), ( "AbilityStorage" + I2S(i)))) // INLINED!!
        if GetTriggerEventId() == ConvertUnitEvent(48) then
            call UnitRemoveAbility(hero, skills[i])
          elseif GetTriggerEventId() == ConvertUnitEvent(49) then
            call UnitAddAbility(hero, skills[i])
            call UnitMakeAbilityPermanent(hero, true, skills[i])
        endif
    endloop
    set it=null
    set hero=null
    set trg=null
    return false
endfunction

function YDWEItemAbilitySystem takes nothing returns nothing
    local trigger trg=CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(trg, EVENT_PLAYER_UNIT_PICKUP_ITEM)
    call TriggerRegisterAnyUnitEventBJ(trg, EVENT_PLAYER_UNIT_DROP_ITEM)
    call TriggerAddCondition(trg, Condition(function YDWEItemAbilitySystemByAbility_CON))
    set trg=null
endfunction


//===========================================================================
//===========================================================================
//系统函数补充
//===========================================================================
//===========================================================================
function YDWEGetUnitItemSoftId takes unit hero,item it returns integer
    local integer i= 0
    loop
         exitwhen i > 5
         if UnitItemInSlot(hero, i) == it then
            exitwhen true
         endif
         set i=i + 1
    endloop
    if i > 5 then
        set i=0
      else
        set i=i + 1
    endif
    return i
endfunction
//===========================================================================
//===========================================================================
//地图初始化
//===========================================================================
//===========================================================================

//游戏时间
function YDWEGetGameCurrentTime takes nothing returns integer
    return TimerSystem_BigSteps
endfunction

function YDWEGameTimeElapse takes nothing returns nothing
    set TimerSystem_BigSteps=TimerSystem_BigSteps + 1
endfunction

//记录触发器函数
function YDWESaveTriggerActionsIndex2 takes trigger whichTrigger,code actionFunc returns triggeraction
//local  triggeraction act
//call BJDebugMsg("bbb")
    set FilterFuncSyStem_Index=FilterFuncSyStem_Index + 1
    call StoreInteger(YDGC, (I2S(YDWEH2I(whichTrigger)) ), ( "ActionFunctionIndex" ), ( FilterFuncSyStem_Index)) // INLINED!!
    set FilterFuncSyStem_filterfunc[FilterFuncSyStem_Index]=Filter(actionFunc)
  //  return TriggerAddAction(whichTrigger,actionFunc)
    return null
endfunction

function YDWESaveTriggerActionsIndex takes trigger whichTrigger,code actionFunc returns triggeraction
    //local  triggeraction act
//call BJDebugMsg("aaa")
    call YDWESaveTriggerActionsIndex2(whichTrigger , actionFunc)
    return null
endfunction

//hook TriggerAddAction YDWESaveTriggerActionsIndex

//开启记录
function YDWEGameStartActions takes nothing returns nothing
    set TimerSystem_BigTimer=CreateTimer()
    call TimerStart(TimerSystem_BigTimer, TimerSystem_BigTimeout, true, function YDWEGameTimeElapse)
    call YDWEItemAbilitySystem() //开启单位拾取物品触发器
endfunction

//显示版本
function YDWEVersion_Display takes nothing returns boolean
    call DisplayTimedTextToPlayer(GetTriggerPlayer(), 0, 0, 30, "|cFF1E90FF褰撳墠缂栬緫鍣ㄧ増鏈?负锛?|r|cFF00FF00YDWE1.20姝e紡鐗?)
    return false
endfunction

function YDWEVersion_Init takes nothing returns nothing
    local trigger t= CreateTrigger()
    local integer i= 0
    loop
        exitwhen i == 12
        call TriggerRegisterPlayerChatEvent(t, Player(i), "YDWE Version", true)
        set i=i + 1
    endloop
    call TriggerAddCondition(t, Condition(function YDWEVersion_Display))
    set t=null
endfunction



function InitializeYD takes nothing returns nothing
    local trigger trg=CreateTrigger()
   

    call TriggerRegisterTimerEventSingle(trg, 0.00)
    call TriggerAddAction(trg, function YDWEGameStartActions)
    set TimerSystem_TimerZero=CreateTimer()
    set trg=null
        //call BJDebugMsg("The result is " + I2S(abcdefghij))
        //=================设置变量=====================
    set yd_MapMaxX=GetRectMaxX(bj_mapInitialPlayableArea)
    set yd_MapMinX=GetRectMinX(bj_mapInitialPlayableArea)
    set yd_MapMaxY=GetRectMaxY(bj_mapInitialPlayableArea)
    set yd_MapMinY=GetRectMinY(bj_mapInitialPlayableArea)
    //=================显示版本=====================
    call YDWEVersion_Init()
endfunction



//library YDWEBase ends
//library Around:
//library TP1 requires YDWEBase


    function Around__spin takes nothing returns nothing
        local integer d= 0
        local real x= 0.
        local real y= 0.
        local integer inst= 0
        
        loop
            exitwhen ( inst == s__Around__Data_Total )
            set d=s__Around__Data_Structs[inst]
            if ( s__Around__Data_dur[d] > 0 ) and ( GetUnitState(s__Around__Data_caster[d], UNIT_STATE_LIFE) > 0 ) and ( GetUnitState(s__Around__Data_obj[d], UNIT_STATE_LIFE) > 0 ) then
                set s__Around__Data_each[d]=s__Around__Data_each[d] + Around__AROUND_INTER
                if ( s__Around__Data_each[d] >= s__Around__Data_inter[d] ) then
                    set s__Around__Data_angle[d]=s__Around__Data_angle[d] + s__Around__Data_rate[d]
                    set s__Around__Data_radius[d]=s__Around__Data_radius[d] + s__Around__Data_dis[d]
                    set s__Around__Data_height[d]=s__Around__Data_height[d] + s__Around__Data_rise[d]
                    set x=GetUnitX(s__Around__Data_caster[d]) + s__Around__Data_radius[d] * Cos(s__Around__Data_angle[d])
                    set y=GetUnitY(s__Around__Data_caster[d]) + s__Around__Data_radius[d] * Sin(s__Around__Data_angle[d])
                    set x=YDWECoordinateX(x)
                    set y=YDWECoordinateY(y)
                    call SetUnitX(s__Around__Data_obj[d], x)
                    call SetUnitY(s__Around__Data_obj[d], y)
                    call SetUnitFlyHeight(s__Around__Data_obj[d], s__Around__Data_height[d], 0.)
                    set s__Around__Data_each[d]=0.
                endif
                set s__Around__Data_dur[d]=s__Around__Data_dur[d] - Around__AROUND_INTER
            else
                set bj_lastAbilityTargetUnit=s__Around__Data_caster[d]
                call YDWESyStemAbilityCastingOverTriggerAction(s__Around__Data_obj[d] , 10)
                set s__Around__Data_caster[d]=null
                set s__Around__Data_obj[d]=null
                call s__Around__Data_deallocate(d)
                set s__Around__Data_Total=s__Around__Data_Total - 1
                set s__Around__Data_Structs[inst]=s__Around__Data_Structs[s__Around__Data_Total]
                set inst=inst - 1
            endif
            set inst=inst + 1
        endloop
        if ( s__Around__Data_Total == 0 ) then
            call PauseTimer(Around__AROUND_TIM)
        endif
    endfunction

    function YDWEAroundSystem takes unit satellite,unit star,real angleRate,real displacement,real riseRate,real timeout,real interval returns nothing
        local integer d= s__Around__Data__allocate()
        local real x1= GetUnitX(star)
        local real y1= GetUnitY(star)
        local real x2= GetUnitX(satellite)
        local real y2= GetUnitY(satellite)
        set s__Around__Data_caster[d]=star
        set s__Around__Data_obj[d]=satellite
        set s__Around__Data_dur[d]=timeout
        set s__Around__Data_inter[d]=interval
        set s__Around__Data_rate[d]=angleRate * ( 3.14159 / 180. )
        set s__Around__Data_dis[d]=displacement
        set s__Around__Data_rise[d]=riseRate
        set s__Around__Data_angle[d]=Atan2(y2 - y1, x2 - x1)
        set s__Around__Data_radius[d]=SquareRoot(( x2 - x1 ) * ( x2 - x1 ) + ( y2 - y1 ) * ( y2 - y1 ))
        set s__Around__Data_height[d]=GetUnitFlyHeight(s__Around__Data_obj[d])
        set s__Around__Data_Structs[s__Around__Data_Total]=(d)
        set s__Around__Data_Total=s__Around__Data_Total + 1
        call StoreInteger(YDGC, (I2S(YDWEH2I(satellite)) ), ( "abilevent" ), ( 10)) // INLINED!!
        if ( s__Around__Data_Total - 1 == 0 ) then
            call TimerStart(Around__AROUND_TIM, Around__AROUND_INTER, true, function Around__spin)
        endif
    endfunction
   

//library Around ends
//library YDWEJumpTimer:
function YDWEJumpTimerLoop takes nothing returns nothing
    local timer t=GetExpiredTimer()
    local unit hero=( (YDWEI2U(GetStoredInteger(YDGC, (I2S(YDWEH2I(t)) ), ( "Hero")))) ) // INLINED!!
    local real angle=(GetStoredReal(YDGC, (I2S(YDWEH2I(t)) ), ( "Angle"))) // INLINED!!
    local integer steeps=(GetStoredInteger(YDGC, (I2S(YDWEH2I(t)) ), ( "steeps"))) // INLINED!!
    local integer steepsMax=(GetStoredInteger(YDGC, (I2S(YDWEH2I(t)) ), ( "steepsMax"))) // INLINED!!
    local real heightMax=(GetStoredReal(YDGC, (I2S(YDWEH2I(t)) ), ( "heightMax"))) // INLINED!!
    local real dist=(GetStoredReal(YDGC, (I2S(YDWEH2I(t)) ), ( "dist"))) // INLINED!!
    local real dheig=(GetStoredReal(YDGC, (I2S(YDWEH2I(t)) ), ( "dheig"))) // INLINED!!
    local real OriginHeight=(GetStoredReal(YDGC, (I2S(YDWEH2I(t)) ), ( "OriginHeight"))) // INLINED!!
    local real x=(GetStoredReal(YDGC, (I2S(YDWEH2I(t)) ), ( "X"))) // INLINED!!
    local real y=(GetStoredReal(YDGC, (I2S(YDWEH2I(t)) ), ( "Y"))) // INLINED!!
    local real x1=0
    local real y1=0
    local real height=0
    local integer lvJumpTimer=MoveMoreLevel_JumpTimer
    local integer lvUnitMove=(GetStoredInteger(YDGC, (I2S(YDWEH2I(hero)) ), ( "lvUnitMove"))) // INLINED!!
    if steeps < steepsMax and lvJumpTimer >= lvUnitMove then
        set x1=x + steeps * dist * Cos(angle * 3.14159 / 180.0)
        set y1=y + steeps * dist * Sin(angle * 3.14159 / 180.0)
        set x1=YDWECoordinateX(x1)
        set y1=YDWECoordinateY(y1)
        call SetUnitX(hero, x1)
        call SetUnitY(hero, y1)
        set steeps=steeps + 1
        call StoreInteger(YDGC, (I2S(YDWEH2I(t)) ), ( "steeps" ), ( steeps)) // INLINED!!
        set height=( - ( 2 * I2R(steeps) * dheig - 1 ) * ( 2 * I2R(steeps) * dheig - 1 ) + 1 ) * heightMax + OriginHeight
        call SetUnitFlyHeight(hero, height, 99999)
        call SetUnitFacing(hero, angle)
      else
        call SetUnitFlyHeight(hero, OriginHeight, 99999)
        call SetUnitPathing(hero, true)
        call DestroyTimer(t)
        call FlushStoredMission(YDGC, (I2S(YDWEH2I(t)))) // INLINED!!
        call StoreInteger(YDGC, (I2S(YDWEH2I(hero)) ), ( "lvUnitMove" ), ( 0)) // INLINED!!
        call YDWESyStemAbilityCastingOverTriggerAction(hero , 2)
    endif
    set t=null
    set hero=null
endfunction
                           

function YDWEJumpTimer takes unit hero,real angle,real distance,real lasttime,real timeout,real heightMax returns nothing
    local timer t=null
    local real x=GetUnitX(hero)
    local real y=GetUnitY(hero)
    local integer steepsMax=R2I(lasttime / timeout)
    local integer steeps=0
    local real dist=distance / steepsMax
    local real dheig=1.0 / steepsMax
    local real OriginHeight=GetUnitFlyHeight(hero)
    local integer lvJumpTimer=MoveMoreLevel_JumpTimer
    local integer lvUnitMove=(GetStoredInteger(YDGC, (I2S(YDWEH2I(hero)) ), ( "lvUnitMove"))) // INLINED!!
    if lvJumpTimer > lvUnitMove then
        set t=CreateTimer()
        set lvUnitMove=lvJumpTimer
        call StoreInteger(YDGC, (I2S(YDWEH2I(hero)) ), ( "lvUnitMove" ), ( lvUnitMove)) // INLINED!!
      else
        return
    endif
    call UnitAddAbility(hero, 'Amrf')
    call UnitRemoveAbility(hero, 'Amrf')
    call SetUnitPathing(hero, false)
    call StoreInteger(YDGC, (I2S(YDWEH2I(t)) ), ( "Hero" ), YDWEH2I(( hero))) // INLINED!!
    call StoreReal(YDGC, (I2S(YDWEH2I(t)) ), ( "OriginHeight" ), (( OriginHeight)*1.0)) // INLINED!!
    call StoreReal(YDGC, (I2S(YDWEH2I(t)) ), ( "Angle" ), (( angle)*1.0)) // INLINED!!
    call StoreReal(YDGC, (I2S(YDWEH2I(t)) ), ( "dist" ), (( dist)*1.0)) // INLINED!!
    call StoreReal(YDGC, (I2S(YDWEH2I(t)) ), ( "heightMax" ), (( heightMax)*1.0)) // INLINED!!
    call StoreReal(YDGC, (I2S(YDWEH2I(t)) ), ( "dheig" ), (( dheig)*1.0)) // INLINED!!
    call StoreReal(YDGC, (I2S(YDWEH2I(t)) ), ( "X" ), (( x)*1.0)) // INLINED!!
    call StoreReal(YDGC, (I2S(YDWEH2I(t)) ), ( "Y" ), (( y)*1.0)) // INLINED!!
    call StoreInteger(YDGC, (I2S(YDWEH2I(t)) ), ( "steeps" ), ( steeps)) // INLINED!!
    call StoreInteger(YDGC, (I2S(YDWEH2I(t)) ), ( "steepsMax" ), ( steepsMax)) // INLINED!!
    call TimerStart(t, timeout, true, function YDWEJumpTimerLoop)
    set t=null
endfunction

//library YDWEJumpTimer ends
//library YDWEMath:
   



//library YDWEMath ends
//library YDWESetGuard:
function YDWEGetUnitCurrentFree_Func takes unit u returns boolean
    local string s= OrderId2String(GetUnitCurrentOrder(u))
    if s == null then
        return true
    endif
    return false
endfunction

function YDWERemoveGuard takes unit pet returns nothing
    local integer tm= (GetStoredInteger(YDGC, (I2S(YDWEH2I(pet)) ), ( "Timer"))) // INLINED!!
    call FlushStoredMission(YDGC, (I2S(YDWEH2I(pet)))) // INLINED!!
    call FlushStoredMission(YDGC, (I2S(tm))) // INLINED!!
    call DestroyTimer((YDWEI2Tm(GetStoredInteger(YDGC, (I2S(YDWEH2I(pet)) ), ( "Timer"))))) // INLINED!!
endfunction

function YDWESetGuard_Func takes nothing returns nothing
  local timer tm= GetExpiredTimer()
  local unit pet= ( (YDWEI2U(GetStoredInteger(YDGC, (I2S(YDWEH2I(tm)) ), ( "Pet")))) ) // INLINED!!
  local unit captain= ( (YDWEI2U(GetStoredInteger(YDGC, (I2S(YDWEH2I(tm)) ), ( "Captain")))) ) // INLINED!!
  local real x= GetUnitX(captain) - GetUnitX(pet)
  local real y= GetUnitY(captain) - GetUnitY(pet)
  local real d= x * x + y * y
  local real v
  local real a
  local effect e=null
  local real life= (GetStoredReal(YDGC, (I2S(YDWEH2I(tm)) ), ( "Life"))) // INLINED!!
  local integer p= (GetStoredInteger(YDGC, (I2S(YDWEH2I(tm)) ), ( "Percent"))) // INLINED!!
  set v=(GetStoredReal(YDGC, (I2S(YDWEH2I(tm)) ), ( "GuardRanger"))) // INLINED!!
  if GetUnitState(pet, UNIT_STATE_LIFE) > 0 and GetUnitState(captain, UNIT_STATE_LIFE) > 0 then
      if d < v * v then
         if YDWEGetUnitCurrentFree_Func(pet) == true and GetRandomInt(0, 100) < p then
           set x=GetUnitX(captain)
           set y=GetUnitY(captain)
           set d=GetRandomReal(0, v)
           set a=GetRandomReal(0, 360)
           call IssuePointOrder(pet, "patrol", x + d * CosBJ(a), y + d * SinBJ(a))
         endif
      else
        set v=(GetStoredReal(YDGC, (I2S(YDWEH2I(tm)) ), ( "ReturnRanger"))) // INLINED!!
        if d < v * v then
          if YDWEGetUnitCurrentFree_Func(pet) == true then
            call IssuePointOrder(pet, "patrol", GetUnitX(captain), GetUnitY(captain))
          endif
        else
          set v=(GetStoredReal(YDGC, (I2S(YDWEH2I(tm)) ), ( "OutRanger"))) // INLINED!!
            if d != 0 and d > v * v then
              call SetUnitPosition(pet, GetUnitX(captain), GetUnitY(captain))
              set e=AddSpecialEffectTarget("Abilities\\Spells\\Human\\MassTeleport\\MassTeleportTarget.mdl", captain, "chest")
              call DestroyEffect(e)
            else
              call IssuePointOrder(pet, "move", GetUnitX(captain), GetUnitY(captain))
            endif
          endif
       endif
     else
       call IssuePointOrder(pet, "attack", GetUnitX(captain), GetUnitY(captain))
       call YDWERemoveGuard(pet)
  endif
  set tm=null
  set pet=null
  set captain=null
  set e=null
endfunction


function YDWESetGuard takes unit pet,unit captain,real timeout,real guardRanger,real returnRanger,real outRanger,integer percent returns nothing
    local timer tm= CreateTimer()
    call StoreInteger(YDGC, (I2S(YDWEH2I(pet)) ), ( "Timer" ), YDWEH2I(( tm))) // INLINED!!
    call StoreInteger(YDGC, (I2S(YDWEH2I(tm)) ), ( "pet" ), YDWEH2I(( pet))) // INLINED!!
    call StoreInteger(YDGC, (I2S(YDWEH2I(tm)) ), ( "Captain" ), YDWEH2I(( captain))) // INLINED!!
    call StoreInteger(YDGC, (I2S(YDWEH2I(tm)) ), ( "Percent" ), ( percent)) // INLINED!!
    call StoreReal(YDGC, (I2S(YDWEH2I(tm)) ), ( "GuardRanger" ), (( guardRanger)*1.0)) // INLINED!!
    call StoreReal(YDGC, (I2S(YDWEH2I(tm)) ), ( "ReturnRanger" ), (( returnRanger)*1.0)) // INLINED!!
    call StoreReal(YDGC, (I2S(YDWEH2I(tm)) ), ( "OutRanger" ), (( outRanger)*1.0)) // INLINED!!
    call TimerStart(tm, timeout, true, function YDWESetGuard_Func)
    set tm=null
endfunction

//library YDWESetGuard ends
//library YDWETimerSystem:

function YDWECoordinateInteger3p takes integer i,integer j,integer k returns integer
    if i >= j then
        set i=k
    endif
    return i
endfunction

//该函数序列处理
function YDWETimerSystem_list_index_limit takes integer index,boolexpr proc returns integer
    local integer i=0
//以下用来处理当任务序列超过8192的情形
    loop
        set yd_ctimer_list_index=YDWECoordinateInteger3p(yd_ctimer_list_index + 1 , 8191 , 0)
        exitwhen yd_ctimer_list_index_boolean[yd_ctimer_list_index] == false
    endloop
    set yd_ctimer_list_index_boolean[yd_ctimer_list_index]=true
//以下用来获取当前任务序列下的执行序列  
    set yd_ctimer_list_proc[yd_ctimer_list_index]=proc
    set i=(GetStoredInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( "MaxIndex" + I2S(index)))) // INLINED!!
    set i=i + 1
    call StoreInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( "MaxIndex" + I2S(index) ), ( i)) // INLINED!!
    call StoreInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( I2S(index) + "Index" + I2S(i) ), ( yd_ctimer_list_index)) // INLINED!!
    return i
endfunction

//删除单位
function YDWETimerSystem_RemoveUnit_CallBack takes nothing returns nothing
    call RemoveUnit((YDWEI2U(GetStoredInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( I2S(yd_ctimer_current_index) + "data" + I2S(yd_ctimer_list_proc_index)))))) // INLINED!!
    call FlushStoredInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( I2S(yd_ctimer_current_index) + "data" + I2S(yd_ctimer_list_proc_index))) // INLINED!!
endfunction

function YDWETimerRemoveUnit takes real time,unit u returns nothing
    local integer index=R2I(100 * time) + yd_ctimer_current_index
    local integer i=YDWETimerSystem_list_index_limit(index , yd_ctimer_RemoveUnit_proc)
    call StoreInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( I2S(index) + "data" + I2S(i) ), YDWEH2I(( u))) // INLINED!!
endfunction
                     
//摧毁计时器
function YDWETimerSystem_DestroyTimer_CallBack takes nothing returns nothing
    call DestroyTimer((YDWEI2Tm(GetStoredInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( I2S(yd_ctimer_current_index) + "data" + I2S(yd_ctimer_list_proc_index)))))) // INLINED!!
    call FlushStoredInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( I2S(yd_ctimer_current_index) + "data" + I2S(yd_ctimer_list_proc_index))) // INLINED!!
endfunction

function YDWETimerDestroyTimer takes real time,timer t returns nothing
    local integer index=R2I(100 * time) + yd_ctimer_current_index
    local integer i=YDWETimerSystem_list_index_limit(index , yd_ctimer_DestroyTimer_proc)
    call StoreInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( I2S(index) + "data" + I2S(i) ), YDWEH2I(( t))) // INLINED!!
endfunction

//删除物品
function YDWETimerSystem_RemoveItem_CallBack takes nothing returns nothing
    call RemoveItem((YDWEI2It(GetStoredInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( I2S(yd_ctimer_current_index) + "data" + I2S(yd_ctimer_list_proc_index)))))) // INLINED!!
    call FlushStoredInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( I2S(yd_ctimer_current_index) + "data" + I2S(yd_ctimer_list_proc_index))) // INLINED!!
endfunction

function YDWETimerRemoveItem takes real time,item it returns nothing
    local integer index=R2I(100 * time) + yd_ctimer_current_index
    local integer i=YDWETimerSystem_list_index_limit(index , yd_ctimer_RemoveItem_proc)
    call StoreInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( I2S(index) + "data" + I2S(i) ), YDWEH2I(( it))) // INLINED!!
endfunction

//删除特效
function YDWETimerSystem_DestroyEffect_CallBack takes nothing returns nothing
    call DestroyEffect((YDWEI2E(GetStoredInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( I2S(yd_ctimer_current_index) + "data" + I2S(yd_ctimer_list_proc_index)))))) // INLINED!!
    call FlushStoredInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( I2S(yd_ctimer_current_index) + "data" + I2S(yd_ctimer_list_proc_index))) // INLINED!!
endfunction

function YDWETimerDestroyEffect takes real time,effect e returns nothing
    local integer index=R2I(100 * time) + yd_ctimer_current_index
    local integer i=YDWETimerSystem_list_index_limit(index , yd_ctimer_DestroyEffect_proc)
    call StoreInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( I2S(index) + "data" + I2S(i) ), YDWEH2I(( e))) // INLINED!!
endfunction

//删除闪电特效
function YDWETimerSystem_DestroyLightning_CallBack takes nothing returns nothing
    call DestroyLightning((YDWEI2Ln(GetStoredInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( I2S(yd_ctimer_current_index) + "data" + I2S(yd_ctimer_list_proc_index)))))) // INLINED!!
    call FlushStoredInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( I2S(yd_ctimer_current_index) + "data" + I2S(yd_ctimer_list_proc_index))) // INLINED!!
endfunction

function YDWETimerDestroyLightning takes real time,lightning lt returns nothing
    local integer index=R2I(100 * time) + yd_ctimer_current_index
    local integer i=YDWETimerSystem_list_index_limit(index , yd_ctimer_DestroyLightning_proc)
    call StoreInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( I2S(index) + "data" + I2S(i) ), YDWEH2I(( lt))) // INLINED!!
endfunction

//运行触发器
function YDWETimerSystem_RunTrigger_CallBack takes nothing returns nothing
    call TriggerExecute((YDWEI2T(GetStoredInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( I2S(yd_ctimer_current_index) + "data" + I2S(yd_ctimer_list_proc_index)))))) // INLINED!!
    call FlushStoredInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( I2S(yd_ctimer_current_index) + "data" + I2S(yd_ctimer_list_proc_index))) // INLINED!!
endfunction

function YDWETimerRunTrigger takes real time,trigger trg returns nothing
    local integer index=R2I(100 * time) + yd_ctimer_current_index
    local integer i=YDWETimerSystem_list_index_limit(index , yd_ctimer_RunTrigger_proc)
    call StoreInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( I2S(index) + "data" + I2S(i) ), YDWEH2I(( trg))) // INLINED!!
endfunction

//删除漂浮文字
function YDWETimerDestroyTextTag takes real time,texttag tt returns nothing
    local integer N=0
    local integer i=0
    if time <= 0 then
        set time=0.01
    endif
    call SetTextTagPermanent(tt, false)
    call SetTextTagLifespan(tt, time)
    call SetTextTagFadepoint(tt, time)
endfunction

//中心计时器主函数
function YDWETimerSystem_Main takes nothing returns nothing
    local integer i=0
    local integer index=0
    set yd_ctimer_current_index=yd_ctimer_current_index + 1 //执行步数累加
    set i=(GetStoredInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( "MaxIndex" + I2S(yd_ctimer_current_index)))) // INLINED!!
    if i > 0 then
        loop
            set index=(GetStoredInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( I2S(yd_ctimer_current_index) + "Index" + I2S(i)))) // INLINED!!
            set yd_ctimer_list_proc_index=i
            call ForceEnumPlayers(yd_RunBoolexpr, yd_ctimer_list_proc[index])
            set yd_ctimer_list_index_boolean[index]=false
   // call DestroyLightning(YDWEGetLightningByString(I2S(YDWEH2I(TimerSystem_Timer)),I2S(yd_ctimer_current_index)+"data"+I2S(yd_ctimer_list_proc_index)))            
            call FlushStoredInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( I2S(yd_ctimer_current_index) + "Index" + I2S(i))) // INLINED!!
                           
            set i=i - 1
            exitwhen i <= 0
        endloop
    call FlushStoredInteger(YDGC, (I2S(YDWEH2I(TimerSystem_Timer)) ), ( "MaxIndex" + I2S(yd_ctimer_current_index))) // INLINED!!
  endif
endfunction

//初始化函数
function YDWETimerSystem_Init takes nothing returns nothing
    set yd_RunBoolexpr=CreateForce()
    call ForceAddPlayer(yd_RunBoolexpr, Player(0))
    set TimerSystem_Timer=CreateTimer()
    set yd_ctimer_list_index=0
    set yd_ctimer_current_index=0
    set yd_ctimer_list_proc_index=0
    set yd_ctimer_RemoveUnit_proc=Filter(function YDWETimerSystem_RemoveUnit_CallBack)
    set yd_ctimer_DestroyTimer_proc=Filter(function YDWETimerSystem_DestroyTimer_CallBack)
    set yd_ctimer_RemoveItem_proc=Filter(function YDWETimerSystem_RemoveItem_CallBack)
    set yd_ctimer_DestroyEffect_proc=Filter(function YDWETimerSystem_DestroyEffect_CallBack)
    set yd_ctimer_DestroyLightning_proc=Filter(function YDWETimerSystem_DestroyLightning_CallBack)
    set yd_ctimer_RunTrigger_proc=Filter(function YDWETimerSystem_RunTrigger_CallBack)
    call TimerStart(TimerSystem_Timer, 0.01, true, function YDWETimerSystem_Main)
endfunction

//暂时先改下原来中心计时器的流程,这里暂时用普通计时器代替
function YDWETimerSystemGetRunIndex takes nothing returns integer
    return TimerSystem_RunIndex
endfunction

//循环类仍用独立计时器
function YDWETimerRunPeriodicTriggerFunction takes nothing returns nothing
    local timer t=GetExpiredTimer()
    local trigger trg=(YDWEI2T(GetStoredInteger(YDGC, (I2S(YDWEH2I(t)) ), ( "Trigger")))) // INLINED!!
    local integer RunIndex=(GetStoredInteger(YDGC, (I2S(YDWEH2I(t)) ), ( "RunIndex"))) // INLINED!!
    call StoreInteger(YDGC, (I2S(YDWEH2I(trg)) ), ( "RunIndex" ), ( RunIndex)) // INLINED!!
    call ConditionalTriggerExecute(trg)
    set t=null
    set trg=null
endfunction

function YDWETimerRunPeriodicTriggerFunctionByTimes takes nothing returns nothing
    local timer t=GetExpiredTimer()
    local trigger trg=(YDWEI2T(GetStoredInteger(YDGC, (I2S(YDWEH2I(t)) ), ( "Trigger")))) // INLINED!!
    local integer RunIndex=(GetStoredInteger(YDGC, (I2S(YDWEH2I(t)) ), ( "RunIndex"))) // INLINED!!
    local integer times=(GetStoredInteger(YDGC, (I2S(YDWEH2I(t)) ), ( "Times"))) // INLINED!!
    call StoreInteger(YDGC, (I2S(YDWEH2I(trg)) ), ( "RunIndex" ), ( RunIndex)) // INLINED!!
    call ConditionalTriggerExecute(trg)
    set times=times - 1
    if times > 0 then
        call StoreInteger(YDGC, (I2S(YDWEH2I(t)) ), ( "Times" ), ( times)) // INLINED!!
      else
        call DestroyTimer(t)
        call FlushStoredMission(YDGC, (I2S(YDWEH2I(t)))) // INLINED!!
    endif
    set t=null
    set trg=null
endfunction

function YDWETimerRunPeriodicTrigger takes real timeout,trigger trg,boolean b,integer times,integer data returns nothing
    local timer t=null
    local integer i=0
    local integer index=0
    if timeout < 0 then
        return
      else
        set t=CreateTimer()
    endif
    set TimerSystem_RunIndex=TimerSystem_RunIndex + 1
    call StoreInteger(YDGC, (I2S(YDWEH2I(t)) ), ( "Trigger" ), YDWEH2I(( trg))) // INLINED!!
    call StoreInteger(YDGC, (I2S(YDWEH2I(t)) ), ( "RunIndex" ), ( TimerSystem_RunIndex)) // INLINED!!
    set index=(GetStoredInteger(YDGC, (I2S(YDWEH2I(trg)) ), ( "YDWETimerNumber" + I2S(data)))) // INLINED!!
    set index=index + 1
    call StoreInteger(YDGC, (I2S(YDWEH2I(trg)) ), ( "YDWETimerNumber" + I2S(data) ), ( index)) // INLINED!!
    call StoreInteger(YDGC, (I2S(YDWEH2I(trg)) ), ( "YDWETimer" + I2S(data) + "Index" + I2S(index) ), YDWEH2I(( t))) // INLINED!!
    if b == false then
        call StoreInteger(YDGC, (I2S(YDWEH2I(t)) ), ( "Times" ), ( times)) // INLINED!!
        call TimerStart(t, timeout, true, function YDWETimerRunPeriodicTriggerFunctionByTimes)
      else
        call TimerStart(t, timeout, true, function YDWETimerRunPeriodicTriggerFunction)
    endif
    set t=null
endfunction

function YDWETimerRunPeriodicTriggerOver takes trigger trg,integer data returns nothing
    local integer index=(GetStoredInteger(YDGC, (I2S(YDWEH2I(trg)) ), ( "YDWETimerNumber" + I2S(data)))) // INLINED!!
    local timer t=null
    loop
        exitwhen index <= 0
        set t=(YDWEI2Tm(GetStoredInteger(YDGC, (I2S(YDWEH2I(trg)) ), ( "YDWETimer" + I2S(data) + "Index" + I2S(index))))) // INLINED!!
        call DestroyTimer(t)
        call FlushStoredMission(YDGC, (I2S(YDWEH2I(t)))) // INLINED!!
        set t=null
        set index=index - 1
    endloop
endfunction

//library YDWETimerSystem ends
//library YDWETriggerEvent:
//===========================================================================  
//任意单位伤害事件
//===========================================================================
//call YDWESaveBooleanByString(I2S(YDWEH2I(u)),"GetAdvancedUnitDataing",false)
function YDWEAnyUnitDamagedTriggerAction takes nothing returns nothing
    local integer i=(GetStoredInteger(YDGC, ("YDWESyStemAnyUnitDamagedTrigger" ), ( "TriggerNumber"))) // INLINED!!
    local boolean b=(GetStoredBoolean(YDGC, (I2S(YDWEH2I(GetTriggerUnit())) ), ( "GetAdvancedUnitDataing"))) // INLINED!!
    local trigger array trg
    loop
        set trg[i]=(YDWEI2T(GetStoredInteger(YDGC, ("YDWESyStemAnyUnitDamagedTrigger" ), ( I2S(i))))) // INLINED!!
        if trg[i] != null and IsTriggerEnabled(trg[i]) == true and b == false then
            call ConditionalTriggerExecute(trg[i])
        endif
        set trg[i]=null
        set i=i - 1
        exitwhen i <= 0
    endloop
    //return
endfunction

function YDWEAnyUnitDamagedEnumUnitFunction takes nothing returns nothing
    local trigger trg=(YDWEI2T(GetStoredInteger(YDGC, ("YDWESyStemAnyUnitDamagedTrigger" ), ( "Trigger")))) // INLINED!!
    if GetUnitAbilityLevel(GetEnumUnit(), 'Aloc') == 0 then
        call TriggerRegisterUnitEvent(trg, GetEnumUnit(), EVENT_UNIT_DAMAGED)
    endif
    set trg=null
endfunction

function YDWESyStemAnyUnitEnterMapRectTriggerAction takes nothing returns nothing
    local trigger trg=(YDWEI2T(GetStoredInteger(YDGC, ("YDWESyStemAnyUnitDamagedTrigger" ), ( "Trigger")))) // INLINED!!
    if GetUnitAbilityLevel(GetTriggerUnit(), 'Aloc') == 0 then
        call TriggerRegisterUnitEvent(trg, GetTriggerUnit(), EVENT_UNIT_DAMAGED)
    endif
    set trg=null
endfunction

function YDWEAnyUnitDamagedEnumUnit takes nothing returns nothing
    local trigger trg=CreateTrigger()
    local group g=CreateGroup()
    set g=GetUnitsInRectAll(GetPlayableMapRect())
    call ForGroup(g, function YDWEAnyUnitDamagedEnumUnitFunction)
    //call YDWESaveGroupByString("YDWESyStemAnyUnitDamagedTrigger","Group",g)
    call TriggerRegisterEnterRectSimple(trg, GetPlayableMapRect())
    call TriggerAddAction(trg, function YDWESyStemAnyUnitEnterMapRectTriggerAction)
    call StoreInteger(YDGC, ("YDWESyStemAnyUnitEnterMapRectTrigger" ), ( "Trigger" ), YDWEH2I(( trg))) // INLINED!!
    call DestroyGroup(g)
    set trg=null
    set g=null
    //return
endfunction

function YDWESyStemAnyUnitDamagedRegistTrigger takes trigger trg returns nothing
    local integer i=(GetStoredInteger(YDGC, ("YDWESyStemAnyUnitDamagedTrigger" ), ( "TriggerNumber"))) // INLINED!!
    local trigger SystemTrigger=null
    if i == 0 then
        set SystemTrigger=CreateTrigger()
        call TriggerAddAction(SystemTrigger, function YDWEAnyUnitDamagedTriggerAction)
        call StoreInteger(YDGC, ("YDWESyStemAnyUnitDamagedTrigger" ), ( "Trigger" ), YDWEH2I(( SystemTrigger))) // INLINED!!
        call YDWEAnyUnitDamagedEnumUnit()
    endif
    set i=i + 1
    call StoreInteger(YDGC, ("YDWESyStemAnyUnitDamagedTrigger" ), ( "TriggerNumber" ), ( i)) // INLINED!!
    call StoreInteger(YDGC, ("YDWESyStemAnyUnitDamagedTrigger" ), ( I2S(i) ), YDWEH2I(( trg))) // INLINED!!
    set SystemTrigger=null
    //return
endfunction

//===========================================================================  
//移动物品事件
//===========================================================================
function YDWESyStemItemUnmovableTriggerAction takes nothing returns nothing
    local integer i
    local trigger trg
    if GetIssuedOrderId() >= 852002 and GetIssuedOrderId() <= 852007 then
                set i=(GetStoredInteger(YDGC, ("YDWESyStemItemUnmovableRegistTrigger" ), ( "TriggerNumber"))) // INLINED!!
                set bj_lastMovedItemInItemSlot=GetOrderTargetItem()
        loop
            set trg=(YDWEI2T(GetStoredInteger(YDGC, ("YDWESyStemItemUnmovableRegistTrigger" ), ( I2S(i))))) // INLINED!!
            if trg != null and IsTriggerEnabled(trg) and TriggerEvaluate(trg) then
                                call TriggerExecute(trg)
            endif
            set i=i - 1
            exitwhen i <= 0
        endloop
                set trg=null
    endif
endfunction
   

function YDWESyStemItemUnmovableRegistTrigger takes trigger trg returns nothing
    local integer i=(GetStoredInteger(YDGC, ("YDWESyStemItemUnmovableRegistTrigger" ), ( "TriggerNumber"))) // INLINED!!
    local trigger SystemTrigger=null
    if i == 0 then
        set SystemTrigger=CreateTrigger()
        call TriggerRegisterAnyUnitEventBJ(SystemTrigger, EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER)
        call TriggerAddAction(SystemTrigger, function YDWESyStemItemUnmovableTriggerAction)
        call StoreInteger(YDGC, ("YDWESyStemItemUnmovableRegistTrigger" ), ( "Trigger" ), YDWEH2I(( SystemTrigger))) // INLINED!!
    endif
    set i=i + 1
    call StoreInteger(YDGC, ("YDWESyStemItemUnmovableRegistTrigger" ), ( "TriggerNumber" ), ( i)) // INLINED!!
    call StoreInteger(YDGC, ("YDWESyStemItemUnmovableRegistTrigger" ), ( I2S(i) ), YDWEH2I(( trg))) // INLINED!!
    set SystemTrigger=null
endfunction

//GetLastMovedItemInItemSlot
//===========================================================================  
//物品合成事件
//===========================================================================  
function YDWESyStemItemCombineRegistTrigger takes trigger trg returns nothing
    local integer i=(GetStoredInteger(YDGC, ("YDWESyStemItemCombineRegistTrigger" ), ( "TriggerNumber"))) // INLINED!!
    set i=i + 1
    call StoreInteger(YDGC, ("YDWESyStemItemCombineRegistTrigger" ), ( "TriggerNumber" ), ( i)) // INLINED!!
    call StoreInteger(YDGC, ("YDWESyStemItemCombineRegistTrigger" ), ( I2S(i) ), YDWEH2I(( trg))) // INLINED!!
endfunction

//GetLastCombinedItem
//===========================================================================  
//YDWE技能捕捉事件
//===========================================================================  
function YDWESyStemAbilityCastingOverRegistTrigger takes trigger trg,integer index returns nothing
    local integer i=(GetStoredInteger(YDGC, ("YDWESyStemAbilityCastingOverRegistTrigger" ), ( "TriggerNumber"))) // INLINED!!
    set i=i + 1
    call StoreInteger(YDGC, ("YDWESyStemAbilityCastingOverRegistTrigger" ), ( "TriggerNumber" ), ( i)) // INLINED!!
    call StoreInteger(YDGC, ("YDWESyStemAbilityCastingOverRegistTrigger" ), ( I2S(YDWEH2I(trg)) + "AbilityType" ), ( index)) // INLINED!!
    call StoreInteger(YDGC, ("YDWESyStemAbilityCastingOverRegistTrigger" ), ( I2S(i) ), YDWEH2I(( trg))) // INLINED!!
endfunction

//  

//library YDWETriggerEvent ends
//library YDWETimerPattern:



    //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    //                                       Timer Pattern Union                                              //
    //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=  
    function YDWETimerPattern__SingleMagic takes unit sour,unit targ,real x,real y,real h,integer uid,integer aid,integer lv,integer order returns nothing
        local unit dummy= CreateUnit(GetOwningPlayer(sour), uid, x, y, GetUnitFacing(sour))
        call UnitApplyTimedLife(dummy, 'BHwe', 1.0)
        call UnitAddAbility(dummy, aid)
        call SetUnitAbilityLevel(dummy, aid, lv)
        call SetUnitFlyHeight(dummy, h, 0.0)
        call IssueTargetOrderById(dummy, order, targ)
        set dummy=null
    endfunction
   
    function YDWETimerPattern__GetUnitZ takes unit u returns real
        call MoveLocation(yd_locHelper, GetUnitX(u), GetUnitY(u))
        return GetUnitFlyHeight(u) + GetLocationZ(yd_locHelper)
    endfunction

    //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    //                                            Filter Funcs                                                //
    //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    function YDWETimerPattern__EnemyFilter takes unit u,unit caster returns boolean
        return IsUnitType(u, UNIT_TYPE_MAGIC_IMMUNE) == false and IsUnitType(u, UNIT_TYPE_RESISTANT) == false and IsUnitType(u, UNIT_TYPE_SLEEPING) == false and GetUnitState(u, UNIT_STATE_LIFE) > 0.405 and IsUnitType(u, UNIT_TYPE_STRUCTURE) == false and IsUnitIllusion(u) == false and IsUnitHidden(u) == false and IsUnitEnemy(u, GetOwningPlayer(caster)) and IsUnitVisible(u, GetOwningPlayer(caster))
    endfunction
   
    function YDWETimerPattern__TreeFilter takes nothing returns boolean
        local integer id= GetDestructableTypeId(GetFilterDestructable())
        return id == 'LTlt' or id == 'ATtr' or id == 'BTtw' or id == 'KTtw' or id == 'YTft' or id == 'JTct' or id == 'YTst' or id == 'YTct' or id == 'YTwt' or id == 'JTtw' or id == 'DTsh' or id == 'FTtw' or id == 'CTtr' or id == 'ITtw' or id == 'NTtw' or id == 'OTtw' or id == 'ZTtw' or id == 'WTst' or id == 'GTsh' or id == 'VTlt' or id == 'WTtw' or id == 'ATtc' or id == 'BTtc' or id == 'CTtc' or id == 'ITtc' or id == 'NTtc' or id == 'ZTtc'
    endfunction
   
    //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    //                                         Major Structure Code                                           //
    //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
        
        function s__YDWETimerPattern__Thread__staticgetindex takes handle h returns integer
            return (GetStoredInteger(YDGC, ("YDWETimerPattern" ), ( I2S(YDWEH2I(h))))) // INLINED!!
        endfunction
        
        function s__YDWETimerPattern__Thread__staticsetindex takes handle h,integer value returns nothing
            call StoreInteger(YDGC, ("YDWETimerPattern" ), ( I2S(YDWEH2I(h)) ), ( value)) // INLINED!!
        endfunction
        
        function s__YDWETimerPattern__Thread_flush takes handle h returns nothing
            call FlushStoredInteger(YDGC, ("YDWETimerPattern" ), ( I2S(YDWEH2I(h)))) // INLINED!!
        endfunction
        
        function s__YDWETimerPattern__Thread__set_x takes integer this,real value returns nothing
            set s__YDVector3_x[s__YDWETimerPattern__Thread_pos[this]]=value
            call SetUnitX(s__YDWETimerPattern__Thread_obj[this], value)
        endfunction

        function s__YDWETimerPattern__Thread__set_y takes integer this,real value returns nothing
            set s__YDVector3_y[s__YDWETimerPattern__Thread_pos[this]]=value
            call SetUnitY(s__YDWETimerPattern__Thread_obj[this], value)
        endfunction
      
        function s__YDWETimerPattern__Thread__set_z takes integer this,real value returns nothing
            set s__YDVector3_z[s__YDWETimerPattern__Thread_pos[this]]=value
            call MoveLocation(yd_locHelper, s__YDVector3_x[s__YDWETimerPattern__Thread_pos[this]], s__YDVector3_y[s__YDWETimerPattern__Thread_pos[this]])
            call SetUnitFlyHeight(s__YDWETimerPattern__Thread_obj[this], value - GetLocationZ(yd_locHelper), 0)
        endfunction
        
        function s__YDWETimerPattern__Thread_isInRange takes real vx,real vy,real vz,real radius returns boolean
            return vx * vx + vy * vy + vz * vz < radius * radius
        endfunction
        
        function s__YDWETimerPattern__Thread_TreeKill takes nothing returns nothing
            local destructable d= GetEnumDestructable()
            if GetWidgetLife(d) > 0.405 then
                call KillDestructable(d)
            endif
            set d=null
        endfunction
        
        function s__YDWETimerPattern__Thread_damage takes integer this,unit sour,real x,real y,real z,boolean monomer,boolean break returns nothing
            local group g= CreateGroup()
            local unit f
            call GroupEnumUnitsInRange(g, x, y, YDWETimerPattern__TIMER_PATTERN_RADIUS, null)
            loop
                set f=FirstOfGroup(g)
                exitwhen f == null
                if IsUnitInGroup(f, s__YDWETimerPattern__Thread_except[this]) == false then
                    if YDWETimerPattern__EnemyFilter(f , sour) then
                        if s__YDWETimerPattern__Thread_isInRange(GetUnitX(f) - x , GetUnitY(f) - y , YDWETimerPattern__GetUnitZ(f) - z , YDWETimerPattern__TIMER_PATTERN_RADIUS) then
                            call GroupAddUnit(s__YDWETimerPattern__Thread_except[this], f)
                            call UnitDamageTarget(sour, f, s__YDWETimerPattern__Thread_amount[this], true, true, bj_lastSetAttackType, bj_lastSetDamageType, bj_lastSetWeaponType)
                            call DestroyEffect(AddSpecialEffectTarget(s__YDWETimerPattern__Thread_dsfx[this], f, s__YDWETimerPattern__Thread_part[this]))
                            set s__YDWETimerPattern__Thread_target[this]=f
                            if s__YDWETimerPattern__Thread_skills[this] > '0000' and s__YDWETimerPattern__Thread_skills[this] != null and s__YDWETimerPattern__Thread_order[this] > 0 and s__YDWETimerPattern__Thread_order[this] != null then
                                call YDWETimerPattern__SingleMagic(sour , f , x , y , GetUnitFlyHeight(s__YDWETimerPattern__Thread_obj[this]) , s__YDWETimerPattern__Thread_unitid[this] , s__YDWETimerPattern__Thread_skills[this] , s__YDWETimerPattern__Thread_level[this] , s__YDWETimerPattern__Thread_order[this])
                            endif
                            if break then
                                set s__YDWETimerPattern__Thread_switch[this]=0
                                exitwhen true
                            endif
                            exitwhen monomer
                        endif
                    endif
                endif
                call GroupRemoveUnit(g, f)
                set f=null
            endloop
            call GroupClear(g)
            call DestroyGroup(g)
            set g=null
            set f=null
        endfunction
           
        function s__YDWETimerPattern__Thread_onDestroy takes integer this returns nothing
            call GroupClear(s__YDWETimerPattern__Thread_except[this])
            call DestroyGroup(s__YDWETimerPattern__Thread_except[this])
            call FlushStoredInteger(YDGC, ("YDWETimerPattern" ), ( I2S(YDWEH2I((s__YDWETimerPattern__Thread_obj[this]))))) // INLINED!!
            call FlushStoredInteger(YDGC, ("YDWETimerPattern" ), ( I2S(YDWEH2I((s__YDWETimerPattern__Thread_t[this]))))) // INLINED!!
            call PauseTimer(s__YDWETimerPattern__Thread_t[this])
            call DestroyTimer(s__YDWETimerPattern__Thread_t[this])
            call s__YDVector3_deallocate(s__YDWETimerPattern__Thread_des[this])
            call s__YDVector3_deallocate(s__YDWETimerPattern__Thread_pos[this])
            call s__YDVector3_deallocate(s__YDWETimerPattern__Thread_vel[this])
            call s__YDVector3_deallocate(s__YDWETimerPattern__Thread_dec[this])
            set s__YDWETimerPattern__Thread_except[this]=null
            set s__YDWETimerPattern__Thread_caster[this]=null
            set s__YDWETimerPattern__Thread_target[this]=null
            set s__YDWETimerPattern__Thread_obj[this]=null
            set s__YDWETimerPattern__Thread_t[this]=null
            set s__YDWETimerPattern__Thread_amount[this]=0
            set s__YDWETimerPattern__Thread_skills[this]=0
            set s__YDWETimerPattern__Thread_order[this]=0
            set s__YDWETimerPattern__Thread_dsfx[this]=""
            set s__YDWETimerPattern__Thread_gsfx[this]=""
            set s__YDWETimerPattern__Thread_wsfx[this]=""
            set s__YDWETimerPattern__Thread_part[this]=""
        endfunction
   
   
        function s__Parabola_move takes nothing returns nothing
            local integer this= (GetStoredInteger(YDGC, ("YDWETimerPattern" ), ( I2S(YDWEH2I((GetExpiredTimer())))))) // INLINED!!
            local real vx= s__YDVector3_x[s__YDWETimerPattern__Thread_des[this]] - s__YDVector3_x[s__YDWETimerPattern__Thread_pos[this]]
            local real vy= s__YDVector3_y[s__YDWETimerPattern__Thread_des[this]] - s__YDVector3_y[s__YDWETimerPattern__Thread_pos[this]]
            local real vz= s__YDVector3_z[s__YDWETimerPattern__Thread_des[this]] - s__YDVector3_z[s__YDWETimerPattern__Thread_pos[this]]
            if vx * vx + vy * vy + vz * vz > 900.0 then
                call s__YDWETimerPattern__Thread__set_x(this,s__YDVector3_x[s__YDWETimerPattern__Thread_pos[this]] + s__YDVector3_x[s__YDWETimerPattern__Thread_vel[this]])
                call s__YDWETimerPattern__Thread__set_y(this,s__YDVector3_y[s__YDWETimerPattern__Thread_pos[this]] + s__YDVector3_y[s__YDWETimerPattern__Thread_vel[this]])
                call s__YDWETimerPattern__Thread__set_z(this,s__YDVector3_z[s__YDWETimerPattern__Thread_pos[this]] + s__YDWETimerPattern__Thread_ac[this] * s__YDWETimerPattern__Thread_step[this] * 2 + s__YDWETimerPattern__Thread_ac[this] * s__YDWETimerPattern__Thread_dist[this] + s__YDWETimerPattern__Thread_bc[this])
                set s__YDWETimerPattern__Thread_step[this]=s__YDWETimerPattern__Thread_step[this] + s__YDWETimerPattern__Thread_dist[this]
                if YDWECoordinateX(s__YDVector3_x[s__YDWETimerPattern__Thread_pos[this]]) != s__YDVector3_x[s__YDWETimerPattern__Thread_pos[this]] or YDWECoordinateY(s__YDVector3_y[s__YDWETimerPattern__Thread_pos[this]]) != s__YDVector3_y[s__YDWETimerPattern__Thread_pos[this]] then
                    set s__YDWETimerPattern__Thread_switch[this]=0
                endif
                if s__YDWETimerPattern__Thread_amount[this] > 0.0 then
                    call s__YDWETimerPattern__Thread_damage(this,s__YDWETimerPattern__Thread_caster[this] , s__YDVector3_x[s__YDWETimerPattern__Thread_pos[this]] + s__YDVector3_x[s__YDWETimerPattern__Thread_vel[this]] , s__YDVector3_y[s__YDWETimerPattern__Thread_pos[this]] + s__YDVector3_y[s__YDWETimerPattern__Thread_vel[this]] , YDWETimerPattern__GetUnitZ(s__YDWETimerPattern__Thread_obj[this]) , false , false)
                endif
            else
                set s__YDWETimerPattern__Thread_switch[this]=0
            endif
            
            if s__YDWETimerPattern__Thread_switch[this] == 0 then
                call SetUnitFlyHeight(s__YDWETimerPattern__Thread_obj[this], GetUnitDefaultFlyHeight(s__YDWETimerPattern__Thread_obj[this]), 200.0)
                call SetUnitTimeScale(s__YDWETimerPattern__Thread_obj[this], 1)
                //YDWETriggerEvent
                call YDWESyStemAbilityCastingOverTriggerAction(s__YDWETimerPattern__Thread_obj[this] , 7)
                call sc__YDWETimerPattern__Thread_deallocate(this)
            endif
        endfunction
   
        function s__Parabola_create takes unit source,unit object,real angle,real distance,real time,real interval,real high,real damage,string attach,string deff returns integer
            local integer this= s__Parabola__allocate()
            local real vx= 0.0
            local real vy= 0.0
            local real vz= 0.0
            set s__YDWETimerPattern__Thread_pos[this]=s__YDVector3__allocate()
            set s__YDWETimerPattern__Thread_des[this]=s__YDVector3__allocate()
            set s__YDWETimerPattern__Thread_vel[this]=s__YDVector3__allocate()
            set s__YDVector3_x[s__YDWETimerPattern__Thread_pos[this]]=GetUnitX(object)
            set s__YDVector3_y[s__YDWETimerPattern__Thread_pos[this]]=GetUnitY(object)
            set s__YDVector3_z[s__YDWETimerPattern__Thread_pos[this]]=YDWETimerPattern__GetUnitZ(object)
            set s__YDVector3_x[s__YDWETimerPattern__Thread_des[this]]=s__YDVector3_x[s__YDWETimerPattern__Thread_pos[this]] + distance * Cos(angle)
            set s__YDVector3_y[s__YDWETimerPattern__Thread_des[this]]=s__YDVector3_y[s__YDWETimerPattern__Thread_pos[this]] + distance * Sin(angle)
            call MoveLocation(yd_locHelper, s__YDVector3_x[s__YDWETimerPattern__Thread_des[this]], s__YDVector3_y[s__YDWETimerPattern__Thread_des[this]])
            set s__YDVector3_z[s__YDWETimerPattern__Thread_des[this]]=GetLocationZ(yd_locHelper)
            set vx=s__YDVector3_x[s__YDWETimerPattern__Thread_des[this]] - s__YDVector3_x[s__YDWETimerPattern__Thread_pos[this]]
            set vy=s__YDVector3_y[s__YDWETimerPattern__Thread_des[this]] - s__YDVector3_y[s__YDWETimerPattern__Thread_pos[this]]
            set vz=s__YDVector3_z[s__YDWETimerPattern__Thread_des[this]] - s__YDVector3_z[s__YDWETimerPattern__Thread_pos[this]]
            if s__YDVector3_z[s__YDWETimerPattern__Thread_pos[this]] > s__YDVector3_z[s__YDWETimerPattern__Thread_des[this]] then
                set high=high + s__YDVector3_z[s__YDWETimerPattern__Thread_pos[this]]
            else
                set high=high + s__YDVector3_z[s__YDWETimerPattern__Thread_des[this]]
            endif
            set s__YDWETimerPattern__Thread_ac[this]=( 2 * ( s__YDVector3_z[s__YDWETimerPattern__Thread_pos[this]] + s__YDVector3_z[s__YDWETimerPattern__Thread_des[this]] ) - 4 * high ) / ( distance * distance )
            set s__YDWETimerPattern__Thread_bc[this]=( s__YDVector3_z[s__YDWETimerPattern__Thread_des[this]] - s__YDVector3_z[s__YDWETimerPattern__Thread_pos[this]] - s__YDWETimerPattern__Thread_ac[this] * distance * distance ) / distance
            set s__YDWETimerPattern__Thread_dist[this]=distance * interval / time
            set s__YDWETimerPattern__Thread_ac[this]=s__YDWETimerPattern__Thread_ac[this] * s__YDWETimerPattern__Thread_dist[this]
            set s__YDWETimerPattern__Thread_bc[this]=s__YDWETimerPattern__Thread_bc[this] * s__YDWETimerPattern__Thread_dist[this]
            set s__YDVector3_x[s__YDWETimerPattern__Thread_vel[this]]=s__YDWETimerPattern__Thread_dist[this] * Cos(angle)
            set s__YDVector3_y[s__YDWETimerPattern__Thread_vel[this]]=s__YDWETimerPattern__Thread_dist[this] * Sin(angle)
            set s__YDWETimerPattern__Thread_step[this]=0.0
            set s__YDWETimerPattern__Thread_caster[this]=source
            set s__YDWETimerPattern__Thread_obj[this]=object
            set s__YDWETimerPattern__Thread_amount[this]=damage
            set s__YDWETimerPattern__Thread_dsfx[this]=deff
            set s__YDWETimerPattern__Thread_part[this]=attach
            set s__YDWETimerPattern__Thread_switch[this]=1
            set s__YDWETimerPattern__Thread_t[this]=CreateTimer()
            set s__YDWETimerPattern__Thread_except[this]=CreateGroup()
            call UnitAddAbility(s__YDWETimerPattern__Thread_obj[this], 'Amrf')
            call UnitRemoveAbility(s__YDWETimerPattern__Thread_obj[this], 'Amrf')
            call TimerStart(s__YDWETimerPattern__Thread_t[this], interval, true, function s__Parabola_move)
            call GroupAddUnit(s__YDWETimerPattern__Thread_except[this], object)
            call StoreInteger(YDGC, ("YDWETimerPattern" ), ( I2S(YDWEH2I((object))) ), ( ( (this)))) // INLINED!!
            call StoreInteger(YDGC, ("YDWETimerPattern" ), ( I2S(YDWEH2I((s__YDWETimerPattern__Thread_t[this]))) ), ( ( (this)))) // INLINED!!
            return this
        endfunction
   
   
    // uniform speed
   
        function s__Linear_move takes nothing returns nothing
            local integer this= (GetStoredInteger(YDGC, ("YDWETimerPattern" ), ( I2S(YDWEH2I((GetExpiredTimer())))))) // INLINED!!
            if s__YDWETimerPattern__Thread_step[this] > s__YDWETimerPattern__Thread_dist[this] then
                call s__YDWETimerPattern__Thread__set_x(this,s__YDVector3_x[s__YDWETimerPattern__Thread_pos[this]] + s__YDVector3_x[s__YDWETimerPattern__Thread_vel[this]])
                call s__YDWETimerPattern__Thread__set_y(this,s__YDVector3_y[s__YDWETimerPattern__Thread_pos[this]] + s__YDVector3_y[s__YDWETimerPattern__Thread_vel[this]])
                set s__YDVector3_z[s__YDWETimerPattern__Thread_pos[this]]=YDWETimerPattern__GetUnitZ(s__YDWETimerPattern__Thread_obj[this])
                set s__YDWETimerPattern__Thread_step[this]=s__YDWETimerPattern__Thread_step[this] - s__YDWETimerPattern__Thread_dist[this]
                call s__YDWETimerPattern__Thread_damage(this,s__YDWETimerPattern__Thread_caster[this] , s__YDVector3_x[s__YDWETimerPattern__Thread_pos[this]] , s__YDVector3_y[s__YDWETimerPattern__Thread_pos[this]] , s__YDVector3_z[s__YDWETimerPattern__Thread_pos[this]] , true , true)
                if YDWECoordinateX(s__YDVector3_x[s__YDWETimerPattern__Thread_pos[this]]) != s__YDVector3_x[s__YDWETimerPattern__Thread_pos[this]] or YDWECoordinateY(s__YDVector3_y[s__YDWETimerPattern__Thread_pos[this]]) != s__YDVector3_y[s__YDWETimerPattern__Thread_pos[this]] then
                    set s__YDWETimerPattern__Thread_switch[this]=0
                endif
            else
                set s__YDWETimerPattern__Thread_switch[this]=0
            endif
            
            if s__YDWETimerPattern__Thread_switch[this] == 0 then
                // YDWETriggerEvent
                if s__YDWETimerPattern__Thread_target[this] != null then
                    //call YDWESaveUnitByString(I2S(YDWEH2I(.caster)), "MoonPriestessArrow", .target)
                    set bj_lastAbilityTargetUnit=s__YDWETimerPattern__Thread_target[this]
                    call YDWESyStemAbilityCastingOverTriggerAction(s__YDWETimerPattern__Thread_caster[this] , 8)
                else
                    call YDWESyStemAbilityCastingOverTriggerAction(s__YDWETimerPattern__Thread_caster[this] , 9)
                endif
                //call KillUnit(.obj)
                call RemoveUnit(s__YDWETimerPattern__Thread_obj[this])
                call sc__YDWETimerPattern__Thread_deallocate(this)
            endif
        endfunction
   
        function s__Linear_create takes unit source,unit object,real angle,real distance,real time,real interval,integer uid,integer aid,integer lv,integer orderid,string attach,string sfx returns integer
            local integer this= s__Linear__allocate()
            set s__YDWETimerPattern__Thread_pos[this]=s__YDVector3__allocate()
            set s__YDWETimerPattern__Thread_vel[this]=s__YDVector3__allocate()
            set s__YDWETimerPattern__Thread_step[this]=distance
            set s__YDWETimerPattern__Thread_dist[this]=distance * interval / time
            set s__YDVector3_x[s__YDWETimerPattern__Thread_vel[this]]=s__YDWETimerPattern__Thread_dist[this] * Cos(angle)
            set s__YDVector3_y[s__YDWETimerPattern__Thread_vel[this]]=s__YDWETimerPattern__Thread_dist[this] * Sin(angle)
            set s__YDVector3_x[s__YDWETimerPattern__Thread_pos[this]]=GetUnitX(object)
            set s__YDVector3_y[s__YDWETimerPattern__Thread_pos[this]]=GetUnitY(object)
            set s__YDWETimerPattern__Thread_caster[this]=source
            set s__YDWETimerPattern__Thread_obj[this]=object
            set s__YDWETimerPattern__Thread_unitid[this]=uid
            set s__YDWETimerPattern__Thread_skills[this]=aid
            set s__YDWETimerPattern__Thread_level[this]=lv
            set s__YDWETimerPattern__Thread_order[this]=orderid
            set s__YDWETimerPattern__Thread_part[this]=attach
            set s__YDWETimerPattern__Thread_gsfx[this]=sfx
            set s__YDWETimerPattern__Thread_switch[this]=1
            set s__YDWETimerPattern__Thread_t[this]=CreateTimer()
            call TimerStart(s__YDWETimerPattern__Thread_t[this], interval, true, function s__Linear_move)
            call StoreInteger(YDGC, ("YDWETimerPattern" ), ( I2S(YDWEH2I((s__YDWETimerPattern__Thread_t[this]))) ), ( ( (this)))) // INLINED!!
            return this
        endfunction
        
   
    // Uniform deceleration
   
        function s__Deceleration_move takes nothing returns nothing
            local integer this= (GetStoredInteger(YDGC, ("YDWETimerPattern" ), ( I2S(YDWEH2I((GetExpiredTimer())))))) // INLINED!!
            local real xp= s__YDVector3_x[s__YDWETimerPattern__Thread_pos[this]] + s__YDVector3_x[s__YDWETimerPattern__Thread_vel[this]]
            local real yp= s__YDVector3_y[s__YDWETimerPattern__Thread_pos[this]] + s__YDVector3_y[s__YDWETimerPattern__Thread_vel[this]]
            if s__YDWETimerPattern__Thread_volume[this] == false then
                if IsTerrainPathable(xp, yp, PATHING_TYPE_WALKABILITY) then
                    set s__YDWETimerPattern__Thread_switch[this]=0
                else
                    call s__YDWETimerPattern__Thread__set_x(this,xp)
                    call s__YDWETimerPattern__Thread__set_y(this,yp)
                endif
            else
                call s__YDWETimerPattern__Thread__set_x(this,xp)
                call s__YDWETimerPattern__Thread__set_y(this,yp)
            endif
            if s__YDWETimerPattern__Thread_follow[this] == 0 then
                if GetUnitFlyHeight(s__YDWETimerPattern__Thread_obj[this]) < 5. then
                    if IsTerrainPathable(s__YDVector3_x[s__YDWETimerPattern__Thread_pos[this]], s__YDVector3_y[s__YDWETimerPattern__Thread_pos[this]], PATHING_TYPE_FLOATABILITY) then
                        call DestroyEffect(AddSpecialEffect(s__YDWETimerPattern__Thread_gsfx[this], s__YDVector3_x[s__YDWETimerPattern__Thread_pos[this]], s__YDVector3_y[s__YDWETimerPattern__Thread_pos[this]]))
                    else
                        call DestroyEffect(AddSpecialEffect(s__YDWETimerPattern__Thread_wsfx[this], s__YDVector3_x[s__YDWETimerPattern__Thread_pos[this]], s__YDVector3_y[s__YDWETimerPattern__Thread_pos[this]]))
                    endif
                endif
            endif
            set s__YDWETimerPattern__Thread_follow[this]=s__YDWETimerPattern__Thread_follow[this] + 1
            if s__YDWETimerPattern__Thread_follow[this] == 2 then
                set s__YDWETimerPattern__Thread_follow[this]=0
            endif
            if s__YDWETimerPattern__Thread_killdest[this] then
                call MoveRectTo(YDWETimerPattern__area, s__YDVector3_x[s__YDWETimerPattern__Thread_pos[this]], s__YDVector3_y[s__YDWETimerPattern__Thread_pos[this]])
                call EnumDestructablesInRect(YDWETimerPattern__area, YDWETimerPattern__bexpr, function s__YDWETimerPattern__Thread_TreeKill)
            endif
            if s__YDWETimerPattern__Thread_amount[this] > 0.0 then
                call s__YDWETimerPattern__Thread_damage(this,s__YDWETimerPattern__Thread_caster[this] , s__YDVector3_x[s__YDWETimerPattern__Thread_pos[this]] , s__YDVector3_y[s__YDWETimerPattern__Thread_pos[this]] , 0.0 , false , s__YDWETimerPattern__Thread_recyclable[this])
            endif
            if s__YDVector3_x[s__YDWETimerPattern__Thread_vel[this]] * s__YDVector3_x[s__YDWETimerPattern__Thread_vel[this]] + s__YDVector3_y[s__YDWETimerPattern__Thread_vel[this]] * s__YDVector3_y[s__YDWETimerPattern__Thread_vel[this]] < 100.0 or YDWECoordinateX(s__YDVector3_x[s__YDWETimerPattern__Thread_pos[this]]) != s__YDVector3_x[s__YDWETimerPattern__Thread_pos[this]] or YDWECoordinateY(s__YDVector3_y[s__YDWETimerPattern__Thread_pos[this]]) != s__YDVector3_y[s__YDWETimerPattern__Thread_pos[this]] then
                set s__YDWETimerPattern__Thread_switch[this]=0
            else
                set s__YDVector3_x[s__YDWETimerPattern__Thread_vel[this]]=s__YDVector3_x[s__YDWETimerPattern__Thread_vel[this]] - s__YDVector3_x[s__YDWETimerPattern__Thread_dec[this]]
                set s__YDVector3_y[s__YDWETimerPattern__Thread_vel[this]]=s__YDVector3_y[s__YDWETimerPattern__Thread_vel[this]] - s__YDVector3_y[s__YDWETimerPattern__Thread_dec[this]]
            endif
            
            if s__YDWETimerPattern__Thread_switch[this] == 0 then
                call SetUnitFlyHeight(s__YDWETimerPattern__Thread_obj[this], GetUnitDefaultFlyHeight(s__YDWETimerPattern__Thread_obj[this]), 200.0)
                call SetUnitTimeScale(s__YDWETimerPattern__Thread_obj[this], 1)
                // YDWETriggerEvent
                call YDWESyStemAbilityCastingOverTriggerAction(s__YDWETimerPattern__Thread_obj[this] , 6)
                call sc__YDWETimerPattern__Thread_deallocate(this)
            endif
        endfunction
   
        function s__Deceleration_create takes unit source,unit object,real angle,real distance,real time,real interval,real damage,boolean killtrees,boolean cycle,boolean path,string part,string geff,string weff returns integer
            local integer this= ((GetStoredInteger(YDGC, ("YDWETimerPattern" ), ( I2S(YDWEH2I((object))))))) // INLINED!!
            local real vx= 0.0
            local real vy= 0.0
            local real l= 0.0
            if IsUnitInGroup(object, s__YDWETimerPattern__Thread_except[this]) then
                return - 1
            endif
            set vx=2 * distance * Cos(angle) * interval / time
            set vy=2 * distance * Sin(angle) * interval / time
            if (this) > 0 then
                set s__YDVector3_x[s__YDWETimerPattern__Thread_vel[this]]=s__YDVector3_x[s__YDWETimerPattern__Thread_vel[this]] + vx
                set s__YDVector3_y[s__YDWETimerPattern__Thread_vel[this]]=s__YDVector3_y[s__YDWETimerPattern__Thread_vel[this]] + vy
                set l=SquareRoot(s__YDVector3_x[s__YDWETimerPattern__Thread_vel[this]] * s__YDVector3_x[s__YDWETimerPattern__Thread_vel[this]] + s__YDVector3_y[s__YDWETimerPattern__Thread_vel[this]] * s__YDVector3_y[s__YDWETimerPattern__Thread_vel[this]]) / SquareRoot(vx * vx + vy * vy)
                set s__YDVector3_x[s__YDWETimerPattern__Thread_dec[this]]=s__YDVector3_x[s__YDWETimerPattern__Thread_vel[this]] * interval / ( time * l )
                set s__YDVector3_y[s__YDWETimerPattern__Thread_dec[this]]=s__YDVector3_y[s__YDWETimerPattern__Thread_vel[this]] * interval / ( time * l )
            else
                set this=s__Deceleration__allocate()
                set s__YDWETimerPattern__Thread_pos[this]=s__YDVector3__allocate()
                set s__YDWETimerPattern__Thread_vel[this]=s__YDVector3__allocate()
                set s__YDWETimerPattern__Thread_dec[this]=s__YDVector3__allocate()
                set s__YDVector3_x[s__YDWETimerPattern__Thread_vel[this]]=vx
                set s__YDVector3_y[s__YDWETimerPattern__Thread_vel[this]]=vy
                set s__YDVector3_x[s__YDWETimerPattern__Thread_dec[this]]=s__YDVector3_x[s__YDWETimerPattern__Thread_vel[this]] * interval / time
                set s__YDVector3_y[s__YDWETimerPattern__Thread_dec[this]]=s__YDVector3_y[s__YDWETimerPattern__Thread_vel[this]] * interval / time
            endif
            set s__YDVector3_x[s__YDWETimerPattern__Thread_pos[this]]=GetUnitX(object)
            set s__YDVector3_y[s__YDWETimerPattern__Thread_pos[this]]=GetUnitY(object)
            set s__YDWETimerPattern__Thread_caster[this]=source
            set s__YDWETimerPattern__Thread_obj[this]=object
            set s__YDWETimerPattern__Thread_amount[this]=damage
            set s__YDWETimerPattern__Thread_killdest[this]=killtrees
            set s__YDWETimerPattern__Thread_recyclable[this]=cycle
            set s__YDWETimerPattern__Thread_volume[this]=path
            set s__YDWETimerPattern__Thread_gsfx[this]=geff
            set s__YDWETimerPattern__Thread_wsfx[this]=weff
            set s__YDWETimerPattern__Thread_switch[this]=1
            set s__YDWETimerPattern__Thread_follow[this]=0
            set s__YDWETimerPattern__Thread_except[this]=CreateGroup()
            if s__YDWETimerPattern__Thread_t[this] == null then
                set s__YDWETimerPattern__Thread_t[this]=CreateTimer()
            endif
            call PauseTimer(s__YDWETimerPattern__Thread_t[this])
            call TimerStart(s__YDWETimerPattern__Thread_t[this], interval, true, function s__Deceleration_move)
            call StoreInteger(YDGC, ("YDWETimerPattern" ), ( I2S(YDWEH2I((object))) ), ( ( (this)))) // INLINED!!
            call StoreInteger(YDGC, ("YDWETimerPattern" ), ( I2S(YDWEH2I((s__YDWETimerPattern__Thread_t[this]))) ), ( ( (this)))) // INLINED!!
            return this
        endfunction
   
   
    // Jump Attack PUI
    function YDWETimerPatternJumpAttack takes unit u,real face,real dis,real lasttime,real timeout,real high,real damage,string part,string dsfx returns nothing
        if u == null then
            return
        endif
        call s__Parabola_create(u , u , Deg2Rad(face) , RMaxBJ(dis, 0) , RMaxBJ(lasttime, 0) , RMaxBJ(timeout, 0) , high , damage , part , dsfx)
    endfunction
      
    // Moon Priestess Arrow PUI
    function YDWETimerPatternMoonPriestessArrow takes unit u,real face,real dis,real lasttime,real timeout,integer lv,integer aid,integer uid,string order,string part,string dsfx returns nothing
        local unit sour= null
        if u == null then
            return
        endif
        set sour=(YDWEI2U(GetStoredInteger(YDGC, (I2S(YDWEH2I(u)) ), ( "MoonPriestessArrow")))) // INLINED!!
        if sour == null then
            set sour=u
        endif
        call s__Linear_create(sour , u , Deg2Rad(face) , RMaxBJ(dis, 0) , RMaxBJ(lasttime, 0) , RMaxBJ(timeout, 0) , uid , aid , IMaxBJ(lv, 1) , OrderId(order) , part , dsfx)
        call FlushStoredMission(YDGC, (I2S(YDWEH2I(u)))) // INLINED!!
        set sour=null
    endfunction
   
    // Rush Slide PUI
    function YDWETimerPatternRushSlide takes unit u,real face,real dis,real lasttime,real timeout,real damage,boolean killtrees,boolean cycle,boolean path,string part,string gsfx,string wsfx returns nothing
        if u == null then
            return
        endif
        call s__Deceleration_create(u , u , Deg2Rad(face) , RMaxBJ(dis, 0) , RMaxBJ(lasttime, 0) , RMaxBJ(timeout, 0) , damage , killtrees , cycle , path , part , gsfx , wsfx)
    endfunction
   
    function YDWETimerPattern__Init takes nothing returns nothing
        set YDWETimerPattern__area=Rect(- YDWETimerPattern__TIMER_PATTERN_RADIUS, - YDWETimerPattern__TIMER_PATTERN_RADIUS, YDWETimerPattern__TIMER_PATTERN_RADIUS, YDWETimerPattern__TIMER_PATTERN_RADIUS)
        set YDWETimerPattern__bexpr=Filter(function YDWETimerPattern__TreeFilter)
    endfunction


//library YDWETimerPattern ends
//===========================================================================
//
// |cFFFF6600姘告亽3C鏃犻檺鎶
回复

使用道具 举报

沙发
发表于 2013-4-18 10:11:07 | 只看该作者
看不懂
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|Archiver| 倚天魔兽

GMT+8, 2024-11-11 05:37 , Processed in 0.135461 second(s), 16 queries .

Powered by Discuz! X3.2

© 2001-2012 Comsenz Inc.

返回顶部