1
This commit is contained in:
parent
cde5bb2612
commit
d50ac06600
@ -167,7 +167,7 @@ bool Buff::NeedSync(Human* hum)
|
|||||||
|
|
||||||
bool Buff::FreezeOperate()
|
bool Buff::FreezeOperate()
|
||||||
{
|
{
|
||||||
return meta->buff_effect() == kBET_Become && !hold_weapons_.empty();
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Buff::RecoverHoldWeapons()
|
void Buff::RecoverHoldWeapons()
|
||||||
|
@ -1,51 +0,0 @@
|
|||||||
#include "precompile.h"
|
|
||||||
|
|
||||||
#include "buff/become.h"
|
|
||||||
|
|
||||||
#include "creature.h"
|
|
||||||
|
|
||||||
#include "mt/Buff.h"
|
|
||||||
#include "mt/Equip.h"
|
|
||||||
|
|
||||||
void BecomeBuff::Activate()
|
|
||||||
{
|
|
||||||
hold_curr_weapon_idx_ = caster_.Get()->GetCurrWeapon()->weapon_idx;
|
|
||||||
if (caster_.Get()->IsHuman() && meta->_buff_param2 > 0.01) {
|
|
||||||
std::vector<std::string> strings;
|
|
||||||
a8::Split(meta->buff_param2(), strings, ':');
|
|
||||||
for (size_t i = 0; i < strings.size(); ++i) {
|
|
||||||
int weapon_id = a8::XValue(strings[i]);
|
|
||||||
const mt::Equip* weapon_meta = mt::Equip::GetById(weapon_id);
|
|
||||||
if (weapon_meta && i < caster_.Get()->weapons.size()) {
|
|
||||||
int weapon_idx = weapon_meta->GetWeaponIdx();
|
|
||||||
if (weapon_idx >= 0 && weapon_idx < caster_.Get()->weapons.size()) {
|
|
||||||
Weapon* weapon = &caster_.Get()->weapons[weapon_idx];
|
|
||||||
hold_weapons_.push_back(*weapon);
|
|
||||||
|
|
||||||
weapon->weapon_id = weapon_meta->id();
|
|
||||||
weapon->meta = weapon_meta;
|
|
||||||
weapon->skill_meta = skill_meta;
|
|
||||||
weapon->Recalc();
|
|
||||||
weapon->ammo = weapon->GetClipVolume(owner);
|
|
||||||
if (i == 0) {
|
|
||||||
caster_.Get()->SetCurrWeapon(weapon);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
caster_.Get()->MarkSyncActivePlayer(__FILE__, __LINE__, __func__);
|
|
||||||
caster_.Get()->SyncAroundPlayers(__FILE__, __LINE__, __func__);
|
|
||||||
}
|
|
||||||
#ifdef DEBUG1
|
|
||||||
caster_.Get()->SendDebugMsg(a8::Format("ProcBecome buff:%d hold_curr_weapon_idx:%d",
|
|
||||||
{
|
|
||||||
meta->buff_id(),
|
|
||||||
hold_curr_weapon_idx_
|
|
||||||
}));
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void BecomeBuff::Deactivate()
|
|
||||||
{
|
|
||||||
RecoverHoldWeapons();
|
|
||||||
}
|
|
@ -1,12 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include "buff.h"
|
|
||||||
|
|
||||||
class BecomeBuff : public Buff
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
virtual void Activate() override;
|
|
||||||
virtual void Deactivate() override;
|
|
||||||
|
|
||||||
};
|
|
@ -1,44 +0,0 @@
|
|||||||
#include "precompile.h"
|
|
||||||
|
|
||||||
#include "buff/bepull.h"
|
|
||||||
|
|
||||||
#include "creature.h"
|
|
||||||
|
|
||||||
#include "mt/Buff.h"
|
|
||||||
|
|
||||||
void BePullBuff::Activate()
|
|
||||||
{
|
|
||||||
if (caster_.Get() == owner) {
|
|
||||||
A8_ABORT();
|
|
||||||
}
|
|
||||||
if (caster_.Get()->GetEntitySubType() == EST_Android) {
|
|
||||||
float target_distance = caster_.Get()->GetPos().Distance2D2(owner->GetPos());
|
|
||||||
if (target_distance <= 0.000001f) {
|
|
||||||
owner->SetPos(caster_.Get()->GetPos());
|
|
||||||
owner->target_pos = caster_.Get()->GetPos();
|
|
||||||
} else {
|
|
||||||
if (target_distance <= meta->_buff_param3) {
|
|
||||||
owner->SetPos(caster_.Get()->GetPos());
|
|
||||||
owner->target_pos = caster_.Get()->GetPos();
|
|
||||||
} else {
|
|
||||||
glm::vec3 move_dir = owner->GetPos().CalcDir(caster_.Get()->GetPos());
|
|
||||||
GlmHelper::Normalize(move_dir);
|
|
||||||
owner->SetMoveDir(move_dir);
|
|
||||||
owner->target_pos = owner->GetPos();
|
|
||||||
owner->target_pos.AddGlmVec3(owner->GetMoveDir() * (target_distance - meta->_buff_param3));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
GlmHelper::Normalize(caster_.Get()->skill_dir_);
|
|
||||||
owner->target_pos = caster_.Get()->GetPos();
|
|
||||||
owner->target_pos.AddGlmVec3(caster_.Get()->skill_dir_ * caster_.Get()->skill_distance_);
|
|
||||||
glm::vec3 move_dir = owner->GetPos().CalcDir(owner->target_pos);
|
|
||||||
GlmHelper::Normalize(move_dir);
|
|
||||||
owner->SetMoveDir(move_dir);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void BePullBuff::Deactivate()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
@ -1,12 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include "buff.h"
|
|
||||||
|
|
||||||
class BePullBuff : public Buff
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
virtual void Activate() override;
|
|
||||||
virtual void Deactivate() override;
|
|
||||||
|
|
||||||
};
|
|
@ -9,8 +9,6 @@
|
|||||||
#include "buff/autoshot.h"
|
#include "buff/autoshot.h"
|
||||||
#include "buff/batch_add.h"
|
#include "buff/batch_add.h"
|
||||||
#include "buff/beatback.h"
|
#include "buff/beatback.h"
|
||||||
#include "buff/become.h"
|
|
||||||
#include "buff/bepull.h"
|
|
||||||
#include "buff/berecycle.h"
|
#include "buff/berecycle.h"
|
||||||
#include "buff/callfunc.h"
|
#include "buff/callfunc.h"
|
||||||
#include "buff/camouflage.h"
|
#include "buff/camouflage.h"
|
||||||
@ -35,7 +33,6 @@
|
|||||||
#include "buff/remove_car.h"
|
#include "buff/remove_car.h"
|
||||||
#include "buff/rescuer.h"
|
#include "buff/rescuer.h"
|
||||||
#include "buff/reverse.h"
|
#include "buff/reverse.h"
|
||||||
#include "buff/reverse_move.h"
|
|
||||||
#include "buff/select_target_with_self_pos.h"
|
#include "buff/select_target_with_self_pos.h"
|
||||||
#include "buff/sprint.h"
|
#include "buff/sprint.h"
|
||||||
#include "buff/summon_hero.h"
|
#include "buff/summon_hero.h"
|
||||||
@ -62,10 +59,6 @@ std::shared_ptr<Buff> BuffFactory::MakeBuff(const mt::Buff* buff_meta)
|
|||||||
return std::make_shared<BatchAddBuff>();
|
return std::make_shared<BatchAddBuff>();
|
||||||
case kBET_BeatBack:
|
case kBET_BeatBack:
|
||||||
return std::make_shared<BeatBackBuff>();
|
return std::make_shared<BeatBackBuff>();
|
||||||
case kBET_Become:
|
|
||||||
return std::make_shared<BecomeBuff>();
|
|
||||||
case kBET_BePull:
|
|
||||||
return std::make_shared<BePullBuff>();
|
|
||||||
case kBET_BeRecycle:
|
case kBET_BeRecycle:
|
||||||
return std::make_shared<BeRecycleBuff>();
|
return std::make_shared<BeRecycleBuff>();
|
||||||
case kBET_CallFunc:
|
case kBET_CallFunc:
|
||||||
@ -104,8 +97,6 @@ std::shared_ptr<Buff> BuffFactory::MakeBuff(const mt::Buff* buff_meta)
|
|||||||
return std::make_shared<OnceChgAttrBuff>();
|
return std::make_shared<OnceChgAttrBuff>();
|
||||||
case kBET_Passenger:
|
case kBET_Passenger:
|
||||||
return std::make_shared<PassengerBuff>();
|
return std::make_shared<PassengerBuff>();
|
||||||
case kBET_Pull:
|
|
||||||
return std::make_shared<PullBuff>();
|
|
||||||
case kBET_PullToWalkable:
|
case kBET_PullToWalkable:
|
||||||
return std::make_shared<PullToWalkableBuff>();
|
return std::make_shared<PullToWalkableBuff>();
|
||||||
case kBET_RemoveCarBuff:
|
case kBET_RemoveCarBuff:
|
||||||
@ -114,8 +105,6 @@ std::shared_ptr<Buff> BuffFactory::MakeBuff(const mt::Buff* buff_meta)
|
|||||||
return std::make_shared<RescuerBuff>();
|
return std::make_shared<RescuerBuff>();
|
||||||
case kBET_Reverse:
|
case kBET_Reverse:
|
||||||
return std::make_shared<ReverseBuff>();
|
return std::make_shared<ReverseBuff>();
|
||||||
case kBET_ReverseMove:
|
|
||||||
return std::make_shared<ReverseMoveBuff>();
|
|
||||||
case kBET_SelectTargetWithSelfPos:
|
case kBET_SelectTargetWithSelfPos:
|
||||||
return std::make_shared<SelectTargetWithSelfPosBuff>();
|
return std::make_shared<SelectTargetWithSelfPosBuff>();
|
||||||
case kBET_Sprint:
|
case kBET_Sprint:
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
#include "precompile.h"
|
|
||||||
|
|
||||||
#include "buff/reverse_move.h"
|
|
||||||
|
|
||||||
void ReverseMoveBuff::Activate()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void ReverseMoveBuff::Deactivate()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
@ -1,12 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include "buff.h"
|
|
||||||
|
|
||||||
class ReverseMoveBuff : public Buff
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
virtual void Activate() override;
|
|
||||||
virtual void Deactivate() override;
|
|
||||||
|
|
||||||
};
|
|
@ -32,44 +32,44 @@ A8_DECLARE_ENUM(SpecBuffId_e,
|
|||||||
|
|
||||||
A8_DECLARE_ENUM(BuffEffectType_e,
|
A8_DECLARE_ENUM(BuffEffectType_e,
|
||||||
kBET_Begin = 0,
|
kBET_Begin = 0,
|
||||||
kBET_ChgAttr = 1, //改变属性
|
kBET_UnUse1 = 1,
|
||||||
kBET_TurnOver = 2, //翻滚
|
kBET_TurnOver = 2, //翻滚
|
||||||
kBET_Car = 3, //骑乘
|
kBET_UnUse3 = 3,
|
||||||
kBET_Invincible = 4, //无敌
|
kBET_Invincible = 4, //无敌
|
||||||
kBET_Camouflage = 5, //伪装
|
kBET_Camouflage = 5, //伪装
|
||||||
kBET_Immune = 6, //免疫
|
kBET_Immune = 6, //免疫
|
||||||
kBET_CallFunc = 7, //调用功能
|
kBET_CallFunc = 7, //调用功能
|
||||||
kBET_NewProtect = 8, //新手保护血量低于50%
|
kBET_NewProtect = 8, //新手保护血量低于50%
|
||||||
kBET_BePull = 9, //拉人(被拉方)
|
kBET_BePull = 9, //拉人(被拉方)
|
||||||
kBET_JumpTo = 10, //跳跃
|
kBET_UnUse10 = 10,
|
||||||
kBET_OnceChgAttr = 11, //一次性buff
|
kBET_OnceChgAttr = 11, //一次性buff
|
||||||
kBET_Pull = 12, //拉人(主动方)
|
kBET_UnUse12 = 12,
|
||||||
kBET_ModifyAttr = 13,
|
kBET_ModifyAttr = 13,
|
||||||
kBET_PlayShotAni = 14, //播放射击动画
|
kBET_PlayShotAni = 14, //播放射击动画
|
||||||
kBET_Vertigo = 15, //眩晕
|
kBET_Vertigo = 15, //眩晕
|
||||||
kBET_DecHp = 16, //扣血
|
kBET_UnUse16 = 16,
|
||||||
kBET_PullDone = 17, //拖拽到目的地
|
kBET_PullDone = 17, //拖拽到目的地
|
||||||
kBET_DelayAddBuff = 18, //延迟加buff
|
kBET_DelayAddBuff = 18, //延迟加buff
|
||||||
kBET_PlayEffect = 19, //播放特效(客户端表现用)
|
kBET_UnUse19 = 19,
|
||||||
kBET_CliEffect2 = 20, //僵尸被动光环毒物(客户端表现用)
|
kBET_UnUse20 = 20,
|
||||||
kBET_CliEffect3 = 21, //僵尸被动光环地震(客户端表现用)
|
kBET_UnUse21 = 21,
|
||||||
kBET_CliEffect4 = 22, //被拖拽(客户端表现用)
|
kBET_UnUse22 = 22,
|
||||||
kBET_HunLuan = 23, //混乱,在烟雾弹中不自动瞄准
|
kBET_HunLuan = 23, //混乱,在烟雾弹中不自动瞄准
|
||||||
kBET_Fly = 24, //飞行中
|
kBET_Fly = 24, //飞行中
|
||||||
kBET_Jump = 25, //跳伞中
|
kBET_Jump = 25, //跳伞中
|
||||||
kBET_IntervalAddBuff = 26, //持续掉血
|
kBET_IntervalAddBuff = 26, //持续掉血
|
||||||
//kBET_LastAddHp = 27, //持续加血
|
//kBET_LastAddHp = 27, //持续加血
|
||||||
kBET_OnceAddHp = 28, //加血
|
kBET_UnUse28 = 28,
|
||||||
kBET_SummonHero = 29, //召唤英雄
|
kBET_SummonHero = 29, //召唤英雄
|
||||||
//kBET_SummonHero = 30, //向前跳跃
|
//kBET_SummonHero = 30, //向前跳跃
|
||||||
kBET_Shield = 31, //减伤护盾
|
kBET_UnUse31 = 31,
|
||||||
kBET_Hide = 32, //隐身
|
kBET_Hide = 32, //隐身
|
||||||
kBET_CrazyMode = 33, //暴走模式
|
kBET_UnUse33 = 33,
|
||||||
kBET_ShockWave = 34, //冲击波
|
kBET_UnUse34 = 34,
|
||||||
kBET_Sprint = 35, //冲刺
|
kBET_Sprint = 35, //冲刺
|
||||||
kBET_SummonObstacle = 36, //召唤物件
|
kBET_SummonObstacle = 36, //召唤物件
|
||||||
kBET_FlashMove = 37, //瞬间移动
|
kBET_FlashMove = 37, //瞬间移动
|
||||||
kBET_Become = 38, //变身
|
kBET_UnUse38 = 38,
|
||||||
kBET_ShotCharge = 39, //射击蓄力
|
kBET_ShotCharge = 39, //射击蓄力
|
||||||
kBET_SelectTargetWithSelfPos = 40, //已自己坐标为中心范围内选取目标,并且批量添加buff
|
kBET_SelectTargetWithSelfPos = 40, //已自己坐标为中心范围内选取目标,并且批量添加buff
|
||||||
kBET_EventAdd = 41, //even添加buff
|
kBET_EventAdd = 41, //even添加buff
|
||||||
@ -106,7 +106,7 @@ A8_DECLARE_ENUM(BuffEffectType_e,
|
|||||||
kBET_CondAdd = 71, //
|
kBET_CondAdd = 71, //
|
||||||
kBET_Dive = 72, //下潜模式
|
kBET_Dive = 72, //下潜模式
|
||||||
kBET_Reverse = 73, //人物反向
|
kBET_Reverse = 73, //人物反向
|
||||||
kBET_ReverseMove = 74, //人物反向移动
|
kBET_UnUse74 = 74,
|
||||||
kBET_MachineGun = 75, //机枪
|
kBET_MachineGun = 75, //机枪
|
||||||
kBET_HoldShield = 76, //手持盾牌
|
kBET_HoldShield = 76, //手持盾牌
|
||||||
kBET_InRescue = 77, //被救援中(被就方)
|
kBET_InRescue = 77, //被救援中(被就方)
|
||||||
|
@ -1755,8 +1755,7 @@ void Creature::SummonHero(Buff* buff,
|
|||||||
|
|
||||||
bool Creature::FreezeOperate()
|
bool Creature::FreezeOperate()
|
||||||
{
|
{
|
||||||
Buff* buff = GetBuffByEffectId(kBET_Become);
|
bool freeze = false;
|
||||||
bool freeze = buff && buff->FreezeOperate();
|
|
||||||
if (!freeze) {
|
if (!freeze) {
|
||||||
freeze = GetBuffByEffectId(kBET_Vertigo) ||
|
freeze = GetBuffByEffectId(kBET_Vertigo) ||
|
||||||
GetBuffByEffectId(kBET_Driver) ||
|
GetBuffByEffectId(kBET_Driver) ||
|
||||||
|
@ -659,10 +659,12 @@ void Human::DecHP(float dec_hp, int killer_id, const std::string& killer_name, i
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
Buff* buff = GetBuffByEffectId(kBET_Shield);
|
Buff* buff = GetBuffByEffectId(kBET_Shield);
|
||||||
if (buff) {
|
if (buff) {
|
||||||
dec_hp = std::max((float)1.0, dec_hp - buff->meta->_buff_param2);
|
dec_hp = std::max((float)1.0, dec_hp - buff->meta->_buff_param2);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
if (HasBuffEffect(kBET_Invincible)) {
|
if (HasBuffEffect(kBET_Invincible)) {
|
||||||
return;
|
return;
|
||||||
@ -956,9 +958,11 @@ void Human::DoGetOn(int obj_uniid)
|
|||||||
if (downed) {
|
if (downed) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#if 0
|
||||||
if (HasBuffEffect(kBET_Become)) {
|
if (HasBuffEffect(kBET_Become)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
switch (entity->GetEntityType()) {
|
switch (entity->GetEntityType()) {
|
||||||
case ET_Loot:
|
case ET_Loot:
|
||||||
{
|
{
|
||||||
@ -1500,7 +1504,11 @@ void Human::DeadDrop()
|
|||||||
if (a8::HasBitFlag(status, CS_DeadNoDrop)) {
|
if (a8::HasBitFlag(status, CS_DeadNoDrop)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#if 1
|
||||||
|
if (true) {
|
||||||
|
#else
|
||||||
if (!(HasBuffEffect(kBET_Become) && GetBuffByEffectId(kBET_Become)->FreezeOperate())) {
|
if (!(HasBuffEffect(kBET_Become) && GetBuffByEffectId(kBET_Become)->FreezeOperate())) {
|
||||||
|
#endif
|
||||||
#ifdef NEW_WEAPON_SYS
|
#ifdef NEW_WEAPON_SYS
|
||||||
#else
|
#else
|
||||||
for (auto& weapon : weapons) {
|
for (auto& weapon : weapons) {
|
||||||
@ -3316,9 +3324,11 @@ void Human::DoDive()
|
|||||||
HasBuffEffect(kBET_Passenger)) {
|
HasBuffEffect(kBET_Passenger)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#if 0
|
||||||
if (HasBuffEffect(kBET_Become)) {
|
if (HasBuffEffect(kBET_Become)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
if (HasBuffEffect(kBET_Camouflage) ) {
|
if (HasBuffEffect(kBET_Camouflage) ) {
|
||||||
RemoveBuffByEffectId(kBET_Camouflage);
|
RemoveBuffByEffectId(kBET_Camouflage);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user