320 lines
11 KiB
JSON
320 lines
11 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"title": "OSRS Codex Entry",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"id", "title", "domain", "tags", "status", "version", "updated",
|
|
"summary", "accounts", "best_practice", "state_machine", "actions",
|
|
"run_control", "risk", "sources", "verified"
|
|
],
|
|
"properties": {
|
|
"id": { "type": "string", "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$", "maxLength": 64 },
|
|
"title": { "type": "string", "minLength": 3 },
|
|
"domain": {
|
|
"enum": ["economy", "training", "combat", "combat-slayers", "quests", "transport", "meta"]
|
|
},
|
|
"tags": { "type": "array", "items": { "type": "string" }, "minItems": 1 },
|
|
"status": { "enum": ["draft", "verified", "stale"] },
|
|
"version": { "type": "integer", "minimum": 1 },
|
|
"updated": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" },
|
|
"summary": { "type": "string", "minLength": 10 },
|
|
|
|
"accounts": {
|
|
"type": "object",
|
|
"required": ["membership", "min_level"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"membership": { "enum": ["f2p", "members", "hybrid"] },
|
|
"min_level": { "type": "integer", "minimum": 1, "maximum": 126 },
|
|
"requires_quest": { "type": "array", "items": { "type": "string" } },
|
|
"requires_other": { "type": "array", "items": { "type": "string" } }
|
|
}
|
|
},
|
|
|
|
"economy": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"item": { "type": "string" },
|
|
"item_id": { "type": "integer" },
|
|
"cost_per_cycle": { "type": "number" },
|
|
"income_per_cycle": { "type": "number" },
|
|
"net_per_cycle": { "type": "number" },
|
|
"gp_per_hour_low": { "type": "number" },
|
|
"gp_per_hour_high": { "type": "number" },
|
|
"xp_per_hour": { "type": "number" },
|
|
"supplies": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": ["item", "qty_per_cycle", "source"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"item": { "type": "string" },
|
|
"qty_per_cycle": { "type": "number", "exclusiveMinimum": 0 },
|
|
"source": { "enum": ["ge", "p2p", "drops", "craft", "bank", "npc-shop"] },
|
|
"ge_limit": { "type": "integer", "minimum": 1 }
|
|
}
|
|
}
|
|
},
|
|
"profit_drivers": { "type": "array", "items": { "type": "string" } }
|
|
}
|
|
},
|
|
|
|
"selection": {
|
|
"type": "object",
|
|
"required": ["mode", "eligible_rule", "fallback"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"mode": { "enum": ["highest-unlocked"] },
|
|
"eligible_rule": { "type": "string", "minLength": 10 },
|
|
"fallback": { "type": "string", "minLength": 10 }
|
|
}
|
|
},
|
|
|
|
"recipes": {
|
|
"type": "object",
|
|
"minProperties": 1,
|
|
"propertyNames": { "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$" },
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"required": ["bar", "smithing_level", "target_input", "inputs"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"bar": { "type": "string", "minLength": 2 },
|
|
"bar_item_id": { "type": "integer", "minimum": 1 },
|
|
"smithing_level": { "type": "integer", "minimum": 1, "maximum": 126 },
|
|
"smithing_xp": { "type": "number", "exclusiveMinimum": 0 },
|
|
"target_input": { "type": "string", "minLength": 2 },
|
|
"inputs": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "object",
|
|
"required": ["item", "qty", "source"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"item": { "type": "string", "minLength": 2 },
|
|
"item_id": { "type": "integer", "minimum": 1 },
|
|
"qty": { "type": "integer", "minimum": 1 },
|
|
"source": { "enum": ["ge", "p2p", "drops", "craft", "bank", "npc-shop"] }
|
|
}
|
|
}
|
|
},
|
|
"rates": {
|
|
"type": "object",
|
|
"required": ["capacity", "casts_per_hour", "magic_xp_per_hour"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"capacity": { "type": "integer", "minimum": 1 },
|
|
"casts_per_hour": {
|
|
"type": "object",
|
|
"required": ["min", "mid", "max"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"min": { "type": "number", "minimum": 0 },
|
|
"mid": { "type": "number", "minimum": 0 },
|
|
"max": { "type": "number", "minimum": 0 }
|
|
}
|
|
},
|
|
"magic_xp_per_hour": {
|
|
"type": "object",
|
|
"required": ["min", "mid", "max"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"min": { "type": "number", "minimum": 0 },
|
|
"mid": { "type": "number", "minimum": 0 },
|
|
"max": { "type": "number", "minimum": 0 }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
"rate_model": {
|
|
"type": "object",
|
|
"required": ["anchor_tier", "cast_ticks", "restock_trip_s", "session_horizon_s"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"anchor_tier": { "enum": ["la", "sii", "hla"] },
|
|
"anchor_recipe": { "type": "string" },
|
|
"cast_ticks": { "type": "integer", "minimum": 1 },
|
|
"restock_trip_s": {
|
|
"type": "array",
|
|
"items": { "type": "number", "minimum": 0 },
|
|
"minItems": 2,
|
|
"maxItems": 2
|
|
},
|
|
"session_horizon_s": { "type": "integer", "minimum": 1 },
|
|
"startup_s": {
|
|
"type": "array",
|
|
"items": { "type": "number", "minimum": 0 },
|
|
"minItems": 2,
|
|
"maxItems": 2
|
|
},
|
|
"alch_carry_batch": { "type": "integer", "minimum": 1 },
|
|
"alch_restock_threshold": { "type": "integer", "minimum": 0 },
|
|
"sii_capacity_slots": { "type": "integer", "minimum": 1 }
|
|
}
|
|
},
|
|
|
|
"best_practice": {
|
|
"type": "object",
|
|
"required": ["equipment"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"equipment": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": ["item", "why", "source"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"item": { "type": "string", "minLength": 2 },
|
|
"why": { "type": "string", "minLength": 5 },
|
|
"source": { "type": "string", "minLength": 5 }
|
|
}
|
|
}
|
|
},
|
|
"techniques": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": ["name", "why", "source"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"name": { "type": "string", "minLength": 2 },
|
|
"why": { "type": "string", "minLength": 5 },
|
|
"source": { "type": "string", "minLength": 5 }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
"state_machine": {
|
|
"type": "object",
|
|
"required": ["initial", "terminal", "states"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"initial": { "type": "string" },
|
|
"terminal": {
|
|
"type": "array",
|
|
"items": { "type": "string" },
|
|
"minItems": 1,
|
|
"contains": { "const": "failed" }
|
|
},
|
|
"states": {
|
|
"type": "object",
|
|
"minProperties": 2,
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"required": ["goal"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"goal": { "type": "string", "minLength": 3 },
|
|
"next": { "type": "array", "items": { "type": "string" }, "minItems": 1 }
|
|
}
|
|
}
|
|
},
|
|
"transitions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": ["from", "when", "to"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"from": { "type": "string" },
|
|
"when": { "type": "string", "minLength": 3 },
|
|
"to": { "type": "string" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
"actions": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"type": "object",
|
|
"required": ["id", "step", "verb", "on_fail"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"id": { "type": "string", "pattern": "^a[0-9]+$" },
|
|
"step": { "type": "string", "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$" },
|
|
"verb": {
|
|
"enum": [
|
|
"login", "select_world", "hop_world", "is_logged_in",
|
|
"move_to", "walk_to", "teleport", "enter_region", "open_door",
|
|
"use_item_on", "click_object", "right_click", "talk_to",
|
|
"click_button", "menu_option",
|
|
"bank_inventory", "deposit_all", "withdraw", "has_item",
|
|
"count_item", "move_to_inv", "sort_inventory",
|
|
"ge_open", "ge_buy", "ge_sell", "ge_offers_done", "ge_collect",
|
|
"ge_check_price",
|
|
"attack", "prayer", "buff", "eat", "retreat", "is_dead", "respawn",
|
|
"is_at", "item_count", "level_is", "xp_is", "hp_is",
|
|
"ge_clear", "bank_open", "quest_state", "npc_present",
|
|
"log", "alert", "sleep", "human_move", "take_break"
|
|
]
|
|
},
|
|
"target": { "type": "string" },
|
|
"params": { "type": "object" },
|
|
"on_fail": { "enum": ["retry", "skip", "abort", "alert"] },
|
|
"anti_ban": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"delay": {
|
|
"type": "array",
|
|
"items": { "type": "number", "minimum": 0 },
|
|
"minItems": 2,
|
|
"maxItems": 2
|
|
},
|
|
"mouse": { "type": "string" },
|
|
"jitter": { "type": "number", "minimum": 0 }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
"run_control": {
|
|
"type": "object",
|
|
"required": ["iteration", "stop_conditions"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"iteration": { "type": "string" },
|
|
"max_iterations": { "type": ["integer", "null"], "minimum": 1 },
|
|
"break": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"every": { "type": "array", "items": { "type": "number", "minimum": 1 }, "minItems": 2, "maxItems": 2 },
|
|
"for": { "type": "array", "items": { "type": "number", "minimum": 1 }, "minItems": 2, "maxItems": 2 }
|
|
}
|
|
},
|
|
"stop_conditions": { "type": "array", "items": { "type": "string" }, "minItems": 1 }
|
|
}
|
|
},
|
|
|
|
"risk": {
|
|
"type": "object",
|
|
"required": ["ban_level"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"ban_level": { "enum": ["low", "medium", "high"] },
|
|
"notes": { "type": "array", "items": { "type": "string" } }
|
|
}
|
|
},
|
|
|
|
"sources": { "type": "array", "items": { "type": "string" }, "minItems": 1 },
|
|
"verified": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" },
|
|
"related": { "type": "array", "items": { "type": "string" } }
|
|
}
|
|
}
|