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

View File

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

View File

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

View File

@ -1200,11 +1200,15 @@ void Creature::UpdatePoisoning()
}
bool need_notify = poisoning_time > 1000;
while (poisoning_time > 1000) {
float dmg = 0;
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 {
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) {
poisoning_time = 0;
break;

View File

@ -3012,7 +3012,7 @@ void Human::ProcUseItemAction()
switch (action_item_id) {
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);
GetTrigger()->UseItemAction(action_item_id);
}

View File

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