void WriteButtonFE7UMagicExtends(object sender, EventArgs e) { if (MagicSplitUtil.SearchMagicSplit() != MagicSplitUtil.magic_split_enum.FE7UMAGIC) { if (MagicSplitUtil.SearchMagicSplit() != MagicSplitUtil.magic_split_enum.FE8UMAGIC) { return; } } if (this.AddressList.SelectedIndex < 0) { return; } uint cid = (uint)this.AddressList.SelectedIndex; InputFormRef InputFormRef = Init(null); uint addr = InputFormRef.IDToAddr(cid); if (!U.isSafetyOffset(addr)) { return; } Undo.UndoData undodata = Program.Undo.NewUndoData(this, "MagicExtends"); MagicSplitUtil.WriteClassBaseMagicExtends(cid, addr, U.ConvertNUDToUint(this.MagicExtClassBase), undodata); MagicSplitUtil.WriteClassGrowMagicExtends(cid, addr, (uint)this.MagicExtClassGrow.Value, undodata); MagicSplitUtil.WriteClassLimitMagicExtends(cid, addr, (uint)this.MagicExtClassLimit.Value, undodata); MagicSplitUtil.WriteClassPromotionGainMagicExtends(cid, addr, (uint)this.MagicExtClassPromotionGain.Value, undodata); Program.Undo.Push(undodata); }
public static void GetSim(ref GrowSimulator sim, uint cid) { InputFormRef InputFormRef = Init(null); uint addr = InputFormRef.IDToAddr(cid); if (!U.isSafetyOffset(addr)) { return; } sim.SetClassBase( (int)Program.ROM.u8(addr + 11) //hp , (int)Program.ROM.u8(addr + 12) //str , (int)Program.ROM.u8(addr + 13) //skill , (int)Program.ROM.u8(addr + 14) //spd , (int)Program.ROM.u8(addr + 15) //def , (int)Program.ROM.u8(addr + 16) //res , (int)MagicSplitUtil.GetClassBaseMagicExtends(cid, addr) //ext_magic ); sim.SetClassGrow( (int)Program.ROM.u8(addr + 27) //hp , (int)Program.ROM.u8(addr + 28) //str , (int)Program.ROM.u8(addr + 29) //skill , (int)Program.ROM.u8(addr + 30) //spd , (int)Program.ROM.u8(addr + 31) //def , (int)Program.ROM.u8(addr + 32) //res , (int)Program.ROM.u8(addr + 33) //luck , (int)MagicSplitUtil.GetClassGrowMagicExtends(cid, addr) //ext_magic ); }
void SelectedIndexChangedFE7UMagicExtends(object sender, EventArgs e) { if (MagicSplitUtil.SearchMagicSplit() != MagicSplitUtil.magic_split_enum.FE7UMAGIC) { return; } if (this.AddressList.SelectedIndex < 0) { return; } uint uid = (uint)this.AddressList.SelectedIndex; InputFormRef InputFormRef = Init(null); uint addr = InputFormRef.IDToAddr(uid); if (!U.isSafetyOffset(addr)) { return; } uid++; this.MagicExtUnitBase.Value = MagicSplitUtil.GetUnitBaseMagicExtends(uid, addr); this.MagicExtUnitGrow.Value = MagicSplitUtil.GetUnitGrowMagicExtends(uid, addr); }
void SelectedIndexChangedFE7UMagicExtends(object sender, EventArgs e) { if (MagicSplitUtil.SearchMagicSplit() != MagicSplitUtil.magic_split_enum.FE7UMAGIC) { if (MagicSplitUtil.SearchMagicSplit() != MagicSplitUtil.magic_split_enum.FE8UMAGIC) { return; } } if (this.AddressList.SelectedIndex < 0) { return; } uint cid = (uint)this.AddressList.SelectedIndex; InputFormRef InputFormRef = Init(null); uint addr = InputFormRef.IDToAddr(cid); if (!U.isSafetyOffset(addr)) { return; } this.MagicExtClassBase.Value = (sbyte)MagicSplitUtil.GetClassBaseMagicExtends(cid, addr); this.MagicExtClassGrow.Value = MagicSplitUtil.GetClassGrowMagicExtends(cid, addr); this.MagicExtClassLimit.Value = MagicSplitUtil.GetClassLimitMagicExtends(cid, addr); this.MagicExtClassPromotionGain.Value = MagicSplitUtil.GetClassPromotionGainMagicExtends(cid, addr); }
public static void SetSimUnit(ref GrowSimulator sim, uint uid) { if (uid == 0 || uid == U.NOT_FOUND) { return; } InputFormRef InputFormRef = Init(null); uint addr = InputFormRef.IDToAddr(uid - 1); if (!U.isSafetyOffset(addr)) { return; } sim.SetUnitBase((int)Program.ROM.u8(addr + 11) //LV , (int)(sbyte)Program.ROM.u8(addr + 12) //hp , (int)(sbyte)Program.ROM.u8(addr + 13) //str , (int)(sbyte)Program.ROM.u8(addr + 14) //skill , (int)(sbyte)Program.ROM.u8(addr + 15) //spd , (int)(sbyte)Program.ROM.u8(addr + 16) //def , (int)(sbyte)Program.ROM.u8(addr + 17) //res , (int)(sbyte)Program.ROM.u8(addr + 18) //luck , (int)(sbyte)MagicSplitUtil.GetUnitBaseMagicExtends(uid, addr) //magic ext ); sim.SetUnitGrow( (int)Program.ROM.u8(addr + 28) //hp , (int)Program.ROM.u8(addr + 29) //str , (int)Program.ROM.u8(addr + 30) //skill , (int)Program.ROM.u8(addr + 31) //spd , (int)Program.ROM.u8(addr + 32) //def , (int)Program.ROM.u8(addr + 33) //res , (int)Program.ROM.u8(addr + 34) //luck , (int)MagicSplitUtil.GetUnitGrowMagicExtends(uid, addr) //magic ext ); }
void WriteButtonFE7UMagicExtends(object sender, EventArgs e) { if (MagicSplitUtil.SearchMagicSplit() != MagicSplitUtil.magic_split_enum.FE7UMAGIC) { return; } if (this.AddressList.SelectedIndex < 0) { return; } uint uid = (uint)this.AddressList.SelectedIndex; InputFormRef InputFormRef = Init(null); uint addr = InputFormRef.IDToAddr(uid); if (!U.isSafetyOffset(addr)) { return; } uid++; Undo.UndoData undodata = Program.Undo.NewUndoData(this, "MagicExtends"); MagicSplitUtil.WriteUnitBaseMagicExtends(uid, addr, (uint)this.MagicExtUnitBase.Value, undodata); MagicSplitUtil.WriteUnitGrowMagicExtends(uid, addr, (uint)this.MagicExtUnitGrow.Value, undodata); Program.Undo.Push(undodata); }
private void UnitForm_Load(object sender, EventArgs e) { List <Control> controls = InputFormRef.GetAllControls(this); X_Tooltip = InputFormRef.GetToolTip <UnitForm>(); InputFormRef.LoadCheckboxesResource(U.ConfigDataFilename("unitclass_checkbox_"), controls, X_Tooltip, "", "L_40_BIT_", "L_41_BIT_", "L_42_BIT_", "L_43_BIT_"); if (Program.ROM.RomInfo.version() == 8) {//FE8の場合 //スキル X_SkillType = PatchUtil.SearchSkillSystem(); if (X_SkillType == PatchUtil.skill_system_enum.SkillSystem || X_SkillType == PatchUtil.skill_system_enum.FE8N_ver2 ) { InputFormRef.markupJumpLabel(this.X_UNITSKILL); this.X_UNITSKILL.Show(); this.X_SkillButtons = new Button[] { X_SKILL_BUTTON1, X_SKILL_BUTTON2, X_SKILL_BUTTON3, X_SKILL_BUTTON4, X_SKILL_BUTTON5, X_SKILL_BUTTON6, X_SKILL_BUTTON7, X_SKILL_BUTTON8, X_SKILL_BUTTON9 }; for (int i = 0; i < this.X_SkillButtons.Length; i++) { this.X_SkillButtons[i].Click += X_UNITSKILL_Button_Click; } } //魔法分離パッチ MagicSplitUtil.magic_split_enum magic_split = MagicSplitUtil.SearchMagicSplit(); if (magic_split == MagicSplitUtil.magic_split_enum.FE8NMAGIC) { InitFE8NMagicExtends(controls); } } }
void InitMagic() { MagicSplitUtil.magic_split_enum magic_split = MagicSplitUtil.SearchMagicSplit(); if (magic_split == MagicSplitUtil.magic_split_enum.NO) { this.Width = X_SIM_MAGICEX_Label.Left; } else { X_SIM_MAGICEX_Label.Show(); X_SIM_MAGICEX_Value.Show(); this.Width = X_SIM_MAGICEX_Label.Left + X_SIM_MAGICEX_Label.Width; X_SIM_MAGICEX_Label.Location = new Point( X_SlidePanel.Location.X, X_SIM_MAGICEX_Label.Location.Y ); X_SIM_MAGICEX_Value.Location = new Point( X_SlidePanel.Location.X, X_SIM_MAGICEX_Value.Location.Y ); X_SlidePanel.Location = new Point( X_SlidePanel.Location.X + X_SIM_MAGICEX_Label.Width + 1, X_SlidePanel.Location.Y ); } }
private void ITEMSTATBOOSTERForm_Load(object sender, EventArgs e) { //英語版の魔法分離パッチ MagicSplitUtil.magic_split_enum magic_split = MagicSplitUtil.SearchMagicSplit(); if (magic_split == MagicSplitUtil.magic_split_enum.FE8UMAGIC || magic_split == MagicSplitUtil.magic_split_enum.FE7UMAGIC) { J_9.Text = R._("魔力"); } }
private void ClassForm_Load(object sender, EventArgs e) { List <Control> controls = InputFormRef.GetAllControls(this); this.X_Tooltip = InputFormRef.GetToolTip <ClassForm>(); InputFormRef.LoadCheckboxesResource("unitclass_checkbox_", controls, this.X_Tooltip, "", "L_40_BIT_", "L_41_BIT_", "L_42_BIT_", "L_43_BIT_"); if (Program.ROM.RomInfo.version == 8) {//FE8の場合、分岐CCへ InputFormRef.markupJumpLabel(this.J_5); //スキル this.X_SkillType = PatchUtil.SearchSkillSystem(); if (this.X_SkillType == PatchUtil.skill_system_enum.SkillSystem || this.X_SkillType == PatchUtil.skill_system_enum.FE8N_ver2 || this.X_SkillType == PatchUtil.skill_system_enum.FE8N_ver3 ) { InputFormRef.markupJumpLabel(this.X_CLASSSKILL); this.X_CLASSSKILL.Show(); this.X_SkillButtons = new Button[] { X_SKILL_BUTTON1, X_SKILL_BUTTON2, X_SKILL_BUTTON3, X_SKILL_BUTTON4, X_SKILL_BUTTON5, X_SKILL_BUTTON6, X_SKILL_BUTTON7, X_SKILL_BUTTON8, X_SKILL_BUTTON9 }; for (int i = 0; i < this.X_SkillButtons.Length; i++) { this.X_SkillButtons[i].Click += X_CLASSSKILL_Button_Click; } } } //魔法分離パッチ MagicSplitUtil.magic_split_enum magic_split = MagicSplitUtil.SearchMagicSplit(); if (magic_split == MagicSplitUtil.magic_split_enum.FE8NMAGIC) { InitFE8NMagicExtends(controls); } else if (magic_split == MagicSplitUtil.magic_split_enum.FE7UMAGIC || magic_split == MagicSplitUtil.magic_split_enum.FE8UMAGIC) { InitFE7UMagicExtends(controls); } //クラス拡張を表示するかどうか if (ClassForm.IsShowClassExetdns(this.AddressList)) { AddressListExpandsButton_255.Show(); } else { this.AddressList.Height += AddressListExpandsButton_255.Height; AddressListExpandsButton_255.Hide(); } //SkillSystemsによる 特効リワーク InitFE8ClassType(controls); this.AddressList.Focus(); }
private void UnitFormFE7_Load(object sender, EventArgs e) { List <Control> controls = InputFormRef.GetAllControls(this); ToolTipEx tooltip = InputFormRef.GetToolTip <UnitFE7Form>(); InputFormRef.LoadCheckboxesResource(U.ConfigDataFilename("unitclass_checkbox_"), controls, tooltip, "", "L_40_BIT_", "L_41_BIT_", "L_42_BIT_", "L_43_BIT_"); //魔法分離パッチ MagicSplitUtil.magic_split_enum magic_split = MagicSplitUtil.SearchMagicSplit(); if (magic_split == MagicSplitUtil.magic_split_enum.FE7UMAGIC) { InitFE7UMagicExtends(controls); } }
private void ItemForm_Load(object sender, EventArgs e) { List <Control> controls = InputFormRef.GetAllControls(this); ToolTipEx tooltip = InputFormRef.GetToolTip <ItemForm>(); InputFormRef.LoadCheckboxesResource("item_checkbox_", controls, tooltip, "", "L_8_BIT_", "L_9_BIT_", "L_10_BIT_", "L_11_BIT_"); FE8UItemSkill(); //英語版の魔法分離パッチ MagicSplitUtil.magic_split_enum magic_split = MagicSplitUtil.SearchMagicSplit(); if (magic_split == MagicSplitUtil.magic_split_enum.FE8UMAGIC || magic_split == MagicSplitUtil.magic_split_enum.FE7UMAGIC) { MagicExtUnitBaseLabel.Show(); MagicExtUnitBase.Show(); } VennouWeaponLockArray(controls); this.AddressList.Focus(); }
private void P12_ValueChanged(object sender, EventArgs e) { uint[] bonuses = ItemStatBonusesForm.GetValues((uint)P12.Value); X_SIM_HP.Value = (sbyte)bonuses[0]; //HP X_SIM_STR.Value = (sbyte)bonuses[1]; //攻撃 X_SIM_SKILL.Value = (sbyte)bonuses[2]; //技 X_SIM_SPD.Value = (sbyte)bonuses[3]; //速さ X_SIM_DEF.Value = (sbyte)bonuses[4]; //守備 X_SIM_RES.Value = (sbyte)bonuses[5]; //魔防 X_SIM_LUCK.Value = (sbyte)bonuses[6]; //幸運 X_SIM_MOVE.Value = (sbyte)bonuses[7]; //移動 X_SIM_BODY.Value = (sbyte)bonuses[8]; //体力 MagicSplitUtil.magic_split_enum magic_split = MagicSplitUtil.SearchMagicSplit(); if (magic_split == MagicSplitUtil.magic_split_enum.FE8UMAGIC || magic_split == MagicSplitUtil.magic_split_enum.FE7UMAGIC) { MagicExtUnitBase.Value = (sbyte)bonuses[9]; //魔力 } }
public static string MakeEAAutoDef(string target_filename, uint freearea, uint org_sp, uint org_data, bool isColorzCore) { StringBuilder sb = new StringBuilder(); string target_text = File.ReadAllText(target_filename); if (IsInjectHackInstallation(target_text)) { sb.AppendLine("#include \"Extensions/Hack Installation.txt\""); } if (freearea == U.NOT_FOUND && org_sp == U.NOT_FOUND) { sb.AppendLine(String.Format("#include \"{0}\"\r\n" , Path.GetFileName(target_filename))); return(sb.ToString()); } EAUtil ea = new EAUtil(target_filename); for (int i = 0; i < ea.IfNDefList.Count; i++) { string ifndef_keyword = ea.IfNDefList[i]; switch (ifndef_keyword) { case "FreeSpace": if (freearea != 0) { sb.AppendLine("#define FreeSpace " + U.To0xHexString(freearea)); } break; } } sb.AppendLine("#define ItemImage " + U.To0xHexString(Program.ROM.p32(Program.ROM.RomInfo.icon_pointer))); sb.AppendLine("#define ItemPalette " + U.To0xHexString(Program.ROM.p32(Program.ROM.RomInfo.icon_palette_pointer))); sb.AppendLine("#define ItemTable " + U.To0xHexString(Program.ROM.p32(Program.ROM.RomInfo.item_pointer))); sb.AppendLine("#define TextTable " + U.To0xHexString(Program.ROM.p32(Program.ROM.RomInfo.text_pointer))); sb.AppendLine("#define PortraitTable " + U.To0xHexString(Program.ROM.p32(Program.ROM.RomInfo.portrait_pointer))); if (Program.ROM.RomInfo.version == 8) { sb.AppendLine("#define SummonUnitTable " + U.To0xHexString(Program.ROM.p32(Program.ROM.RomInfo.summon_unit_pointer))); if (PatchUtil.SearchSkillSystem() == PatchUtil.skill_system_enum.SkillSystem) { SkillConfigSkillSystemForm.Export(sb, isColorzCore); } } sb.AppendLine("#define AI1Table " + U.To0xHexString(Program.ROM.p32(Program.ROM.RomInfo.ai1_pointer))); sb.AppendLine("#define AI2Table " + U.To0xHexString(Program.ROM.p32(Program.ROM.RomInfo.ai2_pointer))); UnitActionPointerForm.SupportActionRework(sb); if (org_sp != U.NOT_FOUND) { sb.AppendLine("#define FEBUILDER_EXTRA_ORG " + U.To0xHexString(org_sp)); } if (org_data != U.NOT_FOUND) { sb.AppendLine("#define FEBUILDER_DATA_ORG " + U.To0xHexString(org_data)); } Program.ExportFunction.ExportEA(sb, isColorzCore); PatchUtil.skill_system_enum skillsystem = PatchUtil.SearchSkillSystem(); if (skillsystem == PatchUtil.skill_system_enum.SkillSystem) { if (sb.ToString().IndexOf("SkillTester") >= 0) { sb.AppendLine("#define SKILLSYSTEM_SKILL_TESTER SkillTester"); } } //魔法分離パッチ MagicSplitUtil.magic_split_enum magic_split = MagicSplitUtil.SearchMagicSplit(); if (magic_split == MagicSplitUtil.magic_split_enum.FE8NMAGIC) { sb.AppendLine("#define MAGIC_PATCH"); } else if (magic_split == MagicSplitUtil.magic_split_enum.FE8UMAGIC) { sb.AppendLine("#define USE_STRMAG_SPLIT"); } else if (magic_split == MagicSplitUtil.magic_split_enum.FE7UMAGIC) { sb.AppendLine("#define USE_STRMAG_SPLIT"); } if (freearea == 0 || freearea == U.NOT_FOUND) { sb.AppendLine(String.Format("#include \"{0}\"\r\n" , Path.GetFileName(target_filename))); } else { sb.AppendLine(String.Format("ORG {0}\r\n#include \"{1}\"\r\n" , U.To0xHexString(freearea), target_filename)); } return(sb.ToString()); }
private void FilterComboBox_SelectedIndexChanged(object sender, EventArgs e) { PromotionItemExplain.Hide(); StatBoosterItemExplain.Hide(); int selected = FilterComboBox.SelectedIndex; string configFilename = ""; switch (selected) { case 0: //0=アイテムを利用できるか判定する default: configFilename = (U.ConfigDataFilename("item_usability_array_")); break; case 1: //1=アイテムを利用した場合の効果を定義する configFilename = (U.ConfigDataFilename("item_effect_array_")); break; case 2: //2=CCアイテムを使った場合の処理を定義する configFilename = (U.ConfigDataFilename("item_promotion1_array_")); PromotionItemExplain.Show(); break; case 3: //3=CCアイテムかどうかを定義する(FE7のみ) configFilename = (U.ConfigDataFilename("item_promotion2_array_")); PromotionItemExplain.Show(); break; case 4: //4=アイテムのターゲット選択の方法を定義する(多分) configFilename = (U.ConfigDataFilename("item_staff1_array_")); break; case 5: //5=杖の種類を定義する configFilename = (U.ConfigDataFilename("item_staff2_array_")); break; case 6: //6=ドーピングアイテムを利用した時のメッセージを定義する MagicSplitUtil.magic_split_enum magic_split = MagicSplitUtil.SearchMagicSplit(); if (magic_split == MagicSplitUtil.magic_split_enum.FE8UMAGIC) { configFilename = (U.ConfigDataFilename("item_statbooster1_skill_array_")); } else { configFilename = (U.ConfigDataFilename("item_statbooster1_array_")); } StatBoosterItemExplain.Show(); break; case 7: //7=ドーピングアイテムとCCアイテムかどうかを定義する configFilename = (U.ConfigDataFilename("item_statbooster2_array_")); StatBoosterItemExplain.Show(); break; case 8: //8=エラーメッセージを定義する configFilename = (U.ConfigDataFilename("item_errormessage_array_")); StatBoosterItemExplain.Show(); break; case 9: //9=アイテム名の前置詞 configFilename = (U.ConfigDataFilename("item_name_article_")); break; } this.L_0_COMBO.Items.Clear(); if (File.Exists(configFilename)) { string[] lines = File.ReadAllLines(configFilename); this.L_0_COMBO.BeginUpdate(); for (int i = 0; i < lines.Length; i++) { string line = lines[i]; if (U.IsComment(line) || U.OtherLangLine(line)) { continue; } line = U.ClipComment(line); line = line.Trim(); this.L_0_COMBO.Items.Add(line); } this.L_0_COMBO.EndUpdate(); } uint addr = ReInit(selected, this.InputFormRef); if (addr == U.NOT_FOUND) { this.AddressList.Items.Clear(); this.SwitchListExpandsButton.Hide(); this.WriteButton.Hide(); if (PatchUtil.ItemUsingExtendsPatch() == PatchUtil.ItemUsingExtends.IER) { this.X_NOT_FOUND.Hide(); this.X_IER_PATCH.Show(); return; } this.X_NOT_FOUND.Show(); this.X_IER_PATCH.Hide(); return; } this.SwitchListExpandsButton.Show(); this.WriteButton.Show(); this.X_NOT_FOUND.Hide(); this.X_IER_PATCH.Hide(); }