Legacy fight support until 2021-02-08 00:00:00
This commit is contained in:
parent
69b2073b74
commit
ce9034ad24
@ -9,7 +9,7 @@ from threading import Event
|
|||||||
from time import sleep
|
from time import sleep
|
||||||
from typing import Any, Dict, List, NoReturn, Optional, Set, Tuple, Union
|
from typing import Any, Dict, List, NoReturn, Optional, Set, Tuple, Union
|
||||||
|
|
||||||
from requests import RequestException, Response
|
from requests import RequestException, Response, HTTPError
|
||||||
|
|
||||||
from . import access_points, classes, constants, _types as types, utils
|
from . import access_points, classes, constants, _types as types, utils
|
||||||
from .classes import OfferItem
|
from .classes import OfferItem
|
||||||
@ -270,7 +270,9 @@ class BaseCitizen(access_points.CitizenAPI):
|
|||||||
self.report_error('Captcha failed!')
|
self.report_error('Captcha failed!')
|
||||||
captcha_data = self._post_main_session_get_challenge(captcha_id, captcha_data['imageId']).json()
|
captcha_data = self._post_main_session_get_challenge(captcha_id, captcha_data['imageId']).json()
|
||||||
coordinates = self.solve_captcha(captcha_data['src'])
|
coordinates = self.solve_captcha(captcha_data['src'])
|
||||||
|
if retry < 1:
|
||||||
|
return False
|
||||||
|
retry -= 1
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def refresh_captcha_image(self, captcha_id: int, image_id: str):
|
def refresh_captcha_image(self, captcha_id: int, image_id: str):
|
||||||
@ -1918,7 +1920,27 @@ class CitizenMilitary(CitizenTravel):
|
|||||||
|
|
||||||
self.write_log(f"Fighting in battle for {battle.region_name} on {side} side in d{division.div}")
|
self.write_log(f"Fighting in battle for {battle.region_name} on {side} side in d{division.div}")
|
||||||
|
|
||||||
total_damage = 0
|
if self.now < utils.localize_dt(datetime(2021, 2, 8)):
|
||||||
|
error_count = total_damage = total_hits = 0
|
||||||
|
ok_to_fight = True
|
||||||
|
while ok_to_fight and error_count < 10 and count > 0:
|
||||||
|
while all((count > 0, error_count < 10, self.energy.recovered >= 50)):
|
||||||
|
hits, error, damage = self._shoot(battle, division, side)
|
||||||
|
count -= hits
|
||||||
|
total_hits += hits
|
||||||
|
total_damage += damage
|
||||||
|
error_count += error
|
||||||
|
else:
|
||||||
|
self._eat('blue')
|
||||||
|
if count > 0 and self.energy.recovered < 50 and use_ebs:
|
||||||
|
self._eat('orange')
|
||||||
|
if self.energy.recovered < 50 or error_count >= 10 or count <= 0:
|
||||||
|
self.write_log(f"Hits: {total_hits:>4} | Damage: {total_damage}")
|
||||||
|
ok_to_fight = False
|
||||||
|
if total_damage:
|
||||||
|
self.report_fighting(battle, not side.is_defender, division, total_damage, total_hits)
|
||||||
|
return error_count
|
||||||
|
else:
|
||||||
deployment_id = self.deploy(division, side, count * 10)
|
deployment_id = self.deploy(division, side, count * 10)
|
||||||
self.sleep(count // 3) # TODO: connect to eRepublik's WS and get from there when deploy ends
|
self.sleep(count // 3) # TODO: connect to eRepublik's WS and get from there when deploy ends
|
||||||
energy_used = 0
|
energy_used = 0
|
||||||
@ -1933,67 +1955,67 @@ class CitizenMilitary(CitizenTravel):
|
|||||||
self.report_fighting(battle, not side.is_defender, division, total_damage, energy_used // 10)
|
self.report_fighting(battle, not side.is_defender, division, total_damage, energy_used // 10)
|
||||||
return energy_used
|
return energy_used
|
||||||
|
|
||||||
# def _shoot(self, battle: classes.Battle, division: classes.BattleDivision, side: classes.BattleSide):
|
def _shoot(self, battle: classes.Battle, division: classes.BattleDivision, side: classes.BattleSide):
|
||||||
# if division.is_air:
|
if division.is_air:
|
||||||
# response = self._post_military_fight_air(battle.id, side.id, division.id)
|
response = self._post_military_fight_air(battle.id, side.id, division.id)
|
||||||
# else:
|
else:
|
||||||
# response = self._post_military_fight_ground(battle.id, side.id, division.id)
|
response = self._post_military_fight_ground(battle.id, side.id, division.id)
|
||||||
#
|
|
||||||
# if 'Zone is not meant for ' in response.text:
|
if 'Zone is not meant for ' in response.text:
|
||||||
# self.sleep(5)
|
self.sleep(5)
|
||||||
# return 0, 1, 0
|
return 0, 1, 0
|
||||||
# try:
|
try:
|
||||||
# r_json = response.json()
|
r_json = response.json()
|
||||||
# except (ValueError, HTTPError, RequestException):
|
except (ValueError, HTTPError, RequestException):
|
||||||
# return 0, 10, 0
|
return 0, 10, 0
|
||||||
# hits = 0
|
hits = 0
|
||||||
# damage = 0
|
damage = 0
|
||||||
# err = False
|
err = False
|
||||||
# if r_json.get('error'):
|
if r_json.get('error'):
|
||||||
# if r_json.get('message') == 'SHOOT_LOCKOUT':
|
if r_json.get('message') == 'SHOOT_LOCKOUT':
|
||||||
# pass
|
pass
|
||||||
# elif r_json.get('message') == 'NOT_ENOUGH_WEAPONS':
|
elif r_json.get('message') == 'NOT_ENOUGH_WEAPONS':
|
||||||
# self.set_default_weapon(battle, division)
|
self.set_default_weapon(battle, division)
|
||||||
# elif r_json.get('message') == "Cannot activate a zone with a non-native division":
|
elif r_json.get('message') == "Cannot activate a zone with a non-native division":
|
||||||
# self.report_warning('Wrong division!!')
|
self.write_warning('Wrong division!!')
|
||||||
# return 0, 10, 0
|
return 0, 10, 0
|
||||||
# elif r_json.get('message') == 'ZONE_INACTIVE':
|
elif r_json.get('message') == 'ZONE_INACTIVE':
|
||||||
# self.report_warning('Wrong division!!')
|
self.write_warning('Wrong division!!')
|
||||||
# return 0, 10, 0
|
return 0, 10, 0
|
||||||
# elif r_json.get('message') == 'NON_BELLIGERENT':
|
elif r_json.get('message') == 'NON_BELLIGERENT':
|
||||||
# self.report_warning("Dictatorship/Liberation wars are not supported!")
|
self.write_warning("Dictatorship/Liberation wars are not supported!")
|
||||||
# return 0, 10, 0
|
return 0, 10, 0
|
||||||
# elif r_json.get('message') in ['FIGHT_DISABLED', 'DEPLOYMENT_MODE']:
|
elif r_json.get('message') in ['FIGHT_DISABLED', 'DEPLOYMENT_MODE']:
|
||||||
# self._post_main_profile_update('options',
|
self._post_main_profile_update('options',
|
||||||
# params='{"optionName":"enable_web_deploy","optionValue":"off"}')
|
params='{"optionName":"enable_web_deploy","optionValue":"off"}')
|
||||||
# self.set_default_weapon(battle, division)
|
self.set_default_weapon(battle, division)
|
||||||
# else:
|
else:
|
||||||
# if r_json.get('message') == 'UNKNOWN_SIDE':
|
if r_json.get('message') == 'UNKNOWN_SIDE':
|
||||||
# self._rw_choose_side(battle, side)
|
self._rw_choose_side(battle, side)
|
||||||
# elif r_json.get('message') == 'CHANGE_LOCATION':
|
elif r_json.get('message') == 'CHANGE_LOCATION':
|
||||||
# countries = [side.country] + side.deployed
|
countries = [side.country] + side.deployed
|
||||||
# self.travel_to_battle(battle, countries)
|
self.travel_to_battle(battle, countries)
|
||||||
# err = True
|
err = True
|
||||||
# elif r_json.get('message') == 'ENEMY_KILLED':
|
elif r_json.get('message') == 'ENEMY_KILLED':
|
||||||
# # Non-InfantryKit players
|
# Non-InfantryKit players
|
||||||
# if r_json['user']['earnedXp']:
|
if r_json['user']['earnedXp']:
|
||||||
# hits = r_json['user']['earnedXp']
|
hits = r_json['user']['earnedXp']
|
||||||
# # InfantryKit player
|
# InfantryKit player
|
||||||
# # The almost always safe way (breaks on levelup hit)
|
# The almost always safe way (breaks on levelup hit)
|
||||||
# elif self.energy.recovered >= r_json['details']['wellness']: # Haven't reached levelup
|
elif self.energy.recovered >= r_json['details']['wellness']: # Haven't reached levelup
|
||||||
# hits = (self.energy.recovered - r_json['details']['wellness']) // 10
|
hits = (self.energy.recovered - r_json['details']['wellness']) // 10
|
||||||
# else:
|
else:
|
||||||
# hits = r_json['hits']
|
hits = r_json['hits']
|
||||||
# if r_json['user']['epicBattle']:
|
if r_json['user']['epicBattle']:
|
||||||
# hits /= 1 + r_json['user']['epicBattle']
|
hits /= 1 + r_json['user']['epicBattle']
|
||||||
#
|
|
||||||
# self.energy.recovered = r_json['details']['wellness']
|
self.energy.recovered = r_json['details']['wellness']
|
||||||
# self.details.xp = int(r_json['details']['points'])
|
self.details.xp = int(r_json['details']['points'])
|
||||||
# damage = r_json['user']['givenDamage'] * (1.1 if r_json['oldEnemy']['isNatural'] else 1)
|
damage = r_json['user']['givenDamage'] * (1.1 if r_json['oldEnemy']['isNatural'] else 1)
|
||||||
# else:
|
else:
|
||||||
# err = True
|
err = True
|
||||||
#
|
|
||||||
# return hits, err, damage
|
return hits, err, damage
|
||||||
|
|
||||||
def deploy_bomb(self, battle: classes.Battle, division: classes.BattleDivision, bomb_id: int, inv_side: bool,
|
def deploy_bomb(self, battle: classes.Battle, division: classes.BattleDivision, bomb_id: int, inv_side: bool,
|
||||||
count: int = 1) -> Optional[int]:
|
count: int = 1) -> Optional[int]:
|
||||||
@ -2308,8 +2330,7 @@ class CitizenMilitary(CitizenTravel):
|
|||||||
# self.buy_food()
|
# self.buy_food()
|
||||||
# return self.get_deploy_inventory(division, side)
|
# return self.get_deploy_inventory(division, side)
|
||||||
if ret.get('captcha'):
|
if ret.get('captcha'):
|
||||||
while not self.do_captcha_challenge():
|
self.do_captcha_challenge()
|
||||||
self.sleep(5)
|
|
||||||
if ret.get('error'):
|
if ret.get('error'):
|
||||||
if ret.get('message') == 'Deployment disabled.':
|
if ret.get('message') == 'Deployment disabled.':
|
||||||
self._post_main_profile_update('options', params='{"optionName":"enable_web_deploy","optionValue":"on"}')
|
self._post_main_profile_update('options', params='{"optionName":"enable_web_deploy","optionValue":"on"}')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user