- fenixnew
- Mensagens : 5
Data de inscrição : 06/08/2020
Add nature points
Qui Ago 06, 2020 10:49 pm
in characters.go
levelUp := false
level := int16(c.Level)
targetExp := EXPs[level].Exp
skPts, sp := 0, 0
np := 0 //nature pts
for exp >= targetExp && level < 299 { // Levelling up
//skPts += EXPs[level].SkillPoints
level++
st.HP = st.MaxHP
sp += int(level/10) + 4
if level >= 101 && level < 201 { //divine nature stats
np += 4
}
targetExp = EXPs[level].Exp
levelUp = true
}
c.Level = int(level)
skPts = spIndex2 - spIndex
c.Socket.Skills.SkillPoints += skPts
st.StatPoints += sp
st.NaturePoints += np
LATER.......
resp.Insert(utils.IntToBytes(uint64(st.NaturePoints), 2, true), index) // divine stat points
index += 2
IN STATS.GO
ADD to struct
NaturePoints int `db:"nature_points"`
LATER....
func (t *Stat) Create(c *Character) error {
t = startingStats[c.Type]
t.ID = c.ID
t.StatPoints = 4
t.NaturePoints = 0
t.Honor = 10000
return db.Insert(t)
}
(remember to calculate in the Reset() function too!! i didnt add it.)
in init.go
50179: &player.AddNatureHandler{},
50180: &player.AddNatureHandler{},
50181: &player.AddNatureHandler{},
in stats.go
type AddNatureHandler struct {
amount uint16
natureType byte
}
func (h *AddNatureHandler) Handle(s *database.Socket, data []byte) ([]byte, error) {
h.natureType = data[5]
h.amount = uint16(utils.BytesToInt(data[6:8], true))
return h.addNature(s)
}
func (h *AddNatureHandler) addNature(s *database.Socket) ([]byte, error) {
if s.Character != nil {
stat := s.Stats
if stat.NaturePoints < int(h.amount) {
return nil, nil
}
switch h.natureType {
case 3:
stat.Wind += int(h.amount)
break
case 4:
stat.Water += int(h.amount)
break
case 5:
stat.Fire += int(h.amount)
break
}
stat.NaturePoints -= int(h.amount)
resp := STAT_ADDED
location := database.ConvertPointToLocation(s.Character.Coordinate)
resp.Insert(utils.FloatToBytes(location.X, 4, true), 7) // location-x
resp.Insert(utils.FloatToBytes(location.Y, 4, true), 11) // location-y
gsh := &GetStatsHandler{}
statData, err := gsh.Handle(s)
if err != nil {
return nil, err
}
resp.Concat(statData)
return resp, nil
}
return nil, nil
}
Permissões neste sub-fórum
Não podes responder a tópicos
|
|