From 2d2f4f556cc385ba0a167a20d94819d51c1eea7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=A8=E8=90=BD=E5=9F=BA=E5=9B=B4=E8=99=BE?= <3161880837@qq.com> Date: Thu, 28 Aug 2025 09:46:02 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=B1=9E=E6=80=A7=E7=B3=BB=E7=BB=9F):=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=B9=B8=E8=BF=90=E5=B1=9E=E6=80=A7=E5=B9=B6?= =?UTF-8?q?=E5=BD=B1=E5=93=8D=E9=A5=B2=E6=96=99=E5=93=81=E8=B4=A8=E6=A6=82?= =?UTF-8?q?=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加新的幸运属性(LUCK_VALUE)到实体属性系统中,并修改饲料品质随机权重计算逻辑,使幸运值能够影响高品质饲料的获取概率。同时调整了基础品质权重值,优化了随机分布。 - 在FieldStore中添加LUCK_VALUE枚举和映射 - 在EntityBase中初始化幸运值 - 修改FeedName的weight计算方式,加入幸运值影响因子 - 调整各品质的基础权重值 --- scripts/Statemachine/EntityBase.gd | 1 + scripts/Statemachine/FeedName.gd | 21 ++++++++++++++------- scripts/Tools/FieldStore.gd | 9 ++++++--- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/scripts/Statemachine/EntityBase.gd b/scripts/Statemachine/EntityBase.gd index 691b0f5..695b7d5 100644 --- a/scripts/Statemachine/EntityBase.gd +++ b/scripts/Statemachine/EntityBase.gd @@ -28,6 +28,7 @@ var fields = { FieldStore.Entity.FEED_COUNT_SHOW: 3, FieldStore.Entity.FEED_COUNT_CAN_MADE: 1, FieldStore.Entity.MAX_ENERGY: 200, + FieldStore.Entity.LUCK_VALUE: 1 } var inventory = { ItemStore.ItemType.BASEBALL: 100, diff --git a/scripts/Statemachine/FeedName.gd b/scripts/Statemachine/FeedName.gd index dcfad77..77f38a5 100644 --- a/scripts/Statemachine/FeedName.gd +++ b/scripts/Statemachine/FeedName.gd @@ -27,11 +27,18 @@ enum Quality { Quality.LEGENDARY: "传说" } @export var qualityRandomWeight = { - Quality.WASTE: 5, - Quality.COMMON: 50, - Quality.RARE: 10, - Quality.EPIC: 5, - Quality.LEGENDARY: 1 + Quality.WASTE: 20, + Quality.COMMON: 100, + Quality.RARE: 30, + Quality.EPIC: 10, + Quality.LEGENDARY: 5 +} +@export var luckInfluence = { + Quality.WASTE: - 0.5, + Quality.COMMON: - 1, + Quality.RARE: 0, + Quality.EPIC: 1, + Quality.LEGENDARY: 2 } @onready var qualityLabel: Label = $"%quality" @@ -45,5 +52,5 @@ func _physics_process(_delta): nameLabel.text = "[b]%s[/b]" % displayName func color(): return qualityColorMap[quality] as Color -func weight() -> float: - return qualityRandomWeight[quality] \ No newline at end of file +func weight(player: EntityBase) -> int: + return floor(clamp(qualityRandomWeight[quality] + luckInfluence[quality] * player.fields[FieldStore.Entity.LUCK_VALUE], 1, INF)) diff --git a/scripts/Tools/FieldStore.gd b/scripts/Tools/FieldStore.gd index 8005756..463ff70 100644 --- a/scripts/Tools/FieldStore.gd +++ b/scripts/Tools/FieldStore.gd @@ -24,7 +24,8 @@ enum Entity { DROP_APPLE_RATE, FEED_COUNT_SHOW, FEED_COUNT_CAN_MADE, - MAX_ENERGY + MAX_ENERGY, + LUCK_VALUE } static var entityMap = { Entity.MAX_HEALTH: "生命上限", @@ -44,7 +45,8 @@ static var entityMap = { Entity.DROP_APPLE_RATE: "苹果掉落率", Entity.FEED_COUNT_SHOW: "可选饲料数量", Entity.FEED_COUNT_CAN_MADE: "可制作饲料数量", - Entity.MAX_ENERGY: "能量上限" + Entity.MAX_ENERGY: "能量上限", + Entity.LUCK_VALUE: "幸运" } static var entityMapType = { Entity.MAX_HEALTH: DataType.VALUE, @@ -64,7 +66,8 @@ static var entityMapType = { Entity.DROP_APPLE_RATE: DataType.PERCENT, Entity.FEED_COUNT_SHOW: DataType.VALUE, Entity.FEED_COUNT_CAN_MADE: DataType.VALUE, - Entity.MAX_ENERGY: DataType.VALUE + Entity.MAX_ENERGY: DataType.VALUE, + Entity.LUCK_VALUE: DataType.VALUE } static var entityApplier = { Entity.MAX_HEALTH: func(entity, value):