Skip to content

Commit 4c9ab67

Browse files
committed
Fixed deaths by summon having incorrect names
1 parent 1cb37e2 commit 4c9ab67

File tree

4 files changed

+19
-1
lines changed

4 files changed

+19
-1
lines changed

tests/resources/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ deaths by summons, players, assisted deaths, etcetera.
1414
- [tibiadata_not_found.json](character/tibiadata_not_found.json) - The response of a character not found on TibiaData.
1515
- [tibiadata_unhidden.json](character/tibiadata_unhidden.json) - A character with visible account information and
1616
other characters on TibiaData.
17+
- [tibiadata_deaths_summon.json](character/tibiadata_deaths_summon.json) - A character with deaths by summons on
18+
TibiaData.
1719

1820
## Guild resources
1921
- [tibiacom_full.txt](guild/tibiacom_full.txt) - The content of a guild's page.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"characters":{"data":{"name":"Toderigus Nohuhuja","sex":"male","vocation":"Sorcerer","level":95,"achievement_points":31,"world":"Antica","residence":"Thais","last_login":[{"date":"2019-01-29 21:01:29.000000","timezone_type":2,"timezone":"CET"}],"comment":"Dec 23 2007, 23:03:11 CET\tDied at Level 60 by a dragon\r\nTo tylko gra ,ten kto nie pada nie doswiadcza gry!","account_status":"Free Account","status":"offline"},"achievements":[],"deaths":[{"date":{"date":"2019-01-15 23:59:02.000000","timezone_type":2,"timezone":"CET"},"level":95,"reason":"Killed by Chaos Morph and Izem Red","involved":[{"name":"Chaos Morph"},{"name":"Izem Red"}]},{"date":{"date":"2019-01-13 14:04:28.000000","timezone_type":2,"timezone":"CET"},"level":95,"reason":"Killed by Oden and Chaos Morph","involved":[{"name":"Oden"},{"name":"Chaos Morph"}]},{"date":{"date":"2019-01-12 11:50:23.000000","timezone_type":2,"timezone":"CET"},"level":96,"reason":"Killed by Toderigus Nohuhuja, Gzuz Grigori and a fire elemental of Hasi Pupsi","involved":[{"name":"Toderigus Nohuhuja"},{"name":"Gzuz Grigori"},{"name":"Hasi Pupsi"}]},{"date":{"date":"2019-01-12 11:47:11.000000","timezone_type":2,"timezone":"CET"},"level":96,"reason":"Killed by Toderigus Nohuhuja, Bombi Sork and Hasi Pupsi","involved":[{"name":"Toderigus Nohuhuja"},{"name":"Bombi Sork"},{"name":"Hasi Pupsi"}]},{"date":{"date":"2019-01-12 01:29:38.000000","timezone_type":2,"timezone":"CET"},"level":96,"reason":"Killed by Skeltah and Struve","involved":[{"name":"Skeltah"},{"name":"Struve"}]},{"date":{"date":"2019-01-10 23:40:28.000000","timezone_type":2,"timezone":"CET"},"level":97,"reason":"Killed by Toderigus Nohuhuja and Incredible Rakev","involved":[{"name":"Toderigus Nohuhuja"},{"name":"Incredible Rakev"}]},{"date":{"date":"2019-01-08 18:54:08.000000","timezone_type":2,"timezone":"CET"},"level":97,"reason":"Killed by Muheed, Kavina, Super Capek and Marr Cinn","involved":[{"name":"Muheed"},{"name":"Kavina"},{"name":"Super Capek"},{"name":"Marr Cinn"}]},{"date":{"date":"2019-01-08 18:25:11.000000","timezone_type":2,"timezone":"CET"},"level":97,"reason":"Slain by Toderigus Nohuhuja, Max Zane, Kavina, Zitronenquark, Nabij Bonio Przyjacielu and Pewuer","involved":[{"name":"Toderigus Nohuhuja"},{"name":"Max Zane"},{"name":"Kavina"},{"name":"Zitronenquark"},{"name":"Nabij Bonio Przyjacielu"},{"name":"Pewuer"}]},{"date":{"date":"2019-01-06 13:18:56.000000","timezone_type":2,"timezone":"CET"},"level":97,"reason":"Killed by Mood Rakin, Immortal Konrad, Nabij Bonio Przyjacielu and Magik Wojciech","involved":[{"name":"Mood Rakin"},{"name":"Immortal Konrad"},{"name":"Nabij Bonio Przyjacielu"},{"name":"Magik Wojciech"}]},{"date":{"date":"2019-01-06 13:11:57.000000","timezone_type":2,"timezone":"CET"},"level":98,"reason":"Killed by Toderigus Nohuhuja, Milo Bomaye and Avariuzz","involved":[{"name":"Toderigus Nohuhuja"},{"name":"Milo Bomaye"},{"name":"Avariuzz"}]}],"account_information":{"loyalty_title":"Warden of Tibia","created":{"date":"2005-04-20 15:51:40.000000","timezone_type":2,"timezone":"CEST"}},"other_characters":[{"name":"Lady Sugiredot","world":"Lobera","status":"offline"},{"name":"Toderigus Nohuhuja","world":"Antica","status":"offline"}]},"information":{"api_version":2,"execution_time":0.0007,"last_updated":"2019-01-30 00:31:50","timestamp":"2019-01-30 00:32:31"}}

tests/tests_character.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
FILE_CHARACTER_TIBIADATA_DELETED = "character/tibiadata_deleted.json"
1919
FILE_CHARACTER_TIBIADATA_SPECIAL_POSITION = "character/tibiadata_special_position.json"
2020
FILE_CHARACTER_TIBIADATA_NOT_FOUND = "character/tibiadata_not_found.json"
21+
FILE_CHARACTER_TIBIADATA_DEATHS_SUMMON = "character/tibiadata_deaths_summon.json"
2122

2223

2324
class TestCharacter(TestTibiaPy):
@@ -159,6 +160,15 @@ def testCharacterTibiaDataPosition(self):
159160
self.assertEqual(char.position, "CipSoft Member")
160161
self.assertEqual(char.account_information.position, "CipSoft Member")
161162

163+
def testCharacterSummonDeaths(self):
164+
content = self._load_resource(FILE_CHARACTER_TIBIADATA_DEATHS_SUMMON)
165+
char = Character.from_tibiadata(content)
166+
self.assertTrue(char.deaths)
167+
168+
summon_death = char.deaths[2]
169+
self.assertTrue(summon_death.killers[2].summon, "a fire elemental")
170+
self.assertTrue(summon_death.killers[2].name, "Hasi Pupsi")
171+
162172
def testCharacterTibiaDataNotFound(self):
163173
content = self._load_resource(FILE_CHARACTER_TIBIADATA_NOT_FOUND)
164174
char = Character.from_tibiadata(content)

tibiapy/character.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,12 @@ def _parse_deaths_tibiadata(self, deaths):
455455
if m and m.group("assists"):
456456
assists_str = [a.strip() for a in self._split_list(m.group("assists").strip())]
457457
for killer in killers_str:
458-
_death.killers.append(Killer(killer, killer in involved))
458+
summoner = next((i for i in involved if "of %s" % i in killer), None)
459+
summon = None
460+
if summoner:
461+
summon = killer.replace(" of %s" % summoner, "")
462+
killer = summoner
463+
_death.killers.append(Killer(killer, killer in involved, summon=summon))
459464
for assist in assists_str:
460465
_death.assists.append(Killer(assist, assist in involved))
461466
self.deaths.append(_death)

0 commit comments

Comments
 (0)