1
Fork 0
mirror of https://github.com/redstrate/Kawari.git synced 2025-07-01 04:07:45 +00:00
Commit graph

187 commits

Author SHA1 Message Date
01697c8f62 Begin implementing currency, add //gm gil command and more
This doesn't work yet though , and I'm not sure why. I also fixed a bug
where new characters doesn't get their inventories initialized properly.
2025-06-24 19:16:32 -04:00
cc5d9ae7bc Return both parameters in EventHandlerReturn
This allows scripting things like Aetherytes in the future.
2025-06-24 18:30:22 -04:00
thedax
82e5021979
Implement the //gm teri_info command, and fix a typo (#56)
Implement the `//gm teri_info` command, and fix a typo. Said typo was in gamedata.rs, confusing the FingerL column for the SoulCrystal column.
2025-06-23 13:39:37 -04:00
77b6fbad7f Fix the "unknown command" message for real, now
Now it takes into account if the command exists on the Rust side,
and the message should now *only* display if no one truly handles
this command.
2025-06-22 09:28:50 -04:00
fbe6862c7b Begin implementing EXP
This doesn't actually do things like level you up, but if you use the
GM EXP command then it will update the UI.
2025-06-22 09:19:06 -04:00
d35e0830d3 Don't panic when the event file doesn't exist 2025-06-22 09:05:54 -04:00
thedax
e1b261c7d8
Implement several actors/entities (#49)
* Implement the following actors/entities:
-Inn Toy Chest actor, which simply says you haven't unlocked mini-games
-Inn Glamour Dresser actor, which simply says you haven't unlocked the GD yet
-Orchestrion, which is fully functional as long as you have songs unlocked

Accompanying the orchestrion is the GM orchestrion command, with a caveat:
-It allows you to learn one song at a time, but id 0 (aka "all) doesn't learn a single
song for some unknown reason, so I've disabled it for now.

* Run cargo fmt

* Update USAGE.md
How many times will I forget...
2025-06-22 08:46:11 -04:00
a6e270d5e3 Log, don't panic for syntax errors in event scripting
Fixes #39
2025-06-22 08:35:25 -04:00
6b0487f30f Log, don't panic for Lua commands
It will also try to fallback to a Rust command - if available.

See #39
2025-06-22 08:35:25 -04:00
cdcce88c5f Log, don't panic for syntax errors in Global.lua
See #39
2025-06-22 08:35:25 -04:00
thedax
92a5cc48eb
Apply a temporary-ish fix so that not all chat messages appear as unknown commands. (#46) 2025-06-21 21:16:31 -04:00
bdd98820e7 Stop panicking when receiving None segments from the client
This apparently happens when you send chat messages super quick, and
they seem harmless to ignore.

Fixes #40
2025-06-21 14:04:09 -04:00
6561e63fd4 Send a message in-game when trying to start a non-scripted event
This should make it more obvious than in the usually spammy server log.
2025-06-21 12:26:58 -04:00
bb2cc9e0ec Log in-game and in the server when encountering an unknown command
Instead of printing nothing and you're just left scratching your head.
2025-06-21 12:23:25 -04:00
f07d16b949 Allow reloading Global.lua with the new !reload debug command
Scripts are normally loaded when they are needed, with the exception of
Global.lua that's only loaded once at start-up. But now you can reload
it in-game with the !reload command, which should make event and command
scripting way less of a hassle.
2025-06-21 12:16:27 -04:00
d821c838cb Send your character's actual levels during setup
This fixes their display in the Character window. Sometimes the display
is a bit bugged, but there's not much I can do about that right now.
2025-06-21 11:50:09 -04:00
39beefbef3 Send action requests to global server state
This is to lay the groundwork for keeping track of cast spell timings,
and eventually networking actions to other players.

See #36
2025-06-21 10:36:44 -04:00
2a1491c8f9 Make the current classjob persistent, and your levels too
This requires another database wipe, or if you're savvy enough a few
schema edits.
2025-06-20 19:08:53 -04:00
The Dax
a24e0a5658 Overhaul the Lua permissions:
-Renamed permissions to required_rank
-Don't panic when the script author omits required_rank
-Reset state in the global table after reading it, so scripts can refresh it each time
2025-06-20 14:02:46 -04:00
The Dax
579bef8cd6 Adjust logging slightly 2025-06-20 14:02:46 -04:00
The Dax
be20b0f604 Add a basic permission system to Lua scripts to bring them in line with ingame GM commands. 2025-06-20 14:02:46 -04:00
355572d97a Remove some unknown packet spam
The "Received UnkXX" log messages are completely useless, let's get rid
of them.
2025-06-19 16:01:31 -04:00
The Dax
ae96de1ee6 Stop the world server from becoming upset when a Lua command is invoked with no arguments.
Allows commands that have a default set of arg(s) to use those when none are specified, as well as
allowing commands to act as toggles (such as a wireframe toggle, or disabling any set festivals).
2025-06-19 15:27:01 -04:00
The Dax
1edcdf3de6 Implement GM speed command, and make GM invis command actually toggle invis status 2025-06-19 10:09:07 -04:00
d216bebce9 Remove !playscene debug command
This doesn't really scale right now with the new events system, and I
don't use it anymore so let's remove it for now.
2025-06-18 20:53:07 -04:00
eb6b6409da Generate new actor IDs for debug NPCs, unify actor network paths
I don't know why I created a new message kind just for spawning NPCs
when ActorSpawn does this just fine. But what this actually means is
that the debug NPCs can now be spawned more than once.
2025-06-18 20:49:05 -04:00
3757f4e0db Make !spawnmonster put the NPC at your location again
Also included some refactoring that will help networking these better.
2025-06-18 20:28:03 -04:00
6930c18d2a Prevent the chat connection from always forcing a log out
This is just a band-aid fix, we really need to the separate the chat
connection from the rest of the zone connection logic. But this will at
least stop some annoyances when logging out.
2025-05-12 16:00:23 -04:00
b21d9933b3 Add GM rank to database, default to normal user and set online status
Instead of everyone starting out as a GM, they are a normal user by
default. Right now the only way to set GM rank is through editing the
database. The online status is set accordingly.
2025-05-12 15:44:39 -04:00
a88b9037d4 Begin adding disconnection handling
This doesn't work 100% reliably yet, but the world server should now try
to commit your player back to the database if it detects you disconnect.

I also fixed a mistake where the global server state never removed
clients when they errored out. There's now code to remove your actor
from the instance when disconnecting, but this doesn't work reliably yet
either.
2025-05-12 01:17:15 -04:00
d82cb2d048 Add support for unlocking all aetherytes 2025-05-11 12:38:55 -04:00
94ed036431 Add script for the Teleport action
This makes the Teleport action functional now, although it looks pretty
rough as it warps you instantly instead of waiting for the action to
actually finish.
2025-05-11 10:12:02 -04:00
1914531d89 Add commands to unlock actions, and aetherytes
This doesn't mean teleporting works *yet*, as it needs to be scripted.
The unlocked action/aetheryte is also not persisted yet.
2025-05-11 09:27:29 -04:00
477380c8b9 When using the !spawnmonster command, send it to all players
You can't attack it and see it on other clients yet, that will take some
more plumbing.
2025-05-09 20:09:22 -04:00
dba4edc32d Remove some dead, unused code 2025-05-09 19:45:08 -04:00
95fb6a149f Remove ToServer::ActorSpawn
This should be handled in the global server state instead.
2025-05-09 19:42:23 -04:00
0139fbc8c6 Remove the now unused ToServer::ActorDespawned
This is handled in the much-better-named LeftZone message.
2025-05-09 19:30:37 -04:00
cbeaa83307 Implement basic zone isolation for multiplayer
Now you don't see every player from every zone, like some kind of
madman. The code still sucks, but it works.
2025-05-09 19:27:18 -04:00
fd1fbe7188 Start adding support for propagating actor control state
This begins figuring out how we are going to be propagating actor
control state: e.g. targets, poses, and other misc effects. I ended up
sending client triggers to the global server state, who then creates the
needed actor control packet for the other players.

Now players can see what other players are targeting!
2025-05-08 22:53:36 -04:00
4c17f28eb0 Add Lua API for commands
This is super simple, you get the player and the args (which you can
choose to split if you so choose.) I reimplemented the !setpos, and will
start doing the rest of the commands.
2025-05-06 21:57:52 -04:00
ca8d36e48c Fix remaining inn warps, prevent the player from getting stuck
This means the three ARR inns are now "functional" (as in, you can enter
and exit them.) I also added some code to give you control of your
character in case you hit an unimplemented event.
2025-05-05 23:45:22 -04:00
e237cbe84d Create GenericWarp script to handle simple warps
It turns out that most warps are just a yes/no, and can be handled by
one single script. I scripted the lift attendants from Bulwark Hall <->
Airship Landing <-> Drowning Wench this way.
2025-05-05 23:30:36 -04:00
6dc8194aa8 Add inn bed handling, let event scripts decie when they are finished
The inn bed is the most complex script we have written so far, and needs
a little bit more logic to when it finishes. I also made it play the bed
animation, although you *will* sleep forever as we don't know how to
disconnect you yet.
2025-05-05 23:04:53 -04:00
fec6665d8d Make Limsa Inn warp functional
This was surprisingly easy, so now this works. You can't exit the inn
yet, though!
2025-05-05 22:04:39 -04:00
afbadf85c4 Clean up talk event handling, use Event struct 2025-05-05 21:15:03 -04:00
873d7f5951 Move custom IPC handling to a separate file 2025-05-05 21:03:47 -04:00
3139d63b91 Begin scripting the inn NPCs
This kinda works, you can now talk to them without locking up your
character but you aren't warped yet. I also need to clean up the mess of
the Lua API.
2025-05-05 20:51:49 -04:00
7e0b0d1bfc Move global world server logic to it's own module 2025-05-02 23:51:34 -04:00
de5e6cfb94 Use Default trait in more segment construction 2025-05-02 23:38:44 -04:00
ff33bd446a Update IPC struct names and filenames to match their opcode name 2025-05-02 23:24:31 -04:00