Ejemplo n.º 1
0
 internal static Rat CloneRat(Rat firstRat)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 2
0
 private static void SendMessage(string message, Rat rat)
 {
     SendMessage(message, rat.hostSock);
 }
Ejemplo n.º 3
0
 public Shoot(Rat rat, AttackableObject enemy) : base(rat)
 {
     this.enemy = enemy;
     OnStart();
 }
Ejemplo n.º 4
0
        private static void questEvenement(Evenement evenement, Rat rat, Dragon dragon, Spider spider, Bear bear, Personnage personnage, ItemOnBag itemOnBag)
        {
            switch (evenement.Numero)
            {
            case "E100":
                Console.WriteLine(evenement.Numero);
                break;

            case "E211":
                Console.WriteLine(evenement.Numero);
                break;

            case "E212":
                Console.WriteLine(evenement.Numero);
                break;

            case "E321":
                if (rat.IsDead)
                {
                    Console.WriteLine("E321AV");
                }
                else if (personnage.choisesPath.Contains(evenement.Numero))
                {
                    Console.WriteLine("E321AV");
                }
                else
                {
                    Console.WriteLine("E321");
                }
                break;

            case "E322":
                if ()
                {
                    break;
                }

            case "E323":
                break;

            case "E324":
                break;

            case "E431":
                break;

            case "E432":
                break;

            case "E433":
                break;

            case "E434":
                break;

            case "E435":
                break;

            case "E541":
                break;

            case "E542":
                break;

            case "E543":
                break;

            case "E544":
                break;

            case "E651":
                break;

            case "E761":
                break;
            }
        }
Ejemplo n.º 5
0
 public void FireRatEntered(Rat rat)
 {
     RatEntered?.Invoke(this, rat);
 }
Ejemplo n.º 6
0
        public override bool Eat(Mobile from)
        {
            if (FillHunger(from, FillFactor))
            {
                string tastemsg;
                int    RatChances = (int)Taste;
                if (Poisoner == null)
                {
                    if (RatChances > Utility.Random(8))
                    {
                        BaseCreature rat = new Rat();
                        rat.MoveToWorld(from.Location, from.Map);
                        switch (Utility.Random(4))
                        {
                        case 2:
                        {
                            rat.FocusMob = from;
                            rat.AI       = AIType.AI_Predator;
                            rat.Say("*Semble jaloux de votre fromage*");
                            break;
                        }

                        default:
                        {
                            rat.Controlled    = true;
                            rat.ControlMaster = from;
                            rat.ControlOrder  = OrderType.Come;
                            rat.Say("*Couinant amoureusement près de vous*");
                            break;
                        }
                        }
                    }

                    string paste = "Vous mangez";
                    string taste = "";

                    switch (Paste)
                    {
                    case CheesePaste.Molle: paste = "Vous laissez fondre"; break;

                    case CheesePaste.Normale: paste = "Vous dégustez"; break;

                    case CheesePaste.Dure: paste = "Vous grignottez"; break;
                    }

                    switch (Taste)
                    {
                    case CheeseTaste.Faible: taste = "au goût subtil"; break;

                    case CheeseTaste.Leger: taste = "au goût délicat"; break;

                    case CheeseTaste.Modere: taste = "au goût agréable"; break;

                    case CheeseTaste.Prononce: taste = "au goût bien présent"; break;

                    case CheeseTaste.Fort: taste = "au goût persistant"; break;
                    }

                    tastemsg = String.Format("{0} ce fromage {1}", paste, taste);
                    if (Quality == CheeseQuality.Exceptionnal)
                    {
                        from.Say("*Semble subjugué{0} par le goût de ce fromage*", from.Female ? "e" : "");
                    }
                }
                else
                {
                    tastemsg = "Le goût de la moisissure vous dégoûte au plus haut point";
                    from.PlaySound(from.Female ? 813 : 1087);

                    Point3D p = new Point3D(from.Location);
                    switch (from.Direction)
                    {
                    case Direction.North:
                        p.Y--; break;

                    case Direction.South:
                        p.Y++; break;

                    case Direction.East:
                        p.X++; break;

                    case Direction.West:
                        p.X--; break;

                    case Direction.Right:
                        p.X++; p.Y--; break;

                    case Direction.Down:
                        p.X++; p.Y++; break;

                    case Direction.Left:
                        p.X--; p.Y++; break;

                    case Direction.Up:
                        p.X--; p.Y--; break;

                    default:
                        break;
                    }
                    p.Z = from.Map.GetAverageZ(p.X, p.Y);

                    bool canFit = Server.Spells.SpellHelper.AdjustField(ref p, from.Map, 12, false);

                    if (canFit)
                    {
                        Puke puke = new Puke();
                        puke.Map      = from.Map;
                        puke.Location = p;
                    }
                    from.Say("*Recrache le fromage, l'air malade*");
                }

                from.PrivateOverheadMessage(MessageType.Regular, 0x3B2, false, tastemsg, from.NetState);


                // Play a random "eat" sound
                from.PlaySound(Utility.Random(0x3A, 3));

                if (from.Body.IsHuman && !from.Mounted)
                {
                    from.Animate(34, 5, 1, true, false, 0);
                }

                if (Poison != null)
                {
                    from.ApplyPoison(Poisoner, Poison);
                }

                Consume();

                return(true);
            }

            return(false);
        }
Ejemplo n.º 7
0
Archivo: Program.cs Proyecto: rh24/Zoo
        static void Main(string[] args)
        {
            // Instantiate objects from concrete classes
            ScottishFold    waffles = new ScottishFold("Waffles");
            Sphynx          cleo    = new Sphynx("Cleopatra");
            MaineCoon       simba   = new MaineCoon("Simba");
            Mouse           minnie  = new Mouse("Minnie");
            Rat             rat     = new Rat("PizzaRat");
            SoftShellTurtle softie  = new SoftShellTurtle("Softie");
            SeaTurtle       wen     = new SeaTurtle("Wen");

            // Display properties and behaviors of all objects. Categorize them in two main loops. Concrete animals inheriting from the Cat class, Turtle class, and Rodent Class.
            var cats = new List <Cat> {
                waffles, cleo, simba
            };

            Console.WriteLine("********************************** WELCOME TO MY CAT$$$$$$$$$$ *************************************");
            foreach (var cat in cats)
            {
                Console.WriteLine($"Hello, my name is {cat.Name}. I'm a {cat.GetType().Name}.");
                Console.WriteLine($"Endoskeleton: {cat.Endoskeleton}");
                Console.WriteLine($"Brain: {cat.Brain}");
                Console.WriteLine($"Avg. Life Span in Years: {cat.AvgLifeSpanInYears}");
                Console.WriteLine($"Ear type: {cat.Ears}");
                Console.WriteLine($"Cuteness: {cat.Cuteness}");
                Console.WriteLine($"Sleeping Pattern: {cat.Sleeps()}");
                Console.WriteLine($"Activity: {cat.Plays()}");
                Console.WriteLine($"Demeanor: {cat.GetDemeanor()}");
                Console.WriteLine($"Has Hair: {cat.HairOnSkin}");
                Console.WriteLine($"NOTE TO TOURISTS: {cat.ShouldTouristApproach()}");
                Console.WriteLine($"ARE WE EDIBLE: {cat.ShouldWeEatThis()}");
                Console.WriteLine("------------------------------------------------------------------------------------------------------");
            }

            var rodents = new List <Rodent> {
                minnie, rat
            };

            Console.WriteLine("**************************************** Rodents *************************************************");
            foreach (var rodent in rodents)
            {
                Console.WriteLine($"I'm a {rodent.GetType().Name}.");
                Console.WriteLine($"Endoskelenton: {rodent.Endoskeleton}");
                Console.WriteLine($"Brain: {rodent.Brain}");
                Console.WriteLine($"Avg. Life Span in Years: {rodent.AvgLifeSpanInYears}.");
                Console.WriteLine($"Diseased: {rodent.Diseased}");
                Console.WriteLine($"Sound: {rodent.MakeSound()}");
                Console.WriteLine($"Has Hair: {rodent.HairOnSkin}");
                Console.WriteLine($"Blood Temperature: {rodent.BloodTemperature()}");
                Console.WriteLine($"ARE WE EDIBLE: {rodent.ShouldWeEatThis()}");
                Console.WriteLine($"GROWS UNTIL: {rodent.GrowsUntil()}");
                Console.WriteLine("------------------------------------------------------------------------------------------------------");
            }

            var turtles = new List <Turtle> {
                softie, wen
            };

            Console.WriteLine("**************************************** TURTLE$ *************************************************");
            foreach (var turtle in turtles)
            {
                // Is there any way I can get the property from this turtle object's derived type SeaTurtle or SoftShellTurtle?
                // Is there any way I can force it to be a derived type at runtime? {turtle.Name} gives me red squigglies because I never gave implemented a name property in the abstract Turtle class. I only did that in derived classes.
                // I know there's a way to extract derived types from a collection with LINQ, but that means generating an entirely new collection of the subtype and iterating over that subtype collection. I'm wondering if there's a type casting we can do to extract a derived type from a base type.
                Console.WriteLine($"I'm a {turtle.GetType().Name}.");
                Console.WriteLine($"Endoskelenton: {turtle.VertebrateGretting()}");
                Console.WriteLine($"Brain: {turtle.Brain}");
                Console.WriteLine($"Moving Speed: {turtle.MovingSpeed}.");
                Console.WriteLine($"Skin Type: {turtle.GetSkinType()}");
                Console.WriteLine($"Blood Temperature: {turtle.BloodTemperature()}");
                Console.WriteLine($"NOTE TO TOURISTS: {turtle.ShouldTouristApproach()}");
                Console.WriteLine($"ARE WE EDIBLE: {turtle.ShouldWeEatThis()}");
                Console.WriteLine($"Fatty Meat: {turtle.FattyMeat}");
                Console.WriteLine("------------------------------------------------------------------------------------------------------");
            }
        }
 public void FireNotifyRat(object sender, Rat whichRat)
 {
     NotifyRat?.Invoke(sender, whichRat);
 }
Ejemplo n.º 9
0
 public virtual int Defend(Rat rat)
 {
     return(Strategy(rat));
 }
Ejemplo n.º 10
0
 public Capture(Rat rat) : base(rat)
 {
     OnStart();
 }
Ejemplo n.º 11
0
        public Character GetEnemy(int id)
        {
            Character nextChar;

            switch (id)
            {
            //Low level
            case 100:
                nextChar = new Bat();
                return(nextChar);

            case 101:
                nextChar = new Rat();
                return(nextChar);

            case 102:
                nextChar = new Kobold();
                return(nextChar);

            case 103:
                nextChar = new Slime();
                return(nextChar);

            case 104:
                nextChar = new Farmer();
                return(nextChar);

            case 105:
                nextChar = new Imp();
                return(nextChar);

            case 106:
                nextChar = new Zombie();
                return(nextChar);

            case 107:
                nextChar = new Phantom();
                return(nextChar);

            case 108:
                nextChar = new Goblin();
                return(nextChar);

            case 109:
                nextChar = new Witch();
                return(nextChar);

            //Mid level
            case 110:
                nextChar = new Harpy();
                return(nextChar);

            case 111:
                nextChar = new Elemental();
                return(nextChar);

            case 112:
                nextChar = new Nymph();
                return(nextChar);

            case 113:
                nextChar = new Vampire();
                return(nextChar);

            case 114:
                nextChar = new Lamia();
                return(nextChar);

            case 115:
                nextChar = new Qilin();
                return(nextChar);

            case 116:
                nextChar = new Unicorn();
                return(nextChar);

            case 117:
                nextChar = new Jinn();
                return(nextChar);

            case 118:
                nextChar = new Xorn();
                return(nextChar);

            case 119:
                nextChar = new Antlion();
                return(nextChar);

            //High level
            case 120:
                nextChar = new Yeti();
                return(nextChar);

            case 121:
                nextChar = new Orc();
                return(nextChar);

            case 122:
                nextChar = new Minotaur();
                return(nextChar);

            case 123:
                nextChar = new Troll();
                return(nextChar);

            case 124:
                nextChar = new Cyclop();
                return(nextChar);

            case 125:
                nextChar = new Drake();
                return(nextChar);

            default:
                nextChar = new Slime();
                return(nextChar);
            }
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Generates the monsters for the map
        /// </summary>
        protected void AddRandomMonster(Rectangle area)
        {
            if (type == MapType.dungeon)
            {
                int mt = rnd.Next(1, 4);
                Actor m = null;

                if (mt == 1)
                    m = new Kobold(1, new Vector2(rnd.Next(area.Left, area.Right) + 0.5f, rnd.Next(area.Top, area.Bottom) + 0.5f));
                else if (mt == 2)
                    m = new Rat(1, new Vector2(rnd.Next(area.Left, area.Right) + 0.5f, rnd.Next(area.Top, area.Bottom) + 0.5f));
                else if (mt == 3)
                    m = new Goblin(1, new Vector2(rnd.Next(area.Left, area.Right) + 0.5f, rnd.Next(area.Top, area.Bottom) + 0.5f));

                if (m != null) map.AddEntity(m);
            }
        }
Ejemplo n.º 13
0
 public void TestMethod3()
 {
     Rat r = new Rat(1, 0);
 }
Ejemplo n.º 14
0
        public void TestMethod1()
        {
            Rat r = new Rat(3, 6);

            Assert.AreEqual("1/2", r.ToString());
        }
Ejemplo n.º 15
0
 public ApproachEnemy(Rat rat, Rat enemy) : base(rat)
 {
     this.enemy = enemy;
     OnStart();
 }
Ejemplo n.º 16
0
 public override void RatInit(Rat context)
 {
 }
        public override void Damage(Mobile m)
        {
            base.Damage(m);

            if (m.Alive)
            {
                Item item = m.FindItemOnLayer(Layer.OuterTorso);

                if (item is GMRobe)
                {
                    AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                }
                else
                {
                    // Forest noises
                    if (Utility.RandomDouble() < 0.008)
                    {
                        m.PlaySound(Utility.RandomList(0x000, 0x001, 0x002));
                        AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                    }

                    // Bird chirps
                    if (Utility.RandomDouble() < 0.002)
                    {
                        m.PlaySound(Utility.RandomList(0x094, 0x095, 0x096, 0x097, 0x0D1, 0x0D2));
                        AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                    }

                    // Cricket noises
                    if (Utility.RandomDouble() < 0.003)
                    {
                        m.PlaySound(Utility.RandomList(0x00A, 0x00B));
                        AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                    }

                    // Turdy Encounter 1
                    if (Utility.RandomDouble() < 0.002)
                    {
                        if (m.Map == Map.Malas)
                        {
                            int x1 = m.X + 8;
                            int y1 = m.Y + 8;
                            int z1 = Map.Malas.GetAverageZ(x1, y1);

                            if (Map.Malas.CanSpawnMobile(x1, y1, z1))
                            {
                                BaseCreature turdyencounter;
                                switch (Utility.Random(2))
                                {
                                default:
                                case 0: turdyencounter = new Turdy(); break;

                                case 1: turdyencounter = new Turdy(); break;
                                }
                                turdyencounter.MoveToWorld(new Point3D(x1, y1, z1), Map.Malas);

                                turdyencounter.Combatant = m;
                                AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                                Timer.DelayCall(TimeSpan.FromMinutes(10.0), new TimerStateCallback(DeleteTurdyEncounter), turdyencounter);
                            }
                        }
                    }

                    // Turdy Encounter 2
                    if (Utility.RandomDouble() < 0.002)
                    {
                        if (m.Map == Map.Malas)
                        {
                            int x2 = m.X - 8;
                            int y2 = m.Y - 8;
                            int z2 = Map.Malas.GetAverageZ(x2, y2);

                            if (Map.Malas.CanSpawnMobile(x2, y2, z2))
                            {
                                BaseCreature turdyencounter;
                                switch (Utility.Random(2))
                                {
                                default:
                                case 0: turdyencounter = new Turdy(); break;

                                case 1: turdyencounter = new Turdy(); break;
                                }
                                turdyencounter.MoveToWorld(new Point3D(x2, y2, z2), Map.Malas);

                                turdyencounter.Combatant = m;
                                AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                                Timer.DelayCall(TimeSpan.FromMinutes(10.0), new TimerStateCallback(DeleteTurdyEncounter), turdyencounter);
                            }
                        }
                    }

                    // Random Encounter 1
                    if (Utility.RandomDouble() < 0.0002)
                    {
                        if (m.Map == Map.Malas)
                        {
                            int x1 = m.X + 8;
                            int y1 = m.Y + 8;
                            int z1 = Map.Malas.GetAverageZ(x1, y1);

                            if (Map.Malas.CanSpawnMobile(x1, y1, z1))
                            {
                                BaseCreature encounterb;
                                switch (Utility.Random(2))
                                {
                                default:
                                case 0: encounterb = new AutumnwoodAdventurer(); break;

                                case 1: encounterb = new AutumnwoodAdventurer(); break;
                                }
                                encounterb.MoveToWorld(new Point3D(x1, y1, z1), Map.Malas);

                                AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                                Timer.DelayCall(TimeSpan.FromMinutes(10.0), new TimerStateCallback(DeleteEncounterB), encounterb);
                            }
                        }
                    }

                    // Random Encounter 2
                    if (Utility.RandomDouble() < 0.0002)
                    {
                        if (m.Map == Map.Malas)
                        {
                            int x2 = m.X - 8;
                            int y2 = m.Y - 8;
                            int z2 = Map.Malas.GetAverageZ(x2, y2);

                            if (Map.Malas.CanSpawnMobile(x2, y2, z2))
                            {
                                BaseCreature encounterb;
                                switch (Utility.Random(2))
                                {
                                default:
                                case 0: encounterb = new AutumnwoodAdventurer(); break;

                                case 1: encounterb = new AutumnwoodAdventurer(); break;
                                }
                                encounterb.MoveToWorld(new Point3D(x2, y2, z2), Map.Malas);

                                AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                                Timer.DelayCall(TimeSpan.FromMinutes(10.0), new TimerStateCallback(DeleteEncounterB), encounterb);
                            }
                        }
                    }

                    // Tamable Encounter 1
                    if (Utility.RandomDouble() < 0.002)
                    {
                        if (m.Map == Map.Malas)
                        {
                            int x1 = m.X + 8;
                            int y1 = m.Y + 8;
                            int z1 = Map.Malas.GetAverageZ(x1, y1);

                            if (Map.Malas.CanSpawnMobile(x1, y1, z1))
                            {
                                BaseCreature tameable;
                                switch (Utility.Random(23))
                                {
                                default:
                                case 0: tameable = new Bird(); break;

                                case 1: tameable = new Boar(); break;

                                case 2: tameable = new BlackBear(); break;

                                case 3: tameable = new Bull(); break;

                                case 4: tameable = new Chicken(); break;

                                case 5: tameable = new Cow(); break;

                                case 6: tameable = new ForestBat(); break;

                                case 7: tameable = new Goat(); break;

                                case 8: tameable = new GreatHart(); break;

                                case 9: tameable = new GreenSlime(); break;

                                case 10: tameable = new GreySquirrel(); break;

                                case 11: tameable = new GreyWolfPup(); break;

                                case 12: tameable = new Hind(); break;

                                case 13: tameable = new Horse(); break;

                                case 14: tameable = new LargeFrog(); break;

                                case 15: tameable = new Ogumo(); break;

                                case 16: tameable = new Panther(); break;

                                case 17: tameable = new Pig(); break;

                                case 18: tameable = new Rabbit(); break;

                                case 19: tameable = new Rat(); break;

                                case 20: tameable = new RhinoBeetle(); break;

                                case 21: tameable = new RunningPants(); break;

                                case 22: tameable = new Sheep(); break;
                                }
                                tameable.MoveToWorld(new Point3D(x1, y1, z1), Map.Malas);

                                AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                                Timer.DelayCall(TimeSpan.FromMinutes(10.0), new TimerStateCallback(DeleteTameable), tameable);
                            }
                        }
                    }

                    // Tamable Encounter 2
                    if (Utility.RandomDouble() < 0.002)
                    {
                        if (m.Map == Map.Malas)
                        {
                            int x2 = m.X - 8;
                            int y2 = m.Y - 8;
                            int z2 = Map.Malas.GetAverageZ(x2, y2);

                            if (Map.Malas.CanSpawnMobile(x2, y2, z2))
                            {
                                BaseCreature tameable;
                                switch (Utility.Random(23))
                                {
                                default:
                                case 0: tameable = new Bird(); break;

                                case 1: tameable = new Boar(); break;

                                case 2: tameable = new BlackBear(); break;

                                case 3: tameable = new Bull(); break;

                                case 4: tameable = new Chicken(); break;

                                case 5: tameable = new Cow(); break;

                                case 6: tameable = new ForestBat(); break;

                                case 7: tameable = new Goat(); break;

                                case 8: tameable = new GreatHart(); break;

                                case 9: tameable = new GreenSlime(); break;

                                case 10: tameable = new GreySquirrel(); break;

                                case 11: tameable = new GreyWolfPup(); break;

                                case 12: tameable = new Hind(); break;

                                case 13: tameable = new Horse(); break;

                                case 14: tameable = new LargeFrog(); break;

                                case 15: tameable = new Ogumo(); break;

                                case 16: tameable = new Panther(); break;

                                case 17: tameable = new Pig(); break;

                                case 18: tameable = new Rabbit(); break;

                                case 19: tameable = new Rat(); break;

                                case 20: tameable = new RhinoBeetle(); break;

                                case 21: tameable = new RunningPants(); break;

                                case 22: tameable = new Sheep(); break;
                                }
                                tameable.MoveToWorld(new Point3D(x2, y2, z2), Map.Malas);

                                AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                                Timer.DelayCall(TimeSpan.FromMinutes(10.0), new TimerStateCallback(DeleteTameable), tameable);
                            }
                        }
                    }

                    // Random Treasure Chest 1
                    if (Utility.RandomDouble() < 0.0005)
                    {
                        if (m.Map == Map.Malas)
                        {
                            int x1 = m.X + 12;
                            int y1 = m.Y + 12;
                            int z1 = Map.Malas.GetAverageZ(x1, y1);

                            if (Map.Malas.CanSpawnMobile(x1, y1, z1))
                            {
                                BaseContainer treasurechest;

                                if (m.Skills.Tracking.Base > 14.9)
                                {
                                    switch (Utility.Random(2))
                                    {
                                    default:
                                    case 0: treasurechest = new AutumnwoodTreasureChest1(); break;

                                    case 1: treasurechest = new AutumnwoodTreasureChest1(); break;
                                    }
                                    treasurechest.MoveToWorld(new Point3D(x1, y1, z1), Map.Malas);

                                    AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                                    Timer.DelayCall(TimeSpan.FromMinutes(5.0), new TimerStateCallback(DeleteTreasureChest), treasurechest);
                                }
                            }
                        }
                    }

                    // Random Treasure Chest 2
                    if (Utility.RandomDouble() < 0.0005)
                    {
                        if (m.Map == Map.Malas)
                        {
                            int x2 = m.X - 12;
                            int y2 = m.Y - 12;
                            int z2 = Map.Malas.GetAverageZ(x2, y2);

                            if (Map.Malas.CanSpawnMobile(x2, y2, z2))
                            {
                                BaseContainer treasurechest;

                                if (m.Skills.Tracking.Base > 14.9)
                                {
                                    switch (Utility.Random(2))
                                    {
                                    default:
                                    case 0: treasurechest = new AutumnwoodTreasureChest1(); break;

                                    case 1: treasurechest = new AutumnwoodTreasureChest1(); break;
                                    }
                                    treasurechest.MoveToWorld(new Point3D(x2, y2, z2), Map.Malas);

                                    AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                                    Timer.DelayCall(TimeSpan.FromMinutes(5.0), new TimerStateCallback(DeleteTreasureChest), treasurechest);
                                }
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 18
0
 public override void OnNoButton()
 {
     Rat.SetAnimationState(Rat.AvailableAnimationStates[typeof(Idle)]);
 }
Ejemplo n.º 19
0
 public Move(Rat rat) : base(rat)
 {
     OnStart();
 }
Ejemplo n.º 20
0
 public void UpdateRat(Rat rat)
 {
     RatUpdate?.Invoke(this, rat);
 }
Ejemplo n.º 21
0
 public abstract void RatMove(Rat context);
        public override void Damage(Mobile m)
        {
            base.Damage(m);

            if (m.Alive)
            {
                Item item = m.FindItemOnLayer(Layer.OuterTorso);

                if (item is GMRobe)
                {
                    AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                }
                else if (item is GMRobeExplosion)
                {
                    AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                    m.PlaySound(Utility.RandomList(0x307, 0x308));
                }
                else if (item is GMRobeHoly)
                {
                    AOS.Damage(m, 0, 0, 0, 0, 0, 0);

                    m.FixedParticles(0x375A, 1, 30, 9966, 88, 2, EffectLayer.Head);
                    m.FixedParticles(0x37B9, 1, 30, 9502, 85, 3, EffectLayer.Head);
                    m.FixedParticles(0x376A, 1, 31, 9961, 80, 0, EffectLayer.Waist);
                    m.FixedParticles(0x37C4, 1, 31, 9502, 88, 2, EffectLayer.Waist);
                }
                else if (item is GMRobeFarts)
                {
                    AOS.Damage(m, 0, 0, 0, 0, 0, 0);

                    m.PlaySound(Utility.RandomList(792, 1064));
                }
                else if (item is GMRobeTrailfire)
                {
                    AOS.Damage(m, 0, 0, 0, 0, 0, 0);

                    m.FixedParticles(0x3709, 10, 30, 5052, EffectLayer.LeftFoot);
                }
                else
                {
                    if (m.Title == "the Running Pants")
                    {
                        if (m.Str <= 100)
                        {
                            if (Utility.RandomDouble() < 0.0003)
                            {
                                m.Str += 1;
                                m.BoltEffect(0x480);
                                m.PlaySound(0x5CE);
                                AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                            }
                        }
                    }

                    // Wind
                    if (Utility.RandomDouble() < 0.002)
                    {
                        m.PlaySound(Utility.RandomList(0x014, 0x15, 0x016, 0x5C7));
                        AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                    }

                    if (Utility.RandomDouble() < 0.002)
                    {
                        m.PlaySound(Utility.RandomList(0x014, 0x15, 0x016, 0x5C7));
                        AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                    }

                    if (m.Kills >= 5)
                    {
                        // Wasteland Mercenary Ambush
                        if (Utility.RandomDouble() < 0.005)
                        {
                            if (m.Map == Map.Malas)
                            {
                                int x1 = m.X + 20;
                                int y1 = m.Y + 20;
                                int z1 = Map.Malas.GetAverageZ(x1, y1);

                                if (Map.Malas.CanSpawnMobile(x1, y1, z1))
                                {
                                    BaseCreature wastelandmercenary = new WastelandMercenary();
                                    wastelandmercenary.MoveToWorld(new Point3D(x1, y1, z1), Map.Malas);
                                    wastelandmercenary.Combatant = m;
                                    wastelandmercenary.PlaySound(0x220);                           // Earthquake

                                    m.PlaySound(0x5CE);
                                    wastelandmercenary.BoltEffect(0x480);
                                    AOS.Damage(m, 0, 0, 0, 0, 0, 0);

                                    Timer.DelayCall(TimeSpan.FromMinutes(30.0), new TimerStateCallback(DeleteWastelandMercenary), wastelandmercenary);
                                }
                            }

                            // Wasteland Mercenary 2
                            if (Utility.RandomDouble() < 0.005)
                            {
                                if (m.Map == Map.Malas)
                                {
                                    int x2 = m.X - 20;
                                    int y2 = m.Y - 20;
                                    int z2 = Map.Malas.GetAverageZ(x2, y2);

                                    if (Map.Malas.CanSpawnMobile(x2, y2, z2))
                                    {
                                        BaseCreature wastelandmercenary = new WastelandMercenary();
                                        wastelandmercenary.MoveToWorld(new Point3D(x2, y2, z2), Map.Malas);
                                        wastelandmercenary.Combatant = m;
                                        wastelandmercenary.PlaySound(0x220);                           // Earthquake

                                        m.PlaySound(0x5CE);
                                        wastelandmercenary.BoltEffect(0x480);
                                        AOS.Damage(m, 0, 0, 0, 0, 0, 0);

                                        Timer.DelayCall(TimeSpan.FromMinutes(30.0), new TimerStateCallback(DeleteWastelandMercenary), wastelandmercenary);
                                    }
                                }
                            }
                        }
                    }

                    // Dragon Encounter 1
                    if (Utility.RandomDouble() < 0.0001)
                    {
                        if (m.Map == Map.Malas)
                        {
                            int x1 = m.X + 15;
                            int y1 = m.Y + 15;
                            int z1 = Map.Malas.GetAverageZ(x1, y1);

                            if (Map.Malas.CanSpawnMobile(x1, y1, z1))
                            {
                                BaseCreature dragonencounter;
                                switch (Utility.Random(2))
                                {
                                default:
                                case 0: dragonencounter = new BlackDragon(); break;

                                case 1: dragonencounter = new BlackDragon(); break;
                                }
                                dragonencounter.MoveToWorld(new Point3D(x1, y1, z1), Map.Malas);
                                dragonencounter.Combatant = m;
                                m.PlaySound(0x656);                 // risingColossus

                                AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                                Timer.DelayCall(TimeSpan.FromMinutes(30.0), new TimerStateCallback(DeleteDragonEncounter), dragonencounter);
                            }
                        }
                    }

                    // Dragon Encounter 2
                    if (Utility.RandomDouble() < 0.0001)
                    {
                        if (m.Map == Map.Malas)
                        {
                            int x2 = m.X - 12;
                            int y2 = m.Y - 12;
                            int z2 = Map.Malas.GetAverageZ(x2, y2);

                            if (Map.Malas.CanSpawnMobile(x2, y2, z2))
                            {
                                BaseCreature dragonencounter;
                                switch (Utility.Random(8))
                                {
                                default:
                                case 0: dragonencounter = new BlackDragon(); break;

                                case 1: dragonencounter = new BlackDragon(); break;
                                }
                                dragonencounter.MoveToWorld(new Point3D(x2, y2, z2), Map.Malas);
                                dragonencounter.Combatant = m;
                                m.PlaySound(0x656);                 // risingColossus

                                AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                                Timer.DelayCall(TimeSpan.FromMinutes(30.0), new TimerStateCallback(DeleteDragonEncounter), dragonencounter);
                            }
                        }
                    }

                    // Random Encounter 1
                    if (Utility.RandomDouble() < 0.00002)
                    {
                        if (m.Map == Map.Malas)
                        {
                            int x1 = m.X + 12;
                            int y1 = m.Y + 12;
                            int z1 = Map.Malas.GetAverageZ(x1, y1);

                            if (Map.Malas.CanSpawnMobile(x1, y1, z1))
                            {
                                BaseCreature encountera;
                                switch (Utility.Random(15))
                                {
                                default:
                                case 0: encountera = new Almiraj(); break;

                                case 1: encountera = new BlackAntAmbusher(); break;

                                case 2: encountera = new FaerieBeetleCollector(); break;

                                case 3: encountera = new GazerLarva(); break;

                                case 4: encountera = new Gizzard(); break;

                                case 5: encountera = new GreenSlime(); break;

                                case 6: encountera = new HordeMinion(); break;

                                case 7: encountera = new Mongbat(); break;

                                case 8: encountera = new Orc(); break;

                                case 9: encountera = new Ratman(); break;

                                case 10: encountera = new StreamingWisp(); break;

                                case 11: encountera = new SwampVine(); break;

                                case 12: encountera = new Tokoloshe(); break;

                                case 13: encountera = new VerdantSprite(); break;

                                case 14: encountera = new WaterLizard(); break;
                                }
                                encountera.MoveToWorld(new Point3D(x1, y1, z1), Map.Malas);

                                AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                                Timer.DelayCall(TimeSpan.FromMinutes(10.0), new TimerStateCallback(DeleteEncounterA), encountera);
                            }
                        }
                    }

                    // Random Encounter 2
                    if (Utility.RandomDouble() < 0.00002)
                    {
                        if (m.Map == Map.Malas)
                        {
                            int x2 = m.X - 12;
                            int y2 = m.Y - 12;
                            int z2 = Map.Malas.GetAverageZ(x2, y2);

                            if (Map.Malas.CanSpawnMobile(x2, y2, z2))
                            {
                                BaseCreature encountera;
                                switch (Utility.Random(15))
                                {
                                default:
                                case 0: encountera = new Almiraj(); break;

                                case 1: encountera = new BlackAntAmbusher(); break;

                                case 2: encountera = new FaerieBeetleCollector(); break;

                                case 3: encountera = new GazerLarva(); break;

                                case 4: encountera = new Gizzard(); break;

                                case 5: encountera = new GreenSlime(); break;

                                case 6: encountera = new HordeMinion(); break;

                                case 7: encountera = new Mongbat(); break;

                                case 8: encountera = new Orc(); break;

                                case 9: encountera = new Ratman(); break;

                                case 10: encountera = new StreamingWisp(); break;

                                case 11: encountera = new SwampVine(); break;

                                case 12: encountera = new Tokoloshe(); break;

                                case 13: encountera = new VerdantSprite(); break;

                                case 14: encountera = new WaterLizard(); break;
                                }
                                encountera.MoveToWorld(new Point3D(x2, y2, z2), Map.Malas);

                                AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                                Timer.DelayCall(TimeSpan.FromMinutes(10.0), new TimerStateCallback(DeleteEncounterA), encountera);
                            }
                        }
                    }

                    // Tamable Encounter 1
                    if (Utility.RandomDouble() < 0.00002)
                    {
                        if (m.Map == Map.Malas)
                        {
                            int x1 = m.X + 12;
                            int y1 = m.Y + 12;
                            int z1 = Map.Malas.GetAverageZ(x1, y1);

                            if (Map.Malas.CanSpawnMobile(x1, y1, z1))
                            {
                                BaseCreature tameable;
                                switch (Utility.Random(23))
                                {
                                default:
                                case 0: tameable = new Bird(); break;

                                case 1: tameable = new Boar(); break;

                                case 2: tameable = new BrownBear(); break;

                                case 3: tameable = new Bull(); break;

                                case 4: tameable = new Chicken(); break;

                                case 5: tameable = new Cow(); break;

                                case 6: tameable = new ForestBat(); break;

                                case 7: tameable = new Goat(); break;

                                case 8: tameable = new GreatHart(); break;

                                case 9: tameable = new GreenSlime(); break;

                                case 10: tameable = new GreySquirrel(); break;

                                case 11: tameable = new GreyWolfPup(); break;

                                case 12: tameable = new Hind(); break;

                                case 13: tameable = new Horse(); break;

                                case 14: tameable = new LargeFrog(); break;

                                case 15: tameable = new Ogumo(); break;

                                case 16: tameable = new Panther(); break;

                                case 17: tameable = new Pig(); break;

                                case 18: tameable = new Rabbit(); break;

                                case 19: tameable = new Rat(); break;

                                case 20: tameable = new RhinoBeetle(); break;

                                case 21: tameable = new RunningPants(); break;

                                case 22: tameable = new Sheep(); break;
                                }
                                tameable.MoveToWorld(new Point3D(x1, y1, z1), Map.Malas);

                                AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                                Timer.DelayCall(TimeSpan.FromMinutes(10.0), new TimerStateCallback(DeleteTameable), tameable);
                            }
                        }
                    }

                    // Tamable Encounter 2
                    if (Utility.RandomDouble() < 0.00002)
                    {
                        if (m.Map == Map.Malas)
                        {
                            int x2 = m.X - 12;
                            int y2 = m.Y - 12;
                            int z2 = Map.Malas.GetAverageZ(x2, y2);

                            if (Map.Malas.CanSpawnMobile(x2, y2, z2))
                            {
                                BaseCreature tameable;
                                switch (Utility.Random(23))
                                {
                                default:
                                case 0: tameable = new Bird(); break;

                                case 1: tameable = new Boar(); break;

                                case 2: tameable = new BrownBear(); break;

                                case 3: tameable = new Bull(); break;

                                case 4: tameable = new Chicken(); break;

                                case 5: tameable = new Cow(); break;

                                case 6: tameable = new ForestBat(); break;

                                case 7: tameable = new Goat(); break;

                                case 8: tameable = new GreatHart(); break;

                                case 9: tameable = new GreenSlime(); break;

                                case 10: tameable = new GreySquirrel(); break;

                                case 11: tameable = new GreyWolfPup(); break;

                                case 12: tameable = new Hind(); break;

                                case 13: tameable = new Horse(); break;

                                case 14: tameable = new LargeFrog(); break;

                                case 15: tameable = new Ogumo(); break;

                                case 16: tameable = new Panther(); break;

                                case 17: tameable = new Pig(); break;

                                case 18: tameable = new Rabbit(); break;

                                case 19: tameable = new Rat(); break;

                                case 20: tameable = new RhinoBeetle(); break;

                                case 21: tameable = new RunningPants(); break;

                                case 22: tameable = new Sheep(); break;
                                }
                                tameable.MoveToWorld(new Point3D(x2, y2, z2), Map.Malas);

                                AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                                Timer.DelayCall(TimeSpan.FromMinutes(10.0), new TimerStateCallback(DeleteTameable), tameable);
                            }
                        }
                    }

                    // Random Adventurer 1
                    if (Utility.RandomDouble() < 0.00002)
                    {
                        if (m.Map == Map.Malas)
                        {
                            int x1 = m.X + 15;
                            int y1 = m.Y + 15;
                            int z1 = Map.Malas.GetAverageZ(x1, y1);

                            if (Map.Malas.CanSpawnMobile(x1, y1, z1))
                            {
                                BaseCreature friendlyencounter;
                                switch (Utility.Random(2))
                                {
                                default:
                                case 0: friendlyencounter = new ZaythalorHuman(); break;

                                case 1: friendlyencounter = new ZaythalorSunElf(); break;

                                case 2: friendlyencounter = new ZaythalorMoonElf(); break;
                                }
                                friendlyencounter.MoveToWorld(new Point3D(x1, y1, z1), Map.Malas);

                                AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                                Timer.DelayCall(TimeSpan.FromMinutes(10.0), new TimerStateCallback(DeleteFriendlyEncounter), friendlyencounter);
                            }
                        }
                    }

                    // Random Adventurer 2
                    if (Utility.RandomDouble() < 0.00002)
                    {
                        if (m.Map == Map.Malas)
                        {
                            int x2 = m.X - 15;
                            int y2 = m.Y - 15;
                            int z2 = Map.Malas.GetAverageZ(x2, y2);

                            if (Map.Malas.CanSpawnMobile(x2, y2, z2))
                            {
                                BaseCreature friendlyencounter;
                                switch (Utility.Random(2))
                                {
                                default:
                                case 0: friendlyencounter = new ZaythalorHuman(); break;

                                case 1: friendlyencounter = new ZaythalorSunElf(); break;

                                case 2: friendlyencounter = new ZaythalorMoonElf(); break;
                                }
                                friendlyencounter.MoveToWorld(new Point3D(x2, y2, z2), Map.Malas);

                                AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                                Timer.DelayCall(TimeSpan.FromMinutes(10.0), new TimerStateCallback(DeleteFriendlyEncounter), friendlyencounter);
                            }
                        }
                    }

                    // Random Treasure Chest 1
                    if (Utility.RandomDouble() < 0.0005)
                    {
                        if (m.Map == Map.Malas)
                        {
                            int x1 = m.X + 12;
                            int y1 = m.Y + 12;
                            int z1 = Map.Malas.GetAverageZ(x1, y1);

                            if (Map.Malas.CanSpawnMobile(x1, y1, z1))
                            {
                                BaseContainer treasurechest;

                                if (m.Skills.Tracking.Base > 4.9)
                                {
                                    switch (Utility.Random(2))
                                    {
                                    default:
                                    case 0: treasurechest = new ZaythalorForestTreasureChest1(); break;

                                    case 1: treasurechest = new ZaythalorForestTreasureChest1(); break;
                                    }
                                    treasurechest.MoveToWorld(new Point3D(x1, y1, z1), Map.Malas);

                                    AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                                    Timer.DelayCall(TimeSpan.FromMinutes(5.0), new TimerStateCallback(DeleteTreasureChest), treasurechest);
                                }
                            }
                        }
                    }

                    // Random Treasure Chest 2
                    if (Utility.RandomDouble() < 0.0005)
                    {
                        if (m.Map == Map.Malas)
                        {
                            int x2 = m.X - 12;
                            int y2 = m.Y - 12;
                            int z2 = Map.Malas.GetAverageZ(x2, y2);

                            if (Map.Malas.CanSpawnMobile(x2, y2, z2))
                            {
                                BaseContainer treasurechest;

                                if (m.Skills.Tracking.Base > 4.9)
                                {
                                    switch (Utility.Random(2))
                                    {
                                    default:
                                    case 0: treasurechest = new ZaythalorForestTreasureChest1(); break;

                                    case 1: treasurechest = new ZaythalorForestTreasureChest1(); break;
                                    }
                                    treasurechest.MoveToWorld(new Point3D(x2, y2, z2), Map.Malas);

                                    AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                                    Timer.DelayCall(TimeSpan.FromMinutes(5.0), new TimerStateCallback(DeleteTreasureChest), treasurechest);
                                }
                            }
                        }
                    }

                    // Random Dead Body 1
                    if (Utility.RandomDouble() < 0.0003)
                    {
                        if (m.Map == Map.Malas)
                        {
                            int x1 = m.X + 10;
                            int y1 = m.Y + 10;
                            int z1 = Map.Malas.GetAverageZ(x1, y1);

                            if (Map.Malas.CanSpawnMobile(x1, y1, z1))
                            {
                                BaseContainer deadbody;

                                switch (Utility.Random(4))
                                {
                                default:
                                case 0: deadbody = new UnknownBardSkeletonZaythalor(); break;

                                case 1: deadbody = new UnknownMageSkeletonZaythalor(); break;

                                case 2: deadbody = new UnknownRogueSkeletonZaythalor(); break;

                                case 3: deadbody = new UnknownRogueSkeletonZaythalor(); break;
                                }

                                deadbody.MoveToWorld(new Point3D(x1, y1, z1), Map.Malas);

                                AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                                Timer.DelayCall(TimeSpan.FromMinutes(5.0), new TimerStateCallback(DeleteDeadBody), deadbody);
                            }
                        }
                    }

                    // Random Dead Body 2
                    if (Utility.RandomDouble() < 0.0003)
                    {
                        if (m.Map == Map.Malas)
                        {
                            int x2 = m.X - 10;
                            int y2 = m.Y - 10;
                            int z2 = Map.Malas.GetAverageZ(x2, y2);

                            if (Map.Malas.CanSpawnMobile(x2, y2, z2))
                            {
                                BaseContainer deadbody;

                                switch (Utility.Random(4))
                                {
                                default:
                                case 0: deadbody = new UnknownBardSkeletonZaythalor(); break;

                                case 1: deadbody = new UnknownMageSkeletonZaythalor(); break;

                                case 2: deadbody = new UnknownRogueSkeletonZaythalor(); break;

                                case 3: deadbody = new UnknownRogueSkeletonZaythalor(); break;
                                }

                                deadbody.MoveToWorld(new Point3D(x2, y2, z2), Map.Malas);

                                AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                                Timer.DelayCall(TimeSpan.FromMinutes(5.0), new TimerStateCallback(DeleteDeadBody), deadbody);
                            }
                        }
                    }

                    PlayerMobile player1 = m as PlayerMobile;
                    QuestSystem  qs1     = player1.Quest;

                    if (qs1 is StolenNecklaceQuest)
                    {
                        if (qs1.IsObjectiveInProgress(typeof(ReturnStolenNecklaceObjective)))
                        {
                            m.Send(Network.PlayMusic.GetInstance(MusicName.StygianAbyss));
                            AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                        }
                    }

                    PlayerMobile player = m as PlayerMobile;
                    QuestSystem  qs     = player.Quest;

                    if (qs is StolenNecklaceQuest)
                    {
                        if (qs.IsObjectiveInProgress(typeof(ReturnStolenNecklaceObjective)))
                        {
                            // Brigand Ambush
                            if (Utility.RandomDouble() < 0.015)
                            {
                                if (m.Map == Map.Malas)
                                {
                                    int x1 = m.X + 20;
                                    int y1 = m.Y + 20;
                                    int z1 = Map.Malas.GetAverageZ(x1, y1);

                                    if (Map.Malas.CanSpawnMobile(x1, y1, z1))
                                    {
                                        BaseCreature brigandmale = new BrigandMaleQuest();
                                        brigandmale.MoveToWorld(new Point3D(x1, y1, z1), Map.Malas);
                                        brigandmale.Combatant = m;
                                        m.Send(Network.PlayMusic.GetInstance(MusicName.StygianAbyss));

                                        AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                                        Timer.DelayCall(TimeSpan.FromMinutes(2.0), new TimerStateCallback(DeleteBrigandMale), brigandmale);
                                    }
                                }
                            }

                            // Brigand Ambush 2
                            if (Utility.RandomDouble() < 0.015)
                            {
                                if (m.Map == Map.Malas)
                                {
                                    int x2 = m.X - 20;
                                    int y2 = m.Y - 20;
                                    int z2 = Map.Malas.GetAverageZ(x2, y2);

                                    if (Map.Malas.CanSpawnMobile(x2, y2, z2))
                                    {
                                        BaseCreature brigandfemale = new BrigandFemaleQuest();
                                        brigandfemale.MoveToWorld(new Point3D(x2, y2, z2), Map.Malas);
                                        brigandfemale.Combatant = m;
                                        m.Send(Network.PlayMusic.GetInstance(MusicName.StygianAbyss));

                                        AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                                        Timer.DelayCall(TimeSpan.FromMinutes(2.0), new TimerStateCallback(DeleteBrigandFemale), brigandfemale);
                                    }
                                }
                            }
                        }
                    }

                    else if (qs is StaffOfFlyingMonkeysQuest)
                    {
                        if (qs.IsObjectiveInProgress(typeof(EscapeObjective)))
                        {
                            // Mongbat Ambush
                            if (Utility.RandomDouble() < 0.015)
                            {
                                if (m.Map == Map.Malas)
                                {
                                    int x1 = m.X + 20;
                                    int y1 = m.Y + 20;
                                    int z1 = Map.Malas.GetAverageZ(x1, y1);

                                    if (Map.Malas.CanSpawnMobile(x1, y1, z1))
                                    {
                                        BaseCreature cavernmongbatberserker = new CavernMongbatBerserkerQuest();
                                        cavernmongbatberserker.MoveToWorld(new Point3D(x1, y1, z1), Map.Malas);
                                        cavernmongbatberserker.Combatant = m;
                                        m.Send(Network.PlayMusic.GetInstance(MusicName.Medieval));

                                        AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                                        Timer.DelayCall(TimeSpan.FromMinutes(2.0), new TimerStateCallback(DeleteCavernMongbatBerserkerQuest), cavernmongbatberserker);
                                    }
                                }
                            }

                            // Mongbat Ambush 2
                            if (Utility.RandomDouble() < 0.015)
                            {
                                if (m.Map == Map.Malas)
                                {
                                    int x2 = m.X - 20;
                                    int y2 = m.Y - 20;
                                    int z2 = Map.Malas.GetAverageZ(x2, y2);

                                    if (Map.Malas.CanSpawnMobile(x2, y2, z2))
                                    {
                                        BaseCreature cavernmongbatberserker = new CavernMongbatBerserkerQuest();
                                        cavernmongbatberserker.MoveToWorld(new Point3D(x2, y2, z2), Map.Malas);
                                        cavernmongbatberserker.Combatant = m;
                                        m.Send(Network.PlayMusic.GetInstance(MusicName.Medieval));

                                        AOS.Damage(m, 0, 0, 0, 0, 0, 0);
                                        Timer.DelayCall(TimeSpan.FromMinutes(2.0), new TimerStateCallback(DeleteCavernMongbatBerserkerQuest), cavernmongbatberserker);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 23
0
 public abstract void RatInit(Rat context);
Ejemplo n.º 24
0
        public object ObjRef()
        {
            var tag = (SerializationCode)Byte();

            if (Config.SerTrace)
            {
                Console.WriteLine("Reading {0} from {1}...", tag, rpointer - 1);
            }
            int i, j;

            switch (tag)
            {
            case SerializationCode.Null:
                return(null);

            case SerializationCode.ForeignRef:
                i = Int();
                j = Int();
                return(unit_map[i].bynum[j]);

            case SerializationCode.SelfRef:
                i = Int();
                return(unit.bynum[i]);

            case SerializationCode.NewUnitRef:
                return(LoadNewUnit());

            case SerializationCode.RuntimeUnit:
                return(RuntimeUnit.Thaw(this));

            case SerializationCode.SubInfo:
                return(SubInfo.Thaw(this));

            case SerializationCode.STable:
                return(STable.Thaw(this));

            case SerializationCode.StashEnt:
                return(StashEnt.Thaw(this));

            case SerializationCode.Rat:
                return(Rat.Thaw(this));

            case SerializationCode.FatRat:
                return(FatRat.Thaw(this));

            case SerializationCode.Complex:
                return(Complex.Thaw(this));

            case SerializationCode.BigInteger:
                return(BigInteger.Thaw(this));

            case SerializationCode.VarDeque:
                return(VarDeque.Thaw(this));

            case SerializationCode.VarHash:
                return(VarHash.Thaw(this));

            case SerializationCode.DispatchEnt:
                return(DispatchEnt.Thaw(this));

            //case SerializationCode.RxFrame:
            //    return RxFrame.Thaw(this);
            case SerializationCode.P6how:
                return(P6how.Thaw(this));

            case SerializationCode.CC:
                return(CC.Thaw(this));

            case SerializationCode.AltInfo:
                return(AltInfo.Thaw(this));

            case SerializationCode.Signature:
                return(Signature.Thaw(this));

            case SerializationCode.Parameter:
                return(Parameter.Thaw(this));

            case SerializationCode.ReflectObj:
                return(ReflectObj.Thaw(this));

            case SerializationCode.P6opaque:
                return(P6opaque.Thaw(this));

            case SerializationCode.Frame:
                return(Frame.Thaw(this));

            //Cursor,

            case SerializationCode.String:
                return(Register(String()));

            case SerializationCode.ArrP6any:
                return(RefsARegister <P6any>());

            case SerializationCode.ArrVariable:
                return(RefsARegister <Variable>());

            case SerializationCode.ArrString:
                return(RefsARegister <string>());

            case SerializationCode.ArrCC:
                return(RefsARegister <CC>());

            case SerializationCode.Boolean:
                return(Register(Byte() != 0));

            case SerializationCode.Int:
                return(Register(Int()));

            case SerializationCode.Double:
                return(Register(Double()));

            case SerializationCode.Type:
                return(Register(Type.GetType(String(), true)));

            case SerializationCode.SimpleVariable:
            case SerializationCode.SimpleVariable_1:
            case SerializationCode.SimpleVariable_2:
            case SerializationCode.SimpleVariable_3:
                return(SimpleVariable.Thaw(this,
                                           (int)tag - (int)SerializationCode.SimpleVariable));

            case SerializationCode.SubstrLValue:
                return(SubstrLValue.Thaw(this));

            case SerializationCode.TiedVariable:
                return(TiedVariable.Thaw(this));

            case SerializationCode.SubViviHook:
                return(SubViviHook.Thaw(this));

            case SerializationCode.ArrayViviHook:
                return(ArrayViviHook.Thaw(this));

            case SerializationCode.NewArrayViviHook:
                return(NewArrayViviHook.Thaw(this));

            case SerializationCode.HashViviHook:
                return(HashViviHook.Thaw(this));

            case SerializationCode.NewHashViviHook:
                return(NewHashViviHook.Thaw(this));

            case SerializationCode.LADNone:
                return(Register(new LADNone()));

            case SerializationCode.LADNull:
                return(Register(new LADNull()));

            case SerializationCode.LADDot:
                return(Register(new LADDot()));

            case SerializationCode.LADDispatcher:
                return(Register(new LADDispatcher()));

            case SerializationCode.LADImp:
                return(Register(new LADImp()));

            case SerializationCode.LADStr:
                return(LADStr.Thaw(this));

            case SerializationCode.LADStrNoCase:
                return(LADStrNoCase.Thaw(this));

            case SerializationCode.LADMethod:
                return(LADMethod.Thaw(this));

            case SerializationCode.LADParam:
                return(LADParam.Thaw(this));

            case SerializationCode.LADQuant:
                return(LADQuant.Thaw(this));

            case SerializationCode.LADSequence:
                return(LADSequence.Thaw(this));

            case SerializationCode.LADAny:
                return(LADAny.Thaw(this));

            case SerializationCode.LADCC:
                return(LADCC.Thaw(this));

            default:
                throw new ThawException("unexpected object tag " + tag);
            }
        }
Ejemplo n.º 25
0
 public ApproachCapturePoint(Rat rat) : base(rat)
 {
     OnStart();
 }
Ejemplo n.º 26
0
 public ApproachRanged(Rat rat, Rat enemy) : base(rat, enemy)
 {
 }
Ejemplo n.º 27
0
    void SetRatTarget(GameObject rat, Vector3 target)
    {
        Rat component = rat.GetComponent <Rat>();

        component.SetTargetFood(target);
    }
Ejemplo n.º 28
0
        private static void ReceiveCallback(IAsyncResult AR)
        {
            Socket socket = (Socket)AR.AsyncState;

            try
            {
                if (socket.Connected)
                {
                    int received = socket.EndReceive(AR);

                    byte[] dataBuf = new byte[received];
                    Array.Copy(_buffer, dataBuf, received);

                    string text = Encoding.ASCII.GetString(dataBuf);

                    /* HANDLE REQUESTS */

                    /** If the client sends a message with the info. header,
                     * then add him to the known clients; where
                     *      infoHeader: `INFO hostName hostAddr`
                     */
                    string response = string.Empty;
                    if (text.ToLower().Split()[0] == "info")
                    {
                        _rats.Add(new Rat(socket, text));
                        response = "INFO Rat added to the pak";
                        SendMessage(response, socket);
                    }

                    /* Check for a file header with a non-empty message, where
                     *  File header: `FILE fileName headerSize textString`                 */
                    if (text.ToLower().Split()[0] == "file" && text.ToLower().Split()[2] != "0")
                    {
                        string fileName   = text.ToLower().Split()[1];
                        int    headerSize = Convert.ToInt32(text.ToLower().Split()[2]);

                        string filePath = Directory.GetCurrentDirectory() + "\\" + fileName;

                        /* Remove the the header from the message */
                        text = text.Remove(0, headerSize);

                        File.WriteAllText(@filePath, text);
                        // puts( "Wrote: " + text );

                        text = fileName + " was downloaded locally @ " + filePath;
                    }

                    puts(Rat.daRatSays(text, socket));

                    socket.BeginReceive(_buffer, 0, _buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallback), socket);
                }
            }

            /* Handle the case of a socket suddenly disconnecting.
             * *might catch other sokcetExceptions at the time of disconnecting... */
            catch (SocketException)
            {
                puts("Client disconnected...");

                socket.Close();
                _clientSockets.Remove(socket);

                Rat toBeRemoved = null;
                foreach (var rat in _rats)
                {
                    if (socket == rat.hostSock)
                    {
                        toBeRemoved = rat;
                    }
                }
                if (_rats.Contains(toBeRemoved))
                {
                    _rats.Remove(toBeRemoved);
                }

                _serverSocket.BeginAccept(new AsyncCallback(AcceptCallback), null);
            }
        }
Ejemplo n.º 29
0
    public override void RatMove(Rat context)
    {
        if (context.alliesNearby == 0)
        {
            context.currentMoveState = new RatRunAway();
        }
        if (context.LastHeroPosX == -1)
        {
            context.currentMoveState = new RatIdle();
        }
        else
        {
            LevelGenerator.Point startPoint = new LevelGenerator.Point();
            startPoint.X = 5;
            startPoint.Y = 5;
            LevelGenerator.Point endPoint = new LevelGenerator.Point();
            endPoint.X = context.LastHeroPosX - context.posX + 5;
            endPoint.Y = context.LastHeroPosY - context.posY + 5;
            List <Node> path = null;
            Stopwatch   sw;

            if (GameManager._instance.GetComponent <GameDataManager>().DebugConsoleEnabled == 1)
            {
                if (GameManager._instance.GetComponent <GameDataManager>().UsingBreadthAlgorithm == 1)
                {
                    sw = Stopwatch.StartNew();

                    for (int i = 0; i < 100; i++)
                    {
                        if (context.currentMap.enemyPathFindingA.FindPathBreadth(startPoint, endPoint, context.currentMap.GenerateTruePathCosts(context.posX - 5, context.posY - 5, context.posX + 5, context.posY + 5, context), 5, 5) is null)
                        {
                            return;
                        }
                    }

                    sw.Stop();
                    context.GetComponent <Enemy>().turnManager.AddLog("Enemy " + context.gameObject.GetInstanceID().ToString() + " found path with BFS in: " + sw.Elapsed.Ticks + " ticks", sw.Elapsed.Ticks.ToString() + " ");
                }

                sw = Stopwatch.StartNew();
                for (int i = 0; i < 100; i++)
                {
                    path = context.currentMap.enemyPathFindingA.FindPath(startPoint, endPoint, context.currentMap.GenerateTruePathCosts(context.posX - 5, context.posY - 5, context.posX + 5, context.posY + 5, context), 5, 5);
                }
                if (path is null)
                {
                    return;
                }
                sw.Stop();
                context.GetComponent <Enemy>().turnManager.AddLog("Enemy " + context.gameObject.GetInstanceID().ToString() + " found path in: " + sw.Elapsed.Ticks + " ticks", sw.Elapsed.Ticks.ToString() + "\n"); //10000 ticks is 1 ms
            }
            else
            {
                for (int i = 0; i < 100; i++)
                {
                    path = context.currentMap.enemyPathFindingA.FindPath(startPoint, endPoint, context.currentMap.GenerateTruePathCosts(context.posX - 5, context.posY - 5, context.posX + 5, context.posY + 5, context), 5, 5);
                }
                if (path is null)
                {
                    return;
                }
            }

            int subtractAmmount;
            if (path.Count > 1)
            {
                subtractAmmount = 2;
            }
            else
            {
                subtractAmmount = 1;
            }
            if (path.Count > 1)
            {
                if (path[path.Count - subtractAmmount].position.X > startPoint.X)
                {
                    context.MoveDirection(Character.Directions.right);
                }
                if (path[path.Count - subtractAmmount].position.X < startPoint.X)
                {
                    context.MoveDirection(Character.Directions.left);
                }
                if (path[path.Count - subtractAmmount].position.Y > startPoint.Y)
                {
                    context.MoveDirection(Character.Directions.up);
                }
                if (path[path.Count - subtractAmmount].position.Y < startPoint.Y)
                {
                    context.MoveDirection(Character.Directions.down);
                }
            }
        }
    }
Ejemplo n.º 30
0
        private static void SendLoop()
        {
            /* theChosenOne = the selected client */
            Rat theChosenOne = null;

            while (true)
            {
                Console.Write("> ");
                string input = Console.ReadLine().Trim();

                if (input == "break" || input == "exit")
                {
                    break;
                }

                else if (input == "help")
                {
                    Console.Write(_help);
                }

                else if (input == "list" || input == "rats")
                {
                    foreach (var rat in _rats)
                    {
                        Console.WriteLine(rat);
                    }
                }

                else if (input.Split()[0] == "rat" && input.Split().Length < 3 && _rats.Count >= 1)
                {
                    if (input.Split().Length == 1)
                    {
                        theChosenOne.selected = false;
                        theChosenOne          = null;
                    }
                    else if (Convert.ToInt32(input.Split()[1]) < _rats.Count)
                    {
                        theChosenOne          = _rats[Convert.ToInt32(input.Split()[1])];
                        theChosenOne.selected = true;
                    }
                    else
                    {
                        puts("Rat not found");
                    }
                }

                else if (input.Split()[0] == "upload")
                {
                    if (input.Split().Length == 1 || input.Split().Length > 2)
                    {
                        puts("Invalid input");
                    }

                    /* Check if file exists, append the FILE header and send the message */
                    if (DoesFileExist(input.Split()[1]))
                    {
                        string response = "FILE " + input.Split()[1] + " ";
                        response += FileToString(input.Split()[1]);

                        if (theChosenOne == null)
                        {
                            foreach (var rat in _rats)
                            {
                                SendMessage(response, rat);
                            }
                        }

                        else
                        {
                            SendMessage(response, theChosenOne);
                        }
                    }

                    else
                    {
                        puts("Could not find: " + input.Split()[1]);
                    }
                }

                else
                {
                    /* Send message to either only one or to all rats */
                    if (theChosenOne == null)
                    {
                        foreach (var rat in _rats)
                        {
                            SendMessage(input, rat);
                        }
                    }

                    else
                    {
                        SendMessage(input, theChosenOne);

                        /* Nuke'em */
                        if (input == "kill" || input == "black_plague" || input == "terminate")
                        {
                            theChosenOne = null;
                        }
                    }

                    /* Seppuku */
                    if (input == "black_plague" || input == "terminate")
                    {
                        Environment.Exit(0);
                    }
                }
            }
        }
Ejemplo n.º 31
0
 public override void OnHorizontalAxis(float horizontalAxis)
 {
     Rat.SetAnimationState(Rat.AvailableAnimationStates[typeof(Running)]);
 }