RuneHive-Game
Loading...
Searching...
No Matches
MonsterDefLoader.kt
Go to the documentation of this file.
1package org.jire.runehiveps.defs
2
3import com.google.gson.Gson
4import com.google.gson.GsonBuilder
5import com.runehive.game.world.entity.mob.npc.definition.NpcDefinition
6import com.runehive.game.world.entity.skill.Skill
7import it.unimi.dsi.fastutil.ints.Int2ObjectMap
8import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap
9import java.io.File
10
11/**
12 * @author Jire
13 */
14object MonsterDefLoader {
15
16 @JvmField
17 val map: Int2ObjectMap<MonsterDef> = Int2ObjectOpenHashMap()
18
19 @JvmStatic
20 @JvmOverloads
21 fun load(
22 gson: Gson = GsonBuilder()
23 .setPrettyPrinting()
24 .create()
25 ) {
26 for (file in File("data/def/monsters-json/").listFiles()!!) {
27 if (file.extension != "json") continue
28 val id = file.nameWithoutExtension.toIntOrNull() ?: continue
29 val monsterDef = gson.fromJson(file.bufferedReader(), MonsterDef::class.java)
30 map.put(id, monsterDef)
31 //println(monsterDef)
32
33 NpcDefinition.DEFINITIONS[id]?.run {
34 combatLevel = monsterDef.combatLevel
35
36 skills[Skill.HITPOINTS] = monsterDef.hitpoints
37 skills[Skill.ATTACK] = monsterDef.attackLevel
38 skills[Skill.STRENGTH] = monsterDef.strengthLevel
39 skills[Skill.DEFENCE] = monsterDef.defenceLevel
40 skills[Skill.MAGIC] = monsterDef.magicLevel
41 skills[Skill.RANGED] = monsterDef.rangedLevel
42
43 attackDelay = monsterDef.attackSpeed
44 isAggressive = monsterDef.aggressive
45 isPoisonImmunity = monsterDef.immunePoison
46 isVenomImmunity = monsterDef.immuneVenom
47
48 bonuses = intArrayOf(
49 0, 0, 0, 0, 0,
50
51 monsterDef.defenceStab,
52 monsterDef.defenceSlash,
53 monsterDef.defenceCrush,
54 monsterDef.defenceMagic,
55 monsterDef.defenceRanged,
56
57 monsterDef.strengthBonus,
58 monsterDef.rangedBonus,
59 monsterDef.magicBonus,
60
61 0
62 )
63 }
64 }
65 }
66
67 @JvmStatic
68 fun main(args: Array<String>) = load()
69
70}