diff --git a/packages/wolf_3d_data_types/lib/src/map_objects.dart b/packages/wolf_3d_data_types/lib/src/map_objects.dart index 69ec66c..6737793 100644 --- a/packages/wolf_3d_data_types/lib/src/map_objects.dart +++ b/packages/wolf_3d_data_types/lib/src/map_objects.dart @@ -85,10 +85,10 @@ abstract class MapObject { // --- Enemy Range Constants --- static const int guardStart = 108; // 108-143 - static const int officerStart = 144; // 144-179 + static const int dogStart = 144; // 144-179 static const int ssStart = 180; // 180-215 - static const int dogStart = 216; // 216-251 - static const int mutantStart = 252; // 252-287 + static const int mutantStart = 216; // 216-251 + static const int officerStart = 252; // 252-287 // --- Missing Decorative Bodies --- static const int deadGuard = 124; // Decorative only in WL1 diff --git a/packages/wolf_3d_entities/lib/src/entities/enemies/enemy.dart b/packages/wolf_3d_entities/lib/src/entities/enemies/enemy.dart index 5d62939..17836c2 100644 --- a/packages/wolf_3d_entities/lib/src/entities/enemies/enemy.dart +++ b/packages/wolf_3d_entities/lib/src/entities/enemies/enemy.dart @@ -201,6 +201,12 @@ abstract class Enemy extends Entity { return null; } + // Prevent bosses from accidentally spawning as regular enemies! + if (objId >= MapObject.bossHansGrosse && + objId <= MapObject.bossFettgesicht) { + return null; + } + final type = EnemyType.fromMapId(objId); if (type == null) return null; diff --git a/packages/wolf_3d_entities/lib/src/entities/enemies/enemy_type.dart b/packages/wolf_3d_entities/lib/src/entities/enemies/enemy_type.dart index 5ecfcc0..ce7e98b 100644 --- a/packages/wolf_3d_entities/lib/src/entities/enemies/enemy_type.dart +++ b/packages/wolf_3d_entities/lib/src/entities/enemies/enemy_type.dart @@ -45,7 +45,7 @@ class EnemyAnimationMap { enum EnemyType { guard( - mapData: EnemyMapData(108), + mapData: EnemyMapData(MapObject.guardStart), animations: EnemyAnimationMap( idle: SpriteFrameRange(50, 57), walking: SpriteFrameRange(58, 89), @@ -56,7 +56,7 @@ enum EnemyType { ), ), dog( - mapData: EnemyMapData(216), + mapData: EnemyMapData(MapObject.dogStart), animations: EnemyAnimationMap( idle: SpriteFrameRange(99, 106), walking: SpriteFrameRange(107, 130), @@ -67,7 +67,7 @@ enum EnemyType { ), ), ss( - mapData: EnemyMapData(180), + mapData: EnemyMapData(MapObject.ssStart), animations: EnemyAnimationMap( idle: SpriteFrameRange(138, 145), walking: SpriteFrameRange(146, 177), @@ -78,7 +78,7 @@ enum EnemyType { ), ), mutant( - mapData: EnemyMapData(252), + mapData: EnemyMapData(MapObject.mutantStart), animations: EnemyAnimationMap( idle: SpriteFrameRange(187, 194), walking: SpriteFrameRange(195, 226), @@ -89,7 +89,7 @@ enum EnemyType { ), ), officer( - mapData: EnemyMapData(144), + mapData: EnemyMapData(MapObject.officerStart), animations: EnemyAnimationMap( idle: SpriteFrameRange(238, 245), walking: SpriteFrameRange(246, 277),