feat: implement the new "Stop N Go" game mode, including phase management, dynamic safe zones, player missions, and dedicated UI with visual effects.
@@ -600,6 +600,10 @@ func clear_path_visualization(unused_floor_idx: int = 0):
|
|||||||
for x in range(columns):
|
for x in range(columns):
|
||||||
for z in range(rows):
|
for z in range(rows):
|
||||||
var cell_item = get_cell_item(Vector3i(x, 2, z))
|
var cell_item = get_cell_item(Vector3i(x, 2, z))
|
||||||
|
# Protect Safe Zone (ID 2) from being cleared by path visualization
|
||||||
|
if cell_item == 2:
|
||||||
|
continue
|
||||||
|
|
||||||
if cell_item == hover_item or cell_item == start_item or cell_item == end_item:
|
if cell_item == hover_item or cell_item == start_item or cell_item == end_item:
|
||||||
set_cell_item(Vector3i(x, 2, z), -1)
|
set_cell_item(Vector3i(x, 2, z), -1)
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
[ext_resource type="BoxMesh" uid="uid://dy5p77cjb3geo" path="res://addons/enhanced_gridmap/meshlibrary/tile_start.tres" id="9_pgnbl"]
|
[ext_resource type="BoxMesh" uid="uid://dy5p77cjb3geo" path="res://addons/enhanced_gridmap/meshlibrary/tile_start.tres" id="9_pgnbl"]
|
||||||
[ext_resource type="ArrayMesh" uid="uid://dtr46jmckif0p" path="res://assets/models/meshes/block.res" id="9_uwjsj"]
|
[ext_resource type="ArrayMesh" uid="uid://dtr46jmckif0p" path="res://assets/models/meshes/block.res" id="9_uwjsj"]
|
||||||
[ext_resource type="Texture2D" uid="uid://dpkx1a780pvwv" path="res://assets/textures/tile_diamond.png" id="10_sx8rm"]
|
[ext_resource type="Texture2D" uid="uid://dpkx1a780pvwv" path="res://assets/textures/tile_diamond.png" id="10_sx8rm"]
|
||||||
|
[ext_resource type="BoxMesh" uid="uid://fy4bhoeii40c" path="res://addons/enhanced_gridmap/meshlibrary/tile_safe_zone.tres" id="10_uwjsj"]
|
||||||
[ext_resource type="BoxMesh" uid="uid://b5cc3prem52r6" path="res://addons/enhanced_gridmap/meshlibrary/tile_freeze.tres" id="11_pgnbl"]
|
[ext_resource type="BoxMesh" uid="uid://b5cc3prem52r6" path="res://addons/enhanced_gridmap/meshlibrary/tile_freeze.tres" id="11_pgnbl"]
|
||||||
[ext_resource type="BoxMesh" uid="uid://dcjdwbffgtutt" path="res://addons/enhanced_gridmap/meshlibrary/tile_non_walkable.tres" id="11_uwjsj"]
|
[ext_resource type="BoxMesh" uid="uid://dcjdwbffgtutt" path="res://addons/enhanced_gridmap/meshlibrary/tile_non_walkable.tres" id="11_uwjsj"]
|
||||||
|
|
||||||
@@ -80,6 +81,7 @@ item/1/shapes = []
|
|||||||
item/1/navigation_mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
|
item/1/navigation_mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
|
||||||
item/1/navigation_layers = 1
|
item/1/navigation_layers = 1
|
||||||
item/2/name = "safe_zone"
|
item/2/name = "safe_zone"
|
||||||
|
item/2/mesh = ExtResource("10_uwjsj")
|
||||||
item/2/mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
|
item/2/mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
|
||||||
item/2/mesh_cast_shadow = 1
|
item/2/mesh_cast_shadow = 1
|
||||||
item/2/shapes = []
|
item/2/shapes = []
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
[gd_resource type="BoxMesh" format=3 uid="uid://fy4bhoeii40c"]
|
[gd_resource type="BoxMesh" format=3 uid="uid://fy4bhoeii40c"]
|
||||||
|
|
||||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ou2ex"]
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ou2ex"]
|
||||||
|
transparency = 1
|
||||||
albedo_color = Color(0.38039216, 1, 0.33333334, 1)
|
albedo_color = Color(0.38039216, 1, 0.33333334, 1)
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
[ext_resource type="Texture2D" uid="uid://d2t23a885h1i0" path="res://assets/graphics/vfx/effects/freeze.png" id="2_gsxsy"]
|
[ext_resource type="Texture2D" uid="uid://d2t23a885h1i0" path="res://assets/graphics/vfx/effects/freeze.png" id="2_gsxsy"]
|
||||||
[ext_resource type="Texture2D" uid="uid://lykg7d54qrof" path="res://assets/graphics/vfx/effects/ghost.png" id="3_hg3tj"]
|
[ext_resource type="Texture2D" uid="uid://lykg7d54qrof" path="res://assets/graphics/vfx/effects/ghost.png" id="3_hg3tj"]
|
||||||
[ext_resource type="Texture2D" uid="uid://45twcoribm0b" path="res://assets/graphics/vfx/effects/speed.png" id="4_8bjou"]
|
[ext_resource type="Texture2D" uid="uid://45twcoribm0b" path="res://assets/graphics/vfx/effects/speed.png" id="4_8bjou"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://c718e7y7qm03x" path="res://assets/graphics/vfx/effects/bullrun_ui.png" id="5_gsxsy"]
|
||||||
[ext_resource type="Texture2D" uid="uid://dun5j8mrxpumo" path="res://assets/graphics/vfx/effects/stunned.png" id="5_jmlpd"]
|
[ext_resource type="Texture2D" uid="uid://dun5j8mrxpumo" path="res://assets/graphics/vfx/effects/stunned.png" id="5_jmlpd"]
|
||||||
[ext_resource type="Texture2D" uid="uid://mnsqay5hs0jh" path="res://assets/graphics/vfx/effects/wall.png" id="6_q227o"]
|
[ext_resource type="Texture2D" uid="uid://mnsqay5hs0jh" path="res://assets/graphics/vfx/effects/wall.png" id="6_q227o"]
|
||||||
|
|
||||||
@@ -1967,6 +1968,198 @@ region = Rect2(1000, 1750, 125, 125)
|
|||||||
atlas = ExtResource("4_8bjou")
|
atlas = ExtResource("4_8bjou")
|
||||||
region = Rect2(1125, 1750, 125, 125)
|
region = Rect2(1125, 1750, 125, 125)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_hg3tj"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(0, 0, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_8bjou"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(682, 0, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_jmlpd"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(1364, 0, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_q227o"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(2046, 0, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_oaoac"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(2728, 0, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_xpe87"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(3410, 0, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_adqj4"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(0, 512, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_5m36t"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(682, 512, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_ng11y"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(1364, 512, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_d36hw"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(2046, 512, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_u4va7"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(2728, 512, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_tvg0i"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(3410, 512, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_xu137"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(0, 1024, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_0sktw"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(682, 1024, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_0k7wr"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(1364, 1024, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_2g3nj"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(2046, 1024, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_e00q3"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(2728, 1024, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_xefxw"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(3410, 1024, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_7f71x"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(0, 1536, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_lcyov"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(682, 1536, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_iy2fp"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(1364, 1536, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_2ahmr"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(2046, 1536, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_1fdg2"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(2728, 1536, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_8m0vd"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(3410, 1536, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_y1kkk"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(0, 2048, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_k4uv6"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(682, 2048, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_juism"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(1364, 2048, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_1fe7s"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(2046, 2048, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_qh3vq"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(2728, 2048, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_edbcw"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(3410, 2048, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_tsdhc"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(0, 2560, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_pmelt"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(682, 2560, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_s51m1"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(1364, 2560, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_gxmnc"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(2046, 2560, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_fp82g"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(2728, 2560, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_nrflg"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(3410, 2560, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_ed58s"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(0, 3072, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_vmbou"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(682, 3072, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_3tqxh"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(1364, 3072, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_jgcx2"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(2046, 3072, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_ydiin"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(2728, 3072, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_3vg2t"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(3410, 3072, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_u84fk"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(0, 3584, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_3qpd2"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(682, 3584, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_ultdv"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(1364, 3584, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_4nprg"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(2046, 3584, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_piqxh"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(2728, 3584, 682, 512)
|
||||||
|
|
||||||
|
[sub_resource type="AtlasTexture" id="AtlasTexture_qk02p"]
|
||||||
|
atlas = ExtResource("5_gsxsy")
|
||||||
|
region = Rect2(3410, 3584, 682, 512)
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_yi8v5"]
|
[sub_resource type="AtlasTexture" id="AtlasTexture_yi8v5"]
|
||||||
atlas = ExtResource("5_jmlpd")
|
atlas = ExtResource("5_jmlpd")
|
||||||
region = Rect2(0, 0, 284, 284)
|
region = Rect2(0, 0, 284, 284)
|
||||||
@@ -4306,6 +4499,155 @@ animations = [{
|
|||||||
}, {
|
}, {
|
||||||
"frames": [{
|
"frames": [{
|
||||||
"duration": 1.0,
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_hg3tj")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_8bjou")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_jmlpd")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_q227o")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_oaoac")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_xpe87")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_adqj4")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_5m36t")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_ng11y")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_d36hw")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_u4va7")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_tvg0i")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_xu137")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_0sktw")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_0k7wr")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_2g3nj")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_e00q3")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_xefxw")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_7f71x")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_lcyov")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_iy2fp")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_2ahmr")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_1fdg2")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_8m0vd")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_y1kkk")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_k4uv6")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_juism")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_1fe7s")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_qh3vq")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_edbcw")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_tsdhc")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_pmelt")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_s51m1")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_gxmnc")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_fp82g")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_nrflg")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_ed58s")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_vmbou")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_3tqxh")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_jgcx2")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_ydiin")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_3vg2t")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_u84fk")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_3qpd2")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_ultdv")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_4nprg")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_piqxh")
|
||||||
|
}, {
|
||||||
|
"duration": 1.0,
|
||||||
|
"texture": SubResource("AtlasTexture_qk02p")
|
||||||
|
}],
|
||||||
|
"loop": true,
|
||||||
|
"name": &"stop-phase",
|
||||||
|
"speed": 30.0
|
||||||
|
}, {
|
||||||
|
"frames": [{
|
||||||
|
"duration": 1.0,
|
||||||
"texture": SubResource("AtlasTexture_yi8v5")
|
"texture": SubResource("AtlasTexture_yi8v5")
|
||||||
}, {
|
}, {
|
||||||
"duration": 1.0,
|
"duration": 1.0,
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
|
|||||||
compress/hdr_compression=1
|
compress/hdr_compression=1
|
||||||
compress/normal_map=0
|
compress/normal_map=0
|
||||||
compress/channel_pack=0
|
compress/channel_pack=0
|
||||||
mipmaps/generate=false
|
mipmaps/generate=true
|
||||||
mipmaps/limit=-1
|
mipmaps/limit=-1
|
||||||
roughness/mode=0
|
roughness/mode=0
|
||||||
roughness/src_normal=""
|
roughness/src_normal=""
|
||||||
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
|
|||||||
process/hdr_as_srgb=false
|
process/hdr_as_srgb=false
|
||||||
process/hdr_clamp_exposure=false
|
process/hdr_clamp_exposure=false
|
||||||
process/size_limit=0
|
process/size_limit=0
|
||||||
detect_3d/compress_to=1
|
detect_3d/compress_to=0
|
||||||
|
|||||||
|
After Width: | Height: | Size: 11 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://sthm2v27rgyt"
|
||||||
|
path="res://.godot/imported/1.png-de2857755dd5de354edd5522932d810d.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/graphics/vfx/stop_n_go/1.png"
|
||||||
|
dest_files=["res://.godot/imported/1.png-de2857755dd5de354edd5522932d810d.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
|
After Width: | Height: | Size: 20 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://rptj4ywi1tms"
|
||||||
|
path="res://.godot/imported/2.png-9d3a83015cd201ee197011ceb6d42fb1.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/graphics/vfx/stop_n_go/2.png"
|
||||||
|
dest_files=["res://.godot/imported/2.png-9d3a83015cd201ee197011ceb6d42fb1.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
|
After Width: | Height: | Size: 22 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dxsy87v04oytl"
|
||||||
|
path="res://.godot/imported/3.png-011462d22e36460421c5ea9540562f82.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/graphics/vfx/stop_n_go/3.png"
|
||||||
|
dest_files=["res://.godot/imported/3.png-011462d22e36460421c5ea9540562f82.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
|
After Width: | Height: | Size: 76 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://c63euesgl1gi5"
|
||||||
|
path="res://.godot/imported/bull_warning.png-94b94c984b16c0cd5fbc02d0e2cc731d.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/graphics/vfx/stop_n_go/bull_warning.png"
|
||||||
|
dest_files=["res://.godot/imported/bull_warning.png-94b94c984b16c0cd5fbc02d0e2cc731d.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
|
After Width: | Height: | Size: 86 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://ciisxcnnh4b3b"
|
||||||
|
path="res://.godot/imported/go.png-135d17710334216e8e3a1701b67c3dfd.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/graphics/vfx/stop_n_go/go.png"
|
||||||
|
dest_files=["res://.godot/imported/go.png-135d17710334216e8e3a1701b67c3dfd.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
|
After Width: | Height: | Size: 430 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://c6kisheilvgfp"
|
||||||
|
path="res://.godot/imported/safezone_appear.png-b4d9c3bf6ea84a571d25c2f77c377a7e.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/graphics/vfx/stop_n_go/safezone_appear.png"
|
||||||
|
dest_files=["res://.godot/imported/safezone_appear.png-b4d9c3bf6ea84a571d25c2f77c377a7e.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
|
After Width: | Height: | Size: 251 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cat0vd2afn465"
|
||||||
|
path="res://.godot/imported/times_up_muter.png-2c113d01226305762c7f0419f4b82889.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/graphics/vfx/stop_n_go/times_up_muter.png"
|
||||||
|
dest_files=["res://.godot/imported/times_up_muter.png-2c113d01226305762c7f0419f4b82889.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
|
After Width: | Height: | Size: 52 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://d2pgt0grjgfx3"
|
||||||
|
path="res://.godot/imported/timesup.png-7ec99c53c29ab2cd560a4c4c1015dd87.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/graphics/vfx/stop_n_go/timesup.png"
|
||||||
|
dest_files=["res://.godot/imported/timesup.png-7ec99c53c29ab2cd560a4c4c1015dd87.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
|
After Width: | Height: | Size: 10 KiB |
@@ -0,0 +1,40 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://kvhu1exp34m1"
|
||||||
|
path="res://.godot/imported/timesup_bg.png-4a3fd9745629cd2ade5fa992b587e9b4.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/graphics/vfx/stop_n_go/timesup_bg.png"
|
||||||
|
dest_files=["res://.godot/imported/timesup_bg.png-4a3fd9745629cd2ade5fa992b587e9b4.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/uastc_level=0
|
||||||
|
compress/rdo_quality_loss=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/channel_remap/red=0
|
||||||
|
process/channel_remap/green=1
|
||||||
|
process/channel_remap/blue=2
|
||||||
|
process/channel_remap/alpha=3
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
@@ -92,6 +92,9 @@ current = true
|
|||||||
fov = 21.0
|
fov = 21.0
|
||||||
size = 15.0
|
size = 15.0
|
||||||
|
|
||||||
|
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=12971344]
|
||||||
|
environment = ExtResource("4_ky38j")
|
||||||
|
|
||||||
[node name="PlayerboardPanel" type="PanelContainer" parent="." unique_id=1098203639]
|
[node name="PlayerboardPanel" type="PanelContainer" parent="." unique_id=1098203639]
|
||||||
material = SubResource("ShaderMaterial_j8jky")
|
material = SubResource("ShaderMaterial_j8jky")
|
||||||
anchors_preset = 4
|
anchors_preset = 4
|
||||||
@@ -1140,9 +1143,6 @@ theme_override_styles/focus = SubResource("StyleBoxFlat_1cewu")
|
|||||||
placeholder_text = "Chat"
|
placeholder_text = "Chat"
|
||||||
alignment = 1
|
alignment = 1
|
||||||
|
|
||||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=12971344]
|
|
||||||
environment = ExtResource("4_ky38j")
|
|
||||||
|
|
||||||
[node name="MessageBar" type="PanelContainer" parent="." unique_id=142729129]
|
[node name="MessageBar" type="PanelContainer" parent="." unique_id=142729129]
|
||||||
visible = false
|
visible = false
|
||||||
anchors_preset = 2
|
anchors_preset = 2
|
||||||
|
|||||||
@@ -621,10 +621,13 @@ func receive_spawn_positions_update(occupied_positions: Array):
|
|||||||
highlighted_spawn_points.erase(pos)
|
highlighted_spawn_points.erase(pos)
|
||||||
if enhanced_gridmap:
|
if enhanced_gridmap:
|
||||||
# Clear the highlight from Layer 2 (Overlay) instead of overwriting Floor 0
|
# Clear the highlight from Layer 2 (Overlay) instead of overwriting Floor 0
|
||||||
enhanced_gridmap.set_cell_item(
|
# PROTECTION: Never clear if it's a Safe Zone (ID 2)
|
||||||
Vector3i(pos.x, 2, pos.y),
|
var current_l2 = enhanced_gridmap.get_cell_item(Vector3i(pos.x, 2, pos.y))
|
||||||
-1
|
if current_l2 != 2:
|
||||||
)
|
enhanced_gridmap.set_cell_item(
|
||||||
|
Vector3i(pos.x, 2, pos.y),
|
||||||
|
-1
|
||||||
|
)
|
||||||
|
|
||||||
# Now highlight available positions
|
# Now highlight available positions
|
||||||
highlight_available_spawn_points()
|
highlight_available_spawn_points()
|
||||||
|
|||||||
@@ -31,17 +31,8 @@ spacing_glyph = 5
|
|||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0)
|
||||||
collision_layer = 2
|
collision_layer = 2
|
||||||
script = ExtResource("1_qecr4")
|
script = ExtResource("1_qecr4")
|
||||||
is_bot = null
|
|
||||||
enhanced_gridmap_path = null
|
|
||||||
current_position = null
|
|
||||||
cell_size = Vector3(1, 1, 1)
|
cell_size = Vector3(1, 1, 1)
|
||||||
cell_offset = null
|
|
||||||
goals = null
|
|
||||||
playerboard = null
|
|
||||||
movement_range = null
|
|
||||||
use_diagonal_movement = true
|
use_diagonal_movement = true
|
||||||
is_my_turn = null
|
|
||||||
has_moved_this_turn = null
|
|
||||||
|
|
||||||
[node name="Masbro" parent="." unique_id=1585899496 instance=ExtResource("2_mjsl8")]
|
[node name="Masbro" parent="." unique_id=1585899496 instance=ExtResource("2_mjsl8")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.485, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.485, 0)
|
||||||
@@ -151,9 +142,7 @@ transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0, 1
|
|||||||
visible = false
|
visible = false
|
||||||
billboard = 1
|
billboard = 1
|
||||||
sprite_frames = ExtResource("10_y4r1p")
|
sprite_frames = ExtResource("10_y4r1p")
|
||||||
animation = &"wall-initiator"
|
animation = &"stop-phase"
|
||||||
frame = 149
|
|
||||||
frame_progress = 1.0
|
|
||||||
|
|
||||||
[node name="receiver_skill_stunned" type="AnimatedSprite3D" parent="." unique_id=56953581]
|
[node name="receiver_skill_stunned" type="AnimatedSprite3D" parent="." unique_id=56953581]
|
||||||
transform = Transform3D(0.5, 0, 0, 0, -2.1855694e-08, -0.5, 0, 0.5, -2.1855694e-08, 0, 1.5653763, 0)
|
transform = Transform3D(0.5, 0, 0, 0, -2.1855694e-08, -0.5, 0, 0.5, -2.1855694e-08, 0, 1.5653763, 0)
|
||||||
@@ -168,7 +157,7 @@ frame_progress = 1.0
|
|||||||
transform = Transform3D(0.5, 0, 0, 0, -2.1855694e-08, -0.5, 0, 0.5, -2.1855694e-08, 0, 1.5653763, 0)
|
transform = Transform3D(0.5, 0, 0, 0, -2.1855694e-08, -0.5, 0, 0.5, -2.1855694e-08, 0, 1.5653763, 0)
|
||||||
visible = false
|
visible = false
|
||||||
sprite_frames = ExtResource("10_y4r1p")
|
sprite_frames = ExtResource("10_y4r1p")
|
||||||
animation = &"freeze-initiator"
|
animation = &"attack-mode-receiver-top"
|
||||||
|
|
||||||
[node name="attack_mode_bot" type="AnimatedSprite3D" parent="." unique_id=1320274503]
|
[node name="attack_mode_bot" type="AnimatedSprite3D" parent="." unique_id=1320274503]
|
||||||
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0, -0.6701627, 0)
|
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0, -0.6701627, 0)
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
[gd_scene format=3 uid="uid://dbqj67js76fa5"]
|
||||||
|
|
||||||
|
[node name="StopNGoAnimation" type="Control" unique_id=257399947]
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
|
||||||
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1614214519]
|
||||||
@@ -181,10 +181,8 @@ func clear_highlights():
|
|||||||
# Check Layer 2 (Overlay Highlight)
|
# Check Layer 2 (Overlay Highlight)
|
||||||
var l2_pos = Vector3i(cell.x, 2, cell.y)
|
var l2_pos = Vector3i(cell.x, 2, cell.y)
|
||||||
var l2_item = enhanced_gridmap.get_cell_item(l2_pos)
|
var l2_item = enhanced_gridmap.get_cell_item(l2_pos)
|
||||||
# Only clear if it looks like a highlight (e.g. ID 1)
|
# Only clear if it is a highlight and NOT a Safe Zone (ID 2)
|
||||||
# or generally just clear layer 2 if we assume we own it for highlights?
|
if l2_item != -1 and l2_item != 2:
|
||||||
# Safest is to check against hover_id or typical highlight IDs.
|
|
||||||
if l2_item != -1:
|
|
||||||
enhanced_gridmap.set_cell_item(l2_pos, -1)
|
enhanced_gridmap.set_cell_item(l2_pos, -1)
|
||||||
|
|
||||||
highlighted_cells.clear()
|
highlighted_cells.clear()
|
||||||
|
|||||||
@@ -99,18 +99,18 @@ func _process(delta):
|
|||||||
|
|
||||||
if multiplayer.is_server():
|
if multiplayer.is_server():
|
||||||
if current_phase == Phase.GO:
|
if current_phase == Phase.GO:
|
||||||
var int_timer = int(ceil(phase_timer))
|
# Spawn all 3 safe zones at once, 3 seconds before STOP
|
||||||
if int_timer == 3 and spawned_safe_zones == 0 and phase_timer <= 3.0:
|
if phase_timer <= 3.0 and spawned_safe_zones == 0:
|
||||||
_spawn_dynamic_safe_zone()
|
print("[StopNGo] GO phase ending soon. Spawning 3 safe zones...")
|
||||||
elif int_timer == 2 and spawned_safe_zones == 1 and phase_timer <= 2.0:
|
for i in range(3):
|
||||||
_spawn_dynamic_safe_zone()
|
_spawn_dynamic_safe_zone()
|
||||||
elif int_timer == 1 and spawned_safe_zones == 2 and phase_timer <= 1.0:
|
|
||||||
_spawn_dynamic_safe_zone()
|
|
||||||
|
|
||||||
if phase_timer <= 0:
|
if phase_timer <= 0:
|
||||||
if current_phase == Phase.GO:
|
if current_phase == Phase.GO:
|
||||||
|
print("[StopNGo] GO Timer reached 0. Starting STOP Phase.")
|
||||||
_start_phase(Phase.STOP)
|
_start_phase(Phase.STOP)
|
||||||
else:
|
else:
|
||||||
|
print("[StopNGo] STOP Timer reached 0. Starting GO Phase.")
|
||||||
_start_phase(Phase.GO)
|
_start_phase(Phase.GO)
|
||||||
|
|
||||||
# Update HUD locally
|
# Update HUD locally
|
||||||
@@ -499,8 +499,9 @@ func _is_in_safe_zone(pos: Vector2i) -> bool:
|
|||||||
gridmap = get_node_or_null("/root/Main/EnhancedGridMap")
|
gridmap = get_node_or_null("/root/Main/EnhancedGridMap")
|
||||||
if not gridmap: return false
|
if not gridmap: return false
|
||||||
|
|
||||||
var floor_tile = gridmap.get_cell_item(Vector3i(pos.x, 0, pos.y))
|
# Check Layer 2 (Overlay layer) for Safe Zone tile
|
||||||
return floor_tile == TILE_SAFE
|
var overlay_tile = gridmap.get_cell_item(Vector3i(pos.x, 2, pos.y))
|
||||||
|
return overlay_tile == TILE_SAFE
|
||||||
|
|
||||||
func _spawn_dynamic_safe_zone():
|
func _spawn_dynamic_safe_zone():
|
||||||
if not multiplayer.is_server(): return
|
if not multiplayer.is_server(): return
|
||||||
@@ -523,15 +524,17 @@ func _spawn_dynamic_safe_zone():
|
|||||||
var rect = possible_rects.pick_random()
|
var rect = possible_rects.pick_random()
|
||||||
active_safe_zone_rects.append(rect)
|
active_safe_zone_rects.append(rect)
|
||||||
spawned_safe_zones += 1
|
spawned_safe_zones += 1
|
||||||
|
print("[StopNGo] Spawning Safe Zone %d at %s" % [spawned_safe_zones, rect])
|
||||||
|
|
||||||
# Paint floor to TILE_SAFE
|
# Paint Floor 2 (Overlay layer) to TILE_SAFE
|
||||||
|
# This allows seeing items below on Floor 1
|
||||||
for rx in range(rect.size.x):
|
for rx in range(rect.size.x):
|
||||||
for rz in range(rect.size.y):
|
for rz in range(rect.size.y):
|
||||||
var px = rect.position.x + rx
|
var px = rect.position.x + rx
|
||||||
var pz = rect.position.y + rz
|
var pz = rect.position.y + rz
|
||||||
gridmap.set_cell_item(Vector3i(px, 0, pz), TILE_SAFE)
|
gridmap.set_cell_item(Vector3i(px, 2, pz), TILE_SAFE)
|
||||||
if can_rpc() and main:
|
if can_rpc() and main:
|
||||||
main.rpc("sync_grid_item", px, 0, pz, TILE_SAFE)
|
main.rpc("sync_grid_item", px, 2, pz, TILE_SAFE)
|
||||||
|
|
||||||
func _is_valid_safe_zone_area(gridmap: Node, start_x: int, start_z: int, width: int, height: int) -> bool:
|
func _is_valid_safe_zone_area(gridmap: Node, start_x: int, start_z: int, width: int, height: int) -> bool:
|
||||||
# Avoid bounds or start/finish cols
|
# Avoid bounds or start/finish cols
|
||||||
@@ -546,16 +549,12 @@ func _is_valid_safe_zone_area(gridmap: Node, start_x: int, start_z: int, width:
|
|||||||
for x in range(start_x, start_x + width):
|
for x in range(start_x, start_x + width):
|
||||||
for z in range(start_z, start_z + height):
|
for z in range(start_z, start_z + height):
|
||||||
var floor_0 = gridmap.get_cell_item(Vector3i(x, 0, z))
|
var floor_0 = gridmap.get_cell_item(Vector3i(x, 0, z))
|
||||||
var floor_1 = gridmap.get_cell_item(Vector3i(x, 1, z))
|
|
||||||
|
|
||||||
# Floor must be purely TILE_WALKABLE (0)
|
# Floor must be purely TILE_WALKABLE (0)
|
||||||
|
# We no longer check Floor 1 (items) so safe zones can spawn ON TOP of tiles
|
||||||
if floor_0 != TILE_WALKABLE:
|
if floor_0 != TILE_WALKABLE:
|
||||||
return false
|
return false
|
||||||
|
|
||||||
# Floor 1 must be empty (-1) - no items or obstacles
|
|
||||||
if floor_1 != -1:
|
|
||||||
return false
|
|
||||||
|
|
||||||
return true
|
return true
|
||||||
|
|
||||||
func _clear_dynamic_safe_zones():
|
func _clear_dynamic_safe_zones():
|
||||||
@@ -564,17 +563,19 @@ func _clear_dynamic_safe_zones():
|
|||||||
if not gridmap: return
|
if not gridmap: return
|
||||||
var main = get_node_or_null("/root/Main")
|
var main = get_node_or_null("/root/Main")
|
||||||
|
|
||||||
|
print("[StopNGo] Clearing %d active safe zones." % active_safe_zone_rects.size())
|
||||||
|
|
||||||
for rect in active_safe_zone_rects:
|
for rect in active_safe_zone_rects:
|
||||||
for rx in range(rect.size.x):
|
for rx in range(rect.size.x):
|
||||||
for rz in range(rect.size.y):
|
for rz in range(rect.size.y):
|
||||||
var px = rect.position.x + rx
|
var px = rect.position.x + rx
|
||||||
var pz = rect.position.y + rz
|
var pz = rect.position.y + rz
|
||||||
|
|
||||||
# Only clear if it is actually still a safe zone
|
# Only clear layer 2
|
||||||
if gridmap.get_cell_item(Vector3i(px, 0, pz)) == TILE_SAFE:
|
if gridmap.get_cell_item(Vector3i(px, 2, pz)) == TILE_SAFE:
|
||||||
gridmap.set_cell_item(Vector3i(px, 0, pz), TILE_WALKABLE)
|
gridmap.set_cell_item(Vector3i(px, 2, pz), -1)
|
||||||
if can_rpc() and main:
|
if can_rpc() and main:
|
||||||
main.rpc("sync_grid_item", px, 0, pz, TILE_WALKABLE)
|
main.rpc("sync_grid_item", px, 2, pz, -1)
|
||||||
|
|
||||||
active_safe_zone_rects.clear()
|
active_safe_zone_rects.clear()
|
||||||
spawned_safe_zones = 0
|
spawned_safe_zones = 0
|
||||||
|
|||||||
@@ -497,7 +497,7 @@ func _apply_settings():
|
|||||||
"""Apply current settings to UI elements."""
|
"""Apply current settings to UI elements."""
|
||||||
# Apply joystick visibility
|
# Apply joystick visibility
|
||||||
if virtual_joystick:
|
if virtual_joystick:
|
||||||
virtual_joystick.visible = joystick_enabled
|
virtual_joystick.visible = joystick_enabled and _is_touch_device()
|
||||||
|
|
||||||
# Apply touch buttons visibility - FORCED ON per request to "just show them"
|
# Apply touch buttons visibility - FORCED ON per request to "just show them"
|
||||||
# Apply touch buttons visibility
|
# Apply touch buttons visibility
|
||||||
|
|||||||