Exemplo n.º 1
0
    void Update()
    {
        if (occupying != null)
        {
            if (!ally && !MarketManager.instance.inWave)
            {
                Destroy(transform.GetChild(0).gameObject);
                Destroy(occupying);
                occupying = null;
            }
            else
            {
                occupying.Update();

                attackProgress += occupying.attackSpeed * Time.deltaTime;

                while (attackProgress > 1)
                {
                    doAttack(occupying.attack);
                    occupying.Attack();
                    attackProgress -= 1;
                }

                if (occupying.health <= 0)
                {
                    occupying.Die();
                    occupying = null;
                }
            }
        }
    }
        public static void InvokeComposite()
        {
            IMercenary clanSupreme = new Clan("Supreme Masters");
            IMercenary clanPotato  = new Clan("Potato Killers");
            IMercenary clanTrain   = new Clan("Trains Likers");
            IMercenary Andy        = new Mercenary("Andiosvaldo");
            IMercenary Bob         = new Mercenary("Bobsnaldo");
            IMercenary Caio        = new Mercenary("Caiosvaldo");
            IMercenary Edu         = new Mercenary("Ediscleison");

            clanPotato.NewMember(Andy);
            clanPotato.NewMember(Bob);
            clanTrain.NewMember(Caio);

            clanSupreme.NewMember(clanPotato);
            clanSupreme.NewMember(clanTrain);
            clanSupreme.NewMember(Edu);

            int newPayment = 6000;

            clanSupreme.payment(newPayment);
            clanSupreme.data();

            newPayment = 999;
            Console.WriteLine();

            clanSupreme.payment(newPayment);
            clanSupreme.data();


            Console.ReadLine();
        }
Exemplo n.º 3
0
 public void Activate(int characterModel, Mercenary incMerc)
 {
     gameObject.SetActive(true);
     baseImages[0].sprite = baseSprites[characterModel];
     currentMerc          = incMerc;
     Tick();
 }
Exemplo n.º 4
0
        public Unit CreateUnitWithJob(Team team, int job, byte MaxHealth, byte CurrentHealth, byte Attack, byte Speed, byte Defense, byte Resistance, bool CanMove)
        {
            Unit unit = null;

            switch (job)
            {
            case 0:
                unit = new Mercenary(team, MaxHealth, CurrentHealth, Attack, Speed, Defense, Resistance, CanMove);
                break;

            case 1:
                unit = new Soldier(team, MaxHealth, CurrentHealth, Attack, Speed, Defense, Resistance, CanMove);
                break;

            case 2:
                unit = new Fighter(team, MaxHealth, CurrentHealth, Attack, Speed, Defense, Resistance, CanMove);
                break;

            case 3:
                unit = new Healer(team, MaxHealth, CurrentHealth, Attack, Speed, Defense, Resistance, CanMove);
                break;

            case 4:
                unit = new Mage(team, MaxHealth, CurrentHealth, Attack, Speed, Defense, Resistance, CanMove);
                break;
            }
            return(unit);
        }
Exemplo n.º 5
0
        public Unit CreateUnitWithJob(Team team, int job)
        {
            Unit unit = null;

            switch (job)
            {
            case 0:
                unit = new Mercenary(team);
                break;

            case 1:
                unit = new Soldier(team);
                break;

            case 2:
                unit = new Fighter(team);
                break;

            case 3:
                unit = new Healer(team);
                break;

            case 4:
                unit = new Mage(team);
                break;
            }
            return(unit);
        }
Exemplo n.º 6
0
        public static bool Init()
        {
            Commando.Setup();
            Huntress.Setup();
            Artificer.Setup();
            Mercenary.Setup();
            Engineer.Setup();
            Acrid.Setup();

            return(true);

            //#region merc
            //LoadoutAPI.AddSkill(typeof(VTStates.States.Mercenary.SummonClones));
            //{
            //    SkillDef mySkillDef = ScriptableObject.CreateInstance<SkillDef>();
            //    mySkillDef.activationState = new SerializableEntityStateType(typeof(VTStates.States.Mercenary.SummonClones));
            //    mySkillDef.activationStateMachineName = "Weapon";
            //    mySkillDef.baseMaxStock = 2;
            //    mySkillDef.baseRechargeInterval = 16f;
            //    mySkillDef.beginSkillCooldownOnSkillEnd = false;
            //    mySkillDef.canceledFromSprinting = false;
            //    mySkillDef.fullRestockOnAssign = true;
            //    mySkillDef.interruptPriority = InterruptPriority.Any;
            //    mySkillDef.isBullets = false;
            //    mySkillDef.isCombatSkill = true;
            //    mySkillDef.mustKeyPress = true;
            //    mySkillDef.noSprint = false;
            //    mySkillDef.rechargeStock = 1;
            //    mySkillDef.requiredStock = 1;
            //    mySkillDef.shootDelay = 0f;
            //    mySkillDef.stockToConsume = 1;
            //    //mySkillDef.icon = Resources.Load<Sprite>()
            //    mySkillDef.skillDescriptionToken = "Summon a shadow clone that inherits your items";
            //    mySkillDef.skillName = "EXPANDEDSKILLS_SUMMONCLONE_SPECIAL";
            //    mySkillDef.skillNameToken = "Shadow Clones";

            //    LoadoutAPI.AddSkillDef(mySkillDef);

            //    GameObject gameObject = Resources.Load<GameObject>("prefabs/characterbodies/mercbody");
            //    SkillLocator component = gameObject.GetComponent<SkillLocator>();
            //    SkillFamily skillFamily = component.special.skillFamily;

            //    Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1);

            //    skillFamily.variants[skillFamily.variants.Length - 1] = new SkillFamily.Variant
            //    {
            //        skillDef = mySkillDef,
            //        unlockableName = "",
            //        viewableNode = new ViewablesCatalog.Node(mySkillDef.skillNameToken, false, null)

            //    };
            //}


            //#endregion merc

            #region commando

            #endregion commando
        }
Exemplo n.º 7
0
        public void OverloadedUnitHasCorrectJob()
        {
            Unit mercenaryOne   = new Mercenary(Team.BLUE, 20, 16, 9, 8, 7, 6, true);
            Job  expectedResult = Job.MERCENARY;
            Job  actualResult   = mercenaryOne.GetJob();

            Assert.AreEqual(expectedResult, actualResult);
        }
Exemplo n.º 8
0
        public void OverloadedUnitHasCorrectResistance()
        {
            Unit mercenaryOne   = new Mercenary(Team.BLUE, 20, 16, 9, 8, 7, 6, true);
            byte expectedResult = 6;
            byte actualResult   = mercenaryOne.m_Resistance;

            Assert.AreEqual(expectedResult, actualResult);
        }
Exemplo n.º 9
0
        public void OverloadedUnitIsAlive()
        {
            Unit mercenaryOne   = new Mercenary(Team.BLUE, 20, 16, 9, 8, 7, 6, true);
            bool expectedResult = true;
            bool actualResult   = mercenaryOne.IsAlive();

            Assert.AreEqual(expectedResult, actualResult);
        }
Exemplo n.º 10
0
        public void OverloadedUnitHasCorrectMovementAssignment()
        {
            Unit mercenaryOne   = new Mercenary(Team.BLUE, 20, 16, 9, 8, 7, 6, true);
            bool expectedResult = true;
            bool actualResult   = mercenaryOne.CanTakeAction();

            Assert.AreEqual(expectedResult, actualResult);
        }
Exemplo n.º 11
0
 public void Write(IBitWriter writer, Mercenary mercenary, uint version)
 {
     writer.WriteUInt16(Header ?? 0x666A);
     if (mercenary.Id != 0)
     {
         ItemList?.Write(writer, version);
     }
 }
 public void AddMercenary(Mercenary newMerc)
 {
     MercGraphic newCharGraphic = Instantiate(mercGraphicPrefab);
     newCharGraphic.AssignMerc(newMerc,playerHandManager);
     newCharGraphic.transform.SetParent(mercsGroup, false);
     mercGraphics.Add(newCharGraphic);
     newCharGraphic.SetStartArmor();
 }
Exemplo n.º 13
0
        public void OverloadedUnitHasCorrectTeam()
        {
            Unit mercenaryOne   = new Mercenary(Team.BLUE, 20, 16, 9, 8, 7, 6, true);
            Team expectedResult = Team.BLUE;
            Team actualResult   = mercenaryOne.GetTeamColor();

            Assert.AreEqual(expectedResult, actualResult);
        }
Exemplo n.º 14
0
        public void OverloadedUnitHasCorrectCurrentHealth()
        {
            Unit mercenaryOne   = new Mercenary(Team.BLUE, 20, 16, 9, 8, 7, 6, true);
            byte expectedResult = 16;
            byte actualResult   = mercenaryOne.m_CurrentHealth;

            Assert.AreEqual(expectedResult, actualResult);
        }
Exemplo n.º 15
0
 public void UpdateBehaviour(Mercenary merc)
 {
     behaviour = merc.Copy();
     if (waiting != null)
     {
         waiting.UpdateBehaviour(behaviour.Copy());
     }
 }
Exemplo n.º 16
0
 public void UpdateBehaviour(Mercenary merc)
 {
     if (!inPlay())
     {
         behaviour = merc.Copy();
         behaviour.Initialize();
         GetComponent <MercenaryRepresenter>().SetBehaviour(behaviour);
     }
 }
Exemplo n.º 17
0
 public void AssignMerc(Mercenary newMerc,HandManager newHandManager)
 {
     base.AssignCharacter(newMerc);
     //handManager.EnableAttachedHandDisplayer(this);
     portrait.color = newMerc.GetColor();
     classText.text = newMerc.GetClass();
     assignedMerc = newMerc;
     handManager = newHandManager;
 }
    Mercenary GenerateMercenary(SpawnableMercenary smerc)
    {
        Mercenary toReturn   = smerc.merc.Copy();
        float     difficulty = SCALING_FACTOR * MarketManager.instance.GetDifficulty();

        toReturn.attack      += Mathf.RoundToInt(difficulty * smerc.atkScaling);
        toReturn.health      += Mathf.RoundToInt(difficulty * smerc.hlthScaling);
        toReturn.attackSpeed += Mathf.RoundToInt(difficulty * smerc.spdScaling);
        return(toReturn);
    }
Exemplo n.º 19
0
 private void Start()
 {
     soldierIncrease = maxSoldiers + 2;
     AIState         = AIStateManager.Instance;
     playerTownHall  = GameObject.Find("TownHall(Clone)");
     aiTownHall      = GameObject.Find("EnemyTownHall(Clone)");
     mercenary       = GetComponent <Mercenary>();
     animator        = GetComponent <Animator>();
     ConfigureMercenarySettings();
 }
Exemplo n.º 20
0
    public MercTrayElement AddMercTrayElement(Mercenary toAdd)
    {
        GameObject summoned = GameObject.Instantiate(mercTrayElementPrefab,
                                                     Vector3.zero,
                                                     Quaternion.identity,
                                                     transform);
        MercTrayElement elem = summoned.GetComponentInChildren <MercTrayElement>();

        elem.behaviour = toAdd.Copy();
        return(elem);
    }
Exemplo n.º 21
0
 void RandomSummon(Mercenary merc)
 {
     foreach (MercSlot slot in MercSlot.enemySlots.Values)
     {
         if (!slot.occupied)
         {
             Summon(merc, slot);
             return;
         }
     }
 }
 bool RandomSummon(Mercenary merc)
 {
     foreach (MercSlot slot in MercSlot.enemySlots.Values)
     {
         if (!slot.occupied)
         {
             Summon(merc, slot);
             return(true);
         }
     }
     return(false);
 }
    void Summon(Mercenary merc, MercSlot slot)
    {
        GameObject           instance = GameObject.Instantiate(mercElementPrefab, Vector3.zero, Quaternion.identity);
        MercenaryRepresenter mr       = instance.GetComponent <MercenaryRepresenter>();

        slot.occupying = merc.Copy();
        mr.SetBehaviour(slot.occupying);
        mr.transform.SetParent(slot.transform);
        mr.transform.localPosition = new Vector3(0, 0, 0);
        slot.attackProgress        = -1000.0f;
        StartCoroutine(Deploy(slot));
    }
Exemplo n.º 24
0
    public static Mercenary Read(IBitReader reader)
    {
        var mercenary = new Mercenary
        {
            IsDead     = reader.ReadUInt16(),
            Id         = reader.ReadUInt32(),
            NameId     = reader.ReadUInt16(),
            TypeId     = reader.ReadUInt16(),
            Experience = reader.ReadUInt32()
        };

        return(mercenary);
    }
Exemplo n.º 25
0
    public static MercenaryItemList Read(IBitReader reader, Mercenary mercenary, uint version)
    {
        var mercenaryItemList = new MercenaryItemList
        {
            Header = reader.ReadUInt16()
        };

        if (mercenary.Id != 0)
        {
            mercenaryItemList.ItemList = ItemList.Read(reader, version);
        }
        return(mercenaryItemList);
    }
Exemplo n.º 26
0
    public void OnClick()
    {
        if (gData.currentItem != null && gData.currentItem.Item.useable) {
            if (gData.currentItem.Item.ct == Item.CommonType.CONSUME) {
                //对当前角色使用道具,此处From参数没有意义
                List<BattleObj> toList = new List<BattleObj> ();
                toList.Add (c);
                gData.currentItem.Item.doSth (new BattleObj (), toList);
                //用完减少数量并移除
                gData.currentItem.Num--;
                uiBag.SendMessage ("ItemUseComplete");
            } else if (gData.currentItem.Item.ct == Item.CommonType.MERCENARY) {
                if (gameObject.transform.parent.name.Contains ("Ass")) {
                    //更换助手
                    Mercenary m = (Mercenary)(gData.currentItem.Item);
                    //如果点击的位置上有助手,替换,否则直接参战
                    if (GetComponent<Image> ().sprite.name.Equals ("no_ass")) {
                        gData.characterList.Add (m.c);
                        gData.currentItem.Num--;
                    } else {
                        Character posC = gData.characterList [int.Parse (transform.parent.name.Split (new char[]{'_'}) [1])];

                        gData.characterList [int.Parse (transform.parent.name.Split (new char[]{'_'}) [1])] = m.c;

                        List<Baggrid> bgList = gData.characterList [0].BgList;

                        for (int i=0; i<bgList.Count; i++) {
                            if (bgList [i].Item.name.Equals (m.name)) {
                                bgList [i].Item = new Mercenary (posC);
                                break;
                            }
                        }
                    }
                    uiBag.SendMessage ("ItemUseComplete");
                }
            }
        } else {
            if (gameObject.transform.parent.name.Contains ("Ass") && GetComponent<UI_Player> ().c != null) {
                Character c = GetComponent<UI_Player> ().c;
                Mercenary m = new Mercenary (c);
                m.assPos = int.Parse (transform.parent.name.Split (new char[]{'_'}) [1]);
                itemInfo = GameObject.FindGameObjectWithTag ("UI").transform.FindChild ("ItemInfo").gameObject;
                itemInfo.SetActive (true);
                itemInfo.transform.FindChild ("Pic").GetComponent<Image> ().sprite = Resources.Load <Sprite> (m.prefabName);
                itemInfo.transform.FindChild ("Note").GetComponent<Text> ().text = m.note;
                Text buttonText = itemInfo.transform.FindChild ("UseButton").FindChild ("Text").GetComponent<Text> ();
                buttonText.text = StringCollection.LEAVETEAM;
                gData.currentItem = new Baggrid (m, 1);
            }
        }
    }
Exemplo n.º 27
0
        public static void Execute()
        {
            var mercenary = new Mercenary();
            var citizen   = new Citizen();

            var firstNpc  = new Npc(mercenary);
            var secondNpc = new Npc(citizen);

            Console.WriteLine("First NPC");
            firstNpc.Communicate();
            firstNpc.Threaten();
            Console.WriteLine("Second NPC");
            secondNpc.Communicate();
            secondNpc.Threaten();
        }
Exemplo n.º 28
0
    public Mercenary Copy()
    {
        Mercenary toReturn = (Mercenary)ScriptableObject.CreateInstance("Mercenary");

        toReturn.attack           = attack;
        toReturn.attackSpeed      = attackSpeed;
        toReturn.health           = health;
        toReturn.onAttack         = onAttack;
        toReturn.onAttackArgs     = onAttackArgs;
        toReturn.onUpdate         = onUpdate;
        toReturn.onUpdateArgs     = onUpdateArgs;
        toReturn.onTakeDamage     = onTakeDamage;
        toReturn.onTakeDamageArgs = onTakeDamageArgs;
        toReturn.sprite           = sprite;

        return(toReturn);
    }
Exemplo n.º 29
0
        private string getHeroName(int option)
        {
            string heroName;

            switch (option)
            {
            case 1:
                heroName = new Crusader().getHeroName();
                break;

            case 2:
                heroName = new Enchantress().getHeroName();
                break;

            case 3:
                heroName = new HalfGoblin().getHeroName();
                break;

            case 4:
                heroName = new Knight().getHeroName();
                break;

            case 5:
                heroName = new Mercenary().getHeroName();
                break;

            case 6:
                heroName = new Minstrel().getHeroName();
                break;

            case 7:
                heroName = new Occultist().getHeroName();
                break;

            case 8:
                heroName = new Spellsword().getHeroName();
                break;

            default:
                heroName = "";
                break;
            }

            return(heroName);
        }
Exemplo n.º 30
0
    public void SaveGameDataMercenary()
    {
        var request = new SaveGameDataRequest();

        if (null != userData.getMercenaryDataDic)
        {
            foreach (var pair in userData.getMercenaryDataDic)
            {
                Mercenary mercenary = new Mercenary();
                mercenary.MercenaryName  = pair.Key;
                mercenary.MercenaryLevel = pair.Value.level;

                request.Mercenaries.Add(mercenary);
            }
        }

        SaveGameDataModel.Instance.CTosSaveGameDataRequest(request);
    }
Exemplo n.º 31
0
    public void SaveGameData(ITEM_TYPE itemType   = ITEM_TYPE.None, long itemCount = 0,
                             string mercenaryName = "", int mercenaryLevel         = 0,
                             bool saveStage       = false, bool saveUpgradePlayer  = false)
    {
        var request = new SaveGameDataRequest();

        if (ITEM_TYPE.None != itemType)
        {
            Item item = new Item();
            item.ItemType  = itemType;
            item.ItemName  = GetItemName(itemType);
            item.ItemCount = userData.userCurrency.userCoin;

            request.Items.Add(item);
        }

        if (false == mercenaryName.Equals(""))
        {
            Mercenary mercenary = new Mercenary();
            mercenary.MercenaryName  = mercenaryName;
            mercenary.MercenaryLevel = mercenaryLevel;

            request.Mercenaries.Add(mercenary);
        }

        if (saveStage)
        {
            request.Stage            = new Stage();
            request.Stage.StageNum   = userData.stageNum;
            request.Stage.StageScore = userData.score;
        }

        if (saveUpgradePlayer)
        {
            request.UpgradePlayer                   = new Msg.UpgradePlayer();
            request.UpgradePlayer.PowerLevel        = userData.upgradePlayer.powerLevel;
            request.UpgradePlayer.AttackSpeedLevel  = userData.upgradePlayer.attackSpeedLevel;
            request.UpgradePlayer.CriticalLevel     = userData.upgradePlayer.criticalLevel;
            request.UpgradePlayer.BuffDurationLevel = userData.upgradePlayer.buffDurationLevel;
            request.UpgradePlayer.FreeCoinLevel     = userData.upgradePlayer.freeCoinLevel;
        }

        SaveGameDataModel.Instance.CTosSaveGameDataRequest(request);
    }
Exemplo n.º 32
0
 private void RefreshMarcenaryPawnGenOptions()
 {
     foreach (MercenarySquadFC mercenarySquadFc in militaryUtil.mercenarySquads)
     {
         List <Mercenary> newMercs = new List <Mercenary>();
         foreach (Mercenary mercenary in mercenarySquadFc.mercenaries)
         {
             if (!Allows(mercenary.pawn.kindDef.race))
             {
                 Mercenary merc = mercenary;
                 mercenarySquadFc.createNewPawn(ref merc, faction.pawnGroupMakers[0].options.RandomElement().kind);
                 newMercs.Add(merc);
             }
             else
             {
                 newMercs.Add(mercenary);
             }
         }
         mercenarySquadFc.mercenaries = newMercs;
     }
 }
Exemplo n.º 33
0
    private D2S(IBitReader reader)
    {
        Header         = Header.Read(reader);
        ActiveWeapon   = reader.ReadUInt32();
        Name           = reader.ReadString(16);
        Status         = Status.Read(reader.ReadByte());
        Progression    = reader.ReadByte();
        Unk0x0026      = reader.ReadBytes(2);
        ClassId        = reader.ReadByte();
        Unk0x0029      = reader.ReadBytes(2);
        Level          = reader.ReadByte();
        Created        = reader.ReadUInt32();
        LastPlayed     = reader.ReadUInt32();
        Unk0x0034      = reader.ReadBytes(4);
        AssignedSkills = Enumerable.Range(0, 16).Select(_ => Skill.Read(reader)).ToArray();
        LeftSkill      = Skill.Read(reader);
        RightSkill     = Skill.Read(reader);
        LeftSwapSkill  = Skill.Read(reader);
        RightSwapSkill = Skill.Read(reader);
        Appearances    = Appearances.Read(reader);
        Location       = Locations.Read(reader);
        MapId          = reader.ReadUInt32();
        Unk0x00af      = reader.ReadBytes(2);
        Mercenary      = Mercenary.Read(reader);
        RealmData      = reader.ReadBytes(140);
        Quests         = QuestsSection.Read(reader);
        Waypoints      = WaypointsSection.Read(reader);
        NPCDialog      = NPCDialogSection.Read(reader);
        Attributes     = Attributes.Read(reader);

        ClassSkills    = ClassSkills.Read(reader, ClassId);
        PlayerItemList = ItemList.Read(reader, Header.Version);
        PlayerCorpses  = CorpseList.Read(reader, Header.Version);

        if (Status.IsExpansion)
        {
            MercenaryItemList = MercenaryItemList.Read(reader, Mercenary, Header.Version);
            Golem             = Golem.Read(reader, Header.Version);
        }
    }
Exemplo n.º 34
0
		public MountTarget( Mobile from, Mercenary merc ) : base( 1, false, TargetFlags.None )
		{
			m_Merc = merc;
			from.SendMessage( "Choose a mount you would like to place " + m_Merc.Name + " on." );
		}
Exemplo n.º 35
0
    public void InitBag(string shopType)
    {
        if (!init) {
            //init all grid
            for (int i=0; i<gridRow; i++) {
                for (int j=0; j<gridCol; j++) {
                    GameObject gridO = Instantiate (grid, new Vector3 (firstX + j * (border + gridSize), firstY - i * (border + gridSize), 0), Quaternion.identity) as GameObject;
                    gridO.transform.SetParent (transform);
                    grids.Add (gridO);
                }
            }

            init = true;
        }

        for (int i=0; i<grids.Count; i++) {
            if (grids [i].transform.childCount > 0)
                Destroy (grids [i].transform.GetChild (0).gameObject);
        }

        List<Baggrid> bgList = new List<Baggrid> ();

        //获得商店物品列表
        switch (shopType) {
        case "item":
            HealthItem item = new HealthItem (Item.RangeType.SINGLE, 10, "1", "单体治疗药剂", 50);
            Baggrid bg = new Baggrid (item, 0);
            bgList.Add (bg);

            Equipment e2 = new Equipment (2, 3, 0, 0, Equipment.EquipPos.BODY, "3", "学者的幻想", 1, 500);
            Baggrid bg2 = new Baggrid (e2, 0);
            bgList.Add (bg2);

            break;
        case "mercenary":

            Character c = new Character (0, 500, 500, 0, 0, "潘子", false, 500, 500, ProFactory.getPro ("Settler", "100"), 1, 0, null, -1);
            Mercenary m = new Mercenary (c);

            Baggrid bg3 = new Baggrid (m, 0);
            bgList.Add (bg3);

            break;
        }

        for (int i=0; i<bgList.Count; i++) {
            Baggrid bg = bgList [i];

            GameObject itemO = Instantiate (itemPrefab, new Vector3 (grids [i].transform.position.x, grids [i].transform.position.y, 0), Quaternion.identity) as GameObject;
            itemO.GetComponent<Image> ().sprite = Resources.Load <Sprite> (bg.Item.prefabName);
            itemO.GetComponent<UI_Item> ().Bg = bg;
            itemO.GetComponent<UI_Item> ().fromShop = true;

            string num = bg.Num.ToString ();

            if (num.Equals ("0")) {
                num = "";
            }

            itemO.transform.FindChild ("Num").GetComponent<Text> ().text = num;
            itemO.transform.SetParent (grids [i].transform);
        }
    }
Exemplo n.º 36
0
		public static void DoOnTarget( Mobile from, object o, Mercenary merc )
		{
			EtherealMount ethy = o as EtherealMount;
			if ( null != ethy )
			{
				if ( null != ethy.Rider )
					from.SendMessage( "This ethereal mount is already in use by someone else." );

				else if ( !ethy.IsChildOf( from.Backpack ) )
					from.SendMessage( "The ethereal mount must be in your pack for you to use it." );
				else
					ethy.Rider = merc;
			}
			else
			{
				BaseMount mount = o as BaseMount;

				if ( null == mount )
					from.SendMessage( "That is not a mount." );

				else if ( null != mount.Rider )
					from.SendMessage( "This mount is already in use by someone else." );

				else if ( mount.ControlMaster != from )
					from.SendMessage( "You do not own this mount." );
				else
					mount.Rider = merc;
			}
		}