forked from OpenWF/SpaceNinjaServer
		
	Compare commits
	
		
			9 Commits
		
	
	
		
			9823729aa8
			...
			a5d74b92c8
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| a5d74b92c8 | |||
| f15f2bfdbd | |||
| c1fcd3042e | |||
| fb232f74bd | |||
| c267ce47c3 | |||
| 3537c7e436 | |||
| 3b3edaced4 | |||
| e46b3c7d29 | |||
| 241f0c894a | 
							
								
								
									
										24
									
								
								.github/workflows/docker.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								.github/workflows/docker.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,24 @@
 | 
			
		||||
name: Build Docker image
 | 
			
		||||
on:
 | 
			
		||||
    push:
 | 
			
		||||
        branches:
 | 
			
		||||
            - main
 | 
			
		||||
jobs:
 | 
			
		||||
    docker:
 | 
			
		||||
        runs-on: ubuntu-latest
 | 
			
		||||
        steps:
 | 
			
		||||
            - name: Set up Docker buildx
 | 
			
		||||
              uses: docker/setup-buildx-action@v3
 | 
			
		||||
            - name: Log in to container registry
 | 
			
		||||
              uses: docker/login-action@v3
 | 
			
		||||
              with:
 | 
			
		||||
                  username: openwf
 | 
			
		||||
                  password: ${{ secrets.DOCKERHUB_TOKEN }}
 | 
			
		||||
            - name: Build and push
 | 
			
		||||
              uses: docker/build-push-action@v6
 | 
			
		||||
              with:
 | 
			
		||||
                  platforms: linux/amd64,linux/arm64
 | 
			
		||||
                  push: true
 | 
			
		||||
                  tags: |
 | 
			
		||||
                      openwf/spaceninjaserver:latest
 | 
			
		||||
                      openwf/spaceninjaserver:${{ github.sha }}
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
services:
 | 
			
		||||
    openwf:
 | 
			
		||||
    spaceninjaserver:
 | 
			
		||||
        # build: .
 | 
			
		||||
        image: ghcr.io/spaceninjaserver/SpaceNinjaServer:latest
 | 
			
		||||
        image: openwf/spaceninjaserver:latest
 | 
			
		||||
        environment:
 | 
			
		||||
            APP_MONGODB_URL: mongodb://openwfagent:spaceninjaserver@mongodb:27017/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -195,7 +195,7 @@ export const getInventoryResponse = async (
 | 
			
		||||
 | 
			
		||||
    if (config.universalPolarityEverywhere) {
 | 
			
		||||
        const Polarity: IPolarity[] = [];
 | 
			
		||||
        for (let i = 0; i != 10; ++i) {
 | 
			
		||||
        for (let i = 0; i != 12; ++i) {
 | 
			
		||||
            Polarity.push({
 | 
			
		||||
                Slot: i,
 | 
			
		||||
                Value: ArtifactPolarity.Any
 | 
			
		||||
 | 
			
		||||
@ -3,12 +3,23 @@ import { getAccountIdForRequest } from "@/src/services/loginService";
 | 
			
		||||
import { IEquipmentClient } from "@/src/types/inventoryTypes/commonInventoryTypes";
 | 
			
		||||
import { TEquipmentKey } from "@/src/types/inventoryTypes/inventoryTypes";
 | 
			
		||||
import { RequestHandler } from "express";
 | 
			
		||||
import { ExportMisc } from "warframe-public-export-plus";
 | 
			
		||||
 | 
			
		||||
export const addXpController: RequestHandler = async (req, res) => {
 | 
			
		||||
    const accountId = await getAccountIdForRequest(req);
 | 
			
		||||
    const inventory = await getInventory(accountId);
 | 
			
		||||
    const request = req.body as IAddXpRequest;
 | 
			
		||||
    for (const [category, gear] of Object.entries(request)) {
 | 
			
		||||
        for (const clientItem of gear) {
 | 
			
		||||
            const dbItem = inventory[category as TEquipmentKey].id(clientItem.ItemId.$oid);
 | 
			
		||||
            if (dbItem) {
 | 
			
		||||
                if (dbItem.ItemType in ExportMisc.uniqueLevelCaps) {
 | 
			
		||||
                    if ((dbItem.Polarized ?? 0) < 5) {
 | 
			
		||||
                        dbItem.Polarized = 5;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        addGearExpByCategory(inventory, gear, category as TEquipmentKey);
 | 
			
		||||
    }
 | 
			
		||||
    await inventory.save();
 | 
			
		||||
 | 
			
		||||
@ -155,7 +155,7 @@ export const importInventory = (db: TInventoryDatabaseDocument, client: Partial<
 | 
			
		||||
    if (client.Upgrades !== undefined) {
 | 
			
		||||
        replaceArray<IUpgradeDatabase>(db.Upgrades, client.Upgrades.map(convertUpgrade));
 | 
			
		||||
    }
 | 
			
		||||
    for (const key of ["RawUpgrades", "MiscItems"] as const) {
 | 
			
		||||
    for (const key of ["RawUpgrades", "MiscItems", "Consumables"] as const) {
 | 
			
		||||
        if (client[key] !== undefined) {
 | 
			
		||||
            db[key].splice(0, db[key].length);
 | 
			
		||||
            client[key].forEach(x => {
 | 
			
		||||
 | 
			
		||||
@ -240,7 +240,14 @@ export const addItem = async (
 | 
			
		||||
                }
 | 
			
		||||
            };
 | 
			
		||||
        } else if (ExportResources[typeName].productCategory == "CrewShips") {
 | 
			
		||||
            const inventoryChanges = addCrewShip(inventory, typeName);
 | 
			
		||||
            const inventoryChanges = {
 | 
			
		||||
                ...addCrewShip(inventory, typeName),
 | 
			
		||||
                // fix to unlock railjack modding, item bellow supposed to be obtained from archwing quest
 | 
			
		||||
                ...(!inventory.CrewShipHarnesses?.length
 | 
			
		||||
                    ? addCrewShipHarness(inventory, "/Lotus/Types/Game/CrewShip/RailJack/DefaultHarness")
 | 
			
		||||
                    : {})
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            return { InventoryChanges: inventoryChanges };
 | 
			
		||||
        } else if (ExportResources[typeName].productCategory == "ShipDecorations") {
 | 
			
		||||
            const changes = [
 | 
			
		||||
@ -810,6 +817,17 @@ const addCrewShip = (
 | 
			
		||||
    return inventoryChanges;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const addCrewShipHarness = (
 | 
			
		||||
    inventory: TInventoryDatabaseDocument,
 | 
			
		||||
    typeName: string,
 | 
			
		||||
    inventoryChanges: IInventoryChanges = {}
 | 
			
		||||
): IInventoryChanges => {
 | 
			
		||||
    const index = inventory.CrewShipHarnesses.push({ ItemType: typeName }) - 1;
 | 
			
		||||
    inventoryChanges.CrewShipHarnesses ??= [];
 | 
			
		||||
    (inventoryChanges.CrewShipHarnesses as object[]).push(inventory.CrewShipHarnesses[index].toJSON());
 | 
			
		||||
    return inventoryChanges;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
//TODO: wrong id is not erroring
 | 
			
		||||
export const addGearExpByCategory = (
 | 
			
		||||
    inventory: TInventoryDatabaseDocument,
 | 
			
		||||
@ -823,12 +841,10 @@ export const addGearExpByCategory = (
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        const itemIndex = ItemId ? category.findIndex(item => item._id?.equals(ItemId.$oid)) : -1;
 | 
			
		||||
        if (itemIndex !== -1) {
 | 
			
		||||
            const item = category[itemIndex];
 | 
			
		||||
        const item = category.id(ItemId.$oid);
 | 
			
		||||
        if (item) {
 | 
			
		||||
            item.XP ??= 0;
 | 
			
		||||
            item.XP += XP;
 | 
			
		||||
            inventory.markModified(`${categoryName}.${itemIndex}.XP`);
 | 
			
		||||
 | 
			
		||||
            const xpinfoIndex = inventory.XPInfo.findIndex(x => x.ItemType == item.ItemType);
 | 
			
		||||
            if (xpinfoIndex !== -1) {
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 4.9 KiB  | 
@ -368,7 +368,7 @@
 | 
			
		||||
            </div>
 | 
			
		||||
            <div data-route="/webui/cheats, /webui/settings" data-title="Cheats | OpenWF WebUI">
 | 
			
		||||
                <div class="row g-3">
 | 
			
		||||
                    <div class="col-lg-4">
 | 
			
		||||
                    <div class="col-md-6">
 | 
			
		||||
                        <div class="card mb-3">
 | 
			
		||||
                            <h5 class="card-header">Server</h5>
 | 
			
		||||
                            <div class="card-body">
 | 
			
		||||
@ -479,7 +479,7 @@
 | 
			
		||||
                            </div>
 | 
			
		||||
                        </div>
 | 
			
		||||
                    </div>
 | 
			
		||||
                    <div class="col-lg-4">
 | 
			
		||||
                    <div class="col-md-6">
 | 
			
		||||
                        <div class="card mb-3">
 | 
			
		||||
                            <h5 class="card-header">Account</h5>
 | 
			
		||||
                            <div class="card-body">
 | 
			
		||||
@ -488,26 +488,6 @@
 | 
			
		||||
                            </div>
 | 
			
		||||
                        </div>
 | 
			
		||||
                    </div>
 | 
			
		||||
                    <div class="col-lg-4">
 | 
			
		||||
                        <div class="card mb-3">
 | 
			
		||||
                            <h5 class="card-header">Client</h5>
 | 
			
		||||
                            <div id="client-cheats-nok" class="card-body">
 | 
			
		||||
                                Client cheats are currently unavailable. This could be because your client is not running or using a DLL without an HTTP interface.
 | 
			
		||||
                            </div>
 | 
			
		||||
                            <div id="client-cheats-ok" class="card-body d-none">
 | 
			
		||||
                                <div class="form-check">
 | 
			
		||||
                                    <input class="form-check-input" type="checkbox" id="skip_mission_start_timer" />
 | 
			
		||||
                                    <label class="form-check-label" for="skip_mission_start_timer">
 | 
			
		||||
                                        Skip Mission Start Timer
 | 
			
		||||
                                    </label>
 | 
			
		||||
                                </div>
 | 
			
		||||
                                <div class="form-group mt-3">
 | 
			
		||||
                                    <label class="form-label" for="fov_override">FOV Override (0 to disable)</label>
 | 
			
		||||
                                    <input id="fov_override" class="form-range" type="range" min="0" value="0" max="2260000" step="10000">
 | 
			
		||||
                                </div>
 | 
			
		||||
                            </div>
 | 
			
		||||
                        </div>
 | 
			
		||||
                    </div>
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>
 | 
			
		||||
            <div data-route="/webui/import" data-title="Import | OpenWF WebUI">
 | 
			
		||||
 | 
			
		||||
@ -915,34 +915,6 @@ single.getRoute("/webui/cheats").on("beforeload", function () {
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
    }, 10);
 | 
			
		||||
 | 
			
		||||
    fetch("http://localhost:61558/ping", { mode: "no-cors" })
 | 
			
		||||
        .then(() => {
 | 
			
		||||
            $("#client-cheats-ok").removeClass("d-none");
 | 
			
		||||
            $("#client-cheats-nok").addClass("d-none");
 | 
			
		||||
 | 
			
		||||
            fetch("http://localhost:61558/skip_mission_start_timer")
 | 
			
		||||
                .then(res => res.text())
 | 
			
		||||
                .then(res => {
 | 
			
		||||
                    document.getElementById("skip_mission_start_timer").checked = res == "1";
 | 
			
		||||
                });
 | 
			
		||||
            document.getElementById("skip_mission_start_timer").onchange = function () {
 | 
			
		||||
                fetch("http://localhost:61558/skip_mission_start_timer?" + this.checked);
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            fetch("http://localhost:61558/fov_override")
 | 
			
		||||
                .then(res => res.text())
 | 
			
		||||
                .then(res => {
 | 
			
		||||
                    document.getElementById("fov_override").value = parseFloat(res) * 10000;
 | 
			
		||||
                });
 | 
			
		||||
            document.getElementById("fov_override").oninput = function () {
 | 
			
		||||
                fetch("http://localhost:61558/fov_override?" + this.value);
 | 
			
		||||
            };
 | 
			
		||||
        })
 | 
			
		||||
        .catch(function () {
 | 
			
		||||
            $("#client-cheats-nok").removeClass("d-none");
 | 
			
		||||
            $("#client-cheats-ok").addClass("d-none");
 | 
			
		||||
        });
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
function doUnlockAllFocusSchools() {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user