コード例 #1
0
        private void UpdateView()
        {
            fPackList.Items.Clear();
            fIngredientsList.Items.Clear();
            fResList.Items.Clear();

            EntityList   items = GlobalVars.nwrGame.Player.Items;
            MaterialKind mat   = MaterialKind.mk_None;
            int          num   = items.Count;

            for (int i = 0; i < num; i++)
            {
                Item item = (Item)items.GetItem(i);
                mat = item.Entry.Material;
                if (mat != MaterialKind.mk_None && fIngredients.FindByGUID(item.UID) == null)
                {
                    AddListItem(fPackList, GetItemFullName(item), item, true);
                }
            }

            int num2 = fIngredients.Count;

            for (int i = 0; i < num2; i++)
            {
                Item item = (Item)fIngredients.GetItem(i);
                AddListItem(fIngredientsList, GetItemFullName(item), item, true);
            }

            float sum = 0F;
            int   res = GlobalVars.nwrGame.Player.Craft.CheckForgeIngredients(fIngredients, ref sum, ref mat);

            if (res != Craft.RC_Ok)
            {
                if (res == Craft.RC_DifferentMetals)
                {
                    fResList.Items.Add(BaseLocale.GetStr(RS.rs_DifferentMetals), null);
                }
            }
            else
            {
                ItemEntry iEntry = (ItemEntry)GlobalVars.nwrDB.GetEntry(GlobalVars.iid_Ingot);
                var       ikRec  = StaticData.dbItemKinds[(int)iEntry.ItmKind];

                if (iEntry.Material == mat)
                {
                    LBItem listItem = fResList.Items.Add(BaseLocale.GetStr(RS.rs_MeltInIngot), null);
                    listItem.ImageIndex = iEntry.ImageIndex;
                    listItem.Color      = ikRec.Color;
                }

                int num3 = GlobalVars.dbWeapon.Count;
                for (int i = 0; i < num3; i++)
                {
                    iEntry = ((ItemEntry)GlobalVars.nwrDB.GetEntry(GlobalVars.dbWeapon[i]));
                    if (iEntry.Material == mat && iEntry.Weight <= sum && !iEntry.Unique && !iEntry.Meta)
                    {
                        LBItem listItem = fResList.Items.Add(GetItemFullName(iEntry), iEntry);
                        listItem.ImageIndex = iEntry.ImageIndex;
                        listItem.Color      = ikRec.Color;
                    }
                }
            }
        }
コード例 #2
0
        public Item Alchemy(EntityList ingredients)
        {
            Item result = null;

            try {
                Item vial = (Item)fPlayer.Items.FindByCLSID(GlobalVars.iid_Vial);

                if (ingredients.Count < 2)
                {
                    ShowText(BaseLocale.GetStr(RS.rs_IngredientsLack));
                    return(null);
                }
                else
                {
                    if (vial == null)
                    {
                        ShowText(BaseLocale.GetStr(RS.rs_NoFreeVial));
                        return(null);
                    }
                    else
                    {
                        //int alchemySkill = this.getSkill(TSkillID.Sk_Alchemy);
                        EntityList ready = new EntityList(null, false);
                        try {
                            bool exact = false;
                            int  rec   = FindAlchemyResult(ingredients, ready, ref exact);

                            if (rec >= 0)
                            {
                                EntityList list;
                                string     p;

                                if (exact)
                                {
                                    list = ready;
                                    p    = dbRecipes[rec].Potion;
                                }
                                else
                                {
                                    list = ingredients;
                                    p    = dbRecipes[0].Potion;
                                }

                                int num = list.Count;
                                for (int i = 0; i < num; i++)
                                {
                                    Item     item = (Item)list.GetItem(i);
                                    ItemKind kind = item.Kind;
                                    if (kind == ItemKind.ik_Potion)
                                    {
                                        item.State = ItemState.is_Normal;
                                        item.CLSID = GlobalVars.iid_Vial;
                                    }
                                    else
                                    {
                                        fPlayer.DeleteItem(item);
                                    }
                                }

                                vial.CLSID = GlobalVars.nwrDB.FindEntryBySign(p).GUID;
                                ShowText(BaseLocale.GetStr(RS.rs_YouProduceNewConcoction));
                            }
                            else
                            {
                                vial.CLSID = GlobalVars.nwrDB.FindEntryBySign("Potion_Mystery").GUID;
                                ShowText(BaseLocale.GetStr(RS.rs_MixtureBubblesHorribly));
                                // TODO: required to verify the conditions

                                if (AuxUtils.Chance(5))
                                {
                                    ShowText(BaseLocale.GetStr(RS.rs_Boom));
                                    fPlayer.ApplyDamage(RandomHelper.GetBoundedRnd(25, 50), DamageKind.dkPhysical, null, BaseLocale.GetStr(RS.rs_KilledByExperiment));
                                }
                            }
                            result = vial;
                            fPlayer.Space.DoEvent(EventID.event_ItemMix, this, null, vial);
                        } finally {
                            ready.Dispose();
                        }
                    }
                }
            } catch (Exception ex) {
                Logger.Write("Craft.alchemy(): " + ex.Message);
            }

            return(result);
        }
コード例 #3
0
        public override void DoTurn()
        {
            try {
                base.DoTurn();

                fSatiety -= 1;

                NWField map = CurrentField;
                if (Hallucinations)
                {
                    PrepareHallucinations();
                }

                // processing Skidbladnir
                Effect ef = Effects.FindEffectByID(EffectID.eid_Sail);
                if (ef != null)
                {
                    Item       ship    = FindItem("Skidbladnir");
                    EntityList members = ship.Contents;

                    for (int i = members.Count - 1; i >= 0; i--)
                    {
                        NWCreature cr = (NWCreature)members.GetItem(i);
                        cr.ResetStamina();
                    }

                    int rest;
                    do
                    {
                        rest = 0;
                        for (int i = members.Count - 1; i >= 0; i--)
                        {
                            NWCreature cr = (NWCreature)members.GetItem(i);
                            if (cr.State != CreatureState.Dead)
                            {
                                Effect ef1 = cr.Effects.FindEffectByID(EffectID.eid_Sail);
                                if (ef1 == null)
                                {
                                    throw new Exception("gluk!");
                                }

                                cr.DoTurn();
                                if (cr.Stamina >= Speed)
                                {
                                    rest++;
                                }
                            }
                        }
                    } while (rest != 0);
                }

                if (!Prowling)
                {
                    ApplyLightEffect();

                    if (!GlobalVars.Debug_Divinity)
                    {
                        if (fSatiety == 200)
                        {
                            GlobalVars.nwrWin.ShowText(this, BaseLocale.GetStr(RS.rs_YouHungry));
                        }
                        else
                        {
                            if (fSatiety <= 150 && (int)fSatiety % 50 == 0)
                            {
                                UseEffect(EffectID.eid_Swoon, null, InvokeMode.im_ItSelf, null);
                            }
                            else
                            {
                                if (fSatiety <= 0)
                                {
                                    Death(BaseLocale.GetStr(RS.rs_Starved), null);
                                    return;
                                }
                            }
                        }

                        /*if (super.LayerID == GlobalVars.Layer_Muspelheim) {
                         *  // TODO: requires additional processing
                         * }*/

                        if (LayerID == GlobalVars.Layer_Niflheim && GetAbility(AbilityID.Resist_Cold) == 0)
                        {
                            int num3 = RandomHelper.GetRandom(2);
                            if (num3 != 0)
                            {
                                if (num3 == 1)
                                {
                                    GlobalVars.nwrWin.ShowText(this, BaseLocale.GetStr(RS.rs_YouNumbedByColdOfNiflheim));
                                    Death(BaseLocale.GetStr(RS.rs_FrozeToDeath), null);
                                }
                            }
                            else
                            {
                                GlobalVars.nwrWin.ShowText(this, BaseLocale.GetStr(RS.rs_NiflheimFrostDeath));
                                Death(BaseLocale.GetStr(RS.rs_TurnedToIce), null);
                            }
                            return;
                        }

                        if (LayerID == GlobalVars.Layer_Midgard && Field.X == 1 && Field.Y == 6 && GetAbility(AbilityID.Resist_Heat) == 0)
                        {
                            int num4 = RandomHelper.GetRandom(2);
                            if (num4 != 0)
                            {
                                if (num4 == 1)
                                {
                                    GlobalVars.nwrWin.ShowText(this, BaseLocale.GetStr(RS.rs_YouBurntByFlamesOfBifrost));
                                }
                            }
                            else
                            {
                                GlobalVars.nwrWin.ShowText(this, BaseLocale.GetStr(RS.rs_BifrostFlameDeath));
                            }
                            Death(BaseLocale.GetStr(RS.rs_ConsumedByFire), null);
                            return;
                        }
                    }

                    if (!GlobalVars.Debug_DevMode && LayerID == GlobalVars.Layer_Vanaheim && map.Creatures.Count == 1)
                    {
                        Morality = 0;
                        TransferTo(GlobalVars.Layer_Midgard, 2, 2, -1, -1, StaticData.MapArea, true, false);
                        GlobalVars.nwrWin.ShowText(this, BaseLocale.GetStr(RS.rs_VanaheimIsEmpty), new LogFeatures(LogFeatures.lfDialog));
                    }

                    if (Morality <= -100 && LayerID != GlobalVars.Layer_Niflheim)
                    {
                        TransferTo(GlobalVars.Layer_Niflheim, 1, 1, -1, -1, StaticData.MapArea, true, false);
                        GlobalVars.nwrWin.ShowText(this, BaseLocale.GetStr(RS.rs_PlayerIsUnworthy), new LogFeatures(LogFeatures.lfDialog));
                    }
                }
            } catch (Exception ex) {
                Logger.Write("Player.doTurn(): " + ex.Message);
            }
        }
コード例 #4
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);
        }
コード例 #5
0
        public string GetHint(bool isTrade)
        {
            string res;

            res = Name + AuxUtils.CRLF;

            res = ConvertHelper.UniformName(res);
            if (!Identified)
            {
                res = res + AuxUtils.CRLF + BaseLocale.GetStr(RS.rs_IsNotIdentified);
            }
            else
            {
                if (State != ItemState.is_Normal)
                {
                    res = res + AuxUtils.CRLF + BaseLocale.GetStr(StaticData.dbItemStates[(int)State].Name);
                }
                ItemKind kind = Kind;
                if ((kind < ItemKind.ik_DeadBody || (kind >= ItemKind.ik_Ring && kind != ItemKind.ik_Misc)) && Material != MaterialKind.mk_None)
                {
                    res = res + AuxUtils.CRLF + BaseLocale.GetStr(RS.rs_Material) + ": " + BaseLocale.GetStr(StaticData.dbMaterialKind[(int)Material].Name);
                }
                switch (Kind)
                {
                case ItemKind.ik_Armor:
                case ItemKind.ik_HeavyArmor:
                case ItemKind.ik_MediumArmor:
                case ItemKind.ik_LightArmor:
                {
                    res = res + AuxUtils.CRLF + BaseLocale.GetStr(RS.rs_Armor) + ": " + Convert.ToString(GetAttribute(ItemAttribute.ia_Defense));
                    break;
                }

                case ItemKind.ik_Ring:
                {
                    res = res + AuxUtils.CRLF + BaseLocale.GetStr(RS.rs_Armor) + ": " + Convert.ToString(GetAttribute(ItemAttribute.ia_Defense));
                    res = res + AuxUtils.CRLF + BaseLocale.GetStr(RS.rs_Damage) + ": " + Convert.ToString(GetAttribute(ItemAttribute.ia_DamageMin)) + "-" + Convert.ToString(GetAttribute(ItemAttribute.ia_DamageMax));
                    break;
                }

                case ItemKind.ik_BluntWeapon:
                case ItemKind.ik_ShortBlade:
                case ItemKind.ik_LongBlade:
                case ItemKind.ik_Spear:
                case ItemKind.ik_Axe:
                case ItemKind.ik_Bow:
                case ItemKind.ik_CrossBow:
                case ItemKind.ik_Projectile:
                {
                    res = res + AuxUtils.CRLF + BaseLocale.GetStr(RS.rs_Damage) + ": " + Convert.ToString(GetAttribute(ItemAttribute.ia_DamageMin)) + "-" + Convert.ToString(GetAttribute(ItemAttribute.ia_DamageMax));
                    break;
                }

                case ItemKind.ik_Amulet:
                {
                    res = res + AuxUtils.CRLF + BaseLocale.GetStr(RS.rs_Armor) + ": " + Convert.ToString(GetAttribute(ItemAttribute.ia_Defense));
                    res = res + AuxUtils.CRLF + BaseLocale.GetStr(RS.rs_Damage) + ": " + Convert.ToString(GetAttribute(ItemAttribute.ia_DamageMin)) + "-" + Convert.ToString(GetAttribute(ItemAttribute.ia_DamageMax));
                    break;
                }

                case ItemKind.ik_Shield:
                case ItemKind.ik_Helmet:
                case ItemKind.ik_Clothing:
                {
                    res = res + AuxUtils.CRLF + BaseLocale.GetStr(RS.rs_Armor) + ": " + Convert.ToString(GetAttribute(ItemAttribute.ia_Defense));
                    break;
                }
                }
            }

            res = res + AuxUtils.CRLF + BaseLocale.GetStr(RS.rs_Weight) + ": " + string.Format("{0,1:F2}", new object[] { Weight });

            if (isTrade)
            {
                res = res + AuxUtils.CRLF + BaseLocale.GetStr(RS.rs_Price) + ": " + Convert.ToString(Price);
            }

            return(res);
        }
コード例 #6
0
        public string GetDeclinableName(Number aNumber, Case aCase, bool uncondUnknown)
        {
            string result = "";

            if (CLSID_Renamed == GlobalVars.iid_DeadBody || CLSID_Renamed == GlobalVars.iid_Mummy)
            {
                if (Contents.Count == 1)
                {
                    NWCreature mon = (NWCreature)Contents.GetItem(0);
                    string     dbstr;
                    if (mon.Entry.Remains)
                    {
                        dbstr = BaseLocale.GetStr(RS.rs_Remains);
                    }
                    else
                    {
                        dbstr = fEntry.Name;
                    }
                    result = dbstr + " " + mon.GetDeclinableName(Number.nSingle, Case.cGenitive);
                }
            }
            else
            {
                ItemKind kind = Kind;
                if (kind < ItemKind.ik_Potion || (kind >= ItemKind.ik_Tool && kind != ItemKind.ik_Wand && kind != ItemKind.ik_Scroll && kind != ItemKind.ik_Amulet))
                {
                    if (Countable)
                    {
                        result = GetCountableName((int)Count);
                    }
                    else
                    {
                        result = fEntry.Name;
                    }
                }
                else
                {
                    if (fIdentified && !uncondUnknown)
                    {
                        if (CLSID_Renamed == GlobalVars.iid_Ring_Delusion)
                        {
                            if (Bonus > 0)
                            {
                                result = GlobalVars.nwrDB.GetEntry(Bonus).Name;
                            }
                            else
                            {
                                result = fEntry.Name;
                            }
                        }
                        else
                        {
                            if (CLSID_Renamed == GlobalVars.iid_SoulTrapping_Ring && Bonus > 0)
                            {
                                result = fEntry.Name + " (" + ((CreatureEntry)GlobalVars.nwrDB.GetEntry(Bonus)).Name + ")";
                            }
                            else
                            {
                                if (CLSID_Renamed == GlobalVars.iid_Ring_Protection)
                                {
                                    result = fEntry.Name + " (" + Convert.ToString(Bonus) + "%)";
                                }
                                else
                                {
                                    if (Kind == ItemKind.ik_Wand)
                                    {
                                        result = fEntry.Name + " (" + Convert.ToString(Bonus) + ")";
                                    }
                                    else
                                    {
                                        result = fEntry.Name;
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        result = SecretiveName;
                    }
                }

                if (CLSID_Renamed != GlobalVars.iid_Coin)
                {
                    result += StateSym;
                }
            }

            return(result);
        }
コード例 #7
0
        private int DoTurn_eruptionWastelandVulcan()
        {
            int state = WS_ERUPTION;

            try {
                bool vulcan_ex = false;

                List <ExtPoint> lava_bounds = new List <ExtPoint>();

                for (int y = 0; y < Height; y++)
                {
                    for (int x = 0; x < Width; x++)
                    {
                        NWTile tile = (NWTile)GetTile(x, y);
                        int    cnt  = GetBackTilesCount(x, y, (short)PlaceID.pid_Lava);

                        if (tile.ForeBase == PlaceID.pid_Vulcan)
                        {
                            vulcan_ex = true;
                        }

                        if (tile.BackBase == PlaceID.pid_Grass && cnt > 0)
                        {
                            lava_bounds.Add(new ExtPoint(x, y));
                        }
                    }
                }

                if (lava_bounds.Count == 0)
                {
                    state = WS_FINISH;
                }
                if (!vulcan_ex)
                {
                    state = WS_VULCAN_NOT_EXISTS;
                }

                if (state != WS_ERUPTION)
                {
                    return(state);
                }

                if (lava_bounds.Count > 5)
                {
                    GlobalVars.nwrWin.ShowText(GlobalVars.nwrWin, BaseLocale.GetStr(RS.rs_GroundBeginsToShake));
                }

                int xcnt = RandomHelper.GetBoundedRnd(1, Math.Max(1, (int)Math.Round(lava_bounds.Count * 0.25f)));
                for (int i = 1; i <= xcnt; i++)
                {
                    int      idx = RandomHelper.GetRandom(lava_bounds.Count);
                    ExtPoint pt  = lava_bounds[idx];
                    lava_bounds.RemoveAt(idx);

                    ChangeTile(pt.X, pt.Y, PlaceID.pid_Lava, false);
                }

                Normalize();
            } catch (Exception ex) {
                Logger.Write("NWField.doTurn_eruptionWastelandVulcan(): " + ex.Message);
            }

            return(state);
        }
コード例 #8
0
        private void OnServiceSelect(object sender, MouseButton button, LBItem item)
        {
            NWCreature p = GlobalVars.nwrGame.Player;

            Service serv = ((Service)item.Data);
            string  qst  = BaseLocale.GetStr(StaticData.dbDialogServices[(int)serv].QuestionRes);

            switch (serv)
            {
            case Service.ds_Teach:
                if (!fCollocutor.CanTeach(p))
                {
                    Message = qst;
                    Message = BaseLocale.GetStr(RS.rs_NothingToTeach);
                }
                else
                {
                    GlobalVars.nwrWin.ShowTeachWin(fCollocutor);
                }
                break;

            case Service.ds_Trade:
                if (!fCollocutor.IsTrader && !fCollocutor.Mercenary)
                {
                    Message = qst;
                    Message = BaseLocale.GetStr(RS.rs_NotTrader);
                }
                else
                {
                    GlobalVars.nwrWin.ShowInventory(fCollocutor);
                }
                break;

            case Service.ds_Exchange:
                if (!fCollocutor.Mercenary)
                {
                    Message = qst;
                    Message = BaseLocale.GetStr(RS.rs_NothingExchange);
                }
                else
                {
                    GlobalVars.nwrWin.ShowExchangeWin(fCollocutor);
                }
                break;

            case Service.ds_Recruit:
                if (fCollocutor.Mercenary)
                {
                    Message = qst;
                    Message = BaseLocale.GetStr(RS.rs_AlreadyHired);
                }
                else
                {
                    if (fCollocutor.CLSID == GlobalVars.cid_Guardsman)
                    {
                        Message = qst;
                        Message = BaseLocale.GetStr(RS.rs_DoNotHired);
                    }
                    else
                    {
                        GlobalVars.nwrWin.ShowRecruit(fCollocutor);
                    }
                }
                break;
            }
        }
コード例 #9
0
        public OptionsWindow(BaseControl owner)
            : base(owner)
        {
            Font        = CtlCommon.SmFont;
            Width       = 480;
            Height      = 390;
            WindowStyle = new WindowStyles(WindowStyles.wsScreenCenter, WindowStyles.wsModal, WindowStyles.wsKeyPreview);

            fPages        = new TabControl(this);
            fPages.Left   = 10;
            fPages.Top    = 10;
            fPages.Width  = Width - 20;
            fPages.Height = Height - 30 - 40;

            TabSheet ts = fPages.AddPage(BaseLocale.GetStr(RS.rs_CommonOptions));

            ts.OnLangChange = GlobalVars.nwrWin.LangChange;
            ts.LangResID    = 9;

            fSngVolume          = new ScrollBar(ts);
            fSngVolume.Min      = 0;
            fSngVolume.Max      = 255;
            fSngVolume.Pos      = 255;
            fSngVolume.OnChange = OnSongsVolumeChange;
            fSngVolume.Kind     = ScrollBar.SBK_HORIZONTAL;
            fSngVolume.Width    = ts.Width - 50;
            fSngVolume.Left     = 25;
            fSngVolume.Top      = 30;

            Label label = new Label(ts);

            label.Bounds       = ExtRect.Create(25, 30 - 20, 25 + fSngVolume.Width, 30);
            label.LangResID    = RS.rs_MusicVolume;
            label.OnLangChange = GlobalVars.nwrWin.LangChange;

            fSndVolume          = new ScrollBar(ts);
            fSndVolume.Min      = 0;
            fSndVolume.Max      = 255;
            fSndVolume.Pos      = 255;
            fSndVolume.OnChange = OnSoundsVolumeChange;
            fSndVolume.Kind     = ScrollBar.SBK_HORIZONTAL;
            fSndVolume.Width    = ts.Width - 50;
            fSndVolume.Left     = 25;
            fSndVolume.Top      = 70;

            label              = new Label(ts);
            label.Bounds       = ExtRect.Create(25, 70 - 20, 25 + fSndVolume.Width, 70);
            label.LangResID    = RS.rs_SoundsVolume;
            label.OnLangChange = GlobalVars.nwrWin.LangChange;

            fNewStyle = new CheckBox(ts);
            fNewStyle.OnLangChange = GlobalVars.nwrWin.LangChange;
            fNewStyle.LangResID    = 12;
            fNewStyle.Group        = 1;
            fNewStyle.Left         = 25;
            fNewStyle.Top          = 100;
            fNewStyle.Width        = Width - 50;
            fNewStyle.OnClick      = OnNewStyleClick;

            fModernStyle = new CheckBox(ts);
            fModernStyle.OnLangChange = GlobalVars.nwrWin.LangChange;
            fModernStyle.LangResID    = 13;
            fModernStyle.Group        = 1;
            fModernStyle.Left         = 225;
            fModernStyle.Top          = 100;
            fModernStyle.Width        = Width - 50;
            fModernStyle.OnClick      = OnModernStyleClick;

            fHideLocMap = new CheckBox(ts);
            fHideLocMap.OnLangChange = GlobalVars.nwrWin.LangChange;
            fHideLocMap.LangResID    = 14;
            fHideLocMap.Left         = 25;
            fHideLocMap.Top          = 130;
            fHideLocMap.Width        = Width - 50;
            fHideLocMap.OnClick      = OnHideLocMapClick;

            fHideCtlPanel = new CheckBox(ts);
            fHideCtlPanel.OnLangChange = GlobalVars.nwrWin.LangChange;
            fHideCtlPanel.LangResID    = 15;
            fHideCtlPanel.Left         = 25;
            fHideCtlPanel.Top          = 160;
            fHideCtlPanel.Width        = Width - 50;
            fHideCtlPanel.OnClick      = OnHideCtlPanelClick;

            fHideInfoPanel = new CheckBox(ts);
            fHideInfoPanel.OnLangChange = GlobalVars.nwrWin.LangChange;
            fHideInfoPanel.LangResID    = 16;
            fHideInfoPanel.Left         = 25;
            fHideInfoPanel.Top          = 190;
            fHideInfoPanel.Width        = Width - 50;
            fHideInfoPanel.OnClick      = OnHideInfoPanelClick;

            fInvOnlyIcons = new CheckBox(ts);
            fInvOnlyIcons.OnLangChange = GlobalVars.nwrWin.LangChange;
            fInvOnlyIcons.LangResID    = 549;
            fInvOnlyIcons.Left         = 25;
            fInvOnlyIcons.Top          = 220;
            fInvOnlyIcons.Width        = Width - 50;
            fInvOnlyIcons.OnClick      = OnInvOnlyIconsClick;

            ts = fPages.AddPage(BaseLocale.GetStr(RS.rs_KeyOptions));
            ts.OnLangChange = GlobalVars.nwrWin.LangChange;
            ts.LangResID    = 10;

            fKeyList        = new ListBox(ts);
            fKeyList.Mode   = ListBox.MODE_REPORT;
            fKeyList.Left   = 10;
            fKeyList.Top    = 10;
            fKeyList.Width  = ts.Width - 20;
            fKeyList.Height = ts.Height - 20;
            fKeyList.ColumnTitles.Add("name", 300);
            fKeyList.ColumnTitles.Add("key", 150);
            fKeyList.OnKeyDown = OnKeyListKeyDown;
            fKeyList.ShowHints = true;
            fKeyList.Hint      = "hint";

            ts = fPages.AddPage(BaseLocale.GetStr(RS.rs_GameplayOptions));
            ts.OnLangChange = GlobalVars.nwrWin.LangChange;
            ts.LangResID    = 11;

            fCircularFOV = new CheckBox(ts);
            fCircularFOV.OnLangChange = GlobalVars.nwrWin.LangChange;
            fCircularFOV.LangResID    = 17;
            fCircularFOV.Left         = 25;
            fCircularFOV.Top          = 25;
            fCircularFOV.Width        = Width - 50;
            fCircularFOV.OnClick      = OnCircularFOVClick;

            fAutoPickup = new CheckBox(ts);
            fAutoPickup.OnLangChange = GlobalVars.nwrWin.LangChange;
            fAutoPickup.LangResID    = 536;
            fAutoPickup.Left         = 25;
            fAutoPickup.Top          = 65;
            fAutoPickup.Width        = Width - 50;
            fAutoPickup.OnClick      = OnAutoPickupClick;

            fExtremeMode = new CheckBox(ts);
            fExtremeMode.OnLangChange = GlobalVars.nwrWin.LangChange;
            fExtremeMode.LangResID    = 82;
            fExtremeMode.Left         = 25;
            fExtremeMode.Top          = 105;
            fExtremeMode.Width        = Width - 50;
            fExtremeMode.OnClick      = OnExtremeModeClick;
            ts = fPages.AddPage(BaseLocale.GetStr(RS.rs_Language));
            ts.OnLangChange = GlobalVars.nwrWin.LangChange;
            ts.LangResID    = 815;

            fLangList         = new ListBox(ts);
            fLangList.Mode    = ListBox.MODE_LIST;
            fLangList.Options = new LBOptions(LBOptions.lboChecks, LBOptions.lboRadioChecks);
            fLangList.Left    = 10;
            fLangList.Top     = 10;
            fLangList.Width   = ts.Width - 20;
            fLangList.Height  = ts.Height - 20;

            Locale locale = GlobalVars.nwrWin.Locale;
            int    num    = locale.LangsCount;

            for (int i = 0; i < num; i++)
            {
                fLangList.Items.Add(locale.GetLang(i).Name, null);
            }
            fLangList.OnItemSelect = OnLangSelect;

            fPages.TabIndex = 0;

            NWButton tRButton = new NWButton(this);

            tRButton.Width        = 90;
            tRButton.Height       = 30;
            tRButton.Left         = Width - 90 - 20;
            tRButton.Top          = Height - 30 - 20;
            tRButton.ImageFile    = "itf/DlgBtn.tga";
            tRButton.OnClick      = OnBtnClose;
            tRButton.OnLangChange = GlobalVars.nwrWin.LangChange;
            tRButton.LangResID    = 8;
        }
コード例 #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 tmp = BaseLocale.GetStr(StaticData.dbPlaces[5].NameRS);
                    GlobalVars.nwrWin.ShowText(Creature, BaseLocale.Format(RS.rs_TheXIsFrozen, new object[] { tmp }));
                }
                refContinue = false;
            }
            else
            {
                NWCreature c = (NWCreature)f.FindCreature(aX, aY);
                if (c != null && c.HasAffect(EffectID.eid_Ice))
                {
                    c.AddEffect(EffectID.eid_Ice, ItemState.is_Normal, EffectAction.ea_Persistent, false, BaseLocale.GetStr(RS.rs_YouAreFrozen));
                    Effect e = c.Effects.FindEffectByID(EffectID.eid_Ice);
                    if (e != null && e.Magnitude >= 30)
                    {
                        string tmp;
                        if (c.IsPlayer)
                        {
                            tmp = BaseLocale.GetStr(RS.rs_EncasedInIce);
                        }
                        else
                        {
                            tmp = BaseLocale.Format(RS.rs_TheXIsFrozen, new object[] { c.Name });
                        }
                        c.Death(tmp, null);
                    }
                }
            }
        }
コード例 #11
0
        private void UpdateView()
        {
            fDisciplinesList.Items.BeginUpdate();
            fDisciplinesList.Items.Clear();
            NWCreature clt = fCollocutor;
            Player     p   = GlobalVars.nwrGame.Player;

            for (int i = 0; i < StaticData.dbTeachable.Length; i++)
            {
                int           id   = StaticData.dbTeachable[i].Id;
                bool          res  = false;
                TeachableKind kind = StaticData.dbTeachable[i].Kind;

                string s          = "";
                int    imageIndex = -1;
                int    curLev     = 0;
                switch (kind)
                {
                case TeachableKind.Ability:
                    AbilityRec abRec = StaticData.dbAbilities[id];
                    AbilityID  ab    = (AbilityID)id;
                    if (clt.GetAbility(ab) > 0)
                    {
                        s          = BaseLocale.GetStr(abRec.Name);
                        imageIndex = -1;
                        curLev     = p.GetAbility(ab);
                        res        = (curLev < clt.GetAbility(ab));
                    }
                    break;

                case TeachableKind.Skill:
                    SkillRec skRec = StaticData.dbSkills[id];
                    SkillID  sk    = (SkillID)id;
                    if (clt.GetSkill(sk) >= 0)
                    {
                        s          = BaseLocale.GetStr(skRec.Name);
                        imageIndex = skRec.ImageIndex;
                        curLev     = p.GetSkill(sk);
                        res        = (curLev < clt.GetSkill(sk));
                    }
                    break;
                }

                int price = (int)GlobalVars.nwrGame.GetTeachablePrice(i, curLev);

                if (res)
                {
                    string st       = " ( " + Convert.ToString(curLev) + " -> " + Convert.ToString(curLev + 1) + " )";
                    LBItem listItem = fDisciplinesList.Items.Add(s + st, new TeachItem(i, curLev, price));
                    if (price > p.Money)
                    {
                        listItem.Color = Colors.Red;
                    }
                    else
                    {
                        listItem.Color = Colors.Gold;
                    }
                    listItem.ImageIndex = imageIndex;
                    listItem.SubItems.Add(Convert.ToString(price), null);
                }
            }

            fDisciplinesList.Items.EndUpdate();
        }
コード例 #12
0
        private void OnSkillsSelect(object Sender, MouseButton Button, LBItem Item)
        {
            if (Button == MouseButton.mbRight)
            {
                int idx = (int)Item.Data;
                switch (fMode)
                {
                case SWM_SKILLS:
                {
                    SkillID sk = (SkillID)(idx);
                    if (sk != SkillID.Sk_Alchemy)
                    {
                        if (sk != SkillID.Sk_Ironworking)
                        {
                            if (sk != SkillID.Sk_Spellcasting)
                            {
                                Hide();
                                GlobalVars.nwrGame.DoPlayerAction(CreatureAction.caSkillUse, idx);
                            }
                            else
                            {
                                Mode = SWM_SPELLS;
                            }
                        }
                        else
                        {
                            string ts = GlobalVars.nwrGame.Player.Craft.CheckSmithyTools();
                            if (ts.CompareTo("") != 0)
                            {
                                GlobalVars.nwrWin.ShowText(GlobalVars.nwrWin, BaseLocale.Format(RS.rs_NoInstruments, new object[] { ts }));
                            }
                            else
                            {
                                Hide();
                                GlobalVars.nwrWin.ShowSmithyWin();
                            }
                        }
                    }
                    else
                    {
                        Hide();
                        GlobalVars.nwrWin.ShowAlchemyWin();
                    }
                    break;
                }

                case SWM_SPELLS:
                    Hide();
                    GlobalVars.nwrGame.DoPlayerAction(CreatureAction.caSpellUse, idx);
                    break;

                case SWM_TILES:
                    Hide();
                    GlobalVars.nwrWin.TargetData.Ext.SetParam(EffectParams.ep_TileID, idx);
                    GlobalVars.nwrWin.UseTarget();
                    break;

                case SWM_LANDS:
                    Hide();
                    GlobalVars.nwrWin.TargetData.Ext.SetParam(EffectParams.ep_Land, idx);
                    GlobalVars.nwrWin.UseTarget();
                    break;

                case SWM_SCROLLS:
                    Hide();
                    GlobalVars.nwrWin.TargetData.Ext.SetParam(EffectParams.ep_ScrollID, idx);
                    GlobalVars.nwrWin.UseTarget();
                    break;

                case SWM_GODS:
                    Hide();
                    GlobalVars.nwrWin.TargetData.Ext.SetParam(EffectParams.ep_GodID, idx);
                    GlobalVars.nwrWin.UseTarget();
                    break;
                }
            }
        }
コード例 #13
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 }));
                }
            }
        }
コード例 #14
0
 private void DoCommand(string cmd)
 {
     try {
         int    tokCount = (int)AuxUtils.GetTokensCount(cmd, " ");
         string token    = AuxUtils.GetToken(cmd, " ", 1).ToLower();
         Player player   = GlobalVars.nwrGame.Player;
         if (token.Equals("name_gen"))
         {
             for (int i = 1; i <= 10; i++)
             {
                 AddMessage(GlobalVars.nwrGame.NameLib.GenerateName("ru", Gender.gMale, NamesLib.NameGen_RndSlabs));
             }
         }
         else
         {
             if (token.Equals("test"))
             {
                 player.Body = new HumanBody(player);
             }
             else
             {
                 if (token.Equals("suicide"))
                 {
                     player.Death("Suicide", null);
                 }
                 else
                 {
                     if (token.Equals("set_fury"))
                     {
                         GlobalVars.Debug_Fury = !GlobalVars.Debug_Fury;
                         string temp = GlobalVars.Debug_Fury ? "yes" : "no";
                         AddMessage(">> (fury = " + temp + ")");
                     }
                     else
                     {
                         if (token.Equals("transform"))
                         {
                             if (tokCount == 1)
                             {
                                 throw new Exception(BaseLocale.GetStr(RS.rs_NoValue));
                             }
                             string    temp  = AuxUtils.GetToken(cmd, " ", 2);
                             DataEntry entry = GlobalVars.nwrDB.FindEntryBySign(temp);
                             if (entry != null)
                             {
                                 EffectExt ext = new EffectExt();
                                 ext.SetParam(EffectParams.ep_MonsterID, entry.GUID);
                                 player.UseEffect(EffectID.eid_Transformation, null, InvokeMode.im_ItSelf, ext);
                             }
                         }
                         else
                         {
                             if (token.Equals("add_monster"))
                             {
                                 if (tokCount == 1)
                                 {
                                     throw new Exception(BaseLocale.GetStr(RS.rs_NoValue));
                                 }
                                 string temp = AuxUtils.GetToken(cmd, " ", 2);
                                 int    tx;
                                 int    ty;
                                 if (tokCount == 4)
                                 {
                                     tx = Convert.ToInt32(AuxUtils.GetToken(cmd, " ", 3));
                                     ty = Convert.ToInt32(AuxUtils.GetToken(cmd, " ", 4));
                                 }
                                 else
                                 {
                                     tx = -1;
                                     ty = -1;
                                 }
                                 DataEntry entry = GlobalVars.nwrDB.FindEntryBySign(temp);
                                 if (entry != null)
                                 {
                                     GlobalVars.nwrGame.AddCreatureEx(player.LayerID, player.Field.X, player.Field.Y, tx, ty, entry.GUID);
                                 }
                             }
                             else
                             {
                                 if (token.Equals("kill_all"))
                                 {
                                     NWField fld = player.CurrentField;
                                     for (int i = fld.Creatures.Count - 1; i >= 0; i--)
                                     {
                                         NWCreature cr = fld.Creatures.GetItem(i);
                                         if (!cr.IsPlayer && !cr.Mercenary)
                                         {
                                             cr.Death("", null);
                                         }
                                     }
                                 }
                                 else
                                 {
                                     if (token.Equals("show_goals"))
                                     {
                                         ShowGoals();
                                     }
                                     else
                                     {
                                         if (token.Equals("set_divinity"))
                                         {
                                             GlobalVars.Debug_Divinity = !GlobalVars.Debug_Divinity;
                                             string temp;
                                             if (GlobalVars.Debug_Divinity)
                                             {
                                                 temp = "yes";
                                             }
                                             else
                                             {
                                                 temp = "no";
                                             }
                                             AddMessage(">> (divinity = " + temp + ")");
                                         }
                                         else
                                         {
                                             if (token.Equals("set_freeze"))
                                             {
                                                 GlobalVars.Debug_Freeze = !GlobalVars.Debug_Freeze;
                                                 string temp;
                                                 if (GlobalVars.Debug_Freeze)
                                                 {
                                                     temp = "yes";
                                                 }
                                                 else
                                                 {
                                                     temp = "no";
                                                 }
                                                 AddMessage(">> (freeze = " + temp + ")");
                                             }
                                             else
                                             {
                                                 if (token.Equals("set_morality"))
                                                 {
                                                     if (tokCount == 1)
                                                     {
                                                         throw new Exception(BaseLocale.GetStr(RS.rs_NoValue));
                                                     }
                                                     int dummy = Convert.ToInt32(AuxUtils.GetToken(cmd, " ", 2));
                                                     player.Morality = (sbyte)dummy;
                                                     AddMessage(">> (Player.Morality = " + Convert.ToString(dummy) + ")");
                                                 }
                                                 else
                                                 {
                                                     if (token.Equals("takeitem"))
                                                     {
                                                         if (tokCount == 1)
                                                         {
                                                             throw new Exception(BaseLocale.GetStr(RS.rs_NoName));
                                                         }
                                                         if (tokCount == 2)
                                                         {
                                                             throw new Exception(BaseLocale.GetStr(RS.rs_NoCount));
                                                         }
                                                         token = AuxUtils.GetToken(cmd, " ", 2);
                                                         int dummy = Convert.ToInt32(AuxUtils.GetToken(cmd, " ", 3));
                                                         TakePlayerItem(player, token, dummy);
                                                     }
                                                     else
                                                     {
                                                         AddMessage(BaseLocale.GetStr(RS.rs_CommandUnknown));
                                                     }
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     } catch (Exception ex) {
         AddMessage(BaseLocale.GetStr(RS.rs_CommandUnknown));
         AddMessage(ex.Message);
     }
 }
コード例 #15
0
        static VictimBrain()
        {
            SfAgnarDialog = new DialogEntry();
            ConversationEntry defConvers = SfAgnarDialog.AddConversation(BaseLocale.GetStr(RS.rs_Sacrifice));

            TopicEntry rootTopic = defConvers.AddTopic();

            rootTopic.Answer = BaseLocale.GetStr(RS.rs_Agnar_IsStrungUp) + " " + BaseLocale.GetStr(RS.rs_VictimPleads);

            TopicEntry topic1 = rootTopic.AddTopic();

            topic1.Phrase = BaseLocale.GetStr(RS.rs_Agnar_KickOutStump);
            topic1.Answer = BaseLocale.GetStr(RS.rs_SacrificeAward);
            topic1.Action = "NPC.sacrificeVictim();";

            TopicEntry topic2 = rootTopic.AddTopic();

            topic2.Phrase = BaseLocale.GetStr(RS.rs_SetHimFree);
            topic2.Answer = BaseLocale.GetStr(RS.rs_VictimFree);
            topic2.Action = "NPC.freeVictim();";

            TopicEntry topic3 = rootTopic.AddTopic();

            topic3.Phrase = BaseLocale.GetStr(RS.rs_DoNothing);
            topic3.Answer = "";


            SfHaddingrDialog = new DialogEntry();
            defConvers       = SfHaddingrDialog.AddConversation(BaseLocale.GetStr(RS.rs_Sacrifice));

            rootTopic        = defConvers.AddTopic();
            rootTopic.Answer = BaseLocale.GetStr(RS.rs_Haddingr_IsPinned) + " " + BaseLocale.GetStr(RS.rs_VictimPleads);

            topic1        = rootTopic.AddTopic();
            topic1.Phrase = BaseLocale.GetStr(RS.rs_Haddingr_TwistSpear);
            topic1.Answer = BaseLocale.GetStr(RS.rs_SacrificeAward);
            topic1.Action = "NPC.sacrificeVictim();";

            topic2        = rootTopic.AddTopic();
            topic2.Phrase = BaseLocale.GetStr(RS.rs_SetHimFree);
            topic2.Answer = BaseLocale.GetStr(RS.rs_VictimFree);
            topic2.Action = "NPC.freeVictim();";

            topic3        = rootTopic.AddTopic();
            topic3.Phrase = BaseLocale.GetStr(RS.rs_DoNothing);
            topic3.Answer = "";


            SfKetillDialog = new DialogEntry();
            defConvers     = SfKetillDialog.AddConversation(BaseLocale.GetStr(RS.rs_Sacrifice));

            rootTopic        = defConvers.AddTopic();
            rootTopic.Answer = BaseLocale.GetStr(RS.rs_Ketill_IsDangling) + " " + BaseLocale.GetStr(RS.rs_VictimPleads);

            topic1        = rootTopic.AddTopic();
            topic1.Phrase = BaseLocale.GetStr(RS.rs_Ketill_DrownHim);
            topic1.Answer = BaseLocale.GetStr(RS.rs_SacrificeAward);
            topic1.Action = "NPC.sacrificeVictim();";

            topic2        = rootTopic.AddTopic();
            topic2.Phrase = BaseLocale.GetStr(RS.rs_SetHimFree);
            topic2.Answer = BaseLocale.GetStr(RS.rs_VictimFree);
            topic2.Action = "NPC.freeVictim();";

            topic3        = rootTopic.AddTopic();
            topic3.Phrase = BaseLocale.GetStr(RS.rs_DoNothing);
            topic3.Answer = "";
        }