Ir para conteúdo
  • Cadastre-se

(Resolvido)2 BlockHit por turno na Source ( TFS 0.4.0)


Ir para solução Resolvido por Kydrai,

Posts Recomendados

Olá a todos.

 

Gostaria de saber em que parte da source (TFS 0.4.0) eu encontro a determinação de que players e monstros (creatures em geral, portanto) são capazes de bloquear apenas 2 ataques por vez - como vocês sabem, uma terceira, quarta (etc) criatura ao atacar pega o inimigo sem descontar a "def" do ataque, apenas o "armor", e eu gostaria de saber que trecho de código se refere a isso, pois pretendo fazer alterações.  Andei procurando em creature.cpp, weapon.cpp, combat.cpp, condition.cpp, creatueevent.cpp, game.cpp, player.cpp e não estou sabendo identificar qual é o mecanismo que determina essa limitação de defender-se apenas 2 ataques por turno.

 

Se alguém souber me informar ou tiver uma ideia de como mudar esse mecanismo, ficarei grato.

Obrigado, até mais!

Link para o post
Compartilhar em outros sites
  • Solução

blockCount e blockTicks no creature.cpp.

 

A cada 1 segundo no blockTicks adiciona +1 no blockCount (sendo que o máximo é 2).
E a cada a cada ataque sofrido adiciona -1 no blockCount.
Quando receber um ataque, se o blockCount não for maior que 0 então não utiliza a defesa.

Link para o post
Compartilhar em outros sites
7 minutes ago, Kydrai said:

blockCount e blockTicks no creature.cpp.

 

A cada 1 segundo no blockTicks adiciona +1 no blockCount (sendo que o máximo é 2).
E a cada a cada ataque sofrido adiciona -1 no blockCount.
Quando receber um ataque, se o blockCount não for maior que 0 então não utiliza a defesa.

Caraca, eu estava suspeitando mas não tinha entendido isso. Muito obrigado.

Só uma coisa: eu achei o código desse pequeno sistema lógico que você descreveu para estabelecer se o player tem defesa ou não, mas onde eu encontro que o ataque sofrido soma -1 no blockCount?

 

Obs:

Para quem quiser achar, o trecho de código é esse em creature.cpp

Spoiler

if(blockTicks >= 1000)
	{
		blockCount = std::min((uint32_t)blockCount + 1, (uint32_t)2);
		blockTicks = 0;
	}

 

E depois:

Spoiler

bool hasDefense = false;
		if(blockCount > 0)
		{
			--blockCount;
			hasDefense = true;
		}

 

 

Link para o post
Compartilhar em outros sites

--blockCount é a mesma coisa que blockCount = blockCount - 1, então toda vez que executar isso (que é quando sofre o ataque) ele vai subtrair 1 do blockCount.

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo