In progress item changes

This commit is contained in:
2026-02-13 15:59:10 -08:00
parent d6faf8642a
commit 0ab6ef1343
180 changed files with 3552 additions and 2023 deletions

View File

@@ -5,21 +5,21 @@ using Zennysoft.Ma.Adapter.Entity;
namespace Zennysoft.Ma.Adapter;
public interface IEquipmentComponent : IEntityComponent
{
public IAutoProp<EquipableItem> EquippedWeapon { get; }
public IAutoProp<IWeapon> EquippedWeapon { get; }
public IAutoProp<EquipableItem> EquippedArmor { get; }
public IAutoProp<IArmor> EquippedArmor { get; }
public IAutoProp<EquipableItem> EquippedAccessory { get; }
public IAutoProp<IAccessory> EquippedAccessory { get; }
public IAutoProp<EquipableItem> EquippedAmmo { get; }
public IAutoProp<IEquipableItem> EquippedAmmo { get; }
public void Equip(EquipableItem equipable);
public void Equip(IEquipableItem equipable);
public void Unequip(EquipableItem equipable);
public void Unequip(IEquipableItem equipable);
public bool IsItemEquipped(InventoryItem item);
public bool IsItemEquipped(IEquipableItem item);
public void UpdateEquipment(EquipableItem equipable);
public void UpdateEquipment(IEquipableItem equipable);
public bool AugmentableEquipmentExists();
@@ -35,5 +35,5 @@ public interface IEquipmentComponent : IEntityComponent
public ElementalResistanceSet ElementalResistance { get; }
public event Action<EquipableItem> EquipmentChanged;
public event Action<IEquipableItem> EquipmentChanged;
}

View File

@@ -13,13 +13,6 @@ public class Augment
public IAugmentType AugmentType { get; set; }
}
public interface IAugmentType
{
void Apply();
void Remove();
}
public class HPRecoverySpeedAugment : IAugmentType
{
private readonly IPlayer _player;

View File

@@ -1,28 +0,0 @@
using Chickensoft.Introspection;
using Chickensoft.Serialization;
using Zennysoft.Ma.Adapter.Entity;
namespace Zennysoft.Ma.Adapter;
[Meta, Id("equipable_item")]
public abstract partial class EquipableItem : InventoryItem
{
[Save("bonus_attack_stats")]
public virtual int BonusAttack { get; }
[Save("bonus_defense_stats")]
public virtual int BonusDefense { get; }
[Save("bonus_hp_stats")]
public virtual int BonusHP { get; }
[Save("bonus_vt_stats")]
public virtual int BonusVT { get; }
[Save("bonus_luck_stats")]
public virtual int BonusLuck { get; }
[Save("equipment_is_glued")]
public bool Glued { get; set; }
public virtual Augment? Augment { get; set; }
[Save("bonus_elemental_resist_stats")]
public virtual ElementalResistanceSet ElementalResistance { get; } = new ElementalResistanceSet(0, 0, 0, 0, 0, 0, 0);
}

View File

@@ -0,0 +1,6 @@
public interface IAugmentType
{
void Apply();
void Remove();
}

View File

@@ -1,26 +0,0 @@
using Chickensoft.Introspection;
using Chickensoft.Serialization;
using Godot;
namespace Zennysoft.Ma.Adapter;
[Meta, Id("inventory_item")]
public abstract partial class InventoryItem : Node3D
{
[Save("inventory_item_id")]
public Guid ID => Guid.NewGuid();
[Save("inventory_item_name")]
public abstract string ItemName { get; }
[Save("inventory_item_description")]
public abstract string Description { get; }
[Save("inventory_item_spawn_rate")]
public abstract float SpawnRate { get; }
[Save("inventory_item_throw_damage")]
public abstract int ThrowDamage { get; }
[Save("inventory_item_throw_speed")]
public abstract float ThrowSpeed { get; }
[Save("inventory_item_tag")]
public abstract ItemTag ItemTag { get; }
public abstract Texture2D GetTexture();
}

View File

@@ -20,7 +20,7 @@ public interface IGameRepo : IDisposable
event Action? DoubleExpTimeEnd;
event Action<InventoryItem>? RemoveItemFromInventoryEvent;
event Action<IBaseInventoryItem>? RemoveItemFromInventoryEvent;
event Action? PlayerAttack;
@@ -28,9 +28,9 @@ public interface IGameRepo : IDisposable
event Action? PlayerAttackedEnemy;
event Action<EquipableItem>? EquippedItem;
event Action<IEquipableItem>? EquippedItem;
event Action<EquipableItem>? UnequippedItem;
event Action<IEquipableItem>? UnequippedItem;
event Action<IEnemy>? EnemyDied;
@@ -48,7 +48,7 @@ public interface IGameRepo : IDisposable
public void AnnounceMessageInInventory(string message);
public void RemoveItemFromInventory(InventoryItem item);
public void RemoveItemFromInventory(IBaseInventoryItem item);
public void OnPlayerAttack();
@@ -58,9 +58,9 @@ public interface IGameRepo : IDisposable
public void GameEnded();
public void OnEquippedItem(EquipableItem item);
public void OnEquippedItem(IEquipableItem item);
public void OnUnequippedItem(EquipableItem item);
public void OnUnequippedItem(IEquipableItem item);
public void OnEnemyDied(IEnemy enemy);
@@ -75,12 +75,12 @@ public class GameRepo : IGameRepo
public event Action<string>? AnnounceMessageInInventoryEvent;
public event Action<int>? DoubleExpTimeStart;
public event Action? DoubleExpTimeEnd;
public event Action<InventoryItem>? RemoveItemFromInventoryEvent;
public event Action<IBaseInventoryItem>? RemoveItemFromInventoryEvent;
public event Action? PlayerAttack;
public event Action? PlayerAttackedWall;
public event Action? PlayerAttackedEnemy;
public event Action<EquipableItem>? EquippedItem;
public event Action<EquipableItem>? UnequippedItem;
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;
@@ -131,7 +131,7 @@ public class GameRepo : IGameRepo
AnnounceMessageInInventoryEvent?.Invoke(message);
}
public void RemoveItemFromInventory(InventoryItem item)
public void RemoveItemFromInventory(IBaseInventoryItem item)
{
RemoveItemFromInventoryEvent?.Invoke(item);
}
@@ -151,9 +151,9 @@ public class GameRepo : IGameRepo
CloseInventoryEvent?.Invoke();
}
public void OnEquippedItem(EquipableItem item) => EquippedItem?.Invoke(item);
public void OnEquippedItem(IEquipableItem item) => EquippedItem?.Invoke(item);
public void OnUnequippedItem(EquipableItem item) => UnequippedItem?.Invoke(item);
public void OnUnequippedItem(IEquipableItem item) => UnequippedItem?.Invoke(item);
public void OnEnemyDied(IEnemy enemy) => EnemyDied?.Invoke(enemy);

View File

@@ -0,0 +1,5 @@
using Zennysoft.Ma.Adapter;
public interface IAccessory : IEquipableItem, IAugmentableItem
{
}

View File

@@ -0,0 +1,5 @@
using Zennysoft.Ma.Adapter;
public interface IArmor : IEquipableItem, IAugmentableItem
{
}

View File

@@ -1,7 +1,5 @@
namespace Zennysoft.Ma.Adapter
public interface IAugmentItem : IBaseInventoryItem
{
public interface IAugmentItem
{
public JewelTags Augment { get; }
}
public IAugmentType Augment { get; }
}

View File

@@ -0,0 +1,7 @@
namespace Zennysoft.Ma.Adapter
{
public interface IAugmentableItem
{
public Augment? Augment { get; }
}
}

View File

@@ -0,0 +1,15 @@
using Godot;
using Zennysoft.Ma.Adapter;
public interface IBaseInventoryItem
{
public string ItemName { get; }
public string Description { get; }
public float SpawnRate { get; }
public int ThrowDamage { get; }
public float ThrowSpeed { get; }
public ItemTag ItemTag { get; }
public abstract Texture2D GetTexture();
}

View File

@@ -4,6 +4,6 @@
{
void RescueItem();
public InventoryItem Item { get; }
public IBaseInventoryItem Item { get; }
}
}

View File

@@ -0,0 +1,14 @@
using Zennysoft.Ma.Adapter.Entity;
public interface IEquipableItem : IBaseInventoryItem
{
public int BonusAttack { get; }
public int BonusDefense { get; }
public int BonusHP { get; }
public int BonusVT { get; }
public int BonusLuck { get; }
public bool Glued { get; set; }
public ElementalResistanceSet ElementalResistance { get; }
}

View File

@@ -2,17 +2,17 @@
public interface IInventory
{
public bool PickUpItem(InventoryItem item);
public bool PickUpItem(IBaseInventoryItem item);
public List<InventoryItem> Items { get; }
public List<IBaseInventoryItem> Items { get; }
public bool TryAdd(InventoryItem inventoryItem);
public bool TryAdd(IBaseInventoryItem inventoryItem);
public bool TryInsert(InventoryItem inventoryItem, int index);
public bool TryInsert(IBaseInventoryItem inventoryItem, int index);
public void Remove(InventoryItem inventoryItem);
public void Remove(IBaseInventoryItem inventoryItem);
public bool Sort(EquipableItem currentWeapon, EquipableItem currentArmor, EquipableItem currentAccessory, EquipableItem ammo);
public bool Sort(IWeapon currentWeapon, IArmor currentArmor, IAccessory currentAccessory, IEquipableItem ammo);
public bool AtCapacity();

View File

@@ -2,5 +2,5 @@
public interface IThrownItem
{
public InventoryItem ItemThatIsThrown { get; set; }
public IBaseInventoryItem ItemThatIsThrown { get; set; }
}

View File

@@ -0,0 +1,5 @@
using Zennysoft.Ma.Adapter;
public interface IWeapon : IEquipableItem, IAugmentableItem
{
}

View File

@@ -7,10 +7,10 @@ namespace Zennysoft.Ma.Adapter;
public partial class RescuedItemDatabase
{
[Save("rescued_item_list")]
public List<InventoryItem> Items { get; init; }
public List<IBaseInventoryItem> Items { get; init; }
public RescuedItemDatabase()
{
Items = new List<InventoryItem>();
Items = new List<IBaseInventoryItem>();
}
}

View File

@@ -20,15 +20,15 @@ public interface IPlayer : IKillable, ICharacterBody3D
public void TeleportPlayer((Vector3 Rotation, Vector3 Position) newTransform);
public void Equip(EquipableItem equipable);
public void Equip(IEquipableItem equipable);
public void Unequip(EquipableItem equipable);
public void Unequip(IEquipableItem equipable);
public void PlayJumpScareAnimation();
public void ApplyNewAugment(IAugmentItem jewel, EquipableItem equipableItem);
public void ApplyNewAugment(Jewel jewel, IAugmentableItem equipableItem);
public void IdentifyItem(InventoryItem unidentifiedItem);
public void IdentifyItem(IBaseInventoryItem unidentifiedItem);
public IInventory Inventory { get; }
@@ -63,5 +63,5 @@ public interface IPlayer : IKillable, ICharacterBody3D
public bool AutoIdentifyItems { get; set; }
public event Action PlayerDied;
public delegate InventoryItem RerollItem(InventoryItem item);
public delegate IBaseInventoryItem RerollItem(IBaseInventoryItem item);
}

View File

@@ -38,7 +38,7 @@ public partial class InGameUILogic
Output(new Output.AnnounceMessageInInventory(message));
}
private void OnRemoveItemFromInventory(InventoryItem item) => Output(new Output.RemoveItemFromInventory(item));
private void OnRemoveItemFromInventory(IBaseInventoryItem item) => Output(new Output.RemoveItemFromInventory(item));
}
}

View File

@@ -8,7 +8,7 @@ public partial class InGameUILogic
{
public readonly record struct AnnounceMessageOnMainScreen(string Message);
public readonly record struct AnnounceMessageInInventory(string Message);
public readonly record struct RemoveItemFromInventory(InventoryItem Item);
public readonly record struct RemoveItemFromInventory(IBaseInventoryItem Item);
public readonly record struct ShowInventory;
public readonly record struct HideInventory;
}

View File

@@ -6,23 +6,23 @@ using Zennysoft.Ma.Adapter.Entity;
namespace Zennysoft.Game.Ma;
public class EquipmentComponent : IEquipmentComponent
{
public IAutoProp<EquipableItem> EquippedWeapon => _equippedWeapon;
public IAutoProp<IWeapon> EquippedWeapon => _equippedWeapon;
public IAutoProp<EquipableItem> EquippedArmor => _equippedArmor;
public IAutoProp<IArmor> EquippedArmor => _equippedArmor;
public IAutoProp<EquipableItem> EquippedAccessory => _equippedAccessory;
public IAutoProp<IAccessory> EquippedAccessory => _equippedAccessory;
public IAutoProp<EquipableItem> EquippedAmmo => _equippedAmmo;
public IAutoProp<IEquipableItem> EquippedAmmo => _equippedAmmo;
public AutoProp<EquipableItem> _equippedWeapon;
public AutoProp<IWeapon> _equippedWeapon;
public AutoProp<EquipableItem> _equippedArmor;
public AutoProp<IArmor> _equippedArmor;
public AutoProp<EquipableItem> _equippedAccessory;
public AutoProp<IAccessory> _equippedAccessory;
public AutoProp<EquipableItem> _equippedAmmo;
public AutoProp<IEquipableItem> _equippedAmmo;
public event Action<EquipableItem> EquipmentChanged;
public event Action<IEquipableItem> EquipmentChanged;
public int BonusAttack => _equippedWeapon.Value.BonusAttack + _equippedArmor.Value.BonusAttack + _equippedAccessory.Value.BonusAttack;
@@ -38,10 +38,10 @@ public class EquipmentComponent : IEquipmentComponent
public EquipmentComponent()
{
_equippedWeapon = new AutoProp<EquipableItem>(new Weapon());
_equippedArmor = new AutoProp<EquipableItem>(new Armor());
_equippedAccessory = new AutoProp<EquipableItem>(new Accessory());
_equippedAmmo = new AutoProp<EquipableItem>(new Ammo());
_equippedWeapon = new AutoProp<IWeapon>(new Weapon());
_equippedArmor = new AutoProp<IArmor>(new Armor());
_equippedAccessory = new AutoProp<IAccessory>(new Accessory());
_equippedAmmo = new AutoProp<IEquipableItem>(new Ammo());
}
public void Reset()
@@ -52,7 +52,7 @@ public class EquipmentComponent : IEquipmentComponent
_equippedAmmo.OnNext(new Ammo());
}
public void Equip(EquipableItem equipable)
public void Equip(IEquipableItem equipable)
{
if (equipable is Weapon weapon)
_equippedWeapon.OnNext(weapon);
@@ -65,7 +65,7 @@ public class EquipmentComponent : IEquipmentComponent
EquipmentChanged?.Invoke(equipable);
}
public void Unequip(EquipableItem equipable)
public void Unequip(IEquipableItem equipable)
{
if (equipable is Weapon weapon)
_equippedWeapon.OnNext(new Weapon());
@@ -78,15 +78,12 @@ public class EquipmentComponent : IEquipmentComponent
EquipmentChanged?.Invoke(equipable);
}
public bool IsItemEquipped(InventoryItem item)
public bool IsItemEquipped(IEquipableItem item)
{
if (item is not EquipableItem)
return false;
return item == _equippedWeapon.Value || item == _equippedArmor.Value || item == _equippedAccessory.Value || item == _equippedAmmo.Value;
}
public void UpdateEquipment(EquipableItem equipable) => EquipmentChanged?.Invoke(equipable);
public void UpdateEquipment(IEquipableItem equipable) => EquipmentChanged?.Invoke(equipable);
public bool AugmentableEquipmentExists()
{

View File

@@ -7,7 +7,6 @@ using Chickensoft.SaveFileBuilder;
using Godot;
using System;
using System.Text.Json;
using Zennysoft.Game.Abstractions;
using Zennysoft.Ma.Adapter;
using System.IO;
using System.Threading.Tasks;
@@ -217,7 +216,7 @@ public partial class Game : Node3D, IGame
public void FloorExitReached() => GameState.Input(new GameState.Input.FloorExitEntered());
public async Task UseItem(InventoryItem item)
public async Task UseItem(IBaseInventoryItem item)
{
if (item.ItemTag == ItemTag.MysteryItem)
_effectService.RerollItem(item);
@@ -240,7 +239,7 @@ public partial class Game : Node3D, IGame
RemoveItemOrSubtractFromItemCount(item);
}
public void DropItem(InventoryItem item)
public void DropItem(IBaseInventoryItem item)
{
var droppedScene = GD.Load<PackedScene>("res://src/items/dropped/DroppedItem.tscn");
var dropped = droppedScene.Instantiate<DroppedItem>();
@@ -250,7 +249,7 @@ public partial class Game : Node3D, IGame
_player.Inventory.Remove(item);
}
public void SetItem(InventoryItem item)
public void SetItem(IBaseInventoryItem item)
{
var setScene = GD.Load<PackedScene>("res://src/items/misc/SetItem.tscn");
var setItem = setScene.Instantiate<SetItem>();
@@ -259,7 +258,7 @@ public partial class Game : Node3D, IGame
_player.Inventory.Remove(item);
}
public void ThrowItem(InventoryItem item)
public void ThrowItem(IBaseInventoryItem item)
{
var thrownScene = GD.Load<PackedScene>("res://src/items/thrown/ThrownItem.tscn");
var thrown = thrownScene.Instantiate<ThrownItem>();
@@ -459,10 +458,10 @@ public partial class Game : Node3D, IGame
_player.Inventory.TryAdd(_effectService.GetRandomItemOfType<ConsumableItem>());
break;
case ItemTag.DropTo1HPAndGainRareItem:
_effectService.DropTo1HPAndGainRareItem<InventoryItem>();
_effectService.DropTo1HPAndGainRareItem<IBaseInventoryItem>();
break;
case ItemTag.TradeAllRandomItems:
var newInventory = _effectService.TradeAllRandomItems<InventoryItem>(boxItem);
var newInventory = _effectService.TradeAllRandomItems(boxItem);
_player.Inventory.Items.Clear();
_player.Inventory.TryAdd(boxItem);
foreach (var item in newInventory)
@@ -472,7 +471,7 @@ public partial class Game : Node3D, IGame
_effectService.GetUnobtainedItem();
break;
case ItemTag.ContainsBasicItem:
_effectService.GetBasicItem<InventoryItem>();
_effectService.GetBasicItem<IBaseInventoryItem>();
break;
case ItemTag.UnequipAllItems:
_player.EquipmentComponent.Unequip(_player.EquipmentComponent.EquippedWeapon.Value);
@@ -567,7 +566,7 @@ public partial class Game : Node3D, IGame
}
}
private void RemoveItemOrSubtractFromItemCount(InventoryItem item)
private void RemoveItemOrSubtractFromItemCount(IBaseInventoryItem item)
{
if (item is IStackable stackableItem && stackableItem.Count.Value > 1)
stackableItem.SetCount(stackableItem.Count.Value - 1);

View File

@@ -18,13 +18,13 @@ public interface IGame : IProvide<IGame>, IProvide<IGameRepo>, IProvide<IPlayer>
public IDungeonFloor CurrentFloor { get; }
public Task UseItem(InventoryItem item);
public Task UseItem(IBaseInventoryItem item);
public void DropItem(InventoryItem item);
public void DropItem(IBaseInventoryItem item);
public void SetItem(InventoryItem item);
public void SetItem(IBaseInventoryItem item);
public void ThrowItem(InventoryItem item);
public void ThrowItem(IBaseInventoryItem item);
public void FloorExitReached();

View File

@@ -228,14 +228,14 @@ public class EffectService
_player.TakeDamage(new AttackData(damage, ElementType.None, true, true));
}
public void RerollItem(InventoryItem itemToReroll)
public void RerollItem(IBaseInventoryItem itemToReroll)
{
var itemReroller = new ItemReroller(ItemDatabase.Instance);
itemReroller.RerollItem(itemToReroll, _player.Inventory);
}
public T GetRandomItemOfType<T>(T itemToExclude = null)
where T : InventoryItem => ItemDatabase.Instance.PickItem(itemToExclude);
public T GetRandomItemOfType<T>(params T[] itemsToExclude)
where T : IBaseInventoryItem => ItemDatabase.Instance.PickItem(itemsToExclude);
public void RandomSpell()
{
@@ -243,14 +243,14 @@ public class EffectService
}
public void DropTo1HPAndGainRareItem<T>()
where T : InventoryItem
where T : IBaseInventoryItem
{
_player.HealthComponent.SetCurrentHealth(1);
_player.Inventory.TryAdd(ItemDatabase.Instance.PickRareItem<T>());
}
public void TradeRandomItem<T>(BoxItem box)
where T : InventoryItem
where T : IBaseInventoryItem
{
var tradableItems = _player.Inventory.Items.OfType<T>().Where(x => x != box).ToList();
@@ -258,7 +258,7 @@ public class EffectService
rng.Randomize();
var randomIndex = rng.RandiRange(0, tradableItems.Count - 1);
var randomItem = tradableItems[randomIndex];
if (randomItem is EquipableItem equipableItem)
if (randomItem is IEquipableItem equipableItem)
{
if (_player.EquipmentComponent.IsItemEquipped(equipableItem))
_player.Unequip(equipableItem);
@@ -268,13 +268,12 @@ public class EffectService
GetRandomItemOfType<T>();
}
public IEnumerable<InventoryItem> TradeAllRandomItems<T>(BoxItem box)
where T : InventoryItem
public IEnumerable<IBaseInventoryItem> TradeAllRandomItems(BoxItem box)
{
var newInventory = new List<InventoryItem>();
var items = _player.Inventory.Items.OfType<T>().Where(x => x != box).ToList();
var newInventory = new List<IBaseInventoryItem>();
var items = _player.Inventory.Items.ToList();
foreach (var item in items)
newInventory.Add(GetRandomItemOfType<T>());
newInventory.Add(GetRandomItemOfType<IBaseInventoryItem>());
return newInventory;
}
@@ -294,7 +293,7 @@ public class EffectService
}
public void GetBasicItem<T>()
where T : InventoryItem
where T : IBaseInventoryItem
{
_player.Inventory.TryAdd(ItemDatabase.Instance.PickBasicItem<T>());
}

View File

@@ -27,9 +27,9 @@ public partial class Inventory : Node, IInventory
}
[Save("inventory_items")]
public List<InventoryItem> Items { get; private set; }
public List<IBaseInventoryItem> Items { get; private set; }
public bool PickUpItem(InventoryItem item)
public bool PickUpItem(IBaseInventoryItem item)
{
var isAdded = TryAdd(item);
if (isAdded)
@@ -43,7 +43,7 @@ public partial class Inventory : Node, IInventory
return isAdded;
}
public bool TryAdd(InventoryItem inventoryItem)
public bool TryAdd(IBaseInventoryItem inventoryItem)
{
if (Items.Count >= _maxInventorySize)
return false;
@@ -55,7 +55,7 @@ public partial class Inventory : Node, IInventory
public bool AtCapacity() => Items.Count >= _maxInventorySize;
public bool TryInsert(InventoryItem inventoryItem, int index)
public bool TryInsert(IBaseInventoryItem inventoryItem, int index)
{
if (Items.Count >= _maxInventorySize || index >= _maxInventorySize || index < 0)
return false;
@@ -65,20 +65,20 @@ public partial class Inventory : Node, IInventory
return true;
}
public void Remove(InventoryItem inventoryItem)
public void Remove(IBaseInventoryItem inventoryItem)
{
Items.Remove(inventoryItem);
InventoryChanged?.Invoke();
}
public bool Sort(EquipableItem currentWeapon, EquipableItem currentArmor, EquipableItem currentAccessory, EquipableItem currentAmmo)
public bool Sort(IWeapon currentWeapon, IArmor currentArmor, IAccessory currentAccessory, IEquipableItem currentAmmo)
{
var initialList = Items;
var equippedWeapon = Items.OfType<Weapon>().Where(x => x == currentWeapon);
var equippedArmor = Items.OfType<Armor>().Where(x => x == currentArmor);
var equippedAccessory = Items.OfType<Accessory>().Where(x => x == currentAccessory);
var equippedAmmo = Items.OfType<Ammo>().Where(x => x == currentAmmo);
var equippedItems = new List<InventoryItem>();
var equippedItems = new List<IBaseInventoryItem>();
equippedItems.AddRange(equippedWeapon);
equippedItems.AddRange(equippedArmor);
equippedItems.AddRange(equippedAccessory);
@@ -96,12 +96,12 @@ public partial class Inventory : Node, IInventory
Items = [.. equippedItems, .. weapons, .. armor, .. accessories, .. ammo, .. consumables, .. throwables, .. effectItems, .. jewelItems, .. setItems];
var stackableItems = Items.OfType<IStackable>();
var itemsToStack = stackableItems.GroupBy(x => ((InventoryItem)x).ItemName).Where(x => x.Count() > 1);
var itemsToStack = stackableItems.GroupBy(x => ((IBaseInventoryItem)x).ItemName).Where(x => x.Count() > 1);
foreach (var itemStack in itemsToStack)
{
var firstItem = itemStack.First();
firstItem.SetCount(itemStack.Sum(x => x.Count.Value));
var itemsToRemove = itemStack.Except([firstItem]).Cast<InventoryItem>();
var itemsToRemove = itemStack.Except([firstItem]).Cast<IBaseInventoryItem>();
foreach (var item in itemsToRemove)
Remove(item);
}

View File

@@ -14,37 +14,37 @@ public class ItemDatabase
public static ItemDatabase Instance { get { return lazy.Value; } }
public ImmutableList<InventoryItem> Items { get; set; }
public ImmutableList<IBaseInventoryItem> Items { get; set; }
public T PickItem<T>(T itemToExclude = null)
where T : InventoryItem
public T PickItem<T>(params T[] itemsToExclude)
where T : IBaseInventoryItem
{
var itemsToSelectFrom = Items.OfType<T>();
return PickItemInternal(itemsToSelectFrom, itemToExclude);
return PickItemInternal(itemsToSelectFrom, itemsToExclude);
}
public T PickRareItem<T>(T itemToExclude = null)
where T : InventoryItem
public T PickRareItem<T>(params T[] itemsToExclude)
where T : IBaseInventoryItem
{
var getRareItems = Items.OfType<T>().Where(x => x.SpawnRate < 0.1f);
return PickItemInternal(getRareItems, itemToExclude);
return PickItemInternal(getRareItems, itemsToExclude);
}
public T PickBasicItem<T>(T itemToExclude = null)
where T : InventoryItem
public T PickBasicItem<T>(params T[] itemsToExclude)
where T : IBaseInventoryItem
{
var getBasicItems = Items.OfType<T>().Where(x => x.SpawnRate > 0.5f);
return PickItemInternal(getBasicItems, itemToExclude);
return PickItemInternal(getBasicItems, itemsToExclude);
}
private T PickItemInternal<T>(IEnumerable<T> itemsToSelectFrom, T itemToExclude = null)
where T : InventoryItem
private T PickItemInternal<T>(IEnumerable<T> itemsToSelectFrom, params T[] itemsToExclude)
where T : IBaseInventoryItem
{
var rng = new RandomNumberGenerator();
rng.Randomize();
if (itemToExclude is not null)
itemsToSelectFrom = [.. itemsToSelectFrom.Where(x => x.ItemName != itemToExclude.ItemName)];
if (itemsToExclude.Any())
itemsToSelectFrom.Except(itemsToExclude);
var weights = itemsToSelectFrom.Select(x => x.SpawnRate).ToArray();
var selectedItem = itemsToSelectFrom.ToArray()[rng.RandWeighted(weights)];
@@ -54,7 +54,7 @@ public class ItemDatabase
private ItemDatabase()
{
var database = new List<InventoryItem>();
var database = new List<IBaseInventoryItem>();
var armorResources = DirAccess.GetFilesAt("res://src/items/armor/resources/");
var weaponResources = DirAccess.GetFilesAt("res://src/items/weapons/resources/");
var accessoryResources = DirAccess.GetFilesAt("res://src/items/accessory/resources/");

View File

@@ -12,7 +12,7 @@ public class ItemReroller
}
public T RerollItem<T>(T itemToReroll, IInventory inventory, bool insertIntoInventory = true)
where T : InventoryItem
where T : IBaseInventoryItem
{
var currentIndex = inventory.Items.IndexOf(itemToReroll);
@@ -27,7 +27,7 @@ public class ItemReroller
return rolledItem;
}
public InventoryItem RerollItemToAny(InventoryItem itemToReroll, IInventory inventory, bool insertIntoInventory = true)
public IBaseInventoryItem RerollItemToAny(IBaseInventoryItem itemToReroll, IInventory inventory, bool insertIntoInventory = true)
{
var currentIndex = inventory.Items.IndexOf(itemToReroll);

View File

@@ -8,7 +8,7 @@ using Zennysoft.Ma.Adapter.Entity;
namespace Zennysoft.Game.Ma;
[Meta(typeof(IAutoNode)), Id("accessory")]
public partial class Accessory : EquipableItem
public partial class Accessory : Node3D, IAccessory
{
public override void _Notification(int what) => this.Notify(what);
@@ -21,32 +21,32 @@ public partial class Accessory : EquipableItem
_bonusDefense = Stats.BonusDefense;
_bonusLuck = Stats.BonusLuck;
}
public override string ItemName => Stats.Name;
public string ItemName => Stats.Name;
public override string Description => Stats.Description;
public string Description => Stats.Description;
public override float SpawnRate => Stats.SpawnRate;
public float SpawnRate => Stats.SpawnRate;
public override int ThrowDamage => Stats.ThrowDamage;
public int ThrowDamage => Stats.ThrowDamage;
public override float ThrowSpeed => Stats.ThrowSpeed;
public float ThrowSpeed => Stats.ThrowSpeed;
public override int BonusAttack { get => _bonusDamage; }
public int BonusAttack { get => _bonusDamage; }
public override int BonusDefense { get => _bonusDefense; }
public int BonusDefense { get => _bonusDefense; }
public override int BonusLuck { get => _bonusLuck; }
public int BonusLuck { get => _bonusLuck; }
public override int BonusHP => Stats.BonusHP;
public int BonusHP => Stats.BonusHP;
public override int BonusVT => Stats.BonusVT;
public int BonusVT => Stats.BonusVT;
public override ElementalResistanceSet ElementalResistance => new ElementalResistanceSet(Stats.AeolicResistance, Stats.HydricResistance, Stats.IgneousResistance, Stats.FerrumResistance, Stats.TelluricResistance, Stats.HolyResistance, Stats.CurseResistance);
public ElementalResistanceSet ElementalResistance => new ElementalResistanceSet(Stats.AeolicResistance, Stats.HydricResistance, Stats.IgneousResistance, Stats.FerrumResistance, Stats.TelluricResistance, Stats.HolyResistance, Stats.CurseResistance);
[Save("accessory_tag")]
public AccessoryTag AccessoryTag => Stats.AccessoryTag;
public override ItemTag ItemTag => Stats.ItemTag;
public ItemTag ItemTag => Stats.ItemTag;
[Save("accessory_bonus_damage")]
private int _bonusDamage { get; set; } = 0;
@@ -72,6 +72,8 @@ public partial class Accessory : EquipableItem
[Export]
[Save("accessory_stats")]
public AccessoryStats Stats { get; set; } = new AccessoryStats();
public Augment Augment { get; set; }
public bool Glued { get; set; }
public override Texture2D GetTexture() => Stats.Texture;
public Texture2D GetTexture() => Stats.Texture;
}

View File

@@ -6,9 +6,10 @@ using Godot;
using Zennysoft.Game.Implementation;
using Zennysoft.Game.Ma;
using Zennysoft.Ma.Adapter;
using Zennysoft.Ma.Adapter.Entity;
[Meta(typeof(IAutoNode)), Id("ammo")]
public partial class Ammo : EquipableItem, IStackable
public partial class Ammo : Node3D, IEquipableItem, IStackable
{
public override void _Notification(int what) => this.Notify(what);
@@ -21,19 +22,19 @@ public partial class Ammo : EquipableItem, IStackable
}
public override string ItemName => Stats.Name;
public string ItemName => Stats.Name;
public override string Description => Stats.Description;
public string Description => Stats.Description;
public override float SpawnRate => Stats.SpawnRate;
public float SpawnRate => Stats.SpawnRate;
public override int ThrowDamage => Stats.ThrowDamage;
public int ThrowDamage => Stats.ThrowDamage;
public override float ThrowSpeed => Stats.ThrowSpeed;
public float ThrowSpeed => Stats.ThrowSpeed;
public override ItemTag ItemTag => Stats.ItemTag;
public ItemTag ItemTag => Stats.ItemTag;
public override Texture2D GetTexture() => Stats.Texture;
public Texture2D GetTexture() => Stats.Texture;
[Save("ammo_item_count")]
public AutoProp<int> Count { get; private set; }
@@ -46,4 +47,11 @@ public partial class Ammo : EquipableItem, IStackable
[Export]
[Save("ammo_stats")]
public AmmoStats Stats { get; set; } = new AmmoStats();
public int BonusAttack { get; }
public int BonusDefense { get; }
public int BonusHP { get; }
public int BonusVT { get; }
public int BonusLuck { get; }
public bool Glued { get; set; }
public ElementalResistanceSet ElementalResistance { get; }
}

View File

@@ -8,7 +8,7 @@ using Zennysoft.Ma.Adapter.Entity;
namespace Zennysoft.Game.Ma;
[Meta(typeof(IAutoNode)), Id("armor")]
public partial class Armor : EquipableItem
public partial class Armor : Node3D, IArmor
{
public override void _Notification(int what) => this.Notify(what);
@@ -22,21 +22,21 @@ public partial class Armor : EquipableItem
_bonusLuck = Stats.BonusLuck;
}
public override string ItemName => Stats.Name;
public string ItemName => Stats.Name;
public override string Description => Stats.Description;
public string Description => Stats.Description;
public override float SpawnRate => Stats.SpawnRate;
public float SpawnRate => Stats.SpawnRate;
public override int ThrowDamage => Stats.ThrowDamage;
public int ThrowDamage => Stats.ThrowDamage;
public override float ThrowSpeed => Stats.ThrowSpeed;
public float ThrowSpeed => Stats.ThrowSpeed;
public override int BonusAttack { get => _bonusDamage; }
public int BonusAttack { get => _bonusDamage; }
public override int BonusDefense { get => _bonusDefense; }
public int BonusDefense { get => _bonusDefense; }
public override int BonusLuck { get => _bonusLuck; }
public int BonusLuck { get => _bonusLuck; }
public void IncreaseAttack(int bonus) => _bonusDamage += bonus;
@@ -60,14 +60,19 @@ public partial class Armor : EquipableItem
[Save("armor_bonus_luck")]
private int _bonusLuck { get; set; } = 0;
public override ElementalResistanceSet ElementalResistance => new ElementalResistanceSet(Stats.AeolicResistance, Stats.HydricResistance, Stats.IgneousResistance, Stats.FerrumResistance, Stats.TelluricResistance, Stats.HolyResistance, Stats.CurseResistance);
public ElementalResistanceSet ElementalResistance => new ElementalResistanceSet(Stats.AeolicResistance, Stats.HydricResistance, Stats.IgneousResistance, Stats.FerrumResistance, Stats.TelluricResistance, Stats.HolyResistance, Stats.CurseResistance);
public void IncreaseArmorDefense(int bonus) => _bonusDefense += bonus;
public override ItemTag ItemTag => Stats.ItemTag;
public ItemTag ItemTag => Stats.ItemTag;
[Save("armor_stats")]
[Export]
public ArmorStats Stats { get; set; } = new ArmorStats();
public override Texture2D GetTexture() => Stats.Texture;
public Augment Augment { get; set; }
public int BonusHP { get; }
public int BonusVT { get; }
public bool Glued { get; set; }
public Texture2D GetTexture() => Stats.Texture;
}

View File

@@ -6,7 +6,7 @@ using Zennysoft.Game.Ma;
using Zennysoft.Ma.Adapter;
[Meta(typeof(IAutoNode)), Id("box_item")]
public partial class BoxItem : InventoryItem
public partial class BoxItem : Node3D, IBaseInventoryItem
{
public override void _Notification(int what) => this.Notify(what);
@@ -16,19 +16,19 @@ public partial class BoxItem : InventoryItem
[Save("box_stats")]
public BoxItemStats Stats { get; set; } = new BoxItemStats();
public override string ItemName => Stats.Name;
public string ItemName => Stats.Name;
public override string Description => Stats.Description;
public string Description => Stats.Description;
public override float SpawnRate => Stats.SpawnRate;
public float SpawnRate => Stats.SpawnRate;
public override int ThrowDamage => Stats.ThrowDamage;
public int ThrowDamage => Stats.ThrowDamage;
public override float ThrowSpeed => Stats.ThrowSpeed;
public float ThrowSpeed => Stats.ThrowSpeed;
public override ItemTag ItemTag => Stats.ItemTag;
public ItemTag ItemTag => Stats.ItemTag;
public override Texture2D GetTexture() => Stats.Texture;
public Texture2D GetTexture() => Stats.Texture;
public void OnReady()
{

View File

@@ -7,7 +7,7 @@ using Zennysoft.Ma.Adapter;
namespace Zennysoft.Game.Ma;
[Meta(typeof(IAutoNode)), Id("consumable_item")]
public partial class ConsumableItem : InventoryItem
public partial class ConsumableItem : Node3D, IBaseInventoryItem
{
public override void _Notification(int what) => this.Notify(what);
@@ -15,15 +15,15 @@ public partial class ConsumableItem : InventoryItem
public override void _Ready() => _sprite.Texture = Stats.Texture;
public override string ItemName => Stats.Name;
public string ItemName => Stats.Name;
public override string Description => Stats.Description;
public string Description => Stats.Description;
public override float SpawnRate => Stats.SpawnRate;
public float SpawnRate => Stats.SpawnRate;
public override int ThrowDamage => Stats.ThrowDamage;
public int ThrowDamage => Stats.ThrowDamage;
public override float ThrowSpeed => Stats.ThrowSpeed;
public float ThrowSpeed => Stats.ThrowSpeed;
[Save("consumable_heal_hp")]
public int HealHPAmount => Stats.HealHPAmount;
@@ -34,10 +34,10 @@ public partial class ConsumableItem : InventoryItem
[Save("consumable_increase_vt")]
public int RaiseVTAmount => Stats.PermanentRaiseVTAmount;
public override ItemTag ItemTag => Stats.ItemTag;
public ItemTag ItemTag => Stats.ItemTag;
[Export]
[Save("consumable_item_stats")]
public ConsumableItemStats Stats { get; set; } = new ConsumableItemStats();
public override Texture2D GetTexture() => Stats.Texture;
public Texture2D GetTexture() => Stats.Texture;
}

View File

@@ -18,7 +18,7 @@ public partial class DroppedItem : RigidBody3D, IDroppedItem
[Node] private Area3D Pickup { get; set; } = default!;
public InventoryItem Item { get; set; }
public IBaseInventoryItem Item { get; set; }
public void OnResolved()
{

View File

@@ -7,7 +7,7 @@ using Zennysoft.Ma.Adapter;
namespace Zennysoft.Game.Ma;
[Meta(typeof(IAutoNode)), Id("effect_item")]
public partial class EffectItem : InventoryItem
public partial class EffectItem : Node3D, IBaseInventoryItem
{
public override void _Notification(int what) => this.Notify(what);
@@ -18,20 +18,20 @@ public partial class EffectItem : InventoryItem
_sprite.Texture = Stats.Texture;
}
public override string ItemName => Stats.Name;
public string ItemName => Stats.Name;
public override string Description => Stats.Description;
public string Description => Stats.Description;
public override float SpawnRate => Stats.SpawnRate;
public float SpawnRate => Stats.SpawnRate;
public override int ThrowDamage => Stats.ThrowDamage;
public int ThrowDamage => Stats.ThrowDamage;
public override float ThrowSpeed => Stats.ThrowSpeed;
public float ThrowSpeed => Stats.ThrowSpeed;
[Save("usable_tag")]
public UsableItemTag UsableItemTag => Stats.UsableItemTag;
public override ItemTag ItemTag => Stats.ItemTag;
public ItemTag ItemTag => Stats.ItemTag;
public void SetEffectTag(UsableItemTag effect) => Stats.UsableItemTag = effect;
@@ -39,5 +39,5 @@ public partial class EffectItem : InventoryItem
[Save("effect_item_stats")]
public EffectItemStats Stats { get; set; } = new EffectItemStats();
public override Texture2D GetTexture() => Stats.Texture;
public Texture2D GetTexture() => Stats.Texture;
}

View File

@@ -6,7 +6,7 @@ using Zennysoft.Game.Ma;
using Zennysoft.Ma.Adapter;
[Meta(typeof(IAutoNode)), Id("jewel")]
public partial class Jewel : InventoryItem, IAugmentItem
public partial class Jewel : Node3D, IAugmentItem
{
public override void _Notification(int what) => this.Notify(what);
@@ -17,23 +17,23 @@ public partial class Jewel : InventoryItem, IAugmentItem
_sprite.Texture = Stats.Texture;
}
public override string ItemName => Stats.Name;
public string ItemName => Stats.Name;
public override string Description => Stats.Description;
public string Description => Stats.Description;
public override float SpawnRate => Stats.SpawnRate;
public float SpawnRate => Stats.SpawnRate;
public override int ThrowDamage => Stats.ThrowDamage;
public int ThrowDamage => Stats.ThrowDamage;
public override float ThrowSpeed => Stats.ThrowSpeed;
public float ThrowSpeed => Stats.ThrowSpeed;
public override ItemTag ItemTag => Stats.ItemTag;
public ItemTag ItemTag => Stats.ItemTag;
public override Texture2D GetTexture() => Stats.Texture;
public Texture2D GetTexture() => Stats.Texture;
[Export]
[Save("jewel_stats")]
public JewelStats Stats { get; set; } = new JewelStats();
public JewelTags Augment => Stats.JewelTag;
public IAugmentType Augment { get; set; }
}

View File

@@ -7,30 +7,30 @@ using Zennysoft.Ma.Adapter;
using Zennysoft.Ma.Adapter.Entity;
[Meta(typeof(IAutoNode))]
public partial class Plastique : InventoryItem
public partial class Plastique : Node3D, IBaseInventoryItem
{
public override void _Notification(int what) => this.Notify(what);
[Node] private Sprite3D _sprite { get; set; }
public override string ItemName => Stats.Name;
public string ItemName => Stats.Name;
public override string Description => Stats.Description;
public string Description => Stats.Description;
public override float SpawnRate => Stats.SpawnRate;
public float SpawnRate => Stats.SpawnRate;
public override int ThrowDamage => Stats.ThrowDamage;
public int ThrowDamage => Stats.ThrowDamage;
public override float ThrowSpeed => Stats.ThrowSpeed;
public float ThrowSpeed => Stats.ThrowSpeed;
public override ItemTag ItemTag => Stats.ItemTag;
public ItemTag ItemTag => Stats.ItemTag;
public void OnResolved()
{
_sprite.Texture = Stats.Texture;
_sprite.Texture = Stats.Texture;
}
public override Texture2D GetTexture() => Stats.Texture;
public Texture2D GetTexture() => Stats.Texture;
[Export]
[Save("inventory_stats")]

View File

@@ -9,7 +9,7 @@ using Zennysoft.Ma.Adapter;
namespace Zennysoft.Game.Ma;
[Meta(typeof(IAutoNode)), Id("throwable_item")]
public partial class ThrowableItem : InventoryItem, IStackable
public partial class ThrowableItem : Node3D, IBaseInventoryItem, IStackable
{
public override void _Notification(int what) => this.Notify(what);
@@ -23,15 +23,15 @@ public partial class ThrowableItem : InventoryItem, IStackable
Count = new AutoProp<int>(rng.RandiRange(Stats.MinimumCount, Stats.MaximumCount));
}
public override string ItemName => Stats.Name;
public string ItemName => Stats.Name;
public override string Description => Stats.Description;
public string Description => Stats.Description;
public override float SpawnRate => Stats.SpawnRate;
public float SpawnRate => Stats.SpawnRate;
public override int ThrowDamage => Stats.ThrowDamage;
public int ThrowDamage => Stats.ThrowDamage;
public override float ThrowSpeed => Stats.ThrowSpeed;
public float ThrowSpeed => Stats.ThrowSpeed;
[Save("throwable_item_element")]
public ElementType ElementType => Stats.ElementType;
@@ -40,7 +40,7 @@ public partial class ThrowableItem : InventoryItem, IStackable
[Save("throwable_item_heal_vt")]
public int HealVTAmount => Stats.HealVTAmount;
public override ItemTag ItemTag => Stats.ItemTag;
public ItemTag ItemTag => Stats.ItemTag;
public void SetElementType(ElementType elementType) => Stats.ElementType = elementType;
@@ -53,7 +53,7 @@ public partial class ThrowableItem : InventoryItem, IStackable
[Save("throwable_item_stats")]
public ThrowableItemStats Stats { get; set; }
public override Texture2D GetTexture() => Stats.Texture;
public Texture2D GetTexture() => Stats.Texture;
public void SetCount(int count) => Count.OnNext(count);
}

View File

@@ -15,7 +15,7 @@ public partial class ThrownItem : RigidBody3D, IThrownItem
[Dependency] public IGame Game => this.DependOn<IGame>();
public InventoryItem ItemThatIsThrown { get; set; }
public IBaseInventoryItem ItemThatIsThrown { get; set; }
private EffectService _effectService;
private ItemReroller _itemReroller;

View File

@@ -2,14 +2,13 @@ using Chickensoft.AutoInject;
using Chickensoft.Introspection;
using Chickensoft.Serialization;
using Godot;
using System;
using Zennysoft.Ma.Adapter;
using Zennysoft.Ma.Adapter.Entity;
namespace Zennysoft.Game.Ma;
[Meta(typeof(IAutoNode)), Id("weapon")]
public partial class Weapon : EquipableItem
public partial class Weapon : Node3D, IWeapon
{
public override void _Notification(int what) => this.Notify(what);
@@ -25,26 +24,26 @@ public partial class Weapon : EquipableItem
_bonusLuck = Stats.BonusLuck;
}
public override string ItemName => Stats.Name;
public string ItemName => Stats.Name;
public override string Description => Stats.Description;
public string Description => Stats.Description;
public override float SpawnRate => Stats.SpawnRate;
public float SpawnRate => Stats.SpawnRate;
public override int ThrowDamage => Stats.ThrowDamage;
public int ThrowDamage => Stats.ThrowDamage;
public override float ThrowSpeed => Stats.ThrowSpeed;
public float ThrowSpeed => Stats.ThrowSpeed;
[Save("weapon_attack_speed")]
public double AttackSpeed => Stats.AttackSpeed;
[Save("weapon_tag")]
public WeaponTag WeaponTag => Stats.WeaponTag;
public override ItemTag ItemTag => Stats.ItemTag;
public ItemTag ItemTag => Stats.ItemTag;
[Save("weapon_element")]
public ElementType WeaponElement => Stats.WeaponElement;
public override ElementalResistanceSet ElementalResistance => new ElementalResistanceSet(Stats.AeolicResistance, Stats.HydricResistance, Stats.IgneousResistance, Stats.FerrumResistance, Stats.TelluricResistance, Stats.HolyResistance, Stats.CurseResistance);
public ElementalResistanceSet ElementalResistance => new ElementalResistanceSet(Stats.AeolicResistance, Stats.HydricResistance, Stats.IgneousResistance, Stats.FerrumResistance, Stats.TelluricResistance, Stats.HolyResistance, Stats.CurseResistance);
public void IncreaseAttack(int bonus) => _bonusDamage += bonus;
@@ -58,11 +57,15 @@ public partial class Weapon : EquipableItem
public void SetLuck(int newBonus) => _bonusLuck = newBonus;
public override int BonusAttack { get => _bonusDamage; }
public int BonusAttack { get => _bonusDamage; }
public override int BonusDefense { get => _bonusDefense; }
public int BonusDefense { get => _bonusDefense; }
public override int BonusLuck { get => _bonusLuck; }
public int BonusLuck { get => _bonusLuck; }
public int BonusHP { get; }
public int BonusVT { get; }
[Save("weapon_bonus_damage")]
private int _bonusDamage { get; set; } = 0;
@@ -76,6 +79,9 @@ public partial class Weapon : EquipableItem
[Export]
[Save("weapon_stats")]
public WeaponStats Stats { get; set; } = new WeaponStats();
public Augment Augment { get; set; }
public override Texture2D GetTexture() => Stats.Texture;
public bool Glued { get; set; }
public Texture2D GetTexture() => Stats.Texture;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b5x02ajrf40hw"
path.bptc="res://.godot/imported/column circle room 2_10.png-2f132ccde0b9a5fb1502fc83cb613b2e.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "a1d2e8cd2320c706dadbc269b6c5a192"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_10.png"
dest_files=["res://.godot/imported/column circle room 2_10.png-2f132ccde0b9a5fb1502fc83cb613b2e.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cns8qko3ivdgj"
path.bptc="res://.godot/imported/column circle room 2_2.png-d1f75ea0d93c7d13d6c9cb8d6d390b3d.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "231ff561a91024e714767959df574afc"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_2.png"
dest_files=["res://.godot/imported/column circle room 2_2.png-d1f75ea0d93c7d13d6c9cb8d6d390b3d.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c8addg7tv810q"
path.bptc="res://.godot/imported/column circle room 2_3.png-117a4f7a33c04f03888327fdde13dee5.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "f716d9c2cf24da2dd147d2b4c140b40e"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_3.png"
dest_files=["res://.godot/imported/column circle room 2_3.png-117a4f7a33c04f03888327fdde13dee5.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dmsi5iwektal2"
path.bptc="res://.godot/imported/column circle room 2_4.png-f891375b3f718485464b1e7c67559109.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "d8b89b09f48ac85cee33021597519581"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_4.png"
dest_files=["res://.godot/imported/column circle room 2_4.png-f891375b3f718485464b1e7c67559109.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bt5ux7gdg21jr"
path.bptc="res://.godot/imported/column circle room 2_5.png-78aee43711e00299e424383b4dd007bc.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "670fee02d0a4f29f405a7a3073987b05"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_5.png"
dest_files=["res://.godot/imported/column circle room 2_5.png-78aee43711e00299e424383b4dd007bc.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dqicogefse02s"
path.bptc="res://.godot/imported/column circle room 2_6.png-7213bcb4c2fc590b14a9b8b333eff280.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "7b4fd089ff7f1a39b8e9adeaa6f9ca56"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_6.png"
dest_files=["res://.godot/imported/column circle room 2_6.png-7213bcb4c2fc590b14a9b8b333eff280.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bhxwkjc1jid82"
path.bptc="res://.godot/imported/column circle room 2_7.png-4cefb84176984e92a9bd1ec6bf1d1ad6.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "8d34efacc2f9a7a99c009078b58010ce"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_7.png"
dest_files=["res://.godot/imported/column circle room 2_7.png-4cefb84176984e92a9bd1ec6bf1d1ad6.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://pqgfslnwrdjd"
path.bptc="res://.godot/imported/column circle room 2_8.png-a0fbcfc0fec4af0eb27202062938425c.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "e7e4a09916308fd7416afd61371c5593"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_8.png"
dest_files=["res://.godot/imported/column circle room 2_8.png-a0fbcfc0fec4af0eb27202062938425c.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cl5vctbyw2isj"
path.bptc="res://.godot/imported/column circle room 2_9.png-0d5d1105baa7caac655f10681bf3db52.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "f0820bdfcd90a51f14c904dd6b5b4cf4"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_9.png"
dest_files=["res://.godot/imported/column circle room 2_9.png-0d5d1105baa7caac655f10681bf3db52.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://p3buhacsl5m5"
path.bptc="res://.godot/imported/column circle room 2_AREA2_BLOCKED.png-a98778db0760f41b1db60ebdbe7bc10a.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "1acf4b54983678f4cf4c553acbb09982"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_AREA2_BLOCKED.png"
dest_files=["res://.godot/imported/column circle room 2_AREA2_BLOCKED.png-a98778db0760f41b1db60ebdbe7bc10a.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://db0v73jf5ily5"
path.bptc="res://.godot/imported/column circle room 2_AREA2_BLOCKED_B.png-ce696065f37834938ad65250954f398f.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "d22ac1d5bf225d03f3a8c84b0181ea3e"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_AREA2_BLOCKED_B.png"
dest_files=["res://.godot/imported/column circle room 2_AREA2_BLOCKED_B.png-ce696065f37834938ad65250954f398f.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://2kj16h8fjtjj"
path.bptc="res://.godot/imported/column circle room 2_AREA2_TILE-5.png-85ef671cf88670776ed734e540e63605.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "3593314383003b535dc027755dc49ea7"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_AREA2_TILE-5.png"
dest_files=["res://.godot/imported/column circle room 2_AREA2_TILE-5.png-85ef671cf88670776ed734e540e63605.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://hn4ueluylx87"
path.bptc="res://.godot/imported/column circle room 2_AREA2_WHITE_CONKRETE.png-03a539d77ec37c8da134028896f81808.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "307b116080fe0254862e45395c4d4f0b"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_AREA2_WHITE_CONKRETE.png"
dest_files=["res://.godot/imported/column circle room 2_AREA2_WHITE_CONKRETE.png-03a539d77ec37c8da134028896f81808.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c58qr7f410ykc"
path.bptc="res://.godot/imported/column circle room 2_AREA_2_MAIN_222STONE.png-43e722c40f6a9eb0b219e423cfe3e826.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "11027637ea8e7d257bd13c57efd3b5b4"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_AREA_2_MAIN_222STONE.png"
dest_files=["res://.godot/imported/column circle room 2_AREA_2_MAIN_222STONE.png-43e722c40f6a9eb0b219e423cfe3e826.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bhe75x8ydsmcy"
path.bptc="res://.godot/imported/column circle room 2_AREA_2_MAIN_STON2E.png-3671a8bc52fa1ede9ae1a06680c1fa15.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "139c50444b8c5bb604e01ab7f78d241c"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_AREA_2_MAIN_STON2E.png"
dest_files=["res://.godot/imported/column circle room 2_AREA_2_MAIN_STON2E.png-3671a8bc52fa1ede9ae1a06680c1fa15.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ba2e75deh8406"
path.bptc="res://.godot/imported/column circle room 2_AREA_2_MAIN_STONE.png-52301e7e604d91a0513039bc72d84044.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "74785e2a002a5145acbed78822e8513a"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_AREA_2_MAIN_STONE.png"
dest_files=["res://.godot/imported/column circle room 2_AREA_2_MAIN_STONE.png-52301e7e604d91a0513039bc72d84044.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bn3j7brskgnpw"
path.bptc="res://.godot/imported/column circle room 2_Area2Alt_Brick.png-dc7b2e0c5251ccc5609e10e541e339dd.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "32b891d8279aa35a682146eeda0c9908"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_Area2Alt_Brick.png"
dest_files=["res://.godot/imported/column circle room 2_Area2Alt_Brick.png-dc7b2e0c5251ccc5609e10e541e339dd.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cg1cg86sa0nre"
path.bptc="res://.godot/imported/column circle room 2_CEILING_AREA2.jpg-8d9328b0f369272fdc314657559cd9f9.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "9addb3d0b9b65c31722bce6151085b82"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_CEILING_AREA2.jpg"
dest_files=["res://.godot/imported/column circle room 2_CEILING_AREA2.jpg-8d9328b0f369272fdc314657559cd9f9.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://btbmw7u61de7b"
path.bptc="res://.godot/imported/column circle room 2_CHAIN_TEX2.png-dd8a27db68734911b8657ab16c687804.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "56815d64cc780787090d5b019dc5ece3"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_CHAIN_TEX2.png"
dest_files=["res://.godot/imported/column circle room 2_CHAIN_TEX2.png-dd8a27db68734911b8657ab16c687804.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://2iyw4qm0o0fc"
path.bptc="res://.godot/imported/column circle room 2_COLUMN_WHITE.png-b6b9bf8e11fb4491bea8585a98af670b.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "0e8fa39a22324fd5345ebb4d3f1deeec"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_COLUMN_WHITE.png"
dest_files=["res://.godot/imported/column circle room 2_COLUMN_WHITE.png-b6b9bf8e11fb4491bea8585a98af670b.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://7q86hq27darh"
path.bptc="res://.godot/imported/column circle room 2_CORRIDOR_PANEL_UPPER.png-4fb7c7bb0a3b5075ff09590b7c4b2b31.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "7a00947386bf978ae4a905d05098510a"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_CORRIDOR_PANEL_UPPER.png"
dest_files=["res://.godot/imported/column circle room 2_CORRIDOR_PANEL_UPPER.png-4fb7c7bb0a3b5075ff09590b7c4b2b31.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dlvp2rl3jdna"
path.bptc="res://.godot/imported/column circle room 2_DARKER_STONE_AREA_2.png-bb163201b33321877cd0e8b63104614a.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "a571ea9259cd4bdb7a8ab58b7439b400"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_DARKER_STONE_AREA_2.png"
dest_files=["res://.godot/imported/column circle room 2_DARKER_STONE_AREA_2.png-bb163201b33321877cd0e8b63104614a.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://br40e1hm086jc"
path.bptc="res://.godot/imported/column circle room 2_GREENBIT.png-9bec964a29e453c9b639995fb0e86960.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "b50650b90bd9044ba2130271343845b1"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_GREENBIT.png"
dest_files=["res://.godot/imported/column circle room 2_GREENBIT.png-9bec964a29e453c9b639995fb0e86960.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bb8bhqfh7mrbc"
path.bptc="res://.godot/imported/column circle room 2_GREENBIT_48.png-4c5382ff46c766c76d5054bb5eee72b2.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "a144df30f69aec59d6b979094d0a6551"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_GREENBIT_48.png"
dest_files=["res://.godot/imported/column circle room 2_GREENBIT_48.png-4c5382ff46c766c76d5054bb5eee72b2.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://wj4p32xvkswv"
path.bptc="res://.godot/imported/column circle room 2_HAND-CYCLE-FLOOR.png-f07de1b3843312c1d23234653a2743b4.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "0c59057675ee2b263ee1d236ad1f27a8"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_HAND-CYCLE-FLOOR.png"
dest_files=["res://.godot/imported/column circle room 2_HAND-CYCLE-FLOOR.png-f07de1b3843312c1d23234653a2743b4.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 MiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dgm8h7hqwo5g1"
path.bptc="res://.godot/imported/column circle room 2_M13_14.png-920af754e263823f8c2e8549c9f6fbba.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "161ac059f7cd3f17c47a3080ee7cae60"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_M13_14.png"
dest_files=["res://.godot/imported/column circle room 2_M13_14.png-920af754e263823f8c2e8549c9f6fbba.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://e5nk8saf0m2"
path.bptc="res://.godot/imported/column circle room 2_M13_49.png-ec3e9fdae45b600fbee12f40a186220f.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "6bc1ff8bfa0634790c964cfe1df3872a"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_M13_49.png"
dest_files=["res://.godot/imported/column circle room 2_M13_49.png-ec3e9fdae45b600fbee12f40a186220f.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ch1hxea03wcit"
path.bptc="res://.godot/imported/column circle room 2_RUBBLE_1.png-bfd3bff1f7a5097edad04113646d9c1a.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "38ef11cea3eaf648a0118ef91b3526c2"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_RUBBLE_1.png"
dest_files=["res://.godot/imported/column circle room 2_RUBBLE_1.png-bfd3bff1f7a5097edad04113646d9c1a.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://vjrca5qck1v4"
path.bptc="res://.godot/imported/column circle room 2_SD137.jpg-f31949369320b30ab7e5cc3c73c376d1.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "f7f09a4c0799b488c95cf6389716ac71"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_SD137.jpg"
dest_files=["res://.godot/imported/column circle room 2_SD137.jpg-f31949369320b30ab7e5cc3c73c376d1.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cwtdvqnujvoqk"
path.bptc="res://.godot/imported/column circle room 2_STONE_PANEL_AREA2png.png-611224af4a47aa50a7cd7472ad550dde.bptc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "2b320328a359208db4932d4e57f0911b"
}
[deps]
source_file="res://src/map/dungeon/special collision models/column circle room 2_STONE_PANEL_AREA2png.png"
dest_files=["res://.godot/imported/column circle room 2_STONE_PANEL_AREA2png.png-611224af4a47aa50a7cd7472ad550dde.bptc.ctex"]
[params]
compress/mode=2
compress/high_quality=true
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Some files were not shown because too many files have changed in this diff Show More