diff --git a/include/MetroidPrime/CDamageInfo.hpp b/include/MetroidPrime/CDamageInfo.hpp index 0bbb99ec..49ac01db 100644 --- a/include/MetroidPrime/CDamageInfo.hpp +++ b/include/MetroidPrime/CDamageInfo.hpp @@ -35,6 +35,15 @@ public: , x14_knockback(knockback) , x18_24_noImmunity(noImmunity) {} + CDamageInfo(const CWeaponMode& mode, float damage, float radiusDamage, float radius, float knockback, + bool noImmunity = false) + : x0_weaponMode(mode) + , x8_damage(damage) + , xc_radiusDamage(radiusDamage) + , x10_radius(radius) + , x14_knockback(knockback) + , x18_24_noImmunity(noImmunity) {} + CDamageInfo(CInputStream& in); CDamageInfo(const CDamageInfo&, float); CDamageInfo(const SShotParam& other); diff --git a/src/MetroidPrime/Weapons/CWeapon.cpp b/src/MetroidPrime/Weapons/CWeapon.cpp index 0c81cb98..153d65eb 100644 --- a/src/MetroidPrime/Weapons/CWeapon.cpp +++ b/src/MetroidPrime/Weapons/CWeapon.cpp @@ -41,7 +41,7 @@ void CWeapon::Think(float dt, CStateManager& mgr) { float radius = scale * x110_origDamageInfo.GetRadius(); float knockback = scale * x110_origDamageInfo.GetKnockBackPower(); x12c_curDamageInfo = - CDamageInfo(x110_origDamageInfo.GetWeaponMode(), damage, radius, knockback); + CDamageInfo(x110_origDamageInfo.GetWeaponMode(), damage, (double)(scale * x110_origDamageInfo.GetDamage()), radius, knockback); } else { x12c_curDamageInfo = x110_origDamageInfo; }