Beispiel #1
0
        public override void InitBody()
        {
            InitStats(100, 100, 25);
            Female = false;
            Race   = Race.Human;

            Hue = Race.RandomSkinHue();
            Race.RandomHair(this);
            HairHue = Race.RandomHairHue();

            Item fancyShirt = new FancyShirt();
            Item shirt      = new Shirt(PirateCaptain.GetRandomShirtHue())
            {
                Layer = Layer.OuterTorso
            };

            AddItem(new Cloak(5));
            AddItem(new Cutlass());
            AddItem(shirt);
            AddItem(fancyShirt);
            AddItem(new LongPants());
            AddItem(new Boots());

            m_NextSay = DateTime.UtcNow;
        }
Beispiel #2
0
        public void SpawnPirateAndGalleon(SpawnZone zone, Map map)
        {
            SpawnDefinition def = m_Zones[zone];

            if (map != Map.Internal && map != null)
            {
                Rectangle2D rec = def.SpawnRegion;
                OrcishGalleon gal = new OrcishGalleon(Direction.North);
                PirateCaptain pirate = new PirateCaptain(gal);
                pirate.Zone = zone;
                gal.Owner = pirate;
                FillHold(gal);
                Point3D p = Point3D.Zero;
                bool spawned = false;
                for(int i = 0; i < 25; i++)
                {
                    int x = Utility.Random(rec.X, rec.Width);
                    int y = Utility.Random(rec.Y, rec.Height);
                    p = new Point3D(x, y, -5);

                    if (gal.CanFit(p, map, gal.ItemID))
                    {
                        spawned = true;
                        break;
                    }
                }

                if (!spawned)
                {
                    gal.Delete();
                    pirate.Delete();
                    return;
                }

                int gold = Utility.RandomMinMax(GoldRange[0], GoldRange[1]);
                gal.MoveToWorld(p, map);
                gal.AutoAddCannons(pirate);
                pirate.MoveToWorld(new Point3D(gal.X, gal.Y - 1, gal.ZSurface), map);

                int crewCount = Utility.RandomMinMax(3, 5);

                for (int i = 0; i < crewCount; i++)
                {
                    Mobile crew = new PirateCrew();

                    if (i == 0)
                        crew.Title = "the orc captain";

                    pirate.AddToCrew(crew);
                    crew.MoveToWorld(new Point3D(gal.X + Utility.RandomList(-1, 1), gal.Y + Utility.RandomList(-1, 0, 1), gal.ZSurface), map);
                }

                Point2D[] course = def.GetRandomWaypoints();
                gal.BoatCourse = new BoatCourse(gal, new List<Point2D>(def.GetRandomWaypoints()));

                gal.NextNavPoint = 0;
                gal.StartCourse(false, false);
                /*MapItem mapItem = new MapItem(map);

                if (map == Map.Tokuno)
                    mapItem.SetDisplay(5, 5, 1448 - 32, 1448 - 10, 400, 400);
                else
                    mapItem.SetDisplay(5, 5, 5120 - 32, 4096 - 10, 400, 400);

                for (int i = 0; i < course.Length; i++)
                    mapItem.AddWorldPin(course[i].X, course[i].Y);

                pirate.Backpack.DropItem(mapItem);

                gal.MapItem = mapItem;*/

                //mapItem.Name = "Pirate Map";

                //if (0.90 > Utility.RandomDouble())
                //    mapItem.Movable = false;

                m_Bounties.Add(pirate, gold);
                m_ActiveZones[zone].Add(pirate);
            }
        }