ALTER TABLE
`players`
ADD
COLUMN IF NOT EXISTS `current_motel_room` VARCHAR(90) NULL DEFAULT NULL;
CREATE TABLE IF NOT EXISTS `qs_motels` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`label` VARCHAR(255) NOT NULL,
`owner_identifier` VARCHAR(50) DEFAULT NULL,
`owner_name` VARCHAR(255) DEFAULT NULL,
`zone_points` LONGTEXT DEFAULT NULL,
`blip_data` LONGTEXT DEFAULT NULL,
`reception` LONGTEXT DEFAULT NULL,
`room_management` LONGTEXT DEFAULT NULL,
`rooms` LONGTEXT DEFAULT NULL,
`purchasable` TINYINT(1) DEFAULT 0,
`auto_system` TINYINT(1) DEFAULT 0,
`sale_price` INT(11) DEFAULT 0,
`sale_multiplier` DECIMAL(3,2) DEFAULT 1.00,
`cost_per_minute` INT(11) DEFAULT 1,
`pricing_unit` VARCHAR(10) NOT NULL DEFAULT 'day',
`key_cost` INT(11) DEFAULT 100,
`room_count` INT(11) DEFAULT 1,
`motel_type` VARCHAR(50) DEFAULT 'mlo',
`shell_data` LONGTEXT DEFAULT NULL,
`ipl_data` LONGTEXT DEFAULT NULL,
`shared_stashes` LONGTEXT DEFAULT NULL,
`shared_wardrobes` LONGTEXT DEFAULT NULL,
`entry_coords` LONGTEXT DEFAULT NULL,
`room_type_overrides` LONGTEXT DEFAULT NULL,
`upgrades` LONGTEXT DEFAULT NULL,
`balance` INT(11) DEFAULT 0,
`creator` VARCHAR(50) DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `idx_owner_identifier` (`owner_identifier`),
INDEX `idx_creator` (`creator`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
ALTER TABLE `qs_motels` ADD COLUMN IF NOT EXISTS `pricing_unit` VARCHAR(10) NOT NULL DEFAULT 'day';
CREATE TABLE IF NOT EXISTS `qs_motel_workers` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`motel_id` INT(11) NOT NULL,
`identifier` VARCHAR(50) NOT NULL,
`name` VARCHAR(255) NOT NULL,
`salary` INT(11) DEFAULT 0,
`is_owner` TINYINT(1) DEFAULT 0,
`permissions` LONGTEXT DEFAULT NULL,
`joined_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `motel_worker` (`motel_id`, `identifier`),
INDEX `idx_motel_id` (`motel_id`),
INDEX `idx_identifier` (`identifier`),
FOREIGN KEY (`motel_id`) REFERENCES `qs_motels`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_motel_rentals` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`motel_id` INT(11) NOT NULL,
`room_id` INT(11) NOT NULL,
`tenant_identifier` VARCHAR(50) NOT NULL,
`tenant_name` VARCHAR(255) NOT NULL,
`unique_key` VARCHAR(100) DEFAULT NULL,
`rent_debt` INT(11) DEFAULT 0,
`is_suspended` TINYINT(1) DEFAULT 0,
`warning_level` INT(11) DEFAULT 0,
`shared_keys` LONGTEXT DEFAULT NULL,
`start_time` BIGINT DEFAULT NULL,
`end_time` BIGINT DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `motel_room` (`motel_id`, `room_id`),
INDEX `idx_motel_id` (`motel_id`),
INDEX `idx_tenant_identifier` (`tenant_identifier`),
FOREIGN KEY (`motel_id`) REFERENCES `qs_motels`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_motel_stashes` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`motel_id` INT(11) NOT NULL,
`room_id` INT(11) NOT NULL,
`items` LONGTEXT DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `motel_room_stash` (`motel_id`, `room_id`),
INDEX `idx_motel_id` (`motel_id`),
FOREIGN KEY (`motel_id`) REFERENCES `qs_motels`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_motel_bills` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`motel_id` INT(11) NOT NULL,
`identifier` VARCHAR(50) NOT NULL,
`amount` INT(11) NOT NULL,
`description` VARCHAR(255) DEFAULT NULL,
`is_paid` TINYINT(1) DEFAULT 0,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`paid_at` TIMESTAMP NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_motel_id` (`motel_id`),
INDEX `idx_identifier` (`identifier`),
INDEX `idx_is_paid` (`is_paid`),
INDEX `idx_identifier_paid` (`identifier`, `is_paid`),
FOREIGN KEY (`motel_id`) REFERENCES `qs_motels`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_motel_transactions` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`motel_id` INT(11) NOT NULL,
`transaction_id` VARCHAR(50) DEFAULT NULL,
`type` ENUM('deposit', 'withdraw', 'rent_payment', 'salary', 'expense') NOT NULL,
`amount` BIGINT NOT NULL,
`original_amount` BIGINT DEFAULT 0,
`description` VARCHAR(255) DEFAULT NULL,
`identifier` VARCHAR(50) DEFAULT NULL,
`name` VARCHAR(255) DEFAULT NULL,
`reference` VARCHAR(100) DEFAULT NULL,
`status` ENUM('completed', 'pending', 'failed', 'cancelled') DEFAULT 'completed',
`metadata` LONGTEXT DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `idx_motel_id` (`motel_id`),
INDEX `idx_type` (`type`),
INDEX `idx_status` (`status`),
INDEX `idx_transaction_id` (`transaction_id`),
INDEX `idx_motel_date` (`motel_id`, `created_at`),
FOREIGN KEY (`motel_id`) REFERENCES `qs_motels`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_motel_key_shares` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`motel_id` INT(11) NOT NULL,
`room_id` INT(11) NOT NULL,
`owner_identifier` VARCHAR(50) NOT NULL,
`guest_identifier` VARCHAR(50) NOT NULL,
`guest_name` VARCHAR(255) NOT NULL,
`permissions` JSON NOT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `unique_share` (`motel_id`, `room_id`, `guest_identifier`),
INDEX `idx_motel_id` (`motel_id`),
INDEX `idx_guest_identifier` (`guest_identifier`),
INDEX `idx_guest_motel_room` (`guest_identifier`, `motel_id`, `room_id`),
FOREIGN KEY (`motel_id`) REFERENCES `qs_motels`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_motel_notifications` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`motel_id` INT(11) NOT NULL,
`room_id` INT(11) NOT NULL,
`recipient_identifier` VARCHAR(50) NOT NULL,
`type` ENUM('warning', 'request_response') NOT NULL,
`level` INT(11) DEFAULT NULL,
`status` VARCHAR(20) DEFAULT NULL,
`message` TEXT NOT NULL,
`is_read` TINYINT(1) DEFAULT 0,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `idx_recipient` (`recipient_identifier`),
INDEX `idx_motel_room` (`motel_id`, `room_id`),
INDEX `idx_recipient_motel_room` (`recipient_identifier`, `motel_id`, `room_id`),
FOREIGN KEY (`motel_id`) REFERENCES `qs_motels`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_motel_requests` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`motel_id` INT(11) NOT NULL,
`room_id` INT(11) NOT NULL,
`requester_identifier` VARCHAR(50) NOT NULL,
`requester_name` VARCHAR(255) NOT NULL,
`message` TEXT NOT NULL,
`status` ENUM('pending', 'accepted', 'rejected') DEFAULT 'pending',
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`resolved_at` TIMESTAMP NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_motel_id` (`motel_id`),
INDEX `idx_status` (`status`),
INDEX `idx_motel_status` (`motel_id`, `status`),
FOREIGN KEY (`motel_id`) REFERENCES `qs_motels`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT IGNORE INTO `qs_motels` (`label`, `owner_identifier`, `owner_name`, `zone_points`, `blip_data`, `reception`, `room_management`, `rooms`, `purchasable`, `auto_system`, `sale_price`, `sale_multiplier`, `cost_per_minute`, `key_cost`, `room_count`, `motel_type`, `shell_data`, `ipl_data`, `shared_stashes`, `shared_wardrobes`, `entry_coords`, `creator`, `created_at`, `updated_at`, `balance`, `room_type_overrides`, `upgrades`) VALUES
('Richman Motel', NULL, NULL, '{"points":[{"z":66,"y":221.81651306152345,"x":-1395.9300537109376},{"z":66,"y":252.6926727294922,"x":-1224.8707275390626},{"z":66,"y":385.9217224121094,"x":-1259.2569580078126},{"z":66,"y":334.61407470703127,"x":-1395.19287109375}],"thickness":117.66351656755433}', '{"label":"Richman Motel","sprite":475,"scale":0.8,"coords":{"z":63.9767837524414,"y":306.0583801269531,"x":-1279.818359375},"color":17,"enable":true}', '{"z":65.90283966064453,"y":312.4852600097656,"x":-1271.80908203125,"w":0}', NULL, '[]', 0, 0, 0, 1.00, 1, 100, 200, 'ipl', NULL, '{"tier":1,"themeId":"seductive","exit":{"z":217.63999938964845,"y":315.80999755859377,"x":-787.4400024414063}}', '[{"locked":true,"coords":{"z":216.80580139160157,"y":320.7487487792969,"x":-789.3121948242188,"w":0}}]', '[{"locked":true,"coords":{"z":220.2403259277344,"y":328.2768859863281,"x":-796.0173950195313,"w":0}}]', '{"z":65.5118179321289,"y":315.591064453125,"x":-1274.0269775390626,"w":166}', 'QUASAR', '2026-02-22 22:28:08', '2026-02-22 22:28:08', NULL, NULL, NULL);
ALTER TABLE
`players`
ADD
COLUMN IF NOT EXISTS `current_motel_room` VARCHAR(90) NULL DEFAULT NULL;
CREATE TABLE IF NOT EXISTS `qs_motels` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`label` VARCHAR(255) NOT NULL,
`owner_identifier` VARCHAR(50) DEFAULT NULL,
`owner_name` VARCHAR(255) DEFAULT NULL,
`zone_points` LONGTEXT DEFAULT NULL,
`blip_data` LONGTEXT DEFAULT NULL,
`reception` LONGTEXT DEFAULT NULL,
`room_management` LONGTEXT DEFAULT NULL,
`rooms` LONGTEXT DEFAULT NULL,
`purchasable` TINYINT(1) DEFAULT 0,
`auto_system` TINYINT(1) DEFAULT 0,
`sale_price` INT(11) DEFAULT 0,
`sale_multiplier` DECIMAL(3,2) DEFAULT 1.00,
`cost_per_minute` INT(11) DEFAULT 1,
`pricing_unit` VARCHAR(10) NOT NULL DEFAULT 'day',
`key_cost` INT(11) DEFAULT 100,
`room_count` INT(11) DEFAULT 1,
`motel_type` VARCHAR(50) DEFAULT 'mlo',
`shell_data` LONGTEXT DEFAULT NULL,
`ipl_data` LONGTEXT DEFAULT NULL,
`shared_stashes` LONGTEXT DEFAULT NULL,
`shared_wardrobes` LONGTEXT DEFAULT NULL,
`entry_coords` LONGTEXT DEFAULT NULL,
`room_type_overrides` LONGTEXT DEFAULT NULL,
`upgrades` LONGTEXT DEFAULT NULL,
`balance` INT(11) DEFAULT 0,
`creator` VARCHAR(50) DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `idx_owner_identifier` (`owner_identifier`),
INDEX `idx_creator` (`creator`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
ALTER TABLE `qs_motels` ADD COLUMN IF NOT EXISTS `pricing_unit` VARCHAR(10) NOT NULL DEFAULT 'day';
CREATE TABLE IF NOT EXISTS `qs_motel_workers` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`motel_id` INT(11) NOT NULL,
`identifier` VARCHAR(50) NOT NULL,
`name` VARCHAR(255) NOT NULL,
`salary` INT(11) DEFAULT 0,
`is_owner` TINYINT(1) DEFAULT 0,
`permissions` LONGTEXT DEFAULT NULL,
`joined_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `motel_worker` (`motel_id`, `identifier`),
INDEX `idx_motel_id` (`motel_id`),
INDEX `idx_identifier` (`identifier`),
FOREIGN KEY (`motel_id`) REFERENCES `qs_motels`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_motel_rentals` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`motel_id` INT(11) NOT NULL,
`room_id` INT(11) NOT NULL,
`tenant_identifier` VARCHAR(50) NOT NULL,
`tenant_name` VARCHAR(255) NOT NULL,
`unique_key` VARCHAR(100) DEFAULT NULL,
`rent_debt` INT(11) DEFAULT 0,
`is_suspended` TINYINT(1) DEFAULT 0,
`warning_level` INT(11) DEFAULT 0,
`shared_keys` LONGTEXT DEFAULT NULL,
`start_time` BIGINT DEFAULT NULL,
`end_time` BIGINT DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `motel_room` (`motel_id`, `room_id`),
INDEX `idx_motel_id` (`motel_id`),
INDEX `idx_tenant_identifier` (`tenant_identifier`),
FOREIGN KEY (`motel_id`) REFERENCES `qs_motels`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_motel_stashes` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`motel_id` INT(11) NOT NULL,
`room_id` INT(11) NOT NULL,
`items` LONGTEXT DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `motel_room_stash` (`motel_id`, `room_id`),
INDEX `idx_motel_id` (`motel_id`),
FOREIGN KEY (`motel_id`) REFERENCES `qs_motels`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_motel_bills` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`motel_id` INT(11) NOT NULL,
`identifier` VARCHAR(50) NOT NULL,
`amount` INT(11) NOT NULL,
`description` VARCHAR(255) DEFAULT NULL,
`is_paid` TINYINT(1) DEFAULT 0,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`paid_at` TIMESTAMP NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_motel_id` (`motel_id`),
INDEX `idx_identifier` (`identifier`),
INDEX `idx_is_paid` (`is_paid`),
INDEX `idx_identifier_paid` (`identifier`, `is_paid`),
FOREIGN KEY (`motel_id`) REFERENCES `qs_motels`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_motel_transactions` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`motel_id` INT(11) NOT NULL,
`transaction_id` VARCHAR(50) DEFAULT NULL,
`type` ENUM('deposit', 'withdraw', 'rent_payment', 'salary', 'expense') NOT NULL,
`amount` BIGINT NOT NULL,
`original_amount` BIGINT DEFAULT 0,
`description` VARCHAR(255) DEFAULT NULL,
`identifier` VARCHAR(50) DEFAULT NULL,
`name` VARCHAR(255) DEFAULT NULL,
`reference` VARCHAR(100) DEFAULT NULL,
`status` ENUM('completed', 'pending', 'failed', 'cancelled') DEFAULT 'completed',
`metadata` LONGTEXT DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `idx_motel_id` (`motel_id`),
INDEX `idx_type` (`type`),
INDEX `idx_status` (`status`),
INDEX `idx_transaction_id` (`transaction_id`),
INDEX `idx_motel_date` (`motel_id`, `created_at`),
FOREIGN KEY (`motel_id`) REFERENCES `qs_motels`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_motel_key_shares` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`motel_id` INT(11) NOT NULL,
`room_id` INT(11) NOT NULL,
`owner_identifier` VARCHAR(50) NOT NULL,
`guest_identifier` VARCHAR(50) NOT NULL,
`guest_name` VARCHAR(255) NOT NULL,
`permissions` JSON NOT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `unique_share` (`motel_id`, `room_id`, `guest_identifier`),
INDEX `idx_motel_id` (`motel_id`),
INDEX `idx_guest_identifier` (`guest_identifier`),
INDEX `idx_guest_motel_room` (`guest_identifier`, `motel_id`, `room_id`),
FOREIGN KEY (`motel_id`) REFERENCES `qs_motels`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_motel_notifications` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`motel_id` INT(11) NOT NULL,
`room_id` INT(11) NOT NULL,
`recipient_identifier` VARCHAR(50) NOT NULL,
`type` ENUM('warning', 'request_response') NOT NULL,
`level` INT(11) DEFAULT NULL,
`status` VARCHAR(20) DEFAULT NULL,
`message` TEXT NOT NULL,
`is_read` TINYINT(1) DEFAULT 0,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `idx_recipient` (`recipient_identifier`),
INDEX `idx_motel_room` (`motel_id`, `room_id`),
INDEX `idx_recipient_motel_room` (`recipient_identifier`, `motel_id`, `room_id`),
FOREIGN KEY (`motel_id`) REFERENCES `qs_motels`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `qs_motel_requests` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`motel_id` INT(11) NOT NULL,
`room_id` INT(11) NOT NULL,
`requester_identifier` VARCHAR(50) NOT NULL,
`requester_name` VARCHAR(255) NOT NULL,
`message` TEXT NOT NULL,
`status` ENUM('pending', 'accepted', 'rejected') DEFAULT 'pending',
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`resolved_at` TIMESTAMP NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_motel_id` (`motel_id`),
INDEX `idx_status` (`status`),
INDEX `idx_motel_status` (`motel_id`, `status`),
FOREIGN KEY (`motel_id`) REFERENCES `qs_motels`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT IGNORE INTO `qs_motels` (`label`, `owner_identifier`, `owner_name`, `zone_points`, `blip_data`, `reception`, `room_management`, `rooms`, `purchasable`, `auto_system`, `sale_price`, `sale_multiplier`, `cost_per_minute`, `key_cost`, `room_count`, `motel_type`, `shell_data`, `ipl_data`, `shared_stashes`, `shared_wardrobes`, `entry_coords`, `creator`, `created_at`, `updated_at`, `balance`, `room_type_overrides`, `upgrades`) VALUES
('Richman Motel', NULL, NULL, '{"points":[{"z":66,"y":221.81651306152345,"x":-1395.9300537109376},{"z":66,"y":252.6926727294922,"x":-1224.8707275390626},{"z":66,"y":385.9217224121094,"x":-1259.2569580078126},{"z":66,"y":334.61407470703127,"x":-1395.19287109375}],"thickness":117.66351656755433}', '{"label":"Richman Motel","sprite":475,"scale":0.8,"coords":{"z":63.9767837524414,"y":306.0583801269531,"x":-1279.818359375},"color":17,"enable":true}', '{"z":65.90283966064453,"y":312.4852600097656,"x":-1271.80908203125,"w":0}', NULL, '[]', 0, 0, 0, 1.00, 1, 100, 200, 'ipl', NULL, '{"tier":1,"themeId":"seductive","exit":{"z":217.63999938964845,"y":315.80999755859377,"x":-787.4400024414063}}', '[{"locked":true,"coords":{"z":216.80580139160157,"y":320.7487487792969,"x":-789.3121948242188,"w":0}}]', '[{"locked":true,"coords":{"z":220.2403259277344,"y":328.2768859863281,"x":-796.0173950195313,"w":0}}]', '{"z":65.5118179321289,"y":315.591064453125,"x":-1274.0269775390626,"w":166}', 'QUASAR', '2026-02-22 22:28:08', '2026-02-22 22:28:08', NULL, NULL, NULL);