Add support for treasure items

This commit is contained in:
rsakeys 2020-03-02 20:41:43 +00:00
parent 1dc3bf9f34
commit e94993a71f
3 changed files with 8 additions and 2 deletions

View File

@ -10,6 +10,7 @@ CREATE TABLE item (
epf BOOLEAN NOT NULL DEFAULT FALSE, epf BOOLEAN NOT NULL DEFAULT FALSE,
tour BOOLEAN NOT NULL DEFAULT FALSE, tour BOOLEAN NOT NULL DEFAULT FALSE,
release_date DATE NOT NULL, release_date DATE NOT NULL,
treasure BOOLEAN NOT NULL DEFAULT FALSE,
PRIMARY KEY (id) PRIMARY KEY (id)
); );
@ -27,6 +28,7 @@ COMMENT ON COLUMN item.patched IS 'Is item patched?';
COMMENT ON COLUMN item.epf IS 'Is EPF item?'; COMMENT ON COLUMN item.epf IS 'Is EPF item?';
COMMENT ON COLUMN item.tour IS 'Gives tour status?'; COMMENT ON COLUMN item.tour IS 'Gives tour status?';
COMMENT ON COLUMN item.release_date IS 'Release date of item'; COMMENT ON COLUMN item.release_date IS 'Release date of item';
COMMENT ON COLUMN item.treasure IS 'Is a treasure item?';
DROP TABLE IF EXISTS postcard; DROP TABLE IF EXISTS postcard;
CREATE TABLE postcard ( CREATE TABLE postcard (

View File

@ -14,6 +14,7 @@ class Item(db.Model):
epf = db.Column(db.Boolean, nullable=False, server_default=db.text("false")) epf = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
tour = db.Column(db.Boolean, nullable=False, server_default=db.text("false")) tour = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
release_date = db.Column(db.Date, nullable=False, server_default=db.text("now()")) release_date = db.Column(db.Date, nullable=False, server_default=db.text("now()"))
treasure = db.Column(db.Boolean, nullable=False, server_default=db.text("false"))
def is_color(self): def is_color(self):
return self.type == 1 return self.type == 1

View File

@ -61,8 +61,11 @@ async def handle_code(p, redemption_code: str):
return await p.send_error(726) return await p.send_error(726)
if code.type == 'CATALOG': if code.type == 'CATALOG':
owned_ids = ','.join((item.item_id for item in code.items if item.item_id in p.inventory)) num_redeemed_codes = await PenguinRedemptionCode.join(RedemptionCode).count().where(
return await p.send_xt('rsc', 'treasurebook', 3, owned_ids, 0) (PenguinRedemptionCode.penguin_id == p.id) & (RedemptionCode.type == 'CATALOG')
).gino.scalar()
owned_ids = ','.join((str(item.item_id) for item in code.items if item.item_id in p.inventory and p.server.items[item.item_id].treasure))
return await p.send_xt('rsc', 'treasurebook', 3, owned_ids, num_redeemed_codes)
await p.send_xt('rsc', code.type, '', code.coins) await p.send_xt('rsc', code.type, '', code.coins)