Need help with plugins or servers? Join our Discord

DeadworksBeta

Deadworks is a modification for Deadlock enabling you to make and play on customized dedicated servers.

Deadworks client

Players

Download the launcher to browse and join custom servers.

Developers

Build game modes and plugins with the Deadworks SDK. Full C# access to the game.

Server Owners

Host your own dedicated server with full control over rules, plugins, and admin.

Deadworks Launcher

Jump into custom servers

Browse the live server list, pick a server, and the launcher handles the rest. Maps and mods load through Deadlock's native addon system. Does not interfere with mods downloaded any other way.

Deadworks launcher
Deadworks ADMIN

Run your server your way

A web panel built for server owners. Upload custom maps and mods, everything your players need is delivered automatically through the launcher on connect.

  • Upload and version custom maps & mods
  • Clients auto-sync assets on join
Deadworks SDK

Full C# access to Deadlock

Hook events, spawn entities, push particles, apply modifiers, send HUD messages. Ship anything from a chat command to a full custom game mode, with hot-reload while you iterate.

using DeadworksManaged.Api;
using System.Numerics;

namespace RollTheDicePlugin;

public class RollTheDicePlugin : DeadworksPluginBase {
    public override string Name => "Roll The Dice";

    private static readonly Random _rng = new();

    public override void OnLoad(bool isReload) => Console.WriteLine(isReload ? "RTD reloaded!" : "RTD loaded!");
    public override void OnUnload() => Console.WriteLine("RTD unloaded!");

    public override void OnPrecacheResources() {
        Precache.AddResource("particles/upgrades/mystical_piano_hit.vpcf");
    }

    [ChatCommand("rtd")]
    public HookResult CmdRollTheDice(ChatCommandContext ctx) {
        var pawn = ctx.Controller?.GetHeroPawn();
        if (pawn == null) return HookResult.Handled;

        var effects = new (string Name, Action<CCitadelPlayerPawn> Apply)[] {
            ("Mystical Piano Strike", ApplyPianoStrike),
        };

        var roll = effects[_rng.Next(effects.Length)];

        var msg = new CCitadelUserMsg_HudGameAnnouncement {
            TitleLocstring = "ROLL THE DICE",
            DescriptionLocstring = roll.Name
        };
        NetMessages.Send(msg, RecipientFilter.Single(ctx.Message.SenderSlot));

        roll.Apply(pawn);
        return HookResult.Handled;
    }

    private void ApplyPianoStrike(CCitadelPlayerPawn pawn) {
        pawn.EmitSound("Mystical.Piano.AOE.Warning");
        Timer.Once(1700.Milliseconds(), () => {
            var particle = CParticleSystem.Create("particles/upgrades/mystical_piano_hit.vpcf")
                .AtPosition(pawn.Position + Vector3.UnitZ * 100)
                .StartActive(true)
                .Spawn();

            pawn.EmitSound("Mystical.Piano.AOE.Explode");
            using var kv = new KeyValues3();
            kv.SetFloat("duration", 3.0f);
            pawn.AddModifier("modifier_citadel_knockdown", kv);

            if (particle != null) {
                Timer.Once(5.Seconds(), () => particle.Destroy());
            }
        });
    }
}
FAQ

Frequently asked questions

Why a launcher?

Deadlock servers have no built-in method for delivering maps or custom content to the client. To create the best possible experience on custom servers, both server-side and client-side mods are needed. Without a launcher, Deadlock custom servers would be severely limited in what they can offer.

Do you need to use the launcher to play on a Deadworks server?

No. The launcher will put maps and addons in the correct spot. If your server uses none of these, you can play without the launcher. We expect that over time the experiences combining client mods and server mods will be much better than servers without.

Will using the Deadworks launcher affect my game in any way?

The Deadworks launcher only downloads map and addon files to the right places in your Deadlock game install. One line is added to gameinfo.gi, similar to how installing mods normally works. Addons installed by Deadworks are only loaded on-demand by servers and will remain unloaded unless you're connecting to a server that uses them. They're unloaded as soon as you disconnect.

Does Deadworks conflict with any other mod manager?

No. Deadworks uses a separate system for addon loading that doesn't conflict with addons installed in other ways.

What sort of client mods can server hosts use with the Deadworks launcher today?
  • Maps stable
  • Custom models alpha
  • Custom sounds alpha
  • vdata modifications alpha
  • Custom UI in development
How do I make my server listed on the server list?

Your server will be listed while running and if your host port is port-forwarded. The server listing is an automatic process that will take place if both those conditions are met. You can unlist your server by launching with the -nomaster command line parameter, or by setting unlisted to true in the Deadworks config file.

How do I change the name of my server on the server list?

Modify the hostname convar. It's recommended to define it in citadel/cfg/server.cfg.

How do I upload custom maps/addons?

Send a message in Discord and we'll walk you through the process while we are still in beta.

Ready to get started?

Read the docs, join the community, and start building.