コード例 #1
0
ファイル: ZombieUI.cs プロジェクト: zerodowned/UO-Forever
        public ZombieEventUI(PlayerMobile user, ZombieAvatar avatar, ZombieInstance zevent = null, PlayerZombieProfile zprofile = null,
                             Action <GumpButton> onAccept = null, Action <GumpButton> onCancel = null)
            : base(user, null, 0, 0)
        {
            CanDispose     = true;
            CanMove        = true;
            Modal          = false;
            ForceRecompile = true;

            AcceptHandler = onAccept;
            CancelHandler = onCancel;

            CanSearch = true;

            EntriesPerPage = 11;

            SelectedProfile = zprofile;
            ZEvent          = zevent;
            Avatar          = avatar;

            UserProfile = ZombieEvent.EnsureProfile(user);

            AutoRefreshRate = TimeSpan.FromSeconds(60);
            AutoRefresh     = true;
        }
コード例 #2
0
        public void RecalculatePoints()
        {
            var instance = ZombieEvent.GetInstance();

            OverallScore    = 0;
            SpendablePoints = 0;

            OverallScore += 1 * GetZombieKills(instance.Uid);
            OverallScore += 5 * GetDaemonKills(instance.Uid);
            OverallScore += 10 * GetFeyKills(instance.Uid);
            OverallScore += 1 * GetTentacleKills(instance.Uid);
            OverallScore += 10 * GetTreefellowKills(instance.Uid);
            OverallScore += 20 * GetVitriolKills(instance.Uid);
            OverallScore += 10 * GetGoreFiendKills(instance.Uid);
            OverallScore += 2 * GetSpiderKills(instance.Uid);

            SpendablePoints += 1 * GetZombieKills(instance.Uid);
            SpendablePoints += 5 * GetDaemonKills(instance.Uid);
            SpendablePoints += 10 * GetFeyKills(instance.Uid);
            SpendablePoints += 1 * GetTentacleKills(instance.Uid);
            SpendablePoints += 10 * GetTreefellowKills(instance.Uid);
            SpendablePoints += 20 * GetVitriolKills(instance.Uid);
            SpendablePoints += 10 * GetGoreFiendKills(instance.Uid);
            SpendablePoints += 2 * GetSpiderKills(instance.Uid);
        }
コード例 #3
0
ファイル: ZombieUI.cs プロジェクト: zerodowned/UO-Forever
        protected override void CompileList(List <PlayerZombieProfile> list)
        {
            list.Clear();

            list.TrimExcess();
            if (Profiles == null)
            {
                Profiles = new List <PlayerZombieProfile>();
                Profiles.AddRange(ZombieEvent.SortedProfiles());
            }
            else
            {
                Profiles.Clear();
                Profiles.TrimExcess();
                Profiles.AddRange(ZombieEvent.SortedProfiles());
            }

            if (Profiles.Count == 0)
            {
                Profiles.AddRange(ZombieEvent.SortedProfiles());
            }

            list.AddRange(Profiles);

            base.CompileList(list);
        }
コード例 #4
0
        public void HandleMobDeath(BaseCreature mob, ZombieAvatar avatar)
        {
            if (mob is ZombieZEvent)
            {
                _ZombiesLoc1.Remove(mob);
                _ZombiesLoc2.Remove(mob);
                _ZombiesLoc3.Remove(mob);
                _ZombiesLoc4.Remove(mob);
            }
            else if (mob is DaemonZombieEvent)
            {
                Daemons.Remove(mob);
            }
            else if (mob is TreeFellow)
            {
                TreeFellows.Remove(mob);
            }
            else if (mob is ZombieSpider)
            {
                ZombieSpiders.Remove(mob);
            }
            else if (mob is FeyWarrior)
            {
                FeyWarriors.Remove(mob);
            }
            else if (mob is Vitriol)
            {
                FeyWarriors.Remove(mob);
            }
            else if (mob is Bird)
            {
                FeyWarriors.Remove(mob);
            }
            else if (mob is HorrifyingTentacle)
            {
                HorrifyingTentacles.Remove(mob);
            }
            else if (mob is GoreFiendZombieEvent)
            {
                GoreFiends.Remove(mob);
            }

            if (avatar.Owner != null)
            {
                PlayerZombieProfile profile = ZombieEvent.EnsureProfile(avatar.Owner);
                profile.AddKill(mob);
            }
        }
コード例 #5
0
        public bool HandleAvatarDeath(PlayerZombieProfile profile, Mobile lastkiller)
        {
            ZombieAvatar avatar = profile.ZombieAvatar;

            profile.Deaths++;

            if (lastkiller is ZombieAvatar)
            {
                var enemyavatar = lastkiller as ZombieAvatar;
                if (enemyavatar.Owner != null)
                {
                    PlayerZombieProfile enemyprofile = ZombieEvent.EnsureProfile(enemyavatar.Owner);
                    enemyprofile.Kills++;
                }
            }

            Effects.SendIndividualFlashEffect(avatar, FlashType.LightFlash);
            avatar.DropHolding();

            var corpse = CreatePlayerCorpse(avatar) as Corpse;

            if (corpse != null)
            {
                Effects.PlaySound(avatar, avatar.Map, avatar.GetDeathSound());
                ZombieEvent.ZombieDeathAnim(avatar, corpse);
                corpse.MoveToWorld(avatar.Location, Map.ZombieLand);
            }

            avatar.MoveToWorld(GetRandomLocation(), Map.ZombieLand);

            if (avatar.Backpack != null)
            {
                avatar.EquipItem(new Dagger {
                    Speed = 1
                });
                avatar.Backpack.DropItem(new Bandage(7));
                ZombieEvent.RandomClothing(avatar);
            }
            avatar.Hits   = avatar.HitsMax;
            avatar.Stam   = avatar.StamMax;
            avatar.Poison = null;

            return(false);
        }
コード例 #6
0
ファイル: ZombieUI.cs プロジェクト: zerodowned/UO-Forever
        protected override void CompileEntryLayout(
            SuperGumpLayout layout, int length, int index, int pIndex, int yOffset, PlayerZombieProfile entry)
        {
            yOffset = 226 + pIndex * 23;

            layout.Add(
                "entry" + index,
                () =>
            {
                AddLabel(78, yOffset, 2049, entry.Owner.RawName);
                AddLabel(219, yOffset, 2049, (ZombieEvent.SortedProfiles().IndexOf(entry) + 1).ToString());
                AddLabel(270, yOffset, 2049, entry.OverallScore.ToString());
                AddButton(346, yOffset - 2, 4023, 4024, b =>
                {
                    SelectedProfile = entry;
                    Refresh(true);
                });
            });
        }
コード例 #7
0
        public void SpawnCorpses()
        {
            for (int i = 0; i <= 25; i++)
            {
                var c = new HumanMob {
                    Direction = (Direction)Utility.Random(8)
                };

                var corpse = CreateDummyCorpse(c) as Corpse;

                if (corpse != null && corpse.ProxyCorpse != null)
                {
                    corpse = corpse.ProxyCorpse;
                }
                if (corpse != null)
                {
                    corpse.MoveToWorld(GetRandomLocation(), Map.ZombieLand);
                    ZombieEvent.AddItem(corpse);
                }
                c.Delete();
            }
        }
コード例 #8
0
        public void JoinZombieInstance(PlayerMobile player)
        {
            PlayerZombieProfile profile = ZombieEvent.EnsureProfile(player);
            ZombieAvatar        avatar  = profile.ZombieAvatar;

            profile.Active = true;
            if (avatar == null)
            {
                avatar = profile.CreateAvatar();
            }

            if (profile.ZombieSavePoint == Point3D.Zero && avatar != null &&
                DateTime.UtcNow > (profile.DisconnectTime + TimeSpan.FromMinutes(2)))
            {
                if (avatar.Backpack != null && avatar.Items.Count <= 1)
                {
                    avatar.EquipItem(new Dagger {
                        Speed = 1
                    });
                    avatar.Backpack.DropItem(new Bandage(7));
                    ZombieEvent.RandomClothing(avatar);
                }
                avatar.MoveToWorld(GetRandomLocation(), Map.ZombieLand);
            }

            CreaturePossession.ForcePossessCreature(null, player, avatar);

            if (avatar != null)
            {
                avatar.Blessed       = false;
                avatar.Hidden        = false;
                avatar.IgnoreMobiles = false;
                avatar.CantWalk      = false;
            }

            player.LogoutLocation = player.Location;
            player.Map            = Map.Internal;
            player.LogoutMap      = Map.Felucca;
        }
コード例 #9
0
ファイル: ZombieUI.cs プロジェクト: zerodowned/UO-Forever
        protected override void CompileLayout(SuperGumpLayout layout)
        {
            layout.Add(
                "background",
                () =>
            {
                AddBackground(0, 40, 775, 553, 2600);
                AddImage(269, 18, 1419);
                AddImage(346, 0, 1417);
                AddImage(355, 9, 9012, 60);
                AddBackground(35, 100, 703, 444, 9270);
                AddBackground(49, 112, 676, 420, 9200);
                AddBackground(56, 119, 362, 409, 9260);
                AddBackground(423, 119, 296, 409, 9260);

                AddLabel(47, 80, 60, @"Zombieland!!");
                AddItem(146, 58, 9685);

                AddLabel(528, 55, 2049, @"Current Participants:");
                AddLabel(670, 55, 60, ZombieEvent.GetParticipantCount().ToString());

                AddLabel(528, 75, 2049, @"Zombieland Rewards");
                AddButton(660, 75, 247, 248, b =>
                {
                    if (Avatar == null)
                    {
                        new ZombieEventRewardsUI(User, UserProfile).Send();
                    }
                    else
                    {
                        Avatar.SendMessage(61, "You cannot view rewards while participating in the event.  Please log back into your normal character first.");
                    }
                });

                AddItem(351, 130, 4476);
                AddItem(324, 156, 7397, 1270);
                AddItem(333, 154, 7393, 1270);
                AddItem(329, 162, 3795);

                var zinstance = ZombieEvent.GetInstance();

                if (User.AccessLevel >= AccessLevel.GameMaster)
                {
                    if (zinstance == null)
                    {
                        AddLabel(77, 551, 1270, "Start Event?");
                        AddButton(173, 549, 247, 248, b =>
                        {
                            var instance = new ZombieInstance();
                            ZombieEvent.ZombieEvents.Add(instance.Uid, instance);
                            instance.init();
                        });
                    }
                    else
                    {
                        AddLabel(77, 551, 1270, "Stop Event?");
                        AddButton(173, 549, 247, 248, b =>
                        {
                            zinstance.Stop();
                        });
                    }
                }

                if (zinstance != null && !UserProfile.Active)
                {
                    AddLabel(529, 551, 1270, "Join the Event?");
                    AddButton(638, 549, 247, 248, b =>
                    {
                        if (User.Alive)
                        {
                            zinstance.JoinZombieInstance(User);
                        }
                        else
                        {
                            User.SendMessage(54, "You must be alive to join the event!");
                        }
                    });
                }
                else if (zinstance != null && UserProfile.Active)
                {
                    AddLabel(529, 551, 1270, "Leave the Event?");
                    AddButton(638, 549, 247, 248, b =>
                    {
                        zinstance.LeaveZombieInstance(UserProfile);

                        /*if (UserProfile.LeaveEventTimer == null || !UserProfile.LeaveEventTimer.Running)
                         *  ZombieEvent.LeaveEvent(User);
                         * else
                         * {
                         *  new DialogGump(User, this, 0, 0, null, null, 7004, a =>
                         *  {
                         *      if (User.Map == Map.ZombieLand)
                         *      {
                         *          if (ZombieEvent.GetInstance() != null)
                         *          {
                         *              var zevent = ZombieEvent.GetInstance();
                         *              if (zevent != null && UserProfile.LeaveEventTimer != null && UserProfile.LeaveEventTimer.Running)
                         *              {
                         *                  User.SendMessage(54, "You have succesfully left the event.");
                         *                  UserProfile.LeaveEventTimer.Stop();
                         *                  zevent.HandlePlayerDeathLeave(User, null);
                         *              }
                         *          }
                         *      }
                         *  })
                         *  {
                         *      Title = "Leave Event?",
                         *      Html = "Are you sure you wish to leave the event before the leave timer finishes?  You will lose all your items and your current location will not be saved.",
                         *      HtmlColor = DefaultHtmlColor
                         *  }.Send();*/
                    });
                }
            });

            layout.Add(
                "Search",
                () =>
            {
                AddLabel(72, 128, 2049, @"Search");
                AddLabel(72, 146, 1258, @"Enter Character Name");
                AddBackground(70, 164, 139, 29, 3000);

                AddTextEntryLimited(73, 170, 161, 24, TextHue, String.Empty, 20, (b, t) => SearchEmail = t);

                AddButton(213, 168, 4023, 4025, b =>
                {
                    SearchText = SearchEmail;
                    Page       = 0;
                    Refresh(true);
                });
            });

            layout.Add(
                "Profiles",
                () =>
            {
                AddLabel(73, 203, 1258, @"Zombieland Profiles");
                AddLabel(219, 203, 1258, @"Rank");
                AddLabel(270, 203, 1258, @"Score");
                AddLabel(326, 203, 1258, @"View Profile");

                AddBackground(71, 222, 335, 259, 3000);

                if (PageCount - 1 > Page)
                {
                    AddButton(384, 491, 5601, 5605, NextPage);
                }

                if (Page > 0)
                {
                    AddButton(75, 491, 5603, 5607, PreviousPage);
                }
            });

            layout.Add(
                "SelectedProfile",
                () =>
            {
                if (SelectedProfile != null && ZEvent != null)
                {
                    AddLabel(440, 131, 1258, @"Character Name");
                    AddLabel(445, 150, 2049, SelectedProfile.Owner.RawName);

                    AddLabel(570, 131, 1258, @"Murders");
                    AddHtml(569, 151, 46, 22, ("<p align=\"center\">" + SelectedProfile.Kills).WrapUOHtmlColor(KnownColor.White), false, false);

                    AddLabel(654, 131, 1258, @"Deaths");
                    AddHtml(651, 151, 46, 22, ("<p align=\"center\">" + SelectedProfile.Deaths).WrapUOHtmlColor(KnownColor.White), false, false);

                    AddLabel(440, 179, 1258, @"Creature Kills");

                    AddLabel(460, 278, 1258, @"Tentacle");
                    AddHtml(463, 293, 46, 22, ("<p align=\"left\">" + SelectedProfile.GetTentacleKills(ZEvent.Uid)).WrapUOHtmlColor(KnownColor.White), false, false);
                    AddItem(445, 240, 9672);

                    AddLabel(439, 360, 1258, @"Zombie");
                    AddHtml(440, 375, 46, 22, ("<p align=\"left\">" + SelectedProfile.GetZombieKills(ZEvent.Uid)).WrapUOHtmlColor(KnownColor.White), false, false);
                    AddItem(450, 315, 9685);

                    AddLabel(630, 440, 1258, @"Dk. Creeper");
                    AddHtml(650, 455, 46, 22, ("<p align=\"right\">" + SelectedProfile.GetGoreFiendKills(ZEvent.Uid)).WrapUOHtmlColor(KnownColor.White), false, false);
                    AddItem(639, 394, 9773);

                    AddHtml(548, 497, 46, 22, ("<p align=\"center\">" + SelectedProfile.GetVitriolKills(ZEvent.Uid)).WrapUOHtmlColor(KnownColor.White), false, false);
                    AddItem(528, 431, 11650);
                    AddLabel(545, 482, 1258, @"Abomination");

                    AddLabel(529, 360, 137, @"Chaos Dragon");
                    AddHtml(548, 375, 46, 22, ("<p align=\"center\">" + SelectedProfile.DragonBossDamage).WrapUOHtmlColor(KnownColor.White), false, false);
                    AddItem(545, 302, 9780);

                    AddLabel(630, 281, 1258, @"Treefellow");
                    AddHtml(643, 294, 46, 22, ("<p align=\"right\">" + SelectedProfile.GetTreefellowKills(ZEvent.Uid)).WrapUOHtmlColor(KnownColor.White), false, false);
                    AddItem(639, 243, 9761);

                    AddLabel(661, 360, 1258, @"Daemon");
                    AddHtml(658, 374, 46, 22, ("<p align=\"right\">" + SelectedProfile.GetDaemonKills(ZEvent.Uid)).WrapUOHtmlColor(KnownColor.White), false, false);
                    AddItem(669, 315, 8403);

                    AddLabel(455, 440, 1258, @"Fey Warrior");
                    AddHtml(456, 455, 46, 22, ("<p align=\"left\">" + SelectedProfile.GetFeyKills(ZEvent.Uid)).WrapUOHtmlColor(KnownColor.White), false, false);
                    AddItem(454, 397, 9609);

                    AddLabel(528, 234, 1258, @"Zombie Spider");
                    AddHtml(548, 250, 46, 22, ("<p align=\"center\">" + SelectedProfile.GetSpiderKills(ZEvent.Uid)).WrapUOHtmlColor(KnownColor.White), false, false);
                    AddItem(536, 196, 9668);
                }
            });

            Dictionary <int, PlayerZombieProfile> range = GetListRange();

            if (range.Count > 0 && ZEvent != null)
            {
                CompileEntryLayout(layout, range);
            }
        }
コード例 #10
0
 public void Stop()
 {
     Status = ZombieEventStatus.Finished;
     CleanUp();
     ZombieEvent.CleanUpAvatars();
 }