diff --git a/DungeonShooting_Godot/excel/ActivePropBase.xlsx b/DungeonShooting_Godot/excel/ActivePropBase.xlsx
index 57b881b..a5cd0f5 100644
--- a/DungeonShooting_Godot/excel/ActivePropBase.xlsx
+++ b/DungeonShooting_Godot/excel/ActivePropBase.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/excel/ActivityBase.xlsx b/DungeonShooting_Godot/excel/ActivityBase.xlsx
index 1053ed8..29a39aa 100644
--- a/DungeonShooting_Godot/excel/ActivityBase.xlsx
+++ b/DungeonShooting_Godot/excel/ActivityBase.xlsx
Binary files differ
diff --git a/DungeonShooting_Godot/resource/config/ActivePropBase.json b/DungeonShooting_Godot/resource/config/ActivePropBase.json
index a60b2c5..83541b7 100644
--- a/DungeonShooting_Godot/resource/config/ActivePropBase.json
+++ b/DungeonShooting_Godot/resource/config/ActivePropBase.json
@@ -34,5 +34,20 @@
"CooldownTime": 0,
"IsConsumables": true,
"MaxCount": 10
+ },
+ {
+ "Id": "0003",
+ "Remark": "\u732A\u732A\u5B58\u94B1\u7F50",
+ "__Activity": "prop5002",
+ "Buff": null,
+ "Condition": null,
+ "Effect": {
+ "PiggyBank": [
+ 2
+ ]
+ },
+ "CooldownTime": 0,
+ "IsConsumables": true,
+ "MaxCount": 1
}
]
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/config/ActivityBase.json b/DungeonShooting_Godot/resource/config/ActivityBase.json
index 5dcad8d..8a8ce87 100644
--- a/DungeonShooting_Godot/resource/config/ActivityBase.json
+++ b/DungeonShooting_Godot/resource/config/ActivityBase.json
@@ -672,6 +672,20 @@
"ShowInMapEditor": true
},
{
+ "Id": "prop5002",
+ "Name": "\u732A\u732A\u5B58\u94B1\u7F50",
+ "Type": 9,
+ "Quality": 1,
+ "Price": 0,
+ "Intro": "",
+ "Details": "\u62FE\u8D77\u8BE5\u9053\u5177\u540E\u73A9\u5BB6\u6361\u5230\u7684\u6240\u6709\u91D1\u5E01\u5C06\u4F1A\u88AB\u5B58\u5165\u5230\u5B58\u94B1\u7F50\u4E2D, \u4F7F\u7528\u8BE5\u9053\u5177, \u4F1A\u6467\u6BC1\u5B58\u94B1\u7F50, \u5E76\u8FD4\u56DE\u53CC\u500D\u7684\u91D1\u5E01,",
+ "IsStatic": false,
+ "__Material": "",
+ "Prefab": "res://prefab/prop/ActiveProp.tscn",
+ "Icon": "res://resource/sprite/prop/active/ActiveProp5002.png",
+ "ShowInMapEditor": true
+ },
+ {
"Id": "treasure_box0001",
"Name": "\u6728\u8D28\u5B9D\u7BB1",
"Type": 10,
diff --git a/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/Preinstall.json b/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/Preinstall.json
index a2e1c92..2a19a32 100644
--- a/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/Preinstall.json
+++ b/DungeonShooting_Godot/resource/map/tileMaps/Test1/inlet/Start/Preinstall.json
@@ -1 +1 @@
-[{"Name":"Preinstall1","Weight":100,"Remark":"","AutoFill":false,"WaveList":[[{"Position":{"X":39,"Y":8},"Size":{"X":0,"Y":0},"SpecialMarkType":1,"DelayTime":0,"MarkList":[]},{"Position":{"X":-16,"Y":-18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"30","ResidueAmmo":"210"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":66,"Y":6},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0009","Weight":100,"Attr":{"CurrAmmon":"1","ResidueAmmo":"25"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":66,"Y":47},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0010","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"120"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":47,"Y":-32},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0008","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"120"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":23,"Y":37},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0010","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":2,"Y":18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0005","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":24,"Y":-30},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0006","Weight":100,"Attr":{"CurrAmmon":"20","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":40,"Y":-10},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0003","Weight":100,"Attr":{"CurrAmmon":"12","ResidueAmmo":"90"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":2,"Y":-37},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0007","Weight":100,"Attr":{"CurrAmmon":"60","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-2,"Y":47},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0002","Weight":100,"Attr":{"CurrAmmon":"7","ResidueAmmo":"70"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":29,"Y":63},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0013","Weight":100,"Attr":{"CurrAmmon":"50","ResidueAmmo":"250"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-30,"Y":39},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-19,"Y":71},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":48,"Y":29},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0004","Weight":100,"Attr":{"CurrAmmon":"180","ResidueAmmo":"90"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":20,"Y":94},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0014","Weight":100,"Attr":{"CurrAmmon":"5","ResidueAmmo":"60"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-14,"Y":97},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0011","Weight":100,"Attr":{"CurrAmmon":"20","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":9,"Y":-7},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0011","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-41,"Y":61},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0016","Weight":100,"Attr":{"CurrAmmon":"5","ResidueAmmo":"60"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":73,"Y":-19},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0005","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"40"},"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-72,"Y":71},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-67,"Y":50},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-91,"Y":46},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-92,"Y":74},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-26,"Y":-46},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5000","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-52,"Y":-33},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5000","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-79,"Y":-28},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5000","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]}]]}]
\ No newline at end of file
+[{"Name":"Preinstall1","Weight":100,"Remark":"","AutoFill":false,"WaveList":[[{"Position":{"X":39,"Y":8},"Size":{"X":0,"Y":0},"SpecialMarkType":1,"DelayTime":0,"MarkList":[]},{"Position":{"X":-16,"Y":-18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0001","Weight":100,"Attr":{"CurrAmmon":"30","ResidueAmmo":"210"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":66,"Y":6},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0009","Weight":100,"Attr":{"CurrAmmon":"1","ResidueAmmo":"25"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":66,"Y":47},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0010","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"120"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":47,"Y":-32},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0008","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"120"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":23,"Y":37},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0010","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":2,"Y":18},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0005","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":24,"Y":-30},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0006","Weight":100,"Attr":{"CurrAmmon":"20","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":40,"Y":-10},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0003","Weight":100,"Attr":{"CurrAmmon":"12","ResidueAmmo":"90"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":2,"Y":-37},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0007","Weight":100,"Attr":{"CurrAmmon":"60","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-2,"Y":47},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0002","Weight":100,"Attr":{"CurrAmmon":"7","ResidueAmmo":"70"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":29,"Y":63},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0013","Weight":100,"Attr":{"CurrAmmon":"50","ResidueAmmo":"250"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-30,"Y":39},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-19,"Y":71},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0003","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":48,"Y":29},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0004","Weight":100,"Attr":{"CurrAmmon":"180","ResidueAmmo":"90"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":20,"Y":94},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0014","Weight":100,"Attr":{"CurrAmmon":"5","ResidueAmmo":"60"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-14,"Y":97},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0011","Weight":100,"Attr":{"CurrAmmon":"20","ResidueAmmo":"300"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":9,"Y":-7},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0011","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":-41,"Y":61},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0016","Weight":100,"Attr":{"CurrAmmon":"5","ResidueAmmo":"60"},"Altitude":8,"VerticalSpeed":0}]},{"Position":{"X":73,"Y":-19},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"weapon0005","Weight":100,"Attr":{"CurrAmmon":"10","ResidueAmmo":"40"},"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-72,"Y":71},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop0001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-67,"Y":50},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-91,"Y":46},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-92,"Y":74},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5001","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-26,"Y":-46},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5000","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-52,"Y":-33},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5000","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-79,"Y":-28},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5000","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":-38,"Y":107},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5002","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]},{"Position":{"X":8,"Y":111},"Size":{"X":16,"Y":16},"SpecialMarkType":0,"DelayTime":0,"MarkList":[{"Id":"prop5002","Weight":100,"Attr":null,"Altitude":8,"VerticalSpeed":5.551115E-14}]}]]}]
\ No newline at end of file
diff --git a/DungeonShooting_Godot/resource/sprite/prop/active/ActiveProp5002.png b/DungeonShooting_Godot/resource/sprite/prop/active/ActiveProp5002.png
new file mode 100644
index 0000000..51f0012
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/prop/active/ActiveProp5002.png
Binary files differ
diff --git a/DungeonShooting_Godot/resource/sprite/prop/active/ActiveProp5002.png.import b/DungeonShooting_Godot/resource/sprite/prop/active/ActiveProp5002.png.import
new file mode 100644
index 0000000..4ff3842
--- /dev/null
+++ b/DungeonShooting_Godot/resource/sprite/prop/active/ActiveProp5002.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dxffht13og4ag"
+path="res://.godot/imported/ActiveProp5002.png-add857fab665afd62103e2bff145b98c.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://resource/sprite/prop/active/ActiveProp5002.png"
+dest_files=["res://.godot/imported/ActiveProp5002.png-add857fab665afd62103e2bff145b98c.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=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/DungeonShooting_Godot/scene/Hall.tscn b/DungeonShooting_Godot/scene/Hall.tscn
index 6cf71a4..32cc53f 100644
--- a/DungeonShooting_Godot/scene/Hall.tscn
+++ b/DungeonShooting_Godot/scene/Hall.tscn
@@ -123,7 +123,7 @@
ShowOffset = Vector2(2.08165e-12, 2)
CollisionVisible = false
-[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0006" index="0"]
+[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0006" index="1"]
position = Vector2(-10, -3)
texture = ExtResource("7_30qwa")
@@ -135,7 +135,7 @@
ShowOffset = Vector2(2.08165e-12, 2)
CollisionVisible = false
-[node name="ActivityInstance" type="Node2D" parent="ItemRoot/Item0008" index="0"]
+[node name="ActivityInstance" type="Node2D" parent="ItemRoot/Item0008" index="1"]
position = Vector2(2.5, -12)
script = ExtResource("5_lowqi")
Id = "item_0031"
@@ -151,7 +151,7 @@
ShowOffset = Vector2(2.08165e-12, 2)
CollisionVisible = false
-[node name="Item26" type="Sprite2D" parent="ItemRoot/Item0013" index="0"]
+[node name="Item26" type="Sprite2D" parent="ItemRoot/Item0013" index="1"]
position = Vector2(18, -2)
texture = ExtResource("8_61dkg")
@@ -163,19 +163,19 @@
ShowOffset = Vector2(2.08165e-12, 2)
CollisionVisible = false
-[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0017" index="0"]
+[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0017" index="1"]
position = Vector2(-2, -13)
texture = ExtResource("8_u3vry")
-[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0017" index="1"]
+[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0017" index="2"]
position = Vector2(18, -11)
texture = ExtResource("9_lhdr8")
-[node name="Sprite2D3" type="Sprite2D" parent="ItemRoot/Item0017" index="2"]
+[node name="Sprite2D3" type="Sprite2D" parent="ItemRoot/Item0017" index="3"]
position = Vector2(-16, -2)
texture = ExtResource("10_4eqn0")
-[node name="Sprite2D4" type="Sprite2D" parent="ItemRoot/Item0017" index="3"]
+[node name="Sprite2D4" type="Sprite2D" parent="ItemRoot/Item0017" index="4"]
position = Vector2(10, -1)
texture = ExtResource("11_tg3jo")
@@ -201,11 +201,11 @@
DefaultLayer = 1
CollisionVisible = false
-[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0002" index="0"]
+[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0002" index="1"]
position = Vector2(32, -2)
texture = ExtResource("12_agfji")
-[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0002" index="1"]
+[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0002" index="2"]
material = SubResource("ShaderMaterial_i7git")
position = Vector2(0, -15)
scale = Vector2(1, -1)
@@ -223,7 +223,7 @@
Id = "item_0004"
DefaultLayer = 1
-[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0004" index="0"]
+[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0004" index="1"]
position = Vector2(0, -17)
texture = ExtResource("13_unnpl")
@@ -258,15 +258,15 @@
Id = "item_0009"
DefaultLayer = 1
-[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0009" index="0"]
+[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0009" index="1"]
position = Vector2(-24, -10)
texture = ExtResource("15_h7524")
-[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0009" index="1"]
+[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0009" index="2"]
position = Vector2(1, -10)
texture = ExtResource("15_h7524")
-[node name="Sprite2D3" type="Sprite2D" parent="ItemRoot/Item0009" index="2"]
+[node name="Sprite2D3" type="Sprite2D" parent="ItemRoot/Item0009" index="3"]
position = Vector2(37, -10)
texture = ExtResource("15_h7524")
@@ -300,7 +300,7 @@
Id = "item_0015"
DefaultLayer = 1
-[node name="Slice04" type="Sprite2D" parent="ItemRoot/Item0015" index="0"]
+[node name="Slice04" type="Sprite2D" parent="ItemRoot/Item0015" index="1"]
position = Vector2(16, -9)
texture = ExtResource("15_h7524")
@@ -322,11 +322,11 @@
Id = "item_0019"
DefaultLayer = 1
-[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0019" index="0"]
+[node name="Sprite2D" type="Sprite2D" parent="ItemRoot/Item0019" index="1"]
position = Vector2(-23, -7)
texture = ExtResource("16_xj0e1")
-[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0019" index="1"]
+[node name="Sprite2D2" type="Sprite2D" parent="ItemRoot/Item0019" index="2"]
position = Vector2(24, -8)
texture = ExtResource("17_gwwce")
diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs
index bbeec0f..9caae89 100644
--- a/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs
+++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject_Init.cs
@@ -249,6 +249,11 @@
///
public const string Id_prop5001 = "prop5001";
///
+ /// 名称: 猪猪存钱罐
+ /// 简介:
+ ///
+ public const string Id_prop5002 = "prop5002";
+ ///
/// 名称: 木质宝箱
/// 简介: 木质宝箱
///
diff --git a/DungeonShooting_Godot/src/game/activity/prop/ActiveProp.cs b/DungeonShooting_Godot/src/game/activity/prop/ActiveProp.cs
index 0b5daab..a82a0bb 100644
--- a/DungeonShooting_Godot/src/game/activity/prop/ActiveProp.cs
+++ b/DungeonShooting_Godot/src/game/activity/prop/ActiveProp.cs
@@ -481,6 +481,16 @@
{
buffFragment.OnPickUpItem();
}
+
+ foreach (var conditionFragment in _conditionFragment)
+ {
+ conditionFragment.OnPickUpItem();
+ }
+
+ foreach (var effectFragment in _effectFragment)
+ {
+ effectFragment.OnPickUpItem();
+ }
}
public override void OnRemoveItem()
@@ -489,6 +499,16 @@
{
buffFragment.OnRemoveItem();
}
+
+ foreach (var conditionFragment in _conditionFragment)
+ {
+ conditionFragment.OnRemoveItem();
+ }
+
+ foreach (var effectFragment in _effectFragment)
+ {
+ effectFragment.OnRemoveItem();
+ }
}
public virtual void OnActiveItem()
diff --git a/DungeonShooting_Godot/src/game/activity/role/Role.cs b/DungeonShooting_Godot/src/game/activity/role/Role.cs
index f383169..1dfe706 100644
--- a/DungeonShooting_Godot/src/game/activity/role/Role.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/Role.cs
@@ -1296,7 +1296,7 @@
///
public virtual void AddGold(int goldCount)
{
- RoleState.Gold += goldCount;
+ RoleState.Gold += RoleState.CalcGetGold(goldCount);
//播放音效
SoundManager.PlaySoundByConfig(ExcelConfig.Sound_Map["gold"], Position, this);
}
diff --git a/DungeonShooting_Godot/src/game/activity/role/RoleState.cs b/DungeonShooting_Godot/src/game/activity/role/RoleState.cs
index f974546..3a328e4 100644
--- a/DungeonShooting_Godot/src/game/activity/role/RoleState.cs
+++ b/DungeonShooting_Godot/src/game/activity/role/RoleState.cs
@@ -226,4 +226,20 @@
return distance;
}
+
+ ///
+ /// 计算获取的金币
+ ///
+ public event Action> CalcGetGoldEvent;
+ public int CalcGetGold(int gold)
+ {
+ if (CalcGetGoldEvent != null)
+ {
+ var result = new RefValue(gold);
+ CalcGetGoldEvent(gold, result);
+ return result.Value;
+ }
+
+ return gold;
+ }
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/buff/BuffFragment.cs b/DungeonShooting_Godot/src/game/buff/BuffFragment.cs
index 7599706..82dd69d 100644
--- a/DungeonShooting_Godot/src/game/buff/BuffFragment.cs
+++ b/DungeonShooting_Godot/src/game/buff/BuffFragment.cs
@@ -6,13 +6,4 @@
///
public abstract class BuffFragment : PropFragment
{
- ///
- /// 当道具被拾起时调用 (在 Master 赋值之后调用)
- ///
- public abstract void OnPickUpItem();
-
- ///
- /// 当道具被移除时调用 (在 Master 置为 null 之前调用)
- ///
- public abstract void OnRemoveItem();
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/buff/ConditionFragment.cs b/DungeonShooting_Godot/src/game/buff/ConditionFragment.cs
index c8b8d45..2fbd2ac 100644
--- a/DungeonShooting_Godot/src/game/buff/ConditionFragment.cs
+++ b/DungeonShooting_Godot/src/game/buff/ConditionFragment.cs
@@ -8,4 +8,12 @@
/// 当检测是否可以使用时调用
///
public abstract bool OnCheckUse();
+
+ public override void OnPickUpItem()
+ {
+ }
+
+ public override void OnRemoveItem()
+ {
+ }
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/buff/EffectFragment.cs b/DungeonShooting_Godot/src/game/buff/EffectFragment.cs
index d971d8f..6837887 100644
--- a/DungeonShooting_Godot/src/game/buff/EffectFragment.cs
+++ b/DungeonShooting_Godot/src/game/buff/EffectFragment.cs
@@ -8,4 +8,12 @@
/// 使用道具的回调
///
public abstract void OnUse();
+
+ public override void OnPickUpItem()
+ {
+ }
+
+ public override void OnRemoveItem()
+ {
+ }
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/buff/PropFragment.cs b/DungeonShooting_Godot/src/game/buff/PropFragment.cs
index 5dcd749..ef9c638 100644
--- a/DungeonShooting_Godot/src/game/buff/PropFragment.cs
+++ b/DungeonShooting_Godot/src/game/buff/PropFragment.cs
@@ -10,6 +10,16 @@
public Role Role => Master?.Master;
///
+ /// 当道具被拾起时调用 (在 Master 赋值之后调用)
+ ///
+ public abstract void OnPickUpItem();
+
+ ///
+ /// 当道具被移除时调用 (在 Master 置为 null 之前调用)
+ ///
+ public abstract void OnRemoveItem();
+
+ ///
/// 初始化被动属性参数
///
public virtual void InitParam(float arg1)
diff --git a/DungeonShooting_Godot/src/game/buff/buff/Buff_GetGold.cs b/DungeonShooting_Godot/src/game/buff/buff/Buff_GetGold.cs
new file mode 100644
index 0000000..d3cff87
--- /dev/null
+++ b/DungeonShooting_Godot/src/game/buff/buff/Buff_GetGold.cs
@@ -0,0 +1,52 @@
+
+using Godot;
+
+[BuffFragment("GetGold", "计算获取的金币buff, " +
+ "参数‘1’为金币数量添加类型, 1: 具体数量, 2:百分比(小数), " +
+ "参数‘2’为增加金币的数量值")]
+public class Buff_GetGold : BuffFragment
+{
+ private int _type;
+ private float _value;
+
+ public override void InitParam(float arg1, float arg2)
+ {
+ _type = (int)arg1;
+ _value = arg2;
+ }
+
+ public override void OnPickUpItem()
+ {
+ if (_type == 1)
+ {
+ Role.RoleState.CalcGetGoldEvent += OnCalcGetGoldEvent1;
+ }
+ else
+ {
+ Role.RoleState.CalcGetGoldEvent += OnCalcGetGoldEvent2;
+ }
+ }
+
+ public override void OnRemoveItem()
+ {
+ if (_type == 1)
+ {
+ Role.RoleState.CalcGetGoldEvent -= OnCalcGetGoldEvent1;
+ }
+ else
+ {
+ Role.RoleState.CalcGetGoldEvent -= OnCalcGetGoldEvent2;
+ }
+ }
+
+ private void OnCalcGetGoldEvent1(int origin, RefValue refValue)
+ {
+ refValue.Value += Mathf.CeilToInt(_value);
+ }
+
+ private void OnCalcGetGoldEvent2(int origin, RefValue refValue)
+ {
+ refValue.Value += Mathf.CeilToInt(origin * _value);
+ }
+
+}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/game/buff/effect/Eff_PiggyBank.cs b/DungeonShooting_Godot/src/game/buff/effect/Eff_PiggyBank.cs
new file mode 100644
index 0000000..3712386
--- /dev/null
+++ b/DungeonShooting_Godot/src/game/buff/effect/Eff_PiggyBank.cs
@@ -0,0 +1,47 @@
+
+using Godot;
+
+[EffectFragment("PiggyBank", "存钱罐, 使用后返还存入的金币, 参数1为返还金币的倍率(小数)")]
+public class Eff_PiggyBank : EffectFragment
+{
+ private float _value;
+ //当前存入的金币数量
+ private float _currValue;
+
+ public override void InitParam(float arg1)
+ {
+ _value = arg1;
+ }
+
+ public override void OnUse()
+ {
+ Debug.Log("存入了: " + _currValue);
+ var goldList = Utils.GetGoldList(Mathf.FloorToInt(_currValue * _value));
+ foreach (var id in goldList)
+ {
+ var o = ObjectManager.GetActivityObject(id);
+ o.Position = Role.Position;
+ o.Throw(0,
+ Utils.Random.RandomRangeInt(50, 110),
+ new Vector2(Utils.Random.RandomRangeInt(-20, 20), Utils.Random.RandomRangeInt(-20, 20)),
+ 0
+ );
+ }
+ }
+
+ public override void OnPickUpItem()
+ {
+ Role.RoleState.CalcGetGoldEvent += OnCalcGetGoldEvent;
+ }
+
+ public override void OnRemoveItem()
+ {
+ Role.RoleState.CalcGetGoldEvent -= OnCalcGetGoldEvent;
+ }
+
+ private void OnCalcGetGoldEvent(int origin, RefValue refValue)
+ {
+ _currValue += refValue.Value;
+ refValue.Value = 0;
+ }
+}
\ No newline at end of file