Add scene and class to all enemy types, update all floors with enemy spawn types and rates
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
[ext_resource type="PackedScene" uid="uid://dcm53j3rncxdm" path="res://src/enemy/enemy_types/06. chariot/ChariotModelView.tscn" id="5_vk1lh"]
|
||||
[ext_resource type="PackedScene" uid="uid://bimjnsu52y3xi" path="res://src/enemy/enemy_types/01. sproingy/SproingyModelView.tscn" id="6_hpkd1"]
|
||||
[ext_resource type="PackedScene" uid="uid://bup8c4x1na3aw" path="res://src/enemy/enemy_types/03. filth_eater/FilthEaterModelView.tscn" id="8_dvixg"]
|
||||
[ext_resource type="PackedScene" uid="uid://bls3mcsyld4vy" path="res://src/enemy/enemy_types/09. Agi/AgiModelView.tscn" id="9_utjpw"]
|
||||
[ext_resource type="PackedScene" uid="uid://bls3mcsyld4vy" path="res://src/enemy/enemy_types/09. Agi/AgiDemonModelView.tscn" id="9_utjpw"]
|
||||
[ext_resource type="PackedScene" uid="uid://cu7n814hhtjwm" path="res://src/enemy/enemy_types/9b. Aqueos Demon/AqueosModelView.tscn" id="10_ylptw"]
|
||||
[ext_resource type="PackedScene" uid="uid://c2i8ylr3y0bri" path="res://src/enemy/enemy_types/08a. Ambassador/AmbassadorModelView.tscn" id="11_fm7p5"]
|
||||
[ext_resource type="PackedScene" uid="uid://72lbcmp4bcx4" path="res://src/enemy/enemy_types/08b. Ambassador (red)/AmbassadorSmallModelView.tscn" id="12_5hrw6"]
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
shader_type canvas_item;
|
||||
|
||||
void vertex() {
|
||||
// Called for every vertex the material is visible on.
|
||||
}
|
||||
|
||||
void fragment() {
|
||||
// Called for every pixel the material is visible on.
|
||||
}
|
||||
|
||||
//void light() {
|
||||
// Called for every pixel for every light affecting the CanvasItem.
|
||||
// Uncomment to replace the default light processing function with this one.
|
||||
//}
|
||||
@@ -1 +0,0 @@
|
||||
uid://ctl63y5wwil04
|
||||
@@ -1,28 +1,10 @@
|
||||
[gd_scene load_steps=10 format=3 uid="uid://cvk007twac22c"]
|
||||
[gd_scene load_steps=9 format=3 uid="uid://cvk007twac22c"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cohal8w5ceneg" path="res://src/enemy/enemy_types/03. filth_eater/FilthEater.cs" id="1_fyc13"]
|
||||
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="2_mqiog"]
|
||||
[ext_resource type="Resource" uid="uid://coyidduu5uhsp" path="res://src/enemy/enemy_types/03. filth_eater/FilthEaterStats.tres" id="2_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="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="4_5eid5"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_0y048"]
|
||||
script = ExtResource("2_mqiog")
|
||||
CurrentHP = 50.0
|
||||
MaximumHP = 50.0
|
||||
CurrentAttack = 15
|
||||
CurrentDefense = 5
|
||||
MaxAttack = 15
|
||||
MaxDefense = 5
|
||||
ExpFromDefeat = 15
|
||||
Luck = 0.05
|
||||
TelluricResistance = 0.0
|
||||
AeolicResistance = 0.0
|
||||
HydricResistance = 0.0
|
||||
IgneousResistance = 0.0
|
||||
FerrumResistance = 0.0
|
||||
DropsSoulGemChance = 0.75
|
||||
metadata/_custom_type_script = ExtResource("2_mqiog")
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
|
||||
radius = 1.0
|
||||
|
||||
@@ -41,7 +23,6 @@ metadata/_custom_type_script = ExtResource("4_5eid5")
|
||||
|
||||
[node name="FilthEater" type="CharacterBody3D"]
|
||||
process_mode = 1
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0)
|
||||
collision_layer = 10
|
||||
collision_mask = 11
|
||||
axis_lock_linear_y = true
|
||||
@@ -49,7 +30,7 @@ axis_lock_angular_x = true
|
||||
script = ExtResource("1_fyc13")
|
||||
SecondaryAttackElementalType = 2
|
||||
SecondaryAttackElementalDamageBonus = 1.15
|
||||
_enemyStatResource = SubResource("Resource_0y048")
|
||||
_enemyStatResource = ExtResource("2_p438s")
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
[gd_resource type="Resource" script_class="EnemyStatResource" load_steps=2 format=3 uid="uid://coyidduu5uhsp"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="1_o2ug3"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_o2ug3")
|
||||
CurrentHP = 50.0
|
||||
MaximumHP = 50.0
|
||||
CurrentAttack = 15
|
||||
CurrentDefense = 5
|
||||
MaxAttack = 15
|
||||
MaxDefense = 5
|
||||
ExpFromDefeat = 15
|
||||
Luck = 0.05
|
||||
_telluricResistance = 0.0
|
||||
_aeolicResistance = 0.0
|
||||
_hydricResistance = 0.0
|
||||
_igneousResistance = 0.0
|
||||
_ferrumResistance = 0.0
|
||||
DropsSoulGemChance = 0.75
|
||||
metadata/_custom_type_script = ExtResource("1_o2ug3")
|
||||
@@ -30,7 +30,7 @@ public partial class Sara : Enemy, IHasPrimaryAttack, IHasSecondaryAttack, ICanP
|
||||
((EnemyModelView2D)_enemyModelView).Hitbox.AreaEntered += Hitbox_AreaEntered;
|
||||
}
|
||||
|
||||
public new void OnPhysicsProcess(double delta)
|
||||
public void OnPhysicsProcess(double delta)
|
||||
{
|
||||
_enemyLogic.Input(new EnemyLogic.Input.PhysicsTick(delta));
|
||||
|
||||
|
||||
@@ -1,28 +1,10 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://bksq62muhk3h5"]
|
||||
[gd_scene load_steps=8 format=3 uid="uid://bksq62muhk3h5"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://jjulhqd5g3bd" path="res://src/enemy/enemy_types/04. sara/Sara.cs" id="1_1grvw"]
|
||||
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="2_14et8"]
|
||||
[ext_resource type="Resource" uid="uid://b0e6yx54hhbw7" path="res://src/enemy/enemy_types/04. sara/SaraStats.tres" id="2_1grvw"]
|
||||
[ext_resource type="PackedScene" uid="uid://pbnsngx5jvrh" path="res://src/enemy/NavigationAgentClient.tscn" id="3_c4qcm"]
|
||||
[ext_resource type="PackedScene" uid="uid://bli0t0d6ommvi" path="res://src/enemy/enemy_types/04. sara/SaraModelView.tscn" id="4_82s0m"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_oln85"]
|
||||
script = ExtResource("2_14et8")
|
||||
CurrentHP = 30.0
|
||||
MaximumHP = 30
|
||||
CurrentAttack = 15
|
||||
CurrentDefense = 7
|
||||
MaxAttack = 15
|
||||
MaxDefense = 7
|
||||
ExpFromDefeat = 5
|
||||
Luck = 0.05
|
||||
_telluricResistance = 0.0
|
||||
_aeolicResistance = 0.0
|
||||
_hydricResistance = 0.0
|
||||
_igneousResistance = 0.0
|
||||
_ferrumResistance = 0.0
|
||||
DropsSoulGemChance = 0.75
|
||||
metadata/_custom_type_script = ExtResource("2_14et8")
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
|
||||
radius = 0.106078
|
||||
height = 1.23076
|
||||
@@ -42,7 +24,7 @@ axis_lock_linear_y = true
|
||||
axis_lock_angular_x = true
|
||||
axis_lock_angular_z = true
|
||||
script = ExtResource("1_1grvw")
|
||||
_enemyStatResource = SubResource("Resource_oln85")
|
||||
_enemyStatResource = ExtResource("2_1grvw")
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
[gd_resource type="Resource" script_class="EnemyStatResource" load_steps=2 format=3 uid="uid://b0e6yx54hhbw7"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="1_besl4"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_besl4")
|
||||
CurrentHP = 30.0
|
||||
MaximumHP = 30
|
||||
CurrentAttack = 15
|
||||
CurrentDefense = 7
|
||||
MaxAttack = 15
|
||||
MaxDefense = 7
|
||||
ExpFromDefeat = 5
|
||||
Luck = 0.05
|
||||
_telluricResistance = 0.0
|
||||
_aeolicResistance = 0.0
|
||||
_hydricResistance = 0.0
|
||||
_igneousResistance = 0.0
|
||||
_ferrumResistance = 0.0
|
||||
DropsSoulGemChance = 0.75
|
||||
metadata/_custom_type_script = ExtResource("1_besl4")
|
||||
@@ -1,29 +1,11 @@
|
||||
[gd_scene load_steps=11 format=3 uid="uid://c6tqt27ql8s35"]
|
||||
[gd_scene load_steps=10 format=3 uid="uid://c6tqt27ql8s35"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://fwtjthix6awv" path="res://src/enemy/enemy_types/07. chinthe/Chinthe.cs" id="1_vw2ww"]
|
||||
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="2_120m2"]
|
||||
[ext_resource type="Resource" uid="uid://c854s8bdil3" path="res://src/enemy/enemy_types/07. chinthe/ChintheStats.tres" id="2_d665t"]
|
||||
[ext_resource type="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="3_567xa"]
|
||||
[ext_resource type="PackedScene" uid="uid://pbnsngx5jvrh" path="res://src/enemy/NavigationAgentClient.tscn" id="3_d665t"]
|
||||
[ext_resource type="PackedScene" uid="uid://byd7cwxq1be6f" path="res://src/enemy/enemy_types/07. chinthe/ChinteModelView.tscn" id="3_ncr2e"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_d665t"]
|
||||
script = ExtResource("2_120m2")
|
||||
CurrentHP = 200.0
|
||||
MaximumHP = 0
|
||||
CurrentAttack = 10
|
||||
CurrentDefense = 10
|
||||
MaxAttack = 10
|
||||
MaxDefense = 10
|
||||
ExpFromDefeat = 100
|
||||
Luck = 0.05
|
||||
_telluricResistance = 0.0
|
||||
_aeolicResistance = 0.0
|
||||
_hydricResistance = 0.0
|
||||
_igneousResistance = 0.0
|
||||
_ferrumResistance = 0.0
|
||||
DropsSoulGemChance = 0.75
|
||||
metadata/_custom_type_script = "uid://dnkmr0eq1sij0"
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
|
||||
radius = 0.226425
|
||||
height = 2.02807
|
||||
@@ -50,7 +32,7 @@ axis_lock_angular_x = true
|
||||
axis_lock_angular_z = true
|
||||
motion_mode = 1
|
||||
script = ExtResource("1_vw2ww")
|
||||
_enemyStatResource = SubResource("Resource_d665t")
|
||||
_enemyStatResource = ExtResource("2_d665t")
|
||||
|
||||
[node name="NavigationAgentClient" parent="." instance=ExtResource("3_d665t")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
[gd_resource type="Resource" script_class="EnemyStatResource" load_steps=2 format=3 uid="uid://c854s8bdil3"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="1_616yc"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_616yc")
|
||||
CurrentHP = 200.0
|
||||
MaximumHP = 200
|
||||
CurrentAttack = 10
|
||||
CurrentDefense = 10
|
||||
MaxAttack = 10
|
||||
MaxDefense = 10
|
||||
ExpFromDefeat = 100
|
||||
Luck = 0.05
|
||||
_telluricResistance = 0.0
|
||||
_aeolicResistance = 0.0
|
||||
_hydricResistance = 0.0
|
||||
_igneousResistance = 0.0
|
||||
_ferrumResistance = 0.0
|
||||
DropsSoulGemChance = 0.75
|
||||
metadata/_custom_type_script = "uid://dnkmr0eq1sij0"
|
||||
@@ -1,11 +0,0 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://byqhrq73p1y7v"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://c6tqt27ql8s35" path="res://src/enemy/enemy_types/07. chinthe/Chinthe.tscn" id="1_un7uu"]
|
||||
[ext_resource type="PackedScene" uid="uid://cfecvvav8kkp6" path="res://src/player/Player.tscn" id="2_w0g4y"]
|
||||
|
||||
[node name="ChintheTest" type="Node3D"]
|
||||
|
||||
[node name="Chinthe" parent="." instance=ExtResource("1_un7uu")]
|
||||
|
||||
[node name="Player" parent="." instance=ExtResource("2_w0g4y")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.12146, 4.44506)
|
||||
@@ -0,0 +1,90 @@
|
||||
using Chickensoft.AutoInject;
|
||||
using Chickensoft.Introspection;
|
||||
using Godot;
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using Zennysoft.Game.Abstractions;
|
||||
using Zennysoft.Ma.Adapter;
|
||||
|
||||
namespace Zennysoft.Game.Ma;
|
||||
|
||||
[Meta(typeof(IAutoNode))]
|
||||
public partial class Ambassador : Enemy, IHasPrimaryAttack, IHasSecondaryAttack, ICanPatrol
|
||||
{
|
||||
public override void _Notification(int what) => this.Notify(what);
|
||||
|
||||
[Export]
|
||||
public ElementType PrimaryAttackElementalType { get; set; } = ElementType.None;
|
||||
[Export]
|
||||
public double PrimaryAttackElementalDamageBonus { get; set; } = 1.0;
|
||||
|
||||
[Node] private INavigationAgentClient _navigationAgentClient { get; set; } = default!;
|
||||
|
||||
public ElementType SecondaryAttackElementalType { get; set; } = ElementType.None;
|
||||
|
||||
public double SecondaryAttackElementalDamageBonus { get; set; } = 1.0;
|
||||
|
||||
public void OnReady()
|
||||
{
|
||||
SetPhysicsProcess(true);
|
||||
((EnemyModelView2D)_enemyModelView).Hitbox.AreaEntered += Hitbox_AreaEntered;
|
||||
}
|
||||
|
||||
public void OnPhysicsProcess(double delta)
|
||||
{
|
||||
_enemyLogic.Input(new EnemyLogic.Input.PhysicsTick(delta));
|
||||
|
||||
if (_enemyLogic.Value is not EnemyLogic.State.Activated)
|
||||
return;
|
||||
|
||||
if (_enemyLogic.Value is EnemyLogic.State.FollowPlayer && GlobalPosition.DistanceTo(_player.CurrentPosition) < 1.5f)
|
||||
_enemyLogic.Input(new EnemyLogic.Input.StartAttacking());
|
||||
if (_enemyLogic.Value is EnemyLogic.State.FollowPlayer && GlobalPosition.DistanceTo(_player.CurrentPosition) > 30f)
|
||||
_enemyLogic.Input(new EnemyLogic.Input.LostPlayer());
|
||||
if (_enemyLogic.Value is EnemyLogic.State.Attacking && GlobalPosition.DistanceTo(_player.CurrentPosition) > 3f)
|
||||
_enemyLogic.Input(new EnemyLogic.Input.Alerted());
|
||||
|
||||
_navigationAgentClient.CalculateVelocity(GlobalPosition, true);
|
||||
|
||||
base._PhysicsProcess(delta);
|
||||
}
|
||||
|
||||
public override void TakeAction()
|
||||
{
|
||||
var rng = new RandomNumberGenerator();
|
||||
var options = new List<Action>() { PrimaryAttack, SecondaryAttack };
|
||||
var selection = rng.RandWeighted([0.875f, 0.125f]);
|
||||
options[(int)selection].Invoke();
|
||||
}
|
||||
|
||||
public void PrimaryAttack()
|
||||
{
|
||||
_enemyModelView.PlayPrimaryAttackAnimation();
|
||||
}
|
||||
|
||||
public void SecondaryAttack()
|
||||
{
|
||||
_enemyModelView.PlaySecondaryAttackAnimation();
|
||||
}
|
||||
|
||||
public override void SetTarget(Vector3 target) => _navigationAgentClient.SetTarget(target);
|
||||
|
||||
public void Patrol()
|
||||
{
|
||||
var rng = new RandomNumberGenerator();
|
||||
rng.Randomize();
|
||||
var randomizedSpot = new Vector3(rng.RandfRange(-5.0f, 5.0f), 0, rng.RandfRange(-5.0f, 5.0f));
|
||||
_enemyLogic.Input(new EnemyLogic.Input.PatrolToRandomSpot(GlobalPosition + randomizedSpot));
|
||||
_enemyLogic.Input(new EnemyLogic.Input.StartPatrol());
|
||||
}
|
||||
|
||||
private void Hitbox_AreaEntered(Area3D area)
|
||||
{
|
||||
var target = area.GetOwner();
|
||||
if (target is IPlayer player)
|
||||
{
|
||||
var damage = _enemyStatResource.CurrentAttack * PrimaryAttackElementalDamageBonus;
|
||||
player.TakeDamage(damage, PrimaryAttackElementalType, BattleExtensions.IsCriticalHit(_enemyStatResource.Luck));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
uid://dauir5q616wyq
|
||||
@@ -0,0 +1,78 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://fosk3kt7vp8d"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dauir5q616wyq" path="res://src/enemy/enemy_types/08a. Ambassador/Ambassador.cs" id="1_m2guv"]
|
||||
[ext_resource type="Resource" uid="uid://bcpygpm2q5bpn" path="res://src/enemy/enemy_types/08a. Ambassador/AmbassadorStats.tres" id="2_pjmem"]
|
||||
[ext_resource type="PackedScene" uid="uid://pbnsngx5jvrh" path="res://src/enemy/NavigationAgentClient.tscn" id="3_pj8fe"]
|
||||
[ext_resource type="PackedScene" uid="uid://c2i8ylr3y0bri" path="res://src/enemy/enemy_types/08a. Ambassador/AmbassadorModelView.tscn" id="4_pjmem"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
|
||||
radius = 0.106078
|
||||
height = 1.23076
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_8vcnq"]
|
||||
radius = 0.57308
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_jbgmx"]
|
||||
height = 5.0
|
||||
radius = 1.0
|
||||
|
||||
[node name="Ambassador" type="CharacterBody3D"]
|
||||
process_mode = 1
|
||||
collision_layer = 10
|
||||
collision_mask = 3
|
||||
axis_lock_linear_y = true
|
||||
axis_lock_angular_x = true
|
||||
axis_lock_angular_z = true
|
||||
script = ExtResource("1_m2guv")
|
||||
_enemyStatResource = ExtResource("2_pjmem")
|
||||
|
||||
[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, 0, 0)
|
||||
shape = SubResource("CapsuleShape3D_cwfph")
|
||||
|
||||
[node name="Navigation" type="Node3D" parent="."]
|
||||
|
||||
[node name="NavigationAgentClient" parent="Navigation" instance=ExtResource("3_pj8fe")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="Collision" type="Node3D" parent="."]
|
||||
|
||||
[node name="Collision" type="Area3D" parent="Collision"]
|
||||
collision_layer = 2048
|
||||
collision_mask = 0
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Collision/Collision"]
|
||||
shape = SubResource("SphereShape3D_8vcnq")
|
||||
|
||||
[node name="LineOfSight" type="Area3D" parent="Collision"]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)
|
||||
collision_layer = 2
|
||||
collision_mask = 2
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Collision/LineOfSight"]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, -2)
|
||||
shape = SubResource("CylinderShape3D_jbgmx")
|
||||
|
||||
[node name="Raycast" type="RayCast3D" parent="Collision"]
|
||||
unique_name_in_owner = true
|
||||
target_position = Vector3(0, 0, -5)
|
||||
collision_mask = 3
|
||||
|
||||
[node name="Visual" type="Node3D" parent="."]
|
||||
|
||||
[node name="EnemyModelView" parent="Visual" instance=ExtResource("4_pjmem")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="Timers" type="Node" parent="."]
|
||||
|
||||
[node name="PatrolTimer" type="Timer" parent="Timers"]
|
||||
unique_name_in_owner = true
|
||||
wait_time = 10.0
|
||||
autostart = true
|
||||
|
||||
[node name="AttackTimer" type="Timer" parent="Timers"]
|
||||
unique_name_in_owner = true
|
||||
wait_time = 0.8
|
||||
autostart = true
|
||||
@@ -0,0 +1,21 @@
|
||||
[gd_resource type="Resource" script_class="EnemyStatResource" load_steps=2 format=3 uid="uid://bcpygpm2q5bpn"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="1_1vmbx"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_1vmbx")
|
||||
CurrentHP = 100.0
|
||||
MaximumHP = 100
|
||||
CurrentAttack = 10
|
||||
CurrentDefense = 10
|
||||
MaxAttack = 10
|
||||
MaxDefense = 10
|
||||
ExpFromDefeat = 0
|
||||
Luck = 0.05
|
||||
_telluricResistance = 0.0
|
||||
_aeolicResistance = 0.0
|
||||
_hydricResistance = 0.0
|
||||
_igneousResistance = 0.0
|
||||
_ferrumResistance = 0.0
|
||||
DropsSoulGemChance = 0.75
|
||||
metadata/_custom_type_script = "uid://dnkmr0eq1sij0"
|
||||
@@ -0,0 +1,78 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://c5gbaybqm4cuk"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dauir5q616wyq" path="res://src/enemy/enemy_types/08a. Ambassador/Ambassador.cs" id="1_4nav4"]
|
||||
[ext_resource type="Resource" uid="uid://doycpt2aqxnx" path="res://src/enemy/enemy_types/08b. Ambassador (red)/AmbassadorStats.tres" id="2_hqkeq"]
|
||||
[ext_resource type="PackedScene" uid="uid://pbnsngx5jvrh" path="res://src/enemy/NavigationAgentClient.tscn" id="3_31xt7"]
|
||||
[ext_resource type="PackedScene" uid="uid://72lbcmp4bcx4" path="res://src/enemy/enemy_types/08b. Ambassador (red)/AmbassadorSmallModelView.tscn" id="4_hqkeq"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
|
||||
radius = 0.106078
|
||||
height = 1.23076
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_8vcnq"]
|
||||
radius = 0.57308
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_jbgmx"]
|
||||
height = 5.0
|
||||
radius = 1.0
|
||||
|
||||
[node name="AmbassadorRed" type="CharacterBody3D"]
|
||||
process_mode = 1
|
||||
collision_layer = 10
|
||||
collision_mask = 3
|
||||
axis_lock_linear_y = true
|
||||
axis_lock_angular_x = true
|
||||
axis_lock_angular_z = true
|
||||
script = ExtResource("1_4nav4")
|
||||
_enemyStatResource = ExtResource("2_hqkeq")
|
||||
|
||||
[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, 0, 0)
|
||||
shape = SubResource("CapsuleShape3D_cwfph")
|
||||
|
||||
[node name="Navigation" type="Node3D" parent="."]
|
||||
|
||||
[node name="NavigationAgentClient" parent="Navigation" instance=ExtResource("3_31xt7")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="Collision" type="Node3D" parent="."]
|
||||
|
||||
[node name="Collision" type="Area3D" parent="Collision"]
|
||||
collision_layer = 2048
|
||||
collision_mask = 0
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Collision/Collision"]
|
||||
shape = SubResource("SphereShape3D_8vcnq")
|
||||
|
||||
[node name="LineOfSight" type="Area3D" parent="Collision"]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)
|
||||
collision_layer = 2
|
||||
collision_mask = 2
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Collision/LineOfSight"]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, -2)
|
||||
shape = SubResource("CylinderShape3D_jbgmx")
|
||||
|
||||
[node name="Raycast" type="RayCast3D" parent="Collision"]
|
||||
unique_name_in_owner = true
|
||||
target_position = Vector3(0, 0, -5)
|
||||
collision_mask = 3
|
||||
|
||||
[node name="Visual" type="Node3D" parent="."]
|
||||
|
||||
[node name="EnemyModelView" parent="Visual" instance=ExtResource("4_hqkeq")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="Timers" type="Node" parent="."]
|
||||
|
||||
[node name="PatrolTimer" type="Timer" parent="Timers"]
|
||||
unique_name_in_owner = true
|
||||
wait_time = 10.0
|
||||
autostart = true
|
||||
|
||||
[node name="AttackTimer" type="Timer" parent="Timers"]
|
||||
unique_name_in_owner = true
|
||||
wait_time = 0.8
|
||||
autostart = true
|
||||
@@ -0,0 +1,21 @@
|
||||
[gd_resource type="Resource" script_class="EnemyStatResource" load_steps=2 format=3 uid="uid://doycpt2aqxnx"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="1_rf66x"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_rf66x")
|
||||
CurrentHP = 100.0
|
||||
MaximumHP = 100
|
||||
CurrentAttack = 10
|
||||
CurrentDefense = 10
|
||||
MaxAttack = 10
|
||||
MaxDefense = 10
|
||||
ExpFromDefeat = 0
|
||||
Luck = 0.05
|
||||
_telluricResistance = 0.0
|
||||
_aeolicResistance = 0.0
|
||||
_hydricResistance = 0.0
|
||||
_igneousResistance = 0.0
|
||||
_ferrumResistance = 0.0
|
||||
DropsSoulGemChance = 0.75
|
||||
metadata/_custom_type_script = "uid://dnkmr0eq1sij0"
|
||||
@@ -0,0 +1,78 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://b4oliop60eghn"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dauir5q616wyq" path="res://src/enemy/enemy_types/08a. Ambassador/Ambassador.cs" id="1_ln0kc"]
|
||||
[ext_resource type="Resource" uid="uid://dudtbfjfekkh1" path="res://src/enemy/enemy_types/08c. Ambassador (steel)/AmbassadorSteelStats.tres" id="2_kdt1g"]
|
||||
[ext_resource type="PackedScene" uid="uid://pbnsngx5jvrh" path="res://src/enemy/NavigationAgentClient.tscn" id="3_aubqt"]
|
||||
[ext_resource type="PackedScene" uid="uid://lc5koiqn1sca" path="res://src/enemy/enemy_types/08c. Ambassador (steel)/AmbassadorSteelModelView.tscn" id="4_kdt1g"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
|
||||
radius = 0.106078
|
||||
height = 1.23076
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_8vcnq"]
|
||||
radius = 0.57308
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_jbgmx"]
|
||||
height = 5.0
|
||||
radius = 1.0
|
||||
|
||||
[node name="AmbassadorSteel" type="CharacterBody3D"]
|
||||
process_mode = 1
|
||||
collision_layer = 10
|
||||
collision_mask = 3
|
||||
axis_lock_linear_y = true
|
||||
axis_lock_angular_x = true
|
||||
axis_lock_angular_z = true
|
||||
script = ExtResource("1_ln0kc")
|
||||
_enemyStatResource = ExtResource("2_kdt1g")
|
||||
|
||||
[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, 0, 0)
|
||||
shape = SubResource("CapsuleShape3D_cwfph")
|
||||
|
||||
[node name="Navigation" type="Node3D" parent="."]
|
||||
|
||||
[node name="NavigationAgentClient" parent="Navigation" instance=ExtResource("3_aubqt")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="Collision" type="Node3D" parent="."]
|
||||
|
||||
[node name="Collision" type="Area3D" parent="Collision"]
|
||||
collision_layer = 2048
|
||||
collision_mask = 0
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Collision/Collision"]
|
||||
shape = SubResource("SphereShape3D_8vcnq")
|
||||
|
||||
[node name="LineOfSight" type="Area3D" parent="Collision"]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)
|
||||
collision_layer = 2
|
||||
collision_mask = 2
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Collision/LineOfSight"]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, -2)
|
||||
shape = SubResource("CylinderShape3D_jbgmx")
|
||||
|
||||
[node name="Raycast" type="RayCast3D" parent="Collision"]
|
||||
unique_name_in_owner = true
|
||||
target_position = Vector3(0, 0, -5)
|
||||
collision_mask = 3
|
||||
|
||||
[node name="Visual" type="Node3D" parent="."]
|
||||
|
||||
[node name="EnemyModelView" parent="Visual" instance=ExtResource("4_kdt1g")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="Timers" type="Node" parent="."]
|
||||
|
||||
[node name="PatrolTimer" type="Timer" parent="Timers"]
|
||||
unique_name_in_owner = true
|
||||
wait_time = 10.0
|
||||
autostart = true
|
||||
|
||||
[node name="AttackTimer" type="Timer" parent="Timers"]
|
||||
unique_name_in_owner = true
|
||||
wait_time = 0.8
|
||||
autostart = true
|
||||
@@ -0,0 +1,21 @@
|
||||
[gd_resource type="Resource" script_class="EnemyStatResource" load_steps=2 format=3 uid="uid://dudtbfjfekkh1"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="1_wijuv"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_wijuv")
|
||||
CurrentHP = 100.0
|
||||
MaximumHP = 100
|
||||
CurrentAttack = 10
|
||||
CurrentDefense = 10
|
||||
MaxAttack = 10
|
||||
MaxDefense = 10
|
||||
ExpFromDefeat = 0
|
||||
Luck = 0.05
|
||||
_telluricResistance = 0.0
|
||||
_aeolicResistance = 0.0
|
||||
_hydricResistance = 0.0
|
||||
_igneousResistance = 0.0
|
||||
_ferrumResistance = 0.0
|
||||
DropsSoulGemChance = 0.75
|
||||
metadata/_custom_type_script = "uid://dnkmr0eq1sij0"
|
||||
86
Zennysoft.Game.Ma/src/enemy/enemy_types/09. Agi/AgiDemon.cs
Normal file
86
Zennysoft.Game.Ma/src/enemy/enemy_types/09. Agi/AgiDemon.cs
Normal file
@@ -0,0 +1,86 @@
|
||||
using Chickensoft.AutoInject;
|
||||
using Chickensoft.Introspection;
|
||||
using Godot;
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using Zennysoft.Ma.Adapter;
|
||||
using Zennysoft.Game.Abstractions;
|
||||
|
||||
namespace Zennysoft.Game.Ma;
|
||||
|
||||
[Meta(typeof(IAutoNode))]
|
||||
public partial class AgiDemon : Enemy, IHasPrimaryAttack, IHasSecondaryAttack, ICanPatrol
|
||||
{
|
||||
public override void _Notification(int what) => this.Notify(what);
|
||||
|
||||
[Export]
|
||||
public ElementType PrimaryAttackElementalType { get; set; } = ElementType.None;
|
||||
[Export]
|
||||
public double PrimaryAttackElementalDamageBonus { get; set; } = 1.0;
|
||||
[Export]
|
||||
public ElementType SecondaryAttackElementalType { get; set; } = ElementType.None;
|
||||
[Export]
|
||||
public double SecondaryAttackElementalDamageBonus { get; set; } = 1.0;
|
||||
|
||||
[Node] private INavigationAgentClient _navigationAgentClient { get; set; } = default!;
|
||||
|
||||
public void OnReady()
|
||||
{
|
||||
SetPhysicsProcess(true);
|
||||
((EnemyModelView2D)_enemyModelView).Hitbox.AreaEntered += Hitbox_AreaEntered;
|
||||
}
|
||||
|
||||
public void OnPhysicsProcess(double delta)
|
||||
{
|
||||
_enemyLogic.Input(new EnemyLogic.Input.PhysicsTick(delta));
|
||||
|
||||
if (_enemyLogic.Value is EnemyLogic.State.FollowPlayer && GlobalPosition.DistanceTo(_player.CurrentPosition) < 2.5f)
|
||||
_enemyLogic.Input(new EnemyLogic.Input.StartAttacking());
|
||||
if (_enemyLogic.Value is EnemyLogic.State.FollowPlayer && GlobalPosition.DistanceTo(_player.CurrentPosition) > 45f)
|
||||
_enemyLogic.Input(new EnemyLogic.Input.LostPlayer());
|
||||
if (_enemyLogic.Value is EnemyLogic.State.Attacking && GlobalPosition.DistanceTo(_player.CurrentPosition) > 2.5f)
|
||||
_enemyLogic.Input(new EnemyLogic.Input.Alerted());
|
||||
|
||||
_navigationAgentClient.CalculateVelocity(GlobalPosition, true);
|
||||
|
||||
base._PhysicsProcess(delta);
|
||||
}
|
||||
|
||||
public override void TakeAction()
|
||||
{
|
||||
var rng = new RandomNumberGenerator();
|
||||
var options = new List<Action>() { PrimaryAttack, SecondaryAttack };
|
||||
var selection = rng.RandWeighted([0.875f, 0.125f]);
|
||||
options[(int)selection].Invoke();
|
||||
}
|
||||
public void PrimaryAttack()
|
||||
{
|
||||
_enemyModelView.PlayPrimaryAttackAnimation();
|
||||
}
|
||||
|
||||
public void SecondaryAttack()
|
||||
{
|
||||
_enemyModelView.PlaySecondaryAttackAnimation();
|
||||
}
|
||||
|
||||
public override void SetTarget(Vector3 target) => _navigationAgentClient.SetTarget(target);
|
||||
|
||||
public void Patrol()
|
||||
{
|
||||
var rng = new RandomNumberGenerator();
|
||||
rng.Randomize();
|
||||
var randomizedSpot = new Vector3(rng.RandfRange(-5.0f, 5.0f), 0, rng.RandfRange(-5.0f, 5.0f));
|
||||
_enemyLogic.Input(new EnemyLogic.Input.PatrolToRandomSpot(GlobalPosition + randomizedSpot));
|
||||
_enemyLogic.Input(new EnemyLogic.Input.StartPatrol());
|
||||
}
|
||||
|
||||
private void Hitbox_AreaEntered(Area3D area)
|
||||
{
|
||||
var target = area.GetOwner();
|
||||
if (target is IPlayer player)
|
||||
{
|
||||
var damage = _enemyStatResource.CurrentAttack * PrimaryAttackElementalDamageBonus;
|
||||
player.TakeDamage(damage, PrimaryAttackElementalType, BattleExtensions.IsCriticalHit(_enemyStatResource.Luck));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
uid://h6duv685n6eh
|
||||
@@ -0,0 +1,73 @@
|
||||
[gd_scene load_steps=7 format=3 uid="uid://b8ewfgcjv60es"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://h6duv685n6eh" path="res://src/enemy/enemy_types/09. Agi/AgiDemon.cs" id="1_56f32"]
|
||||
[ext_resource type="Resource" uid="uid://2lflwab43lb0" path="res://src/enemy/enemy_types/09. Agi/AgiDemonStats.tres" id="2_qec65"]
|
||||
[ext_resource type="PackedScene" uid="uid://bls3mcsyld4vy" path="res://src/enemy/enemy_types/09. Agi/AgiDemonModelView.tscn" id="3_703e7"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
|
||||
radius = 0.226425
|
||||
height = 2.02807
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_jbgmx"]
|
||||
height = 5.0
|
||||
radius = 1.0
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_8vcnq"]
|
||||
radius = 1.20703
|
||||
|
||||
[node name="Agi" type="CharacterBody3D"]
|
||||
process_mode = 1
|
||||
collision_layer = 10
|
||||
collision_mask = 11
|
||||
axis_lock_linear_y = true
|
||||
axis_lock_angular_x = true
|
||||
script = ExtResource("1_56f32")
|
||||
PrimaryAttackElementalType = 4
|
||||
SecondaryAttackElementalType = 4
|
||||
_enemyStatResource = ExtResource("2_qec65")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)
|
||||
shape = SubResource("CapsuleShape3D_cwfph")
|
||||
|
||||
[node name="NavAgent" type="NavigationAgent3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
path_max_distance = 3.01
|
||||
simplify_path = true
|
||||
avoidance_enabled = true
|
||||
radius = 2.0
|
||||
debug_path_custom_color = Color(1, 0, 0, 1)
|
||||
|
||||
[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, 0, 0)
|
||||
collision_layer = 2
|
||||
collision_mask = 2
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="LineOfSight"]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, -2)
|
||||
shape = SubResource("CylinderShape3D_jbgmx")
|
||||
|
||||
[node name="PatrolTimer" type="Timer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
wait_time = 10.0
|
||||
autostart = true
|
||||
|
||||
[node name="AttackTimer" type="Timer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
wait_time = 0.8
|
||||
autostart = true
|
||||
|
||||
[node name="Raycast" type="RayCast3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
target_position = Vector3(0, 0, -5)
|
||||
collision_mask = 3
|
||||
|
||||
[node name="Collision" type="Area3D" parent="."]
|
||||
collision_layer = 2048
|
||||
collision_mask = 0
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Collision"]
|
||||
shape = SubResource("SphereShape3D_8vcnq")
|
||||
|
||||
[node name="EnemyModelView" parent="." instance=ExtResource("3_703e7")]
|
||||
@@ -0,0 +1,21 @@
|
||||
[gd_resource type="Resource" script_class="EnemyStatResource" load_steps=2 format=3 uid="uid://2lflwab43lb0"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="1_ip8hu"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_ip8hu")
|
||||
CurrentHP = 100.0
|
||||
MaximumHP = 10
|
||||
CurrentAttack = 10
|
||||
CurrentDefense = 10
|
||||
MaxAttack = 10
|
||||
MaxDefense = 10
|
||||
ExpFromDefeat = 0
|
||||
Luck = 0.05
|
||||
_telluricResistance = 0.0
|
||||
_aeolicResistance = 0.0
|
||||
_hydricResistance = 0.0
|
||||
_igneousResistance = 0.0
|
||||
_ferrumResistance = 0.0
|
||||
DropsSoulGemChance = 0.75
|
||||
metadata/_custom_type_script = "uid://dnkmr0eq1sij0"
|
||||
86
Zennysoft.Game.Ma/src/enemy/enemy_types/11. Palan/Palan.cs
Normal file
86
Zennysoft.Game.Ma/src/enemy/enemy_types/11. Palan/Palan.cs
Normal file
@@ -0,0 +1,86 @@
|
||||
using Chickensoft.AutoInject;
|
||||
using Chickensoft.Introspection;
|
||||
using Godot;
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using Zennysoft.Ma.Adapter;
|
||||
using Zennysoft.Game.Abstractions;
|
||||
|
||||
namespace Zennysoft.Game.Ma;
|
||||
|
||||
[Meta(typeof(IAutoNode))]
|
||||
public partial class Palan : Enemy, IHasPrimaryAttack, IHasSecondaryAttack, ICanPatrol
|
||||
{
|
||||
public override void _Notification(int what) => this.Notify(what);
|
||||
|
||||
[Export]
|
||||
public ElementType PrimaryAttackElementalType { get; set; } = ElementType.None;
|
||||
[Export]
|
||||
public double PrimaryAttackElementalDamageBonus { get; set; } = 1.0;
|
||||
[Export]
|
||||
public ElementType SecondaryAttackElementalType { get; set; } = ElementType.None;
|
||||
[Export]
|
||||
public double SecondaryAttackElementalDamageBonus { get; set; } = 1.0;
|
||||
|
||||
[Node] private INavigationAgentClient _navigationAgentClient { get; set; } = default!;
|
||||
|
||||
public void OnReady()
|
||||
{
|
||||
SetPhysicsProcess(true);
|
||||
((EnemyModelView2D)_enemyModelView).Hitbox.AreaEntered += Hitbox_AreaEntered;
|
||||
}
|
||||
|
||||
public void OnPhysicsProcess(double delta)
|
||||
{
|
||||
_enemyLogic.Input(new EnemyLogic.Input.PhysicsTick(delta));
|
||||
|
||||
if (_enemyLogic.Value is EnemyLogic.State.FollowPlayer && GlobalPosition.DistanceTo(_player.CurrentPosition) < 2.5f)
|
||||
_enemyLogic.Input(new EnemyLogic.Input.StartAttacking());
|
||||
if (_enemyLogic.Value is EnemyLogic.State.FollowPlayer && GlobalPosition.DistanceTo(_player.CurrentPosition) > 45f)
|
||||
_enemyLogic.Input(new EnemyLogic.Input.LostPlayer());
|
||||
if (_enemyLogic.Value is EnemyLogic.State.Attacking && GlobalPosition.DistanceTo(_player.CurrentPosition) > 2.5f)
|
||||
_enemyLogic.Input(new EnemyLogic.Input.Alerted());
|
||||
|
||||
_navigationAgentClient.CalculateVelocity(GlobalPosition, true);
|
||||
|
||||
base._PhysicsProcess(delta);
|
||||
}
|
||||
|
||||
public override void TakeAction()
|
||||
{
|
||||
var rng = new RandomNumberGenerator();
|
||||
var options = new List<Action>() { PrimaryAttack, SecondaryAttack };
|
||||
var selection = rng.RandWeighted([0.875f, 0.125f]);
|
||||
options[(int)selection].Invoke();
|
||||
}
|
||||
public void PrimaryAttack()
|
||||
{
|
||||
_enemyModelView.PlayPrimaryAttackAnimation();
|
||||
}
|
||||
|
||||
public void SecondaryAttack()
|
||||
{
|
||||
_enemyModelView.PlaySecondaryAttackAnimation();
|
||||
}
|
||||
|
||||
public override void SetTarget(Vector3 target) => _navigationAgentClient.SetTarget(target);
|
||||
|
||||
public void Patrol()
|
||||
{
|
||||
var rng = new RandomNumberGenerator();
|
||||
rng.Randomize();
|
||||
var randomizedSpot = new Vector3(rng.RandfRange(-5.0f, 5.0f), 0, rng.RandfRange(-5.0f, 5.0f));
|
||||
_enemyLogic.Input(new EnemyLogic.Input.PatrolToRandomSpot(GlobalPosition + randomizedSpot));
|
||||
_enemyLogic.Input(new EnemyLogic.Input.StartPatrol());
|
||||
}
|
||||
|
||||
private void Hitbox_AreaEntered(Area3D area)
|
||||
{
|
||||
var target = area.GetOwner();
|
||||
if (target is IPlayer player)
|
||||
{
|
||||
var damage = _enemyStatResource.CurrentAttack * PrimaryAttackElementalDamageBonus;
|
||||
player.TakeDamage(damage, PrimaryAttackElementalType, BattleExtensions.IsCriticalHit(_enemyStatResource.Luck));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
uid://cjd7k1scp1am8
|
||||
71
Zennysoft.Game.Ma/src/enemy/enemy_types/11. Palan/Palan.tscn
Normal file
71
Zennysoft.Game.Ma/src/enemy/enemy_types/11. Palan/Palan.tscn
Normal file
@@ -0,0 +1,71 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://boqjebx7yuiqy"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cjd7k1scp1am8" path="res://src/enemy/enemy_types/11. Palan/Palan.cs" id="1_2upgt"]
|
||||
[ext_resource type="Resource" uid="uid://dc1i06laolear" path="res://src/enemy/enemy_types/11. Palan/PalanStats.tres" id="2_u6tof"]
|
||||
[ext_resource type="PackedScene" uid="uid://pbnsngx5jvrh" path="res://src/enemy/NavigationAgentClient.tscn" id="3_c82i6"]
|
||||
[ext_resource type="PackedScene" uid="uid://dxwwfbt2mtmer" path="res://src/enemy/enemy_types/11. Palan/PalanModelView.tscn" id="4_3ahu6"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
|
||||
radius = 0.717471
|
||||
height = 2.02807
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_jbgmx"]
|
||||
height = 5.0
|
||||
radius = 1.0
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_8vcnq"]
|
||||
radius = 1.20703
|
||||
|
||||
[node name="Palan" type="CharacterBody3D"]
|
||||
process_mode = 1
|
||||
collision_layer = 10
|
||||
collision_mask = 11
|
||||
axis_lock_linear_y = true
|
||||
axis_lock_angular_x = true
|
||||
script = ExtResource("1_2upgt")
|
||||
_enemyStatResource = ExtResource("2_u6tof")
|
||||
|
||||
[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, 0, 0)
|
||||
shape = SubResource("CapsuleShape3D_cwfph")
|
||||
|
||||
[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, 0, 0)
|
||||
collision_layer = 2
|
||||
collision_mask = 2
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="LineOfSight"]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, -2)
|
||||
shape = SubResource("CylinderShape3D_jbgmx")
|
||||
|
||||
[node name="PatrolTimer" type="Timer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
wait_time = 10.0
|
||||
autostart = true
|
||||
|
||||
[node name="AttackTimer" type="Timer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
wait_time = 0.8
|
||||
autostart = true
|
||||
|
||||
[node name="Raycast" type="RayCast3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
target_position = Vector3(0, 0, -5)
|
||||
collision_mask = 3
|
||||
|
||||
[node name="Collision" type="Area3D" parent="."]
|
||||
collision_layer = 2048
|
||||
collision_mask = 0
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Collision"]
|
||||
shape = SubResource("SphereShape3D_8vcnq")
|
||||
|
||||
[node name="Navigation" type="Node3D" parent="."]
|
||||
|
||||
[node name="NavigationAgentClient" parent="Navigation" instance=ExtResource("3_c82i6")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="EnemyModelView" parent="." instance=ExtResource("4_3ahu6")]
|
||||
unique_name_in_owner = true
|
||||
@@ -0,0 +1,21 @@
|
||||
[gd_resource type="Resource" script_class="EnemyStatResource" load_steps=2 format=3 uid="uid://dc1i06laolear"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="1_b6ynu"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_b6ynu")
|
||||
CurrentHP = 100.0
|
||||
MaximumHP = 100
|
||||
CurrentAttack = 10
|
||||
CurrentDefense = 10
|
||||
MaxAttack = 10
|
||||
MaxDefense = 10
|
||||
ExpFromDefeat = 0
|
||||
Luck = 0.05
|
||||
_telluricResistance = 0.0
|
||||
_aeolicResistance = 0.0
|
||||
_hydricResistance = 0.0
|
||||
_igneousResistance = 0.0
|
||||
_ferrumResistance = 0.0
|
||||
DropsSoulGemChance = 0.75
|
||||
metadata/_custom_type_script = "uid://dnkmr0eq1sij0"
|
||||
@@ -0,0 +1,86 @@
|
||||
using Chickensoft.AutoInject;
|
||||
using Chickensoft.Introspection;
|
||||
using Godot;
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using Zennysoft.Ma.Adapter;
|
||||
using Zennysoft.Game.Abstractions;
|
||||
|
||||
namespace Zennysoft.Game.Ma;
|
||||
|
||||
[Meta(typeof(IAutoNode))]
|
||||
public partial class ShieldOfHeaven : Enemy, IHasPrimaryAttack, IHasSecondaryAttack, ICanPatrol
|
||||
{
|
||||
public override void _Notification(int what) => this.Notify(what);
|
||||
|
||||
[Export]
|
||||
public ElementType PrimaryAttackElementalType { get; set; } = ElementType.None;
|
||||
[Export]
|
||||
public double PrimaryAttackElementalDamageBonus { get; set; } = 1.0;
|
||||
[Export]
|
||||
public ElementType SecondaryAttackElementalType { get; set; } = ElementType.None;
|
||||
[Export]
|
||||
public double SecondaryAttackElementalDamageBonus { get; set; } = 1.0;
|
||||
|
||||
[Node] private INavigationAgentClient _navigationAgentClient { get; set; } = default!;
|
||||
|
||||
public void OnReady()
|
||||
{
|
||||
SetPhysicsProcess(true);
|
||||
((EnemyModelView2D)_enemyModelView).Hitbox.AreaEntered += Hitbox_AreaEntered;
|
||||
}
|
||||
|
||||
public new void OnPhysicsProcess(double delta)
|
||||
{
|
||||
_enemyLogic.Input(new EnemyLogic.Input.PhysicsTick(delta));
|
||||
|
||||
if (_enemyLogic.Value is EnemyLogic.State.FollowPlayer && GlobalPosition.DistanceTo(_player.CurrentPosition) < 2.5f)
|
||||
_enemyLogic.Input(new EnemyLogic.Input.StartAttacking());
|
||||
if (_enemyLogic.Value is EnemyLogic.State.FollowPlayer && GlobalPosition.DistanceTo(_player.CurrentPosition) > 45f)
|
||||
_enemyLogic.Input(new EnemyLogic.Input.LostPlayer());
|
||||
if (_enemyLogic.Value is EnemyLogic.State.Attacking && GlobalPosition.DistanceTo(_player.CurrentPosition) > 2.5f)
|
||||
_enemyLogic.Input(new EnemyLogic.Input.Alerted());
|
||||
|
||||
_navigationAgentClient.CalculateVelocity(GlobalPosition, true);
|
||||
|
||||
base._PhysicsProcess(delta);
|
||||
}
|
||||
|
||||
public override void TakeAction()
|
||||
{
|
||||
var rng = new RandomNumberGenerator();
|
||||
var options = new List<Action>() { PrimaryAttack, SecondaryAttack };
|
||||
var selection = rng.RandWeighted([0.875f, 0.125f]);
|
||||
options[(int)selection].Invoke();
|
||||
}
|
||||
public void PrimaryAttack()
|
||||
{
|
||||
_enemyModelView.PlayPrimaryAttackAnimation();
|
||||
}
|
||||
|
||||
public void SecondaryAttack()
|
||||
{
|
||||
_enemyModelView.PlaySecondaryAttackAnimation();
|
||||
}
|
||||
|
||||
public override void SetTarget(Vector3 target) => _navigationAgentClient.SetTarget(target);
|
||||
|
||||
public void Patrol()
|
||||
{
|
||||
var rng = new RandomNumberGenerator();
|
||||
rng.Randomize();
|
||||
var randomizedSpot = new Vector3(rng.RandfRange(-5.0f, 5.0f), 0, rng.RandfRange(-5.0f, 5.0f));
|
||||
_enemyLogic.Input(new EnemyLogic.Input.PatrolToRandomSpot(GlobalPosition + randomizedSpot));
|
||||
_enemyLogic.Input(new EnemyLogic.Input.StartPatrol());
|
||||
}
|
||||
|
||||
private void Hitbox_AreaEntered(Area3D area)
|
||||
{
|
||||
var target = area.GetOwner();
|
||||
if (target is IPlayer player)
|
||||
{
|
||||
var damage = _enemyStatResource.CurrentAttack * PrimaryAttackElementalDamageBonus;
|
||||
player.TakeDamage(damage, PrimaryAttackElementalType, BattleExtensions.IsCriticalHit(_enemyStatResource.Luck));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
uid://cjdivu0v1kfhy
|
||||
@@ -0,0 +1,90 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://5s7c4dsb1wwk"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cjdivu0v1kfhy" path="res://src/enemy/enemy_types/12. Shield of Heaven/ShieldOfHeaven.cs" id="1_ips1f"]
|
||||
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="2_oxa5b"]
|
||||
[ext_resource type="PackedScene" uid="uid://drkaq6grim1fb" path="res://src/enemy/enemy_types/12. Shield of Heaven/ShieldModelView.tscn" id="3_r2swr"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_r2swr"]
|
||||
script = ExtResource("2_oxa5b")
|
||||
CurrentHP = 100.0
|
||||
MaximumHP = 100
|
||||
CurrentAttack = 10
|
||||
CurrentDefense = 10
|
||||
MaxAttack = 10
|
||||
MaxDefense = 10
|
||||
ExpFromDefeat = 0
|
||||
Luck = 0.05
|
||||
_telluricResistance = 0.0
|
||||
_aeolicResistance = 0.0
|
||||
_hydricResistance = 0.0
|
||||
_igneousResistance = 0.0
|
||||
_ferrumResistance = 0.0
|
||||
DropsSoulGemChance = 0.75
|
||||
metadata/_custom_type_script = "uid://dnkmr0eq1sij0"
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
|
||||
radius = 0.226425
|
||||
height = 2.02807
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_jbgmx"]
|
||||
height = 5.0
|
||||
radius = 1.0
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_8vcnq"]
|
||||
radius = 1.20703
|
||||
|
||||
[node name="ShieldOfHeaven" type="CharacterBody3D"]
|
||||
process_mode = 1
|
||||
collision_layer = 10
|
||||
collision_mask = 11
|
||||
axis_lock_linear_y = true
|
||||
axis_lock_angular_x = true
|
||||
script = ExtResource("1_ips1f")
|
||||
_enemyStatResource = SubResource("Resource_r2swr")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)
|
||||
shape = SubResource("CapsuleShape3D_cwfph")
|
||||
|
||||
[node name="NavAgent" type="NavigationAgent3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
path_max_distance = 3.01
|
||||
simplify_path = true
|
||||
avoidance_enabled = true
|
||||
radius = 2.0
|
||||
debug_path_custom_color = Color(1, 0, 0, 1)
|
||||
|
||||
[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, 0, 0)
|
||||
collision_layer = 2
|
||||
collision_mask = 2
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="LineOfSight"]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, -2)
|
||||
shape = SubResource("CylinderShape3D_jbgmx")
|
||||
|
||||
[node name="PatrolTimer" type="Timer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
wait_time = 10.0
|
||||
autostart = true
|
||||
|
||||
[node name="AttackTimer" type="Timer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
wait_time = 0.8
|
||||
autostart = true
|
||||
|
||||
[node name="Raycast" type="RayCast3D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
target_position = Vector3(0, 0, -5)
|
||||
collision_mask = 3
|
||||
|
||||
[node name="Collision" type="Area3D" parent="."]
|
||||
collision_layer = 2048
|
||||
collision_mask = 0
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Collision"]
|
||||
shape = SubResource("SphereShape3D_8vcnq")
|
||||
|
||||
[node name="EnemyModelView" parent="." instance=ExtResource("3_r2swr")]
|
||||
unique_name_in_owner = true
|
||||
@@ -0,0 +1,21 @@
|
||||
[gd_resource type="Resource" script_class="EnemyStatResource" load_steps=2 format=3 uid="uid://c5fgcsruq5gx6"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="1_e725b"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_e725b")
|
||||
CurrentHP = 100.0
|
||||
MaximumHP = 100
|
||||
CurrentAttack = 10
|
||||
CurrentDefense = 10
|
||||
MaxAttack = 10
|
||||
MaxDefense = 10
|
||||
ExpFromDefeat = 0
|
||||
Luck = 0.05
|
||||
_telluricResistance = 0.0
|
||||
_aeolicResistance = 0.0
|
||||
_hydricResistance = 0.0
|
||||
_igneousResistance = 0.0
|
||||
_ferrumResistance = 0.0
|
||||
DropsSoulGemChance = 0.75
|
||||
metadata/_custom_type_script = "uid://dnkmr0eq1sij0"
|
||||
@@ -0,0 +1,79 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://b3giib0jp3uod"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://jjulhqd5g3be" path="res://src/enemy/enemy_types/13. gold sproingy/GoldSproingy.cs" id="1_o1o4d"]
|
||||
[ext_resource type="Resource" uid="uid://m8wl23q4kr4t" path="res://src/enemy/enemy_types/13. gold sproingy/GoldSproingyStats.tres" id="2_58d4o"]
|
||||
[ext_resource type="PackedScene" uid="uid://pbnsngx5jvrh" path="res://src/enemy/NavigationAgentClient.tscn" id="3_u82b8"]
|
||||
[ext_resource type="PackedScene" uid="uid://c5asojy73n44d" path="res://src/enemy/enemy_types/13. gold sproingy/GoldSproingyModelView.tscn" id="4_58d4o"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
|
||||
radius = 0.106078
|
||||
height = 1.23076
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_8vcnq"]
|
||||
radius = 0.57308
|
||||
|
||||
[sub_resource type="CylinderShape3D" id="CylinderShape3D_jbgmx"]
|
||||
height = 5.0
|
||||
radius = 1.0
|
||||
|
||||
[node name="GoldSproingy" type="CharacterBody3D"]
|
||||
process_mode = 1
|
||||
collision_layer = 10
|
||||
collision_mask = 3
|
||||
axis_lock_linear_y = true
|
||||
axis_lock_angular_x = true
|
||||
axis_lock_angular_z = true
|
||||
script = ExtResource("1_o1o4d")
|
||||
_enemyStatResource = ExtResource("2_58d4o")
|
||||
_movementSpeed = 4.0
|
||||
|
||||
[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, 0, 0)
|
||||
shape = SubResource("CapsuleShape3D_cwfph")
|
||||
|
||||
[node name="Navigation" type="Node3D" parent="."]
|
||||
|
||||
[node name="NavigationAgentClient" parent="Navigation" instance=ExtResource("3_u82b8")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="Collision" type="Node3D" parent="."]
|
||||
|
||||
[node name="Collision" type="Area3D" parent="Collision"]
|
||||
collision_layer = 2048
|
||||
collision_mask = 0
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Collision/Collision"]
|
||||
shape = SubResource("SphereShape3D_8vcnq")
|
||||
|
||||
[node name="LineOfSight" type="Area3D" parent="Collision"]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)
|
||||
collision_layer = 2
|
||||
collision_mask = 2
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Collision/LineOfSight"]
|
||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, -2)
|
||||
shape = SubResource("CylinderShape3D_jbgmx")
|
||||
|
||||
[node name="Raycast" type="RayCast3D" parent="Collision"]
|
||||
unique_name_in_owner = true
|
||||
target_position = Vector3(0, 0, -5)
|
||||
collision_mask = 3
|
||||
|
||||
[node name="Visual" type="Node3D" parent="."]
|
||||
|
||||
[node name="EnemyModelView" parent="Visual" instance=ExtResource("4_58d4o")]
|
||||
unique_name_in_owner = true
|
||||
|
||||
[node name="Timers" type="Node" parent="."]
|
||||
|
||||
[node name="PatrolTimer" type="Timer" parent="Timers"]
|
||||
unique_name_in_owner = true
|
||||
wait_time = 10.0
|
||||
autostart = true
|
||||
|
||||
[node name="AttackTimer" type="Timer" parent="Timers"]
|
||||
unique_name_in_owner = true
|
||||
wait_time = 0.8
|
||||
autostart = true
|
||||
@@ -0,0 +1,21 @@
|
||||
[gd_resource type="Resource" script_class="EnemyStatResource" load_steps=2 format=3 uid="uid://m8wl23q4kr4t"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="1_dvrvn"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_dvrvn")
|
||||
CurrentHP = 25.0
|
||||
MaximumHP = 25
|
||||
CurrentAttack = 0
|
||||
CurrentDefense = 0
|
||||
MaxAttack = 0
|
||||
MaxDefense = 0
|
||||
ExpFromDefeat = 0
|
||||
Luck = 0.05
|
||||
_telluricResistance = 0.0
|
||||
_aeolicResistance = 0.0
|
||||
_hydricResistance = 0.0
|
||||
_igneousResistance = 0.0
|
||||
_ferrumResistance = 0.0
|
||||
DropsSoulGemChance = 0.75
|
||||
metadata/_custom_type_script = "uid://dnkmr0eq1sij0"
|
||||
Binary file not shown.
@@ -0,0 +1,37 @@
|
||||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://bum4gfqtytntr"
|
||||
path="res://.godot/imported/DEMON WALL BASE+ PIPES VER.1.1.glb-522719266db4a46fdb0aa3a3c11a4d12.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/enemy/enemy_types/16. demon wall/DEMON WALL BASE+ PIPES VER.1.1.glb"
|
||||
dest_files=["res://.godot/imported/DEMON WALL BASE+ PIPES VER.1.1.glb-522719266db4a46fdb0aa3a3c11a4d12.scn"]
|
||||
|
||||
[params]
|
||||
|
||||
nodes/root_type=""
|
||||
nodes/root_name=""
|
||||
nodes/apply_root_scale=true
|
||||
nodes/root_scale=1.0
|
||||
nodes/import_as_skeleton_bones=false
|
||||
nodes/use_node_type_suffixes=true
|
||||
meshes/ensure_tangents=true
|
||||
meshes/generate_lods=true
|
||||
meshes/create_shadow_meshes=true
|
||||
meshes/light_baking=1
|
||||
meshes/lightmap_texel_size=0.2
|
||||
meshes/force_disable_compression=false
|
||||
skins/use_named_skins=true
|
||||
animation/import=true
|
||||
animation/fps=30
|
||||
animation/trimming=false
|
||||
animation/remove_immutable_tracks=true
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
gltf/naming_version=1
|
||||
gltf/embedded_image_handling=1
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 65 KiB |
@@ -0,0 +1,37 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://slclem8jixl7"
|
||||
path="res://.godot/imported/DEMON WALL BASE+ PIPES VER.1_AREA_2_MAIN_222STONE.png-9e4c173cadf0e6dfd5e7e26de18acf88.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "11027637ea8e7d257bd13c57efd3b5b4"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/enemy/enemy_types/16. demon wall/DEMON WALL BASE+ PIPES VER.1_AREA_2_MAIN_222STONE.png"
|
||||
dest_files=["res://.godot/imported/DEMON WALL BASE+ PIPES VER.1_AREA_2_MAIN_222STONE.png-9e4c173cadf0e6dfd5e7e26de18acf88.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
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: 2.1 MiB |
@@ -0,0 +1,37 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://baegb2s3ewm3l"
|
||||
path="res://.godot/imported/DEMON WALL BASE+ PIPES VER.1_PIPER.png-5151203ff02228e68308c039225079ea.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "7c3246438ecabef0efa70cd71e8029d0"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/enemy/enemy_types/16. demon wall/DEMON WALL BASE+ PIPES VER.1_PIPER.png"
|
||||
dest_files=["res://.godot/imported/DEMON WALL BASE+ PIPES VER.1_PIPER.png-5151203ff02228e68308c039225079ea.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
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: 784 KiB |
@@ -0,0 +1,37 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://cfk7krp1djh1q"
|
||||
path="res://.godot/imported/DEMON WALL BASE+ PIPES VER.1_concrete_0003_height_1k.png-e479d00c71f1a8cdb7bf5611b61f6b3b.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "ae0147c1574dde9b1de51f409b0ef04f"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/enemy/enemy_types/16. demon wall/DEMON WALL BASE+ PIPES VER.1_concrete_0003_height_1k.png"
|
||||
dest_files=["res://.godot/imported/DEMON WALL BASE+ PIPES VER.1_concrete_0003_height_1k.png-e479d00c71f1a8cdb7bf5611b61f6b3b.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=1
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=true
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=1
|
||||
roughness/src_normal="res://src/enemy/enemy_types/16. demon wall/DEMON WALL BASE+ PIPES VER.1_concrete_0003_height_1k.png"
|
||||
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: 391 KiB |
@@ -0,0 +1,37 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c3a7xkip7wit5"
|
||||
path="res://.godot/imported/DEMON WALL BASE+ PIPES VER.1_iris-photography-no-reflections-method.jpg-b5032c01dd2105fcbe9010f947eaca60.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
generator_parameters={
|
||||
"md5": "585f2a4c17e3fbeb9a34c0c9c519e1e3"
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://src/enemy/enemy_types/16. demon wall/DEMON WALL BASE+ PIPES VER.1_iris-photography-no-reflections-method.jpg"
|
||||
dest_files=["res://.godot/imported/DEMON WALL BASE+ PIPES VER.1_iris-photography-no-reflections-method.jpg-b5032c01dd2105fcbe9010f947eaca60.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
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
|
||||
@@ -1,26 +1,26 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://b8ewfgcjv60es"]
|
||||
[gd_scene load_steps=8 format=3 uid="uid://dpq17ej06uah1"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://jjulhqd5g3be" path="res://src/enemy/enemy_types/13. gold sproingy/GoldSproingy.cs" id="1_2bycu"]
|
||||
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="2_55x64"]
|
||||
[ext_resource type="PackedScene" uid="uid://bli0t0d6ommvi" path="res://src/enemy/enemy_types/04. sara/SaraModelView.tscn" id="3_3trjw"]
|
||||
[ext_resource type="Script" uid="uid://h6duv685n6eh" path="res://src/enemy/enemy_types/09. Agi/AgiDemon.cs" id="1_wbopj"]
|
||||
[ext_resource type="PackedScene" uid="uid://cu7n814hhtjwm" path="res://src/enemy/enemy_types/9b. Aqueos Demon/AqueosModelView.tscn" id="2_0hbxv"]
|
||||
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="2_wtipe"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_o3b7p"]
|
||||
script = ExtResource("2_55x64")
|
||||
CurrentHP = 50.0
|
||||
MaximumHP = 0
|
||||
CurrentAttack = 20
|
||||
[sub_resource type="Resource" id="Resource_m7ocm"]
|
||||
script = ExtResource("2_wtipe")
|
||||
CurrentHP = 100.0
|
||||
MaximumHP = 100
|
||||
CurrentAttack = 10
|
||||
CurrentDefense = 5
|
||||
MaxAttack = 20
|
||||
MaxAttack = 10
|
||||
MaxDefense = 5
|
||||
ExpFromDefeat = 15
|
||||
ExpFromDefeat = 0
|
||||
Luck = 0.05
|
||||
_telluricResistance = 0.0
|
||||
_aeolicResistance = 0.0
|
||||
_hydricResistance = 0.0
|
||||
_hydricResistance = 0.5
|
||||
_igneousResistance = 0.0
|
||||
_ferrumResistance = 0.0
|
||||
DropsSoulGemChance = 0.75
|
||||
metadata/_custom_type_script = ExtResource("2_55x64")
|
||||
metadata/_custom_type_script = "uid://dnkmr0eq1sij0"
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cwfph"]
|
||||
radius = 0.226425
|
||||
@@ -33,15 +33,16 @@ radius = 1.0
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_8vcnq"]
|
||||
radius = 1.20703
|
||||
|
||||
[node name="Agi" type="CharacterBody3D"]
|
||||
[node name="AqueousDemon" type="CharacterBody3D"]
|
||||
process_mode = 1
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0)
|
||||
collision_layer = 10
|
||||
collision_mask = 11
|
||||
axis_lock_linear_y = true
|
||||
axis_lock_angular_x = true
|
||||
script = ExtResource("1_2bycu")
|
||||
_enemyStatResource = SubResource("Resource_o3b7p")
|
||||
script = ExtResource("1_wbopj")
|
||||
PrimaryAttackElementalType = 3
|
||||
SecondaryAttackElementalType = 3
|
||||
_enemyStatResource = SubResource("Resource_m7ocm")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)
|
||||
@@ -80,13 +81,12 @@ unique_name_in_owner = true
|
||||
target_position = Vector3(0, 0, -5)
|
||||
collision_mask = 3
|
||||
|
||||
[node name="EnemyModelView" parent="." instance=ExtResource("3_3trjw")]
|
||||
unique_name_in_owner = true
|
||||
transform = Transform3D(1.5, 0, 0, 0, 1.5, 0, 0, 0, 1.5, 0, 0.0862446, 0)
|
||||
|
||||
[node name="Collision" type="Area3D" parent="."]
|
||||
collision_layer = 2048
|
||||
collision_mask = 0
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Collision"]
|
||||
shape = SubResource("SphereShape3D_8vcnq")
|
||||
|
||||
[node name="EnemyModelView" parent="." instance=ExtResource("2_0hbxv")]
|
||||
unique_name_in_owner = true
|
||||
@@ -0,0 +1,9 @@
|
||||
[gd_resource type="Resource" script_class="EnemyLoreInfo" load_steps=2 format=3 uid="uid://co0eq5nl2ai24"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="1_se0pe"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_se0pe")
|
||||
Name = "Aqueous Demon"
|
||||
Description = "Water monster"
|
||||
metadata/_custom_type_script = "uid://dlsgyx4i1jmp3"
|
||||
@@ -0,0 +1,21 @@
|
||||
[gd_resource type="Resource" script_class="EnemyStatResource" load_steps=2 format=3 uid="uid://cpoxit5pafww5"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dnkmr0eq1sij0" path="res://src/enemy/EnemyStatResource.cs" id="1_8v7ib"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_8v7ib")
|
||||
CurrentHP = 100.0
|
||||
MaximumHP = 100
|
||||
CurrentAttack = 10
|
||||
CurrentDefense = 5
|
||||
MaxAttack = 10
|
||||
MaxDefense = 5
|
||||
ExpFromDefeat = 0
|
||||
Luck = 0.05
|
||||
_telluricResistance = 0.0
|
||||
_aeolicResistance = 0.0
|
||||
_hydricResistance = 0.5
|
||||
_igneousResistance = 0.0
|
||||
_ferrumResistance = 0.0
|
||||
DropsSoulGemChance = 0.75
|
||||
metadata/_custom_type_script = "uid://dnkmr0eq1sij0"
|
||||
@@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=530 format=3 uid="uid://cu7n814hhtjwm"]
|
||||
[gd_scene load_steps=529 format=3 uid="uid://cu7n814hhtjwm"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://cvr1qimxpignl" path="res://src/enemy/EnemyModelView2D.cs" id="1_vf7er"]
|
||||
[ext_resource type="Script" uid="uid://dlsgyx4i1jmp3" path="res://src/enemy/EnemyLoreInfo.cs" id="2_tsjqi"]
|
||||
[ext_resource type="Resource" uid="uid://co0eq5nl2ai24" path="res://src/enemy/enemy_types/9b. Aqueos Demon/AqueosDemonInfo.tres" id="2_ejhrk"]
|
||||
[ext_resource type="Texture2D" uid="uid://ble7lu2fb6owm" path="res://src/enemy/enemy_types/9b. Aqueos Demon/animations/BACK/0060.png" id="3_pcxyk"]
|
||||
[ext_resource type="Texture2D" uid="uid://bccdtqmpevvrp" path="res://src/enemy/enemy_types/9b. Aqueos Demon/animations/BACK/0062.png" id="4_g6g3u"]
|
||||
[ext_resource type="Texture2D" uid="uid://c87w07evb5avc" path="res://src/enemy/enemy_types/9b. Aqueos Demon/animations/BACK/0064.png" id="5_sm161"]
|
||||
@@ -334,12 +334,6 @@
|
||||
[ext_resource type="Texture2D" uid="uid://c311su0a86yii" path="res://src/enemy/enemy_types/9b. Aqueos Demon/animations/WATER LOOP/0190.png" id="332_8j4qa"]
|
||||
[ext_resource type="Script" uid="uid://6edayafleq8y" path="res://src/hitbox/Hitbox.cs" id="333_ylptm"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_f45wt"]
|
||||
script = ExtResource("2_tsjqi")
|
||||
Name = "Agi Demon"
|
||||
Description = "Lava monster"
|
||||
metadata/_custom_type_script = "uid://dlsgyx4i1jmp3"
|
||||
|
||||
[sub_resource type="ViewportTexture" id="ViewportTexture_h1kaf"]
|
||||
viewport_path = NodePath("Sprite3D/SubViewportContainer/SubViewport")
|
||||
|
||||
@@ -2561,7 +2555,7 @@ _data = {
|
||||
|
||||
[node name="EnemyModelView" type="Node3D"]
|
||||
script = ExtResource("1_vf7er")
|
||||
EnemyLoreInfo = SubResource("Resource_f45wt")
|
||||
EnemyLoreInfo = ExtResource("2_ejhrk")
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||
transform = Transform3D(1.5, 0, 0, 0, 1.5, 0, 0, 0, 1.5, 0, 0, 0)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=14 format=3 uid="uid://bc1sp6xwe0j65"]
|
||||
[gd_scene load_steps=13 format=3 uid="uid://bc1sp6xwe0j65"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dwt6302nsf4vq" path="res://src/map/dungeon/code/DungeonFloor.cs" id="1_0ecnn"]
|
||||
[ext_resource type="Script" uid="uid://b1x125h0tya2w" path="res://addons/SimpleDungeons/DungeonGenerator3D.gd" id="2_cxmwa"]
|
||||
@@ -6,7 +6,6 @@
|
||||
[ext_resource type="PackedScene" uid="uid://dn5546yqyntfr" path="res://src/map/dungeon/rooms/Set A/10. Item Transfer Room.tscn" id="6_atq1f"]
|
||||
[ext_resource type="PackedScene" uid="uid://b82dx66mgs2d7" path="res://src/map/dungeon/rooms/Set A/08. Basin Room.tscn" id="8_5rblf"]
|
||||
[ext_resource type="PackedScene" uid="uid://bs56ccgosmu47" path="res://src/enemy/enemy_types/01. sproingy/Sproingy.tscn" id="9_atq1f"]
|
||||
[ext_resource type="PackedScene" uid="uid://dlw5cvutvypxn" path="res://src/enemy/enemy_types/06. chariot/Chariot.tscn" id="11_sdyti"]
|
||||
[ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="12_aw26s"]
|
||||
[ext_resource type="PackedScene" uid="uid://cihbmyo0ltq4m" path="res://src/map/dungeon/rooms/Set A/19. Floor Exit A.tscn" id="12_n02rw"]
|
||||
[ext_resource type="PackedScene" uid="uid://bn4gslp2gk8ds" path="res://src/map/dungeon/rooms/Set A/18. Corridor A.tscn" id="13_ofywd"]
|
||||
@@ -188,6 +187,3 @@ disabled = true
|
||||
[node name="EnemyDatabase" parent="." instance=ExtResource("12_aw26s")]
|
||||
unique_name_in_owner = true
|
||||
EnemyList = Array[PackedScene]([ExtResource("9_atq1f"), ExtResource("14_gkkr3")])
|
||||
|
||||
[node name="Chariot" parent="." instance=ExtResource("11_sdyti")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -33.5203, 0.647948, -28.4574)
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -369,5 +369,5 @@ shape = SubResource("BoxShape3D_ltey6")
|
||||
|
||||
[node name="EnemyDatabase" parent="." instance=ExtResource("11_vn8cd")]
|
||||
unique_name_in_owner = true
|
||||
EnemyList = Array[PackedScene]([ExtResource("13_gb3sg"), ExtResource("13_0tmnj"), ExtResource("16_rgrkc")])
|
||||
SpawnRate = PackedFloat32Array(1, 0.5, 1)
|
||||
EnemyList = Array[PackedScene]([ExtResource("13_gb3sg"), ExtResource("16_rgrkc"), ExtResource("13_0tmnj")])
|
||||
SpawnRate = PackedFloat32Array(0.5, 1, 0.5)
|
||||
|
||||
@@ -333,5 +333,5 @@ shape = SubResource("BoxShape3D_bji1g")
|
||||
|
||||
[node name="EnemyDatabase" parent="." instance=ExtResource("11_xast8")]
|
||||
unique_name_in_owner = true
|
||||
EnemyList = Array[PackedScene]([ExtResource("12_tr8km"), ExtResource("13_43euk"), ExtResource("14_purgj"), ExtResource("16_ogmgc")])
|
||||
SpawnRate = PackedFloat32Array(0.5, 1, 0.25, 0.5)
|
||||
EnemyList = Array[PackedScene]([ExtResource("12_tr8km"), ExtResource("16_ogmgc"), ExtResource("13_43euk"), ExtResource("14_purgj")])
|
||||
SpawnRate = PackedFloat32Array(0.5, 0.5, 1, 0.5)
|
||||
|
||||
@@ -395,5 +395,5 @@ shape = SubResource("BoxShape3D_mir7f")
|
||||
|
||||
[node name="EnemyDatabase" parent="." instance=ExtResource("11_uflod")]
|
||||
unique_name_in_owner = true
|
||||
EnemyList = Array[PackedScene]([ExtResource("13_c8dl5"), ExtResource("13_qs20c"), ExtResource("15_pn3nc")])
|
||||
SpawnRate = PackedFloat32Array(1, 1, 0.5)
|
||||
EnemyList = Array[PackedScene]([ExtResource("15_pn3nc"), ExtResource("13_c8dl5"), ExtResource("13_qs20c")])
|
||||
SpawnRate = PackedFloat32Array(0.25, 1, 1)
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=17 format=3 uid="uid://dl2x3l7a3an65"]
|
||||
[gd_scene load_steps=18 format=3 uid="uid://dl2x3l7a3an65"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dwt6302nsf4vq" path="res://src/map/dungeon/code/DungeonFloor.cs" id="1_k525w"]
|
||||
[ext_resource type="Script" uid="uid://b1x125h0tya2w" path="res://addons/SimpleDungeons/DungeonGenerator3D.gd" id="2_bw315"]
|
||||
@@ -14,6 +14,7 @@
|
||||
[ext_resource type="PackedScene" uid="uid://dooy8nc5pgaxm" path="res://src/map/dungeon/rooms/Set B/37. Corridor 2.tscn" id="11_jk7yl"]
|
||||
[ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="11_y24bo"]
|
||||
[ext_resource type="PackedScene" uid="uid://dlw5cvutvypxn" path="res://src/enemy/enemy_types/06. chariot/Chariot.tscn" id="13_aj7yr"]
|
||||
[ext_resource type="PackedScene" uid="uid://fosk3kt7vp8d" path="res://src/enemy/enemy_types/08a. Ambassador/Ambassador.tscn" id="15_8e7p7"]
|
||||
[ext_resource type="PackedScene" uid="uid://c6tqt27ql8s35" path="res://src/enemy/enemy_types/07. chinthe/Chinthe.tscn" id="15_bw315"]
|
||||
|
||||
[sub_resource type="NavigationMesh" id="NavigationMesh_gqi8w"]
|
||||
@@ -39,4 +40,4 @@ generate_on_ready = false
|
||||
|
||||
[node name="EnemyDatabase" parent="." instance=ExtResource("11_y24bo")]
|
||||
unique_name_in_owner = true
|
||||
EnemyList = Array[PackedScene]([ExtResource("13_aj7yr"), ExtResource("15_bw315")])
|
||||
EnemyList = Array[PackedScene]([ExtResource("13_aj7yr"), ExtResource("15_8e7p7"), ExtResource("15_bw315")])
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=16 format=3 uid="uid://drvjw06wbi2qh"]
|
||||
[gd_scene load_steps=18 format=3 uid="uid://drvjw06wbi2qh"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dwt6302nsf4vq" path="res://src/map/dungeon/code/DungeonFloor.cs" id="1_xpfig"]
|
||||
[ext_resource type="Script" uid="uid://b1x125h0tya2w" path="res://addons/SimpleDungeons/DungeonGenerator3D.gd" id="2_m28m3"]
|
||||
@@ -14,6 +14,8 @@
|
||||
[ext_resource type="PackedScene" uid="uid://dooy8nc5pgaxm" path="res://src/map/dungeon/rooms/Set B/37. Corridor 2.tscn" id="12_1rgka"]
|
||||
[ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="13_jwrcb"]
|
||||
[ext_resource type="PackedScene" uid="uid://c6tqt27ql8s35" path="res://src/enemy/enemy_types/07. chinthe/Chinthe.tscn" id="14_edmor"]
|
||||
[ext_resource type="PackedScene" uid="uid://fosk3kt7vp8d" path="res://src/enemy/enemy_types/08a. Ambassador/Ambassador.tscn" id="14_xpfig"]
|
||||
[ext_resource type="PackedScene" uid="uid://b8ewfgcjv60es" path="res://src/enemy/enemy_types/09. Agi/AgiDemon.tscn" id="16_m28m3"]
|
||||
|
||||
[sub_resource type="NavigationMesh" id="NavigationMesh_gqi8w"]
|
||||
border_size = 1.0
|
||||
@@ -38,5 +40,5 @@ generate_on_ready = false
|
||||
|
||||
[node name="EnemyDatabase" parent="." instance=ExtResource("13_jwrcb")]
|
||||
unique_name_in_owner = true
|
||||
EnemyList = Array[PackedScene]([ExtResource("14_edmor")])
|
||||
SpawnRate = PackedFloat32Array(1)
|
||||
EnemyList = Array[PackedScene]([ExtResource("14_xpfig"), ExtResource("14_edmor"), ExtResource("16_m28m3")])
|
||||
SpawnRate = PackedFloat32Array(1, 1, 0.25)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=15 format=3 uid="uid://fellg2owwe64"]
|
||||
[gd_scene load_steps=18 format=3 uid="uid://fellg2owwe64"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dwt6302nsf4vq" path="res://src/map/dungeon/code/DungeonFloor.cs" id="1_cmrxb"]
|
||||
[ext_resource type="Script" uid="uid://b1x125h0tya2w" path="res://addons/SimpleDungeons/DungeonGenerator3D.gd" id="2_bb5ek"]
|
||||
@@ -13,6 +13,9 @@
|
||||
[ext_resource type="PackedScene" uid="uid://02v033xrh6xi" path="res://src/map/dungeon/rooms/Set B/38. Floor Exit B.tscn" id="11_mwwyc"]
|
||||
[ext_resource type="PackedScene" uid="uid://dooy8nc5pgaxm" path="res://src/map/dungeon/rooms/Set B/37. Corridor 2.tscn" id="12_hnpqo"]
|
||||
[ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="13_bm34w"]
|
||||
[ext_resource type="PackedScene" uid="uid://fosk3kt7vp8d" path="res://src/enemy/enemy_types/08a. Ambassador/Ambassador.tscn" id="14_cmrxb"]
|
||||
[ext_resource type="PackedScene" uid="uid://c6tqt27ql8s35" path="res://src/enemy/enemy_types/07. chinthe/Chinthe.tscn" id="15_bb5ek"]
|
||||
[ext_resource type="PackedScene" uid="uid://b8ewfgcjv60es" path="res://src/enemy/enemy_types/09. Agi/AgiDemon.tscn" id="16_ak4no"]
|
||||
|
||||
[sub_resource type="NavigationMesh" id="NavigationMesh_gqi8w"]
|
||||
border_size = 1.0
|
||||
@@ -37,5 +40,5 @@ generate_on_ready = false
|
||||
|
||||
[node name="EnemyDatabase" parent="." instance=ExtResource("13_bm34w")]
|
||||
unique_name_in_owner = true
|
||||
EnemyList = Array[PackedScene]([])
|
||||
SpawnRate = PackedFloat32Array()
|
||||
EnemyList = Array[PackedScene]([ExtResource("14_cmrxb"), ExtResource("15_bb5ek"), ExtResource("16_ak4no")])
|
||||
SpawnRate = PackedFloat32Array(1, 1, 1)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=16 format=3 uid="uid://vhqwff12y7wn"]
|
||||
[gd_scene load_steps=19 format=3 uid="uid://vhqwff12y7wn"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dwt6302nsf4vq" path="res://src/map/dungeon/code/DungeonFloor.cs" id="1_qo66f"]
|
||||
[ext_resource type="Script" uid="uid://b1x125h0tya2w" path="res://addons/SimpleDungeons/DungeonGenerator3D.gd" id="2_q127u"]
|
||||
@@ -14,6 +14,9 @@
|
||||
[ext_resource type="PackedScene" uid="uid://dooy8nc5pgaxm" path="res://src/map/dungeon/rooms/Set B/37. Corridor 2.tscn" id="12_tkntm"]
|
||||
[ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="13_8j25c"]
|
||||
[ext_resource type="PackedScene" uid="uid://c6tqt27ql8s35" path="res://src/enemy/enemy_types/07. chinthe/Chinthe.tscn" id="14_r4r1j"]
|
||||
[ext_resource type="PackedScene" uid="uid://b8ewfgcjv60es" path="res://src/enemy/enemy_types/09. Agi/AgiDemon.tscn" id="15_q127u"]
|
||||
[ext_resource type="PackedScene" uid="uid://cmvimr0pvsgqy" path="res://src/enemy/enemy_types/10. Eden Pillar/Eden Pillar.tscn" id="16_7km57"]
|
||||
[ext_resource type="PackedScene" uid="uid://b3giib0jp3uod" path="res://src/enemy/enemy_types/13. gold sproingy/GoldSproingy.tscn" id="17_nrwsy"]
|
||||
|
||||
[sub_resource type="NavigationMesh" id="NavigationMesh_gqi8w"]
|
||||
border_size = 1.0
|
||||
@@ -38,5 +41,5 @@ generate_on_ready = false
|
||||
|
||||
[node name="EnemyDatabase" parent="." instance=ExtResource("13_8j25c")]
|
||||
unique_name_in_owner = true
|
||||
EnemyList = Array[PackedScene]([ExtResource("14_r4r1j")])
|
||||
SpawnRate = PackedFloat32Array(1)
|
||||
EnemyList = Array[PackedScene]([ExtResource("14_r4r1j"), ExtResource("15_q127u"), ExtResource("16_7km57"), ExtResource("17_nrwsy")])
|
||||
SpawnRate = PackedFloat32Array(0.25, 1, 0.1, 0.05)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=15 format=3 uid="uid://h8tc1uohuqx2"]
|
||||
[gd_scene load_steps=18 format=3 uid="uid://h8tc1uohuqx2"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dwt6302nsf4vq" path="res://src/map/dungeon/code/DungeonFloor.cs" id="1_i4yll"]
|
||||
[ext_resource type="Script" uid="uid://b1x125h0tya2w" path="res://addons/SimpleDungeons/DungeonGenerator3D.gd" id="2_xtyir"]
|
||||
@@ -13,6 +13,9 @@
|
||||
[ext_resource type="PackedScene" uid="uid://02v033xrh6xi" path="res://src/map/dungeon/rooms/Set B/38. Floor Exit B.tscn" id="11_t8tuf"]
|
||||
[ext_resource type="PackedScene" uid="uid://dooy8nc5pgaxm" path="res://src/map/dungeon/rooms/Set B/37. Corridor 2.tscn" id="12_f284e"]
|
||||
[ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="13_hlb65"]
|
||||
[ext_resource type="PackedScene" uid="uid://b8ewfgcjv60es" path="res://src/enemy/enemy_types/09. Agi/AgiDemon.tscn" id="14_i4yll"]
|
||||
[ext_resource type="PackedScene" uid="uid://cmvimr0pvsgqy" path="res://src/enemy/enemy_types/10. Eden Pillar/Eden Pillar.tscn" id="15_xtyir"]
|
||||
[ext_resource type="PackedScene" uid="uid://5s7c4dsb1wwk" path="res://src/enemy/enemy_types/12. Shield of Heaven/ShieldOfHeaven.tscn" id="16_cfhak"]
|
||||
|
||||
[sub_resource type="NavigationMesh" id="NavigationMesh_gqi8w"]
|
||||
border_size = 1.0
|
||||
@@ -37,5 +40,5 @@ generate_on_ready = false
|
||||
|
||||
[node name="EnemyDatabase" parent="." instance=ExtResource("13_hlb65")]
|
||||
unique_name_in_owner = true
|
||||
EnemyList = Array[PackedScene]([])
|
||||
SpawnRate = PackedFloat32Array()
|
||||
EnemyList = Array[PackedScene]([ExtResource("14_i4yll"), ExtResource("15_xtyir"), ExtResource("16_cfhak")])
|
||||
SpawnRate = PackedFloat32Array(1, 1, 0.25)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=15 format=3 uid="uid://cyfp0p38w2yfr"]
|
||||
[gd_scene load_steps=18 format=3 uid="uid://cyfp0p38w2yfr"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dwt6302nsf4vq" path="res://src/map/dungeon/code/DungeonFloor.cs" id="1_dg3fy"]
|
||||
[ext_resource type="Script" uid="uid://b1x125h0tya2w" path="res://addons/SimpleDungeons/DungeonGenerator3D.gd" id="2_q8hlb"]
|
||||
@@ -13,6 +13,9 @@
|
||||
[ext_resource type="PackedScene" uid="uid://02v033xrh6xi" path="res://src/map/dungeon/rooms/Set B/38. Floor Exit B.tscn" id="11_wurkp"]
|
||||
[ext_resource type="PackedScene" uid="uid://dooy8nc5pgaxm" path="res://src/map/dungeon/rooms/Set B/37. Corridor 2.tscn" id="12_qbngl"]
|
||||
[ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="13_gg5wp"]
|
||||
[ext_resource type="PackedScene" uid="uid://b8ewfgcjv60es" path="res://src/enemy/enemy_types/09. Agi/AgiDemon.tscn" id="14_dg3fy"]
|
||||
[ext_resource type="PackedScene" uid="uid://cmvimr0pvsgqy" path="res://src/enemy/enemy_types/10. Eden Pillar/Eden Pillar.tscn" id="15_q8hlb"]
|
||||
[ext_resource type="PackedScene" uid="uid://boqjebx7yuiqy" path="res://src/enemy/enemy_types/11. Palan/Palan.tscn" id="16_0utb0"]
|
||||
|
||||
[sub_resource type="NavigationMesh" id="NavigationMesh_gqi8w"]
|
||||
border_size = 1.0
|
||||
@@ -37,5 +40,5 @@ generate_on_ready = false
|
||||
|
||||
[node name="EnemyDatabase" parent="." instance=ExtResource("13_gg5wp")]
|
||||
unique_name_in_owner = true
|
||||
EnemyList = Array[PackedScene]([])
|
||||
SpawnRate = PackedFloat32Array(1)
|
||||
EnemyList = Array[PackedScene]([ExtResource("14_dg3fy"), ExtResource("15_q8hlb"), ExtResource("16_0utb0")])
|
||||
SpawnRate = PackedFloat32Array(0.25, 1, 1)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=15 format=3 uid="uid://dnrbqkv438tjx"]
|
||||
[gd_scene load_steps=18 format=3 uid="uid://dnrbqkv438tjx"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dwt6302nsf4vq" path="res://src/map/dungeon/code/DungeonFloor.cs" id="1_7fjdy"]
|
||||
[ext_resource type="Script" uid="uid://b1x125h0tya2w" path="res://addons/SimpleDungeons/DungeonGenerator3D.gd" id="2_neo74"]
|
||||
@@ -13,6 +13,9 @@
|
||||
[ext_resource type="PackedScene" uid="uid://02v033xrh6xi" path="res://src/map/dungeon/rooms/Set B/38. Floor Exit B.tscn" id="11_0tado"]
|
||||
[ext_resource type="PackedScene" uid="uid://dooy8nc5pgaxm" path="res://src/map/dungeon/rooms/Set B/37. Corridor 2.tscn" id="12_wm2qn"]
|
||||
[ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="13_f1owy"]
|
||||
[ext_resource type="PackedScene" uid="uid://cmvimr0pvsgqy" path="res://src/enemy/enemy_types/10. Eden Pillar/Eden Pillar.tscn" id="14_7fjdy"]
|
||||
[ext_resource type="PackedScene" uid="uid://boqjebx7yuiqy" path="res://src/enemy/enemy_types/11. Palan/Palan.tscn" id="15_neo74"]
|
||||
[ext_resource type="PackedScene" uid="uid://5s7c4dsb1wwk" path="res://src/enemy/enemy_types/12. Shield of Heaven/ShieldOfHeaven.tscn" id="16_iqgo0"]
|
||||
|
||||
[sub_resource type="NavigationMesh" id="NavigationMesh_gqi8w"]
|
||||
border_size = 1.0
|
||||
@@ -37,5 +40,5 @@ generate_on_ready = false
|
||||
|
||||
[node name="EnemyDatabase" parent="." instance=ExtResource("13_f1owy")]
|
||||
unique_name_in_owner = true
|
||||
EnemyList = Array[PackedScene]([])
|
||||
SpawnRate = PackedFloat32Array()
|
||||
EnemyList = Array[PackedScene]([ExtResource("14_7fjdy"), ExtResource("15_neo74"), ExtResource("16_iqgo0")])
|
||||
SpawnRate = PackedFloat32Array(1, 1, 1)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=15 format=3 uid="uid://cgoogenmugoti"]
|
||||
[gd_scene load_steps=18 format=3 uid="uid://cgoogenmugoti"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dwt6302nsf4vq" path="res://src/map/dungeon/code/DungeonFloor.cs" id="1_ksrny"]
|
||||
[ext_resource type="Script" uid="uid://b1x125h0tya2w" path="res://addons/SimpleDungeons/DungeonGenerator3D.gd" id="2_a76ri"]
|
||||
@@ -13,6 +13,9 @@
|
||||
[ext_resource type="PackedScene" uid="uid://02v033xrh6xi" path="res://src/map/dungeon/rooms/Set B/38. Floor Exit B.tscn" id="11_380n2"]
|
||||
[ext_resource type="PackedScene" uid="uid://dooy8nc5pgaxm" path="res://src/map/dungeon/rooms/Set B/37. Corridor 2.tscn" id="12_tg7p8"]
|
||||
[ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="13_avl22"]
|
||||
[ext_resource type="PackedScene" uid="uid://cmvimr0pvsgqy" path="res://src/enemy/enemy_types/10. Eden Pillar/Eden Pillar.tscn" id="14_ksrny"]
|
||||
[ext_resource type="PackedScene" uid="uid://boqjebx7yuiqy" path="res://src/enemy/enemy_types/11. Palan/Palan.tscn" id="15_a76ri"]
|
||||
[ext_resource type="PackedScene" uid="uid://5s7c4dsb1wwk" path="res://src/enemy/enemy_types/12. Shield of Heaven/ShieldOfHeaven.tscn" id="16_biant"]
|
||||
|
||||
[sub_resource type="NavigationMesh" id="NavigationMesh_gqi8w"]
|
||||
border_size = 1.0
|
||||
@@ -37,5 +40,5 @@ generate_on_ready = false
|
||||
|
||||
[node name="EnemyDatabase" parent="." instance=ExtResource("13_avl22")]
|
||||
unique_name_in_owner = true
|
||||
EnemyList = Array[PackedScene]([])
|
||||
SpawnRate = PackedFloat32Array()
|
||||
EnemyList = Array[PackedScene]([ExtResource("14_ksrny"), ExtResource("15_a76ri"), ExtResource("16_biant")])
|
||||
SpawnRate = PackedFloat32Array(1, 1, 1)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=15 format=3 uid="uid://33lvido1dkbu"]
|
||||
[gd_scene load_steps=19 format=3 uid="uid://33lvido1dkbu"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dwt6302nsf4vq" path="res://src/map/dungeon/code/DungeonFloor.cs" id="1_8tkq2"]
|
||||
[ext_resource type="Script" uid="uid://b1x125h0tya2w" path="res://addons/SimpleDungeons/DungeonGenerator3D.gd" id="2_m0atb"]
|
||||
@@ -13,6 +13,10 @@
|
||||
[ext_resource type="PackedScene" uid="uid://02v033xrh6xi" path="res://src/map/dungeon/rooms/Set B/38. Floor Exit B.tscn" id="11_gnpgo"]
|
||||
[ext_resource type="PackedScene" uid="uid://dooy8nc5pgaxm" path="res://src/map/dungeon/rooms/Set B/37. Corridor 2.tscn" id="12_rgx5c"]
|
||||
[ext_resource type="PackedScene" uid="uid://dbvr8ewajja6a" path="res://src/enemy/EnemyDatabase.tscn" id="13_8mkl1"]
|
||||
[ext_resource type="PackedScene" uid="uid://cmvimr0pvsgqy" path="res://src/enemy/enemy_types/10. Eden Pillar/Eden Pillar.tscn" id="14_m0atb"]
|
||||
[ext_resource type="PackedScene" uid="uid://boqjebx7yuiqy" path="res://src/enemy/enemy_types/11. Palan/Palan.tscn" id="15_blhib"]
|
||||
[ext_resource type="PackedScene" uid="uid://5s7c4dsb1wwk" path="res://src/enemy/enemy_types/12. Shield of Heaven/ShieldOfHeaven.tscn" id="16_rxmjy"]
|
||||
[ext_resource type="PackedScene" uid="uid://b3giib0jp3uod" path="res://src/enemy/enemy_types/13. gold sproingy/GoldSproingy.tscn" id="17_fnjfv"]
|
||||
|
||||
[sub_resource type="NavigationMesh" id="NavigationMesh_gqi8w"]
|
||||
border_size = 1.0
|
||||
@@ -37,5 +41,5 @@ generate_on_ready = false
|
||||
|
||||
[node name="EnemyDatabase" parent="." instance=ExtResource("13_8mkl1")]
|
||||
unique_name_in_owner = true
|
||||
EnemyList = Array[PackedScene]([])
|
||||
SpawnRate = PackedFloat32Array()
|
||||
EnemyList = Array[PackedScene]([ExtResource("14_m0atb"), ExtResource("15_blhib"), ExtResource("16_rxmjy"), ExtResource("17_fnjfv")])
|
||||
SpawnRate = PackedFloat32Array(1, 1, 1, 0.05)
|
||||
|
||||
Reference in New Issue
Block a user