1
This commit is contained in:
parent
6ec74e015e
commit
45c5164a23
@ -583,12 +583,19 @@ bool Creature::CanUseSkill(int skill_id)
|
|||||||
if (!skill) {
|
if (!skill) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (skill->force_use_times > 0) {
|
||||||
|
--skill->force_use_times;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if (dead) {
|
if (dead) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (playing_skill) {
|
if (playing_skill) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (IsHuman() && AsHuman()->downed) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
return skill->GetCurrTimes() > 0;
|
return skill->GetCurrTimes() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1055,6 +1062,22 @@ void Creature::ProcBuffEffect(Creature* caster, Buff* buff)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case kBET_UseSkill:
|
||||||
|
{
|
||||||
|
Skill* skill = GetSkill(buff->meta->int_param1);
|
||||||
|
if (skill) {
|
||||||
|
++skill->force_use_times;
|
||||||
|
a8::Vec2 target_pos = GetPos();
|
||||||
|
DoSkill(
|
||||||
|
skill->meta->i->skill_id(),
|
||||||
|
GetUniId(),
|
||||||
|
GetAttackDir(),
|
||||||
|
0,
|
||||||
|
target_pos
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -758,6 +758,7 @@ void Human::BeKill(int killer_id, const std::string& killer_name, int weapon_id)
|
|||||||
stats.killer_id = killer_id;
|
stats.killer_id = killer_id;
|
||||||
stats.killer_name = killer_name;
|
stats.killer_name = killer_name;
|
||||||
stats.weapon_id = weapon_id;
|
stats.weapon_id = weapon_id;
|
||||||
|
GetTrigger()->Die();
|
||||||
if (room->GetRoomMode() == kZombieMode) {
|
if (room->GetRoomMode() == kZombieMode) {
|
||||||
dead = true;
|
dead = true;
|
||||||
downed = false;
|
downed = false;
|
||||||
@ -1052,11 +1053,6 @@ int Human::GetNearbyTeammateNum(float range)
|
|||||||
return num;
|
return num;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Human::CanUseSkill(int skill_id)
|
|
||||||
{
|
|
||||||
return !downed && Creature::CanUseSkill(skill_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Human::DoJump()
|
void Human::DoJump()
|
||||||
{
|
{
|
||||||
if (HasBuffEffect(kBET_Fly)) {
|
if (HasBuffEffect(kBET_Fly)) {
|
||||||
@ -2451,7 +2447,6 @@ void Human::OnDie()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
DeadDrop();
|
DeadDrop();
|
||||||
GetTrigger()->Die();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Human::FreeDownedTimer()
|
void Human::FreeDownedTimer()
|
||||||
|
@ -163,7 +163,6 @@ class Human : public Creature
|
|||||||
bool HasNoDownedTeammate();
|
bool HasNoDownedTeammate();
|
||||||
int GetNearbyTeammateNum(float range);
|
int GetNearbyTeammateNum(float range);
|
||||||
void DoJump();
|
void DoJump();
|
||||||
virtual bool CanUseSkill(int skill_id) override;
|
|
||||||
virtual Skill* SelectSkill();
|
virtual Skill* SelectSkill();
|
||||||
void DoGetOn(int obj_uniid);
|
void DoGetOn(int obj_uniid);
|
||||||
void DoGetDown();
|
void DoGetDown();
|
||||||
|
@ -25,6 +25,7 @@ class Skill
|
|||||||
MetaData::Skill* meta = nullptr;
|
MetaData::Skill* meta = nullptr;
|
||||||
long long last_use_frameno = 0;
|
long long last_use_frameno = 0;
|
||||||
a8::XTimerAttacher xtimer_attacher;
|
a8::XTimerAttacher xtimer_attacher;
|
||||||
|
int force_use_times = 0;
|
||||||
|
|
||||||
void Initialzie();
|
void Initialzie();
|
||||||
int GetCd();
|
int GetCd();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user