mirror of
https://github.com/redstrate/Kawari.git
synced 2025-04-19 22:36:49 +00:00
Expose Damage kind, element and type in Lua API
This commit is contained in:
parent
fa2caa6647
commit
ef58358756
5 changed files with 53 additions and 10 deletions
38
Cargo.lock
generated
38
Cargo.lock
generated
|
@ -333,6 +333,16 @@ version = "1.0.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
|
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "erased-serde"
|
||||||
|
version = "0.4.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7"
|
||||||
|
dependencies = [
|
||||||
|
"serde",
|
||||||
|
"typeid",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "errno"
|
name = "errno"
|
||||||
version = "0.3.11"
|
version = "0.3.11"
|
||||||
|
@ -904,11 +914,14 @@ checksum = "d3f763c1041eff92ffb5d7169968a327e1ed2ebfe425dac0ee5a35f29082534b"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bstr",
|
"bstr",
|
||||||
"either",
|
"either",
|
||||||
|
"erased-serde",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"mlua-sys",
|
"mlua-sys",
|
||||||
"num-traits",
|
"num-traits",
|
||||||
"parking_lot",
|
"parking_lot",
|
||||||
"rustc-hash",
|
"rustc-hash",
|
||||||
|
"serde",
|
||||||
|
"serde-value",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -954,6 +967,15 @@ version = "1.21.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
|
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ordered-float"
|
||||||
|
version = "2.10.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c"
|
||||||
|
dependencies = [
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "parking_lot"
|
name = "parking_lot"
|
||||||
version = "0.12.3"
|
version = "0.12.3"
|
||||||
|
@ -1199,6 +1221,16 @@ dependencies = [
|
||||||
"serde_derive",
|
"serde_derive",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde-value"
|
||||||
|
version = "0.7.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c"
|
||||||
|
dependencies = [
|
||||||
|
"ordered-float",
|
||||||
|
"serde",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde_derive"
|
name = "serde_derive"
|
||||||
version = "1.0.219"
|
version = "1.0.219"
|
||||||
|
@ -1492,6 +1524,12 @@ version = "0.2.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
|
checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "typeid"
|
||||||
|
version = "1.0.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-ident"
|
name = "unicode-ident"
|
||||||
version = "1.0.18"
|
version = "1.0.18"
|
||||||
|
|
|
@ -87,7 +87,7 @@ rusqlite = { version = "0.34", features = ["bundled"], default-features = false
|
||||||
bitflags = { version = "1.3", default-features = false }
|
bitflags = { version = "1.3", default-features = false }
|
||||||
|
|
||||||
# For server-side scripting
|
# For server-side scripting
|
||||||
mlua = { version = "0.10", features = ["lua51", "vendored", "send", "async"], default-features = false }
|
mlua = { version = "0.10", features = ["lua51", "vendored", "send", "async", "serialize"], default-features = false }
|
||||||
|
|
||||||
# For character backup decompression
|
# For character backup decompression
|
||||||
zip = { version = "2.6", features = ["deflate", "lzma", "bzip2"], default-features = false }
|
zip = { version = "2.6", features = ["deflate", "lzma", "bzip2"], default-features = false }
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
function doAction(player)
|
function doAction(player)
|
||||||
effects = EffectsBuilder()
|
effects = EffectsBuilder()
|
||||||
effects:damage(20)
|
effects:damage("Normal", "Slashing", "Unaspected", 20)
|
||||||
|
|
||||||
return effects
|
return effects
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
use binrw::binrw;
|
use binrw::binrw;
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::common::{ObjectTypeId, read_quantized_rotation, write_quantized_rotation};
|
use crate::common::{ObjectTypeId, read_quantized_rotation, write_quantized_rotation};
|
||||||
|
|
||||||
// TODO: this might be a flag?
|
// TODO: this might be a flag?
|
||||||
#[binrw]
|
#[binrw]
|
||||||
#[derive(Debug, Eq, PartialEq, Clone, Copy, Default)]
|
#[derive(Debug, Eq, PartialEq, Clone, Copy, Default, Deserialize, Serialize)]
|
||||||
#[brw(repr = u8)]
|
#[brw(repr = u8)]
|
||||||
pub enum DamageKind {
|
pub enum DamageKind {
|
||||||
#[default]
|
#[default]
|
||||||
|
@ -40,7 +41,7 @@ pub enum EffectKind {
|
||||||
BeginCombo,
|
BeginCombo,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Eq, PartialEq, Clone, Copy, Default)]
|
#[derive(Debug, Eq, PartialEq, Clone, Copy, Default, Deserialize, Serialize)]
|
||||||
pub enum DamageType {
|
pub enum DamageType {
|
||||||
Unknown,
|
Unknown,
|
||||||
Slashing,
|
Slashing,
|
||||||
|
@ -71,7 +72,7 @@ impl From<u8> for DamageType {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Eq, PartialEq, Clone, Copy, Default)]
|
#[derive(Debug, Eq, PartialEq, Clone, Copy, Default, Deserialize, Serialize)]
|
||||||
pub enum DamageElement {
|
pub enum DamageElement {
|
||||||
Unknown,
|
Unknown,
|
||||||
Fire,
|
Fire,
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
use mlua::{FromLua, Lua, UserData, UserDataMethods, Value};
|
use mlua::{FromLua, Lua, LuaSerdeExt, UserData, UserDataMethods, Value};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
common::{ObjectId, ObjectTypeId, Position, timestamp_secs},
|
common::{ObjectId, ObjectTypeId, Position, timestamp_secs},
|
||||||
|
@ -172,12 +172,16 @@ pub struct EffectsBuilder {
|
||||||
|
|
||||||
impl UserData for EffectsBuilder {
|
impl UserData for EffectsBuilder {
|
||||||
fn add_methods<M: UserDataMethods<Self>>(methods: &mut M) {
|
fn add_methods<M: UserDataMethods<Self>>(methods: &mut M) {
|
||||||
methods.add_method_mut("damage", |_, this, amount: u16| {
|
methods.add_method_mut("damage", |lua, this, (damage_kind, damage_type, damage_element, amount): (Value, Value, Value, u16)| {
|
||||||
|
let damage_kind: DamageKind = lua.from_value(damage_kind).unwrap();
|
||||||
|
let damage_type: DamageType = lua.from_value(damage_type).unwrap();
|
||||||
|
let damage_element: DamageElement = lua.from_value(damage_element).unwrap();
|
||||||
|
|
||||||
this.effects.push(ActionEffect {
|
this.effects.push(ActionEffect {
|
||||||
kind: EffectKind::Damage {
|
kind: EffectKind::Damage {
|
||||||
damage_kind: DamageKind::Normal,
|
damage_kind,
|
||||||
damage_type: DamageType::Slashing,
|
damage_type,
|
||||||
damage_element: DamageElement::Unaspected,
|
damage_element,
|
||||||
bonus_percent: 0,
|
bonus_percent: 0,
|
||||||
unk3: 0,
|
unk3: 0,
|
||||||
unk4: 0,
|
unk4: 0,
|
||||||
|
|
Loading…
Add table
Reference in a new issue