Different damage based on body part
This commit is contained in:
parent
f8fe9b0d56
commit
1d5065cbbf
8 changed files with 86 additions and 101 deletions
|
|
@ -1,7 +1,6 @@
|
||||||
^ - completed
|
^ - completed
|
||||||
|
|
||||||
Current plans:
|
Current plans:
|
||||||
Different damage based on body part
|
|
||||||
Audio system:
|
Audio system:
|
||||||
Positional sound
|
Positional sound
|
||||||
Distance and wall dampening
|
Distance and wall dampening
|
||||||
|
|
|
||||||
|
|
@ -306,7 +306,7 @@ func add_dead(team: int):
|
||||||
func is_server_request() -> bool:
|
func is_server_request() -> bool:
|
||||||
return multiplayer.is_server() or multiplayer.get_remote_sender_id() == 1
|
return multiplayer.is_server() or multiplayer.get_remote_sender_id() == 1
|
||||||
|
|
||||||
func shoot(id:int , damage: int, distance: float) -> void:
|
func shoot(id:int , limb_damage: int, torso_damage: int,head_damage: int, distance: float,damage_reduction_curve: Curve = null) -> void:
|
||||||
if multiplayer.is_server() == false:
|
if multiplayer.is_server() == false:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
@ -328,8 +328,22 @@ func shoot(id:int , damage: int, distance: float) -> void:
|
||||||
|
|
||||||
var collision = space.intersect_ray(ray)
|
var collision = space.intersect_ray(ray)
|
||||||
|
|
||||||
|
|
||||||
if collision != {} and collision["collider"] is Player:
|
if collision != {} and collision["collider"] is Player:
|
||||||
collision["collider"].take_damage(damage)
|
var hit_player: Player = collision["collider"]
|
||||||
|
var shape_object: CollisionShape3D = hit_player.shape_owner_get_owner(collision["shape"])
|
||||||
|
var reduction: float = 0
|
||||||
|
if damage_reduction_curve != null:
|
||||||
|
var distance_to_hit = (player_camera.global_position - collision["position"]).length()/distance
|
||||||
|
reduction = damage_reduction_curve.sample(distance_to_hit)
|
||||||
|
match shape_object.get_groups()[0]:
|
||||||
|
"Head":
|
||||||
|
hit_player.take_damage(head_damage*reduction)
|
||||||
|
"Limb":
|
||||||
|
hit_player.take_damage(limb_damage*reduction)
|
||||||
|
_:
|
||||||
|
hit_player.take_damage(torso_damage*reduction)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func interact(id: int) -> void:
|
func interact(id: int) -> void:
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
[gd_scene load_steps=83 format=4 uid="uid://dpsr6ug3pkb40"]
|
[gd_scene load_steps=86 format=4 uid="uid://dpsr6ug3pkb40"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://3dphlay25fih" path="res://players/player/player.gd" id="1_l07l8"]
|
[ext_resource type="Script" uid="uid://3dphlay25fih" path="res://players/player/player.gd" id="1_l07l8"]
|
||||||
[ext_resource type="Material" uid="uid://cjb0h3of85nc2" path="res://materials/players/molikman/mat_Molikman.tres" id="2_330gv"]
|
[ext_resource type="Material" uid="uid://cjb0h3of85nc2" path="res://materials/players/molikman/mat_Molikman.tres" id="2_330gv"]
|
||||||
|
|
@ -38,6 +38,21 @@
|
||||||
[ext_resource type="Script" uid="uid://dsp1sq46c5i3y" path="res://players/player/player_interaction.gd" id="37_3lpnn"]
|
[ext_resource type="Script" uid="uid://dsp1sq46c5i3y" path="res://players/player/player_interaction.gd" id="37_3lpnn"]
|
||||||
[ext_resource type="Script" uid="uid://dfvnx8f1v6m5g" path="res://players/player/player_input.gd" id="38_2cl6u"]
|
[ext_resource type="Script" uid="uid://dfvnx8f1v6m5g" path="res://players/player/player_input.gd" id="38_2cl6u"]
|
||||||
|
|
||||||
|
[sub_resource type="SphereShape3D" id="SphereShape3D_tgg0h"]
|
||||||
|
radius = 0.15783496
|
||||||
|
|
||||||
|
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_l07l8"]
|
||||||
|
radius = 0.2163086
|
||||||
|
height = 1.5151367
|
||||||
|
|
||||||
|
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_330gv"]
|
||||||
|
radius = 0.083984375
|
||||||
|
height = 0.73394775
|
||||||
|
|
||||||
|
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_og1ui"]
|
||||||
|
radius = 0.08154297
|
||||||
|
height = 0.7824707
|
||||||
|
|
||||||
[sub_resource type="ArrayMesh" id="ArrayMesh_lot4n"]
|
[sub_resource type="ArrayMesh" id="ArrayMesh_lot4n"]
|
||||||
_surfaces = [{
|
_surfaces = [{
|
||||||
"aabb": AABB(-1.6094911, -1.1382344, -1.5418212, 3.2189822, 2.1382344, 2.9440465),
|
"aabb": AABB(-1.6094911, -1.1382344, -1.5418212, 3.2189822, 2.1382344, 2.9440465),
|
||||||
|
|
@ -325,9 +340,6 @@ _surfaces = [{
|
||||||
}]
|
}]
|
||||||
blend_shape_mode = 0
|
blend_shape_mode = 0
|
||||||
|
|
||||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_u8vuu"]
|
|
||||||
resource_local_to_scene = true
|
|
||||||
|
|
||||||
[sub_resource type="ArrayMesh" id="ArrayMesh_xd1kh"]
|
[sub_resource type="ArrayMesh" id="ArrayMesh_xd1kh"]
|
||||||
resource_name = "molikman_hands_Plane_004"
|
resource_name = "molikman_hands_Plane_004"
|
||||||
_surfaces = [{
|
_surfaces = [{
|
||||||
|
|
@ -7444,124 +7456,64 @@ length = 0.001
|
||||||
tracks/0/type = "value"
|
tracks/0/type = "value"
|
||||||
tracks/0/imported = false
|
tracks/0/imported = false
|
||||||
tracks/0/enabled = true
|
tracks/0/enabled = true
|
||||||
tracks/0/path = NodePath("CollisionShape3D:position")
|
tracks/0/path = NodePath("Camera3D:position")
|
||||||
tracks/0/interp = 1
|
tracks/0/interp = 1
|
||||||
tracks/0/loop_wrap = true
|
tracks/0/loop_wrap = true
|
||||||
tracks/0/keys = {
|
tracks/0/keys = {
|
||||||
"times": PackedFloat32Array(0),
|
"times": PackedFloat32Array(0),
|
||||||
"transitions": PackedFloat32Array(1),
|
"transitions": PackedFloat32Array(1),
|
||||||
"update": 0,
|
"update": 0,
|
||||||
"values": [Vector3(0, 1, 0)]
|
"values": [Vector3(0, 2, 0)]
|
||||||
}
|
}
|
||||||
tracks/1/type = "value"
|
tracks/1/type = "value"
|
||||||
tracks/1/imported = false
|
tracks/1/imported = false
|
||||||
tracks/1/enabled = true
|
tracks/1/enabled = true
|
||||||
tracks/1/path = NodePath("CollisionShape3D:shape:height")
|
tracks/1/path = NodePath("molikman_ingame:position")
|
||||||
tracks/1/interp = 1
|
tracks/1/interp = 1
|
||||||
tracks/1/loop_wrap = true
|
tracks/1/loop_wrap = true
|
||||||
tracks/1/keys = {
|
tracks/1/keys = {
|
||||||
"times": PackedFloat32Array(0),
|
"times": PackedFloat32Array(0),
|
||||||
"transitions": PackedFloat32Array(1),
|
"transitions": PackedFloat32Array(1),
|
||||||
"update": 0,
|
"update": 0,
|
||||||
"values": [2.0]
|
"values": [Vector3(0, 1.1793717, 0)]
|
||||||
}
|
}
|
||||||
tracks/2/type = "value"
|
tracks/2/type = "value"
|
||||||
tracks/2/imported = false
|
tracks/2/imported = false
|
||||||
tracks/2/enabled = true
|
tracks/2/enabled = true
|
||||||
tracks/2/path = NodePath("Camera3D:position")
|
tracks/2/path = NodePath("molikman_ingame:rotation")
|
||||||
tracks/2/interp = 1
|
tracks/2/interp = 1
|
||||||
tracks/2/loop_wrap = true
|
tracks/2/loop_wrap = true
|
||||||
tracks/2/keys = {
|
tracks/2/keys = {
|
||||||
"times": PackedFloat32Array(0),
|
"times": PackedFloat32Array(0),
|
||||||
"transitions": PackedFloat32Array(1),
|
"transitions": PackedFloat32Array(1),
|
||||||
"update": 0,
|
"update": 0,
|
||||||
"values": [Vector3(0, 2, 0)]
|
|
||||||
}
|
|
||||||
tracks/3/type = "value"
|
|
||||||
tracks/3/imported = false
|
|
||||||
tracks/3/enabled = true
|
|
||||||
tracks/3/path = NodePath("molikman_ingame:position")
|
|
||||||
tracks/3/interp = 1
|
|
||||||
tracks/3/loop_wrap = true
|
|
||||||
tracks/3/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 0,
|
|
||||||
"values": [Vector3(0, 1.1793717, 0)]
|
|
||||||
}
|
|
||||||
tracks/4/type = "value"
|
|
||||||
tracks/4/imported = false
|
|
||||||
tracks/4/enabled = true
|
|
||||||
tracks/4/path = NodePath("molikman_ingame:rotation")
|
|
||||||
tracks/4/interp = 1
|
|
||||||
tracks/4/loop_wrap = true
|
|
||||||
tracks/4/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 0,
|
|
||||||
"values": [Vector3(0, 0, 0)]
|
"values": [Vector3(0, 0, 0)]
|
||||||
}
|
}
|
||||||
tracks/5/type = "value"
|
|
||||||
tracks/5/imported = false
|
|
||||||
tracks/5/enabled = true
|
|
||||||
tracks/5/path = NodePath("CollisionShape3D:disabled")
|
|
||||||
tracks/5/interp = 1
|
|
||||||
tracks/5/loop_wrap = true
|
|
||||||
tracks/5/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 1,
|
|
||||||
"values": [false]
|
|
||||||
}
|
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_oprun"]
|
[sub_resource type="Animation" id="Animation_oprun"]
|
||||||
resource_name = "crouch"
|
resource_name = "crouch"
|
||||||
tracks/0/type = "value"
|
tracks/0/type = "value"
|
||||||
tracks/0/imported = false
|
tracks/0/imported = false
|
||||||
tracks/0/enabled = true
|
tracks/0/enabled = true
|
||||||
tracks/0/path = NodePath("CollisionShape3D:position")
|
tracks/0/path = NodePath("Camera3D:position")
|
||||||
tracks/0/interp = 1
|
tracks/0/interp = 1
|
||||||
tracks/0/loop_wrap = true
|
tracks/0/loop_wrap = true
|
||||||
tracks/0/keys = {
|
tracks/0/keys = {
|
||||||
"times": PackedFloat32Array(0, 1),
|
"times": PackedFloat32Array(0, 1),
|
||||||
"transitions": PackedFloat32Array(1, 1),
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
"update": 0,
|
"update": 0,
|
||||||
"values": [Vector3(0, 1.166, 0), Vector3(0, 0.874, 0)]
|
"values": [Vector3(0, 2, 0), Vector3(0, 1.5, 0)]
|
||||||
}
|
}
|
||||||
tracks/1/type = "value"
|
tracks/1/type = "value"
|
||||||
tracks/1/imported = false
|
tracks/1/imported = false
|
||||||
tracks/1/enabled = true
|
tracks/1/enabled = true
|
||||||
tracks/1/path = NodePath("CollisionShape3D:shape:height")
|
tracks/1/path = NodePath("molikman_ingame:position")
|
||||||
tracks/1/interp = 1
|
tracks/1/interp = 1
|
||||||
tracks/1/loop_wrap = true
|
tracks/1/loop_wrap = true
|
||||||
tracks/1/keys = {
|
tracks/1/keys = {
|
||||||
"times": PackedFloat32Array(0, 1),
|
"times": PackedFloat32Array(0, 1),
|
||||||
"transitions": PackedFloat32Array(1, 1),
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
"update": 0,
|
"update": 0,
|
||||||
"values": [2.331, 1.7479999999999998]
|
|
||||||
}
|
|
||||||
tracks/2/type = "value"
|
|
||||||
tracks/2/imported = false
|
|
||||||
tracks/2/enabled = true
|
|
||||||
tracks/2/path = NodePath("Camera3D:position")
|
|
||||||
tracks/2/interp = 1
|
|
||||||
tracks/2/loop_wrap = true
|
|
||||||
tracks/2/keys = {
|
|
||||||
"times": PackedFloat32Array(0, 1),
|
|
||||||
"transitions": PackedFloat32Array(1, 1),
|
|
||||||
"update": 0,
|
|
||||||
"values": [Vector3(0, 2, 0), Vector3(0, 1.5, 0)]
|
|
||||||
}
|
|
||||||
tracks/3/type = "value"
|
|
||||||
tracks/3/imported = false
|
|
||||||
tracks/3/enabled = true
|
|
||||||
tracks/3/path = NodePath("molikman_ingame:position")
|
|
||||||
tracks/3/interp = 1
|
|
||||||
tracks/3/loop_wrap = true
|
|
||||||
tracks/3/keys = {
|
|
||||||
"times": PackedFloat32Array(0, 1),
|
|
||||||
"transitions": PackedFloat32Array(1, 1),
|
|
||||||
"update": 0,
|
|
||||||
"values": [Vector3(0, 1.1793717, 0), Vector3(0, 0.6695229, 0)]
|
"values": [Vector3(0, 1.1793717, 0), Vector3(0, 0.6695229, 0)]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -7592,18 +7544,6 @@ tracks/1/keys = {
|
||||||
"update": 0,
|
"update": 0,
|
||||||
"values": [Vector3(0, 1.1793717, 0), Vector3(0, 0.019058675, 1.1753564)]
|
"values": [Vector3(0, 1.1793717, 0), Vector3(0, 0.019058675, 1.1753564)]
|
||||||
}
|
}
|
||||||
tracks/2/type = "value"
|
|
||||||
tracks/2/imported = false
|
|
||||||
tracks/2/enabled = true
|
|
||||||
tracks/2/path = NodePath("CollisionShape3D:disabled")
|
|
||||||
tracks/2/interp = 1
|
|
||||||
tracks/2/loop_wrap = true
|
|
||||||
tracks/2/keys = {
|
|
||||||
"times": PackedFloat32Array(0),
|
|
||||||
"transitions": PackedFloat32Array(1),
|
|
||||||
"update": 1,
|
|
||||||
"values": [true]
|
|
||||||
}
|
|
||||||
|
|
||||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_a8ls1"]
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_a8ls1"]
|
||||||
_data = {
|
_data = {
|
||||||
|
|
@ -7634,6 +7574,30 @@ weapon_models = {
|
||||||
&"sp": NodePath("Camera3D/molikman_hands/GunArm")
|
&"sp": NodePath("Camera3D/molikman_hands/GunArm")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[node name="HeadShape" type="CollisionShape3D" parent="." groups=["Head"]]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.0182142, 0)
|
||||||
|
shape = SubResource("SphereShape3D_tgg0h")
|
||||||
|
|
||||||
|
[node name="TorsoShape" type="CollisionShape3D" parent="." groups=["Torso"]]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1868755, 0)
|
||||||
|
shape = SubResource("CapsuleShape3D_l07l8")
|
||||||
|
|
||||||
|
[node name="LegShape1" type="CollisionShape3D" parent="." groups=["Limb"]]
|
||||||
|
transform = Transform3D(0.9984104, 0.056361705, 0, -0.056361705, 0.9984104, 0, 0, 0, 1, -0.15081304, 0.36279398, -0.039083213)
|
||||||
|
shape = SubResource("CapsuleShape3D_330gv")
|
||||||
|
|
||||||
|
[node name="LegShape2" type="CollisionShape3D" parent="." groups=["Limb"]]
|
||||||
|
transform = Transform3D(0.99874574, -0.050070006, 0, 0.050070006, 0.99874574, 0, 0, 0, 1, 0.15715861, 0.35183817, -0.046561778)
|
||||||
|
shape = SubResource("CapsuleShape3D_330gv")
|
||||||
|
|
||||||
|
[node name="HandShape1" type="CollisionShape3D" parent="." groups=["Limb"]]
|
||||||
|
transform = Transform3D(0.9803125, 0.19745202, 0, -0.19745202, 0.9803125, 0, 0, 0, 1, -0.27572715, 1.5459963, 0)
|
||||||
|
shape = SubResource("CapsuleShape3D_og1ui")
|
||||||
|
|
||||||
|
[node name="HandShape2" type="CollisionShape3D" parent="." groups=["Limb"]]
|
||||||
|
transform = Transform3D(0.9477017, -0.31915784, 0, 0.31915784, 0.9477017, 0, 0, 0, 1, 0.27863508, 1.5459963, 0)
|
||||||
|
shape = SubResource("CapsuleShape3D_og1ui")
|
||||||
|
|
||||||
[node name="molikman_ingame" type="Node3D" parent="."]
|
[node name="molikman_ingame" type="Node3D" parent="."]
|
||||||
transform = Transform3D(0.75, 0, 0, 0, 0.74999994, 0, 0, 0, 0.74999994, 0, 1.1793717, 0)
|
transform = Transform3D(0.75, 0, 0, 0, 0.74999994, 0, 0, 0, 0.74999994, 0, 1.1793717, 0)
|
||||||
|
|
||||||
|
|
@ -8112,10 +8076,6 @@ visible_for_others = true
|
||||||
reference_player = NodePath("../..")
|
reference_player = NodePath("../..")
|
||||||
metadata/_custom_type_script = "uid://dd5mp72dq43v6"
|
metadata/_custom_type_script = "uid://dd5mp72dq43v6"
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
|
|
||||||
shape = SubResource("CapsuleShape3D_u8vuu")
|
|
||||||
|
|
||||||
[node name="Camera3D" type="Camera3D" parent="."]
|
[node name="Camera3D" type="Camera3D" parent="."]
|
||||||
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 0, 2, 0)
|
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 0, 2, 0)
|
||||||
cull_mask = 1048573
|
cull_mask = 1048573
|
||||||
|
|
@ -8819,6 +8779,7 @@ layer = true
|
||||||
inverse = true
|
inverse = true
|
||||||
|
|
||||||
[node name="PickupRange" type="Area3D" parent="." node_paths=PackedStringArray("weapon_system")]
|
[node name="PickupRange" type="Area3D" parent="." node_paths=PackedStringArray("weapon_system")]
|
||||||
|
visible = false
|
||||||
collision_layer = 0
|
collision_layer = 0
|
||||||
collision_mask = 8
|
collision_mask = 8
|
||||||
script = ExtResource("34_anida")
|
script = ExtResource("34_anida")
|
||||||
|
|
|
||||||
|
|
@ -20,10 +20,11 @@ func _enter() -> void:
|
||||||
player_input.walk_begin.connect(begin_walk)
|
player_input.walk_begin.connect(begin_walk)
|
||||||
|
|
||||||
func _exit() -> void:
|
func _exit() -> void:
|
||||||
player_input.jumped.disconnect(on_jumped)
|
if Session.is_server_request():
|
||||||
player_input.crouch_begin.disconnect(begin_crouch)
|
player_input.jumped.disconnect(on_jumped)
|
||||||
player_input.walk_begin.disconnect(begin_walk)
|
player_input.crouch_begin.disconnect(begin_crouch)
|
||||||
step_time = 0
|
player_input.walk_begin.disconnect(begin_walk)
|
||||||
|
step_time = 0
|
||||||
|
|
||||||
func physics_update(delta: float) -> void:
|
func physics_update(delta: float) -> void:
|
||||||
if not is_multiplayer_authority():
|
if not is_multiplayer_authority():
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,12 @@ extends WeaponState
|
||||||
|
|
||||||
@export var vertical_curve: Curve
|
@export var vertical_curve: Curve
|
||||||
@export var horizontal_curve: Curve
|
@export var horizontal_curve: Curve
|
||||||
|
@export var damage_reduction_curve: Curve
|
||||||
|
|
||||||
@export var emptyable: bool
|
@export var emptyable: bool
|
||||||
@export var damage: int
|
@export var torso_damage: int
|
||||||
|
@export var head_damage: int
|
||||||
|
@export var limb_damage: int
|
||||||
@export var shoot_distance: float = 100
|
@export var shoot_distance: float = 100
|
||||||
|
|
||||||
@export var fire_timer: Timer
|
@export var fire_timer: Timer
|
||||||
|
|
@ -38,7 +41,7 @@ func fire() -> void:
|
||||||
machine.animation_player.play(with_morphems("shoot"))
|
machine.animation_player.play(with_morphems("shoot"))
|
||||||
|
|
||||||
if is_multiplayer_authority():
|
if is_multiplayer_authority():
|
||||||
Session.shoot(int(machine.player.name),damage,shoot_distance)
|
Session.shoot(int(machine.player.name),limb_damage,torso_damage,head_damage,shoot_distance,damage_reduction_curve)
|
||||||
machine.player.get_node("ShootAudio").multiplayer_play()
|
machine.player.get_node("ShootAudio").multiplayer_play()
|
||||||
|
|
||||||
fire_timer.start()
|
fire_timer.start()
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
[gd_scene load_steps=9 format=3 uid="uid://djwjl8xll53vn"]
|
[gd_scene load_steps=10 format=3 uid="uid://djwjl8xll53vn"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://e6lqknfl4ngt" path="res://systems/weapon_system/weapon_substate_machine.gd" id="1_g7s1i"]
|
[ext_resource type="Script" uid="uid://e6lqknfl4ngt" path="res://systems/weapon_system/weapon_substate_machine.gd" id="1_g7s1i"]
|
||||||
[ext_resource type="Script" uid="uid://ofv4e3dsfe8" path="res://weapons/gun/idle_state.gd" id="2_cmn6f"]
|
[ext_resource type="Script" uid="uid://ofv4e3dsfe8" path="res://weapons/gun/idle_state.gd" id="2_cmn6f"]
|
||||||
|
|
@ -18,6 +18,10 @@ _limits = [-0.02, 0.02, 0.0, 20.0]
|
||||||
_data = [Vector2(0, -9.313226e-10), 0.0, 0.0, 0, 0, Vector2(4.959569, 0.0044327714), 0.0, 0.0, 0, 0, Vector2(9.919138, -0.0075840354), 0.0, 0.0, 0, 0, Vector2(15.09434, 0.011533612), 0.0, 0.0, 0, 0, Vector2(20, -0.014684878), 0.0, 0.0, 0, 0]
|
_data = [Vector2(0, -9.313226e-10), 0.0, 0.0, 0, 0, Vector2(4.959569, 0.0044327714), 0.0, 0.0, 0, 0, Vector2(9.919138, -0.0075840354), 0.0, 0.0, 0, 0, Vector2(15.09434, 0.011533612), 0.0, 0.0, 0, 0, Vector2(20, -0.014684878), 0.0, 0.0, 0, 0]
|
||||||
point_count = 5
|
point_count = 5
|
||||||
|
|
||||||
|
[sub_resource type="Curve" id="Curve_bwg3m"]
|
||||||
|
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.49799195, 1), 0.0, 0.0, 0, 0, Vector2(0.8473895, 0.51194537), 0.0, 0.0, 0, 0]
|
||||||
|
point_count = 3
|
||||||
|
|
||||||
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_bwg3m"]
|
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_bwg3m"]
|
||||||
properties/0/path = NodePath(".:ammo")
|
properties/0/path = NodePath(".:ammo")
|
||||||
properties/0/spawn = true
|
properties/0/spawn = true
|
||||||
|
|
@ -45,8 +49,11 @@ emptyable = true
|
||||||
script = ExtResource("3_016ti")
|
script = ExtResource("3_016ti")
|
||||||
vertical_curve = SubResource("Curve_cmn6f")
|
vertical_curve = SubResource("Curve_cmn6f")
|
||||||
horizontal_curve = SubResource("Curve_016ti")
|
horizontal_curve = SubResource("Curve_016ti")
|
||||||
|
damage_reduction_curve = SubResource("Curve_bwg3m")
|
||||||
emptyable = true
|
emptyable = true
|
||||||
damage = 22
|
torso_damage = 22
|
||||||
|
head_damage = 60
|
||||||
|
limb_damage = 12
|
||||||
fire_timer = NodePath("../FireTimer")
|
fire_timer = NodePath("../FireTimer")
|
||||||
|
|
||||||
[node name="Reload" type="Node" parent="."]
|
[node name="Reload" type="Node" parent="."]
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ func _exit() -> void:
|
||||||
|
|
||||||
func attack() -> void:
|
func attack() -> void:
|
||||||
if is_multiplayer_authority():
|
if is_multiplayer_authority():
|
||||||
Session.shoot(int(machine.player.name),damage,1.5)
|
Session.shoot(int(machine.player.name),damage,damage,damage,1.5)
|
||||||
|
|
||||||
func on_animation_finished(animation):
|
func on_animation_finished(animation):
|
||||||
if animation == machine.animation_prefix + "attack":
|
if animation == machine.animation_prefix + "attack":
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ func _exit() -> void:
|
||||||
|
|
||||||
func attack() -> void:
|
func attack() -> void:
|
||||||
if is_multiplayer_authority():
|
if is_multiplayer_authority():
|
||||||
Session.shoot(int(machine.player.name),damage,1.5)
|
Session.shoot(int(machine.player.name),damage,damage,damage,1.5)
|
||||||
|
|
||||||
func on_animation_finished(animation):
|
func on_animation_finished(animation):
|
||||||
if animation == machine.animation_prefix + "heavy_attack":
|
if animation == machine.animation_prefix + "heavy_attack":
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue