public BombFighter(Fighter master, FightTeam team, MonsterRecord monsterTemplate, short cellid, sbyte grade) : base(team)
 {
     this.MonsterTemplate = monsterTemplate;
     this.ReadyToFight    = true;
     this.Team            = team;
     this.Team.AddBomb(this);
     this.Master = master;
     this.Grade  = grade;
     this.InitializeBomb(master.ContextualId, cellid);
     this.BombWallRecord = BombWallRecord.GetWallRecord(monsterTemplate.Id);
 }
        public void CastDetonation(Fighter master, Fighter bomb, ushort explosionSpellId, int bombMonsterId, sbyte spellGrade)
        {
            master.Fight.TryEndSequence(1, 0); // During Spell Cast

            BombWallRecord bwall = BombWallRecord.GetWallRecord(bombMonsterId);

            master.Fight.TryStartSequence(master.ContextualId, 1);

            master.Fight.Send(new GameActionFightSpellCastMessage(0, master.ContextualId, 0, bomb.CellId,
                                                                  (sbyte)FightSpellCastCriticalEnum.NORMAL
                                                                  , true, bwall.CibleDetonationSpellId, spellGrade, new short[0]));

            SpellLevelRecord elevel = SpellLevelRecord.GetLevel(bwall.CibleDetonationSpellId, spellGrade);

            bomb.HandleSpellEffects(elevel, bomb.CellId, FightSpellCastCriticalEnum.NORMAL);
            master.Fight.CheckFightEnd();
            master.Fight.TryEndSequence(1, 0);
        }