type puppetEntry = ["Character", Player] | ["Placeholder", "Placeholder"]; type serverMessageType = "init" | "promptError" | "enterGame"; type clientMessageType = "Placeholder"; interface saveDataEntry { placeholder: string; } interface playerStorageEntry { inMainMenu: boolean; // + Other data that is unique to players but does not persist between sessions saveData: saveDataEntry; entity?: entity; } interface puppet { model: Model; rootPart: Part; //placeholder: (x: string) => string; // + "Puppet string" functions will (not?) go here } interface entity { baseStats: [number, number, number, number]; // MaxHealth, Attack, Speed, Defense (things used for calculation, only modified by buffs and debuffs) baseAmounts: [number, number]; // Health, Barrier (things of indescribable importance) puppet: puppet; } interface event { winEvents?: event[]; // A list of events that need to return true (in sequence) to complete this event winEntities?: entity[]; // A list of entities that need to die to complete the event timeout?: number; // A timeout for the event; passes a lose condition if there are other completion requirements that have not been satisfied } /*interface hookInEntry { name: string; guiObject: GuiObject; }*/ /*interface runningEvent { endTime?: number; }*/