From 7f75a378f4b37869c9b43d8630014422cc2b7cdc Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Sun, 30 Mar 2025 10:01:41 -0400 Subject: [PATCH] Create EffectKind enum to hold the different effect kinds --- src/bin/kawari-world.rs | 11 +++++------ src/world/ipc/action_result.rs | 10 +++++++++- src/world/ipc/mod.rs | 2 +- src/world/lua.rs | 6 ++++-- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/bin/kawari-world.rs b/src/bin/kawari-world.rs index 13b5d00..17bf7c0 100644 --- a/src/bin/kawari-world.rs +++ b/src/bin/kawari-world.rs @@ -13,9 +13,9 @@ use kawari::packet::{ send_packet, }; use kawari::world::ipc::{ - ActionEffect, ActionResult, ClientZoneIpcData, CommonSpawn, DisplayFlag, GameMasterCommandType, - GameMasterRank, ObjectKind, OnlineStatus, PlayerSubKind, ServerZoneIpcData, - ServerZoneIpcSegment, SocialListRequestType, + ActionEffect, ActionResult, ClientZoneIpcData, CommonSpawn, DisplayFlag, EffectKind, + GameMasterCommandType, GameMasterRank, ObjectKind, OnlineStatus, PlayerSubKind, + ServerZoneIpcData, ServerZoneIpcSegment, SocialListRequestType, }; use kawari::world::{ ChatHandler, Inventory, Zone, ZoneConnection, @@ -824,11 +824,10 @@ async fn main() { connection.get_actor(request.target.object_id) { for effect in &effects_builder.effects { - match effect.action_type { - 3 => { + match effect.kind { + EffectKind::Damage => { actor.hp -= effect.value as u32; } - _ => {} } } diff --git a/src/world/ipc/action_result.rs b/src/world/ipc/action_result.rs index 8092551..c47eaa8 100644 --- a/src/world/ipc/action_result.rs +++ b/src/world/ipc/action_result.rs @@ -2,11 +2,19 @@ use binrw::binrw; use crate::common::{ObjectTypeId, read_quantized_rotation, write_quantized_rotation}; +#[binrw] +#[derive(Debug, Eq, PartialEq, Clone, Copy, Default)] +#[brw(repr = u8)] +pub enum EffectKind { + #[default] + Damage = 3, +} + #[binrw] #[brw(little)] #[derive(Debug, Clone, Copy, Default)] pub struct ActionEffect { - pub action_type: u8, + pub kind: EffectKind, pub param0: u8, pub param1: u8, pub param2: u8, diff --git a/src/world/ipc/mod.rs b/src/world/ipc/mod.rs index 9aa7a62..56cc5be 100644 --- a/src/world/ipc/mod.rs +++ b/src/world/ipc/mod.rs @@ -60,7 +60,7 @@ mod event_start; pub use event_start::EventStart; mod action_result; -pub use action_result::{ActionEffect, ActionResult}; +pub use action_result::{ActionEffect, ActionResult, EffectKind}; use crate::common::Position; use crate::common::read_string; diff --git a/src/world/lua.rs b/src/world/lua.rs index be9d343..c97f544 100644 --- a/src/world/lua.rs +++ b/src/world/lua.rs @@ -8,7 +8,9 @@ use crate::{ use super::{ PlayerData, StatusEffects, Zone, - ipc::{ActionEffect, ActorSetPos, EventPlay, ServerZoneIpcData, ServerZoneIpcSegment}, + ipc::{ + ActionEffect, ActorSetPos, EffectKind, EventPlay, ServerZoneIpcData, ServerZoneIpcSegment, + }, }; pub struct ChangeTerritoryTask { @@ -171,7 +173,7 @@ impl UserData for EffectsBuilder { fn add_methods>(methods: &mut M) { methods.add_method_mut("damage", |_, this, amount: u16| { this.effects.push(ActionEffect { - action_type: 3, + kind: EffectKind::Damage, value: amount, param1: 133, ..Default::default()