Example #1
0
        public override void TileProc(int aX, int aY, ref bool refContinue)
        {
            NWField f = Field;

            Step(aX, aY);

            if (f.IsBarrier(aX, aY))
            {
                refContinue = false;
            }
            else
            {
                NWCreature c = (NWCreature)f.FindCreature(aX, aY);
                if (c != null && c.HasAffect(EffectID.eid_Death))
                {
                    RaceID race = c.Entry.Race;
                    if (race == RaceID.crDefault || race == RaceID.crHuman)
                    {
                        if (c.IsPlayer)
                        {
                            c.Death(BaseLocale.GetStr(RS.rs_KilledByDeathRay), null);
                        }
                        else
                        {
                            c.Death(BaseLocale.Format(RS.rs_TheXIsDestroyed, new object[] { c.Name }), null);
                        }
                    }
                }
            }
        }
Example #2
0
        public void RecruitMercenary(NWCreature collocutor, NWCreature mercenary, bool byMoney)
        {
            bool res = true;

            if (byMoney)
            {
                int hPrice = (int)mercenary.HirePrice;
                if (Money < hPrice)
                {
                    res = false;
                    GlobalVars.nwrWin.ShowText(GlobalVars.nwrWin, BaseLocale.GetStr(RS.rs_NoMoney));
                }
                else
                {
                    SubMoney(hPrice);
                    collocutor.AddMoney(hPrice);
                }
            }

            if (res)
            {
                mercenary.IsMercenary = true;

                int      dist = MathHelper.Distance(Location, mercenary.Location);
                ExtPoint pt   = GetNearestPlace(3, true);
                if ((dist > (int)Survey) && (!pt.IsEmpty))
                {
                    mercenary.CheckTile(false);
                    mercenary.SetPos(pt.X, pt.Y);
                    mercenary.CheckTile(true);
                }
            }
        }
Example #3
0
        private string GetPrefix(ItemKind kind)
        {
            string prefix = BaseLocale.GetStr(fEntry.Prefix);

            if (GlobalVars.nwrWin.LangExt.Equals("ru"))
            {
                Gender wordGender = Gender.gUndefined;
                switch (kind)
                {
                case ItemKind.ik_Potion:
                    wordGender = Gender.gNeutral;
                    break;

                case ItemKind.ik_Ring:
                    wordGender = Gender.gNeutral;
                    break;

                case ItemKind.ik_Wand:
                    wordGender = Gender.gFemale;
                    break;

                case ItemKind.ik_Scroll:
                    wordGender = Gender.gMale;
                    break;
                }

                prefix = Grammar.morphAdjective(prefix, Case.cNominative, Number.nSingle, wordGender);
            }

            return(prefix);
        }
Example #4
0
        protected override void DoPaintEvent(BaseScreen screen)
        {
            base.DoPaintEvent(screen);

            string nm_self = GlobalVars.nwrGame.Player.Name;
            string nm_col  = fCollocutor.Name;

            screen.SetTextColor(Colors.Gold, true);

            ExtRect pakRt = fPackList.Bounds; // 2
            ExtRect colRt = fColList.Bounds;  // 0

            int lcx = pakRt.Left + (pakRt.Width - CtlCommon.SmFont.GetTextWidth(nm_self)) / 2;
            int rcx = colRt.Left + (colRt.Width - CtlCommon.SmFont.GetTextWidth(nm_col)) / 2;

            int lcy = pakRt.Top - CtlCommon.SmFont.Height;
            int rcy = colRt.Top - CtlCommon.SmFont.Height;

            screen.DrawText(lcx, lcy, nm_self, 0);
            screen.DrawText(rcx, rcy, nm_col, 0);

            screen.DrawText(pakRt.Left, pakRt.Bottom + 3, BaseLocale.GetStr(RS.rs_Weight) + ": " + string.Format("{0:F2} / {1:F2}", new object[] {
                GlobalVars.nwrGame.Player.TotalWeight,
                GlobalVars.nwrGame.Player.MaxItemsWeight
            }), 0);
            screen.DrawText(colRt.Left, colRt.Bottom + 3, BaseLocale.GetStr(RS.rs_Weight) + ": " + string.Format("{0:F2} / {1:F2}", new object[] {
                fCollocutor.TotalWeight,
                fCollocutor.MaxItemsWeight
            }), 0);
        }
        public string CheckSmithyTools()
        {
            string    result = "";
            ItemsList items  = fPlayer.Items;

            if (items.FindByCLSID(GlobalVars.iid_Anvil) == null)
            {
                result += BaseLocale.GetStr(RS.rs_NoAnvil);
            }
            if (items.FindByCLSID(GlobalVars.iid_Tongs) == null)
            {
                if (result.CompareTo("") != 0)
                {
                    result += ", ";
                }
                result += BaseLocale.GetStr(RS.rs_NoTongs);
            }
            if (items.FindByCLSID(GlobalVars.iid_Wand_Fire) == null)
            {
                if (result.CompareTo("") != 0)
                {
                    result += ", ";
                }
                result += BaseLocale.GetStr(RS.rs_NoWand_Fire);
            }
            return(result);
        }
Example #6
0
        protected override void DoPaintEvent(BaseScreen screen)
        {
            base.DoPaintEvent(screen);

            Player player = GlobalVars.nwrGame.Player;

            int           x     = 14;  // 3
            int           x2    = 222; // 4
            int           x3    = 431; // 5
            CreatureState state = player.State;

            string ps = "";

            if (state != CreatureState.Alive)
            {
                if (state == CreatureState.Undead)
                {
                    ps = BaseLocale.GetStr(RS.rs_Undead);
                }
            }
            else
            {
                ps = BaseLocale.GetStr(RS.rs_Alive);
            }

            int mpr;

            if (player.MPMax == 0)
            {
                mpr = 0;
            }
            else
            {
                mpr = ((int)Math.Round(((float)player.MPCur / player.MPMax) * 100.0f));
            }

            screen.SetTextColor(Colors.Gold, true);
            screen.DrawText(x, 8, player.Name, 0);
            screen.DrawText(x, 24, BaseLocale.GetStr(RS.rs_Race) + ": " + player.Race, 0);
            screen.DrawText(x, 40, BaseLocale.GetStr(RS.rs_Sex) + ": " + BaseLocale.GetStr(StaticData.dbSex[(int)player.Sex].NameRS), 0);
            screen.DrawText(x, 56, BaseLocale.GetStr(RS.rs_Level) + ": " + Convert.ToString(player.Level), 0);
            screen.DrawText(x, 72, BaseLocale.GetStr(RS.rs_Experience) + ": " + Convert.ToString(player.Experience), 0);
            screen.DrawText(x, 88, BaseLocale.GetStr(RS.rs_Morality) + ": " + player.GetMoralityName(), 0);
            screen.DrawText(x, 104, BaseLocale.GetStr(RS.rs_Perception) + ": " + Convert.ToString((int)player.Perception), 0);
            screen.DrawText(x2, 8, ps, 0);
            screen.DrawText(x2, 24, BaseLocale.GetStr(RS.rs_Constitution) + ": " + Convert.ToString(player.Constitution), 0);
            screen.DrawText(x2, 40, BaseLocale.GetStr(RS.rs_Strength) + ": " + Convert.ToString(player.Strength), 0);
            screen.DrawText(x2, 56, BaseLocale.GetStr(RS.rs_Speed) + ": " + Convert.ToString(player.Speed), 0);
            screen.DrawText(x2, 72, BaseLocale.GetStr(RS.rs_Luck) + ": " + Convert.ToString(player.Luck), 0);
            screen.DrawText(x2, 88, BaseLocale.GetStr(RS.rs_Armor) + ": " + Convert.ToString(player.ArmorClass), 0);
            screen.DrawText(x3, 24, BaseLocale.GetStr(RS.rs_HP) + ": " + Convert.ToString((int)(Math.Round(((float)player.HPCur / (float)player.HPMax_Renamed) * 100.0f))) + " %", 0);
            screen.DrawText(x3, 40, BaseLocale.GetStr(RS.rs_MP) + ": " + Convert.ToString(mpr) + " %", 0);
            screen.DrawText(x3, 56, BaseLocale.GetStr(RS.rs_Satiety) + ": " + Convert.ToString((int)(Math.Round(((float)player.Satiety / (float)Player.SatietyMax) * 100.0f))) + " %", 0);
            screen.DrawText(x3, 72, BaseLocale.GetStr(RS.rs_Damage) + ": " + Convert.ToString(player.DBMin) + "-" + Convert.ToString(player.DBMax), 0);
            screen.DrawText(x3, 88, BaseLocale.GetStr(RS.rs_Dexterity) + ": " + Convert.ToString((int)player.Dexterity), 0);

            screen.DrawText(14, 130, BaseLocale.GetStr(RS.rs_Diagnosis), 0);
            screen.DrawText(222, 130, BaseLocale.GetStr(RS.rs_Skills), 0);
            screen.DrawText(431, 130, BaseLocale.GetStr(RS.rs_Abilities), 0);
        }
        public override void ChangeLang()
        {
            base.ChangeLang();

            fKeyList.Hint = BaseLocale.GetStr(RS.rs_HKHint);
            UpdateKeyList();
        }
Example #8
0
        protected override void DoPaintEvent(BaseScreen screen)
        {
            base.DoPaintEvent(screen);

            string s = BaseLocale.GetStr(RS.rs_AdventurerName);

            screen.SetTextColor(Colors.Gold, true);
            screen.DrawText((Width - CtlCommon.SmFont.GetTextWidth(s)) / 2, fEditBox.Top - CtlCommon.SmFont.Height, s, 0);
            s           = BaseLocale.GetStr(RS.rs_Apprenticeship);
            screen.Font = CtlCommon.BgFont;
            screen.SetTextColor(Colors.Gold, true);
            screen.DrawText((Width - CtlCommon.BgFont.GetTextWidth(s)) / 2, 60, s, 0);
            screen.Font = CtlCommon.SmFont;

            for (var pa = SysCreature.sc_First; pa <= SysCreature.sc_Last; pa++)
            {
                SysCreatureRec sc = StaticData.dbSysCreatures[(int)pa];

                s = BaseLocale.GetStr(sc.Name);
                ExtRect   r   = sc.ScrRect;
                BaseImage img = fImages[(int)pa];
                screen.DrawImage(r.Left, r.Top, 0, 0, (int)img.Width, (int)img.Height, img, 255);
                screen.DrawText(r.Left + (r.Width - CtlCommon.SmFont.GetTextWidth(s)) / 2, r.Top - CtlCommon.SmFont.Height, s, 0);
            }
        }
Example #9
0
        private static string GetItemFullName(object itemObj)
        {
            float        iWeight   = 0.0f;
            MaterialKind iMaterial = MaterialKind.mk_None;
            string       result    = "";

            if (itemObj is Item)
            {
                Item item = (Item)itemObj;
                iWeight   = item.Weight;
                iMaterial = item.Material;
                result    = item.Name;
            }
            else
            {
                if (itemObj is ItemEntry)
                {
                    ItemEntry itemEntry = (ItemEntry)itemObj;
                    iWeight   = itemEntry.Weight;
                    iMaterial = itemEntry.Material;
                    result    = itemEntry.Name;
                }
            }

            result = result + "\r\n" + BaseLocale.GetStr(RS.rs_Weight) + ": " + Convert.ToString((double)iWeight) + "; " + BaseLocale.GetStr(StaticData.dbMaterialKind[(int)iMaterial].Name);

            return(result);
        }
Example #10
0
        public override void TileProc(int aX, int aY, ref bool refContinue)
        {
            NWField f    = Field;
            NWTile  tile = (NWTile)f.GetTile(aX, aY);

            Step(aX, aY);

            if (f.IsBarrier(aX, aY))
            {
                if (tile.ForeBase == PlaceID.pid_Tree)
                {
                    tile.Foreground = PlaceID.pid_DeadTree;
                    string nm = BaseLocale.GetStr(StaticData.dbPlaces[5].NameRS);
                    GlobalVars.nwrWin.ShowText(Creature, BaseLocale.Format(RS.rs_TheXIsMelted, new object[] { nm }));
                }
                refContinue = false;
            }
            else
            {
                NWCreature c = (NWCreature)f.FindCreature(aX, aY);
                if (c != null && c.HasAffect(EffectID.eid_Flaying))
                {
                    c.ApplyDamage(RandomHelper.GetBoundedRnd(13, 36), DamageKind.dkRadiation, null, BaseLocale.Format(RS.rs_TheXIsMelted, new object[] { c.Name }));
                }
            }
        }
Example #11
0
        private void OnBtnSmithery(object sender)
        {
            int idx = fResList.SelIndex;

            if (idx < 0)
            {
                return;
            }

            int id;

            if (idx == 0)
            {
                id = GlobalVars.iid_Ingot;
            }
            else
            {
                id = ((ItemEntry)fResList.Items.GetItem(idx).Data).GUID;
            }

            int res = GlobalVars.nwrGame.Player.Craft.ForgeItem(fIngredients, id);

            if (res != Craft.RC_Ok)
            {
                if (res == Craft.RC_DifferentMetals)
                {
                    // dummy
                }
            }
            else
            {
                fResList.Items.Add(BaseLocale.GetStr(RS.rs_MeltInIngot), null);
                UpdateView();
            }
        }
        private void ShowTopic(TopicEntry topic, bool isRoot)
        {
            if (topic == null)
            {
                AddText(BaseLocale.GetStr(RS.rs_NothingToSay));
            }
            else
            {
                if (isRoot)
                {
                    string qst = topic.Phrase;
                    if (!string.IsNullOrEmpty(qst))
                    {
                        AddText(qst);
                    }
                }

                if (CheckScript(topic.Action) && !string.IsNullOrEmpty(topic.Answer))
                {
                    AddText(topic.Answer);

                    for (int i = 0; i < topic.TopicsCount; i++)
                    {
                        TopicEntry subTopic = topic.GetTopic(i);

                        if (CheckScript(subTopic.Condition))
                        {
                            AddText("@" + subTopic.Phrase + "@ ");
                        }
                    }
                }
            }
        }
        protected override void DoShowEvent()
        {
            base.DoShowEvent();

            fServices.Items.BeginUpdate();
            fServices.Items.Clear();

            SentientBrain colBrain = (SentientBrain)fCollocutor.Brain;
            Services      avail    = colBrain.AvailableServices;

            for (var si = Service.ds_First; si <= Service.ds_Last; si++)
            {
                Service srv = (Service)(si);
                if (avail.Contains(srv))
                {
                    fServices.Items.Add(BaseLocale.GetStr(StaticData.dbDialogServices[(int)srv].NameRes), srv);
                }
            }

            fServices.Items.EndUpdate();

            UpdateConversations();

            GlobalVars.nwrWin.SetScriptVar("NPC", fCollocutor);
            GlobalVars.nwrWin.SetScriptVar("dialog", this);

            GlobalVars.nwrWin.DoEvent(EventID.event_DialogBegin, GlobalVars.nwrGame.Player, fCollocutor, null);
        }
Example #14
0
        public string GetMoralityName()
        {
            string result = "";

            if (Morality >= 50)
            {
                result = BaseLocale.GetStr(RS.rs_MoralityHigh);
            }
            else
            {
                if (Morality < 50)
                {
                    result = BaseLocale.GetStr(RS.rs_MoralityAverage);
                }
                else
                {
                    if (Morality <= 0)
                    {
                        result = BaseLocale.GetStr(RS.rs_MoralityLow);
                    }
                    else
                    {
                        if (Morality <= -50)
                        {
                            result = BaseLocale.GetStr(RS.rs_MoralityAbsent);
                        }
                    }
                }
            }
            return(result);
        }
        protected override void DoPaintEvent(BaseScreen screen)
        {
            base.DoPaintEvent(screen);

            int ax = 8;
            int ay = 8;

            screen.DrawImage(ax, ay, 0, 0, (int)fImage.Width, (int)fImage.Height, fImage, 255);

            screen.Font = CtlCommon.BgFont;
            screen.DrawText(ax + 40, ay + 25, BaseLocale.GetStr(RS.rs_WorldsTree), 0);
            screen.Font = CtlCommon.SmFont;

            int num = GlobalVars.nwrGame.LayersCount;

            for (int i = 0; i < num; i++)
            {
                NWLayer    layer = GlobalVars.nwrGame.GetLayer(i);
                LayerEntry lre   = layer.Entry;

                for (int y = 0; y < layer.H; y++)
                {
                    for (int x = 0; x < layer.W; x++)
                    {
                        if (layer.GetField(x, y).Visited)
                        {
                            GlobalVars.nwrWin.Resources.DrawImage(screen,
                                                                  ax + lre.MSX + (x << 5), ay + lre.MSY + y * 30,
                                                                  lre.IconsIndex + (y * lre.W + x), 255);
                        }
                    }
                }
            }

            Player     player     = GlobalVars.nwrGame.Player;
            LayerEntry layerEntry = ((LayerEntry)GlobalVars.nwrDB.GetEntry(player.LayerID));

            if (fMapCursor)
            {
                NWField  fld = (NWField)player.CurrentMap;
                ExtPoint f   = fld.Coords;
                GlobalVars.nwrWin.Resources.DrawImage(screen,
                                                      ax + layerEntry.MSX + (f.X << 5), ay + layerEntry.MSY + f.Y * 30,
                                                      StaticData.dbItfElements[(int)ItfElement.id_Cursor].ImageIndex, 255);
            }

            if (fMapHint.CompareTo("") != 0)
            {
                int tw = CtlCommon.SmFont.GetTextWidth(fMapHint);
                CtlCommon.SmFont.Color = Colors.Navy;

                //screen.drawText(ax + 304 + ((288 - tw) / 2), ay + 410, this.fMapHint, 0);
                screen.DrawText(ax + 58 + ((582 - tw) / 2), ay + 445, fMapHint, 0);
            }
        }
Example #16
0
        protected override void DoPaintEvent(BaseScreen screen)
        {
            try {
                base.DoPaintEvent(screen);

                string eq;
                if (fContainer == null)
                {
                    eq = BaseLocale.GetStr(RS.rs_ItemsUsed);
                }
                else
                {
                    eq = fContainer.Name;
                }
                Player player = GlobalVars.nwrGame.Player;

                int debt;
                if (Collocutor == null)
                {
                    debt = 0;
                }
                else
                {
                    debt = player.GetDebt(Collocutor.Name);
                }

                screen.SetTextColor(Colors.Gold, true);

                ExtRect pakRt = fPackList.Bounds;  // 2
                ExtRect eqpRt = fEquipList.Bounds; // 0
                ExtRect outRt = fOutList.Bounds;   // 1

                int lcx = pakRt.Left + (pakRt.Width - CtlCommon.SmFont.GetTextWidth(BaseLocale.GetStr(RS.rs_Equipment))) / 2;
                int rcx = eqpRt.Left + (eqpRt.Width - CtlCommon.SmFont.GetTextWidth(eq)) / 2;
                int ocx = outRt.Left + (outRt.Width - CtlCommon.SmFont.GetTextWidth(BaseLocale.GetStr(RS.rs_Ground))) / 2;

                int lcy = pakRt.Top - CtlCommon.SmFont.Height;
                int rcy = eqpRt.Top - CtlCommon.SmFont.Height;
                int ocy = outRt.Top - CtlCommon.SmFont.Height;

                screen.DrawText(lcx, lcy, BaseLocale.GetStr(RS.rs_Equipment), 0);
                screen.DrawText(rcx, rcy, eq, 0);
                screen.DrawText(ocx, ocy, BaseLocale.GetStr(RS.rs_Ground), 0);
                screen.DrawText(outRt.Left, 368, BaseLocale.GetStr(RS.rs_Money) + ": " + Convert.ToString(player.Money), 0);
                screen.DrawText(outRt.Left, 386, BaseLocale.GetStr(RS.rs_Debt) + ": " + Convert.ToString(debt), 0);
                screen.DrawText(outRt.Left, 404, BaseLocale.GetStr(RS.rs_Weight) + ": " + string.Format("{0:F2} / {1:F2}", new object[] {
                    player.TotalWeight,
                    player.MaxItemsWeight
                }), 0);
                screen.DrawText(outRt.Left, 422, BaseLocale.GetStr(RS.rs_EquipTurns), 0);
            } catch (Exception ex) {
                Logger.Write("InventoryWindow.DoPaintTo(): " + ex.Message);
            }
        }
        private void UpdateKeyList()
        {
            fKeyList.Items.Clear();

            for (var ua = UserAction.uaFirst; ua <= UserAction.uaLast; ua++)
            {
                UserActionRec uAct = StaticData.dbUserActions[(int)ua];

                LBItem item = fKeyList.Items.Add(BaseLocale.GetStr(uAct.NameRes), null);
                string s    = BaseMainWindow.HotKeyToText(uAct.HotKey);
                item.SubItems.Add(s, null);
            }
        }
Example #18
0
        public Player(NWGameSpace space, object owner)
            : base(space, owner)
        {
            CLSID = GlobalVars.cid_Viking;
            Name  = BaseLocale.GetStr(RS.rs_Unknown);
            Sex   = CreatureSex.csMale;

            fMemory = new Memory(null);
            HalMap  = new NWField(null, null, ExtPoint.Empty);
            fFaith  = new Faith(this);
            fCraft  = new Craft(this);

            InitBrain();
        }
Example #19
0
        protected override void DoShowEvent()
        {
            base.DoShowEvent();

            fDiagnosisCtl.Items.Clear();
            fSkillsCtl.Items.Clear();
            fAbilitiesCtl.Items.Clear();

            for (var ab = AbilityID.Ab_First; ab <= AbilityID.Ab_Last; ab++)
            {
                AbilityRec abid = StaticData.dbAbilities[(int)ab];
                int        val  = GlobalVars.nwrGame.Player.GetAbility(ab);
                if (val > 0)
                {
                    fAbilitiesCtl.Items.Add(BaseLocale.GetStr(abid.Name) + " (" + Convert.ToString(val) + ")", null);
                }
            }

            for (var sk = SkillID.Sk_First; sk <= SkillID.Sk_Last; sk++)
            {
                int val = GlobalVars.nwrGame.Player.GetSkill(sk);
                if (val > 0)
                {
                    fSkillsCtl.Items.Add(BaseLocale.GetStr(StaticData.dbSkills[(int)sk].Name) + " (" + Convert.ToString(val) + ")", null);
                }
            }

            int num = GlobalVars.nwrGame.Player.Effects.Count;

            for (int i = 0; i < num; i++)
            {
                fDiagnosisCtl.Items.Add(GlobalVars.nwrGame.Player.Effects.GetItem(i).Name, null);
            }

            StringList body_diag = new StringList();

            try {
                GlobalVars.nwrGame.Player.DiagnosisBody(body_diag);

                int num2 = body_diag.Count;
                for (int i = 0; i < num2; i++)
                {
                    fDiagnosisCtl.Items.Add(body_diag[i], null);
                }
            } finally {
                body_diag.Dispose();
            }
        }
        protected override void DoPaintEvent(BaseScreen screen)
        {
            base.DoPaintEvent(screen);

            screen.SetTextColor(Colors.Gold, true);

            ExtRect r1 = fFormationList.Bounds;
            int     ml = r1.Left + (r1.Width - CtlCommon.SmFont.GetTextWidth(BaseLocale.GetStr(RS.rs_PartyFormation))) / 2;

            screen.DrawText(ml, 8, BaseLocale.GetStr(RS.rs_PartyFormation), 0);

            ExtRect r2 = fMercenariesList.Bounds;

            ml = r2.Left + (r2.Width - CtlCommon.SmFont.GetTextWidth(BaseLocale.GetStr(RS.rs_Mercenaries))) / 2;
            screen.DrawText(ml, r1.Bottom + 2, BaseLocale.GetStr(RS.rs_Mercenaries), 0);
        }
Example #21
0
        public override void TileProc(int aX, int aY, ref bool aContinue)
        {
            AuxUtils.ExStub("The ray shoots into space, a futile message to other worlds.");
            AuxUtils.ExStub("Pebbles fall on your head.");
            AuxUtils.ExStub("Pelted by a pebble");
            AuxUtils.ExStub("You bring the ceiling down.");
            AuxUtils.ExStub("You dig a pit.");
            AuxUtils.ExStub("You create a hole in Bifrost! ");
            AuxUtils.ExStub("Whoosh! ");

            Step(aX, aY);

            BaseTile tile = Field.GetTile(aX, aY);

            if (tile == null)
            {
                aContinue = false;
                return;
            }

            int fgp = tile.ForeBase;

            switch (fgp)
            {
            case PlaceID.pid_Mountain:
            case PlaceID.pid_Vulcan:
                aContinue = false;
                break;

            case PlaceID.pid_Tree:
                GlobalVars.nwrWin.ShowText(Creature, BaseLocale.GetStr(RS.rs_ThereAreNowHoles));
                break;

            case PlaceID.pid_Vortex:
            case PlaceID.pid_StairsDown:
            case PlaceID.pid_StairsUp:
            case PlaceID.pid_GStairsDown:
            case PlaceID.pid_GStairsUp:
            case PlaceID.pid_HoleDown:
            case PlaceID.pid_HoleUp:
                break;

            default:
                tile.Foreground = PlaceID.pid_Undefined;
                break;
            }
        }
        protected override void DoPaintEvent(BaseScreen screen)
        {
            base.DoPaintEvent(screen);

            CtlCommon.SmFont.Color = Colors.Gold;
            CtlCommon.BgFont.Color = Colors.Gold;

            screen.Font = CtlCommon.BgFont;

            switch (FilesMode)
            {
            case FWMODE_LOAD:
                screen.DrawText(30, 22, BaseLocale.GetStr(RS.rs_GameLoad), 0);
                break;

            case FWMODE_SAVE:
                screen.DrawText(30, 22, BaseLocale.GetStr(RS.rs_GameSave), 0);
                break;
            }

            screen.Font = CtlCommon.SmFont;

            for (int i = 0; i < MaxList; i++)
            {
                ExtRect rd = GetFileOpRect(i, MI_FILEDELETE);
                GlobalVars.nwrWin.Resources.DrawImage(screen, rd.Left, rd.Top, StaticData.dbItfElements[(int)ItfElement.id_FileDelete].ImageIndex, 255);
                ExtRect rn = GetFileOpRect(i, MI_FILENUM);
                GlobalVars.nwrWin.Resources.DrawImage(screen, rn.Left, rn.Top, StaticData.dbItfElements[(int)ItfElement.id_FileNum].ImageIndex, 255);
                int col = Colors.Navy;
                screen.SetTextColor(col, true);
                screen.DrawText(rd.Left + 34, rd.Top + 2, Convert.ToString(i), 0);
                screen.SetTextColor(Colors.Gold, true);
                screen.DrawText(rd.Left + 54, rd.Top + 2, fFiles[i].PlayerName, 0);
                screen.DrawText(rd.Left + 200, rd.Top + 2, fFiles[i].LandName, 0);

                string time;
                if (fFiles[i].SaveTime == new DateTime())
                {
                    time = "(?)";
                }
                else
                {
                    time = "(" + fFiles[i].SaveTime.ToString("yyyy.MM.dd hh:mm:ss") + ")";
                }
                screen.DrawText(rd.Left + 380, rd.Top + 2, time, 0);
            }
        }
Example #23
0
        protected override void DoPaintEvent(BaseScreen screen)
        {
            base.DoPaintEvent(screen);
            CtlCommon.SmFont.Color = Colors.Gold;

            ExtRect pakRt = fPackList.Bounds;        // 8
            ExtRect ingRt = fIngredientsList.Bounds; // 6
            ExtRect resRt = fResList.Bounds;         // 7

            int lcx = pakRt.Left + (pakRt.Width - CtlCommon.SmFont.GetTextWidth(BaseLocale.GetStr(RS.rs_Ingredients))) / 2;
            int rcx = ingRt.Left + (ingRt.Width - CtlCommon.SmFont.GetTextWidth(BaseLocale.GetStr(RS.rs_ItemsChoosed))) / 2;
            int ocx = resRt.Left + (resRt.Width - CtlCommon.SmFont.GetTextWidth(BaseLocale.GetStr(RS.rs_Result))) / 2;

            screen.DrawText(lcx, 9, BaseLocale.GetStr(RS.rs_Ingredients), 0);
            screen.DrawText(rcx, 9, BaseLocale.GetStr(RS.rs_ItemsChoosed), 0);
            screen.DrawText(ocx, 206, BaseLocale.GetStr(RS.rs_Result), 0);
        }
        private void UpdateList()
        {
            Player player = new Player(null, null);

            try {
                for (int i = 0; i < MaxList; i++)
                {
                    string fn = NWGameSpace.GetSaveFile(NWGameSpace.SAVEFILE_PLAYER, i);

                    fFiles[i]       = new GameFile();
                    fFiles[i].Exist = File.Exists(fn);
                    if (fFiles[i].Exist)
                    {
                        fFiles[i].SaveTime = File.GetLastWriteTime(fn);

                        try {
                            NWGameSpace.LoadPlayer(i, player);

                            fFiles[i].PlayerName = player.Name;

                            int fx = player.Field.X;
                            int fy = player.Field.Y;

                            LayerEntry layer    = (LayerEntry)GlobalVars.nwrDB.GetEntry(player.LayerID);
                            string     landSign = layer.GetFieldEntry(fx, fy).LandSign;

                            LandEntry land = (LandEntry)GlobalVars.nwrDB.FindEntryBySign(landSign);
                            fFiles[i].LandName = land.Name;
                        } catch (Exception ex) {
                            Logger.Write("FilesWindow.refreshList.PlayerLoad(" + fn + "): " + ex.Message);
                            fFiles[i].PlayerName = "<error>";
                            fFiles[i].LandName   = "<error>";
                        }
                    }
                    else
                    {
                        fFiles[i].PlayerName = BaseLocale.GetStr(RS.rs_PlayerUnknown);
                        fFiles[i].LandName   = "-";
                        fFiles[i].SaveTime   = new DateTime();
                    }
                }
            } finally {
                player.Dispose();
            }
        }
Example #25
0
        // FIXME: change total other functions for compatibiliy with this
        private void ChangeTile(int x, int y, ushort tileID, bool fg)
        {
            BaseTile tile = GetTile(x, y);

            if (tile != null)
            {
                if (!fg)
                {
                    tile.Background = tileID;
                }
                else
                {
                    tile.Foreground = tileID;
                }

                switch (tileID)
                {
                case PlaceID.pid_Lava:
                {
                    if (tile.ForeBase == PlaceID.pid_Tree)
                    {
                        tile.Foreground = PlaceID.pid_DeadTree;
                        GlobalVars.nwrWin.ShowText(GlobalVars.nwrWin, BaseLocale.GetStr(RS.rs_TreeBursts));
                    }

                    // ALERT: fixme, where resistances?!!
                    NWCreature cr = (NWCreature)FindCreature(x, y);
                    if (cr != null)
                    {
                        if (cr.IsPlayer)
                        {
                            GlobalVars.nwrWin.ShowText(cr, BaseLocale.GetStr(RS.rs_LavaEncasesYou));
                            cr.Death(BaseLocale.GetStr(RS.rs_EncasedInVolcanicRock), null);
                        }
                        else
                        {
                            cr.Death(BaseLocale.GetStr(RS.rs_XIsConsumedByLava), null);
                        }
                    }
                    break;
                }
                }
            }
        }
        protected override void DoShowEvent()
        {
            base.DoShowEvent();

            fFormationList.Items.BeginUpdate();
            fFormationList.Items.Clear();

            for (var pf = PartyFormation.pfFirst; pf <= PartyFormation.pfLast; pf++)
            {
                fFormationList.Items.Add(BaseLocale.GetStr(LeaderBrain.PartyFormationsRS[(int)pf]), null);
            }

            fFormationList.Items.EndUpdate();
            int idx = (int)((LeaderBrain)GlobalVars.nwrGame.Player.Brain).Formation;

            fFormationList.SelIndex = idx;
            fFormationList.Items.GetItem(idx).Checked = true;
            UpdateView();
        }
Example #27
0
        public override void LeavePlace(NWField field, NWTile tile)
        {
            try {
                base.LeavePlace(field, tile);

                if (field.LandID == GlobalVars.Land_Crossroads)
                {
                    int fg = tile.ForeBase;
                    if (fg == PlaceID.pid_cr_Disk || fg == PlaceID.pid_cr_Disk_Pressed)
                    {
                        tile.Foreground = PlaceID.pid_Undefined;
                        GlobalVars.nwrWin.ShowText(this, BaseLocale.GetStr(RS.rs_DiskFalls));
                    }
                }
            } catch (Exception ex) {
                Logger.Write("Player.leavePlace(): " + ex.Message);
                throw ex;
            }
        }
Example #28
0
        public string GetPlaceName(int x, int y)
        {
            string result = "";

            NWTile tile = (NWTile)base.GetTile(x, y);

            if (tile != null && !tile.EmptyStates)
            {
                int bg = tile.BackBase;
                int fg = tile.ForeBase;

                if (bg != PlaceID.pid_Undefined)
                {
                    result = BaseLocale.GetStr(StaticData.dbPlaces[bg].NameRS);
                    if (bg == PlaceID.pid_Liquid)
                    {
                        result = result + " (" + GlobalVars.nwrDB.GetEntry(tile.Lake_LiquidID).Name + ")";
                    }
                }

                if (fg != PlaceID.pid_Undefined)
                {
                    if (IsTrap(x, y) && tile.Trap_Discovered)
                    {
                        result = result + ", " + BaseLocale.GetStr(StaticData.dbPlaces[fg].NameRS);
                    }
                    else
                    {
                        Gate gate = FindGate(x, y);
                        if (gate != null)
                        {
                            result = result + ", " + gate.Name;
                        }
                        else
                        {
                            result = result + ", " + BaseLocale.GetStr(StaticData.dbPlaces[fg].NameRS);
                        }
                    }
                }
            }
            return(result);
        }
Example #29
0
        private void ApplyLightEffect()
        {
            int rad = (int)LightRadius;

            if (rad > 0)
            {
                CreaturesList crList = CurrentField.Creatures;
                int           num    = crList.Count;
                for (int i = 0; i < num; i++)
                {
                    NWCreature cr = crList.GetItem(i);
                    if (MathHelper.Distance(Location, cr.Location) <= rad && cr.Entry.Sign.Equals("Phausq"))
                    {
                        cr.Death(BaseLocale.GetStr(RS.rs_MonsterDestroyedByLight), null);
                    }
                }

                // TODO: message for player: \"The light burns you!\"
            }
        }
Example #30
0
        public override void TileProc(int aX, int aY, ref bool aContinue)
        {
            NWCreature self = Creature;
            NWField    f    = Field;

            if (f.IsBarrier(aX, aY))
            {
                aContinue = false;
            }
            else
            {
                NWCreature c = (NWCreature)f.FindCreature(aX, aY);
                if (c != null)
                {
                    c.ApplyDamage(RandomHelper.GetBoundedRnd(9, 17), DamageKind.dkPhysical, null, "");
                }
                else
                {
                    self.CheckTile(false);
                    self.SetPos(aX, aY);
                    self.CheckTile(true);

                    Effect ef = self.Effects.FindEffectByID(EffectID.eid_PitTrap);
                    if (ef != null)
                    {
                        self.Effects.Remove(ef);
                    }
                    else
                    {
                        ef = self.Effects.FindEffectByID(EffectID.eid_Quicksand);
                        if (ef != null)
                        {
                            self.Effects.Remove(ef);
                        }
                    }
                    GlobalVars.nwrWin.ShowText(self, BaseLocale.GetStr(RS.rs_YouPullForward));
                }
                aContinue = false;
            }
        }