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鏃犻檺鎶 |