1
This commit is contained in:
parent
cf68eae8dd
commit
ea222aef76
@ -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()) {
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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, //穿墙
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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()
|
||||||
);
|
);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user