public static uint ConvertToClientOption(DeadMenuOptions option)
        {
            uint opt = (uint)option; // Avoid backfill
            uint count = 0;
            while (opt != 0)
            {
                count++;
                opt >>= 1;
            }

            return count;
        }
Exemple #2
0
        /// <summary>
        /// Broadcasts Phoenix Feather above dead creature effect in creature's range.
        /// </summary>
        /// <param name="client"></param>
        /// <param name="creature"></param>
        public static void DeadFeather(MabiCreature creature, DeadMenuOptions options)
        {
            var bits = (uint)options;
            var flags = new List<uint>();

            // Break down options bit by bit, and add them to flags if set.
            for (uint i = 1; bits != 0; ++i, bits >>= 1)
            {
                if ((bits & 1) != 0)
                    flags.Add(i);
            }

            var packet = new MabiPacket(Op.DeadFeather, creature.Id);

            packet.PutShort((ushort)flags.Count);
            foreach (var f in flags)
                packet.PutInt(f);

            packet.PutByte(0);

            WorldManager.Instance.Broadcast(packet, SendTargets.Range, creature);
        }
        /// <summary>
        /// Text-ifys the options. If more than one flag is set, the order of the
        /// options returned is abitrary
        /// </summary>
        /// <param name="options"></param>
        /// <returns></returns>
        public static IEnumerable<string> GetStrings(DeadMenuOptions options)
        {
            List<string> ret = new List<string>();

            if ((options & DeadMenuOptions.ArenaLobby) != 0)
                ret.Add("arena_lobby");
            if ((options & DeadMenuOptions.ArenaSide) != 0)
                ret.Add("arena_side");
            if ((options & DeadMenuOptions.ArenaWaitingRoom) != 0)
                ret.Add("arena_waiting");
            if ((options & DeadMenuOptions.BarriLobby) != 0)
                ret.Add("barri_lobby");
            if ((options & DeadMenuOptions.NaoStone) != 0)
                ret.Add("naocoupon");
            if ((options & DeadMenuOptions.DungeonEntrance) != 0)
                ret.Add("dungeon_lobby");
            if ((options & DeadMenuOptions.Here) != 0)
                ret.Add("here");
            if ((options & DeadMenuOptions.HereNoPenalty) != 0)
                ret.Add("trnsfrm_pvp_here");
            if ((options & DeadMenuOptions.HerePvP) != 0)
                ret.Add("showdown_pvp_here");
            if ((options & DeadMenuOptions.InCamp) != 0)
                ret.Add("camp");
            if ((options & DeadMenuOptions.StatueOfGoddess) != 0)
                ret.Add("dungeon_statue");
            if ((options & DeadMenuOptions.TirChonaill) != 0)
                ret.Add("tirchonaill");
            if ((options & DeadMenuOptions.Town) != 0)
                ret.Add("town");
            if ((options & DeadMenuOptions.WaitForRescue) != 0)
                ret.Add("stay");

            return ret;
        }