/// <summary> /// Refresh the currently-selected Vehicle. /// </summary> private void RefreshSelectedVehicle() { lblVehicleAttack.Text = ""; lblVehicleSleaze.Text = ""; lblVehicleDataProcessing.Text = ""; lblVehicleFirewall.Text = ""; bool blnClear = false; try { if (treVehicles.SelectedNode.Level == 0) blnClear = true; } catch { blnClear = true; } if (blnClear) { lblVehicleWeaponAmmoRemaining.Text = ""; lblVehicleWeaponName.Text = ""; lblVehicleWeaponCategory.Text = ""; lblVehicleWeaponAP.Text = ""; lblVehicleWeaponDamage.Text = ""; lblVehicleWeaponMode.Text = ""; lblVehicleWeaponAmmo.Text = ""; cmdFireVehicleWeapon.Enabled = false; cmdReloadVehicleWeapon.Enabled = false; lblVehicleWeaponRangeShort.Text = ""; lblVehicleWeaponRangeMedium.Text = ""; lblVehicleWeaponRangeLong.Text = ""; lblVehicleWeaponRangeExtreme.Text = ""; lblVehicleGearQty.Text = ""; cmdVehicleGearReduceQty.Enabled = false; cboVehicleWeaponAmmo.Enabled = false; return; } chkVehicleHomeNode.Visible = false; cmdVehicleMoveToInventory.Enabled = false; if (treVehicles.SelectedNode.Level != 0) { // Locate the selected Vehicle. TreeNode objVehicleNode = new TreeNode(); objVehicleNode = treVehicles.SelectedNode; if (treVehicles.SelectedNode.Level > 1) { while (objVehicleNode.Level > 1) objVehicleNode = objVehicleNode.Parent; } Vehicle objVehicle = _objFunctions.FindVehicle(objVehicleNode.Tag.ToString(), _objCharacter.Vehicles); if (objVehicle == null) return; // Hide any unused Physical CM boxes. panVehicleCM.Visible = true; _blnSkipRefresh = true; foreach (CheckBox objPhysicalCM in panVehicleCM.Controls.OfType<CheckBox>()) { if (Convert.ToInt32(objPhysicalCM.Tag.ToString()) <= objVehicle.PhysicalCM) { if (Convert.ToInt32(objPhysicalCM.Tag.ToString()) <= objVehicle.PhysicalCMFilled) objPhysicalCM.Checked = true; else objPhysicalCM.Checked = false; objPhysicalCM.Visible = true; } else { objPhysicalCM.Checked = false; objPhysicalCM.Visible = false; objPhysicalCM.Text = ""; } } _blnSkipRefresh = false; } // Locate the selected Vehicle. if (treVehicles.SelectedNode.Level == 1) { Vehicle objVehicle = _objFunctions.FindVehicle(treVehicles.SelectedNode.Tag.ToString(), _objCharacter.Vehicles); if (objVehicle == null) return; _blnSkipRefresh = true; lblVehicleRatingLabel.Text = LanguageManager.Instance.GetString("Label_Rating"); lblVehicleRating.Text = ""; _blnSkipRefresh = false; lblVehicleName.Text = objVehicle.DisplayNameShort; lblVehicleCategory.Text = objVehicle.DisplayCategory; lblVehicleAvail.Text = objVehicle.CalculatedAvail; lblVehicleCost.Text = String.Format("{0:###,###,##0¥}", objVehicle.TotalCost); lblVehicleHandling.Text = objVehicle.TotalHandling.ToString(); lblVehicleAccel.Text = objVehicle.TotalAccel; lblVehicleSpeed.Text = objVehicle.TotalSpeed.ToString(); lblVehicleDevice.Text = objVehicle.DeviceRating.ToString(); lblVehiclePilot.Text = objVehicle.Pilot.ToString(); lblVehicleBody.Text = objVehicle.TotalBody.ToString(); lblVehicleArmor.Text = objVehicle.TotalArmor.ToString(); if (_objOptions.UseCalculatedVehicleSensorRatings) lblVehicleSensor.Text = objVehicle.CalculatedSensor.ToString(); else lblVehicleSensor.Text = objVehicle.Sensor.ToString(); lblVehicleSlots.Text = objVehicle.Slots.ToString() + " (" + (objVehicle.Slots - objVehicle.SlotsUsed).ToString() + " " + LanguageManager.Instance.GetString("String_Remaining") + ")"; string strBook = _objOptions.LanguageBookShort(objVehicle.Source); string strPage = objVehicle.Page; lblVehicleSource.Text = strBook + " " + strPage; tipTooltip.SetToolTip(lblVehicleSource, _objOptions.LanguageBookLong(objVehicle.Source) + " " + LanguageManager.Instance.GetString("String_Page") + " " + objVehicle.Page); chkVehicleWeaponAccessoryInstalled.Enabled = false; chkVehicleIncludedInWeapon.Checked = false; if (_objCharacter.Metatype.EndsWith("A.I.") || _objCharacter.MetatypeCategory == "Technocritters" || _objCharacter.MetatypeCategory == "Protosapients") { chkVehicleHomeNode.Visible = true; chkVehicleHomeNode.Checked = objVehicle.HomeNode; } UpdateCharacterInfo(); } else if (treVehicles.SelectedNode.Level == 2) { panVehicleCM.Visible = true; bool blnVehicleMod = false; // If this is a Vehicle Location, don't do anything. foreach (Vehicle objVehicle in _objCharacter.Vehicles) { if (objVehicle.InternalId == treVehicles.SelectedNode.Parent.Tag.ToString()) { foreach (string strLocation in objVehicle.Locations) { if (strLocation == treVehicles.SelectedNode.Tag.ToString()) { lblVehicleName.Text = ""; lblVehicleCategory.Text = ""; lblVehicleSource.Text = ""; lblVehicleHandling.Text = ""; lblVehicleAccel.Text = ""; lblVehicleSpeed.Text = ""; lblVehicleDevice.Text = ""; lblVehiclePilot.Text = ""; lblVehicleBody.Text = ""; lblVehicleArmor.Text = ""; lblVehicleSensor.Text = ""; lblVehicleAvail.Text = ""; lblVehicleCost.Text = ""; lblVehicleSlots.Text = ""; return; } } } } // Locate the selected VehicleMod. Vehicle objSelectedVehicle = new Vehicle(_objCharacter); VehicleMod objMod = _objFunctions.FindVehicleMod(treVehicles.SelectedNode.Tag.ToString(), _objCharacter.Vehicles, out objSelectedVehicle); if (objMod != null) blnVehicleMod = true; if (blnVehicleMod) { if (objMod.MaxRating != "qty") { if (Convert.ToInt32(objMod.MaxRating) > 0) { _blnSkipRefresh = true; lblVehicleRatingLabel.Text = LanguageManager.Instance.GetString("Label_Rating"); lblVehicleRating.Text = objMod.Rating.ToString(); _blnSkipRefresh = false; } else { _blnSkipRefresh = true; lblVehicleRatingLabel.Text = LanguageManager.Instance.GetString("Label_Rating"); lblVehicleRating.Text = ""; _blnSkipRefresh = false; } } else { _blnSkipRefresh = true; lblVehicleRatingLabel.Text = LanguageManager.Instance.GetString("Label_Qty"); lblVehicleRating.Text = objMod.Rating.ToString(); _blnSkipRefresh = false; } lblVehicleName.Text = objMod.DisplayNameShort; lblVehicleCategory.Text = LanguageManager.Instance.GetString("String_VehicleModification"); lblVehicleAvail.Text = objMod.TotalAvail; lblVehicleCost.Text = String.Format("{0:###,###,##0¥}", objMod.TotalCost); lblVehicleHandling.Text = ""; lblVehicleAccel.Text = ""; lblVehicleSpeed.Text = ""; lblVehicleDevice.Text = ""; lblVehiclePilot.Text = ""; lblVehicleBody.Text = ""; lblVehicleArmor.Text = ""; lblVehicleSensor.Text = ""; lblVehicleSlots.Text = objMod.CalculatedSlots.ToString(); string strBook = _objOptions.LanguageBookShort(objMod.Source); string strPage = objMod.Page; lblVehicleSource.Text = strBook + " " + strPage; tipTooltip.SetToolTip(lblVehicleSource, _objOptions.LanguageBookLong(objMod.Source) + " " + LanguageManager.Instance.GetString("String_Page") + " " + objMod.Page); } else { bool blnFound = false; // If it's not a Vehicle Mod then it must be a Sensor. Gear objGear = _objFunctions.FindVehicleGear(treVehicles.SelectedNode.Tag.ToString(), _objCharacter.Vehicles, out objSelectedVehicle); if (objGear != null) blnFound = true; if (blnFound) { lblVehicleRating.Text = ""; if (objGear.InternalId == treVehicles.SelectedNode.Tag.ToString()) { lblVehicleGearQty.Text = objGear.Quantity.ToString(); cmdVehicleGearReduceQty.Enabled = true; if (objGear.Rating > 0) lblVehicleRating.Text = objGear.Rating.ToString(); } lblVehicleName.Text = objGear.DisplayNameShort; lblVehicleCategory.Text = objGear.DisplayCategory; lblVehicleAvail.Text = objGear.TotalAvail(true); lblVehicleCost.Text = String.Format("{0:###,###,##0¥}", objGear.TotalCost); lblVehicleHandling.Text = ""; lblVehicleAccel.Text = ""; lblVehicleSpeed.Text = ""; lblVehicleDevice.Text = ""; lblVehiclePilot.Text = ""; lblVehicleBody.Text = ""; lblVehicleArmor.Text = ""; lblVehicleSensor.Text = ""; lblVehicleSlots.Text = objGear.CalculatedCapacity + " (" + objGear.CapacityRemaining.ToString() + " " + LanguageManager.Instance.GetString("String_Remaining") + ")"; string strBook = _objOptions.LanguageBookShort(objGear.Source); string strPage = objGear.Page; lblVehicleSource.Text = strBook + " " + strPage; tipTooltip.SetToolTip(lblVehicleSource, _objOptions.LanguageBookLong(objGear.Source) + " " + LanguageManager.Instance.GetString("String_Page") + " " + objGear.Page); cmdVehicleMoveToInventory.Enabled = true; if (objGear.GetType() == typeof(Commlink)) { Commlink objCommlink = (Commlink)objGear; lblVehicleDevice.Text = objCommlink.DeviceRating.ToString(); lblVehicleAttack.Text = objCommlink.Attack.ToString(); lblVehicleSleaze.Text = objCommlink.Sleaze.ToString(); lblVehicleDataProcessing.Text = objCommlink.DataProcessing.ToString(); lblVehicleFirewall.Text = objCommlink.Firewall.ToString(); } if ((_objCharacter.Metatype.EndsWith("A.I.") || _objCharacter.MetatypeCategory == "Technocritters" || _objCharacter.MetatypeCategory == "Protosapients") && objGear.GetType() == typeof(Commlink)) { chkVehicleHomeNode.Visible = true; chkVehicleHomeNode.Checked = objGear.HomeNode; } } else { // Look for the selected Vehicle Weapon. Weapon objWeapon = new Weapon(_objCharacter); Vehicle objCurrentVehicle = new Vehicle(_objCharacter); foreach (Vehicle objVehicle in _objCharacter.Vehicles) { objWeapon = _objFunctions.FindWeapon(treVehicles.SelectedNode.Tag.ToString(), objVehicle.Weapons); if (objWeapon != null) { objCurrentVehicle = objVehicle; break; } } lblVehicleWeaponName.Text = objWeapon.DisplayNameShort; lblVehicleWeaponCategory.Text = objWeapon.DisplayCategory; lblVehicleWeaponDamage.Text = objWeapon.CalculatedDamage(); lblVehicleWeaponAP.Text = objWeapon.TotalAP; lblVehicleWeaponAmmo.Text = objWeapon.CalculatedAmmo(); lblVehicleWeaponMode.Text = objWeapon.CalculatedMode; if (objWeapon.WeaponType == "Ranged" || (objWeapon.WeaponType == "Melee" && objWeapon.Ammo != "0")) { cmdFireVehicleWeapon.Enabled = true; cmdReloadVehicleWeapon.Enabled = true; lblVehicleWeaponAmmoRemaining.Text = objWeapon.AmmoRemaining.ToString(); cmsVehicleAmmoSingleShot.Enabled = objWeapon.AllowMode("SS") || objWeapon.AllowMode("SA"); cmsVehicleAmmoShortBurst.Enabled = objWeapon.AllowMode("BF"); cmsVehicleAmmoLongBurst.Enabled = objWeapon.AllowMode("FA"); cmsVehicleAmmoFullBurst.Enabled = objWeapon.AllowMode("FA"); cmsVehicleAmmoSuppressiveFire.Enabled = objWeapon.AllowMode("FA"); // Melee Weapons with Ammo are considered to be Single Shot. if (objWeapon.WeaponType == "Melee" && objWeapon.Ammo != "0") cmsVehicleAmmoSingleShot.Enabled = true; if (cmsVehicleAmmoFullBurst.Enabled) cmsVehicleAmmoFullBurst.Text = LanguageManager.Instance.GetString("String_FullBurst").Replace("{0}", objWeapon.FullBurst.ToString()); if (cmsVehicleAmmoSuppressiveFire.Enabled) cmsVehicleAmmoSuppressiveFire.Text = LanguageManager.Instance.GetString("String_SuppressiveFire").Replace("{0}", objWeapon.Suppressive.ToString()); List<ListItem> lstAmmo = new List<ListItem>(); int intCurrentSlot = objWeapon.ActiveAmmoSlot; for (int i = 1; i <= objWeapon.AmmoSlots; i++) { Gear objVehicleGear = new Gear(_objCharacter); ListItem objAmmo = new ListItem(); objWeapon.ActiveAmmoSlot = i; objVehicleGear = _objFunctions.FindGear(objWeapon.AmmoLoaded, objCurrentVehicle.Gear); objAmmo.Value = i.ToString(); string strPlugins = ""; foreach (Vehicle objVehicle in _objCharacter.Vehicles) { foreach (Gear objCurrentAmmo in objVehicle.Gear) { if (objCurrentAmmo.InternalId == objWeapon.AmmoLoaded) { foreach (Gear objChild in objCurrentAmmo.Children) { strPlugins += objChild.DisplayNameShort + ", "; } } } } // Remove the trailing comma. if (strPlugins != "") strPlugins = strPlugins.Substring(0, strPlugins.Length - 2); if (objVehicleGear == null) { if (objWeapon.AmmoRemaining == 0) objAmmo.Name = LanguageManager.Instance.GetString("String_SlotNumber").Replace("{0}", i.ToString()) + " " + LanguageManager.Instance.GetString("String_Empty"); else objAmmo.Name = LanguageManager.Instance.GetString("String_SlotNumber").Replace("{0}", i.ToString()) + " " + LanguageManager.Instance.GetString("String_ExternalSource"); } else objAmmo.Name = LanguageManager.Instance.GetString("String_SlotNumber").Replace("{0}", i.ToString()) + " " + objVehicleGear.DisplayNameShort; if (strPlugins != "") objAmmo.Name += " [" + strPlugins + "]"; lstAmmo.Add(objAmmo); } _blnSkipRefresh = true; objWeapon.ActiveAmmoSlot = intCurrentSlot; cboVehicleWeaponAmmo.Enabled = true; cboVehicleWeaponAmmo.ValueMember = "Value"; cboVehicleWeaponAmmo.DisplayMember = "Name"; cboVehicleWeaponAmmo.DataSource = lstAmmo; cboVehicleWeaponAmmo.SelectedValue = objWeapon.ActiveAmmoSlot.ToString(); if (cboVehicleWeaponAmmo.SelectedIndex == -1) cboVehicleWeaponAmmo.SelectedIndex = 0; _blnSkipRefresh = false; } lblVehicleWeaponRangeShort.Text = objWeapon.RangeShort; lblVehicleWeaponRangeMedium.Text = objWeapon.RangeMedium; lblVehicleWeaponRangeLong.Text = objWeapon.RangeLong; lblVehicleWeaponRangeExtreme.Text = objWeapon.RangeExtreme; lblVehicleName.Text = objWeapon.DisplayNameShort; lblVehicleCategory.Text = LanguageManager.Instance.GetString("String_VehicleWeapon"); lblVehicleAvail.Text = objWeapon.TotalAvail; lblVehicleCost.Text = String.Format("{0:###,###,##0¥}", objWeapon.TotalCost); lblVehicleHandling.Text = ""; lblVehicleAccel.Text = ""; lblVehicleSpeed.Text = ""; lblVehicleDevice.Text = ""; lblVehiclePilot.Text = ""; lblVehicleBody.Text = ""; lblVehicleArmor.Text = ""; lblVehicleSensor.Text = ""; lblVehicleSlots.Text = "6 (" + objWeapon.SlotsRemaining.ToString() + " " + LanguageManager.Instance.GetString("String_Remaining") + ")"; string strBook = _objOptions.LanguageBookShort(objWeapon.Source); string strPage = objWeapon.Page; lblVehicleSource.Text = strBook + " " + strPage; tipTooltip.SetToolTip(lblVehicleSource, _objOptions.LanguageBookLong(objWeapon.Source) + " " + LanguageManager.Instance.GetString("String_Page") + " " + objWeapon.Page); cmdVehicleMoveToInventory.Enabled = true; // Determine the Dice Pool size. int intPilot = objCurrentVehicle.Pilot; int intAutosoft = 0; bool blnAutosoftFound = false; foreach (Gear objAutosoft in objCurrentVehicle.Gear) { if (objAutosoft.Category.StartsWith("Autosofts") && objAutosoft.Name == "Targeting") { if (!blnAutosoftFound) { if (objAutosoft.Rating > intAutosoft) intAutosoft = objAutosoft.Rating; if (objAutosoft.Extra == objWeapon.DisplayCategory) { intAutosoft = objAutosoft.Rating; blnAutosoftFound = true; } } } } if (intAutosoft == 0) intPilot -= 1; lblVehicleWeaponDicePool.Text = (intPilot + intAutosoft).ToString(); } } if (blnVehicleMod) { chkVehicleWeaponAccessoryInstalled.Enabled = true; chkVehicleWeaponAccessoryInstalled.Checked = objMod.Installed; } else chkVehicleWeaponAccessoryInstalled.Enabled = false; chkVehicleIncludedInWeapon.Checked = false; } else if (treVehicles.SelectedNode.Level == 3) { panVehicleCM.Visible = true; bool blnSensorPlugin = false; Vehicle objSelectedVehicle = new Vehicle(_objCharacter); Gear objGear = _objFunctions.FindVehicleGear(treVehicles.SelectedNode.Tag.ToString(), _objCharacter.Vehicles, out objSelectedVehicle); if (objGear != null) blnSensorPlugin = true; if (blnSensorPlugin) { lblVehicleRating.Text = ""; if (objGear.InternalId == treVehicles.SelectedNode.Tag.ToString()) { lblVehicleGearQty.Text = objGear.Quantity.ToString(); cmdVehicleGearReduceQty.Enabled = true; if (objGear.Rating > 0) lblVehicleRating.Text = objGear.Rating.ToString(); } lblVehicleName.Text = objGear.DisplayNameShort; lblVehicleCategory.Text = objGear.DisplayCategory; lblVehicleAvail.Text = objGear.TotalAvail(true); lblVehicleCost.Text = String.Format("{0:###,###,##0¥}", objGear.TotalCost); lblVehicleHandling.Text = ""; lblVehicleAccel.Text = ""; lblVehicleSpeed.Text = ""; lblVehicleDevice.Text = ""; lblVehiclePilot.Text = ""; lblVehicleBody.Text = ""; lblVehicleArmor.Text = ""; lblVehicleSensor.Text = ""; lblVehicleSlots.Text = objGear.CalculatedCapacity + " (" + objGear.CapacityRemaining.ToString() + " " + LanguageManager.Instance.GetString("String_Remaining") + ")"; string strBook = _objOptions.LanguageBookShort(objGear.Source); string strPage = objGear.Page; lblVehicleSource.Text = strBook + " " + strPage; tipTooltip.SetToolTip(lblVehicleSource, _objOptions.LanguageBookLong(objGear.Source) + " " + LanguageManager.Instance.GetString("String_Page") + " " + objGear.Page); if (objGear.GetType() == typeof(Commlink)) { Commlink objCommlink = (Commlink)objGear; lblVehicleDevice.Text = objCommlink.DeviceRating.ToString(); lblVehicleAttack.Text = objCommlink.Attack.ToString(); lblVehicleSleaze.Text = objCommlink.Sleaze.ToString(); lblVehicleDataProcessing.Text = objCommlink.DataProcessing.ToString(); lblVehicleFirewall.Text = objCommlink.Firewall.ToString(); } if ((_objCharacter.Metatype.EndsWith("A.I.") || _objCharacter.MetatypeCategory == "Technocritters" || _objCharacter.MetatypeCategory == "Protosapients") && objGear.GetType() == typeof(Commlink)) { chkVehicleHomeNode.Visible = true; chkVehicleHomeNode.Checked = objGear.HomeNode; } } else { // Look for the selected Vehicle Weapon. Weapon objWeapon = new Weapon(_objCharacter); Vehicle objCurrentVehicle = new Vehicle(_objCharacter); bool blnWeapon = false; objWeapon = _objFunctions.FindVehicleWeapon(treVehicles.SelectedNode.Tag.ToString(), _objCharacter.Vehicles, out objCurrentVehicle); if (objWeapon != null) blnWeapon = true; if (blnWeapon) { lblVehicleWeaponName.Text = objWeapon.DisplayNameShort; lblVehicleWeaponCategory.Text = objWeapon.DisplayCategory; lblVehicleWeaponDamage.Text = objWeapon.CalculatedDamage(); lblVehicleWeaponAP.Text = objWeapon.TotalAP; lblVehicleWeaponAmmo.Text = objWeapon.CalculatedAmmo(); lblVehicleWeaponMode.Text = objWeapon.CalculatedMode; if (objWeapon.WeaponType == "Ranged") { cmdFireVehicleWeapon.Enabled = true; cmdReloadVehicleWeapon.Enabled = true; lblVehicleWeaponAmmoRemaining.Text = objWeapon.AmmoRemaining.ToString(); cmsVehicleAmmoSingleShot.Enabled = objWeapon.AllowMode("SS") || objWeapon.AllowMode("SA"); cmsVehicleAmmoShortBurst.Enabled = objWeapon.AllowMode("BF"); cmsVehicleAmmoLongBurst.Enabled = objWeapon.AllowMode("FA"); cmsVehicleAmmoFullBurst.Enabled = objWeapon.AllowMode("FA"); cmsVehicleAmmoSuppressiveFire.Enabled = objWeapon.AllowMode("FA"); if (cmsVehicleAmmoFullBurst.Enabled) cmsVehicleAmmoFullBurst.Text = LanguageManager.Instance.GetString("String_FullBurst").Replace("{0}", objWeapon.FullBurst.ToString()); if (cmsVehicleAmmoSuppressiveFire.Enabled) cmsVehicleAmmoSuppressiveFire.Text = LanguageManager.Instance.GetString("String_SuppressiveFire").Replace("{0}", objWeapon.Suppressive.ToString()); List<ListItem> lstAmmo = new List<ListItem>(); int intCurrentSlot = objWeapon.ActiveAmmoSlot; for (int i = 1; i <= objWeapon.AmmoSlots; i++) { Gear objVehicleGear = new Gear(_objCharacter); ListItem objAmmo = new ListItem(); objWeapon.ActiveAmmoSlot = i; objVehicleGear = _objFunctions.FindGear(objWeapon.AmmoLoaded, objCurrentVehicle.Gear); objAmmo.Value = i.ToString(); string strPlugins = ""; foreach (Vehicle objVehicle in _objCharacter.Vehicles) { foreach (Gear objCurrentAmmo in objVehicle.Gear) { if (objCurrentAmmo.InternalId == objWeapon.AmmoLoaded) { foreach (Gear objChild in objCurrentAmmo.Children) { strPlugins += objChild.DisplayNameShort + ", "; } } } } // Remove the trailing comma. if (strPlugins != "") strPlugins = strPlugins.Substring(0, strPlugins.Length - 2); if (objVehicleGear == null) { if (objWeapon.AmmoRemaining == 0) objAmmo.Name = LanguageManager.Instance.GetString("String_SlotNumber").Replace("{0}", i.ToString()) + " " + LanguageManager.Instance.GetString("String_Empty"); else objAmmo.Name = LanguageManager.Instance.GetString("String_SlotNumber").Replace("{0}", i.ToString()) + " " + LanguageManager.Instance.GetString("String_ExternalSource"); } else objAmmo.Name = LanguageManager.Instance.GetString("String_SlotNumber").Replace("{0}", i.ToString()) + " " + objVehicleGear.DisplayNameShort; if (strPlugins != "") objAmmo.Name += " [" + strPlugins + "]"; lstAmmo.Add(objAmmo); } _blnSkipRefresh = true; objWeapon.ActiveAmmoSlot = intCurrentSlot; cboVehicleWeaponAmmo.Enabled = true; cboVehicleWeaponAmmo.ValueMember = "Value"; cboVehicleWeaponAmmo.DisplayMember = "Name"; cboVehicleWeaponAmmo.DataSource = lstAmmo; cboVehicleWeaponAmmo.SelectedValue = objWeapon.ActiveAmmoSlot.ToString(); if (cboVehicleWeaponAmmo.SelectedIndex == -1) cboVehicleWeaponAmmo.SelectedIndex = 0; _blnSkipRefresh = false; } lblVehicleWeaponRangeShort.Text = objWeapon.RangeShort; lblVehicleWeaponRangeMedium.Text = objWeapon.RangeMedium; lblVehicleWeaponRangeLong.Text = objWeapon.RangeLong; lblVehicleWeaponRangeExtreme.Text = objWeapon.RangeExtreme; lblVehicleName.Text = objWeapon.DisplayNameShort; lblVehicleCategory.Text = LanguageManager.Instance.GetString("String_VehicleWeapon"); lblVehicleAvail.Text = objWeapon.TotalAvail; lblVehicleCost.Text = String.Format("{0:###,###,##0¥}", objWeapon.TotalCost); lblVehicleHandling.Text = ""; lblVehicleAccel.Text = ""; lblVehicleSpeed.Text = ""; lblVehicleDevice.Text = ""; lblVehiclePilot.Text = ""; lblVehicleBody.Text = ""; lblVehicleArmor.Text = ""; lblVehicleSensor.Text = ""; lblVehicleSlots.Text = "6 (" + objWeapon.SlotsRemaining.ToString() + " " + LanguageManager.Instance.GetString("String_Remaining") + ")"; string strBook = _objOptions.LanguageBookShort(objWeapon.Source); string strPage = objWeapon.Page; lblVehicleSource.Text = strBook + " " + strPage; tipTooltip.SetToolTip(lblVehicleSource, _objOptions.LanguageBookLong(objWeapon.Source) + " " + LanguageManager.Instance.GetString("String_Page") + " " + objWeapon.Page); cmdVehicleMoveToInventory.Enabled = true; // Determine the Dice Pool size. int intPilot = objCurrentVehicle.Pilot; int intAutosoft = 0; bool blnAutosoftFound = false; foreach (Gear objAutosoft in objCurrentVehicle.Gear) { if (objAutosoft.Category.StartsWith("Autosofts") && objAutosoft.Name == "Targeting") { if (!blnAutosoftFound) { if (objAutosoft.Rating > intAutosoft) intAutosoft = objAutosoft.Rating; if (objAutosoft.Extra == objWeapon.DisplayCategory) { intAutosoft = objAutosoft.Rating; blnAutosoftFound = true; } } } } if (intAutosoft == 0) intPilot -= 1; lblVehicleWeaponDicePool.Text = (intPilot + intAutosoft).ToString(); } else { bool blnCyberware = false; // See if this is a piece of Cyberware. Cyberware objCyberware = _objFunctions.FindVehicleCyberware(treVehicles.SelectedNode.Tag.ToString(), _objCharacter.Vehicles); if (objCyberware != null) blnCyberware = true; if (blnCyberware) { _blnSkipRefresh = true; lblVehicleName.Text = objCyberware.DisplayNameShort; lblVehicleRatingLabel.Text = LanguageManager.Instance.GetString("Label_Rating"); lblVehicleRating.Text = objCyberware.Rating.ToString(); _blnSkipRefresh = false; lblVehicleName.Text = objCyberware.DisplayNameShort; lblVehicleCategory.Text = LanguageManager.Instance.GetString("String_VehicleModification"); lblVehicleAvail.Text = objCyberware.TotalAvail; lblVehicleCost.Text = String.Format("{0:###,###,##0¥}", objCyberware.TotalCost); lblVehicleHandling.Text = ""; lblVehicleAccel.Text = ""; lblVehicleSpeed.Text = ""; lblVehicleDevice.Text = ""; lblVehiclePilot.Text = ""; lblVehicleBody.Text = ""; lblVehicleArmor.Text = ""; lblVehicleSensor.Text = ""; lblVehicleSlots.Text = ""; string strBook = _objOptions.LanguageBookShort(objCyberware.Source); string strPage = objCyberware.Page; lblVehicleSource.Text = strBook + " " + strPage; tipTooltip.SetToolTip(lblVehicleSource, _objOptions.LanguageBookLong(objCyberware.Source) + " " + LanguageManager.Instance.GetString("String_Page") + " " + objCyberware.Page); } } } chkVehicleWeaponAccessoryInstalled.Enabled = false; chkVehicleIncludedInWeapon.Checked = false; } else if (treVehicles.SelectedNode.Level == 4) { panVehicleCM.Visible = true; bool blnSensorPlugin = false; Vehicle objSelectedVehicle = new Vehicle(_objCharacter); Gear objGear = _objFunctions.FindVehicleGear(treVehicles.SelectedNode.Tag.ToString(), _objCharacter.Vehicles, out objSelectedVehicle); if (objGear != null) blnSensorPlugin = true; if (blnSensorPlugin) { lblVehicleRating.Text = ""; if (objGear.InternalId == treVehicles.SelectedNode.Tag.ToString()) { lblVehicleGearQty.Text = objGear.Quantity.ToString(); cmdVehicleGearReduceQty.Enabled = true; if (objGear.Rating > 0) lblVehicleRating.Text = objGear.Rating.ToString(); } lblVehicleName.Text = objGear.DisplayNameShort; lblVehicleCategory.Text = objGear.DisplayCategory; lblVehicleAvail.Text = objGear.TotalAvail(true); lblVehicleCost.Text = String.Format("{0:###,###,##0¥}", objGear.TotalCost); lblVehicleHandling.Text = ""; lblVehicleAccel.Text = ""; lblVehicleSpeed.Text = ""; lblVehicleDevice.Text = ""; lblVehiclePilot.Text = ""; lblVehicleBody.Text = ""; lblVehicleArmor.Text = ""; lblVehicleSensor.Text = ""; lblVehicleSlots.Text = objGear.CalculatedCapacity + " (" + objGear.CapacityRemaining.ToString() + " " + LanguageManager.Instance.GetString("String_Remaining") + ")"; string strBook = _objOptions.LanguageBookShort(objGear.Source); string strPage = objGear.Page; lblVehicleSource.Text = strBook + " " + strPage; tipTooltip.SetToolTip(lblVehicleSource, _objOptions.LanguageBookLong(objGear.Source) + " " + LanguageManager.Instance.GetString("String_Page") + " " + objGear.Page); if (objGear.GetType() == typeof(Commlink)) { Commlink objCommlink = (Commlink)objGear; lblVehicleDevice.Text = objCommlink.DeviceRating.ToString(); lblVehicleAttack.Text = objCommlink.Attack.ToString(); lblVehicleSleaze.Text = objCommlink.Sleaze.ToString(); lblVehicleDataProcessing.Text = objCommlink.DataProcessing.ToString(); lblVehicleFirewall.Text = objCommlink.Firewall.ToString(); } if ((_objCharacter.Metatype.EndsWith("A.I.") || _objCharacter.MetatypeCategory == "Technocritters" || _objCharacter.MetatypeCategory == "Protosapients") && objGear.GetType() == typeof(Commlink)) { chkVehicleHomeNode.Visible = true; chkVehicleHomeNode.Checked = objGear.HomeNode; } } else { bool blnAccessory = false; // Locate the the Selected Vehicle Weapon Accessory of Modification. Weapon objWeapon = new Weapon(_objCharacter); WeaponAccessory objAccessory = _objFunctions.FindVehicleWeaponAccessory(treVehicles.SelectedNode.Tag.ToString(), _objCharacter.Vehicles); if (objAccessory != null) { objWeapon = objAccessory.Parent; blnAccessory = true; } if (blnAccessory) { lblVehicleName.Text = objAccessory.DisplayNameShort; lblVehicleCategory.Text = LanguageManager.Instance.GetString("String_VehicleWeaponAccessory"); lblVehicleAvail.Text = objAccessory.TotalAvail; lblVehicleCost.Text = String.Format("{0:###,###,##0¥}", Convert.ToInt32(objAccessory.TotalCost)); lblVehicleHandling.Text = ""; lblVehicleAccel.Text = ""; lblVehicleSpeed.Text = ""; lblVehicleDevice.Text = ""; lblVehiclePilot.Text = ""; lblVehicleBody.Text = ""; lblVehicleArmor.Text = ""; lblVehicleSensor.Text = ""; string[] strMounts = objAccessory.Mount.Split('/'); string strMount = ""; foreach (string strCurrentMount in strMounts) { if (strCurrentMount != "") strMount += LanguageManager.Instance.GetString("String_Mount" + strCurrentMount) + "/"; } // Remove the trailing / if (strMount != "" && strMount.Contains('/')) strMount = strMount.Substring(0, strMount.Length - 1); lblVehicleSlots.Text = strMount; string strBook = _objOptions.LanguageBookShort(objAccessory.Source); string strPage = objAccessory.Page; lblVehicleSource.Text = strBook + " " + strPage; tipTooltip.SetToolTip(lblVehicleSource, _objOptions.LanguageBookLong(objAccessory.Source) + " " + LanguageManager.Instance.GetString("String_Page") + " " + objAccessory.Page); chkVehicleWeaponAccessoryInstalled.Enabled = true; chkVehicleWeaponAccessoryInstalled.Checked = objAccessory.Installed; chkVehicleIncludedInWeapon.Checked = objAccessory.IncludedInWeapon; lblVehicleWeaponRangeShort.Text = objWeapon.RangeShort; lblVehicleWeaponRangeMedium.Text = objWeapon.RangeMedium; lblVehicleWeaponRangeLong.Text = objWeapon.RangeLong; lblVehicleWeaponRangeExtreme.Text = objWeapon.RangeExtreme; cmdFireVehicleWeapon.Enabled = false; cmdReloadVehicleWeapon.Enabled = false; cboVehicleWeaponAmmo.Enabled = false; } else { bool blnMod = false; // Locate the selected Vehicle Weapon Modification. WeaponMod objMod = _objFunctions.FindVehicleWeaponMod(treVehicles.SelectedNode.Tag.ToString(), _objCharacter.Vehicles); if (objMod != null) { objWeapon = objMod.Parent; blnMod = true; } if (blnMod) { lblVehicleName.Text = objMod.DisplayNameShort; lblVehicleCategory.Text = LanguageManager.Instance.GetString("String_VehicleWeaponModification"); lblVehicleAvail.Text = objMod.TotalAvail; lblVehicleCost.Text = String.Format("{0:###,###,##0¥}", Convert.ToInt32(objMod.TotalCost)); lblVehicleHandling.Text = ""; lblVehicleAccel.Text = ""; lblVehicleSpeed.Text = ""; lblVehicleDevice.Text = ""; lblVehiclePilot.Text = ""; lblVehicleBody.Text = ""; lblVehicleArmor.Text = ""; lblVehicleSensor.Text = ""; lblVehicleSlots.Text = objMod.Slots.ToString(); string strBook = _objOptions.LanguageBookShort(objMod.Source); string strPage = objMod.Page; lblVehicleSource.Text = strBook + " " + strPage; tipTooltip.SetToolTip(lblVehicleSource, _objOptions.LanguageBookLong(objMod.Source) + " " + LanguageManager.Instance.GetString("String_Page") + " " + objMod.Page); chkVehicleWeaponAccessoryInstalled.Enabled = true; chkVehicleWeaponAccessoryInstalled.Checked = objMod.Installed; chkVehicleIncludedInWeapon.Checked = objMod.IncludedInWeapon; lblVehicleWeaponRangeShort.Text = objWeapon.RangeShort; lblVehicleWeaponRangeMedium.Text = objWeapon.RangeMedium; lblVehicleWeaponRangeLong.Text = objWeapon.RangeLong; lblVehicleWeaponRangeExtreme.Text = objWeapon.RangeExtreme; cmdFireVehicleWeapon.Enabled = false; cmdReloadVehicleWeapon.Enabled = false; cboVehicleWeaponAmmo.Enabled = false; } else { // If it's none of these, it must be an Underbarrel Weapon. Vehicle objCurrentVehicle = new Vehicle(_objCharacter); objWeapon = _objFunctions.FindVehicleWeapon(treVehicles.SelectedNode.Tag.ToString(), _objCharacter.Vehicles, out objCurrentVehicle); lblVehicleWeaponName.Text = objWeapon.DisplayNameShort; lblVehicleWeaponCategory.Text = objWeapon.DisplayCategory; lblVehicleWeaponDamage.Text = objWeapon.CalculatedDamage(); lblVehicleWeaponAP.Text = objWeapon.TotalAP; lblVehicleWeaponAmmo.Text = objWeapon.CalculatedAmmo(); lblVehicleWeaponMode.Text = objWeapon.CalculatedMode; if (objWeapon.WeaponType == "Ranged") { cmdFireVehicleWeapon.Enabled = true; cmdReloadVehicleWeapon.Enabled = true; lblVehicleWeaponAmmoRemaining.Text = objWeapon.AmmoRemaining.ToString(); cmsVehicleAmmoSingleShot.Enabled = objWeapon.AllowMode("SS") || objWeapon.AllowMode("SA"); cmsVehicleAmmoShortBurst.Enabled = objWeapon.AllowMode("BF"); cmsVehicleAmmoLongBurst.Enabled = objWeapon.AllowMode("FA"); cmsVehicleAmmoFullBurst.Enabled = objWeapon.AllowMode("FA"); cmsVehicleAmmoSuppressiveFire.Enabled = objWeapon.AllowMode("FA"); if (cmsVehicleAmmoFullBurst.Enabled) cmsVehicleAmmoFullBurst.Text = LanguageManager.Instance.GetString("String_FullBurst").Replace("{0}", objWeapon.FullBurst.ToString()); if (cmsVehicleAmmoSuppressiveFire.Enabled) cmsVehicleAmmoSuppressiveFire.Text = LanguageManager.Instance.GetString("String_SuppressiveFire").Replace("{0}", objWeapon.Suppressive.ToString()); } List<ListItem> lstAmmo = new List<ListItem>(); int intCurrentSlot = objWeapon.ActiveAmmoSlot; for (int i = 1; i <= objWeapon.AmmoSlots; i++) { Gear objVehicleGear = new Gear(_objCharacter); ListItem objAmmo = new ListItem(); objWeapon.ActiveAmmoSlot = i; objVehicleGear = _objFunctions.FindGear(objWeapon.AmmoLoaded, objCurrentVehicle.Gear); objAmmo.Value = i.ToString(); string strPlugins = ""; foreach (Vehicle objVehicle in _objCharacter.Vehicles) { foreach (Gear objCurrentAmmo in objVehicle.Gear) { if (objCurrentAmmo.InternalId == objWeapon.AmmoLoaded) { foreach (Gear objChild in objCurrentAmmo.Children) { strPlugins += objChild.DisplayNameShort + ", "; } } } } // Remove the trailing comma. if (strPlugins != "") strPlugins = strPlugins.Substring(0, strPlugins.Length - 2); if (objVehicleGear == null) { if (objWeapon.AmmoRemaining == 0) objAmmo.Name = LanguageManager.Instance.GetString("String_SlotNumber").Replace("{0}", i.ToString()) + " " + LanguageManager.Instance.GetString("String_Empty"); else objAmmo.Name = LanguageManager.Instance.GetString("String_SlotNumber").Replace("{0}", i.ToString()) + " " + LanguageManager.Instance.GetString("String_ExternalSource"); } else objAmmo.Name = LanguageManager.Instance.GetString("String_SlotNumber").Replace("{0}", i.ToString()) + " " + objVehicleGear.DisplayNameShort; if (strPlugins != "") objAmmo.Name += " [" + strPlugins + "]"; lstAmmo.Add(objAmmo); } _blnSkipRefresh = true; objWeapon.ActiveAmmoSlot = intCurrentSlot; cboVehicleWeaponAmmo.Enabled = true; cboVehicleWeaponAmmo.ValueMember = "Value"; cboVehicleWeaponAmmo.DisplayMember = "Name"; cboVehicleWeaponAmmo.DataSource = lstAmmo; cboVehicleWeaponAmmo.SelectedValue = objWeapon.ActiveAmmoSlot.ToString(); if (cboVehicleWeaponAmmo.SelectedIndex == -1) cboVehicleWeaponAmmo.SelectedIndex = 0; _blnSkipRefresh = false; lblVehicleWeaponRangeShort.Text = objWeapon.RangeShort; lblVehicleWeaponRangeMedium.Text = objWeapon.RangeMedium; lblVehicleWeaponRangeLong.Text = objWeapon.RangeLong; lblVehicleWeaponRangeExtreme.Text = objWeapon.RangeExtreme; lblVehicleName.Text = objWeapon.DisplayNameShort; lblVehicleCategory.Text = LanguageManager.Instance.GetString("String_VehicleWeapon"); lblVehicleAvail.Text = objWeapon.TotalAvail; lblVehicleCost.Text = String.Format("{0:###,###,##0¥}", objWeapon.TotalCost); lblVehicleHandling.Text = ""; lblVehicleAccel.Text = ""; lblVehicleSpeed.Text = ""; lblVehicleDevice.Text = ""; lblVehiclePilot.Text = ""; lblVehicleBody.Text = ""; lblVehicleArmor.Text = ""; lblVehicleSensor.Text = ""; lblVehicleSlots.Text = "6 (" + objWeapon.SlotsRemaining.ToString() + " " + LanguageManager.Instance.GetString("String_Remaining") + ")"; string strBook = _objOptions.LanguageBookShort(objWeapon.Source); string strPage = objWeapon.Page; lblVehicleSource.Text = strBook + " " + strPage; _blnSkipRefresh = true; chkVehicleWeaponAccessoryInstalled.Enabled = true; chkVehicleWeaponAccessoryInstalled.Checked = objWeapon.Installed; _blnSkipRefresh = false; tipTooltip.SetToolTip(lblVehicleSource, _objOptions.LanguageBookLong(objWeapon.Source) + " " + LanguageManager.Instance.GetString("String_Page") + " " + objWeapon.Page); // Determine the Dice Pool size. int intPilot = objCurrentVehicle.Pilot; int intAutosoft = 0; bool blnAutosoftFound = false; foreach (Gear objAutosoft in objCurrentVehicle.Gear) { if (objAutosoft.Category.StartsWith("Autosofts") && objAutosoft.Name == "Targeting") { if (!blnAutosoftFound) { if (objAutosoft.Rating > intAutosoft) intAutosoft = objAutosoft.Rating; if (objAutosoft.Extra == objWeapon.DisplayCategory) { intAutosoft = objAutosoft.Rating; blnAutosoftFound = true; } } } } if (intAutosoft == 0) intPilot -= 1; lblVehicleWeaponDicePool.Text = (intPilot + intAutosoft).ToString(); } } } } else if (treVehicles.SelectedNode.Level == 5) { panVehicleCM.Visible = true; bool blnFound = false; // Locate the the Selected Vehicle Underbarrel Weapon Accessory or Modification. Weapon objWeapon = new Weapon(_objCharacter); WeaponAccessory objAccessory = _objFunctions.FindVehicleWeaponAccessory(treVehicles.SelectedNode.Tag.ToString(), _objCharacter.Vehicles); if (objAccessory != null) { blnFound = true; objWeapon = objAccessory.Parent; } if (blnFound) { lblVehicleName.Text = objAccessory.DisplayNameShort; lblVehicleCategory.Text = LanguageManager.Instance.GetString("String_VehicleWeaponAccessory"); lblVehicleAvail.Text = objAccessory.TotalAvail; lblVehicleCost.Text = String.Format("{0:###,###,##0¥}", Convert.ToInt32(objAccessory.TotalCost)); lblVehicleHandling.Text = ""; lblVehicleAccel.Text = ""; lblVehicleSpeed.Text = ""; lblVehicleDevice.Text = ""; lblVehiclePilot.Text = ""; lblVehicleBody.Text = ""; lblVehicleArmor.Text = ""; lblVehicleSensor.Text = ""; string[] strMounts = objAccessory.Mount.Split('/'); string strMount = ""; foreach (string strCurrentMount in strMounts) { if (strCurrentMount != "") strMount += LanguageManager.Instance.GetString("String_Mount" + strCurrentMount) + "/"; } // Remove the trailing / if (strMount != "" && strMount.Contains('/')) strMount = strMount.Substring(0, strMount.Length - 1); lblVehicleSlots.Text = strMount; string strBook = _objOptions.LanguageBookShort(objAccessory.Source); string strPage = objAccessory.Page; lblVehicleSource.Text = strBook + " " + strPage; tipTooltip.SetToolTip(lblVehicleSource, _objOptions.LanguageBookLong(objAccessory.Source) + " " + LanguageManager.Instance.GetString("String_Page") + " " + objAccessory.Page); chkVehicleWeaponAccessoryInstalled.Enabled = true; chkVehicleWeaponAccessoryInstalled.Checked = objAccessory.Installed; chkVehicleIncludedInWeapon.Checked = objAccessory.IncludedInWeapon; lblVehicleWeaponRangeShort.Text = objWeapon.RangeShort; lblVehicleWeaponRangeMedium.Text = objWeapon.RangeMedium; lblVehicleWeaponRangeLong.Text = objWeapon.RangeLong; lblVehicleWeaponRangeExtreme.Text = objWeapon.RangeExtreme; cmdFireVehicleWeapon.Enabled = false; cmdReloadVehicleWeapon.Enabled = false; cboVehicleWeaponAmmo.Enabled = false; } else { // Locate the selected Vehicle Weapon Modification. WeaponMod objMod = _objFunctions.FindVehicleWeaponMod(treVehicles.SelectedNode.Tag.ToString(), _objCharacter.Vehicles); if (objMod != null) { blnFound = true; objWeapon = objMod.Parent; } if (blnFound) { lblVehicleName.Text = objMod.DisplayNameShort; lblVehicleCategory.Text = LanguageManager.Instance.GetString("String_VehicleWeaponModification"); lblVehicleAvail.Text = objMod.TotalAvail; lblVehicleCost.Text = String.Format("{0:###,###,##0¥}", Convert.ToInt32(objMod.TotalCost)); lblVehicleHandling.Text = ""; lblVehicleAccel.Text = ""; lblVehicleSpeed.Text = ""; lblVehicleDevice.Text = ""; lblVehiclePilot.Text = ""; lblVehicleBody.Text = ""; lblVehicleArmor.Text = ""; lblVehicleSensor.Text = ""; lblVehicleSlots.Text = objMod.Slots.ToString(); string strBook = _objOptions.LanguageBookShort(objMod.Source); string strPage = objMod.Page; lblVehicleSource.Text = strBook + " " + strPage; tipTooltip.SetToolTip(lblVehicleSource, _objOptions.LanguageBookLong(objMod.Source) + " " + LanguageManager.Instance.GetString("String_Page") + " " + objMod.Page); chkVehicleWeaponAccessoryInstalled.Enabled = true; chkVehicleWeaponAccessoryInstalled.Checked = objMod.Installed; chkVehicleIncludedInWeapon.Checked = objMod.IncludedInWeapon; lblVehicleWeaponRangeShort.Text = objWeapon.RangeShort; lblVehicleWeaponRangeMedium.Text = objWeapon.RangeMedium; lblVehicleWeaponRangeLong.Text = objWeapon.RangeLong; lblVehicleWeaponRangeExtreme.Text = objWeapon.RangeExtreme; cmdFireVehicleWeapon.Enabled = false; cmdReloadVehicleWeapon.Enabled = false; cboVehicleWeaponAmmo.Enabled = false; } else { panVehicleCM.Visible = true; Vehicle objSelectedVehicle = new Vehicle(_objCharacter); Gear objGear = _objFunctions.FindVehicleGear(treVehicles.SelectedNode.Tag.ToString(), _objCharacter.Vehicles, out objSelectedVehicle); lblVehicleRating.Text = ""; if (objGear.InternalId == treVehicles.SelectedNode.Tag.ToString()) { lblVehicleGearQty.Text = objGear.Quantity.ToString(); cmdVehicleGearReduceQty.Enabled = true; if (objGear.Rating > 0) lblVehicleRating.Text = objGear.Rating.ToString(); } lblVehicleName.Text = objGear.DisplayNameShort; lblVehicleCategory.Text = objGear.DisplayCategory; lblVehicleAvail.Text = objGear.TotalAvail(true); lblVehicleCost.Text = String.Format("{0:###,###,##0¥}", objGear.TotalCost); lblVehicleHandling.Text = ""; lblVehicleAccel.Text = ""; lblVehicleSpeed.Text = ""; lblVehicleDevice.Text = ""; lblVehiclePilot.Text = ""; lblVehicleBody.Text = ""; lblVehicleArmor.Text = ""; lblVehicleSensor.Text = ""; lblVehicleSlots.Text = objGear.CalculatedCapacity + " (" + objGear.CapacityRemaining.ToString() + " " + LanguageManager.Instance.GetString("String_Remaining") + ")"; string strBook = _objOptions.LanguageBookShort(objGear.Source); string strPage = objGear.Page; lblVehicleSource.Text = strBook + " " + strPage; tipTooltip.SetToolTip(lblVehicleSource, _objOptions.LanguageBookLong(objGear.Source) + " " + LanguageManager.Instance.GetString("String_Page") + " " + objGear.Page); if (objGear.GetType() == typeof(Commlink)) { Commlink objCommlink = (Commlink)objGear; lblVehicleDevice.Text = objCommlink.DeviceRating.ToString(); lblVehicleAttack.Text = objCommlink.Attack.ToString(); lblVehicleSleaze.Text = objCommlink.Sleaze.ToString(); lblVehicleDataProcessing.Text = objCommlink.DataProcessing.ToString(); lblVehicleFirewall.Text = objCommlink.Firewall.ToString(); } if ((_objCharacter.Metatype.EndsWith("A.I.") || _objCharacter.MetatypeCategory == "Technocritters" || _objCharacter.MetatypeCategory == "Protosapients") && objGear.GetType() == typeof(Commlink)) { chkVehicleHomeNode.Visible = true; chkVehicleHomeNode.Checked = objGear.HomeNode; } } } } else if (treVehicles.SelectedNode.Level > 5) { panVehicleCM.Visible = true; Vehicle objSelectedVehicle = new Vehicle(_objCharacter); Gear objGear = _objFunctions.FindVehicleGear(treVehicles.SelectedNode.Tag.ToString(), _objCharacter.Vehicles, out objSelectedVehicle); lblVehicleRating.Text = ""; if (objGear.InternalId == treVehicles.SelectedNode.Tag.ToString()) { lblVehicleGearQty.Text = objGear.Quantity.ToString(); cmdVehicleGearReduceQty.Enabled = true; if (objGear.Rating > 0) lblVehicleRating.Text = objGear.Rating.ToString(); } lblVehicleName.Text = objGear.DisplayNameShort; lblVehicleCategory.Text = objGear.DisplayCategory; lblVehicleAvail.Text = objGear.TotalAvail(true); lblVehicleCost.Text = String.Format("{0:###,###,##0¥}", objGear.TotalCost); lblVehicleHandling.Text = ""; lblVehicleAccel.Text = ""; lblVehicleSpeed.Text = ""; lblVehicleDevice.Text = ""; lblVehiclePilot.Text = ""; lblVehicleBody.Text = ""; lblVehicleArmor.Text = ""; lblVehicleSensor.Text = ""; lblVehicleSlots.Text = objGear.CalculatedCapacity + " (" + objGear.CapacityRemaining.ToString() + " " + LanguageManager.Instance.GetString("String_Remaining") + ")"; string strBook = _objOptions.LanguageBookShort(objGear.Source); string strPage = objGear.Page; lblVehicleSource.Text = strBook + " " + strPage; tipTooltip.SetToolTip(lblVehicleSource, _objOptions.LanguageBookLong(objGear.Source) + " " + LanguageManager.Instance.GetString("String_Page") + " " + objGear.Page); if (objGear.GetType() == typeof(Commlink)) { Commlink objCommlink = (Commlink)objGear; lblVehicleDevice.Text = objCommlink.DeviceRating.ToString(); lblVehicleAttack.Text = objCommlink.Attack.ToString(); lblVehicleSleaze.Text = objCommlink.Sleaze.ToString(); lblVehicleDataProcessing.Text = objCommlink.DataProcessing.ToString(); lblVehicleFirewall.Text = objCommlink.Firewall.ToString(); } if ((_objCharacter.Metatype.EndsWith("A.I.") || _objCharacter.MetatypeCategory == "Technocritters" || _objCharacter.MetatypeCategory == "Protosapients") && objGear.GetType() == typeof(Commlink)) { chkVehicleHomeNode.Visible = true; chkVehicleHomeNode.Checked = objGear.HomeNode; } } else panVehicleCM.Visible = false; }
/// <summary> /// Refresh the information for the currently displayed Weapon. /// </summary> public void RefreshSelectedWeapon() { lblWeaponDeviceRating.Text = ""; lblWeaponAttack.Text = ""; lblWeaponSleaze.Text = ""; lblWeaponDataProcessing.Text = ""; lblWeaponFirewall.Text = ""; bool blnClear = false; try { if (treWeapons.SelectedNode.Level == 0) blnClear = true; } catch { blnClear = true; } if (blnClear) { lblWeaponName.Text = ""; lblWeaponCategory.Text = ""; lblWeaponAvail.Text = ""; lblWeaponCost.Text = ""; lblWeaponConceal.Text = ""; lblWeaponAccuracy.Text = ""; lblWeaponDamage.Text = ""; lblWeaponRC.Text = ""; lblWeaponAP.Text = ""; lblWeaponReach.Text = ""; lblWeaponMode.Text = ""; lblWeaponAmmo.Text = ""; lblWeaponSource.Text = ""; cboWeaponAmmo.Enabled = false; tipTooltip.SetToolTip(lblWeaponSource, null); chkWeaponAccessoryInstalled.Enabled = false; chkIncludedInWeapon.Enabled = false; chkIncludedInWeapon.Checked = false; // Disable the fire button. cmdFireWeapon.Enabled = false; cmdReloadWeapon.Enabled = false; cmdWeaponBuyAmmo.Enabled = false; cboWeaponAmmo.Enabled = false; // Hide Weapon Ranges. lblWeaponRangeShort.Text = ""; lblWeaponRangeMedium.Text = ""; lblWeaponRangeLong.Text = ""; lblWeaponRangeExtreme.Text = ""; return; } lblWeaponDicePool.Text = ""; tipTooltip.SetToolTip(lblWeaponDicePool, ""); cmdWeaponMoveToVehicle.Enabled = false; // Locate the selected Weapon. if (treWeapons.SelectedNode.Level == 1) { Weapon objWeapon = _objFunctions.FindWeapon(treWeapons.SelectedNode.Tag.ToString(), _objCharacter.Weapons); if (objWeapon == null) return; _blnSkipRefresh = true; lblWeaponName.Text = objWeapon.DisplayNameShort; lblWeaponCategory.Text = objWeapon.DisplayCategory; string strBook = _objOptions.LanguageBookShort(objWeapon.Source); string strPage = objWeapon.Page; lblWeaponSource.Text = strBook + " " + strPage; tipTooltip.SetToolTip(lblWeaponSource, _objOptions.LanguageBookLong(objWeapon.Source) + " " + LanguageManager.Instance.GetString("String_Page") + " " + objWeapon.Page); chkWeaponAccessoryInstalled.Enabled = false; chkIncludedInWeapon.Enabled = false; chkIncludedInWeapon.Checked = false; // Do not allow Cyberware of Gear Weapons to be moved. if (!objWeapon.Cyberware && objWeapon.Category != "Gear") { if (_objCharacter.Vehicles.Count > 0) cmdWeaponMoveToVehicle.Enabled = true; else cmdWeaponMoveToVehicle.Enabled = false; } // Enable the fire button if the Weapon is Ranged. if (objWeapon.WeaponType == "Ranged" || (objWeapon.WeaponType == "Melee" && objWeapon.Ammo != "0")) { cmdFireWeapon.Enabled = true; cmdReloadWeapon.Enabled = true; cmdWeaponBuyAmmo.Enabled = true; lblWeaponAmmoRemaining.Text = objWeapon.AmmoRemaining.ToString(); //lblWeaponAmmoType.Text = "External Source"; cmsAmmoSingleShot.Enabled = objWeapon.AllowMode(LanguageManager.Instance.GetString("String_ModeSingleShot")) || objWeapon.AllowMode(LanguageManager.Instance.GetString("String_ModeSemiAutomatic")); cmsAmmoShortBurst.Enabled = objWeapon.AllowMode(LanguageManager.Instance.GetString("String_ModeBurstFire")) || objWeapon.AllowMode(LanguageManager.Instance.GetString("String_ModeFullAutomatic")); cmsAmmoLongBurst.Enabled = objWeapon.AllowMode(LanguageManager.Instance.GetString("String_ModeFullAutomatic")); cmsAmmoFullBurst.Enabled = objWeapon.AllowMode(LanguageManager.Instance.GetString("String_ModeFullAutomatic")); cmsAmmoSuppressiveFire.Enabled = objWeapon.AllowMode(LanguageManager.Instance.GetString("String_ModeFullAutomatic")); // Melee Weapons with Ammo are considered to be Single Shot. if (objWeapon.WeaponType == "Melee" && objWeapon.Ammo != "0") cmsAmmoSingleShot.Enabled = true; if (cmsAmmoFullBurst.Enabled) cmsAmmoFullBurst.Text = LanguageManager.Instance.GetString("String_FullBurst").Replace("{0}", objWeapon.FullBurst.ToString()); if (cmsAmmoSuppressiveFire.Enabled) cmsAmmoSuppressiveFire.Text = LanguageManager.Instance.GetString("String_SuppressiveFire").Replace("{0}", objWeapon.Suppressive.ToString()); List<ListItem> lstAmmo = new List<ListItem>(); int intCurrentSlot = objWeapon.ActiveAmmoSlot; for (int i = 1; i <= objWeapon.AmmoSlots; i++) { Gear objGear = new Gear(_objCharacter); ListItem objAmmo = new ListItem(); objWeapon.ActiveAmmoSlot = i; objGear = _objFunctions.FindGear(objWeapon.AmmoLoaded, _objCharacter.Gear); objAmmo.Value = i.ToString(); string strPlugins = ""; if (objGear != null) { foreach (Gear objChild in objGear.Children) { strPlugins += objChild.DisplayNameShort + ", "; } } // Remove the trailing comma. if (strPlugins != "") strPlugins = strPlugins.Substring(0, strPlugins.Length - 2); if (objGear == null) { if (objWeapon.AmmoRemaining == 0) objAmmo.Name = LanguageManager.Instance.GetString("String_SlotNumber").Replace("{0}", i.ToString()) + " " + LanguageManager.Instance.GetString("String_Empty"); else objAmmo.Name = LanguageManager.Instance.GetString("String_SlotNumber").Replace("{0}", i.ToString()) + " " + LanguageManager.Instance.GetString("String_ExternalSource"); } else objAmmo.Name = LanguageManager.Instance.GetString("String_SlotNumber").Replace("{0}", i.ToString()) + " " + objGear.DisplayNameShort; if (strPlugins != "") objAmmo.Name += " [" + strPlugins + "]"; lstAmmo.Add(objAmmo); } _blnSkipRefresh = true; objWeapon.ActiveAmmoSlot = intCurrentSlot; cboWeaponAmmo.Enabled = true; cboWeaponAmmo.ValueMember = "Value"; cboWeaponAmmo.DisplayMember = "Name"; cboWeaponAmmo.DataSource = lstAmmo; cboWeaponAmmo.SelectedValue = objWeapon.ActiveAmmoSlot.ToString(); if (cboWeaponAmmo.SelectedIndex == -1) cboWeaponAmmo.SelectedIndex = 0; _blnSkipRefresh = false; } else { cmdFireWeapon.Enabled = false; cmdReloadWeapon.Enabled = false; cmdWeaponBuyAmmo.Enabled = false; lblWeaponAmmoRemaining.Text = ""; cboWeaponAmmo.Enabled = false; } // If this is a Cyberweapon, grab the STR of the limb. int intUseSTR = 0; if (objWeapon.Cyberware) { foreach (Cyberware objCyberware in _objCharacter.Cyberware) { foreach (Cyberware objPlugin in objCyberware.Children) { if (objPlugin.WeaponID == objWeapon.InternalId) { intUseSTR = objCyberware.TotalStrength; break; } } } } // Show the Weapon Ranges. lblWeaponRangeShort.Text = objWeapon.RangeShort; lblWeaponRangeMedium.Text = objWeapon.RangeMedium; lblWeaponRangeLong.Text = objWeapon.RangeLong; lblWeaponRangeExtreme.Text = objWeapon.RangeExtreme; _blnSkipRefresh = false; lblWeaponAvail.Text = objWeapon.TotalAvail; lblWeaponCost.Text = String.Format("{0:###,###,##0¥}", objWeapon.TotalCost); lblWeaponConceal.Text = objWeapon.CalculatedConcealability(); lblWeaponDamage.Text = objWeapon.CalculatedDamage(intUseSTR); lblWeaponAccuracy.Text = objWeapon.TotalAccuracy.ToString(); lblWeaponRC.Text = objWeapon.TotalRC; lblWeaponAP.Text = objWeapon.TotalAP; lblWeaponReach.Text = objWeapon.TotalReach.ToString(); lblWeaponMode.Text = objWeapon.CalculatedMode; lblWeaponAmmo.Text = objWeapon.CalculatedAmmo(); lblWeaponSlots.Text = "6 (" + objWeapon.SlotsRemaining.ToString() + " " + LanguageManager.Instance.GetString("String_Remaining") + ")"; lblWeaponDicePool.Text = objWeapon.DicePool; tipTooltip.SetToolTip(lblWeaponDicePool, objWeapon.DicePoolTooltip); tipTooltip.SetToolTip(lblWeaponRC, objWeapon.RCToolTip); UpdateCharacterInfo(); } else { // See if this is an Underbarrel Weapon. bool blnUnderbarrel = false; Weapon objWeapon = new Weapon(_objCharacter); foreach (Weapon objCharacterWeapon in _objCharacter.Weapons) { if (objCharacterWeapon.UnderbarrelWeapons.Count > 0) { foreach (Weapon objUnderbarrelWeapon in objCharacterWeapon.UnderbarrelWeapons) { if (objUnderbarrelWeapon.InternalId == treWeapons.SelectedNode.Tag.ToString()) { objWeapon = objUnderbarrelWeapon; blnUnderbarrel = true; break; } } } } if (blnUnderbarrel) { cmdFireWeapon.Enabled = true; cmdReloadWeapon.Enabled = true; cmdWeaponBuyAmmo.Enabled = true; lblWeaponAvail.Text = objWeapon.TotalAvail; lblWeaponCost.Text = String.Format("{0:###,###,##0¥}", objWeapon.TotalCost); lblWeaponConceal.Text = "+4"; lblWeaponDamage.Text = objWeapon.CalculatedDamage(); lblWeaponRC.Text = objWeapon.TotalRC; lblWeaponAccuracy.Text = objWeapon.TotalAccuracy.ToString(); lblWeaponAP.Text = objWeapon.TotalAP; lblWeaponReach.Text = objWeapon.TotalReach.ToString(); lblWeaponMode.Text = objWeapon.CalculatedMode; lblWeaponAmmo.Text = objWeapon.CalculatedAmmo(); lblWeaponSlots.Text = "6 (" + objWeapon.SlotsRemaining.ToString() + " " + LanguageManager.Instance.GetString("String_Remaining") + ")"; lblWeaponDicePool.Text = objWeapon.DicePool; tipTooltip.SetToolTip(lblWeaponDicePool, objWeapon.DicePoolTooltip); UpdateCharacterInfo(); cmsAmmoSingleShot.Enabled = objWeapon.AllowMode("SS") || objWeapon.AllowMode("SA"); cmsAmmoShortBurst.Enabled = objWeapon.AllowMode("BF") || objWeapon.AllowMode("FA"); cmsAmmoLongBurst.Enabled = objWeapon.AllowMode("FA"); cmsAmmoFullBurst.Enabled = objWeapon.AllowMode("FA"); cmsAmmoSuppressiveFire.Enabled = objWeapon.AllowMode("FA"); // Melee Weapons with Ammo are considered to be Single Shot. if (objWeapon.WeaponType == "Melee" && objWeapon.Ammo != "0") cmsAmmoSingleShot.Enabled = true; if (cmsAmmoFullBurst.Enabled) cmsAmmoFullBurst.Text = LanguageManager.Instance.GetString("String_FullBurst").Replace("{0}", objWeapon.FullBurst.ToString()); if (cmsAmmoSuppressiveFire.Enabled) cmsAmmoSuppressiveFire.Text = LanguageManager.Instance.GetString("String_SuppressiveFire").Replace("{0}", objWeapon.Suppressive.ToString()); List<ListItem> lstAmmo = new List<ListItem>(); int intCurrentSlot = objWeapon.ActiveAmmoSlot; for (int i = 1; i <= objWeapon.AmmoSlots; i++) { Gear objGear = new Gear(_objCharacter); ListItem objAmmo = new ListItem(); objWeapon.ActiveAmmoSlot = i; objGear = _objFunctions.FindGear(objWeapon.AmmoLoaded, _objCharacter.Gear); objAmmo.Value = i.ToString(); string strPlugins = ""; if (objGear != null) { foreach (Gear objChild in objGear.Children) { strPlugins += objChild.DisplayNameShort + ", "; } } // Remove the trailing comma. if (strPlugins != string.Empty) strPlugins = strPlugins.Substring(0, strPlugins.Length - 2); if (objGear == null) objAmmo.Name = LanguageManager.Instance.GetString("String_SlotNumber").Replace("{0}", i.ToString()) + " " + LanguageManager.Instance.GetString("String_Empty"); else objAmmo.Name = LanguageManager.Instance.GetString("String_SlotNumber").Replace("{0}", i.ToString()) + " " + objGear.DisplayNameShort; if (strPlugins != "") objAmmo.Name += " [" + strPlugins + "]"; lstAmmo.Add(objAmmo); } _blnSkipRefresh = true; chkWeaponAccessoryInstalled.Enabled = true; chkWeaponAccessoryInstalled.Checked = objWeapon.Installed; chkIncludedInWeapon.Enabled = false; chkIncludedInWeapon.Checked = objWeapon.IncludedInWeapon; objWeapon.ActiveAmmoSlot = intCurrentSlot; cboWeaponAmmo.Enabled = true; cboWeaponAmmo.ValueMember = "Value"; cboWeaponAmmo.DisplayMember = "Name"; cboWeaponAmmo.DataSource = lstAmmo; cboWeaponAmmo.SelectedValue = objWeapon.ActiveAmmoSlot.ToString(); if (cboWeaponAmmo.SelectedIndex == -1) cboWeaponAmmo.SelectedIndex = 0; // Show the Weapon Ranges. lblWeaponAmmoRemaining.Text = objWeapon.AmmoRemaining.ToString(); lblWeaponRangeShort.Text = objWeapon.RangeShort; lblWeaponRangeMedium.Text = objWeapon.RangeMedium; lblWeaponRangeLong.Text = objWeapon.RangeLong; lblWeaponRangeExtreme.Text = objWeapon.RangeExtreme; _blnSkipRefresh = false; } else { cmdFireWeapon.Enabled = false; cmdReloadWeapon.Enabled = false; cmdWeaponBuyAmmo.Enabled = false; cboWeaponAmmo.Enabled = false; bool blnAccessory = false; Weapon objSelectedWeapon = new Weapon(_objCharacter); WeaponAccessory objSelectedAccessory = _objFunctions.FindWeaponAccessory(treWeapons.SelectedNode.Tag.ToString(), _objCharacter.Weapons); if (objSelectedAccessory != null) { blnAccessory = true; objSelectedWeapon = objSelectedAccessory.Parent; } if (blnAccessory) { lblWeaponName.Text = objSelectedAccessory.DisplayNameShort; lblWeaponCategory.Text = LanguageManager.Instance.GetString("String_WeaponAccessory"); lblWeaponAvail.Text = objSelectedAccessory.TotalAvail; lblWeaponAccuracy.Text = objWeapon.TotalAccuracy.ToString(); lblWeaponCost.Text = String.Format("{0:###,###,##0¥}", Convert.ToInt32(objSelectedAccessory.TotalCost)); lblWeaponConceal.Text = objSelectedAccessory.Concealability.ToString(); lblWeaponDamage.Text = ""; lblWeaponRC.Text = objSelectedAccessory.RC; lblWeaponAP.Text = ""; lblWeaponReach.Text = ""; lblWeaponMode.Text = ""; lblWeaponAmmo.Text = ""; string[] strMounts = objSelectedAccessory.Mount.Split('/'); string strMount = ""; foreach (string strCurrentMount in strMounts) { if (strCurrentMount != "") strMount += LanguageManager.Instance.GetString("String_Mount" + strCurrentMount) + "/"; } // Remove the trailing / if (strMount != "" && strMount.Contains('/')) strMount = strMount.Substring(0, strMount.Length - 1); lblWeaponSlots.Text = strMount; string strBook = _objOptions.LanguageBookShort(objSelectedAccessory.Source); string strPage = objSelectedAccessory.Page; lblWeaponSource.Text = strBook + " " + strPage; tipTooltip.SetToolTip(lblWeaponSource, _objOptions.LanguageBookLong(objSelectedAccessory.Source) + " " + LanguageManager.Instance.GetString("String_Page") + " " + objSelectedAccessory.Page); chkWeaponAccessoryInstalled.Enabled = true; chkWeaponAccessoryInstalled.Checked = objSelectedAccessory.Installed; chkIncludedInWeapon.Enabled = _objOptions.AllowEditPartOfBaseWeapon; chkIncludedInWeapon.Checked = objSelectedAccessory.IncludedInWeapon; } else { bool blnMod = false; WeaponMod objSelectedMod = _objFunctions.FindWeaponMod(treWeapons.SelectedNode.Tag.ToString(), _objCharacter.Weapons); if (objSelectedMod != null) { blnMod = true; objSelectedWeapon = objSelectedMod.Parent; } if (blnMod) { lblWeaponName.Text = objSelectedMod.DisplayNameShort; lblWeaponCategory.Text = LanguageManager.Instance.GetString("String_WeaponModification"); lblWeaponAvail.Text = objSelectedMod.TotalAvail; lblWeaponCost.Text = String.Format("{0:###,###,##0¥}", Convert.ToInt32(objSelectedMod.TotalCost)); lblWeaponConceal.Text = objSelectedMod.Concealability.ToString(); lblWeaponAccuracy.Text = objWeapon.TotalAccuracy.ToString(); lblWeaponDamage.Text = ""; lblWeaponRC.Text = objSelectedMod.RC; lblWeaponAP.Text = ""; lblWeaponReach.Text = ""; lblWeaponMode.Text = ""; lblWeaponAmmo.Text = ""; lblWeaponSlots.Text = objSelectedMod.Slots.ToString(); string strBook = _objOptions.LanguageBookShort(objSelectedMod.Source); string strPage = objSelectedMod.Page; lblWeaponSource.Text = strBook + " " + strPage; tipTooltip.SetToolTip(lblWeaponSource, _objOptions.LanguageBookLong(objSelectedMod.Source) + " " + LanguageManager.Instance.GetString("String_Page") + " " + objSelectedMod.Page); chkWeaponAccessoryInstalled.Enabled = true; chkWeaponAccessoryInstalled.Checked = objSelectedMod.Installed; chkIncludedInWeapon.Enabled = _objOptions.AllowEditPartOfBaseWeapon; chkIncludedInWeapon.Checked = objSelectedMod.IncludedInWeapon; } else { // Find the selected Gear. _blnSkipRefresh = true; WeaponAccessory objAccessory = new WeaponAccessory(_objCharacter); Gear objGear = _objFunctions.FindWeaponGear(treWeapons.SelectedNode.Tag.ToString(), _objCharacter.Weapons, out objAccessory); lblWeaponName.Text = objGear.DisplayNameShort; lblWeaponCategory.Text = objGear.DisplayCategory; lblWeaponAvail.Text = objGear.TotalAvail(true); lblWeaponCost.Text = String.Format("{0:###,###,##0¥}", objGear.TotalCost); lblWeaponAccuracy.Text = objWeapon.TotalAccuracy.ToString(); lblWeaponConceal.Text = ""; lblWeaponDamage.Text = ""; lblWeaponRC.Text = ""; lblWeaponAP.Text = ""; lblWeaponReach.Text = ""; lblWeaponMode.Text = ""; lblWeaponAmmo.Text = ""; lblWeaponSlots.Text = ""; string strBook = _objOptions.LanguageBookShort(objGear.Source); string strPage = objGear.Page; lblWeaponSource.Text = strBook + " " + strPage; tipTooltip.SetToolTip(lblWeaponSource, _objOptions.BookFromCode(objGear.Source) + " " + LanguageManager.Instance.GetString("String_Page") + " " + objGear.Page); chkWeaponAccessoryInstalled.Enabled = true; chkWeaponAccessoryInstalled.Checked = objGear.Equipped; chkIncludedInWeapon.Enabled = false; chkIncludedInWeapon.Checked = false; _blnSkipRefresh = true; if (objGear.GetType() == typeof(Commlink)) { Commlink objCommlink = (Commlink)objGear; lblWeaponDeviceRating.Text = objCommlink.DeviceRating.ToString(); lblWeaponAttack.Text = objCommlink.Attack.ToString(); lblWeaponSleaze.Text = objCommlink.Sleaze.ToString(); lblWeaponDataProcessing.Text = objCommlink.DataProcessing.ToString(); lblWeaponFirewall.Text = objCommlink.Firewall.ToString(); } } } // Show the Weapon Ranges. lblWeaponRangeShort.Text = objSelectedWeapon.RangeShort; lblWeaponRangeMedium.Text = objSelectedWeapon.RangeMedium; lblWeaponRangeLong.Text = objSelectedWeapon.RangeLong; lblWeaponRangeExtreme.Text = objSelectedWeapon.RangeExtreme; } } }