def METHOD_NAME(self, action: str) -> None:
    """Update the current state with an authorized action."""
    if action not in self.actions:
        raise ValueError(f"Unauthorized action {action}, authorized are {self.actions}")
    if action == "fire":
        if not self.ammunitions:
            raise ValueError("Cannot fire without amunitions")
        self.ammunitions -= 1
    elif action == "reload":
        self.ammunitions += 1
    if action == "protect":
        self.consecutive_protect += 1
    else:
        self.consecutive_protect = 0