Exemplo n.º 1
0
        void UpdateItemDropLabel()
        {
            uint unit_id  = (uint)this.B0.Value;
            uint class_id = (uint)this.B1.Value;

            if (unit_id > 0)
            {
                unit_id--;
            }
            uint unit_addr  = UnitForm.GetUnitAddr(unit_id);
            uint class_addr = ClassForm.GetClassAddr(class_id);

            bool isItemDrop =
                IsItemDropFlag(unit_addr) || IsItemDropFlag(class_addr);

            if (isItemDrop)
            {//アイテムドロップ
                X_ITEMDROP.Text      = R._("アイテムドロップ: ドロップする");
                X_ITEMDROP.ForeColor = OptionForm.Color_ControlComment_ForeColor();
            }
            else
            {
                X_ITEMDROP.Text      = R._("アイテムドロップ: ドロップしない");
                X_ITEMDROP.ForeColor = OptionForm.Color_Control_ForeColor();
            }
        }
        private void IndependenceButton_Click(object sender, EventArgs e)
        {
            if (this.CLASS_LISTBOX.SelectedIndex < 0)
            {
                return;
            }
            uint   classid   = (uint)U.atoh(this.CLASS_LISTBOX.Text);
            uint   classaddr = ClassForm.GetClassAddr(classid);
            string name      = U.ToHexString(classid) + " " + ClassForm.GetClassNameLow(classaddr);

            uint pointer;
            uint currentP = ClassForm.GetBattleAnimeAddrWhereID(classid, out pointer);

            if (!U.isSafetyOffset(currentP))
            {
                return;
            }

            Undo.UndoData undodata = Program.Undo.NewUndoData(this, this.Name + " Independence");

            uint dataSize = (InputFormRef.DataCount + 1) * InputFormRef.BlockSize;

            PatchUtil.WriteIndependence(currentP, dataSize, pointer, name, undodata);
            Program.Undo.Push(undodata);

            InputFormRef.ShowWriteNotifyAnimation(this, currentP);

            U.ReSelectList(this.CLASS_LISTBOX);
        }
Exemplo n.º 3
0
        private void IndependenceButton_Click(object sender, EventArgs e)
        {
            if (this.AddressList.SelectedIndex < 0)
            {
                return;
            }
            uint   classid   = (uint)U.atoh(this.AddressList.Text);
            uint   classaddr = ClassForm.GetClassAddr(classid);
            string name      = U.ToHexString(classid) + " " + ClassForm.GetClassNameLow(classaddr);

            uint p       = InputFormRef.SelectToAddr(this.AddressList);
            uint setting = ClassForm.GetMoveCostPointerAddrLow(classaddr, (uint)this.FilterComboBox.SelectedIndex);

            if (setting == U.NOT_FOUND)
            {
                return;
            }

            Undo.UndoData undodata = Program.Undo.NewUndoData(this, "MoveCost Independence");
            PatchUtil.WriteIndependence(p, 68, setting, name, undodata);
            Program.Undo.Push(undodata);

            InputFormRef.ShowWriteNotifyAnimation(this, p);

            this.ReloadListButton.PerformClick();
            this.InputFormRef.JumpTo(classid);
        }
Exemplo n.º 4
0
        private void WriteButton_Click(object sender, EventArgs e)
        {
            if (!X_CC3Patch.Visible)
            {
                return;
            }
            //CC3分岐パッチが導入されている場合

            uint class_id = (uint)this.AddressList.SelectedIndex;

            if (class_id >= this.InputFormRef.DataCount)
            {
                return;
            }
            uint classAddr = ClassForm.GetClassAddr(class_id);

            if (classAddr == U.NOT_FOUND)
            {
                return;
            }

            Undo.UndoData undodata = Program.Undo.NewUndoData(this);
            Program.ROM.write_u8(classAddr + 5, (uint)X_CC3.Value, undodata);

            Program.Undo.Push(undodata);
        }
        private void IndependenceButton_Click(object sender, EventArgs e)
        {
            if (this.AddressList.SelectedIndex < 0)
            {
                return;
            }
            uint   classid   = (uint)U.atoh(this.AddressList.Text);
            uint   classaddr = ClassForm.GetClassAddr(classid);
            string name      = U.ToHexString(classid) + " " + ClassForm.GetClassNameLow(classaddr);

            uint setting = this.AssignLevelUpBaseAddress + (classid * 4);

            if (!U.isSafetyOffset(setting))
            {
                return;
            }

            uint p = Program.ROM.p32(setting);

            if (!U.isSafetyOffset(p))
            {
                return;
            }
            if (N1_InputFormRef.BaseAddress != p)
            {
                return;
            }
            if (N1_InputFormRef.DataCount == 0)
            {
                DialogResult dr = R.ShowNoYes("リストが0件です。\r\n空のリストを分離させても意味がないのですが、それでも分離独立させますか?");
                if (dr != DialogResult.Yes)
                {
                    return;
                }
            }

            Undo.UndoData undodata = Program.Undo.NewUndoData(this, this.Name + " Independence");

            uint dataSize = (N1_InputFormRef.DataCount + 1) * N1_InputFormRef.BlockSize;

            PatchUtil.WriteIndependence(p, dataSize, setting, name, undodata);
            Program.Undo.Push(undodata);

            InputFormRef.ShowWriteNotifyAnimation(this, p);

            this.ReloadListButton.PerformClick();
            this.InputFormRef.JumpTo(classid);
        }
Exemplo n.º 6
0
        private void AddressList_SelectedIndexChanged(object sender, EventArgs e)
        {
            List <U.AddrResult> list = this.InputFormRef.MakeList();
            uint class_id            = (uint)this.AddressList.SelectedIndex;

            if (class_id >= this.InputFormRef.DataCount)
            {
                return;
            }

            //選択しているクラス名.
            X_SELECT_CLASS.Text = ClassForm.GetClassName(class_id);

            //このクラスにCCできるクラスを探す.
            CLASS_LISTBOX.BeginUpdate();
            CLASS_LISTBOX.Items.Clear();
            if (class_id >= 1)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    uint cc_class1 = Program.ROM.u8(list[i].addr + 0);
                    uint cc_class2 = Program.ROM.u8(list[i].addr + 1);

                    if (cc_class1 == class_id || cc_class2 == class_id)
                    {
                        string name = U.ToHexString(i) + " " + ClassForm.GetClassName((uint)i);
                        CLASS_LISTBOX.Items.Add(name);
                    }
                }
            }
            CLASS_LISTBOX.EndUpdate();

            if (X_CC3Patch.Visible)
            {//CC3分岐パッチが導入されている場合
                uint classAddr = ClassForm.GetClassAddr(class_id);
                if (classAddr == U.NOT_FOUND)
                {
                    U.ForceUpdate(X_CC3, 0);
                }
                else
                {
                    uint cc_class3 = Program.ROM.u8(classAddr + 5);
                    U.ForceUpdate(X_CC3, (int)cc_class3);
                }
            }
        }