Skip to content

pmbstyle/L2Solo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,424 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LineageII Solo

L2Solo (C4: Scions of Destiny)

Old-school Lineage 2 solo play, locally in a live world with over 1500 bot population.

L2Solo is a local-first Lineage II C4 server emulator, tuned for a solo MMO experiment: one real player, a live world, and bots with AI that makes the server feel alive.

🏗️ Work in progress. Playable.

Game Checklist

✅ What's done

Server:

  • Server launcher
  • Authentication: create account, login (C4 client, protocol 656)
  • Character creation
  • Variable server rates for each server start: (x1/x10/x50) XP, SP, party XP/SP, drop/adena/spoil multipliers
  • Real-time player web map that shows bots and players

World:

  • Complete geodata for all locations
  • Teleports via NPC or .admin menu
  • Live world / local / trade chats
  • NPC shops in towns
  • SoE, other TP scrolls
  • Profession change
  • Auto-learn skills (no books or NPC needed)

Character:

  • Progression depending on chosen rates
  • Full C4 skills coverage: self, on target, AoE, etc (excluding summons - in-progress)
  • Potions, scrolls, spoil, SA, manor, etc
  • Party with bots with native (/invite, /leave), plus .botpaty to find nearby bots and invite to the party
  • All armor sets
  • Soulshots/Spiritshots
  • Death, respawn

Mobs:

  • Attack
  • Skill usage
  • Drop table (scales from server rates)
  • Social agro
  • AoE agro
  • Party loot

Bots:

  • World population based on a character level. Hundreds of bots on start.
  • Farming
  • Drop pick up
  • Rest/Regen
  • Join bot parties
  • In-party roles (tank, dps, healer, etc)
  • Trade with a bot
  • Communication in chat
  • Custom communication (not-scripted) via AI (OpenRouter LLM) - you can chat with a bot like a real player
  • Bots will ask for loot if you have something they need
  • Bot traders in towns (sell/buy)
  • PK bots
  • Bots will attack a PK or run away
  • Bots will go for NPC (Nobie guide) buff
  • Bots changing their farming location based on lvl or number of mobs around
  • Bots join and fight in a party with a player
  • Bot's equipment scales with a lvl
  • Some bots will be higher lvl than a player, most of them will keep around the same lvl as a player, and some will be noobs
  • Bots have a memory about interaction with a player; they act correspondingly

✴️ Will be added

  • Clans, including bot clans
  • Clan halls
  • Clan wars
  • Wars for a farm spot
  • Olympiad, heroes
  • Siages (bot or player driven)
  • Raids (Raid/World bosses)
  • Live economy (bots will sell, craft, buy)
  • Full craft
  • Full quests
  • Better bot AI brain
  • Complete Lineage 2 C4 experience
  • One-click installer

🎮 Wanna play now?

You will need:

  • Node.js LTS
  • Docker, unless you run MariaDB yourself
  • A Lineage II C4 client using protocol 656

Client reference: use a clean Lineage II C4 client matching protocol 656.

Quick Start

npm start

That command will:

  • open the local launcher at http://127.0.0.1:8090/;
  • show the current server state;
  • start and stop the server from the launcher;
  • open the world observer map when the server is running.

The launcher keeps the latest server session log at tmp/logs/latest-server.log and rotates the prior one to tmp/logs/previous-server.log.

Press Start in the launcher to run the normal server bootstrap. That start action will:

  • install Node dependencies if node_modules is missing;
  • create or start a local nodel2-mariadb Docker container when the configured database host is 127.0.0.1 or localhost;
  • import database/sql/database.sql on first boot if database nodel2 does not exist;
  • start the auth server on 2106, the game server on 7777, and the world observer on 8088.

If you run MariaDB yourself, set:

L2NODE_SKIP_DOCKER=1 npm start

The old direct server command still works:

npm run NodeL2

Use it when dependencies and the database are already prepared, and you want no bootstrap behavior.

Configuration

Committed defaults live in config/default.ini.

Private local overrides go in ignored config/local.ini. This is where API keys and machine-specific database settings belong.

Example:

[OpenRouter]
enabled = true
apiKey = sk-or-v1-your-key-here
model = google/gemini-2.5-flash-lite
debug = true

If you use your own database instead of the local Docker container, override the Database section there as well.

OpenRouter can also read the key/model from environment variables:

OPENROUTER_API_KEY=sk-or-v1-your-key-here npm start

Useful startup variables:

  • L2NODE_SKIP_DOCKER=1 - skip Docker bootstrap and use the configured database.
  • L2NODE_DB_CONTAINER=some-name - override the Docker container name.
  • L2NODE_DB_IMAGE=mariadb:10.6 - override the MariaDB image.
  • BOT_STATUS_LOGS=0 - disable periodic bot status log lines.

In-Game Commands

  • .admin - open the admin menu.
  • .sell - sell all unequipped non-Adena items for 50% item value.
  • .bot or .companion - open the companion control panel.
  • .botstatus - show a bot overview panel.
  • .botstatus <name> - show detailed status for a specific bot.
  • .botpath / .botpath <name> - inspect bot movement, town-route waypoints, and geodata path diagnostics.
  • .trade or /trade - open the bot trade window with the targeted SimPlayer, useful as a fallback to the native client trade action.
  • .leave - dismiss all companion bots.
  • .kick <name> - dismiss one companion bot.
  • /invite while targeting a bot - recruit that bot as a companion.
  • /dismiss <name> and /leave also work through the party request path.

Nearby bots also react to plain chat lines such as hi, follow, wait, hunt, heal, and buff. Healing and buff help depends on the bot's class and current plan.

Bot Systems

SimPlayers are normal server sessions backed by database characters. On startup, BotManager loads them, assigns plans, and ticks their behavior.

Main bot modes:

  • hunting - find monsters, fight, loot, and move between spots.
  • resting - recover HP/MP.
  • getting_buffed - visit newbie buff flow when low-level buffs expire.
  • shopping - return to town, sell junk, and restock consumables.
  • following - assist a real player as a companion.
  • merchant - stand in town with private buy/sell store state.
  • pk_hunting / pk_fleeing - hostile player-killer loop and safety recovery.

Companion behavior is role-aware. BotRoles infers healer, buffer, tank, dagger, archer, mage, or generic DPS from class id. In party mode, tanks can protect the leader and avoid unsafe pulls, healers heal while conserving MP, buffers apply Might, Shield, Haste, and Wind Walk, daggers close-assist, and ranged roles keep ranged assist intent.

Bot status is meant to be inspectable. Use .botparty to find available nearby SimPlayers, .botstatus for state, social memory, role decisions, buff timers, and loot requests, .botpath for movement and town-route diagnostics, companion panel Status links, or watch BotStatus :: ..., BotSocial :: ..., BotRole :: ..., and BotLoot :: ... lines in the server logs.

To reset generated SimPlayer accounts and characters while keeping the rest of the database intact:

npm run wipe:bots

Development

Run the focused tests:

node tests/test_pathfinder_astar.js
node tests/test_path_obstacle.js

Run a full boot check:

npm start

Then press Start in the launcher.

Expected healthy boot signs:

  • DB :: connected
  • Datapack :: cached
  • SpawnsGrid :: Indexed ... npcs in 2D spatial grid
  • AuthServer :: successful init for 0.0.0.0:2106
  • GameServer :: successful init for 0.0.0.0:7777
  • BotManager :: ... is active in World
  • BotStatus :: ..., BotRole :: ..., BotLoot :: ..., or BotSocial :: ... when the corresponding bot paths are active

Credits

This project is a heavily modified solo-MMO fork of the original NodeL2 Server Emulator.

L2Solo is licensed under the Apache 2.0 license.

Crafting with ❤️ by a player for players 🤘

About

Lineage II Chronicle 4 server emulator tuned for a solo MMO experience

Topics

Resources

License

Stars

5 stars

Watchers

0 watching

Forks

Releases

No releases published

Contributors

Languages