This commit is contained in:
aozhiwei 2023-11-28 10:59:41 +08:00
parent 6fabf19c71
commit 863e1fbae2
3 changed files with 22 additions and 1 deletions

View File

@ -3823,12 +3823,22 @@ void Creature::InternalUseSkill()
void Creature::AddSkillHoldState(int skill_id) void Creature::AddSkillHoldState(int skill_id)
{ {
skill_hold_skill_id = skill_id;
skill_hold_start_frameno = room->GetFrameNo();
Skill* skill = GetSkill(skill_hold_skill_id);
if (skill && skill->meta->skill_hold_buff()) {
TryAddBuff(owner_,
skill->meta->skill_hold_buff());
}
} }
void Creature::ClearSkillHoldState() void Creature::ClearSkillHoldState()
{ {
if (skill_hold_skill_id != 0) { if (skill_hold_skill_id != 0) {
Skill* skill = GetSkill(skill_hold_skill_id);
if (skill && skill->meta->skill_hold_buff()) {
RemoveBuffById(skill->meta->skill_hold_buff());
}
skill_hold_skill_id = 0; skill_hold_skill_id = 0;
skill_hold_start_frameno = 0; skill_hold_start_frameno = 0;
} }

View File

@ -263,6 +263,14 @@ void Player::InternalUpdate(int delta_time)
if (throw_bomb) { if (throw_bomb) {
UpdateThrowBomb(); UpdateThrowBomb();
} }
if (skill_hold) {
if (skill_hold_skill_id && skill_hold_skill_id != skill_hold) {
ClearSkillHoldState();
}
AddSkillHoldState(skill_hold);
} else {
ClearSkillHoldState();
}
#if 0 #if 0
if (moving) { if (moving) {
UpdateMoving(); UpdateMoving();
@ -1186,6 +1194,7 @@ void Player::_CMMove(f8::MsgHdr* hdr, const cs::CMMove& msg)
} }
last_cmmove_frameno = room->GetFrameNo(); last_cmmove_frameno = room->GetFrameNo();
trace_target_uniid = msg.trace_target_uniid(); trace_target_uniid = msg.trace_target_uniid();
skill_hold = msg.skill_hold();
#ifdef MYDEBUG1 #ifdef MYDEBUG1
a8::XPrintf("move_dir:%f %f frameno:%d %d moving:%d\n", a8::XPrintf("move_dir:%f %f frameno:%d %d moving:%d\n",
{ {

View File

@ -91,6 +91,8 @@ class Player : public Human
std::vector<int> interaction_objids; std::vector<int> interaction_objids;
int skill_hold = 0;
virtual ~Player() override; virtual ~Player() override;
virtual void Initialize() override; virtual void Initialize() override;
virtual void Update(int delta_time) override; virtual void Update(int delta_time) override;