Skip to content

Commit 0dd29bb

Browse files
committed
#2923 The Dawnbreaker is now properly ARCable
1 parent fecfaf0 commit 0dd29bb

File tree

10 files changed

+6632
-25
lines changed

10 files changed

+6632
-25
lines changed

app/Service/CombatLog/Filters/BaseCombatFilter.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ abstract class BaseCombatFilter implements CombatLogParserInterface
7777

7878
// Tazavesh: Streets of Wonder
7979
176555 => 0.01, // Achillite is never defeated, but starts pumping out lightning balls at 1hp instead
80+
81+
// The Dawnbreaker
82+
213937 => 0.61, // Rasha'nan is defeated at 60%
8083
];
8184

8285
/** @var array Some enemies are summoned that we DO want to track in the route */

database/seeders/dungeondata/dungeons.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13215,7 +13215,7 @@
1321513215
"facade": 0,
1321613216
"min_enemy_size": null,
1321713217
"max_enemy_size": null,
13218-
"enemy_engagement_max_range": null,
13218+
"enemy_engagement_max_range": 175,
1321913219
"enemy_engagement_max_range_patrols": null,
1322013220
"ingame_min_x": 806.25,
1322113221
"ingame_min_y": 977.08,
@@ -16996,7 +16996,7 @@
1699616996
"facade": 1,
1699716997
"min_enemy_size": null,
1699816998
"max_enemy_size": null,
16999-
"enemy_engagement_max_range": null,
16999+
"enemy_engagement_max_range": 200,
1700017000
"enemy_engagement_max_range_patrols": null,
1700117001
"ingame_min_x": 0,
1700217002
"ingame_min_y": 0,

database/seeders/dungeondata/mapping_commit_logs.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3064,5 +3064,11 @@
30643064
"merged": 0,
30653065
"created_at": "2025-08-11T21:50:12.000000Z",
30663066
"updated_at": "2025-08-11T21:50:12.000000Z"
3067+
},
3068+
{
3069+
"id": 512,
3070+
"merged": 0,
3071+
"created_at": "2025-08-12T10:30:13.000000Z",
3072+
"updated_at": "2025-08-12T10:30:13.000000Z"
30673073
}
30683074
]

database/seeders/dungeondata/npcs.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -268263,7 +268263,7 @@
268263268263
"npc_type_id": 8,
268264268264
"npc_class_id": 1,
268265268265
"display_id": 114311,
268266-
"encounter_id": 2580,
268266+
"encounter_id": 2837,
268267268267
"name": "npcs.211087",
268268268268
"level": 80,
268269268269
"mdt_scale": 2,
@@ -268402,7 +268402,7 @@
268402268402
"npc_type_id": 8,
268403268403
"npc_class_id": 1,
268404268404
"display_id": 114315,
268405-
"encounter_id": 2581,
268405+
"encounter_id": 2838,
268406268406
"name": "npcs.211089",
268407268407
"level": 80,
268408268408
"mdt_scale": 1.2,
@@ -275170,7 +275170,7 @@
275170275170
"npc_type_id": 2,
275171275171
"npc_class_id": 1,
275172275172
"display_id": 118404,
275173-
"encounter_id": 2593,
275173+
"encounter_id": 2839,
275174275174
"name": "npcs.213937",
275175275175
"level": 80,
275176275176
"mdt_scale": 2,

database/seeders/dungeondata/tww/thedawnbreaker/1/enemies.json

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -32603,7 +32603,7 @@
3260332603
"id": 102786,
3260432604
"mapping_version_id": 599,
3260532605
"enemy_pack_id": 16782,
32606-
"enemy_patrol_id": null,
32606+
"enemy_patrol_id": 21460,
3260732607
"npc_id": 213894,
3260832608
"floor_id": 293,
3260932609
"mdt_id": 4,
@@ -32628,7 +32628,7 @@
3262832628
"id": 102787,
3262932629
"mapping_version_id": 599,
3263032630
"enemy_pack_id": 16783,
32631-
"enemy_patrol_id": null,
32631+
"enemy_patrol_id": 21460,
3263232632
"npc_id": 213894,
3263332633
"floor_id": 293,
3263432634
"mdt_id": 5,
@@ -32653,7 +32653,7 @@
3265332653
"id": 102788,
3265432654
"mapping_version_id": 599,
3265532655
"enemy_pack_id": 16783,
32656-
"enemy_patrol_id": null,
32656+
"enemy_patrol_id": 21460,
3265732657
"npc_id": 213894,
3265832658
"floor_id": 293,
3265932659
"mdt_id": 6,
@@ -32678,7 +32678,7 @@
3267832678
"id": 102789,
3267932679
"mapping_version_id": 599,
3268032680
"enemy_pack_id": 16784,
32681-
"enemy_patrol_id": null,
32681+
"enemy_patrol_id": 21460,
3268232682
"npc_id": 213894,
3268332683
"floor_id": 293,
3268432684
"mdt_id": 7,
@@ -32703,7 +32703,7 @@
3270332703
"id": 102790,
3270432704
"mapping_version_id": 599,
3270532705
"enemy_pack_id": 16784,
32706-
"enemy_patrol_id": null,
32706+
"enemy_patrol_id": 21460,
3270732707
"npc_id": 213894,
3270832708
"floor_id": 293,
3270932709
"mdt_id": 8,
@@ -32728,7 +32728,7 @@
3272832728
"id": 102791,
3272932729
"mapping_version_id": 599,
3273032730
"enemy_pack_id": 16785,
32731-
"enemy_patrol_id": null,
32731+
"enemy_patrol_id": 21460,
3273232732
"npc_id": 213894,
3273332733
"floor_id": 293,
3273432734
"mdt_id": 9,
@@ -33053,7 +33053,7 @@
3305333053
"id": 102804,
3305433054
"mapping_version_id": 599,
3305533055
"enemy_pack_id": 16782,
33056-
"enemy_patrol_id": null,
33056+
"enemy_patrol_id": 21460,
3305733057
"npc_id": 213892,
3305833058
"floor_id": 293,
3305933059
"mdt_id": 3,
@@ -33078,7 +33078,7 @@
3307833078
"id": 102805,
3307933079
"mapping_version_id": 599,
3308033080
"enemy_pack_id": 16784,
33081-
"enemy_patrol_id": null,
33081+
"enemy_patrol_id": 21460,
3308233082
"npc_id": 213892,
3308333083
"floor_id": 293,
3308433084
"mdt_id": 4,
@@ -33278,7 +33278,7 @@
3327833278
"id": 102813,
3327933279
"mapping_version_id": 599,
3328033280
"enemy_pack_id": 16783,
33281-
"enemy_patrol_id": null,
33281+
"enemy_patrol_id": 21460,
3328233282
"npc_id": 214761,
3328333283
"floor_id": 293,
3328433284
"mdt_id": 2,
@@ -33353,7 +33353,7 @@
3335333353
"id": 102816,
3335433354
"mapping_version_id": 599,
3335533355
"enemy_pack_id": 16782,
33356-
"enemy_patrol_id": null,
33356+
"enemy_patrol_id": 21460,
3335733357
"npc_id": 214762,
3335833358
"floor_id": 293,
3335933359
"mdt_id": 1,
@@ -33378,7 +33378,7 @@
3337833378
"id": 102817,
3337933379
"mapping_version_id": 599,
3338033380
"enemy_pack_id": 16785,
33381-
"enemy_patrol_id": null,
33381+
"enemy_patrol_id": 21460,
3338233382
"npc_id": 214762,
3338333383
"floor_id": 293,
3338433384
"mdt_id": 2,
@@ -33553,7 +33553,7 @@
3355333553
"id": 102824,
3355433554
"mapping_version_id": 599,
3355533555
"enemy_pack_id": 16784,
33556-
"enemy_patrol_id": null,
33556+
"enemy_patrol_id": 21460,
3355733557
"npc_id": 210966,
3355833558
"floor_id": 293,
3355933559
"mdt_id": 1,
@@ -33578,7 +33578,7 @@
3357833578
"id": 102825,
3357933579
"mapping_version_id": 599,
3358033580
"enemy_pack_id": 16785,
33581-
"enemy_patrol_id": null,
33581+
"enemy_patrol_id": 21460,
3358233582
"npc_id": 210966,
3358333583
"floor_id": 293,
3358433584
"mdt_id": 2,
@@ -36628,7 +36628,7 @@
3662836628
"id": 102947,
3662936629
"mapping_version_id": 599,
3663036630
"enemy_pack_id": null,
36631-
"enemy_patrol_id": null,
36631+
"enemy_patrol_id": 21461,
3663236632
"npc_id": 213885,
3663336633
"floor_id": 293,
3663436634
"mdt_id": 1,
@@ -36653,7 +36653,7 @@
3665336653
"id": 102948,
3665436654
"mapping_version_id": 599,
3665536655
"enemy_pack_id": null,
36656-
"enemy_patrol_id": null,
36656+
"enemy_patrol_id": 21460,
3665736657
"npc_id": 211087,
3665836658
"floor_id": 293,
3665936659
"mdt_id": 1,
@@ -36703,7 +36703,7 @@
3670336703
"id": 102950,
3670436704
"mapping_version_id": 599,
3670536705
"enemy_pack_id": null,
36706-
"enemy_patrol_id": null,
36706+
"enemy_patrol_id": 21461,
3670736707
"npc_id": 213937,
3670836708
"floor_id": 293,
3670936709
"mdt_id": 1,

database/seeders/dungeondata/tww/thedawnbreaker/1/enemy_patrols.json

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,5 +192,33 @@
192192
"weight": 2,
193193
"vertices_json": "[{\"lat\":-202.99142399515,\"lng\":380.47922564089},{\"lat\":-204.2302790024,\"lng\":360.21018308786},{\"lat\":-202.99142399515,\"lng\":380.47922564089},{\"lat\":-203.05145768121,\"lng\":403.59100661525}]"
194194
}
195+
},
196+
{
197+
"id": 21460,
198+
"mapping_version_id": 599,
199+
"floor_id": 293,
200+
"teeming": null,
201+
"faction": "any",
202+
"polyline": {
203+
"color": "#003280",
204+
"color_animated": null,
205+
"weight": 3,
206+
"vertices_json": "[{\"lat\":-199.6667,\"lng\":315.3034},{\"lat\":-181.3143,\"lng\":336.7145},{\"lat\":-161.0078,\"lng\":345.4658},{\"lat\":-145.5443,\"lng\":342.9169},{\"lat\":-125.4926,\"lng\":325.1593},{\"lat\":-123.3685,\"lng\":295.974},{\"lat\":-121.2444,\"lng\":266.7887},{\"lat\":-114.5322,\"lng\":243.8058},{\"lat\":-107.82,\"lng\":220.8229},{\"lat\":-88.6605,\"lng\":198.2223},{\"lat\":-69.501,\"lng\":175.6217},{\"lat\":-58.4556,\"lng\":155.74}]"
207+
},
208+
"mdt_polyline": null
209+
},
210+
{
211+
"id": 21461,
212+
"mapping_version_id": 599,
213+
"floor_id": 293,
214+
"teeming": null,
215+
"faction": "any",
216+
"polyline": {
217+
"color": "#c41f3b",
218+
"color_animated": null,
219+
"weight": 3,
220+
"vertices_json": "[{\"lat\":-143.1986,\"lng\":121.0927},{\"lat\":-160.5475,\"lng\":138.7914},{\"lat\":-164.7099,\"lng\":160.7924},{\"lat\":-168.8722,\"lng\":182.7933},{\"lat\":-156.4901,\"lng\":204.8293},{\"lat\":-141.4497,\"lng\":214.5531},{\"lat\":-117.1053,\"lng\":218.5405},{\"lat\":-86.346,\"lng\":207.6},{\"lat\":-75.1549,\"lng\":192.8668},{\"lat\":-63.9638,\"lng\":178.1335},{\"lat\":-56.6742,\"lng\":156.3674},{\"lat\":-59.4463,\"lng\":125.7715},{\"lat\":-74.4362,\"lng\":98.0505},{\"lat\":-98.7692,\"lng\":79.5697},{\"lat\":-122.8967,\"lng\":63.2451}]"
221+
},
222+
"mdt_polyline": null
195223
}
196224
]

lang/en_US/npcs.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<?php
1+
<?php
22

33
return array (
44
68 => 'Stormwind City Guard',
@@ -4888,7 +4888,7 @@
48884888
210851 => 'Eternal Flame',
48894889
210966 => 'Sureki Webmage',
48904890
211087 => 'Speaker Shadowcrown',
4891-
211089 => 'Anubikkaj',
4891+
211089 => 'Anub\'ikkaj',
48924892
211121 => 'Rank Overseer',
48934893
211140 => 'Arathi Neophyte',
48944894
211228 => 'Blazing Fiend',
@@ -4956,7 +4956,7 @@
49564956
213913 => 'Kobold Flametender',
49574957
213932 => 'Sureki Militant',
49584958
213934 => 'Nightfall Tactician',
4959-
213937 => 'Rashanan',
4959+
213937 => 'Rasha\'nan',
49604960
213942 => 'Sludge',
49614961
213954 => 'Rock Smasher',
49624962
214016 => 'Arathi Stalwart',
@@ -5479,4 +5479,4 @@
54795479
246285 => 'Bazaar Overseer',
54805480
555555 => 'Priory of the Sacred Flame',
54815481
129547000 => 'Blacktooth Knuckleduster',
5482-
);
5482+
);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
namespace Controller\Api\V1\APICombatLogController\CombatLogRoute\TWW;
4+
5+
use App\Models\Dungeon;
6+
use PHPUnit\Framework\Attributes\Group;
7+
use PHPUnit\Framework\Attributes\Test;
8+
use Tests\Feature\Controller\Api\V1\APICombatLogController\CombatLogRoute\APICombatLogControllerCombatLogRouteTestBase;
9+
10+
#[Group('Controller')]
11+
#[Group('API')]
12+
#[Group('APICombatLog')]
13+
#[Group('CombatLogRoute')]
14+
#[Group('TheDawnbreaker')]
15+
class APICombatLogControllerCombatLogRouteTheDawnbreakerTest extends APICombatLogControllerCombatLogRouteTestBase
16+
{
17+
protected function getDungeonKey(): string
18+
{
19+
return Dungeon::DUNGEON_THE_DAWNBREAKER;
20+
}
21+
22+
#[Test]
23+
public function create_givenTwwS3TheDawnbreaker7Json_shouldReturnValidDungeonRoute(): void
24+
{
25+
// Arrange
26+
$postBody = $this->getJsonData('TWW/tww_s3_ptr_the_dawnbreaker_7', self::FIXTURES_ROOT_DIR);
27+
28+
// Act
29+
$response = $this->post(route('api.v1.combatlog.route.create'), $postBody);
30+
31+
// Assert
32+
$response->assertCreated();
33+
34+
$responseArr = json_decode($response->content(), true);
35+
36+
$this->validateResponseStaticData($responseArr);
37+
$this->validateDungeon($responseArr);
38+
$this->validatePulls($responseArr, 15, 474);
39+
// This was a log which did not have full affixes set - see #2483
40+
// $this->validateAffixes($responseArr, Affix::AFFIX_FORTIFIED, Affix::AFFIX_STORMING, Affix::AFFIX_BURSTING);
41+
}
42+
}

0 commit comments

Comments
 (0)