//
// Licensed under the MIT License. See LICENSE file in the project root for full license information.
//
namespace MUnique.OpenMU.DataModel.Configuration;
using MUnique.OpenMU.Annotations;
using MUnique.OpenMU.Interfaces;
///
/// Defines the kind of targets for the .
///
public enum KillTarget
{
///
/// Any object counts as kill.
///
AnyObject,
///
/// Any monster counts as kill.
///
AnyMonster,
///
/// A specific monster or destructible, defined by counts as kill.
///
Specific,
}
///
/// An event which changes the mini game to a next phase.
/// Defines what the player needs to do to reach it,
/// and what happens when the requirements are fulfilled.
///
[Cloneable]
public partial class MiniGameChangeEvent
{
///
/// Gets or sets the index to define the order of the event.
/// Usually, events are worked through in sequential order.
///
public int Index { get; set; }
///
/// Gets or sets the description about the event.
///
public LocalizedString Description { get; set; }
///
/// Gets or sets the (golden) message which should be shown to the player.
/// One placeholder can be used to show the triggering player name.
///
public LocalizedString Message { get; set; }
///
/// Gets or sets the targets which need to be killed to reach the required .
///
public KillTarget Target { get; set; }
///
/// Gets or sets the minimum level of the s,
/// if no specific is supplied.
///
public short? MinimumTargetLevel { get; set; }
///
/// Gets or sets the number of kills which the player(s) have to reach.
///
public short NumberOfKills { get; set; }
///
/// Gets or sets a value indicating whether the are meant to be
/// a multiple of the players of the game, or not.
///
public bool MultiplyKillsByPlayers { get; set; }
///
/// Gets or sets the target definition.
///
public virtual MonsterDefinition? TargetDefinition { get; set; }
///
/// Gets or sets the optional spawns which will appear when the players reach the goal.
///
[MemberOfAggregate]
public virtual MonsterSpawnArea? SpawnArea { get; set; }
///
/// Gets or sets the changes which will be applied to the terrain when the player reach the goal.
///
[MemberOfAggregate]
public virtual ICollection TerrainChanges { get; protected set; } = null!;
///
public override string ToString()
{
return $"{this.Index}: {this.Description}";
}
}