@@ -654,7 +654,6 @@ def edit_battle(battle_id):
654
654
def create_battle ():
655
655
"""
656
656
Create battle form.
657
- :return:
658
657
"""
659
658
all_players = Player .query .filter_by (clan = g .player .clan , locked = False ).order_by ('lower(name)' ).all ()
660
659
sorted_players = sorted (all_players , reverse = True , key = lambda p : p .player_role_value ())
@@ -670,6 +669,7 @@ def create_battle():
670
669
map_name = ''
671
670
province = ''
672
671
duration = 15 * 60
672
+ stronghold = False
673
673
battle_commander = None
674
674
date = datetime .datetime .now ()
675
675
battle_groups = BattleGroup .query .filter_by (clan = g .player .clan ).order_by ('date' ).all ()
@@ -702,13 +702,14 @@ def create_battle():
702
702
if g .player in players :
703
703
battle_commander = g .player .id
704
704
date = datetime .datetime .strptime (replay ['first' ]['dateTime' ], '%d.%m.%Y %H:%M:%S' )
705
+ stronghold = replays .is_stronghold (replay )
705
706
706
707
if not replay ['second' ]:
707
708
flash (u'Error: Uploaded replay file is incomplete (Battle was left before it ended). ' +
708
709
u'Can not determine all information automatically.' , 'error' )
709
- elif not replays .is_cw (replay ):
710
+ elif not replays .is_cw (replay ) and not replays . is_stronghold ( replay ) :
710
711
flash (
711
- u'Error: Uploaded replay file is probably not from a clan war '
712
+ u'Error: Uploaded replay file is probably not from a clan war or stronghold battle '
712
713
u'(Detected different clan tags in one of the team' +
713
714
u' or players from the same clan on both sides)' , 'error' )
714
715
else :
@@ -735,7 +736,7 @@ def create_battle():
735
736
battle_commander = Player .query .get (int (request .form ['battle_commander' ]))
736
737
description = request .form .get ('description' , '' )
737
738
duration = request .form .get ('duration' , 15 * 60 )
738
- battle_group = int ( request .form [ 'battle_group' ] )
739
+ battle_group = request .form . get ( 'battle_group' , - 2 )
739
740
battle_group_title = request .form .get ('battle_group_title' , '' )
740
741
battle_group_description = request .form .get ('battle_group_description' , '' )
741
742
battle_group_final = request .form .get ('battle_group_final' , '' ) == 'on'
@@ -806,6 +807,9 @@ def create_battle():
806
807
battle_commander = battle_commander , description = description ,
807
808
duration = duration )
808
809
810
+ if replays .is_stronghold (replay ):
811
+ battle .stronghold = True
812
+
809
813
if bg :
810
814
battle .battle_group_final = battle_group_final
811
815
battle .battle_group = bg
@@ -822,12 +826,13 @@ def create_battle():
822
826
else :
823
827
battle .score_own_team , battle .score_enemy_team = 0 , 0
824
828
825
-
826
829
for player_id in players :
827
830
player = Player .query .get (player_id )
828
831
if not player :
829
832
abort (404 )
830
833
ba = BattleAttendance (player , battle , reserve = False )
834
+ if battle .stronghold :
835
+ ba .resources_earned = replays .resources_earned (replay ['second' ], player .wot_id )
831
836
db_session .add (ba )
832
837
833
838
db_session .add (battle )
@@ -843,7 +848,7 @@ def create_battle():
843
848
battle_result = battle_result , date = date , battle_groups = battle_groups ,
844
849
battle_group = battle_group , battle_group_title = battle_group_title , duration = duration ,
845
850
battle_group_description = battle_group_description , battle_group_final = battle_group_final ,
846
- sorted_players = sorted_players , battle_group_id = battle_group_id )
851
+ sorted_players = sorted_players , battle_group_id = battle_group_id , stronghold = stronghold )
847
852
848
853
849
854
@app .route ('/battles/list/<clan>' )
@@ -957,7 +962,9 @@ def battles_list_json(clan):
957
962
battles = list (db_session .execute (battles .offset (offset ).limit (limit )))
958
963
959
964
def make_row (battle ):
960
- if battle .battle_group_id :
965
+ if battle .stronghold :
966
+ type = "Stronghold"
967
+ elif battle .battle_group_id :
961
968
type = '<a href="' + url_for ('battle_group_details' , group_id = battle .battle_group_id ) + '">'
962
969
if battle .battle_group_final :
963
970
type += 'Final'
@@ -1441,12 +1448,14 @@ def payout_battles(clan):
1441
1448
gold = int (request .form ['gold' ])
1442
1449
victories_only = request .form .get ('victories_only' , False )
1443
1450
recruit_factor = request .form ['recruit_factor' ]
1451
+ points_per_resource = float (request .form ['points_per_resource' ])
1444
1452
else :
1445
1453
from_date = request .args .get ('fromDate' )
1446
1454
to_date = request .args .get ('toDate' )
1447
1455
gold = int (request .args .get ('gold' ))
1448
1456
victories_only = request .args .get ('victories_only' , False ) == 'on'
1449
1457
recruit_factor = float (request .args .get ('recruit_factor' ))
1458
+ points_per_resource = float (request .args .get ('points_per_resource' ))
1450
1459
1451
1460
from_date = datetime .datetime .strptime (from_date , '%d.%m.%Y' )
1452
1461
to_date = datetime .datetime .strptime (to_date , '%d.%m.%Y' ) + datetime .timedelta (days = 1 )
@@ -1467,6 +1476,8 @@ def payout_battles(clan):
1467
1476
player_victories = defaultdict (int )
1468
1477
player_defeats = defaultdict (int )
1469
1478
player_draws = defaultdict (int )
1479
+ player_resources = defaultdict (int )
1480
+
1470
1481
for battle in battles :
1471
1482
if battle .battle_group and not battle .battle_group_final :
1472
1483
continue # only finals count
@@ -1478,6 +1489,11 @@ def payout_battles(clan):
1478
1489
battle_players = battle .get_players ()
1479
1490
battle_reserves = battle .get_reserve_players ()
1480
1491
1492
+ if battle .stronghold :
1493
+ for ba in battle .attendances :
1494
+ player_resources [ba .player ] += ba .resources_earned
1495
+ continue
1496
+
1481
1497
battle_commander = battle .battle_commander
1482
1498
if not battle_commander .locked :
1483
1499
player_fced [battle_commander ] += 1
@@ -1506,13 +1522,14 @@ def payout_battles(clan):
1506
1522
1507
1523
players = set ()
1508
1524
for p in clan_members :
1509
- if player_played [p ] or player_reserve [p ] or player_fced [p ]:
1525
+ if player_played [p ] or player_reserve [p ] or player_fced [p ] or player_resources [ p ] :
1510
1526
players .add (p )
1511
1527
1512
1528
player_points = dict ()
1513
1529
for p in players :
1514
1530
player_points [p ] = player_fced_win [p ] * 6 + player_fced_defeat [p ] * 4 + player_fced_draws [p ] * 2 + \
1515
- player_victories [p ] * 3 + player_defeats [p ] * 2 + player_draws [p ] * 2 + player_reserve [p ]
1531
+ player_victories [p ] * 3 + player_defeats [p ] * 2 + player_draws [p ] * 2 + player_reserve [p ] + \
1532
+ player_resources [p ] * points_per_resource
1516
1533
1517
1534
total_points = sum (player_points [p ] for p in players )
1518
1535
recruit_points = sum (player_points [p ] for p in players if p .is_recruit ())
@@ -1531,7 +1548,8 @@ def payout_battles(clan):
1531
1548
player_gold = player_gold , gold = gold , player_defeats = player_defeats ,
1532
1549
player_fced_win = player_fced_win , victories_only = victories_only , recruit_factor = recruit_factor ,
1533
1550
player_fced_defeat = player_fced_defeat , player_victories = player_victories ,
1534
- player_fced_draws = player_fced_draws , player_draws = player_draws , player_points = player_points )
1551
+ player_fced_draws = player_fced_draws , player_draws = player_draws , player_points = player_points ,
1552
+ player_resources = player_resources , points_per_resource = points_per_resource )
1535
1553
1536
1554
1537
1555
@app .route ('/players/json' )
0 commit comments