Ir para conteúdo

[TFS 1.2] Criando novos CombatTypes


Posts Recomendados

Bom dia galera, tudo bem?

 

Hoje vou ensinar uma coisinha simples, porém bem útil: criar um novo tipo de combate.

 

Tipos de combate representam o tipo do dano que você está causando naquele momento. Basicamente, eles são os responsáveis pelo efeito básico daquele tipo de combate (além do efeito e o efeito de distância que você pode adicionar) e também pela cor do texto de dano.

 

Bom, vamos lá.

 

1. Criação do novo tipo no Enum

O primeiro passo para a criação do novo tipo de combate é adicionar o referencial ao seu combate novo no enumerador (enum) de tipos de combate (CombatType_t). Para isso, vá até o arquivo de cabeçalho enums.h, procure por "enum CombatType_t" e, após o último enum, coloque o nome que quer dar ao seu tipo de combate. Eu escolhi chamar o meu de COMBAT_CRITICAL, para fazer um dano diferente quando o acerto for crítico. Ficou assim:

enum CombatType_t {	COMBAT_NONE = 0,	COMBAT_PHYSICALDAMAGE = 1 << 0,	COMBAT_ENERGYDAMAGE = 1 << 1,	COMBAT_EARTHDAMAGE = 1 << 2,	COMBAT_FIREDAMAGE = 1 << 3,	COMBAT_UNDEFINEDDAMAGE = 1 << 4,	COMBAT_LIFEDRAIN = 1 << 5,	COMBAT_MANADRAIN = 1 << 6,	COMBAT_HEALING = 1 << 7,	COMBAT_DROWNDAMAGE = 1 << 8,	COMBAT_ICEDAMAGE = 1 << 9,	COMBAT_HOLYDAMAGE = 1 << 10,	COMBAT_DEATHDAMAGE = 1 << 11,	COMBAT_CRITICAL = 1 << 12,	COMBAT_COUNT = 13};

 

2. Adicionar "referências"

Esse passo consiste em criar facilidades para acessar seu tipo de combate em alguns casos. Para isso, vamos até tools.cpp e vamos alterar o vetor combatTypeNames (que cria uma string que referencia o nosso combate) e a função combatTypeToIndex (indexa os combates), adicionando o nosso novo combate ao final de cada um deles de forma coerente. O meu ficou assim:

CombatTypeNames combatTypeNames[] = {	{"physical",		COMBAT_PHYSICALDAMAGE},	{"energy",		COMBAT_ENERGYDAMAGE},	{"earth",		COMBAT_EARTHDAMAGE},	{"fire",		COMBAT_FIREDAMAGE},	{"undefined",		COMBAT_UNDEFINEDDAMAGE},	{"lifedrain",		COMBAT_LIFEDRAIN},	{"manadrain",		COMBAT_MANADRAIN},	{"healing",		COMBAT_HEALING},	{"drown",		COMBAT_DROWNDAMAGE},	{"ice",			COMBAT_ICEDAMAGE},	{"holy",		COMBAT_HOLYDAMAGE},	{"death",		COMBAT_DEATHDAMAGE},	{ "critical",		COMBAT_CRITICAL },};
size_t combatTypeToIndex(CombatType_t combatType){	switch (combatType) {		case COMBAT_PHYSICALDAMAGE:			return 0;		case COMBAT_ENERGYDAMAGE:			return 1;		case COMBAT_EARTHDAMAGE:			return 2;		case COMBAT_FIREDAMAGE:			return 3;		case COMBAT_UNDEFINEDDAMAGE:			return 4;		case COMBAT_LIFEDRAIN:			return 5;		case COMBAT_MANADRAIN:			return 6;		case COMBAT_HEALING:			return 7;		case COMBAT_DROWNDAMAGE:			return 8;		case COMBAT_ICEDAMAGE:			return 9;		case COMBAT_HOLYDAMAGE:			return 10;		case COMBAT_DEATHDAMAGE:			return 11;		case COMBAT_CRITICAL:			return 12;		default:			return 0;	}}

 

3. Definir o efeito e o dano do nosso combate

Agora devemos definir como o nosso combate vai se comportar dizendo a cor do dano gerado e qual efeito associado a ele. Para isso, vamos até a função combatGetTypeInfo dentro de game.cpp. Dentro de switch (combatType), após o último combate e antes do default, vamos adicionar as características do nosso combate. O meu ficou assim:

case COMBAT_CRITICAL: {	color = TEXTCOLOR_MAYABLUE;	effect = CONST_ME_NONE;	break;}

Isto é, meu tipo de combate crítico tem a cor azul maia e nenhum efeito.

 

4. Informar ao LUA seu novo tipo de combate

O último passo é simplesmente enviar para o lua o novo tipo de combate.

Para isso, vá até luascript.cpp e, logo abaixo de:

registerEnum(COMBAT_DEATHDAMAGE)

adicione:

registerEnum(COMBAT_CRITICAL)

 

Pronto, após seguir esses passos o seu novo tipo combate foi criado, referenciado, caracterizado e definido em lua.

Para utilizá-lo basta chamá-lo no lugar certo COMBAT_CRITICAL.

 

ogPduE3.png

 

Bom, por hoje é só pessoal, espero que gostem.
Abraços

Link para o comentário
Compartilhar em outros sites

3 hours ago, Daniel said:

É muito interessante ter alguém disponibilizando materiais desse tipo, são modificações ao meu ver complicadas de fazer. Parabéns @Skulls

Nem tanto, porém, bastante úteis!

Obrigado @Daniel.

 

Abraços!

Link para o comentário
Compartilhar em outros sites

  • 3 years later...
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...