mirror of https://github.com/velour/catbase.git
55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
package velouremon
|
|
|
|
import (
|
|
"math/rand"
|
|
"math"
|
|
"fmt"
|
|
)
|
|
|
|
type Creature struct {
|
|
ID int `db:"id"`
|
|
Name string `db:"name"`
|
|
Health int
|
|
Experience int
|
|
Defense int `db:"defense"`
|
|
Attack int `db:"attack"`
|
|
Abilities []*Ability
|
|
}
|
|
|
|
type CreatureRef struct {
|
|
ID int `db:"id"`
|
|
Creature int `db:"creature"`
|
|
Health int `db:"health"`
|
|
Experience int `db:"experience"`
|
|
}
|
|
|
|
func (c *Creature) string() string {
|
|
message := fmt.Sprintf("%s : %d HP, %d XP, %d DEF, %d ATT\n", c.Name, c.Health, c.Experience, c.Defense, c.Attack)
|
|
for _, ability := range c.Abilities {
|
|
message += "\t" + ability.string()
|
|
}
|
|
return message
|
|
}
|
|
|
|
func (vp *VelouremonPlugin) buildOutCreature(c *Creature) *Creature {
|
|
creature := &Creature{
|
|
ID: c.ID,
|
|
Name: c.Name,
|
|
Health: 255,
|
|
Experience: int(math.Max(1, rand.NormFloat64() * 100 + 250)),
|
|
Defense: c.Defense,
|
|
Attack: c.Attack,
|
|
Abilities: make([]*Ability, rand.Intn(4)),
|
|
}
|
|
|
|
used := map[int]int{}
|
|
for i := range creature.Abilities {
|
|
index := rand.Intn(len(vp.abilities))
|
|
for _, ok := used[index]; ok; _, ok = used[index] {
|
|
index = rand.Intn(len(vp.abilities))
|
|
}
|
|
creature.Abilities[i] = vp.abilities[index]
|
|
}
|
|
return creature
|
|
}
|