2022-02-19 13:04:45 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "Runtime/Tweaks/ITweak.hpp"
|
|
|
|
|
|
|
|
namespace metaforce {
|
|
|
|
/* Same as CDamageInfo */
|
|
|
|
struct SShotParam {
|
2022-02-22 06:59:47 +00:00
|
|
|
u32 x0_weaponType = -1;
|
2022-08-09 18:11:15 +00:00
|
|
|
bool x4_24_charged : 1 = false;
|
|
|
|
bool x4_25_combo : 1 = false;
|
|
|
|
bool x4_26_instaKill : 1 = false;
|
2022-02-19 13:04:45 +00:00
|
|
|
float x8_damage = 0.f;
|
|
|
|
float xc_radiusDamage = 0.f;
|
|
|
|
float x10_radius = 0.f;
|
|
|
|
float x14_knockback = 0.f;
|
2022-08-09 18:11:15 +00:00
|
|
|
bool x18_24_noImmunity : 1 = false;
|
|
|
|
SShotParam() = default;
|
2022-02-19 13:04:45 +00:00
|
|
|
explicit SShotParam(CInputStream& in);
|
|
|
|
};
|
|
|
|
|
|
|
|
struct SComboShotParam : SShotParam {
|
|
|
|
SComboShotParam() { x4_25_combo = true; }
|
|
|
|
explicit SComboShotParam(CInputStream& in) : SShotParam(in) { x4_25_combo = true; }
|
|
|
|
};
|
|
|
|
|
|
|
|
struct SChargedShotParam : SShotParam {
|
|
|
|
SChargedShotParam() { x4_24_charged = true; }
|
|
|
|
explicit SChargedShotParam(CInputStream& in) : SShotParam(in) { x4_24_charged = true; }
|
|
|
|
};
|
|
|
|
|
|
|
|
struct SWeaponInfo {
|
|
|
|
float x0_coolDown = 0.1f;
|
|
|
|
SShotParam x4_normal;
|
|
|
|
SChargedShotParam x20_charged;
|
|
|
|
SWeaponInfo() = default;
|
|
|
|
explicit SWeaponInfo(CInputStream& in);
|
|
|
|
};
|
|
|
|
|
|
|
|
namespace Tweaks {
|
|
|
|
struct ITweakPlayerGun : ITweak {
|
|
|
|
virtual float GetUpLookAngle() const = 0;
|
|
|
|
virtual float GetDownLookAngle() const = 0;
|
|
|
|
virtual float GetVerticalSpread() const = 0;
|
|
|
|
virtual float GetHorizontalSpread() const = 0;
|
|
|
|
virtual float GetHighVerticalSpread() const = 0;
|
|
|
|
virtual float GetHighHorizontalSpread() const = 0;
|
|
|
|
virtual float GetLowVerticalSpread() const = 0;
|
|
|
|
virtual float GetLowHorizontalSpread() const = 0;
|
|
|
|
virtual float GetAimVerticalSpeed() const = 0; // x24
|
|
|
|
virtual float GetAimHorizontalSpeed() const = 0; // x28
|
|
|
|
virtual float GetBombFuseTime() const = 0; // x2c
|
|
|
|
virtual float GetBombDropDelayTime() const = 0; // x30
|
|
|
|
virtual float GetHoloHoldTime() const = 0; // x34
|
|
|
|
virtual float GetGunTransformTime() const = 0; // x38
|
|
|
|
virtual float GetGunHolsterTime() const = 0;
|
|
|
|
virtual float GetGunNotFiringTime() const = 0;
|
|
|
|
virtual float GetFixedVerticalAim() const = 0;
|
|
|
|
virtual float GetGunExtendDistance() const = 0;
|
|
|
|
virtual const zeus::CVector3f& GetGunPosition() const = 0;
|
|
|
|
virtual const zeus::CVector3f& GetGrapplingArmPosition() const = 0;
|
2022-02-22 06:59:47 +00:00
|
|
|
virtual float GetRichochetDamage(u32) const = 0;
|
|
|
|
virtual const SWeaponInfo& GetBeamInfo(s32 beam) const = 0;
|
|
|
|
virtual const SComboShotParam& GetComboShotInfo(s32 beam) const = 0;
|
2022-02-19 13:04:45 +00:00
|
|
|
virtual const SShotParam& GetBombInfo() const = 0;
|
|
|
|
virtual const SShotParam& GetPowerBombInfo() const = 0;
|
|
|
|
};
|
|
|
|
} // namespace Tweaks
|
|
|
|
} // namespace metaforce
|