This commit is contained in:
aozhiwei 2021-06-30 05:26:33 +00:00
parent cf68eae8dd
commit ea222aef76
6 changed files with 40 additions and 48 deletions

View File

@ -262,6 +262,7 @@ float Car::GetRadius()
float Car::GetSpeed() float Car::GetSpeed()
{ {
float speed = hero_meta_->i->move_speed(); float speed = hero_meta_->i->move_speed();
speed *= 1 + GetAbility()->GetAttrRate(kHAT_Speed);
return speed; return speed;
} }
@ -380,9 +381,7 @@ void Car::SetAttackDir(const a8::Vec2& attack_dir)
void Car::DecOil(float dec_oil) void Car::DecOil(float dec_oil)
{ {
if (driver_) { dec_oil *= 1 + GetAbility()->GetAttrRate(kHAT_CarOil);
dec_oil *= 1 + driver_->GetAbility()->GetAttrRate(kHAT_CarOil);
}
cur_oil_ -= dec_oil; cur_oil_ -= dec_oil;
cur_oil_ = std::max(0.0f, cur_oil_); cur_oil_ = std::max(0.0f, cur_oil_);
if (!HasOil()) { if (!HasOil()) {

View File

@ -160,12 +160,11 @@ enum HumanAttrType_e
kHAT_WeaponReloadTime = 22, kHAT_WeaponReloadTime = 22,
kHAT_WeaponExplosionRange = 23, kHAT_WeaponExplosionRange = 23,
kHAT_WeaponExplosionTime = 24, kHAT_WeaponExplosionTime = 24,
kHAT_GasDmg = 25, kHAT_PoisoningReduction = 25,
kHAT_RescueTime = 26, kHAT_RescueTime = 26,
kHAT_DrugTime = 27, kHAT_DrugTime = 27,
kHAT_DrugEfficacy = 28, kHAT_DrugEfficacy = 28,
kHAT_CarOil = 29, kHAT_CarOil = 29,
kHAT_CarDmg = 30,
kHAT_End kHAT_End
}; };

View File

@ -12,6 +12,9 @@ const int kInIceBuffId = 7008;
const int kBeRecycleBuffId = 7009; const int kBeRecycleBuffId = 7009;
const int kTraceBuffId = 7011; const int kTraceBuffId = 7011;
const int kInMountainTopBuffId = 7014; const int kInMountainTopBuffId = 7014;
const int kDownBuffId = 7015;
const int kPoisioningBuffId = 7016;
const int kRescueBuffId = 7017;
enum BuffEffectType_e enum BuffEffectType_e
{ {
@ -58,6 +61,11 @@ enum BuffEffectType_e
kBET_SelectTargetWithSelfPos = 40, //已自己坐标为中心范围内选取目标,并且批量添加buff kBET_SelectTargetWithSelfPos = 40, //已自己坐标为中心范围内选取目标,并且批量添加buff
kBET_CondAddBuff = 41, //条件添加buff kBET_CondAddBuff = 41, //条件添加buff
kBET_AddInventory = 42, //扩充库存 kBET_AddInventory = 42, //扩充库存
kBET_Down = 43, //倒下
kBET_Poisoning = 44, //中毒(毒圈中)
kBET_Rescue = 45, //救援
kBET_AddCarBuff = 46, //给载具加buff
kBET_RemoveCarBuff = 47, //移除载具身上的buff
kBET_FollowMaster = 49, //跟随主人 kBET_FollowMaster = 49, //跟随主人
kBET_ThroughWall = 50, //穿墙 kBET_ThroughWall = 50, //穿墙

View File

@ -1200,11 +1200,15 @@ void Creature::UpdatePoisoning()
} }
bool need_notify = poisoning_time > 1000; bool need_notify = poisoning_time > 1000;
while (poisoning_time > 1000) { while (poisoning_time > 1000) {
float dmg = 0;
if (room->GetGasData().is_last_gas) { if (room->GetGasData().is_last_gas) {
DecHP(room->GetGasData().new_area_meta->i->hurt(), VP_SafeArea, TEXT("battle_server_killer_gas", "毒圈"), VW_SafeArea); dmg = room->GetGasData().new_area_meta->i->hurt();
} else { } else {
DecHP(room->GetGasData().old_area_meta->i->hurt(), VP_SafeArea, TEXT("battle_server_killer_gas", "毒圈"), VW_SafeArea); dmg = room->GetGasData().old_area_meta->i->hurt();
} }
dmg *= 1 + GetAbility()->GetAttrRate(kHAT_PoisoningReduction);
dmg = std::max(10.0f, dmg);
DecHP(dmg, VP_SafeArea, TEXT("battle_server_killer_gas", "毒圈"), VW_SafeArea);
if (dead) { if (dead) {
poisoning_time = 0; poisoning_time = 0;
break; break;

View File

@ -3012,7 +3012,7 @@ void Human::ProcUseItemAction()
switch (action_item_id) { switch (action_item_id) {
case IS_HEALTHKIT: case IS_HEALTHKIT:
{ {
AddHp(item_meta->i->heal()); AddHp(item_meta->i->heal() * (1 + GetAbility()->GetAttrRate(kHAT_DrugEfficacy)));
DecInventory(item_meta->i->_inventory_slot(), 1); DecInventory(item_meta->i->_inventory_slot(), 1);
GetTrigger()->UseItemAction(action_item_id); GetTrigger()->UseItemAction(action_item_id);
} }

View File

@ -320,53 +320,32 @@ void Player::UpdateUseItemIdx()
return; return;
} }
if (use_item_idx >= 0 && use_item_idx < IS_END) { if (use_item_idx >= 0 && use_item_idx < IS_END) {
switch (use_item_idx) { MetaData::Equip* item_meta = MetaMgr::Instance()->GetEquipBySlotId(use_item_idx);
case IS_HEALTHKIT: if (item_meta) {
{ int use_time = item_meta->i->use_time();
MetaData::Equip* item_meta = MetaMgr::Instance()->GetEquipBySlotId(use_item_idx); switch (use_item_idx) {
if (item_meta) { case IS_HEALTHKIT:
case IS_PAIN_KILLER:
case IS_SHEN_BAO:
{
use_time -= GetAbility()->GetAttrAbs(kHAT_DrugTime);
use_time = std::max(1000, use_time);
StartAction( StartAction(
AT_UseItem, AT_UseItem,
item_meta->i->use_time(), use_time,
use_item_idx, use_item_idx,
0 0
); );
} }
} break;
break; default:
case IS_PAIN_KILLER: {
{
MetaData::Equip* item_meta = MetaMgr::Instance()->GetEquipBySlotId(use_item_idx);
if (item_meta) {
StartAction(
AT_UseItem,
item_meta->i->use_time(),
use_item_idx,
0
);
}
}
break;
case IS_SHEN_BAO:
{
MetaData::Equip* item_meta = MetaMgr::Instance()->GetEquipBySlotId(use_item_idx);
if (item_meta) {
StartAction(
AT_UseItem,
item_meta->i->use_time(),
use_item_idx,
0
);
}
}
break;
default:
{
}
break;
} }
break; GetTrigger()->UseItemAction(use_item_idx);
} }
GetTrigger()->UseItemAction(use_item_idx);
} }
use_item_idx = 0; use_item_idx = 0;
use_item = false; use_item = false;
@ -800,15 +779,18 @@ void Player::HumanInteraction(Human* hum)
if (hum->GetActionType() == AT_Rescue) { if (hum->GetActionType() == AT_Rescue) {
return; return;
} }
int downed_relive_time = MetaMgr::Instance()->GetSysParamAsInt("downed_relive_time") * 1000;
downed_relive_time -= GetAbility()->GetAttrAbs(kHAT_RescueTime);
downed_relive_time = std::max(1000, downed_relive_time);
hum->StartAction( hum->StartAction(
AT_Rescue, AT_Rescue,
MetaMgr::Instance()->GetSysParamAsInt("downed_relive_time") * 1000, downed_relive_time,
room->GetFrameNo(), room->GetFrameNo(),
GetUniId() GetUniId()
); );
StartAction( StartAction(
AT_Relive, AT_Relive,
MetaMgr::Instance()->GetSysParamAsInt("downed_relive_time") * 1000, downed_relive_time,
room->GetFrameNo(), room->GetFrameNo(),
hum->GetUniId() hum->GetUniId()
); );