more tweaks to weapon script and revolvers
This commit is contained in:
@@ -1356,7 +1356,7 @@ _data = {
|
|||||||
"swap_out": SubResource("Animation_nvmxj")
|
"swap_out": SubResource("Animation_nvmxj")
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="revolver1" type="Node3D" node_paths=PackedStringArray("anim_player", "barrel_ray", "audio_fire", "audio_empty", "audio_reload", "casing_array", "bullet_array", "chamber")]
|
[node name="revolver1" type="Node3D" node_paths=PackedStringArray("anim_player", "barrel_ray", "audio_fire", "audio_empty", "audio_reload", "casing_array", "chamber")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0718293, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0718293, 0)
|
||||||
script = ExtResource("2_boy4r")
|
script = ExtResource("2_boy4r")
|
||||||
weapon_info = ExtResource("3_oxh61")
|
weapon_info = ExtResource("3_oxh61")
|
||||||
@@ -1365,8 +1365,7 @@ barrel_ray = NodePath("revolver1/RayCastBarrel")
|
|||||||
audio_fire = NodePath("Audio/Fire")
|
audio_fire = NodePath("Audio/Fire")
|
||||||
audio_empty = NodePath("Audio/Empty")
|
audio_empty = NodePath("Audio/Empty")
|
||||||
audio_reload = NodePath("Audio/Reload")
|
audio_reload = NodePath("Audio/Reload")
|
||||||
casing_array = [NodePath("revolver1/Chamber/RayCastCasing1"), NodePath("revolver1/Chamber/RayCastCasing2"), NodePath("revolver1/Chamber/RayCastCasing3"), NodePath("revolver1/Chamber/RayCastCasing4"), NodePath("revolver1/Chamber/RayCastCasing5"), NodePath("revolver1/Chamber/RayCastCasing6")]
|
casing_array = [NodePath("revolver1/Chamber/casing"), NodePath("revolver1/Chamber/casing_001"), NodePath("revolver1/Chamber/casing_002"), NodePath("revolver1/Chamber/casing_003"), NodePath("revolver1/Chamber/casing_004"), NodePath("revolver1/Chamber/casing_005")]
|
||||||
bullet_array = [NodePath("revolver1/Chamber/bullet"), NodePath("revolver1/Chamber/bullet_001"), NodePath("revolver1/Chamber/bullet_002"), NodePath("revolver1/Chamber/bullet_003"), NodePath("revolver1/Chamber/bullet_004"), NodePath("revolver1/Chamber/bullet_005")]
|
|
||||||
chamber = NodePath("revolver1/Chamber")
|
chamber = NodePath("revolver1/Chamber")
|
||||||
|
|
||||||
[node name="revolver1" type="MeshInstance3D" parent="."]
|
[node name="revolver1" type="MeshInstance3D" parent="."]
|
||||||
@@ -1479,7 +1478,7 @@ mesh = SubResource("ArrayMesh_0w43n")
|
|||||||
skeleton = NodePath("")
|
skeleton = NodePath("")
|
||||||
|
|
||||||
[node name="Trigger" type="MeshInstance3D" parent="revolver1"]
|
[node name="Trigger" type="MeshInstance3D" parent="revolver1"]
|
||||||
transform = Transform3D(0.207537, -0.978227, 3.54117e-06, 0, -3.61999e-06, -1, 0.978227, 0.207537, -7.51281e-07, 0.226752, 0, -0.00209358)
|
transform = Transform3D(0.207537, -0.978227, 4.27597e-08, 0, -4.37114e-08, -1, 0.978227, 0.207537, -9.07173e-09, 0.226752, 0, -0.00209358)
|
||||||
cast_shadow = 0
|
cast_shadow = 0
|
||||||
mesh = SubResource("ArrayMesh_ahftj")
|
mesh = SubResource("ArrayMesh_ahftj")
|
||||||
skeleton = NodePath("")
|
skeleton = NodePath("")
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ gun_name = "Mac 10"
|
|||||||
gun_icon = ExtResource("2_a3oyj")
|
gun_icon = ExtResource("2_a3oyj")
|
||||||
path = "res://assets/mac_10_uber.tscn"
|
path = "res://assets/mac_10_uber.tscn"
|
||||||
weapon_type = 0
|
weapon_type = 0
|
||||||
|
reload_type = 0
|
||||||
bullet = ExtResource("1_y4ehq")
|
bullet = ExtResource("1_y4ehq")
|
||||||
fire_mode = 0
|
fire_mode = 0
|
||||||
fov_zoom_amt = 0.98
|
fov_zoom_amt = 0.98
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ gun_name = "machete"
|
|||||||
gun_icon = ExtResource("1_c6dni")
|
gun_icon = ExtResource("1_c6dni")
|
||||||
path = "res://assets/machete.tscn"
|
path = "res://assets/machete.tscn"
|
||||||
weapon_type = 1
|
weapon_type = 1
|
||||||
|
reload_type = 0
|
||||||
fire_mode = 1
|
fire_mode = 1
|
||||||
fov_zoom_amt = 0.98
|
fov_zoom_amt = 0.98
|
||||||
ads = false
|
ads = false
|
||||||
@@ -22,3 +23,4 @@ bullet_force_mod = 5.0
|
|||||||
bullet_speed = 600
|
bullet_speed = 600
|
||||||
shotgun_spread = Vector3(0.1, 0.1, 0.1)
|
shotgun_spread = Vector3(0.1, 0.1, 0.1)
|
||||||
pellets_per_shot = 20
|
pellets_per_shot = 20
|
||||||
|
blast_power = 50.0
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ ads = false
|
|||||||
recoil_amount = Vector3(0.05, 0.05, 0.05)
|
recoil_amount = Vector3(0.05, 0.05, 0.05)
|
||||||
kick_amount = 0.1
|
kick_amount = 0.1
|
||||||
max_ammo = 6
|
max_ammo = 6
|
||||||
start_mags = 30
|
start_mags = 1
|
||||||
bullet_damage = 1
|
bullet_damage = 1
|
||||||
smoke_enabled = false
|
smoke_enabled = false
|
||||||
bullet_force_mod = 5.0
|
bullet_force_mod = 5.0
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ class_name level
|
|||||||
@export var stamina_drop_enabled = true
|
@export var stamina_drop_enabled = true
|
||||||
@export var money_drop_enabled = true
|
@export var money_drop_enabled = true
|
||||||
|
|
||||||
@onready var item_pickup = preload("res://assets/item_pickup.tscn")
|
const ITEM_PICKUP = preload("res://assets/item_pickup.tscn")
|
||||||
@onready var crown = preload("res://assets/crown.tscn")
|
const CROWN = preload("res://assets/crown.tscn")
|
||||||
var dead_player = preload("res://assets/dead_cam.tscn")
|
const DEAD_PLAYER = preload("res://assets/dead_cam.tscn")
|
||||||
const DEAD_ANNOUNCE = preload("res://assets/dead_announce.tscn")
|
const DEAD_ANNOUNCE = preload("res://assets/dead_announce.tscn")
|
||||||
const CHEST_1 = preload("res://chest1.tscn")
|
const CHEST_1 = preload("res://chest1.tscn")
|
||||||
|
|
||||||
@@ -65,7 +65,7 @@ func _ready():
|
|||||||
|
|
||||||
#Spawn Crown
|
#Spawn Crown
|
||||||
if GameGlobals.last_hit_path:
|
if GameGlobals.last_hit_path:
|
||||||
var crown_spawn = crown.instantiate()
|
var crown_spawn = CROWN.instantiate()
|
||||||
var crown_target = get_node(GameGlobals.last_hit_path)
|
var crown_target = get_node(GameGlobals.last_hit_path)
|
||||||
if crown_target:
|
if crown_target:
|
||||||
crown_target.add_child(crown_spawn)
|
crown_target.add_child(crown_spawn)
|
||||||
@@ -174,7 +174,7 @@ func die():
|
|||||||
SaveLoad.save_user_data()
|
SaveLoad.save_user_data()
|
||||||
var deadmsg = DEAD_ANNOUNCE.instantiate()
|
var deadmsg = DEAD_ANNOUNCE.instantiate()
|
||||||
get_parent().add_child(deadmsg)
|
get_parent().add_child(deadmsg)
|
||||||
var instance_dead = dead_player.instantiate()
|
var instance_dead = DEAD_PLAYER.instantiate()
|
||||||
instance_dead.global_position = player.camera.global_position
|
instance_dead.global_position = player.camera.global_position
|
||||||
instance_dead.transform.basis = player.global_transform.basis
|
instance_dead.transform.basis = player.global_transform.basis
|
||||||
if last_hit != null:
|
if last_hit != null:
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ class_name weapon
|
|||||||
@export var fire_smoke : GPUParticles3D
|
@export var fire_smoke : GPUParticles3D
|
||||||
@export var smoke_timer : Timer
|
@export var smoke_timer : Timer
|
||||||
@export_group("Revolver")
|
@export_group("Revolver")
|
||||||
@export var casing_array : Array[RayCast3D]
|
@export var casing_array : Array[MeshInstance3D]
|
||||||
@export var bullet_array : Array[MeshInstance3D]
|
@export var bullet_array : Array[MeshInstance3D]
|
||||||
@export var chamber : Node
|
@export var chamber : Node
|
||||||
@export_group("Melee")
|
@export_group("Melee")
|
||||||
@@ -67,46 +67,34 @@ func _process(_delta):
|
|||||||
looking_mesh.look_at(tracker.global_position)
|
looking_mesh.look_at(tracker.global_position)
|
||||||
else:
|
else:
|
||||||
weapon_info.tracker_asset.tracker_indicator_material.emission = TRACKER_NULL_COLOR
|
weapon_info.tracker_asset.tracker_indicator_material.emission = TRACKER_NULL_COLOR
|
||||||
looking_mesh.rotation = lerp(rotation, Vector3(0,0,0), _delta * 4)
|
looking_mesh.rotation = lerp(rotation, Vector3(0,0,0), _delta * 4)
|
||||||
if check_track:
|
if check_track:
|
||||||
tracker_checker(_delta)
|
tracker_checker(_delta)
|
||||||
|
|
||||||
func reload_finished():
|
func reload_finished():
|
||||||
match weapon_info.reload_type:
|
match weapon_info.reload_type:
|
||||||
0:
|
0: #MAGAZINE
|
||||||
if GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)] >= weapon_info.max_ammo:
|
#calculate ammo to add from reserve --- discards ammo in previous mag
|
||||||
GameGlobals.gun_ammo[weapon_info.gun_name] += weapon_info.max_ammo
|
var ammo_added = clamp(weapon_info.max_ammo,1,GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)])
|
||||||
GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)] -= weapon_info.max_ammo
|
#add to gun and remove from reserve
|
||||||
casings_chamber_last = weapon_info.max_ammo
|
GameGlobals.gun_ammo[weapon_info.gun_name] += ammo_added
|
||||||
else:
|
GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)] -= ammo_added
|
||||||
GameGlobals.gun_ammo[weapon_info.gun_name] += GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)]
|
1: #REVOLVER
|
||||||
GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)] -= GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)]
|
#calculate ammo to add from reserve --- only pulls from what it is missing
|
||||||
casings_chamber_last = GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)]
|
|
||||||
1:
|
|
||||||
#if max ammo in reserve fill all the way
|
|
||||||
var ammo_needed = weapon_info.max_ammo - GameGlobals.gun_ammo[weapon_info.gun_name]
|
var ammo_needed = weapon_info.max_ammo - GameGlobals.gun_ammo[weapon_info.gun_name]
|
||||||
|
var ammo_added = clamp(ammo_needed,1,GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)])
|
||||||
if GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)] >= weapon_info.max_ammo:
|
#add to gun and remove from reserve
|
||||||
GameGlobals.gun_ammo[weapon_info.gun_name] += ammo_needed
|
GameGlobals.gun_ammo[weapon_info.gun_name] += ammo_added
|
||||||
GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)] -= ammo_needed
|
GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)] -= ammo_added
|
||||||
casings_chamber_last = weapon_info.max_ammo
|
#make the added-back casings visible
|
||||||
for i in casing_array:
|
var index = 0
|
||||||
i.visible = true
|
while index <= (ammo_added - 1):
|
||||||
for i in bullet_array:
|
if index < bullet_array.size():
|
||||||
i.visible = true
|
bullet_array[index].visible = true
|
||||||
player.reloading = false
|
if index < casing_array.size():
|
||||||
#if not max ammo in reserve add remaining ammo
|
casing_array[index].visible = true
|
||||||
else:
|
index += 1
|
||||||
GameGlobals.gun_ammo[weapon_info.gun_name] += GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)]
|
|
||||||
var casings_in_chamber = GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)]
|
|
||||||
casings_chamber_last = GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)]
|
|
||||||
GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)] -= GameGlobals.ammo_reserve[str(weapon_info.bullet.ammo_type)]
|
|
||||||
|
|
||||||
while casings_in_chamber > 0:
|
|
||||||
casing_array[casings_in_chamber].visible = true
|
|
||||||
bullet_array[casings_in_chamber].visible = true
|
|
||||||
casings_in_chamber -= 1
|
|
||||||
await get_tree().create_timer(.01).timeout
|
|
||||||
|
|
||||||
func shoot():
|
func shoot():
|
||||||
if weapon_info.weapon_type == 0:
|
if weapon_info.weapon_type == 0:
|
||||||
@@ -177,8 +165,11 @@ func spawn_revolver_casings():
|
|||||||
if casing_array.size() > 0:
|
if casing_array.size() > 0:
|
||||||
var ammo_needed = weapon_info.max_ammo - GameGlobals.gun_ammo[weapon_info.gun_name]
|
var ammo_needed = weapon_info.max_ammo - GameGlobals.gun_ammo[weapon_info.gun_name]
|
||||||
var index = 0
|
var index = 0
|
||||||
while index < ammo_needed:
|
while index <= ammo_needed - 1:
|
||||||
bullet_array[index].visible = false
|
if index < bullet_array.size():
|
||||||
|
bullet_array[index].visible = false
|
||||||
|
if index < casing_array.size():
|
||||||
|
casing_array[index].visible = false
|
||||||
var instance_casing = weapon_info.casing.instantiate()
|
var instance_casing = weapon_info.casing.instantiate()
|
||||||
instance_casing.position = casing_array[index].global_position
|
instance_casing.position = casing_array[index].global_position
|
||||||
instance_casing.random_rotation = false
|
instance_casing.random_rotation = false
|
||||||
|
|||||||
Reference in New Issue
Block a user