Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #7
0
 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;
 }