From 588167dbae301bc28fa1f966f494602b1405de4d Mon Sep 17 00:00:00 2001 From: incredibleLeitman Date: Sun, 26 Jan 2020 00:48:08 +0100 Subject: [PATCH] #43 #43 46 --- Characters/Meldewesen/Meldewesen.gd | 194 +++++++++++++++++++------- Characters/Meldewesen/Meldewesen.tscn | 10 +- Characters/Player/Player.gd | 28 +--- Characters/Player/Player.tscn | 36 ++--- Characters/Player/UI/UI.gd | 4 +- Characters/Player/UI/UI.tscn | 1 + Global/Daytime.gd | 5 +- Global/Pills.gd | 2 +- Level/World.tscn | 156 +++++++++++---------- 9 files changed, 265 insertions(+), 171 deletions(-) diff --git a/Characters/Meldewesen/Meldewesen.gd b/Characters/Meldewesen/Meldewesen.gd index 5ad39b4..b5ab9ae 100644 --- a/Characters/Meldewesen/Meldewesen.gd +++ b/Characters/Meldewesen/Meldewesen.gd @@ -4,77 +4,175 @@ extends NPC export(NodePath) var _visibility_path: NodePath export(int) var _player_follow_pill_level = 3 -var _visibility: Area -var _playerRef -var _audioPlayer: AudioStreamPlayer3D +const MAX_CMDS = 5 # maximum repeaded commands before Meldewesen gets piss +const CMD_DIFF_MS = 4000 # time in ms before new command +enum BEHAVIOR { + NORMAL = 0, + GO_WORK = 1, + GO_HOME = 2, + TAKE_PILLS = 3, + DO_JOB = 4, + ANGRY = 5 +} +var _curMood # current set behavior + +var _visibility: Area +var _interactArea: Area +var _audioPlayer: AudioStreamPlayer3D +var _playerRef + +var _followingPlayer = false # true if Meldewesen finds player "suspicios" and follows +var _huntingPlayer = false # active if the Meldewesen wants to "catch" the player +var _seeingPlayer = false # as long as player is in visible range +var _lastSound = 0 # timestamp of last played message +var _countCmds = 0 # count of spoken commands -> after MAX_CMDS Meldewesen gets pissy func _ready(): Logger.set_logger_level(Logger.LOG_LEVEL_FINE) - _visibility = get_node(_visibility_path) as Area _audioPlayer = get_node("AudioStreamPlayer3D") as AudioStreamPlayer3D + assert(null != _audioPlayer) - if _visibility: - _visibility.connect("body_entered", self, "_on_body_entered_visibility") - _visibility.connect("body_exited", self, "_on_body_exited_visibility") + _visibility = get_node(_visibility_path) as Area + assert(null != _visibility) + _visibility.connect("body_entered", self, "_on_body_entered_visibility") + _visibility.connect("body_exited", self, "_on_body_exited_visibility") + + # setup collisions with player + var _interactArea = get_node("InteractArea") as Area + assert(null != _interactArea) + _interactArea.connect("area_entered", self, "_on_area_entered") # TODO: does this implementation have to be that way? for player in get_tree().get_nodes_in_group("Player"): - _playerRef = player + if player.is_class("KinematicBody"): + _playerRef = player + break + assert(null != _playerRef) func _process(_delta): + # movement if current_target: - # stop following player if pill level is high enough and player is not in an illegal area - if Pills.get_round_level() > _player_follow_pill_level and _playerRef.Is_in_Illegal_Area() == false: - Logger.info("player pill level ok and no illegal actions detected!") - current_target = null - # otherwise set new position of player - else: + # continue following player after illegal action or low pill level + if _huntingPlayer or (_followingPlayer and Pills.get_round_level() <= _player_follow_pill_level): current_target = _playerRef.transform.origin + # stop following player if pill level is high enough and player is not in an illegal area + else: + Logger.info("player pill level ok and no illegal actions detected!") + _followingPlayer = false + current_target = null + + if _seeingPlayer: + # logic + _set_behavior() + + # audio + if _audioPlayer.stream != null: + var cur_time = OS.get_ticks_msec() + if cur_time - _lastSound > CMD_DIFF_MS: + _audioPlayer.play() + _lastSound = cur_time + _countCmds += 1 -func _on_body_entered_visibility(body: PhysicsBody): +func _on_area_entered (area: Area): + if area.is_in_group("Player") and _huntingPlayer: + Logger.info("caught player!") + Daytime.emit_signal("respawn") + + +func _load_sound (): + match _curMood: + BEHAVIOR.NORMAL: + _audioPlayer.stream = null + BEHAVIOR.GO_WORK: + Logger.info("say go to work") + _audioPlayer.stream = load("res://Resources/Audio/to-work.wav") + BEHAVIOR.GO_HOME: + Logger.info("say go home") + _audioPlayer.stream = load("res://Resources/Audio/go-home.wav") + BEHAVIOR.TAKE_PILLS: + Logger.info("say take your pills") + _audioPlayer.stream = load("res://Resources/Audio/take-pills.wav") + BEHAVIOR.DO_JOB: + Logger.info("say do your job") + _audioPlayer.stream = load("res://Resources/Audio/do-job.wav") + BEHAVIOR.ANGRY: + Logger.info("say stop!") + _audioPlayer.stream = load("res://Resources/Audio/Stop you violated the law.wav") + + +func _set_behavior (): + if _huntingPlayer == false: + var reason = null + if _playerRef.IsHunted: # player is already marked by another Meldewesen + reason = "player is haunted" + elif _playerRef.is_in_illegalzone(): # player is in illegal area + reason = "player is haunted in illegal area" + elif Pills.get_round_level() == 0: # player has taken no pills in a while + reason = "player's pill level is zero" + get_tree().change_scene("res://Level/PathTestWorld.tscn") + # TODO: outside after WORK_TIME + #elif daytime < Daytime.WORK_TIME: + # TODO: at work after SLEEP_TIME + #elif daytime > Daytime.SLEEP_TIME: + elif _countCmds > MAX_CMDS: # after MAX_CMDS repeats of the same command + reason = "player is seemingly not coorperativ" + + # mark player for all other Meldewesen if seen during illegal action + if reason != null: + Logger.info("catch player! reason: " + reason) + _huntingPlayer = true + _playerRef.IsHunted = true + + if _followingPlayer == false: + # If the player didn't take enough pills lately, they're suspicious -> following + if Pills.get_round_level() <= _player_follow_pill_level: + Logger.info("The player's pill level is too low - following!") + _followingPlayer = true + + if _huntingPlayer or _followingPlayer: + current_target = _playerRef.transform.origin + + var mood = BEHAVIOR.NORMAL + var daytime = Daytime.get_time() + if _playerRef.IsHunted: + mood = BEHAVIOR.ANGRY + # do your job + elif _playerRef.is_in_workzone(): + mood = BEHAVIOR.DO_JOB + # take your pills + elif Pills.get_level() < Pills.get_max()*0.5: + mood = BEHAVIOR.TAKE_PILLS + # go to work + elif daytime < Daytime.WORK_TIME: + mood = BEHAVIOR.GO_WORK + # go home + elif daytime > Daytime.SLEEP_TIME: + mood = BEHAVIOR.GO_HOME + + if mood != _curMood: + Logger.info("new mood: " + BEHAVIOR.keys()[mood] + " with cntcmd: " + String(_countCmds)) + _countCmds = 0 + _curMood = mood + _load_sound() + + +func _on_body_entered_visibility (body: PhysicsBody): #Logger.trace("Meldewesen seeing %s" % [body]) if body.is_in_group("Player"): Logger.info("Seeing player!") + _seeingPlayer = true - _audioPlayer.stream = null - var daytime = Daytime.get_time() - # do your job - if body.is_in_workzone(): - Logger.info("say do your job") - _audioPlayer.stream = load("res://Resources/Audio/do-job.wav") - # take your pills - elif Pills.get_level() < Pills.get_max()*0.1: - Logger.info("say take your pills") - _audioPlayer.stream = load("res://Resources/Audio/take-pills.wav") - # go to work - elif daytime < Daytime.get_max()*0.3: - Logger.info("say go to work") - _audioPlayer.stream = load("res://Resources/Audio/to-work.wav") - # go home - elif daytime > Daytime.get_max()*0.6: - Logger.info("say go home") - _audioPlayer.stream = load("res://Resources/Audio/go-home.wav") - - if _audioPlayer.stream != null: - Logger.info("say play sound") - _audioPlayer.play(); - #yield(audioplayer, "finished") - - # check if player is in illegal area - if _playerRef.Is_in_Illegal_Area(): - Logger.info("player is in illegal area - following!") - current_target = body.transform.origin - # If the player didn't take enough pills lately, they're suspicious -> Run towards them! - elif Pills.get_round_level() <= _player_follow_pill_level: - Logger.info("The player's pill level is too low - following!") - current_target = body.transform.origin + _set_behavior() func _on_body_exited_visibility(body: PhysicsBody): if body.is_in_group("Player"): Logger.info("Stopped seeing player!") - current_target = null + _seeingPlayer = false + _countCmds = 0 + if _huntingPlayer == false and _followingPlayer == false: + current_target = null diff --git a/Characters/Meldewesen/Meldewesen.tscn b/Characters/Meldewesen/Meldewesen.tscn index b4b4fd3..f8cc63c 100644 --- a/Characters/Meldewesen/Meldewesen.tscn +++ b/Characters/Meldewesen/Meldewesen.tscn @@ -60,21 +60,21 @@ collision_layer = 4 collision_mask = 4 [node name="VisibilityCone" type="MeshInstance" parent="Visibility"] -transform = Transform( 1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 2, -3 ) +transform = Transform( 1, 0, 0, 0, -8.74228e-008, 1, 0, -2, -4.37114e-008, 0, 2, -6 ) layers = 3 mesh = SubResource( 6 ) material/0 = null [node name="CollisionShape" type="CollisionShape" parent="Visibility"] -transform = Transform( 1, 0, 0, 0, -4.37114e-008, 1, 0, -1, -4.37114e-008, 0, 2, -3 ) +transform = Transform( 1, 0, 0, 0, -8.74228e-008, 1, 0, -2, -4.37114e-008, 0, 2, -6 ) shape = SubResource( 7 ) -[node name="Area" type="Area" parent="." groups=[ +[node name="InteractArea" type="Area" parent="." groups=[ "Enemy", ]] -[node name="CollisionShape" type="CollisionShape" parent="Area"] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0 ) +[node name="CollisionShape" type="CollisionShape" parent="InteractArea"] +transform = Transform( 1.2, 0, 0, 0, 1, 0, 0, 0, 1.2, 0, 1, 0 ) shape = SubResource( 8 ) [node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."] diff --git a/Characters/Player/Player.gd b/Characters/Player/Player.gd index 5492c90..d7b0e0e 100644 --- a/Characters/Player/Player.gd +++ b/Characters/Player/Player.gd @@ -34,10 +34,12 @@ var _illegal_areas : int var _save_areas : int var _work_areas : int var _prev_look - -# TODO: move to global var _inventory: Control +# public properties +#var IsSuspicios # not needed > Meldewesen handles themselves +var IsHunted # player is beeing flagged if one Meldewesen sees an illegal action + func is_in_illegalzone (): return _illegal_areas > 0 @@ -193,22 +195,7 @@ func _input(event): _camera.rotation_degrees.x = clamp(_camera.rotation_degrees.x, -70, 70) func _on_area_entered (area: Area): - if area.is_in_group("Enemy"): - Logger.info("ermahgerd they touched :-o !") - if _illegal_areas > 0: # or Pills.get_level() == 0: #< Pills.get_max() * 0.5: - # TODO: check why this does not work as intended: - #var player = AudioStreamPlayer3D.new() - #var audio_file = "res://Resources/Audio/dino-eat.wav" - #player.stream = load("res://Resources/Audio/dino-eat.wav") - #add_child(player) - #Logger.info("should play sound again?") - #player.play() - #remove_child(player) - #player. queue_free() - get_node("AudioStreamPlayer3D").play() - yield(get_node("AudioStreamPlayer3D"), "finished") - _on_respawn() # TODO: also raise if Meldewesen is looking at player and pill level reaches treshold! - elif area.is_in_group("Forbidden"): + if area.is_in_group("Forbidden"): Logger.info("entering forbidden area!") _illegal_areas += 1 elif area.is_in_group("Savehouse"): @@ -249,8 +236,3 @@ func _on_respawn (): get_tree().reload_current_scene() _inventory.show() - - -func Is_in_Illegal_Area (): - #Logger.info("illegal areas: " + String(_illegal_areas)) - return _illegal_areas > 0 diff --git a/Characters/Player/Player.tscn b/Characters/Player/Player.tscn index b8407f9..f7a69e3 100644 --- a/Characters/Player/Player.tscn +++ b/Characters/Player/Player.tscn @@ -35,7 +35,9 @@ shader_param/mask = ExtResource( 5 ) [sub_resource type="CylinderShape" id=5] -[sub_resource type="Animation" id=6] +[sub_resource type="CylinderShape" id=6] + +[sub_resource type="Animation" id=7] length = 0.8 loop = true tracks/0/type = "value" @@ -68,7 +70,7 @@ tracks/1/keys = { } ] } -[sub_resource type="Animation" id=7] +[sub_resource type="Animation" id=8] tracks/0/type = "value" tracks/0/path = NodePath("PillTaker/Pills:visible") tracks/0/interp = 1 @@ -134,8 +136,7 @@ tracks/4/keys = { } ] } -[sub_resource type="Animation" id=8] -resource_name = "FadeOut" +[sub_resource type="Animation" id=9] length = 2.0 tracks/0/type = "value" tracks/0/path = NodePath(".:material:shader_param/cutoff") @@ -150,12 +151,10 @@ tracks/0/keys = { "values": [ 1.0, 0.5, 0.7, 0.0 ] } -[sub_resource type="AudioStreamRandomPitch" id=9] +[sub_resource type="AudioStreamRandomPitch" id=10] audio_stream = ExtResource( 9 ) random_pitch = 1.3 -[sub_resource type="CylinderShape" id=10] - [node name="Player" type="KinematicBody" groups=[ "Player", ]] @@ -172,6 +171,7 @@ camera_nodepath = NodePath("Body/PillCameras") [node name="Body" type="Spatial" parent="."] [node name="PillCameras" type="Spatial" parent="Body"] +editor/display_folded = true transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0461721, 1.84617, 0 ) script = ExtResource( 2 ) @@ -229,18 +229,26 @@ remote_path = NodePath("../MaskedView/MaskedCamera") transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0 ) shape = SubResource( 5 ) +[node name="InteractArea" type="Area" parent="." groups=[ +"Player", +]] + +[node name="CollisionShape" type="CollisionShape" parent="InteractArea"] +transform = Transform( 1.2, 0, 0, 0, 1, 0, 0, 0, 1.2, 0, 1, 0 ) +shape = SubResource( 6 ) + [node name="WalkAnimationPlayer" type="AnimationPlayer" parent="."] autoplay = "Walk" -anims/Walk = SubResource( 6 ) +anims/Walk = SubResource( 7 ) [node name="PillAnimationPlayer" type="AnimationPlayer" parent="."] playback_speed = 2.0 -anims/PillTaking = SubResource( 7 ) +anims/PillTaking = SubResource( 8 ) [node name="FadeOutAnimationPlayer" type="AnimationPlayer" parent="."] root_node = NodePath("../Body/PillCameras/ScreenTextureFadeOut") playback_speed = 2.0 -anims/FadeOut = SubResource( 8 ) +anims/FadeOut = SubResource( 9 ) [node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."] stream = ExtResource( 7 ) @@ -256,7 +264,7 @@ script = ExtResource( 8 ) [node name="Footstep1" type="AudioStreamPlayer3D" parent="Footsteps"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1 ) -stream = SubResource( 9 ) +stream = SubResource( 10 ) unit_db = -25.0 pitch_scale = 1.5 @@ -270,10 +278,4 @@ script = ExtResource( 11 ) transform = Transform( 0.1, 0, 0, 0, -4.37114e-009, 0.1, 0, -0.1, -4.37114e-009, 0, 0.7, 0 ) visible = false -[node name="InteractArea" type="Area" parent="."] - -[node name="CollisionShape" type="CollisionShape" parent="InteractArea"] -transform = Transform( 1.2, 0, 0, 0, 1, 0, 0, 0, 1.2, 0, 1, 0 ) -shape = SubResource( 10 ) - [editable path="HUD"] diff --git a/Characters/Player/UI/UI.gd b/Characters/Player/UI/UI.gd index 92f30cd..ddba595 100644 --- a/Characters/Player/UI/UI.gd +++ b/Characters/Player/UI/UI.gd @@ -26,7 +26,6 @@ func _ready(): func add_item (name): Logger.info("Adding item \"" + name + "\" to inventory") - #TODO: global member for inventory? var text if name == "Key": text = _keyTexture @@ -46,4 +45,5 @@ func _process(_delta): _labelDayTime.text = "dayTime: " + String(val) + " - %02d:%02d" % [val/60%24, val%60] _dayTime.value = Daytime.get_time() - _dayTimeVisual.rect_rotation = (val/_dayTime.max_value) * 360 #pivot offset x=67, y = 7 \ No newline at end of file + #_dayTimeVisual.rect_rotation = (val/_dayTime.max_value) * 360 #pivot offset x=67, y = 7 + _dayTimeVisual.rect_rotation = (val/_dayTime.max_value) * 180 \ No newline at end of file diff --git a/Characters/Player/UI/UI.tscn b/Characters/Player/UI/UI.tscn index d409f90..af8b230 100644 --- a/Characters/Player/UI/UI.tscn +++ b/Characters/Player/UI/UI.tscn @@ -68,6 +68,7 @@ margin_left = 466.0 margin_top = -82.0 margin_right = 646.0 margin_bottom = 98.0 +rect_rotation = 180.0 rect_pivot_offset = Vector2( 90, 90 ) texture = ExtResource( 4 ) expand = true diff --git a/Global/Daytime.gd b/Global/Daytime.gd index 7f7b92d..b223e3f 100644 --- a/Global/Daytime.gd +++ b/Global/Daytime.gd @@ -1,8 +1,11 @@ extends Node -const _increase_per_second: float = 0.0 #0.5 +const _increase_per_second: float = 5.0 #0.5 const _max: int = 1440 # 24 hour + 60 mins +const WORK_TIME = _max * 0.3 +const SLEEP_TIME = _max * 0.6 + var _time: float setget _set_time, get_time signal respawn diff --git a/Global/Pills.gd b/Global/Pills.gd index 05c844e..653fc57 100644 --- a/Global/Pills.gd +++ b/Global/Pills.gd @@ -3,7 +3,7 @@ extends Node var _level: float setget _set_level, get_level var _min: float = 0.0 -var _max: float = 7.0 +var _max: float = 6.0 var _decrease_per_second: float = 0.2 var _pill_add_amount: float = 2.0 diff --git a/Level/World.tscn b/Level/World.tscn index fb6034e..e9f5658 100644 --- a/Level/World.tscn +++ b/Level/World.tscn @@ -1,17 +1,17 @@ [gd_scene load_steps=21 format=2] [ext_resource path="res://Characters/Player/Player.tscn" type="PackedScene" id=1] -[ext_resource path="res://Level/Interactables/Keycard/Keycard.tscn" type="PackedScene" id=2] -[ext_resource path="res://Level/Interactables/Key/Key.tscn" type="PackedScene" id=3] -[ext_resource path="res://Level/Interactables/Door/Door.tscn" type="PackedScene" id=4] -[ext_resource path="res://Level/Interactables/Lever/Lever.tscn" type="PackedScene" id=5] -[ext_resource path="res://Level/Buildings/PlayerHouse.tscn" type="PackedScene" id=6] -[ext_resource path="res://Level/Buildings/BuildingBlock.tscn" type="PackedScene" id=7] -[ext_resource path="res://Level/Buildings/MeldewesenHome.tscn" type="PackedScene" id=8] -[ext_resource path="res://Level/Buildings/Factory.tscn" type="PackedScene" id=9] -[ext_resource path="res://Util/NodeGroupNotifier.tscn" type="PackedScene" id=10] -[ext_resource path="res://Characters/Util/PathNavigatorForNPC.tscn" type="PackedScene" id=11] -[ext_resource path="res://Characters/Meldewesen/Meldewesen.tscn" type="PackedScene" id=12] +[ext_resource path="res://Characters/Meldewesen/Meldewesen.tscn" type="PackedScene" id=2] +[ext_resource path="res://Level/Interactables/Keycard/Keycard.tscn" type="PackedScene" id=3] +[ext_resource path="res://Level/Interactables/Key/Key.tscn" type="PackedScene" id=4] +[ext_resource path="res://Level/Interactables/Door/Door.tscn" type="PackedScene" id=5] +[ext_resource path="res://Level/Interactables/Lever/Lever.tscn" type="PackedScene" id=6] +[ext_resource path="res://Level/Buildings/PlayerHouse.tscn" type="PackedScene" id=7] +[ext_resource path="res://Level/Buildings/BuildingBlock.tscn" type="PackedScene" id=8] +[ext_resource path="res://Level/Buildings/MeldewesenHome.tscn" type="PackedScene" id=9] +[ext_resource path="res://Level/Buildings/Factory.tscn" type="PackedScene" id=10] +[ext_resource path="res://Util/NodeGroupNotifier.tscn" type="PackedScene" id=11] +[ext_resource path="res://Characters/Util/PathNavigatorForNPC.tscn" type="PackedScene" id=12] [ext_resource path="res://Util/AmbiencePlayer.tscn" type="PackedScene" id=13] [sub_resource type="BoxShape" id=1] @@ -44,19 +44,25 @@ _data = { [node name="Player" parent="." instance=ExtResource( 1 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 14, 0, 7 ) +[node name="Enemies" type="Node" parent="."] + +[node name="Meldewesen2" parent="Enemies" instance=ExtResource( 2 )] +transform = Transform( -4.37114e-008, 0, -1, 0, 1, 0, 1, 0, -4.37114e-008, -3.88156, 0, 14.5424 ) +_visibility_path = NodePath("../../Enemies/Meldewesen2/Visibility") + [node name="Collectibles" type="Spatial" parent="."] -editor/display_folded = true transform = Transform( -4.37114e-008, 0, 1, 0, 1, 0, -1, 0, -4.37114e-008, 15.0831, 1.63203, 13.0809 ) [node name="Keycard" parent="Collectibles" groups=[ "Collectibles", -] instance=ExtResource( 2 )] +] instance=ExtResource( 3 )] transform = Transform( -4.37114e-008, 0, 1, 0, 1, 0, -1, 0, -4.37114e-008, 203.861, -0.63203, 110.591 ) card_lvl = 1 [node name="Key" parent="Collectibles" groups=[ "Collectibles", -] instance=ExtResource( 3 )] +] instance=ExtResource( 4 )] +editor/display_folded = true transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -75.0183, 0, -2.86102e-006 ) key_id = 1 @@ -71,180 +77,181 @@ shape = SubResource( 1 ) [node name="Touchables" type="Spatial" parent="."] editor/display_folded = true -[node name="Door" parent="Touchables" instance=ExtResource( 4 )] +[node name="Door" parent="Touchables" instance=ExtResource( 5 )] transform = Transform( -4.37114e-008, 0, -1, 0, 1, 0, 1, 0, -4.37114e-008, 73.152, 2, -191.228 ) door_lvl = 1 -[node name="Lever" parent="Touchables" instance=ExtResource( 5 )] +[node name="Lever" parent="Touchables" instance=ExtResource( 6 )] transform = Transform( 1.19249e-008, 0, -1, 0, 1, 0, 1, 0, 1.19249e-008, 5.94476, 2, 11.731 ) [node name="NavigationMeshInstance" type="NavigationMeshInstance" parent="."] navmesh = SubResource( 2 ) -[node name="PlayerHouse" parent="NavigationMeshInstance" instance=ExtResource( 6 )] +[node name="PlayerHouse" parent="NavigationMeshInstance" instance=ExtResource( 7 )] transform = Transform( -4.37114e-008, 0, 1, 0, 1, 0, -1, 0, -4.37114e-008, 13, 0, 14 ) [node name="BuildingBlocks" type="Spatial" parent="NavigationMeshInstance"] editor/display_folded = true -[node name="BuildingBlock" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -4.37114e-008, 0, 1, 0, 1, 0, -1, 0, -4.37114e-008, -13, 0, -13 ) -[node name="BuildingBlock2" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock2" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -4.37114e-008, 0, 1, 0, 1, 0, -1, 0, -4.37114e-008, 13, 0, -13 ) -[node name="BuildingBlock11" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock11" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -4.37114e-008, 0, 1, 0, 1, 0, -1, 0, -4.37114e-008, 13, 0, 41 ) -[node name="BuildingBlock12" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock12" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -4.37114e-008, 0, 1, 0, 1, 0, -1, 0, -4.37114e-008, -13, 0, 14 ) -[node name="BuildingBlock13" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock13" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -4.37114e-008, 0, 1, 0, 1, 0, -1, 0, -4.37114e-008, -13, 0, 41 ) -[node name="BuildingBlock14" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock14" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 34, 0, 47 ) -[node name="BuildingBlock15" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock15" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -4.37114e-008, 0, -1, 0, 1, 0, 1, 0, -4.37114e-008, 41, 0, 95 ) -[node name="BuildingBlock21" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock21" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -4.37114e-008, 0, -1, 0, 1, 0, 1, 0, -4.37114e-008, 41, 0, 68 ) -[node name="BuildingBlock16" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock16" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -4.37114e-008, 0, -1, 0, 1, 0, 1, 0, -4.37114e-008, -13, 0, 68 ) -[node name="BuildingBlock20" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock20" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -4.37114e-008, 0, -1, 0, 1, 0, 1, 0, -4.37114e-008, -13, 0, 95 ) -[node name="BuildingBlock17" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock17" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -1, 0, 8.74228e-008, 0, 1, 0, -8.74228e-008, 0, -1, 8, 0, 116 ) -[node name="BuildingBlock18" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock18" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -1, 0, 8.74228e-008, 0, 1, 0, -8.74228e-008, 0, -1, 35, 0, 116 ) -[node name="BuildingBlock3" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock3" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -4.37114e-008, 0, 1, 0, 1, 0, -1, 0, -4.37114e-008, 13, 0, -40 ) -[node name="BuildingBlock4" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock4" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -4.37114e-008, 0, 1, 0, 1, 0, -1, 0, -4.37114e-008, -13, 0, -40 ) -[node name="BuildingBlock5" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock5" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -34, 0, -88 ) -[node name="BuildingBlock10" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock10" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -34, 0, -46 ) -[node name="BuildingBlock9" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock9" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -4.37114e-008, 0, 1, 0, 1, 0, -1, 0, -4.37114e-008, -13, 0, -94 ) -[node name="BuildingBlock24" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock24" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -4.37114e-008, 0, 1, 0, 1, 0, -1, 0, -4.37114e-008, -13, 0, -121 ) -[node name="BuildingBlock25" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock25" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, -127 ) -[node name="BuildingBlock26" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock26" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 35, 0, -127 ) -[node name="BuildingBlock31" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock31" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 35, 0, -169 ) -[node name="BuildingBlock37" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock37" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 100, 0, -169 ) -[node name="BuildingBlock38" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock38" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 127, 0, -169 ) -[node name="BuildingBlock40" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock40" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 127, 0, -211 ) -[node name="BuildingBlock41" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock41" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 100, 0, -211 ) -[node name="BuildingBlock42" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock42" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 73, 0, -211 ) -[node name="BuildingBlock43" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock43" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 46, 0, -211 ) -[node name="BuildingBlock44" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock44" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, -211 ) -[node name="BuildingBlock45" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock45" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -8, 0, -211 ) -[node name="BuildingBlock46" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock46" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -35, 0, -211 ) -[node name="BuildingBlock47" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock47" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -4.37114e-008, 0, -1, 0, 1, 0, 1, 0, -4.37114e-008, -56, 0, -217 ) -[node name="BuildingBlock48" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock48" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -4.37114e-008, 0, -1, 0, 1, 0, 1, 0, -4.37114e-008, -71, 0, -217 ) -[node name="BuildingBlock50" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock50" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -4.37114e-008, 0, -1, 0, 1, 0, 1, 0, -4.37114e-008, -71, 0, -244 ) -[node name="BuildingBlock51" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock51" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -1, 0, 8.74228e-008, 0, 1, 0, -8.74228e-008, 0, -1, -92, 0, -250 ) -[node name="BuildingBlock52" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock52" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1.31134e-007, 0, 1, 0, 1, 0, -1, 0, 1.31134e-007, -113, 0, -256 ) -[node name="BuildingBlock32" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock32" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, -169 ) -[node name="BuildingBlock33" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock33" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -19, 0, -169 ) -[node name="BuildingBlock34" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock34" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -46, 0, -169 ) -[node name="BuildingBlock35" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock35" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -4.37114e-008, 0, 1, 0, 1, 0, -1, 0, -4.37114e-008, -67, 0, -163 ) -[node name="BuildingBlock36" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock36" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -76, 0, -142 ) -[node name="BuildingBlock49" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock49" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -103, 0, -142 ) -[node name="BuildingBlock27" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock27" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -4.37114e-008, 0, 1, 0, 1, 0, -1, 0, -4.37114e-008, 41, 0, -148 ) -[node name="BuildingBlock28" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock28" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -4.37114e-008, 0, 1, 0, 1, 0, -1, 0, -4.37114e-008, 79, 0, -109 ) -[node name="BuildingBlock29" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock29" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -4.37114e-008, 0, 1, 0, 1, 0, -1, 0, -4.37114e-008, 79, 0, -136 ) -[node name="BuildingBlock30" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock30" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -4.37114e-008, 0, 1, 0, 1, 0, -1, 0, -4.37114e-008, 79, 0, -163 ) -[node name="BuildingBlock39" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock39" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -4.37114e-008, 0, 1, 0, 1, 0, -1, 0, -4.37114e-008, 133, 0, -190 ) -[node name="MeldewesenHome" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] +[node name="MeldewesenHome" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 9 )] -[node name="BuildingBlock6" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock6" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( -4.37114e-008, 0, 1, 0, 1, 0, -1, 0, -4.37114e-008, 13, 0, -67 ) -[node name="BuildingBlock7" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock7" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, -88 ) -[node name="BuildingBlock8" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock8" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 19, 0, -88 ) -[node name="BuildingBlock22" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock22" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 46, 0, -88 ) -[node name="BuildingBlock23" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 7 )] +[node name="BuildingBlock23" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 8 )] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 73, 0, -88 ) -[node name="Factory" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 9 )] +[node name="Factory" parent="NavigationMeshInstance/BuildingBlocks" instance=ExtResource( 10 )] [node name="Ground" type="MeshInstance" parent="NavigationMeshInstance"] +editor/display_folded = true transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -83.9196, -0.0216179, -105.861 ) layers = 3 mesh = SubResource( 3 ) @@ -258,23 +265,24 @@ collision_mask = 7 shape = SubResource( 4 ) [node name="Environment" type="Spatial" parent="."] +editor/display_folded = true [node name="WorldEnvironment" type="WorldEnvironment" parent="Environment"] environment = SubResource( 6 ) [node name="DirectionalLight" type="DirectionalLight" parent="Environment"] -transform = Transform( 0.642788, -0.262003, -0.719846, -8.21505e-008, -0.939693, 0.34202, -0.766044, -0.219847, -0.604023, 0, 7, 0 ) +transform = Transform( 0.642788, -0.262003, -0.719846, 0, -0.939693, 0.34202, -0.766044, -0.219846, -0.604023, 0, 7, 0 ) layers = 3 shadow_enabled = true -[node name="NodeGroupNotifier" parent="." instance=ExtResource( 10 )] +[node name="NodeGroupNotifier" parent="." instance=ExtResource( 11 )] group_name = "Navigator" node_to_send = NodePath("..") -[node name="PathNavigatorForNPC" parent="." instance=ExtResource( 11 )] +[node name="PathNavigatorForNPC" parent="." instance=ExtResource( 12 )] curve = SubResource( 7 ) body_nodepath = NodePath("Meldewesen") -[node name="Meldewesen" parent="PathNavigatorForNPC" instance=ExtResource( 12 )] +[node name="Meldewesen" parent="PathNavigatorForNPC" instance=ExtResource( 2 )] [node name="AmbiencePlayer" parent="." instance=ExtResource( 13 )]