Skip to content

Commit

Permalink
Fixed incorrect implementation (thus crash) of Passive_DeterAura_NAtt…
Browse files Browse the repository at this point in the history
…ack.
  • Loading branch information
zeroyao committed Feb 23, 2013
1 parent 0a29d38 commit da0398a
Showing 1 changed file with 27 additions and 27 deletions.
54 changes: 27 additions & 27 deletions trunk/TouhouSpring/THSv0.5/Behaviors/Passive_DeterAura_NAttack.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ public sealed class Passive_DeterAura_NAttack :
BaseBehavior<Passive_DeterAura_NAttack.ModelType>,
Commands.ICause,
IEpilogTrigger<Commands.PlayCard>,
IEpilogTrigger<Commands.Summon>,
IEpilogTrigger<Commands.Kill>
{
private ValueModifier m_attackMod;
Expand All @@ -20,51 +21,50 @@ public void RunEpilog(Commands.PlayCard command)
return;
if (command.CardToPlay == Host)
{
foreach (var card in Game.ActingPlayerEnemies.First().CardsOnBattlefield)
foreach (var card in Game.Players.Where(player => player != Host.Owner)
.SelectMany(player => player.CardsOnBattlefield))
{
AffectedByAura(card);
AffectByAura(card);
}
}
if (command.CardToPlay.Owner != Host.Owner)
else if (command.CardToPlay.Owner != Host.Owner)
{
AffectedByAura(command.CardToPlay);
AffectByAura(command.CardToPlay);
}
}

private void AffectedByAura(BaseCard card)
public void RunEpilog(Commands.Summon command)
{
if (command.CardSummoned.Owner != Host.Owner)
{
AffectByAura(command.CardSummoned);
}
}

private void AffectByAura(BaseCard card)
{
if (!card.Behaviors.Has<Warrior>())
return;
var warrior = card.Behaviors.Get<Warrior>();
Game.IssueCommands(new Commands.SendBehaviorMessage(warrior, "AttackModifiers", new object[] { "add", m_attackMod }));
if (warrior != null)
{
Game.IssueCommands(new Commands.SendBehaviorMessage(warrior, "AttackModifiers", new object[] { "add", m_attackMod }));
}
}

private void LeaveAura(BaseCard card)
{
if (!card.Behaviors.Has<Warrior>())
return;
Game.IssueCommands(
new Commands.SendBehaviorMessage(
card.Behaviors.Get<Warrior>(),
"AttackModifiers",
new object[] { "remove", m_attackMod }
));
var warrior = card.Behaviors.Get<Warrior>();
if (warrior != null)
{
Game.IssueCommands(new Commands.SendBehaviorMessage(warrior, "AttackModifiers", new object[] { "remove", m_attackMod }));
}
}

public void RunEpilog(Commands.Kill command)
{
if (command.Target != Host)
return;
if (Game.ActingPlayer == Host.Owner)
{
foreach (var card in Game.ActingPlayerEnemies.First().CardsOnBattlefield)
{
LeaveAura(card);
}
}
else
if (command.Target == Host)
{
foreach (var card in Game.ActingPlayer.CardsOnBattlefield)
foreach (var card in Game.Players.Where(player => player != Host.Owner)
.SelectMany(player => player.CardsOnBattlefield))
{
LeaveAura(card);
}
Expand Down

0 comments on commit da0398a

Please sign in to comment.