172 lines
5.7 KiB
C#
172 lines
5.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace app
|
|
{
|
|
public class Battle
|
|
{
|
|
Form1 Form1_0;
|
|
|
|
public int AreaX = 0;
|
|
public int AreaY = 0;
|
|
public bool ClearingArea = false;
|
|
public List<long> IgnoredMobsPointer = new List<long>();
|
|
public int ClearingSize = 0;
|
|
public long LastMobAttackedPointer = 0;
|
|
public long LastMobAttackedHP = 0;
|
|
public int AttackNotRegisteredCount = 0;
|
|
public int MoveTryCount = 0;
|
|
|
|
public int MaxAttackTry = 10; //edit this after knowing we used attack correctly
|
|
public int MaxMoveTry = 5;
|
|
|
|
public void SetForm1(Form1 form1_1)
|
|
{
|
|
Form1_0 = form1_1;
|
|
}
|
|
|
|
public void ClearAreaOfMobs(int ThisX, int ThisY, int ClearSize)
|
|
{
|
|
AreaX = ThisX;
|
|
AreaY = ThisY;
|
|
IgnoredMobsPointer = new List<long>();
|
|
ClearingSize = ClearSize;
|
|
AttackNotRegisteredCount = 0;
|
|
MoveTryCount = 0;
|
|
ClearingArea = true;
|
|
}
|
|
|
|
public void RunBattleScript()
|
|
{
|
|
if (Form1_0.MobsStruc_0.GetMobs("", "", true, ClearingSize, IgnoredMobsPointer))
|
|
{
|
|
if (MoveTryCount > 0)
|
|
{
|
|
MoveAway();
|
|
}
|
|
if (Form1_0.Mover_0.MoveToLocation(Form1_0.MobsStruc_0.xPosFinal - 2, Form1_0.MobsStruc_0.yPosFinal - 2))
|
|
{
|
|
SetSkills();
|
|
}
|
|
Form1_0.MobsStruc_0.GetLastMobs();
|
|
CastSkills();
|
|
AttackTryCheck();
|
|
}
|
|
else
|
|
{
|
|
Form1_0.Mover_0.MoveToLocation(AreaX, AreaY);
|
|
ClearingArea = false;
|
|
}
|
|
}
|
|
|
|
public void DoBattleScript(int MaxDistance)
|
|
{
|
|
if (Form1_0.MobsStruc_0.GetMobs("", "", true, MaxDistance, new List<long>()))
|
|
{
|
|
if (MoveTryCount > 0)
|
|
{
|
|
MoveAway();
|
|
}
|
|
if (Form1_0.Mover_0.MoveToLocation(Form1_0.MobsStruc_0.xPosFinal - 2, Form1_0.MobsStruc_0.yPosFinal - 2))
|
|
{
|
|
SetSkills();
|
|
}
|
|
Form1_0.MobsStruc_0.GetLastMobs();
|
|
CastSkills();
|
|
AttackTryCheck();
|
|
}
|
|
}
|
|
|
|
public void RunBattleScriptOnThisMob(string MobType, string MobName)
|
|
{
|
|
if (Form1_0.MobsStruc_0.GetMobs(MobType, MobName, false, 99, new List<long>()))
|
|
{
|
|
if (MoveTryCount > 0)
|
|
{
|
|
MoveAway();
|
|
}
|
|
if (Form1_0.Mover_0.MoveToLocation(Form1_0.MobsStruc_0.xPosFinal - 2, Form1_0.MobsStruc_0.yPosFinal - 2))
|
|
{
|
|
SetSkills();
|
|
}
|
|
Form1_0.MobsStruc_0.GetLastMobs();
|
|
CastSkills();
|
|
AttackTryCheck();
|
|
}
|
|
}
|
|
|
|
public void MoveAway()
|
|
{
|
|
int MoveDistance = 7;
|
|
if (MoveTryCount == 1)
|
|
{
|
|
Form1_0.Mover_0.MoveToLocation(Form1_0.PlayerScan_0.xPosFinal, Form1_0.PlayerScan_0.yPosFinal + MoveDistance);
|
|
}
|
|
if (MoveTryCount == 2)
|
|
{
|
|
Form1_0.Mover_0.MoveToLocation(Form1_0.PlayerScan_0.xPosFinal - MoveDistance, Form1_0.PlayerScan_0.yPosFinal + MoveDistance);
|
|
}
|
|
if (MoveTryCount == 3)
|
|
{
|
|
Form1_0.Mover_0.MoveToLocation(Form1_0.PlayerScan_0.xPosFinal + MoveDistance, Form1_0.PlayerScan_0.yPosFinal - MoveDistance);
|
|
}
|
|
if (MoveTryCount == 4)
|
|
{
|
|
Form1_0.Mover_0.MoveToLocation(Form1_0.PlayerScan_0.xPosFinal - MoveDistance, Form1_0.PlayerScan_0.yPosFinal - MoveDistance);
|
|
}
|
|
}
|
|
|
|
public void AttackTryCheck()
|
|
{
|
|
long AttackedThisPointer = Form1_0.MobsStruc_0.MobsPointerLocation;
|
|
|
|
if (AttackedThisPointer == LastMobAttackedPointer)
|
|
{
|
|
if (Form1_0.MobsStruc_0.MobsHP == LastMobAttackedHP)
|
|
{
|
|
AttackNotRegisteredCount++;
|
|
|
|
if (AttackNotRegisteredCount >= MaxAttackTry)
|
|
{
|
|
MoveTryCount++;
|
|
|
|
if (MoveTryCount >= MaxMoveTry)
|
|
{
|
|
IgnoredMobsPointer.Add(Form1_0.MobsStruc_0.MobsPointerLocation);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
AttackNotRegisteredCount = 0;
|
|
MoveTryCount = 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
AttackNotRegisteredCount = 0;
|
|
MoveTryCount = 0;
|
|
}
|
|
|
|
LastMobAttackedPointer = Form1_0.MobsStruc_0.MobsPointerLocation;
|
|
LastMobAttackedHP = Form1_0.MobsStruc_0.MobsHP;
|
|
}
|
|
|
|
public void SetSkills()
|
|
{
|
|
Form1_0.KeyMouse_0.PressKey(CharConfig.KeySkillAttack);
|
|
Form1_0.KeyMouse_0.PressKey(CharConfig.KeySkillAura);
|
|
}
|
|
|
|
public void CastSkills()
|
|
{
|
|
Dictionary<string, int> itemScreenPos = Form1_0.GameStruc_0.World2Screen(Form1_0.PlayerScan_0.xPosFinal, Form1_0.PlayerScan_0.yPosFinal, Form1_0.MobsStruc_0.xPosFinal, Form1_0.MobsStruc_0.yPosFinal);
|
|
Form1_0.KeyMouse_0.MouseClicc(itemScreenPos["x"], itemScreenPos["y"]);
|
|
}
|
|
}
|
|
}
|