101Level - Foro

[FAQ] Edición de estados alterados

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Leeg

  • *
  • *
  • 3.322
  • 59
  • Actividad:
    0%
  • Sexo: Masculino
[FAQ] Edición de estados alterados
« en: 10 de Julio de 2012, 22:18 »
[FAQ] Edición de estados alterados
Realizada por: Leeg

Descripción: Con esta guía aprenderemos a modificar algunas características principales de los estados alterados del mundo de Ragnarök Online.


::Herramientas necesarias::


::FAQ::

A.- Estructura y organización

Para realizar los siguienes cambios vamos a trabajar en el siguiente archivo:

src\map\status.c

Al tratarse de un archivo que contiene código fuente del emulador, para que los cambios surtan efecto, tendremos que recompilar nuestro emulador al finalizar nuestras ediciones.

Los nombres de los estados alterados están compuestos por siglas o trozos de palabras de sus respectivos nombres, por lo tanto para saber qué queremos editar primero debemos buscarlo. En la línea 194 del archivo "status.c" se empiezan a definir estos estados alterados. En las líneas 520-710 se encuentran los estados alterados de Renewal (3eras profesiones).

Un ejemplo del código:

Código: C
  1. set_sc( NPC_PETRIFYATTACK , SC_STONE     , SI_BLANK    , SCB_DEF_ELE|SCB_DEF|SCB_MDEF );
  2. add_sc( SM_BASH              , SC_STUN            );

Nos interesan los 2 primeros parámetros:

En el primero se nos indica el oficio y la habilidad que puede realizar ese cambio de estado. En el primer ejemplo sería "NPC", puesto que son cambios de estado asociados a habilidades de monstruos o "NPC" (usados mediante scripts). Sin embargo, en el segundo ejemplo "SM_BASH" indica que la habilidad que provoca "SC_STUN" es del oficio SwordMan.
 
En el segundo parámetro se nos indican los estados alterados que provocan dichas habilidades, "SC" en los nombres de los estados alterados como por ejemplo "SC_STONE" significa "Status Change" (cambio de estado).


B.- Efecto de permanencia tras morir

Algunos estados alterados desaparecen cuando el personaje cae en combate, pero otros no, persisten tras la muerte. Por ejemplo, Blessing (SC_BLESSING) desaparece cuando muere el jugador, pero Enchant Deadly Poison (SC_EDP) permanece tras la muerte, hasta que se consuma el efecto por culpa del tiempo.

Esta característica se puede modificar fácilmente de la siguiente manera:

1.- Busca la siguiente línea de código:
Código: C
  1. //Type 0: PC killed -> Place here statuses that do not dispel on death.

2.- En la lista inferior, añade o elimina los efectos que desees que permanezcan o no al morir. La lista define aquellos efectos que SÍ continúan haciendo efecto tras la muerte. Para añadir uno simplemente debes escribir lo siguiente antes del "continue;"
Código: C
  1. case SC_NombreDelEstado:


C.- Resistencia a estados alterados

No todos los estados alterados afectan siempre a un jugador, algunos pueden evadirse dependiendo de los atributos de tus personajes. Obviamente, esto también es configurable en "status.c". En la línea 5792 lo encontrarás.

Por ejemplo:
Código: C
  1.         case SC_SLEEP:
  2.                 sc_def = 3 +status->int_;
  3.                 break;

En este ejemplo "sc_def" define la fórmula de defensa contra "SC_SLEEP" (sueño). La fórmula consiste en "3 + cantidad de INT de tu personaje". Si queremos modificar el atributo de estado que defiende contra este estado alterado debemos reemplazar "int_" por otro estado alterado. Si modificamos la cifra "3", alteraremos el cálculo y haremos más o menos fácil que un estado alterado afecte a un personaje.

Debemos tener cuidado con algunos estados alterados que comparten fórmula de defensa, puesto que si modificamos esa fórmula podemos alterar la defensa contra varios estados alterados a la vez, dando un resultado indeseado.

Por ejemplo:
Código: C
  1.         case SC_DPOISON:
  2.         case SC_SILENCE:
  3.         case SC_BLEEDING:
  4.                 sc_def = 3 +status->vit;
  5.                 break;

En este caso, si modificamos la fórmula del "sc_def", estaremos alterando la defensa contra "DPOISON", "SILENCE", y "BLEEDING". Si queremos modificar solo uno de ellos debemos aislar uno de esos "case".
« última modificación: 23 de Noviembre de 2012, 14:44 por Leeg »
~Persona3~


 

[FAQ] Edición del refinamiento de equipo

Iniciado por Leeg

Respuestas: 0
Vistas: 1381
Último mensaje 14 de Julio de 2012, 20:03
por Leeg