Skip to content

Commit 9ecb6d9

Browse files
committed
Added SplitMix64, Xioroshiro128++ to Math
Added SpellProcData to GameDefine Added Game LuaUnitEvents (PowerUpdate, ResistanceUpdate, StatUpdate, AuraAdd, AuraUpdate, AuraRemove) Added Server LuaSpellEvents (OnFinish) Added Server LuaAuraEvents (OnApply, OnRemove, OnHandleEffect) Added ClientDB (SpellProcData, SpellProcLink) Added CheatCommands (SpellProcDataSet, SpellProcLinkSet) Added NetworkPackets (Server_UnitAddAura, Server_UnitUpdateAura, Server_UnitRemoveAura) Added SpellEnums (SpellProcPhaseType, SpellProcPhaseMask, SpellProcTypeMask, SpellProcHitMask, SpellProcFlag) Added SpellEnum SpellEffectTypes (Dummy, AuraApply, AuraRemove, AuraPeriodicDamage, AuraPeriodicHeal) Added UnitEnum StatTypes (Health, Armor, AttackPower, SpellPower) Fixed an issue where Lua Errors originating in bound C Functions were not reporting the correct function name Fixed an issue in TypeGenerator where Generating u32/u64 enums would cause compiler warnings Removed Printing Bloat in Lexer/Parser
1 parent e6312b6 commit 9ecb6d9

File tree

15 files changed

+430
-23
lines changed

15 files changed

+430
-23
lines changed

Source/Base/Base/Math/Math.h

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,4 +255,79 @@ namespace Math
255255
return MatrixMul(translateMatrix, ScaleMatrix(rotMatrix, scale));
256256
}
257257
}
258+
259+
// ---------------------------
260+
// SplitMix64 (for seeding)
261+
// ---------------------------
262+
struct SplitMix64
263+
{
264+
public:
265+
266+
explicit SplitMix64(u64 seed) : _state(seed) {}
267+
268+
u64 Next()
269+
{
270+
u64 z = (_state += 0x9E3779B97f4A7C15ull);
271+
z = (z ^ (z >> 30)) * 0xBF58476D1CE4E5B9ull;
272+
z = (z ^ (z >> 27)) * 0x94D049BB133111EBull;
273+
return z ^ (z >> 31);
274+
}
275+
276+
private:
277+
u64 _state;
278+
};
279+
280+
// ---------------------------
281+
// Xoroshiro128++
282+
// ---------------------------
283+
struct Xoroshiro128PP
284+
{
285+
public:
286+
explicit Xoroshiro128PP(u64 seed = 1)
287+
{
288+
Seed(seed);
289+
}
290+
291+
inline u64 RotL(const u64 x, int k) const
292+
{
293+
return (x << k) | (x >> (64 - k));
294+
}
295+
296+
void Seed(u64 seed)
297+
{
298+
SplitMix64 sm(seed);
299+
_s[0] = sm.Next();
300+
_s[1] = sm.Next();
301+
}
302+
303+
u64 Next()
304+
{
305+
const uint64_t s0 = _s[0];
306+
uint64_t s1 = _s[1];
307+
const uint64_t result = RotL(s0 + s1, 17) + s0;
308+
309+
s1 ^= s0;
310+
_s[0] = RotL(s0, 49) ^ s1 ^ (s1 << 21);
311+
_s[1] = RotL(s1, 28);
312+
313+
return result;
314+
}
315+
316+
// Generate [0,1] float
317+
f32 NextF32()
318+
{
319+
// Use high 24 bits for float precision
320+
return (Next() >> 40) * (1.0f / (1ull << 24));
321+
}
322+
323+
// Generate [0,1] double
324+
f64 NextF64()
325+
{
326+
// Use high 53 bits for double precision
327+
return (Next() >> 11) * (1.0 / (1ull << 53));
328+
}
329+
330+
private:
331+
u64 _s[2];
332+
};
258333
};

Source/Gameplay/Gameplay/GameDefine.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,7 @@ namespace GameDefine
230230
didFail |= !buffer->GetU32(result.iconID);
231231
didFail |= !buffer->GetF32(result.castTime);
232232
didFail |= !buffer->GetF32(result.cooldown);
233+
didFail |= !buffer->GetF32(result.duration);
233234

234235
bool succeeded = !didFail;
235236
return succeeded;
@@ -245,6 +246,7 @@ namespace GameDefine
245246
didFail |= !buffer->PutU32(data.iconID);
246247
didFail |= !buffer->PutF32(data.castTime);
247248
didFail |= !buffer->PutF32(data.cooldown);
249+
didFail |= !buffer->PutF32(data.duration);
248250

249251
bool succeeded = !didFail;
250252
return succeeded;
@@ -268,5 +270,24 @@ namespace GameDefine
268270
bool succeeded = !didFail;
269271
return succeeded;
270272
}
273+
274+
bool SpellProcData::Read(std::shared_ptr<Bytebuffer>& buffer, SpellProcData& result)
275+
{
276+
bool didFail = false;
277+
278+
didFail |= !buffer->Get(result);
279+
280+
bool succeeded = !didFail;
281+
return succeeded;
282+
}
283+
bool SpellProcData::Write(std::shared_ptr<Bytebuffer>& buffer, const SpellProcData& data)
284+
{
285+
bool didFail = false;
286+
287+
didFail |= !buffer->Put(data);
288+
289+
bool succeeded = !didFail;
290+
return succeeded;
291+
}
271292
}
272293
}

Source/Gameplay/Gameplay/GameDefine.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ namespace GameDefine
204204

205205
f32 castTime;
206206
f32 cooldown;
207+
f32 duration;
207208

208209
public:
209210
static bool Read(std::shared_ptr<Bytebuffer>& buffer, Spell& result);
@@ -231,5 +232,25 @@ namespace GameDefine
231232
static bool Read(std::shared_ptr<Bytebuffer>& buffer, SpellEffect& result);
232233
static bool Write(std::shared_ptr<Bytebuffer>& buffer, const SpellEffect& data);
233234
};
235+
236+
struct SpellProcData
237+
{
238+
public:
239+
u32 id;
240+
241+
u32 phaseMask;
242+
u64 typeMask;
243+
u64 hitMask;
244+
u64 flags;
245+
246+
f32 procsPerMinute;
247+
f32 chanceToProc;
248+
u32 internalCooldownMS;
249+
i32 charges;
250+
251+
public:
252+
static bool Read(std::shared_ptr<Bytebuffer>& buffer, SpellProcData& result);
253+
static bool Write(std::shared_ptr<Bytebuffer>& buffer, const SpellProcData& data);
254+
};
234255
}
235256
}

Source/Meta/Meta/Source/Game/LuaEvent.luau

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,12 @@ type LuaUnitEvent<Enum> =
7373
Add : Auto,
7474
Remove : Auto,
7575
TargetChanged : Auto,
76+
PowerUpdate : Auto,
77+
ResistanceUpdate : Auto,
78+
StatUpdate : Auto,
79+
AuraAdd : Auto,
80+
AuraUpdate : Auto,
81+
AuraRemove : Auto,
7682
Count : Auto
7783
};
7884
}
@@ -104,6 +110,79 @@ type LuaUnitEventDataTargetChanged<LuaStruct> =
104110
targetID : u32
105111
};
106112
}
113+
type LuaUnitEventDataPowerUpdate<LuaStruct> =
114+
{
115+
Name : "UnitEventDataPowerUpdate";
116+
117+
Fields :
118+
{
119+
unitID : u32,
120+
powerType : u8,
121+
base : f64,
122+
current : f64,
123+
max : f64
124+
};
125+
}
126+
type LuaUnitEventDataResistanceUpdate<LuaStruct> =
127+
{
128+
Name : "UnitEventDataResistanceUpdate";
129+
130+
Fields :
131+
{
132+
unitID : u32,
133+
resistanceType : u8,
134+
base : f64,
135+
current : f64,
136+
max : f64
137+
};
138+
}
139+
type LuaUnitEventDataStatUpdate<LuaStruct> =
140+
{
141+
Name : "UnitEventDataStatUpdate";
142+
143+
Fields :
144+
{
145+
unitID : u32,
146+
statType : u8,
147+
base : f64,
148+
current : f64
149+
};
150+
}
151+
type LuaUnitEventDataAuraAdd<LuaStruct> =
152+
{
153+
Name : "UnitEventDataAuraAdd";
154+
155+
Fields :
156+
{
157+
unitID : u32,
158+
auraID : u32,
159+
spellID : u32,
160+
duration : f32,
161+
stacks : u16
162+
};
163+
}
164+
type LuaUnitEventDataAuraUpdate<LuaStruct> =
165+
{
166+
Name : "UnitEventDataAuraUpdate";
167+
168+
Fields :
169+
{
170+
unitID : u32,
171+
auraID : u32,
172+
duration : f32,
173+
stacks : u16
174+
};
175+
}
176+
type LuaUnitEventDataAuraRemove<LuaStruct> =
177+
{
178+
Name : "UnitEventDataAuraRemove";
179+
180+
Fields :
181+
{
182+
unitID : u32,
183+
auraID : u32
184+
};
185+
}
107186

108187
type LuaContainerEvent<Enum> =
109188
{

Source/Meta/Meta/Source/Server/LuaEvent.luau

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ type LuaSpellEvent<Enum> =
123123
Invalid : Auto,
124124
OnPrepare : Auto,
125125
OnHandleEffect : Auto,
126+
OnFinish : Auto,
126127
Count : Auto
127128
};
128129
}
@@ -146,6 +147,73 @@ type LuaSpellEventDataOnHandleEffect<LuaStruct> =
146147
casterID : u32,
147148
spellEntity : u32,
148149
spellID : u32,
150+
procID : u32,
151+
effectIndex : u8,
152+
effectType : u8
153+
};
154+
}
155+
156+
type LuaSpellEventDataOnFinish<LuaStruct> =
157+
{
158+
Name : "SpellEventDataOnFinish";
159+
160+
Fields :
161+
{
162+
casterID : u32,
163+
spellEntity : u32,
164+
spellID : u32
165+
};
166+
}
167+
168+
type LuaAuraEvent<Enum> =
169+
{
170+
Name : "AuraEvent";
171+
Type : u8;
172+
173+
Fields :
174+
{
175+
Invalid : Auto,
176+
OnApply : Auto,
177+
OnRemove : Auto,
178+
OnHandleEffect : Auto,
179+
Count : Auto
180+
};
181+
}
182+
type LuaAuraEventDataOnApply<LuaStruct> =
183+
{
184+
Name : "AuraEventDataOnApply";
185+
186+
Fields :
187+
{
188+
casterID : u32,
189+
targetID : u32,
190+
auraEntity : u32,
191+
spellID : u32
192+
};
193+
}
194+
type LuaAuraEventDataOnRemove<LuaStruct> =
195+
{
196+
Name : "AuraEventDataOnRemove";
197+
198+
Fields :
199+
{
200+
casterID : u32,
201+
targetID : u32,
202+
auraEntity : u32,
203+
spellID : u32
204+
};
205+
}
206+
type LuaAuraEventDataOnHandleEffect<LuaStruct> =
207+
{
208+
Name : "AuraEventDataOnHandleEffect";
209+
210+
Fields :
211+
{
212+
casterID : u32,
213+
targetID : u32,
214+
auraEntity : u32,
215+
spellID : u32,
216+
procID : u32,
149217
effectIndex : u8,
150218
effectType : u8
151219
};

Source/Meta/Meta/Source/Shared/ClientDB.luau

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,8 @@ type Spell<ClientDB> =
448448
auraDescription : stringref,
449449
iconID : u32,
450450
castTime : f32,
451-
cooldown : f32
451+
cooldown : f32,
452+
duration : f32
452453
};
453454
};
454455

@@ -469,6 +470,33 @@ type SpellEffects<ClientDB> =
469470
};
470471
};
471472

473+
type SpellProcData<ClientDB> =
474+
{
475+
Name : "SpellProcData";
476+
Fields :
477+
{
478+
phaseMask : u32,
479+
typeMask : u64,
480+
hitMask : u64,
481+
flags : u64,
482+
procsPerMinute : f32,
483+
chanceToProc : f32,
484+
internalCooldownMS : u32,
485+
charges : i32
486+
};
487+
};
488+
489+
type SpellProcLink<ClientDB> =
490+
{
491+
Name : "SpellProcLink";
492+
Fields :
493+
{
494+
spellID : u32,
495+
effectMask : u64,
496+
procDataID : u32
497+
};
498+
};
499+
472500
type UnitRace<ClientDB> =
473501
{
474502
Name : "UnitRace";

Source/Meta/Meta/Source/Shared/NetworkEnum.luau

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ type CheatCommand<Enum> =
4040
TriggerRemove : Auto,
4141
SpellSet : Auto,
4242
SpellEffectSet : Auto,
43+
SpellProcDataSet : Auto,
44+
SpellProcLinkSet : Auto,
4345
CreatureAddScript : Auto,
4446
CreatureRemoveScript : Auto
4547
};

0 commit comments

Comments
 (0)