コード例 #1
0
            public override void OnClick()
            {
                FukiyaDart dart = new FukiyaDart(fukiya.UsesRemaining);

                fukiya.UsesRemaining = 0;

                mobile.AddToBackpack(dart);
            }
コード例 #2
0
            protected override void OnTarget(Mobile from, object targeted)
            {
                if (m_fukiya.Deleted)
                {
                    return;
                }
                else if (targeted is Mobile)
                {
                    Mobile m = (Mobile)targeted;

                    double dist = from.GetDistanceToSqrt(m.Location);

                    if (m.Map != from.Map || dist > 5)
                    {
                        from.SendLocalizedMessage(500446);                           // That is too far away.
                        return;
                    }

                    if (m != from && from.HarmfulCheck(m))
                    {
                        Direction to = from.GetDirectionTo(m);

                        from.Direction = to;

                        from.RevealingAction();

                        from.Animate(from.Mounted ? 26 : 9, 7, 1, true, false, 0);

                        if (CheckHitChance(from, m))
                        {
                            from.MovingEffect(m, 0x2806, 7, 1, false, false, 0x23A, 0);

                            AOS.Damage(m, from, Utility.Random(4, 6), 100, 0, 0, 0, 0);

                            if (m_fukiya.Poison != null && m_fukiya.PoisonCharges > 0)
                            {
                                --m_fukiya.PoisonCharges;

                                m.ApplyPoison(from, m_fukiya.Poison);
                            }
                        }
                        else
                        {
                            FukiyaDart dart = new FukiyaDart();

                            from.MovingEffect(dart, 0x2804, 7, 1, false, false, 0x23A, 0);

                            from.SendMessage("You miss.");

                            dart.Delete();
                        }

                        m_fukiya.UsesRemaining--;
                    }
                }
            }
コード例 #3
0
                protected override void OnTarget(Mobile from, object targeted)
                {
                    if (targeted is FukiyaDart)
                    {
                        FukiyaDart dart = targeted as FukiyaDart;

                        if (dart.Poison != null && dart.PoisonCharges > 0)
                        {
                            m_fukiya.Poison = dart.Poison;

                            m_fukiya.PoisonCharges = dart.PoisonCharges;
                        }

                        if (m_fukiya.UsesRemaining < 10)
                        {
                            if (dart.UsesRemaining + m_fukiya.UsesRemaining >= 10)
                            {
                                int need = 10 - m_fukiya.UsesRemaining;

                                m_fukiya.UsesRemaining += need;

                                dart.UsesRemaining -= need;

                                if (dart.UsesRemaining < 1)
                                {
                                    dart.Delete();
                                }
                            }
                            else
                            {
                                m_fukiya.UsesRemaining += dart.UsesRemaining;

                                dart.Delete();
                            }
                        }
                        else
                        {
                            from.SendLocalizedMessage(1063330);
                        }                         // You cannot add anymore fukiya darts
                    }
                    else
                    {
                        from.SendLocalizedMessage(1063329);                           // You can only load fukiya darts
                    }
                }
コード例 #4
0
ファイル: Fukiya.cs プロジェクト: dpisanu/xrunuo
        public void Unload(Mobile from)
        {
            if (UsesRemaining < 1)
            {
                return;
            }

            FukiyaDart darts = new FukiyaDart(UsesRemaining);

            darts.Poison        = m_Poison;
            darts.PoisonCharges = m_PoisonCharges;

            from.AddToBackpack(darts);

            m_UsesRemaining = 0;
            m_PoisonCharges = 0;
            m_Poison        = null;

            InvalidateProperties();
        }
コード例 #5
0
ファイル: Fukiya.cs プロジェクト: Ravenwolfe/xrunuo
        public void Unload( Mobile from )
        {
            if ( UsesRemaining < 1 )
                return;

            FukiyaDart darts = new FukiyaDart( UsesRemaining );

            darts.Poison = m_Poison;
            darts.PoisonCharges = m_PoisonCharges;

            from.AddToBackpack( darts );

            m_UsesRemaining = 0;
            m_PoisonCharges = 0;
            m_Poison = null;

            InvalidateProperties();
        }
コード例 #6
0
ファイル: Fukiya.cs プロジェクト: Ravenwolfe/xrunuo
        public void Reload( Mobile from, FukiyaDart darts )
        {
            int need = ( MaxUses - m_UsesRemaining );

            if ( need <= 0 )
            {
                // You cannot add anymore fukiya darts
                from.SendLocalizedMessage( 1063330 );
            }
            else if ( darts.UsesRemaining > 0 )
            {
                if ( need > darts.UsesRemaining )
                    need = darts.UsesRemaining;

                if ( darts.Poison != null && darts.PoisonCharges > 0 )
                {
                    if ( m_PoisonCharges <= 0 || m_Poison == null || m_Poison.Level <= darts.Poison.Level )
                    {
                        if ( m_Poison != null && m_Poison.Level < darts.Poison.Level )
                            Unload( from );

                        if ( need > darts.PoisonCharges )
                            need = darts.PoisonCharges;

                        if ( m_Poison == null || m_PoisonCharges <= 0 )
                            m_PoisonCharges = need;
                        else
                            m_PoisonCharges += need;

                        m_Poison = darts.Poison;

                        darts.PoisonCharges -= need;

                        if ( darts.PoisonCharges <= 0 )
                            darts.Poison = null;

                        m_UsesRemaining += need;
                        darts.UsesRemaining -= need;
                    }
                    else
                    {
                        from.SendLocalizedMessage( 1070767 ); // Loaded projectile is stronger, unload it first
                    }
                }
                else
                {
                    m_UsesRemaining += need;
                    darts.UsesRemaining -= need;
                }

                if ( darts.UsesRemaining <= 0 )
                    darts.Delete();

                InvalidateProperties();
            }
        }
コード例 #7
0
ファイル: Fukiya.cs プロジェクト: dpisanu/xrunuo
        public void Reload(Mobile from, FukiyaDart darts)
        {
            int need = (MaxUses - m_UsesRemaining);

            if (need <= 0)
            {
                // You cannot add anymore fukiya darts
                from.SendLocalizedMessage(1063330);
            }
            else if (darts.UsesRemaining > 0)
            {
                if (need > darts.UsesRemaining)
                {
                    need = darts.UsesRemaining;
                }

                if (darts.Poison != null && darts.PoisonCharges > 0)
                {
                    if (m_PoisonCharges <= 0 || m_Poison == null || m_Poison.Level <= darts.Poison.Level)
                    {
                        if (m_Poison != null && m_Poison.Level < darts.Poison.Level)
                        {
                            Unload(from);
                        }

                        if (need > darts.PoisonCharges)
                        {
                            need = darts.PoisonCharges;
                        }

                        if (m_Poison == null || m_PoisonCharges <= 0)
                        {
                            m_PoisonCharges = need;
                        }
                        else
                        {
                            m_PoisonCharges += need;
                        }

                        m_Poison = darts.Poison;

                        darts.PoisonCharges -= need;

                        if (darts.PoisonCharges <= 0)
                        {
                            darts.Poison = null;
                        }

                        m_UsesRemaining     += need;
                        darts.UsesRemaining -= need;
                    }
                    else
                    {
                        from.SendLocalizedMessage(1070767);                           // Loaded projectile is stronger, unload it first
                    }
                }
                else
                {
                    m_UsesRemaining     += need;
                    darts.UsesRemaining -= need;
                }

                if (darts.UsesRemaining <= 0)
                {
                    darts.Delete();
                }

                InvalidateProperties();
            }
        }