-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathPlayer_Ability_setting.py
executable file
·77 lines (66 loc) · 2.95 KB
/
Player_Ability_setting.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import random
import card_setting
from my_moduler import get_module_logger
from util_ability import *
mylogger = get_module_logger(__name__)
from my_enum import *
PRIORITY_MAX_LIMIT = 10
class reduce_damage_to_zero():
def __init__(self):
self.priority = PRIORITY_MAX_LIMIT
self.ability_id = 1
def __call__(argument=None, state_code=None):
if state_code[0] == State_Code.GET_DAMAGE.value and type(argument) == int:
return 0
else:
return argument
class can_not_take_more_than_x_damage():
def __init__(self, num=0):
self.priority = PRIORITY_MAX_LIMIT - 1
self.damage_upper_bound = num
def __call__(self, argument=None, state_code=None):
if state_code[0] == State_Code.GET_DAMAGE.value and type(argument) == int:
return (argument, self.damage_upper_bound)[argument > self.damage_upper_bound]
else:
return argument
class restore_1_defense_to_all_allies():
def __init__(self):
self.name = "restore_1_defense_to_all_allies"
self.ability_id = 2
def __call__(self,field, player, virtual, state_log=None):
if state_log[0] != State_Code.END_OF_TURN.value:
return
if state_log[1] != player.player_num:
return
if not virtual:
mylogger.info("De La Fille, Gem Princess's leader effect is actived")
field.restore_player_life(player=player, num=1, virtual=virtual)
for follower in field.card_location[player.player_num]:
if follower.card_category == "Creature":
field.restore_follower_toughness(follower=follower, num=1, virtual=virtual, at_once=True)
class search_three_followers():
def __init__(self):
self.name = "search_three_followers"
self.ability_id = 3
def __call__(self,field, player, virtual, state_log=None):
if state_log is None: return
if state_log[0] != State_Code.START_OF_TURN.value:
return
if state_log[1] != player.player_num:
return
if not virtual:
mylogger.info("Staircase to Paradise's ability is actived")
mylogger.info("Search three followers from deck")
condition = lambda card: card.card_category == "Creature"
search_cards(player, condition, virtual, num=3)
while True:
#if search_three_followers in field.player_ability[player.player_num]:
# field.player_ability[player.player_num].remove(search_three_followers)
if self.ability_id in field.player_ability[player.player_num]:
field.player_ability[player.player_num].remove(self.ability_id)
else:
break
player_ability_name_dict = {id(restore_1_defense_to_all_allies):"restore_1_defense_to_all_allies"}
player_ability_id_2_func = {
2:restore_1_defense_to_all_allies(),
3:search_three_followers()}