添加前摇时间射击使用技能

This commit is contained in:
aozhiwei 2021-08-12 03:05:40 +00:00
parent 568cc480b7
commit 4fd5414efc
5 changed files with 33 additions and 0 deletions

View File

@ -136,6 +136,13 @@ void InternalShot(Creature* c,
c->room->xtimer.ModifyTimer(buff->remover_timer, weapon_meta->lock_time / FRAME_RATE_MS);
}
}
if (weapon_meta->i->cast_time() > 0) {
int buff_uniid = c->TryAddBuff(c, kVertigoBuffId);
Buff* buff = c->GetBuffByUniId(buff_uniid);
if (buff && buff->remover_timer) {
c->room->xtimer.ModifyTimer(buff->remover_timer, weapon_meta->i->cast_time() / FRAME_RATE_MS);
}
}
for (auto& tuple : weapon_meta->bullet_born_offset) {
a8::Vec2 bullet_born_offset = a8::Vec2(std::get<0>(tuple), std::get<1>(tuple));
bullet_born_offset.Rotate(c->GetAttackDir().CalcAngle(a8::Vec2::UP));
@ -794,6 +801,7 @@ void Creature::DoSkill(int skill_id,
context_dir = skill_dir_;
context_pos = GetPos() + skill_dir_ * skill_distance_;
CurrentSkill()->last_use_frameno = room->GetFrameNo();
skill->LockCastPhase();
if (CurrentSkill()->meta->i->skill_target() == kST_Self
) {
skill_target_id_ = GetUniId();

View File

@ -1029,6 +1029,16 @@ namespace MetaData
}
}
break;
case kBET_DelayAddBuff:
{
assert(param1 < i->duration_time());
}
break;
case kBET_IntervalAddBuff:
{
assert(int_param1 < i->duration_time() * 1000);
}
break;
default:
{
}

View File

@ -155,3 +155,15 @@ void Skill::Accelerate(int time)
NotifySkillState();
}
}
void Skill::LockCastPhase()
{
if (meta->i->cast_time() > 0) {
int buff_uniid = owner->TryAddBuff(owner, kVertigoBuffId);
Buff* buff = owner->GetBuffByUniId(buff_uniid);
if (buff && buff->remover_timer) {
owner->room->xtimer.ModifyTimer(buff->remover_timer,
meta->i->cast_time() / FRAME_RATE_MS);
}
}
}

View File

@ -31,6 +31,7 @@ class Skill
void FillMFSkill(cs::MFSkill* skill_pb);
void ResetSkillCd();
void Accelerate(int time);
void LockCastPhase();
void ClearPassiveSkillBuff();
void AddPassiveSkillBuff();

View File

@ -142,6 +142,7 @@ message Equip
optional int32 ispenetrate = 61;
optional int32 is_penetrate_thing = 62;
optional int32 reload_delay_time = 63;
optional int32 cast_time = 64;
optional string inventory_slot = 31; //
optional int32 _inventory_slot = 32; //
@ -237,6 +238,7 @@ message Skill
optional string phase3_param1 = 42;
optional string phase3_param2 = 43;
optional string phase3_param3 = 44;
optional int32 cast_time = 45;
}
message Buff