You are viewing a potentially older version of this package. View all versions.
MikuOreo-LCStatsTracker-1.2.4 icon

LCStatsTracker

Local Stats Tracker

Date uploaded 3 weeks ago
Version 1.2.4
Download link MikuOreo-LCStatsTracker-1.2.4.zip
Downloads 1827
Dependency string MikuOreo-LCStatsTracker-1.2.4

This mod requires the following mods to function

BepInEx-BepInExPack-5.4.2100 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2100

README

StatTracker

StatTracker is a mod that allows you to see (almost) everything that happened during your day, it tracks everything automatically as you play and pushes all the info as a JSON at the end of the day to a local server. This is meant to allow people to treat this data however they want.

Local server

The local server is hosted on port 2145, it uses SSE and can be queried at any time but will only release the data after the current day ends. The data can only be queried once per day, once it is sent the server will wait for the next day to finish.

Just HTTP request it and wait until the day is over to get your stats.

JSON Schema

{
  "title": "Stats",
  "type": "object",
  "required": [
    "Seed",
    "Version",
    "MoonInfo",
    "PerformanceInfo",
    "BeeInfo",
    "EggInfo",
    "KnifeInfo",
    "ShotgunInfo",
    "QuotaInfo",
    "EventInfo",
    "Players",
    "IndoorSpawns",
    "DayTimeSpawns",
    "NightTimeSpawns",
    "ShopSales",
    "FurnitureInfo",
    "GiftBoxesOpened",
    "MissedItems"
  ],
  "properties": {
    "Seed":    { "type": "integer" },
    "Version": { "type": "integer" },

    "MoonInfo": {
      "type": "object",
      "required": ["Name", "Weather"],
      "properties": {
        "Name":    { "type": "string" },
        "Weather": { "type": "string" }
      }
    },

    "DungeonInfo": {
      "type": ["object", "null"],
      "required": ["ItemCount", "Interior"],
      "properties": {
        "ItemCount": { "type": "integer" },
        "Interior":  { "type": "string" }
      }
    },

    "HazardInfo": {
      "type": ["object", "null"],
      "required": ["TurretCount", "LandmineCount", "SpiketrapCount"],
      "properties": {
        "TurretCount":    { "type": "integer" },
        "LandmineCount":  { "type": "integer" },
        "SpiketrapCount": { "type": "integer" }
      }
    },

    "PerformanceInfo": {
      "type": "object",
      "required": [
        "CollectedNoExtra",
        "CollectedTotal",
        "InitialAvailableValue",
        "TotalAvailableValue",
        "ExtraFromOldGift"
      ],
      "properties": {
        "CollectedNoExtra":      { "type": "integer" },
        "CollectedTotal":        { "type": "integer" },
        "InitialAvailableValue": { "type": "integer" },
        "TotalAvailableValue":   { "type": "integer" },
        "ExtraFromOldGift":      { "type": "integer" }
      }
    },

    "BeeInfo":     { "$ref": "#/$defs/SpecialItemInfo" },
    "EggInfo":     { "$ref": "#/$defs/SpecialItemInfo" },
    "KnifeInfo":   { "$ref": "#/$defs/SpecialItemInfo" },
    "ShotgunInfo": { "$ref": "#/$defs/SpecialItemInfo" },

    "QuotaInfo": {
      "type": "object",
      "required": ["ValueSold", "NewQuota"],
      "properties": {
        "ValueSold": { "type": "integer" },
        "NewQuota":  { "type": "integer" }
      }
    },

    "EventInfo": {
      "type": "object",
      "required": [
        "AppSpawned",
        "IndoorFog",
        "TakeOffTime",
        "SIDType",
        "InfestationType",
        "MeteorShowerTime"
      ],
      "properties": {
        "AppSpawned":      { "type": "boolean" },
        "IndoorFog":       { "type": "boolean" },
        "TakeOffTime":     { "type": "string" },
        "SIDType":         { "type": "string" },
        "InfestationType": { "type": "string" },
        "MeteorShowerTime":{ "type": "string" }
      }
    },

    "Players": {
      "type": "object",
      "additionalProperties": { "$ref": "#/$defs/PlayerStats" }
    },

    "IndoorSpawns":    { "type": "array", "items": { "$ref": "#/$defs/SpawnInfo" } },
    "DayTimeSpawns":   { "type": "array", "items": { "$ref": "#/$defs/SpawnInfo" } },
    "NightTimeSpawns": { "type": "array", "items": { "$ref": "#/$defs/SpawnInfo" } },

    "ShopSales": {
      "type": "object",
      "additionalProperties": { "type": "integer" }
    },

    "FurnitureInfo": {
      "type": "object",
      "additionalProperties": { "$ref": "#/$defs/FurnitureInfo" }
    },

    "GiftBoxesOpened": { "type": "array", "items": { "$ref": "#/$defs/GiftBoxInfo" } },
    "MissedItems":     { "type": "array", "items": { "$ref": "#/$defs/MissingItemInfo" } }
  },

  "$defs": {
    "SpecialItemInfo": {
      "type": "object",
      "required": ["Available", "Collected"],
      "properties": {
        "Available": { "type": "array", "items": { "type": "integer" } },
        "Collected": { "type": "array", "items": { "type": "integer" } }
      }
    },

    "PlayerStats": {
      "type": "object",
      "required": ["Name", "Alive", "Disconnected", "TimeOfDeath", "CauseOfDeath"],
      "properties": {
        "Name":        { "type": "string" },
        "Alive":       { "type": "boolean" },
        "Disconnected":{ "type": "boolean" },
        "TimeOfDeath": { "type": "string" },
        "CauseOfDeath":{ "type": "string" }
      }
    },

    "SpawnInfo": {
      "type": "object",
      "required": ["Enemy", "SpawnTime", "TimeOfDeath"],
      "properties": {
        "Enemy":       { "type": "string" },
        "SpawnTime":   { "type": "string" },
        "TimeOfDeath": { "type": "string" }
      }
    },

    "FurnitureInfo": {
      "type": "object",
      "required": ["InStock", "Owned", "Stored", "ApparentPrice", "RealPrice", "Luck"],
      "properties": {
        "InStock":       { "type": "boolean" },
        "Owned":         { "type": "boolean" },
        "Stored":        { "type": "boolean" },
        "ApparentPrice": { "type": "integer" },
        "RealPrice":     { "type": "integer" },
        "Luck":          { "type": "number" }
      }
    },

    "GiftBoxInfo": {
      "type": "object",
      "required": ["NewScrapValue", "GiftScrapValue", "GiftBoxAge", "Collected"],
      "properties": {
        "NewScrapValue":  { "type": "integer" },
        "GiftScrapValue": { "type": "integer" },
        "GiftBoxAge":     { "type": "integer" },
        "Collected":      { "type": "boolean" }
      }
    },

    "MissingItemInfo": {
      "type": "object",
      "required": ["Value", "ItemType", "SpawnPosition", "DespawnPosition", "CollectedOnPreviousDay", "ScrapInsideGiftValue"],
      "properties": {
        "Value":                  { "type": "integer" },
        "ItemType":               { "type": "string" },
        "SpawnPosition":          { "type": ["array", "null"], "items": { "type": "number" }, "minItems": 3, "maxItems": 3 },
        "DespawnPosition":        { "type": "array", "items": { "type": "number" }, "minItems": 3, "maxItems": 3 },
        "CollectedOnPreviousDay": { "type": "boolean" },
        "ScrapInsideGiftValue":   { "type": "integer" }
      }
    }
  }
}

CHANGELOG

v1.2.4

Changes

  • Changed: List to Array in GiftBoxAge enumerator
  • Changed: Trimmed unneded logic in GetTimeString

Fixes:

  • Fixed: Possible null exception when other players disconnect

v1.2.3

Fixes

  • Fixed: Possible null exception

v1.2.2

Fixes

  • Fixed: Gift Box age increasing even on company

v1.2.1

Fixes

  • Fixed: Possible missing field exception

v1.2.0

Changes

  • Changed: "BottomLine" and "BottomLineTrue" field names to better reflect what they mean
  • Changed: Coupled related fields under new classes

Additions

  • Added: Spawn position to missed item
  • Added: Sales and Furniture info
  • Added: GiftBoxAge field to GiftBoxInfo

Fixes

  • Fixed: Items brought to ship not counting if they were teleported in ship after day ended

v1.1.3

  • Fixed: Double counting of value inside giftbox

v1.1.2

  • Fixed: HazardTracker not reseting if the day didn't finish loading items

v1.1.1 - BEGONE BUGS

Additions

  • Version field

Changes

  • Changed: Gift field names

Fixes

  • Fixed: Client side issue and possible null exception
  • Fixed: "objectInPresentValue" not being populated for client
  • Fixed: Storing the previous seed instead of the current one
  • Fixed: "objectInPresentValue" not being the same as vanilla due timing difference
  • Fixed: ValueSold tracker not working when manual selling
  • Fixed: Gift boxes not working on v40
  • Fixed: Shotgun and Knife "Available" tracker

v1.1.0 - REALLY big update

Under the hood changes

  • Rewrite of the conditonal patch system for better readability

Additions

  • TimeOfDeath to enemies
  • More Gift info

Fixes

  • Fixed: MissedItem tracker
  • Fixed: DepositItemDesk check being too late
  • Fixed: time being lower than possible because of unloaded values
  • Fixed: GiftBox bottom line correction not working for client
  • Fixed: Knife tracker for client
  • Fixed: Items not being correctly for various reasons

Misc

  • Renamed "Total" to "Available" for special items

v1.0.2

  • Fixed NullReference when Nutcrackers spawned while playing as client

v1.0.1

  • Added username to PlayerStats
  • Fixed items loaded in the LevelScene not showing in the MissingItems info

v1.0.0

  • Release