Persuader

This commit is contained in:
2026-02-10 18:42:46 -08:00
parent 92b4e8662f
commit 5451f0b31f
6 changed files with 700 additions and 15 deletions

View File

@@ -95,6 +95,8 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
[Node] private Projectile FireReactor { get; set; } = default!;
[Node] private Projectile AirReactor { get; set; } = default!;
[Node] private Projectile WaterReactor { get; set; } = default!;
[Node] private Projectile PersuaderBullet { get; set; } = default!;
[Node] private Sprite2D PersuaderCrosshair { get; set; } = default!;
#endregion
@@ -280,6 +282,9 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
VTComponent.RaiseMaximumVT(equipable.BonusVT, false);
EquipmentComponent.Equip(equipable);
if (equipable is Weapon weapon && weapon.WeaponTag == WeaponTag.KineticProjectile)
PersuaderCrosshair.Show();
}
public void Unequip(EquipableItem equipable)
@@ -288,6 +293,9 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
VTComponent.SetMaximumVT(VTComponent.MaximumVT.Value - equipable.BonusVT);
EquipmentComponent.Unequip(equipable);
if (equipable is Weapon weapon && weapon.WeaponTag == WeaponTag.KineticProjectile)
PersuaderCrosshair.Hide();
}
private static Vector3 GlobalInputVector
@@ -324,7 +332,7 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
private void Attack()
{
var weapon = EquipmentComponent.EquippedWeapon.Value as Weapon;
if (weapon.WeaponTag == WeaponTag.ElementalProjectile)
if (weapon.WeaponTag == WeaponTag.ElementalProjectile || weapon.WeaponTag == WeaponTag.KineticProjectile)
{
HandleProjectile(weapon);
return;
@@ -349,19 +357,24 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
if (ammo == null || ammo.Count <= 0)
return;
if (weapon.WeaponTag != WeaponTag.ElementalProjectile)
return;
if (weapon.WeaponTag == WeaponTag.ElementalProjectile)
{
var fired = false;
if (ammo.AmmoElement == ElementType.Igneous)
fired = FireReactor.Fire();
if (ammo.AmmoElement == ElementType.Aeolic)
fired = AirReactor.Fire();
if (ammo.AmmoElement == ElementType.Hydric)
fired = WaterReactor.Fire();
var fired = false;
if (ammo.AmmoElement == ElementType.Igneous)
fired = FireReactor.Fire();
if (ammo.AmmoElement == ElementType.Aeolic)
fired = AirReactor.Fire();
if (ammo.AmmoElement == ElementType.Hydric)
fired = WaterReactor.Fire();
if (!fired)
return;
if (!fired)
return;
}
else if (weapon.WeaponTag == WeaponTag.KineticProjectile)
{
var fired = false;
fired = PersuaderBullet.Fire();
}
ammo.SetCount(ammo.Count - 1);
if (ammo.Count <= 0)

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=1583 format=3 uid="uid://cfecvvav8kkp6"]
[gd_scene load_steps=1585 format=3 uid="uid://cfecvvav8kkp6"]
[ext_resource type="Script" uid="uid://yxmiqy7i0t7r" path="res://src/player/Player.cs" id="1_xcol5"]
[ext_resource type="PackedScene" uid="uid://didc6vnf5ftlg" path="res://src/camera/ShakeCamera.tscn" id="2_jtmj1"]
@@ -508,9 +508,11 @@
[ext_resource type="Texture2D" uid="uid://bvqsilbdfyqd1" path="res://src/vfx/Items Etc/persiko/persiko125.png" id="399_b1hpb"]
[ext_resource type="Texture2D" uid="uid://bwoccwmlevwm1" path="res://src/vfx/Items Etc/persiko/persiko126.png" id="400_nmop6"]
[ext_resource type="Texture2D" uid="uid://dwfqyfjsj8nro" path="res://src/vfx/Items Etc/persiko/persiko127.png" id="401_28ame"]
[ext_resource type="Texture2D" uid="uid://pv56eou8fuw6" path="res://src/vfx/Items Etc/crosshair.png" id="508_sq73w"]
[ext_resource type="PackedScene" uid="uid://igpvnbi8qi6e" path="res://src/items/weapons/FireReactorProjectile.tscn" id="509_14f5p"]
[ext_resource type="PackedScene" uid="uid://nnns2ade62al" path="res://src/items/weapons/AirReactorProjectile.tscn" id="510_k6pkx"]
[ext_resource type="PackedScene" uid="uid://7p2sh52lj42o" path="res://src/items/weapons/WaterReactorProjectile.tscn" id="511_sq73w"]
[ext_resource type="PackedScene" uid="uid://d3nx0suvhbcda" path="res://src/items/weapons/PersuaderProjectile.tscn" id="512_k6pkx"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_dw45s"]
radius = 1.0
@@ -10491,6 +10493,12 @@ sprite_frames = SubResource("SpriteFrames_krly2")
frame = 63
frame_progress = 1.0
[node name="PersuaderCrosshair" type="Sprite2D" parent="ScreenFX"]
unique_name_in_owner = true
visible = false
position = Vector2(723, 575)
texture = ExtResource("508_sq73w")
[node name="HitWallSound" type="AudioStreamPlayer" parent="."]
unique_name_in_owner = true
bus = &"SFX"
@@ -10509,3 +10517,9 @@ unique_name_in_owner = true
[node name="WaterReactor" parent="Projectiles" instance=ExtResource("511_sq73w")]
unique_name_in_owner = true
[node name="PersuaderBullet" parent="Projectiles" instance=ExtResource("512_k6pkx")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -1.125)
[editable path="Projectiles/PersuaderBullet"]