Beispiel #1
0
def limit_speculation_by_influence(sender, instance, **kwargs):
	"""
	You can't speculate more than {{influence}} share per turn
	"""
	player = instance.player
	if CorporationSpeculationOrder.objects.filter(player=player, turn=player.game.current_turn).count() + DerivativeSpeculationOrder.objects.filter(player=player, turn=player.game.current_turn).count() >= player.influence.level:
		raise OrderNotAvailable("Pas assez d'influence pour spéculer à nouveau ce tour-ci.")
Beispiel #2
0
def buy_order_require_money(sender, instance, **kwargs):
    """
	Check player has enough money for this order
	"""
    if instance.get_cost() + instance.player.get_current_orders_cost(
    ) > instance.player.money:
        raise OrderNotAvailable("Pas assez d'argent pour lancer cet ordre.")
Beispiel #3
0
def enforce_mdc_ccib_negative(sender, instance, **kwargs):
    """
	When CCIB line is active, TRAN players can't protect.
	"""
    if instance.player.get_last_mdc_coalition() == MDCVoteOrder.TRAN:
        raise OrderNotAvailable(
            "Vous avez voté pour la transparence au tour précédent, vous ne pouvez donc pas effectuer de run de protection ce tour-ci"
        )
Beispiel #4
0
def enforce_mdc_dere_negative(sender, instance, **kwargs):
    """
	When DERE line is active, BANK players can't speculate
	"""
    if instance.player.get_last_mdc_coalition() == MDCVoteOrder.BANK:
        raise OrderNotAvailable(
            "Vous avez voté pour l'instauration de garde-fous bancaires au tour précédent, vous ne pouvez donc pas spéculer ce tour-ci"
        )
Beispiel #5
0
def enforce_mdc_bank_negative(sender, instance, **kwargs):
    """
	When BANK line is active, DERE players can't speculate
	"""

    if instance.player.get_last_mdc_coalition() == MDCVoteOrder.DERE:
        raise OrderNotAvailable(
            "Vous avez voté pour la dérégulation au tour précédent, vous ne pouvez donc pas spéculer ce tour-ci"
        )
Beispiel #6
0
def limit_mdc_order(sender, instance, **kwargs):
    """
	Can't vote twice the same turn
	"""
    if MDCVoteOrder.objects.filter(
            player=instance.player,
            turn=instance.player.game.current_turn).exists():
        raise OrderNotAvailable(
            "Vous ne pouvez pas rejoindre deux coalitions dans le même tour.")
Beispiel #7
0
def limit_citizenship_order(sender, instance, **kwargs):
    """
	Can't change citizenship 2 times in the same turn
	"""
    if CitizenShipOrder.objects.filter(
            player=instance.player,
            turn=instance.player.game.current_turn).exists():
        raise OrderNotAvailable(
            "Vous ne pouvez pas demander une citoyenneté deux fois dans le même tour."
        )
Beispiel #8
0
def only_one_influence_per_turn(sender, instance, **kwargs):
    """
	You can't buy more than one influence per turn
	This is kinda like some "unique_together" constraint, except on inherited models.
	"""
    if BuyInfluenceOrder.objects.filter(
            player=instance.player,
            turn=instance.player.game.current_turn).exists():
        raise OrderNotAvailable(
            "Impossible d'acheter de l'influence deux fois par tour.")
Beispiel #9
0
def citizenship_need_one_share(sender, instance, **kwargs):
    """
	You need at least one share to get a citizenship
	"""
    if not hasattr(instance, 'corporation'):
        return

    if not instance.player.share_set.filter(
            corporation=instance.corporation).exists():
        raise OrderNotAvailable(
            "Vous devez avoir au moins une part dans la corporation dont vous souhaitez devenir citoyen."
        )
Beispiel #10
0
def only_influence_bonus_per_turn(sender, instance, **kwargs):
	"""
	You can't use more 30%% bonuses than you have influence
	"""
	if instance.has_influence_bonus and RunOrder.objects.filter(player=instance.player, turn=instance.player.game.current_turn, has_influence_bonus=True).count() >= instance.player.influence.level:
		raise OrderNotAvailable("Impossible d'affecter le bonus de 30%: vous n'avez pas assez d'influence corporatiste.")
Beispiel #11
0
def check_recipient_is_not_self(sender, instance, **kwargs):
    """
	Check if the recipient isn't the sender
	"""
    if instance.recipient_id is not None and instance.player_id == instance.recipient_id:
        raise OrderNotAvailable("Impossible de s'envoyer de l'argent !")
Beispiel #12
0
def forbind_nonexisting_rank(sender, instance, **kwargs):
	"""
	You get less money for speculating on first / last
	"""
	if instance.rank > instance.player.game.corporation_set.count():
		raise OrderNotAvailable("Aucune corporation ne peut être à ce rang.")
Beispiel #13
0
def limit_speculation_amount_by_influence(sender, instance, **kwargs):
	"""
	A speculation can't be more than {{influence}} * MAX_AMOUNT_SPECULATION ¥ per turn
	"""
	if instance.investment > instance.player.influence.level * sender.MAX_AMOUNT_SPECULATION:
		raise OrderNotAvailable("Pas assez d'influence pour spéculer un tel montant (montant max : %s)." % (instance.player.influence.level * instance.MAX_AMOUNT_SPECULATION))
Beispiel #14
0
def max_is_90(sender, instance, **kwargs):
	"""
	You can't have more than 90% probability of success
	"""
	if instance.get_success_probability() > 90:
		raise OrderNotAvailable("Impossible d'avoir plus de 90% de réussite sur une run.")
Beispiel #15
0
def check_target_is_not_self(sender, instance, **kwargs):
    """
	Check if the target isn't the Johnson
	"""
    if instance.target_id is not None and instance.player_id == instance.target_id:
        raise OrderNotAvailable("Impossible de se cibler soi-même.")
Beispiel #16
0
def only_one_vote_per_turn(sender, instance, **kwargs):
	"""
	You can't vote more than once per turn
	"""
	if VoteOrder.objects.filter(player=instance.player, turn=instance.player.game.current_turn).exists():
		raise OrderNotAvailable("Impossible de voter deux fois par tour")
Beispiel #17
0
def limit_buy_share_by_influence(sender, instance, **kwargs):
	"""
	You can't buy more than {{influence}} share per turn
	"""
	if BuyShareOrder.objects.filter(player=instance.player, turn=instance.player.game.current_turn).count() >= instance.player.influence.level:
		raise OrderNotAvailable("Pas assez d'influence pour acheter à nouveau des parts ce tour-ci.")