You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

137 lines
4.8 KiB
GDScript

2 years ago
extends Node3D
class_name Status
class SkillOrder:
var skill_cfg: SkillCfg
var cast_dir: Vector2
var target: int
#实体属性
var id: int #id
var owner_id: int #所有者id
var sub_character_id: int #伴生随从id
var team: Enum.ETeam #队伍
#静态属性
var cfg: CharacterCfg #配置表
var height: float # 受击框高度
var radius: float # 受击框半径
#战斗状态
var hp: float #当前血量
var hp_max: float #血量最大值
var shield: float #当前护盾
var shield_max: float #护盾最大值
var stun: float #当前眩晕值
var stun_max: float #眩晕值最大值
var mp: int #mp最大值
var mp_max: int #mp最大值
var mp_sub: float #次级mp
var mp_sub_max: float #次级mp最大值
var is_dead: bool #是否死亡
var target: int #目标角色
var is_lock: bool #是否主动锁定
var throw_target: int #投技目标
var break_level_def: int #硬直抗性等级
#表现状态
var basic_offset: Vector3 #基本偏移值
var shake_offset: Vector3 #抖动偏移值
var ui_offset: Vector3 #ui挂点偏移值
var ui_center_offset: Vector3 #ui中心挂点偏移值
var is_pause: bool #是否暂停
var flash_white_rate: float #闪白比例
var deformation_dir: Vector2 #形变方向
var deformation_rate: float #形变比例
#移动状态
var move_dir: Vector2 #移动方向
var speed_dir: Vector2 #速度方向
var velocity_change: Vector3 #一帧内速度变化值
var speed_down_push_rate: float #来自软阻挡的速度减少比率
@export var speed_up_rate: float #移动速度比率
var speed_xz: float #水平移动速度
var speed_y: float #竖直移动速度
var is_free_control: bool = true #是否可以自由控制
var is_on_floor: bool #是否在地面
var is_free_turn: bool = true #是否允许转向
var is_right: bool = true #是否向右
var is_jumping: bool #是否正在跳跃
var is_jumped: bool #是否已跳跃
@export var is_speed_y_freeze: bool #是否冻结竖直速度
#buff状态
var is_stagger: bool #是否硬直
var is_stun: bool #是否眩晕
var is_floating: bool #是否正在浮空
var is_be_throw: bool #是否被投
var is_rising: bool #是否正在开始浮空
var hit_back_dir: Vector2 #击退方向
var hit_back_speed: float #击退速度
var hit_up_speed: float #击飞速度
var pause_time: float #卡帧时间
#技能状态
var skill_cfg: SkillCfg #当前技能
var is_skill_running: bool #技能是否正在释放
var skill_dir: Vector2 #技能释放方向
10 months ago
var skill_move_dir: Vector2 #技能位移方向
@export var skill_move_speed: float #技能位移速度
@export var skill_float_speed: float #技能y位移速度
@export var skill_move_stop: bool #技能位移速度是否停止生效
var skill_action_key: String #技能输入指令
@export var skill_break_level_add: int #技能额外打断等级
#核心状态
var core_active_list: Array[CoreCfg] = [] #主动核心列表 8个
var core_passive_list: Array[CoreCfg] = [] #被动核心列表
#玩家技能状态
var input_dir: Vector2 #指令方向
@export var stance: Enum.EStance #技能姿态
@export var break_level: Enum.EBreakLevel #打断等级
var weapon_list: Array[WeaponCfg] = [] #武器列表
var weapon_index: int #当前武器下标
var weapon_index_change_dir: int #武器下标操作变化方向
var weapon_index_change_rate: float #武器下标操作变化进度
var is_switch: bool #是否切换到核心释放模式
var is_charging: bool #是否蓄力
var charging_level: int #蓄力等级
#ai状态
var ai_role: int #ai角色
var ai_skill_order: Array[SkillOrder] = [] #ai技能指令
1 year ago
var ai_alert_max: float #警戒值最大值
var ai_alert: float #警戒值
var ai_is_alert: bool #是否已激活
#动画触发器
var trigger_jump: bool #跳跃
var trigger_hit: bool #受击-地面-轻
var trigger_mhit: bool #受击-地面-中
var trigger_lhit: bool #受击-地面-重
var trigger_air_hit_up: bool #受击-空中受击-向上
var trigger_air_hit_down: bool #受击-空中受击-向上
var trigger_rebound: bool #受击-反弹
var trigger_stun_hit: bool #受击-眩晕
2 years ago
func get_status(status_name: String) -> Variant: return get(status_name)
1 year ago
func set_status(status_name: String, value: Variant):
set(status_name, value)
SignalManager.character_status_changed.emit(id, status_name, value)
2 years ago
2 years ago
2 years ago
func emit_status(status_name: String):
SignalManager.character_status_changed.emit(id, status_name, get_status(status_name))
1 year ago
func set_shield(value: float):
shield = value
refresh_break_level_def()
emit_status("shield")
func set_skill_break_level_add(value: int):
skill_break_level_add = value
refresh_break_level_def()
emit_status("skill_break_level_add")
func refresh_break_level_def():
break_level_def = cfg.shield.break_level_on if shield>0 else cfg.shield.break_level_off
break_level_def += skill_break_level_add
emit_status("break_level_def")