class_name DustArena extends RelayArena func build() -> void: map_id = "dust2" map_size = Vector2(112, 133) DustGeometry.build(self) # Both bases and alternative spawns are on connected, walkable surfaces. spawn_points.assign([Vector3(-20, 8.15, 47), Vector3(-15, 8.15, 47), Vector3(-10, 8.15, 47), Vector3(-5, 8.15, 47), Vector3(-26, 8.15, 47), Vector3(0, 1.75, -28), Vector3(-4, 1.75, -28), Vector3(-8, 1.75, -28), Vector3(-2, 1.75, -31), Vector3(-6, 1.75, -31)]) patrol_points.assign([Vector3(-39, 4.9, -25), Vector3(42, 5.1, -30), Vector3(-35, 4.9, 22), Vector3(15, 4.9, 27), Vector3(0, 4.9, 15), Vector3(-15, 3, -29), Vector3(-20, 8.1, 47)]) objective_positions.assign([Vector3(-39, 4.9, -25), Vector3(0, 4.9, 15), Vector3(42, 5.1, -30)]) UrbanLighting.build(self) # The source textures already contain light/shadow detail; avoid bleaching them. var world := get_node("DistrictAtmosphere") as WorldEnvironment world.environment.ambient_light_energy = 0.55 var sun := get_node("LateAfternoonSun") as DirectionalLight3D sun.light_energy = 1.05 for node in get_children(): if node is OmniLight3D: node.queue_free() func build_navigation() -> void: load_navigation("res://assets/scan/dust2/navigation.res") for i in spawn_points.size(): spawn_points[i] = navigation.nearest(spawn_points[i]) + Vector3.UP * 0.08