Beeg fixpack
This commit is contained in:
@@ -53,11 +53,4 @@ public class AttackComponent : IAttackComponent
|
||||
_maximumAttack.OnNext(_maximumAttack.Value + raiseAmount);
|
||||
Restore(raiseAmount);
|
||||
}
|
||||
|
||||
public void LowerMaximumAttack(int lowerAmount)
|
||||
{
|
||||
_maximumAttack.OnNext(Mathf.Max(_maximumAttack.Value + lowerAmount, 0));
|
||||
if (_currentAttack.Value > _maximumAttack.Value)
|
||||
_currentAttack.OnNext(_maximumAttack.Value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,11 +53,4 @@ public class DefenseComponent : IDefenseComponent
|
||||
_maximumDefense.OnNext(_maximumDefense.Value + raiseAmount);
|
||||
Restore(raiseAmount);
|
||||
}
|
||||
|
||||
public void LowerMaximumDefense(int lowerAmount)
|
||||
{
|
||||
_maximumDefense.OnNext(Mathf.Max(_maximumDefense.Value + lowerAmount, 0));
|
||||
if (_currentDefense.Value > _maximumDefense.Value)
|
||||
_currentDefense.OnNext(_maximumDefense.Value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,20 +48,17 @@ public class ExperiencePointsComponent : IExperiencePointsComponent
|
||||
public void Gain(int baseExpGain)
|
||||
{
|
||||
var modifiedExpGain = baseExpGain * _expGainRate.Value;
|
||||
var newCurrentExpTotal = modifiedExpGain + _currentExp.Value;
|
||||
while (modifiedExpGain + _currentExp.Value >= _expToNextLevel.Value)
|
||||
_currentExp.OnNext(Mathf.RoundToInt(modifiedExpGain + _currentExp.Value));
|
||||
while (_currentExp.Value >= _expToNextLevel.Value)
|
||||
LevelUp();
|
||||
var cappedAmount = Math.Min(baseExpGain + _currentExp.Value, _expToNextLevel.Value);
|
||||
_currentExp.OnNext(cappedAmount);
|
||||
}
|
||||
|
||||
public void GainUnmodified(int flatRateExp)
|
||||
{
|
||||
var newCurrentExpTotal = flatRateExp + _currentExp.Value;
|
||||
while (flatRateExp + _currentExp.Value >= _expToNextLevel.Value)
|
||||
_currentExp.OnNext(newCurrentExpTotal);
|
||||
while (_currentExp.Value >= _expToNextLevel.Value)
|
||||
LevelUp();
|
||||
var cappedAmount = Math.Min(flatRateExp + _currentExp.Value, _expToNextLevel.Value);
|
||||
_currentExp.OnNext(cappedAmount);
|
||||
}
|
||||
|
||||
public void ModifyExpGainRate(double newRate) => _expGainRate.OnNext(newRate);
|
||||
|
||||
@@ -7,12 +7,14 @@ namespace Zennysoft.Game.Ma;
|
||||
public class LuckComponent : ILuckComponent
|
||||
{
|
||||
public IAutoProp<int> Luck => _luck;
|
||||
public int InitialLuck { get; }
|
||||
|
||||
private readonly AutoProp<int> _luck;
|
||||
private readonly int _initialValue;
|
||||
|
||||
public LuckComponent(int initialLuck)
|
||||
{
|
||||
InitialLuck = initialLuck;
|
||||
_luck = new AutoProp<int>(initialLuck);
|
||||
_initialValue = initialLuck;
|
||||
}
|
||||
|
||||
@@ -34,22 +34,26 @@ script = ExtResource("1_ojkqd")
|
||||
|
||||
[node name="OpenInventorySound" type="AudioStreamPlayer" parent="UI"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("5_p5cio")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="MoveSound" type="AudioStreamPlayer" parent="UI"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("6_r16t0")
|
||||
max_polyphony = 5
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="SelectSound" type="AudioStreamPlayer" parent="UI"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("10_nerso")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="CancelSound" type="AudioStreamPlayer" parent="UI"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("11_rloay")
|
||||
bus = &"SFX"
|
||||
|
||||
@@ -57,56 +61,67 @@ bus = &"SFX"
|
||||
|
||||
[node name="HealHPSound" type="AudioStreamPlayer" parent="Player"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("2_158j8")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="TakeDamageSound" type="AudioStreamPlayer" parent="Player"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("10_kac56")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="HealVTSound" type="AudioStreamPlayer" parent="Player"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("3_kac56")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="WeaponQuickSlashSound" type="AudioStreamPlayer" parent="Player"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("13_fa8i8")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="WeaponPlasmaSword" type="AudioStreamPlayer" parent="Player"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("10_7th20")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="WeaponSlowSlashSound" type="AudioStreamPlayer" parent="Player"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("10_vyvit")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="CritSound" type="AudioStreamPlayer" parent="Player"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("14_p5cio")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="PickupItemSound" type="AudioStreamPlayer" parent="Player"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("15_r16t0")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="LevelUpSound" type="AudioStreamPlayer" parent="Player"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("16_sew62")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="EquipSound" type="AudioStreamPlayer" parent="Player"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("7_sew62")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="UnequipSound" type="AudioStreamPlayer" parent="Player"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("8_rf1la")
|
||||
bus = &"SFX"
|
||||
|
||||
@@ -114,55 +129,66 @@ bus = &"SFX"
|
||||
|
||||
[node name="TransferItemSound" type="AudioStreamPlayer" parent="Item"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("18_l6w22")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="IncreaseStatSound" type="AudioStreamPlayer" parent="Item"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("4_fa8i8")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="DecreaseStatSound" type="AudioStreamPlayer" parent="Item"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("4_fa8i8")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="SortSound" type="AudioStreamPlayer" parent="Item"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("9_l6w22")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="RecallEnemiesSound" type="AudioStreamPlayer" parent="Item"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("19_nerso")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="KillHalfEnemiesSound" type="AudioStreamPlayer" parent="Item"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("20_rloay")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="TeleportToRandomRoomSound" type="AudioStreamPlayer" parent="Item"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("21_6hsck")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="TeleportToExitSound" type="AudioStreamPlayer" parent="Item"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("22_3wq6u")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="AbsorbHPFromAllEnemiesSound" type="AudioStreamPlayer" parent="Item"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("23_aaerj")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="SwapHPAndVTSound" type="AudioStreamPlayer" parent="Item"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("23_jdwj3")
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="TurnAllEnemiesIntoHealingItemsSound" type="AudioStreamPlayer" parent="Item"]
|
||||
unique_name_in_owner = true
|
||||
process_mode = 3
|
||||
stream = ExtResource("24_jdwj3")
|
||||
bus = &"SFX"
|
||||
|
||||
@@ -77,6 +77,8 @@ public partial class Game : Node3D, IGame
|
||||
private IPlayer _player;
|
||||
private IMap _map;
|
||||
|
||||
private Timer _doubleExpTimer;
|
||||
|
||||
[Signal] private delegate void OnLoadLevelRequestEventHandler();
|
||||
|
||||
public Game()
|
||||
@@ -184,22 +186,17 @@ public partial class Game : Node3D, IGame
|
||||
|
||||
PauseMenu.ExitGamePressed += OnQuit;
|
||||
|
||||
_doubleExpTimer = new Timer();
|
||||
_doubleExpTimer.WaitTime = 30;
|
||||
_doubleExpTimer.Timeout += EndDoubleExpTimer;
|
||||
AddChild(_doubleExpTimer);
|
||||
|
||||
GameRepo.IsPaused.Sync += IsPaused_Sync;
|
||||
InGameUI.PlayerInfoUI.Activate();
|
||||
InGameUI.Show();
|
||||
GameRepo.Resume();
|
||||
}
|
||||
|
||||
private void GameRepo_EnemyDied(IEnemy obj)
|
||||
{
|
||||
DropRestorative(obj.GlobalPosition);
|
||||
}
|
||||
|
||||
private void BroadcastMessage(string obj)
|
||||
{
|
||||
InGameUI.InventoryMessageUI.DisplayMessage(obj);
|
||||
}
|
||||
|
||||
public void LoadExistingGame() => SaveFile.Load().ContinueWith((_) => CallDeferred(nameof(FinishedLoadingSaveFile)));
|
||||
|
||||
public async Task InitializeGame()
|
||||
@@ -264,6 +261,15 @@ public partial class Game : Node3D, IGame
|
||||
RemoveItemOrSubtractFromItemCount(item);
|
||||
}
|
||||
|
||||
public void DoubleExp()
|
||||
{
|
||||
GameRepo.AnnounceMessageOnMainScreen("Experience points temporarily doubled.");
|
||||
if (_doubleExpTimer.TimeLeft == 0)
|
||||
_player.ExperiencePointsComponent.ModifyExpGainRate(_player.ExperiencePointsComponent.ExpGainRate.Value * 2);
|
||||
|
||||
_doubleExpTimer.Start();
|
||||
}
|
||||
|
||||
public IDungeonFloor CurrentFloor => _map.CurrentFloor;
|
||||
|
||||
public async void GameOver()
|
||||
@@ -315,6 +321,7 @@ public partial class Game : Node3D, IGame
|
||||
GameRepo.Pause();
|
||||
InGameUI.InventoryMenu.Show();
|
||||
InGameUI.InventoryMenu.SetProcessInput(true);
|
||||
SfxDatabase.Instance.Play(SoundEffect.OpenInventory);
|
||||
})
|
||||
.Handle((in GameState.Output.CloseInventoryMenu _) =>
|
||||
{
|
||||
@@ -549,11 +556,14 @@ public partial class Game : Node3D, IGame
|
||||
case UsableItemTag.LowerLevel:
|
||||
_effectService.LowerLevel();
|
||||
break;
|
||||
case UsableItemTag.LowerCurrentDefenseArmor:
|
||||
_effectService.LowerCurrentArmorDefense();
|
||||
break;
|
||||
case UsableItemTag.RandomEffect:
|
||||
_effectService.RandomEffect(effectItem);
|
||||
break;
|
||||
case UsableItemTag.DoubleExp:
|
||||
GameRepo.StartDoubleEXP(TimeSpan.FromSeconds(30));
|
||||
_effectService.DoubleExp();
|
||||
GameRepo.CloseInventory();
|
||||
break;
|
||||
case UsableItemTag.TeleportToRandomLocation:
|
||||
@@ -577,11 +587,11 @@ public partial class Game : Node3D, IGame
|
||||
SfxDatabase.Instance.Play(SoundEffect.IncreaseStat);
|
||||
break;
|
||||
case UsableItemTag.DecreaseAttack:
|
||||
_player.AttackComponent.LowerMaximumAttack(effectItem.Stats.BonusAttack);
|
||||
_player.AttackComponent.Reduce(effectItem.Stats.BonusAttack);
|
||||
SfxDatabase.Instance.Play(SoundEffect.DecreaseStat);
|
||||
break;
|
||||
case UsableItemTag.DecreaseDefense:
|
||||
_player.DefenseComponent.LowerMaximumDefense(effectItem.Stats.BonusDefense);
|
||||
_player.DefenseComponent.Reduce(effectItem.Stats.BonusDefense);
|
||||
SfxDatabase.Instance.Play(SoundEffect.DecreaseStat);
|
||||
break;
|
||||
case UsableItemTag.DecreaseLuck:
|
||||
@@ -589,8 +599,8 @@ public partial class Game : Node3D, IGame
|
||||
SfxDatabase.Instance.Play(SoundEffect.DecreaseStat);
|
||||
break;
|
||||
case UsableItemTag.DecreaseAllStats:
|
||||
_player.AttackComponent.LowerMaximumAttack(effectItem.Stats.BonusAttack);
|
||||
_player.DefenseComponent.LowerMaximumDefense(effectItem.Stats.BonusDefense);
|
||||
_player.AttackComponent.Reduce(effectItem.Stats.BonusAttack);
|
||||
_player.DefenseComponent.Reduce(effectItem.Stats.BonusDefense);
|
||||
_player.LuckComponent.DecreaseLuck(effectItem.Stats.BonusLuck);
|
||||
SfxDatabase.Instance.Play(SoundEffect.DecreaseStat);
|
||||
break;
|
||||
@@ -598,6 +608,10 @@ public partial class Game : Node3D, IGame
|
||||
_effectService.MeltAllEquipment(_player);
|
||||
SfxDatabase.Instance.Play(SoundEffect.DecreaseStat);
|
||||
break;
|
||||
case UsableItemTag.RestoreStats:
|
||||
_effectService.RestoreParameters(_player);
|
||||
SfxDatabase.Instance.Play(SoundEffect.IncreaseStat);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -611,6 +625,23 @@ public partial class Game : Node3D, IGame
|
||||
|
||||
public void ShowDebugInfo(bool show) => InGameUI.DebugInfo.Visible = show;
|
||||
|
||||
private void EndDoubleExpTimer()
|
||||
{
|
||||
GameRepo.AnnounceMessageOnMainScreen("Experience points effect wore off.");
|
||||
SfxDatabase.Instance.Play(SoundEffect.MoveUI);
|
||||
_player.ExperiencePointsComponent.ModifyExpGainRate(_player.ExperiencePointsComponent.ExpGainRate.Value / 2);
|
||||
}
|
||||
|
||||
private void GameRepo_EnemyDied(IEnemy obj)
|
||||
{
|
||||
DropRestorative(obj.GlobalPosition);
|
||||
}
|
||||
|
||||
private void BroadcastMessage(string obj)
|
||||
{
|
||||
InGameUI.InventoryMessageUI.DisplayMessage(obj);
|
||||
}
|
||||
|
||||
private void MovePlayer((Vector3 Rotation, Vector3 Position) spawnPoint) => _player.TeleportPlayer(spawnPoint);
|
||||
|
||||
private void OnNewGame()
|
||||
|
||||
@@ -34,6 +34,8 @@ public interface IGame : IProvide<IGame>, IProvide<IGameRepo>, IProvide<IPlayer>
|
||||
|
||||
public void ShowDebugInfo(bool show);
|
||||
|
||||
public void DoubleExp();
|
||||
|
||||
public ItemRescueMenu ItemRescueMenu { get; }
|
||||
|
||||
public QuestData QuestData { get; }
|
||||
|
||||
@@ -152,6 +152,11 @@ public class EffectService
|
||||
_game.UseItem(item);
|
||||
}
|
||||
|
||||
public void DoubleExp()
|
||||
{
|
||||
_game.DoubleExp();
|
||||
}
|
||||
|
||||
public void RaiseCurrentWeaponAttack()
|
||||
{
|
||||
if (string.IsNullOrEmpty(_player.EquipmentComponent.EquippedWeapon.Value.ItemName))
|
||||
@@ -172,6 +177,34 @@ public class EffectService
|
||||
SfxDatabase.Instance.Play(SoundEffect.IncreaseStat);
|
||||
}
|
||||
|
||||
public void LowerCurrentArmorDefense()
|
||||
{
|
||||
if (string.IsNullOrEmpty(_player.EquipmentComponent.EquippedArmor.Value.ItemName))
|
||||
return;
|
||||
|
||||
var currentArmor = (Armor)_player.EquipmentComponent.EquippedArmor.Value;
|
||||
currentArmor.DecreaseArmorDefense(1);
|
||||
SfxDatabase.Instance.Play(SoundEffect.DecreaseStat);
|
||||
}
|
||||
|
||||
public void RestoreParameters(IPlayer player)
|
||||
{
|
||||
var hpToRestore = player.HealthComponent.MaximumHP.Value;
|
||||
player.HealthComponent.SetCurrentHealth(hpToRestore);
|
||||
|
||||
var vtToRestore = player.VTComponent.MaximumVT.Value;
|
||||
player.VTComponent.SetVT(vtToRestore);
|
||||
|
||||
var attackToRestore = player.AttackComponent.MaximumAttack.Value - player.AttackComponent.CurrentAttack.Value;
|
||||
player.AttackComponent.Restore(attackToRestore);
|
||||
|
||||
var defenseToRestore = player.DefenseComponent.MaximumDefense.Value - player.DefenseComponent.CurrentDefense.Value;
|
||||
player.DefenseComponent.Restore(defenseToRestore);
|
||||
|
||||
if (player.LuckComponent.Luck.Value < player.LuckComponent.InitialLuck)
|
||||
player.LuckComponent.IncreaseLuck(player.LuckComponent.InitialLuck - player.LuckComponent.Luck.Value);
|
||||
}
|
||||
|
||||
public void RaiseLevel()
|
||||
{
|
||||
var expToNextLevel = _player.ExperiencePointsComponent.ExpToNextLevel.Value - _player.ExperiencePointsComponent.CurrentExp.Value;
|
||||
|
||||
@@ -64,6 +64,8 @@ public partial class Armor : Node3D, IArmor
|
||||
|
||||
public void IncreaseArmorDefense(int bonus) => _bonusDefense += bonus;
|
||||
|
||||
public void DecreaseArmorDefense(int lowerAmount) => _bonusDefense = Mathf.Max(_bonusDefense - lowerAmount, 0);
|
||||
|
||||
public ItemTag ItemTag => Stats.ItemTag;
|
||||
|
||||
[Save("armor_stats")]
|
||||
|
||||
@@ -28,6 +28,7 @@ collision_mask = 0
|
||||
|
||||
[node name="Sprite" type="Sprite3D" parent="Pickup"]
|
||||
unique_name_in_owner = true
|
||||
pixel_size = 0.005
|
||||
billboard = 2
|
||||
double_sided = false
|
||||
alpha_cut = 1
|
||||
|
||||
@@ -28,6 +28,7 @@ collision_mask = 0
|
||||
|
||||
[node name="Sprite" type="Sprite3D" parent="Pickup"]
|
||||
unique_name_in_owner = true
|
||||
pixel_size = 0.005
|
||||
billboard = 2
|
||||
shaded = true
|
||||
texture_filter = 0
|
||||
|
||||
@@ -29,6 +29,7 @@ collision_mask = 0
|
||||
[node name="Sprite" type="Sprite3D" parent="Pickup"]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0322805, 0)
|
||||
pixel_size = 0.005
|
||||
billboard = 2
|
||||
shaded = true
|
||||
double_sided = false
|
||||
|
||||
@@ -32,6 +32,7 @@ shape = SubResource("BoxShape3D_03cqg")
|
||||
[node name="Sprite" type="Sprite3D" parent="Pickup"]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(0.999973, 0.00489444, -0.00548299, -0.00488109, 0.999985, 0.00244357, 0.00549488, -0.00241672, 0.999982, 0, 0, 0)
|
||||
pixel_size = 0.005
|
||||
billboard = 2
|
||||
shaded = true
|
||||
texture_filter = 0
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_cjlom")
|
||||
UsableItemTag = 15
|
||||
UsableItemTag = 17
|
||||
ElementalDamageType = 0
|
||||
Name = "Spell Sign: Ablution"
|
||||
Description = "Lowers HP to 1."
|
||||
SpawnRate = 0.5
|
||||
BonusAttack = 0
|
||||
BonusDefense = 0
|
||||
BonusLuck = 0.05
|
||||
BonusLuck = 5
|
||||
BonusHP = 0
|
||||
BonusVT = 0
|
||||
AeolicResistance = 0
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_3gj16")
|
||||
UsableItemTag = 14
|
||||
UsableItemTag = 16
|
||||
ElementalDamageType = 0
|
||||
Name = "An Bradán Feasa"
|
||||
Description = "Doubles EXP temporarily."
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_mhyhg")
|
||||
UsableItemTag = 22
|
||||
UsableItemTag = 24
|
||||
ElementalDamageType = 0
|
||||
Name = "Spell Sign: Atomization"
|
||||
Description = "Permanently Lowers Defense by 1."
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
[gd_resource type="Resource" script_class="EffectItemStats" load_steps=3 format=3 uid="uid://c3a2pvu1xwn26"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://b4brs6e73yjlq" path="res://src/items/effect/textures/Green Talisman.png" id="1_5si68"]
|
||||
[ext_resource type="Texture2D" uid="uid://bmsp3k1inb55m" path="res://src/items/effect/textures/Blue Talisman.png" id="1_5si68"]
|
||||
[ext_resource type="Script" uid="uid://b5w4iw4iqmxtn" path="res://src/items/effect/EffectItemStats.cs" id="2_pkr04"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_pkr04")
|
||||
UsableItemTag = 19
|
||||
UsableItemTag = 21
|
||||
ElementalDamageType = 0
|
||||
Name = "Blue Talisman"
|
||||
Description = "Permanently Increases DEF by 1."
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_13loo")
|
||||
UsableItemTag = 25
|
||||
UsableItemTag = 27
|
||||
ElementalDamageType = 0
|
||||
Name = "Spell Sign: Cell Degradation"
|
||||
Description = "Permanently Lowers All Parameters by 1."
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_b16hc")
|
||||
UsableItemTag = 26
|
||||
UsableItemTag = 28
|
||||
ElementalDamageType = 0
|
||||
Name = "Spell Sign: Clone"
|
||||
Description = "Creates another enemy when thrown.
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_n1557")
|
||||
UsableItemTag = 12
|
||||
UsableItemTag = 13
|
||||
ElementalDamageType = 0
|
||||
Name = "Spell Sign: Cosmos"
|
||||
Description = "Raises current Level by 1."
|
||||
SpawnRate = 0.5
|
||||
BonusAttack = 0
|
||||
BonusDefense = 0
|
||||
BonusLuck = 0.05
|
||||
BonusLuck = 5
|
||||
BonusHP = 0
|
||||
BonusVT = 0
|
||||
AeolicResistance = 0
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_vs32u")
|
||||
UsableItemTag = 24
|
||||
UsableItemTag = 26
|
||||
ElementalDamageType = 0
|
||||
Name = "Spell Sign: Dullness"
|
||||
Description = "Permanently Lowers Attack by 1."
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_3l06v")
|
||||
UsableItemTag = 13
|
||||
UsableItemTag = 15
|
||||
ElementalDamageType = 0
|
||||
Name = "Spell Sign: Entropic Seal"
|
||||
Description = "Random effect."
|
||||
SpawnRate = 0.5
|
||||
BonusAttack = 0
|
||||
BonusDefense = 0
|
||||
BonusLuck = 0.05
|
||||
BonusLuck = 5
|
||||
BonusHP = 0
|
||||
BonusVT = 0
|
||||
AeolicResistance = 0
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_4oq2l")
|
||||
UsableItemTag = 18
|
||||
UsableItemTag = 20
|
||||
ElementalDamageType = 0
|
||||
Name = "Scripture Sign: Gospel of Dimension"
|
||||
Description = "Warps target to the exit. No effect on player if exit has not been found."
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_axhfw")
|
||||
UsableItemTag = 17
|
||||
UsableItemTag = 19
|
||||
ElementalDamageType = 0
|
||||
Name = "Scripture Sign: Gospel of Paths"
|
||||
Description = "Teleports target to a random location."
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_mnvt1")
|
||||
UsableItemTag = 20
|
||||
UsableItemTag = 22
|
||||
ElementalDamageType = 0
|
||||
Name = "Green Talisman"
|
||||
Description = "Permanently Increases Luck."
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_tlglo")
|
||||
UsableItemTag = 23
|
||||
UsableItemTag = 25
|
||||
ElementalDamageType = 0
|
||||
Name = "Spell Sign: Grudge"
|
||||
Description = "Permanently Lowers Luck."
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
[gd_resource type="Resource" script_class="EffectItemStats" load_steps=3 format=3 uid="uid://c3qkrtgmngetc"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://ddw0tkd6bt1rx" path="res://src/items/effect/textures/Grudge.png" id="1_kik76"]
|
||||
[ext_resource type="Texture2D" uid="uid://ri5h1p4e10gl" path="res://src/items/effect/textures/Meltical Wave.png" id="1_kik76"]
|
||||
[ext_resource type="Script" uid="uid://b5w4iw4iqmxtn" path="res://src/items/effect/EffectItemStats.cs" id="2_2sema"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_2sema")
|
||||
UsableItemTag = 28
|
||||
UsableItemTag = 29
|
||||
ElementalDamageType = 0
|
||||
Name = "Spell Sign: Meltical Wave"
|
||||
Description = "Melts all currently equipped items."
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
[gd_resource type="Resource" script_class="EffectItemStats" load_steps=3 format=3 uid="uid://cv8p0egs52jaq"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://b4brs6e73yjlq" path="res://src/items/effect/textures/Green Talisman.png" id="1_4jur3"]
|
||||
[ext_resource type="Texture2D" uid="uid://6fcjbqispxwq" path="res://src/items/effect/textures/Red Talisman.png" id="1_4jur3"]
|
||||
[ext_resource type="Script" uid="uid://b5w4iw4iqmxtn" path="res://src/items/effect/EffectItemStats.cs" id="2_as50m"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_as50m")
|
||||
UsableItemTag = 21
|
||||
UsableItemTag = 23
|
||||
ElementalDamageType = 0
|
||||
Name = "Red Talisman"
|
||||
Description = "Permanently Increases Attack by 1."
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_nyxl3")
|
||||
UsableItemTag = 13
|
||||
UsableItemTag = 14
|
||||
ElementalDamageType = 0
|
||||
Name = "Spell Sign: Regression"
|
||||
Description = "Lowers current Level by 1."
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
[gd_resource type="Resource" script_class="EffectItemStats" load_steps=3 format=3 uid="uid://di2r6s4duri7g"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://5w5hgs6gm032" path="res://src/items/effect/textures/Spellsign; Reprieval Wave.png" id="1_r2g4a"]
|
||||
[ext_resource type="Script" uid="uid://b5w4iw4iqmxtn" path="res://src/items/effect/EffectItemStats.cs" id="2_rv4ut"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_rv4ut")
|
||||
UsableItemTag = 30
|
||||
ElementalDamageType = 0
|
||||
Name = "Scripture Sign: Reprieval Wave"
|
||||
Description = "Restores All Parameters."
|
||||
SpawnRate = 0.5
|
||||
BonusAttack = 0
|
||||
BonusDefense = 0
|
||||
BonusLuck = 0
|
||||
BonusHP = 0
|
||||
BonusVT = 0
|
||||
AeolicResistance = 0
|
||||
TelluricResistance = 0
|
||||
HydricResistance = 0
|
||||
IgneousResistance = 0
|
||||
FerrumResistance = 0
|
||||
HolyResistance = 0
|
||||
CurseResistance = 0
|
||||
ThrowSpeed = 12.0
|
||||
ThrowDamage = 0
|
||||
ItemTag = 0
|
||||
Texture = ExtResource("1_r2g4a")
|
||||
metadata/_custom_type_script = "uid://b5w4iw4iqmxtn"
|
||||
@@ -0,0 +1,29 @@
|
||||
[gd_resource type="Resource" script_class="EffectItemStats" load_steps=3 format=3 uid="uid://cc5utcc7ge2xd"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://borohnknxtl81" path="res://src/items/effect/textures/Rust Inducer.png" id="1_56ucr"]
|
||||
[ext_resource type="Script" uid="uid://b5w4iw4iqmxtn" path="res://src/items/effect/EffectItemStats.cs" id="2_4hxg1"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_4hxg1")
|
||||
UsableItemTag = 12
|
||||
ElementalDamageType = 0
|
||||
Name = "Spell Sign: Rust Indicator"
|
||||
Description = "Lowers Currently Equipped Armor's Defense."
|
||||
SpawnRate = 0.5
|
||||
BonusAttack = 0
|
||||
BonusDefense = 0
|
||||
BonusLuck = 5
|
||||
BonusHP = 0
|
||||
BonusVT = 0
|
||||
AeolicResistance = 0
|
||||
TelluricResistance = 0
|
||||
HydricResistance = 0
|
||||
IgneousResistance = 0
|
||||
FerrumResistance = 0
|
||||
HolyResistance = 0
|
||||
CurseResistance = 0
|
||||
ThrowSpeed = 12.0
|
||||
ThrowDamage = 5
|
||||
ItemTag = 0
|
||||
Texture = ExtResource("1_56ucr")
|
||||
metadata/_custom_type_script = "uid://b5w4iw4iqmxtn"
|
||||
BIN
Zennysoft.Game.Ma/src/items/effect/textures/Blue Talisman.png
Normal file
BIN
Zennysoft.Game.Ma/src/items/effect/textures/Blue Talisman.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.6 KiB |
@@ -0,0 +1,35 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bmsp3k1inb55m"
|
||||
path.bptc="res://.godot/imported/Blue Talisman.png-285c9b1bb181f7362a9c9ab7331979c4.bptc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/items/effect/textures/Blue Talisman.png"
|
||||
dest_files=["res://.godot/imported/Blue Talisman.png-285c9b1bb181f7362a9c9ab7331979c4.bptc.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=2
|
||||
compress/high_quality=true
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=0
|
||||
@@ -29,6 +29,7 @@ collision_mask = 0
|
||||
[node name="Sprite" type="Sprite3D" parent="Pickup"]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.370004, 0)
|
||||
pixel_size = 0.005
|
||||
billboard = 2
|
||||
texture_filter = 0
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ collision_mask = 0
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.272665, 0)
|
||||
layers = 5
|
||||
pixel_size = 0.05
|
||||
pixel_size = 0.005
|
||||
billboard = 2
|
||||
double_sided = false
|
||||
alpha_antialiasing_mode = 1
|
||||
|
||||
@@ -39,6 +39,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.190116, 0)
|
||||
shape = SubResource("CapsuleShape3D_o8f22")
|
||||
|
||||
[node name="AnimatedSprite3D" type="AnimatedSprite3D" parent="."]
|
||||
pixel_size = 0.0075
|
||||
billboard = 1
|
||||
texture_filter = 0
|
||||
render_priority = 100
|
||||
|
||||
@@ -31,6 +31,7 @@ shape = SubResource("BoxShape3D_03cqg")
|
||||
|
||||
[node name="Sprite" type="Sprite3D" parent="Pickup"]
|
||||
unique_name_in_owner = true
|
||||
pixel_size = 0.005
|
||||
billboard = 2
|
||||
texture_filter = 0
|
||||
render_priority = 100
|
||||
|
||||
@@ -35,6 +35,7 @@ shape = SubResource("SphereShape3D_xxdqr")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.1, 0)
|
||||
pixel_size = 0.005
|
||||
billboard = 2
|
||||
texture_filter = 0
|
||||
texture = SubResource("ViewportTexture_xxdqr")
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://bg3654q6tmtbk"]
|
||||
[gd_scene load_steps=5 format=3 uid="uid://bg3654q6tmtbk"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bq8aaf1ae4afh" path="res://src/items/weapons/Weapon.cs" id="1_7pkyf"]
|
||||
[ext_resource type="Texture2D" uid="uid://bnkshsssabl0" path="res://src/items/weapons/textures/Air Sword.png" id="2_udu2u"]
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_1051i"]
|
||||
height = 0.725098
|
||||
@@ -28,8 +29,10 @@ collision_mask = 0
|
||||
|
||||
[node name="Sprite" type="Sprite3D" parent="Pickup"]
|
||||
unique_name_in_owner = true
|
||||
pixel_size = 0.005
|
||||
billboard = 2
|
||||
texture_filter = 0
|
||||
texture = ExtResource("2_udu2u")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Pickup"]
|
||||
shape = SubResource("CapsuleShape3D_wll7p")
|
||||
|
||||
@@ -622,21 +622,21 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
|
||||
var weapon = (Weapon)EquipmentComponent.EquippedWeapon.Value;
|
||||
SfxDatabase.Instance.Play(weapon.SoundEffect);
|
||||
WeaponAnimations.SetSpeedScale((float)weapon.AttackSpeed);
|
||||
var potentialAnimName = weapon.Stats.Name?.Replace(" ", string.Empty);
|
||||
var potentialAnimName = weapon.Stats.Name;
|
||||
if (WeaponAnimations.HasAnimation(potentialAnimName))
|
||||
WeaponAnimations.Play(potentialAnimName);
|
||||
else if (weapon.WeaponElement == ElementType.Aeolic)
|
||||
WeaponAnimations.Play("AirSlash");
|
||||
WeaponAnimations.Play("Air Slash");
|
||||
else if (weapon.WeaponElement == ElementType.Hydric)
|
||||
WeaponAnimations.Play("WaterSlash");
|
||||
WeaponAnimations.Play("Water Slash");
|
||||
else if (weapon.WeaponElement == ElementType.Igneous)
|
||||
WeaponAnimations.Play("FireSlash");
|
||||
WeaponAnimations.Play("Fire Slash");
|
||||
else if (weapon.WeaponElement == ElementType.Telluric)
|
||||
WeaponAnimations.Play("EarthSlash");
|
||||
WeaponAnimations.Play("Earth Slash");
|
||||
else if (string.IsNullOrWhiteSpace(potentialAnimName))
|
||||
WeaponAnimations.Play("Unarmed");
|
||||
else
|
||||
WeaponAnimations.Play("NormalSlash");
|
||||
WeaponAnimations.Play("Normal Slash");
|
||||
}
|
||||
|
||||
private void PlayerFXAnimations_AnimationFinished(StringName animName)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -63,6 +63,7 @@ public partial class ActionPanel : Panel
|
||||
{
|
||||
GetViewport().SetInputAsHandled();
|
||||
HideActionPanel();
|
||||
SfxDatabase.Instance.Play(SoundEffect.CancelUI);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=11 format=3 uid="uid://tpqh7q0xh63c"]
|
||||
[gd_scene load_steps=16 format=3 uid="uid://tpqh7q0xh63c"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://c005nd0m2eim" path="res://src/ui/inventory_menu/ItemSlot.tscn" id="1_a5r0f"]
|
||||
[ext_resource type="Script" uid="uid://brtic4hw6thox" path="res://src/ui/inventory_menu/AugmentableItemsMenu.cs" id="1_ukqf2"]
|
||||
@@ -6,12 +6,28 @@
|
||||
[ext_resource type="FontFile" uid="uid://0syyay37admf" path="res://src/ui/fonts/georgiab.ttf" id="3_qtvkp"]
|
||||
[ext_resource type="StyleBox" uid="uid://bxuy4tnftibfq" path="res://src/options/SelectedOptionsBox.tres" id="4_p84pf"]
|
||||
[ext_resource type="StyleBox" uid="uid://bl15q835s4ene" path="res://src/options/UnselectedOptionsBox.tres" id="5_rxojm"]
|
||||
[ext_resource type="LabelSettings" uid="uid://b6f8ggy3ulonb" path="res://src/ui/label_settings/GeorgiaItalic.tres" id="7_qtvkp"]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_l0byb"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_7co7g"]
|
||||
bg_color = Color(0, 0, 0, 0.745098)
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ukqf2"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qtvkp"]
|
||||
bg_color = Color(0, 0, 0, 0.745098)
|
||||
|
||||
[sub_resource type="LabelSettings" id="LabelSettings_p84pf"]
|
||||
line_spacing = 1.0
|
||||
font = ExtResource("3_qtvkp")
|
||||
font_size = 50
|
||||
outline_size = 3
|
||||
outline_color = Color(0, 0, 0, 1)
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_p84pf"]
|
||||
bg_color = Color(0, 0, 0, 0.745098)
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_unikd"]
|
||||
bg_color = Color(0, 0, 0, 1)
|
||||
|
||||
@@ -144,6 +160,99 @@ layout_mode = 2
|
||||
[node name="AugmentableSlot19" parent="CenterContainer2/AugmentableItemsList/Panel/MarginContainer2/Inventory" instance=ExtResource("1_a5r0f")]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="TitleContainer" type="MarginContainer" parent="."]
|
||||
layout_mode = 1
|
||||
offset_right = 450.0
|
||||
offset_bottom = 160.0
|
||||
theme_override_constants/margin_left = 50
|
||||
theme_override_constants/margin_top = 60
|
||||
|
||||
[node name="TitlePanelContainer" type="PanelContainer" parent="TitleContainer"]
|
||||
custom_minimum_size = Vector2(400, 100)
|
||||
layout_mode = 2
|
||||
theme_override_styles/panel = SubResource("StyleBoxEmpty_ukqf2")
|
||||
|
||||
[node name="AugmentTitlePanel" type="Panel" parent="TitleContainer/TitlePanelContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_qtvkp")
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="TitleContainer/TitlePanelContainer/AugmentTitlePanel"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_constants/margin_left = 10
|
||||
theme_override_constants/margin_top = 10
|
||||
theme_override_constants/margin_right = 10
|
||||
theme_override_constants/margin_bottom = 10
|
||||
|
||||
[node name="ReferenceRect" type="ReferenceRect" parent="TitleContainer/TitlePanelContainer/AugmentTitlePanel/MarginContainer"]
|
||||
layout_mode = 2
|
||||
border_color = Color(1, 1, 1, 1)
|
||||
border_width = 2.0
|
||||
editor_only = false
|
||||
|
||||
[node name="AugmentLabel" type="Label" parent="TitleContainer/TitlePanelContainer/AugmentTitlePanel/MarginContainer/ReferenceRect"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -148.0
|
||||
offset_top = -28.5
|
||||
offset_right = 148.0
|
||||
offset_bottom = 28.5
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_font_sizes/font_size = 15
|
||||
text = "AUGMENT"
|
||||
label_settings = SubResource("LabelSettings_p84pf")
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="DescriptionContainer" type="MarginContainer" parent="."]
|
||||
layout_mode = 1
|
||||
anchors_preset = 4
|
||||
anchor_top = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_top = -250.0
|
||||
offset_right = 500.0
|
||||
offset_bottom = 150.0
|
||||
grow_vertical = 2
|
||||
theme_override_constants/margin_left = 50
|
||||
|
||||
[node name="ItemDescriptionPanelContainer" type="PanelContainer" parent="DescriptionContainer"]
|
||||
custom_minimum_size = Vector2(300, 300)
|
||||
layout_mode = 2
|
||||
|
||||
[node name="ItemDescriptionBox" type="Panel" parent="DescriptionContainer/ItemDescriptionPanelContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_p84pf")
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="DescriptionContainer/ItemDescriptionPanelContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/margin_left = 5
|
||||
theme_override_constants/margin_top = 5
|
||||
theme_override_constants/margin_right = 5
|
||||
theme_override_constants/margin_bottom = 5
|
||||
|
||||
[node name="ReferenceRect" type="ReferenceRect" parent="DescriptionContainer/ItemDescriptionPanelContainer/MarginContainer"]
|
||||
layout_mode = 2
|
||||
border_color = Color(1, 1, 1, 1)
|
||||
border_width = 2.0
|
||||
editor_only = false
|
||||
|
||||
[node name="CenterContainer" type="CenterContainer" parent="DescriptionContainer/ItemDescriptionPanelContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Label" type="Label" parent="DescriptionContainer/ItemDescriptionPanelContainer/CenterContainer"]
|
||||
layout_mode = 2
|
||||
text = "Select an item to augment."
|
||||
label_settings = ExtResource("7_qtvkp")
|
||||
|
||||
[node name="ConfirmAugmentContainer" type="Panel" parent="."]
|
||||
unique_name_in_owner = true
|
||||
visible = false
|
||||
|
||||
@@ -31,6 +31,12 @@ public partial class InventoryMenu : Control, IInventoryMenu
|
||||
|
||||
[Node] public AugmentableItemsMenu AugmentMenu { get; set; }
|
||||
|
||||
[Node] public Label PlayerATKLabel { get; set; }
|
||||
|
||||
[Node] public Label PlayerDEFLabel { get; set; }
|
||||
|
||||
[Node] public Label StatusLabel { get; set; }
|
||||
|
||||
private List<IItemSlot> ItemSlots;
|
||||
|
||||
private IItemSlot _currentlySelected;
|
||||
@@ -46,15 +52,29 @@ public partial class InventoryMenu : Control, IInventoryMenu
|
||||
ActionPanel.AugmentMenuRequested += ActionPanel_AugmentMenuRequested;
|
||||
AugmentMenu.AugmentMenuClosing += AugmentMenu_AugmentMenuClosing;
|
||||
AugmentMenu.FocusMode = FocusModeEnum.None;
|
||||
_player.AttackComponent.CurrentAttack.Changed += AttackChanged;
|
||||
_player.AttackComponent.MaximumAttack.Changed += AttackChanged;
|
||||
_player.DefenseComponent.CurrentDefense.Changed += DefenseChanged;
|
||||
_player.DefenseComponent.MaximumDefense.Changed += DefenseChanged;
|
||||
ClearDescriptionBox();
|
||||
AttackChanged(0);
|
||||
DefenseChanged(0);
|
||||
StatusLabel.Text = string.Empty;
|
||||
Hide();
|
||||
}
|
||||
|
||||
private void AttackChanged(int obj) => PlayerATKLabel.Text = $"{_player.AttackComponent.CurrentAttack.Value:D2}/{_player.AttackComponent.MaximumAttack.Value:D2}+{_player.EquipmentComponent.BonusAttack}";
|
||||
|
||||
private void DefenseChanged(int obj) => PlayerDEFLabel.Text = $"{_player.DefenseComponent.CurrentDefense.Value:D2}/{_player.DefenseComponent.MaximumDefense.Value:D2}+{_player.EquipmentComponent.BonusDefense}";
|
||||
|
||||
public override void _Input(InputEvent @event)
|
||||
{
|
||||
if (Input.IsActionJustPressed(GameInputs.MoveUp) && _currentlySelected != ItemSlots.First())
|
||||
SfxDatabase.Instance.Play(SoundEffect.MoveUI);
|
||||
if (Input.IsActionJustPressed(GameInputs.MoveDown) && _currentlySelected != ItemSlots.Last(x => x.Item.Value != null))
|
||||
SfxDatabase.Instance.Play(SoundEffect.MoveUI);
|
||||
if (Input.IsActionJustPressed(GameInputs.Interact))
|
||||
SfxDatabase.Instance.Play(SoundEffect.CancelUI);
|
||||
}
|
||||
|
||||
private void ActionPanel_AugmentMenuRequested()
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
[gd_scene load_steps=15 format=3 uid="uid://cbxw70qa7gifp"]
|
||||
[gd_scene load_steps=16 format=3 uid="uid://cbxw70qa7gifp"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://yh8qxmn058w2" path="res://src/ui/inventory_menu/InventoryMenu.cs" id="1_unikd"]
|
||||
[ext_resource type="PackedScene" uid="uid://b648lhohtue70" path="res://src/ui/inventory_menu/ActionPanel.tscn" id="3_7co7g"]
|
||||
[ext_resource type="FontFile" uid="uid://tfskthaq7tmi" path="res://src/ui/fonts/georgia.ttf" id="3_unikd"]
|
||||
[ext_resource type="FontFile" uid="uid://0syyay37admf" path="res://src/ui/fonts/georgiab.ttf" id="6_ldqki"]
|
||||
[ext_resource type="PackedScene" uid="uid://c005nd0m2eim" path="res://src/ui/inventory_menu/ItemSlot.tscn" id="6_unikd"]
|
||||
[ext_resource type="PackedScene" uid="uid://tpqh7q0xh63c" path="res://src/ui/inventory_menu/AugmentableItemsMenu.tscn" id="6_xwkpe"]
|
||||
@@ -33,7 +34,6 @@ bg_color = Color(0, 0, 0, 0.745098)
|
||||
|
||||
[node name="InventoryMenu" type="PanelContainer"]
|
||||
process_mode = 2
|
||||
visible = false
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
@@ -114,6 +114,112 @@ label_settings = SubResource("LabelSettings_ejvue")
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="StatsPanelContainer" type="PanelContainer" parent="Panel/MarginContainer/PanelContainer/MenuPanel"]
|
||||
custom_minimum_size = Vector2(400, 100)
|
||||
layout_mode = 1
|
||||
anchors_preset = -1
|
||||
anchor_top = 0.121
|
||||
anchor_right = 0.28
|
||||
anchor_bottom = 0.218
|
||||
offset_top = 0.369995
|
||||
offset_right = -0.399994
|
||||
offset_bottom = 0.459991
|
||||
|
||||
[node name="StatsPanel" type="Panel" parent="Panel/MarginContainer/PanelContainer/MenuPanel/StatsPanelContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_cq2sk")
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="Panel/MarginContainer/PanelContainer/MenuPanel/StatsPanelContainer/StatsPanel"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_constants/margin_left = 10
|
||||
theme_override_constants/margin_top = 10
|
||||
theme_override_constants/margin_right = 10
|
||||
theme_override_constants/margin_bottom = 10
|
||||
|
||||
[node name="ReferenceRect" type="ReferenceRect" parent="Panel/MarginContainer/PanelContainer/MenuPanel/StatsPanelContainer/StatsPanel/MarginContainer"]
|
||||
layout_mode = 2
|
||||
border_color = Color(1, 1, 1, 1)
|
||||
border_width = 2.0
|
||||
editor_only = false
|
||||
|
||||
[node name="MarginContainer" type="MarginContainer" parent="Panel/MarginContainer/PanelContainer/MenuPanel/StatsPanelContainer/StatsPanel/MarginContainer/ReferenceRect"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_constants/margin_left = 15
|
||||
theme_override_constants/margin_top = 5
|
||||
theme_override_constants/margin_right = 5
|
||||
theme_override_constants/margin_bottom = 5
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="Panel/MarginContainer/PanelContainer/MenuPanel/StatsPanelContainer/StatsPanel/MarginContainer/ReferenceRect/MarginContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/separation = 20
|
||||
|
||||
[node name="StatsContainer" type="VBoxContainer" parent="Panel/MarginContainer/PanelContainer/MenuPanel/StatsPanelContainer/StatsPanel/MarginContainer/ReferenceRect/MarginContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="Panel/MarginContainer/PanelContainer/MenuPanel/StatsPanelContainer/StatsPanel/MarginContainer/ReferenceRect/MarginContainer/HBoxContainer/StatsContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="ATKName" type="Label" parent="Panel/MarginContainer/PanelContainer/MenuPanel/StatsPanelContainer/StatsPanel/MarginContainer/ReferenceRect/MarginContainer/HBoxContainer/StatsContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_fonts/font = ExtResource("3_unikd")
|
||||
theme_override_font_sizes/font_size = 25
|
||||
text = "ATK:"
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="PlayerATKLabel" type="Label" parent="Panel/MarginContainer/PanelContainer/MenuPanel/StatsPanelContainer/StatsPanel/MarginContainer/ReferenceRect/MarginContainer/HBoxContainer/StatsContainer/HBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme_override_fonts/font = ExtResource("3_unikd")
|
||||
theme_override_font_sizes/font_size = 25
|
||||
text = "15/15"
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="HBoxContainer2" type="HBoxContainer" parent="Panel/MarginContainer/PanelContainer/MenuPanel/StatsPanelContainer/StatsPanel/MarginContainer/ReferenceRect/MarginContainer/HBoxContainer/StatsContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="DEFName" type="Label" parent="Panel/MarginContainer/PanelContainer/MenuPanel/StatsPanelContainer/StatsPanel/MarginContainer/ReferenceRect/MarginContainer/HBoxContainer/StatsContainer/HBoxContainer2"]
|
||||
layout_mode = 2
|
||||
theme_override_fonts/font = ExtResource("3_unikd")
|
||||
theme_override_font_sizes/font_size = 25
|
||||
text = "DEF:"
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="PlayerDEFLabel" type="Label" parent="Panel/MarginContainer/PanelContainer/MenuPanel/StatsPanelContainer/StatsPanel/MarginContainer/ReferenceRect/MarginContainer/HBoxContainer/StatsContainer/HBoxContainer2"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
theme_override_fonts/font = ExtResource("3_unikd")
|
||||
theme_override_font_sizes/font_size = 25
|
||||
text = "15/15"
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="StatusEffectContainer" type="VBoxContainer" parent="Panel/MarginContainer/PanelContainer/MenuPanel/StatsPanelContainer/StatsPanel/MarginContainer/ReferenceRect/MarginContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
alignment = 1
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="Panel/MarginContainer/PanelContainer/MenuPanel/StatsPanelContainer/StatsPanel/MarginContainer/ReferenceRect/MarginContainer/HBoxContainer/StatusEffectContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="StatusName" type="Label" parent="Panel/MarginContainer/PanelContainer/MenuPanel/StatsPanelContainer/StatsPanel/MarginContainer/ReferenceRect/MarginContainer/HBoxContainer/StatusEffectContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Status:"
|
||||
label_settings = ExtResource("7_we8a6")
|
||||
|
||||
[node name="StatusLabel" type="Label" parent="Panel/MarginContainer/PanelContainer/MenuPanel/StatsPanelContainer/StatsPanel/MarginContainer/ReferenceRect/MarginContainer/HBoxContainer/StatusEffectContainer/HBoxContainer"]
|
||||
unique_name_in_owner = true
|
||||
layout_mode = 2
|
||||
text = "Rust"
|
||||
label_settings = ExtResource("7_we8a6")
|
||||
|
||||
[node name="ActionPanelContainer" type="PanelContainer" parent="Panel/MarginContainer/PanelContainer/MenuPanel"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 2
|
||||
|
||||
@@ -38,7 +38,8 @@ unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(50, 50)
|
||||
layout_mode = 2
|
||||
texture = ExtResource("3_t6dim")
|
||||
expand_mode = 2
|
||||
expand_mode = 1
|
||||
stretch_mode = 5
|
||||
|
||||
[node name="Control" type="HBoxContainer" parent="ItemInfo"]
|
||||
layout_mode = 2
|
||||
@@ -68,12 +69,12 @@ text = "Cross Sword"
|
||||
|
||||
[node name="AugmentTexture" type="TextureRect" parent="ItemInfo/Control"]
|
||||
unique_name_in_owner = true
|
||||
custom_minimum_size = Vector2(15, 20)
|
||||
custom_minimum_size = Vector2(50, 50)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
texture = ExtResource("5_lt1pw")
|
||||
stretch_mode = 2
|
||||
expand_mode = 1
|
||||
|
||||
[node name="ItemCountLabel" type="Label" parent="."]
|
||||
unique_name_in_owner = true
|
||||
|
||||
Reference in New Issue
Block a user