This commit is contained in:
aozhiwei 2021-07-23 11:12:38 +08:00
parent f35c9b7c18
commit d682d27422
2 changed files with 21 additions and 1 deletions

View File

@ -1626,8 +1626,27 @@ void Creature::Shot(a8::Vec2& target_dir, bool& shot_ok, float fly_distance)
}
if (GetCurrWeapon()->weapon_idx != 0 &&
GetCurrWeapon()->ammo <= 0) {
if (GetCurrWeapon()->meta->i->reload_delay_time() > 0) {
room->xtimer.AddDeadLineTimerAndAttach
(
GetCurrWeapon()->meta->i->reload_delay_time() / FRAME_RATE_MS,
a8::XParams()
.SetSender(this)
.SetParam1(GetCurrWeapon()->weapon_id),
[] (const a8::XParams& param)
{
Creature* c = (Creature*)param.sender.GetUserData();
int weapon_id = param.param1;
if (c->GetCurrWeapon()->weapon_id == weapon_id) {
c->AutoLoadingBullet();
}
},
&xtimer_attacher.timer_list_
);
} else {
AutoLoadingBullet();
}
}
last_shot_frameno_ = room->GetFrameNo();
if ((IsPlayer() || IsCar())) {
room->frame_event.AddBulletNumChg(GetWeakPtrRef());

View File

@ -139,6 +139,7 @@ message Equip
optional int32 use_scene = 60;
optional int32 ispenetrate = 61;
optional int32 is_penetrate_thing = 62;
optional int32 reload_delay_time = 63;
optional string inventory_slot = 31; //
optional int32 _inventory_slot = 32; //