diff --git a/assets/spells/hunter/general/ArcaneShot.jpg b/assets/spells/hunter/general/ArcaneShot.jpg index 9302b52..42db127 100644 Binary files a/assets/spells/hunter/general/ArcaneShot.jpg and b/assets/spells/hunter/general/ArcaneShot.jpg differ diff --git a/assets/spells/hunter/general/HuntersMark.jpg b/assets/spells/hunter/general/HuntersMark.jpg index 1a2e444..a880067 100644 Binary files a/assets/spells/hunter/general/HuntersMark.jpg and b/assets/spells/hunter/general/HuntersMark.jpg differ diff --git a/assets/spells/hunter/marksmanship/BlackArrow.jpg b/assets/spells/hunter/marksmanship/BlackArrow.jpg index 59d4245..6d0ee60 100644 Binary files a/assets/spells/hunter/marksmanship/BlackArrow.jpg and b/assets/spells/hunter/marksmanship/BlackArrow.jpg differ diff --git a/bots/components/spell.py b/bots/components/spell.py index 3d8dce7..9e077f6 100644 --- a/bots/components/spell.py +++ b/bots/components/spell.py @@ -1,9 +1,27 @@ +import time import cv2 as cv - +import pyautogui +from core.Logger import Logger class Spell: - def __init__(self, monitor, path, cooldown) -> None: + def __init__(self, monitor, path, name, castTime = 0, cooldown = 2) -> None: + self.spellName = name + self.castTime = castTime + self.logger = Logger("Spell") + self.cooldown = cooldown self.monitor = monitor self.spellIcon = cv.imread("assets/spells/" + path, cv.IMREAD_GRAYSCALE) + self.lastUsed = None - def click(): - self.monitor.findMatchAndClickIfAvailable(self.spellIcon) \ No newline at end of file + def isOnCooldown(self): + if self.lastUsed is None: + return False + return time.time() - self.lastUsed <= self.cooldown + + def cast(self): + if self.isOnCooldown() is False: + self.logger.log("Casting " + self.spellName) + lastCursorPosition = pyautogui.position() + self.monitor.findMatchAndClickIfAvailable(self.spellIcon) + time.sleep(self.castTime) + pyautogui.moveTo(lastCursorPosition) + self.lastUsed = time.time() \ No newline at end of file diff --git a/bots/fighting/FightingAgent.py b/bots/fighting/FightingAgent.py index deffcd1..9d65b2c 100644 --- a/bots/fighting/FightingAgent.py +++ b/bots/fighting/FightingAgent.py @@ -12,24 +12,25 @@ class FightingAgent: self.logger = Logger("Combat Agent", player.debug) self.hasTarget = False self.combatClass = self.loadCombatClass() - self.getRoutine() def loadCombatClass(self): return 42 def getRoutine(self): - if (self.player.playerClass == CLASSES.HUNTER and self.player.player.playerSpe == SPE.MARKSMANSHIP): + if (self.player.playerClass == CLASSES.HUNTER.name and self.player.playerSpe == SPE.MARKSMANSHIP.name): from bots.fighting.hunter.marksmanship.Routine import Routine + self.classRoutine = Routine(self.monitor, self.player) else: self.logger.log("Cannot find a Routine for your class and spe") - self.classRoutine = Routine(self.monitor, self.player) def startFighting(self): + self.getRoutine() self.player.checkConnection() - self.classRoutine.start() - self.isCombatModeEnabled = True - while self.isCombatModeEnabled is True: - time.sleep(0.1) + if self.classRoutine is not None: + self.isCombatModeEnabled = True + while self.isCombatModeEnabled is True : + self.classRoutine.start() + time.sleep(0.1) self.logger.log("Combat mode is now disabled...") def stopFighting(self): diff --git a/bots/fighting/hunter/marksmanship/Routine.py b/bots/fighting/hunter/marksmanship/Routine.py index f51dec7..801cff2 100644 --- a/bots/fighting/hunter/marksmanship/Routine.py +++ b/bots/fighting/hunter/marksmanship/Routine.py @@ -4,10 +4,14 @@ class Routine: def __init__(self, monitor, player) -> None: self.player = player self.monitor = monitor - self.arcaneShotSpell = Spell(monitor, "hunter/general/ArcaneShot.jpg") + self.arcaneShotSpell = Spell(monitor, "hunter/general/ArcaneShot.jpg", "Arcane shot") + self.hunterMarkSpell = Spell(monitor, "hunter/general/HuntersMark.jpg", "Hunter's Mark", 0, 20) + self.blackArrowSpell = Spell(monitor, "hunter/marksmanship/BlackArrow.jpg", "Black Arrow", 0, 30) def hasTarget(self): pass def start(self): - print("Starting fight routine") \ No newline at end of file + self.hunterMarkSpell.cast() + self.blackArrowSpell.cast() + self.arcaneShotSpell.cast() \ No newline at end of file diff --git a/core/Player.py b/core/Player.py index c5016ba..c2d96ea 100644 --- a/core/Player.py +++ b/core/Player.py @@ -24,7 +24,7 @@ class Player: self.playerName = self.config.file["name"] self.enterWorldButton = cv.imread("assets/" + self.lang + "/menus/EnterWorldButton.jpg", cv.IMREAD_GRAYSCALE) self.reconnectButton = cv.imread("assets/" + self.lang + "/menus/Reconnect.jpg", cv.IMREAD_GRAYSCALE) - self.logger.log("Connected with " + self.playerName + " (" + self.playerClass + ")") + self.logger.log("Connected with " + self.playerName + " (" + self.playerClass + " - " + self.playerSpe + ")") def connectButtonFound(self): self.isConnected = CONNECT_STATUS.DISCONNECTED