1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-25 22:42:04 +02:00

rename BattleSpellCastParameters::caster

This commit is contained in:
AlexVinS
2015-03-30 19:12:40 +03:00
parent 075b65b31b
commit 7776d7bbf7
5 changed files with 23 additions and 23 deletions

View File

@@ -571,7 +571,7 @@ void SummonMechanics::applyBattleEffects(const SpellCastEnvironment * env, Battl
bsa.pos = parameters.cb->getAvaliableHex(creatureToSummon, !(bool)parameters.casterSide); //TODO: unify it bsa.pos = parameters.cb->getAvaliableHex(creatureToSummon, !(bool)parameters.casterSide); //TODO: unify it
//TODO stack casting -> probably power will be zero; set the proper number of creatures manually //TODO stack casting -> probably power will be zero; set the proper number of creatures manually
int percentBonus = parameters.caster ? parameters.caster->valOfBonuses(Bonus::SPECIFIC_SPELL_DAMAGE, owner->id.toEnum()) : 0; int percentBonus = parameters.casterHero ? parameters.casterHero->valOfBonuses(Bonus::SPECIFIC_SPELL_DAMAGE, owner->id.toEnum()) : 0;
bsa.amount = parameters.usedSpellPower bsa.amount = parameters.usedSpellPower
* owner->getPower(parameters.spellLvl) * owner->getPower(parameters.spellLvl)

View File

@@ -232,16 +232,16 @@ void DefaultSpellMechanics::battleCast(const SpellCastEnvironment * env, BattleS
sc.skill = parameters.spellLvl; sc.skill = parameters.spellLvl;
sc.tile = parameters.destination; sc.tile = parameters.destination;
sc.dmgToDisplay = 0; sc.dmgToDisplay = 0;
sc.castedByHero = nullptr != parameters.caster; sc.castedByHero = nullptr != parameters.casterHero;
sc.casterStack = (parameters.casterStack ? parameters.casterStack->ID : -1); sc.casterStack = (parameters.casterStack ? parameters.casterStack->ID : -1);
sc.manaGained = 0; sc.manaGained = 0;
int spellCost = 0; int spellCost = 0;
//calculate spell cost //calculate spell cost
if(parameters.caster) if(parameters.casterHero)
{ {
spellCost = parameters.cb->battleGetSpellCost(owner, parameters.caster); spellCost = parameters.cb->battleGetSpellCost(owner, parameters.casterHero);
if(parameters.secHero && parameters.mode == ECastingMode::HERO_CASTING) //handle mana channel if(parameters.secHero && parameters.mode == ECastingMode::HERO_CASTING) //handle mana channel
{ {
@@ -261,7 +261,7 @@ void DefaultSpellMechanics::battleCast(const SpellCastEnvironment * env, BattleS
//must be vector, as in Chain Lightning order matters //must be vector, as in Chain Lightning order matters
std::vector<const CStack*> attackedCres; //CStack vector is somewhat more suitable than ID vector std::vector<const CStack*> attackedCres; //CStack vector is somewhat more suitable than ID vector
auto creatures = owner->getAffectedStacks(parameters.cb, parameters.mode, parameters.casterColor, parameters.spellLvl, parameters.destination, parameters.caster); auto creatures = owner->getAffectedStacks(parameters.cb, parameters.mode, parameters.casterColor, parameters.spellLvl, parameters.destination, parameters.casterHero);
std::copy(creatures.begin(), creatures.end(), std::back_inserter(attackedCres)); std::copy(creatures.begin(), creatures.end(), std::back_inserter(attackedCres));
for (auto cre : attackedCres) for (auto cre : attackedCres)
@@ -292,12 +292,12 @@ void DefaultSpellMechanics::battleCast(const SpellCastEnvironment * env, BattleS
env->sendAndApply(&sc); env->sendAndApply(&sc);
//spend mana //spend mana
if(parameters.caster) if(parameters.casterHero)
{ {
SetMana sm; SetMana sm;
sm.absolute = false; sm.absolute = false;
sm.hid = parameters.caster->id; sm.hid = parameters.casterHero->id;
sm.val = -spellCost; sm.val = -spellCost;
env->sendAndApply(&sm); env->sendAndApply(&sm);
@@ -355,9 +355,9 @@ void DefaultSpellMechanics::battleCast(const SpellCastEnvironment * env, BattleS
mirrorParameters.spellLvl = 0; mirrorParameters.spellLvl = 0;
mirrorParameters.casterSide = 1-parameters.casterSide; mirrorParameters.casterSide = 1-parameters.casterSide;
mirrorParameters.casterColor = (attackedCre)->owner; mirrorParameters.casterColor = (attackedCre)->owner;
mirrorParameters.caster = nullptr; mirrorParameters.casterHero = nullptr;
mirrorParameters.destination = targetHex; mirrorParameters.destination = targetHex;
mirrorParameters.secHero = parameters.caster; mirrorParameters.secHero = parameters.casterHero;
mirrorParameters.mode = ECastingMode::MAGIC_MIRROR; mirrorParameters.mode = ECastingMode::MAGIC_MIRROR;
mirrorParameters.casterStack = (attackedCre); mirrorParameters.casterStack = (attackedCre);
mirrorParameters.selectedStack = nullptr; mirrorParameters.selectedStack = nullptr;
@@ -533,7 +533,7 @@ void DefaultSpellMechanics::applyBattleEffects(const SpellCastEnvironment * env,
if(spellDamage) if(spellDamage)
bsa.damageAmount = spellDamage >> chainLightningModifier; bsa.damageAmount = spellDamage >> chainLightningModifier;
else else
bsa.damageAmount = owner->calculateDamage(parameters.caster, attackedCre, parameters.spellLvl, parameters.usedSpellPower) >> chainLightningModifier; bsa.damageAmount = owner->calculateDamage(parameters.casterHero, attackedCre, parameters.spellLvl, parameters.usedSpellPower) >> chainLightningModifier;
ctx.sc.dmgToDisplay += bsa.damageAmount; ctx.sc.dmgToDisplay += bsa.damageAmount;
@@ -561,7 +561,7 @@ void DefaultSpellMechanics::applyBattleEffects(const SpellCastEnvironment * env,
Bonus pseudoBonus; Bonus pseudoBonus;
pseudoBonus.sid = owner->id; pseudoBonus.sid = owner->id;
pseudoBonus.val = parameters.spellLvl; pseudoBonus.val = parameters.spellLvl;
pseudoBonus.turnsRemain = calculateDuration(parameters.caster, stackSpellPower ? stackSpellPower : parameters.usedSpellPower); pseudoBonus.turnsRemain = calculateDuration(parameters.casterHero, stackSpellPower ? stackSpellPower : parameters.usedSpellPower);
CStack::stackEffectToFeature(sse.effect, pseudoBonus); CStack::stackEffectToFeature(sse.effect, pseudoBonus);
if(owner->id == SpellID::SHIELD || owner->id == SpellID::AIR_SHIELD) if(owner->id == SpellID::SHIELD || owner->id == SpellID::AIR_SHIELD)
{ {
@@ -572,8 +572,8 @@ void DefaultSpellMechanics::applyBattleEffects(const SpellCastEnvironment * env,
sse.effect.back().additionalInfo = parameters.casterStack->ID; //we need to know who casted Bind sse.effect.back().additionalInfo = parameters.casterStack->ID; //we need to know who casted Bind
} }
const Bonus * bonus = nullptr; const Bonus * bonus = nullptr;
if(parameters.caster) if(parameters.casterHero)
bonus = parameters.caster->getBonusLocalFirst(Selector::typeSubtype(Bonus::SPECIAL_PECULIAR_ENCHANT, owner->id)); bonus = parameters.casterHero->getBonusLocalFirst(Selector::typeSubtype(Bonus::SPECIAL_PECULIAR_ENCHANT, owner->id));
//TODO does hero specialty should affects his stack casting spells? //TODO does hero specialty should affects his stack casting spells?
si32 power = 0; si32 power = 0;
@@ -618,9 +618,9 @@ void DefaultSpellMechanics::applyBattleEffects(const SpellCastEnvironment * env,
break; break;
} }
} }
if (parameters.caster && parameters.caster->hasBonusOfType(Bonus::SPECIAL_BLESS_DAMAGE, owner->id)) //TODO: better handling of bonus percentages if (parameters.casterHero && parameters.casterHero->hasBonusOfType(Bonus::SPECIAL_BLESS_DAMAGE, owner->id)) //TODO: better handling of bonus percentages
{ {
int damagePercent = parameters.caster->level * parameters.caster->valOfBonuses(Bonus::SPECIAL_BLESS_DAMAGE, owner->id.toEnum()) / tier; int damagePercent = parameters.casterHero->level * parameters.casterHero->valOfBonuses(Bonus::SPECIAL_BLESS_DAMAGE, owner->id.toEnum()) / tier;
Bonus specialBonus = CStack::featureGenerator(Bonus::CREATURE_DAMAGE, 0, damagePercent, pseudoBonus.turnsRemain); Bonus specialBonus = CStack::featureGenerator(Bonus::CREATURE_DAMAGE, 0, damagePercent, pseudoBonus.turnsRemain);
specialBonus.valType = Bonus::PERCENT_TO_ALL; specialBonus.valType = Bonus::PERCENT_TO_ALL;
specialBonus.sid = owner->id; specialBonus.sid = owner->id;
@@ -667,7 +667,7 @@ void DefaultSpellMechanics::applyBattleEffects(const SpellCastEnvironment * env,
} }
} }
else else
hi.healedHP = calculateHealedHP(parameters.caster, attackedCre, parameters.selectedStack); //Casted by hero hi.healedHP = calculateHealedHP(parameters.casterHero, attackedCre, parameters.selectedStack); //Casted by hero
hi.lowLevelResurrection = (parameters.spellLvl <= 1) && (owner->id != SpellID::ANIMATE_DEAD); hi.lowLevelResurrection = (parameters.spellLvl <= 1) && (owner->id != SpellID::ANIMATE_DEAD);
shr.healedStacks.push_back(hi); shr.healedStacks.push_back(hi);
} }

View File

@@ -72,7 +72,7 @@ namespace SpellConfig
} }
BattleSpellCastParameters::BattleSpellCastParameters(const BattleInfo* cb) BattleSpellCastParameters::BattleSpellCastParameters(const BattleInfo* cb)
: spellLvl(0), destination(BattleHex::INVALID), casterSide(0),casterColor(PlayerColor::CANNOT_DETERMINE),caster(nullptr), secHero(nullptr), : spellLvl(0), destination(BattleHex::INVALID), casterSide(0),casterColor(PlayerColor::CANNOT_DETERMINE),casterHero(nullptr), secHero(nullptr),
usedSpellPower(0),mode(ECastingMode::HERO_CASTING), casterStack(nullptr), selectedStack(nullptr), cb(cb) usedSpellPower(0),mode(ECastingMode::HERO_CASTING), casterStack(nullptr), selectedStack(nullptr), cb(cb)
{ {

View File

@@ -66,7 +66,7 @@ public:
BattleHex destination; BattleHex destination;
ui8 casterSide; ui8 casterSide;
PlayerColor casterColor; PlayerColor casterColor;
const CGHeroInstance * caster; const CGHeroInstance * casterHero; //deprecated
const CGHeroInstance * secHero; const CGHeroInstance * secHero;
int usedSpellPower; int usedSpellPower;
ECastingMode::ECastingMode mode; ECastingMode::ECastingMode mode;

View File

@@ -3881,7 +3881,7 @@ bool CGameHandler::makeBattleAction( BattleAction &ba )
p.mode = ECastingMode::CREATURE_ACTIVE_CASTING; p.mode = ECastingMode::CREATURE_ACTIVE_CASTING;
p.destination = destination; p.destination = destination;
p.casterColor = stack->owner; p.casterColor = stack->owner;
p.caster = nullptr; p.casterHero = nullptr;
p.usedSpellPower = 0; p.usedSpellPower = 0;
p.casterStack = stack; p.casterStack = stack;
p.selectedStack = nullptr; p.selectedStack = nullptr;
@@ -4081,7 +4081,7 @@ bool CGameHandler::makeCustomAction( BattleAction &ba )
parameters.destination = ba.destinationTile; parameters.destination = ba.destinationTile;
parameters.casterSide = ba.side; parameters.casterSide = ba.side;
parameters.casterColor = h->tempOwner; parameters.casterColor = h->tempOwner;
parameters.caster = h; parameters.casterHero = h;
parameters.secHero = secondHero; parameters.secHero = secondHero;
parameters.usedSpellPower = h->getPrimSkillLevel(PrimarySkill::SPELL_POWER); parameters.usedSpellPower = h->getPrimSkillLevel(PrimarySkill::SPELL_POWER);
@@ -4953,7 +4953,7 @@ void CGameHandler::attackCasting(const BattleAttack & bat, Bonus::BonusType atta
parameters.destination = destination; parameters.destination = destination;
parameters.casterSide = !attacker->attackerOwned; parameters.casterSide = !attacker->attackerOwned;
parameters.casterColor = attacker->owner; parameters.casterColor = attacker->owner;
parameters.caster = nullptr; parameters.casterHero = nullptr;
parameters.secHero = nullptr; parameters.secHero = nullptr;
parameters.usedSpellPower = 0; parameters.usedSpellPower = 0;
@@ -4988,7 +4988,7 @@ void CGameHandler::handleAfterAttackCasting( const BattleAttack & bat )
parameters.destination = gs->curB->battleGetStackByID(bat.bsa.at(0).stackAttacked)->position; parameters.destination = gs->curB->battleGetStackByID(bat.bsa.at(0).stackAttacked)->position;
parameters.casterSide = !attacker->attackerOwned; parameters.casterSide = !attacker->attackerOwned;
parameters.casterColor = attacker->owner; parameters.casterColor = attacker->owner;
parameters.caster = nullptr; parameters.casterHero = nullptr;
parameters.secHero = nullptr; parameters.secHero = nullptr;
parameters.usedSpellPower = power; parameters.usedSpellPower = power;
@@ -5298,7 +5298,7 @@ void CGameHandler::runBattle()
parameters.destination = BattleHex::INVALID; parameters.destination = BattleHex::INVALID;
parameters.casterSide = i; parameters.casterSide = i;
parameters.casterColor = h->tempOwner; parameters.casterColor = h->tempOwner;
parameters.caster = nullptr; parameters.casterHero = nullptr;
parameters.secHero = gs->curB->battleGetFightingHero(1-i); parameters.secHero = gs->curB->battleGetFightingHero(1-i);