Conversation
WalkthroughThis PR adds a large set of SWTOR-related data assets: an expanded Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~15 minutes
Suggested reviewers
Poem
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
Warning Review ran into problems🔥 ProblemsGit: Failed to clone repository. Please run the Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 4
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
swlor2_core5/ASWTOR_006.mdl (1)
1966-2309: Critical: Remove duplicate content after model termination.The model properly ends at line 1965 with
donemodel ASWTOR_006, but lines 1966-2309 contain extraneous face data and duplicate termination markers (endnode,endmodelgeom,donemodel). This appears to be leftover data from the export process that should be removed.This duplicate content may cause:
- Model loading failures or parser errors
- Increased file size without benefit
- Confusion during debugging
Remove all content after line 1965:
endnode endmodelgeom ASWTOR_006 donemodel ASWTOR_006 - 107 106 103 0 - 354 353 356 1 105 104 108 0 - 355 356 353 1 106 108 104 0 -[... all remaining lines ...] -donemodel ASWTOR_006
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (163)
swlor2_core5/ASWTOR_001.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_001_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_001_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_001_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_002.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_002_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_002_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_002_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_003.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_003_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_003_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_003_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_004.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_004_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_004_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_004_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_005.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_005_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_005_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_005_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_006.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_006_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_006_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_006_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_007.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_007_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_007_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_008.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_008_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_008_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_008_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_009.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_009_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_009_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_009_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_010.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_010_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_010_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_010_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_011.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_011_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_011_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_012.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_012_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_012_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_013.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_013_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_013_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_013_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_014.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_014_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_014_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_014_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_015.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_015_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_015_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_016.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_016_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_016_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_016_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_017.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_017_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_017_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_018.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_018_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_018_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_018_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_019.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_019_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_019_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_019_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_020.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_020_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_020_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_021.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_021_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_021_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_022.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_022_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_022_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_022_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_023.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_023_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_023_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_023_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_024.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_024_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_024_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_024_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_025.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_025_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_025_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_026.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_026_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_026_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_026_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_027.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_027_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_027_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_027_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_028.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_028_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_028_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_028_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_029.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_029_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_029_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_029_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_030.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_030_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_030_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_030_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_031.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_031_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_031_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_031_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_032.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_032_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_032_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_032_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_033.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_033_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_033_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_034.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_034_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_034_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_035.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_035_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_035_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_036.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_036_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_036_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_037.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_037_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_037_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_037_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_038.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_038_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_038_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_038_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_039.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_039_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_039_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_039_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_040.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_040_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_040_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_041.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_041_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_042.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_042_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_042_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_042_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_043.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_043_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_043_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_043_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_044.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_044_I.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_044_N.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_044_S.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_045.ddsis excluded by!**/*.ddsswlor2_core5/ASWTOR_045_I.ddsis excluded by!**/*.dds
📒 Files selected for processing (34)
swlor2_2da/placeables.2da(1 hunks)swlor2_core5/ASWTOR_001.mdl(1 hunks)swlor2_core5/ASWTOR_001.mtr(1 hunks)swlor2_core5/ASWTOR_001.pwk(1 hunks)swlor2_core5/ASWTOR_002.mdl(1 hunks)swlor2_core5/ASWTOR_002.mtr(1 hunks)swlor2_core5/ASWTOR_002.pwk(1 hunks)swlor2_core5/ASWTOR_003.mdl(1 hunks)swlor2_core5/ASWTOR_003.mtr(1 hunks)swlor2_core5/ASWTOR_003.pwk(1 hunks)swlor2_core5/ASWTOR_004.mtr(1 hunks)swlor2_core5/ASWTOR_004.pwk(1 hunks)swlor2_core5/ASWTOR_005.mtr(1 hunks)swlor2_core5/ASWTOR_005.pwk(1 hunks)swlor2_core5/ASWTOR_006.mdl(1 hunks)swlor2_core5/ASWTOR_006.mtr(1 hunks)swlor2_core5/ASWTOR_006.pwk(1 hunks)swlor2_core5/ASWTOR_007.mtr(1 hunks)swlor2_core5/ASWTOR_007.pwk(1 hunks)swlor2_core5/ASWTOR_008.mdl(1 hunks)swlor2_core5/ASWTOR_008.mtr(1 hunks)swlor2_core5/ASWTOR_008.pwk(1 hunks)swlor2_core5/ASWTOR_009.mdl(1 hunks)swlor2_core5/ASWTOR_009.mtr(1 hunks)swlor2_core5/ASWTOR_009.pwk(1 hunks)swlor2_core5/ASWTOR_010.mdl(1 hunks)swlor2_core5/ASWTOR_010.mtr(1 hunks)swlor2_core5/ASWTOR_010.pwk(1 hunks)swlor2_core5/ASWTOR_011.mdl(1 hunks)swlor2_core5/ASWTOR_011.mtr(1 hunks)swlor2_core5/ASWTOR_011.pwk(1 hunks)swlor2_core5/ASWTOR_012.mdl(1 hunks)swlor2_core5/ASWTOR_012.mtr(1 hunks)swlor2_core5/ASWTOR_012.pwk(1 hunks)
🔇 Additional comments (35)
swlor2_core5/ASWTOR_001.mtr (1)
1-11: LGTM! Material definition is consistent.The material file follows the expected structure with appropriate render hints and texture mappings for diffuse, normal, specular, and illumination channels.
swlor2_core5/ASWTOR_007.mtr (1)
1-11: LGTM! Material definition is correct.The material file is properly structured with appropriate texture mappings. The absence of an illumination map (texture5 = null) is consistent with models that don't require self-illumination.
swlor2_core5/ASWTOR_009.mtr (1)
1-11: LGTM! Material definition is consistent.The material file is properly structured with appropriate texture mappings including an illumination channel for self-illuminated elements.
swlor2_core5/ASWTOR_003.mtr (1)
1-11: LGTM! Material definition is consistent.The material file follows the expected structure with appropriate render hints and texture mappings for all required channels.
swlor2_core5/ASWTOR_007.pwk (1)
1-36: LGTM! PWK structure is correct.The collision mesh is properly defined with appropriate geometry and usage nodes. Note: This file also omits the scale property like ASWTOR_008.pwk—please verify in the earlier comment on ASWTOR_008.pwk whether this is intentional.
swlor2_core5/ASWTOR_002.pwk (1)
1-39: LGTM! PWK structure is correct.The collision mesh is properly defined with appropriate geometry, usage nodes, and a scale of 1.300. This is consistent with ASWTOR_001.pwk but differs from ASWTOR_007.pwk and ASWTOR_008.pwk which omit the scale property—please verify in the earlier comment on ASWTOR_008.pwk whether this variation is intentional.
swlor2_core5/ASWTOR_001.pwk (1)
1-39: Verify the .001 suffix in node names.The parent node is named
ASWTOR_001_pwk.001and all child nodes also include a.001suffix, which differs from the naming pattern in other PWK files in this PR (e.g., ASWTOR_002.pwk, ASWTOR_007.pwk, ASWTOR_008.pwk use names without suffixes likeASWTOR_002_pwk). Confirm whether this suffix is intentional or a copy-paste artifact.swlor2_core5/ASWTOR_008.pwk (1)
1-56: Verify the omission of scale property.The original review comment questions whether ASWTOR_008.pwk should include a
scaleproperty for consistency with ASWTOR_001.pwk and ASWTOR_002.pwk. However, verification cannot be completed without direct access to the repository files to confirm:
- Whether ASWTOR_001.pwk and ASWTOR_002.pwk actually specify
scale 1.300- The intended scale convention across the ASWTOR PWK file series
- Whether the default scale (1.0) is intentional for this particular asset
Manual inspection of the referenced PWK files is required to resolve this concern.
swlor2_core5/ASWTOR_009.pwk (1)
1-56: PWK walkmesh asset looks correct.The walkmesh definition follows standard NWN PWK format with a collision trimesh and two usage point dummies. The geometry defines appropriate collision bounds for what appears to be a wall segment placeable.
swlor2_core5/ASWTOR_003.pwk (1)
1-49: PWK walkmesh asset looks correct.The walkmesh follows the established pattern with a scaled trimesh and two usage points. The
.001suffix in node names is typical of Blender export naming conventions and shouldn't affect functionality.swlor2_core5/ASWTOR_002.mtr (1)
1-11: Material definition looks correct.The material file follows standard NWN:EE MTR format with appropriate texture slot assignments for normal/specular mapped rendering. The referenced textures (ASWTOR_002, ASWTOR_002_N, ASWTOR_002_S, ASWTOR_002_I) should be included in the asset pack.
swlor2_core5/ASWTOR_004.pwk (1)
1-57: PWK walkmesh asset looks correct.The walkmesh defines a larger collision mesh (coordinates indicate approximately 24 units wide) with symmetrically placed usage points. Structure is consistent with the other ASWTOR PWK assets.
swlor2_core5/ASWTOR_004.mtr (1)
1-11: Material definition looks correct.Follows the same pattern as other ASWTOR material files with NormalAndSpecMapped renderhint and corresponding texture slot assignments.
swlor2_core5/ASWTOR_009.mdl (3)
1-6: Model header and metadata look correct.The NeverBlender-generated header is valid. Note that
filedependancy(line 2) uses the historical NWN spelling. Theclassification CHARACTERon line 5 is somewhat unusual for a wall placeable—typically placeables useTILEorEFFECT—but this may be intentional for specific engine behavior or animation scale requirements.Please verify that the CHARACTER classification is intentional for this placeable asset, as wall segments typically use different classifications.
1441-1454: Second trimesh references ASWTOR_003 texture.This mesh section (line 1446) uses
bitmap ASWTOR_003. The corresponding material file should define the same texture mappings pattern seen in other ASWTOR MTR files.
31-44: Verify texture/material dependencies exist.The first trimesh references
bitmap ASWTOR_005(line 36). Ensure thatASWTOR_005.mtrand corresponding texture files (ASWTOR_005, ASWTOR_005_N, ASWTOR_005_S, ASWTOR_005_I) are included in the asset pack.swlor2_core5/ASWTOR_001.mdl (1)
1-48: Verifybitmap ASWTOR_013+ material/texture wiring for ASWTOR_001.This model is named
ASWTOR_001but the mesh referencesbitmap ASWTOR_013(Line 40). If your pipeline expectsbitmap→<bitmap>.tga/.dds(and optionally<bitmap>.mtr), make sureASWTOR_013is present and intentional; otherwise you’ll get missing/incorrect textures at runtime. Also confirmshadow 0(Line 47) is desired for wall pieces.swlor2_core5/ASWTOR_003.mdl (1)
1-48: Confirmbitmap ASWTOR_002is intended + shipped.
ASWTOR_003’s trimesh referencesbitmap ASWTOR_002(Line 40). If that’s deliberate texture reuse, fine—otherwise it’s an easy-to-miss export/config mismatch that will surface as wrong/missing textures.swlor2_core5/ASWTOR_002.mdl (1)
35-690: UVs exceed 1.0—verify wrap/repeat behavior forASWTOR_013.This model’s
tvertscontain coordinates > 1.0 (e.g., around Line 487+), which implies intentional tiling. Please verify the target renderer/material setup actually repeats UVs forASWTOR_013; otherwise you may see clamped/stretching artifacts.swlor2_core5/ASWTOR_008.mtr (1)
1-10: Looks good, but verify this material is actually used by the mdl.
ASWTOR_008.mtris coherent for a normal/spec setup. The open question is wiring: if materials are resolved bybitmapname, this won’t be picked up unless some mesh usesbitmap ASWTOR_008(or your engine resolves.mtrby model name instead).swlor2_core5/ASWTOR_008.mdl (1)
2455-2686: Verify file structure and end-of-file markers in ASWTOR_008.mdlThe review raises concerns about potential malformed structure—specifically geometry lines after
donemodeland duplicate end markers. However, this requires direct access to the file to confirm:
- Verify that the section shown (lines 2455-2686) truly contains geometry/face data after the first
donemodel ASWTOR_008statement- Confirm whether duplicate
endnode/endmodelgeom/donemodelblocks exist at the end of the file- If confirmed malformed, determine the correct structure (likely removing the trailing section as suggested)
Re-export the model using your toolchain (NeverBlender or equivalent) to establish the canonical format, then compare against this file's current structure.
swlor2_core5/ASWTOR_006.mtr (1)
1-11: Material definition follows standard .mtr conventions.The texture mapping structure is consistent and follows expected PBR conventions with diffuse, normal, specular, and illumination maps properly defined across texture slots 0-2 and 5, with unused slots 3-4 set to null.
Verify that the referenced texture files (ASWTOR_006, ASWTOR_006_N, ASWTOR_006_S, ASWTOR_006_I) exist in the asset pipeline.
swlor2_core5/ASWTOR_005.mtr (1)
1-11: Material definition requires texture asset verification.This file follows the established pattern for SWTOR material definitions with texture slot mappings for ASWTOR_005. However, verification of the referenced texture file existence is needed before approval.
Verify that the referenced texture files exist in the asset pipeline:
- ASWTOR_005
- ASWTOR_005_N
- ASWTOR_005_S
- ASWTOR_005_I
swlor2_core5/ASWTOR_010.mtr (1)
1-11: Verify material definition and texture asset references.The ASWTOR_010.mtr file establishes texture mappings for the asset but requires confirmation that the referenced texture files (ASWTOR_010, ASWTOR_010_N, ASWTOR_010_S, ASWTOR_010_I) exist in the asset pipeline and that the material definition follows project conventions.
swlor2_2da/placeables.2da (1)
32014-32014: Verify the placement of entry 30110.Entry 30110
"[SWLOR] Banner, Viscara"appears to be inserted between the new SWTOR entries (between 32109 and 32111). This breaks the sequential ordering of entries.Please verify whether:
- This entry was intentionally moved to this location, or
- This is a merge artifact that should be placed elsewhere (near other 30XXX entries), or
- This is a duplicate entry
The sequential ordering of 2DA files typically helps with maintenance and preventing conflicts.
swlor2_core5/ASWTOR_010.pwk (1)
1-36: LGTM - PWK collision mesh structure is valid.The collision mesh definition follows the expected format with proper node hierarchy, geometry data (8 vertices, 10 faces), and two usage dummy nodes. Structure aligns with other ASWTOR PWK assets in this PR.
swlor2_core5/ASWTOR_012.mtr (1)
1-11: LGTM - Material definition follows standard pattern.The material descriptor correctly defines the NormalAndSpecMapped renderhint with appropriate texture bindings. Note that texture5 is set to
nullhere, which differs from some other ASWTOR materials that use an_I(illumination) texture, but this variation is acceptable depending on the asset requirements.swlor2_core5/ASWTOR_005.pwk (1)
1-39: LGTM - PWK collision mesh with scaled geometry.The collision mesh is properly structured with consistent scale factor (1.300) applied to the trimesh and both dummy usage nodes. Geometry data and node hierarchy are valid.
swlor2_core5/ASWTOR_012.pwk (1)
1-56: LGTM - More complex PWK collision mesh structure.This collision mesh defines more detailed geometry with 16 vertices and 22 faces, providing finer collision detection than simpler meshes. Structure is valid with proper node hierarchy and dummy usage nodes.
swlor2_core5/ASWTOR_011.mdl (1)
1-1474: LGTM - Well-formed 3D model geometry.The model definition is properly structured with correct NeverBlender export format. Notable details:
- Contains 726 vertices with full texture coordinate and face data
- References
ASWTOR_006texture (line 36), creating a cross-dependency with another asset in this PR- Includes standard dummy nodes for game integration (ground, hand, head_hit, impact)
- Properly terminated with endmodelgeom and donemodel markers
swlor2_core5/ASWTOR_011.mtr (1)
1-11: LGTM - Material definition is properly structured.The material descriptor follows the standard ASWTOR pattern with NormalAndSpecMapped rendering and appropriate texture bindings for base, normal, and specular maps.
swlor2_core5/ASWTOR_010.mdl (1)
1-844: LGTM - Model geometry properly defined.The model is correctly structured with 380 vertices and complete face/texture data. Like ASWTOR_011, this model also references the
ASWTOR_006texture (line 36), indicating these models share texture assets, which is an efficient approach for related placeables.swlor2_core5/ASWTOR_006.mdl (1)
1-1965: Main model structure is valid.The primary model definition (lines 1-1965) is properly structured with comprehensive geometry data including 760 vertices, 211 texture coordinates, and 944 faces. All node hierarchies and termination markers are correct in this section.
swlor2_core5/ASWTOR_006.pwk (1)
1-36: LGTM: Walkmesh structure is correct.The PWK file is properly structured with:
- A collision mesh (006_wg) with 8 vertices forming a bounding box
- 10 triangular faces covering all sides
- Two dummy nodes for object interaction/usage points positioned symmetrically at Y = ±1.6
The structure is consistent with other ASWTOR PWK files in this PR.
swlor2_core5/ASWTOR_011.pwk (1)
1-36: LGTM: Walkmesh structure is correct.The PWK file follows the same correct structure as other ASWTOR PWK assets:
- Collision mesh (011_wg) with 8 vertices forming a larger bounding box (16 units wide vs 8 units in ASWTOR_006)
- 10 triangular faces
- Two usage points at Y = ±1.6
Structure is consistent with the established pattern for these assets.
Spelled Tattooine correctly and removed errant asterix
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (2)
swlor2_2da/placeables.2da (2)
31852-31854: Fix “Tatooine” spelling (currently “Tattooine” / “Tattpoine”).
These three display names are inconsistent and misspelled.-31848 "[SWTOR] Door - Tattooine, Metal" -31849 "[SWTOR] Pillar - Tattpoine (Half)" -31850 "[SWTOR] Pillar - Tattooine (Full)" +31848 "[SWTOR] Door - Tatooine, Metal" +31849 "[SWTOR] Pillar - Tatooine (Half)" +31850 "[SWTOR] Pillar - Tatooine (Full)"
31855-31855: Remove or fully define the placeholder****row.
A blank display name + all****fields is risky in a large 2DA and can lead to parsing/lookup surprises—best to delete it or populate it intentionally.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
swlor2_2da/placeables.2da(1 hunks)
🔇 Additional comments (2)
swlor2_2da/placeables.2da (2)
32014-32014: Row id30110looks out-of-sequence (likely typo) and may collide.
This entry appears between32109and32111, so30110is very likely unintended.-30110 "[SWLOR] Banner, Viscara" +32110 "[SWLOR] Banner, Viscara"Please confirm there isn't already a
32110(or30110) elsewhere before applying.
31852-32164: [rewritten comment]
[classification_tag]
-27 Additional Models -Fix of incorrect texture [ASWTOR_147] -Addition of two missing MDLS [ASWTOR_148/151] -All models compiled
Overview:
241 new placeable models adapted from SWTOR
190 made by Aephyros as well as 51 by Dafena
Featuring:
9 sets of walls
12 new floor textures with 1x1 and 2x2 versions of most
1 road set
9 rugs
2 working streetlights
2 full buildings, including a customized starport
Various stacks of crates
New furniture including seats, tables, beds, and storage
Road and wall signs
A custom-made Veles fountain
All new workstations
And a whole bunch more
Full List of New Placeables:
https://docs.google.com/document/d/1n8Z0dgZC-vMJ3lznIi2QWsDYgELbVuHDkXrE1qGEY8E/edit?usp=sharing
Summary by CodeRabbit
New Features
Chores
✏️ Tip: You can customize this high-level summary in your review settings.