using System; namespace Jovian.EncounterSystem { /// Polymorphic payload on an . Add a new kind by implementing /// this interface; the SubclassSelector drawer surfaces it automatically. public interface IEncounterKind { } [Serializable] public class CombatKind : IEncounterKind { public string enemyGroupId; public string rewardTableId; } [Serializable] public class QuestKind : IEncounterKind { public EncounterLink nextEncounter; public string questTitle; } [Serializable] public class SocialKind : IEncounterKind { public string npcId; public string factionId; public int reputationDelta; } [Serializable] public class PuzzleKind : IEncounterKind { public string puzzleId; public int difficultyClass; } [Serializable] public class ExplorationKind : IEncounterKind { public int perceptionDC; } [Serializable] public class TutorialKind : IEncounterKind { public string tutorialId; } [Serializable] public class HazardKind : IEncounterKind { public int damageAmount; } [Serializable] public class OtherKind : IEncounterKind { } }