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; } } } }
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); } } }
//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; } }
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; } }
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; } } }
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(); } }
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 ) )); }