skills

package
v0.9.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 14, 2025 License: GPL-3.0 Imports: 1 Imported by: 0

README

Skills

TODO: Improve this documentation. For now, documenting philosophy/approach to skill implementation

Training

Skills can be acquired via any source, but generally can be expected to be learned at TRAINING CENTERS

Levels

SKills range from level 1 to 4, with increasing cost at each level:

  • Level 1 - 1 Skillpoint
  • Level 2 - 2 Skillpoints
  • Level 3 - 3 Skillpoints
  • Level 4 - 4 Skillpoints

The effect of this is:

  • To level a single skill to the maximum (Level 4) would require 10 Skillpoints, AKA 10 experience levels.
  • Those same 10 skillpoints could be used to learn 10 different unique skills at level 1
  • Players can go deep and narrow or shallow and wide

Philosophy

Goal of skills design should be as follows:

  • Skill Levels (1-4) determines CAPABILITIES - actual verbs or features of the skill. The motivation to levelling up a skill should be increase of abilities.
    • Exception: Level MAY also modify some things stats cannot effect, such as spell level effecting spell proficiency learning speed, or mappable area.
  • Stat points (0-200+) determines effectiveness - success rates, degree/duration of effect, etc.
    • Exception: Sometimes the SCALE of a skills effect or capability may be best determined by skill level, such as how many tamed creatures one can have.
    • Equipment can modify stat points, but cannot modify skill levels
  • Players who level an individual skill to level 4 shouldn't become somehow greatly more powerful, but instead get new capabilities that their stat points will drive
  • Synergies (skills that combine with other skills) should ideally occur at the highest level of one of the skills (level 4).
    • For example, the track skill at Level 4 combines with the map skill to mark enemy positions.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	Professions = map[string][]SkillTag{
		"treasure hunter": {
			Map,
			Search,
			Peep,
			Inspect,
			Trading,
		},
		"assassin": {
			Skulduggery,
			DualWield,
			Track,
		},
		"explorer": {
			Map,
			Portal,
			Scribe,
		},
		"arcane scholar": {
			Enchant,
			Scribe,
			Inspect,
		},
		"warrior": {
			Brawling,
			DualWield,
		},
		"paladin": {
			Protection,
			Brawling,
		},
		"ranger": {
			Map,
			Search,
			Track,
		},
		"monster hunter": {
			Tame,
			Track,
		},
		"sorcerer": {
			Cast,
			Enchant,
		},
		"merchant": {
			Peep,
			Trading,
		},
	}
)

Functions

func GetExperienceLevel

func GetExperienceLevel(percentage float64) string

Possible value is something like 1-10

func GetProfession

func GetProfession(allRanks map[string]int) string

func SkillExists

func SkillExists(sk string) bool

Types

type ProfessionRank

type ProfessionRank struct {
	Profession       string
	ExperienceTitle  string
	TotalPointsSpent float64
	PointsToMax      float64
	Completion       float64
	Skills           []string
}

func GetProfessionRanks

func GetProfessionRanks(allRanks map[string]int) []ProfessionRank

type SkillTag

type SkillTag string
const (
	Cast        SkillTag = `cast`        // [LVL 1-4] Frostfang Magic Academy - ROOM 879
	DualWield   SkillTag = `dual-wield`  // [LVL 1-4] Fishermans house - ROOM 758
	Map         SkillTag = `map`         // [LVL 1-4] Frostwarden Rangers - ROOM 74
	Enchant     SkillTag = `enchant`     // TODO
	Peep        SkillTag = `peep`        // TODO
	Inspect     SkillTag = `inspect`     // TODO
	Portal      SkillTag = `portal`      // [LVL 1] Touch the obelisk in ROOOM 871
	Search      SkillTag = `search`      // [LVL 1-4] Frostwarden Rangers - ROOM 74
	Track       SkillTag = `track`       // [LVL 1-4] Frostwarden Rangers - ROOM 74
	Skulduggery SkillTag = `skulduggery` // [LVL 1-4] Thieves Den - ROOM 491
	Brawling    SkillTag = `brawling`    // [LVL 1-4] Soldiers Training Yard - ROOM 829
	Scribe      SkillTag = `scribe`      // [LVL 1-4] Dark Acolyte's Chamber - ROOM 160
	Protection  SkillTag = `protection`  // TODO
	Tame        SkillTag = `tame`        // [LVL 1-4] Give mushroom to fairie in ROOM 558, train in ROOM 830
	Trading     SkillTag = `trading`     // TODO
)

func GetAllSkillNames

func GetAllSkillNames() []SkillTag

func (SkillTag) String

func (s SkillTag) String(subtag ...string) string

func (SkillTag) Sub

func (s SkillTag) Sub(subtag string) SkillTag

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL