Make Main, Settings, ChooseScene, and gameplay run in Godot 4.6

Catch-all commit for everything the --convert-3to4 tool missed during a
manual playtest of the game. All errors raised by clicking through Main
-> Puzzles -> level were fixed.

GDScript:
- PackedScene.instance() -> instantiate() (ChooseScene.gd)
- String(x) constructor doesn't exist -> str(x) (MBase, MScene,
  MLevel, Animation, Levels)
- 'x as int/String/bool' doesn't parse strings -> explicit
  int()/str()/bool(int()) (MScene, MLevel, MSetting)
- BaseButton.pressed (property) -> button_pressed; set_pressed() ->
  direct assignment (Settings.gd)
- AnimationPlayer.add_animation() removed -> go through
  AnimationLibrary (Levels.gd)
- PhysicsDirectSpaceState3D.intersect_ray(from, to, ...) ->
  PhysicsRayQueryParameters3D.create() (Levels.gd)
- @export with type-hint-in-comment ('# (String, ...)') -> explicit
  @export_enum (candle.gd)
- Get effective material with get_active_material() instead of
  get_surface_override_material(), with null guard (Levels.gd)
- get_node() -> get_node_or_null() so missing items from ahog.json
  (e.g. sm_super_dager in Home) don't crash (Levels.gd)

Scenes/resources:
- Remove 14 Tween nodes from WarCraft.tscn — Tween is no longer a
  Node in Godot 4. Rewrite Animation.start_dissolve to use
  create_tween().tween_method().
- Rename property material/N -> surface_material_override/N in every
  .tscn (10 files) — Godot 3 -> 4 rename that --convert-3to4 missed.
  Without this, MeshInstance3D.get_active_material(0) returned the
  glTF-imported StandardMaterial3D instead of the project's custom
  dissolve ShaderMaterial.

Shaders:
- One-shot scripts/migrate_shaders.gd walks every .material under
  assets/ and fixes Godot 3 -> 4 shader code in-place. Fixed 17
  materials: depth_draw_alpha_prepass -> depth_prepass_alpha,
  hint_color -> source_color, NORMALMAP -> NORMAL_MAP.

Result: Main, Settings, ChooseScene, and the WarCraft level all run
without script or shader errors. Remaining noise is non-blocking
(visual_shader graph in text_outline.material, baked lightmap binary
format from Godot 3, and empty animation tracks).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Vaillant Jeremy
2026-05-16 19:40:03 +02:00
parent 770434482d
commit 4d5db7bb61
68 changed files with 274 additions and 253 deletions
+35 -35
View File
@@ -43,7 +43,7 @@ transform = Transform3D( 0.089016, -0.715663, 0.692751, 0, 0.695512, 0.718515, -
transform = Transform3D( 8.39917, 0, 0, 0, 1, 0, 0, 0, 11.9516, -0.796654, 0, -1.7752 )
use_in_baked_light = true
mesh = ExtResource( 4 )
material/0 = null
surface_material_override/0 = null
[node name="Lighting" type="Node3D" parent="."]
@@ -267,71 +267,71 @@ spot_angle = 15.0
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.743055, 0.0414186, 1.03485 )
use_in_baked_light = true
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
[node name="sm_book5" type="MeshInstance3D" parent="Books"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0423009, 0.0414186, 1.05613 )
use_in_baked_light = true
lightmap_scale = 3
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
[node name="sm_book11" type="MeshInstance3D" parent="Books"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0423009, 0.0414186, 1.52165 )
use_in_baked_light = true
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
[node name="sm_book6" type="MeshInstance3D" parent="Books"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.293967, 0.0414186, 1.03485 )
use_in_baked_light = true
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
[node name="sm_book7" type="MeshInstance3D" parent="Books"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.743055, 0.0414186, 1.51383 )
use_in_baked_light = true
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
[node name="sm_book8" type="MeshInstance3D" parent="Books"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.293967, 0.0414186, 1.51383 )
use_in_baked_light = true
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
[node name="sm_book" type="MeshInstance3D" parent="Books"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0435888, 0.106022 )
use_in_baked_light = true
lightmap_scale = 1
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
[node name="sm_book2" type="MeshInstance3D" parent="Books"]
transform = Transform3D( 0.276862, 0, 0.96091, 0, 1, 0, -0.96091, 0, 0.276862, -0.104465, 0.0414188, 0.547756 )
use_in_baked_light = true
lightmap_scale = 1
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
[node name="sm_book3" type="MeshInstance3D" parent="Books"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.381911, 0.0414187, 1.03881 )
use_in_baked_light = true
lightmap_scale = 1
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
[node name="sm_book10" type="MeshInstance3D" parent="Books"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.381911, 0.0414187, 0.331732 )
use_in_baked_light = true
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
[node name="sm_book9" type="MeshInstance3D" parent="Books"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.381911, 0.0414187, 1.53911 )
use_in_baked_light = true
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
[node name="Candle" type="Node3D" parent="."]
@@ -340,137 +340,137 @@ transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.26949, -0.000247162, -0.19
use_in_baked_light = true
lightmap_scale = 1
mesh = ExtResource( 5 )
material/0 = null
surface_material_override/0 = null
[node name="sm_candlestick2" type="MeshInstance3D" parent="Candle"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.477435, -0.000247162, -0.190021 )
use_in_baked_light = true
lightmap_scale = 1
mesh = ExtResource( 5 )
material/0 = null
surface_material_override/0 = null
[node name="sm_candle_a" type="MeshInstance3D" parent="Candle"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.460123, 0.0295914, 0.0291587 )
use_in_baked_light = true
mesh = ExtResource( 9 )
material/0 = null
surface_material_override/0 = null
[node name="sm_candle_a2" type="MeshInstance3D" parent="Candle"]
transform = Transform3D( 3, 0, 0, 0, 3, 0, 0, 0, 3, 0.291979, 0.0295914, 0.0291587 )
use_in_baked_light = true
mesh = ExtResource( 9 )
material/0 = null
surface_material_override/0 = null
[node name="sm_candle_b" type="MeshInstance3D" parent="Candle"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.469327, 0.0330793, -0.387681 )
use_in_baked_light = true
mesh = ExtResource( 7 )
material/0 = null
surface_material_override/0 = null
[node name="sm_candle_b2" type="MeshInstance3D" parent="Candle"]
transform = Transform3D( 1.83922, 0, 0, 0, 1.83922, 0, 0, 0, 1.83922, 0.271941, 0.0630442, -0.414322 )
use_in_baked_light = true
mesh = ExtResource( 7 )
material/0 = null
surface_material_override/0 = null
[node name="sm_candle_d" type="MeshInstance3D" parent="Candle"]
transform = Transform3D( 2.21301, 0, 0, 0, 2.21301, 0, 0, 0, 2.21301, 0.470213, 0.0446767, -0.844206 )
use_in_baked_light = true
mesh = ExtResource( 11 )
material/0 = null
surface_material_override/0 = null
[node name="sm_candle_d2" type="MeshInstance3D" parent="Candle"]
transform = Transform3D( 3.61366, 0, 0, 0, 3.61366, 0, 0, 0, 3.61366, 0.199182, 0.12495, -0.844578 )
use_in_baked_light = true
mesh = ExtResource( 11 )
material/0 = null
surface_material_override/0 = null
[node name="sm_candle_c" type="MeshInstance3D" parent="Candle"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.473356, 0.0278057, -0.559005 )
use_in_baked_light = true
mesh = ExtResource( 8 )
material/0 = null
surface_material_override/0 = null
[node name="sm_candle_c2" type="MeshInstance3D" parent="Candle"]
transform = Transform3D( 2.21301, 0, 0, 0, 2.21301, 0, 0, 0, 2.21301, 0.283916, 0.0534962, -0.597519 )
use_in_baked_light = true
mesh = ExtResource( 8 )
material/0 = null
surface_material_override/0 = null
[node name="sm_candle_top" type="MeshInstance3D" parent="Candle"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.502775, 0.0267428, -1.04497 )
use_in_baked_light = true
mesh = ExtResource( 12 )
material/0 = null
surface_material_override/0 = null
[node name="sm_candle_top2" type="MeshInstance3D" parent="Candle"]
transform = Transform3D( 3.02964, 0, 0, 0, 3.02964, 0, 0, 0, 3.02964, 0.323108, 0.0842445, -1.08129 )
use_in_baked_light = true
mesh = ExtResource( 12 )
material/0 = null
surface_material_override/0 = null
[node name="sm_godet" type="MeshInstance3D" parent="."]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.496689, 0.0078643, -1.39236 )
use_in_baked_light = true
mesh = ExtResource( 13 )
material/0 = null
surface_material_override/0 = null
[node name="sm_wood_parchment" type="MeshInstance3D" parent="."]
transform = Transform3D( -0.582776, 0, -0.812633, 0, 1, 0, 0.812633, 0, -0.582776, 0.56408, 0.0561891, -3.02517 )
use_in_baked_light = true
mesh = ExtResource( 16 )
material/0 = null
surface_material_override/0 = null
[node name="sm_wood_parchment2" type="MeshInstance3D" parent="."]
transform = Transform3D( -1.33197, 0, -0.568074, 0, 1.53487, 0, 0.762673, 0, -0.992113, 0.315509, 0.0907792, -3.01831 )
use_in_baked_light = true
mesh = ExtResource( 16 )
material/0 = null
surface_material_override/0 = null
[node name="sm_paper_parcment" type="MeshInstance3D" parent="."]
transform = Transform3D( 0.00464255, 0, -0.999989, 0, 1, 0, 0.999989, 0, 0.00464255, 0.602608, -0.0039514, -2.28984 )
use_in_baked_light = true
mesh = ExtResource( 15 )
material/0 = null
surface_material_override/0 = null
[node name="sm_paper_parcment2" type="MeshInstance3D" parent="."]
transform = Transform3D( 0.164983, 0, 1.25894, 0, 1.26971, 0, -1.25894, 0, 0.164983, 0.21995, -0.00395134, -2.34543 )
use_in_baked_light = true
mesh = ExtResource( 15 )
material/0 = null
surface_material_override/0 = null
[node name="sm_growler" type="MeshInstance3D" parent="."]
transform = Transform3D( 0.605072, 0, 0.796171, 0, 1, 0, -0.796171, 0, 0.605072, 0.506431, 0, -1.78796 )
use_in_baked_light = true
mesh = ExtResource( 14 )
material/0 = null
surface_material_override/0 = null
[node name="sm_growler2" type="MeshInstance3D" parent="."]
transform = Transform3D( -0.881676, 0, -1.078, 0, 1.39264, 0, 1.078, 0, -0.881676, 0.162736, -0.000296712, -1.78636 )
use_in_baked_light = true
mesh = ExtResource( 14 )
material/0 = null
surface_material_override/0 = null
[node name="sm_godet2" type="MeshInstance3D" parent="."]
transform = Transform3D( 1.74966, 0, 0, 0, 1.74966, 0, 0, 0, 1.74966, 0.277748, 0.0325533, -1.39477 )
use_in_baked_light = true
mesh = ExtResource( 13 )
material/0 = null
surface_material_override/0 = null
[node name="sm_floor" type="MeshInstance3D" parent="."]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.39092, 0.0131278, -4.30235 )
use_in_baked_light = true
mesh = ExtResource( 17 )
material/0 = null
surface_material_override/0 = null
[node name="sm_table" type="MeshInstance3D" parent="."]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1.60057, 0.781203, -0.818648 )
use_in_baked_light = true
mesh = ExtResource( 19 )
material/0 = null
surface_material_override/0 = null
[node name="sm_stool_b" type="MeshInstance3D" parent="."]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1.71977, -3.03984e-06, -2.63978 )
use_in_baked_light = true
mesh = ExtResource( 18 )
material/0 = null
surface_material_override/0 = null