Пример #1
0
        //public static Dictionary<string, Action> commandList { get; set; }
        public static Dictionary <string, Action> Commands(string commandOptions, string commandKey, PlayerSetup.Player playerData, Room.Room room)
        {
            var commandList = new Dictionary <String, Action>
            {
                { "north", () => Movement.Move(playerData, room, "North") },
                { "south", () => Movement.Move(playerData, room, "South") },
                { "east", () => Movement.Move(playerData, room, "East") },
                { "west", () => Movement.Move(playerData, room, "West") },
                { "down", () => Movement.Move(playerData, room, "Down") },
                { "up", () => Movement.Move(playerData, room, "Up") },
                { "look", () => LoadRoom.ReturnRoom(playerData, room, commandOptions, "look") },
                { "l in", () => LoadRoom.ReturnRoom(playerData, room, commandOptions, "look in") },
                { "look in", () => LoadRoom.ReturnRoom(playerData, room, commandOptions, "look in") },
                { "examine", () => LoadRoom.ReturnRoom(playerData, room, commandOptions, "examine") },
                { "touch", () => LoadRoom.ReturnRoom(playerData, room, commandOptions, "touch") },
                { "smell", () => LoadRoom.ReturnRoom(playerData, room, commandOptions, "smell") },
                { "taste", () => LoadRoom.ReturnRoom(playerData, room, commandOptions, "taste") },
                { "score", () => Score.ReturnScore(playerData) },
                { "inventory", () => Inventory.ReturnInventory(playerData.Inventory, playerData) },
                { "equipment", () => Equipment.ShowEquipment(playerData) },
                { "garb", () => Equipment.ShowEquipment(playerData) },
                { "get", () => ManipulateObject.GetItem(room, playerData, commandOptions, commandKey, "item") },
                { "take", () => ManipulateObject.GetItem(room, playerData, commandOptions, commandKey, "item") },
                { "drop", () => ManipulateObject.DropItem(room, playerData, commandOptions, commandKey) },
                { "give", () => ManipulateObject.GiveItem(room, playerData, commandOptions, commandKey, "killable") },
                { "put", () => ManipulateObject.DropItem(room, playerData, commandOptions, commandKey) },
                { "save", () => Save.UpdatePlayer(playerData) },
                { "'", () => Communicate.Say(commandOptions, playerData, room) },
                { "newbie", () => Communicate.NewbieChannel(commandOptions, playerData) },
                { "gossip", () => Communicate.GossipChannel(commandOptions, playerData) },
                { "ooc", () => Communicate.OocChannel(commandOptions, playerData) },
                { "say", () => Communicate.Say(commandOptions, playerData, room) },
                { "sayto", () => Communicate.SayTo(commandOptions, room, playerData) },
                { ">", () => Communicate.SayTo(commandOptions, room, playerData) },
                { "talkto", () => Talk.TalkTo(commandOptions, room, playerData) },
                { "emote", () => Emote.EmoteActionToRoom(commandOptions, playerData) },
                { "quit", () => HubContext.Quit(playerData.HubGuid, room) },
                { "wear", () => Equipment.WearItem(playerData, commandOptions) },
                { "remove", () => Equipment.RemoveItem(playerData, commandOptions) },
                { "doff", () => Equipment.RemoveItem(playerData, commandOptions) },
                { "wield", () => Equipment.WearItem(playerData, commandOptions, true) },
                { "unwield", () => Equipment.RemoveItem(playerData, commandOptions, false, true) },
                { "kill", () => Fight2.PerpareToFight(playerData, room, commandOptions) },
                { "flee", () => Flee.fleeCombat(playerData, room) },

                //spells
                { "c magic missile", () => MagicMissile.StartMagicMissile(playerData, room, commandOptions) },
                { "cast magic missile", () => MagicMissile.StartMagicMissile(playerData, room, commandOptions) },

                { "c armour", () => Armour.StartArmour(playerData, room, commandOptions) },
                { "cast armour", () => Armour.StartArmour(playerData, room, commandOptions) },

                { "c armor", () => Armour.StartArmour(playerData, room, commandOptions) },
                { "cast armor", () => Armour.StartArmour(playerData, room, commandOptions) },

                { "c continual light", () => ContinualLight.StarContinualLight(playerData, room, commandOptions) },
                { "cast continual light", () => ContinualLight.StarContinualLight(playerData, room, commandOptions) },

                { "c invis", () => Invis.StartInvis(playerData, room, commandOptions) },
                { "cast invis", () => Invis.StartInvis(playerData, room, commandOptions) },

                { "c weaken", () => Weaken.StartWeaken(playerData, room, commandOptions) },
                { "cast weaken", () => Weaken.StartWeaken(playerData, room, commandOptions) },

                { "c chill touch", () => ChillTouch.StartChillTouch(playerData, room, commandOptions) },
                { "cast chill touch", () => ChillTouch.StartChillTouch(playerData, room, commandOptions) },

                { "c fly", () => Fly.StartFly(playerData, room, commandOptions) },
                { "cast fly", () => Fly.StartFly(playerData, room, commandOptions) },

                { "c refresh", () => Refresh.StartRefresh(playerData, room, commandOptions) },
                { "cast refresh", () => Refresh.StartRefresh(playerData, room, commandOptions) },

                { "c faerie fire", () => FaerieFire.StartFaerieFire(playerData, room, commandOptions) },
                { "cast faerie fire", () => FaerieFire.StartFaerieFire(playerData, room, commandOptions) },

                { "c teleport", () => Teleport.StartTeleport(playerData, room) },
                { "cast teleport", () => Teleport.StartTeleport(playerData, room) },

                { "c blindness", () => Blindness.StartBlind(playerData, room, commandOptions) },
                { "cast blindess", () => Blindness.StartBlind(playerData, room, commandOptions) },

                { "c haste", () => Haste.StartHaste(playerData, room, commandOptions) },
                { "cast haste", () => Haste.StartHaste(playerData, room, commandOptions) },

                { "c create spring", () => CreateSpring.StartCreateSpring(playerData, room) },
                { "cast create spring", () => CreateSpring.StartCreateSpring(playerData, room) },

                //skills
                { "punch", () => Punch.StartPunch(playerData, room) },
                { "kick", () => Kick.StartKick(playerData, room) },

                //
                { "unlock", () => ManipulateObject.UnlockItem(room, playerData, commandOptions, commandKey) },
                { "lock", () => ManipulateObject.LockItem(room, playerData, commandOptions, commandKey) },
                { "open", () => ManipulateObject.Open(room, playerData, commandOptions, commandKey) },
                { "close", () => ManipulateObject.Close(room, playerData, commandOptions, commandKey) },
                { "drink", () => ManipulateObject.Drink(room, playerData, commandOptions, commandKey) },
                { "help", () => Help.ShowHelp(commandOptions, playerData) },
                { "time", Update.Time.ShowTime },
                { "clock", Update.Time.ShowTime },
                { "skills", () => ShowSkills.ShowPlayerSkills(playerData, commandOptions) },
                { "skills all", () => ShowSkills.ShowPlayerSkills(playerData, commandOptions) },
                { "practice", () => Trainer.Practice(playerData, room, commandOptions) },
                { "list", () => Shop.listItems(playerData, room) },
                { "buy", () => Shop.buyItems(playerData, room, commandOptions) },
                { "quest log", () => Quest.QuestLog(playerData) },
                { "qlog", () => Quest.QuestLog(playerData) },
                { "wake", () => Status.WakePlayer(playerData, room) },
                { "sleep", () => Status.SleepPlayer(playerData, room) },
                { "greet", () => Greet.GreetMob(playerData, room, commandOptions) },
                { "who", () => Who.Connected(playerData) },
                { "affects", () => Affect.Show(playerData) },
                { "follow", () => Follow.FollowThing(playerData, room, commandOptions) }
            };


            return(commandList);
        }
Пример #2
0
        public static PlayerClass MageClass()
        {
            var mage = new PlayerClass
            {
                Name               = "Mage",
                IsBaseClass        = true,
                ExperienceModifier = 3000,
                HelpText           = new Help(),
                Skills             = new List <Skill>(),
                ReclassOptions     = new List <PlayerClass>(),
                MaxHpGain          = 8,
                MinHpGain          = 3,
                MaxManaGain        = 15,
                MinManaGain        = 10,
                MaxEnduranceGain   = 15,
                MinEnduranceGain   = 11,
                StatBonusInt       = 2,
                StatBonusWis       = 1
            };

            #region  Give fighter punch skill

            var punch = Punch.PunchAb();
            punch.LevelObtained  = 2;
            punch.Proficiency    = 1;
            punch.MaxProficiency = 95;
            mage.Skills.Add(punch);

            #endregion

            #region  Give mage magic missile skill

            var magicMissile = MagicMissile.MagicMissileAb();

            magicMissile.LevelObtained  = 1;
            magicMissile.Proficiency    = 50;
            magicMissile.MaxProficiency = 95;
            mage.Skills.Add(magicMissile);

            #endregion


            #region  Give mage armor skill

            var armour = Armour.ArmourAb();

            armour.LevelObtained  = 1;
            armour.Proficiency    = 50;
            armour.MaxProficiency = 95;
            mage.Skills.Add(armour);

            #endregion

            #region  Give invis skill

            var invis = Invis.InvisAb();

            invis.LevelObtained  = 1;
            invis.Proficiency    = 50;
            invis.MaxProficiency = 95;
            mage.Skills.Add(invis);

            #endregion

            #region  Give continual light skill

            var continualLight = ContinualLight.ContinualLightAb();

            continualLight.LevelObtained  = 1;
            continualLight.Proficiency    = 50;
            continualLight.MaxProficiency = 95;
            mage.Skills.Add(continualLight);

            #endregion

            #region  Give weaken

            var weaken = Weaken.WeakenAb();

            weaken.LevelObtained  = 1;
            weaken.Proficiency    = 50;
            weaken.MaxProficiency = 95;
            mage.Skills.Add(weaken);

            #endregion

            #region  Give chill touch

            var chillTouch = ChillTouch.ChillTouchAb();

            chillTouch.LevelObtained  = 1;
            chillTouch.Proficiency    = 50;
            chillTouch.MaxProficiency = 95;
            mage.Skills.Add(chillTouch);

            #endregion

            #region  Give fly

            var fly = Fly.FlyAb();

            fly.LevelObtained  = 1;
            fly.Proficiency    = 50;
            fly.MaxProficiency = 95;
            mage.Skills.Add(fly);

            #endregion


            mage.ReclassOptions.Add(Ranger.RangerClass());

            return(mage);
        }
Пример #3
0
        public static PlayerClass MageClass()
        {
            var mage = new PlayerClass
            {
                Name               = "Mage",
                IsBaseClass        = true,
                ExperienceModifier = 3000,
                HelpText           = new Help(),
                Skills             = new List <Skill>(),
                ReclassOptions     = new List <PlayerClass>(),
                MaxHpGain          = 8,
                MinHpGain          = 3,
                MaxManaGain        = 15,
                MinManaGain        = 10,
                MaxEnduranceGain   = 15,
                MinEnduranceGain   = 11,
                StatBonusInt       = 2,
                StatBonusWis       = 1
            };


            #region  Give mage magic missile skill

            var magicMissile = MagicMissile.MagicMissileAb();

            magicMissile.LevelObtained  = 1;
            magicMissile.Proficiency    = 50;
            magicMissile.MaxProficiency = 95;
            mage.Skills.Add(magicMissile);

            #endregion

            #region  Give mage armor skill

            var armour = Armour.ArmourAb();

            armour.LevelObtained  = 1;
            armour.Proficiency    = 50;
            armour.MaxProficiency = 95;
            mage.Skills.Add(armour);

            #endregion

            #region  Give invis skill

            var invis = Invis.InvisAb();

            invis.LevelObtained  = 1;
            invis.Proficiency    = 50;
            invis.MaxProficiency = 95;
            mage.Skills.Add(invis);

            #endregion

            #region  Give continual light skill

            var continualLight = ContinualLight.ContinualLightAb();

            continualLight.LevelObtained  = 1;
            continualLight.Proficiency    = 50;
            continualLight.MaxProficiency = 95;
            mage.Skills.Add(continualLight);

            #endregion

            #region  Give weaken

            var weaken = Weaken.WeakenAb();

            weaken.LevelObtained  = 1;
            weaken.Proficiency    = 50;
            weaken.MaxProficiency = 95;
            mage.Skills.Add(weaken);

            #endregion

            #region  Give chill touch

            var chillTouch = ChillTouch.ChillTouchAb();

            chillTouch.LevelObtained  = 1;
            chillTouch.Proficiency    = 50;
            chillTouch.MaxProficiency = 95;
            mage.Skills.Add(chillTouch);

            #endregion

            #region  Give fly

            var fly = Fly.FlyAb();

            fly.LevelObtained  = 1;
            fly.Proficiency    = 50;
            fly.MaxProficiency = 95;
            mage.Skills.Add(fly);

            #endregion

            #region  Give Faerie Fire

            var faerieFire = FaerieFire.FaerieFireAB();

            faerieFire.LevelObtained  = 1;
            faerieFire.Proficiency    = 50;
            faerieFire.MaxProficiency = 95;
            mage.Skills.Add(faerieFire);

            #endregion

            #region  Give refresh

            var refresh = Refresh.RefreshAb();

            refresh.LevelObtained  = 1;
            refresh.Proficiency    = 50;
            refresh.MaxProficiency = 95;
            mage.Skills.Add(refresh);

            #endregion

            #region  Give teleport

            var teleport = Teleport.TeleporAb();

            teleport.LevelObtained  = 1;
            teleport.Proficiency    = 50;
            teleport.MaxProficiency = 95;
            mage.Skills.Add(teleport);

            #endregion

            #region  Give blindness

            var blindness = Blindness.BlindAb();

            blindness.LevelObtained  = 1;
            blindness.Proficiency    = 50;
            blindness.MaxProficiency = 95;
            mage.Skills.Add(blindness);

            #endregion

            #region  Give haste

            var haste = Haste.HasteAb();

            haste.LevelObtained  = 1;
            haste.Proficiency    = 50;
            haste.MaxProficiency = 95;
            mage.Skills.Add(haste);

            #endregion

            #region  Give Shocking grasp

            var shockingGrasp = ShockingGrasp.ShockingGraspAb();

            shockingGrasp.LevelObtained  = 1;
            shockingGrasp.Proficiency    = 50;
            shockingGrasp.MaxProficiency = 95;
            mage.Skills.Add(shockingGrasp);

            #endregion



            #region  Give create spring

            var createSpring = CreateSpring.CreateSpringAb();

            createSpring.LevelObtained  = 1;
            createSpring.Proficiency    = 50;
            createSpring.MaxProficiency = 95;
            mage.Skills.Add(createSpring);

            #endregion


            mage.ReclassOptions.Add(Ranger.RangerClass());

            return(mage);
        }
Пример #4
0
    // Main code for a dodgeball
    void FixedUpdate()
    {
        // Find a list of all the players
        Players = GameObject.FindGameObjectsWithTag("Player");
        // If it is not a special ball do nothing
        if (Special == 0)
        {
            Icon.GetComponent <SpriteRenderer>().enabled = false;
        }
        // If it is a special ball set the correct icon and give the value to _lastSpecial
        else if (Special < 4)
        {
            Icon.GetComponent <SpriteRenderer>().sprite = SpecialSprites[Special - 1];
            _lastSpecial = Special;
        }
        else
        {
            // If its an invisible ball set it to the translucent sprite
            if (_lastSpecial == 1)
            {
                GetComponent <MeshRenderer>().enabled         = false;
                Icon.GetComponent <SpriteRenderer>().enabled  = false;
                Invis.GetComponent <SpriteRenderer>().enabled = true;
            }
        }
        if (_dbGenerator.GetComponent <DBGenerator>().Server)
        {
            _dbGenerator.GetComponent <DBGenerator>().BallUpdates[BallNumber] = Parent;
        }
        _server = _dbGenerator.GetComponent <DBGenerator>().Server;
        //Just in case a ball spawns when theres no player. stops an error being thrown
        if (Players == null)
        {
            Players = new GameObject[] { Arrow };
        }
        //Initial state, stays here until the dodgeball spawns in a place where it isn't overlapping another
        if (State == -1)
        {
            State = 0;
            if (_hit)
            {
                _countDown = 1;
                State      = 1;
            }
        }
        // Get the angles between the dodgeball and all the players
        Angles();
        // Respawn the dodgeball if necessary
        Reset();
        //fire time is the amount of time after the ball spawns before it can fire. just creates a delay
        if (_fireTime > 0 && _controller.GetComponent <Controller>().Started)
        {
            // Dont show the ball until you're sure it didn't spawn ontop of another ball
            if (_sightTime == 0)
            {
                GetComponent <MeshRenderer>().enabled         = true;
                Arrow.GetComponent <SpriteRenderer>().enabled = true;
                // If it is a special ball show the icon
                if (_lastSpecial < 4 && _lastSpecial > 0)
                {
                    Icon.GetComponent <SpriteRenderer>().enabled = true;
                }
            }
            else
            {
                _sightTime--;
            }
            _fireTime--;
        }

        // Check if any of the angles to the player match the dodgeballs angles
        bool inArray = false;

        for (int j = 0; j < _angles.Length; j++)
        {
            if ((int)_secondAngle == (int)_angles[j])
            {
                inArray = true;
            }
        }
        //States represent different stages in the balls life
        // Start : 0, Countdown to fire : 1 - 4, Fired - 5
        //If the ball is facing a player and it has spawned but not yet been fired then fire
        if (inArray && State == 0 && _fireTime == 0 && _controller.GetComponent <Controller>().Started&& (_server || _controller.GetComponent <Controller>().SinglePlayer))
        {
            State = 1;
        }
        //Hide the arrow
        if (State == 1)
        {
            Arrow.GetComponent <SpriteRenderer>().enabled = false;
        }

        if (State >= 1 && State <= 4 && _counter == 0)
        {
            _counter = 5;
        }
        //Blinking arrow before it fires
        else if (State >= 1 && State <= 4 && _counter != 0)
        {
            _counter--;
            if (_counter == 0)
            {
                State++;
                if (State == 2 || State == 4)
                {
                    Arrow.GetComponent <SpriteRenderer>().enabled = true;
                }
                else
                {
                    Arrow.GetComponent <SpriteRenderer>().enabled = false;
                }
            }
        }
        //move the ball in the direction it was fired
        else if (State == 5)
        {
            // Activate the special ball
            if (Special != 0)
            {
                Special = 4;
            }

            // If it is a Multiply ball activate the other balls and fire them
            if (_lastSpecial == 2)
            {
                foreach (GameObject g in Duplicates)
                {
                    g.SetActive(true);
                    g.transform.localPosition            = new Vector3(transform.localPosition.x, transform.localPosition.y - (Speed / 100.0f), transform.localPosition.z);
                    g.GetComponent <Renderer>().material = GetComponent <Renderer>().material;
                }
            }

            // Move the dodgeball
            transform.localPosition = new Vector3(transform.localPosition.x, transform.localPosition.y - (Speed / 100.0f), transform.localPosition.z);
            // Disable the arrow sprite
            Arrow.GetComponent <SpriteRenderer>().enabled = false;

            //If it is a Stretch ball stretch it out until its scale is (2, 0.5, 1) and also rotate the ball
            if (Special == 4 && _lastSpecial == 3 && _countDown == 0)
            {
                if (transform.localScale.x < _stretch * 2)
                {
                    transform.localScale = new Vector3(transform.localScale.x + (_stretch / 50.0f), transform.localScale.y - (_stretch / 100.0f), transform.localScale.z);
                }
                if (_left)
                {
                    transform.localEulerAngles = new Vector3(0.0f, 0.0f, transform.localEulerAngles.z - 2.0f);
                }
                else
                {
                    transform.localEulerAngles = new Vector3(0.0f, 0.0f, transform.localEulerAngles.z + 2.0f);
                }
            }
        }
        else
        {
            //if the ball is still trying to find a target compare its angles to its angle in relation to all players. if there's a match fire in that direction
            if (RotationSpeed > 1.0f || RotationSpeed < 1.0f)
            {
                for (int i = 0; i < 5; i++)
                {
                    Parent.transform.localEulerAngles = new Vector3(Parent.transform.localEulerAngles.x, Parent.transform.localEulerAngles.y, Parent.transform.localEulerAngles.z + (RotationSpeed / 5));
                    Angles();
                    if (inArray && State == 0 && _fireTime == 0 && _controller.GetComponent <Controller>().Started&& _server)
                    {
                        // Set the state to 1 which means its preparing to fire
                        State = 1;
                    }
                }
            }
            // If there is no match keep rotating
            else
            {
                Parent.transform.localEulerAngles = new Vector3(Parent.transform.localEulerAngles.x, Parent.transform.localEulerAngles.y, Parent.transform.localEulerAngles.z + (RotationSpeed));
            }
            _rotationAngle = Parent.transform.localEulerAngles.z;
            if (_rotationAngle > 180.0f && Max != 270.0f)
            {
                _rotationAngle -= 360.0f;
            }
            // Onece it rotates all the way one way, start rotating in the other direction
            if (_rotationAngle > Max || _rotationAngle < Min)
            {
                RotationSpeed = -RotationSpeed;
                Parent.transform.localEulerAngles = new Vector3(Parent.transform.localEulerAngles.x, Parent.transform.localEulerAngles.y, Parent.transform.localEulerAngles.z + (RotationSpeed * 2));
            }
        }
    }
Пример #5
0
    //Reset the dodgeball along one of the walls and decides if it will be a special ball.
    // will keep going until the ball doesn't spawn on top of another ball
    void Reset()
    {
        if (_countDown > 0)
        {
            _countDown--;
            // Wait until the countdown has ended to respawn
            if (_countDown == 0)
            {
                // Time until the ball fires so it doesn't immediately spawn then fire
                _fireTime = (int)Random.Range(50, 500);
                // Time until the ball can be seen. Stops the ball from jumping around whilst if it spawns on top of another ball
                _sightTime = 2;
                // The ball spawns on a random wall
                int random = (int)Random.Range(0, 4);
                // Right wall
                if (random == 0)
                {
                    Parent.transform.localPosition    = new Vector3(_x, Random.Range(-_y, _y), 0);
                    Parent.transform.localEulerAngles = new Vector3(0.0f, 0.0f, 270.0f);
                    Max = 0.0f;
                    Min = -180.0f;
                }
                // Left wall
                else if (random == 1)
                {
                    Parent.transform.localPosition    = new Vector3(-_x, Random.Range(-_y, _y), 0);
                    Parent.transform.localEulerAngles = new Vector3(0.0f, 0.0f, 90.0f);
                    Max = 180.0f;
                    Min = 0.0f;
                }
                // Top wall
                else if (random == 2)
                {
                    Parent.transform.localPosition    = new Vector3(Random.Range(-_x, _x), _y, 0);
                    Parent.transform.localEulerAngles = new Vector3(0.0f, 0.0f, 0.0f);
                    Min = -90.0f;
                    Max = 90.0f;
                }
                // Bottom wall
                else
                {
                    Parent.transform.localPosition    = new Vector3(Random.Range(-_x, _x), -_y, 0);
                    Parent.transform.localEulerAngles = new Vector3(0.0f, 0.0f, 180.0f);
                    Min = 90.0f;
                    Max = 270.0f;
                }
                // Start state
                State = -1;
                int special = Random.Range(0, 100);
                // each special ball has a 3% probablitiy of spawning
                // Invisible ball
                if (special < 3)
                {
                    Special = 1;
                }
                // Multi Ball
                else if (special < 6)
                {
                    Special = 2;
                }
                // Stretch Ball
                else if (special < 9)
                {
                    Special = 3;
                    // Rotates either left or right
                    _left = (Random.Range(-1, 1) > 0);
                    // Gets the original width of the ball
                    _stretch = transform.localScale.x;
                }
                // Regular ball
                else
                {
                    Special = 0;
                }
                // If the user is the server add the dodgeball to the array of updates to inform the clients
                // so they can match the servers ball
                if (_dbGenerator.GetComponent <DBGenerator>().Server)
                {
                    _dbGenerator.GetComponent <DBGenerator>().BallUpdates[BallNumber] = Parent;
                }

                // Set rotation and position to 0
                transform.localEulerAngles = Vector3.zero;
                transform.localPosition    = Vector3.zero;
                // Reset any special characteristics
                Invis.GetComponent <SpriteRenderer>().enabled = false;
                foreach (GameObject g in Duplicates)
                {
                    g.SetActive(false);
                    g.transform.localPosition = new Vector3(0.0f, 0.0f, 0.0f);
                }
            }
        }
    }
Пример #6
0
        /// <summary>
        /// Command list for the game
        /// </summary>
        /// <param name="commandOptions">Everything after the 1st occurance of a space</param>
        /// <param name="commandKey">The string before the 1st occurance of a space</param>
        /// <param name="playerData">Player Data</param>
        /// <param name="room">Current room</param>
        /// <returns>Returns Dictionary of commands</returns>
        public static void Commands(string commandOptions, string commandKey, PlayerSetup.Player playerData, Room.Room room)
        {
            var context = HubContext.Instance;

            switch (commandKey)
            {
            case "north":
                Movement.Move(playerData, room, "North");
                break;

            case "east":
                Movement.Move(playerData, room, "East");
                break;

            case "south":
                Movement.Move(playerData, room, "South");
                break;

            case "west":
                Movement.Move(playerData, room, "West");
                break;

            case "up":
                Movement.Move(playerData, room, "Up");
                break;

            case "down":
                Movement.Move(playerData, room, "Down");
                break;

            case "look":
            case "look at":
            case "l at":
            case "search":
                LoadRoom.ReturnRoom(playerData, room, commandOptions, "look");
                break;

            case "l in":
            case "search in":
                LoadRoom.ReturnRoom(playerData, room, commandOptions, "look in");
                break;

            case "examine":
                LoadRoom.ReturnRoom(playerData, room, commandOptions, "examine");
                break;

            case "touch":
                LoadRoom.ReturnRoom(playerData, room, commandOptions, "touch");
                break;

            case "smell":
                LoadRoom.ReturnRoom(playerData, room, commandOptions, "smell");
                break;

            case "taste":
                LoadRoom.ReturnRoom(playerData, room, commandOptions, "taste");
                break;

            case "score":
                Score.ReturnScore(playerData);
                break;

            case "inventory":
                Inventory.ReturnInventory(playerData.Inventory, playerData);
                break;

            case "eq":
            case "equip":
            case "equipment":
            case "garb":
                Equipment.ShowEquipment(playerData);
                break;

            case "loot":
            case "get":
            case "take":
                ManipulateObject.GetItem(room, playerData, commandOptions, commandKey, "item");
                break;

            case "plunder":
                ManipulateObject.GetItem(room, playerData, "all " + commandOptions, commandKey, "item");
                break;

            case "drop":
            case "put":
                ManipulateObject.DropItem(room, playerData, commandOptions, commandKey);
                break;

            case "give":
                ManipulateObject.GiveItem(room, playerData, commandOptions, commandKey, "killable");
                break;

            case "save":
                Save.SavePlayer(playerData);
                break;

            case "say":
            case "'":
                Communicate.Say(commandOptions, playerData, room);
                break;

            case "sayto":
            case ">":
                Communicate.SayTo(commandOptions, room, playerData);
                break;

            case "newbie":
                Communicate.NewbieChannel(commandOptions, playerData);
                break;

            case "gossip":
                Communicate.GossipChannel(commandOptions, playerData);
                break;

            case "ooc":
                Communicate.OocChannel(commandOptions, playerData);
                break;

            case "yes":
                Communicate.Say("Yes", playerData, room);
                break;

            case "no":
                Communicate.Say("No", playerData, room);
                break;

            case "yell":
                Communicate.Yell(commandOptions, room, playerData);
                break;

            case "talkto":
                Talk.TalkTo(commandOptions, room, playerData);
                break;

            case "emote":
                Emote.EmoteActionToRoom(commandOptions, playerData);
                break;

            case "use":
            case "wear":
            case "wield":
                Equipment.WearItem(playerData, commandOptions);
                break;

            case "remove":
            case "doff":
            case "unwield":
                Equipment.RemoveItem(playerData, commandOptions);
                break;

            case "hit":
            case "kill":
            case "attack":
                Fight2.PerpareToFight(playerData, room, commandOptions);
                break;

            case "flee":
                Flee.fleeCombat(playerData, room);
                break;

            case "sacrifice":
            case "harvest":
                Harvest.Body(playerData, room, commandOptions);
                break;

            case "peek":
                Peak.DoPeak(context, playerData, room, commandOptions);
                break;

            case "steal":
                Steal.DoSteal(context, playerData, room, commandOptions);
                break;

            case "pick":
                LockPick.DoLockPick(context, playerData, room, commandOptions);
                break;

            case "c magic missile":
            case "cast magic missile":
                MagicMissile.StartMagicMissile(playerData, room, commandOptions);
                break;

            case "c armour":
            case "cast armour":
            case "c armor":
            case "cast armor":
                new Armour().StartArmour(playerData, room, commandOptions);
                break;

            case "c continual light":
            case "cast continual light":
                ContinualLight.StarContinualLight(playerData, room, commandOptions);
                break;

            case "c invis":
            case "cast invis":
                Invis.StartInvis(playerData, room, commandOptions);
                break;

            case "c weaken":
            case "cast weaken":
                Weaken.StartWeaken(playerData, room, commandOptions);
                break;

            case "c chill touch":
            case "cast chill touch":
                ChillTouch.StartChillTouch(playerData, room, commandOptions);
                break;

            case "c fly":
            case "cast fly":
                Fly.StartFly(playerData, room, commandOptions);
                break;

            case "c refresh":
            case "cast refresh":
                Refresh.StartRefresh(playerData, room, commandOptions);
                break;

            case "c faerie fire":
            case "cast faerie fire":
                FaerieFire.StartFaerieFire(playerData, room, commandOptions);
                break;

            case "c teleport":
            case "cast teleport":
                Teleport.StartTeleport(playerData, room);
                break;

            case "c blindness":
            case "cast blindness":
                Blindness.StartBlind(playerData, room, commandOptions);
                break;

            case "c haste":
            case "cast haste":
                Haste.StartHaste(playerData, room, commandOptions);
                break;

            case "c create spring":
            case "cast create spring":
                CreateSpring.StartCreateSpring(playerData, room);
                break;

            case "c shocking grasp":
            case "cast shocking grasp":
                new ShockingGrasp().StartShockingGrasp(playerData, room, commandOptions);
                break;

            case "c cause light":
            case "cast cause light":
                new CauseLight().StartCauseLight(context, playerData, room, commandOptions);
                break;

            case "c cure light":
            case "cast cure light":
                new CureLight().StartCureLight(context, playerData, room, commandOptions);
                break;

            case "c cure blindness":
                new CureBlindness().StartCureBlindness(context, playerData, room, commandOptions);
                break;

            case "c detect invis":
            case "cast detect invis":
                DetectInvis.DoDetectInvis(context, playerData, room);
                break;

            case "forage":
                new Foraging().StartForaging(playerData, room);
                break;

            case "fish":
            case "angle":
            case "line":
            case "trawl":
            case "lure":
                new Fishing().StartFishing(playerData, room);
                break;

            case "reel":
                Fishing.GetFish(playerData, room);
                break;

            case "dirt kick":
                new DirtKick().StartDirtKick(context, playerData, room, commandOptions);
                break;

            case "bash":
                new Bash().StartBash(context, playerData, room, commandOptions);
                break;

            case "shield bash":
                new ShieldBash().StartBash(context, playerData, room, commandOptions);
                break;

            case "punch":
                Punch.StartPunch(playerData, room);
                break;

            case "kick":
                new Kick().StartKick(context, playerData, room, commandOptions);
                break;

            case "spin kick":
                new SpinKick().StartKick(context, playerData, room, commandOptions);
                break;

            case "rescue":
                new Rescue().StartRescue(context, playerData, room, commandOptions);
                break;

            case "lunge":
                new Lunge().StartLunge(context, playerData, room, commandOptions);
                break;

            case "disarm":
                new Disarm().StartDisarm(context, playerData, room);
                break;

            case "backstab":
                new Backstab().StartBackstab(context, playerData, room, commandOptions);
                break;

            case "feint":
                new Feint().StartFeint(context, playerData, room, commandOptions);
                break;

            case "mount":
            case "ride":
                Mount.StartMount(playerData, room, commandOptions);
                break;

            case "dismount":
                Mount.Dismount(playerData, room, commandOptions);
                break;

            case "trip":
                new Trip().StartTrip(context, playerData, room, commandOptions);
                break;

            case "sneak":
                Sneak.DoSneak(context, playerData);
                break;

            case "hide":
                Hide.DoHide(context, playerData);
                break;

            case "lore":
                Lore.DoLore(context, playerData, commandOptions);
                break;

            case "unlock":
                ManipulateObject.UnlockItem(room, playerData, commandOptions, commandKey);
                break;

            case "lock":
                ManipulateObject.LockItem(room, playerData, commandOptions, commandKey);
                break;

            case "close":
            case "shut":
                ManipulateObject.Close(room, playerData, commandOptions, commandKey);
                break;

            case "drink":
                ManipulateObject.Drink(room, playerData, commandOptions, commandKey);
                break;

            case "help":
            case "/help":
            case "?":
            case "commands":
                Help.ShowHelp(commandOptions, playerData);
                break;

            case "time":
            case "clock":
                Update.Time.ShowTime();
                break;

            case "skills":
            case "spells":
            case "skills all":
                ShowSkills.ShowPlayerSkills(playerData, commandOptions);
                break;

            case "practice":
                Trainer.Practice(playerData, room, commandOptions);
                break;

            case "list":
                Shop.listItems(playerData, room);
                break;

            case "buy":
                Shop.buyItems(playerData, room, commandOptions);
                break;

            case "sell":
                Shop.sellItems(playerData, room, commandOptions);
                break;

            case "quest log":
            case "qlog":
                Quest.QuestLog(playerData);
                break;

            case "wake":
                Status.WakePlayer(context, playerData, room);
                break;

            case "sleep":
                Status.SleepPlayer(context, playerData, room);
                break;

            case "rest":
            case "sit":
                Status.RestPlayer(context, playerData, room);
                break;

            case "stand":
                Status.StandPlayer(context, playerData, room);
                break;

            case "greet":
                Greet.GreetMob(playerData, room, commandOptions);
                break;

            case "who":
                Who.Connected(playerData);
                break;

            case "affects":
                Effect.Show(playerData);
                break;

            case "follow":
                Follow.FollowThing(playerData, room, commandOptions);
                break;

            case "nofollow":
                Follow.FollowThing(playerData, room, "noFollow");
                break;

            case "quit":
                HubContext.Instance.Quit(playerData.HubGuid, room);
                break;

            case "craft":
                Craft.CraftItem(playerData, room, commandOptions, CraftType.Craft);
                break;

            case "chop":
                Craft.CraftItem(playerData, room, commandOptions, CraftType.Chop);
                break;

            case "cook":
                Craft.CraftItem(playerData, room, commandOptions, CraftType.Cook);
                break;

            case "brew":
                Craft.CraftItem(playerData, room, commandOptions, CraftType.Brew);
                break;

            case "forge":
                Craft.CraftItem(playerData, room, commandOptions, CraftType.Forge);
                break;

            case "carve":
                Craft.CraftItem(playerData, room, commandOptions, CraftType.Carve);
                break;

            case "knit":
                Craft.CraftItem(playerData, room, commandOptions, CraftType.Knitting);
                break;

            case "make":
            case "build":
                Craft.CraftItem(playerData, room, commandOptions, CraftType.Craft);
                break;

            case "show crafts":
            case "craftlist":
                Craft.CraftList(playerData);
                break;

            case "set up camp":
                Camp.SetUpCamp(playerData, room);
                break;

            case "repair":
                Events.Repair.RepairItem(playerData, room, commandOptions);
                break;

            case "/debug":
                PlayerSetup.Player.DebugPlayer(playerData);
                break;

            case "/setGold":
                PlayerSetup.Player.SetGold(playerData, commandOptions);
                break;

            case "/setAc":
                PlayerSetup.Player.SetAC(playerData, commandOptions);
                break;

            case "/map":
                SigmaMap.DrawMap(playerData.HubGuid);     //not what you think it does
                break;

            default:
                HubContext.Instance.SendToClient("Sorry you can't do that. Try help commands or ask on the discord channel.", playerData.HubGuid);
                var log = new Error.Error
                {
                    Date         = DateTime.Now,
                    ErrorMessage = commandKey + " " + commandOptions,
                    MethodName   = "Wrong command"
                };

                Save.LogError(log);
                break;
            }
        }