mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2025-12-20 05:20:22 -07:00
Fixed value parsing from item definitions
This commit is contained in:
parent
30f43e1a18
commit
39cf1f60ca
5 changed files with 14694 additions and 33 deletions
|
|
@ -81,7 +81,7 @@ public class ItemDefinition extends Definition<Item> {
|
|||
/**
|
||||
* The item value.
|
||||
*/
|
||||
private int value;
|
||||
private int value = 1;
|
||||
|
||||
/**
|
||||
* If item is members only.
|
||||
|
|
@ -358,14 +358,9 @@ public class ItemDefinition extends Definition<Item> {
|
|||
} else if (opcode == 11) {
|
||||
def.stackable = true;
|
||||
} else if (opcode == 12) {
|
||||
def.value = buffer.getInt();
|
||||
if (def.value == 0) {
|
||||
def.value = 1;
|
||||
}
|
||||
def.value = ((buffer.get() & 0xFF) << 24) + ((buffer.get() & 0xFF) << 16) + ((buffer.get() & 0xFF) << 8) + (buffer.get() & 0xFF);
|
||||
} else if (opcode == 16) {
|
||||
def.membersOnly = true;
|
||||
} else if (opcode == 18) {
|
||||
buffer.getShort();
|
||||
} else if (opcode == 23) {
|
||||
def.maleWornModelId1 = buffer.getShort() & 0xFFFF;
|
||||
// buffer.get();
|
||||
|
|
@ -446,15 +441,6 @@ public class ItemDefinition extends Definition<Item> {
|
|||
def.lendId = buffer.getShort() & 0xFFFF;
|
||||
} else if (opcode == 122) {
|
||||
def.lendTemplateId = buffer.getShort() & 0xFFFF;
|
||||
} else if (opcode == 124) {
|
||||
if (def.unknownArray3 == null) {
|
||||
def.unknownArray3 = new int[11][];
|
||||
}
|
||||
int slot = buffer.get();
|
||||
def.unknownArray3[slot] = new int[6];
|
||||
for (int i = 0; i < 6; i++) {
|
||||
def.unknownArray3[slot][i] = buffer.getShort();
|
||||
}
|
||||
} else if (opcode == 125) {
|
||||
buffer.get();
|
||||
buffer.get();
|
||||
|
|
@ -475,18 +461,6 @@ public class ItemDefinition extends Definition<Item> {
|
|||
} else if (opcode == 130) {
|
||||
buffer.get();
|
||||
buffer.getShort();
|
||||
} else if (opcode == 132) {
|
||||
int length = buffer.get() & 0xFF;
|
||||
def.unknownArray2 = new int[length];
|
||||
for (int index = 0; index < length; index++) {
|
||||
def.unknownArray2[index] = buffer.getShort() & 0xFFFF;
|
||||
}
|
||||
} else if (opcode == 134) {
|
||||
buffer.get();
|
||||
} else if (opcode == 139) {
|
||||
def.recolourId = buffer.getShort() & 0xFFFF;
|
||||
} else if (opcode == 140) {
|
||||
def.recolourTemplateId = buffer.getShort() & 0xFFFF;
|
||||
} else if (opcode == 249) {
|
||||
int length = buffer.get() & 0xFF;
|
||||
if (def.clientScriptData == null) {
|
||||
|
|
@ -923,9 +897,6 @@ public class ItemDefinition extends Definition<Item> {
|
|||
* @return The value.
|
||||
*/
|
||||
public int getValue() {
|
||||
if (value == 0) {
|
||||
return 1;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -233,7 +233,6 @@ class ItemConfigParser {
|
|||
when (it.key.toString()) {
|
||||
//Special cases
|
||||
"defence_anim" -> configs.put(it.key.toString(), Animation(it.value.toString().toInt(), Animator.Priority.HIGH))
|
||||
"shop_price" -> {def.value = (it.value.toString().toInt()); configs.put(it.key.toString(),it.value.toString().toInt())}
|
||||
"requirements" -> { configs.put(it.key.toString(),requirements)
|
||||
it.value.toString()
|
||||
.split("-")
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ import rs09.game.system.config.ServerConfigParser
|
|||
import rs09.game.world.GameWorld
|
||||
import rs09.game.world.repository.Repository
|
||||
import rs09.game.world.update.UpdateSequence
|
||||
import java.io.File
|
||||
import java.net.URI
|
||||
import java.nio.ByteBuffer
|
||||
|
||||
object TestUtils {
|
||||
|
|
@ -60,6 +62,10 @@ object TestUtils {
|
|||
}
|
||||
}
|
||||
|
||||
fun loadFile(path: String) : URI? {
|
||||
return this::class.java.getResource(path)?.toURI()
|
||||
}
|
||||
|
||||
fun advanceTicks(amount: Int, skipPulseUpdates: Boolean = true) {
|
||||
SystemLogger.logInfo(this::class.java, "Advancing ticks by $amount.")
|
||||
for(i in 0 until amount) {
|
||||
|
|
|
|||
27
Server/src/test/kotlin/core/cache/ItemDefTests.kt
vendored
Normal file
27
Server/src/test/kotlin/core/cache/ItemDefTests.kt
vendored
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
package core.cache
|
||||
|
||||
import TestUtils
|
||||
import api.itemDefinition
|
||||
import org.junit.jupiter.api.Assertions
|
||||
import org.junit.jupiter.api.Test
|
||||
import java.io.File
|
||||
|
||||
class ItemDefTests {
|
||||
val knownGood = HashMap<Int,Int>()
|
||||
init {
|
||||
TestUtils.preTestSetup()
|
||||
}
|
||||
|
||||
@Test fun itemDefsShouldHaveExpectedValues() {
|
||||
File(TestUtils.loadFile("530_cache_item_values_from_client.csv")).useLines { lines ->
|
||||
lines.forEach {
|
||||
val toks = it.split(",")
|
||||
knownGood[toks[0].toIntOrNull() ?: return@forEach] = toks[toks.size - 1].toInt()
|
||||
}
|
||||
}
|
||||
for ((id, expectedValue) in knownGood) {
|
||||
val def = itemDefinition(id)
|
||||
Assertions.assertEquals(expectedValue, def.value, "Value of ${def.name} (${def.isUnnoted}) does not match known good values!")
|
||||
}
|
||||
}
|
||||
}
|
||||
14658
Server/src/test/resources/530_cache_item_values_from_client.csv
Normal file
14658
Server/src/test/resources/530_cache_item_values_from_client.csv
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue