feat(boss): 更新NewSeIdx_6.go中技能触发条件判断逻辑

将原本基于元素类型的判断改为基于技能分类的判断,
并修改了函数名Damage_Lock_ex为Action_end_ex以更准确反映其用途。
注释中也将“普通属性”修正为“物理攻击”,使描述更加清晰明确。
```
This commit is contained in:
2025-11-29 23:31:37 +08:00
parent 11f6817d62
commit bdfff799dd
3 changed files with 934 additions and 397 deletions

View File

@@ -1,18 +1,17 @@
package effect
import (
element "blazing/common/data/Element"
"blazing/logic/service/fight/info"
"blazing/logic/service/fight/input"
)
// 6. 受到`普通属性'(128)伤害时以n%的概率使对方进入`异常状态'(仅一个异常状态)a1: 异常状态类型, a2: 百分比)
// TODO: 实现受到`普通属性'(128)伤害时以n%的概率使对方进入`异常状态'(仅一个异常状态)a1: 异常状态类型, a2: 百分比)的核心逻辑
// 6. 受到`物理攻击'(128)伤害时以n%的概率使对方进入`异常状态'(仅一个异常状态)a1: 异常状态类型, a2: 百分比)
// TODO: 实现受到`物理攻击'(128)伤害时以n%的概率使对方进入`异常状态'(仅一个异常状态)a1: 异常状态类型, a2: 百分比)的核心逻辑
type NewSel6 struct {
NewSel0
}
func (e *NewSel6) Damage_Lock_ex(t *info.DamageZone) bool {
func (e *NewSel6) Action_end_ex() bool {
//魂印特性有不在场的情况,绑定时候将精灵和特性绑定
if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime {
return true
@@ -20,7 +19,7 @@ func (e *NewSel6) Damage_Lock_ex(t *info.DamageZone) bool {
if e.Ctx().SkillEntity == nil {
return true
}
if e.Ctx().SkillEntity.Type != int(element.ElementTypeNormal) {
if e.Ctx().SkillEntity.Category() != info.Category.PHYSICAL {
return true
}

View File

@@ -0,0 +1,57 @@
package model
import (
"blazing/cool"
)
const (
TableNamePetFusion = "pet_fusion" // 宠物融合配方表(主宠-副宠-材料-概率-融合结果)
)
// PetFusion 宠物融合配方模型(对应尼尔+闪皮+材料1-4=卡鲁/闪尼等融合规则)
type PetFusion struct {
*cool.Model // 嵌入通用Model包含ID/创建时间/更新时间等通用字段)
MainPetID int32 `gorm:"not null;comment:'主宠物ID尼尔'" json:"main_pet_id"`
SubPetID int32 `gorm:"not null;comment:'副宠物ID闪皮'" json:"sub_pet_id"`
// Material1 int32 `gorm:"not null;default:0;comment:'融合材料1ID无则填0'" json:"material1"`
// Material2 int32 `gorm:"not null;default:0;comment:'融合材料2ID无则填0'" json:"material2"`
// Material3 int32 `gorm:"not null;default:0;comment:'融合材料3ID无则填0'" json:"material3"`
// Material4 int32 `gorm:"not null;default:0;comment:'融合材料4ID无则填0'" json:"material4"`
Probability float32 `gorm:"not null;comment:'融合成功率百分比如80代表80%'" json:"probability"`
ResultPetID int32 `gorm:"not null;comment:'融合结果宠物ID卡鲁、闪尼'" json:"result_pet_id"`
Remark string `gorm:"type:varchar(255);default:'';comment:'融合配方备注(如:尼尔+闪皮=闪尼)'" json:"remark"`
IsEnable int32 `gorm:"not null;default:1;comment:'是否启用1:启用0:禁用)'" json:"is_enable"`
// 新增:是否默认配方(核心逻辑:所有匹配配方都不满足时,随机选择默认配方)
IsDefault int32 `gorm:"not null;default:0;comment:'是否默认配方1:默认配方0:非默认;所有配方不匹配时随机选默认配方)'" json:"is_default"`
}
// PetFusionEX 宠物融合配方扩展模型如需前端展示多维度数据时使用如ID转名称等
type PetFusionEX struct {
PetFusion
MainPetName string `json:"main_pet_name"` // 主宠名称(前端展示用)
SubPetName string `json:"sub_pet_name"` // 副宠名称(前端展示用)
ResultPetName string `json:"result_pet_name"` // 结果宠名称(前端展示用)
}
// TableName 指定PetFusion对应的数据库表名
func (*PetFusion) TableName() string {
return TableNamePetFusion
}
// GroupName 指定表所属的分组保持和MonsterRefresh一致
func (*PetFusion) GroupName() string {
return "default"
}
// NewPetFusion 创建一个新的PetFusion实例初始化通用Model
func NewPetFusion() *PetFusion {
return &PetFusion{
Model: cool.NewModel(),
}
}
// init 初始化表结构(程序启动时自动创建/同步表)
func init() {
cool.CreateTable(&PetFusion{})
}