Compare commits
46 Commits
fa66ba24e2
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 8630c6c1f3 | |||
|
|
83dbbba8e6 | ||
| f19cb7edda | |||
| 2c26d6f548 | |||
| 70f9807b6c | |||
| ff82f51451 | |||
| 7b6ca68e65 | |||
| 701e7b0858 | |||
| e6937244ec | |||
| c4150e78fa | |||
| 28f38d236e | |||
| bc010a7d82 | |||
| 46f0e78405 | |||
| 840ffe1a9a | |||
| e50035d9c7 | |||
| 721a45c6bb | |||
| 0c4a424a4d | |||
| c043c6ad04 | |||
| bf168a2577 | |||
| fadb1652d4 | |||
| a686ce2fbc | |||
| 9d18bbb349 | |||
| 846c8a4c59 | |||
| 3c1a221522 | |||
| e77ca00002 | |||
| fd1eb77f57 | |||
| 6e3175fb99 | |||
| 104b9cf25e | |||
| d39524ffe2 | |||
| 8920b5057f | |||
| 7393662aa8 | |||
| 37ad0048d7 | |||
| 922d8fde59 | |||
| d5e3f1b89b | |||
| ac44803d71 | |||
| 02e6ee2f70 | |||
| 0ec0ff2e23 | |||
| 1042b86d2b | |||
| 017be896f3 | |||
| a2ceb8e650 | |||
| 366ed9f5e6 | |||
| f09d6ac8e8 | |||
| 5233da4225 | |||
| 1a1e050dcc | |||
|
|
7e56202e76 | ||
|
|
fc04a93f58 |
@@ -15,4 +15,6 @@ public interface IAttackComponent : IEntityComponent
|
||||
public void SetAttack(int attack);
|
||||
|
||||
public void RaiseMaximumAttack(int raiseAmount);
|
||||
|
||||
public void LowerMaximumAttack(int lowerAmount);
|
||||
}
|
||||
|
||||
@@ -15,4 +15,6 @@ public interface IDefenseComponent : IEntityComponent
|
||||
public void SetDefense(int attack);
|
||||
|
||||
public void RaiseMaximumDefense(int raiseAmount);
|
||||
|
||||
public void LowerMaximumDefense(int lowerAmount);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using Chickensoft.Collections;
|
||||
using Godot;
|
||||
using Zennysoft.Ma.Adapter.Entity;
|
||||
|
||||
namespace Zennysoft.Ma.Adapter;
|
||||
|
||||
@@ -20,5 +20,9 @@ public interface IExperiencePointsComponent : IEntityComponent
|
||||
|
||||
public void LevelUp();
|
||||
|
||||
public void LevelDown();
|
||||
|
||||
public event Action PlayerLevelUp;
|
||||
|
||||
public event Action PlayerLevelDown;
|
||||
}
|
||||
|
||||
@@ -22,4 +22,6 @@ public interface IHealthComponent : IEntityComponent
|
||||
public void SetMaximumHealth(int health);
|
||||
|
||||
public void RaiseMaximumHP(int raiseAmount, bool restoreHP = false);
|
||||
|
||||
public void LowerMaximumHP(int lowerAmount);
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
using Chickensoft.Collections;
|
||||
using Godot;
|
||||
using Zennysoft.Ma.Adapter;
|
||||
|
||||
public interface IStatusEffectComponent : IEntityComponent
|
||||
{
|
||||
[Export] public double RustDuration { get; set; }
|
||||
|
||||
public AutoProp<bool> Rust { get; }
|
||||
|
||||
public bool ImmuneToRust { get; set; }
|
||||
}
|
||||
@@ -4,7 +4,11 @@ namespace Zennysoft.Ma.Adapter;
|
||||
|
||||
public interface ILuckComponent : IEntityComponent
|
||||
{
|
||||
public int InitialLuck { get; }
|
||||
|
||||
public IAutoProp<int> Luck { get; }
|
||||
|
||||
public void IncreaseLuck(int value);
|
||||
|
||||
void DecreaseLuck(int value);
|
||||
}
|
||||
|
||||
@@ -18,5 +18,7 @@ public interface IVTComponent : IEntityComponent
|
||||
|
||||
public void RaiseMaximumVT(int raiseAmount, bool restoreVT = true);
|
||||
|
||||
public void LowerMaximumVT(int lowerAmount);
|
||||
|
||||
public void SetMaximumVT(int vt);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://c7e5g8l6wuph"]
|
||||
[gd_scene load_steps=2 format=3]
|
||||
|
||||
[ext_resource type="Script" uid="uid://87d8kluait8y" path="res://src/enemy/behaviors/PatrolBehavior.cs" id="1_lobva"]
|
||||
[ext_resource type="Script" path="res://src/enemy/behaviors/PatrolBehavior.cs" id="1_lobva"]
|
||||
|
||||
[node name="NavigationAgent" type="NavigationAgent3D"]
|
||||
avoidance_enabled = true
|
||||
|
||||
@@ -31,6 +31,8 @@ namespace Zennysoft.Ma.Adapter.Entity
|
||||
|
||||
public IDefenseComponent DefenseComponent { get; }
|
||||
|
||||
public IStatusEffectComponent StatusEffectComponent { get; }
|
||||
|
||||
public ElementalResistanceSet ElementalResistanceSet { get; }
|
||||
|
||||
public int InitialHP { get; }
|
||||
|
||||
11
Zennysoft.Game.Ma.Implementation/Entity/SpellFXEnum.cs
Normal file
11
Zennysoft.Game.Ma.Implementation/Entity/SpellFXEnum.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
namespace Zennysoft.Ma.Adapter;
|
||||
|
||||
public enum SpellFXEnum
|
||||
{
|
||||
AnBradan,
|
||||
DivinityRecall,
|
||||
ItemBreak,
|
||||
Kyuuketsuki,
|
||||
Persiko,
|
||||
Radial
|
||||
}
|
||||
@@ -1,16 +1,26 @@
|
||||
using Zennysoft.Ma.Adapter;
|
||||
using Godot;
|
||||
using Zennysoft.Ma.Adapter;
|
||||
|
||||
public class Augment
|
||||
{
|
||||
public JewelTags AugmentTag;
|
||||
|
||||
public Augment(JewelTags tag, IAugmentType augment)
|
||||
public Augment(JewelTags tag, IAugmentType augment, string name, string description, Texture2D augmentTexture)
|
||||
{
|
||||
AugmentTag = tag;
|
||||
AugmentName = name;
|
||||
AugmentType = augment;
|
||||
AugmentDescription = description;
|
||||
AugmentTexture = augmentTexture;
|
||||
}
|
||||
|
||||
public IAugmentType AugmentType { get; set; }
|
||||
|
||||
public string AugmentName { get; set; }
|
||||
|
||||
public string AugmentDescription { get; set; }
|
||||
|
||||
public Texture2D AugmentTexture { get; set; }
|
||||
}
|
||||
|
||||
public class HPRecoverySpeedAugment : IAugmentType
|
||||
@@ -94,6 +104,33 @@ public class LowerEXPRateAugment : IAugmentType
|
||||
public void Remove() => _player.ExperiencePointsComponent.ModifyExpGainRate(_player.ExperiencePointsComponent.ExpGainRate.Value + 0.25f);
|
||||
}
|
||||
|
||||
public class BoostStatsAugment : IAugmentType
|
||||
{
|
||||
private readonly IPlayer _player;
|
||||
private readonly int _bonusLuck;
|
||||
private readonly int _bonusHp;
|
||||
private readonly int _bonusVt;
|
||||
|
||||
public BoostStatsAugment(IPlayer player, int bonusLuck, int bonusHp, int bonusVt)
|
||||
{
|
||||
_player = player;
|
||||
_bonusLuck = bonusLuck;
|
||||
_bonusHp = bonusHp;
|
||||
_bonusVt = bonusVt;
|
||||
}
|
||||
|
||||
public void Apply()
|
||||
{
|
||||
_player.HealthComponent.RaiseMaximumHP(_bonusHp);
|
||||
_player.VTComponent.RaiseMaximumVT(_bonusVt);
|
||||
_player.LuckComponent.IncreaseLuck(_bonusLuck);
|
||||
}
|
||||
|
||||
public void Remove()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public class LowerHPRecoveryAugment : IAugmentType
|
||||
{
|
||||
private readonly IPlayer _player;
|
||||
|
||||
@@ -4,5 +4,6 @@ public enum AccessoryTag
|
||||
{
|
||||
None,
|
||||
HalfVTConsumption,
|
||||
StatusEffectImmunity
|
||||
StatusEffectImmunity,
|
||||
BoostEXPGainRate
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace Zennysoft.Ma.Adapter;
|
||||
|
||||
public enum ArmorTag
|
||||
{
|
||||
None,
|
||||
DegradeOnHit
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
public enum ItemTag
|
||||
{
|
||||
None,
|
||||
BreaksOnChange,
|
||||
BreaksOnFloorExit,
|
||||
MysteryItem,
|
||||
DamagesPlayer,
|
||||
ContainsRestorative,
|
||||
@@ -20,5 +20,8 @@ public enum ItemTag
|
||||
RestrictUnequip,
|
||||
UnequipAllItems,
|
||||
EjectAllItems,
|
||||
UseAllItems
|
||||
UseAllItems,
|
||||
GlueOnEquip,
|
||||
BreaksOnUnequip,
|
||||
ContainsJewel
|
||||
}
|
||||
@@ -14,11 +14,26 @@ public enum UsableItemTag
|
||||
DealElementalDamageToAllEnemiesInRoom,
|
||||
RaiseCurrentWeaponAttack,
|
||||
RaiseCurrentDefenseArmor,
|
||||
LowerCurrentDefenseArmor,
|
||||
RaiseLevel,
|
||||
LowerLevel,
|
||||
RandomEffect,
|
||||
DoubleExp,
|
||||
LowerTargetTo1HP,
|
||||
CanChangeAffinity,
|
||||
TeleportToRandomLocation,
|
||||
WarpToExitIfFound
|
||||
WarpToExitIfFound,
|
||||
IncreaseDefense,
|
||||
IncreaseLuck,
|
||||
IncreaseAttack,
|
||||
DecreaseDefense,
|
||||
DecreaseLuck,
|
||||
DecreaseAttack,
|
||||
DecreaseAllStats,
|
||||
Clone,
|
||||
MeltAllEquipment,
|
||||
RestoreStats,
|
||||
GlueAllEquipment,
|
||||
DoubleStackedItems,
|
||||
IdentifyRandomItem
|
||||
}
|
||||
|
||||
@@ -16,18 +16,8 @@ public interface IGameRepo : IDisposable
|
||||
|
||||
event Action<string>? AnnounceMessageInInventoryEvent;
|
||||
|
||||
event Action<int>? DoubleExpTimeStart;
|
||||
|
||||
event Action? DoubleExpTimeEnd;
|
||||
|
||||
event Action<IBaseInventoryItem>? RemoveItemFromInventoryEvent;
|
||||
|
||||
event Action? PlayerAttack;
|
||||
|
||||
event Action? PlayerAttackedWall;
|
||||
|
||||
event Action? PlayerAttackedEnemy;
|
||||
|
||||
event Action<IEquipableItem>? EquippedItem;
|
||||
|
||||
event Action<IEquipableItem>? UnequippedItem;
|
||||
@@ -40,20 +30,12 @@ public interface IGameRepo : IDisposable
|
||||
|
||||
IAutoProp<bool> IsPaused { get; }
|
||||
|
||||
public void StartDoubleEXP(TimeSpan lengthOfEffect);
|
||||
|
||||
public void EndDoubleExp();
|
||||
|
||||
public void AnnounceMessageOnMainScreen(string message);
|
||||
|
||||
public void AnnounceMessageInInventory(string message);
|
||||
|
||||
public void RemoveItemFromInventory(IBaseInventoryItem item);
|
||||
|
||||
public void OnPlayerAttack();
|
||||
|
||||
public void OnPlayerAttackedWall();
|
||||
|
||||
public void CloseInventory();
|
||||
|
||||
public void GameEnded();
|
||||
@@ -63,8 +45,6 @@ public interface IGameRepo : IDisposable
|
||||
public void OnUnequippedItem(IEquipableItem item);
|
||||
|
||||
public void OnEnemyDied(IEnemy enemy);
|
||||
|
||||
public double ExpRate { get; }
|
||||
}
|
||||
|
||||
public class GameRepo : IGameRepo
|
||||
@@ -73,26 +53,18 @@ public class GameRepo : IGameRepo
|
||||
public event Action? CloseInventoryEvent;
|
||||
public event Action<string>? AnnounceMessageOnMainScreenEvent;
|
||||
public event Action<string>? AnnounceMessageInInventoryEvent;
|
||||
public event Action<int>? DoubleExpTimeStart;
|
||||
public event Action? DoubleExpTimeEnd;
|
||||
public event Action<IBaseInventoryItem>? RemoveItemFromInventoryEvent;
|
||||
public event Action? PlayerAttack;
|
||||
public event Action? PlayerAttackedWall;
|
||||
public event Action? PlayerAttackedEnemy;
|
||||
public event Action<IEquipableItem>? EquippedItem;
|
||||
public event Action<IEquipableItem>? UnequippedItem;
|
||||
public event Action<IEnemy>? EnemyDied;
|
||||
public IAutoProp<bool> IsPaused => _isPaused;
|
||||
private readonly AutoProp<bool> _isPaused;
|
||||
|
||||
public double ExpRate { get; private set; }
|
||||
|
||||
private bool _disposedValue;
|
||||
|
||||
public GameRepo()
|
||||
{
|
||||
_isPaused = new AutoProp<bool>(true);
|
||||
ExpRate = 1;
|
||||
}
|
||||
|
||||
public void Pause()
|
||||
@@ -107,20 +79,6 @@ public class GameRepo : IGameRepo
|
||||
GD.Print("Resume");
|
||||
}
|
||||
|
||||
public void StartDoubleEXP(TimeSpan lengthOfEffect)
|
||||
{
|
||||
AnnounceMessageInInventory("Experience points temporarily doubled.");
|
||||
DoubleExpTimeStart?.Invoke(lengthOfEffect.Seconds);
|
||||
ExpRate *= 2;
|
||||
}
|
||||
|
||||
public void EndDoubleExp()
|
||||
{
|
||||
AnnounceMessageOnMainScreen("Experience points effect wore off.");
|
||||
DoubleExpTimeEnd?.Invoke();
|
||||
ExpRate /= 2;
|
||||
}
|
||||
|
||||
public void AnnounceMessageOnMainScreen(string message)
|
||||
{
|
||||
AnnounceMessageOnMainScreenEvent?.Invoke(message);
|
||||
@@ -136,16 +94,6 @@ public class GameRepo : IGameRepo
|
||||
RemoveItemFromInventoryEvent?.Invoke(item);
|
||||
}
|
||||
|
||||
public void OnPlayerAttack()
|
||||
{
|
||||
PlayerAttack?.Invoke();
|
||||
}
|
||||
|
||||
public void OnPlayerAttackedWall()
|
||||
{
|
||||
PlayerAttackedWall?.Invoke();
|
||||
}
|
||||
|
||||
public void CloseInventory()
|
||||
{
|
||||
CloseInventoryEvent?.Invoke();
|
||||
|
||||
@@ -2,4 +2,9 @@
|
||||
|
||||
public interface IArmor : IEquipableItem, IAugmentableItem
|
||||
{
|
||||
public void IncreaseArmorDefense(int bonus);
|
||||
|
||||
public void DecreaseArmorDefense(int lowerAmount);
|
||||
|
||||
public ArmorTag ArmorTag { get; }
|
||||
}
|
||||
|
||||
@@ -5,7 +5,8 @@ using Zennysoft.Ma.Adapter;
|
||||
public interface IBaseInventoryItem
|
||||
{
|
||||
public string ItemName { get; }
|
||||
public string Description { get; }
|
||||
public string StatDescription { get; }
|
||||
public string FlavorText { get; }
|
||||
public float SpawnRate { get; }
|
||||
public int ThrowDamage { get; }
|
||||
public float ThrowSpeed { get; }
|
||||
|
||||
@@ -1,16 +1,38 @@
|
||||
using Chickensoft.Introspection;
|
||||
using Chickensoft.Serialization;
|
||||
using Chickensoft.Serialization;
|
||||
|
||||
namespace Zennysoft.Ma.Adapter;
|
||||
|
||||
[Meta, Id("rescued_items")]
|
||||
public partial class RescuedItemDatabase
|
||||
public class RescuedItemDatabase
|
||||
{
|
||||
[Save("rescued_item_list")]
|
||||
public List<IBaseInventoryItem> Items { get; init; }
|
||||
private List<IBaseInventoryItem> _items { get; init; }
|
||||
private int _maxSize { get; init; } = 20;
|
||||
|
||||
public RescuedItemDatabase()
|
||||
public RescuedItemDatabase(int maxSize)
|
||||
{
|
||||
Items = new List<IBaseInventoryItem>();
|
||||
_items = [];
|
||||
_maxSize = maxSize;
|
||||
}
|
||||
|
||||
public RescuedItemDatabase(List<IBaseInventoryItem> items, int maxSize)
|
||||
{
|
||||
_items = items;
|
||||
_maxSize = maxSize;
|
||||
}
|
||||
|
||||
public bool TryAdd(IBaseInventoryItem item)
|
||||
{
|
||||
if (_items.Count >= _maxSize)
|
||||
return false;
|
||||
if (item is IEquipableItem equipable)
|
||||
equipable.Glued = false;
|
||||
_items.Add(item);
|
||||
return true;
|
||||
}
|
||||
|
||||
public void Remove(IBaseInventoryItem item) => _items.Remove(item);
|
||||
|
||||
public List<IBaseInventoryItem> GetItems() => _items;
|
||||
|
||||
public void Clear() => _items.Clear();
|
||||
}
|
||||
|
||||
@@ -19,3 +19,18 @@ public partial class BoxItemTagEnumContext : JsonSerializerContext;
|
||||
|
||||
[JsonSerializable(typeof(ElementType))]
|
||||
public partial class ElementTypeEnumContext : JsonSerializerContext;
|
||||
|
||||
[JsonSerializable(typeof(JewelTags))]
|
||||
public partial class JewelTagsEnumContext : JsonSerializerContext;
|
||||
|
||||
[JsonSerializable(typeof(IBaseInventoryItem))]
|
||||
public partial class BaseInventoryItemContext : JsonSerializerContext
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
[JsonSerializable(typeof(RescuedItemDatabase))]
|
||||
public partial class RescuedItemDatabaseContext : JsonSerializerContext
|
||||
{
|
||||
|
||||
}
|
||||
@@ -11,7 +11,5 @@ public interface IDungeonFloor : INode3D
|
||||
|
||||
public ImmutableList<IDungeonRoom> Rooms { get; }
|
||||
|
||||
public void FadeOutAudio();
|
||||
|
||||
public bool FloorIsLoaded { get; set; }
|
||||
}
|
||||
|
||||
@@ -10,8 +10,6 @@ public class Module
|
||||
public static void Bootstrap(Container container)
|
||||
{
|
||||
container.RegisterSingleton<IFileSystem, FileSystem>();
|
||||
container.RegisterSingleton<ISaveFileManager, SaveFileManager>();
|
||||
container.RegisterSingleton<IMaSaveFileManager, MaSaveFileManager>();
|
||||
container.RegisterSingleton<IGameRepo, GameRepo>();
|
||||
container.RegisterSingleton<IGameState, GameState>();
|
||||
container.RegisterSingleton<IDimmableAudioStreamPlayer, DimmableAudioStreamPlayer>();
|
||||
|
||||
@@ -28,7 +28,7 @@ public interface IPlayer : IKillable, ICharacterBody3D
|
||||
|
||||
public void ApplyNewAugment(IAugmentItem jewel, IAugmentableItem equipableItem);
|
||||
|
||||
public void IdentifyItem(IBaseInventoryItem unidentifiedItem);
|
||||
public IBaseInventoryItem IdentifyItem(IBaseInventoryItem unidentifiedItem);
|
||||
|
||||
public IInventory Inventory { get; }
|
||||
|
||||
@@ -46,10 +46,14 @@ public interface IPlayer : IKillable, ICharacterBody3D
|
||||
|
||||
public IEquipmentComponent EquipmentComponent { get; }
|
||||
|
||||
public IStatusEffectComponent StatusEffectComponent { get; }
|
||||
|
||||
public void SetHealthTimerStatus(bool isActive);
|
||||
|
||||
public void ModifyHealthTimerSpeed(float newModifier);
|
||||
|
||||
public void PlaySpellFX(SpellFXEnum spellEnum);
|
||||
|
||||
public bool AutoRevive { get; set; }
|
||||
|
||||
public int TotalAttack { get; }
|
||||
|
||||
@@ -31,4 +31,8 @@
|
||||
<ProjectReference Include="..\Zennysoft.Game.Godot.Implementation\Zennysoft.Game.Implementation.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Save\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
61
Zennysoft.Game.Ma/Game.sln
Normal file
61
Zennysoft.Game.Ma/Game.sln
Normal file
@@ -0,0 +1,61 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.11.35222.181
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ma", "Ma.csproj", "{94D57D73-EDC5-47B2-BF34-7B57BA9C3881}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Zennysoft.Game.Abstractions", "..\Zennysoft.Game.Abstractions\Zennysoft.Game.Abstractions.csproj", "{D65D2AE9-D371-49F8-9E1D-BBA2907AB4AA}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Zennysoft.Game.Implementation", "..\Zennysoft.Game.Godot.Implementation\Zennysoft.Game.Implementation.csproj", "{F6808C1C-EDFB-4602-BA01-34FB682A270C}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Zennysoft.Ma.Adapter", "..\Zennysoft.Game.Ma.Implementation\Zennysoft.Ma.Adapter.csproj", "{CC55EDC3-B9EA-4393-BE4D-630C34393A94}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
ExportDebug|Any CPU = ExportDebug|Any CPU
|
||||
ExportRelease|Any CPU = ExportRelease|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{94D57D73-EDC5-47B2-BF34-7B57BA9C3881}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{94D57D73-EDC5-47B2-BF34-7B57BA9C3881}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{94D57D73-EDC5-47B2-BF34-7B57BA9C3881}.ExportDebug|Any CPU.ActiveCfg = ExportDebug|Any CPU
|
||||
{94D57D73-EDC5-47B2-BF34-7B57BA9C3881}.ExportDebug|Any CPU.Build.0 = ExportDebug|Any CPU
|
||||
{94D57D73-EDC5-47B2-BF34-7B57BA9C3881}.ExportRelease|Any CPU.ActiveCfg = ExportRelease|Any CPU
|
||||
{94D57D73-EDC5-47B2-BF34-7B57BA9C3881}.ExportRelease|Any CPU.Build.0 = ExportRelease|Any CPU
|
||||
{94D57D73-EDC5-47B2-BF34-7B57BA9C3881}.Release|Any CPU.ActiveCfg = ExportRelease|Any CPU
|
||||
{94D57D73-EDC5-47B2-BF34-7B57BA9C3881}.Release|Any CPU.Build.0 = ExportRelease|Any CPU
|
||||
{D65D2AE9-D371-49F8-9E1D-BBA2907AB4AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D65D2AE9-D371-49F8-9E1D-BBA2907AB4AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D65D2AE9-D371-49F8-9E1D-BBA2907AB4AA}.ExportDebug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D65D2AE9-D371-49F8-9E1D-BBA2907AB4AA}.ExportDebug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D65D2AE9-D371-49F8-9E1D-BBA2907AB4AA}.ExportRelease|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D65D2AE9-D371-49F8-9E1D-BBA2907AB4AA}.ExportRelease|Any CPU.Build.0 = Release|Any CPU
|
||||
{D65D2AE9-D371-49F8-9E1D-BBA2907AB4AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D65D2AE9-D371-49F8-9E1D-BBA2907AB4AA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F6808C1C-EDFB-4602-BA01-34FB682A270C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F6808C1C-EDFB-4602-BA01-34FB682A270C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F6808C1C-EDFB-4602-BA01-34FB682A270C}.ExportDebug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F6808C1C-EDFB-4602-BA01-34FB682A270C}.ExportDebug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F6808C1C-EDFB-4602-BA01-34FB682A270C}.ExportRelease|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F6808C1C-EDFB-4602-BA01-34FB682A270C}.ExportRelease|Any CPU.Build.0 = Release|Any CPU
|
||||
{F6808C1C-EDFB-4602-BA01-34FB682A270C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F6808C1C-EDFB-4602-BA01-34FB682A270C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{CC55EDC3-B9EA-4393-BE4D-630C34393A94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{CC55EDC3-B9EA-4393-BE4D-630C34393A94}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{CC55EDC3-B9EA-4393-BE4D-630C34393A94}.ExportDebug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{CC55EDC3-B9EA-4393-BE4D-630C34393A94}.ExportDebug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{CC55EDC3-B9EA-4393-BE4D-630C34393A94}.ExportRelease|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{CC55EDC3-B9EA-4393-BE4D-630C34393A94}.ExportRelease|Any CPU.Build.0 = Release|Any CPU
|
||||
{CC55EDC3-B9EA-4393-BE4D-630C34393A94}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{CC55EDC3-B9EA-4393-BE4D-630C34393A94}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {797FF6A1-5959-42C9-A7A2-A8D39F9AC1A4}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://civ6shmka5e8u"]
|
||||
[gd_scene load_steps=4 format=3 uid="uid://ekf8y405ewyq"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://klpiq4tk3t7a" path="res://addons/dialogue_manager/components/code_edit_syntax_highlighter.gd" id="1_58cfo"]
|
||||
[ext_resource type="Script" uid="uid://djeybvlb332mp" path="res://addons/dialogue_manager/components/code_edit.gd" id="1_g324i"]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://qdxrxv3c3hxk"]
|
||||
[gd_scene load_steps=3 format=3 uid="uid://cstps104wl17j"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://kpwo418lb2t2" path="res://addons/dialogue_manager/components/download_update_panel.gd" id="1_4tm1k"]
|
||||
[ext_resource type="Texture2D" uid="uid://d3baj6rygkb3f" path="res://addons/dialogue_manager/assets/update.svg" id="2_4o2m6"]
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://ycn6uaj7dsrh"]
|
||||
[gd_scene load_steps=4 format=3 uid="uid://bsal283gclopj"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dooe2pflnqtve" path="res://addons/dialogue_manager/components/editor_property/editor_property_control.gd" id="1_het12"]
|
||||
[ext_resource type="PackedScene" uid="uid://b16uuqjuof3n5" path="res://addons/dialogue_manager/components/editor_property/resource_button.tscn" id="2_hh3d4"]
|
||||
[ext_resource type="PackedScene" uid="uid://dnufpcdrreva3" path="res://addons/dialogue_manager/components/files_list.tscn" id="3_l8fp6"]
|
||||
[ext_resource type="PackedScene" path="res://addons/dialogue_manager/components/editor_property/resource_button.tscn" id="2_hh3d4"]
|
||||
[ext_resource type="PackedScene" path="res://addons/dialogue_manager/components/files_list.tscn" id="3_l8fp6"]
|
||||
|
||||
[node name="PropertyEditorButton" type="HBoxContainer"]
|
||||
offset_right = 40.0
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://b16uuqjuof3n5"]
|
||||
[gd_scene load_steps=2 format=3 uid="uid://bylecer7aexlb"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://damhqta55t67c" path="res://addons/dialogue_manager/components/editor_property/resource_button.gd" id="1_7u2i7"]
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://cs8pwrxr5vxix"]
|
||||
[gd_scene load_steps=4 format=3 uid="uid://c3pniua1enw8v"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://d2l8nlb6hhrfp" path="res://addons/dialogue_manager/components/errors_panel.gd" id="1_nfm3c"]
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://dnufpcdrreva3"]
|
||||
[gd_scene load_steps=3 format=3 uid="uid://b21h8gsbo60xg"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dqa4a4wwoo0aa" path="res://addons/dialogue_manager/components/files_list.gd" id="1_cytii"]
|
||||
[ext_resource type="Texture2D" uid="uid://d3lr2uas6ax8v" path="res://addons/dialogue_manager/assets/icon.svg" id="2_3ijx1"]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://0n7hwviyyly4"]
|
||||
[gd_scene load_steps=3 format=3 uid="uid://c5to0aeerreb4"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://q368fmxxa8sd" path="res://addons/dialogue_manager/components/find_in_files.gd" id="1_3xicy"]
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://gr8nakpbrhby"]
|
||||
[gd_scene load_steps=2 format=3 uid="uid://xnv1ojlgiss3"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cijsmjkq21cdq" path="res://addons/dialogue_manager/components/search_and_replace.gd" id="1_8oj1f"]
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://ctns6ouwwd68i"]
|
||||
[gd_scene load_steps=2 format=3 uid="uid://b7v2agbddgaoi"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://d0k2wndjj0ifm" path="res://addons/dialogue_manager/components/title_list.gd" id="1_5qqmd"]
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://co8yl23idiwbi"]
|
||||
[gd_scene load_steps=3 format=3 uid="uid://c1dliyrsif5jj"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cr1tt12dh5ecr" path="res://addons/dialogue_manager/components/update_button.gd" id="1_d2tpb"]
|
||||
[ext_resource type="PackedScene" uid="uid://qdxrxv3c3hxk" path="res://addons/dialogue_manager/components/download_update_panel.tscn" id="2_iwm7r"]
|
||||
[ext_resource type="PackedScene" uid="uid://cstps104wl17j" path="res://addons/dialogue_manager/components/download_update_panel.tscn" id="2_iwm7r"]
|
||||
|
||||
[node name="UpdateButton" type="Button"]
|
||||
visible = false
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://ckvgyvclnwggo"]
|
||||
[gd_scene load_steps=2 format=3 uid="uid://b0sflwm2j27gu"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://g32um0mltv5d" path="res://addons/dialogue_manager/dialogue_label.gd" id="1_cital"]
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://73jm5qjy52vq"]
|
||||
[gd_scene load_steps=9 format=3 uid="uid://bs44fggx87t73"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://5b3w40kwakl3" path="res://addons/dialogue_manager/example_balloon/ExampleBalloon.cs" id="1_36de5"]
|
||||
[ext_resource type="PackedScene" uid="uid://ckvgyvclnwggo" path="res://addons/dialogue_manager/dialogue_label.tscn" id="2_a8ve6"]
|
||||
[ext_resource type="PackedScene" path="res://addons/dialogue_manager/dialogue_label.tscn" id="2_a8ve6"]
|
||||
[ext_resource type="Script" uid="uid://bb52rsfwhkxbn" path="res://addons/dialogue_manager/dialogue_responses_menu.gd" id="3_72ixx"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_spyqn"]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=10 format=3 uid="uid://13s5spsk34qu"]
|
||||
[gd_scene load_steps=10 format=3 uid="uid://c4tqvq4mjcfv2"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://5b3w40kwakl3" path="res://addons/dialogue_manager/example_balloon/ExampleBalloon.cs" id="1_s2gbs"]
|
||||
[ext_resource type="PackedScene" uid="uid://ckvgyvclnwggo" path="res://addons/dialogue_manager/dialogue_label.tscn" id="2_hfvdi"]
|
||||
[ext_resource type="PackedScene" path="res://addons/dialogue_manager/dialogue_label.tscn" id="2_hfvdi"]
|
||||
[ext_resource type="Script" uid="uid://bb52rsfwhkxbn" path="res://addons/dialogue_manager/dialogue_responses_menu.gd" id="3_1j1j0"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_235ry"]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://ugd552efvil0"]
|
||||
[gd_scene load_steps=2 format=3 uid="uid://c3ty75yb1un26"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://c8e16qdgu40wo" path="res://addons/dialogue_manager/test_scene.gd" id="1_yupoh"]
|
||||
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
[gd_scene load_steps=16 format=3 uid="uid://cbuf1q3xsse3q"]
|
||||
[gd_scene load_steps=16 format=3 uid="uid://b2lot8kdw2snd"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cipjcc7bkh1pc" path="res://addons/dialogue_manager/views/main_view.gd" id="1_h6qfq"]
|
||||
[ext_resource type="PackedScene" uid="uid://civ6shmka5e8u" path="res://addons/dialogue_manager/components/code_edit.tscn" id="2_f73fm"]
|
||||
[ext_resource type="PackedScene" uid="uid://dnufpcdrreva3" path="res://addons/dialogue_manager/components/files_list.tscn" id="2_npj2k"]
|
||||
[ext_resource type="PackedScene" uid="uid://ctns6ouwwd68i" path="res://addons/dialogue_manager/components/title_list.tscn" id="2_onb4i"]
|
||||
[ext_resource type="PackedScene" uid="uid://co8yl23idiwbi" path="res://addons/dialogue_manager/components/update_button.tscn" id="2_ph3vs"]
|
||||
[ext_resource type="PackedScene" uid="uid://gr8nakpbrhby" path="res://addons/dialogue_manager/components/search_and_replace.tscn" id="6_ylh0t"]
|
||||
[ext_resource type="PackedScene" uid="uid://cs8pwrxr5vxix" path="res://addons/dialogue_manager/components/errors_panel.tscn" id="7_5cvl4"]
|
||||
[ext_resource type="PackedScene" uid="uid://ekf8y405ewyq" path="res://addons/dialogue_manager/components/code_edit.tscn" id="2_f73fm"]
|
||||
[ext_resource type="PackedScene" uid="uid://b21h8gsbo60xg" path="res://addons/dialogue_manager/components/files_list.tscn" id="2_npj2k"]
|
||||
[ext_resource type="PackedScene" uid="uid://b7v2agbddgaoi" path="res://addons/dialogue_manager/components/title_list.tscn" id="2_onb4i"]
|
||||
[ext_resource type="PackedScene" uid="uid://c1dliyrsif5jj" path="res://addons/dialogue_manager/components/update_button.tscn" id="2_ph3vs"]
|
||||
[ext_resource type="PackedScene" uid="uid://xnv1ojlgiss3" path="res://addons/dialogue_manager/components/search_and_replace.tscn" id="6_ylh0t"]
|
||||
[ext_resource type="PackedScene" uid="uid://c3pniua1enw8v" path="res://addons/dialogue_manager/components/errors_panel.tscn" id="7_5cvl4"]
|
||||
[ext_resource type="Script" uid="uid://klpiq4tk3t7a" path="res://addons/dialogue_manager/components/code_edit_syntax_highlighter.gd" id="7_necsa"]
|
||||
[ext_resource type="Texture2D" uid="uid://cnm67htuohhlo" path="res://addons/dialogue_manager/assets/banner.png" id="9_y6rqu"]
|
||||
[ext_resource type="PackedScene" uid="uid://0n7hwviyyly4" path="res://addons/dialogue_manager/components/find_in_files.tscn" id="10_yold3"]
|
||||
[ext_resource type="PackedScene" uid="uid://c5to0aeerreb4" path="res://addons/dialogue_manager/components/find_in_files.tscn" id="10_yold3"]
|
||||
|
||||
[sub_resource type="Image" id="Image_y6rqu"]
|
||||
data = {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://b7mst0qu7vjk1"]
|
||||
[gd_scene load_steps=3 format=3 uid="uid://bf5kpeg711bo8"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dcff0mowkn6km" path="res://addons/input_helper/components/download_update_panel.gd" id="1_4tm1k"]
|
||||
[ext_resource type="Texture2D" uid="uid://ddixs2ish5bi6" path="res://addons/input_helper/assets/update.svg" id="2_j7shv"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://bownbkcmm43gn"]
|
||||
[gd_scene load_steps=3 format=3 uid="uid://bsi3bm7ig32p"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://b7mst0qu7vjk1" path="res://addons/input_helper/components/download_update_panel.tscn" id="1_37q37"]
|
||||
[ext_resource type="PackedScene" uid="uid://bf5kpeg711bo8" path="res://addons/input_helper/components/download_update_panel.tscn" id="1_37q37"]
|
||||
[ext_resource type="Script" uid="uid://1t3qhgrro2es" path="res://addons/input_helper/views/download_dialog.gd" id="1_ltktf"]
|
||||
|
||||
[node name="DownloadDialog" type="AcceptDialog"]
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
[gd_resource type="AudioBusLayout" load_steps=4 format=3 uid="uid://c2mk6c27y0mdf"]
|
||||
[gd_resource type="AudioBusLayout" load_steps=5 format=3 uid="uid://c2mk6c27y0mdf"]
|
||||
|
||||
[sub_resource type="AudioEffectLimiter" id="AudioEffectLimiter_j3pel"]
|
||||
resource_name = "Limiter"
|
||||
soft_clip_db = 1.0
|
||||
|
||||
[sub_resource type="AudioEffectHardLimiter" id="AudioEffectHardLimiter_j3pel"]
|
||||
resource_name = "HardLimiter"
|
||||
|
||||
[sub_resource type="AudioEffectReverb" id="AudioEffectReverb_j3pel"]
|
||||
resource_name = "Reverb"
|
||||
room_size = 0.5
|
||||
@@ -20,7 +23,9 @@ soft_clip_db = 1.5
|
||||
[resource]
|
||||
bus/0/volume_db = -0.130497
|
||||
bus/0/effect/0/effect = SubResource("AudioEffectLimiter_j3pel")
|
||||
bus/0/effect/0/enabled = true
|
||||
bus/0/effect/0/enabled = false
|
||||
bus/0/effect/1/effect = SubResource("AudioEffectHardLimiter_j3pel")
|
||||
bus/0/effect/1/enabled = true
|
||||
bus/1/name = &"AMBIENT"
|
||||
bus/1/solo = false
|
||||
bus/1/mute = false
|
||||
|
||||
@@ -9,7 +9,7 @@ custom_features=""
|
||||
export_filter="all_resources"
|
||||
include_filter=""
|
||||
exclude_filter=""
|
||||
export_path="Export/Ma.exe"
|
||||
export_path="../../Demo/Export.exe"
|
||||
patches=PackedStringArray()
|
||||
encryption_include_filters=""
|
||||
encryption_exclude_filters=""
|
||||
|
||||
@@ -8,6 +8,10 @@
|
||||
|
||||
config_version=5
|
||||
|
||||
[animation]
|
||||
|
||||
warnings/check_invalid_track_paths=false
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Ma"
|
||||
@@ -36,6 +40,7 @@ runtime/advanced/uses_dotnet=true
|
||||
window/size/viewport_width=1920
|
||||
window/size/viewport_height=1080
|
||||
window/stretch/mode="canvas_items"
|
||||
window/stretch/aspect="expand"
|
||||
|
||||
[dotnet]
|
||||
|
||||
@@ -82,6 +87,7 @@ import/blender/enabled=false
|
||||
[global_group]
|
||||
|
||||
DimmableAudio=""
|
||||
enemy=""
|
||||
|
||||
[importer_defaults]
|
||||
|
||||
@@ -254,11 +260,15 @@ AltAttack={
|
||||
CameraForward={
|
||||
"deadzone": 0.2,
|
||||
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":-1.0,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194320,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194446,"key_label":0,"unicode":56,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
CameraBack={
|
||||
"deadzone": 0.2,
|
||||
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":1.0,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194322,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194440,"key_label":0,"unicode":50,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
EnemyViewerIdle={
|
||||
@@ -274,7 +284,7 @@ EnemyViewerWalk={
|
||||
|
||||
[internationalization]
|
||||
|
||||
locale/translations_pot_files=PackedStringArray("res://src/dialog/Dialogue.dialogue", "res://src/npc/Ran/ran.dialogue", "res://src/npc/Rat/ratdialogue.dialogue", "res://src/dialog/Altar.dialogue", "res://stone.dialogue", "res://src/npc/Proscenium/JumpScare.dialogue", "res://tutorialstone.dialogue")
|
||||
locale/translations_pot_files=PackedStringArray("res://src/dialog/Dialogue.dialogue", "res://src/npc/Ran/ran.dialogue", "res://src/npc/Rat/ratdialogue.dialogue", "res://src/dialog/Altar.dialogue", "res://stone.dialogue", "res://src/npc/Proscenium/JumpScare.dialogue")
|
||||
|
||||
[layer_names]
|
||||
|
||||
@@ -308,6 +318,7 @@ jolt_physics_3d/simulation/areas_detect_static_bodies=true
|
||||
|
||||
textures/canvas_textures/default_texture_filter=0
|
||||
textures/lossless_compression/force_png=true
|
||||
lights_and_shadows/directional_shadow/size=2048
|
||||
lights_and_shadows/directional_shadow/soft_shadow_filter_quality=4
|
||||
lights_and_shadows/directional_shadow/16_bits=false
|
||||
lights_and_shadows/positional_shadow/soft_shadow_filter_quality=3
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Chickensoft.Collections;
|
||||
using Godot;
|
||||
using System;
|
||||
using Zennysoft.Ma.Adapter;
|
||||
|
||||
@@ -49,7 +50,14 @@ public class AttackComponent : IAttackComponent
|
||||
|
||||
public void RaiseMaximumAttack(int raiseAmount)
|
||||
{
|
||||
_maximumAttack.OnNext(raiseAmount);
|
||||
_maximumAttack.OnNext(_maximumAttack.Value + raiseAmount);
|
||||
Restore(raiseAmount);
|
||||
}
|
||||
|
||||
public void LowerMaximumAttack(int lowerAmount)
|
||||
{
|
||||
_maximumAttack.OnNext(Mathf.Max(_maximumAttack.Value - lowerAmount, 1));
|
||||
if (_currentAttack.Value > _maximumAttack.Value)
|
||||
_currentAttack.OnNext(_maximumAttack.Value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Chickensoft.Collections;
|
||||
using Godot;
|
||||
using System;
|
||||
using Zennysoft.Ma.Adapter;
|
||||
|
||||
@@ -49,7 +50,14 @@ public class DefenseComponent : IDefenseComponent
|
||||
|
||||
public void RaiseMaximumDefense(int raiseAmount)
|
||||
{
|
||||
_maximumDefense.OnNext(raiseAmount);
|
||||
_maximumDefense.OnNext(_maximumDefense.Value + raiseAmount);
|
||||
Restore(raiseAmount);
|
||||
}
|
||||
|
||||
public void LowerMaximumDefense(int lowerAmount)
|
||||
{
|
||||
_maximumDefense.OnNext(Mathf.Max(_maximumDefense.Value - lowerAmount, 1));
|
||||
if (_currentDefense.Value > _maximumDefense.Value)
|
||||
_currentDefense.OnNext(_maximumDefense.Value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Chickensoft.Collections;
|
||||
using Godot;
|
||||
using System;
|
||||
using Zennysoft.Ma.Adapter;
|
||||
|
||||
@@ -24,6 +25,8 @@ public class ExperiencePointsComponent : IExperiencePointsComponent
|
||||
|
||||
public event Action PlayerLevelUp;
|
||||
|
||||
public event Action PlayerLevelDown;
|
||||
|
||||
public ExperiencePointsComponent()
|
||||
{
|
||||
var firstLevelExpRequirement = ExpToNextLevelCalculation(1);
|
||||
@@ -45,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);
|
||||
@@ -73,6 +73,21 @@ public class ExperiencePointsComponent : IExperiencePointsComponent
|
||||
PlayerLevelUp?.Invoke();
|
||||
}
|
||||
|
||||
public void LevelDown()
|
||||
{
|
||||
SfxDatabase.Instance.Play(SoundEffect.DecreaseStat);
|
||||
_currentExp.OnNext(0);
|
||||
|
||||
if (_level.Value == 1)
|
||||
return;
|
||||
|
||||
var newLevel = Mathf.Max(_level.Value - 1, 1);
|
||||
_level.OnNext(newLevel);
|
||||
var expToNextLevel = ExpToNextLevelCalculation(newLevel);
|
||||
_expToNextLevel.OnNext(expToNextLevel);
|
||||
PlayerLevelDown.Invoke();
|
||||
}
|
||||
|
||||
private int ExpToNextLevelCalculation(int nextLevel)
|
||||
{
|
||||
return (int)(6.5 * nextLevel + 4.5 * Math.Pow(nextLevel, 2) + Math.Pow(nextLevel, 3));
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Chickensoft.Collections;
|
||||
using Godot;
|
||||
using System;
|
||||
using Zennysoft.Ma.Adapter;
|
||||
|
||||
@@ -77,4 +78,11 @@ public class HealthComponent : IHealthComponent
|
||||
if (restoreHP)
|
||||
Heal(raiseAmount);
|
||||
}
|
||||
|
||||
public void LowerMaximumHP(int lowerAmount)
|
||||
{
|
||||
_maximumHP.OnNext(Mathf.Max(_maximumHP.Value - lowerAmount, 1));
|
||||
if (_currentHP.Value > _maximumHP.Value)
|
||||
_currentHP.OnNext(_maximumHP.Value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Chickensoft.Collections;
|
||||
using System;
|
||||
using Zennysoft.Ma.Adapter;
|
||||
|
||||
namespace Zennysoft.Game.Ma;
|
||||
@@ -6,12 +7,14 @@ namespace Zennysoft.Game.Ma;
|
||||
public class LuckComponent : ILuckComponent
|
||||
{
|
||||
public IAutoProp<int> Luck => _luck;
|
||||
public int InitialLuck { get; }
|
||||
|
||||
private AutoProp<int> _luck;
|
||||
private readonly AutoProp<int> _luck;
|
||||
private readonly int _initialValue;
|
||||
|
||||
public LuckComponent(int initialLuck)
|
||||
{
|
||||
InitialLuck = initialLuck;
|
||||
_luck = new AutoProp<int>(initialLuck);
|
||||
_initialValue = initialLuck;
|
||||
}
|
||||
@@ -22,4 +25,6 @@ public class LuckComponent : ILuckComponent
|
||||
}
|
||||
|
||||
public void IncreaseLuck(int value) => _luck.OnNext(_luck.Value + value);
|
||||
|
||||
public void DecreaseLuck(int value) => _luck.OnNext(Godot.Mathf.Max(_luck.Value - value, 0));
|
||||
}
|
||||
|
||||
20
Zennysoft.Game.Ma/src/Components/StatusEffectComponent.cs
Normal file
20
Zennysoft.Game.Ma/src/Components/StatusEffectComponent.cs
Normal file
@@ -0,0 +1,20 @@
|
||||
using Chickensoft.Collections;
|
||||
|
||||
public class StatusEffectComponent : IStatusEffectComponent
|
||||
{
|
||||
public StatusEffectComponent(double rustDuration)
|
||||
{
|
||||
RustDuration = rustDuration;
|
||||
}
|
||||
|
||||
public double RustDuration { get; set; }
|
||||
|
||||
public AutoProp<bool> Rust { get; } = new AutoProp<bool>(false);
|
||||
|
||||
public bool ImmuneToRust { get; set; } = false;
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
Rust.OnNext(false);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
uid://chhmivq4bntxf
|
||||
@@ -1,4 +1,5 @@
|
||||
using Chickensoft.Collections;
|
||||
using Godot;
|
||||
using System;
|
||||
using Zennysoft.Ma.Adapter;
|
||||
|
||||
@@ -56,6 +57,13 @@ public class VTComponent : IVTComponent
|
||||
Restore(raiseAmount);
|
||||
}
|
||||
|
||||
public void LowerMaximumVT(int lowerAmount)
|
||||
{
|
||||
_maximumVT.OnNext(Mathf.Max(_maximumVT.Value - lowerAmount, 1));
|
||||
if (_currentVT.Value > _maximumVT.Value)
|
||||
_currentVT.OnNext(_maximumVT.Value);
|
||||
}
|
||||
|
||||
public void SetMaximumVT(int vt)
|
||||
{
|
||||
_maximumVT.OnNext(vt);
|
||||
|
||||
@@ -21,7 +21,7 @@ public partial class App : Node, IApp
|
||||
|
||||
public const string GAME_SCENE_PATH = "res://src/game/Game.tscn";
|
||||
|
||||
public const string ENEMY_VIEWER_PATH = "res://src/data_viewer/DataViewer.tscn";
|
||||
public const string ENEMY_VIEWER_PATH = "res://src/enemy_viewer/EnemyViewer.tscn";
|
||||
|
||||
[Node] private MainMenu MainMenu { get; set; } = default!;
|
||||
|
||||
@@ -40,14 +40,14 @@ public partial class App : Node, IApp
|
||||
private Godot.Collections.Array _progress;
|
||||
private SimpleInjector.Container _container;
|
||||
|
||||
private DataViewer _dataViewer;
|
||||
private EnemyViewer _dataViewer;
|
||||
private bool _loadingGame = false;
|
||||
private bool _loadingEnemyViewer = false;
|
||||
private string _optionsSavePath = string.Empty;
|
||||
private string _controllerSavePath = string.Empty;
|
||||
private ISaveFileManager _saveFileManager;
|
||||
private IGame _game;
|
||||
private IDataViewer _enemyViewer;
|
||||
private IEnemyViewer _enemyViewer;
|
||||
|
||||
private double _reportedProgress = 0;
|
||||
|
||||
@@ -173,7 +173,7 @@ public partial class App : Node, IApp
|
||||
.Handle((in AppLogic.Output.EnemyViewerExited _) =>
|
||||
{
|
||||
LoadingScreen.HideLoadingScreen();
|
||||
if (_enemyViewer != null && _enemyViewer is DataViewer enemyViewer)
|
||||
if (_enemyViewer != null && _enemyViewer is EnemyViewer enemyViewer)
|
||||
enemyViewer.CallDeferred(MethodName.QueueFree);
|
||||
MainMenu.Show();
|
||||
MainMenu.EnemyViewerButton.GrabFocus();
|
||||
@@ -211,7 +211,7 @@ public partial class App : Node, IApp
|
||||
private async void LoadEnemyViewer(string sceneName)
|
||||
{
|
||||
var scene = await LoadSceneInternal(sceneName);
|
||||
_enemyViewer = scene as IDataViewer;
|
||||
_enemyViewer = scene as IEnemyViewer;
|
||||
CallDeferred(MethodName.AddChild, scene);
|
||||
LoadingScreen.HideLoadingScreen();
|
||||
}
|
||||
@@ -219,6 +219,7 @@ public partial class App : Node, IApp
|
||||
private async Task<Node> LoadSceneInternal(string sceneName)
|
||||
{
|
||||
LoadingScreen.ShowLoadingScreen();
|
||||
MainMenu.Hide();
|
||||
LoadingScreen.ProgressBar.Value = 0;
|
||||
var sceneLoader = new SceneLoader();
|
||||
CallDeferred(MethodName.AddChild, sceneLoader);
|
||||
@@ -238,11 +239,7 @@ public partial class App : Node, IApp
|
||||
OptionsMenu.GameTab.GrabFocus();
|
||||
}
|
||||
|
||||
private async void OnGallery()
|
||||
{
|
||||
GalleryMenu.Show();
|
||||
GalleryMenu.ItemButton1.GrabFocus();
|
||||
}
|
||||
private async void OnGallery() => GalleryMenu.Show();
|
||||
|
||||
public void OnQuit() => AppLogic.Input(new AppLogic.Input.QuitGame());
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=6 format=3 uid="uid://cagfc5ridmteu"]
|
||||
[gd_scene load_steps=6 format=3 uid="uid://bkhaksn82ws6h"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://d1f8blk5ucqvq" path="res://src/app/App.cs" id="1_rt73h"]
|
||||
[ext_resource type="PackedScene" uid="uid://rfvnddfqufho" path="res://src/menu/MainMenu.tscn" id="2_1uiag"]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=26 format=3 uid="uid://brgi35xj3b4ud"]
|
||||
[gd_scene load_steps=27 format=3 uid="uid://brgi35xj3b4ud"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cw100tox0ufsy" path="res://src/audio/SfxDatabase.cs" id="1_ojkqd"]
|
||||
[ext_resource type="AudioStream" uid="uid://cye8wlqbx66h4" path="res://src/audio/sfx/player_heal.ogg" id="2_158j8"]
|
||||
@@ -9,6 +9,7 @@
|
||||
[ext_resource type="AudioStream" uid="uid://c817txm4tmup7" path="res://src/audio/sfx/PLAYER_EQUIP.ogg" id="7_sew62"]
|
||||
[ext_resource type="AudioStream" uid="uid://qxi7qto7hhgk" path="res://src/audio/sfx/PLAYER_UNEQUIP.ogg" id="8_rf1la"]
|
||||
[ext_resource type="AudioStream" uid="uid://doeefxilh0luj" path="res://src/audio/sfx/ITEM_SORT.ogg" id="9_l6w22"]
|
||||
[ext_resource type="AudioStream" uid="uid://cyae4bt60m7p4" path="res://src/audio/sfx/item_plasma_sword.ogg" id="10_7th20"]
|
||||
[ext_resource type="AudioStream" uid="uid://4mk4hlse81if" path="res://src/audio/sfx/player_losehealth.ogg" id="10_kac56"]
|
||||
[ext_resource type="AudioStream" uid="uid://dwp3ep3jddvrr" path="res://src/audio/sfx/UI_SELECT.ogg" id="10_nerso"]
|
||||
[ext_resource type="AudioStream" uid="uid://ilf2s8ct2stt" path="res://src/audio/sfx/PLAYER_slower_slash.ogg" id="10_vyvit"]
|
||||
@@ -33,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"
|
||||
|
||||
@@ -56,51 +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"
|
||||
|
||||
@@ -108,50 +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"
|
||||
|
||||
@@ -24,6 +24,7 @@ public partial class SfxDatabase : Node
|
||||
{SoundEffect.TakeDamage, TakeDamageSound },
|
||||
{SoundEffect.HealVT, HealVTSound },
|
||||
{SoundEffect.IncreaseStat, IncreaseStatSound },
|
||||
{SoundEffect.DecreaseStat, DecreaseStatSound },
|
||||
{SoundEffect.Crit, CritSound },
|
||||
{SoundEffect.PickupItem, PickupItemSound },
|
||||
{SoundEffect.OpenInventory, OpenInventorySound },
|
||||
@@ -43,6 +44,7 @@ public partial class SfxDatabase : Node
|
||||
{SoundEffect.TurnAllEnemiesIntoHealingItems, TurnAllEnemiesIntoHealingItemsSound},
|
||||
{SoundEffect.WeaponQuickSlash, WeaponQuickSlashSound },
|
||||
{SoundEffect.WeaponSlowSlash, WeaponSlowSlashSound },
|
||||
{SoundEffect.WeaponPlasmaSword, WeaponPlasmaSword },
|
||||
};
|
||||
}
|
||||
|
||||
@@ -50,8 +52,11 @@ public partial class SfxDatabase : Node
|
||||
[Node] private AudioStreamPlayer TakeDamageSound { get; set; } = default!;
|
||||
[Node] private AudioStreamPlayer HealVTSound { get; set; } = default!;
|
||||
[Node] private AudioStreamPlayer IncreaseStatSound { get; set; } = default!;
|
||||
|
||||
[Node] private AudioStreamPlayer DecreaseStatSound { get; set; } = default!;
|
||||
[Node] private AudioStreamPlayer WeaponQuickSlashSound { get; set; } = default!;
|
||||
[Node] private AudioStreamPlayer WeaponSlowSlashSound { get; set; } = default!;
|
||||
[Node] private AudioStreamPlayer WeaponPlasmaSword { get; set; } = default!;
|
||||
[Node] private AudioStreamPlayer CritSound { get; set; } = default!;
|
||||
[Node] private AudioStreamPlayer PickupItemSound { get; set; } = default!;
|
||||
[Node] private AudioStreamPlayer OpenInventorySound { get; set; }
|
||||
@@ -87,6 +92,7 @@ public enum SoundEffect
|
||||
TakeDamage,
|
||||
HealVT,
|
||||
IncreaseStat,
|
||||
DecreaseStat,
|
||||
Crit,
|
||||
PickupItem,
|
||||
OpenInventory,
|
||||
@@ -107,5 +113,6 @@ public enum SoundEffect
|
||||
TurnAllEnemiesIntoHealingItems,
|
||||
WeaponQuickSlash,
|
||||
WeaponSlowSlash,
|
||||
WeaponPlasmaSword
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://didc6vnf5ftlg"]
|
||||
[gd_scene load_steps=3 format=3 uid="uid://dqvlemme0iwa"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bb36q1wpe0tlw" path="res://src/camera/ShakeCamera.cs" id="1_ubmds"]
|
||||
|
||||
|
||||
@@ -25,13 +25,13 @@ public partial class DebugInfo : Control
|
||||
_map.FloorLoaded += _map_FloorLoaded;
|
||||
_gameRepo.EnemyDied += _gameRepo_EnemyDied;
|
||||
_player.PlayerDied += _player_PlayerDied;
|
||||
DeathCount.Text = _game.QuestData.DeathCount.ToString();
|
||||
}
|
||||
|
||||
private void _gameRepo_EnemyDied(IEnemy obj) => EnemyCount.Text = (EnemyCount.Text.ToInt() - 1).ToString();
|
||||
|
||||
private void _map_FloorLoaded()
|
||||
{
|
||||
DeathCount.Text = _game.QuestData.DeathCount.ToString();
|
||||
MapName.Text = _map.CurrentFloor.SceneFilePath.GetFile().TrimSuffix(".tscn");
|
||||
EnemyCount.Text = _map.CurrentFloor.GetChild(0).GetChildren().OfType<IDungeonRoom>().Select(x => x.GetChildren().OfType<IEnemy>()).Count().ToString();
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://t22s2y1t8ktc"]
|
||||
[gd_scene load_steps=4 format=3 uid="uid://0eo47mewhlit"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://c4g3frcpt0h36" path="res://src/debug_info/DebugInfo.cs" id="1_6tk84"]
|
||||
[ext_resource type="LabelSettings" uid="uid://b6f8ggy3ulonb" path="res://src/ui/label_settings/GeorgiaItalic.tres" id="1_i766g"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_resource type="Resource" script_class="DialogueResource" load_steps=2 format=3 uid="uid://dlbsw423e12au"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/dialogue_manager/dialogue_resource.gd" id="1_p1wx7"]
|
||||
[ext_resource type="Script" uid="uid://dbs4435dsf3ry" path="res://addons/dialogue_manager/dialogue_resource.gd" id="1_p1wx7"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_p1wx7")
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://kt5fg0it26cf"]
|
||||
[gd_scene load_steps=2 format=3 uid="uid://ci8272gtj7oj6"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/dialogue_manager/dialogue_label.gd" id="1_bkcfu"]
|
||||
[ext_resource type="Script" uid="uid://g32um0mltv5d" path="res://addons/dialogue_manager/dialogue_label.gd" id="1_bkcfu"]
|
||||
|
||||
[node name="Dialog" type="RichTextLabel"]
|
||||
anchors_preset = 15
|
||||
|
||||
@@ -1,15 +1,5 @@
|
||||
~ general
|
||||
Hi...
|
||||
=> END
|
||||
|
||||
~ introduction
|
||||
I haven't had a script added yet.
|
||||
=> END
|
||||
|
||||
~ hit
|
||||
Yep, hitting me does work though.
|
||||
=> END
|
||||
|
||||
~ get_item
|
||||
ooo yum
|
||||
=> END
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=95 format=3 uid="uid://dpoonda2dwwic"]
|
||||
[gd_scene load_steps=95 format=3 uid="uid://cygwsc1gebeut"]
|
||||
|
||||
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_53wuj"]
|
||||
animation = &"idle_back"
|
||||
|
||||
@@ -3,7 +3,6 @@ using Chickensoft.Introspection;
|
||||
using Godot;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Zennysoft.Ma.Adapter;
|
||||
|
||||
namespace Zennysoft.Game.Ma;
|
||||
@@ -38,8 +37,6 @@ public partial class BossTypeA : Enemy, IHaveEngagePlayerBehavior, IHaveFollowBe
|
||||
|
||||
[Node] public Area3D PlayerDetector { get; set; } = default!;
|
||||
|
||||
[Node] public Label BossHP { get; set; } = default!;
|
||||
|
||||
private Vector3 _previousPosition = Vector3.Zero;
|
||||
|
||||
public void OnResolved()
|
||||
@@ -60,8 +57,6 @@ public partial class BossTypeA : Enemy, IHaveEngagePlayerBehavior, IHaveFollowBe
|
||||
_enemyLogic.Input(new EnemyLogic.Input.Move());
|
||||
_previousPosition = GlobalPosition;
|
||||
}
|
||||
|
||||
BossHP.Text = HealthComponent.CurrentHP.Value + "/" + HealthComponent.MaximumHP.Value;
|
||||
}
|
||||
|
||||
public void OnPhysicsProcess(double delta)
|
||||
@@ -79,9 +74,9 @@ public partial class BossTypeA : Enemy, IHaveEngagePlayerBehavior, IHaveFollowBe
|
||||
|
||||
protected void OnVelocityComputed(Vector3 safeVelocity)
|
||||
{
|
||||
Velocity = safeVelocity;
|
||||
Velocity = new Vector3(safeVelocity.X, 0, safeVelocity.Z);
|
||||
if (!Velocity.IsZeroApprox())
|
||||
LookAtTarget(safeVelocity);
|
||||
LookAtTarget(Velocity);
|
||||
MoveAndSlide();
|
||||
}
|
||||
|
||||
@@ -155,7 +150,7 @@ public partial class BossTypeA : Enemy, IHaveEngagePlayerBehavior, IHaveFollowBe
|
||||
|
||||
private float GetRotationAngle()
|
||||
{
|
||||
var target = new Vector3(_player.GlobalPosition.X, Position.Y, _player.GlobalPosition.Z);
|
||||
var target = new Vector3(_player.GlobalPosition.X, GlobalPosition.Y, _player.GlobalPosition.Z);
|
||||
_rotation.LookAt(target, Vector3.Up, true);
|
||||
_rotation.RotateY(Rotation.Y);
|
||||
return _rotation.Rotation.Y;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://br6dlxj36fw5i"]
|
||||
[gd_scene load_steps=2 format=3 uid="uid://bbc80e2421xlb"]
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_7056c"]
|
||||
|
||||
|
||||
@@ -34,6 +34,8 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
|
||||
|
||||
public IDefenseComponent DefenseComponent { get; private set; }
|
||||
|
||||
public IStatusEffectComponent StatusEffectComponent { get; private set; }
|
||||
|
||||
public virtual IEnemyModelView EnemyModelView { get; set; } = default!;
|
||||
|
||||
public Vector3 TargetPosition { get; private set; }
|
||||
@@ -69,6 +71,9 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
|
||||
[Node] private AudioStreamPlayer3D _dieSFX { get; set; } = default!;
|
||||
[Node] private AudioStreamPlayer3D _aggroSFX { get; set; } = default!;
|
||||
|
||||
private Timer _rustTimer;
|
||||
private Timer _rustDuration;
|
||||
|
||||
protected bool _activated = false;
|
||||
private Vector3 _previousPosition = Vector3.Zero;
|
||||
|
||||
@@ -86,8 +91,22 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
|
||||
HealthComponent.HealthReachedZero += Die;
|
||||
HealthComponent.DamageTaken += TakeHit;
|
||||
|
||||
_rustTimer = new Timer();
|
||||
_rustDuration = new Timer();
|
||||
|
||||
_rustTimer.WaitTime = 3;
|
||||
_rustDuration.WaitTime = 30;
|
||||
_rustTimer.Timeout += _rustTimer_Timeout;
|
||||
_rustDuration.Timeout += _rustDuration_Timeout;
|
||||
|
||||
AddChild(_rustTimer);
|
||||
AddChild(_rustDuration);
|
||||
|
||||
AttackComponent = new AttackComponent(InitialAttack);
|
||||
DefenseComponent = new DefenseComponent(InitialDefense);
|
||||
StatusEffectComponent = new StatusEffectComponent(30);
|
||||
|
||||
StatusEffectComponent.Rust.Changed += OnRusted;
|
||||
|
||||
EnemyBinding
|
||||
.Handle((in EnemyLogic.Output.Activate _) =>
|
||||
@@ -160,6 +179,8 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
|
||||
public virtual void Die()
|
||||
{
|
||||
SetPhysicsProcess(false);
|
||||
_rustDuration.Stop();
|
||||
_rustTimer.Stop();
|
||||
_enemyLogic.Input(new EnemyLogic.Input.Defeated());
|
||||
_player.ExperiencePointsComponent.Gain(ExpGiven);
|
||||
EnemyModelView.PlayDeathAnimation();
|
||||
@@ -180,8 +201,11 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
|
||||
{
|
||||
_morphSFX.Play();
|
||||
SetPhysicsProcess(false);
|
||||
_enemyLogic.Input(new EnemyLogic.Input.Defeated());
|
||||
Callable.From(QueueFree);
|
||||
_player.ExperiencePointsComponent.Gain(ExpGiven);
|
||||
EnemyModelView.PlayDeathAnimation();
|
||||
var tweener = CreateTween();
|
||||
tweener.TweenInterval(1.0f);
|
||||
tweener.TweenCallback(Callable.From(QueueFree));
|
||||
}
|
||||
|
||||
public IDungeonRoom GetCurrentRoom(ImmutableList<IDungeonRoom> roomList)
|
||||
@@ -212,7 +236,8 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
|
||||
var spawnPointsGodotCollection = new Godot.Collections.Array<Marker3D>(spawnPoints);
|
||||
var randomSpawnPoint = spawnPointsGodotCollection.PickRandom();
|
||||
|
||||
GlobalPosition = new Vector3(randomSpawnPoint.GlobalPosition.X, 0, randomSpawnPoint.GlobalPosition.Y);
|
||||
GlobalPosition = new Vector3(randomSpawnPoint.GlobalPosition.X, GlobalPosition.Y, randomSpawnPoint.GlobalPosition.Z);
|
||||
ResetPhysicsInterpolation();
|
||||
_previousPosition = GlobalPosition;
|
||||
|
||||
if (this is IHavePatrolBehavior patrolEnemy)
|
||||
@@ -240,4 +265,28 @@ public abstract partial class Enemy : CharacterBody3D, IEnemy, IProvide<IEnemyLo
|
||||
{
|
||||
_player.TakeDamage(new AttackData(AttackComponent.CurrentAttack.Value, ElementType.None));
|
||||
}
|
||||
|
||||
private void OnRusted(bool rustStatus)
|
||||
{
|
||||
if (rustStatus)
|
||||
{
|
||||
_rustTimer.Start();
|
||||
_rustDuration.Start();
|
||||
}
|
||||
else
|
||||
{
|
||||
_rustTimer.Stop();
|
||||
}
|
||||
}
|
||||
|
||||
private void _rustTimer_Timeout()
|
||||
{
|
||||
HealthComponent.Damage(3);
|
||||
TakeHit();
|
||||
}
|
||||
|
||||
private void _rustDuration_Timeout()
|
||||
{
|
||||
StatusEffectComponent.Rust.OnNext(false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,11 +21,13 @@ public abstract partial class Enemy2D : Enemy
|
||||
public void OnEnterTree()
|
||||
{
|
||||
LineOfSight.BodyEntered += LineOfSight_BodyEntered;
|
||||
_previousPosition = GlobalPosition;
|
||||
}
|
||||
|
||||
public override void _PhysicsProcess(double delta)
|
||||
{
|
||||
_enemyModelView.SetCurrentDirection(GlobalBasis, -_player.GlobalBasis.Z);
|
||||
_previousPosition = GlobalPosition;
|
||||
}
|
||||
|
||||
public override void _Process(double delta)
|
||||
@@ -33,11 +35,10 @@ public abstract partial class Enemy2D : Enemy
|
||||
if (_enemyLogic.Value is EnemyLogic.State.FollowPlayer || _enemyLogic.Value is EnemyLogic.State.Patrolling)
|
||||
{
|
||||
var velocity = (GlobalPosition - _previousPosition) / (float)delta;
|
||||
if (velocity.Length() < 0.3f)
|
||||
if (velocity.Length() < 0.15f)
|
||||
_enemyLogic.Input(new EnemyLogic.Input.Idle());
|
||||
else
|
||||
_enemyLogic.Input(new EnemyLogic.Input.Move());
|
||||
_previousPosition = GlobalPosition;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,12 +56,16 @@ public abstract partial class Enemy2D : Enemy
|
||||
|
||||
protected void OnVelocityComputed(Vector3 safeVelocity)
|
||||
{
|
||||
Velocity = safeVelocity;
|
||||
Velocity = new Vector3(safeVelocity.X, 0, safeVelocity.Z);
|
||||
LookAtTarget(safeVelocity);
|
||||
MoveAndSlide();
|
||||
}
|
||||
|
||||
protected void EngagePlayerBehavior_TakeAction() => PerformAction();
|
||||
protected void EngagePlayerBehavior_TakeAction()
|
||||
{
|
||||
if (_player.HealthComponent.CurrentHP.Value > 0)
|
||||
PerformAction();
|
||||
}
|
||||
|
||||
protected void EngagePlayerBehavior_AcquireTarget() => LookAt(new Vector3(_player.GlobalPosition.X, GlobalPosition.Y, _player.GlobalPosition.Z), Vector3.Up, true);
|
||||
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://dbvr8ewajja6a"]
|
||||
[gd_scene load_steps=4 format=3 uid="uid://dcj80fft8v6ww"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cp02ufnj6c7kg" path="res://src/enemy/EnemyDatabase.cs" id="1_ywy58"]
|
||||
[ext_resource type="PackedScene" uid="uid://b0gwivt7cw7nd" path="res://src/enemy/enemy_types/02. michael/Michael.tscn" id="2_tja3j"]
|
||||
[ext_resource type="PackedScene" uid="uid://bksq62muhk3h5" path="res://src/enemy/enemy_types/01. sproingy/Sproingy.tscn" id="3_cpupr"]
|
||||
[ext_resource type="PackedScene" uid="uid://xeuulxx1p702" path="res://src/enemy/enemy_types/02. michael/Michael.tscn" id="2_tja3j"]
|
||||
[ext_resource type="PackedScene" uid="uid://ckow4bnkohxsj" path="res://src/enemy/enemy_types/04. sara/Sara.tscn" id="3_cpupr"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_fevii"]
|
||||
metadata/__load_path__ = "res://src/enemy/EnemyDatabase.cs"
|
||||
|
||||
[node name="EnemyDatabase" type="Node"]
|
||||
script = ExtResource("1_ywy58")
|
||||
script = SubResource("Resource_fevii")
|
||||
EnemyList = Array[PackedScene]([ExtResource("2_tja3j"), ExtResource("3_cpupr")])
|
||||
SpawnRate = PackedFloat32Array(1, 1)
|
||||
|
||||
@@ -38,6 +38,9 @@ public abstract partial class EnemyModelView : Node3D, IEnemyModelView
|
||||
|
||||
public event EventHandler TeleportAnimationFinished;
|
||||
|
||||
[Export]
|
||||
public double ViewerSize { get; set; } = 1f;
|
||||
|
||||
[Export]
|
||||
public bool CanMove { get; set; } = false;
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
using Godot;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Zennysoft.Ma.Adapter.Entity;
|
||||
|
||||
namespace Zennysoft.Game.Ma;
|
||||
|
||||
@@ -48,6 +50,45 @@ public static class EnemyTypeToEnemyConverter
|
||||
}
|
||||
}
|
||||
|
||||
public static EnemyType Convert(IEnemy enemy)
|
||||
{
|
||||
if (enemy is Sproingy)
|
||||
return EnemyType.Sproingy;
|
||||
if (enemy is Michael)
|
||||
return EnemyType.Michael;
|
||||
if (enemy is FilthEater)
|
||||
return EnemyType.FilthEater;
|
||||
if (enemy is Sara)
|
||||
return EnemyType.Sara;
|
||||
if (enemy is Ballos)
|
||||
return EnemyType.Ballos;
|
||||
if (enemy is Chariot)
|
||||
return EnemyType.Chariot;
|
||||
if (enemy is Chinthe)
|
||||
return EnemyType.Chinthe;
|
||||
if (enemy is Ambassador ambassador)
|
||||
if (ambassador.Name == "Ambassador")
|
||||
return EnemyType.AmbassadorGreen;
|
||||
else if (ambassador.Name == "AmbassadorRed")
|
||||
return EnemyType.AmbassadorRed;
|
||||
else
|
||||
return EnemyType.AmbassadorSteel;
|
||||
if (enemy is AgniDemon)
|
||||
return EnemyType.AgniDemon;
|
||||
if (enemy is AqueousDemon)
|
||||
return EnemyType.AqueousDemon;
|
||||
if (enemy is EdenPillar)
|
||||
return EnemyType.EdenPillar;
|
||||
if (enemy is Palan)
|
||||
return EnemyType.Palan;
|
||||
if (enemy is ShieldOfHeaven)
|
||||
return EnemyType.ShieldOfHeaven;
|
||||
if (enemy is GoldSproingy)
|
||||
return EnemyType.GoldSproingy;
|
||||
|
||||
throw new NotImplementedException("Cannot duplicate this type of enemy.");
|
||||
}
|
||||
|
||||
private static Enemy InstantiateFromPath(string scenePath)
|
||||
{
|
||||
var enemyScene = GD.Load<PackedScene>(scenePath);
|
||||
|
||||
@@ -27,6 +27,8 @@ public interface IEnemyModelView : INode3D
|
||||
|
||||
public void PlayDeathAnimation();
|
||||
|
||||
public double ViewerSize { get; }
|
||||
|
||||
public AttackData AttackData { get; set; }
|
||||
|
||||
public event EventHandler HitPlayer;
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://p74f12fh5v0i"]
|
||||
[gd_scene load_steps=2 format=3 uid="uid://ddvhuhttr5q0m"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://vjb6sjktj6m0" path="res://src/enemy/PatrolComponent.cs" id="1_dhoym"]
|
||||
[sub_resource type="Resource" id="Resource_g8n53"]
|
||||
metadata/__load_path__ = "res://src/enemy/PatrolComponent.cs"
|
||||
|
||||
[node name="PatrolComponent" type="Node3D"]
|
||||
script = ExtResource("1_dhoym")
|
||||
script = SubResource("Resource_g8n53")
|
||||
|
||||
[node name="Navigation" type="Node3D" parent="."]
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=171 format=3 uid="uid://diaxvpmwgl65u"]
|
||||
[gd_scene load_steps=171 format=3 uid="uid://3ax3e5uce27d"]
|
||||
|
||||
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_53wuj"]
|
||||
animation = &"idle_back"
|
||||
|
||||
@@ -23,7 +23,7 @@ public partial class EngagePlayerBehavior : Node, IEngagePlayerBehavior
|
||||
{
|
||||
_actionTimer = new Timer();
|
||||
_acquireTargetTimer = new Timer() { WaitTime = _acquireTargetTime };
|
||||
_actionTimer.WaitTime = RandomizeTimer(_minimumAttackTime, _maximumAttackTime);
|
||||
_actionTimer.WaitTime = 0.8f;
|
||||
_actionTimer.Timeout += OnAttackTimeout;
|
||||
_acquireTargetTimer.Timeout += OnAcquireTargetTimeout;
|
||||
AddChild(_actionTimer);
|
||||
@@ -44,6 +44,7 @@ public partial class EngagePlayerBehavior : Node, IEngagePlayerBehavior
|
||||
|
||||
private void OnAttackTimeout()
|
||||
{
|
||||
_actionTimer.Stop();
|
||||
_actionTimer.WaitTime = RandomizeTimer(_minimumAttackTime, _maximumAttackTime);
|
||||
_actionTimer.Start();
|
||||
EmitSignal(SignalName.TakeAction);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://8bcme8ao4axa"]
|
||||
[gd_scene load_steps=2 format=3 uid="uid://cmhem5xknjsvc"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bbe5nt3kpvk0f" path="res://src/enemy/behaviors/EngagePlayerBehavior.cs" id="1_7r6b3"]
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://g4cupevu280j"]
|
||||
[gd_scene load_steps=2 format=3 uid="uid://dld534cmm5twd"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://drur3hx4p4du4" path="res://src/enemy/behaviors/FleeBehavior.cs" id="1_cty3c"]
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://mqj4jju3870v"]
|
||||
[gd_scene load_steps=2 format=3 uid="uid://cve5oouhowtff"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://chfhmralfmwva" path="res://src/enemy/behaviors/FollowBehavior.cs" id="1_3rkk2"]
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
using Chickensoft.Introspection;
|
||||
using Godot;
|
||||
using Godot.Collections;
|
||||
using System.Linq;
|
||||
using Zennysoft.Game.Abstractions.Entity;
|
||||
|
||||
namespace Zennysoft.Game.Ma;
|
||||
@@ -22,7 +23,6 @@ public partial class PatrolBehavior : Node3D, IBehavior
|
||||
private Timer _patrolTimer { get; set; } = default!;
|
||||
private NavigationAgent3D _navigationAgent;
|
||||
|
||||
private int _recursiveCounter = 0;
|
||||
private Vector3 _homePosition;
|
||||
|
||||
public Vector3 HomePosition
|
||||
@@ -82,16 +82,9 @@ public partial class PatrolBehavior : Node3D, IBehavior
|
||||
rng.Randomize();
|
||||
var randomPointX = rng.RandfRange(-_patrolRange, _patrolRange);
|
||||
var randomPointZ = rng.RandfRange(-_patrolRange, _patrolRange);
|
||||
_navigationAgent.TargetPosition = HomePosition + new Vector3(randomPointX, 0, randomPointZ);
|
||||
if (!_navigationAgent.IsTargetReachable())
|
||||
{
|
||||
_recursiveCounter++;
|
||||
if (_recursiveCounter <= 100)
|
||||
SetPatrolTarget();
|
||||
else
|
||||
_navigationAgent.TargetPosition = HomePosition;
|
||||
}
|
||||
_recursiveCounter = 0;
|
||||
var patrolPoint = HomePosition + new Vector3(randomPointX, 0, randomPointZ);
|
||||
var rid = NavigationServer3D.GetMaps().Single();
|
||||
_navigationAgent.TargetPosition = NavigationServer3D.MapGetClosestPoint(rid, patrolPoint);
|
||||
}
|
||||
|
||||
private void PatrolTimer_Timeout() => SetPatrolTarget();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://2nkvacxsd46b"]
|
||||
[gd_scene load_steps=2 format=3 uid="uid://cn4fv2gv6raql"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://hpb1f5r17k5y" path="res://src/enemy/behaviors/PatrolBehavior.cs" id="1_lobva"]
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
[gd_scene load_steps=16 format=3 uid="uid://bs56ccgosmu47"]
|
||||
[gd_scene load_steps=16 format=3 uid="uid://crsy7gygjy317"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cq6b4ma3sy1en" path="res://src/enemy/enemy_types/01. sproingy/Sproingy.cs" id="1_xsluo"]
|
||||
[ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_drfkj"]
|
||||
[ext_resource type="PackedScene" uid="uid://bimjnsu52y3xi" path="res://src/enemy/enemy_types/01. sproingy/SproingyModelView.tscn" id="4_o3b7p"]
|
||||
[ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="5_drfkj"]
|
||||
[ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="6_moun4"]
|
||||
[ext_resource type="PackedScene" uid="uid://cn4fv2gv6raql" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_drfkj"]
|
||||
[ext_resource type="PackedScene" uid="uid://bjcqrhtifpcvr" path="res://src/enemy/enemy_types/01. sproingy/SproingyModelView.tscn" id="4_o3b7p"]
|
||||
[ext_resource type="PackedScene" uid="uid://cmhem5xknjsvc" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="5_drfkj"]
|
||||
[ext_resource type="PackedScene" uid="uid://cve5oouhowtff" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="6_moun4"]
|
||||
[ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="6_ungov"]
|
||||
[ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="7_ungov"]
|
||||
[ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="8_agkuf"]
|
||||
@@ -32,7 +32,7 @@ top_radius = 0.0
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_drfkj"]
|
||||
radius = 1.0
|
||||
|
||||
[node name="Sproingy" type="CharacterBody3D"]
|
||||
[node name="Sproingy" type="CharacterBody3D" groups=["enemy"]]
|
||||
process_mode = 1
|
||||
collision_layer = 10
|
||||
axis_lock_linear_y = true
|
||||
@@ -84,7 +84,6 @@ collision_mask = 34
|
||||
shape = SubResource("CylinderShape3D_drfkj")
|
||||
|
||||
[node name="Visual" type="Node3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.975554, 0)
|
||||
|
||||
[node name="EnemyModelView" parent="Visual" instance=ExtResource("4_o3b7p")]
|
||||
unique_name_in_owner = true
|
||||
@@ -101,14 +100,13 @@ _followSpeed = 150.0
|
||||
|
||||
[node name="EngagePlayerBehavior" parent="Components" instance=ExtResource("5_drfkj")]
|
||||
unique_name_in_owner = true
|
||||
_minimumAttackTime = 1.0
|
||||
_maximumAttackTime = 3.0
|
||||
_maximumAttackTime = 4.0
|
||||
_acquireTargetTime = 2.0
|
||||
|
||||
[node name="NavigationAgent" type="NavigationAgent3D" parent="Components"]
|
||||
unique_name_in_owner = true
|
||||
avoidance_enabled = true
|
||||
radius = 1.0
|
||||
radius = 3.0
|
||||
|
||||
[node name="SFX" type="Node3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.0617, 0)
|
||||
|
||||
@@ -6,4 +6,11 @@
|
||||
script = ExtResource("1_1ncna")
|
||||
Name = "Sproingy"
|
||||
Description = "A guy who likes to have fun."
|
||||
MaximumHP = ""
|
||||
ATK = ""
|
||||
DEF = ""
|
||||
Affinity = ""
|
||||
Weakness = ""
|
||||
Drop1 = ""
|
||||
Drop2 = ""
|
||||
metadata/_custom_type_script = ExtResource("1_1ncna")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=80 format=3 uid="uid://bimjnsu52y3xi"]
|
||||
[gd_scene load_steps=80 format=3 uid="uid://bjcqrhtifpcvr"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_oh25a"]
|
||||
[ext_resource type="Texture2D" uid="uid://dd0ia6isdqg61" path="res://src/enemy/enemy_types/01. sproingy/animations/ATTACK/Layer 1.png" id="1_pbx41"]
|
||||
@@ -666,7 +666,7 @@ EnemyLoreInfo = SubResource("Resource_ivy74")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 1.1044, 0)
|
||||
transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 2.05501, 0)
|
||||
pixel_size = 0.001
|
||||
billboard = 2
|
||||
shaded = true
|
||||
@@ -697,7 +697,7 @@ animation = &"idle_left_walk"
|
||||
|
||||
[node name="Hitbox" type="Area3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.152949, 1.1044, 0)
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.152949, 2.05501, 0)
|
||||
collision_layer = 64
|
||||
collision_mask = 64
|
||||
|
||||
@@ -722,12 +722,12 @@ anim_player = NodePath("../AnimationPlayer")
|
||||
|
||||
[node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.1044, 0)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.05501, 0)
|
||||
autoplay = true
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="Shadow" type="Sprite3D" parent="."]
|
||||
transform = Transform3D(0.115, 0, 0, 0, -5.02681e-09, 0.115, 0, -0.115, -5.02681e-09, -0.00018537, -0.942894, 0.0453106)
|
||||
transform = Transform3D(0.115, 0, 0, 0, -5.02681e-09, 0.115, 0, -0.115, -5.02681e-09, -0.00018537, 0.00771421, 0.0453106)
|
||||
transparency = 0.1
|
||||
cast_shadow = 0
|
||||
texture_filter = 0
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
[gd_scene load_steps=14 format=3 uid="uid://b0gwivt7cw7nd"]
|
||||
[gd_scene load_steps=14 format=3 uid="uid://xeuulxx1p702"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://c4pdledq3bll3" path="res://src/enemy/enemy_types/02. michael/Michael.cs" id="1_lb5oy"]
|
||||
[ext_resource type="PackedScene" uid="uid://bjg8wyvp8q6oc" path="res://src/enemy/enemy_types/02. michael/MichaelModelView.tscn" id="3_wrps7"]
|
||||
[ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="5_fkx5j"]
|
||||
[ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="6_bun8r"]
|
||||
[ext_resource type="PackedScene" uid="uid://uqle8gaeajg6" path="res://src/enemy/enemy_types/02. michael/MichaelModelView.tscn" id="3_wrps7"]
|
||||
[ext_resource type="PackedScene" uid="uid://cn4fv2gv6raql" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="5_fkx5j"]
|
||||
[ext_resource type="PackedScene" uid="uid://cve5oouhowtff" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="6_bun8r"]
|
||||
[ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="6_x8mrp"]
|
||||
[ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="7_kwkfv"]
|
||||
[ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="7_x8mrp"]
|
||||
[ext_resource type="PackedScene" uid="uid://cmhem5xknjsvc" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="7_x8mrp"]
|
||||
[ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="8_upf7y"]
|
||||
[ext_resource type="AudioStream" uid="uid://bn6ns3jxkw03b" path="res://src/audio/sfx/ENEMY_SPROING_death.ogg" id="9_fm627"]
|
||||
|
||||
@@ -15,15 +15,16 @@ height = 5.0
|
||||
radius = 1.0
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_0h5s2"]
|
||||
radius = 0.34933
|
||||
height = 2.66932
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_eek1b"]
|
||||
radius = 1.0
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_wrps7"]
|
||||
radius = 1.0
|
||||
radius = 0.552847
|
||||
|
||||
[node name="Michael" type="CharacterBody3D"]
|
||||
[node name="Michael" type="CharacterBody3D" groups=["enemy"]]
|
||||
process_mode = 1
|
||||
collision_layer = 10
|
||||
collision_mask = 11
|
||||
@@ -32,6 +33,13 @@ axis_lock_angular_x = true
|
||||
axis_lock_angular_z = true
|
||||
motion_mode = 1
|
||||
script = ExtResource("1_lb5oy")
|
||||
AeolicResistance = -20.0
|
||||
HydricResistance = -20.0
|
||||
IgenousResistance = -20.0
|
||||
FerrumResistance = -20.0
|
||||
TelluricResistance = -20.0
|
||||
HolyResistance = -20.0
|
||||
CurseResistance = -20.0
|
||||
|
||||
[node name="LineOfSight" type="Area3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
@@ -57,7 +65,7 @@ shape = SubResource("CapsuleShape3D_0h5s2")
|
||||
|
||||
[node name="EnemyModelView" parent="." instance=ExtResource("3_wrps7")]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0799522, 0.805832, 0)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.08, 0, 0)
|
||||
|
||||
[node name="PlayerDetector" type="Area3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
@@ -82,6 +90,9 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.71715, 0)
|
||||
|
||||
[node name="PatrolBehavior" parent="Components" instance=ExtResource("5_fkx5j")]
|
||||
unique_name_in_owner = true
|
||||
_patrolSpeed = 60.0
|
||||
_patrolRange = 15.0
|
||||
_patrolTime = 20.0
|
||||
|
||||
[node name="FollowBehavior" parent="Components" instance=ExtResource("6_bun8r")]
|
||||
unique_name_in_owner = true
|
||||
@@ -96,7 +107,7 @@ _acquireTargetTime = 2.0
|
||||
[node name="NavigationAgent" type="NavigationAgent3D" parent="Components"]
|
||||
unique_name_in_owner = true
|
||||
avoidance_enabled = true
|
||||
radius = 1.0
|
||||
radius = 3.0
|
||||
|
||||
[node name="HitSounds" type="Node3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.71715, 0)
|
||||
|
||||
@@ -1,9 +1,16 @@
|
||||
[gd_resource type="Resource" script_class="EnemyLoreInfo" load_steps=2 format=3 uid="uid://6d7ivtna8dqb"]
|
||||
|
||||
[ext_resource type="Script" path="res://src/enemy/EnemyLoreInfo.cs" id="1_xsclu"]
|
||||
[ext_resource type="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="1_xsclu"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_xsclu")
|
||||
Name = "Michael"
|
||||
Description = "This one doesn't like fun at all."
|
||||
MaximumHP = ""
|
||||
ATK = ""
|
||||
DEF = ""
|
||||
Affinity = ""
|
||||
Weakness = ""
|
||||
Drop1 = ""
|
||||
Drop2 = ""
|
||||
metadata/_custom_type_script = ExtResource("1_xsclu")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=142 format=3 uid="uid://bjg8wyvp8q6oc"]
|
||||
[gd_scene load_steps=142 format=3 uid="uid://uqle8gaeajg6"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_o4cc2"]
|
||||
[ext_resource type="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="2_3eot4"]
|
||||
@@ -71,7 +71,7 @@
|
||||
[ext_resource type="Texture2D" uid="uid://vxphbifafq0q" path="res://src/enemy/enemy_types/02. michael/animations/IDLE_WALK/LEFT SIDE/Michael_IdleWalk_Left (21).png" id="68_msiau"]
|
||||
[ext_resource type="Texture2D" uid="uid://7r30bjydumon" path="res://src/enemy/enemy_types/02. michael/animations/IDLE_WALK/LEFT SIDE/Michael_IdleWalk_Left (22).png" id="69_lec8c"]
|
||||
[ext_resource type="Texture2D" uid="uid://djspx2smexhme" path="res://src/enemy/enemy_types/02. michael/animations/IDLE_WALK/LEFT SIDE/Michael_IdleWalk_Left (23).png" id="70_f0jo7"]
|
||||
[ext_resource type="PackedScene" uid="uid://dpoonda2dwwic" path="res://src/enemy/BasicEnemyAnimationTree.tscn" id="73_gby04"]
|
||||
[ext_resource type="PackedScene" uid="uid://cygwsc1gebeut" path="res://src/enemy/BasicEnemyAnimationTree.tscn" id="73_gby04"]
|
||||
[ext_resource type="AnimationNodeStateMachine" uid="uid://cbq8xog50cjjy" path="res://src/enemy/animation_state_machines/PrimaryAttackStateMachine.tres" id="74_fxhv6"]
|
||||
[ext_resource type="Texture2D" uid="uid://duygq1qfer5oa" path="res://src/vfx/Enemy/michael_attack.png" id="74_mip6u"]
|
||||
[ext_resource type="AnimationNodeStateMachine" uid="uid://co7lshemjrro8" path="res://src/enemy/animation_state_machines/IdleStateMachine.tres" id="74_pxi1p"]
|
||||
@@ -1187,7 +1187,7 @@ EnemyLoreInfo = SubResource("Resource_gby04")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.25389, 0)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.98924, 0)
|
||||
billboard = 2
|
||||
shaded = true
|
||||
alpha_cut = 1
|
||||
@@ -1245,19 +1245,19 @@ libraries = {
|
||||
}
|
||||
|
||||
[node name="Michael Attack VFX" type="AnimatedSprite3D" parent="."]
|
||||
transform = Transform3D(0.72, 0, 0, 0, 0.72, 0, 0, 0, 0.72, -0.129818, 1.61521, 0.532815)
|
||||
transform = Transform3D(0.72, 0, 0, 0, 0.72, 0, 0, 0, 0.72, -0.129818, 2.35056, 0.532815)
|
||||
modulate = Color(0.977, 0.31, 1, 0.741176)
|
||||
billboard = 2
|
||||
sprite_frames = SubResource("SpriteFrames_suy1t")
|
||||
|
||||
[node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.34076, 0)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.07611, 0)
|
||||
autoplay = true
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="Shadow" type="Sprite3D" parent="."]
|
||||
transform = Transform3D(0.38, 0, 0, 0, -1.66103e-08, 0.38, 0, -0.38, -1.66103e-08, 0.00393164, -0.728023, 0.0077811)
|
||||
transform = Transform3D(0.38, 0, 0, 0, -1.66103e-08, 0.38, 0, -0.38, -1.66103e-08, 0.00393164, 0.0073306, 0.0077811)
|
||||
transparency = 0.1
|
||||
cast_shadow = 0
|
||||
modulate = Color(1, 1, 1, 0.591)
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
using Chickensoft.AutoInject;
|
||||
using Chickensoft.Introspection;
|
||||
using Godot;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Zennysoft.Game.Ma;
|
||||
|
||||
@@ -45,10 +42,11 @@ public partial class FilthEater : Enemy2D, IHavePatrolBehavior, IHaveEngagePlaye
|
||||
|
||||
public override void PerformAction()
|
||||
{
|
||||
var rng = new RandomNumberGenerator();
|
||||
var options = new List<Action>() { EnemyModelView.PlayPrimaryAttackAnimation, EnemyModelView.PlaySecondaryAttackAnimation };
|
||||
var selection = rng.RandWeighted([PrimaryAttackChance, SecondaryAttackChance]);
|
||||
options[(int)selection].Invoke();
|
||||
var enemyPosition = new Vector3(GlobalPosition.X, _player.GlobalPosition.Y, GlobalPosition.Z);
|
||||
if (enemyPosition.DistanceTo(_player.GlobalPosition) > 3)
|
||||
EnemyModelView.PlaySecondaryAttackAnimation();
|
||||
else
|
||||
EnemyModelView.PlayPrimaryAttackAnimation();
|
||||
}
|
||||
|
||||
public override void _ExitTree()
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
[gd_scene load_steps=16 format=3 uid="uid://cvk007twac22c"]
|
||||
[gd_scene load_steps=16 format=3 uid="uid://bl426uws0i86l"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cohal8w5ceneg" path="res://src/enemy/enemy_types/03. filth_eater/FilthEater.cs" id="1_p438s"]
|
||||
[ext_resource type="PackedScene" uid="uid://bup8c4x1na3aw" path="res://src/enemy/enemy_types/03. filth_eater/FilthEaterModelView.tscn" id="3_rrwed"]
|
||||
[ext_resource type="PackedScene" uid="uid://b6sa6ntu4rbrm" path="res://src/enemy/enemy_types/03. filth_eater/FilthEaterModelView.tscn" id="3_rrwed"]
|
||||
[ext_resource type="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="4_5eid5"]
|
||||
[ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="5_pvjvo"]
|
||||
[ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="6_fccr3"]
|
||||
[ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="7_8l567"]
|
||||
[ext_resource type="PackedScene" uid="uid://cn4fv2gv6raql" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="5_pvjvo"]
|
||||
[ext_resource type="PackedScene" uid="uid://cve5oouhowtff" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="6_fccr3"]
|
||||
[ext_resource type="PackedScene" uid="uid://cmhem5xknjsvc" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="7_8l567"]
|
||||
[ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="7_qbmfg"]
|
||||
[ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="8_m7220"]
|
||||
[ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="9_g602r"]
|
||||
@@ -16,10 +16,11 @@ height = 5.0
|
||||
radius = 1.0
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
|
||||
radius = 1.0
|
||||
radius = 2.54294
|
||||
height = 5.08589
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_0y048"]
|
||||
radius = 1.0
|
||||
radius = 2.30121
|
||||
|
||||
[sub_resource type="Resource" id="Resource_fv5vf"]
|
||||
script = ExtResource("4_5eid5")
|
||||
@@ -35,10 +36,10 @@ Drop2 = ""
|
||||
metadata/_custom_type_script = ExtResource("4_5eid5")
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_qbmfg"]
|
||||
height = 1.5
|
||||
radius = 2.0
|
||||
height = 5.81738
|
||||
radius = 3.91016
|
||||
|
||||
[node name="FilthEater" type="CharacterBody3D"]
|
||||
[node name="FilthEater" type="CharacterBody3D" groups=["enemy"]]
|
||||
process_mode = 1
|
||||
collision_layer = 10
|
||||
collision_mask = 11
|
||||
@@ -48,7 +49,7 @@ script = ExtResource("1_p438s")
|
||||
|
||||
[node name="LineOfSight" type="Area3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.56859, 0)
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 2.25757, 0)
|
||||
collision_layer = 2
|
||||
collision_mask = 2
|
||||
|
||||
@@ -58,17 +59,17 @@ shape = SubResource("CylinderShape3D_jbgmx")
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.56859, 0)
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 2.25757, 0)
|
||||
shape = SubResource("CapsuleShape3D_cwfph")
|
||||
|
||||
[node name="Raycast" type="RayCast3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.56859, 0)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.31086, 0)
|
||||
target_position = Vector3(0, 0, -5)
|
||||
collision_mask = 3
|
||||
|
||||
[node name="Collision" type="Area3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.56859, 0)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.25757, 0)
|
||||
collision_layer = 2048
|
||||
collision_mask = 0
|
||||
|
||||
@@ -78,21 +79,21 @@ shape = SubResource("SphereShape3D_0y048")
|
||||
|
||||
[node name="EnemyModelView" parent="." instance=ExtResource("3_rrwed")]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.06859, 0)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.114099, 0)
|
||||
EnemyLoreInfo = SubResource("Resource_fv5vf")
|
||||
|
||||
[node name="PlayerDetector" type="Area3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.56859, 0)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.25757, 0)
|
||||
collision_layer = 0
|
||||
collision_mask = 34
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerDetector"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.179932, 0)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.2771, 0)
|
||||
shape = SubResource("CylinderShape3D_qbmfg")
|
||||
|
||||
[node name="Components" type="Node3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.56859, 0)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.25757, 0)
|
||||
|
||||
[node name="PatrolBehavior" parent="Components" instance=ExtResource("5_pvjvo")]
|
||||
unique_name_in_owner = true
|
||||
@@ -108,10 +109,11 @@ _acquireTargetTime = 2.0
|
||||
[node name="NavigationAgent" type="NavigationAgent3D" parent="Components"]
|
||||
unique_name_in_owner = true
|
||||
avoidance_enabled = true
|
||||
radius = 1.0
|
||||
height = 2.0
|
||||
radius = 3.0
|
||||
|
||||
[node name="HitSounds" type="Node3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.56859, 0)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.25757, 0)
|
||||
|
||||
[node name="AbsorbSFX" type="AudioStreamPlayer3D" parent="HitSounds"]
|
||||
unique_name_in_owner = true
|
||||
|
||||
@@ -6,4 +6,11 @@
|
||||
script = ExtResource("1_hdamr")
|
||||
Name = "Filth Eater"
|
||||
Description = "Don't like this one"
|
||||
MaximumHP = ""
|
||||
ATK = ""
|
||||
DEF = ""
|
||||
Affinity = ""
|
||||
Weakness = ""
|
||||
Drop1 = ""
|
||||
Drop2 = ""
|
||||
metadata/_custom_type_script = ExtResource("1_hdamr")
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,843 @@
|
||||
[gd_scene load_steps=119 format=3 uid="uid://cnhoya51br05n"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://bbvi33wy7w7d5" path="res://src/system/EnemyProjectile.cs" id="1_lfvya"]
|
||||
[ext_resource type="Script" uid="uid://ctshiyffvt4y5" path="res://src/system/AttackDataResource.cs" id="2_6m87k"]
|
||||
[ext_resource type="Texture2D" uid="uid://dvjqokin1o1ic" path="res://src/vfx/Enemy/green_orbs.png" id="3_uopp7"]
|
||||
[ext_resource type="AudioStream" uid="uid://c0jveij17p14k" path="res://src/audio/sfx/ENEMY_EDEN_PILLAR_PROJECTILETRAVEL.ogg" id="4_n84oq"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_ka3x7"]
|
||||
script = ExtResource("2_6m87k")
|
||||
Damage = 10
|
||||
ElementType = 1
|
||||
SpecialEffectType = 0
|
||||
metadata/_custom_type_script = "uid://ctshiyffvt4y5"
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_fwra5"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(6656, 0, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_nmlvd"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(7168, 0, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_4i1f6"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(7680, 0, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_g2tr6"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(8192, 0, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_v28id"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(8704, 0, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_sab8s"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(9216, 0, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_u7dbd"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(9728, 0, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_4g55l"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(10240, 0, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ef44f"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(10752, 0, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_aqbh5"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(11264, 0, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_eyym5"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(11776, 0, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_m2eau"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(12288, 0, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_gmksg"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(12800, 0, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_jacuc"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(13312, 0, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_5ligs"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(13824, 0, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_fsvo7"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(14336, 0, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_6meg3"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(14848, 0, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_kj2al"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(15360, 0, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_erggy"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(15872, 0, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_oko1t"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(0, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ngo1a"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(512, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_d50mx"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(1024, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_pdnto"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(1536, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ppjtg"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(2048, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_4r8qo"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(2560, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_w65xu"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(3072, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_3v0vv"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(3584, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_nxbom"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(4096, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_53p68"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(4608, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_jlpox"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(5120, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_uqsli"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(5632, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_wg32o"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(6144, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_b016l"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(6656, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ntr7w"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(7168, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_5rarj"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(7680, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_0jdgy"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(8192, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_6bj2s"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(8704, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_pjf7m"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(9216, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_2uv64"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(9728, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_vw551"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(10240, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_kjw5c"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(10752, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_qxstr"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(11264, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_2dppr"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(11776, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_awr7x"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(12288, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_1hgp1"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(12800, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_r0tmy"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(13312, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_eptep"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(13824, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_c7ped"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(14336, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_hen63"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(14848, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_knyyh"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(15360, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_v6123"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(15872, 512, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_f5sm0"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(0, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_xau62"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(512, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_pxsp5"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(1024, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_n4qhf"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(1536, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ngbkn"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(2048, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_p60oa"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(2560, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_xxtor"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(3072, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_sd3ar"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(3584, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_760ua"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(4096, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ej064"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(4608, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_omwgy"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(5120, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_yhxse"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(5632, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_neq7o"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(6144, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_e0lhk"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(6656, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_15mir"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(7168, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_cxq3x"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(7680, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ajyjc"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(8192, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_i2tjp"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(8704, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_w73fq"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(9216, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_c823a"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(9728, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_wje2w"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(10240, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_bgmkr"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(10752, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_pcpin"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(11264, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_siqu3"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(11776, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_w57vc"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(12288, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_bj2gd"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(12800, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_mvlj8"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(13312, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_vbqgu"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(13824, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_w6bd8"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(14336, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_xaiwn"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(14848, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_hlqf2"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(15360, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_djgeg"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(15872, 1024, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_0vyr1"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(0, 1536, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_wxeaf"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(512, 1536, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_gstdc"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(1024, 1536, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_2t3th"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(1536, 1536, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_5pprm"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(2048, 1536, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_6g7pw"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(2560, 1536, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ew882"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(3072, 1536, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_wa7kq"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(3584, 1536, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_por7r"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(4096, 1536, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_4imy8"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(4608, 1536, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_h0jgt"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(5120, 1536, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_4onds"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(5632, 1536, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_7epd5"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(6144, 1536, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_whtc5"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(6656, 1536, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_8iuha"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(7168, 1536, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_u27ji"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(7680, 1536, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_o6fjn"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(8192, 1536, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_sb1rd"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(8704, 1536, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_jwx81"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(9216, 1536, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_w12jc"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(9728, 1536, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_1wl6e"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(10240, 1536, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_0cf10"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(10752, 1536, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_bvqx0"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(11264, 1536, 512, 512)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_pfkh6"]
|
||||
atlas = ExtResource("3_uopp7")
|
||||
region = Rect2(11776, 1536, 512, 512)
|
||||
|
||||
[sub_resource type="SpriteFrames" id="SpriteFrames_brsyt"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_fwra5")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_nmlvd")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_4i1f6")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_g2tr6")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_v28id")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_sab8s")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_u7dbd")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_4g55l")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_ef44f")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_aqbh5")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_eyym5")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_m2eau")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_gmksg")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_jacuc")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_5ligs")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_fsvo7")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_6meg3")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_kj2al")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_erggy")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_oko1t")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_ngo1a")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_d50mx")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_pdnto")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_ppjtg")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_4r8qo")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_w65xu")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_3v0vv")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_nxbom")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_53p68")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_jlpox")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_uqsli")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_wg32o")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_b016l")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_ntr7w")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_5rarj")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_0jdgy")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_6bj2s")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_pjf7m")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_2uv64")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_vw551")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_kjw5c")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_qxstr")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_2dppr")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_awr7x")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_1hgp1")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_r0tmy")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_eptep")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_c7ped")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_hen63")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_knyyh")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_v6123")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_f5sm0")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_xau62")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_pxsp5")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_n4qhf")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_ngbkn")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_p60oa")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_xxtor")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_sd3ar")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_760ua")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_ej064")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_omwgy")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_yhxse")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_neq7o")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_e0lhk")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_15mir")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_cxq3x")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_ajyjc")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_i2tjp")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_w73fq")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_c823a")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_wje2w")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_bgmkr")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_pcpin")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_siqu3")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_w57vc")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_bj2gd")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_mvlj8")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_vbqgu")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_w6bd8")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_xaiwn")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_hlqf2")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_djgeg")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_0vyr1")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_wxeaf")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_gstdc")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_2t3th")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_5pprm")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_6g7pw")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_ew882")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_wa7kq")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_por7r")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_4imy8")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_h0jgt")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_4onds")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_7epd5")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_whtc5")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_8iuha")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_u27ji")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_o6fjn")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_sb1rd")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_jwx81")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_w12jc")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_1wl6e")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_0cf10")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_bvqx0")
|
||||
}, {
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_pfkh6")
|
||||
}],
|
||||
"loop": true,
|
||||
"name": &"default",
|
||||
"speed": 24.0
|
||||
}]
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_kct8n"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_xrn7e"]
|
||||
resource_name = "fire"
|
||||
tracks/0/type = "audio"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("../AudioStreamPlayer3D")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"clips": [{
|
||||
"end_offset": 0.0,
|
||||
"start_offset": 0.0,
|
||||
"stream": ExtResource("4_n84oq")
|
||||
}],
|
||||
"times": PackedFloat32Array(0.0334333)
|
||||
}
|
||||
tracks/0/use_blend = true
|
||||
|
||||
[sub_resource type="Animation" id="Animation_8qeb2"]
|
||||
length = 0.001
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_q8n6h"]
|
||||
_data = {
|
||||
&"Fire": SubResource("Animation_xrn7e"),
|
||||
&"RESET": SubResource("Animation_8qeb2")
|
||||
}
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_ka3x7"]
|
||||
|
||||
[node name="FilthEaterProjectile" type="RigidBody3D"]
|
||||
collision_layer = 0
|
||||
gravity_scale = 0.0
|
||||
contact_monitor = true
|
||||
max_contacts_reported = 10
|
||||
script = ExtResource("1_lfvya")
|
||||
AttackData = SubResource("Resource_ka3x7")
|
||||
|
||||
[node name="Bullet" type="Node3D" parent="."]
|
||||
|
||||
[node name="AnimatedSprite3D" type="AnimatedSprite3D" parent="Bullet"]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(0.8, 0, 0, 0, 0.8, 0, 0, 0, 0.8, 0, -1.01, 0)
|
||||
offset = Vector2(0, 150)
|
||||
billboard = 1
|
||||
texture_filter = 0
|
||||
render_priority = 100
|
||||
sprite_frames = SubResource("SpriteFrames_brsyt")
|
||||
autoplay = "default"
|
||||
frame_progress = 0.259173
|
||||
|
||||
[node name="Area3D" type="Area3D" parent="Bullet"]
|
||||
unique_name_in_owner = true
|
||||
collision_layer = 0
|
||||
collision_mask = 64
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Bullet/Area3D"]
|
||||
shape = SubResource("SphereShape3D_kct8n")
|
||||
|
||||
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="Bullet"]
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="Bullet"]
|
||||
unique_name_in_owner = true
|
||||
root_node = NodePath("../AnimatedSprite3D")
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_q8n6h")
|
||||
}
|
||||
autoplay = "Fire"
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
shape = SubResource("SphereShape3D_ka3x7")
|
||||
@@ -1,10 +1,10 @@
|
||||
[gd_scene load_steps=15 format=3 uid="uid://bksq62muhk3h5"]
|
||||
[gd_scene load_steps=15 format=3 uid="uid://ckow4bnkohxsj"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://jjulhqd5g3bd" path="res://src/enemy/enemy_types/04. sara/Sara.cs" id="1_3ejdn"]
|
||||
[ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_8ymq6"]
|
||||
[ext_resource type="PackedScene" uid="uid://bli0t0d6ommvi" path="res://src/enemy/enemy_types/04. sara/SaraModelView.tscn" id="4_82s0m"]
|
||||
[ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="5_lxgpb"]
|
||||
[ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="6_ddchx"]
|
||||
[ext_resource type="PackedScene" uid="uid://cn4fv2gv6raql" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_8ymq6"]
|
||||
[ext_resource type="PackedScene" uid="uid://g84hcmgo3gtl" path="res://src/enemy/enemy_types/04. sara/SaraModelView.tscn" id="4_82s0m"]
|
||||
[ext_resource type="PackedScene" uid="uid://cve5oouhowtff" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="5_lxgpb"]
|
||||
[ext_resource type="PackedScene" uid="uid://cmhem5xknjsvc" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="6_ddchx"]
|
||||
[ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="6_lxgpb"]
|
||||
[ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="7_ddchx"]
|
||||
[ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="8_746fv"]
|
||||
@@ -25,7 +25,7 @@ radius = 1.0
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_746fv"]
|
||||
radius = 1.25
|
||||
|
||||
[node name="Sara" type="CharacterBody3D"]
|
||||
[node name="Sara" type="CharacterBody3D" groups=["enemy"]]
|
||||
process_mode = 1
|
||||
collision_layer = 10
|
||||
collision_mask = 3
|
||||
@@ -70,6 +70,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.95329, 0)
|
||||
|
||||
[node name="EnemyModelView" parent="Visual" instance=ExtResource("4_82s0m")]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0108221, -0.896212, 0)
|
||||
|
||||
[node name="PlayerDetector" type="Area3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
|
||||
@@ -6,4 +6,11 @@
|
||||
script = ExtResource("1_220d4")
|
||||
Name = ""
|
||||
Description = ""
|
||||
MaximumHP = ""
|
||||
ATK = ""
|
||||
DEF = ""
|
||||
Affinity = ""
|
||||
Weakness = ""
|
||||
Drop1 = ""
|
||||
Drop2 = ""
|
||||
metadata/_custom_type_script = "uid://dlsgyx4i1jmp3"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=232 format=3 uid="uid://bli0t0d6ommvi"]
|
||||
[gd_scene load_steps=232 format=3 uid="uid://g84hcmgo3gtl"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_oh25a"]
|
||||
[ext_resource type="Texture2D" uid="uid://nps7rrvkgews" path="res://src/enemy/enemy_types/04. sara/animations/IDLE+MOVE/FRONT/0001.png" id="2_8j76g"]
|
||||
@@ -162,7 +162,7 @@
|
||||
[ext_resource type="Texture2D" uid="uid://n2c8kfwt6ve3" path="res://src/enemy/enemy_types/04. sara/animations/ATTACK2/SIDE R/0019.png" id="160_r8ggx"]
|
||||
[ext_resource type="Texture2D" uid="uid://dykb4rwua8iyw" path="res://src/enemy/enemy_types/04. sara/animations/ATTACK2/SIDE R/0022.png" id="161_xafpd"]
|
||||
[ext_resource type="AudioStream" uid="uid://b4bseex34nu6c" path="res://src/audio/sfx/ENEMY_APSARA_STRIKE.ogg" id="162_veo2p"]
|
||||
[ext_resource type="PackedScene" uid="uid://diaxvpmwgl65u" path="res://src/enemy/TwoAttacksEnemyAnimationTree.tscn" id="163_e6etm"]
|
||||
[ext_resource type="PackedScene" uid="uid://3ax3e5uce27d" path="res://src/enemy/TwoAttacksEnemyAnimationTree.tscn" id="163_e6etm"]
|
||||
[ext_resource type="AudioStream" uid="uid://dnnhfw6cgrca4" path="res://src/audio/sfx/enemy_sara_magic.ogg" id="163_xppqu"]
|
||||
[ext_resource type="AnimationNodeStateMachine" uid="uid://co7lshemjrro8" path="res://src/enemy/animation_state_machines/IdleStateMachine.tres" id="164_fc7i0"]
|
||||
[ext_resource type="Texture2D" uid="uid://cxibdrta6imfb" path="res://src/vfx/Enemy/nega.png" id="164_rrjme"]
|
||||
@@ -1824,12 +1824,11 @@ _data = {
|
||||
}
|
||||
|
||||
[node name="EnemyModelView" type="Node3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.31442, 0)
|
||||
script = ExtResource("1_oh25a")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1.5, 0, 0, 0, 1.5, 0, 0, 0, 1.5, 0, -1.31336, 0)
|
||||
transform = Transform3D(1.5, 0, 0, 0, 1.5, 0, 0, 0, 1.5, 0, 0.88609, 0)
|
||||
pixel_size = 0.005
|
||||
billboard = 1
|
||||
shaded = true
|
||||
@@ -1859,7 +1858,7 @@ animation = &"idle_front"
|
||||
|
||||
[node name="Hitbox" type="Area3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.152949, 0, 0)
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.152949, 0.72758, 0)
|
||||
collision_layer = 64
|
||||
collision_mask = 64
|
||||
|
||||
@@ -1880,7 +1879,7 @@ tree_root = SubResource("AnimationNodeStateMachine_rasxg")
|
||||
advance_expression_base_node = NodePath("..")
|
||||
|
||||
[node name="AnimatedSprite3D" type="AnimatedSprite3D" parent="."]
|
||||
transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.0335064, -0.0871174, -0.40289)
|
||||
transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, -0.0335064, 0.640463, -0.40289)
|
||||
modulate = Color(1, 1, 1, 0.72549)
|
||||
billboard = 2
|
||||
texture_filter = 1
|
||||
@@ -1893,9 +1892,11 @@ libraries = {
|
||||
|
||||
[node name="Attacks" type="AudioStreamPlayer3D" parent="."]
|
||||
process_mode = 3
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.72758, 0)
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.72758, 0)
|
||||
autoplay = true
|
||||
bus = &"SFX"
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
[gd_scene load_steps=13 format=3 uid="uid://feegakykn3fv"]
|
||||
[gd_scene load_steps=13 format=3 uid="uid://da32nr35mpqrn"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dwfxs5yrf7i3v" path="res://src/enemy/enemy_types/05. ballos/Ballos.cs" id="1_iy2fp"]
|
||||
[ext_resource type="PackedScene" uid="uid://c5xijwxkg4pf6" path="res://src/enemy/enemy_types/05. ballos/BallosModelView.tscn" id="2_v2urn"]
|
||||
[ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_bjnvx"]
|
||||
[ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="5_55sdf"]
|
||||
[ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="6_2xj0s"]
|
||||
[ext_resource type="PackedScene" uid="uid://dppmk4nx2le20" path="res://src/enemy/enemy_types/05. ballos/BallosModelView.tscn" id="2_v2urn"]
|
||||
[ext_resource type="PackedScene" uid="uid://cn4fv2gv6raql" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_bjnvx"]
|
||||
[ext_resource type="PackedScene" uid="uid://cve5oouhowtff" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="5_55sdf"]
|
||||
[ext_resource type="PackedScene" uid="uid://cmhem5xknjsvc" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="6_2xj0s"]
|
||||
[ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="6_wpleu"]
|
||||
[ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="7_vibb5"]
|
||||
[ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="8_b4xgw"]
|
||||
@@ -18,12 +18,12 @@ height = 5.0
|
||||
radius = 1.0
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_8vcnq"]
|
||||
radius = 1.20703
|
||||
radius = 1.63453
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_jhnwb"]
|
||||
radius = 1.75
|
||||
radius = 2.74414
|
||||
|
||||
[node name="Ballos" type="CharacterBody3D"]
|
||||
[node name="Ballos" type="CharacterBody3D" groups=["enemy"]]
|
||||
process_mode = 1
|
||||
collision_layer = 10
|
||||
collision_mask = 11
|
||||
@@ -62,7 +62,7 @@ shape = SubResource("SphereShape3D_8vcnq")
|
||||
|
||||
[node name="EnemyModelView" parent="." instance=ExtResource("2_v2urn")]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.00777042, 0)
|
||||
|
||||
[node name="PlayerDetector" type="Area3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
@@ -78,13 +78,13 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0)
|
||||
|
||||
[node name="PatrolBehavior" parent="Components" instance=ExtResource("4_bjnvx")]
|
||||
unique_name_in_owner = true
|
||||
_patrolSpeed = 200.0
|
||||
_patrolSpeed = 325.0
|
||||
_thinkTime = 2.0
|
||||
_patrolTime = 30.0
|
||||
|
||||
[node name="FollowBehavior" parent="Components" instance=ExtResource("5_55sdf")]
|
||||
unique_name_in_owner = true
|
||||
_followSpeed = 225.0
|
||||
_followSpeed = 400.0
|
||||
|
||||
[node name="EngagePlayerBehavior" parent="Components" instance=ExtResource("6_2xj0s")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
@@ -6,4 +6,11 @@
|
||||
script = ExtResource("1_x720g")
|
||||
Name = "Ballos"
|
||||
Description = "Round...."
|
||||
MaximumHP = ""
|
||||
ATK = ""
|
||||
DEF = ""
|
||||
Affinity = ""
|
||||
Weakness = ""
|
||||
Drop1 = ""
|
||||
Drop2 = ""
|
||||
metadata/_custom_type_script = ExtResource("1_x720g")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=173 format=3 uid="uid://c5xijwxkg4pf6"]
|
||||
[gd_scene load_steps=173 format=3 uid="uid://dppmk4nx2le20"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_ueqp5"]
|
||||
[ext_resource type="Texture2D" uid="uid://bgkx485uy065" path="res://src/enemy/enemy_types/05. ballos/animations/WALK BACK/1.png" id="3_b3ny6"]
|
||||
@@ -1472,8 +1472,10 @@ script = ExtResource("1_ueqp5")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1.5, 0, 0, 0, 1.5, 0, 0, 0, 1.5, 0, 0.0275542, 0)
|
||||
transform = Transform3D(1.5, 0, 0, 0, 1.5, 0, 0, 0, 1.5, 0, 1.76027, 0)
|
||||
pixel_size = 0.015
|
||||
billboard = 2
|
||||
shaded = true
|
||||
alpha_cut = 1
|
||||
texture_filter = 0
|
||||
render_priority = 100
|
||||
@@ -1499,7 +1501,7 @@ offset = Vector2(400, 400)
|
||||
|
||||
[node name="Hitbox" type="Area3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.152949, 0, 0)
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.152949, 1.86303, 0)
|
||||
collision_layer = 64
|
||||
collision_mask = 64
|
||||
|
||||
@@ -1522,7 +1524,7 @@ advance_expression_base_node = NodePath("..")
|
||||
anim_player = NodePath("../AnimationPlayer")
|
||||
|
||||
[node name="AnimatedSprite3D" type="AnimatedSprite3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.101011, 1.67041, 0)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.101011, 3.53344, 0)
|
||||
sprite_frames = SubResource("SpriteFrames_ikty0")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="AnimatedSprite3D"]
|
||||
@@ -1532,12 +1534,13 @@ libraries = {
|
||||
|
||||
[node name="WalkSFX" type="AudioStreamPlayer3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.86303, 0)
|
||||
stream = ExtResource("94_i3hgg")
|
||||
autoplay = true
|
||||
bus = &"SFX"
|
||||
|
||||
[node name="Shadow" type="Sprite3D" parent="."]
|
||||
transform = Transform3D(1.265, 0, 0, 0, -5.52949e-08, 1.265, 0, -1.265, -5.52949e-08, 0.00393164, -1.88689, 0.0077811)
|
||||
transform = Transform3D(1.265, 0, 0, 0, -5.52949e-08, 1.265, 0, -1.265, -5.52949e-08, 0.00393164, -0.0238594, 0.0077811)
|
||||
transparency = 0.1
|
||||
cast_shadow = 0
|
||||
modulate = Color(1, 1, 1, 0.591)
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
[gd_scene load_steps=14 format=3 uid="uid://dlw5cvutvypxn"]
|
||||
[gd_scene load_steps=14 format=3 uid="uid://cd12cj1g37bn4"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://djx5x5bhkku85" path="res://src/enemy/enemy_types/06. chariot/Chariot.cs" id="1_q1q0f"]
|
||||
[ext_resource type="PackedScene" uid="uid://dcm53j3rncxdm" path="res://src/enemy/enemy_types/06. chariot/ChariotModelView.tscn" id="3_q1q0f"]
|
||||
[ext_resource type="PackedScene" uid="uid://2nkvacxsd46b" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_ee8v4"]
|
||||
[ext_resource type="PackedScene" uid="uid://mqj4jju3870v" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="5_uv8in"]
|
||||
[ext_resource type="PackedScene" uid="uid://dwgq2bxolnx8l" path="res://src/enemy/enemy_types/06. chariot/ChariotModelView.tscn" id="3_q1q0f"]
|
||||
[ext_resource type="PackedScene" uid="uid://cn4fv2gv6raql" path="res://src/enemy/behaviors/PatrolBehavior.tscn" id="4_ee8v4"]
|
||||
[ext_resource type="PackedScene" uid="uid://cve5oouhowtff" path="res://src/enemy/behaviors/FollowBehavior.tscn" id="5_uv8in"]
|
||||
[ext_resource type="AudioStream" uid="uid://ba8xendacec6" path="res://src/audio/sfx/item_kyuu_layer_2.ogg" id="6_582pa"]
|
||||
[ext_resource type="PackedScene" uid="uid://8bcme8ao4axa" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="6_cfqmf"]
|
||||
[ext_resource type="PackedScene" uid="uid://cmhem5xknjsvc" path="res://src/enemy/behaviors/EngagePlayerBehavior.tscn" id="6_cfqmf"]
|
||||
[ext_resource type="AudioStream" uid="uid://b7ycb6qvitpmw" path="res://src/audio/sfx/player_HITENEMY_3.ogg" id="7_jemva"]
|
||||
[ext_resource type="AudioStream" uid="uid://bf7adfdd857hw" path="res://src/audio/sfx/enemy_morph.ogg" id="8_ave6n"]
|
||||
[ext_resource type="AudioStream" uid="uid://daye7334d7rfe" path="res://src/audio/sfx/ENEMY_CHARIOT_DEATH.ogg" id="9_cfqmf"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
|
||||
radius = 1.0
|
||||
radius = 1.67281
|
||||
height = 3.34563
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_jbgmx"]
|
||||
height = 5.0
|
||||
@@ -21,9 +22,9 @@ radius = 1.0
|
||||
radius = 1.20703
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_582pa"]
|
||||
radius = 2.0
|
||||
radius = 2.34863
|
||||
|
||||
[node name="Chariot" type="CharacterBody3D"]
|
||||
[node name="Chariot" type="CharacterBody3D" groups=["enemy"]]
|
||||
process_mode = 1
|
||||
collision_layer = 10
|
||||
collision_mask = 3
|
||||
@@ -61,7 +62,7 @@ shape = SubResource("SphereShape3D_lqifn")
|
||||
|
||||
[node name="EnemyModelView" parent="." instance=ExtResource("3_q1q0f")]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(0.999848, 0, 0.0174524, 0, 1, 0, -0.0174524, 0, 0.999848, 0, 1.40414, 0)
|
||||
transform = Transform3D(0.999848, 0, 0.0174524, 0, 1, 0, -0.0174524, 0, 0.999848, 0, 0.0547004, 0)
|
||||
|
||||
[node name="PlayerDetector" type="Area3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user