Update guess encoding APIs to be more structured

This commit is contained in:
Sainan 2025-06-07 11:48:40 +02:00
parent 65387ccdea
commit 63e337de52
2 changed files with 45 additions and 20 deletions

View File

@ -8,7 +8,8 @@ import {
getNemesisPasscode,
getNemesisPasscodeModTypes,
GUESS_WILDCARD,
IKnifeResponse
IKnifeResponse,
NemesisGuess
} from "@/src/helpers/nemesisHelpers";
import { getJSONfromString } from "@/src/helpers/stringHelpers";
import { Loadout } from "@/src/models/inventoryModels/loadoutModel";
@ -98,13 +99,24 @@ export const nemesisController: RequestHandler = async (req, res) => {
if (inventory.Nemesis!.Faction == "FC_INFESTATION") {
const guess: number[] = [body.guess & 0xf, (body.guess >> 4) & 0xf, (body.guess >> 8) & 0xf];
const passcode = getNemesisPasscode(inventory.Nemesis!)[0];
// Add to GuessHistory
const result1 = passcode == guess[0] ? 0 : 1;
const result2 = passcode == guess[1] ? 0 : 1;
const result3 = passcode == guess[2] ? 0 : 1;
inventory.Nemesis!.GuessHistory.push(
encodeNemesisGuess(guess[0], result1, guess[1], result2, guess[2], result3)
encodeNemesisGuess([
{
symbol: guess[0],
result: result1
},
{
symbol: guess[1],
result: result2
},
{
symbol: guess[2],
result: result3
}
])
);
// Increase antivirus if correct antivirus mod is installed

View File

@ -269,26 +269,39 @@ export const getNemesisPasscodeModTypes = (nemesis: { fp: bigint; Faction: TNeme
export const GUESS_NONE = 8;
export const GUESS_WILDCARD = 9;
export const encodeNemesisGuess = (
symbol1: number,
result1: number,
symbol2: number,
result2: number,
symbol3: number,
result3: number
): number => {
interface NemesisPositionGuess {
symbol: number;
result: number;
}
export type NemesisGuess = [NemesisPositionGuess, NemesisPositionGuess, NemesisPositionGuess];
export const encodeNemesisGuess = (guess: NemesisGuess): number => {
return (
(symbol1 & 0xf) |
((result1 & 3) << 12) |
((symbol2 << 4) & 0xff) |
((result2 << 14) & 0xffff) |
((symbol3 & 0xf) << 8) |
((result3 & 3) << 16)
(guess[0].symbol & 0xf) |
((guess[0].result & 3) << 12) |
((guess[1].symbol << 4) & 0xff) |
((guess[1].result << 14) & 0xffff) |
((guess[2].symbol & 0xf) << 8) |
((guess[2].result & 3) << 16)
);
};
export const decodeNemesisGuess = (val: number): number[] => {
return [val & 0xf, (val >> 12) & 3, (val & 0xff) >> 4, (val & 0xffff) >> 14, (val >> 8) & 0xf, (val >> 16) & 3];
export const decodeNemesisGuess = (val: number): NemesisGuess => {
return [
{
symbol: val & 0xf,
result: (val >> 12) & 3
},
{
symbol: (val & 0xff) >> 4,
result: (val & 0xffff) >> 14
},
{
symbol: (val >> 8) & 0xf,
result: (val >> 16) & 3
}
];
};
export interface IKnifeResponse {