From: xangelo Date: Thu, 5 Dec 2024 05:30:55 +0000 (-0500) Subject: fix(locations): only show locations that are accessible to the player (by level) X-Git-Tag: v0.4.4~16 X-Git-Url: https://git.xangelo.ca/?a=commitdiff_plain;h=ca010511ad7bd54ca52e7c75a065f87c4a785bd6;p=risinglegends.git fix(locations): only show locations that are accessible to the player (by level) --- diff --git a/src/server/api.ts b/src/server/api.ts index fc5ffa7..74cde0a 100644 --- a/src/server/api.ts +++ b/src/server/api.ts @@ -223,7 +223,7 @@ app.get('/player/explore', authEndpoint, async (req: Request, res: Response) => // display the default explore view const [city, locations, paths] = await Promise.all([ getCityDetails(req.player.city_id), - getAllServices(req.player.city_id), + getAllServices(req.player.city_id, req.player.level), getAllPaths(req.player.city_id) ]); diff --git a/src/server/map.ts b/src/server/map.ts index fb88b0a..45975bd 100644 --- a/src/server/map.ts +++ b/src/server/map.ts @@ -4,11 +4,12 @@ import type { Travel, TravelWithNames } from "@shared/travel"; import { db } from './lib/db'; import { random } from 'lodash'; -export async function getAllServices(city_id: number): Promise { +export async function getAllServices(city_id: number, minLevel: number = 0): Promise { return db.select('*') .from('locations') .where({city_id}) .andWhere('is_visible', true) + .andWhere('min_level', '<=', minLevel) .orderBy('type') .orderBy('display_order'); } diff --git a/src/server/routes/travel.ts b/src/server/routes/travel.ts index 2a68563..ba2f70c 100644 --- a/src/server/routes/travel.ts +++ b/src/server/routes/travel.ts @@ -40,7 +40,7 @@ travelRouter.post('/travel/step', authEndpoint, async (req: Request, res: Respon const [city, locations, paths] = await Promise.all([ getCityDetails(travel.destination_id), - getAllServices(travel.destination_id), + getAllServices(travel.destination_id, req.player.level), getAllPaths(travel.destination_id) ]); @@ -97,7 +97,7 @@ travelRouter.post('/travel/return-to-source', authEndpoint, async (req: Request, else { const [city, locations, paths] = await Promise.all([ getCityDetails(req.player.city_id), - getAllServices(req.player.city_id), + getAllServices(req.player.city_id, req.player.level), getAllPaths(req.player.city_id) ]);