Apply difficulty modifiers to damage

This commit is contained in:
Marco 2025-04-08 19:06:39 +02:00
commit bb0f17124d
15 changed files with 94 additions and 59 deletions

View file

@ -31,5 +31,5 @@ Owner = 2
DamageType = 0 DamageType = 0
Controllable = false Controllable = false
Grazeable = false Grazeable = false
GrazeValue = 1.0 GrazeValue = 0.2
TimeModifiers = Array[Object]([SubResource("Resource_3a5dw"), SubResource("Resource_rtncg")]) TimeModifiers = Array[Object]([SubResource("Resource_3a5dw"), SubResource("Resource_rtncg")])

View file

@ -28,6 +28,6 @@ Owner = 2
DamageType = 0 DamageType = 0
Controllable = false Controllable = false
Grazeable = true Grazeable = true
GrazeValue = 1.0 GrazeValue = 0.2
Modifier = SubResource("Resource_jeq72") Modifier = SubResource("Resource_jeq72")
TimeModifiers = Array[Object]([SubResource("Resource_edsop")]) TimeModifiers = Array[Object]([SubResource("Resource_edsop")])

View file

@ -15,5 +15,5 @@ Owner = 0
DamageType = 2 DamageType = 2
Controllable = false Controllable = false
Grazeable = true Grazeable = true
GrazeValue = 1.0 GrazeValue = 0.2
TimeModifiers = Array[Object]([]) TimeModifiers = Array[Object]([])

View file

@ -15,6 +15,6 @@ Owner = 0
DamageType = 2 DamageType = 2
Controllable = false Controllable = false
Grazeable = false Grazeable = false
GrazeValue = 1.0 GrazeValue = 0.2
TimeModifiers = null TimeModifiers = null
metadata/_custom_type_script = "uid://dslyrfcej3g2n" metadata/_custom_type_script = "uid://dslyrfcej3g2n"

View file

@ -17,6 +17,6 @@ Owner = 1
DamageType = 0 DamageType = 0
Controllable = true Controllable = true
Grazeable = false Grazeable = false
GrazeValue = 1.0 GrazeValue = 0.2
TimeModifiers = null TimeModifiers = null
metadata/_custom_type_script = "uid://dslyrfcej3g2n" metadata/_custom_type_script = "uid://dslyrfcej3g2n"

View file

@ -17,5 +17,5 @@ Owner = 1
DamageType = 2 DamageType = 2
Controllable = false Controllable = false
Grazeable = false Grazeable = false
GrazeValue = -1.0 GrazeValue = -0.2
TimeModifiers = null TimeModifiers = null

View file

@ -13,4 +13,7 @@ LifeTime = 10.0
DestroyOnCollision = true DestroyOnCollision = true
Owner = 2 Owner = 2
DamageType = 0 DamageType = 0
Controllable = false
Grazeable = true
GrazeValue = 0.2
TimeModifiers = null TimeModifiers = null

View file

@ -17,5 +17,5 @@ Owner = 1
DamageType = 3 DamageType = 3
Controllable = false Controllable = false
Grazeable = false Grazeable = false
GrazeValue = 1.0 GrazeValue = 0.2
TimeModifiers = null TimeModifiers = null

View file

@ -23,11 +23,11 @@ BulletCapacity = 10
ReloadTime = 1.0 ReloadTime = 1.0
AutoReload = true AutoReload = true
InfiniteAmmo = true InfiniteAmmo = true
ItemKey = null
AmmoKey = null
BulletsPerShot = 1 BulletsPerShot = 1
SpreadAngle = 0.0 SpreadAngle = 0.0
RandomSpread = 0.0 RandomSpread = 0.0
ItemKey = null
AmmoKey = null
_rotationOffset = 0.0 _rotationOffset = 0.0
metadata/_custom_type_script = "uid://b6fmrnipv88bk" metadata/_custom_type_script = "uid://b6fmrnipv88bk"

View file

@ -36,10 +36,10 @@ BulletCapacity = 20
ReloadTime = 2.0 ReloadTime = 2.0
AutoReload = true AutoReload = true
InfiniteAmmo = true InfiniteAmmo = true
ItemKey = null
AmmoKey = null
BulletsPerShot = 1 BulletsPerShot = 1
SpreadAngle = 0.0 SpreadAngle = 0.0
RandomSpread = 0.0 RandomSpread = 0.0
ItemKey = null
AmmoKey = null
_rotationOffset = 0.0 _rotationOffset = 0.0
metadata/_custom_type_script = "uid://b6fmrnipv88bk" metadata/_custom_type_script = "uid://b6fmrnipv88bk"

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=153 format=4 uid="uid://bv451a8wgty4u"] [gd_scene load_steps=154 format=4 uid="uid://bv451a8wgty4u"]
[ext_resource type="Script" uid="uid://doxmbokehw8ci" path="res://Scripts/GameManager.cs" id="1_8tmoj"] [ext_resource type="Script" uid="uid://doxmbokehw8ci" path="res://Scripts/GameManager.cs" id="1_8tmoj"]
[ext_resource type="PackedScene" uid="uid://c4pr2707hbeph" path="res://Scenes/Actors/fsm_player.tscn" id="2_ksslq"] [ext_resource type="PackedScene" uid="uid://c4pr2707hbeph" path="res://Scenes/Actors/fsm_player.tscn" id="2_ksslq"]
@ -74,6 +74,7 @@
[ext_resource type="PackedScene" uid="uid://c5fiv1nioghfb" path="res://Scenes/Actors/Marisa.tscn" id="50_mp5ma"] [ext_resource type="PackedScene" uid="uid://c5fiv1nioghfb" path="res://Scenes/Actors/Marisa.tscn" id="50_mp5ma"]
[ext_resource type="Resource" uid="uid://37h0tjja4sns" path="res://Resources/Maps/RebelBase.tres" id="52_orkt3"] [ext_resource type="Resource" uid="uid://37h0tjja4sns" path="res://Resources/Maps/RebelBase.tres" id="52_orkt3"]
[ext_resource type="PackedScene" uid="uid://bqjcwxene73l2" path="res://Scenes/Actors/ActorEnemyTest.tscn" id="55_chha6"] [ext_resource type="PackedScene" uid="uid://bqjcwxene73l2" path="res://Scenes/Actors/ActorEnemyTest.tscn" id="55_chha6"]
[ext_resource type="Script" uid="uid://b5fesrd4lv8t1" path="res://Scripts/Resources/Events/EventResource.cs" id="55_dferh"]
[ext_resource type="PackedScene" uid="uid://bjskkeb3ppcs8" path="res://Scenes/Actors/Turret360.tscn" id="62_h0jm4"] [ext_resource type="PackedScene" uid="uid://bjskkeb3ppcs8" path="res://Scenes/Actors/Turret360.tscn" id="62_h0jm4"]
[ext_resource type="Script" uid="uid://v57xjmhi28kw" path="res://Scripts/Resources/Events/ControlActorEvent.cs" id="64_rphi8"] [ext_resource type="Script" uid="uid://v57xjmhi28kw" path="res://Scripts/Resources/Events/ControlActorEvent.cs" id="64_rphi8"]
[ext_resource type="PackedScene" uid="uid://b0gpbkxdfbnjh" path="res://Scenes/Actors/ForceField_Horizontal.tscn" id="66_nxn3h"] [ext_resource type="PackedScene" uid="uid://b0gpbkxdfbnjh" path="res://Scenes/Actors/ForceField_Horizontal.tscn" id="66_nxn3h"]
@ -275,7 +276,7 @@ ActivationType = 0
Targets = Array[NodePath]([NodePath("../Rumia")]) Targets = Array[NodePath]([NodePath("../Rumia")])
WaitForCompletion = true WaitForCompletion = true
[sub_resource type="Resource" id="Resource_j86ly"] [sub_resource type="Resource" id="Resource_fuaed"]
resource_local_to_scene = true resource_local_to_scene = true
script = ExtResource("49_0si7g") script = ExtResource("49_0si7g")
Target = NodePath(".") Target = NodePath(".")
@ -724,7 +725,7 @@ Invisible = true
metadata/_edit_group_ = true metadata/_edit_group_ = true
[node name="ScriptableAreaTrigger" parent="Parallax2D/Factory Tilemaps/LevelProps/DebugTeleporter" instance=ExtResource("43_kf3qc")] [node name="ScriptableAreaTrigger" parent="Parallax2D/Factory Tilemaps/LevelProps/DebugTeleporter" instance=ExtResource("43_kf3qc")]
Events = [SubResource("Resource_usuub")] Events = Array[ExtResource("55_dferh")]([SubResource("Resource_usuub")])
[node name="BlueKeycard2" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("35_rblsn")] [node name="BlueKeycard2" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("35_rblsn")]
position = Vector2(-1032, -317) position = Vector2(-1032, -317)
@ -921,7 +922,7 @@ position = Vector2(-1423, -188)
[node name="LevelStartTrigger" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("43_kf3qc")] [node name="LevelStartTrigger" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("43_kf3qc")]
position = Vector2(-762, -129) position = Vector2(-762, -129)
scale = Vector2(1.455, 1.455) scale = Vector2(1.455, 1.455)
Events = [SubResource("Resource_5er5x"), SubResource("Resource_b25hy")] Events = Array[ExtResource("55_dferh")]([SubResource("Resource_5er5x"), SubResource("Resource_b25hy")])
[node name="AreaTrigger2" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Target") instance=ExtResource("28_6au4t")] [node name="AreaTrigger2" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Target") instance=ExtResource("28_6au4t")]
position = Vector2(-435, -162) position = Vector2(-435, -162)
@ -964,7 +965,7 @@ metadata/_edit_group_ = true
[node name="Script2" type="Node2D" parent="Parallax2D/Factory Tilemaps/LevelProps/Computer2"] [node name="Script2" type="Node2D" parent="Parallax2D/Factory Tilemaps/LevelProps/Computer2"]
position = Vector2(120, 25) position = Vector2(120, 25)
script = ExtResource("42_wigyb") script = ExtResource("42_wigyb")
Events = [SubResource("Resource_wma5c")] Events = Array[ExtResource("55_dferh")]([SubResource("Resource_wma5c")])
[node name="Computer8" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Targets") instance=ExtResource("31_243ec")] [node name="Computer8" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Targets") instance=ExtResource("31_243ec")]
position = Vector2(-2073, -205) position = Vector2(-2073, -205)
@ -975,7 +976,7 @@ metadata/_edit_group_ = true
[node name="Script2" type="Node2D" parent="Parallax2D/Factory Tilemaps/LevelProps/Computer8"] [node name="Script2" type="Node2D" parent="Parallax2D/Factory Tilemaps/LevelProps/Computer8"]
position = Vector2(120, 25) position = Vector2(120, 25)
script = ExtResource("42_wigyb") script = ExtResource("42_wigyb")
Events = [SubResource("Resource_dferh")] Events = Array[ExtResource("55_dferh")]([SubResource("Resource_dferh")])
[node name="Computer6" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Targets") instance=ExtResource("31_243ec")] [node name="Computer6" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Targets") instance=ExtResource("31_243ec")]
position = Vector2(-1113, -139) position = Vector2(-1113, -139)
@ -985,7 +986,7 @@ metadata/_edit_group_ = true
[node name="Script2" type="Node2D" parent="Parallax2D/Factory Tilemaps/LevelProps/Computer6"] [node name="Script2" type="Node2D" parent="Parallax2D/Factory Tilemaps/LevelProps/Computer6"]
position = Vector2(0, 1) position = Vector2(0, 1)
script = ExtResource("42_wigyb") script = ExtResource("42_wigyb")
Events = [SubResource("Resource_cxj4w")] Events = Array[ExtResource("55_dferh")]([SubResource("Resource_cxj4w")])
[node name="Computer7" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Targets") instance=ExtResource("31_243ec")] [node name="Computer7" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Targets") instance=ExtResource("31_243ec")]
position = Vector2(-1175.36, 213.708) position = Vector2(-1175.36, 213.708)
@ -996,7 +997,7 @@ metadata/_edit_group_ = true
[node name="Computer7Script" type="Node2D" parent="Parallax2D/Factory Tilemaps/LevelProps/Computer7"] [node name="Computer7Script" type="Node2D" parent="Parallax2D/Factory Tilemaps/LevelProps/Computer7"]
position = Vector2(0, 1) position = Vector2(0, 1)
script = ExtResource("42_wigyb") script = ExtResource("42_wigyb")
Events = [SubResource("Resource_tcc7d")] Events = Array[ExtResource("55_dferh")]([SubResource("Resource_tcc7d")])
[node name="Computer5" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Targets") instance=ExtResource("31_243ec")] [node name="Computer5" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Targets") instance=ExtResource("31_243ec")]
position = Vector2(-1344, -251) position = Vector2(-1344, -251)
@ -1004,7 +1005,7 @@ Targets = [NodePath("Computer5Script")]
[node name="Computer5Script" type="Node2D" parent="Parallax2D/Factory Tilemaps/LevelProps/Computer5"] [node name="Computer5Script" type="Node2D" parent="Parallax2D/Factory Tilemaps/LevelProps/Computer5"]
script = ExtResource("42_wigyb") script = ExtResource("42_wigyb")
Events = [SubResource("Resource_fasrq"), SubResource("Resource_mah4x"), SubResource("Resource_0bqta")] Events = Array[ExtResource("55_dferh")]([SubResource("Resource_fasrq"), SubResource("Resource_mah4x"), SubResource("Resource_0bqta")])
[node name="Computer3" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Target") instance=ExtResource("31_243ec")] [node name="Computer3" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Target") instance=ExtResource("31_243ec")]
position = Vector2(-612.57, -358.528) position = Vector2(-612.57, -358.528)
@ -1012,7 +1013,7 @@ Target = NodePath("Script")
[node name="Script" type="Node2D" parent="Parallax2D/Factory Tilemaps/LevelProps/Computer3"] [node name="Script" type="Node2D" parent="Parallax2D/Factory Tilemaps/LevelProps/Computer3"]
script = ExtResource("42_wigyb") script = ExtResource("42_wigyb")
Events = [SubResource("Resource_o2kpk")] Events = Array[ExtResource("55_dferh")]([SubResource("Resource_o2kpk")])
[node name="Computer4" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Target") instance=ExtResource("31_243ec")] [node name="Computer4" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Target") instance=ExtResource("31_243ec")]
position = Vector2(-791, -505) position = Vector2(-791, -505)
@ -1020,7 +1021,7 @@ Target = NodePath("Node2D")
[node name="Node2D" type="Node2D" parent="Parallax2D/Factory Tilemaps/LevelProps/Computer4"] [node name="Node2D" type="Node2D" parent="Parallax2D/Factory Tilemaps/LevelProps/Computer4"]
script = ExtResource("42_wigyb") script = ExtResource("42_wigyb")
Events = [SubResource("Resource_s3g2w")] Events = Array[ExtResource("55_dferh")]([SubResource("Resource_s3g2w")])
[node name="Label" type="Label" parent="Parallax2D/Factory Tilemaps/LevelProps/Computer4"] [node name="Label" type="Label" parent="Parallax2D/Factory Tilemaps/LevelProps/Computer4"]
offset_left = -5.0 offset_left = -5.0
@ -1049,11 +1050,11 @@ position = Vector2(-792, -407)
[node name="BossBattleEndScript" type="Node2D" parent="Parallax2D/Factory Tilemaps/LevelProps"] [node name="BossBattleEndScript" type="Node2D" parent="Parallax2D/Factory Tilemaps/LevelProps"]
position = Vector2(-1628.53, -477.628) position = Vector2(-1628.53, -477.628)
script = ExtResource("42_wigyb") script = ExtResource("42_wigyb")
Events = [SubResource("Resource_068l7"), SubResource("Resource_l3nop")] Events = Array[ExtResource("55_dferh")]([SubResource("Resource_068l7"), SubResource("Resource_l3nop")])
[node name="BossBattleStartScript" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("43_kf3qc")] [node name="BossBattleStartScript" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("43_kf3qc")]
position = Vector2(-1487, -396) position = Vector2(-1487, -396)
Events = [SubResource("Resource_4f4id"), SubResource("Resource_s2o7m"), SubResource("Resource_b1dht"), SubResource("Resource_xrgpy"), SubResource("Resource_j86ly")] Events = Array[ExtResource("55_dferh")]([SubResource("Resource_4f4id"), SubResource("Resource_s2o7m"), SubResource("Resource_b1dht"), SubResource("Resource_xrgpy"), SubResource("Resource_fuaed")])
[node name="Enemy13" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("47_u1ve6")] [node name="Enemy13" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("47_u1ve6")]
position = Vector2(-1657, -788) position = Vector2(-1657, -788)
@ -1180,7 +1181,7 @@ position = Vector2(-2000, -736)
[node name="ControlPad8" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Targets") instance=ExtResource("12_hfkf1")] [node name="ControlPad8" parent="Parallax2D/Factory Tilemaps/LevelProps" node_paths=PackedStringArray("Targets") instance=ExtResource("12_hfkf1")]
position = Vector2(-2027, -735) position = Vector2(-2027, -735)
Targets = [NodePath("../HorizontalForceField")] Targets = [NodePath("../HorizontalForceField")]
Requirements = [ExtResource("84_ma1ta")] Requirements = Array[ExtResource("6_8tdlb")]([ExtResource("84_ma1ta")])
[node name="Ammo6" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("34_17pjh")] [node name="Ammo6" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("34_17pjh")]
position = Vector2(-872, -220) position = Vector2(-872, -220)
@ -1356,7 +1357,7 @@ position = Vector2(-2232, -203)
[node name="ScriptableAreaTrigger" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("43_kf3qc")] [node name="ScriptableAreaTrigger" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("43_kf3qc")]
position = Vector2(-2063, -232) position = Vector2(-2063, -232)
Events = [SubResource("Resource_l476f"), SubResource("Resource_dskij")] Events = Array[ExtResource("55_dferh")]([SubResource("Resource_l476f"), SubResource("Resource_dskij")])
[node name="ShieldExtendPickup" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("103_0bqta")] [node name="ShieldExtendPickup" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("103_0bqta")]
position = Vector2(-1646, 38) position = Vector2(-1646, 38)
@ -1484,7 +1485,7 @@ position = Vector2(-1633, 391)
[node name="MovementSensorLonger" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("112_j86ly")] [node name="MovementSensorLonger" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("112_j86ly")]
position = Vector2(-1495, 516) position = Vector2(-1495, 516)
Events = [SubResource("Resource_uslvo")] Events = Array[ExtResource("55_dferh")]([SubResource("Resource_uslvo")])
[node name="WallEmitter" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("113_dferh")] [node name="WallEmitter" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("113_dferh")]
position = Vector2(-1480, 451) position = Vector2(-1480, 451)

View file

@ -1,4 +1,5 @@
using System.Linq; using System.Linq;
using Cirno.Scripts.Enums;
using Cirno.Scripts.Resources; using Cirno.Scripts.Resources;
using Godot; using Godot;
using Godot.Collections; using Godot.Collections;
@ -61,7 +62,16 @@ public partial class GenericDamageReceiver : Area2D, IHittable
if (!Enabled) return; if (!Enabled) return;
if (Invulnerable) return; if (Invulnerable) return;
var dmg = DamageResistances.Aggregate(damage, (current, resistance) => current * resistance.CalculateDamage(current, damageType)); // Change value based on difficulty
float difficultyReducedDmg = GlobalState.Instance.SessionSettings.Difficulty switch
{
DifficultyLevel.Easy => damage * 5,
DifficultyLevel.Normal => damage * 2,
DifficultyLevel.Hard or DifficultyLevel.Lunatic => damage,
_ => damage
};
var dmg = DamageResistances.Aggregate(difficultyReducedDmg, (current, resistance) => current * resistance.CalculateDamage(current, damageType));
HealthProvider.CurrentResource -= dmg; HealthProvider.CurrentResource -= dmg;
} }

View file

@ -184,15 +184,24 @@ public partial class PlayerDamageReceiver : Area2D
{ {
if (!Enabled) return; if (!Enabled) return;
// Change value based on difficulty
float difficultyReducedDmg = GlobalState.Instance.SessionSettings.Difficulty switch
{
DifficultyLevel.Easy => damage / 5,
DifficultyLevel.Normal => damage / 2,
DifficultyLevel.Hard or DifficultyLevel.Lunatic => damage,
_ => damage
};
// Check if the shield is empty or damage has skip attributes // Check if the shield is empty or damage has skip attributes
if (CurrentShield <= 0 || ShieldDamageResistances.Where(x => x.DamageType == type).Any(x => x.Attribute is DamageAttribute.Skip)) if (CurrentShield <= 0 || ShieldDamageResistances.Where(x => x.DamageType == type).Any(x => x.Attribute is DamageAttribute.Skip))
{ {
// do not apply, go to health // do not apply, go to health
ApplyDamageToHealth(damage, type); ApplyDamageToHealth(difficultyReducedDmg, type);
} }
else else
{ {
var shieldDmg = ShieldDamageResistances.Aggregate(damage, (current, resistance) => current * resistance.CalculateDamage(current, type)); var shieldDmg = ShieldDamageResistances.Aggregate(difficultyReducedDmg, (current, resistance) => current * resistance.CalculateDamage(current, type));
// apply and get remainder // apply and get remainder
var remainder = CurrentShield - shieldDmg; var remainder = CurrentShield - shieldDmg;
@ -205,33 +214,33 @@ public partial class PlayerDamageReceiver : Area2D
} }
} }
return; // return;
if (CurrentShield > 0 && type is not DamageType.Explosive or DamageType.Acid) // if (CurrentShield > 0 && type is not DamageType.Explosive or DamageType.Acid)
{ // {
// Reduce shield // // Reduce shield
//PlayShieldAnimation(); // Let this be handled by event // //PlayShieldAnimation(); // Let this be handled by event
CurrentShield -= damage; // CurrentShield -= damage;
if (CurrentShield < 0) // if (CurrentShield < 0)
{ // {
CurrentHealth -= Math.Abs(CurrentShield); // CurrentHealth -= Math.Abs(CurrentShield);
CurrentShield = 0; // CurrentShield = 0;
} // }
} // }
else // else
{ // {
if (type is DamageType.Fire) // if (type is DamageType.Fire)
{ // {
CurrentHealth -= damage * 2; // CurrentHealth -= damage * 2;
} // }
else // else
{ // {
CurrentHealth -= damage; // CurrentHealth -= damage;
} // }
//
//Blink(); // Let this be handled by event // //Blink(); // Let this be handled by event
} // }
//
if (!(CurrentHealth <= 0)) return; // if (!(CurrentHealth <= 0)) return;
} }
} }

View file

@ -1,4 +1,5 @@
using Cirno.Scripts.Components.Actors; using Cirno.Scripts.Components.Actors;
using Cirno.Scripts.Enums;
using Godot; using Godot;
namespace Cirno.Scripts.Components.FSM.Player; namespace Cirno.Scripts.Components.FSM.Player;
@ -40,7 +41,18 @@ public partial class PlayerGrazingModule : PlayerArea2DModule
bullet.Graze(); bullet.Graze();
//bullet.IsGrazed = true; //bullet.IsGrazed = true;
Shield.CurrentResource += bullet.BulletInfo.GrazeValue; var baseGrazeValue = bullet.BulletInfo.GrazeValue;
float grazeShield = GlobalState.Instance.SessionSettings.Difficulty switch
{
DifficultyLevel.Easy => baseGrazeValue * 5,
DifficultyLevel.Normal => baseGrazeValue * 2,
DifficultyLevel.Hard or DifficultyLevel.Lunatic => baseGrazeValue,
_ => baseGrazeValue
};
Shield.CurrentResource += grazeShield;
// check if it's grazed // check if it's grazed
// check if it's grazeable // check if it's grazeable
// restore appropriate amount of shield // restore appropriate amount of shield

View file

@ -21,7 +21,7 @@ public partial class BulletResource : Resource
[Export] public DamageType DamageType = DamageType.Neutral; [Export] public DamageType DamageType = DamageType.Neutral;
[Export] public bool Controllable = false; [Export] public bool Controllable = false;
[Export] public bool Grazeable { get; set; } = true; [Export] public bool Grazeable { get; set; } = true;
[Export] public float GrazeValue { get; set; } = 1f; [Export] public float GrazeValue { get; set; } = 0.2f;
[Export] [Export]
public BulletCreationModifier Modifier; public BulletCreationModifier Modifier;