ItemStatCost.txt
Columna | Descripción | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
code | Identificador al que se hace referencia desde otros ficheros. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Stat | Es un identificador que se usa como referencia en otros ficheros como por ejemplo Properties.txt, Skills.txt, States.txt e incluso dentro de este mismo fichero ItemStatCost.txt. Este campo debe ser único. | Id | Este campo solo sirve de referencia, es como un comentario. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Send Other | Un booleano que controla cuando se envia el valor de la estadistica a otros jugadores. Esto es solo semifuncional porque la mayor parte de esta funcionalidad esta escrita a fuego para estadisticas concretas solo. Si vas a modificar este fichero, establece un valor para las estadisticas que están siendo enviadas en el juego original porque el juego necesita actualizar esos valores para funcionar adecuadamente. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Signed | Un booleano que controla cuando las estadisticas son positivas o negativas o solo positivas (signed o unsigned, como los integer de C). Parece ser que por la forma en la que se transmite la información por la red esto puede ser importante para hacer la conversión en el otro lado. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Send Bits | La cantidad de bits que el juego intentara meter en cada paquete que actualiza la estadistica para el valor de la estadistica si la estadistica se envia a los clientes. Igual que el anterior, no se usa en la mayoria de las estadisticas porque la mayoría están escritas a fuego en el código. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Send Param | Lo mismmo que el anterior pero para el parametro de la estadística. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
UpdateAnimRate | Es un booleano que esta relacionado con la velocidad a la que se realizan ciertas acciones. También en este caso hay muchas cosas escritas a fuego en el código del juego. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Saved | Este booleano controla si se guarda el valor de la estadística en el fichero *.d2s de cada personaje despues de abandonar una partida. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CSvSigned | Si la columna anterior tiene un 1, este booleano controla si la estadística se guarda como signed o unsigned. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CSvBits | Establece cuantos bits se van a usar como máximo para guardar la estadística en el fichero .d2s. Solo se usa si Saved contiene 1. Para unsigned se pueden usar hasta 32 bits para signed hasta 31. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CSvParam | Lo mismo que la columna anterior pero para los parámetros. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fCallback | Es un booleano que controla cuando se llama la función de callback de asignación de stat si el valor de una stat cambia. Se usa al poner o quitar objetos, al usar habilidades, cuando afectan auras, estados y cualquier otra cosa que afecte a los personajes o monstruos. Al crear nuevos efectos especiales hay que cambiar esta función de callback. Aunque va a funcionar bien para nuevas stats que lancen el evento en objetos. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fMin | Este booleano controla cuando el juego intentar guardar el stat en un rango llamando a una función especial (por ejemplo cuando las stats se modifican con un aura), esto previene que las stats como la fuerza, la destreza, la energía o la vitalidad se modifiquen de manera que queden con un valor inferior a cero. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MinAccr | Este campo (que es un DWORD) controla el valor minimo a la que la stat se limita, lo que parece es que trabaja mano a mano con FMin, sin embargo, cuando el autor original de esta guía vió el código accediendo al flag "inline" no ha visto que se use esta columna, sino que se usaba un valor a fuego en el código. (Quiero recordar en este punto, que esta guía no es original, sino una traducción de la que hay en The Phrozen Keep, yo solo pretendo compartir el conocimiento para aquellos que no saben inglés). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Encode | Este campo le dice al juego, cada vez que una stat se va a codificar cuando se guarda para ahorrar espacio. Se usa para stats complejas con más de un parámetro, como por ejemplo: "Posibilidad de lanzar al golpear", que tiene que guardar la probabilidad de lanzar el evento, el nivel de la habilidad, el tipo de evento, etc. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Add | Este campo sirve para modificar el precio del objeto, sumandole al coste base esta cantidad. Algunos tipos de armaduras tiene estos valores fijados en el código a fuego. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Multiply | Este campo sirve para modificar el precio del objeto, multiplicando el coste base por esta cantidad. Algunos tipos de armaduras tiene estos valores fijados en el código a fuego. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Divide | Este campo ya no se usa en el código. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ValShift | Este campo le dice al juego como el stat se va a leer y escribir en los objetos. Sirve para optimizar el espacio del fichero .d2s. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1.09-Save Bits 1.09-Save Add |
Estos campos solo aplican para objetos importados de versiones entre la 1.07 y la 1.09, y reemplazan a los campos Save Bits y Save Add para poder converir los objetos del viejo formato al nuevo. No se usan en personajes a partir de la 1.10. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Save Bits Save Add |
Este campos controlan cuantos bits de datos se usan en el fichero .d2s para guardar los objetos, aunque no tienen casi aplicación en tiempo real. La única aplicación que tienen es cuando un objeto se comprime o descomprime, lo que sucede cada vez que coges un objeto o haces algo con el. Save Bits controla cuantos bits se usan para guardar el valor de una stat, el valor maximo real de cualquier stat por tanto es 2^Save Bits - 1. Save Add controla el valor mínimo que puede tener mediante la siguiente fórmula: 2^SaveBits + 1 - SaveAdd |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Save Param Bits | Este campo controla cuantos bits de datos se usan para guardar los parametro de esta stat cuando se guardan los objetos lo mismo se aplica aquí, en la columna anterior y en CSVParam. Save Add no afecta al valor máximo o mínimo del parametro de la stat, no obstante, lo mejor ese establecer este campo a 17 para todas las stats que usen cualquier forma de Identificados para sus parámetros, porque la mayor parte de los rangos estan capados a 65535 y esos parametros siempre son signed, a menos que se guarden en 32 bits lo que te permitirá usar todos los Ids sin miedo a glitches o bugs. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
KeepZero |
Este booleano supuestamente controla que una stat no sea negativa, probablemente se usa de alguna manera en la implementación de fMin y tiene pinta de que sus efectos son solo del lado cliente. Como todos sabemos, el mana y la resistencia (stamina) pueden volver a cero cuando superan su máximo. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Op Op Param Op Base Op Stat1 Op Stat2 Op Stat3 |
Estos campos controlan formas especiales de asignar stats. Por ejemplo, stats que dependen del cLvl. Hay un total de 13 fórmulas para el campo Op pero no todas se usan en el juego. Dejando este campo vacio o estableciendolo a 0 se usará el op por defecto, que aplica la stat en unidades directamente. Más abajo hay una tabla donde se explica que es lo que hace cada Op. Opstat se refiere al conjunto de stats que se encuentran en las columnas Op Stat1 a Op Stat3, statvalue se refiere al valor de la propia stat, basevalue se refere al conjunto de stats definido en la columna Op Base y param se refiere al conjunto de valores definidos en la columna Op Param.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Direct | Este boolean controla si se ha llegado a un máximo que no se puede superar para esta stat. Cuando se haya llegado al máximo dejará de incrementarse. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MaxStat | El número máximo asociado a esta stat. Este campo solo tiene efecto si Direct es verdadero. Los incrementos basados en porcentaje normalmente alteran esta stat también pero algunos aspectos se definen en el código. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ItemSpecific |
Este booleano controla cada vez que es especifica para un objeto, esto significa, si engarzas una joya que agrega durabulidad a algo, la durabulidad de ambos objetos no se suman cuando se devuelve una llamada general a GetStat. Debería prevenir que la Stat se agregue continuamente al total. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DamageRelated |
Este Booleano controla que no se cuente dos veces las stats de un arma, una vez cuando se equipa y otra vez cuando se ataca. El juego copia las stats de un arma en una lista temporal cada vez que se ataca. Esto afecta a los barbaros que van con dos armas por ejemplo. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ItemEvent1 ItemEvent2 |
El evento correspondiente a la función del campo correspondiente. Ten en cuenta que no todos los eventos funcionan con todas las funciones, y que algunas funciones no se pueden usar como evento de un objeto. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ItemEventFunc1 ItemEventFunc2 |
La función asociada al evento correspondiente al evento definido en la columna ItemEventX. Aquí una referencia de los eventos y que hacen
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DescPriority |
Cuanto mas alto sea este valor más abajo se encontrará esta stat en la lista de modificadores de un objeto. Si mas de una stat comparte la misma prioridad, se listaran en el orden en el que esté definido en este fichero. El rango de valores valido es de 0 a 255. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DescFunc |
Esta funcion se usa para generar la descripción de la stat, esto funciona similar a como lo hacen las descfuncs de SkillDesc.txt. En la siguiente tabla se puede ver como sería si DescVal fuera igual a 1.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DescVal |
Controla como se muestra el valor del stat.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DescStrPos |
El string que se usa en la descripción cuando el stat es positivo. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DescStrNeg |
El string que se usa en la descripción cuando el stat es negativo. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DescStr2 |
Un string adicional se usa para algunas DescFuncs, normalmente usadas como un sufijo o para dar información adicional (por ejemplo: "por nivel del personaje") |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dGrp |
Cuando todas las stats del grupo están presentes en el mismo objeto y tienen todas el mismo valor, se reemplaza su descripción por la asociada a la descripción del grupo. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dGrpFunc | Igual que DescFunc pero para los grupos de stats. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dGrpVal | Igual que DescVal pero para los grupos de stats. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dGrpStrPos | Igual que DescStrPos pero para los grupos de stats. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dGrpStrNeg | Igual que DescStrNeg pero para los grupos de stats. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dGrpStr2 | Igual que DescStr2 pero para los grupos de stats. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Stuff |
Mantente lejos de esta columna a menos que sepas muy bien lo que haces y/o trabajes para Blizzard. Esta columna se usa durante la creación del fichero binario para generar una cache, regulando el op-stat y otras cosas, cambiar esto puede ser inútil, funciona como la columna constants de MonUMod.txt y no tiene otra relación con ItemStatCost.txt. El primer stat de este fichro simplemente debe tener esto asignado o sino se rompe todo lo relacionado con op. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Explicaciones extra
La fórmula aplicada para calcular el coste de un objeto es como sigue:
cost * (1 + value * multiply / 1024)) + add (...)