2
#include "../Techno/Body.h"
4
DEFINE_HOOK(6FD64A, TechnoClass_FireRadBeam1, 6)
6
byte idxWeapon = *(byte *)(R->Stack32(0x18) + 0xC); // hack! 0x18 fetches the caller's EBP, which gives us access to its locals, including idxWeapon
7
GET_STACK(TechnoClass *, Techno, 0x14);
9
TechnoExt::ExtMap.Find(Techno)->idxSlot_Beam = idxWeapon;
11
R->Stack<int>(0x0, idxWeapon);
16
// custom RadBeam colors
17
DEFINE_HOOK(6FD79C, TechnoClass_FireRadBeam2, 6)
19
GET(RadBeam *, Rad, ESI);
20
GET_STACK(WeaponTypeClass *, pSource, 0xC);
22
WeaponTypeExt::ExtData *pData = WeaponTypeExt::ExtMap.Find(pSource);
24
if(pData->Beam_IsHouseColor) {
25
GET(TechnoClass *, SourceUnit, EDI);
26
Rad->Color = SourceUnit->Owner->Color;
28
Rad->Color = pData->Beam_Color;
30
Rad->Period = pData->Beam_Duration;
31
Rad->Amplitude = pData->Beam_Amplitude;