1
0
mirror of synced 2024-12-12 15:01:12 +01:00

Merge pull request #39 from ghkkk090/master

fix terminal ocm, etc
This commit is contained in:
Luna 2022-09-01 08:35:55 +01:00 committed by GitHub
commit d978a7a4e4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 518 additions and 257 deletions

View File

@ -117,6 +117,8 @@ export default class CarModule extends Module {
if(getNo1OCM) if(getNo1OCM)
{ {
console.log('Getting registered car data');
// Get Car Data // Get Car Data
let cars = await prisma.car.findFirst({ let cars = await prisma.car.findFirst({
where:{ where:{
@ -167,8 +169,10 @@ export default class CarModule extends Module {
let opponentTarget = await prisma.carStampTarget.findMany({ let opponentTarget = await prisma.carStampTarget.findMany({
where:{ where:{
stampTargetCarId: body.carId, stampTargetCarId: body.carId,
locked: false,
recommended: true, recommended: true,
},
orderBy:{
locked: 'desc'
} }
}) })
@ -250,7 +254,7 @@ export default class CarModule extends Module {
// Stamp or Challenger // Stamp or Challenger
challenger: carsChallengers[0] || null, challenger: carsChallengers[0] || null,
challengerReturnCount: returnCount || null, challengerReturnCount: returnCount || null,
numOfChallengers: carsChallengers.length || null, numOfChallengers: carsChallengers.length + 1 || null,
// OCM Challenge Top 1 // OCM Challenge Top 1
opponentGhost: ghostCarsNo1 || null, opponentGhost: ghostCarsNo1 || null,
@ -573,6 +577,7 @@ export default class CarModule extends Module {
// Get the request body for the update car request // Get the request body for the update car request
let body = wm.wm.protobuf.UpdateCarRequest.decode(req.body); let body = wm.wm.protobuf.UpdateCarRequest.decode(req.body);
console.log(body);
// Get the ghost result for the car // Get the ghost result for the car
let cars = body?.car; let cars = body?.car;
@ -702,26 +707,38 @@ export default class CarModule extends Module {
wingTip: common.sanitizeInput(gtWing.wingTip), wingTip: common.sanitizeInput(gtWing.wingTip),
material: common.sanitizeInput(gtWing.material), material: common.sanitizeInput(gtWing.material),
} }
await prisma.carGTWing.update({
where: {
dbId: body.carId
},
data: dataGTWing
})
} }
else // Check if this is in getting new custom color screen or not
else if(body.car?.carId !== null && body.car?.carId !== undefined)
{ {
dataGTWing = { // GT Wing not set
pillar: 0, if(gtWing === undefined || gtWing === null)
pillarMaterial: 0, {
mainWing: 0, dataGTWing = {
mainWingColor: 0, pillar: 0,
wingTip: 0, pillarMaterial: 0,
material: 0, mainWing: 0,
mainWingColor: 0,
wingTip: 0,
material: 0,
}
await prisma.carGTWing.update({
where: {
dbId: body.carId
},
data: dataGTWing
})
} }
} }
await prisma.carGTWing.update({
where: {
dbId: body.carId
},
data: dataGTWing
})
// Response data // Response data
let msg = { let msg = {
error: wm.wm.protobuf.ErrorCode.ERR_SUCCESS, error: wm.wm.protobuf.ErrorCode.ERR_SUCCESS,

View File

@ -13,6 +13,7 @@ import * as wmsrv from "../wmmt/service.proto";
import * as common from "../util/common"; import * as common from "../util/common";
import * as ghost_save_trail from "../util/ghost/ghost_save_trail"; import * as ghost_save_trail from "../util/ghost/ghost_save_trail";
import * as ghost_trail from "../util/ghost/ghost_trail"; import * as ghost_trail from "../util/ghost/ghost_trail";
import * as ghost_area from "../util/ghost/ghost_area";
export default class GhostModule extends Module { export default class GhostModule extends Module {
@ -77,8 +78,11 @@ export default class GhostModule extends Module {
let stampTargets = await prisma.carStampTarget.findMany({ let stampTargets = await prisma.carStampTarget.findMany({
where: { where: {
stampTargetCarId: body.carId, stampTargetCarId: body.carId,
locked: false recommended: true
} },
orderBy:{
locked: 'desc'
}
}); });
if(stampTargets) if(stampTargets)
@ -179,8 +183,11 @@ export default class GhostModule extends Module {
let stampTargets = await prisma.carStampTarget.findMany({ let stampTargets = await prisma.carStampTarget.findMany({
where: { where: {
stampTargetCarId: body.carId, stampTargetCarId: body.carId,
locked: false recommended: true
} },
orderBy:{
locked: 'asc'
}
}); });
if(stampTargets) if(stampTargets)
@ -303,67 +310,13 @@ export default class GhostModule extends Module {
// Randomizing the starting ramp and path based on selected area // Randomizing the starting ramp and path based on selected area
let rampVal = 0; let rampVal = 0;
let pathVal = 0; let pathVal = 0;
if(body.area === 0){ // GID_RUNAREA_C1
rampVal = Math.floor(Math.random() * 4); // Get the ramp and path id
pathVal = Math.floor(Math.random() * 10); let ghost_areas = await ghost_area.GhostArea(body.area);
}
else if(body.area === 1){ // GID_RUNAREA_RING // Set the value
rampVal = Math.floor(Math.random() * 2) + 4; rampVal = ghost_areas.rampVal;
pathVal = Math.floor(Math.random() * 6) + 10; pathVal = ghost_areas.pathVal;
}
else if(body.area === 2){ // GID_RUNAREA_SUBTOKYO_3_4
rampVal = Math.floor(Math.random() * 2) + 6;
pathVal = Math.floor(Math.random() * 2) + 16;
}
else if(body.area === 3){ // GID_RUNAREA_SUBTOKYO_5
rampVal = Math.floor(Math.random() * 2) + 8;
pathVal = Math.floor(Math.random() * 2) + 18;
}
else if(body.area === 4){ // GID_RUNAREA_WANGAN
rampVal = Math.floor(Math.random() * 4) + 10;
pathVal = Math.floor(Math.random() * 7) + 20;
}
else if(body.area === 5){ // GID_RUNAREA_K1
rampVal = Math.floor(Math.random() * 4) + 14;
pathVal = Math.floor(Math.random() * 7) + 27;
}
else if(body.area === 6){ // GID_RUNAREA_YAESU
rampVal = Math.floor(Math.random() * 3) + 18;
pathVal = Math.floor(Math.random() * 4) + 34;
}
else if(body.area === 7){ // GID_RUNAREA_YOKOHAMA
rampVal = Math.floor(Math.random() * 4) + 21;
pathVal = Math.floor(Math.random() * 11) + 38;
}
else if(body.area === 8){ // GID_RUNAREA_NAGOYA
rampVal = 25;
pathVal = 49;
}
else if(body.area === 9){ // GID_RUNAREA_OSAKA
rampVal = 26;
pathVal = Math.floor(Math.random() * 4) + 50;
}
else if(body.area === 10){ // GID_RUNAREA_KOBE
rampVal = Math.floor(Math.random() * 2) + 27;
pathVal = Math.floor(Math.random() * 2) + 54;
}
else if(body.area === 11){ // GID_RUNAREA_FUKUOKA
rampVal = Math.floor(Math.random() * 4) + 29;
pathVal = Math.floor(Math.random() * 4) + 58;
}
else if(body.area === 12){ // GID_RUNAREA_HAKONE
rampVal = Math.floor(Math.random() * 2) + 33;
pathVal = Math.floor(Math.random() * 2) + 62;
}
else if(body.area === 13){ // GID_RUNAREA_TURNPIKE
rampVal = Math.floor(Math.random() * 2) + 35;
pathVal = Math.floor(Math.random() * 2) + 64;
}
//14 - 16 are dummy area, 17 is GID_RUNAREA_C1_CLOSED
else if(body.area === 18){ // GID_RUNAREA_HIROSHIMA
rampVal = Math.floor(Math.random() * 2) + 37;
pathVal = Math.floor(Math.random() * 2) + 56;
}
// Empty list of ghost car records // Empty list of ghost car records
let lists_ghostcar: wm.wm.protobuf.GhostCar[] = []; let lists_ghostcar: wm.wm.protobuf.GhostCar[] = [];
@ -796,67 +749,13 @@ export default class GhostModule extends Module {
} }
let rampVal = 0; let rampVal = 0;
let pathVal = 0; let pathVal = 0;
if(j === 0){ // GID_RUNAREA_C1
rampVal = Math.floor(Math.random() * 4); // Get the ramp and path id
pathVal = Math.floor(Math.random() * 10); let ghost_areas = await ghost_area.GhostArea(j);
}
else if(j === 1){ // GID_RUNAREA_RING // Set the value
rampVal = Math.floor(Math.random() * 2) + 4; rampVal = ghost_areas.rampVal;
pathVal = Math.floor(Math.random() * 6) + 10; pathVal = ghost_areas.pathVal;
}
else if(j === 2){ // GID_RUNAREA_SUBTOKYO_3_4
rampVal = Math.floor(Math.random() * 2) + 6;
pathVal = Math.floor(Math.random() * 2) + 16;
}
else if(j === 3){ // GID_RUNAREA_SUBTOKYO_5
rampVal = Math.floor(Math.random() * 2) + 8;
pathVal = Math.floor(Math.random() * 2) + 18;
}
else if(j === 4){ // GID_RUNAREA_WANGAN
rampVal = Math.floor(Math.random() * 4) + 10;
pathVal = Math.floor(Math.random() * 7) + 20;
}
else if(j === 5){ // GID_RUNAREA_K1
rampVal = Math.floor(Math.random() * 4) + 14;
pathVal = Math.floor(Math.random() * 7) + 27;
}
else if(j === 6){ // GID_RUNAREA_YAESU
rampVal = Math.floor(Math.random() * 3) + 18;
pathVal = Math.floor(Math.random() * 4) + 34;
}
else if(j === 7){ // GID_RUNAREA_YOKOHAMA
rampVal = Math.floor(Math.random() * 4) + 21;
pathVal = Math.floor(Math.random() * 11) + 38;
}
else if(j === 8){ // GID_RUNAREA_NAGOYA
rampVal = 25;
pathVal = 49;
}
else if(j === 9){ // GID_RUNAREA_OSAKA
rampVal = 26;
pathVal = Math.floor(Math.random() * 4) + 50;
}
else if(j === 10){ // GID_RUNAREA_KOBE
rampVal = Math.floor(Math.random() * 2) + 27;
pathVal = Math.floor(Math.random() * 2) + 54;
}
else if(j === 11){ // GID_RUNAREA_FUKUOKA
rampVal = Math.floor(Math.random() * 4) + 29;
pathVal = Math.floor(Math.random() * 4) + 58;
}
else if(j === 12){ // GID_RUNAREA_HAKONE
rampVal = Math.floor(Math.random() * 2) + 33;
pathVal = Math.floor(Math.random() * 2) + 62;
}
else if(j === 13){ // GID_RUNAREA_TURNPIKE
rampVal = Math.floor(Math.random() * 2) + 35;
pathVal = Math.floor(Math.random() * 2) + 64;
}
//14 - 16 are dummy area, 17 is GID_RUNAREA_C1_CLOSED
else if(j === 18){ // GID_RUNAREA_HIROSHIMA
rampVal = Math.floor(Math.random() * 2) + 37;
pathVal = Math.floor(Math.random() * 2) + 56;
}
// Empty list of car tuning records // Empty list of car tuning records
let carTuning: wm.wm.protobuf.CarTuning[] = []; let carTuning: wm.wm.protobuf.CarTuning[] = [];

View File

@ -359,6 +359,14 @@ export default class GhostModule extends Module {
closed: true closed: true
}; };
} }
else
{
// Response data
msg = {
error: wm.wm.protobuf.ErrorCode.ERR_SUCCESS,
closed: true
};
}
} }
// No OCM Event // No OCM Event
else{ else{
@ -399,8 +407,6 @@ export default class GhostModule extends Module {
// Get currently active OCM event // Get currently active OCM event
let ocmEventDate = await prisma.oCMEvent.findFirst({ let ocmEventDate = await prisma.oCMEvent.findFirst({
where: { where: {
competitionId: competition_id,
// qualifyingPeriodStartAt is less than current date // qualifyingPeriodStartAt is less than current date
qualifyingPeriodStartAt: { lte: date }, qualifyingPeriodStartAt: { lte: date },
@ -419,9 +425,6 @@ export default class GhostModule extends Module {
{ {
dbId: 'desc' dbId: 'desc'
}, },
{
competitionEndAt: 'desc',
},
], ],
}); });
} }
@ -436,6 +439,7 @@ export default class GhostModule extends Module {
shopName: Config.getConfig().shopName, shopName: Config.getConfig().shopName,
country: Config.getConfig().country country: Config.getConfig().country
}); });
let competitionSchedule;
// Get default trail id // Get default trail id
let ghostTrailId = 0; let ghostTrailId = 0;
@ -586,12 +590,8 @@ export default class GhostModule extends Module {
// Get Top 1 qualifying ghost trail id // Get Top 1 qualifying ghost trail id
let checkGhostTrail = await prisma.oCMTop1GhostTrail.findFirst({ let checkGhostTrail = await prisma.oCMTop1GhostTrail.findFirst({
where:{ where:{
carId: ocmTallyRecord!.carId, competitionId: competition_id,
competitionId: ocmEventDate!.competitionId,
periodId: 999999999, periodId: 999999999,
area: areaVal,
ramp: rampVal,
path: pathVal,
}, },
orderBy:{ orderBy:{
playedAt: 'desc' playedAt: 'desc'
@ -629,6 +629,49 @@ export default class GhostModule extends Module {
cars!.lastPlayedAt = checkGhostTrail.playedAt cars!.lastPlayedAt = checkGhostTrail.playedAt
ghostTrailId = checkGhostTrail.dbId!; ghostTrailId = checkGhostTrail.dbId!;
ghostTypes = wm.wm.protobuf.GhostType.GHOST_NORMAL; ghostTypes = wm.wm.protobuf.GhostType.GHOST_NORMAL;
let ocmEventDate = await prisma.oCMEvent.findFirst({
where: {
competitionId: competition_id
}
});
if(ocmEventDate)
{
// Creating GhostCompetitionSchedule
competitionSchedule = wm.wm.protobuf.GhostCompetitionSchedule.create({
// OCM Competition ID (1 = C1 (Round 16), 4 = Nagoya (Round 19), 8 = Hiroshima (Round 21))
competitionId: ocmEventDate.competitionId,
// OCM Qualifying Start Timestamp
qualifyingPeriodStartAt: ocmEventDate.qualifyingPeriodStartAt,
// OCM Qualifying Close Timestamp
qualifyingPeriodCloseAt: ocmEventDate.qualifyingPeriodCloseAt,
// OCM Competition (Main Draw) Start Timestamp
competitionStartAt: ocmEventDate.competitionStartAt,
// OCM Competition (Main Draw) Close Timestamp
competitionCloseAt: ocmEventDate.competitionCloseAt,
// OCM Competition (Main Draw) End Timestamp
competitionEndAt: ocmEventDate.competitionEndAt,
// idk what this is
lengthOfPeriod: ocmEventDate.lengthOfPeriod,
// idk what this is
lengthOfInterval: ocmEventDate.lengthOfInterval,
// Area for the event (GID_RUNAREA_*, 8 is GID_RUNAREA_NAGOYA)
area: ocmEventDate.area,
// idk what this is
minigamePatternId: ocmEventDate.minigamePatternId
});
}
} }
} }
@ -640,7 +683,7 @@ export default class GhostModule extends Module {
path: pathVal, path: pathVal,
nonhuman: false, nonhuman: false,
type: ghostTypes, type: ghostTypes,
trailId: ghostTrailId trailId: ghostTrailId,
}); });
// Response data // Response data
@ -649,7 +692,8 @@ export default class GhostModule extends Module {
competitionId: competition_id, competitionId: competition_id,
ghostCar: ghostCars!, ghostCar: ghostCars!,
trailId: ghostTrailId, trailId: ghostTrailId,
updatedAt: date updatedAt: date,
competitionSchedule: competitionSchedule || null
}; };
// Encode the response // Encode the response

View File

@ -44,14 +44,9 @@ export default class StartupModule extends Module {
if(!(ocmEventDate)) if(!(ocmEventDate))
{ {
ocmEventDate = await prisma.oCMEvent.findFirst({ ocmEventDate = await prisma.oCMEvent.findFirst({
orderBy: [ orderBy:{
{ dbId: 'desc'
dbId: 'desc' }
},
{
competitionEndAt: 'desc',
},
],
}); });
pastEvent = 1; pastEvent = 1;

View File

@ -188,6 +188,7 @@ export default class TerminalModule extends Module {
// Get the query from the request // Get the query from the request
let query = req.query; let query = req.query;
let cars;
// Check the query limit // Check the query limit
let queryLimit = 10 let queryLimit = 10
@ -197,9 +198,9 @@ export default class TerminalModule extends Module {
} }
// Check the last played place id // Check the last played place id
let queryLastPlayedPlaceId = 1; if(query.last_played_place_id)
if(query.limit)
{ {
let queryLastPlayedPlaceId = 1;
let getLastPlayedPlaceId = await prisma.placeList.findFirst({ let getLastPlayedPlaceId = await prisma.placeList.findFirst({
where:{ where:{
placeId: String(query.last_played_place_id) placeId: String(query.last_played_place_id)
@ -208,30 +209,46 @@ export default class TerminalModule extends Module {
if(getLastPlayedPlaceId) if(getLastPlayedPlaceId)
{ {
queryLastPlayedPlaceId = getLastPlayedPlaceId.id queryLastPlayedPlaceId = getLastPlayedPlaceId.id;
} }
}
// Get all of the cars matching the query cars = await prisma.car.findMany({
let cars = await prisma.car.findMany({ take: queryLimit,
take: queryLimit, where: {
where: { lastPlayedPlaceId: queryLastPlayedPlaceId
OR:[ },
{ include:{
name: { gtWing: true,
startsWith: String(query.name) lastPlayedPlace: true
}
});
}
else
{
// Get all of the cars matching the query
cars = await prisma.car.findMany({
take: queryLimit,
where: {
OR:[
{
name: {
startsWith: String(query.name)
}
},
{
name: {
endsWith: String(query.name)
}
} }
}, ]
{
lastPlayedPlaceId: queryLastPlayedPlaceId },
} include:{
] gtWing: true,
}, lastPlayedPlace: true
include:{ }
gtWing: true, });
lastPlayedPlace: true }
}
});
for(let i=0; i<cars.length; i++) for(let i=0; i<cars.length; i++)
{ {
@ -581,8 +598,8 @@ export default class TerminalModule extends Module {
if(!(ocmEventDate)) if(!(ocmEventDate))
{ {
ocmEventDate = await prisma.oCMEvent.findFirst({ ocmEventDate = await prisma.oCMEvent.findFirst({
orderBy:{ where:{
dbId: 'desc' competitionId: body.competitionId
} }
}); });
@ -995,6 +1012,50 @@ export default class TerminalModule extends Module {
}) })
// Lock Stamp Target
app.post('/method/lock_stamp_target', async (req, res) => {
// car_id, target_cars[]
let body = wm.wm.protobuf.LockStampTargetRequest.decode(req.body);
// Unlock all of the stamp targets for the car
await prisma.carStampTarget.updateMany({
where: {
stampTargetCarId: body.carId
},
data: {
locked: false
}
});
// Loop over all of the locked stamp targets
for(let targetCar of body.targetCars)
{
// Lock the stamp target for the given car
// This should only occur once, however
// the relationship is not strictly 1:1
await prisma.carStampTarget.updateMany({
where: {
carId: targetCar,
stampTargetCarId: body.carId
},
data: {
locked: true
}
});
}
// Encode the response
let message = wm.wm.protobuf.LoadStampTargetResponse.encode({
error: wm.wm.protobuf.ErrorCode.ERR_SUCCESS,
});
// Send the response to the client
common.sendResponse(message, res);
});
/* /*
app.post('/method/load_unreceived_user_items', async (req, res) => { app.post('/method/load_unreceived_user_items', async (req, res) => {

View File

@ -71,13 +71,19 @@ export async function saveGhostBattleResult(body: wm.protobuf.SaveGameResultRequ
// ghostResult is set // ghostResult is set
if (ghostResult) if (ghostResult)
{ {
let stampSheet: any = undefined;
if(ghostResult.stampSheet!.length > 0)
{
stampSheet = ghostResult.stampSheet;
}
// Ghost update data // Ghost update data
dataGhost = { dataGhost = {
rgRegionMapScore: common.sanitizeInput(ghostResult.rgRegionMapScore), rgRegionMapScore: common.sanitizeInput(ghostResult.rgRegionMapScore),
rgPlayCount: common.sanitizeInput(ghostResult.rgPlayCount), rgPlayCount: common.sanitizeInput(ghostResult.rgPlayCount),
dressupLevel: common.sanitizeInput(ghostResult.dressupLevel), dressupLevel: common.sanitizeInput(ghostResult.dressupLevel),
dressupPoint: common.sanitizeInput(ghostResult.dressupPoint), dressupPoint: common.sanitizeInput(ghostResult.dressupPoint),
stampSheet: common.sanitizeInput(ghostResult.stampSheet), stampSheet: stampSheet,
stampSheetCount: common.sanitizeInputNotZero(ghostResult.stampSheetCount), stampSheetCount: common.sanitizeInputNotZero(ghostResult.stampSheetCount),
} }

View File

@ -0,0 +1,289 @@
import { wm } from "../../wmmt/wm.proto";
// OCM Area
export async function GhostArea(area: number)
{
let rampVal = 0;
let pathVal = 0;
// GID_RUNAREA_C1
if(Number(area) === 0)
{
rampVal = Math.floor(Math.random() * 4);
// GID_RAMP_C1_IN_KANDABASHI
if(rampVal === 0)
{
pathVal = Math.floor(Math.random() * 3); // path id 0-2
}
// GID_RAMP_C1_IN_SHIODOME
else if(rampVal === 1)
{
pathVal = 3
}
// GID_RAMP_C1_OUT_KANDABASHI
else if(rampVal === 2)
{
pathVal = Math.floor(Math.random() * 3) + 4; // path id 4-6
}
// GID_RAMP_C1_OUT_SHIBA
else if(rampVal === 3)
{
pathVal = Math.floor(Math.random() * 3) + 7; // path id 7-9
}
}
// GID_RUNAREA_RING
else if(Number(area) === 1)
{
rampVal = Math.floor(Math.random() * 2) + 4;
// GID_RAMP_RING_LEFT_ARIAKE
if(rampVal === 4)
{
pathVal = Math.floor(Math.random() * 3) + 10; // path id 10-12
}
// GID_RAMP_RING_RIGHT_KIBA
else if(rampVal === 5)
{
pathVal = Math.floor(Math.random() * 3) + 13; // path id 13-15
}
}
// GID_RUNAREA_SUBTOKYO_3_4
else if(Number(area) === 2)
{
rampVal = Math.floor(Math.random() * 2) + 6;
// GID_RAMP_SUBTOKYO_SHIBUYA
if(rampVal === 6)
{
pathVal = 16
}
// GID_RAMP_SUBTOKYO_GAIEN
else if(rampVal === 7)
{
pathVal = 17
}
}
// GID_RUNAREA_SUBTOKYO_5
else if(Number(area) === 3)
{
rampVal = Math.floor(Math.random() * 2) + 8;
// GID_RAMP_SUBTOKYO_DAIKANCHOU
if(rampVal === 8)
{
pathVal = 18;
}
// GID_RAMP_SUBTOKYO_SHINJUKU
else if(rampVal === 9)
{
pathVal = 19;
}
}
// GID_RUNAREA_WANGAN
else if(Number(area) === 4)
{
rampVal = Math.floor(Math.random() * 4) + 10;
// GID_RAMP_WANGAN_EAST_AIRPORT
if(rampVal === 10)
{
pathVal = Math.floor(Math.random() * 3) + 20; // path id 20-22
}
// GID_RAMP_WANGAN_EAST_DAIKOKU
else if(rampVal === 11)
{
pathVal = 23
}
// GID_RAMP_WANGAN_WEST_RINKAI
else if(rampVal === 12)
{
pathVal = 24;
}
// GID_RAMP_WANGAN_WEST_AIRPORT
else if(rampVal === 13)
{
pathVal = Math.floor(Math.random() * 2) + 25; // path id 25-26
}
}
// GID_RUNAREA_K1
else if(Number(area) === 5)
{
rampVal = Math.floor(Math.random() * 4) + 14;
// GID_RAMP_K1_DOWN_SHIBAURA
if(rampVal === 14)
{
pathVal = 27
}
// GID_RAMP_K1_DOWN_HANEDA
else if(rampVal === 15)
{
pathVal = Math.floor(Math.random() * 2) + 28; // path id 28-29
}
// GID_RAMP_K1_UP_HANEDA
else if(rampVal === 16)
{
pathVal = Math.floor(Math.random() * 2) + 30; // path id 30-31
}
// GID_RAMP_K1_UP_SHIOIRI
else if(rampVal === 17)
{
pathVal = Math.floor(Math.random() * 2) + 32; // path id 32-33
}
}
// GID_RUNAREA_YAESU
else if(Number(area) === 6)
{
rampVal = Math.floor(Math.random() * 3) + 18;
// GID_RAMP_YAESU_SHIODOME
if(rampVal === 18)
{
pathVal = Math.floor(Math.random() * 2) + 34; // path id 34-35
}
// GID_RAMP_YAESU_KYOBASHI
else if(rampVal === 19)
{
pathVal = 36
}
// GID_RAMP_YAESU_KANDABASHI
else if(rampVal === 20)
{
pathVal = 37
}
}
// GID_RUNAREA_YOKOHAMA
else if(Number(area) === 7)
{
rampVal = Math.floor(Math.random() * 4) + 21;
// GID_RAMP_MINATOMIRAI_IN_HIGASHIKANAGAWA
if(rampVal === 21)
{
pathVal = Math.floor(Math.random() * 2) + 38; // path id 38-39
}
// GID_RAMP_MINATOMIRAI_IN_MINATOMIRAI
else if(rampVal === 22)
{
pathVal = Math.floor(Math.random() * 3) + 40; // path id 40-42
}
// GID_RAMP_MINATOMIRAI_OUT_SHINYAMASHITA
else if(rampVal === 23)
{
pathVal = Math.floor(Math.random() * 3) + 43; // path id 43-45
}
// GID_RAMP_MINATOMIRAI_OUT_MINATOMIRAI
else if(rampVal === 24)
{
pathVal = Math.floor(Math.random() * 3) + 46; // path id 46-48
}
}
// GID_RUNAREA_NAGOYA
else if(Number(area) === 8)
{
rampVal = 25;
pathVal = 49;
}
// GID_RUNAREA_OSAKA
else if(Number(area) === 9)
{
rampVal = 26;
pathVal = Math.floor(Math.random() * 4) + 50;
}
// GID_RUNAREA_KOBE
else if(Number(area) === 10)
{
rampVal = Math.floor(Math.random() * 2) + 27;
// GID_RAMP_KOBE_SHINKOUCHOU
if(rampVal === 27)
{
pathVal = 54;
}
// GID_RAMP_KOBE_NADAOOHASHI
else if(rampVal === 28)
{
pathVal = 55;
}
}
// GID_RUNAREA_FUKUOKA
else if(Number(area) === 11)
{
rampVal = Math.floor(Math.random() * 4) + 29;
// GID_RAMP_FUKUOKA_WEST_MEIHAMA
if(rampVal === 29)
{
pathVal = 58;
}
// GID_RAMP_FUKUOKA_WEST_HAKATA
else if(rampVal === 30)
{
pathVal = 59;
}
// GID_RAMP_FUKUOKA_EAST_NISHI
else if(rampVal === 31)
{
pathVal = 60;
}
// GID_RAMP_FUKUOKA_EAST_HANDOUBASHI
else if(rampVal === 32)
{
pathVal = 61;
}
}
// GID_RUNAREA_HAKONE
else if(Number(area) === 12)
{
rampVal = Math.floor(Math.random() * 2) + 33;
// GID_RAMP_HAKONE_FOR
if(rampVal === 33)
{
pathVal = 62;
}
// GID_RAMP_HAKONE_BACK
else if(rampVal === 34)
{
pathVal = 63;
}
}
// GID_RUNAREA_TURNPIKE
else if(Number(area) === 13)
{
rampVal = Math.floor(Math.random() * 2) + 35;
// GID_RAMP_TURNPIKE_UP
if(rampVal === 35)
{
pathVal = 64;
}
// GID_RAMP_TURNPIKE_DOWN
else if(rampVal === 36)
{
pathVal = 65;
}
}
// 14 - 16 are dummy area, 17 is GID_RUNAREA_C1_CLOSED
// GID_RUNAREA_HIROSHIMA
else if(Number(area) === 18)
{
rampVal = Math.floor(Math.random() * 2) + 37;
// GID_RAMP_HIROSHIMA_SHINONOME
if(rampVal === 37)
{
pathVal = 56;
}
// GID_RAMP_HIROSHIMA_UJINA
else if(rampVal === 38)
{
pathVal = 57;
}
}
return { rampVal, pathVal }
}

View File

@ -141,18 +141,21 @@ export async function ocmTallying(body: wm.protobuf.LoadGhostCompetitionInfoRequ
// Get the Top 1 Advantage // Get the Top 1 Advantage
if(top1advantage === null) if(top1advantage === null)
{ {
top1advantage = OCMTally[i].result; top1advantage = OCMTally[0].result;
let getTrail = await prisma.oCMGhostTrail.findFirst({ let getTrail = await prisma.oCMGhostTrail.findFirst({
where:{ where:{
carId: OCMTally[i].carId, carId: OCMTally[0].carId,
competitionId: body.competitionId, competitionId: body.competitionId,
ocmMainDraw: true },
orderBy:{
playedAt: 'desc'
} }
}) })
if(getTrail) if(getTrail)
{ {
console.log('Creating Trail');
await prisma.oCMTop1GhostTrail.create({ await prisma.oCMTop1GhostTrail.create({
data: { data: {
carId: getTrail.carId, carId: getTrail.carId,
@ -221,7 +224,8 @@ export async function ocmTallying(body: wm.protobuf.LoadGhostCompetitionInfoRequ
} }
if(i === 0){ if(i === 0)
{
console.log('Making OCM Top 1 Ghost Data'); console.log('Making OCM Top 1 Ghost Data');
// Create Top 1 ghost data // Create Top 1 ghost data

View File

@ -165,11 +165,11 @@ export async function shuttleReturnStamp(body: wm.protobuf.SaveGameResultRequest
carId: rgResult.opponents![i].carId, carId: rgResult.opponents![i].carId,
stampTargetCarId: body.carId, stampTargetCarId: body.carId,
returnCount: returnCount, returnCount: returnCount,
locked: true, locked: false,
recommended: false recommended: false
} }
console.log(`Updating car ${rgResult.opponents![i].carId} vs ${body.carId} stamp entry and locking it`); console.log(`Updating car ${rgResult.opponents![i].carId} vs ${body.carId} stamp entry and remove it from your recommendation`);
await prisma.carStampTarget.update({ await prisma.carStampTarget.update({
where:{ where:{
@ -217,7 +217,7 @@ export async function shuttleReturnStamp(body: wm.protobuf.SaveGameResultRequest
if(stampReturned) if(stampReturned)
{ {
console.log(`Stamp returned to ${rgResult.opponents![i].carId}, unlocking it so opponents can fight your ghost`); console.log(`Stamp returned to ${rgResult.opponents![i].carId}, recommend it so opponents can fight your ghost`);
await prisma.carStampTarget.update({ await prisma.carStampTarget.update({
where:{ where:{

View File

@ -3,6 +3,7 @@ import { OCMTop1GhostTrail } from "@prisma/client";
// Import Proto // Import Proto
import * as ghost_ocm_area from "./ghost_ocm_area"; import * as ghost_ocm_area from "./ghost_ocm_area";
import * as ghost_area from "./ghost_area";
// Save ghost battle result // Save ghost battle result
@ -220,67 +221,12 @@ export async function getCrownGhostTrail(carId: number, areaId: number)
{ {
console.log('Crown Ghost Trail not found'); console.log('Crown Ghost Trail not found');
if(areaId === 0){ // GID_RUNAREA_C1 // Get the ramp and path id
rampVal = Math.floor(Math.random() * 4); let ghost_areas = await ghost_area.GhostArea(areaId);
pathVal = Math.floor(Math.random() * 10);
} // Set the value
else if(areaId === 1){ // GID_RUNAREA_RING rampVal = ghost_areas.rampVal;
rampVal = Math.floor(Math.random() * 2) + 4; pathVal = ghost_areas.pathVal;
pathVal = Math.floor(Math.random() * 6) + 10;
}
else if(areaId === 2){ // GID_RUNAREA_SUBTOKYO_3_4
rampVal = Math.floor(Math.random() * 2) + 6;
pathVal = Math.floor(Math.random() * 2) + 16;
}
else if(areaId === 3){ // GID_RUNAREA_SUBTOKYO_5
rampVal = Math.floor(Math.random() * 2) + 8;
pathVal = Math.floor(Math.random() * 2) + 18;
}
else if(areaId === 4){ // GID_RUNAREA_WANGAN
rampVal = Math.floor(Math.random() * 4) + 10;
pathVal = Math.floor(Math.random() * 7) + 20;
}
else if(areaId === 5){ // GID_RUNAREA_K1
rampVal = Math.floor(Math.random() * 4) + 14;
pathVal = Math.floor(Math.random() * 7) + 27;
}
else if(areaId === 6){ // GID_RUNAREA_YAESU
rampVal = Math.floor(Math.random() * 3) + 18;
pathVal = Math.floor(Math.random() * 4) + 34;
}
else if(areaId === 7){ // GID_RUNAREA_YOKOHAMA
rampVal = Math.floor(Math.random() * 4) + 21;
pathVal = Math.floor(Math.random() * 11) + 38;
}
else if(areaId === 8){ // GID_RUNAREA_NAGOYA
rampVal = 25;
pathVal = 49;
}
else if(areaId === 9){ // GID_RUNAREA_OSAKA
rampVal = 26;
pathVal = Math.floor(Math.random() * 4) + 50;
}
else if(areaId === 10){ // GID_RUNAREA_KOBE
rampVal = 28;
pathVal = 55;
}
else if(areaId === 11){ // GID_RUNAREA_FUKUOKA
rampVal = Math.floor(Math.random() * 4) + 29;
pathVal = Math.floor(Math.random() * 4) + 58;
}
else if(areaId === 12){ // GID_RUNAREA_HAKONE
rampVal = Math.floor(Math.random() * 2) + 33;
pathVal = Math.floor(Math.random() * 2) + 62;
}
else if(areaId === 13){ // GID_RUNAREA_TURNPIKE
rampVal = Math.floor(Math.random() * 2) + 35;
pathVal = Math.floor(Math.random() * 2) + 64;
}
//14 - 16 are dummy area, 17 is GID_RUNAREA_C1_CLOSED
else if(areaId === 18){ // GID_RUNAREA_HIROSHIMA
rampVal = Math.floor(Math.random() * 2) + 37;
pathVal = Math.floor(Math.random() * 2) + 56;
}
// Random value lmao, for default ghost trail stuff (any value maybe works) // Random value lmao, for default ghost trail stuff (any value maybe works)
playedAt = date playedAt = date