コード例 #1
0
        protected override void InitBrain()
        {
            if (Prowling)
            {
                fBrain = new BeastBrain(this);
                return;
            }

            Brain = new LeaderBrain(this);
        }
コード例 #2
0
        private void OnBtnTeach(object sender)
        {
            int         idx    = fMercenariesList.SelIndex;
            LeaderBrain party  = (LeaderBrain)GlobalVars.nwrGame.Player.Brain;
            NWCreature  member = (NWCreature)party.GetMember(idx + 1);

            if (member != null)
            {
                GlobalVars.nwrWin.ShowTeachWin(member);
            }
        }
コード例 #3
0
        private void OnBtnExchange(object sender)
        {
            int         idx    = fMercenariesList.SelIndex;
            LeaderBrain party  = (LeaderBrain)GlobalVars.nwrGame.Player.Brain;
            NWCreature  member = party.Members[idx + 1];

            if (member != null)
            {
                GlobalVars.nwrWin.ShowExchangeWin(member);
            }
        }
コード例 #4
0
        public void ClearMercenaries()
        {
            if (fBrain is LeaderBrain)
            {
                LeaderBrain leader = ((LeaderBrain)fBrain);

                for (int i = leader.Members.Count - 1; i >= 1; i--)
                {
                    CreatureEntity member = leader.Members[i];
                    ((NWCreature)member).IsMercenary = false;
                }
            }
        }
コード例 #5
0
        private void UpdateView()
        {
            fMercenariesList.Items.BeginUpdate();
            fMercenariesList.Items.Clear();

            LeaderBrain party = (LeaderBrain)GlobalVars.nwrGame.Player.Brain;

            int num = party.MembersCount;

            for (int i = 1; i < num; i++)
            {
                NWCreature j = (NWCreature)party.GetMember(i);
                fMercenariesList.Items.Add(j.Name, j);
            }

            fMercenariesList.Items.EndUpdate();
        }
コード例 #6
0
        public override void TransferTo(int layerID, int fX, int fY, int pX, int pY, ExtRect area, bool obligatory, bool controlled)
        {
            try {
                NWField field        = Space.GetField(layerID, fX, fY);
                bool    withoutParty = (field.LandID == GlobalVars.Land_Crossroads) || Sail;

                bool globalMove = (LayerID != layerID || Field.X != fX || Field.Y != fY);
                bool partyMove  = (globalMove && controlled && !withoutParty);

                base.TransferTo(layerID, fX, fY, pX, pY, area, obligatory, controlled);

                /*if (globalMove) {
                 *  // ???
                 * }*/

                if (partyMove)
                {
                    try {
                        LeaderBrain party = (LeaderBrain)fBrain;
                        int         num   = party.Members.Count;
                        for (int i = 1; i < num; i++)
                        {
                            NWCreature member = party.Members[i];

                            ExtPoint pt = member.GetNearestPlace(Location, 4, true);
                            if (!pt.IsEmpty)
                            {
                                member.TransferTo(layerID, fX, fY, pt.X, pt.Y, area, obligatory, true);
                            }
                            else
                            {
                                Logger.Write("Player.transferTo().transferParty().getNearestPlace() failed");
                            }
                        }
                    } catch (Exception ex) {
                        Logger.Write("Player.transferTo().transferParty(): " + ex.Message);
                    }
                }
            } catch (Exception ex) {
                Logger.Write("Player.transferTo(): " + ex.Message);
                throw ex;
            }
        }
コード例 #7
0
        public void TeachDiscipline(NWCreature teacher, int teachableIndex, int curLev)
        {
            LeaderBrain   party = (LeaderBrain)fBrain;
            int           id    = StaticData.dbTeachable[teachableIndex].Id;
            TeachableKind kind  = StaticData.dbTeachable[teachableIndex].Kind;

            int price = (int)Space.GetTeachablePrice(teachableIndex, curLev);

            SubMoney(price);
            teacher.AddMoney(price);

            switch (kind)
            {
            case TeachableKind.Ability:
            {
                SetAbility((AbilityID)id, curLev + 1);

                int num2 = party.Members.Count;
                for (int i = 1; i < num2; i++)
                {
                    NWCreature j = party.Members[i];
                    j.SetAbility((AbilityID)id, curLev + 1);
                }
            }
            break;

            case TeachableKind.Skill:
            {
                SetSkill((SkillID)id, curLev + 1);

                int num = party.Members.Count;
                for (int i = 1; i < num; i++)
                {
                    NWCreature j = party.Members[i];
                    j.SetSkill((SkillID)id, curLev + 1);
                }
            }
            break;
            }
        }