This is the official documentation for S1API, the unofficial modding API for Schedule I, designed to provide deep, accurate, and reliable entry points into the game's systems.
- DeadDrops
- GameTime
- Internal Abstraction
- Items
- Leveling
- Money
- NPCs
- PhoneApp
- Products
- Quests
- Saveables
- Storages
- UI
DeadDropManager (S1API.DeadDrops)
Manages the spawning, tracking, and removal of Dead Drop loot containers in the world. Interfaces with SaveSystem for persistence.
| Parameter | Type | Description |
|---|---|---|
location |
Vector3 |
The 3D coordinates where the drop will be placed. |
Returns: void
- Registers new drops into Saveables.
- Drop becomes immediately interactable.
- Included in game saves.
var manager = new DeadDropManager();
manager.SpawnDeadDrop(new Vector3(500f, 0f, 800f));- Validate location with
WorldUtils.IsLocationWalkable. - Dead Drops should not overlap with world obstacles.
DeadDropInstance (S1API.DeadDrops)
Represents a single active Dead Drop entity in the world.
| Property | Type | Description |
|---|---|---|
Location |
Vector3 |
Where the Dead Drop resides. |
IsCollected |
bool |
Whether the player has collected it. |
Marks the Dead Drop as collected, deregistering it from active Saveables.
var drop = new DeadDropInstance();
if (!drop.IsCollected)
{
drop.Collect();
}- May trigger quests if tied to mission objectives.
TimeManager (S1API.GameTime)
Manages the passage of time in-game, including advancing hours, days, and triggering time-sensitive events.
Advances the clock by one hour.
Fetches the current world time.
var timeManager = new TimeManager();
timeManager.AdvanceHour();
Console.WriteLine(timeManager.GetCurrentTime().Hour);- Some NPC behaviors change based on hour of day.
Registerable (S1API.Internal.Abstraction)
Base class for systems or objects that must be registered with central managers.
- Not directly used by players, but essential for framework extension.
Saveable (S1API.Internal.Abstraction)
Defines entities that can be serialized into game save files.
- Used by systems like DeadDrops, Inventories, etc.
ItemManager (S1API.Items)
Manages item creation, lookup, and assignment in the game.
| Parameter | Type | Description |
|---|---|---|
itemId |
string |
ID reference of the item type. |
quantity |
int |
Number of items to create. |
Returns: ItemInstance
var itemManager = new ItemManager();
var newItem = itemManager.CreateItem("cocaine_brick", 1);- Make sure
itemIdmatches the registry keys in the Product definitions.
ItemSlotInstance (S1API.Items)
Represents a slot holding an item in inventory or storage.
Increases the quantity of the held item.
var slot = new ItemSlotInstance();
slot.AddQuantity(5);LevelManager (S1API.Leveling)
Handles player progression, level gains, and experience calculation.
- (To be documented based on full source parsing)
- Connected to quest completions and milestones.
CashInstance (S1API.Money)
Represents a tangible money object in-game.
Increases money held.
Sets total money to a fixed value.
var cash = new CashInstance();
cash.AddQuantity(500f);NPC (S1API.NPCs)
Represents a non-player character (NPC) in the world, capable of sending messages and interacting with the player.
void SendTextMessage(string message, Response[]? responses = null, float responseDelay = 1f, bool network = true)
Sends a text message from the NPC to the player.
| Parameter | Type | Description |
|---|---|---|
message |
string |
Text to send. |
responses |
Response[]? |
Optional reply choices. |
responseDelay |
float |
Time before allowing response. |
network |
bool |
Whether to sync message over network. |
var npc = new NPC();
npc.SendTextMessage("Meet me at the drop point.");PhoneApp (S1API.PhoneApp)
Represents an application installed on the in-game smartphone.
- Phone apps provide interaction UIs for player utility (e.g., shops, communication).
MyAwesomeApp (S1API.PhoneApp)
Template base for custom modded apps built by developers.
- Extend UI and functionality for personal or public mods.
- Highly customizable base class.
Quest (S1API.Quests)
Represents a quest or mission that the player can undertake.
- Starts the quest.
- Marks the quest as completed successfully.
- Cancels the quest prematurely.
- Marks the quest as failed.
- Finishes the quest cleanup.
var quest = new Quest();
quest.Begin();QuestEntry (S1API.Quests)
Represents an individual step or objective within a Quest.
- Starts the step.
- Completes the step.
- Changes the state of the entry.
QuestManager (S1API.Quests)
Global quest management system handling all active, completed, and failed quests.
- Tracks quest states, triggers events.
ProductManager (S1API.Products)
Manages creation, definition, and tracking of all in-game product types such as drugs, packaging, and crafted items.
- Interfaces with crafting, selling, and inventory systems.
ProductDefinition (S1API.Products)
Defines base attributes for a single type of product (e.g., cocaine brick, meth baggie).
- Weight, Purity, Price data, etc.
- Used heavily by
ItemManagerandProductManager.
SaveableField (S1API.Saveables)
Represents a serializable field tied to save/load operations for objects like inventories, NPCs, player data.
- Used throughout all persistent systems.
StorageInstance (S1API.Storages)
Represents an interactive container or inventory storage (e.g., warehouse, player stash).
Checks if the given item can fit into this storage instance.
Adds a new item into the storage.
var storage = new StorageInstance();
var item = new ItemInstance();
if (storage.CanItemFit(item))
{
storage.AddItem(item);
}UIFactory (S1API.UI)
Helper class to create UI elements programmatically.
- Create buttons, labels, panels, windows, etc.
- Used mainly inside custom Phone Apps.
ClickHandler (S1API.UI)
Handles click interaction logic for UI elements.
- Basic OnClick callbacks for UI events.