1
Fork 0
mirror of https://github.com/redstrate/Kawari.git synced 2025-06-30 11:47:45 +00:00
Commit graph

52 commits

Author SHA1 Message Date
Jules
fe234920f2
Use raw-dylib when linking to Oodle on Windows (#83)
This means that the static .lib is no longer required at compile time, but
the .dll is still required at runtime. On Linux, the .so is still
required at both compile time and runtime, because linking works
differently there.
2025-06-28 14:45:01 -04:00
b2f14dffee Add the !item debug command to give items by name
Compared to the //gm item command which only accepts IDs.

Fixes #50
2025-06-28 11:22:21 -04:00
6951f9448d Port GM commands to Lua
This removes a ton of implementation overlap between the two
command systems. For example, we had two different implementations
of unlocking aetherytes which is just unnecessary.

On the flipside, this makes implementing new GM commands just as
easy as writing debug ones. I moved the existing debug Lua
implementations into their GM counterparts and updated the USAGE
accordingly.
2025-06-28 10:27:56 -04:00
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
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
fd249a2342 Rename !unlockaction to !unlock
When learning how to unlock emotes, apparently FFXIV just has one
kind of ID for all kinds of stuff. So I picked a number, stuck it
as the max (this is unconfirmed) and you can now unlock everything.
2025-06-22 11:18:07 -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
198a8a3e2c Make !reload command always available, add !finishevent
The reload command was previously implemented in Lua, but this
is a little dangerous as it could itself have an error and is
unable to work in the first place. I moved this to Rust to
ensure it's always available. I left the reload_scripts() API
in Lua as someone could still find that useful!

Additionally, I added a !finishevent debug command to forcefully
end the current event you're in. This can be useful if your script
is incomplete or has an error, as your client gets stuck very
easily.
2025-06-22 08:49:06 -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
thedax
61616df842
Reimplement several commands in Lua (#37)
* Reimplement !unlockaction in Lua
Rebased on upstream master

* Unlockaction: display the action id that was unlocked

* Reimplement GM speed in Lua

* Fix warnings and errors

* Run cargo fmt

* Reimplement GM wireframe in Lua

* Reimplement GM invis command, with a caveat
It can't toggle the invis state yet, and I'm not sure where to update it.

* Lua invis: add the gm_invisible toggle, but it still doesn't revert back to false...

* Reimplement GM aetheryte in Lua, with a caveat
It's seemingly not working right now though: it doesn't add any new aetherytes to the teleport menu.
But I can't get the command `//gm aetheryte on X` to do it either, so it's possible Kawari isn't responding correctly?
Either way this needs further testing.

* Lua invis: add the forgotten Lua file

* Reimplement GM teri in Lua
Also add a TODO for UnlockAetheryte

* Make comment in lua.rs more useful

* Run cargo fmt again

* Teri: range check the territory ID

* Update USAGE.md to reflect the new commands
Rebased on upstream master

* Clarify unlockaetheryte USAGE and in-script usage

* Refactor UnlockAetheryte.lua, and make ToggleInvisibility actually work properly.
I opted to create a Task for this, because sticking it in kawari-world.rs felt like a hack to me.

* Run cargo fmt for hopefully the last time today

* Move lua.ra:toggle_invisibility down with the other queued tasks

* Fix spaces in USAGE.md, remove stray rebase message
2025-06-21 13:30:52 -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
183555b858 Remove old workaround for Aether data center in USAGE
This should no longer be true anymore.
2025-06-21 11:52:59 -04:00
thedax
961cb92ab1
New Lua command proposal: !festival (#26)
This command enables the user to set the current zone's festival.
For example, you can toggle the Starlight festival in any of the starting cities.

Thanks, OTCompa!
2025-06-19 12:29:10 -04:00
The Dax
792316dce5 USAGE.md: add description of new GM speed command.
Sorry, I keep forgetting to do this!
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
cbde0f74b3 Clarify in USAGE that the server is setup for Aether/Gilgamesh
I thought this was documented, but I guess not. Saves users a bit of
troubleshooting, especially if they don't play on American data centers.
2025-06-18 19:42:29 -04:00
The Dax
3118ef2a5a Write description of !nudge in USAGE.md 2025-06-18 12:55:18 -04:00
9135d1e179 Add back hosts editing information to the USAGE guide
This was initially removed because the localhost TLD Caddy magic, but I
just discovered that this isn't honored by WinHTTP which breaks the
retail patcher. So users will still - unfortunately - have to do this.
2025-06-17 17:08:56 -04:00
5accb992a9 Add !equip command to quickly change your equipped item
See USAGE, this is actually extremely useful! No more hunting for item
IDs!
2025-05-12 22:32:03 -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
ed44de8956 "Implement" the Unending Journey
Apparently there's a scene that's super easy to use, that omniously says
"You cannot consult The Unending Journey at this time". That's cool,
though.
2025-05-06 22:37:02 -04:00
Sayaniku
092cec19d5 Update USAGE.md
Updated the dependance needed for windows and explain a little bit more for the folder oodle
2025-05-06 17:27:14 -04:00
6ff67a55e3 Make instructions on where/place Oodle more clear in USAGE 2025-05-06 15:55:02 -04:00
942b2b11e7 Add more detailed usage instructions 2025-05-03 19:54:32 -04:00
dbdc6ee99f Note which run script to use in USAGE 2025-05-03 19:30:09 -04:00
046c353bf9 Simplify usage instructions with the new setup flow 2025-05-03 18:52:40 -04:00
1aaa78d2cc Update usage instructions, especially around account handling 2025-05-02 22:55:13 -04:00
afed151488 Add "character backup import" feature to the account management page
We have had an import feature for a while, allowing you to easily
recreate your retail character from Auracite backups. But the feature
was implemented *before* we had proper service accounts, and it always
assigned it to ID 1.

Now it's moved to the user-visible account management page.
2025-05-01 15:35:51 -04:00
167273d704 Fix Caddy run example 2025-04-11 08:25:15 -04:00
662e659d8f Move Caddyfile, scripts out of root directory 2025-04-05 23:01:21 -04:00
121415b163 Add !classjob debug command to change your class/job
This is the workaround for lack of a proper class/job switch when
equipping different weapons.
2025-04-01 21:53:10 -04:00
6d1e9d4e73 Add //gm lv command to set your current level 2025-04-01 20:39:57 -04:00
4f8f0d1fe2 Add !spawnclone command, rename !spawnactor
Curiously the spawned clone shows up as a player, despite not using the
NPCSpawn packet. This might be a suitable workaround for the
PlayerSpawn packet being buggy from our side.
2025-04-01 19:15:08 -04:00
822d1f5139 Add GM command to give items, support equipping from inventory
Now with this command and support for *one* inventory slot, you can
now freely equip items to your character for testing.
2025-03-31 23:23:29 -04:00
243d94c586 Add preliminary support for restoring character backups from Auracite
Not much is importable yet - pretty much just the character's name and
appearance.
2025-03-30 18:52:00 -04:00
227c8c1eb2 Add //gm wireframe command 2025-03-29 00:39:00 -04:00
6bb6377315 Add stubs for the other two starting City-States
Also document how to access and play these scenes in USAGE.
2025-03-28 23:00:32 -04:00
9111ef6a82 Add debug command to spawn a monster (Tiny Mandragora), various fixes
This fixes various problems in CommonSpawn, adds a test for an enemy NPC spawn,
and an unkwon packet I get when entering some zones.
2025-03-23 10:33:49 -04:00
d92f0033a9 Fix typo in USAGE 2025-03-23 06:53:58 -04:00
2029caa645 Add note to explicitly enable oodle feature 2025-03-22 21:48:42 -04:00
d6137b62d6 Build with Oodle on the CI
This makes it possible to use Kawari easily without compilation. You
still need to acquire Oodle yourself since we build with the shared
library version of Oodle.

The USAGE instructions is modified accordingly.
2025-03-22 21:19:18 -04:00
5214d757e8 You can use Kawari on Windows 2025-03-22 21:19:18 -04:00
3f27d2b3df Change configuration format to YAML, allow configuring the address and ports
This removes all of the hardcoded localhost stuff, and allows changing the ports
of various services.
2025-03-22 16:47:21 -04:00
3947eebb44 Add new commands to USAGE 2025-03-18 23:49:07 -04:00
f886fbfe4b Turn the gates on in the example config 2025-03-17 17:44:22 -04:00
NotNite
481d6b69a2 Document chat commands 2025-03-17 16:40:04 -04:00
NotNite
da69b40ca6 Document config.json 2025-03-17 16:40:04 -04:00
NotNite
10fc8e32ce Document manual command line arguments
I don't have Astra locally so I had to do this to test things. It works
fine right now, but in the future the user must complete the login
process manually.
2025-03-17 16:40:04 -04:00
NotNite
aeb8516a82 Document magic domains, privileged port usage
I ran into the issue with privileged ports myself. The link to the Caddy
website has an aside about how to use setcap or sudo, which should be
good enough.
2025-03-17 16:40:04 -04:00
NotNite
9fa6a230d6 Clarify Oodle instructions, link against "oodle" directory
While you can just drop the Oodle static library into /usr, I'm not a
big fan of doing it, especially when the binary didn't come from my
machine or package manager. You can set a RUSTFLAGS environment variable
or cargo config file to specify a link path, but having the build script
search there for you is easier.

The docs now specify which variant of Oodle is required, since there are
multiple. It also specifically mentions the static library, because I
had some weird issues leaving the dynamic library in that folder, where
the executables wouldn't start unless it could dynamically load the .so.
2025-03-17 16:40:04 -04:00