static bool WouldCollide(const Game_Character& self, const Game_Character& other, bool self_conflict) { if (self.GetThrough() || other.GetThrough()) { return false; } if (self.IsFlying() || other.IsFlying()) { return false; } if (!self.IsActive() || !other.IsActive()) { return false; } if (self.GetType() == Game_Character::Event && other.GetType() == Game_Character::Event && (self.IsOverlapForbidden() || other.IsOverlapForbidden())) { return true; } if (other.GetLayer() == RPG::EventPage::Layers_same && self_conflict) { return true; } if (self.GetLayer() == other.GetLayer()) { return true; } return false; }