ddon-server/Arrowgene.Ddon.Database/Files/Database/Script/migration_instanced_rewards.sql
Paul Campbell dce9495e37 code review: Fix issues reported
- High: persisted instanced rewards are cloned as non-instanced.
- High: instanced reward UIDs are cached on quest definition objects.
- Medium: legacy reward-box materialization inserts instanced box rows without staged rows.
- Medium: missing staged data is treated as success and destroys the reward.
- Low/Medium: JSON crest level default disagrees with the schema.

Additionally:
- Removed support for wrongly spelled json keys in rewards
- Updated generic_quest_state_machine.md
- Cleaned up reward syntax while making it backwards compat.
2026-05-03 22:02:47 -04:00

30 lines
1.2 KiB
SQL

ALTER TABLE "ddon_reward_box_item" ADD COLUMN "is_instance" INTEGER NOT NULL DEFAULT 0;
CREATE TABLE IF NOT EXISTS "ddon_reward_staged_item"
(
"uid" TEXT PRIMARY KEY NOT NULL,
"reward_box_item_id" INTEGER NOT NULL,
"item_id" INTEGER NOT NULL,
"num" INTEGER NOT NULL DEFAULT 1,
"color" INTEGER NOT NULL DEFAULT 0,
"plus_value" INTEGER NOT NULL DEFAULT 0,
"safety_setting" INTEGER NOT NULL DEFAULT 0,
CONSTRAINT "fk_reward_staged_item_reward_box_item_id"
FOREIGN KEY ("reward_box_item_id")
REFERENCES "ddon_reward_box_item" ("reward_box_item_id")
ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS "idx_reward_staged_item_reward_box_item_id" ON "ddon_reward_staged_item" ("reward_box_item_id");
CREATE TABLE IF NOT EXISTS "ddon_reward_staged_item_crest"
(
"uid" TEXT NOT NULL,
"slot" INTEGER NOT NULL,
"crest_id" INTEGER NOT NULL,
"level" INTEGER NOT NULL DEFAULT 0,
CONSTRAINT "pk_reward_staged_item_crest" PRIMARY KEY ("uid", "slot"),
CONSTRAINT "fk_reward_staged_item_crest_uid"
FOREIGN KEY ("uid")
REFERENCES "ddon_reward_staged_item" ("uid")
ON DELETE CASCADE
);