119 lines
3.5 KiB
GDScript
119 lines
3.5 KiB
GDScript
class_name CharacterTool
|
||
static func get_character_attribute(character_data:Dictionary,attribute_name:String):
|
||
|
||
var arr=has_attribute(character_data)
|
||
if arr[0]:
|
||
var attribute_data=arr[1]
|
||
if attribute_data.has(attribute_name):
|
||
return attribute_data[attribute_name]
|
||
else:
|
||
return null
|
||
else:
|
||
return null
|
||
|
||
|
||
pass
|
||
static func has_attribute(character_data:Dictionary):
|
||
if character_data.has("basic_attribute"):
|
||
return [true,character_data["basic_attribute"]]
|
||
else:
|
||
return [false,null]
|
||
|
||
static func get_head(character_data:Dictionary):
|
||
return character_data["head"]
|
||
|
||
pass
|
||
static func cacul_fight_attribute(character_data:Dictionary)->Dictionary:
|
||
var res={}
|
||
var arr=has_attribute(character_data)
|
||
if arr[0]:
|
||
var attribute_data=arr[1]
|
||
#"CON":100,体质
|
||
#"AGI":100,敏捷
|
||
#"INT":100,智力
|
||
#"WIS":100,感知
|
||
#"STR":100,力量
|
||
#"MND":100,意志
|
||
#"LUC":100,幸运
|
||
#"AM":100,魅力
|
||
#体质
|
||
var CON=attribute_data["CON"]
|
||
var AGI=attribute_data["AGI"]
|
||
var INT=attribute_data["INT"]
|
||
var WIS=attribute_data["WIS"]
|
||
var STR=attribute_data["STR"]
|
||
var MND=attribute_data["MND"]
|
||
var LUC=attribute_data["LUC"]
|
||
var AM=attribute_data["AM"]
|
||
res["HP"]=CON*5
|
||
res["SP"]=INT+MND
|
||
res["VIT"]=120
|
||
|
||
|
||
return res
|
||
pass
|
||
|
||
static func get_skin_now_use_data(character_data:Dictionary)->Dictionary:
|
||
return character_data["skin"][character_data["skin_now_use"]]
|
||
static func get_character_name(character_data:Dictionary)->String:
|
||
return character_data["name"]
|
||
pass
|
||
static func get_character_star_num(character_data:Dictionary)->int:
|
||
return int(character_data["star"])
|
||
|
||
#修饰默认的角色数据,例如选择的皮肤,装备的卡片,选择的开局等
|
||
#(修饰数据存储在玩家数据里,用户通过Global获取的角色数据应是修饰后的数据,更改角色时通过Global添加修饰器)
|
||
#"skin":int 改变使用的皮肤
|
||
#
|
||
|
||
static func character_embellish(character_data:Dictionary,embellish_data:Dictionary)->Dictionary:
|
||
var res_data=character_data.duplicate(true)
|
||
#使用皮肤更改修饰
|
||
if embellish_data.has("skin"):
|
||
res_data["skin_now_use"]=int(embellish_data["skin"])
|
||
#"unclocked_start":[0],
|
||
#"start_now_use":0,
|
||
#开局更改修饰
|
||
if embellish_data.has("start"):
|
||
res_data["start_now_use"]=int(embellish_data["start"])
|
||
#解锁开局,data应该是个int类型的Array,因为json解析为float这里转换了
|
||
if embellish_data.has("unlock_start"):
|
||
var unlock_data:Array=embellish_data["unlock_start"]
|
||
for i in unlock_data:
|
||
#这里,下同
|
||
if not float(i) in res_data["unlocked_start"]:
|
||
res_data["unlocked_start"].append(float(i))
|
||
#解锁皮肤,data应该是个int类型的Array
|
||
if embellish_data.has("unlock_skin"):
|
||
var unlock_data:Array=embellish_data["unlock_skin"]
|
||
for i in unlock_data:
|
||
if not float(i) in res_data["unlocked_skin"]:
|
||
res_data["unlocked_start"].append(float(i))
|
||
|
||
return res_data
|
||
static func get_initiative_value(character_data:Dictionary)->int:
|
||
var AGI=get_character_attribute(character_data,"AGI")
|
||
return AGI/2+randi_range(-10,10)
|
||
static func get_character_type(character_data:Dictionary)->int:
|
||
return int(character_data["basic_mes"]["type"])
|
||
static var attribute_key_to_name_dic:Dictionary={
|
||
"CON":"体质",
|
||
"AGI":"敏捷",
|
||
"INT":"智力",
|
||
"WIS":"感知",
|
||
"STR":"力量",
|
||
"MND":"意志",
|
||
"LUC":"幸运",
|
||
"AM":"魅力",
|
||
"HP":"生命",
|
||
"SP":"精神",
|
||
"VIT":"体力"
|
||
}
|
||
##通过属性的键名获取显示名字
|
||
static func get_name_by_attribute_key(key:String)->String:
|
||
if attribute_key_to_name_dic.has(key):
|
||
return attribute_key_to_name_dic[key]
|
||
else:
|
||
return key
|
||
|