from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) import numpy as np author = 'Jason Ralston' doc = """ Figure out what to pay them subjects """ class Constants(BaseConstants): name_in_url = 'SavingsConsumption_payment' players_per_group = None num_rounds = 1 points_to_money = 1/20 show_up_fee = 7 class Subsession(BaseSubsession): def creating_session(self): if self.round_number == 1: for p in self.get_players(): p.participant.vars['random_task'] = np.random.randint(2) class Group(BaseGroup): pass class Player(BasePlayer): payoff_1 = models.FloatField() payoff_2 = models.FloatField() final_payoff = models.FloatField() def set_payoffs(self): self.payoff_1 = self.participant.vars['payoff_1'] self.payoff_2 = self.participant.vars['payoff_2'] if self.participant.vars['random_task'] == 0: self.final_payoff = self.payoff_1 else: self.final_payoff = self.payoff_2 self.participant.payoff = round((self.final_payoff * Constants.points_to_money) + Constants.show_up_fee, 2)