Example #1
0
        public void RefreshNpcList()
        {
            // Update the list incase npcs have been modified since form load.
            cmbNpc.Items.Clear();
            cmbNpc.Items.AddRange(NpcBase.Names);

            // Add the map NPCs
            lstMapNpcs.Items.Clear();
            for (var i = 0; i < Globals.CurrentMap.Spawns.Count; i++)
            {
                lstMapNpcs.Items.Add(NpcBase.GetName(Globals.CurrentMap.Spawns[i].NpcId));
            }

            // Don't select if there are no NPCs, to avoid crashes.
            if (cmbNpc.Items.Count > 0)
            {
                cmbNpc.SelectedIndex = 0;
            }

            cmbDir.SelectedIndex = 0;
            rbRandom.Checked     = true;
            if (lstMapNpcs.Items.Count > 0)
            {
                lstMapNpcs.SelectedIndex = 0;
                if (lstMapNpcs.SelectedIndex < Globals.CurrentMap.Spawns.Count)
                {
                    cmbDir.SelectedIndex = (int)Globals.CurrentMap.Spawns[lstMapNpcs.SelectedIndex].Direction;
                    cmbNpc.SelectedIndex = NpcBase.ListIndex(Globals.CurrentMap.Spawns[lstMapNpcs.SelectedIndex].NpcId);
                    if (Globals.CurrentMap.Spawns[lstMapNpcs.SelectedIndex].X >= 0)
                    {
                        rbDeclared.Checked = true;
                    }
                }
            }
        }
Example #2
0
 private void btnAddAggro_Click(object sender, EventArgs e)
 {
     mEditorItem.AggroList.Add(NpcBase.IdFromList(cmbHostileNPC.SelectedIndex));
     lstAggro.Items.Clear();
     for (var i = 0; i < mEditorItem.AggroList.Count; i++)
     {
         if (mEditorItem.AggroList[i] != Guid.Empty)
         {
             lstAggro.Items.Add(NpcBase.GetName(mEditorItem.AggroList[i]));
         }
         else
         {
             lstAggro.Items.Add(Strings.General.none);
         }
     }
 }
Example #3
0
        //Map NPC List
        private void btnAddMapNpc_Click(object sender, EventArgs e)
        {
            var n = new NpcSpawn();

            //Don't add nothing
            if (cmbNpc.SelectedIndex > -1)
            {
                n.NpcId     = NpcBase.IdFromList(cmbNpc.SelectedIndex);
                n.X         = -1;
                n.Y         = -1;
                n.Direction = NpcSpawnDirection.Random;

                Globals.CurrentMap.Spawns.Add(n);
                lstMapNpcs.Items.Add(NpcBase.GetName(n.NpcId));
                lstMapNpcs.SelectedIndex = lstMapNpcs.Items.Count - 1;
            }
        }
Example #4
0
        private void cmbNpc_SelectedIndexChanged(object sender, EventArgs e)
        {
            var n = 0;

            if (lstMapNpcs.SelectedIndex >= 0)
            {
                Globals.CurrentMap.Spawns[lstMapNpcs.SelectedIndex].NpcId = NpcBase.IdFromList(cmbNpc.SelectedIndex);

                // Refresh List
                n = lstMapNpcs.SelectedIndex;
                lstMapNpcs.Items.Clear();
                for (var i = 0; i < Globals.CurrentMap.Spawns.Count; i++)
                {
                    lstMapNpcs.Items.Add(NpcBase.GetName(Globals.CurrentMap.Spawns[i].NpcId));
                }

                lstMapNpcs.SelectedIndex = n;
            }
        }
Example #5
0
        private void btnRemoveMapNpc_Click(object sender, EventArgs e)
        {
            if (lstMapNpcs.SelectedIndex > -1)
            {
                Globals.CurrentMap.Spawns.RemoveAt(lstMapNpcs.SelectedIndex);
                lstMapNpcs.Items.RemoveAt(lstMapNpcs.SelectedIndex);

                // Refresh List
                lstMapNpcs.Items.Clear();
                for (var i = 0; i < Globals.CurrentMap.Spawns.Count; i++)
                {
                    lstMapNpcs.Items.Add(NpcBase.GetName(Globals.CurrentMap.Spawns[i].NpcId));
                }

                if (lstMapNpcs.Items.Count > 0)
                {
                    lstMapNpcs.SelectedIndex = 0;
                }
            }
        }
Example #6
0
        private void UpdateSelectedQuest()
        {
            if (mSelectedQuest == null)
            {
                mQuestList.Show();
                mQuestTitle.Hide();
                mQuestDescArea.Hide();
                mQuestStatus.Hide();
                mBackButton.Hide();
                mQuitButton.Hide();
            }
            else
            {
                mQuestDescLabel.ClearText();
                mQuitButton.IsDisabled = true;
                ListBoxRow rw;
                string[]   myText     = null;
                var        taskString = new List <string>();
                if (Globals.Me.QuestProgress.ContainsKey(mSelectedQuest.Id))
                {
                    if (Globals.Me.QuestProgress[mSelectedQuest.Id].TaskId != Guid.Empty)
                    {
                        //In Progress
                        mQuestStatus.SetText(Strings.QuestLog.inprogress);
                        mQuestStatus.SetTextColor(Color.Yellow, Label.ControlState.Normal);
                        if (mSelectedQuest.InProgressDescription.Length > 0)
                        {
                            mQuestDescLabel.AddText(
                                mSelectedQuest.InProgressDescription, Color.White, Alignments.Left,
                                mQuestDescTemplateLabel.Font
                                );

                            mQuestDescLabel.AddLineBreak();
                            mQuestDescLabel.AddLineBreak();
                        }

                        mQuestDescLabel.AddText(
                            Strings.QuestLog.currenttask, Color.White, Alignments.Left, mQuestDescTemplateLabel.Font
                            );

                        mQuestDescLabel.AddLineBreak();
                        for (var i = 0; i < mSelectedQuest.Tasks.Count; i++)
                        {
                            if (mSelectedQuest.Tasks[i].Id == Globals.Me.QuestProgress[mSelectedQuest.Id].TaskId)
                            {
                                if (mSelectedQuest.Tasks[i].Description.Length > 0)
                                {
                                    mQuestDescLabel.AddText(
                                        mSelectedQuest.Tasks[i].Description, Color.White, Alignments.Left,
                                        mQuestDescTemplateLabel.Font
                                        );

                                    mQuestDescLabel.AddLineBreak();
                                    mQuestDescLabel.AddLineBreak();
                                }

                                if (mSelectedQuest.Tasks[i].Objective == QuestObjective.GatherItems) //Gather Items
                                {
                                    mQuestDescLabel.AddText(
                                        Strings.QuestLog.taskitem.ToString(
                                            Globals.Me.QuestProgress[mSelectedQuest.Id].TaskProgress,
                                            mSelectedQuest.Tasks[i].Quantity,
                                            ItemBase.GetName(mSelectedQuest.Tasks[i].TargetId)
                                            ), Color.White, Alignments.Left, mQuestDescTemplateLabel.Font
                                        );
                                }
                                else if (mSelectedQuest.Tasks[i].Objective == QuestObjective.KillNpcs) //Kill Npcs
                                {
                                    mQuestDescLabel.AddText(
                                        Strings.QuestLog.tasknpc.ToString(
                                            Globals.Me.QuestProgress[mSelectedQuest.Id].TaskProgress,
                                            mSelectedQuest.Tasks[i].Quantity,
                                            NpcBase.GetName(mSelectedQuest.Tasks[i].TargetId)
                                            ), Color.White, Alignments.Left, mQuestDescTemplateLabel.Font
                                        );
                                }
                            }
                        }

                        mQuitButton.IsDisabled = !mSelectedQuest.Quitable;
                    }
                    else
                    {
                        if (Globals.Me.QuestProgress[mSelectedQuest.Id].Completed)
                        {
                            //Completed
                            if (mSelectedQuest.LogAfterComplete)
                            {
                                mQuestStatus.SetText(Strings.QuestLog.completed);
                                mQuestStatus.SetTextColor(Color.Green, Label.ControlState.Normal);
                                mQuestDescLabel.AddText(
                                    mSelectedQuest.EndDescription, Color.White, Alignments.Left,
                                    mQuestDescTemplateLabel.Font
                                    );
                            }
                        }
                        else
                        {
                            //Not Started
                            if (mSelectedQuest.LogBeforeOffer)
                            {
                                mQuestStatus.SetText(Strings.QuestLog.notstarted);
                                mQuestStatus.SetTextColor(Color.Red, Label.ControlState.Normal);
                                mQuestDescLabel.AddText(
                                    mSelectedQuest.BeforeDescription, Color.White, Alignments.Left,
                                    mQuestDescTemplateLabel.Font
                                    );

                                mQuitButton?.Hide();
                            }
                        }
                    }
                }
                else
                {
                    //Not Started
                    if (mSelectedQuest.LogBeforeOffer)
                    {
                        mQuestStatus.SetText(Strings.QuestLog.notstarted);
                        mQuestStatus.SetTextColor(Color.Red, Label.ControlState.Normal);
                        mQuestDescLabel.AddText(
                            mSelectedQuest.BeforeDescription, Color.White, Alignments.Left, mQuestDescTemplateLabel.Font
                            );
                    }
                }

                mQuestList.Hide();
                mQuestTitle.IsHidden    = false;
                mQuestTitle.Text        = mSelectedQuest.Name;
                mQuestDescArea.IsHidden = false;
                mQuestDescLabel.Width   = mQuestDescArea.Width - mQuestDescArea.GetVerticalScrollBar().Width;
                mQuestDescLabel.SizeToChildren(false, true);
                mQuestStatus.Show();
                mBackButton.Show();
                mQuitButton.Show();
            }
        }
Example #7
0
        private void UpdateEditor()
        {
            if (mEditorItem != null)
            {
                pnlContainer.Show();

                txtName.Text            = mEditorItem.Name;
                cmbFolder.Text          = mEditorItem.Folder;
                cmbSprite.SelectedIndex = cmbSprite.FindString(TextUtils.NullToNone(mEditorItem.Sprite));
                nudLevel.Value          = mEditorItem.Level;
                nudSpawnDuration.Value  = mEditorItem.SpawnDuration;

                //Behavior
                chkAggressive.Checked = mEditorItem.Aggressive;
                if (mEditorItem.Aggressive)
                {
                    btnAttackOnSightCond.Text = Strings.NpcEditor.dontattackonsightconditions;
                }
                else
                {
                    btnAttackOnSightCond.Text = Strings.NpcEditor.attackonsightconditions;
                }

                nudSightRange.Value          = mEditorItem.SightRange;
                cmbMovement.SelectedIndex    = Math.Min(mEditorItem.Movement, cmbMovement.Items.Count - 1);
                chkSwarm.Checked             = mEditorItem.Swarm;
                nudFlee.Value                = mEditorItem.FleeHealthPercentage;
                chkFocusDamageDealer.Checked = mEditorItem.FocusHighestDamageDealer;

                //Common Events
                cmbOnDeathEventKiller.SelectedIndex = EventBase.ListIndex(mEditorItem.OnDeathEventId) + 1;
                cmbOnDeathEventParty.SelectedIndex  = EventBase.ListIndex(mEditorItem.OnDeathPartyEventId) + 1;

                nudStr.Value            = mEditorItem.Stats[(int)Stats.Attack];
                nudMag.Value            = mEditorItem.Stats[(int)Stats.AbilityPower];
                nudDef.Value            = mEditorItem.Stats[(int)Stats.Defense];
                nudMR.Value             = mEditorItem.Stats[(int)Stats.MagicResist];
                nudSpd.Value            = mEditorItem.Stats[(int)Stats.Speed];
                nudHp.Value             = mEditorItem.MaxVital[(int)Vitals.Health];
                nudMana.Value           = mEditorItem.MaxVital[(int)Vitals.Mana];
                nudExp.Value            = mEditorItem.Experience;
                chkAttackAllies.Checked = mEditorItem.AttackAllies;
                chkEnabled.Checked      = mEditorItem.NpcVsNpcEnabled;

                //Combat
                nudDamage.Value                      = mEditorItem.Damage;
                nudCritChance.Value                  = mEditorItem.CritChance;
                nudCritMultiplier.Value              = (decimal)mEditorItem.CritMultiplier;
                nudScaling.Value                     = mEditorItem.Scaling;
                cmbDamageType.SelectedIndex          = mEditorItem.DamageType;
                cmbScalingStat.SelectedIndex         = mEditorItem.ScalingStat;
                cmbAttackAnimation.SelectedIndex     = AnimationBase.ListIndex(mEditorItem.AttackAnimationId) + 1;
                cmbAttackSpeedModifier.SelectedIndex = mEditorItem.AttackSpeedModifier;
                nudAttackSpeedValue.Value            = mEditorItem.AttackSpeedValue;

                //Regen
                nudHpRegen.Value = mEditorItem.VitalRegen[(int)Vitals.Health];
                nudMpRegen.Value = mEditorItem.VitalRegen[(int)Vitals.Mana];

                // Add the spells to the list
                lstSpells.Items.Clear();
                for (var i = 0; i < mEditorItem.Spells.Count; i++)
                {
                    if (mEditorItem.Spells[i] != Guid.Empty)
                    {
                        lstSpells.Items.Add(SpellBase.GetName(mEditorItem.Spells[i]));
                    }
                    else
                    {
                        lstSpells.Items.Add(Strings.General.none);
                    }
                }

                if (lstSpells.Items.Count > 0)
                {
                    lstSpells.SelectedIndex = 0;
                    cmbSpell.SelectedIndex  = SpellBase.ListIndex(mEditorItem.Spells[lstSpells.SelectedIndex]);
                }

                cmbFreq.SelectedIndex = mEditorItem.SpellFrequency;

                // Add the aggro NPC's to the list
                lstAggro.Items.Clear();
                for (var i = 0; i < mEditorItem.AggroList.Count; i++)
                {
                    if (mEditorItem.AggroList[i] != Guid.Empty)
                    {
                        lstAggro.Items.Add(NpcBase.GetName(mEditorItem.AggroList[i]));
                    }
                    else
                    {
                        lstAggro.Items.Add(Strings.General.none);
                    }
                }

                UpdateDropValues();

                DrawNpcSprite();
                if (mChanged.IndexOf(mEditorItem) == -1)
                {
                    mChanged.Add(mEditorItem);
                    mEditorItem.MakeBackup();
                }
            }
            else
            {
                pnlContainer.Hide();
            }

            UpdateToolStripItems();
        }
        private static string GetCommandText(SpawnNpcCommand command, MapInstance map)
        {
            if (command == null)
            {
                return(null);
            }

            if (command.MapId != Guid.Empty)
            {
                foreach (var orderedMap in MapList.OrderedMaps)
                {
                    if (orderedMap == null)
                    {
                        continue;
                    }

                    if (orderedMap.MapId == command.MapId)
                    {
                        return(Strings.EventCommandList.spawnnpc.ToString(
                                   NpcBase.GetName(command.NpcId),
                                   Strings.EventCommandList.spawnonmap.ToString(
                                       orderedMap.Name, command.X, command.Y, Strings.Directions.dir?[(sbyte)command.Dir]
                                       )
                                   ));
                    }
                }

                return(Strings.EventCommandList.spawnnpc.ToString(
                           NpcBase.GetName(command.NpcId),
                           Strings.EventCommandList.spawnonmap.ToString(
                               Strings.EventCommandList.mapnotfound, command.X, command.Y, Strings.Directions.dir[command.Dir]
                               )
                           ));
            }

            var retain = Strings.EventCommandList.False;

            //TODO: Possibly bugged -- test this.
            if (Convert.ToBoolean(command.Dir))
            {
                retain = Strings.EventCommandList.True;
            }

            if (command.EntityId == Guid.Empty)
            {
                return(Strings.EventCommandList.spawnnpc.ToString(
                           NpcBase.GetName(command.NpcId),
                           Strings.EventCommandList.spawnonplayer.ToString(command.X, command.Y, retain)
                           ));
            }

            if (map.LocalEvents.TryGetValue(command.EntityId, out var localEvent))
            {
                return(Strings.EventCommandList.spawnnpc.ToString(
                           NpcBase.GetName(command.NpcId),
                           Strings.EventCommandList.spawnonevent.ToString(localEvent.Name, command.X, command.Y, retain)
                           ));
            }

            return(Strings.EventCommandList.spawnnpc.ToString(
                       NpcBase.GetName(command.NpcId),
                       Strings.EventCommandList.spawnonevent.ToString(
                           Strings.EventCommandList.deletedevent, command.X, command.Y, retain
                           )
                       ));
        }