Openapoc: Bug de quantidade de munições e clipes

Criado em 16 set. 2019  ·  3Comentários  ·  Fonte: OpenApoc/OpenApoc

Se bem me lembro, se a munição for vendida neste save, você vai acabar com o bug de milhões de clipes novamente. O Heavy Plasma Clip é um bom exemplo. Eu o tinha vendido como um clipe parcial e, quando o comprei de novo, ainda era um clipe parcial. Se eu tivesse um segundo clipe completo, provavelmente teria sido recarregado. Além disso, acredito que esse bug de clipe afetou meu espaço de armazenamento.

Isso está usando OpenApoc-v0.2.0.2-16-g2f96387e e V7.1 EWM.

save_Ammo e Clip Bug.zip

!BUG! low priority

Todos 3 comentários

Parece que o save já tem um número absurdo de pentes de munição, não há necessidade de comprar / vender nada.

Mas isso dá uma boa pista - parece que o código de compra / venda não está verificando se um pente de munição está parcialmente cheio - ele apenas tira (MAX_AMMO) de um pente das lojas.

Mas isso naturalmente falha se você tentar vender um clipe não completo, pois tira MAX_AMMO de um valor menor do que MAX_AMMO, causando um estouro negativo (como é um valor sem sinal, em vez de ficar negativo termina com UINT32_MAX - quantos seriam estar abaixo de zero, então mais de 4 bilhões). O que explica perfeitamente o problema.

Portanto, isso levanta a questão de como devemos lidar com clipes parcialmente preenchidos - tentar ser "inteligentes" e adicionar recursos ao OG rastreando o número de balas e não de clipes fora das batalhas tem uma série de efeitos de impacto que não tenho certeza vale a pena a complexidade extra de um recurso que a maioria das pessoas nem notará:

  • A compra / venda de um clipe parcialmente preenchido deve ter o mesmo custo de um completo?
  • A IU de compra / venda realmente não tem como informar ao usuário que um clipe está parcialmente preenchido, seja comprando ou vendendo
  • Já não há como mesclar clipes parcialmente preenchidos na batalha, então, se você não tomar cuidado, pode acabar na situação em que você luta em várias batalhas consecutivas e tem vários clipes quase vazios em cada agente, o que parece frustrante

Eu poderia avançar e cortar e queimar esse recurso e apenas mesclar automaticamente os clipes parcialmente preenchidos no final de cada batalha. Não tenho certeza se esse gerenciamento realmente / adiciona / alguma coisa ao jogo.

Portanto, examinando mais profundamente o código, parece que o mercado não suporta realmente clipes parciais. Depois de remover o número de rodadas das lojas, a economia apenas rastreia o número de clipes.

Isso significa que você sempre compra clipes inteiros, mesmo que os tenha vendido parcialmente cheios - então, um grampo simples aqui irá recarregar magicamente um clipe se você vendê-lo e comprá-lo de volta.

Mas, como a venda vai estourar para um grande número LOUCO, a compra de volta irá estourar de volta para um número normal - de volta para onde você começou.

Se você quiser uma votação, eu votaria por não haver gerenciamento parcial de clipes nas bases, e deixaria todos os clipes serem recarregados no retorno à base, junto com teletransportes pessoais e escudos sendo recarregados.

Esta página foi útil?
0 / 5 - 0 avaliações