コード例 #1
0
ファイル: MoveProxy.cs プロジェクト: gyyfifafans/PBO
 internal void StatusZmove(PokemonProxy pm, MoveTypeE move)
 {
     if (move.Id == Ms.MEMENTO || move.Id == Ms.PARTING_SHOT)
     {
         pm.Tile.SetTurnCondition(Cs.Zheal);
     }
 }
コード例 #2
0
 public void Mimic(PokemonProxy pm, MoveTypeE move)
 {
     Add(new Mimic()
     {
         Pm = pm.Id, Move = move.Id
     });
 }
コード例 #3
0
 public void ChangeMove(MoveTypeE from, MoveTypeE to)
 {
     for (int i = 0; i < _moves.Count; ++i)
     {
         if (_moves[i].MoveE == from)
         {
             _moves[i] = new MoveProxy(to, this);
             break;
         }
     }
 }
コード例 #4
0
ファイル: MoveTypeE.cs プロジェクト: gyyfifafans/PBO
 static MoveTypeE()
 {
     using (var sr = new System.IO.StreamReader(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("PokemonBattleOnline.Game.Host.dat.Moves.txt")))
     {
         Moves = new MoveTypeE[RomData.MOVES + 1];
         for (int i = 1; i <= RomData.MOVES; ++i)
         {
             Moves[i] = new MoveTypeE(RomData.GetMove(i), sr.ReadLine());
         }
     }
 }
コード例 #5
0
        public static bool ChangeLv7D(this PokemonProxy pm, PokemonProxy by, MoveTypeE move)
        {
            bool r = false;
            var  c = move.Lv7DChanges;

            if (c != null)
            {
                bool showFail = move.Move.Category == MoveCategory.Status;
                if (c.Type1 == StatType.All)
                {
                    r = ChangeLv7D(pm, by, showFail, false, c.Change1, c.Change1, c.Change1, c.Change1, c.Change1);
                }
                else
                {
                    var ac = CanChangeLv7D(pm, by, c.Type1, c.Change1, showFail);
                    if (ac != 0)
                    {
                        ChangeLv7DImplement(pm, by, c.Type1, ac, null);
                        r = true;
                    }
                    ac = CanChangeLv7D(pm, by, c.Type2, c.Change2, showFail);
                    if (ac != 0)
                    {
                        ChangeLv7DImplement(pm, by, c.Type2, ac, null);
                        r = true;
                    }
                    ac = CanChangeLv7D(pm, by, c.Type3, c.Change3, showFail);
                    if (ac != 0)
                    {
                        ChangeLv7DImplement(pm, by, c.Type3, ac, null);
                        r = true;
                    }
                    if (r)
                    {
                        ITs.WhiteHerb(pm);
                    }
                }
            }
            return(r);
        }
コード例 #6
0
 public void StartExecute(MoveTypeE move, Tile selectTile = null, string log = "UseMove")
 {
     Move = move;
     if (STs.CanExecuteMove(Attacker, Move))
     {
         if (log != null)
         {
             Attacker.ShowLogPm(log, Move.Id);
         }
         InitAtkContext.Execute(this);
         MoveE.BuildDefContext(this, selectTile); //蓄力技如果选择的是压力特性的精灵,在第一回合就会扣取2点PP,即使最后攻击到的不是压力特性的精灵。
         if (MoveProxy != null)
         {
             ATs.Pressure(this, Move.GetRange(Attacker));
         }
         MoveExecute.Execute(this);
     }
     else
     {
         FailAll(null);
     }
 }
コード例 #7
0
 public void StartExecute(MoveTypeE move, Tile selectTile = null, string log = "UseMove", bool canChangeZmove = true)
 {
     Move = move;
     if (Attacker.SelectZmove && canChangeZmove && !move.Zmove && move.Move.Category != MoveCategory.Status)
     {
         Move      = MoveTypeE.Get(GameHelper.CommonZmove(Move.Move));
         trans     = true;
         transmove = move;
     }
     else
     {
         trans = false;
     }
     if (STs.CanExecuteMove(Attacker, Move))
     {
         InitAtkContext.Execute(this);
         MoveE.BuildDefContext(this, selectTile); //蓄力技如果选择的是压力特性的精灵,在第一回合就会扣取2点PP,即使最后攻击到的不是压力特性的精灵。
         if (MoveProxy != null)
         {
             ATs.Pressure(this, Move.GetRange(Attacker));
         }
         if (log == "FSDD")
         {
             Target.Defender.ShowLogPm(log, Move.Id);
         }
         else if (log != null)
         {
             Attacker.ShowLogPm(log, Move.Id);
         }
         MoveExecute.Execute(this, selectTile);
     }
     else
     {
         FailAll(null);
     }
 }
コード例 #8
0
ファイル: MoveProxy.cs プロジェクト: gyyfifafans/PBO
 internal MoveProxy(Move move, MoveTypeE moveE, PokemonProxy owner)
 {
     Move  = move;
     MoveE = moveE;
     Owner = owner;
 }
コード例 #9
0
ファイル: MoveProxy.cs プロジェクト: gyyfifafans/PBO
 internal MoveProxy(MoveTypeE move, PokemonProxy owner)
 {
     Move  = new Move(move.Move, 5);
     MoveE = move;
     Owner = owner;
 }
コード例 #10
0
ファイル: MoveProxy.cs プロジェクト: gyyfifafans/PBO
 internal MoveProxy(Move move, PokemonProxy owner)
 {
     Move  = move;
     MoveE = MoveTypeE.Get(move.Type);
     Owner = owner;
 }