Some fixes
Disabled feet IK, proper handling of exit room Added quest system from proto2
This commit is contained in:
@@ -92,32 +92,48 @@ func build_rooms():
|
||||
window_rooms.push_back(left)
|
||||
window_rooms.push_back(right)
|
||||
print("rooms build complete")
|
||||
var special_rooms = {
|
||||
"exit_room": {
|
||||
"alloc": size_x * size_y
|
||||
},
|
||||
"master_room": {
|
||||
"alloc": floors * size_x * size_y
|
||||
},
|
||||
"jail_room": {
|
||||
"alloc": floors * size_x * size_y,
|
||||
},
|
||||
"kitchen_room": {
|
||||
"alloc": size_x * size_y
|
||||
}
|
||||
}
|
||||
func alloc_special_rooms():
|
||||
var allocated = []
|
||||
for k in special_rooms.keys():
|
||||
if special_rooms[k].has("id"):
|
||||
allocated.push_back(special_rooms[k].id)
|
||||
for k in special_rooms.keys():
|
||||
if special_rooms[k].has("id"):
|
||||
continue
|
||||
while true:
|
||||
var room_id = randi() % special_rooms[k].alloc
|
||||
if !room_id in allocated:
|
||||
special_rooms[k].id = room_id
|
||||
allocated.push_back(room_id)
|
||||
break
|
||||
for k in special_rooms.keys():
|
||||
var room_id = special_rooms[k].id
|
||||
dungeon[room_id].set_meta(k, true)
|
||||
if k == "master_room":
|
||||
var player_spawn = Spatial.new()
|
||||
dungeon[room_id].add_child(player_spawn)
|
||||
player_spawn.name = "player-spawn"
|
||||
player_spawn.add_to_group("spawn")
|
||||
if k == "exit_room":
|
||||
print("exit room: ", room_id)
|
||||
|
||||
func build_special_rooms():
|
||||
print("build_special_rooms")
|
||||
var special_rooms = []
|
||||
var p_id = window_rooms[randi() % window_rooms.size()]
|
||||
special_rooms.push_back(p_id)
|
||||
# var e_id = -1
|
||||
# while true:
|
||||
# e_id = window_rooms[randi() % (size_x * size_]
|
||||
# if !e_id in special_rooms:
|
||||
# break
|
||||
# special_rooms.push_back(e_id)
|
||||
while special_rooms.size() < 3:
|
||||
var r_id = randi() % dungeon.size()
|
||||
if !r_id in special_rooms:
|
||||
special_rooms.push_back(r_id)
|
||||
var j_id = special_rooms[1]
|
||||
var k_id = special_rooms[2]
|
||||
|
||||
dungeon[p_id].set_meta("master_room", true)
|
||||
dungeon[j_id].set_meta("jail_room", true)
|
||||
dungeon[k_id].set_meta("kitchen_room", true)
|
||||
# dungeon[e_id].set_meta("exit_room", true)
|
||||
var player_spawn = Spatial.new()
|
||||
dungeon[p_id].add_child(player_spawn)
|
||||
player_spawn.name = "player-spawn"
|
||||
player_spawn.add_to_group("spawn")
|
||||
alloc_special_rooms()
|
||||
|
||||
var state = 0
|
||||
func _ready():
|
||||
|
||||
@@ -229,6 +229,10 @@ func create_rooms():
|
||||
master_room()
|
||||
elif has_meta("kitchen_room"):
|
||||
master_room()
|
||||
elif has_meta("exit_room"):
|
||||
for e in get_children():
|
||||
if e.is_in_group("furniture"):
|
||||
e.queue_free()
|
||||
elif has_meta("stairs"):
|
||||
master_room()
|
||||
var stairs_i = stairs.instance()
|
||||
|
||||
@@ -1,5 +1,18 @@
|
||||
[gd_scene load_steps=2 format=2]
|
||||
[gd_scene load_steps=3 format=2]
|
||||
|
||||
[ext_resource path="res://scenes/maps/stairs.escn" type="PackedScene" id=1]
|
||||
|
||||
[sub_resource type="BoxShape" id=1]
|
||||
extents = Vector3( 1.13086, 0.0458848, 0.64188 )
|
||||
|
||||
[node name="stairs" instance=ExtResource( 1 )]
|
||||
|
||||
[node name="StaticBody" type="StaticBody" parent="." index="4"]
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="StaticBody" index="0"]
|
||||
transform = Transform( 0.783986, -0.620779, 0, 0.620779, 0.783986, 0, 0, 0, 1, -0.718359, 0.66685, 1.91067 )
|
||||
shape = SubResource( 1 )
|
||||
|
||||
[node name="CollisionShape2" type="CollisionShape" parent="StaticBody" index="1"]
|
||||
transform = Transform( -0.768529, 0.639815, -3.25444e-07, 0.639815, 0.768529, 1.60706e-08, 2.60396e-07, -1.95874e-07, -1, -0.0615042, 2.2555, -1.95211 )
|
||||
shape = SubResource( 1 )
|
||||
|
||||
Reference in New Issue
Block a user