from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) author = 'Mingxian Jin' doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'cutcake_double_knife_3' players_per_group = 3 num_rounds = 7 class Subsession(BaseSubsession): def creating_session(self): if self.round_number == 1: self.group_randomly() else: self.group_like_round(1) class Group(BaseGroup): firstcut_1 = models.IntegerField() firstcut_2 = models.IntegerField() trim_piece = models.IntegerField() secondlarge_piece = models.IntegerField() largest_piece_value = models.IntegerField() secondlarge_piece_value = models.IntegerField() trim_point = models.IntegerField() trimmings_length = models.IntegerField() second_divide_needed = models.BooleanField() first_choice = models.IntegerField( choices=[ [1, 'Left'], [2, 'Middle'], [3, 'Right'], ] ) second_choice = models.IntegerField() second_choice_without_Left = models.IntegerField( choices=[ [2, 'Middle'], [3, 'Right'], ] ) second_choice_without_Middle = models.IntegerField( choices=[ [1, 'Left'], [3, 'Right'], ] ) second_choice_without_Right = models.IntegerField( choices=[ [1, 'Left'], [2, 'Middle'], ] ) third_choice = models.IntegerField() trimcut_1 = models.IntegerField(initial=0) trimcut_2 = models.IntegerField(initial=0) trimmings_first_choose = models.IntegerField( choices=[ [1, 'Left'], [2, 'Middle'], [3, 'Right'], ] ) trimmings_second_choose = models.IntegerField() trimmings_third_choose = models.IntegerField() def set_trim_piece(self): pieces_value = sorted([ self.get_player_by_id(2).value_after_firstcut_1, self.get_player_by_id(2).value_after_firstcut_2, self.get_player_by_id(2).value_after_firstcut_3]) max = pieces_value[2] mid = pieces_value[1] self.largest_piece_value = pieces_value[2] self.secondlarge_piece_value = pieces_value[1] if self.get_player_by_id(2).value_after_firstcut_1 == max: self.trim_piece = 1 elif self.get_player_by_id(2).value_after_firstcut_2 == max: self.trim_piece = 2 elif self.get_player_by_id(2).value_after_firstcut_3 == max: self.trim_piece = 3 if self.get_player_by_id(2).value_after_firstcut_1 == mid: self.secondlarge_piece = 1 elif self.get_player_by_id(2).value_after_firstcut_2 == mid: self.secondlarge_piece = 2 elif self.get_player_by_id(2).value_after_firstcut_3 == mid: self.secondlarge_piece = 3 def set_trimmings_length(self): if self.trim_piece == 1: self.trimmings_length = self.trim_point - 0 elif self.trim_piece == 2: self.trimmings_length = self.trim_point - self.firstcut_1 elif self.trim_piece == 3: self.trimmings_length = self.trim_point - self.firstcut_2 def set_second_divide_needed(self): if self.trimmings_length == 0: self.second_divide_needed = False else: self.second_divide_needed = True def check_trim_part_picked(self): if self.first_choice != self.trim_piece: self.second_choice = self.trim_piece [self.third_choice] = [p for p in [1,2,3] if p != self.first_choice and p != self.second_choice] elif self.first_choice == self.trim_piece: if self.first_choice == 1: self.second_choice = self.second_choice_without_Left [self.third_choice] = [p for p in [1, 2, 3] if p != self.first_choice and p != self.second_choice] elif self.first_choice == 2: self.second_choice = self.second_choice_without_Middle [self.third_choice ]= [p for p in [1, 2, 3] if p != self.first_choice and p != self.second_choice] elif self.first_choice == 3: self.second_choice = self.second_choice_without_Right [self.third_choice] = [p for p in [1, 2, 3] if p != self.first_choice and p != self.second_choice] def set_trimmings_second_third_choose(self): if self.trimmings_first_choose == 1: if self.get_player_by_id(1).value_trimmings_2 >= self.get_player_by_id(1).value_trimmings_3: self.trimmings_second_choose = 2 self.trimmings_third_choose = 3 else: self.trimmings_second_choose = 3 self.trimmings_third_choose = 2 elif self.trimmings_first_choose == 2: if self.get_player_by_id(1).value_trimmings_1 >= self.get_player_by_id(1).value_trimmings_3: self.trimmings_second_choose = 1 self.trimmings_third_choose = 3 else: self.trimmings_second_choose = 3 self.trimmings_third_choose = 1 elif self.trimmings_first_choose == 3: if self.get_player_by_id(1).value_trimmings_1 >= self.get_player_by_id(1).value_trimmings_2: self.trimmings_second_choose = 1 self.trimmings_third_choose = 2 else: self.trimmings_second_choose = 2 self.trimmings_third_choose = 1 class Player(BasePlayer): value_after_firstcut_1 = models.IntegerField() value_after_firstcut_2 = models.IntegerField() value_after_firstcut_3 = models.IntegerField() value_after_trim_1 = models.IntegerField(initial=0) value_after_trim_2 = models.IntegerField(initial=0) value_after_trim_3 = models.IntegerField(initial=0) value_trimmings = models.IntegerField(initial=0) value_trimmings_1 = models.IntegerField(initial=0) value_trimmings_2 = models.IntegerField(initial=0) value_trimmings_3 = models.IntegerField(initial=0) opponent_1_value = models.CurrencyField() opponent_2_value = models.CurrencyField() envy = models.BooleanField() payoff_help = models.CurrencyField(initial=0) def find_value_after_firstcut_1(self): if self.id_in_group == 1: if self.group.firstcut_1 <= 150: self.value_after_firstcut_1 = 0 elif self.group.firstcut_1 <= 190: self.value_after_firstcut_1 = self.group.firstcut_1 - 150 elif self.group.firstcut_1 <= 210: self.value_after_firstcut_1 = 40 elif self.group.firstcut_1 <= 230: self.value_after_firstcut_1 = self.group.firstcut_1 - 210 + 40 elif self.group.firstcut_1 <= 380: self.value_after_firstcut_1 = 60 elif self.group.firstcut_1 <= 400: self.value_after_firstcut_1 = self.group.firstcut_1 - 380 + 60 elif self.group.firstcut_1 <= 450: self.value_after_firstcut_1 = 80 elif self.group.firstcut_1 <= 490: self.value_after_firstcut_1 = self.group.firstcut_1 - 450 + 80 else: self.value_after_firstcut_1 = 120 if self.id_in_group == 2: if self.group.firstcut_1 <= 80: self.value_after_firstcut_1 = 0 elif self.group.firstcut_1 <= 90: self.value_after_firstcut_1 =self.group.firstcut_1 - 80 elif self.group.firstcut_1 <= 100: self.value_after_firstcut_1 = 10 elif self.group.firstcut_1 <= 110: self.value_after_firstcut_1 = self.group.firstcut_1 - 100 + 10 elif self.group.firstcut_1 <= 140: self.value_after_firstcut_1 = 20 elif self.group.firstcut_1 <= 170: self.value_after_firstcut_1 = self.group.firstcut_1 - 140 + 20 elif self.group.firstcut_1 <= 270: self.value_after_firstcut_1 = 50 elif self.group.firstcut_1 <= 290: self.value_after_firstcut_1 = self.group.firstcut_1 - 270 + 50 elif self.group.firstcut_1 <= 300: self.value_after_firstcut_1 = 70 elif self.group.firstcut_1 <= 320: self.value_after_firstcut_1 = self.group.firstcut_1 - 300 + 70 elif self.group.firstcut_1 <= 330: self.value_after_firstcut_1 = 90 elif self.group.firstcut_1 <= 340: self.value_after_firstcut_1 = self.group.firstcut_1 - 330 + 90 elif self.group.firstcut_1 <= 470: self.value_after_firstcut_1 = 100 elif self.group.firstcut_1 <= 490: self.value_after_firstcut_1 = self.group.firstcut_1 - 470 + 100 else: self.value_after_firstcut_1 = 120 if self.id_in_group == 3: if self.group.firstcut_1 <= 70: self.value_after_firstcut_1 = 0 elif self.group.firstcut_1 <= 110: self.value_after_firstcut_1 = self.group.firstcut_1 - 70 elif self.group.firstcut_1 <= 280: self.value_after_firstcut_1 = 40 elif self.group.firstcut_1 <= 340: self.value_after_firstcut_1 = self.group.firstcut_1 - 280 + 40 elif self.group.firstcut_1 <= 470: self.value_after_firstcut_1 = 100 elif self.group.firstcut_1 <= 490: self.value_after_firstcut_1 = self.group.firstcut_1 - 470 + 100 else: self.value_after_firstcut_1 = 120 def find_value_after_firstcut_2(self): if self.id_in_group == 1: if self.group.firstcut_2 <= 150: self.value_after_firstcut_2 = 0 elif self.group.firstcut_2 <= 190: self.value_after_firstcut_2 = max(self.group.firstcut_2 - 150 - self.value_after_firstcut_1, 0) elif self.group.firstcut_2 <= 210: self.value_after_firstcut_2 = max(40 - self.value_after_firstcut_1, 0) elif self.group.firstcut_2 <= 230: self.value_after_firstcut_2 = max(self.group.firstcut_2 - 210 + 40 - self.value_after_firstcut_1, 0) elif self.group.firstcut_2 <= 380: self.value_after_firstcut_2 = max(60 - self.value_after_firstcut_1, 0) elif self.group.firstcut_2 <= 400: self.value_after_firstcut_2 = max(self.group.firstcut_2 - 380 + 60 - self.value_after_firstcut_1, 0) elif self.group.firstcut_2 <= 450: self.value_after_firstcut_2 = max(80 - self.value_after_firstcut_1, 0) elif self.group.firstcut_2 <= 490: self.value_after_firstcut_2 = max(self.group.firstcut_2 - 450 + 80 - self.value_after_firstcut_1, 0) else: self.value_after_firstcut_2 = 120 - self.value_after_firstcut_1 if self.id_in_group == 2: if self.group.firstcut_2 <= 80: self.value_after_firstcut_2 = 0 elif self.group.firstcut_2 <= 90: self.value_after_firstcut_2 = max(self.group.firstcut_2 - 80 - self.value_after_firstcut_1, 0) elif self.group.firstcut_2 <= 100: self.value_after_firstcut_2 = max(10 - self.value_after_firstcut_1, 0) elif self.group.firstcut_2 <= 110: self.value_after_firstcut_2 = max(self.group.firstcut_2 - 100 + 10 - self.value_after_firstcut_1, 0) elif self.group.firstcut_2 <= 140: self.value_after_firstcut_2 = max(20 - self.value_after_firstcut_1, 0) elif self.group.firstcut_2 <= 170: self.value_after_firstcut_2 = max(self.group.firstcut_2 - 140 + 20 - self.value_after_firstcut_1, 0) elif self.group.firstcut_2 <= 270: self.value_after_firstcut_2 = max(50 - self.value_after_firstcut_1, 0) elif self.group.firstcut_2 <= 290: self.value_after_firstcut_2 = max(self.group.firstcut_2 - 270 + 50 - self.value_after_firstcut_1, 0) elif self.group.firstcut_2 <= 300: self.value_after_firstcut_2 = max(70 - self.value_after_firstcut_1, 0) elif self.group.firstcut_2 <= 320: self.value_after_firstcut_2 = max(self.group.firstcut_2 - 300 + 70 - self.value_after_firstcut_1, 0) elif self.group.firstcut_2 <= 330: self.value_after_firstcut_2 = max(90 - self.value_after_firstcut_1, 0) elif self.group.firstcut_2 <= 340: self.value_after_firstcut_2 = max(self.group.firstcut_2 - 330 + 90 - self.value_after_firstcut_1, 0) elif self.group.firstcut_2 <= 470: self.value_after_firstcut_2 = max(100 - self.value_after_firstcut_1, 0) elif self.group.firstcut_2 <= 490: self.value_after_firstcut_2 = max(self.group.firstcut_2 - 470 + 100 - self.value_after_firstcut_1, 0) else: self.value_after_firstcut_2 = 120 - self.value_after_firstcut_1 if self.id_in_group == 3: if self.group.firstcut_2 <= 70: self.value_after_firstcut_2 = 0 elif self.group.firstcut_2 <= 110: self.value_after_firstcut_2 = max(self.group.firstcut_2 - 70 - self.value_after_firstcut_1, 0) elif self.group.firstcut_2 <= 280: self.value_after_firstcut_2 = max(40 - self.value_after_firstcut_1, 0) elif self.group.firstcut_2 <= 340: self.value_after_firstcut_2 = max(self.group.firstcut_2 - 280 + 40 - self.value_after_firstcut_1, 0) elif self.group.firstcut_2 <= 470: self.value_after_firstcut_2 = max(100 - self.value_after_firstcut_1, 0) elif self.group.firstcut_2 <= 490: self.value_after_firstcut_2 = max(self.group.firstcut_2 - 470 + 100 - self.value_after_firstcut_1, 0) else: self.value_after_firstcut_2 = 120 - self.value_after_firstcut_1 def find_value_after_firstcut_3(self): self.value_after_firstcut_3 = 120 - self.value_after_firstcut_1 - self.value_after_firstcut_2 def find_value_after_trim_1(self): if self.id_in_group == 1: if self.group.trim_piece == 1: if self.group.trim_point <= 150: self.value_after_trim_1 = self.value_after_firstcut_1 - 0 elif self.group.trim_point <= 190: self.value_after_trim_1 = self.value_after_firstcut_1 - (self.group.trim_point - 150) elif self.group.trim_point <= 210: self.value_after_trim_1 = self.value_after_firstcut_1 - 40 elif self.group.trim_point <= 230: self.value_after_trim_1 = self.value_after_firstcut_1 - (self.group.trim_point - 210 + 40) elif self.group.trim_point <= 380: self.value_after_trim_1 = self.value_after_firstcut_1 - 60 elif self.group.trim_point <= 400: self.value_after_trim_1 = self.value_after_firstcut_1 - (self.group.trim_point - 380 + 60) elif self.group.trim_point <= 450: self.value_after_trim_1 = self.value_after_firstcut_1 - 80 elif self.group.trim_point <= 490: self.value_after_trim_1 = self.value_after_firstcut_1 - (self.group.trim_point - 450 + 80) else: self.value_after_trim_1 = self.value_after_firstcut_1 - 120 elif self.group.trim_piece == 2: self.value_after_trim_1 = self.value_after_firstcut_1 elif self.group.trim_piece == 3: self.value_after_trim_1 = self.value_after_firstcut_1 elif self.id_in_group == 2: if self.group.trim_piece == 1: if self.group.trim_point <= 80: self.value_after_trim_1 = self.value_after_firstcut_1 - 0 elif self.group.trim_point <= 90: self.value_after_trim_1 = self.value_after_firstcut_1 - (self.group.trim_point - 80) elif self.group.trim_point <= 100: self.value_after_trim_1 = self.value_after_firstcut_1 - 10 elif self.group.trim_point <= 110: self.value_after_trim_1 = self.value_after_firstcut_1 - (self.group.trim_point - 100 + 10) elif self.group.trim_point <= 140: self.value_after_trim_1 = self.value_after_firstcut_1 - 20 elif self.group.trim_point <= 170: self.value_after_trim_1 = self.value_after_firstcut_1 - (self.group.trim_point - 140 + 20) elif self.group.trim_point <= 270: self.value_after_trim_1 = self.value_after_firstcut_1 - 50 elif self.group.trim_point <= 290: self.value_after_trim_1 = self.value_after_firstcut_1 - (self.group.trim_point - 270 + 50) elif self.group.trim_point <= 300: self.value_after_trim_1 = self.value_after_firstcut_1 - 70 elif self.group.trim_point <= 320: self.value_after_trim_1 = self.value_after_firstcut_1 - (self.group.trim_point - 300 + 70) elif self.group.trim_point <= 330: self.value_after_trim_1 = self.value_after_firstcut_1 - 90 elif self.group.trim_point <= 340: self.value_after_trim_1 = self.value_after_firstcut_1 - (self.group.trim_point - 330 + 90) elif self.group.trim_point <= 470: self.value_after_trim_1 = self.value_after_firstcut_1 - 100 elif self.group.trim_point <= 490: self.value_after_trim_1 = self.value_after_firstcut_1 - (self.group.trim_point - 470 + 100) else: self.value_after_trim_1 = self.value_after_firstcut_1 - 120 elif self.group.trim_piece == 2: self.value_after_trim_1 = self.value_after_firstcut_1 elif self.group.trim_piece == 3: self.value_after_trim_1 = self.value_after_firstcut_1 elif self.id_in_group == 3: if self.group.trim_piece == 1: if self.group.trim_point <= 70: self.value_after_trim_1 = self.value_after_firstcut_1 - 0 elif self.group.trim_point <= 110: self.value_after_trim_1 = self.value_after_firstcut_1 - (self.group.trim_point - 70) elif self.group.trim_point <= 280: self.value_after_trim_1 = self.value_after_firstcut_1 - 40 elif self.group.trim_point <= 340: self.value_after_trim_1 = self.value_after_firstcut_1 - (self.group.trim_point - 280 + 40) elif self.group.trim_point <= 470: self.value_after_trim_1 = self.value_after_firstcut_1 - 100 elif self.group.trim_point <= 490: self.value_after_trim_1 = self.value_after_firstcut_1 - (self.group.trim_point - 470 + 100) else: self.value_after_trim_1 = self.value_after_firstcut_1 - 120 elif self.group.trim_piece == 2: self.value_after_trim_1 = self.value_after_firstcut_1 elif self.group.trim_piece == 3: self.value_after_trim_1 = self.value_after_firstcut_1 def find_value_after_trim_2(self): if self.id_in_group == 1: if self.group.trim_piece == 1: self.value_after_trim_2 = self.value_after_firstcut_2 elif self.group.trim_piece == 2: if self.group.trim_point <= 150: self.value_after_trim_2 = 0 elif self.group.trim_point <= 190: self.value_after_trim_2 = self.value_after_firstcut_2 - max(self.group.trim_point - 150 - self.value_after_firstcut_1, 0) elif self.group.trim_point <= 210: self.value_after_trim_2 = self.value_after_firstcut_2 - max(40 - self.value_after_firstcut_1, 0) elif self.group.trim_point <= 230: self.value_after_trim_2 = self.value_after_firstcut_2 - max(self.group.trim_point - 210 + 40 - self.value_after_firstcut_1, 0) elif self.group.trim_point <= 380: self.value_after_trim_2 = self.value_after_firstcut_2 - max(60 - self.value_after_firstcut_1, 0) elif self.group.trim_point <= 400: self.value_after_trim_2 = self.value_after_firstcut_2 - max(self.group.trim_point - 380 + 60 - self.value_after_firstcut_1, 0) elif self.group.trim_point <= 450: self.value_after_trim_2 = self.value_after_firstcut_2 - max(80 - self.value_after_firstcut_1, 0) elif self.group.trim_point <= 490: self.value_after_trim_2 = self.value_after_firstcut_2 - max(self.group.trim_point - 450 + 80 - self.value_after_firstcut_1, 0) else: self.value_after_trim_2 = self.value_after_firstcut_2 - (120 - self.value_after_firstcut_1) elif self.group.trim_piece == 3: self.value_after_trim_2 = self.value_after_firstcut_2 elif self.id_in_group == 2: if self.group.trim_piece == 1: self.value_after_trim_2 = self.value_after_firstcut_2 elif self.group.trim_piece == 2: if self.group.trim_point <= 80: self.value_after_trim_2 = self.value_after_firstcut_2 - 0 elif self.group.trim_point <= 90: self.value_after_trim_2 = self.value_after_firstcut_2 - max(self.group.trim_point - 80 - self.value_after_firstcut_1, 0) elif self.group.trim_point <= 100: self.value_after_trim_2 = self.value_after_firstcut_2 - max(10 - self.value_after_firstcut_1, 0) elif self.group.trim_point <= 110: self.value_after_trim_2 = self.value_after_firstcut_2 - max(self.group.trim_point - 100 + 10 - self.value_after_firstcut_1, 0) elif self.group.trim_point <= 140: self.value_after_trim_2 = self.value_after_firstcut_2 - max(20 - self.value_after_firstcut_1, 0) elif self.group.trim_point <= 170: self.value_after_trim_2 = self.value_after_firstcut_2 - max(self.group.trim_point - 140 + 20 - self.value_after_firstcut_1, 0) elif self.group.trim_point <= 270: self.value_after_trim_2 = self.value_after_firstcut_2 - max(50 - self.value_after_firstcut_1, 0) elif self.group.trim_point <= 290: self.value_after_trim_2 = self.value_after_firstcut_2 - max(self.group.trim_point - 270 + 50 - self.value_after_firstcut_1, 0) elif self.group.trim_point <= 300: self.value_after_trim_2 = self.value_after_firstcut_2 - max(70 - self.value_after_firstcut_1, 0) elif self.group.trim_point <= 320: self.value_after_trim_2 = self.value_after_firstcut_2 - max(self.group.trim_point - 300 + 70 - self.value_after_firstcut_1, 0) elif self.group.trim_point <= 330: self.value_after_trim_2 = self.value_after_firstcut_2 - max(90 - self.value_after_firstcut_1, 0) elif self.group.trim_point <= 340: self.value_after_trim_2 = self.value_after_firstcut_2 - max(self.group.trim_point - 330 + 90 - self.value_after_firstcut_1, 0) elif self.group.trim_point <= 470: self.value_after_trim_2 = self.value_after_firstcut_2 - max(100 - self.value_after_firstcut_1, 0) elif self.group.trim_point <= 490: self.value_after_trim_2 = self.value_after_firstcut_2 - max(self.group.trim_point - 470 + 100 - self.value_after_firstcut_1, 0) else: self.value_after_trim_2 = self.value_after_firstcut_2 - (120 - self.value_after_firstcut_1) elif self.group.trim_piece == 3: self.value_after_trim_2 = self.value_after_firstcut_2 elif self.id_in_group == 3: if self.group.trim_piece == 1: self.value_after_trim_2 = self.value_after_firstcut_2 elif self.group.trim_piece == 2: if self.group.trim_point <= 70: self.value_after_trim_2 = self.value_after_firstcut_2 - 0 elif self.group.trim_point <= 110: self.value_after_trim_2 = self.value_after_firstcut_2 - max(self.group.trim_point - 70 - self.value_after_firstcut_1,0) elif self.group.trim_point <= 280: self.value_after_trim_2 = self.value_after_firstcut_2 - max(40 - self.value_after_firstcut_1,0) elif self.group.trim_point <= 340: self.value_after_trim_2 = self.value_after_firstcut_2 - max(self.group.trim_point - 280 + 40 - self.value_after_firstcut_1,0) elif self.group.trim_point <= 470: self.value_after_trim_2 = self.value_after_firstcut_2 - max(100 - self.value_after_firstcut_1,0) elif self.group.trim_point <= 490: self.value_after_trim_2 = self.value_after_firstcut_2 - max(self.group.trim_point - 470 + 100 - self.value_after_firstcut_1,0) else: self.value_after_trim_2 = self.value_after_firstcut_2 - max(120 - self.value_after_firstcut_1,0) elif self.group.trim_piece == 3: self.value_after_trim_2 = self.value_after_firstcut_2 def find_value_after_trim_3(self): if self.id_in_group == 1: if self.group.trim_piece == 1: self.value_after_trim_3 = self.value_after_firstcut_3 elif self.group.trim_piece == 2: self.value_after_trim_3 = self.value_after_firstcut_3 elif self.group.trim_piece == 3: if self.group.trim_point <= 150: self.value_after_trim_3 = 0 elif self.group.trim_point <= 190: self.value_after_trim_3 = self.value_after_firstcut_3 - max(self.group.trim_point - 150 - self.value_after_firstcut_1 - self.value_after_firstcut_2, 0) elif self.group.trim_point <= 210: self.value_after_trim_3 = self.value_after_firstcut_3 - max(40 - self.value_after_firstcut_1 - self.value_after_firstcut_2, 0) elif self.group.trim_point <= 230: self.value_after_trim_3 = self.value_after_firstcut_3 - max(self.group.trim_point - 210 + 40 - self.value_after_firstcut_1 - self.value_after_firstcut_2, 0) elif self.group.trim_point <= 380: self.value_after_trim_3 = self.value_after_firstcut_3 - max(60 - self.value_after_firstcut_1 - self.value_after_firstcut_2, 0) elif self.group.trim_point <= 400: self.value_after_trim_3 = self.value_after_firstcut_3 - max(self.group.trim_point - 380 + 60 - self.value_after_firstcut_1 - self.value_after_firstcut_2, 0) elif self.group.trim_point <= 450: self.value_after_trim_3 = self.value_after_firstcut_3 - max(80 - self.value_after_firstcut_1 - self.value_after_firstcut_2, 0) elif self.group.trim_point <= 490: self.value_after_trim_3 = self.value_after_firstcut_3 - max(self.group.trim_point - 450 + 80 - self.value_after_firstcut_1 - self.value_after_firstcut_2, 0) else: self.value_after_trim_3 = self.value_after_firstcut_3 - (120 - self.value_after_firstcut_1 - self.value_after_firstcut_2) elif self.id_in_group == 2: if self.group.trim_piece == 1: self.value_after_trim_3 = self.value_after_firstcut_3 elif self.group.trim_piece == 2: self.value_after_trim_3 = self.value_after_firstcut_3 elif self.group.trim_piece == 3: if self.group.trim_point <= 80: self.value_after_trim_3 = self.value_after_firstcut_3 - 0 elif self.group.trim_point <= 90: self.value_after_trim_3 = self.value_after_firstcut_3 - max(self.group.trim_point - 80 - self.value_after_firstcut_1 - self.value_after_firstcut_2, 0) elif self.group.trim_point <= 100: self.value_after_trim_3 = self.value_after_firstcut_3 - max(10 - self.value_after_firstcut_1 - self.value_after_firstcut_2, 0) elif self.group.trim_point <= 110: self.value_after_trim_3 = self.value_after_firstcut_3 - max(self.group.trim_point - 100 + 10 - self.value_after_firstcut_1 - self.value_after_firstcut_2, 0) elif self.group.trim_point <= 140: self.value_after_trim_3 = self.value_after_firstcut_3 - max(20 - self.value_after_firstcut_1 - self.value_after_firstcut_2, 0) elif self.group.trim_point <= 170: self.value_after_trim_3 = self.value_after_firstcut_3 - max(self.group.trim_point - 140 + 20 - self.value_after_firstcut_1 - self.value_after_firstcut_2, 0) elif self.group.trim_point <= 270: self.value_after_trim_3 = self.value_after_firstcut_3 - max(50 - self.value_after_firstcut_1 - self.value_after_firstcut_2, 0) elif self.group.trim_point <= 290: self.value_after_trim_3 = self.value_after_firstcut_3 - max(self.group.trim_point - 270 + 50 - self.value_after_firstcut_1 - self.value_after_firstcut_2, 0) elif self.group.trim_point <= 300: self.value_after_trim_3 = self.value_after_firstcut_3 - max(70 - self.value_after_firstcut_1 - self.value_after_firstcut_2, 0) elif self.group.trim_point <= 320: self.value_after_trim_3 = self.value_after_firstcut_3 - max(self.group.trim_point - 300 + 70 - self.value_after_firstcut_1 - self.value_after_firstcut_2, 0) elif self.group.trim_point <= 330: self.value_after_trim_3 = self.value_after_firstcut_3 - max(90 - self.value_after_firstcut_1 - self.value_after_firstcut_2, 0) elif self.group.trim_point <= 340: self.value_after_trim_3 = self.value_after_firstcut_3 - max(self.group.trim_point - 330 + 90 - self.value_after_firstcut_1 - self.value_after_firstcut_2, 0) elif self.group.trim_point <= 470: self.value_after_trim_3 = self.value_after_firstcut_3 - max(100 - self.value_after_firstcut_1 - self.value_after_firstcut_2, 0) elif self.group.trim_point <= 490: self.value_after_trim_3 = self.value_after_firstcut_3 - max(self.group.trim_point - 470 + 100 - self.value_after_firstcut_1 - self.value_after_firstcut_2, 0) else: self.value_after_trim_3 = self.value_after_firstcut_3 - (120 - self.value_after_firstcut_1 - self.value_after_firstcut_2) elif self.id_in_group == 3: if self.group.trim_piece == 1: self.value_after_trim_3 = self.value_after_firstcut_3 elif self.group.trim_piece == 2: self.value_after_trim_3 = self.value_after_firstcut_3 elif self.group.trim_piece == 3: if self.group.trim_point <= 70: self.value_after_trim_3 = self.value_after_firstcut_3 - 0 elif self.group.trim_point <= 110: self.value_after_trim_3 = self.value_after_firstcut_3 - max(self.group.trim_point - 70 - self.value_after_firstcut_1 - self.value_after_firstcut_2,0) elif self.group.trim_point <= 280: self.value_after_trim_3 = self.value_after_firstcut_3 - max(40 - self.value_after_firstcut_1 - self.value_after_firstcut_2,0) elif self.group.trim_point <= 340: self.value_after_trim_3 = self.value_after_firstcut_3 - max(self.group.trim_point - 280 + 40 - self.value_after_firstcut_1 - self.value_after_firstcut_2,0) elif self.group.trim_point <= 470: self.value_after_trim_3 = self.value_after_firstcut_3 - max(100 - self.value_after_firstcut_1 - self.value_after_firstcut_2,0) elif self.group.trim_point <= 490: self.value_after_trim_3 = self.value_after_firstcut_3 - max(self.group.trim_point - 470 + 100 - self.value_after_firstcut_1 - self.value_after_firstcut_2,0) else: self.value_after_trim_3 = self.value_after_firstcut_3 - max(120 - self.value_after_firstcut_1 - self.value_after_firstcut_2,0) def set_value_trimmings(self): self.value_trimmings = 120 - self.value_after_trim_1 - self.value_after_trim_2 - self.value_after_trim_3 def find_value_trimmings_1_2_3(self): if self.group.trim_piece == 1: if self.id_in_group == 1: if self.group.trimcut_1 <= 150: self.value_trimmings_1 = 0 elif self.group.trimcut_1 <= 190: self.value_trimmings_1 = self.group.trimcut_1 - 150 elif self.group.trimcut_1 <= 210: self.value_trimmings_1 = 40 elif self.group.trimcut_1 <= 230: self.value_trimmings_1 = self.group.trimcut_1 - 210 + 40 elif self.group.trimcut_1 <= 380: self.value_trimmings_1 = 60 elif self.group.trimcut_1 <= 400: self.value_trimmings_1 = self.group.trimcut_1 - 380 + 60 elif self.group.trimcut_1 <= 450: self.value_trimmings_1 = 80 elif self.group.trimcut_1 <= 490: self.value_trimmings_1 = self.group.trimcut_1 - 450 + 80 else: self.value_trimmings_1 = 120 if self.group.trimcut_2 <= 150: self.value_trimmings_2 = 0 elif self.group.trimcut_2 <= 190: self.value_trimmings_2 = max(self.group.trimcut_2 - 150 - self.value_trimmings_1,0) elif self.group.trimcut_2 <= 210: self.value_trimmings_2 = max( 40 - self.value_trimmings_1,0) elif self.group.trimcut_2 <= 230: self.value_trimmings_2 = max( self.group.trimcut_2 - 210 + 40 - self.value_trimmings_1,0) elif self.group.trimcut_2 <= 380: self.value_trimmings_2 = max( 60 - self.value_trimmings_1,0) elif self.group.trimcut_2 <= 400: self.value_trimmings_2 = max( self.group.trimcut_2 - 380 + 60 - self.value_trimmings_1,0) elif self.group.trimcut_2 <= 450: self.value_trimmings_2 = max( 80 - self.value_trimmings_1,0) elif self.group.trimcut_2 <= 490: self.value_trimmings_2 = max( self.group.trimcut_2 - 450 + 80 - self.value_trimmings_1,0) else: self.value_trimmings_2 = max( 120 - self.value_trimmings_1,0) self.value_trimmings_3 = self.value_trimmings - self.value_trimmings_1 - self.value_trimmings_2 elif self.id_in_group == 2: if self.group.trimcut_1 <= 80: self.value_trimmings_1 = 0 elif self.group.trimcut_1 <= 90: self.value_trimmings_1 = self.group.trimcut_1 - 80 elif self.group.trimcut_1 <= 100: self.value_trimmings_1 = 10 elif self.group.trimcut_1 <= 110: self.value_trimmings_1 = self.group.trimcut_1 - 100 + 10 elif self.group.trimcut_1 <= 140: self.value_trimmings_1 = 20 elif self.group.trimcut_1 <= 170: self.value_trimmings_1 = self.group.trimcut_1 - 140 + 20 elif self.group.trimcut_1 <= 270: self.value_trimmings_1 = 50 elif self.group.trimcut_1 <= 290: self.value_trimmings_1 = self.group.trimcut_1 - 270 + 50 elif self.group.trimcut_1 <= 300: self.value_trimmings_1 = 70 elif self.group.trimcut_1 <= 320: self.value_trimmings_1 = self.group.trimcut_1 - 300 + 70 elif self.group.trimcut_1 <= 330: self.value_trimmings_1 = 90 elif self.group.trimcut_1 <= 340: self.value_trimmings_1 = self.group.trimcut_1 - 330 + 90 elif self.group.trimcut_1 <= 470: self.value_trimmings_1 = 100 elif self.group.trimcut_1 <= 490: self.value_trimmings_1 = self.group.trimcut_1 - 470 + 100 else: self.value_trimmings_1 = 120 if self.group.trimcut_2 <= 80: self.value_trimmings_2 = 0 elif self.group.trimcut_2 <= 90: self.value_trimmings_2 = max(self.group.trimcut_2 - 80 - self.value_trimmings_1,0) elif self.group.trimcut_2 <= 100: self.value_trimmings_2 = max(10 - self.value_trimmings_1,0) elif self.group.trimcut_2 <= 110: self.value_trimmings_2 = max(self.group.trimcut_2 - 100 + 10 - self.value_trimmings_1,0) elif self.group.trimcut_2 <= 140: self.value_trimmings_2 = max(20 - self.value_trimmings_1,0) elif self.group.trimcut_2 <= 170: self.value_trimmings_2 = max(self.group.trimcut_2 - 140 + 20 - self.value_trimmings_1,0) elif self.group.trimcut_2 <= 270: self.value_trimmings_2 = max(50 - self.value_trimmings_1,0) elif self.group.trimcut_2 <= 290: self.value_trimmings_2 = max(self.group.trimcut_2 - 270 + 50 - self.value_trimmings_1,0) elif self.group.trimcut_2 <= 300: self.value_trimmings_2 = max(70 - self.value_trimmings_1,0) elif self.group.trimcut_2 <= 320: self.value_trimmings_2 = max(self.group.trimcut_2 - 300 + 70 - self.value_trimmings_1,0) elif self.group.trimcut_2 <= 330: self.value_trimmings_2 = max(90 - self.value_trimmings_1,0) elif self.group.trimcut_2 <= 340: self.value_trimmings_2 = max(self.group.trimcut_2 - 330 + 90 - self.value_trimmings_1,0) elif self.group.trimcut_2 <= 470: self.value_trimmings_2 = max(100 - self.value_trimmings_1,0) elif self.group.trimcut_2 <= 490: self.value_trimmings_2 = max(self.group.trimcut_2 - 470 + 100 - self.value_trimmings_1,0) else: self.value_trimmings_2 = max(120 - self.value_trimmings_1,0) self.value_trimmings_3 = self.value_trimmings - self.value_trimmings_1 - self.value_trimmings_2 elif self.id_in_group == 3: if self.group.trimcut_1 <= 70: self.value_trimmings_1 = 0 elif self.group.trimcut_1 <= 110: self.value_trimmings_1 = self.group.trimcut_1 - 70 elif self.group.trimcut_1 <= 280: self.value_trimmings_1 = 40 elif self.group.trimcut_1 <= 340: self.value_trimmings_1 = self.group.trimcut_1 - 280 + 40 elif self.group.trimcut_1 <= 470: self.value_trimmings_1 = 100 elif self.group.trimcut_1 <= 490: self.value_trimmings_1 = self.group.trimcut_1 - 470 + 100 else: self.value_trimmings_1 = 120 if self.group.trimcut_2 <= 70: self.value_trimmings_2 = 0 elif self.group.trimcut_2 <= 110: self.value_trimmings_2 = max(self.group.trimcut_2 - 70 - self.value_trimmings_1,0) elif self.group.trimcut_2 <= 280: self.value_trimmings_2 = max(40 - self.value_trimmings_1,0) elif self.group.trimcut_2 <= 340: self.value_trimmings_2 = max(self.group.trimcut_2 - 280 + 40 - self.value_trimmings_1,0) elif self.group.trimcut_2 <= 470: self.value_trimmings_2 = max(100 - self.value_trimmings_1,0) elif self.group.trimcut_2 <= 490: self.value_trimmings_2 = max(self.group.trimcut_2 - 470 + 100 - self.value_trimmings_1,0) else: self.value_trimmings_2 = max(120 - self.value_trimmings_1,0) self.value_trimmings_3 = self.value_trimmings - self.value_trimmings_1 - self.value_trimmings_2 elif self.group.trim_piece == 2: if self.id_in_group == 1: if self.group.trimcut_1 <= 150: self.value_trimmings_1 = 0 elif self.group.trimcut_1 <= 190: self.value_trimmings_1 = self.group.trimcut_1 - 150 - self.value_after_trim_1 elif self.group.trimcut_1 <= 210: self.value_trimmings_1 = 40 - self.value_after_trim_1 elif self.group.trimcut_1 <= 230: self.value_trimmings_1 = self.group.trimcut_1 - 210 + 40 - self.value_after_trim_1 elif self.group.trimcut_1 <= 380: self.value_trimmings_1 = 60 - self.value_after_trim_1 elif self.group.trimcut_1 <= 400: self.value_trimmings_1 = self.group.trimcut_1 - 380 + 60 - self.value_after_trim_1 elif self.group.trimcut_1 <= 450: self.value_trimmings_1 = 80 - self.value_after_trim_1 elif self.group.trimcut_1 <= 490: self.value_trimmings_1 = self.group.trimcut_1 - 450 + 80 - self.value_after_trim_1 else: self.value_trimmings_1 = 120 - self.value_after_trim_1 if self.group.trimcut_2 <= 150: self.value_trimmings_2 = 0 elif self.group.trimcut_2 <= 190: self.value_trimmings_2 = max(self.group.trimcut_2 - 150 - self.value_trimmings_1 - self.value_after_trim_1,0) elif self.group.trimcut_2 <= 210: self.value_trimmings_2 = max( 40 - self.value_trimmings_1 - self.value_after_trim_1,0) elif self.group.trimcut_2 <= 230: self.value_trimmings_2 = max( self.group.trimcut_2 - 210 + 40 - self.value_trimmings_1 - self.value_after_trim_1,0) elif self.group.trimcut_2 <= 380: self.value_trimmings_2 = max( 60 - self.value_trimmings_1 - self.value_after_trim_1,0) elif self.group.trimcut_2 <= 400: self.value_trimmings_2 = max( self.group.trimcut_2 - 380 + 60 - self.value_trimmings_1 - self.value_after_trim_1,0) elif self.group.trimcut_2 <= 450: self.value_trimmings_2 = max( 80 - self.value_trimmings_1 - self.value_after_trim_1,0) elif self.group.trimcut_2 <= 490: self.value_trimmings_2 = max( self.group.trimcut_2 - 450 + 80 - self.value_trimmings_1 - self.value_after_trim_1,0) else: self.value_trimmings_2 = max( 120 - self.value_trimmings_1 - self.value_after_trim_1,0) self.value_trimmings_3 = self.value_trimmings - self.value_trimmings_1 - self.value_trimmings_2 elif self.id_in_group == 2 : if self.group.trimcut_1 <= 80: self.value_trimmings_1 = 0 elif self.group.trimcut_1 <= 90: self.value_trimmings_1 = self.group.trimcut_1 - 80 - self.value_after_trim_1 elif self.group.trimcut_1 <= 100: self.value_trimmings_1 = 10 - self.value_after_trim_1 elif self.group.trimcut_1 <= 110: self.value_trimmings_1 = self.group.trimcut_1 - 100 + 10 - self.value_after_trim_1 elif self.group.trimcut_1 <= 140: self.value_trimmings_1 = 20 - self.value_after_trim_1 elif self.group.trimcut_1 <= 170: self.value_trimmings_1 = self.group.trimcut_1 - 140 + 20 - self.value_after_trim_1 elif self.group.trimcut_1 <= 270: self.value_trimmings_1 = 50 - self.value_after_trim_1 elif self.group.trimcut_1 <= 290: self.value_trimmings_1 = self.group.trimcut_1 - 270 + 50 - self.value_after_trim_1 elif self.group.trimcut_1 <= 300: self.value_trimmings_1 = 70 - self.value_after_trim_1 elif self.group.trimcut_1 <= 320: self.value_trimmings_1 = self.group.trimcut_1 - 300 + 70 - self.value_after_trim_1 elif self.group.trimcut_1 <= 330: self.value_trimmings_1 = 90 - self.value_after_trim_1 elif self.group.trimcut_1 <= 340: self.value_trimmings_1 = self.group.trimcut_1 - 330 + 90 - self.value_after_trim_1 elif self.group.trimcut_1 <= 470: self.value_trimmings_1 = 100 - self.value_after_trim_1 elif self.group.trimcut_1 <= 490: self.value_trimmings_1 = self.group.trimcut_1 - 470 + 100 - self.value_after_trim_1 else: self.value_trimmings_1 = 120 - self.value_after_trim_1 if self.group.trimcut_2 <= 80: self.value_trimmings_2 = 0 elif self.group.trimcut_2 <= 90: self.value_trimmings_2 = max(self.group.trimcut_2 - 80 - self.value_trimmings_1 - self.value_after_trim_1,0) elif self.group.trimcut_2 <= 100: self.value_trimmings_2 = max(10 - self.value_trimmings_1 - self.value_after_trim_1,0) elif self.group.trimcut_2 <= 110: self.value_trimmings_2 = max(self.group.trimcut_2 - 100 + 10 - self.value_trimmings_1 - self.value_after_trim_1,0) elif self.group.trimcut_2 <= 140: self.value_trimmings_2 = max(20 - self.value_trimmings_1 - self.value_after_trim_1,0) elif self.group.trimcut_2 <= 170: self.value_trimmings_2 = max(self.group.trimcut_2 - 140 + 20 - self.value_trimmings_1 - self.value_after_trim_1,0) elif self.group.trimcut_2 <= 270: self.value_trimmings_2 = max(50 - self.value_trimmings_1 - self.value_after_trim_1,0) elif self.group.trimcut_2 <= 290: self.value_trimmings_2 = max(self.group.trimcut_2 - 270 + 50 - self.value_trimmings_1 - self.value_after_trim_1,0) elif self.group.trimcut_2 <= 300: self.value_trimmings_2 = max(70 - self.value_trimmings_1 - self.value_after_trim_1,0) elif self.group.trimcut_2 <= 320: self.value_trimmings_2 = max(self.group.trimcut_2 - 300 + 70 - self.value_trimmings_1 - self.value_after_trim_1,0) elif self.group.trimcut_2 <= 330: self.value_trimmings_2 = max(90 - self.value_trimmings_1 - self.value_after_trim_1,0) elif self.group.trimcut_2 <= 340: self.value_trimmings_2 = max(self.group.trimcut_2 - 330 + 90 - self.value_trimmings_1 - self.value_after_trim_1,0) elif self.group.trimcut_2 <= 470: self.value_trimmings_2 = max(100 - self.value_trimmings_1 - self.value_after_trim_1,0) elif self.group.trimcut_2 <= 490: self.value_trimmings_2 = max(self.group.trimcut_2 - 470 + 100 - self.value_trimmings_1 - self.value_after_trim_1,0) else: self.value_trimmings_2 = max(120 - self.value_trimmings_1 - self.value_after_trim_1,0) self.value_trimmings_3 = self.value_trimmings - self.value_trimmings_1 - self.value_trimmings_2 elif self.id_in_group == 3: if self.group.trimcut_1 <= 70: self.value_trimmings_1 = 0 elif self.group.trimcut_1 <= 110: self.value_trimmings_1 = max(self.group.trimcut_1 - 70 - self.value_after_trim_1,0) elif self.group.trimcut_1 <= 280: self.value_trimmings_1 = max(40 - self.value_after_trim_1,0) elif self.group.trimcut_1 <= 340: self.value_trimmings_1 = max(self.group.trimcut_1 - 280 + 40 - self.value_after_trim_1,0) elif self.group.trimcut_1 <= 470: self.value_trimmings_1 = max(100 - self.value_after_trim_1,0) elif self.group.trimcut_1 <= 490: self.value_trimmings_1 = max(self.group.trimcut_1 - 470 + 100 - self.value_after_trim_1,0) else: self.value_trimmings_1 = max(120 - self.value_after_trim_1,0) if self.group.trimcut_2 <= 70: self.value_trimmings_2 = 0 elif self.group.trimcut_2 <= 110: self.value_trimmings_2 = max(self.group.trimcut_2 - 70 - self.value_trimmings_1 - self.value_after_trim_1,0) elif self.group.trimcut_2 <= 280: self.value_trimmings_2 = max(40 - self.value_trimmings_1 - self.value_after_trim_1,0) elif self.group.trimcut_2 <= 340: self.value_trimmings_2 = max(self.group.trimcut_2 - 280 + 40 - self.value_trimmings_1 - self.value_after_trim_1,0) elif self.group.trimcut_2 <= 470: self.value_trimmings_2 = max(100 - self.value_trimmings_1 - self.value_after_trim_1,0) elif self.group.trimcut_2 <= 490: self.value_trimmings_2 = max(self.group.trimcut_2 - 470 + 100 - self.value_trimmings_1 - self.value_after_trim_1,0) else: self.value_trimmings_2 = max(120 - self.value_trimmings_1 - self.value_after_trim_1,0) self.value_trimmings_3 = self.value_trimmings - self.value_trimmings_1 - self.value_trimmings_2 elif self.group.trim_piece == 3: if self.id_in_group == 1: if self.group.trimcut_1 <= 150: self.value_trimmings_1 = 0 elif self.group.trimcut_1 <= 190: self.value_trimmings_1 = max(self.group.trimcut_1 - 150 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_1 <= 210: self.value_trimmings_1 = max(40 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_1 <= 230: self.value_trimmings_1 = max(self.group.trimcut_1 - 210 + 40 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_1 <= 380: self.value_trimmings_1 = max(60 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_1 <= 400: self.value_trimmings_1 = max(self.group.trimcut_1 - 380 + 60 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_1 <= 450: self.value_trimmings_1 = max(80 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_1 <= 490: self.value_trimmings_1 = max(self.group.trimcut_1 - 450 + 80 - self.value_after_trim_1 - self.value_after_trim_2,0) else: self.value_trimmings_1 = max(120 - self.value_after_trim_1 - self.value_after_trim_2,0) if self.group.trimcut_2 <= 150: self.value_trimmings_2 = 0 elif self.group.trimcut_2 <= 190: self.value_trimmings_2 = max(self.group.trimcut_2 - 150 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2, 0) elif self.group.trimcut_2 <= 210: self.value_trimmings_2 = max(40 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2, 0) elif self.group.trimcut_2 <= 230: self.value_trimmings_2 = max(self.group.trimcut_2 - 210 + 40 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2, 0) elif self.group.trimcut_2 <= 380: self.value_trimmings_2 = max(60 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2, 0) elif self.group.trimcut_2 <= 400: self.value_trimmings_2 = max(self.group.trimcut_2 - 380 + 60 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2, 0) elif self.group.trimcut_2 <= 450: self.value_trimmings_2 = max(80 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2, 0) elif self.group.trimcut_2 <= 490: self.value_trimmings_2 = max(self.group.trimcut_2 - 450 + 80 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2, 0) else: self.value_trimmings_2 = max(120 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2, 0) self.value_trimmings_3 = self.value_trimmings - self.value_trimmings_1 - self.value_trimmings_2 elif self.id_in_group == 2: if self.group.trimcut_1 <= 80: self.value_trimmings_1 = 0 elif self.group.trimcut_1 <= 90: self.value_trimmings_1 = self.group.trimcut_1 - 80 - self.value_after_trim_1 - self.value_after_trim_2 elif self.group.trimcut_1 <= 100: self.value_trimmings_1 = 10 - self.value_after_trim_1 - self.value_after_trim_2 elif self.group.trimcut_1 <= 110: self.value_trimmings_1 = self.group.trimcut_1 - 100 + 10 - self.value_after_trim_1 - self.value_after_trim_2 elif self.group.trimcut_1 <= 140: self.value_trimmings_1 = 20 - self.value_after_trim_1 - self.value_after_trim_2 elif self.group.trimcut_1 <= 170: self.value_trimmings_1 = self.group.trimcut_1 - 140 + 20 - self.value_after_trim_1 - self.value_after_trim_2 elif self.group.trimcut_1 <= 270: self.value_trimmings_1 = 50 - self.value_after_trim_1 - self.value_after_trim_2 elif self.group.trimcut_1 <= 290: self.value_trimmings_1 = self.group.trimcut_1 - 270 + 50 - self.value_after_trim_1 - self.value_after_trim_2 elif self.group.trimcut_1 <= 300: self.value_trimmings_1 = 70 - self.value_after_trim_1 - self.value_after_trim_2 elif self.group.trimcut_1 <= 320: self.value_trimmings_1 = self.group.trimcut_1 - 300 + 70 - self.value_after_trim_1 - self.value_after_trim_2 elif self.group.trimcut_1 <= 330: self.value_trimmings_1 = 90 - self.value_after_trim_1 - self.value_after_trim_2 elif self.group.trimcut_1 <= 340: self.value_trimmings_1 = self.group.trimcut_1 - 330 + 90 - self.value_after_trim_1 - self.value_after_trim_2 elif self.group.trimcut_1 <= 470: self.value_trimmings_1 = 100 - self.value_after_trim_1 - self.value_after_trim_2 elif self.group.trimcut_1 <= 490: self.value_trimmings_1 = self.group.trimcut_1 - 470 + 100 - self.value_after_trim_1 - self.value_after_trim_2 else: self.value_trimmings_1 = 120 - self.value_after_trim_1 - self.value_after_trim_2 if self.group.trimcut_2 <= 80: self.value_trimmings_2 = 0 elif self.group.trimcut_2 <= 90: self.value_trimmings_2 = max(self.group.trimcut_2 - 80 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_2 <= 100: self.value_trimmings_2 = max(10 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_2 <= 110: self.value_trimmings_2 = max(self.group.trimcut_2 - 100 + 10 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_2 <= 140: self.value_trimmings_2 = max(20 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_2 <= 170: self.value_trimmings_2 = max(self.group.trimcut_2 - 140 + 20 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_2 <= 270: self.value_trimmings_2 = max(50 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_2 <= 290: self.value_trimmings_2 = max(self.group.trimcut_2 - 270 + 50 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_2 <= 300: self.value_trimmings_2 = max(70 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_2 <= 320: self.value_trimmings_2 = max(self.group.trimcut_2 - 300 + 70 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_2 <= 330: self.value_trimmings_2 = max(90 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_2 <= 340: self.value_trimmings_2 = max(self.group.trimcut_2 - 330 + 90 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_2 <= 470: self.value_trimmings_2 = max(100 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_2 <= 490: self.value_trimmings_2 = max(self.group.trimcut_2 - 470 + 100 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2,0) else: self.value_trimmings_2 = max(120 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2,0) self.value_trimmings_3 = self.value_trimmings - self.value_trimmings_1 - self.value_trimmings_2 elif self.id_in_group == 3: if self.group.trimcut_1 <= 70: self.value_trimmings_1 = 0 elif self.group.trimcut_1 <= 110: self.value_trimmings_1 = max(self.group.trimcut_1 - 70 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_1 <= 280: self.value_trimmings_1 = max(40 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_1 <= 340: self.value_trimmings_1 = max(self.group.trimcut_1 - 280 + 40 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_1 <= 470: self.value_trimmings_1 = max(100 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_1 <= 490: self.value_trimmings_1 = max(self.group.trimcut_1 - 470 + 100 - self.value_after_trim_1 - self.value_after_trim_2,0) else: self.value_trimmings_1 = max(120 - self.value_after_trim_1 - self.value_after_trim_2,0) if self.group.trimcut_2 <= 70: self.value_trimmings_2 = 0 elif self.group.trimcut_2 <= 110: self.value_trimmings_2 = max(self.group.trimcut_2 - 70 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_2 <= 280: self.value_trimmings_2 = max(40 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_2 <= 340: self.value_trimmings_2 = max(self.group.trimcut_2 - 280 + 40 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_2 <= 470: self.value_trimmings_2 = max(100 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2,0) elif self.group.trimcut_2 <= 490: self.value_trimmings_2 = max(self.group.trimcut_2 - 470 + 100 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2,0) else: self.value_trimmings_2 = max(120 - self.value_trimmings_1 - self.value_after_trim_1 - self.value_after_trim_2,0) self.value_trimmings_3 = self.value_trimmings - self.value_trimmings_1 - self.value_trimmings_2 def get_payoff(self): if self.group.second_divide_needed == False: if self.id_in_group == 1: if self.group.third_choice == 1: self.payoff = c(self.value_after_firstcut_1) elif self.group.third_choice == 2: self.payoff = c(self.value_after_firstcut_2) elif self.group.third_choice == 3: self.payoff = c(self.value_after_firstcut_3) elif self.id_in_group == 2: if self.group.second_choice == 1: self.payoff = c(self.value_after_firstcut_1) elif self.group.second_choice == 2: self.payoff = c(self.value_after_firstcut_2) elif self.group.second_choice == 3: self.payoff = c(self.value_after_firstcut_3) elif self.id_in_group == 3: if self.group.first_choice == 1: self.payoff = c(self.value_after_firstcut_1) elif self.group.first_choice == 2: self.payoff = c(self.value_after_firstcut_2) elif self.group.first_choice == 3: self.payoff = c(self.value_after_firstcut_3) elif self.group.second_divide_needed == True: if self.id_in_group == 1: if self.group.third_choice == 1: if self.group.trimmings_second_choose == 1: self.payoff = c(self.value_after_trim_1 + self.value_trimmings_1) elif self.group.trimmings_second_choose == 2: self.payoff = c(self.value_after_trim_1 + self.value_trimmings_2) elif self.group.trimmings_second_choose == 3: self.payoff = c(self.value_after_trim_1 + self.value_trimmings_3) elif self.group.third_choice == 2: if self.group.trimmings_second_choose == 1: self.payoff = c(self.value_after_trim_2 + self.value_trimmings_1) elif self.group.trimmings_second_choose == 2: self.payoff = c(self.value_after_trim_2 + self.value_trimmings_2) elif self.group.trimmings_second_choose == 3: self.payoff = c(self.value_after_trim_2 + self.value_trimmings_3) elif self.group.third_choice == 3: if self.group.trimmings_second_choose == 1: self.payoff = c(self.value_after_trim_3 + self.value_trimmings_1) elif self.group.trimmings_second_choose == 2: self.payoff = c(self.value_after_trim_3 + self.value_trimmings_2) elif self.group.trimmings_second_choose == 3: self.payoff = c(self.value_after_trim_3 + self.value_trimmings_3) elif self.id_in_group == 2: if self.group.first_choice != self.group.trim_piece: if self.group.second_choice == 1: if self.group.trimmings_first_choose == 1: self.payoff = c(self.value_after_trim_1 + self.value_trimmings_1) elif self.group.trimmings_first_choose == 2: self.payoff = c(self.value_after_trim_1 + self.value_trimmings_2) elif self.group.trimmings_first_choose == 3: self.payoff = c(self.value_after_trim_1 + self.value_trimmings_3) elif self.group.second_choice == 2: if self.group.trimmings_first_choose == 1: self.payoff = c(self.value_after_trim_2 + self.value_trimmings_1) elif self.group.trimmings_first_choose == 2: self.payoff = c(self.value_after_trim_2 + self.value_trimmings_2) elif self.group.trimmings_first_choose == 3: self.payoff = c(self.value_after_trim_2 + self.value_trimmings_3) elif self.group.second_choice == 3: if self.group.trimmings_first_choose == 1: self.payoff = c(self.value_after_trim_3 + self.value_trimmings_1) elif self.group.trimmings_first_choose == 2: self.payoff = c(self.value_after_trim_3 + self.value_trimmings_2) elif self.group.trimmings_first_choose == 3: self.payoff = c(self.value_after_trim_3 + self.value_trimmings_3) elif self.group.first_choice == self.group.trim_piece: if self.group.second_choice == 1: if self.group.trimmings_third_choose == 1: self.payoff = c(self.value_after_trim_1 + self.value_trimmings_1) elif self.group.trimmings_third_choose == 2: self.payoff = c(self.value_after_trim_1 + self.value_trimmings_2) elif self.group.trimmings_third_choose == 3: self.payoff = c(self.value_after_trim_1 + self.value_trimmings_3) elif self.group.second_choice == 2: if self.group.trimmings_third_choose == 1: self.payoff = c(self.value_after_trim_2 + self.value_trimmings_1) elif self.group.trimmings_third_choose == 2: self.payoff = c(self.value_after_trim_2 + self.value_trimmings_2) elif self.group.trimmings_third_choose == 3: self.payoff = c(self.value_after_trim_2 + self.value_trimmings_3) elif self.group.second_choice == 3: if self.group.trimmings_third_choose == 1: self.payoff = c(self.value_after_trim_3 + self.value_trimmings_1) elif self.group.trimmings_third_choose == 2: self.payoff = c(self.value_after_trim_3 + self.value_trimmings_2) elif self.group.trimmings_third_choose == 3: self.payoff = c(self.value_after_trim_3 + self.value_trimmings_3) elif self.id_in_group == 3: if self.group.first_choice != self.group.trim_piece: if self.group.first_choice == 1: if self.group.trimmings_third_choose == 1: self.payoff = c(self.value_after_trim_1 + self.value_trimmings_1) elif self.group.trimmings_third_choose == 2: self.payoff = c(self.value_after_trim_1 + self.value_trimmings_2) elif self.group.trimmings_third_choose == 3: self.payoff = c(self.value_after_trim_1 + self.value_trimmings_3) elif self.group.first_choice == 2: if self.group.trimmings_third_choose == 1: self.payoff = c(self.value_after_trim_2 + self.value_trimmings_1) elif self.group.trimmings_third_choose == 2: self.payoff = c(self.value_after_trim_2 + self.value_trimmings_2) elif self.group.trimmings_third_choose == 3: self.payoff = c(self.value_after_trim_2 + self.value_trimmings_3) elif self.group.first_choice == 3: if self.group.trimmings_third_choose == 1: self.payoff = c(self.value_after_trim_3 + self.value_trimmings_1) elif self.group.trimmings_third_choose == 2: self.payoff = c(self.value_after_trim_3 + self.value_trimmings_2) elif self.group.trimmings_third_choose == 3: self.payoff = c(self.value_after_trim_3 + self.value_trimmings_3) elif self.group.first_choice == self.group.trim_piece: if self.group.first_choice == 1: if self.group.trimmings_first_choose == 1: self.payoff = c(self.value_after_trim_1 + self.value_trimmings_1) elif self.group.trimmings_first_choose == 2: self.payoff = c(self.value_after_trim_1 + self.value_trimmings_2) elif self.group.trimmings_first_choose == 3: self.payoff = c(self.value_after_trim_1 + self.value_trimmings_3) elif self.group.first_choice == 2: if self.group.trimmings_first_choose == 1: self.payoff = c(self.value_after_trim_2 + self.value_trimmings_1) elif self.group.trimmings_first_choose == 2: self.payoff = c(self.value_after_trim_2 + self.value_trimmings_2) elif self.group.trimmings_first_choose == 3: self.payoff = c(self.value_after_trim_2 + self.value_trimmings_3) elif self.group.first_choice == 3: if self.group.trimmings_first_choose == 1: self.payoff = c(self.value_after_trim_3 + self.value_trimmings_1) elif self.group.trimmings_first_choose == 2: self.payoff = c(self.value_after_trim_3 + self.value_trimmings_2) elif self.group.trimmings_first_choose == 3: self.payoff = c(self.value_after_trim_3 + self.value_trimmings_3) def set_opponent_value(self): if self.group.second_divide_needed == True: if self.id_in_group == 1: if self.group.first_choice != self.group.trim_piece: if self.group.second_choice == 1: if self.group.trimmings_first_choose == 1: self.opponent_1_value = c(self.value_after_trim_1 + self.value_trimmings_1) elif self.group.trimmings_first_choose == 2: self.opponent_1_value = c(self.value_after_trim_1 + self.value_trimmings_2) elif self.group.trimmings_first_choose == 3: self.opponent_1_value = c(self.value_after_trim_1 + self.value_trimmings_3) elif self.group.second_choice == 2: if self.group.trimmings_first_choose == 1: self.opponent_1_value = c(self.value_after_trim_2 + self.value_trimmings_1) elif self.group.trimmings_first_choose == 2: self.opponent_1_value = c(self.value_after_trim_2 + self.value_trimmings_2) elif self.group.trimmings_first_choose == 3: self.opponent_1_value = c(self.value_after_trim_2 + self.value_trimmings_3) elif self.group.second_choice == 3: if self.group.trimmings_first_choose == 1: self.opponent_1_value = c(self.value_after_trim_3 + self.value_trimmings_1) elif self.group.trimmings_first_choose == 2: self.opponent_1_value = c(self.value_after_trim_3 + self.value_trimmings_2) elif self.group.trimmings_first_choose == 3: self.opponent_1_value = c(self.value_after_trim_3 + self.value_trimmings_3) elif self.group.first_choice == self.group.trim_piece: if self.group.second_choice == 1: if self.group.trimmings_third_choose == 1: self.opponent_1_value = c(self.value_after_trim_1 + self.value_trimmings_1) elif self.group.trimmings_third_choose == 2: self.opponent_1_value = c(self.value_after_trim_1 + self.value_trimmings_2) elif self.group.trimmings_third_choose == 3: self.opponent_1_value = c(self.value_after_trim_1 + self.value_trimmings_3) elif self.group.second_choice == 2: if self.group.trimmings_third_choose == 1: self.opponent_1_value = c(self.value_after_trim_2 + self.value_trimmings_1) elif self.group.trimmings_third_choose == 2: self.opponent_1_value = c(self.value_after_trim_2 + self.value_trimmings_2) elif self.group.trimmings_third_choose == 3: self.opponent_1_value = c(self.value_after_trim_2 + self.value_trimmings_3) elif self.group.second_choice == 3: if self.group.trimmings_third_choose == 1: self.opponent_1_value = c(self.value_after_trim_3 + self.value_trimmings_1) elif self.group.trimmings_third_choose == 2: self.opponent_1_value = c(self.value_after_trim_3 + self.value_trimmings_2) elif self.group.trimmings_third_choose == 3: self.opponent_1_value = c(self.value_after_trim_3 + self.value_trimmings_3) elif self.id_in_group == 2: if self.group.third_choice == 1: if self.group.trimmings_second_choose == 1: self.opponent_1_value = c(self.value_after_trim_1 + self.value_trimmings_1) elif self.group.trimmings_second_choose == 2: self.opponent_1_value = c(self.value_after_trim_1 + self.value_trimmings_2) elif self.group.trimmings_second_choose == 3: self.opponent_1_value = c(self.value_after_trim_1 + self.value_trimmings_3) elif self.group.third_choice == 2: if self.group.trimmings_second_choose == 1: self.opponent_1_value = c(self.value_after_trim_2 + self.value_trimmings_1) elif self.group.trimmings_second_choose == 2: self.opponent_1_value = c(self.value_after_trim_2 + self.value_trimmings_2) elif self.group.trimmings_second_choose == 3: self.opponent_1_value = c(self.value_after_trim_2 + self.value_trimmings_3) elif self.group.third_choice == 3: if self.group.trimmings_second_choose == 1: self.opponent_1_value = c(self.value_after_trim_3 + self.value_trimmings_1) elif self.group.trimmings_second_choose == 2: self.opponent_1_value = c(self.value_after_trim_3 + self.value_trimmings_2) elif self.group.trimmings_second_choose == 3: self.opponent_1_value = c(self.value_after_trim_3 + self.value_trimmings_3) elif self.id_in_group == 3: if self.group.third_choice == 1: if self.group.trimmings_second_choose == 1: self.opponent_1_value = c(self.value_after_trim_1 + self.value_trimmings_1) elif self.group.trimmings_second_choose == 2: self.opponent_1_value = c(self.value_after_trim_1 + self.value_trimmings_2) elif self.group.trimmings_second_choose == 3: self.opponent_1_value = c(self.value_after_trim_1 + self.value_trimmings_3) elif self.group.third_choice == 2: if self.group.trimmings_second_choose == 1: self.opponent_1_value = c(self.value_after_trim_2 + self.value_trimmings_1) elif self.group.trimmings_second_choose == 2: self.opponent_1_value = c(self.value_after_trim_2 + self.value_trimmings_2) elif self.group.trimmings_second_choose == 3: self.opponent_1_value = c(self.value_after_trim_2 + self.value_trimmings_3) elif self.group.third_choice == 3: if self.group.trimmings_second_choose == 1: self.opponent_1_value = c(self.value_after_trim_3 + self.value_trimmings_1) elif self.group.trimmings_second_choose == 2: self.opponent_1_value = c(self.value_after_trim_3 + self.value_trimmings_2) elif self.group.trimmings_second_choose == 3: self.opponent_1_value = c(self.value_after_trim_3 + self.value_trimmings_3) else: if self.id_in_group == 1: if self.group.second_choice == 1: self.opponent_1_value = c(self.value_after_firstcut_1) elif self.group.second_choice == 2: self.opponent_1_value = c(self.value_after_firstcut_2) elif self.group.second_choice == 3: self.opponent_1_value = c(self.value_after_firstcut_3) elif self.id_in_group == 2: if self.group.third_choice == 1: self.opponent_1_value = c(self.value_after_firstcut_1) elif self.group.third_choice == 2: self.opponent_1_value = c(self.value_after_firstcut_2) elif self.group.third_choice == 3: self.opponent_1_value = c(self.value_after_firstcut_3) elif self.id_in_group == 3: if self.group.third_choice == 1: self.opponent_1_value = c(self.value_after_firstcut_1) elif self.group.third_choice == 2: self.opponent_1_value = c(self.value_after_firstcut_2) elif self.group.third_choice == 3: self.opponent_1_value = c(self.value_after_firstcut_3) self.opponent_2_value = 120 - self.payoff - self.opponent_1_value def set_envy(self): if self.payoff >= self.opponent_1_value and self.payoff >= self.opponent_2_value: self.envy = False else: self.envy = True def score_calculation(self): self.payoff_help = self.in_round(1).payoff + self.in_round(2).payoff + self.in_round( 3).payoff + self.in_round(4).payoff + self.in_round(5).payoff + self.in_round(6).payoff + self.in_round( 7).payoff