from otree.api import ( Currency as c, currency_range, SubmissionMustFail, Submission ) from . import pages from ._builtin import Bot from .models import Constants class PlayerBot(Bot): cases = ['basic', 'min', 'max'] def play_round(self): case = self.case yield (pages.Introduction) if case == 'basic': if self.player.id_in_group == 1: for invalid_contribution in [-1, 41]: yield SubmissionMustFail(pages.Contribute, { 'contribution': invalid_contribution}) contribution = { 'min': 0, 'max': 40, 'basic': 12, }[case] yield (pages.Contribute, {"contribution": c(20)}) yield (pages.Results) if self.player.id_in_group == 1: if case == 'min': expected_payoff = 40 elif case == 'max': expected_payoff = 40 else: expected_payoff = 40 assert self.player.payoff == expected_payoff