public override bool Apply() { MonsterGrade monsterGrade = Singleton <MonsterManager> .Instance.GetMonsterGrade(base.Dice.DiceNum, base.Dice.DiceFace); bool result; if (monsterGrade == null) { Summon.logger.Error <short, short>("Cannot summon monster {0} grade {1} (not found)", base.Dice.DiceNum, base.Dice.DiceFace); result = false; } else { if (!base.Caster.CanSummon(base.Dice.DiceNum)) { result = false; } else { bool visible = (monsterGrade.Template.Id == (int)MonsterEnum.SADIDA_TREE) ? false : true; //Need to make a better method SummonedMonster summonedMonster = new SummonedMonster(base.Fight.GetNextContextualId(), base.Caster.Team, base.Caster, monsterGrade, base.TargetedCell, visible); ActionsHandler.SendGameActionFightSummonMessage(base.Fight.Clients, summonedMonster); base.Caster.AddSummon(summonedMonster); base.Caster.Team.AddFighter(summonedMonster); result = true; } } return(result); }
protected override bool InternalApply() { foreach (var actor in GetAffectedActors()) { var monster = MonsterManager.Instance.GetMonsterGrade(Dice.DiceNum, Dice.DiceFace); if (monster == null) { return(false); } actor.Die(Caster); var summon = new SummonedMonster(Fight.GetNextContextualId(), Caster.Team, Caster, monster, actor.Cell) { SummoningEffect = this }; ActionsHandler.SendGameActionFightSummonMessage(Fight.Clients, summon); Caster.AddSummon(summon); if (Effect.EffectId == EffectsEnum.Effect_KillAndSummon_2796 && Caster is CharacterFighter) { summon.SetController(Caster as CharacterFighter); } Caster.Team.AddFighter(summon); Fight.TriggerMarks(summon.Cell, summon, TriggerType.MOVE); } return(true); }
protected override bool InternalApply() { var monster = MonsterManager.Instance.GetMonsterGrade(Dice.DiceNum, Dice.DiceFace); if (monster == null) { logger.Error("Cannot summon monster {0} grade {1} (not found)", Dice.DiceNum, Dice.DiceFace); return(false); } if (monster.Template.UseSummonSlot && !Caster.CanSummon()) { return(false); } SummonedFighter summon; if (monster.Template.Id == (int)MonsterIdEnum.HARPONNEUSE_3287 || monster.Template.Id == (int)MonsterIdEnum.GARDIENNE_3288 || monster.Template.Id == (int)MonsterIdEnum.TACTIRELLE_3289) { summon = new SummonedTurret(Fight.GetNextContextualId(), Caster, monster, Spell, TargetedCell) { SummoningEffect = this } } ; else if (monster.Template.Id == (int)MonsterIdEnum.COFFRE_ANIME_285) { summon = new LivingChest(Fight.GetNextContextualId(), Caster.Team, Caster, monster, TargetedCell) { SummoningEffect = this } } ; else { summon = new SummonedMonster(Fight.GetNextContextualId(), Caster.Team, Caster, monster, TargetedCell) { SummoningEffect = this } }; if (Effect.Id == (short)EffectsEnum.Effect_SummonSlave && Caster is CharacterFighter) { summon.SetController(Caster as CharacterFighter); } ActionsHandler.SendGameActionFightSummonMessage(Fight.Clients, summon); Caster.AddSummon(summon); Caster.Team.AddFighter(summon); Fight.TriggerMarks(summon.Cell, summon, TriggerType.MOVE); return(true); } }
public SummonedMonster AddTree(CharacterFighter source, Cell cell) { var characterSpell = source.Character.Spells.Where((spell) => spell.Template.Id == (int)SpellIdEnum.Tree).First(); var monsterGrade = Singleton <MonsterManager> .Instance.GetMonsterGrade((int)MonsterEnum.SADIDA_TREE, characterSpell.CurrentLevel); var tree = new SummonedMonster(this.Fight.GetNextContextualId(), this, source, monsterGrade, cell); this.AddFighter(tree); source.AddSummon(tree); return(tree); }
public override bool Apply() { var target = this.Caster.Team.GetOneTree(this.TargetedCell); if (target != null && target.Summoner.Id == this.Caster.Id && target.HasState((int)SpellStatesEnum.Leafy)) { var monsterGrade = Singleton <MonsterManager> .Instance.GetMonsterGrade(base.Dice.DiceNum, this.Spell.CurrentLevel); var summonedMonster = new SummonedMonster(this.Fight.GetNextContextualId(), this.Caster.Team, this.Caster, monsterGrade, target.Cell, true, true); target.Die(); this.Caster.AddSummon(summonedMonster); this.Caster.Team.AddFighter(summonedMonster); ActionsHandler.SendGameActionFightSummonMessage(base.Fight.Clients, summonedMonster); return(true); } return(false); }
public override bool Apply() { var target = this.Caster.Team.GetOneTree(this.TargetedCell); if (target != null && target.Summoner.Id == this.Caster.Id && target.HasState((int)SpellStatesEnum.Leafy)) { var monsterGrade = Singleton <MonsterManager> .Instance.GetMonsterGrade(base.Dice.DiceNum, this.Spell.CurrentLevel); var summonedMonster = new SummonedMonster(this.Fight.GetNextContextualId(), this.Caster.Team, this.Caster, monsterGrade, target.Cell, true, true); target.Die(); this.Caster.AddSummon(summonedMonster); this.Caster.Team.AddFighter(summonedMonster); summonedMonster.Frozen = true; ActionsHandler.SendGameActionFightSummonMessage(base.Fight.Clients, summonedMonster); base.AddTriggerBuff(base.Caster, true, BuffTriggerType.TURN_END, new TriggerBuffApplyHandler(KillAndSummon.ApplySwitchBuff)); var buff = new TriggerBuff(summonedMonster.PopNextBuffId(), summonedMonster, base.Caster, new EffectDice() { Duration = 1 }, base.Spell, false, false, BuffTriggerType.TURN_END, new TriggerBuffApplyHandler(KillAndSummon.ApplySuicideBuff), (short)ActionsEnum.ACTION_FIGHT_KILL_AND_SUMMON); summonedMonster.AddAndApplyBuff(buff); return(true); } return(false); }
public TakeControlBuff(int id, FightActor target, FightActor caster, SpellEffectHandler effect, Spell spell, FightDispellableEnum dispelable, SummonedMonster summon) : base(id, target, caster, effect, spell, false, dispelable) { Summon = summon; }