diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 54f0c1b..2c5b44f 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -3390,14 +3390,18 @@ void Human::ProcSkillPhase(MetaData::SkillPhase* phase) break; case kSkill_Shot: { + Entity* entity = room->GetEntityByUniId(skill_target_id); MetaData::Equip* weapon_meta = MetaMgr::Instance()->GetEquip(phase->param1.GetInt()); - if (weapon_meta) { + if (weapon_meta && entity) { + float target_distance = entity->GetPos().Distance(GetPos()); MetaData::EquipUpgrade* weapon_upgrade_meta = MetaMgr::Instance()->GetEquipUpgrade(weapon_meta->i->id()); MetaData::Equip* bullet_meta = MetaMgr::Instance()->GetEquip(weapon_meta->i->use_bullet()); - if (weapon_upgrade_meta && bullet_meta) { + if (bullet_meta) { a8::Vec2 old_attack_dir = attack_dir; + attack_dir = entity->GetPos() - GetPos(); + attack_dir.Normalize(); InternalShot ( this, @@ -3406,7 +3410,7 @@ void Human::ProcSkillPhase(MetaData::SkillPhase* phase) bullet_meta, 1, skill_meta_->i->skill_id(), - 5, + target_distance, false); attack_dir = old_attack_dir; } diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index c33b08b..d21ce4b 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -2604,7 +2604,7 @@ void Room::AddPlayerPostProc(Player* hum) } if (GetRoomMode() == kZombieMode) { #if 1 - hum->ChangeToRace(kZombieRace, 2); + hum->ChangeToRace(kZombieRace, 1); #else hum->ChangeToRace(kHumanRace, 1); #endif