Resources & Examples

Vaughn Royko edited this page Dec 9, 2024 · 2 revisions

The #modding channel is the best way to ask modding-related questions, as it will get the fastest response, between developers and other modders.

Example Mods

Simple

  • Registers: messages
  • Hooks: onGameScreenVisible, onItemEquip, onMove
  • Overrides mod loading cycle methods
  • Logging
  • Sends messages to the player
  • Contains language

Adds a few custom hairdos, hair colors, and skin tones, demonstrating customizations.json.

Adds a pirate-themed language.

Adds a new item that allows you to see the entire map.

  • Registers: a bindable, an action, and an item
  • Hooks: onGameStart, onBindLoop

Adds two music tracks to the game.

  • Registers: two music tracks, a dictionary, and an options section
  • Saves data globally

Overrides the default game textures for some trees to make them appear as if they were ablaze.

Literally all this does is add "literally" in front of most dictionary strings in the game, literally.

  • Demonstrates using "article rules" in languages

Causes the player to respawn with a random appearance, stats, and skills on death.

  • Registers: a message
  • Hooks: onPlayerDeath

A silly language created programmatically.

Advanced

A guided quest for newer players to understand and discover the most important game mechanics in Wayward.

Adds a magical world of clouds!

  • Registers: items, doodads, terrain, creatures, actions, a skill, messages, a note, a help article
  • Hooks: onCreateWorld, preLoadWorldDifferences, preRenderWorld, shouldRender, onGameStart, onPlayerJoin, onMove, onMoveComplete, onSpawnCreatureFromGroup, getTilePenalty
  • Event handlers: Human.canConsumeItem, Creature.canMove, Creature.canAttack, WorldRenderer.canSeeCreature, WorldRenderer.getFogColor
  • Saves data

A script allowing dedicated servers to auto-run challenge games.

  • A mod that can only be run serverside

Very Complex

Adds a lot of debug utilities to the game for inspecting and manipulating the world.

  • Registers: registries, inter-mod registries, bindables, a dictionary, a message, a message source, interrupt choices, actions, dialogs, menu bar buttons, overlays
  • Hooks: postFieldOfView, onGameScreenVisible, getZoomLevel, getCameraPosition, onPlayerDamage, onMove, onNoInputReceived, getPlayerWeightMovementPenalty, getPlayerSpriteBatchLayer, isHumanSwimming, getPlayerMaxWeight, onBindLoop
  • Event handlers: Creature.canAttack, MovementHandler.canMove, WorldRenderer.getMaxSpritesForLayer
  • Injections: WorldRenderer.calculateAmbientColor, Game.calculateAmbientLightLevel, Game.calculateTileLightLevel
  • Many files
  • A lot of UI & actions
  • Custom CSS

TARS is a bot that will play Wayward by itself, doing tasks such as gathering resources, setting up a camp, hunting, getting food/water, and more!

Adds a set of balancing tools to the Debug Tools dialog.

  • Registers: two dictionaries, a registry of actions, and an inter-mod registration to Debug Tools' "MainDialogPanel" registry
  • Hooks: Creature.canMove, NPC.canMove

Getting Started

Mod Content

Script Documentation

(apologies for all the missing guides, we'll get to them at some point)

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Resources & Examples

Vaughn Royko edited this page Dec 9, 2024 · 2 revisions

The #modding channel is the best way to ask modding-related questions, as it will get the fastest response, between developers and other modders.

Example Mods

Simple

  • Registers: messages
  • Hooks: onGameScreenVisible, onItemEquip, onMove
  • Overrides mod loading cycle methods
  • Logging
  • Sends messages to the player
  • Contains language

Adds a few custom hairdos, hair colors, and skin tones, demonstrating customizations.json.

Adds a pirate-themed language.

Adds a new item that allows you to see the entire map.

  • Registers: a bindable, an action, and an item
  • Hooks: onGameStart, onBindLoop

Adds two music tracks to the game.

  • Registers: two music tracks, a dictionary, and an options section
  • Saves data globally

Overrides the default game textures for some trees to make them appear as if they were ablaze.

Literally all this does is add "literally" in front of most dictionary strings in the game, literally.

  • Demonstrates using "article rules" in languages

Causes the player to respawn with a random appearance, stats, and skills on death.

  • Registers: a message
  • Hooks: onPlayerDeath

A silly language created programmatically.

Advanced

A guided quest for newer players to understand and discover the most important game mechanics in Wayward.

Adds a magical world of clouds!

  • Registers: items, doodads, terrain, creatures, actions, a skill, messages, a note, a help article
  • Hooks: onCreateWorld, preLoadWorldDifferences, preRenderWorld, shouldRender, onGameStart, onPlayerJoin, onMove, onMoveComplete, onSpawnCreatureFromGroup, getTilePenalty
  • Event handlers: Human.canConsumeItem, Creature.canMove, Creature.canAttack, WorldRenderer.canSeeCreature, WorldRenderer.getFogColor
  • Saves data

A script allowing dedicated servers to auto-run challenge games.

  • A mod that can only be run serverside

Very Complex

Adds a lot of debug utilities to the game for inspecting and manipulating the world.

  • Registers: registries, inter-mod registries, bindables, a dictionary, a message, a message source, interrupt choices, actions, dialogs, menu bar buttons, overlays
  • Hooks: postFieldOfView, onGameScreenVisible, getZoomLevel, getCameraPosition, onPlayerDamage, onMove, onNoInputReceived, getPlayerWeightMovementPenalty, getPlayerSpriteBatchLayer, isHumanSwimming, getPlayerMaxWeight, onBindLoop
  • Event handlers: Creature.canAttack, MovementHandler.canMove, WorldRenderer.getMaxSpritesForLayer
  • Injections: WorldRenderer.calculateAmbientColor, Game.calculateAmbientLightLevel, Game.calculateTileLightLevel
  • Many files
  • A lot of UI & actions
  • Custom CSS

TARS is a bot that will play Wayward by itself, doing tasks such as gathering resources, setting up a camp, hunting, getting food/water, and more!

Adds a set of balancing tools to the Debug Tools dialog.

  • Registers: two dictionaries, a registry of actions, and an inter-mod registration to Debug Tools' "MainDialogPanel" registry
  • Hooks: Creature.canMove, NPC.canMove

Getting Started

Mod Content

Script Documentation

(apologies for all the missing guides, we'll get to them at some point)

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Resources & Examples

Vaughn Royko edited this page Dec 9, 2024 · 2 revisions

The #modding channel is the best way to ask modding-related questions, as it will get the fastest response, between developers and other modders.

Example Mods

Simple

  • Registers: messages
  • Hooks: onGameScreenVisible, onItemEquip, onMove
  • Overrides mod loading cycle methods
  • Logging
  • Sends messages to the player
  • Contains language

Adds a few custom hairdos, hair colors, and skin tones, demonstrating customizations.json.

Adds a pirate-themed language.

Adds a new item that allows you to see the entire map.

  • Registers: a bindable, an action, and an item
  • Hooks: onGameStart, onBindLoop

Adds two music tracks to the game.

  • Registers: two music tracks, a dictionary, and an options section
  • Saves data globally

Overrides the default game textures for some trees to make them appear as if they were ablaze.

Literally all this does is add "literally" in front of most dictionary strings in the game, literally.

  • Demonstrates using "article rules" in languages

Causes the player to respawn with a random appearance, stats, and skills on death.

  • Registers: a message
  • Hooks: onPlayerDeath

A silly language created programmatically.

Advanced

A guided quest for newer players to understand and discover the most important game mechanics in Wayward.

Adds a magical world of clouds!

  • Registers: items, doodads, terrain, creatures, actions, a skill, messages, a note, a help article
  • Hooks: onCreateWorld, preLoadWorldDifferences, preRenderWorld, shouldRender, onGameStart, onPlayerJoin, onMove, onMoveComplete, onSpawnCreatureFromGroup, getTilePenalty
  • Event handlers: Human.canConsumeItem, Creature.canMove, Creature.canAttack, WorldRenderer.canSeeCreature, WorldRenderer.getFogColor
  • Saves data

A script allowing dedicated servers to auto-run challenge games.

  • A mod that can only be run serverside

Very Complex

Adds a lot of debug utilities to the game for inspecting and manipulating the world.

  • Registers: registries, inter-mod registries, bindables, a dictionary, a message, a message source, interrupt choices, actions, dialogs, menu bar buttons, overlays
  • Hooks: postFieldOfView, onGameScreenVisible, getZoomLevel, getCameraPosition, onPlayerDamage, onMove, onNoInputReceived, getPlayerWeightMovementPenalty, getPlayerSpriteBatchLayer, isHumanSwimming, getPlayerMaxWeight, onBindLoop
  • Event handlers: Creature.canAttack, MovementHandler.canMove, WorldRenderer.getMaxSpritesForLayer
  • Injections: WorldRenderer.calculateAmbientColor, Game.calculateAmbientLightLevel, Game.calculateTileLightLevel
  • Many files
  • A lot of UI & actions
  • Custom CSS

TARS is a bot that will play Wayward by itself, doing tasks such as gathering resources, setting up a camp, hunting, getting food/water, and more!

Adds a set of balancing tools to the Debug Tools dialog.

  • Registers: two dictionaries, a registry of actions, and an inter-mod registration to Debug Tools' "MainDialogPanel" registry
  • Hooks: Creature.canMove, NPC.canMove

Getting Started

Mod Content

Script Documentation

(apologies for all the missing guides, we'll get to them at some point)

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Resources & Examples

Vaughn Royko edited this page Dec 9, 2024 · 2 revisions

The #modding channel is the best way to ask modding-related questions, as it will get the fastest response, between developers and other modders.

Example Mods

Simple

  • Registers: messages
  • Hooks: onGameScreenVisible, onItemEquip, onMove
  • Overrides mod loading cycle methods
  • Logging
  • Sends messages to the player
  • Contains language

Adds a few custom hairdos, hair colors, and skin tones, demonstrating customizations.json.

Adds a pirate-themed language.

Adds a new item that allows you to see the entire map.

  • Registers: a bindable, an action, and an item
  • Hooks: onGameStart, onBindLoop

Adds two music tracks to the game.

  • Registers: two music tracks, a dictionary, and an options section
  • Saves data globally

Overrides the default game textures for some trees to make them appear as if they were ablaze.

Literally all this does is add "literally" in front of most dictionary strings in the game, literally.

  • Demonstrates using "article rules" in languages

Causes the player to respawn with a random appearance, stats, and skills on death.

  • Registers: a message
  • Hooks: onPlayerDeath

A silly language created programmatically.

Advanced

A guided quest for newer players to understand and discover the most important game mechanics in Wayward.

Adds a magical world of clouds!

  • Registers: items, doodads, terrain, creatures, actions, a skill, messages, a note, a help article
  • Hooks: onCreateWorld, preLoadWorldDifferences, preRenderWorld, shouldRender, onGameStart, onPlayerJoin, onMove, onMoveComplete, onSpawnCreatureFromGroup, getTilePenalty
  • Event handlers: Human.canConsumeItem, Creature.canMove, Creature.canAttack, WorldRenderer.canSeeCreature, WorldRenderer.getFogColor
  • Saves data

A script allowing dedicated servers to auto-run challenge games.

  • A mod that can only be run serverside

Very Complex

Adds a lot of debug utilities to the game for inspecting and manipulating the world.

  • Registers: registries, inter-mod registries, bindables, a dictionary, a message, a message source, interrupt choices, actions, dialogs, menu bar buttons, overlays
  • Hooks: postFieldOfView, onGameScreenVisible, getZoomLevel, getCameraPosition, onPlayerDamage, onMove, onNoInputReceived, getPlayerWeightMovementPenalty, getPlayerSpriteBatchLayer, isHumanSwimming, getPlayerMaxWeight, onBindLoop
  • Event handlers: Creature.canAttack, MovementHandler.canMove, WorldRenderer.getMaxSpritesForLayer
  • Injections: WorldRenderer.calculateAmbientColor, Game.calculateAmbientLightLevel, Game.calculateTileLightLevel
  • Many files
  • A lot of UI & actions
  • Custom CSS

TARS is a bot that will play Wayward by itself, doing tasks such as gathering resources, setting up a camp, hunting, getting food/water, and more!

Adds a set of balancing tools to the Debug Tools dialog.

  • Registers: two dictionaries, a registry of actions, and an inter-mod registration to Debug Tools' "MainDialogPanel" registry
  • Hooks: Creature.canMove, NPC.canMove

Getting Started

Mod Content

Script Documentation

(apologies for all the missing guides, we'll get to them at some point)

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Resources & Examples

Vaughn Royko edited this page Dec 9, 2024 · 2 revisions

The #modding channel is the best way to ask modding-related questions, as it will get the fastest response, between developers and other modders.

Example Mods

Simple

  • Registers: messages
  • Hooks: onGameScreenVisible, onItemEquip, onMove
  • Overrides mod loading cycle methods
  • Logging
  • Sends messages to the player
  • Contains language

Adds a few custom hairdos, hair colors, and skin tones, demonstrating customizations.json.

Adds a pirate-themed language.

Adds a new item that allows you to see the entire map.

  • Registers: a bindable, an action, and an item
  • Hooks: onGameStart, onBindLoop

Adds two music tracks to the game.

  • Registers: two music tracks, a dictionary, and an options section
  • Saves data globally

Overrides the default game textures for some trees to make them appear as if they were ablaze.

Literally all this does is add "literally" in front of most dictionary strings in the game, literally.

  • Demonstrates using "article rules" in languages

Causes the player to respawn with a random appearance, stats, and skills on death.

  • Registers: a message
  • Hooks: onPlayerDeath

A silly language created programmatically.

Advanced

A guided quest for newer players to understand and discover the most important game mechanics in Wayward.

Adds a magical world of clouds!

  • Registers: items, doodads, terrain, creatures, actions, a skill, messages, a note, a help article
  • Hooks: onCreateWorld, preLoadWorldDifferences, preRenderWorld, shouldRender, onGameStart, onPlayerJoin, onMove, onMoveComplete, onSpawnCreatureFromGroup, getTilePenalty
  • Event handlers: Human.canConsumeItem, Creature.canMove, Creature.canAttack, WorldRenderer.canSeeCreature, WorldRenderer.getFogColor
  • Saves data

A script allowing dedicated servers to auto-run challenge games.

  • A mod that can only be run serverside

Very Complex

Adds a lot of debug utilities to the game for inspecting and manipulating the world.

  • Registers: registries, inter-mod registries, bindables, a dictionary, a message, a message source, interrupt choices, actions, dialogs, menu bar buttons, overlays
  • Hooks: postFieldOfView, onGameScreenVisible, getZoomLevel, getCameraPosition, onPlayerDamage, onMove, onNoInputReceived, getPlayerWeightMovementPenalty, getPlayerSpriteBatchLayer, isHumanSwimming, getPlayerMaxWeight, onBindLoop
  • Event handlers: Creature.canAttack, MovementHandler.canMove, WorldRenderer.getMaxSpritesForLayer
  • Injections: WorldRenderer.calculateAmbientColor, Game.calculateAmbientLightLevel, Game.calculateTileLightLevel
  • Many files
  • A lot of UI & actions
  • Custom CSS

TARS is a bot that will play Wayward by itself, doing tasks such as gathering resources, setting up a camp, hunting, getting food/water, and more!

Adds a set of balancing tools to the Debug Tools dialog.

  • Registers: two dictionaries, a registry of actions, and an inter-mod registration to Debug Tools' "MainDialogPanel" registry
  • Hooks: Creature.canMove, NPC.canMove

Getting Started

Mod Content

Script Documentation

(apologies for all the missing guides, we'll get to them at some point)

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })();
Skip to content

Resources & Examples

Vaughn Royko edited this page Dec 9, 2024 · 2 revisions

The #modding channel is the best way to ask modding-related questions, as it will get the fastest response, between developers and other modders.

Example Mods

Simple

  • Registers: messages
  • Hooks: onGameScreenVisible, onItemEquip, onMove
  • Overrides mod loading cycle methods
  • Logging
  • Sends messages to the player
  • Contains language

Adds a few custom hairdos, hair colors, and skin tones, demonstrating customizations.json.

Adds a pirate-themed language.

Adds a new item that allows you to see the entire map.

  • Registers: a bindable, an action, and an item
  • Hooks: onGameStart, onBindLoop

Adds two music tracks to the game.

  • Registers: two music tracks, a dictionary, and an options section
  • Saves data globally

Overrides the default game textures for some trees to make them appear as if they were ablaze.

Literally all this does is add "literally" in front of most dictionary strings in the game, literally.

  • Demonstrates using "article rules" in languages

Causes the player to respawn with a random appearance, stats, and skills on death.

  • Registers: a message
  • Hooks: onPlayerDeath

A silly language created programmatically.

Advanced

A guided quest for newer players to understand and discover the most important game mechanics in Wayward.

Adds a magical world of clouds!

  • Registers: items, doodads, terrain, creatures, actions, a skill, messages, a note, a help article
  • Hooks: onCreateWorld, preLoadWorldDifferences, preRenderWorld, shouldRender, onGameStart, onPlayerJoin, onMove, onMoveComplete, onSpawnCreatureFromGroup, getTilePenalty
  • Event handlers: Human.canConsumeItem, Creature.canMove, Creature.canAttack, WorldRenderer.canSeeCreature, WorldRenderer.getFogColor
  • Saves data

A script allowing dedicated servers to auto-run challenge games.

  • A mod that can only be run serverside

Very Complex

Adds a lot of debug utilities to the game for inspecting and manipulating the world.

  • Registers: registries, inter-mod registries, bindables, a dictionary, a message, a message source, interrupt choices, actions, dialogs, menu bar buttons, overlays
  • Hooks: postFieldOfView, onGameScreenVisible, getZoomLevel, getCameraPosition, onPlayerDamage, onMove, onNoInputReceived, getPlayerWeightMovementPenalty, getPlayerSpriteBatchLayer, isHumanSwimming, getPlayerMaxWeight, onBindLoop
  • Event handlers: Creature.canAttack, MovementHandler.canMove, WorldRenderer.getMaxSpritesForLayer
  • Injections: WorldRenderer.calculateAmbientColor, Game.calculateAmbientLightLevel, Game.calculateTileLightLevel
  • Many files
  • A lot of UI & actions
  • Custom CSS

TARS is a bot that will play Wayward by itself, doing tasks such as gathering resources, setting up a camp, hunting, getting food/water, and more!

Adds a set of balancing tools to the Debug Tools dialog.

  • Registers: two dictionaries, a registry of actions, and an inter-mod registration to Debug Tools' "MainDialogPanel" registry
  • Hooks: Creature.canMove, NPC.canMove

Getting Started

Mod Content

Script Documentation

(apologies for all the missing guides, we'll get to them at some point)

Clone this wiki locally