1
This commit is contained in:
parent
59734add35
commit
a38c7b3fa6
@ -1035,8 +1035,11 @@ void Creature::ProcSkillPhase(MetaData::SkillPhase* phase)
|
|||||||
a8::Vec2 old_dir = GetMoveDir();
|
a8::Vec2 old_dir = GetMoveDir();
|
||||||
a8::Vec2 old_pos = GetPos();
|
a8::Vec2 old_pos = GetPos();
|
||||||
if (CurrentSkill()->GetMinorType() == SMT_NONE) {
|
if (CurrentSkill()->GetMinorType() == SMT_NONE) {
|
||||||
int buff_id = phase->param3.GetInt();
|
int buff_id1 = phase->param3_ints.size() > 0 ? phase->param3_ints[0] : 0;
|
||||||
TryAddBuff(this, buff_id);
|
int buff_id2 = phase->param3_ints.size() > 1 ? phase->param3_ints[1] : 0;
|
||||||
|
int buff_id3 = phase->param3_ints.size() > 2 ? phase->param3_ints[2] : 0;
|
||||||
|
TryAddBuff(this, buff_id1);
|
||||||
|
int land_effect_buff_uniid = TryAddBuff(this, buff_id3);
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
a8::XPrintf("old_pos:%f,%f\n", {GetPos().x, GetPos().y});
|
a8::XPrintf("old_pos:%f,%f\n", {GetPos().x, GetPos().y});
|
||||||
#endif
|
#endif
|
||||||
@ -1061,15 +1064,17 @@ void Creature::ProcSkillPhase(MetaData::SkillPhase* phase)
|
|||||||
#else
|
#else
|
||||||
phase->param2.GetInt() * 1000,
|
phase->param2.GetInt() * 1000,
|
||||||
#endif
|
#endif
|
||||||
[this, pre_pos, pre_dir, buff_id, skill_meta] () {
|
[this, pre_pos, pre_dir, buff_id1, buff_id2, buff_id3, land_effect_buff_uniid,
|
||||||
|
skill_meta] () {
|
||||||
a8::Vec2 old_dir = GetMoveDir();
|
a8::Vec2 old_dir = GetMoveDir();
|
||||||
a8::Vec2 old_pos = GetPos();
|
a8::Vec2 old_pos = GetPos();
|
||||||
float distance = GetPos().Distance(pre_pos);
|
float distance = GetPos().Distance(pre_pos);
|
||||||
|
RemoveBuffByUniId(land_effect_buff_uniid);
|
||||||
if (distance > 0.0001f) {
|
if (distance > 0.0001f) {
|
||||||
a8::Vec2 new_dir = pre_pos - GetPos();
|
a8::Vec2 new_dir = pre_pos - GetPos();
|
||||||
new_dir.Normalize();
|
new_dir.Normalize();
|
||||||
SetMoveDir(new_dir);
|
SetMoveDir(new_dir);
|
||||||
TryAddBuff(this, buff_id);
|
TryAddBuff(this, buff_id2);
|
||||||
_UpdateMove(distance);
|
_UpdateMove(distance);
|
||||||
}
|
}
|
||||||
SetMoveDir(old_dir);
|
SetMoveDir(old_dir);
|
||||||
@ -1079,6 +1084,23 @@ void Creature::ProcSkillPhase(MetaData::SkillPhase* phase)
|
|||||||
skill_meta);
|
skill_meta);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
room->xtimer.AddDeadLineTimerAndAttach
|
||||||
|
(
|
||||||
|
#if 1
|
||||||
|
skill_meta->number_meta->float_time * 1000,
|
||||||
|
#else
|
||||||
|
phase->param2.GetInt() * 1000,
|
||||||
|
#endif
|
||||||
|
a8::XParams()
|
||||||
|
.SetSender(this)
|
||||||
|
.SetParam1(land_effect_buff_uniid),
|
||||||
|
[] (const a8::XParams& param)
|
||||||
|
{
|
||||||
|
Creature* c = (Creature*)param.sender.GetUserData();
|
||||||
|
int land_effect_buff_uniid = param.param1;
|
||||||
|
c->RemoveBuffByUniId(land_effect_buff_uniid);
|
||||||
|
},
|
||||||
|
&xtimer_attacher.timer_list_);
|
||||||
}
|
}
|
||||||
SetMoveDir(old_dir);
|
SetMoveDir(old_dir);
|
||||||
}
|
}
|
||||||
|
@ -1001,6 +1001,27 @@ namespace MetaData
|
|||||||
phase.param1 = a8::XValue(phase.param1_str);
|
phase.param1 = a8::XValue(phase.param1_str);
|
||||||
phase.param2 = a8::XValue(phase.param2_str);
|
phase.param2 = a8::XValue(phase.param2_str);
|
||||||
phase.param3 = a8::XValue(phase.param3_str);
|
phase.param3 = a8::XValue(phase.param3_str);
|
||||||
|
{
|
||||||
|
std::vector<std::string> strings;
|
||||||
|
a8::Split(phase.param1_str, strings, '|');
|
||||||
|
for (auto& str : strings) {
|
||||||
|
phase.param1_ints.push_back(a8::XValue(str));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
std::vector<std::string> strings;
|
||||||
|
a8::Split(phase.param2_str, strings, '|');
|
||||||
|
for (auto& str : strings) {
|
||||||
|
phase.param2_ints.push_back(a8::XValue(str));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
std::vector<std::string> strings;
|
||||||
|
a8::Split(phase.param3_str, strings, '|');
|
||||||
|
for (auto& str : strings) {
|
||||||
|
phase.param3_ints.push_back(a8::XValue(str));
|
||||||
|
}
|
||||||
|
}
|
||||||
phases.push_back(phase);
|
phases.push_back(phase);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -303,6 +303,10 @@ namespace MetaData
|
|||||||
std::string param1_str;
|
std::string param1_str;
|
||||||
std::string param2_str;
|
std::string param2_str;
|
||||||
std::string param3_str;
|
std::string param3_str;
|
||||||
|
|
||||||
|
std::vector<int> param1_ints;
|
||||||
|
std::vector<int> param2_ints;
|
||||||
|
std::vector<int> param3_ints;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Skill
|
struct Skill
|
||||||
|
Loading…
x
Reference in New Issue
Block a user