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:
|
case cEntityEffect::effInstantHealth:
|
||||||
{
|
{
|
||||||
// Base heal = 6, doubles for every increase in intensity
|
// 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;
|
return;
|
||||||
}
|
}
|
||||||
case cEntityEffect::effInstantDamage:
|
case cEntityEffect::effInstantDamage:
|
||||||
{
|
{
|
||||||
// Base damage = 6, doubles for every increase in intensity
|
// Base damage = 6, doubles for every increase in intensity
|
||||||
int damage = 6 * std::pow(2, a_Effect.GetIntensity());
|
int damage = (int)(6 * std::pow(2.0, a_Effect.GetIntensity()) * a_Effect.GetDistanceModifier());
|
||||||
TakeDamage(dtPotionOfHarming, a_Effect.GetUser(), damage * a_Effect.GetDistanceModifier(), 0);
|
TakeDamage(dtPotionOfHarming, a_Effect.GetUser(), damage, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
case cEntityEffect::effStrength:
|
case cEntityEffect::effStrength:
|
||||||
@ -132,7 +132,7 @@ void cPawn::HandleEntityEffect(cEntityEffect::eType a_EffectType, cEntityEffect
|
|||||||
case cEntityEffect::effWeakness:
|
case cEntityEffect::effWeakness:
|
||||||
{
|
{
|
||||||
// Damage reduction = 0.5 damage, multiplied by potion level (Weakness II = 1 damage)
|
// 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: Implement me!
|
||||||
// TODO: Weakened villager zombies can be turned back to villagers with the god apple
|
// 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)
|
// Regen frequency = 50 ticks, divided by potion level (Regen II = 25 ticks)
|
||||||
int frequency = std::floor(50.0 / (double)(a_Effect.GetIntensity() + 1));
|
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;
|
static short counter = 0;
|
||||||
if (++counter >= frequency)
|
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)
|
// Poison frequency = 25 ticks, divided by potion level (Poison II = 12 ticks)
|
||||||
int frequency = std::floor(25.0 / (double)(a_Effect.GetIntensity() + 1));
|
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;
|
static short counter = 0;
|
||||||
if (++counter >= frequency)
|
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)
|
// Poison frequency = 40 ticks, divided by effect level (Wither II = 20 ticks)
|
||||||
int frequency = std::floor(25.0 / (double)(a_Effect.GetIntensity() + 1));
|
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;
|
static short counter = 0;
|
||||||
if (++counter >= frequency)
|
if (++counter >= frequency)
|
||||||
{
|
{
|
||||||
|
@ -57,7 +57,7 @@ class cItemPotionHandler:
|
|||||||
{
|
{
|
||||||
// Base duration in ticks
|
// Base duration in ticks
|
||||||
int base = 0;
|
int base = 0;
|
||||||
double tier_multi = 1, ext_multi = 1, splash_multi = 1;
|
double TierCoeff = 1, ExtCoeff = 1, SplashCoeff = 1;
|
||||||
|
|
||||||
switch (GetEntityEffectType(a_ItemDamage))
|
switch (GetEntityEffectType(a_ItemDamage))
|
||||||
{
|
{
|
||||||
@ -88,20 +88,20 @@ class cItemPotionHandler:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If potion is level 2, half the duration. If not, stays the same
|
// 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
|
// If potion is extended, multiply duration by 8/3. If not, stays the same
|
||||||
// Extended potion if sixth bit is set
|
// 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
|
// 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
|
// 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#.22Extended_duration.22_bit
|
||||||
// http://minecraft.gamepedia.com/Data_values#.22Splash_potion.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:
|
public:
|
||||||
@ -114,7 +114,7 @@ public:
|
|||||||
{
|
{
|
||||||
// Drinkable potion if 13th bit is set
|
// Drinkable potion if 13th bit is set
|
||||||
// For reference: http://minecraft.gamepedia.com/Potions#Data_value_table
|
// 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
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
if (!Projectile->Initialize(a_World))
|
if (!Projectile->Initialize(*a_World))
|
||||||
{
|
{
|
||||||
delete Projectile;
|
delete Projectile;
|
||||||
return false;
|
return false;
|
||||||
|
@ -459,7 +459,7 @@ void cMonster::HandleEntityEffect(cEntityEffect::eType a_EffectType, cEntityEffe
|
|||||||
|
|
||||||
// Undead mobs are healed by instant damage
|
// Undead mobs are healed by instant damage
|
||||||
// Base heal = 6, doubles for every increase in intensity
|
// 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;
|
return;
|
||||||
}
|
}
|
||||||
case cEntityEffect::effInstantHealth:
|
case cEntityEffect::effInstantHealth:
|
||||||
@ -469,8 +469,8 @@ void cMonster::HandleEntityEffect(cEntityEffect::eType a_EffectType, cEntityEffe
|
|||||||
|
|
||||||
// Undead mobs are damaged by instant health
|
// Undead mobs are damaged by instant health
|
||||||
// Base damage = 6, doubles for every increase in intensity
|
// Base damage = 6, doubles for every increase in intensity
|
||||||
int damage = 6 * std::pow(2, a_Effect.GetIntensity());
|
int damage = (int)(6 * std::pow(2.0, a_Effect.GetIntensity()) * a_Effect.GetDistanceModifier());
|
||||||
TakeDamage(dtPotionOfHarming, a_Effect.GetUser(), damage * a_Effect.GetDistanceModifier(), 0);
|
TakeDamage(dtPotionOfHarming, a_Effect.GetUser(), damage, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user