Может чем-то и поможет
Код:
Sub Defend
set %Start_Defend_Position_X #CHARPOSX
set %Start_Defend_Position_Y #CHARPOSY
set %Archer_Defend #false
set %Monster_Type_Attack %Monster_Type
set %Monster_Type_Attack %Monster_Type_Attack , %Monster_Type_Archer
moveandattack:
finditem %Monster_Type_Attack G_15
If #FindKind = -1
{
finditem %Monster_Type_Lesser G_4
if #FINDKIND = -1
return
}
if #FINDTYPE in IS_HS
{
if ( #FINDREP = 1 || #FINDREP = 2 || #FINDREP = 3 || #FINDREP = 7 )
{
ignoreitem #FINDID
goto moveandattack
}
}
set %EnemyID #FINDID
set %EnemyDist #FINDDIST
set %EnemyType #FINDTYPE
set %EnemyX #FINDX
set %EnemyY #FINDY
if %Archer_Mode = #true
{
if ( %EnemyType in %Monster_Type_Archer && %EnemyDist > 1 )
{
set %Archer_Defend #true
}
}
set %Victim %EnemyID
if ( %Archer_Defend <> #true && %EnemyDist > 1 )
{
gosub movingr %EnemyX %EnemyY 1
}
defendarcherwear:
gosub CheckGhost
if ( %Archer_Defend = #true && %EnemyDist > 1 )
{
gosub Check_Archer_Equip
if %check_result <> 1
{
msg $,disarm$
wait 20
}
gosub Equip_Archer
gosub Check_Archer_Equip
if %check_result <> 1
goto defendarcherwear
}
if ( %EnemyDist = 1 && %Archer_Defend = #true )
{
set %Archer_Defend #false
finditem %Archer_Weapon_Type C_ , #CHARID
if #FINDKIND <> -1
{
finditem %Archer_Melee_Type C_ , %Backpack_ID
if #FINDKIND <> -1
{
set %Temp #FINDTYPE
finditem %Archer_Shield_Type C_ , %Backpack_ID
if #FINDKIND <> -1
{
msg $,disarm$
wait 12
msg $,equipt Rhand %Temp $
set %Temp #FINDTYPE
wait 12
msg $,equipt Lhand %Temp $
}
}
}
}
attackvictim:
set #LTARGETID %victim
set #ENEMYID %victim
event macro 27
set #scnt 7
victimnotdead:
finditem %victim
if #FINDKIND = 1
{
set %EnemyID #FINDID
set %EnemyDist #FINDDIST
set %EnemyType #FINDTYPE
set %EnemyX #FINDX
set %EnemyY #FINDY
gosub CheckDefendDistance %Defend_Distance %Start_Defend_Position_X %Start_Defend_Position_Y
if %check_dist_defend_result = 0
return
if ( #FINDDIST > 1 && %Archer_Defend <> #true )
goto moveandattack
for %s 1 3
{
scanjournal %s
if @K1C in #journal
goto combatended
if _@K1K_745AL in #journal
goto combatended
}
if %Archer_Defend <> #true
gosub UseBandages
else
{
gosub UseBandagesArcher
if %HidingDefHeal = #true
goto attackvictim
}
goto victimnotdead
}
combatended:
if %Archer_Defend = #true
{
gosub Check_Archer_Equip
if %check_result = 1
{
msg $,disarm$
wait 10
}
gosub Equip_Warrior
gosub Check_Warrior_Equip
if %check_result <> 1
goto combatended
gosub MovingR %EnemyX %EnemyY 1
}
gosub LootEnemies
Return