def update(self):
     self.cx, self.cy = self.x - (self.bg.window_left * 32) - 16, self.y - (
         self.bg.window_bottom * 32)
     self.tileX, self.tileY = (self.x - 16) // 32, (self.y - 16) // 32
     if self.turn == 1:
         self.bt.run()
     # print("monster : ", (self.y - 16) // 32, (self.x - 16) // 32, map.MapLi[self.tileY][self.tileX])
     if self.state == 0:
         self.timer = (self.timer + 1) % 1000
         if self.timer > 800:
             self.idl = 1
         else:
             self.idl = 0
     if self.state == 1:
         self.deadTimer += 1
         if self.deadTimer == 96:
             warrior = main_state.get_warrior()
             game_world.remove_object(self)
             warrior.gameWon = 1
             warrior.score += 50
             game_framework.push_state(game_over)
     if self.state == 2:
         self.atkTimer = (self.atkTimer + FRAMES_PER_ACTION *
                          ACTION_PER_TIME * game_framework.frame_time)
         if self.atkTimer < 7:  # 조정해.
             if self.atkTimer < 3:
                 self.atkPose = 1
             elif self.atkTimer < 5:
                 self.atkPose = 2
             else:
                 self.atkPose = 3
         else:
             self.atkTimer = 0
             self.atkPose = 0
             self.state = 0
 def is_nearing(self):
     warrior = main_state.get_warrior()
     distance = (warrior.tileX - self.tileX)**2 + (warrior.tileY -
                                                   self.tileY)**2
     if distance == 1 and self.moving == 0:
         return BehaviorTree.SUCCESS
     else:
         return BehaviorTree.FAIL
 def find_warrior(self):
     disrupt = 0
     warrior = main_state.get_warrior()
     distance = (warrior.tileX - self.tileX)**2 + (warrior.tileY -
                                                   self.tileY)**2
     if distance < 16:
         if warrior.tileX < self.tileX:
             self.dir = 0
         elif warrior.tileX > self.tileX:
             self.dir = 1
         if self.moving == 0:
             if ((warrior.tileX - self.tileX)**
                     2) > ((warrior.tileY - self.tileY)**2):
                 if warrior.tileX < self.tileX and self.bg.mapli[
                         self.tileY][self.tileX - 1] == 2:
                     for game_object in game_world.all_objects():
                         if game_object.type == 'mon':
                             check_monster_tileX, check_monster_tileY = game_object.return_loc(
                             )
                             if self.tileX - 1 == check_monster_tileX and self.tileY == check_monster_tileY:
                                 disrupt = 1
                     if disrupt == 0:
                         self.moveDir = 1  # -x
                         self.cnt = 0
                 elif warrior.tileX > self.tileX and self.bg.mapli[
                         self.tileY][self.tileX + 1] == 2:
                     for game_object in game_world.all_objects():
                         if game_object.type == 'mon':
                             check_monster_tileX, check_monster_tileY = game_object.return_loc(
                             )
                             if self.tileX + 1 == check_monster_tileX and self.tileY == check_monster_tileY:
                                 disrupt = 1
                     if disrupt == 0:
                         self.moveDir = 0  # +x
                         self.cnt = 0
             elif ((warrior.tileX -
                    self.tileX)**2) == ((warrior.tileY -
                                         self.tileY)**2):  # =
                 if warrior.tileX < self.tileX:
                     if self.bg.mapli[self.tileY][self.tileX - 1] == 2:
                         for game_object in game_world.all_objects():
                             if game_object.type == 'mon':
                                 check_monster_tileX, check_monster_tileY = game_object.return_loc(
                                 )
                                 if self.tileX - 1 == check_monster_tileX and self.tileY == check_monster_tileY:
                                     disrupt = 1
                         if disrupt == 0:
                             self.moveDir = 1  # -x
                             self.cnt = 0
                     else:
                         disrupt = 1
                 elif warrior.tileX > self.tileX:
                     if self.bg.mapli[self.tileY][self.tileX + 1] == 2:
                         for game_object in game_world.all_objects():
                             if game_object.type == 'mon':
                                 check_monster_tileX, check_monster_tileY = game_object.return_loc(
                                 )
                                 if self.tileX + 1 == check_monster_tileX and self.tileY == check_monster_tileY:
                                     disrupt = 1
                         if disrupt == 0:
                             self.moveDir = 0  # +x
                             self.cnt = 0
                     else:
                         disrupt = 1
                 if disrupt == 1:
                     disrupt = 0
                     if warrior.tileY < self.tileY and self.bg.mapli[
                             self.tileY - 1][self.tileX] == 2:
                         for game_object in game_world.all_objects():
                             if game_object.type == 'mon':
                                 check_monster_tileX, check_monster_tileY = game_object.return_loc(
                                 )
                                 if self.tileX == check_monster_tileX and self.tileY - 1 == check_monster_tileY:
                                     disrupt = 1
                         if disrupt == 0:
                             self.moveDir = 3  # -y
                             self.cnt = 0
                     elif warrior.tileY > self.tileY and self.bg.mapli[
                             self.tileY + 1][self.tileX] == 2:
                         for game_object in game_world.all_objects():
                             if game_object.type == 'mon':
                                 check_monster_tileX, check_monster_tileY = game_object.return_loc(
                                 )
                                 if self.tileX == check_monster_tileX and self.tileY + 1 == check_monster_tileY:
                                     disrupt = 1
                         if disrupt == 0:
                             self.moveDir = 2  # +y
                             self.cnt = 0
             else:
                 if warrior.tileY < self.tileY and self.bg.mapli[
                         self.tileY - 1][self.tileX] == 2:
                     for game_object in game_world.all_objects():
                         if game_object.type == 'mon':
                             check_monster_tileX, check_monster_tileY = game_object.return_loc(
                             )
                             if self.tileX == check_monster_tileX and self.tileY - 1 == check_monster_tileY:
                                 disrupt = 1
                     if disrupt == 0:
                         self.moveDir = 3  # -y
                         self.cnt = 0
                 elif warrior.tileY > self.tileY and self.bg.mapli[
                         self.tileY + 1][self.tileX] == 2:
                     for game_object in game_world.all_objects():
                         if game_object.type == 'mon':
                             check_monster_tileX, check_monster_tileY = game_object.return_loc(
                             )
                             if self.tileX == check_monster_tileX and self.tileY + 1 == check_monster_tileY:
                                 disrupt = 1
                     if disrupt == 0:
                         self.moveDir = 2  # +y
                         self.cnt = 0
         return BehaviorTree.SUCCESS
     else:
         return BehaviorTree.FAIL
     pass
 def attack_warrior(self):
     warrior = main_state.get_warrior()
     warrior.get_damage(self.atkDamage)
     self.state = 2
     self.turn = 0
     return BehaviorTree.SUCCESS