129 lines
3.5 KiB
GDScript
129 lines
3.5 KiB
GDScript
extends Node
|
|
class_name WeaponBase
|
|
|
|
#武器系统
|
|
var weapon_data = {
|
|
"钻石剑": {
|
|
"icon": 'res://assets/我的世界图片/武器工具/钻石剑.png',
|
|
"function": "apply_diamond_sword_effect"
|
|
},
|
|
"铁剑": {
|
|
"icon": 'res://assets/我的世界图片/武器工具/铁剑.png',
|
|
"function": "apply_iron_sword_effect"
|
|
},
|
|
"钻石斧": {
|
|
"icon": 'res://assets/我的世界图片/武器工具/钻石斧.png',
|
|
"function": "apply_diamond_axe_effect"
|
|
},
|
|
"铁镐": {
|
|
"icon": 'res://assets/我的世界图片/武器工具/铁镐.png',
|
|
"function": "apply_iron_pickaxe_effect"
|
|
}
|
|
}
|
|
|
|
# 武器效果函数 - 每种武器单独一个函数
|
|
|
|
#================钻石剑效果========================
|
|
# 钻石剑效果
|
|
func apply_diamond_sword_effect(pet):
|
|
pet.base_attack_damage += 15.0
|
|
pet.crit_rate += 0.1
|
|
pet.attack_speed += 0.2
|
|
# 钻石剑效果已应用
|
|
|
|
# 移除钻石剑效果
|
|
func remove_diamond_sword_effect(pet):
|
|
pet.base_attack_damage -= 15.0
|
|
pet.crit_rate -= 0.1
|
|
pet.attack_speed -= 0.2
|
|
# 钻石剑效果已移除
|
|
|
|
#================钻石剑效果========================
|
|
|
|
#================铁剑效果========================
|
|
# 铁剑效果
|
|
func apply_iron_sword_effect(pet):
|
|
pet.base_attack_damage += 10.0
|
|
pet.crit_rate += 0.05
|
|
pet.attack_speed += 0.1
|
|
# 铁剑效果已应用
|
|
|
|
# 移除铁剑效果
|
|
func remove_iron_sword_effect(pet):
|
|
pet.base_attack_damage -= 10.0
|
|
pet.crit_rate -= 0.05
|
|
pet.attack_speed -= 0.1
|
|
# 铁剑效果已移除
|
|
#================铁剑效果========================
|
|
|
|
|
|
#================钻石斧效果========================
|
|
# 钻石斧效果
|
|
func apply_diamond_axe_effect(pet):
|
|
pet.base_attack_damage += 20.0
|
|
pet.armor_penetration += 0.2
|
|
pet.knockback_force += 100.0
|
|
# 钻石斧效果已应用
|
|
|
|
# 移除钻石斧效果
|
|
func remove_diamond_axe_effect(pet):
|
|
pet.base_attack_damage -= 20.0
|
|
pet.armor_penetration -= 0.2
|
|
pet.knockback_force -= 100.0
|
|
# 钻石斧效果已移除
|
|
#================钻石斧效果========================
|
|
|
|
|
|
#================铁镐效果========================
|
|
# 铁镐效果
|
|
func apply_iron_pickaxe_effect(pet):
|
|
pet.base_attack_damage += 8.0
|
|
pet.armor_penetration += 0.3
|
|
pet.attack_range += 20.0
|
|
# 铁镐效果已应用
|
|
|
|
# 移除铁镐效果
|
|
func remove_iron_pickaxe_effect(pet):
|
|
pet.base_attack_damage -= 8.0
|
|
pet.armor_penetration -= 0.3
|
|
pet.attack_range -= 20.0
|
|
# 铁镐效果已移除
|
|
#================铁镐效果========================
|
|
|
|
|
|
#======================武器系统通用函数==========================
|
|
# 应用武器效果的主函数
|
|
func apply_weapon_effect(pet, weapon_name: String):
|
|
if not weapon_data.has(weapon_name):
|
|
return
|
|
|
|
var weapon = weapon_data[weapon_name]
|
|
var function_name = weapon.get("function", "")
|
|
|
|
if function_name != "":
|
|
call(function_name, pet)
|
|
|
|
# 移除武器效果的函数
|
|
func remove_weapon_effect(pet, weapon_name: String):
|
|
if not weapon_data.has(weapon_name):
|
|
return
|
|
|
|
var weapon = weapon_data[weapon_name]
|
|
var function_name = weapon.get("function", "")
|
|
|
|
if function_name != "":
|
|
# 将apply替换为remove来调用移除函数
|
|
var remove_function_name = function_name.replace("apply_", "remove_")
|
|
call(remove_function_name, pet)
|
|
|
|
# 获取武器图标路径
|
|
func get_weapon_icon(weapon_name: String) -> String:
|
|
if weapon_data.has(weapon_name):
|
|
return weapon_data[weapon_name].get("icon", "")
|
|
return ""
|
|
|
|
# 获取所有武器名称列表
|
|
func get_all_weapon_names() -> Array:
|
|
return weapon_data.keys()
|
|
#======================武器系统通用函数==========================
|