suspend fire state change when ammo in weapon is zero

This commit is contained in:
FateJH 2018-01-15 19:19:15 -05:00
parent 065cd0c885
commit 53c5902512

View file

@ -1478,8 +1478,8 @@ class WorldSessionActor extends Actor with MDCContextAware {
case msg @ ChangeFireModeMessage(item_guid, fire_mode) => case msg @ ChangeFireModeMessage(item_guid, fire_mode) =>
log.info("ChangeFireMode: " + msg) log.info("ChangeFireMode: " + msg)
FindContainedWeapon match { FindWeapon match {
case (_, Some(tool : Tool)) => case Some(tool : Tool) =>
val originalModeIndex = tool.FireModeIndex val originalModeIndex = tool.FireModeIndex
tool.NextFireMode tool.NextFireMode
val modeIndex = tool.FireModeIndex val modeIndex = tool.FireModeIndex
@ -1493,18 +1493,26 @@ class WorldSessionActor extends Actor with MDCContextAware {
tool.FireModeIndex = originalModeIndex tool.FireModeIndex = originalModeIndex
sendResponse(PacketCoding.CreateGamePacket(0, ChangeFireModeMessage(tool_guid, originalModeIndex))) sendResponse(PacketCoding.CreateGamePacket(0, ChangeFireModeMessage(tool_guid, originalModeIndex)))
} }
case (_, Some(_)) => case Some(_) =>
log.error(s"ChangeFireMode: the object that was found for $item_guid was not a Tool") log.error(s"ChangeFireMode: the object that was found for $item_guid was not a Tool")
case (_, None) => case None =>
log.error(s"ChangeFireMode: can not find $item_guid") log.error(s"ChangeFireMode: can not find $item_guid")
} }
case msg @ ChangeFireStateMessage_Start(item_guid) => case msg @ ChangeFireStateMessage_Start(item_guid) =>
log.info("ChangeFireState_Start: " + msg) log.info("ChangeFireState_Start: " + msg)
if(shooting.isEmpty) { if(shooting.isEmpty) {
//TODO check that player can shoot item_guid? FindWeapon match {
shooting = Some(item_guid) case Some(tool : Tool) =>
avatarService ! AvatarServiceMessage(continent.Id, AvatarAction.ChangeFireState_Start(player.GUID, item_guid)) if(tool.GUID == item_guid && tool.Magazine > 0) {
shooting = Some(item_guid)
avatarService ! AvatarServiceMessage(continent.Id, AvatarAction.ChangeFireState_Start(player.GUID, item_guid))
}
case Some(_) =>
log.error(s"ChangeFireState_Start: the object that was found for $item_guid was not a Tool")
case None =>
log.error(s"ChangeFireState_Start: can not find $item_guid")
}
} }
case msg @ ChangeFireStateMessage_Stop(item_guid) => case msg @ ChangeFireStateMessage_Stop(item_guid) =>