1
This commit is contained in:
parent
68d486a1f7
commit
f4a57bffe7
@ -237,6 +237,7 @@ enum EquipType_e
|
|||||||
{
|
{
|
||||||
EQUIP_TYPE_WEAPON = 1,
|
EQUIP_TYPE_WEAPON = 1,
|
||||||
EQUIP_TYPE_BULLET = 2,
|
EQUIP_TYPE_BULLET = 2,
|
||||||
|
EQUIP_TYPE_THROW = 3,
|
||||||
EQUIP_TYPE_PROTECTION = 4,
|
EQUIP_TYPE_PROTECTION = 4,
|
||||||
EQUIP_TYPE_BAG = 7,
|
EQUIP_TYPE_BAG = 7,
|
||||||
EQUIP_TYPE_OLDSKIN = 8,
|
EQUIP_TYPE_OLDSKIN = 8,
|
||||||
@ -255,6 +256,12 @@ enum GunSubEquipType_e
|
|||||||
GUN_SUB_EQUIP_TYPE_End
|
GUN_SUB_EQUIP_TYPE_End
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum ThrowSubEquipType_e
|
||||||
|
{
|
||||||
|
THROW_EQUIP_TYPE_ADD_BUFF = 3,
|
||||||
|
THROW_SUB_EQUIP_TYPE_End
|
||||||
|
};
|
||||||
|
|
||||||
enum EntitySubType_e
|
enum EntitySubType_e
|
||||||
{
|
{
|
||||||
EST_None = 0,
|
EST_None = 0,
|
||||||
|
@ -1205,6 +1205,36 @@ void Creature::ProcSkillPhase(MetaData::SkillPhase* phase)
|
|||||||
if (std::abs(skill_dir_.x) > FLT_EPSILON ||
|
if (std::abs(skill_dir_.x) > FLT_EPSILON ||
|
||||||
std::abs(skill_dir_.y) > FLT_EPSILON) {
|
std::abs(skill_dir_.y) > FLT_EPSILON) {
|
||||||
float target_distance = 5;
|
float target_distance = 5;
|
||||||
|
if (weapon_meta->i->equip_type() == EQUIP_TYPE_THROW &&
|
||||||
|
weapon_meta->i->equip_subtype() == THROW_EQUIP_TYPE_ADD_BUFF) {
|
||||||
|
target_distance = skill_distance_;
|
||||||
|
room->xtimer.AddDeadLineTimerAndAttach
|
||||||
|
(
|
||||||
|
(target_distance / weapon_meta->i->bullet_speed()) * 1000.0f / FRAME_RATE_MS,
|
||||||
|
a8::XParams()
|
||||||
|
.SetSender(this)
|
||||||
|
.SetParam1(context_pos.x)
|
||||||
|
.SetParam2(context_pos.y)
|
||||||
|
.SetParam3(weapon_meta),
|
||||||
|
[] (const a8::XParams& param)
|
||||||
|
{
|
||||||
|
Creature* c = (Creature*)param.sender.GetUserData();
|
||||||
|
MetaData::Equip* equip_meta = (MetaData::Equip*)param.param3.GetUserData();
|
||||||
|
|
||||||
|
a8::Vec2 context_pos;
|
||||||
|
context_pos.x = param.param1.GetDouble();
|
||||||
|
context_pos.x = param.param2.GetDouble();
|
||||||
|
a8::Vec2 old_context_pos = c->context_pos;
|
||||||
|
c->TryAddBuff(c, equip_meta->int_param1);
|
||||||
|
c->context_pos = context_pos;
|
||||||
|
c->context_pos = old_context_pos;
|
||||||
|
},
|
||||||
|
&xtimer_attacher.timer_list_,
|
||||||
|
[] (const a8::XParams& param)
|
||||||
|
{
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
if (bullet_meta && target_distance > 0.00001f) {
|
if (bullet_meta && target_distance > 0.00001f) {
|
||||||
a8::Vec2 old_attack_dir = GetAttackDir();
|
a8::Vec2 old_attack_dir = GetAttackDir();
|
||||||
a8::Vec2 attack_dir = skill_dir_;
|
a8::Vec2 attack_dir = skill_dir_;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user