forked from OpenWF/SpaceNinjaServer
Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
468efed71c | |||
4926b2f2be | |||
562ddd513f | |||
35d5c01203 |
45
Dockerfile
45
Dockerfile
@ -5,17 +5,40 @@ ENV APP_MY_ADDRESS=localhost
|
||||
ENV APP_HTTP_PORT=80
|
||||
ENV APP_HTTPS_PORT=443
|
||||
ENV APP_AUTO_CREATE_ACCOUNT=true
|
||||
ENV APP_SKIP_STORY_MODE_CHOICE=true
|
||||
ENV APP_SKIP_TUTORIAL=true
|
||||
ENV APP_SKIP_ALL_DIALOGUE=true
|
||||
ENV APP_UNLOCK_ALL_SCANS=true
|
||||
ENV APP_UNLOCK_ALL_MISSIONS=true
|
||||
ENV APP_INFINITE_RESOURCES=true
|
||||
ENV APP_UNLOCK_ALL_SHIP_FEATURES=true
|
||||
ENV APP_UNLOCK_ALL_SHIP_DECORATIONS=true
|
||||
ENV APP_UNLOCK_ALL_FLAVOUR_ITEMS=true
|
||||
ENV APP_UNLOCK_ALL_SKINS=true
|
||||
ENV APP_UNIVERSAL_POLARITY_EVERYWHERE=true
|
||||
ENV APP_SKIP_TUTORIAL=false
|
||||
ENV APP_SKIP_ALL_DIALOGUE=false
|
||||
ENV APP_UNLOCK_ALL_SCANS=false
|
||||
ENV APP_UNLOCK_ALL_MISSIONS=false
|
||||
ENV APP_INFINITE_CREDITS=false
|
||||
ENV APP_INFINITE_PLATINUM=false
|
||||
ENV APP_INFINITE_ENDO=false
|
||||
ENV APP_INFINITE_REGAL_AYA=false
|
||||
ENV APP_INFINITE_HELMINTH_MATERIALS=false
|
||||
ENV APP_DONT_SUBTRACT_CONSUMABLES=false
|
||||
ENV APP_UNLOCK_ALL_SHIP_FEATURES=false
|
||||
ENV APP_UNLOCK_ALL_SHIP_DECORATIONS=false
|
||||
ENV APP_UNLOCK_ALL_FLAVOUR_ITEMS=false
|
||||
ENV APP_UNLOCK_ALL_SKINS=false
|
||||
ENV APP_UNLOCK_ALL_CAPTURA_SCENES=false
|
||||
ENV APP_UNIVERSAL_POLARITY_EVERYWHERE=false
|
||||
ENV APP_UNLOCK_DOUBLE_CAPACITY_POTATOES_EVERYWHERE=false
|
||||
ENV APP_UNLOCK_EXILUS_EVERYWHERE=false
|
||||
ENV APP_UNLOCK_ARCANES_EVERYWHERE=false
|
||||
ENV APP_NO_DAILY_FOCUS_LIMIT=false
|
||||
ENV APP_NO_ARGON_CRYSTAL_DECAY=false
|
||||
ENV APP_NO_MASTERY_RANK_UP_COOLDOWN=false
|
||||
ENV APP_NO_VENDOR_PURCHASE_LIMITS=true
|
||||
ENV APP_NO_DEATH_MARKS=false
|
||||
ENV APP_NO_KIM_COOLDOWNS=false
|
||||
ENV APP_INSTANT_RESOURCE_EXTRACTOR_DRONES=false
|
||||
ENV APP_NO_RESOURCE_EXTRACTOR_DRONES_DAMAGE=false
|
||||
ENV APP_SKIP_CLAN_KEY_CRAFTING=false
|
||||
ENV APP_NO_DOJO_ROOM_BUILD_STAGE=false
|
||||
ENV APP_NO_DECO_BUILD_STAGE=false
|
||||
ENV APP_FAST_DOJO_ROOM_DESTRUCTION=false
|
||||
ENV APP_NO_DOJO_RESEARCH_COSTS=false
|
||||
ENV APP_NO_DOJO_RESEARCH_TIME=false
|
||||
ENV APP_FAST_CLAN_ASCENSION=false
|
||||
ENV APP_SPOOF_MASTERY_RANK=-1
|
||||
|
||||
RUN apk add --no-cache bash sed wget jq
|
||||
|
@ -12,19 +12,40 @@ services:
|
||||
# APP_HTTP_PORT: 80
|
||||
# APP_HTTPS_PORT: 443
|
||||
# APP_AUTO_CREATE_ACCOUNT: true
|
||||
# APP_SKIP_STORY_MODE_CHOICE: true
|
||||
# APP_SKIP_TUTORIAL: true
|
||||
# APP_SKIP_ALL_DIALOGUE: true
|
||||
# APP_UNLOCK_ALL_SCANS: true
|
||||
# APP_UNLOCK_ALL_MISSIONS: true
|
||||
# APP_UNLOCK_ALL_QUESTS: true
|
||||
# APP_COMPLETE_ALL_QUESTS: true
|
||||
# APP_INFINITE_RESOURCES: true
|
||||
# APP_UNLOCK_ALL_SHIP_FEATURES: true
|
||||
# APP_UNLOCK_ALL_SHIP_DECORATIONS: true
|
||||
# APP_UNLOCK_ALL_FLAVOUR_ITEMS: true
|
||||
# APP_UNLOCK_ALL_SKINS: true
|
||||
# APP_UNIVERSAL_POLARITY_EVERYWHERE: true
|
||||
# APP_SKIP_TUTORIAL: false
|
||||
# APP_SKIP_ALL_DIALOGUE: false
|
||||
# APP_UNLOCK_ALL_SCANS: false
|
||||
# APP_UNLOCK_ALL_MISSIONS: false
|
||||
# APP_INFINITE_CREDITS: false
|
||||
# APP_INFINITE_PLATINUM: false
|
||||
# APP_INFINITE_ENDO: false
|
||||
# APP_INFINITE_REGAL_AYA: false
|
||||
# APP_INFINITE_HELMINTH_MATERIALS: false
|
||||
# APP_DONT_SUBTRACT_CONSUMABLES: false
|
||||
# APP_UNLOCK_ALL_SHIP_FEATURES: false
|
||||
# APP_UNLOCK_ALL_SHIP_DECORATIONS: false
|
||||
# APP_UNLOCK_ALL_FLAVOUR_ITEMS: false
|
||||
# APP_UNLOCK_ALL_SKINS: false
|
||||
# APP_UNLOCK_ALL_CAPTURA_SCENES: false
|
||||
# APP_UNIVERSAL_POLARITY_EVERYWHERE: false
|
||||
# APP_UNLOCK_DOUBLE_CAPACITY_POTATOES_EVERYWHERE: false
|
||||
# APP_UNLOCK_EXILUS_EVERYWHERE: false
|
||||
# APP_UNLOCK_ARCANES_EVERYWHERE: false
|
||||
# APP_NO_DAILY_FOCUS_LIMIT: false
|
||||
# APP_NO_ARGON_CRYSTAL_DECAY: false
|
||||
# APP_NO_MASTERY_RANK_UP_COOLDOWN: false
|
||||
# APP_NO_VENDOR_PURCHASE_LIMITS: true
|
||||
# APP_NO_DEATH_MARKS: false
|
||||
# APP_NO_KIM_COOLDOWNS: false
|
||||
# APP_INSTANT_RESOURCE_EXTRACTOR_DRONES: false
|
||||
# APP_NO_RESOURCE_EXTRACTOR_DRONES_DAMAGE: false
|
||||
# APP_SKIP_CLAN_KEY_CRAFTING: false
|
||||
# APP_NO_DOJO_ROOM_BUILD_STAGE: false
|
||||
# APP_NO_DECO_BUILD_STAGE: false
|
||||
# APP_FAST_DOJO_ROOM_DESTRUCTION: false
|
||||
# APP_NO_DOJO_RESEARCH_COSTS: false
|
||||
# APP_NO_DOJO_RESEARCH_TIME: false
|
||||
# APP_FAST_CLAN_ASCENSION: false
|
||||
# APP_SPOOF_MASTERY_RANK: -1
|
||||
volumes:
|
||||
- ./docker-data/static:/app/static/data
|
||||
|
@ -19,5 +19,6 @@ do
|
||||
mv config.tmp config.json
|
||||
done
|
||||
|
||||
npm install
|
||||
exec npm run dev
|
||||
npm i --omit=dev
|
||||
npm run build
|
||||
exec npm run start
|
||||
|
@ -110,17 +110,19 @@ const createLoginResponse = (myAddress: string, account: IDatabaseAccountJson, b
|
||||
Groups: [],
|
||||
IRC: config.myIrcAddresses ?? [myAddress],
|
||||
NRS: config.NRS,
|
||||
DTLS: 99,
|
||||
BuildLabel: buildLabel
|
||||
};
|
||||
if (version_compare(buildLabel, "2022.04.29.12.53") >= 0) {
|
||||
resp.ClientType = account.ClientType;
|
||||
if (version_compare(buildLabel, "2022.09.06.19.24") >= 0) {
|
||||
resp.CrossPlatformAllowed = account.CrossPlatformAllowed;
|
||||
resp.HUB = `https://${myAddress}/api/`;
|
||||
resp.MatchmakingBuildId = buildConfig.matchmakingBuildId;
|
||||
if (version_compare(buildLabel, "2023.04.25.23.40") >= 0) {
|
||||
resp.platformCDNs = [`https://${myAddress}/`];
|
||||
if (version_compare(buildLabel, "2021.04.13.19.58") >= 0) {
|
||||
resp.DTLS = 99;
|
||||
if (version_compare(buildLabel, "2022.04.29.12.53") >= 0) {
|
||||
resp.ClientType = account.ClientType;
|
||||
if (version_compare(buildLabel, "2022.09.06.19.24") >= 0) {
|
||||
resp.CrossPlatformAllowed = account.CrossPlatformAllowed;
|
||||
resp.HUB = `https://${myAddress}/api/`;
|
||||
resp.MatchmakingBuildId = buildConfig.matchmakingBuildId;
|
||||
if (version_compare(buildLabel, "2023.04.25.23.40") >= 0) {
|
||||
resp.platformCDNs = [`https://${myAddress}/`];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -63,7 +63,9 @@ export const missionInventoryUpdateController: RequestHandler = async (req, res)
|
||||
missionReport.MissionStatus !== "GS_SUCCESS" &&
|
||||
!(missionReport.RewardInfo?.jobId || missionReport.RewardInfo?.challengeMissionId)
|
||||
) {
|
||||
inventory.RewardSeed = generateRewardSeed();
|
||||
if (missionReport.EndOfMatchUpload) {
|
||||
inventory.RewardSeed = generateRewardSeed();
|
||||
}
|
||||
await inventory.save();
|
||||
const inventoryResponse = await getInventoryResponse(inventory, true, account.BuildLabel);
|
||||
res.json({
|
||||
@ -82,7 +84,9 @@ export const missionInventoryUpdateController: RequestHandler = async (req, res)
|
||||
ConquestCompletedMissionsCount
|
||||
} = await addMissionRewards(inventory, missionReport, firstCompletion);
|
||||
|
||||
inventory.RewardSeed = generateRewardSeed();
|
||||
if (missionReport.EndOfMatchUpload) {
|
||||
inventory.RewardSeed = generateRewardSeed();
|
||||
}
|
||||
await inventory.save();
|
||||
const inventoryResponse = await getInventoryResponse(inventory, true, account.BuildLabel);
|
||||
|
||||
|
@ -298,26 +298,42 @@ const pushSortieIfRelevant = (worldState: IWorldState, day: number): void => {
|
||||
"SORTIE_MODIFIER_TOXIN",
|
||||
"SORTIE_MODIFIER_POISON",
|
||||
"SORTIE_MODIFIER_HAZARD_RADIATION",
|
||||
"SORTIE_MODIFIER_HAZARD_MAGNETIC",
|
||||
"SORTIE_MODIFIER_HAZARD_FOG", // TODO: push this if the mission tileset is Grineer Forest
|
||||
"SORTIE_MODIFIER_HAZARD_FIRE", // TODO: push this if the mission tileset is Corpus Ship or Grineer Galleon
|
||||
"SORTIE_MODIFIER_HAZARD_ICE",
|
||||
"SORTIE_MODIFIER_HAZARD_COLD",
|
||||
"SORTIE_MODIFIER_SECONDARY_ONLY",
|
||||
"SORTIE_MODIFIER_SHOTGUN_ONLY",
|
||||
"SORTIE_MODIFIER_SNIPER_ONLY",
|
||||
"SORTIE_MODIFIER_RIFLE_ONLY",
|
||||
"SORTIE_MODIFIER_BOW_ONLY"
|
||||
];
|
||||
const pushTilesetModifiers = (tileset: string): void => {
|
||||
switch (tileset) {
|
||||
case "SORTIE_MODIFIER_HAZARD_FOG":
|
||||
modifiers.push("SORTIE_MODIFIER_HAZARD_FOG");
|
||||
break;
|
||||
case "CorpusShipTileset":
|
||||
case "GrineerGalleonTileset":
|
||||
case "InfestedCorpusShipTileset":
|
||||
modifiers.push("SORTIE_MODIFIER_HAZARD_MAGNETIC");
|
||||
modifiers.push("SORTIE_MODIFIER_HAZARD_FIRE");
|
||||
modifiers.push("SORTIE_MODIFIER_HAZARD_ICE");
|
||||
break;
|
||||
case "CorpusIcePlanetTileset":
|
||||
case "CorpusIcePlanetTilesetCaves":
|
||||
modifiers.push("SORTIE_MODIFIER_HAZARD_COLD");
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
if (i == 2 && boss != "SORTIE_BOSS_CORRUPTED_VOR" && rng.randomInt(0, 2) == 2) {
|
||||
const tileset = sortieTilesets[sortieBossNode[boss] as keyof typeof sortieTilesets];
|
||||
pushTilesetModifiers(tileset);
|
||||
|
||||
const modifierType = rng.randomElement(modifiers)!;
|
||||
|
||||
selectedNodes.push({
|
||||
missionType: "MT_ASSASSINATION",
|
||||
modifierType,
|
||||
node: sortieBossNode[boss],
|
||||
tileset: sortieTilesets[sortieBossNode[boss] as keyof typeof sortieTilesets]
|
||||
tileset
|
||||
});
|
||||
continue;
|
||||
}
|
||||
@ -343,13 +359,16 @@ const pushSortieIfRelevant = (worldState: IWorldState, day: number): void => {
|
||||
modifiers.push("SORTIE_MODIFIER_SHIELDS");
|
||||
}
|
||||
|
||||
const tileset = sortieTilesets[node as keyof typeof sortieTilesets];
|
||||
pushTilesetModifiers(tileset);
|
||||
|
||||
const modifierType = rng.randomElement(modifiers)!;
|
||||
|
||||
selectedNodes.push({
|
||||
missionType,
|
||||
modifierType,
|
||||
node,
|
||||
tileset: sortieTilesets[node as keyof typeof sortieTilesets]
|
||||
tileset
|
||||
});
|
||||
nodes.splice(randomIndex, 1);
|
||||
missionTypes.add(missionType);
|
||||
|
@ -50,7 +50,7 @@ export interface ILoginResponse extends IAccountAndLoginResponseCommons {
|
||||
MatchmakingBuildId?: string;
|
||||
platformCDNs?: string[];
|
||||
NRS?: string[];
|
||||
DTLS: number;
|
||||
DTLS?: number;
|
||||
IRC: string[];
|
||||
HUB?: string;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user