2025-08-26 18:09:04 +08:00
|
|
|
@tool
|
2025-08-26 12:21:09 +08:00
|
|
|
class_name FieldStore
|
|
|
|
|
|
2025-08-26 18:44:28 +08:00
|
|
|
enum DataType {
|
|
|
|
|
VALUE,
|
2025-09-06 16:11:59 +08:00
|
|
|
INTEGER,
|
2025-08-26 18:44:28 +08:00
|
|
|
PERCENT,
|
2025-10-01 07:58:09 +08:00
|
|
|
ANGLE,
|
|
|
|
|
FREQUENCY
|
2025-08-26 18:44:28 +08:00
|
|
|
}
|
2025-08-26 12:21:09 +08:00
|
|
|
enum Entity {
|
|
|
|
|
MAX_HEALTH,
|
|
|
|
|
DAMAGE_MULTIPILER,
|
|
|
|
|
MOVEMENT_SPEED,
|
|
|
|
|
ATTACK_SPEED,
|
|
|
|
|
CRIT_RATE,
|
|
|
|
|
CRIT_DAMAGE,
|
2025-08-26 18:44:28 +08:00
|
|
|
PENERATE,
|
2025-08-27 10:23:57 +08:00
|
|
|
OFFSET_SHOOT,
|
|
|
|
|
HEAL_ABILITY,
|
|
|
|
|
EXTRA_APPLE_MAX,
|
|
|
|
|
ENERGY_MULTIPILER,
|
|
|
|
|
PENARATION_RESISTANCE,
|
|
|
|
|
PRICE_REDUCTION,
|
|
|
|
|
EXTRA_BULLET_COUNT,
|
2025-08-27 16:33:21 +08:00
|
|
|
DROP_APPLE_RATE,
|
|
|
|
|
FEED_COUNT_SHOW,
|
2025-08-27 20:27:01 +08:00
|
|
|
FEED_COUNT_CAN_MADE,
|
2025-08-28 09:46:02 +08:00
|
|
|
MAX_ENERGY,
|
2025-08-29 07:54:00 +08:00
|
|
|
LUCK_VALUE,
|
2025-08-29 10:26:41 +08:00
|
|
|
SAVE_ENERGY,
|
|
|
|
|
ENERGY_REGENERATION,
|
2025-09-05 22:23:41 +08:00
|
|
|
DROPPED_ITEM_COLLECT_RADIUS,
|
|
|
|
|
BULLET_SPLIT,
|
2025-09-06 10:51:40 +08:00
|
|
|
BULLET_REFRACTION,
|
2025-09-06 18:08:11 +08:00
|
|
|
BULLET_TRACE,
|
2025-09-07 14:29:11 +08:00
|
|
|
GRAVITY,
|
2025-11-30 09:30:53 +08:00
|
|
|
PERFECT_MISS_WINDOW,
|
2026-02-11 16:52:54 +08:00
|
|
|
SUMMON_MAX,
|
2026-02-11 17:11:30 +08:00
|
|
|
CHARGE_SPEED
|
2025-08-26 13:56:12 +08:00
|
|
|
}
|
|
|
|
|
static var entityMap = {
|
2025-08-27 20:27:01 +08:00
|
|
|
Entity.MAX_HEALTH: "生命上限",
|
2026-05-10 09:07:20 +08:00
|
|
|
Entity.DAMAGE_MULTIPILER: "伤害",
|
2025-08-26 13:56:12 +08:00
|
|
|
Entity.MOVEMENT_SPEED: "移动速度",
|
|
|
|
|
Entity.ATTACK_SPEED: "攻击速度",
|
|
|
|
|
Entity.CRIT_RATE: "暴击率",
|
|
|
|
|
Entity.CRIT_DAMAGE: "暴击伤害",
|
2025-08-26 18:44:28 +08:00
|
|
|
Entity.PENERATE: "穿透",
|
2026-05-10 09:07:20 +08:00
|
|
|
Entity.OFFSET_SHOOT: "散射",
|
|
|
|
|
Entity.HEAL_ABILITY: "治疗倍率",
|
|
|
|
|
Entity.EXTRA_APPLE_MAX: "治疗数",
|
|
|
|
|
Entity.ENERGY_MULTIPILER: "储能",
|
2025-08-27 10:23:57 +08:00
|
|
|
Entity.PENARATION_RESISTANCE: "穿透抗性",
|
2026-05-10 09:07:20 +08:00
|
|
|
Entity.PRICE_REDUCTION: "降价",
|
2025-09-05 22:23:41 +08:00
|
|
|
Entity.EXTRA_BULLET_COUNT: "多重射击",
|
2026-05-10 09:07:20 +08:00
|
|
|
Entity.DROP_APPLE_RATE: "吸血",
|
2026-05-10 09:14:00 +08:00
|
|
|
Entity.FEED_COUNT_SHOW: "增益强度",
|
2026-05-10 09:07:20 +08:00
|
|
|
Entity.FEED_COUNT_CAN_MADE: "购买力",
|
2025-08-28 09:46:02 +08:00
|
|
|
Entity.MAX_ENERGY: "能量上限",
|
2026-05-10 09:07:20 +08:00
|
|
|
Entity.LUCK_VALUE: "幸运",
|
2025-08-29 10:26:41 +08:00
|
|
|
Entity.SAVE_ENERGY: "节能",
|
|
|
|
|
Entity.ENERGY_REGENERATION: "能量再生效率",
|
2025-09-06 18:08:11 +08:00
|
|
|
Entity.DROPPED_ITEM_COLLECT_RADIUS: "拾取距离",
|
2025-09-05 22:23:41 +08:00
|
|
|
Entity.BULLET_SPLIT: "分裂",
|
|
|
|
|
Entity.BULLET_REFRACTION: "折射",
|
2025-09-06 10:51:40 +08:00
|
|
|
Entity.BULLET_TRACE: "追踪",
|
2025-09-06 18:08:11 +08:00
|
|
|
Entity.GRAVITY: "引力",
|
2025-09-07 14:29:11 +08:00
|
|
|
Entity.PERFECT_MISS_WINDOW: "闪避窗口",
|
2026-02-11 16:52:54 +08:00
|
|
|
Entity.SUMMON_MAX: "召唤上限",
|
2026-05-10 09:07:20 +08:00
|
|
|
Entity.CHARGE_SPEED: "蓄力倍率"
|
2025-08-26 18:44:28 +08:00
|
|
|
}
|
|
|
|
|
static var entityMapType = {
|
|
|
|
|
Entity.MAX_HEALTH: DataType.VALUE,
|
|
|
|
|
Entity.DAMAGE_MULTIPILER: DataType.PERCENT,
|
|
|
|
|
Entity.MOVEMENT_SPEED: DataType.PERCENT,
|
|
|
|
|
Entity.ATTACK_SPEED: DataType.PERCENT,
|
|
|
|
|
Entity.CRIT_RATE: DataType.PERCENT,
|
|
|
|
|
Entity.CRIT_DAMAGE: DataType.PERCENT,
|
|
|
|
|
Entity.PENERATE: DataType.PERCENT,
|
2025-08-27 10:23:57 +08:00
|
|
|
Entity.OFFSET_SHOOT: DataType.ANGLE,
|
|
|
|
|
Entity.HEAL_ABILITY: DataType.PERCENT,
|
2025-09-06 16:11:59 +08:00
|
|
|
Entity.EXTRA_APPLE_MAX: DataType.INTEGER,
|
2025-08-27 10:23:57 +08:00
|
|
|
Entity.ENERGY_MULTIPILER: DataType.PERCENT,
|
|
|
|
|
Entity.PENARATION_RESISTANCE: DataType.PERCENT,
|
|
|
|
|
Entity.PRICE_REDUCTION: DataType.PERCENT,
|
|
|
|
|
Entity.EXTRA_BULLET_COUNT: DataType.VALUE,
|
2025-08-27 16:33:21 +08:00
|
|
|
Entity.DROP_APPLE_RATE: DataType.PERCENT,
|
2025-09-06 16:11:59 +08:00
|
|
|
Entity.FEED_COUNT_SHOW: DataType.INTEGER,
|
|
|
|
|
Entity.FEED_COUNT_CAN_MADE: DataType.INTEGER,
|
2025-08-28 09:46:02 +08:00
|
|
|
Entity.MAX_ENERGY: DataType.VALUE,
|
2025-08-29 07:54:00 +08:00
|
|
|
Entity.LUCK_VALUE: DataType.VALUE,
|
2025-08-29 10:26:41 +08:00
|
|
|
Entity.SAVE_ENERGY: DataType.PERCENT,
|
|
|
|
|
Entity.ENERGY_REGENERATION: DataType.PERCENT,
|
2025-08-29 15:20:50 +08:00
|
|
|
Entity.DROPPED_ITEM_COLLECT_RADIUS: DataType.VALUE,
|
2025-09-05 22:23:41 +08:00
|
|
|
Entity.BULLET_SPLIT: DataType.VALUE,
|
|
|
|
|
Entity.BULLET_REFRACTION: DataType.VALUE,
|
2025-09-06 10:51:40 +08:00
|
|
|
Entity.BULLET_TRACE: DataType.PERCENT,
|
2025-09-06 18:08:11 +08:00
|
|
|
Entity.GRAVITY: DataType.VALUE,
|
2025-09-07 14:29:11 +08:00
|
|
|
Entity.PERFECT_MISS_WINDOW: DataType.PERCENT,
|
2026-02-11 16:52:54 +08:00
|
|
|
Entity.SUMMON_MAX: DataType.INTEGER,
|
2026-02-11 17:11:30 +08:00
|
|
|
Entity.CHARGE_SPEED: DataType.VALUE
|
2025-08-27 10:23:57 +08:00
|
|
|
}
|
2025-08-28 11:26:29 +08:00
|
|
|
static var entityMaxValueMap = {
|
2025-10-01 08:25:23 +08:00
|
|
|
Entity.CRIT_RATE: 0.9,
|
|
|
|
|
Entity.PENERATE: 0.9,
|
|
|
|
|
Entity.PENARATION_RESISTANCE: 1,
|
2026-05-04 08:52:20 +08:00
|
|
|
Entity.PRICE_REDUCTION: 0.85,
|
2025-10-01 08:25:23 +08:00
|
|
|
Entity.DROP_APPLE_RATE: 0.3,
|
|
|
|
|
Entity.FEED_COUNT_SHOW: 5,
|
2025-09-06 10:51:40 +08:00
|
|
|
Entity.BULLET_TRACE: 1,
|
2025-09-07 14:29:11 +08:00
|
|
|
Entity.PERFECT_MISS_WINDOW: 0.8
|
2025-08-28 11:26:29 +08:00
|
|
|
}
|
2026-01-17 11:34:35 +08:00
|
|
|
static var entityMinValueMap = {
|
|
|
|
|
Entity.ATTACK_SPEED: 0.05,
|
|
|
|
|
Entity.DAMAGE_MULTIPILER: 0.01
|
|
|
|
|
}
|
2025-08-27 10:23:57 +08:00
|
|
|
static var entityApplier = {
|
2026-05-11 22:55:39 +08:00
|
|
|
Entity.MAX_HEALTH: func(entity: EntityBase, value: float):
|
2025-08-27 10:23:57 +08:00
|
|
|
entity.health += value
|
2026-02-02 12:21:48 +08:00
|
|
|
entity.statebar.forceSync()
|
2025-08-28 14:05:39 +08:00
|
|
|
return true
|
2025-08-27 10:23:57 +08:00
|
|
|
,
|
2026-05-11 22:55:39 +08:00
|
|
|
Entity.EXTRA_APPLE_MAX: func(entity: EntityBase, value: float):
|
2025-08-27 10:23:57 +08:00
|
|
|
entity.inventoryMax[ItemStore.ItemType.APPLE] += value
|
2025-08-28 14:05:39 +08:00
|
|
|
return true
|
2025-08-27 10:23:57 +08:00
|
|
|
,
|
2026-05-11 22:55:39 +08:00
|
|
|
Entity.MAX_ENERGY: func(entity: EntityBase, value: float):
|
|
|
|
|
entity.energy += value
|
|
|
|
|
return true
|
|
|
|
|
,
|
2025-08-26 13:56:12 +08:00
|
|
|
}
|
2025-08-29 07:54:00 +08:00
|
|
|
static var entityViewCastMap = {
|
|
|
|
|
Entity.EXTRA_APPLE_MAX: func(entity, _value):
|
|
|
|
|
return entity.inventoryMax[ItemStore.ItemType.APPLE]
|
|
|
|
|
,
|
2025-09-30 17:51:22 +08:00
|
|
|
}
|
|
|
|
|
static var entityNegativeFields: Array[Entity] = [
|
|
|
|
|
Entity.OFFSET_SHOOT
|
2026-02-02 12:21:48 +08:00
|
|
|
]
|