1
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful

This commit is contained in:
昔念
2026-04-15 00:07:36 +08:00
parent de755f8fd0
commit 6f51a2e349
11 changed files with 242 additions and 125 deletions

View File

@@ -32,17 +32,22 @@ func (p *baseplayer) GetInfo() *model.PlayerInfo {
return p.Info
}
func ApplyPetLevelLimit(pet model.PetInfo, limitlevel uint32) model.PetInfo {
originalHP := pet.Hp
if limitlevel > 0 {
pet.Level = utils.Min(pet.Level, limitlevel)
}
pet.CalculatePetPane(limitlevel)
pet.Hp = utils.Min(originalHP, pet.MaxHp)
return pet
}
func (p *baseplayer) GetPetInfo(limitlevel uint32) []model.PetInfo {
var ret []model.PetInfo
ret := make([]model.PetInfo, 0, len(p.Info.PetList))
for _, pet := range p.Info.PetList {
if limitlevel > 0 {
pet.Level = utils.Min(pet.Level, limitlevel)
}
ret = append(ret, pet)
ret = append(ret, ApplyPetLevelLimit(pet, limitlevel))
}
return ret
}

View File

@@ -106,12 +106,20 @@ func validatePetBagOrder(
return true
}
func buildLimitedPetList(petList []model.PetInfo, limitlevel uint32) []model.PetInfo {
result := make([]model.PetInfo, 0, len(petList))
for _, petInfo := range petList {
result = append(result, ApplyPetLevelLimit(petInfo, limitlevel))
}
return result
}
// GetUserBagPetInfo 返回主背包和并列备用精灵列表。
func (p *Player) GetUserBagPetInfo() *pet.GetUserBagPetInfoOutboundInfo {
func (p *Player) GetUserBagPetInfo(limitlevel uint32) *pet.GetUserBagPetInfoOutboundInfo {
result := &pet.GetUserBagPetInfoOutboundInfo{
PetList: p.Info.PetList,
BackupPetList: p.Info.BackupPetList,
PetList: buildLimitedPetList(p.Info.PetList, limitlevel),
BackupPetList: buildLimitedPetList(p.Info.BackupPetList, limitlevel),
}
return result

View File

@@ -228,6 +228,17 @@ func (p *Player) GetSpace() *space.Space {
return space.GetSpace(p.Info.MapID)
}
func (p *Player) CurrentMapPetLevelLimit() uint32 {
if p == nil {
return 100
}
currentSpace := p.GetSpace()
if currentSpace != nil && currentSpace.IsLevelBreakMap {
return 0
}
return 100
}
// CanFight 检查玩家是否可以进行战斗
// 0无战斗1PVP2,BOOS,3PVE
func (p *Player) CanFight() errorcode.ErrorCode {

View File

@@ -42,10 +42,11 @@ type Space struct {
WeatherType []uint32
TimeBoss info.S2C_2022
IsTime bool
DropItemIds []uint32
PitS *csmap.CsMap[int, []model.MapPit]
MapNodeS *csmap.CsMap[uint32, *model.MapNode]
IsTime bool
IsLevelBreakMap bool
DropItemIds []uint32
PitS *csmap.CsMap[int, []model.MapPit]
MapNodeS *csmap.CsMap[uint32, *model.MapNode]
}
func NewSpace() *Space {
@@ -185,6 +186,9 @@ func (ret *Space) init() {
if r.IsTimeSpace != 0 {
ret.IsTime = true
}
if r.IsLevelBreakMap != 0 {
ret.IsLevelBreakMap = true
}
ret.MapBossSInfo = info.MapModelBroadcastInfo{}
ret.MapBossSInfo.INFO = make([]info.MapModelBroadcastEntry, 0)