Fixed MSVC compilation.
This commit is contained in:
parent
5b2b6e0615
commit
045ae2ef2c
@ -114,14 +114,14 @@ void cPawn::HandleEntityEffect(cEntityEffect::eType a_EffectType, cEntityEffect
|
||||
case cEntityEffect::effInstantHealth:
|
||||
{
|
||||
// Base heal = 6, doubles for every increase in intensity
|
||||
Heal(6 * std::pow(2, a_Effect.GetIntensity()) * a_Effect.GetDistanceModifier());
|
||||
Heal((int)(6 * std::pow(2.0, a_Effect.GetIntensity()) * a_Effect.GetDistanceModifier()));
|
||||
return;
|
||||
}
|
||||
case cEntityEffect::effInstantDamage:
|
||||
{
|
||||
// Base damage = 6, doubles for every increase in intensity
|
||||
int damage = 6 * std::pow(2, a_Effect.GetIntensity());
|
||||
TakeDamage(dtPotionOfHarming, a_Effect.GetUser(), damage * a_Effect.GetDistanceModifier(), 0);
|
||||
int damage = (int)(6 * std::pow(2.0, a_Effect.GetIntensity()) * a_Effect.GetDistanceModifier());
|
||||
TakeDamage(dtPotionOfHarming, a_Effect.GetUser(), damage, 0);
|
||||
return;
|
||||
}
|
||||
case cEntityEffect::effStrength:
|
||||
@ -132,7 +132,7 @@ void cPawn::HandleEntityEffect(cEntityEffect::eType a_EffectType, cEntityEffect
|
||||
case cEntityEffect::effWeakness:
|
||||
{
|
||||
// Damage reduction = 0.5 damage, multiplied by potion level (Weakness II = 1 damage)
|
||||
//double dmg_reduc = 0.5 * (a_Effect.GetIntensity() + 1);
|
||||
// double dmg_reduc = 0.5 * (a_Effect.GetIntensity() + 1);
|
||||
|
||||
// TODO: Implement me!
|
||||
// TODO: Weakened villager zombies can be turned back to villagers with the god apple
|
||||
@ -143,6 +143,7 @@ void cPawn::HandleEntityEffect(cEntityEffect::eType a_EffectType, cEntityEffect
|
||||
// Regen frequency = 50 ticks, divided by potion level (Regen II = 25 ticks)
|
||||
int frequency = std::floor(50.0 / (double)(a_Effect.GetIntensity() + 1));
|
||||
|
||||
// TODO: The counter needs to be specific to one cPawn, make it a member variable.
|
||||
static short counter = 0;
|
||||
if (++counter >= frequency)
|
||||
{
|
||||
@ -157,6 +158,7 @@ void cPawn::HandleEntityEffect(cEntityEffect::eType a_EffectType, cEntityEffect
|
||||
// Poison frequency = 25 ticks, divided by potion level (Poison II = 12 ticks)
|
||||
int frequency = std::floor(25.0 / (double)(a_Effect.GetIntensity() + 1));
|
||||
|
||||
// TODO: The counter needs to be specific to one cPawn, make it a member variable.
|
||||
static short counter = 0;
|
||||
if (++counter >= frequency)
|
||||
{
|
||||
@ -175,6 +177,7 @@ void cPawn::HandleEntityEffect(cEntityEffect::eType a_EffectType, cEntityEffect
|
||||
// Poison frequency = 40 ticks, divided by effect level (Wither II = 20 ticks)
|
||||
int frequency = std::floor(25.0 / (double)(a_Effect.GetIntensity() + 1));
|
||||
|
||||
// TODO: The counter needs to be specific to one cPawn, make it a member variable.
|
||||
static short counter = 0;
|
||||
if (++counter >= frequency)
|
||||
{
|
||||
|
@ -57,7 +57,7 @@ class cItemPotionHandler:
|
||||
{
|
||||
// Base duration in ticks
|
||||
int base = 0;
|
||||
double tier_multi = 1, ext_multi = 1, splash_multi = 1;
|
||||
double TierCoeff = 1, ExtCoeff = 1, SplashCoeff = 1;
|
||||
|
||||
switch (GetEntityEffectType(a_ItemDamage))
|
||||
{
|
||||
@ -88,20 +88,20 @@ class cItemPotionHandler:
|
||||
}
|
||||
|
||||
// If potion is level 2, half the duration. If not, stays the same
|
||||
tier_multi = GetEntityEffectIntensity(a_ItemDamage) > 0 ? 0.5 : 1;
|
||||
TierCoeff = (GetEntityEffectIntensity(a_ItemDamage) > 0) ? 0.5 : 1;
|
||||
|
||||
// If potion is extended, multiply duration by 8/3. If not, stays the same
|
||||
// Extended potion if sixth bit is set
|
||||
ext_multi = a_ItemDamage & 64 ? (8.0/3.0) : 1;
|
||||
ExtCoeff = (a_ItemDamage & 64) ? (8.0/3.0) : 1;
|
||||
|
||||
// If potion is splash potion, multiply duration by 3/4. If not, stays the same
|
||||
splash_multi = !IsDrinkable(a_ItemDamage) ? 0.75 : 1;
|
||||
SplashCoeff = IsDrinkable(a_ItemDamage) ? 1 : 0.75;
|
||||
|
||||
// For reference: http://minecraft.gamepedia.com/Data_values#.22Tier.22_bit
|
||||
// http://minecraft.gamepedia.com/Data_values#.22Extended_duration.22_bit
|
||||
// http://minecraft.gamepedia.com/Data_values#.22Splash_potion.22_bit
|
||||
|
||||
return base * tier_multi * ext_multi * splash_multi;
|
||||
return (int)(base * TierCoeff * ExtCoeff * SplashCoeff);
|
||||
}
|
||||
|
||||
public:
|
||||
@ -114,7 +114,7 @@ public:
|
||||
{
|
||||
// Drinkable potion if 13th bit is set
|
||||
// For reference: http://minecraft.gamepedia.com/Potions#Data_value_table
|
||||
return a_ItemDamage & 8192;
|
||||
return ((a_ItemDamage & 8192) != 0);
|
||||
}
|
||||
|
||||
virtual bool OnItemUse(cWorld * a_World, cPlayer * a_Player, const cItem & a_Item, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_Dir) override
|
||||
@ -128,7 +128,7 @@ public:
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!Projectile->Initialize(a_World))
|
||||
if (!Projectile->Initialize(*a_World))
|
||||
{
|
||||
delete Projectile;
|
||||
return false;
|
||||
|
@ -459,7 +459,7 @@ void cMonster::HandleEntityEffect(cEntityEffect::eType a_EffectType, cEntityEffe
|
||||
|
||||
// Undead mobs are healed by instant damage
|
||||
// Base heal = 6, doubles for every increase in intensity
|
||||
Heal(6 * std::pow(2, a_Effect.GetIntensity()) * a_Effect.GetDistanceModifier());
|
||||
Heal((int)(6 * std::pow(2.0, a_Effect.GetIntensity()) * a_Effect.GetDistanceModifier()));
|
||||
return;
|
||||
}
|
||||
case cEntityEffect::effInstantHealth:
|
||||
@ -469,8 +469,8 @@ void cMonster::HandleEntityEffect(cEntityEffect::eType a_EffectType, cEntityEffe
|
||||
|
||||
// Undead mobs are damaged by instant health
|
||||
// Base damage = 6, doubles for every increase in intensity
|
||||
int damage = 6 * std::pow(2, a_Effect.GetIntensity());
|
||||
TakeDamage(dtPotionOfHarming, a_Effect.GetUser(), damage * a_Effect.GetDistanceModifier(), 0);
|
||||
int damage = (int)(6 * std::pow(2.0, a_Effect.GetIntensity()) * a_Effect.GetDistanceModifier());
|
||||
TakeDamage(dtPotionOfHarming, a_Effect.GetUser(), damage, 0);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user