|  |  |  | extends Node3D | 
					
						
							|  |  |  | class_name Status | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class SkillOrder: | 
					
						
							|  |  |  | 	var skill_cfg: SkillCfg | 
					
						
							|  |  |  | 	var cast_dir: Vector2 | 
					
						
							|  |  |  | 	var target: int | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class BulletOrder: | 
					
						
							|  |  |  | 	var bullet_cfg: CharacterCfg | 
					
						
							|  |  |  | 	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 #技能释放方向 | 
					
						
							|  |  |  | var skill_move_dir: Vector2 #技能位移方向 | 
					
						
							|  |  |  | var skill_action_key: String #技能输入指令 | 
					
						
							|  |  |  | var skill_repeat_count: int #技能重复释放次数 | 
					
						
							|  |  |  | var is_hit_character: bool #是否击中角色 | 
					
						
							|  |  |  | var is_hit_wall: bool #是否移动击中墙 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @export var skill_move_speed: float #技能位移速度 | 
					
						
							|  |  |  | @export var skill_float_speed: float #技能y位移速度 | 
					
						
							|  |  |  | @export var skill_move_stop: bool #技能位移速度是否停止生效 | 
					
						
							|  |  |  | @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技能指令 | 
					
						
							|  |  |  | var ai_bullet_order: Array[BulletOrder] = [] #ai子弹指令 | 
					
						
							|  |  |  | 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 #受击-眩晕 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func get_status(status_name: String) -> Variant: return get(status_name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func set_status(status_name: String, value: Variant): | 
					
						
							|  |  |  | 	set(status_name, value) | 
					
						
							|  |  |  | 	SignalManager.character_status_changed.emit(id, status_name, value) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func emit_status(status_name: String): | 
					
						
							|  |  |  | 	SignalManager.character_status_changed.emit(id, status_name, get_status(status_name)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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") |