Archived
Fixes #4; add draw_and_discard_multiple to make Rampage work
This commit is contained in:
@@ -207,7 +207,7 @@
|
|||||||
"amount": 6
|
"amount": 6
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"effect": "draw_and_discard",
|
"effect": "draw_and_discard_multiple",
|
||||||
"amount": 2
|
"amount": 2
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -109,6 +109,7 @@ card_effect_all_behaviours = {
|
|||||||
CardEffects.SACRIFICE: effect_sacrifice,
|
CardEffects.SACRIFICE: effect_sacrifice,
|
||||||
CardEffects.DRAW: effect_draw,
|
CardEffects.DRAW: effect_draw,
|
||||||
CardEffects.DRAW_AND_DISCARD: effect_draw_and_discard,
|
CardEffects.DRAW_AND_DISCARD: effect_draw_and_discard,
|
||||||
|
CardEffects.DRAW_AND_DISCARD_MULTIPLE: effect_draw_and_discard,
|
||||||
CardEffects.DISCARD: effect_discard,
|
CardEffects.DISCARD: effect_discard,
|
||||||
CardEffects.RESTACK_DISCARDED_CHAMPION: effect_restack_discarded_champion,
|
CardEffects.RESTACK_DISCARDED_CHAMPION: effect_restack_discarded_champion,
|
||||||
CardEffects.RESTACK_DISCARDED_CARD: effect_restack_discarded,
|
CardEffects.RESTACK_DISCARDED_CARD: effect_restack_discarded,
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ class CardEffects(str, Enum):
|
|||||||
SACRIFICE = "sacrifice"
|
SACRIFICE = "sacrifice"
|
||||||
DRAW = "draw"
|
DRAW = "draw"
|
||||||
DRAW_AND_DISCARD = "draw_and_discard"
|
DRAW_AND_DISCARD = "draw_and_discard"
|
||||||
|
DRAW_AND_DISCARD_MULTIPLE = "draw_and_discard_multiple"
|
||||||
DISCARD = "discard"
|
DISCARD = "discard"
|
||||||
RESTACK_DISCARDED_CHAMPION = "restack_discarded_champion"
|
RESTACK_DISCARDED_CHAMPION = "restack_discarded_champion"
|
||||||
RESTACK_DISCARDED_CARD = "restack_discarded_card"
|
RESTACK_DISCARDED_CARD = "restack_discarded_card"
|
||||||
|
|||||||
+2
-2
@@ -282,9 +282,9 @@ class Player(Serializable):
|
|||||||
if p is None:
|
if p is None:
|
||||||
print("player not found")
|
print("player not found")
|
||||||
return False
|
return False
|
||||||
if p.turn.discard_markers >= len(p.hand):
|
if p.turn.fuck_u_markers >= len(p.hand):
|
||||||
print("player has already too many discard markers!")
|
print("player has already too many discard markers!")
|
||||||
return False
|
return False
|
||||||
p.turn.discard_markers += 1
|
p.turn.fuck_u_markers += 1
|
||||||
await self.game.notify_controller("update", p.turn.serialize())
|
await self.game.notify_controller("update", p.turn.serialize())
|
||||||
return True
|
return True
|
||||||
|
|||||||
+30
-9
@@ -29,6 +29,7 @@ class Turn(Serializable):
|
|||||||
effects_availables: List[Effect]
|
effects_availables: List[Effect]
|
||||||
champions_health: Dict[str, int]
|
champions_health: Dict[str, int]
|
||||||
discard_markers: int
|
discard_markers: int
|
||||||
|
fuck_u_markers: int
|
||||||
damage_reserve: int
|
damage_reserve: int
|
||||||
gold_reserve: int
|
gold_reserve: int
|
||||||
|
|
||||||
@@ -41,17 +42,22 @@ class Turn(Serializable):
|
|||||||
self.effects_availables: List[Effect] = []
|
self.effects_availables: List[Effect] = []
|
||||||
self.cards_locked: List[Card] = []
|
self.cards_locked: List[Card] = []
|
||||||
self.discard_markers = 0
|
self.discard_markers = 0
|
||||||
|
self.fuck_u_markers = 0
|
||||||
|
|
||||||
async def end_turn(self) -> None:
|
async def end_turn(self) -> None:
|
||||||
"""Resets card champion health and card effects"""
|
"""Resets card champion health and card effects"""
|
||||||
if len(self.player.hand) > 0:
|
if len(self.player.hand) > 0:
|
||||||
return print("You must play all your cards before ending a turn!")
|
return print("You must play all your cards before ending a turn!")
|
||||||
|
if self.fuck_u_markers > 0:
|
||||||
|
return print("You cannot end your turn with fuck_u markers")
|
||||||
|
if self.discard_markers > 0:
|
||||||
|
return print("You cannot end your turn with discard markers")
|
||||||
self.damage_reserve = 0
|
self.damage_reserve = 0
|
||||||
self.gold_reserve = 0
|
self.gold_reserve = 0
|
||||||
self.effects_availables = []
|
self.effects_availables = []
|
||||||
self.cards_locked = []
|
self.cards_locked = []
|
||||||
self.discard_markers = 0
|
self.discard_markers = 0
|
||||||
|
self.fuck_u_markers = 0
|
||||||
for p in self.player.game.players:
|
for p in self.player.game.players:
|
||||||
p.turn.champions_health = {}
|
p.turn.champions_health = {}
|
||||||
for c in p.board:
|
for c in p.board:
|
||||||
@@ -62,8 +68,10 @@ class Turn(Serializable):
|
|||||||
await self.player.end_turn()
|
await self.player.end_turn()
|
||||||
|
|
||||||
async def lock_card(self, card_id: str):
|
async def lock_card(self, card_id: str):
|
||||||
if self.discard_markers > 0:
|
if self.discard_markers > 0 or self.fuck_u_markers > 0:
|
||||||
return print("You cannot lock a card while having discard markers")
|
return print(
|
||||||
|
"You cannot lock a card while having discard or fuck_u markers"
|
||||||
|
)
|
||||||
card = self.player.game.search_card_in_pile(card_id, self.player.board)
|
card = self.player.game.search_card_in_pile(card_id, self.player.board)
|
||||||
if card is None:
|
if card is None:
|
||||||
return print("Couldn't find card in player board")
|
return print("Couldn't find card in player board")
|
||||||
@@ -90,14 +98,19 @@ class Turn(Serializable):
|
|||||||
await self.player.game.notify_controller("update", self.serialize())
|
await self.player.game.notify_controller("update", self.serialize())
|
||||||
|
|
||||||
async def discard_card(self, card_id: str):
|
async def discard_card(self, card_id: str):
|
||||||
if self.discard_markers <= 0:
|
|
||||||
return print("You don't have any discard markers!")
|
|
||||||
card = self.player.game.search_card_in_pile(card_id, self.cards_locked)
|
card = self.player.game.search_card_in_pile(card_id, self.cards_locked)
|
||||||
if card is not None:
|
if card is not None:
|
||||||
return print("Cannot discard: card is locked")
|
return print("Cannot discard: card is locked")
|
||||||
self.discard_markers -= 1
|
|
||||||
|
if self.fuck_u_markers > 0:
|
||||||
|
self.fuck_u_markers -= 1
|
||||||
|
elif self.discard_markers > 0:
|
||||||
|
self.discard_markers -= 1
|
||||||
|
else:
|
||||||
|
return print("you don't have any discard or fuck_u markers")
|
||||||
|
|
||||||
|
await self.player.discard_card(card_id)
|
||||||
await self.player.game.notify_controller("update", self.serialize())
|
await self.player.game.notify_controller("update", self.serialize())
|
||||||
return await self.player.discard_card(card_id)
|
|
||||||
|
|
||||||
def sacrifice_card(self, card_id: str):
|
def sacrifice_card(self, card_id: str):
|
||||||
card = self.player.game.search_card_in_pile(card_id, self.cards_locked)
|
card = self.player.game.search_card_in_pile(card_id, self.cards_locked)
|
||||||
@@ -106,14 +119,22 @@ class Turn(Serializable):
|
|||||||
return self.player.sacrifice_card(card_id)
|
return self.player.sacrifice_card(card_id)
|
||||||
|
|
||||||
async def use_effect_with_check(self, effect_id: str, target: Optional[str] = None):
|
async def use_effect_with_check(self, effect_id: str, target: Optional[str] = None):
|
||||||
if self.discard_markers > 0:
|
if self.fuck_u_markers > 0:
|
||||||
return print("You cannot use an effect while having discard markers")
|
return print("You cannot use an effect while having fuck_u markers")
|
||||||
effect = next(
|
effect = next(
|
||||||
(e for e in self.effects_availables if str(e.uuid) == effect_id),
|
(e for e in self.effects_availables if str(e.uuid) == effect_id),
|
||||||
None,
|
None,
|
||||||
)
|
)
|
||||||
if effect is None:
|
if effect is None:
|
||||||
return print("Effect not available")
|
return print("Effect not available")
|
||||||
|
|
||||||
|
if (
|
||||||
|
effect.effect != CardEffects.DRAW_AND_DISCARD_MULTIPLE
|
||||||
|
and self.discard_markers > 0
|
||||||
|
):
|
||||||
|
return print(
|
||||||
|
"You cannot use another effect than draw_and_discard_multiple with discard markers!"
|
||||||
|
)
|
||||||
card = effect.card
|
card = effect.card
|
||||||
if card is None:
|
if card is None:
|
||||||
return print(
|
return print(
|
||||||
|
|||||||
Reference in New Issue
Block a user