extends Node class_name PetConfig # 每一种宠物的配置数据 方便导出JSON数据,放到MongoDB数据库上 # 攻击类型枚举(简化为仅近战) enum AttackType { MELEE # 近战攻击 } enum ElementType { NONE, METAL, WOOD, WATER, FIRE, EARTH, THUNDER } enum PetState { IDLE, # 待机 MOVING, # 移动 ATTACKING, # 攻击中 SKILL_CASTING, # 释放技能 DEAD # 死亡 } #==========================以下是导出数据可以被修改的========================================= # 基本属性 var pet_name: String = "萌芽小绿" # 宠物名称 var pet_id: String = "0001" # 宠物唯一编号 var pet_type: String = "小绿" # 宠物种类 var pet_level: int = 1 # 宠物等级 var pet_experience: int = 0 # 宠物经验值 #性格 出生日期 爱好 个人介绍 var pet_temperament: String = "温顺" # 性格 var pet_birthday: String = "2023-01-01" # 出生日期 var pet_hobby: String = "喜欢吃pet" # 爱好 var pet_introduction: String = "我是一个小绿" # 个人介绍 # 生命与防御 var max_health: float = 200.0 # 最大生命值 var enable_health_regen: bool = true # 是否开启生命恢复 var health_regen: float = 1.0 # 每秒生命恢复大小 var enable_shield_regen: bool = true # 是否开启护盾恢复 var max_shield: float = 100.0 # 最大护盾值 var shield_regen: float = 1.0 # 每秒护盾恢复大小 var max_armor: float = 100.0 # 最大护甲值 # 攻击属性 var base_attack_damage: float = 25.0 # 基础攻击力 var crit_rate: float = 0.1 # 暴击几率(0~1) var crit_damage: float = 1.5 # 暴击伤害倍率(1.5 = 150%伤害) var armor_penetration: float = 0.0 # 护甲穿透值(直接减少对方护甲值) #======================以后有新技能在这里添加============================== # 技能-多发射击 var enable_multi_projectile_skill: bool = false var multi_projectile_delay: float = 2.0 # 多发射击延迟时间(秒) # 技能-狂暴模式 var enable_berserker_skill: bool = false var berserker_bonus: float = 1.5 # 狂暴伤害加成 var berserker_duration: float = 5.0 # 狂暴持续时间(秒) #技能-自爆 var enable_self_destruct_skill: bool = false var self_destruct_damage: float = 50.0 # 自爆伤害值 #技能-召唤小弟 var enable_summon_pet_skill: bool = false var summon_count: int = 1 # 召唤小弟数量 var summon_scale: float = 0.1 # 召唤小弟属性缩放比例(10%) #技能-死亡重生 var enable_death_respawn_skill: bool = false var respawn_health_percentage: float = 0.3 # 重生时恢复的血量百分比(30%) #技能-反弹伤害 var enable_damage_reflection_skill: bool = false var damage_reflection_cooldown: float = 10.0 # 反弹伤害冷却时间(秒) var damage_reflection_percentage: float = 0.5 # 反弹伤害百分比(50%) #======================以后有新技能在这里添加============================== # 移动属性 var move_speed: float = 150.0 # 移动速度(像素/秒) var dodge_rate: float = 0.05 # 闪避概率(0~1) # 元素属性 var element_type: ElementType = ElementType.NONE # 元素类型(例如火、水、雷等) var element_damage_bonus: float = 50.0 # 元素伤害加成(额外元素伤害) # 武器系统 var left_weapon: String = "" # 左手武器名称 var right_weapon: String = "" # 右手武器名称 # 宠物配置字典 - 用于导出到MongoDB数据库 var pet_configs: Dictionary = { "烈焰鸟": { "pet_name": "树萌芽の烈焰鸟", "can_purchase": true, "cost": 1000, "pet_image": "res://Scene/NewPet/PetType/flying_bird.tscn", "pet_id": "0001", "pet_type": "烈焰鸟", "pet_level": 1, "pet_experience": 500, "pet_temperament": "勇猛", "pet_birthday": "2023-03-15", "pet_hobby": "喜欢战斗和烈火", "pet_introduction": "我爱吃虫子", "max_health": 300, "enable_health_regen": true, "health_regen": 2, "enable_shield_regen": true, "max_shield": 150, "shield_regen": 1.5, "max_armor": 120, "base_attack_damage": 40, "crit_rate": 0.15, "crit_damage": 2, "armor_penetration": 10, "enable_multi_projectile_skill": true, "multi_projectile_delay": 2, "enable_berserker_skill": true, "berserker_bonus": 1.8, "berserker_duration": 6, "enable_self_destruct_skill": false, "enable_summon_pet_skill": false, "enable_death_respawn_skill": true, "respawn_health_percentage": 0.4, "enable_damage_reflection_skill": true, "damage_reflection_cooldown": 8.0, "damage_reflection_percentage": 0.6, "move_speed": 180, "dodge_rate": 0.08, "element_type": "FIRE", "element_damage_bonus": 75, "left_weapon": "钻石剑", "right_weapon": "钻石剑" }, "大蓝虫": { "pet_name": "树萌芽の大蓝虫", "can_purchase": true, "cost": 1000, "pet_image": "res://Scene/NewPet/PetType/big_beetle.tscn", "pet_id": "0002", "pet_type": "大蓝虫", "pet_level": 8, "pet_experience": 320, "pet_temperament": "冷静", "pet_birthday": "2023-06-20", "pet_hobby": "喜欢和小甲壳虫玩", "pet_introduction": "我是大蓝虫,不是大懒虫!", "max_health": 180, "enable_health_regen": true, "health_regen": 1.2, "enable_shield_regen": true, "max_shield": 200, "shield_regen": 2.5, "max_armor": 80, "base_attack_damage": 35, "crit_rate": 0.12, "crit_damage": 1.8, "armor_penetration": 15, "enable_multi_projectile_skill": true, "multi_projectile_delay": 1.5, "enable_berserker_skill": false, "enable_self_destruct_skill": false, "enable_summon_pet_skill": true, "summon_count": 2, "summon_scale": 0.15, "enable_death_respawn_skill": false, "enable_damage_reflection_skill": true, "damage_reflection_cooldown": 12.0, "damage_reflection_percentage": 0.4, "move_speed": 120, "dodge_rate": 0.12, "element_type": "WATER", "element_damage_bonus": 100, "left_weapon": "钻石剑", "right_weapon": "钻石剑" }, "小蓝虫": { "pet_name": "树萌芽の小蓝虫", "can_purchase": true, "cost": 1000, "pet_image": "res://Scene/NewPet/PetType/small_beetle.tscn", "pet_id": "0002", "pet_type": "小蓝虫", "pet_level": 1, "pet_experience": 0, "pet_temperament": "冷静", "pet_birthday": "2023-06-20", "pet_hobby": "喜欢和大蓝虫玩", "pet_introduction": "我是小蓝虫,不是小懒虫!", "max_health": 90, "enable_health_regen": true, "health_regen": 1.2, "enable_shield_regen": true, "max_shield": 200, "shield_regen": 2.5, "max_armor": 80, "base_attack_damage": 35, "crit_rate": 0.12, "crit_damage": 1.8, "armor_penetration": 15, "enable_multi_projectile_skill": true, "multi_projectile_delay": 1.5, "enable_berserker_skill": false, "enable_self_destruct_skill": false, "enable_summon_pet_skill": true, "summon_count": 2, "summon_scale": 0.15, "enable_death_respawn_skill": false, "enable_damage_reflection_skill": false, "damage_reflection_cooldown": 10.0, "damage_reflection_percentage": 0.5, "move_speed": 120, "dodge_rate": 0.12, "element_type": "WATER", "element_damage_bonus": 100, "left_weapon": "钻石剑", "right_weapon": "钻石剑" }, "小蓝": { "pet_name": "树萌芽の小蓝", "can_purchase": true, "cost": 1000, "pet_image": "res://Scene/NewPet/PetType/small_blue.tscn", "pet_id": "0002", "pet_type": "小蓝", "pet_level": 1, "pet_experience": 0, "pet_temperament": "冷静", "pet_birthday": "2023-06-20", "pet_hobby": "喜欢和小黄一起玩", "pet_introduction": "我是小黄!", "max_health": 120, "enable_health_regen": true, "health_regen": 1.2, "enable_shield_regen": true, "max_shield": 200, "shield_regen": 2.5, "max_armor": 80, "base_attack_damage": 35, "crit_rate": 0.12, "crit_damage": 1.8, "armor_penetration": 15, "enable_multi_projectile_skill": true, "multi_projectile_delay": 1.5, "enable_berserker_skill": false, "enable_self_destruct_skill": false, "enable_summon_pet_skill": true, "summon_count": 2, "summon_scale": 0.15, "enable_death_respawn_skill": false, "enable_damage_reflection_skill": false, "damage_reflection_cooldown": 10.0, "damage_reflection_percentage": 0.5, "move_speed": 120, "dodge_rate": 0.12, "element_type": "WATER", "element_damage_bonus": 100, "left_weapon": "钻石剑", "right_weapon": "钻石剑" } } # 初始化函数 func _ready(): load_configs_from_json() # 根据宠物键值获取配置 func get_pet_config(pet_key: String) -> Dictionary: if pet_configs.has(pet_key): return pet_configs[pet_key] else: print("未找到宠物配置: ", pet_key, ",使用默认配置") return get_default_config() # 获取所有宠物配置键值 func get_all_pet_keys() -> Array: return pet_configs.keys() # 检查宠物配置是否存在 func has_pet_config(pet_key: String) -> bool: return pet_configs.has(pet_key) # 获取默认配置 func get_default_config() -> Dictionary: return { "pet_name": pet_name, "pet_id": pet_id, "pet_type": pet_type, "pet_level": pet_level, "pet_experience": pet_experience, "pet_temperament": pet_temperament, "pet_birthday": pet_birthday, "pet_hobby": pet_hobby, "pet_introduction": pet_introduction, "max_health": max_health, "enable_health_regen": enable_health_regen, "health_regen": health_regen, "enable_shield_regen": enable_shield_regen, "max_shield": max_shield, "shield_regen": shield_regen, "max_armor": max_armor, "base_attack_damage": base_attack_damage, "crit_rate": crit_rate, "crit_damage": crit_damage, "armor_penetration": armor_penetration, "enable_multi_projectile_skill": enable_multi_projectile_skill, "multi_projectile_delay": multi_projectile_delay, "enable_berserker_skill": enable_berserker_skill, "berserker_bonus": berserker_bonus, "berserker_duration": berserker_duration, "enable_self_destruct_skill": enable_self_destruct_skill, "self_destruct_damage": self_destruct_damage, "enable_summon_pet_skill": enable_summon_pet_skill, "summon_count": summon_count, "summon_scale": summon_scale, "enable_death_respawn_skill": enable_death_respawn_skill, "respawn_health_percentage": respawn_health_percentage, "enable_damage_reflection_skill": enable_damage_reflection_skill, "damage_reflection_cooldown": damage_reflection_cooldown, "damage_reflection_percentage": damage_reflection_percentage, "move_speed": move_speed, "dodge_rate": dodge_rate, "element_type": element_type, "element_damage_bonus": element_damage_bonus, "left_weapon": left_weapon, "right_weapon": right_weapon } # 字符串转换为ElementType枚举 func string_to_element_type(element_str: String) -> ElementType: match element_str.to_upper(): "NONE":#没有元素类型 return ElementType.NONE "METAL":#金元素 return ElementType.METAL "WOOD":#木元素 return ElementType.WOOD "WATER":#水元素 return ElementType.WATER "FIRE": #火元素 return ElementType.FIRE "EARTH":#土元素 return ElementType.EARTH "THUNDER":#雷元素 return ElementType.THUNDER _: return ElementType.NONE # 从JSON文件加载宠物配置 func load_configs_from_json(file_path: String = "res://Scene/NewPet/Pet_data.json") -> bool: if not FileAccess.file_exists(file_path): print("宠物配置文件不存在: ", file_path) return false var file = FileAccess.open(file_path, FileAccess.READ) if file == null: print("无法打开宠物配置文件: ", file_path) return false var json_string = file.get_as_text() file.close() var json = JSON.new() var parse_result = json.parse(json_string) if parse_result != OK: print("JSON解析失败: ", json.error_string) return false var loaded_configs = json.data if typeof(loaded_configs) != TYPE_DICTIONARY: print("JSON格式错误,期望字典类型") return false # 清空现有配置并加载新配置 pet_configs.clear() # 遍历加载的配置 for pet_key in loaded_configs.keys(): var config = loaded_configs[pet_key] if typeof(config) != TYPE_DICTIONARY: print("跳过无效的宠物配置: ", pet_key) continue # 处理element_type字符串转换为枚举 if config.has("element_type") and typeof(config["element_type"]) == TYPE_STRING: config["element_type"] = string_to_element_type(config["element_type"]) # 添加到配置字典 pet_configs[pet_key] = config print("成功从JSON加载了 ", pet_configs.size(), " 个宠物配置") return true # 导出配置到JSON的函数 func export_configs_to_json() -> String: """将宠物配置导出为JSON字符串,用于保存到MongoDB""" return JSON.stringify(pet_configs)