using Server.MirDatabase;
using Server.MirEnvir;
namespace Server
{
public partial class MagicInfoForm : Form
{
public Envir Envir => SMain.EditEnvir;
private MagicInfo _selectedMagicInfo;
public MagicInfoForm()
{
InitializeComponent();
MagicSearchBox_TextChanged(this, EventArgs.Empty);
UpdateMagicForm();
}
private void UpdateMagicForm(byte field = 0)
{
_selectedMagicInfo = (MagicInfo)MagiclistBox.SelectedItem;
lblBookValid.BackColor = SystemColors.Window;
if (_selectedMagicInfo == null)
{
tabControl1.Enabled = false;
lblBookValid.Text = "Searching";
lblSelected.Text = "Selected Skill: none";
lblDamageExample.Text = "";
lblDamageExplained.Text = "";
txtSkillIcon.Text = "0";
txtSkillLvl1Points.Text = "0";
txtSkillLvl1Req.Text = "0";
txtSkillLvl2Points.Text = "0";
txtSkillLvl2Req.Text = "0";
txtSkillLvl3Points.Text = "0";
txtSkillLvl3Req.Text = "0";
txtMPBase.Text = "0";
txtMPIncrease.Text = "0";
txtDelayBase.Text = "0";
txtDelayReduction.Text = "0";
txtDmgBaseMin.Text = "0";
txtDmgBaseMax.Text = "0";
txtDmgBonusMin.Text = "0";
txtDmgBonusMax.Text = "0";
}
else
{
tabControl1.Enabled = true;
lblSelected.Text = "Selected Skill: " + _selectedMagicInfo.ToString();
lblDamageExample.Text =
$"Damage @ Skill level 0: {GetMinPower(0):000}-{GetMaxPower(0):000} ||| level 1: {GetMinPower(1):000}-{GetMaxPower(1):000} ||| level 2: {GetMinPower(2):000}-{GetMaxPower(2):000} ||| level 3: {GetMinPower(3):000}-{GetMaxPower(3):000}";
lblDamageExplained.Text =
$"Damage: {{Random(minstat-maxstat) + [<(random({_selectedMagicInfo.MPowerBase}-{_selectedMagicInfo.MPowerBase + _selectedMagicInfo.MPowerBonus})/4) X (skill level +1)> + random<{_selectedMagicInfo.PowerBase}-{_selectedMagicInfo.PowerBonus + _selectedMagicInfo.PowerBase}>]}} X {{{_selectedMagicInfo.MultiplierBase} + (skill level * {_selectedMagicInfo.MultiplierBonus})}}";
txtSkillIcon.Text = _selectedMagicInfo.Icon.ToString();
txtSkillLvl1Points.Text = _selectedMagicInfo.Need1.ToString();
txtSkillLvl1Req.Text = _selectedMagicInfo.Level1.ToString();
txtSkillLvl2Points.Text = _selectedMagicInfo.Need2.ToString();
txtSkillLvl2Req.Text = _selectedMagicInfo.Level2.ToString();
txtSkillLvl3Points.Text = _selectedMagicInfo.Need3.ToString();
txtSkillLvl3Req.Text = _selectedMagicInfo.Level3.ToString();
txtMPBase.Text = _selectedMagicInfo.BaseCost.ToString();
txtMPIncrease.Text = _selectedMagicInfo.LevelCost.ToString();
txtDelayBase.Text = _selectedMagicInfo.DelayBase.ToString();
txtDelayReduction.Text = _selectedMagicInfo.DelayReduction.ToString();
txtDmgBaseMin.Text = _selectedMagicInfo.PowerBase.ToString();
txtDmgBaseMax.Text = (_selectedMagicInfo.PowerBase + _selectedMagicInfo.PowerBonus).ToString();
txtDmgBonusMin.Text = _selectedMagicInfo.MPowerBase.ToString();
txtDmgBonusMax.Text = (_selectedMagicInfo.MPowerBase + _selectedMagicInfo.MPowerBonus).ToString();
if (field != 1)
txtDmgMultBase.Text = _selectedMagicInfo.MultiplierBase.ToString();
if (field != 2)
txtDmgMultBoost.Text = _selectedMagicInfo.MultiplierBonus.ToString();
txtRange.Text = _selectedMagicInfo.Range.ToString();
ItemInfo Book = Envir.GetBook((short)_selectedMagicInfo.Spell);
if (Book != null)
{
lblBookValid.Text = Book.Name;
}
else
{
lblBookValid.Text = "No book found";
lblBookValid.BackColor = Color.Red;
}
textBoxName.Text = _selectedMagicInfo.Name;
}
}
private int GetMaxPower(byte level)
{
if (_selectedMagicInfo == null) return 0;
return (int)Math.Round((((_selectedMagicInfo.MPowerBase + _selectedMagicInfo.MPowerBonus) / 4F) * (level + 1) + (_selectedMagicInfo.PowerBase + _selectedMagicInfo.PowerBonus)) * (_selectedMagicInfo.MultiplierBase + (level * _selectedMagicInfo.MultiplierBonus)));
}
private int GetMinPower(byte level)
{
if (_selectedMagicInfo == null) return 0;
return (int)Math.Round(((_selectedMagicInfo.MPowerBase / 4F) * (level + 1) + _selectedMagicInfo.PowerBase) * (_selectedMagicInfo.MultiplierBase + (level * _selectedMagicInfo.MultiplierBonus)));
}
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
MagiclistBox = new ListBox();
tabControl1 = new TabControl();
tabPage1 = new TabPage();
label24 = new Label();
label23 = new Label();
textBoxName = new TextBox();
lblDamageExample = new Label();
lblDamageExplained = new Label();
lblSelected = new Label();
panel4 = new Panel();
txtDmgMultBoost = new TextBox();
txtDmgMultBase = new TextBox();
label21 = new Label();
label22 = new Label();
txtDmgBonusMax = new TextBox();
txtDmgBonusMin = new TextBox();
label18 = new Label();
label19 = new Label();
txtDmgBaseMax = new TextBox();
txtDmgBaseMin = new TextBox();
label17 = new Label();
label16 = new Label();
label15 = new Label();
panel3 = new Panel();
label20 = new Label();
txtRange = new TextBox();
txtDelayReduction = new TextBox();
txtDelayBase = new TextBox();
label14 = new Label();
label13 = new Label();
label12 = new Label();
panel2 = new Panel();
txtMPIncrease = new TextBox();
txtMPBase = new TextBox();
label11 = new Label();
label10 = new Label();
label9 = new Label();
panel1 = new Panel();
txtSkillLvl3Points = new TextBox();
txtSkillLvl2Points = new TextBox();
txtSkillLvl1Points = new TextBox();
label6 = new Label();
label7 = new Label();
label8 = new Label();
txtSkillLvl3Req = new TextBox();
txtSkillLvl2Req = new TextBox();
txtSkillLvl1Req = new TextBox();
label5 = new Label();
label4 = new Label();
label3 = new Label();
label2 = new Label();
txtSkillIcon = new TextBox();
label1 = new Label();
lblBookValid = new Label();
toolTip1 = new ToolTip(components);
MagicSearchBox = new TextBox();
tabControl1.SuspendLayout();
tabPage1.SuspendLayout();
panel4.SuspendLayout();
panel3.SuspendLayout();
panel2.SuspendLayout();
panel1.SuspendLayout();
SuspendLayout();
//
// MagiclistBox
//
MagiclistBox.Dock = DockStyle.Left;
MagiclistBox.FormattingEnabled = true;
MagiclistBox.ItemHeight = 15;
MagiclistBox.Location = new Point(0, 0);
MagiclistBox.Name = "MagiclistBox";
MagiclistBox.Size = new Size(225, 542);
MagiclistBox.TabIndex = 0;
MagiclistBox.SelectedIndexChanged += MagiclistBox_SelectedIndexChanged;
//
// tabControl1
//
tabControl1.Controls.Add(tabPage1);
tabControl1.Dock = DockStyle.Fill;
tabControl1.Location = new Point(225, 0);
tabControl1.Name = "tabControl1";
tabControl1.SelectedIndex = 0;
tabControl1.Size = new Size(702, 542);
tabControl1.TabIndex = 1;
//
// tabPage1
//
tabPage1.Controls.Add(label24);
tabPage1.Controls.Add(label23);
tabPage1.Controls.Add(textBoxName);
tabPage1.Controls.Add(lblDamageExample);
tabPage1.Controls.Add(lblDamageExplained);
tabPage1.Controls.Add(lblSelected);
tabPage1.Controls.Add(panel4);
tabPage1.Controls.Add(panel3);
tabPage1.Controls.Add(panel2);
tabPage1.Controls.Add(panel1);
tabPage1.Controls.Add(txtSkillIcon);
tabPage1.Controls.Add(label1);
tabPage1.Controls.Add(lblBookValid);
tabPage1.Location = new Point(4, 24);
tabPage1.Name = "tabPage1";
tabPage1.Padding = new Padding(3);
tabPage1.Size = new Size(694, 514);
tabPage1.TabIndex = 0;
tabPage1.Text = "Basics";
tabPage1.UseVisualStyleBackColor = true;
//
// label24
//
label24.AutoSize = true;
label24.Location = new Point(20, 23);
label24.Name = "label24";
label24.Size = new Size(63, 15);
label24.TabIndex = 12;
label24.Text = "SkillName:";
//
// label23
//
label23.AutoSize = true;
label23.Location = new Point(181, 3);
label23.Name = "label23";
label23.Size = new Size(37, 15);
label23.TabIndex = 11;
label23.Text = "book:";
//
// textBoxName
//
textBoxName.Location = new Point(89, 18);
textBoxName.Name = "textBoxName";
textBoxName.Size = new Size(112, 23);
textBoxName.TabIndex = 10;
textBoxName.TextChanged += textBoxName_TextChanged;
//
// lblDamageExample
//
lblDamageExample.AutoSize = true;
lblDamageExample.Location = new Point(11, 394);
lblDamageExample.Name = "lblDamageExample";
lblDamageExample.Size = new Size(98, 15);
lblDamageExample.TabIndex = 0;
lblDamageExample.Text = "Damage example";
//
// lblDamageExplained
//
lblDamageExplained.AutoSize = true;
lblDamageExplained.Location = new Point(11, 366);
lblDamageExplained.Name = "lblDamageExplained";
lblDamageExplained.Size = new Size(54, 15);
lblDamageExplained.TabIndex = 9;
lblDamageExplained.Text = "Damage:";
//
// lblSelected
//
lblSelected.AutoSize = true;
lblSelected.Location = new Point(20, 3);
lblSelected.Name = "lblSelected";
lblSelected.Size = new Size(80, 15);
lblSelected.TabIndex = 8;
lblSelected.Text = "Selected skill: ";
//
// panel4
//
panel4.BorderStyle = BorderStyle.FixedSingle;
panel4.Controls.Add(txtDmgMultBoost);
panel4.Controls.Add(txtDmgMultBase);
panel4.Controls.Add(label21);
panel4.Controls.Add(label22);
panel4.Controls.Add(txtDmgBonusMax);
panel4.Controls.Add(txtDmgBonusMin);
panel4.Controls.Add(label18);
panel4.Controls.Add(label19);
panel4.Controls.Add(txtDmgBaseMax);
panel4.Controls.Add(txtDmgBaseMin);
panel4.Controls.Add(label17);
panel4.Controls.Add(label16);
panel4.Controls.Add(label15);
panel4.Location = new Point(14, 166);
panel4.Name = "panel4";
panel4.Size = new Size(233, 191);
panel4.TabIndex = 6;
//
// txtDmgMultBoost
//
txtDmgMultBoost.Location = new Point(168, 157);
txtDmgMultBoost.Name = "txtDmgMultBoost";
txtDmgMultBoost.Size = new Size(46, 23);
txtDmgMultBoost.TabIndex = 14;
toolTip1.SetToolTip(txtDmgMultBoost, "extra multiplyer apply'd for every skill level");
txtDmgMultBoost.TextChanged += txtDmgMultBoost_TextChanged;
//
// txtDmgMultBase
//
txtDmgMultBase.Location = new Point(168, 131);
txtDmgMultBase.Name = "txtDmgMultBase";
txtDmgMultBase.Size = new Size(46, 23);
txtDmgMultBase.TabIndex = 13;
toolTip1.SetToolTip(txtDmgMultBase, "multiplier apply'd to total skill dmg");
txtDmgMultBase.TextChanged += txtDmgMultBase_TextChanged;
//
// label21
//
label21.AutoSize = true;
label21.Location = new Point(12, 160);
label21.Name = "label21";
label21.Size = new Size(178, 15);
label21.TabIndex = 12;
label21.Text = "Damage multiplyer boost/skilllvl";
//
// label22
//
label22.AutoSize = true;
label22.Location = new Point(12, 134);
label22.Name = "label22";
label22.Size = new Size(135, 15);
label22.TabIndex = 11;
label22.Text = "Damage multiplyer base";
//
// txtDmgBonusMax
//
txtDmgBonusMax.Location = new Point(168, 105);
txtDmgBonusMax.Name = "txtDmgBonusMax";
txtDmgBonusMax.Size = new Size(46, 23);
txtDmgBonusMax.TabIndex = 10;
toolTip1.SetToolTip(txtDmgBonusMax, "Damage bonus at skill level '4' ");
txtDmgBonusMax.TextChanged += txtDmgBonusMax_TextChanged;
//
// txtDmgBonusMin
//
txtDmgBonusMin.Location = new Point(168, 79);
txtDmgBonusMin.Name = "txtDmgBonusMin";
txtDmgBonusMin.Size = new Size(46, 23);
txtDmgBonusMin.TabIndex = 9;
toolTip1.SetToolTip(txtDmgBonusMin, "Damage bonus at skill level '4' \r\nyou will get 1/4th of this bonus for every skill level\r\nnote ingame level 0 = 1 bonus, so level 3 = max bonus (4)");
txtDmgBonusMin.TextChanged += txtDmgBonusMin_TextChanged;
//
// label18
//
label18.AutoSize = true;
label18.Location = new Point(12, 108);
label18.Name = "label18";
label18.Size = new Size(154, 15);
label18.TabIndex = 8;
label18.Text = "Maximum skill lvl 3 damage";
//
// label19
//
label19.AutoSize = true;
label19.Location = new Point(12, 82);
label19.Name = "label19";
label19.Size = new Size(156, 15);
label19.TabIndex = 7;
label19.Text = "Minimum skill lvl 3 damage:";
//
// txtDmgBaseMax
//
txtDmgBaseMax.Location = new Point(168, 53);
txtDmgBaseMax.Name = "txtDmgBaseMax";
txtDmgBaseMax.Size = new Size(46, 23);
txtDmgBaseMax.TabIndex = 6;
toolTip1.SetToolTip(txtDmgBaseMax, "Damage at skill level 0");
txtDmgBaseMax.TextChanged += txtDmgBaseMax_TextChanged;
//
// txtDmgBaseMin
//
txtDmgBaseMin.Location = new Point(168, 27);
txtDmgBaseMin.Name = "txtDmgBaseMin";
txtDmgBaseMin.Size = new Size(46, 23);
txtDmgBaseMin.TabIndex = 5;
toolTip1.SetToolTip(txtDmgBaseMin, "Damage at skill level 0");
txtDmgBaseMin.TextChanged += txtDmgBaseMin_TextChanged;
//
// label17
//
label17.AutoSize = true;
label17.Location = new Point(12, 56);
label17.Name = "label17";
label17.Size = new Size(134, 15);
label17.TabIndex = 2;
label17.Text = "Maximum base damage";
//
// label16
//
label16.AutoSize = true;
label16.Location = new Point(12, 30);
label16.Name = "label16";
label16.Size = new Size(136, 15);
label16.TabIndex = 1;
label16.Text = "Minimum base damage:";
//
// label15
//
label15.AutoSize = true;
label15.Location = new Point(5, 8);
label15.Name = "label15";
label15.Size = new Size(95, 15);
label15.TabIndex = 0;
label15.Text = "Damage settings";
//
// panel3
//
panel3.BorderStyle = BorderStyle.FixedSingle;
panel3.Controls.Add(label20);
panel3.Controls.Add(txtRange);
panel3.Controls.Add(txtDelayReduction);
panel3.Controls.Add(txtDelayBase);
panel3.Controls.Add(label14);
panel3.Controls.Add(label13);
panel3.Controls.Add(label12);
panel3.Location = new Point(253, 166);
panel3.Name = "panel3";
panel3.Size = new Size(216, 191);
panel3.TabIndex = 5;
toolTip1.SetToolTip(panel3, "delay = - (skill level * )");
//
// label20
//
label20.AutoSize = true;
label20.Location = new Point(12, 77);
label20.Name = "label20";
label20.Size = new Size(103, 15);
label20.TabIndex = 15;
label20.Text = "Range (0 No limit)";
//
// txtRange
//
txtRange.Location = new Point(121, 74);
txtRange.Name = "txtRange";
txtRange.Size = new Size(79, 23);
txtRange.TabIndex = 14;
txtRange.TextChanged += txtRange_TextChanged;
//
// txtDelayReduction
//
txtDelayReduction.Location = new Point(121, 47);
txtDelayReduction.Name = "txtDelayReduction";
txtDelayReduction.Size = new Size(79, 23);
txtDelayReduction.TabIndex = 13;
toolTip1.SetToolTip(txtDelayReduction, "delay = - (skill level * )");
txtDelayReduction.TextChanged += txtDelayReduction_TextChanged;
//
// txtDelayBase
//
txtDelayBase.Location = new Point(121, 22);
txtDelayBase.Name = "txtDelayBase";
txtDelayBase.Size = new Size(79, 23);
txtDelayBase.TabIndex = 12;
toolTip1.SetToolTip(txtDelayBase, "delay = - (skill level * )");
txtDelayBase.TextChanged += txtDelayBase_TextChanged;
//
// label14
//
label14.AutoSize = true;
label14.Location = new Point(12, 50);
label14.Name = "label14";
label14.Size = new Size(112, 15);
label14.TabIndex = 2;
label14.Text = "Decrease / skill level";
//
// label13
//
label13.AutoSize = true;
label13.Location = new Point(12, 25);
label13.Name = "label13";
label13.Size = new Size(62, 15);
label13.TabIndex = 1;
label13.Text = "Base delay";
//
// label12
//
label12.AutoSize = true;
label12.Location = new Point(12, 8);
label12.Name = "label12";
label12.Size = new Size(129, 15);
label12.TabIndex = 0;
label12.Text = "Delay (in milliseconds!)";
//
// panel2
//
panel2.BorderStyle = BorderStyle.FixedSingle;
panel2.Controls.Add(txtMPIncrease);
panel2.Controls.Add(txtMPBase);
panel2.Controls.Add(label11);
panel2.Controls.Add(label10);
panel2.Controls.Add(label9);
panel2.Location = new Point(253, 53);
panel2.Name = "panel2";
panel2.Size = new Size(216, 107);
panel2.TabIndex = 4;
//
// txtMPIncrease
//
txtMPIncrease.Location = new Point(135, 47);
txtMPIncrease.Name = "txtMPIncrease";
txtMPIncrease.Size = new Size(46, 23);
txtMPIncrease.TabIndex = 12;
toolTip1.SetToolTip(txtMPIncrease, "extra amount of mp used each level");
txtMPIncrease.TextChanged += txtMPIncrease_TextChanged;
//
// txtMPBase
//
txtMPBase.Location = new Point(135, 22);
txtMPBase.Name = "txtMPBase";
txtMPBase.Size = new Size(46, 23);
txtMPBase.TabIndex = 11;
toolTip1.SetToolTip(txtMPBase, "Mp usage when skill is level 0");
txtMPBase.TextChanged += txtMPBase_TextChanged;
//
// label11
//
label11.AutoSize = true;
label11.Location = new Point(12, 50);
label11.Name = "label11";
label11.Size = new Size(126, 15);
label11.TabIndex = 2;
label11.Text = "MP increase each level";
//
// label10
//
label10.AutoSize = true;
label10.Location = new Point(12, 25);
label10.Name = "label10";
label10.Size = new Size(86, 15);
label10.TabIndex = 1;
label10.Text = "Base mp usage";
//
// label9
//
label9.AutoSize = true;
label9.Location = new Point(12, 6);
label9.Name = "label9";
label9.Size = new Size(59, 15);
label9.TabIndex = 0;
label9.Text = "MP usage";
//
// panel1
//
panel1.BorderStyle = BorderStyle.FixedSingle;
panel1.Controls.Add(txtSkillLvl3Points);
panel1.Controls.Add(txtSkillLvl2Points);
panel1.Controls.Add(txtSkillLvl1Points);
panel1.Controls.Add(label6);
panel1.Controls.Add(label7);
panel1.Controls.Add(label8);
panel1.Controls.Add(txtSkillLvl3Req);
panel1.Controls.Add(txtSkillLvl2Req);
panel1.Controls.Add(txtSkillLvl1Req);
panel1.Controls.Add(label5);
panel1.Controls.Add(label4);
panel1.Controls.Add(label3);
panel1.Controls.Add(label2);
panel1.Location = new Point(13, 53);
panel1.Name = "panel1";
panel1.Size = new Size(234, 107);
panel1.TabIndex = 3;
//
// txtSkillLvl3Points
//
txtSkillLvl3Points.Location = new Point(169, 72);
txtSkillLvl3Points.Name = "txtSkillLvl3Points";
txtSkillLvl3Points.Size = new Size(46, 23);
txtSkillLvl3Points.TabIndex = 12;
txtSkillLvl3Points.TextChanged += txtSkillLvl3Points_TextChanged;
//
// txtSkillLvl2Points
//
txtSkillLvl2Points.Location = new Point(169, 47);
txtSkillLvl2Points.Name = "txtSkillLvl2Points";
txtSkillLvl2Points.Size = new Size(46, 23);
txtSkillLvl2Points.TabIndex = 11;
txtSkillLvl2Points.TextChanged += txtSkillLvl2Points_TextChanged;
//
// txtSkillLvl1Points
//
txtSkillLvl1Points.Location = new Point(169, 22);
txtSkillLvl1Points.Name = "txtSkillLvl1Points";
txtSkillLvl1Points.Size = new Size(46, 23);
txtSkillLvl1Points.TabIndex = 10;
txtSkillLvl1Points.TextChanged += txtSkillLvl1Points_TextChanged;
//
// label6
//
label6.AutoSize = true;
label6.Location = new Point(110, 75);
label6.Name = "label6";
label6.Size = new Size(64, 15);
label6.TabIndex = 9;
label6.Text = "Skill points";
//
// label7
//
label7.AutoSize = true;
label7.Location = new Point(110, 50);
label7.Name = "label7";
label7.Size = new Size(64, 15);
label7.TabIndex = 8;
label7.Text = "Skill points";
//
// label8
//
label8.AutoSize = true;
label8.Location = new Point(110, 25);
label8.Name = "label8";
label8.Size = new Size(64, 15);
label8.TabIndex = 7;
label8.Text = "Skill points";
//
// txtSkillLvl3Req
//
txtSkillLvl3Req.Location = new Point(57, 72);
txtSkillLvl3Req.Name = "txtSkillLvl3Req";
txtSkillLvl3Req.Size = new Size(46, 23);
txtSkillLvl3Req.TabIndex = 6;
txtSkillLvl3Req.TextChanged += txtSkillLvl3Req_TextChanged;
//
// txtSkillLvl2Req
//
txtSkillLvl2Req.Location = new Point(57, 47);
txtSkillLvl2Req.Name = "txtSkillLvl2Req";
txtSkillLvl2Req.Size = new Size(46, 23);
txtSkillLvl2Req.TabIndex = 5;
txtSkillLvl2Req.TextChanged += txtSkillLvl2Req_TextChanged;
//
// txtSkillLvl1Req
//
txtSkillLvl1Req.Location = new Point(57, 22);
txtSkillLvl1Req.Name = "txtSkillLvl1Req";
txtSkillLvl1Req.Size = new Size(46, 23);
txtSkillLvl1Req.TabIndex = 4;
txtSkillLvl1Req.TextChanged += txtSkillLvl1Req_TextChanged;
//
// label5
//
label5.AutoSize = true;
label5.Location = new Point(13, 75);
label5.Name = "label5";
label5.Size = new Size(40, 15);
label5.TabIndex = 3;
label5.Text = "level 3";
//
// label4
//
label4.AutoSize = true;
label4.Location = new Point(13, 50);
label4.Name = "label4";
label4.Size = new Size(40, 15);
label4.TabIndex = 2;
label4.Text = "level 2";
//
// label3
//
label3.AutoSize = true;
label3.Location = new Point(13, 25);
label3.Name = "label3";
label3.Size = new Size(40, 15);
label3.TabIndex = 1;
label3.Text = "level 1";
//
// label2
//
label2.AutoSize = true;
label2.Location = new Point(6, 6);
label2.Name = "label2";
label2.Size = new Size(174, 15);
label2.TabIndex = 0;
label2.Text = "Skill level increase requirements";
//
// txtSkillIcon
//
txtSkillIcon.Location = new Point(311, 20);
txtSkillIcon.Name = "txtSkillIcon";
txtSkillIcon.Size = new Size(41, 23);
txtSkillIcon.TabIndex = 2;
txtSkillIcon.TextChanged += txtSkillIcon_TextChanged;
//
// label1
//
label1.AutoSize = true;
label1.Location = new Point(250, 23);
label1.Name = "label1";
label1.Size = new Size(60, 15);
label1.TabIndex = 1;
label1.Text = "Skill icon: ";
//
// lblBookValid
//
lblBookValid.AutoSize = true;
lblBookValid.Location = new Point(222, 3);
lblBookValid.Name = "lblBookValid";
lblBookValid.Size = new Size(112, 15);
lblBookValid.TabIndex = 0;
lblBookValid.Text = "Searching for books";
//
// MagicSearchBox
//
MagicSearchBox.Location = new Point(276, 0);
MagicSearchBox.Name = "MagicSearchBox";
MagicSearchBox.PlaceholderText = "Search...";
MagicSearchBox.Size = new Size(201, 23);
MagicSearchBox.TabIndex = 2;
MagicSearchBox.TextChanged += MagicSearchBox_TextChanged;
//
// MagicInfoForm
//
ClientSize = new Size(927, 542);
Controls.Add(MagicSearchBox);
Controls.Add(tabControl1);
Controls.Add(MagiclistBox);
Name = "MagicInfoForm";
Text = "Magic Settings";
FormClosed += MagicInfoForm_FormClosed;
tabControl1.ResumeLayout(false);
tabPage1.ResumeLayout(false);
tabPage1.PerformLayout();
panel4.ResumeLayout(false);
panel4.PerformLayout();
panel3.ResumeLayout(false);
panel3.PerformLayout();
panel2.ResumeLayout(false);
panel2.PerformLayout();
panel1.ResumeLayout(false);
panel1.PerformLayout();
ResumeLayout(false);
PerformLayout();
}
private void MagicInfoForm_FormClosed(object sender, FormClosedEventArgs e)
{
//do something to save it all
Envir.SaveDB();
}
private void MagiclistBox_SelectedIndexChanged(object sender, EventArgs e)
{
UpdateMagicForm();
}
private bool IsValid(ref byte input)
{
if (!byte.TryParse(ActiveControl.Text, out input))
{
ActiveControl.BackColor = Color.Red;
return false;
}
return true;
}
private bool IsValid(ref ushort input)
{
if (!ushort.TryParse(ActiveControl.Text, out input))
{
ActiveControl.BackColor = Color.Red;
return false;
}
return true;
}
private bool IsValid(ref uint input)
{
if (!uint.TryParse(ActiveControl.Text, out input))
{
ActiveControl.BackColor = Color.Red;
return false;
}
return true;
}
private bool IsValid(ref float input)
{
if (!float.TryParse(ActiveControl.Text, out input))
{
ActiveControl.BackColor = Color.Red;
return false;
}
return true;
}
private void txtSkillIcon_TextChanged(object sender, EventArgs e)
{
if (ActiveControl != sender) return;
byte temp = 0;
if (!IsValid(ref temp)) return;
ActiveControl.BackColor = SystemColors.Window;
_selectedMagicInfo.Icon = temp;
}
private void txtSkillLvl1Req_TextChanged(object sender, EventArgs e)
{
if (ActiveControl != sender) return;
byte temp = 0;
if (!IsValid(ref temp)) return;
ActiveControl.BackColor = SystemColors.Window;
_selectedMagicInfo.Level1 = temp;
}
private void txtSkillLvl2Req_TextChanged(object sender, EventArgs e)
{
if (ActiveControl != sender) return;
byte temp = 0;
if (!IsValid(ref temp)) return;
ActiveControl.BackColor = SystemColors.Window;
_selectedMagicInfo.Level2 = temp;
}
private void txtSkillLvl3Req_TextChanged(object sender, EventArgs e)
{
if (ActiveControl != sender) return;
byte temp = 0;
if (!IsValid(ref temp)) return;
ActiveControl.BackColor = SystemColors.Window;
_selectedMagicInfo.Level3 = temp;
}
private void txtSkillLvl1Points_TextChanged(object sender, EventArgs e)
{
if (ActiveControl != sender) return;
ushort temp = 0;
if (!IsValid(ref temp)) return;
ActiveControl.BackColor = SystemColors.Window;
_selectedMagicInfo.Need1 = temp;
}
private void txtSkillLvl2Points_TextChanged(object sender, EventArgs e)
{
if (ActiveControl != sender) return;
ushort temp = 0;
if (!IsValid(ref temp)) return;
ActiveControl.BackColor = SystemColors.Window;
_selectedMagicInfo.Need2 = temp;
}
private void txtSkillLvl3Points_TextChanged(object sender, EventArgs e)
{
if (ActiveControl != sender) return;
ushort temp = 0;
if (!IsValid(ref temp)) return;
ActiveControl.BackColor = SystemColors.Window;
_selectedMagicInfo.Need3 = temp;
}
private void txtMPBase_TextChanged(object sender, EventArgs e)
{
if (ActiveControl != sender) return;
byte temp = 0;
if (!IsValid(ref temp)) return;
ActiveControl.BackColor = SystemColors.Window;
_selectedMagicInfo.BaseCost = temp;
}
private void txtMPIncrease_TextChanged(object sender, EventArgs e)
{
if (ActiveControl != sender) return;
byte temp = 0;
if (!IsValid(ref temp)) return;
ActiveControl.BackColor = SystemColors.Window;
_selectedMagicInfo.LevelCost = temp;
}
private void txtDmgBaseMin_TextChanged(object sender, EventArgs e)
{
if (ActiveControl != sender) return;
ushort temp = 0;
if (!IsValid(ref temp)) return;
ActiveControl.BackColor = SystemColors.Window;
_selectedMagicInfo.PowerBase = temp;
UpdateMagicForm();
}
private void txtDmgBaseMax_TextChanged(object sender, EventArgs e)
{
if (ActiveControl != sender) return;
ushort temp = 0;
if (!IsValid(ref temp)) return;
if (temp < _selectedMagicInfo.PowerBase)
{
ActiveControl.BackColor = Color.Red;
return;
}
ActiveControl.BackColor = SystemColors.Window;
_selectedMagicInfo.PowerBonus = (ushort)(temp - _selectedMagicInfo.PowerBase);
UpdateMagicForm();
}
private void txtDmgBonusMin_TextChanged(object sender, EventArgs e)
{
if (ActiveControl != sender) return;
ushort temp = 0;
if (!IsValid(ref temp)) return;
ActiveControl.BackColor = SystemColors.Window;
_selectedMagicInfo.MPowerBase = temp;
UpdateMagicForm();
}
private void txtDmgBonusMax_TextChanged(object sender, EventArgs e)
{
if (ActiveControl != sender) return;
ushort temp = 0;
if (!IsValid(ref temp)) return;
if (temp < _selectedMagicInfo.MPowerBase)
{
ActiveControl.BackColor = Color.Red;
return;
}
ActiveControl.BackColor = SystemColors.Window;
_selectedMagicInfo.MPowerBonus = (ushort)(temp - _selectedMagicInfo.MPowerBase);
UpdateMagicForm();
}
private void txtDelayBase_TextChanged(object sender, EventArgs e)
{
if (ActiveControl != sender) return;
uint temp = 0;
if (!IsValid(ref temp)) return;
ActiveControl.BackColor = SystemColors.Window;
_selectedMagicInfo.DelayBase = temp;
}
private void txtDelayReduction_TextChanged(object sender, EventArgs e)
{
if (ActiveControl != sender) return;
uint temp = 0;
if (!IsValid(ref temp)) return;
ActiveControl.BackColor = SystemColors.Window;
_selectedMagicInfo.DelayReduction = temp;
}
private void txtRange_TextChanged(object sender, EventArgs e)
{
if (ActiveControl != sender) return;
byte temp = 0;
if (!IsValid(ref temp)) return;
ActiveControl.BackColor = SystemColors.Window;
_selectedMagicInfo.Range = temp;
}
private void txtDmgMultBase_TextChanged(object sender, EventArgs e)
{
if (ActiveControl != sender) return;
float temp = 0;
if (!IsValid(ref temp)) return;
ActiveControl.BackColor = SystemColors.Window;
_selectedMagicInfo.MultiplierBase = temp;
UpdateMagicForm(1);
}
private void txtDmgMultBoost_TextChanged(object sender, EventArgs e)
{
if (ActiveControl != sender) return;
float temp = 0;
if (!IsValid(ref temp)) return;
ActiveControl.BackColor = SystemColors.Window;
_selectedMagicInfo.MultiplierBonus = temp;
UpdateMagicForm(2);
}
private void textBoxName_TextChanged(object sender, EventArgs e)
{
if (ActiveControl != sender) return;
_selectedMagicInfo.Name = ActiveControl.Text;
UpdateMagicForm();
if (ActiveControl.Text == "")
{
ActiveControl.BackColor = Color.Red;
}
else
{
ActiveControl.BackColor = SystemColors.Window;
}
}
#region Search Box
private void MagicSearchBox_TextChanged(object sender, EventArgs e)
{
// Show all items when the search box is cleared or placeholder is active
if (string.IsNullOrWhiteSpace(MagicSearchBox.Text))
{
MagiclistBox.Items.Clear();
foreach (var magic in Envir.MagicInfoList)
{
MagiclistBox.Items.Add(magic);
}
return;
}
string searchText = MagicSearchBox.Text.ToLower();
MagiclistBox.Items.Clear();
// Add filtered items to the list
foreach (var magic in Envir.MagicInfoList)
{
if (!string.IsNullOrEmpty(magic.Name) && magic.Name.ToLower().Contains(searchText))
{
MagiclistBox.Items.Add(magic);
}
}
}
#endregion
}
}