Skip to content

Commit e13df90

Browse files
committed
add parsing of healed by damage for creatures (#182)
1 parent bb2334d commit e13df90

File tree

3 files changed

+851
-1
lines changed

3 files changed

+851
-1
lines changed

src/TibiaCreaturesCreatureV3.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ type Creature struct {
1919
ImmuneTo []string `json:"immune"`
2020
StrongAgainst []string `json:"strong"`
2121
WeaknessAgainst []string `json:"weakness"`
22+
HealedBy []string `json:"healed"`
2223
BeParalysed bool `json:"be_paralysed"`
2324
BeSummoned bool `json:"be_summoned"`
2425
SummonMana int `json:"summoned_mana"`
@@ -43,6 +44,7 @@ var (
4344
CreatureImmuneRegex = regexp.MustCompile(`.*are immune to (.*)`)
4445
CreatureStrongRegex = regexp.MustCompile(`.*are strong against (.*)`)
4546
CreatureWeakRegex = regexp.MustCompile(`.*are weak against (.*)`)
47+
CreatureHealedRegex = regexp.MustCompile(`.*are healed when (.*) damage is used.*`)
4648
CreatureManaRequiredRegex = regexp.MustCompile(`.*It takes (.*) mana to (.*)`)
4749
CreatureLootRegex = regexp.MustCompile(`.*yield (.*) experience.*carry (.*)with them.`)
4850
)
@@ -69,7 +71,7 @@ func TibiaCreaturesCreatureV3Impl(race string, BoxContentHTML string) CreatureRe
6971
// Preparing vars
7072
var (
7173
CreatureName, CreatureImageURL, CreatureDescription, CreatureBehaviour string
72-
CreatureLootList, CreatureImmuneTo, CreatureStrongAgainst, CreatureWeaknessAgainst []string
74+
CreatureLootList, CreatureImmuneTo, CreatureStrongAgainst, CreatureWeaknessAgainst, CreatureHealedBy []string
7375
CreatureHitpoints, CreatureSummonedMana, CreatureConvincedMana, CreatureExperiencePoints int
7476
CreatureBeParalysed, CreatureBeSummoned, CreatureBeConvinced, CreatureSeeInvisible, CreatureIsLootable, CreatureIsBoosted bool
7577
)
@@ -119,6 +121,11 @@ func TibiaCreaturesCreatureV3Impl(race string, BoxContentHTML string) CreatureRe
119121
CreatureWeaknessAgainstTmp := strings.Split(subma23[0][1], localDamageString)
120122
CreatureWeaknessAgainst = strings.Split(strings.Replace(CreatureWeaknessAgainstTmp[0], " and ", ", ", 1), ", ")
121123
}
124+
if strings.Contains(subma1[0][4], " are healed when ") {
125+
subma23 := CreatureHealedRegex.FindAllStringSubmatch(subma1[0][4], -1)
126+
CreatureHealedByTmp := strings.Split(subma23[0][1], localDamageString)
127+
CreatureHealedBy = strings.Split(strings.Replace(CreatureHealedByTmp[0], " and ", ", ", 1), ", ")
128+
}
122129
if strings.Contains(subma1[0][4], "It takes ") && strings.Contains(subma1[0][4], " mana to ") {
123130
subma24 := CreatureManaRequiredRegex.FindAllStringSubmatch(subma1[0][4], -1)
124131
subma2402 := subma24[0][2]
@@ -164,6 +171,7 @@ func TibiaCreaturesCreatureV3Impl(race string, BoxContentHTML string) CreatureRe
164171
ImmuneTo: CreatureImmuneTo,
165172
StrongAgainst: CreatureStrongAgainst,
166173
WeaknessAgainst: CreatureWeaknessAgainst,
174+
HealedBy: CreatureHealedBy,
167175
BeParalysed: CreatureBeParalysed,
168176
BeSummoned: CreatureBeSummoned,
169177
SummonMana: CreatureSummonedMana,

src/TibiaCreaturesCreatureV3_test.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ func TestDemon(t *testing.T) {
3737
assert.Equal("holy", demonJson.Creature.WeaknessAgainst[0])
3838
assert.Equal("ice", demonJson.Creature.WeaknessAgainst[1])
3939

40+
assert.Empty(demonJson.Creature.HealedBy)
4041
assert.False(demonJson.Creature.BeParalysed)
4142
assert.False(demonJson.Creature.BeSummoned)
4243
assert.Equal(0, demonJson.Creature.SummonMana)
@@ -152,3 +153,19 @@ func TestSkunk(t *testing.T) {
152153
assert.True(skunkJson.Creature.BeConvinced)
153154
assert.Equal(200, skunkJson.Creature.ConvincedMana)
154155
}
156+
157+
func TestLavaLurkers(t *testing.T) {
158+
file, err := os.ReadFile("../testdata/creatures/creature/lava lurkers.html")
159+
if err != nil {
160+
t.Errorf("File reading error: %s", err)
161+
return
162+
}
163+
lavalurkersJson := TibiaCreaturesCreatureV3Impl("Lava Lurkers", string(file))
164+
assert := assert.New(t)
165+
166+
assert.Equal("Lava Lurkers", lavalurkersJson.Creature.Name)
167+
assert.Equal("Lava Lurkers", lavalurkersJson.Creature.Race)
168+
169+
assert.Equal(1, len(lavalurkersJson.Creature.HealedBy))
170+
assert.Equal("fire", lavalurkersJson.Creature.HealedBy[0])
171+
}

0 commit comments

Comments
 (0)