Exemple #1
0
        // 「補給」コマンドを終了
        private void FinishSupplyCommand()
        {
            GUI.LockGUI();
            GUI.OpenMessageForm(SelectedTarget, SelectedUnit);
            var currentUnit = SelectedUnit;

            // 選択内容を変更
            Event.SelectedUnitForEvent   = SelectedUnit;
            Event.SelectedTargetForEvent = SelectedTarget;

            // 補給メッセージ&特殊効果
            if (currentUnit.IsMessageDefined("補給"))
            {
                currentUnit.PilotMessage("補給", msg_mode: "");
            }

            if (currentUnit.IsAnimationDefined("補給", currentUnit.FeatureName("補給装置")))
            {
                currentUnit.PlayAnimation("補給", currentUnit.FeatureName("補給装置"));
            }
            else
            {
                currentUnit.SpecialEffect("補給", currentUnit.FeatureName("補給装置"));
            }

            GUI.DisplaySysMessage(currentUnit.Nickname + "は" + SelectedTarget.Nickname + "に" + currentUnit.FeatureName("補給装置") + "を使った。");

            // 補給を実施
            SelectedTarget.FullSupply();
            SelectedTarget.IncreaseMorale(-10);

            if (Information.IsNumeric(GeneralLib.LIndex(currentUnit.FeatureData("補給装置"), 2)))
            {
                currentUnit.EN = currentUnit.EN - Conversions.ToInteger(GeneralLib.LIndex(currentUnit.FeatureData("補給装置"), 2));
            }

            GUI.UpdateMessageForm(SelectedTarget, SelectedUnit);
            GUI.DisplaySysMessage(SelectedTarget.Nickname + "の弾数と" + Expression.Term("EN", SelectedTarget) + "が全快した。");

            // 経験値を獲得
            currentUnit.GetExp(SelectedTarget, "補給", exp_mode: "");
            if (GUI.MessageWait < 10000)
            {
                GUI.Sleep(GUI.MessageWait);
            }

            // 形態変化のチェック
            SelectedTarget.Update();
            SelectedTarget.CurrentForm().CheckAutoHyperMode();
            SelectedTarget.CurrentForm().CheckAutoNormalMode();
            GUI.CloseMessageForm();

            // 行動終了
            WaitCommand();
        }