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; } } } }
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); }
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); } }
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); }
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); }
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); }
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); }
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; } }
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; }
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); } } } }
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(); }
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; } } }
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 })); } } }
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); } }
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 = ""; }