SystemInfoForm.cs 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913
  1. using Server.MirEnvir;
  2. namespace Server
  3. {
  4. public partial class SystemInfoForm : Form
  5. {
  6. public Envir Envir => SMain.EditEnvir;
  7. public bool FishingChanged = false, MailChanged = false, GoodsChanged = false, RefineChanged = false, MarriageChanged = false, MentorChanged = false, GemChanged = false, SpawnChanged = false, HeroesChanged;
  8. public SystemInfoForm()
  9. {
  10. InitializeComponent();
  11. }
  12. public SystemInfoForm(int selectedTab = 0)
  13. {
  14. InitializeComponent();
  15. if (selectedTab > this.tabControl1.TabCount - 1) selectedTab = 0;
  16. this.tabControl1.SelectedIndex = selectedTab;
  17. UpdateFishing();
  18. UpdateMail();
  19. UpdateGoods();
  20. UpdateRefine();
  21. UpdateMarriage();
  22. UpdateMentor();
  23. UpdateGem();
  24. UpdateSpawnTick();
  25. UpdateHeroes();
  26. }
  27. #region Update
  28. private void UpdateFishing()
  29. {
  30. FishingAttemptsTextBox.Text = Settings.FishingAttempts.ToString();
  31. FishingSuccessRateStartTextBox.Text = Settings.FishingSuccessStart.ToString();
  32. FishingSuccessRateMultiplierTextBox.Text = Settings.FishingSuccessMultiplier.ToString();
  33. FishingDelayTextBox.Text = Settings.FishingDelay.ToString();
  34. MonsterSpawnChanceTextBox.Text = Settings.FishingMobSpawnChance.ToString();
  35. FishingMobIndexComboBox.Items.Clear();
  36. for (int i = 0; i < Envir.MonsterInfoList.Count; i++)
  37. {
  38. FishingMobIndexComboBox.Items.Add(Envir.MonsterInfoList[i]);
  39. }
  40. MirDatabase.MonsterInfo fishingMob = Envir.GetMonsterInfo(Settings.FishingMonster);
  41. if (fishingMob != null)
  42. FishingMobIndexComboBox.SelectedIndex = Envir.GetMonsterInfo(Settings.FishingMonster).Index - 1;
  43. }
  44. private void UpdateMail()
  45. {
  46. MailAutoSendGoldCheckbox.Checked = Settings.MailAutoSendGold;
  47. MailAutoSendItemsCheckbox.Checked = Settings.MailAutoSendItems;
  48. MailFreeWithStampCheckbox.Checked = Settings.MailFreeWithStamp;
  49. MailCostPer1kTextBox.Text = Settings.MailCostPer1KGold.ToString();
  50. MailInsurancePercentageTextBox.Text = Settings.MailItemInsurancePercentage.ToString();
  51. }
  52. private void UpdateGoods()
  53. {
  54. GoodsOnCheckBox.Checked = Settings.GoodsOn;
  55. GoodsMaxStoredTextBox.Text = Settings.GoodsMaxStored.ToString();
  56. GoodsBuyBackTimeTextBox.Text = Settings.GoodsBuyBackTime.ToString();
  57. GoodsBuyBackMaxStoredTextBox.Text = Settings.GoodsBuyBackMaxStored.ToString();
  58. }
  59. private void UpdateMarriage()
  60. {
  61. LoverRecall_checkbox.Checked = Settings.WeddingRingRecall;
  62. LoverBonusEXP_textbox.Text = Settings.LoverEXPBonus.ToString();
  63. MarriageCooldown_textbox.Text = Settings.MarriageCooldown.ToString();
  64. RequiredLevel_textbox.Text = Settings.MarriageLevelRequired.ToString();
  65. ReplaceRingCost_textbox.Text = Settings.ReplaceWedRingCost.ToString();
  66. }
  67. private void UpdateMentor()
  68. {
  69. MenteeSkillBoost_checkbox.Checked = Settings.MentorSkillBoost;
  70. MentorLevelGap_textbox.Text = Settings.MentorLevelGap.ToString();
  71. MentorLength_textbox.Text = Settings.MentorLength.ToString();
  72. MentorDamageBoost_textbox.Text = Settings.MentorDamageBoost.ToString();
  73. MenteeExpBoost_textbox.Text = Settings.MentorExpBoost.ToString();
  74. MenteeExpBank_textbox.Text = Settings.MenteeExpBank.ToString();
  75. }
  76. private void UpdateRefine()
  77. {
  78. WeaponOnly_checkbox.Checked = Settings.OnlyRefineWeapon;
  79. BaseChance_textbox.Text = Settings.RefineBaseChance.ToString();
  80. RefineTime_textbox.Text = Settings.RefineTime.ToString();
  81. NormalStat_textbox.Text = Settings.RefineIncrease.ToString();
  82. CritChance_textbox.Text = Settings.RefineCritChance.ToString();
  83. CritMultiplier_textbox.Text = Settings.RefineCritIncrease.ToString();
  84. WepDimReturn_textbox.Text = Settings.RefineWepStatReduce.ToString();
  85. ItemDimReturn_textbox.Text = Settings.RefineItemStatReduce.ToString();
  86. RefineCost_textbox.Text = Settings.RefineCost.ToString();
  87. OreName_textbox.Text = Settings.RefineOreName.ToString();
  88. }
  89. private void UpdateGem()
  90. {
  91. GemStatCheckBox.Checked = Settings.GemStatIndependent;
  92. }
  93. private void UpdateSpawnTick()
  94. {
  95. txtSpawnTickDefault.Text = Envir.RespawnTick.BaseSpawnRate.ToString();
  96. if (lbSpawnTickList.Items.Count != Envir.RespawnTick.Respawn.Count)
  97. {
  98. lbSpawnTickList.ClearSelected();
  99. lbSpawnTickList.Items.Clear();
  100. foreach (RespawnTickOption Option in Envir.RespawnTick.Respawn)
  101. lbSpawnTickList.Items.Add(Option);
  102. pnlSpawnTickConfig.Enabled = false;
  103. txtSpawnTickSpeed.Text = string.Empty;
  104. txtSpawnTickUsers.Text = string.Empty;
  105. }
  106. else
  107. {
  108. if (lbSpawnTickList.SelectedIndex == -1)
  109. {
  110. pnlSpawnTickConfig.Enabled = false;
  111. txtSpawnTickSpeed.Text = string.Empty;
  112. txtSpawnTickUsers.Text = string.Empty;
  113. }
  114. else
  115. {
  116. pnlSpawnTickConfig.Enabled = true;
  117. RespawnTickOption Option = (RespawnTickOption)lbSpawnTickList.SelectedItem;
  118. txtSpawnTickSpeed.Text = $"{Option.DelayLoss:0.0}";
  119. txtSpawnTickUsers.Text = Option.UserCount.ToString();
  120. }
  121. }
  122. }
  123. private void UpdateHeroes()
  124. {
  125. AllowNewHero_checkBox.Checked = Settings.AllowNewHero;
  126. AllowWarriorHero_checkBox.Checked = Settings.Hero_CanCreateClass[0];
  127. AllowWizardHero_checkBox.Checked = Settings.Hero_CanCreateClass[1];
  128. AllowTaoistHero_checkBox.Checked = Settings.Hero_CanCreateClass[2];
  129. AllowAssassinHero_checkBox.Checked = Settings.Hero_CanCreateClass[3];
  130. AllowArcherHero_checkBox.Checked = Settings.Hero_CanCreateClass[4];
  131. MaxHeroSealCount_textBox.Text = Settings.HeroMaximumSealCount.ToString();
  132. MaxPlayerHeroCount_textBox.Text = Settings.MaximumHeroCount.ToString();
  133. MinPlayerLevelHero_textBox.Text = Settings.Hero_RequiredLevel.ToString();
  134. HeroSealItem_ComboBox.Items.Clear();
  135. for (int i = 0; i < Envir.ItemInfoList.Count; i++)
  136. {
  137. HeroSealItem_ComboBox.Items.Add(Envir.ItemInfoList[i]);
  138. }
  139. ItemInfo sealItem = Envir.GetItemInfo(Settings.HeroSealItemName);
  140. if (sealItem != null)
  141. HeroSealItem_ComboBox.SelectedIndex = sealItem.Index - 4;
  142. }
  143. #endregion
  144. private void SystemInfoForm_FormClosed(object sender, FormClosedEventArgs e)
  145. {
  146. if (FishingChanged)
  147. Settings.SaveFishing();
  148. if (MailChanged)
  149. Settings.SaveMail();
  150. if (GoodsChanged)
  151. Settings.SaveGoods();
  152. if (RefineChanged)
  153. Settings.SaveRefine();
  154. if (MarriageChanged)
  155. Settings.SaveMarriage();
  156. if (MentorChanged)
  157. Settings.SaveMentor();
  158. if (GemChanged)
  159. Settings.SaveGem();
  160. if (HeroesChanged)
  161. Settings.SaveHeroSettings();
  162. if (SpawnChanged)
  163. Envir.SaveDB();
  164. }
  165. #region Fishing
  166. private void FishingAttemptsTextBox_TextChanged(object sender, EventArgs e)
  167. {
  168. if (ActiveControl != sender) return;
  169. int temp;
  170. if (!int.TryParse(ActiveControl.Text, out temp) || temp > 100 || temp < 10)
  171. {
  172. ActiveControl.BackColor = Color.Red;
  173. return;
  174. }
  175. ActiveControl.BackColor = SystemColors.Window;
  176. Settings.FishingAttempts = temp;
  177. FishingChanged = true;
  178. }
  179. private void FishingSuccessRateStartTextBox_TextChanged(object sender, EventArgs e)
  180. {
  181. if (ActiveControl != sender) return;
  182. int temp;
  183. if (!int.TryParse(ActiveControl.Text, out temp) || temp > 100 || temp < 0)
  184. {
  185. ActiveControl.BackColor = Color.Red;
  186. return;
  187. }
  188. ActiveControl.BackColor = SystemColors.Window;
  189. Settings.FishingSuccessStart = temp;
  190. FishingChanged = true;
  191. }
  192. private void FishingDelayTextBox_TextChanged(object sender, EventArgs e)
  193. {
  194. if (ActiveControl != sender) return;
  195. long temp;
  196. if (!long.TryParse(ActiveControl.Text, out temp))
  197. {
  198. ActiveControl.BackColor = Color.Red;
  199. return;
  200. }
  201. ActiveControl.BackColor = SystemColors.Window;
  202. Settings.FishingDelay = temp;
  203. FishingChanged = true;
  204. }
  205. private void MonsterSpawnChanceTextBox_TextChanged(object sender, EventArgs e)
  206. {
  207. if (ActiveControl != sender) return;
  208. int temp;
  209. if (!int.TryParse(ActiveControl.Text, out temp))
  210. {
  211. ActiveControl.BackColor = Color.Red;
  212. return;
  213. }
  214. ActiveControl.BackColor = SystemColors.Window;
  215. Settings.FishingMobSpawnChance = temp;
  216. FishingChanged = true;
  217. }
  218. private void FishingSuccessRateMultiplierTextBox_TextChanged(object sender, EventArgs e)
  219. {
  220. if (ActiveControl != sender) return;
  221. int temp;
  222. if (!int.TryParse(ActiveControl.Text, out temp) || temp > 100 || temp < 1)
  223. {
  224. ActiveControl.BackColor = Color.Red;
  225. return;
  226. }
  227. ActiveControl.BackColor = SystemColors.Window;
  228. Settings.FishingSuccessMultiplier = temp;
  229. FishingChanged = true;
  230. }
  231. private void FishingMobIndexComboBox_SelectedIndexChanged(object sender, EventArgs e)
  232. {
  233. if (ActiveControl != sender) return;
  234. MirDatabase.MonsterInfo mob = Envir.MonsterInfoList[FishingMobIndexComboBox.SelectedIndex];
  235. if (mob == null) return;
  236. Settings.FishingMonster = mob.Name;
  237. FishingChanged = true;
  238. }
  239. #endregion
  240. #region Mail
  241. private void MailAutoSendGoldCheckbox_CheckedChanged(object sender, EventArgs e)
  242. {
  243. if (ActiveControl != sender) return;
  244. Settings.MailAutoSendGold = MailAutoSendGoldCheckbox.Checked;
  245. MailChanged = true;
  246. }
  247. private void MailAutoSendItemsCheckbox_CheckedChanged(object sender, EventArgs e)
  248. {
  249. if (ActiveControl != sender) return;
  250. Settings.MailAutoSendItems = MailAutoSendItemsCheckbox.Checked;
  251. MailChanged = true;
  252. }
  253. private void MailFreeWithStampCheckbox_CheckedChanged(object sender, EventArgs e)
  254. {
  255. if (ActiveControl != sender) return;
  256. Settings.MailFreeWithStamp = MailFreeWithStampCheckbox.Checked;
  257. MailChanged = true;
  258. }
  259. private void MailCostPer1kTextBox_TextChanged(object sender, EventArgs e)
  260. {
  261. if (ActiveControl != sender) return;
  262. uint temp;
  263. if (!uint.TryParse(ActiveControl.Text, out temp) || temp > 1000)
  264. {
  265. ActiveControl.BackColor = Color.Red;
  266. return;
  267. }
  268. ActiveControl.BackColor = SystemColors.Window;
  269. Settings.MailCostPer1KGold = temp;
  270. MailChanged = true;
  271. }
  272. private void MailInsurancePercentageTextBox_TextChanged(object sender, EventArgs e)
  273. {
  274. if (ActiveControl != sender) return;
  275. uint temp;
  276. if (!uint.TryParse(ActiveControl.Text, out temp) || temp > 100 || temp < 0)
  277. {
  278. ActiveControl.BackColor = Color.Red;
  279. return;
  280. }
  281. ActiveControl.BackColor = SystemColors.Window;
  282. Settings.MailItemInsurancePercentage = temp;
  283. MailChanged = true;
  284. }
  285. private void LoverRecall_checkbox_CheckedChanged(object sender, EventArgs e)
  286. {
  287. if (ActiveControl != sender) return;
  288. Settings.WeddingRingRecall = LoverRecall_checkbox.Checked;
  289. MarriageChanged = true;
  290. }
  291. private void LoverBonusEXP_textbox_TextChanged(object sender, EventArgs e)
  292. {
  293. if (ActiveControl != sender) return;
  294. int temp;
  295. if (!int.TryParse(ActiveControl.Text, out temp) || temp > 500 || temp < 0)
  296. {
  297. ActiveControl.BackColor = Color.Red;
  298. return;
  299. }
  300. ActiveControl.BackColor = SystemColors.Window;
  301. Settings.LoverEXPBonus = temp;
  302. MarriageChanged = true;
  303. }
  304. private void MarriageCooldown_textbox_TextChanged(object sender, EventArgs e)
  305. {
  306. if (ActiveControl != sender) return;
  307. int temp;
  308. if (!int.TryParse(ActiveControl.Text, out temp) || temp > 365 || temp < 0)
  309. {
  310. ActiveControl.BackColor = Color.Red;
  311. return;
  312. }
  313. ActiveControl.BackColor = SystemColors.Window;
  314. Settings.MarriageCooldown = temp;
  315. MarriageChanged = true;
  316. }
  317. private void RequiredLevel_textbox_TextChanged(object sender, EventArgs e)
  318. {
  319. if (ActiveControl != sender) return;
  320. int temp;
  321. if (!int.TryParse(ActiveControl.Text, out temp) || temp > 255 || temp < 0)
  322. {
  323. ActiveControl.BackColor = Color.Red;
  324. return;
  325. }
  326. ActiveControl.BackColor = SystemColors.Window;
  327. Settings.MarriageLevelRequired = temp;
  328. MarriageChanged = true;
  329. }
  330. private void SystemInfoForm_Load(object sender, EventArgs e)
  331. {
  332. }
  333. private void WeaponOnly_checkbox_CheckedChanged(object sender, EventArgs e)
  334. {
  335. if (ActiveControl != sender) return;
  336. Settings.OnlyRefineWeapon = WeaponOnly_checkbox.Checked;
  337. RefineChanged = true;
  338. }
  339. private void BaseChance_textbox_TextChanged(object sender, EventArgs e)
  340. {
  341. if (ActiveControl != sender) return;
  342. byte temp;
  343. if (!byte.TryParse(ActiveControl.Text, out temp) || temp > 100 || temp < 0)
  344. {
  345. ActiveControl.BackColor = Color.Red;
  346. return;
  347. }
  348. ActiveControl.BackColor = SystemColors.Window;
  349. Settings.RefineBaseChance = temp;
  350. RefineChanged = true;
  351. }
  352. private void RefineTime_textbox_TextChanged(object sender, EventArgs e)
  353. {
  354. if (ActiveControl != sender) return;
  355. int temp;
  356. if (!int.TryParse(ActiveControl.Text, out temp) || temp > 1000 || temp < 0)
  357. {
  358. ActiveControl.BackColor = Color.Red;
  359. return;
  360. }
  361. ActiveControl.BackColor = SystemColors.Window;
  362. Settings.RefineTime = temp;
  363. RefineChanged = true;
  364. }
  365. private void NormalStat_textbox_TextChanged(object sender, EventArgs e)
  366. {
  367. if (ActiveControl != sender) return;
  368. byte temp;
  369. if (!byte.TryParse(ActiveControl.Text, out temp) || temp > 255 || temp < 0)
  370. {
  371. ActiveControl.BackColor = Color.Red;
  372. return;
  373. }
  374. ActiveControl.BackColor = SystemColors.Window;
  375. Settings.RefineIncrease = temp;
  376. RefineChanged = true;
  377. }
  378. private void CritChance_textbox_TextChanged(object sender, EventArgs e)
  379. {
  380. if (ActiveControl != sender) return;
  381. byte temp;
  382. if (!byte.TryParse(ActiveControl.Text, out temp) || temp > 100 || temp < 0)
  383. {
  384. ActiveControl.BackColor = Color.Red;
  385. return;
  386. }
  387. ActiveControl.BackColor = SystemColors.Window;
  388. Settings.RefineCritChance = temp;
  389. RefineChanged = true;
  390. }
  391. private void CritMultiplier_textbox_TextChanged(object sender, EventArgs e)
  392. {
  393. if (ActiveControl != sender) return;
  394. byte temp;
  395. if (!byte.TryParse(ActiveControl.Text, out temp) || temp > 255 || temp < 0)
  396. {
  397. ActiveControl.BackColor = Color.Red;
  398. return;
  399. }
  400. ActiveControl.BackColor = SystemColors.Window;
  401. Settings.RefineCritIncrease = temp;
  402. RefineChanged = true;
  403. }
  404. private void WepDimReturn_textbox_TextChanged(object sender, EventArgs e)
  405. {
  406. if (ActiveControl != sender) return;
  407. byte temp;
  408. if (!byte.TryParse(ActiveControl.Text, out temp) || temp > 100 || temp < 0)
  409. {
  410. ActiveControl.BackColor = Color.Red;
  411. return;
  412. }
  413. ActiveControl.BackColor = SystemColors.Window;
  414. Settings.RefineWepStatReduce = temp;
  415. RefineChanged = true;
  416. }
  417. private void ItemDimReturn_textbox_TextChanged(object sender, EventArgs e)
  418. {
  419. if (ActiveControl != sender) return;
  420. byte temp;
  421. if (!byte.TryParse(ActiveControl.Text, out temp) || temp > 100 || temp < 0)
  422. {
  423. ActiveControl.BackColor = Color.Red;
  424. return;
  425. }
  426. ActiveControl.BackColor = SystemColors.Window;
  427. Settings.RefineItemStatReduce = temp;
  428. RefineChanged = true;
  429. }
  430. private void RefineCost_textbox_TextChanged(object sender, EventArgs e)
  431. {
  432. if (ActiveControl != sender) return;
  433. int temp;
  434. if (!int.TryParse(ActiveControl.Text, out temp) || temp > 2000 || temp < 0)
  435. {
  436. ActiveControl.BackColor = Color.Red;
  437. return;
  438. }
  439. ActiveControl.BackColor = SystemColors.Window;
  440. Settings.RefineCost = temp;
  441. RefineChanged = true;
  442. }
  443. private void OreName_textbox_TextChanged(object sender, EventArgs e)
  444. {
  445. if (ActiveControl != sender) return;
  446. Settings.RefineOreName = ActiveControl.Text;
  447. RefineChanged = true;
  448. }
  449. private void ReplaceRingCost_textbox_TextChanged(object sender, EventArgs e)
  450. {
  451. if (ActiveControl != sender) return;
  452. int temp;
  453. if (!int.TryParse(ActiveControl.Text, out temp) || temp > 2000 || temp < 0)
  454. {
  455. ActiveControl.BackColor = Color.Red;
  456. return;
  457. }
  458. ActiveControl.BackColor = SystemColors.Window;
  459. Settings.ReplaceWedRingCost = temp;
  460. MarriageChanged = true;
  461. }
  462. private void MentorLevelGap_textbox_TextChanged(object sender, EventArgs e)
  463. {
  464. if (ActiveControl != sender) return;
  465. byte temp;
  466. if (!byte.TryParse(ActiveControl.Text, out temp) || temp > 255 || temp < 0)
  467. {
  468. ActiveControl.BackColor = Color.Red;
  469. return;
  470. }
  471. ActiveControl.BackColor = SystemColors.Window;
  472. Settings.MentorLevelGap = temp;
  473. MentorChanged = true;
  474. }
  475. private void MentorLength_textbox_TextChanged(object sender, EventArgs e)
  476. {
  477. if (ActiveControl != sender) return;
  478. byte temp;
  479. if (!byte.TryParse(ActiveControl.Text, out temp) || temp > 255 || temp < 0)
  480. {
  481. ActiveControl.BackColor = Color.Red;
  482. return;
  483. }
  484. ActiveControl.BackColor = SystemColors.Window;
  485. Settings.MentorLength = temp;
  486. MentorChanged = true;
  487. }
  488. private void MentorDamageBoost_textbox_TextChanged(object sender, EventArgs e)
  489. {
  490. if (ActiveControl != sender) return;
  491. byte temp;
  492. if (!byte.TryParse(ActiveControl.Text, out temp) || temp > 255 || temp < 0)
  493. {
  494. ActiveControl.BackColor = Color.Red;
  495. return;
  496. }
  497. ActiveControl.BackColor = SystemColors.Window;
  498. Settings.MentorDamageBoost = temp;
  499. MentorChanged = true;
  500. }
  501. private void MenteeExpBoost_textbox_TextChanged(object sender, EventArgs e)
  502. {
  503. if (ActiveControl != sender) return;
  504. byte temp;
  505. if (!byte.TryParse(ActiveControl.Text, out temp) || temp > 255 || temp < 0)
  506. {
  507. ActiveControl.BackColor = Color.Red;
  508. return;
  509. }
  510. ActiveControl.BackColor = SystemColors.Window;
  511. Settings.MentorExpBoost = temp;
  512. MentorChanged = true;
  513. }
  514. private void MenteeExpBank_textbox_TextChanged(object sender, EventArgs e)
  515. {
  516. if (ActiveControl != sender) return;
  517. byte temp;
  518. if (!byte.TryParse(ActiveControl.Text, out temp) || temp > 255 || temp < 0)
  519. {
  520. ActiveControl.BackColor = Color.Red;
  521. return;
  522. }
  523. ActiveControl.BackColor = SystemColors.Window;
  524. Settings.MenteeExpBank = temp;
  525. MentorChanged = true;
  526. }
  527. private void MenteeSkillBoost_checkbox_CheckedChanged(object sender, EventArgs e)
  528. {
  529. if (ActiveControl != sender) return;
  530. Settings.MentorSkillBoost = MenteeSkillBoost_checkbox.Checked;
  531. MentorChanged = true;
  532. }
  533. #endregion
  534. #region Goods
  535. private void GoodsOnCheckBox_CheckedChanged(object sender, EventArgs e)
  536. {
  537. if (ActiveControl != sender) return;
  538. Settings.GoodsOn = GoodsOnCheckBox.Checked;
  539. GoodsChanged = true;
  540. }
  541. private void GoodsMaxStoredTextBox_TextChanged(object sender, EventArgs e)
  542. {
  543. if (ActiveControl != sender) return;
  544. uint temp;
  545. if (!uint.TryParse(ActiveControl.Text, out temp) || temp > 500 || temp < 0)
  546. {
  547. ActiveControl.BackColor = Color.Red;
  548. return;
  549. }
  550. ActiveControl.BackColor = SystemColors.Window;
  551. Settings.GoodsMaxStored = temp;
  552. GoodsChanged = true;
  553. }
  554. private void GoodsBuyBackTimeTextBox_TextChanged(object sender, EventArgs e)
  555. {
  556. if (ActiveControl != sender) return;
  557. uint temp;
  558. if (!uint.TryParse(ActiveControl.Text, out temp) || temp > 1440 || temp < 0)
  559. {
  560. ActiveControl.BackColor = Color.Red;
  561. return;
  562. }
  563. ActiveControl.BackColor = SystemColors.Window;
  564. Settings.GoodsBuyBackTime = temp;
  565. GoodsChanged = true;
  566. }
  567. private void GoodsBuyBackMaxStoredTextBox_TextChanged(object sender, EventArgs e)
  568. {
  569. if (ActiveControl != sender) return;
  570. uint temp;
  571. if (!uint.TryParse(ActiveControl.Text, out temp) || temp > 500 || temp < 0)
  572. {
  573. ActiveControl.BackColor = Color.Red;
  574. return;
  575. }
  576. ActiveControl.BackColor = SystemColors.Window;
  577. Settings.GoodsBuyBackMaxStored = temp;
  578. GoodsChanged = true;
  579. }
  580. #endregion
  581. #region Gem
  582. private void GemStatCheckBox_CheckedChanged(object sender, EventArgs e)
  583. {
  584. if (ActiveControl != sender) return;
  585. Settings.GemStatIndependent = GemStatCheckBox.Checked;
  586. GemChanged = true;
  587. }
  588. #endregion
  589. private void txtSpawnTickDefault_TextChanged(object sender, EventArgs e)
  590. {
  591. if (ActiveControl != sender) return;
  592. byte temp;
  593. if (!byte.TryParse(ActiveControl.Text, out temp) || temp > 255 || temp < 0)
  594. {
  595. ActiveControl.BackColor = Color.Red;
  596. return;
  597. }
  598. ActiveControl.BackColor = SystemColors.Window;
  599. Envir.RespawnTick.BaseSpawnRate = temp;
  600. SpawnChanged = true;
  601. }
  602. private void btnSpawnTickAdd_Click(object sender, EventArgs e)
  603. {
  604. if (ActiveControl != sender) return;
  605. RespawnTickOption Option = new RespawnTickOption();
  606. Envir.RespawnTick.Respawn.Add(Option);
  607. lbSpawnTickList.Items.Add(Option);
  608. lbSpawnTickList.SelectedIndex = Envir.RespawnTick.Respawn.Count - 1;
  609. UpdateSpawnTick();
  610. SpawnChanged = true;
  611. }
  612. private void btnSpawnTickRemove_Click(object sender, EventArgs e)
  613. {
  614. if (ActiveControl != sender) return;
  615. if (lbSpawnTickList.SelectedIndex == -1) return;
  616. if (MessageBox.Show("Are you sure you want to delete the index?", "Delete?", MessageBoxButtons.YesNo) != DialogResult.Yes) return;
  617. Envir.RespawnTick.Respawn.RemoveAt(lbSpawnTickList.SelectedIndex);
  618. //lbSpawnTickList.Items.RemoveAt(lbSpawnTickList.SelectedIndex);
  619. UpdateSpawnTick();
  620. SpawnChanged = true;
  621. }
  622. private void lbSpawnTickList_SelectedIndexChanged(object sender, EventArgs e)
  623. {
  624. UpdateSpawnTick();
  625. }
  626. private void txtSpawnTickUsers_TextChanged(object sender, EventArgs e)
  627. {
  628. if (ActiveControl != sender) return;
  629. if (lbSpawnTickList.SelectedIndex == -1) return;
  630. int temp;
  631. if (!int.TryParse(ActiveControl.Text, out temp) || (temp < 0))
  632. {
  633. ActiveControl.BackColor = Color.Red;
  634. return;
  635. }
  636. ActiveControl.BackColor = SystemColors.Window;
  637. Envir.RespawnTick.Respawn[lbSpawnTickList.SelectedIndex].UserCount = temp;
  638. lbSpawnTickList.Items[lbSpawnTickList.SelectedIndex] = lbSpawnTickList.SelectedItem;//need this to update the string displayed
  639. //lbSpawnTickList.Refresh();
  640. txtSpawnTickUsers.Focus();
  641. txtSpawnTickUsers.SelectionStart = txtSpawnTickUsers.Text.Length;
  642. SpawnChanged = true;
  643. }
  644. private void txtSpawnTickSpeed_TextChanged(object sender, EventArgs e)
  645. {
  646. if (ActiveControl != sender) return;
  647. if (lbSpawnTickList.SelectedIndex == -1) return;
  648. double temp;
  649. if (!double.TryParse(ActiveControl.Text, out temp) || (temp <= 0) || (temp > 1.0))
  650. {
  651. ActiveControl.BackColor = Color.Red;
  652. return;
  653. }
  654. ActiveControl.BackColor = SystemColors.Window;
  655. Envir.RespawnTick.Respawn[lbSpawnTickList.SelectedIndex].DelayLoss = temp;
  656. SpawnChanged = true;
  657. }
  658. #region Heroes
  659. private void AllowNewHero_checkBox_CheckedChanged(object sender, EventArgs e)
  660. {
  661. if (ActiveControl != sender) return;
  662. Settings.AllowNewHero = AllowNewHero_checkBox.Checked;
  663. HeroesChanged = true;
  664. }
  665. private void AllowWarriorHero_checkBox_CheckedChanged(object sender, EventArgs e)
  666. {
  667. if (ActiveControl != sender) return;
  668. Settings.Hero_CanCreateClass[0] = AllowWarriorHero_checkBox.Checked;
  669. HeroesChanged = true;
  670. }
  671. private void AllowWizardHero_checkBox_CheckedChanged(object sender, EventArgs e)
  672. {
  673. if (ActiveControl != sender) return;
  674. Settings.Hero_CanCreateClass[1] = AllowWizardHero_checkBox.Checked;
  675. HeroesChanged = true;
  676. }
  677. private void AllowTaoistHero_checkBox_CheckedChanged(object sender, EventArgs e)
  678. {
  679. if (ActiveControl != sender) return;
  680. Settings.Hero_CanCreateClass[2] = AllowTaoistHero_checkBox.Checked;
  681. HeroesChanged = true;
  682. }
  683. private void AllowAssassinHero_checkBox_CheckedChanged(object sender, EventArgs e)
  684. {
  685. if (ActiveControl != sender) return;
  686. Settings.Hero_CanCreateClass[3] = AllowAssassinHero_checkBox.Checked;
  687. HeroesChanged = true;
  688. }
  689. private void AllowArcherHero_checkBox_CheckedChanged(object sender, EventArgs e)
  690. {
  691. if (ActiveControl != sender) return;
  692. Settings.Hero_CanCreateClass[4] = AllowArcherHero_checkBox.Checked;
  693. HeroesChanged = true;
  694. }
  695. private void MaxHeroSealCount_textBox_TextChanged(object sender, EventArgs e)
  696. {
  697. if (ActiveControl != sender) return;
  698. byte temp;
  699. if (!byte.TryParse(ActiveControl.Text, out temp) || temp > 255 || temp < 0)
  700. {
  701. ActiveControl.BackColor = Color.Red;
  702. return;
  703. }
  704. ActiveControl.BackColor = SystemColors.Window;
  705. Settings.HeroMaximumSealCount = temp;
  706. HeroesChanged = true;
  707. }
  708. private void MaxPlayerHeroCount_textBox_TextChanged(object sender, EventArgs e)
  709. {
  710. if (ActiveControl != sender) return;
  711. byte temp;
  712. if (!byte.TryParse(ActiveControl.Text, out temp) || temp > 9 || temp < 1 && AllowNewHero_checkBox.Checked)
  713. {
  714. ActiveControl.BackColor = Color.Red;
  715. return;
  716. }
  717. ActiveControl.BackColor = SystemColors.Window;
  718. Settings.MaximumHeroCount = temp;
  719. HeroesChanged = true;
  720. }
  721. private void MinPlayerLevelHero_textBox_TextChanged(object sender, EventArgs e)
  722. {
  723. if (ActiveControl != sender) return;
  724. byte temp;
  725. if (!byte.TryParse(ActiveControl.Text, out temp) || temp > 255 || temp < 1)
  726. {
  727. ActiveControl.BackColor = Color.Red;
  728. return;
  729. }
  730. ActiveControl.BackColor = SystemColors.Window;
  731. Settings.Hero_RequiredLevel = temp;
  732. HeroesChanged = true;
  733. }
  734. private void HeroSealItem_ComboBox_SelectedIndexChanged(object sender, EventArgs e)
  735. {
  736. if (ActiveControl != sender) return;
  737. ItemInfo item = Envir.ItemInfoList[HeroSealItem_ComboBox.SelectedIndex];
  738. if (item == null) return;
  739. Settings.HeroSealItemName = item.Name;
  740. HeroesChanged = true;
  741. }
  742. #endregion Heroes
  743. }
  744. }