This commit is contained in:
Segey Lapin
2021-10-26 21:51:45 +03:00
commit d6c8a24f5a
58 changed files with 271059 additions and 0 deletions

142
scripts/modules/npc_nun.gd Normal file
View File

@@ -0,0 +1,142 @@
extends Node
# Declare member variables here. Examples:
# var a = 2
# var b = "text"
# Called when the node enters the scene tree for the first time.
var root
var skel
var hair_skel
var garments = ["female-panties1", "female-bra1", "female-shirt1"]
var garments_head = ["female-cap"]
var basedir = "res://scenes/clothes/"
var material = preload("res://scenes/clothes/nun-clothes.material")
#var tween: Tween
#enum {
# IDLE,
# WALKING
# PRAYING,
# PRAYING_STARTLED,
# ACTION
#}
#var state = PRAYING
func _ready():
root = get_parent()
root.add_to_group("nuns")
# tween = Tween.new()
# tween.playback_process_mode = Tween.TWEEN_PROCESS_PHYSICS
# tween.process_priority = 30
# add_child(tween)
# call_deferred("setup_markers")
characters.call_deferred("setup_garments", root, garments, garments_head, material)
#func setup_markers():
# var cmdq = []
# if root.has_meta("cmdqueue"):
# cmdq = root.get_meta("cmdqueue")
# cmdq.push_back(["hide_marker", "head/marker_talk"])
# cmdq.push_back(["hide_marker", "head/marker_hips_action"])
# cmdq.push_back(["register_marker", self, "hips/marker_dagger_sacrifice",
# {
# "method": "dagger_sacrifice"
# }
# ])
# cmdq.push_back(["hide_marker", "hips/marker_dagger_sacrifice"])
# cmdq.push_back(["anim_state", "pray"])
# root.set_meta("cmdqueue", cmdq)
# state = PRAYING
#var state_changed = 0.0
#func set_orientation(v: Transform):
# root.set_meta("orientation", v)
#func set_basis_dir(dir: Vector3):
# var xdir: Vector3 = dir
# xdir.y = 0
# var d0 = xdir.cross(Vector3.UP)
# var d1 = Vector3.UP
# var d2 = xdir
# var basis = Basis(d0, d1, -d2)
# var orientation = root.get_meta("orientation")
# orientation.basis = basis
# root.set_meta("orientation", orientation)
#func _process(delta):
# if !skel:
# skel = root.get_meta("skeleton")
# var space: PhysicsDirectSpaceState = root.getworld().get_direct_space_state()
# var p = get_viewport().get_camera().get_meta("player").global_transform
# var d = p.origin.distance_to(root.global_transform.origin)
# var px = p.origin
# px.y = root.global_transform.origin.y
# var pdir = px - root.global_transform.origin
# var fdir = -root.global_transform.basis[2]
# fdir.y = 0
# pdir.y = 0
# pdir = pdir.normalized()
# fdir = fdir.normalized()
# var cmdq = []
# if root.has_meta("cmdqueue"):
# cmdq = root.get_meta("cmdqueue")
# state_changed -= delta
# state_changed = clamp(state_changed, 0.0, 10.0)
# match state:
# PRAYING:
# if root.has_meta("req_state") && root.get_meta("req_state") in ["TALK", "ACTION"]:
# state = ACTION
# cmdq.push_back(["anim_state", "locomotion"])
# root.set_meta("cmdqueue", cmdq)
# elif d < 2.0 && state_changed <= 0.0:
# if pdir.angle_to(fdir) > PI / 8.0:
# tween.interpolate_method(self, "set_basis_dir", fdir, pdir, 0.3 + randf() * 0.6, Tween.TRANS_CUBIC)
# tween.start()
# state_changed = 0.5
# else:
# cmdq.push_back(["anim_state", "pray-startled"])
## cmdq.push_back(["anim_state", "locomotion"])
## cmdq.push_back(["anim_param", "state/locomotion/loc/blend_position", Vector2(0.5, 0)])
# root.set_meta("cmdqueue", cmdq)
# state = PRAYING_STARTLED
# state_changed = 3.0
# PRAYING_STARTLED:
# if root.get_meta("req_state") in ["TALK", "ACTION"]:
# state = ACTION
# cmdq.push_back(["anim_state", "locomotion"])
# root.set_meta("cmdqueue", cmdq)
# elif d > 4.0 && state_changed <= 0.0:
# cmdq.push_back(["anim_state", "pray"])
# root.set_meta("cmdqueue", cmdq)
# state = PRAYING
# state_changed = 4.0
# else:
# var f = root.global_transform.origin + Vector3.UP * 0.5
# var t = f + root.global_transform.basis[2] * 0.22
# var result = space.intersect_ray(f, t, [root])
# if result.has("collider"):
# cmdq.push_back(["anim_state", "pray"])
# root.set_meta("cmdqueue", cmdq)
# state = PRAYING
# state_changed = 2.0
# ACTION:
# if !root.has_meta("req_state"):
# state = PRAYING
#
## elif d <= 4.0 || state_changed > 0.0:
## tween.interpolate_method(self, "set_orientation", root.get_meta("orientation"), root.get_meta("orientation").looking_at(px, Vector3(0, 1, 0)), 0.3 + randf() * 0.6, Tween.TRANS_CUBIC)
## tween.start()
## var sacrifice_marker = skel.get_node("hips/marker_dagger_sacrifice")
## if sacrifice_marker.visible && !inventory.items.s_dagger:
## sacrifice_marker.hide()
## elif !sacrifice_marker.visible && inventory.items.s_dagger:
## sacrifice_marker.show()
#
##func dagger_sacrifice(data):
## print("dagger sacrifice")
## var cmdq = []
## var other = group_manager.player
## if other.has_meta("cmdqueue"):
## cmdq = other.get_meta("cmdqueue")
## cmdq.push_back(["anim_param", "blade_right/blend_amount", 1.0])
## cmdq.push_back(["equip", "wrist_r/weapon_right", "s_dagger"])
## other.set_meta("cmdqueue", cmdq)
## group_manager.submit_player_npc_event_arot(root, "sacrificed-a", root, "sacrificed", root)