diff --git a/components/Bullets/CursorKnife.tscn b/components/Bullets/CursorKnife.tscn new file mode 100644 index 0000000..03fd90e --- /dev/null +++ b/components/Bullets/CursorKnife.tscn @@ -0,0 +1,172 @@ +[gd_scene load_steps=16 format=3 uid="uid://cxjsajua2a82n"] + +[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_epcdw"] +[ext_resource type="Script" uid="uid://c337id4kvvj58" path="res://scripts/Contents/Bullets/CursorKnife.gd" id="2_glt8o"] +[ext_resource type="Texture2D" uid="uid://geax1diwtp48" path="res://resources/bullets/cursor/knife1.png" id="5_aqt0q"] + +[sub_resource type="SpriteFrames" id="SpriteFrames_vdv8l"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": ExtResource("5_aqt0q") +}], +"loop": false, +"name": &"default", +"speed": 10.0 +}] + +[sub_resource type="Animation" id="Animation_glt8o"] +length = 0.001 +tracks/0/type = "bezier" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:scale:x") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"handle_modes": PackedInt32Array(0), +"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0) +} +tracks/1/type = "bezier" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:scale:y") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"handle_modes": PackedInt32Array(0), +"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0) +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath(".:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} + +[sub_resource type="Animation" id="Animation_ioc4f"] +resource_name = "spawn" +step = 0.1 +tracks/0/type = "bezier" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:scale:x") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"handle_modes": PackedInt32Array(0, 0, 0), +"points": PackedFloat32Array(0.5, -0.16111112, 0, 0, 0, 1.25, -0.25, 0, 0.25, 0, 0.5, -0.16111112, 0, 0, 0), +"times": PackedFloat32Array(0, 0.5, 1) +} +tracks/1/type = "bezier" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:scale:y") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"handle_modes": PackedInt32Array(0, 0, 0), +"points": PackedFloat32Array(0.5, -0.16111112, 0, 0, 0, 1.25, -0.25, 0, 0.25, 0, 0.5, -0.16111112, 0, 0, 0), +"times": PackedFloat32Array(0, 0.5, 1) +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath(".:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.3, 0.7, 1), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_t6dk8"] +_data = { +&"RESET": SubResource("Animation_glt8o"), +&"spawn": SubResource("Animation_ioc4f") +} + +[sub_resource type="Curve" id="Curve_r4tbf"] +_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] +point_count = 2 + +[sub_resource type="CurveTexture" id="CurveTexture_3757w"] +curve = SubResource("Curve_r4tbf") + +[sub_resource type="Gradient" id="Gradient_epcdw"] +colors = PackedColorArray(0, 1, 0, 1, 1, 1, 1, 1) + +[sub_resource type="GradientTexture1D" id="GradientTexture1D_ioc4f"] +gradient = SubResource("Gradient_epcdw") + +[sub_resource type="Curve" id="Curve_glt8o"] +_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0.7), 0.0, 0.0, 0, 0] +point_count = 2 + +[sub_resource type="CurveTexture" id="CurveTexture_t6dk8"] +curve = SubResource("Curve_glt8o") + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_aqt0q"] +particle_flag_disable_z = true +emission_shape = 3 +emission_box_extents = Vector3(1, 80, 1) +angle_min = 1.0728835e-05 +angle_max = 360.00003 +direction = Vector3(-1, 0, 0) +spread = 15.0 +initial_velocity_min = 100.0 +initial_velocity_max = 400.0 +gravity = Vector3(0, 0, 0) +scale_min = 5.0 +scale_max = 10.0 +scale_curve = SubResource("CurveTexture_t6dk8") +color_initial_ramp = SubResource("GradientTexture1D_ioc4f") +alpha_curve = SubResource("CurveTexture_3757w") + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_epcdw"] +size = Vector2(126, 388) + +[node name="CursorKnife" instance=ExtResource("1_epcdw")] +script = ExtResource("2_glt8o") +speed = 5.0 +penerate = 1.0 +penerateDamageReduction = 0.25 +autoSpawnAnimation = true +autoDestroyOnHitMap = false +autoPlayTexture = true +freeAfterSpawn = true +knockback = 10.0 + +[node name="texture" parent="." index="0"] +position = Vector2(-33, 4) +rotation = -0.6813664 +scale = Vector2(1e-05, 1e-05) +sprite_frames = SubResource("SpriteFrames_vdv8l") +frame_progress = 1.0 + +[node name="animator" parent="texture" index="0"] +libraries = { +&"": SubResource("AnimationLibrary_t6dk8") +} + +[node name="trail" type="GPUParticles2D" parent="texture" index="1"] +z_index = -1 +position = Vector2(28.85057, 31.122555) +rotation = 0.6806784 +amount = 100 +preprocess = 1.0 +process_material = SubResource("ParticleProcessMaterial_aqt0q") + +[node name="hitbox" parent="." index="1"] +position = Vector2(45, 30) +shape = SubResource("RectangleShape2D_epcdw") diff --git a/components/Characters/Rooster.tscn b/components/Characters/Rooster.tscn index 43f72d9..33e4583 100644 --- a/components/Characters/Rooster.tscn +++ b/components/Characters/Rooster.tscn @@ -2,7 +2,7 @@ [ext_resource type="PackedScene" uid="uid://cvogxi7mktumf" path="res://components/Abstracts/EntityBase.tscn" id="1_e5pl8"] [ext_resource type="Script" uid="uid://cthtupc6dtbav" path="res://scripts/Contents/Characters/Rooster.gd" id="2_oqdqd"] -[ext_resource type="PackedScene" uid="uid://yq7vmijwvgx1" path="res://components/Weapons/AcidWind.tscn" id="3_0omr3"] +[ext_resource type="PackedScene" uid="uid://dgxvgsipl0gr1" path="res://components/Weapons/CursorKnife.tscn" id="3_0omr3"] [ext_resource type="PackedScene" uid="uid://c0n3igy4hucrg" path="res://components/Weapons/PurpleCrystal.tscn" id="4_0omr3"] [ext_resource type="AudioStream" uid="uid://cdrevrq7n6yqa" path="res://resources/sounds/effect/Boing.mp3" id="4_66s6c"] [ext_resource type="AudioStream" uid="uid://benyec5bqni0b" path="res://resources/sounds/effect/Chomp.wav" id="4_k0yme"] @@ -88,18 +88,8 @@ radius = 61.204575 [node name="Rooster" instance=ExtResource("1_e5pl8")] script = ExtResource("2_oqdqd") -defaultCooldownUnit = null -isBoss = null displayName = "公鸡" -sprintMultiplier = null -drops = null -dropCounts = null -appleCount = null -level = null -currentInvinsible = null useStatic = true -hurtAudioRate = null -health = null metadata/_edit_horizontal_guides_ = [-188.0] metadata/_edit_vertical_guides_ = [71.0] @@ -112,8 +102,8 @@ process_material = SubResource("ParticleProcessMaterial_joj4g") [node name="weaponStore" parent="." index="2"] process_mode = 4 -[node name="AcidWind" parent="weaponStore" index="0" instance=ExtResource("3_0omr3")] -offset_bottom = 566.0 +[node name="CursorKnife" parent="weaponStore" index="0" instance=ExtResource("3_0omr3")] +offset_bottom = 350.0 [node name="PurpleCrystal" parent="weaponStore" index="1" instance=ExtResource("4_0omr3")] debugRebuild = false diff --git a/components/Feeds/A-Applr.tscn b/components/Feeds/A-Applr.tscn new file mode 100644 index 0000000..f9dfaaf --- /dev/null +++ b/components/Feeds/A-Applr.tscn @@ -0,0 +1,25 @@ +[gd_scene load_steps=5 format=3 uid="uid://uu0s26ehdr4h"] + +[ext_resource type="PackedScene" uid="uid://bykwevnv7keeh" path="res://components/Abstracts/FeedCardBase.tscn" id="1_cwqpr"] +[ext_resource type="Texture2D" uid="uid://ckr8tw7fsa7qx" path="res://resources/weapons/AcidWind.png" id="2_cq26m"] +[ext_resource type="Texture2D" uid="uid://c2q4cf4ivu7o7" path="res://resources/feeds/apple.png" id="2_l1ph2"] +[ext_resource type="PackedScene" uid="uid://dgxvgsipl0gr1" path="res://components/Weapons/CursorKnife.tscn" id="3_powvs"] + +[node name="Applr" instance=ExtResource("1_cwqpr")] +avatarTexture = ExtResource("2_l1ph2") +displayName = "焦糖苹果" +quality = 2 +topic = 8 +fields = Array[int]([14]) +fieldValues = Array[float]([0.01]) +weapons = Array[PackedScene]([ExtResource("3_powvs")]) +costs = Array[int]([0, 2]) +costCounts = Array[int]([500, 1]) + +[node name="avatar" parent="container/info" index="0"] +texture = ExtResource("2_cq26m") + +[node name="name" parent="container/info" index="1"] +displayName = "酸蚀风暴" +quality = 2 +topic = 8 diff --git a/components/Weapons/CursorKnife.tscn b/components/Weapons/CursorKnife.tscn new file mode 100644 index 0000000..38b8f1c --- /dev/null +++ b/components/Weapons/CursorKnife.tscn @@ -0,0 +1,40 @@ +[gd_scene load_steps=5 format=3 uid="uid://dgxvgsipl0gr1"] + +[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_bri6r"] +[ext_resource type="Script" uid="uid://jyalew2bgcnk" path="res://scripts/Contents/Weapons/CursorKnife.gd" id="2_sn7uu"] +[ext_resource type="Texture2D" uid="uid://blnryfwabfo5v" path="res://resources/weapons/CursorKnife.png" id="3_mdipf"] +[ext_resource type="AudioStream" uid="uid://b3y226i1875iq" path="res://resources/sounds/effect/cursor.wav" id="4_vttri"] + +[node name="CursorKnife" instance=ExtResource("1_bri6r")] +script = ExtResource("2_sn7uu") +avatarTexture = ExtResource("3_mdipf") +displayName = "光标刃轮" +typeTopic = 1 +costBeachball = 350 +store = { +"atk": 10, +"speed": 0.004 +} +storeType = { +"atk": 1, +"speed": 2 +} +descriptionTemplate = "造成$atk点伤害,攻击速度+$speed。" +cooldown = 300.0 +debugRebuild = true + +[node name="attack" parent="sounds" index="0"] +stream = ExtResource("4_vttri") + +[node name="avatar" parent="container/info" index="0"] +texture = ExtResource("3_mdipf") + +[node name="beachball" parent="container/info/infos" index="1"] +count = 350 + +[node name="name" parent="container/info" index="2"] +displayName = "光标刃轮" +typeTopic = 1 + +[node name="description" parent="container" index="2"] +text = "[center]造成[color=cyan]10[/color]点伤害,攻击速度+[color=cyan]0.4%[/color]。[/center]" diff --git a/resources/bullets/cursor/knife1.png b/resources/bullets/cursor/knife1.png new file mode 100644 index 0000000..49a13a8 Binary files /dev/null and b/resources/bullets/cursor/knife1.png differ diff --git a/resources/bullets/cursor/knife1.png.import b/resources/bullets/cursor/knife1.png.import new file mode 100644 index 0000000..8c78568 --- /dev/null +++ b/resources/bullets/cursor/knife1.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://geax1diwtp48" +path="res://.godot/imported/knife1.png-0b91adeafa88b2b0aff470d5658c7509.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/bullets/cursor/knife1.png" +dest_files=["res://.godot/imported/knife1.png-0b91adeafa88b2b0aff470d5658c7509.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/resources/bullets/cursor/knife2.png b/resources/bullets/cursor/knife2.png new file mode 100644 index 0000000..9736fea Binary files /dev/null and b/resources/bullets/cursor/knife2.png differ diff --git a/resources/bullets/cursor/knife2.png.import b/resources/bullets/cursor/knife2.png.import new file mode 100644 index 0000000..12058f9 --- /dev/null +++ b/resources/bullets/cursor/knife2.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bso5w74dhk5kf" +path="res://.godot/imported/knife2.png-513a160123899eaf58316dbc03d64226.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/bullets/cursor/knife2.png" +dest_files=["res://.godot/imported/knife2.png-513a160123899eaf58316dbc03d64226.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/resources/bullets/cursor/knife3.png b/resources/bullets/cursor/knife3.png new file mode 100644 index 0000000..845a4c5 Binary files /dev/null and b/resources/bullets/cursor/knife3.png differ diff --git a/resources/bullets/cursor/knife3.png.import b/resources/bullets/cursor/knife3.png.import new file mode 100644 index 0000000..78459e7 --- /dev/null +++ b/resources/bullets/cursor/knife3.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://emue85ioh3xf" +path="res://.godot/imported/knife3.png-af6e7d878d4ea96fff7c3673bfc5c90f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/bullets/cursor/knife3.png" +dest_files=["res://.godot/imported/knife3.png-af6e7d878d4ea96fff7c3673bfc5c90f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/resources/bullets/cursor/knife4.png b/resources/bullets/cursor/knife4.png new file mode 100644 index 0000000..2d45f17 Binary files /dev/null and b/resources/bullets/cursor/knife4.png differ diff --git a/resources/bullets/cursor/knife4.png.import b/resources/bullets/cursor/knife4.png.import new file mode 100644 index 0000000..37b14ba --- /dev/null +++ b/resources/bullets/cursor/knife4.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c5k0u4kjly3dq" +path="res://.godot/imported/knife4.png-fa9287dd57e900a79f97e8623f27afa4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/bullets/cursor/knife4.png" +dest_files=["res://.godot/imported/knife4.png-fa9287dd57e900a79f97e8623f27afa4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/resources/feeds/apple.png b/resources/feeds/apple.png new file mode 100644 index 0000000..94cb3bc Binary files /dev/null and b/resources/feeds/apple.png differ diff --git a/resources/feeds/apple.png.import b/resources/feeds/apple.png.import new file mode 100644 index 0000000..c73cb1d --- /dev/null +++ b/resources/feeds/apple.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c2q4cf4ivu7o7" +path="res://.godot/imported/apple.png-2855ac6ec79b5c6e6266ca7d4bcbbc5e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/feeds/apple.png" +dest_files=["res://.godot/imported/apple.png-2855ac6ec79b5c6e6266ca7d4bcbbc5e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/resources/sounds/effect/cursor.wav b/resources/sounds/effect/cursor.wav new file mode 100644 index 0000000..183147b Binary files /dev/null and b/resources/sounds/effect/cursor.wav differ diff --git a/resources/sounds/effect/cursor.wav.import b/resources/sounds/effect/cursor.wav.import new file mode 100644 index 0000000..b451cc8 --- /dev/null +++ b/resources/sounds/effect/cursor.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://b3y226i1875iq" +path="res://.godot/imported/cursor.wav-621252c6cad81c118a19e5bc00f6ef62.sample" + +[deps] + +source_file="res://resources/sounds/effect/cursor.wav" +dest_files=["res://.godot/imported/cursor.wav-621252c6cad81c118a19e5bc00f6ef62.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/resources/weapons/CursorKnife.png b/resources/weapons/CursorKnife.png new file mode 100644 index 0000000..f2a88c8 Binary files /dev/null and b/resources/weapons/CursorKnife.png differ diff --git a/resources/weapons/CursorKnife.png.import b/resources/weapons/CursorKnife.png.import new file mode 100644 index 0000000..962d9e4 --- /dev/null +++ b/resources/weapons/CursorKnife.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://blnryfwabfo5v" +path="res://.godot/imported/CursorKnife.png-2dfd5e8e0a16b5dd3b92a8b02149823a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/weapons/CursorKnife.png" +dest_files=["res://.godot/imported/CursorKnife.png-2dfd5e8e0a16b5dd3b92a8b02149823a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +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/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +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/scripts/Contents/Bullets/CursorKnife.gd b/scripts/Contents/Bullets/CursorKnife.gd new file mode 100644 index 0000000..0152b0b --- /dev/null +++ b/scripts/Contents/Bullets/CursorKnife.gd @@ -0,0 +1,5 @@ +extends BulletBase +class_name CursorKnifeBullet + +func ai(): + PresetBulletAI.forward(self , rotation) diff --git a/scripts/Contents/Bullets/CursorKnife.gd.uid b/scripts/Contents/Bullets/CursorKnife.gd.uid new file mode 100644 index 0000000..b5104cc --- /dev/null +++ b/scripts/Contents/Bullets/CursorKnife.gd.uid @@ -0,0 +1 @@ +uid://c337id4kvvj58 diff --git a/scripts/Contents/Weapons/CursorKnife.gd b/scripts/Contents/Weapons/CursorKnife.gd new file mode 100644 index 0000000..27db1ee --- /dev/null +++ b/scripts/Contents/Weapons/CursorKnife.gd @@ -0,0 +1,18 @@ +@tool +extends Weapon + +func update(to: int, origin: Dictionary, _entity: EntityBase): + origin["atk"] += 2 * to * soulLevel + origin["speed"] += 0.004 * to * soulLevel + return origin +func attack(entity: EntityBase): + attackSpeed = 1 + readStore("speed") + for bullet in BulletBase.generate( + ComponentManager.getBullet("CursorKnife"), + entity, + get_global_mouse_position(), + entity.position.angle_to_point(get_global_mouse_position()) + ): + if bullet is CursorKnifeBullet: + bullet.baseDamage = readStore("atk") + return true diff --git a/scripts/Contents/Weapons/CursorKnife.gd.uid b/scripts/Contents/Weapons/CursorKnife.gd.uid new file mode 100644 index 0000000..cafc604 --- /dev/null +++ b/scripts/Contents/Weapons/CursorKnife.gd.uid @@ -0,0 +1 @@ +uid://jyalew2bgcnk diff --git a/scripts/Statemachine/BulletBase.gd b/scripts/Statemachine/BulletBase.gd index faa21b9..e142cf6 100644 --- a/scripts/Statemachine/BulletBase.gd +++ b/scripts/Statemachine/BulletBase.gd @@ -16,6 +16,7 @@ class_name BulletBase @export var autoLoopAnimation: bool = false @export var autoDestroyAnimation: bool = false @export var autoDestroyOnHitMap: bool = true +@export var autoPlayTexture: bool = false @export var freeAfterSpawn: bool = false @export var knockback: float = 0 # 击退力,物理引擎单位 @export var recoil: float = 0 # 后坐力,物理引擎单位 @@ -57,6 +58,8 @@ func _ready(): tryDestroy() if autoLoopAnimation: animator.play("loop") + if autoPlayTexture: + texture.play("default") body_entered.connect( func(body): if body.is_in_group("map"): @@ -82,7 +85,7 @@ func _physics_process(_delta: float) -> void: [launcher]) if is_instance_valid(targetEntity): PresetBulletAI.trace( - self, + self , targetEntity.getTrackingAnchor(), launcher.fields.get(FieldStore.Entity.BULLET_TRACE) / 10 ) @@ -116,8 +119,8 @@ func determineCrit(): return MathTool.rate(launcher.fields.get(FieldStore.Entity.CRIT_RATE) + GameRule.critRateInfluenceByLuckValue * launcher.fields[FieldStore.Entity.LUCK_VALUE]) func hitEntity(target: Node): var entity: EntityBase = EntityTool.fromHurtbox(target) - if !BulletTool.canDamage(self, entity): return - var resultDamage = entity.bulletHit(self, determineCrit()) + if !BulletTool.canDamage(self , entity): return + var resultDamage = entity.bulletHit(self , determineCrit()) succeedToHit(resultDamage, entity) if MathTool.rate(fullPenerate() - entity.fields[FieldStore.Entity.PENARATION_RESISTANCE]): baseDamage *= 1.0 - penerateDamageReduction @@ -127,7 +130,7 @@ func hitObstacle(target: Node): if target is ObstacleBase: var obstacle = target as ObstacleBase if is_instance_valid(obstacle.launcher): - if not BulletTool.canDamage(self, obstacle.launcher): return + if not BulletTool.canDamage(self , obstacle.launcher): return obstacle.takeDamage(calculateDamage(determineCrit())) if MathTool.rate(fullPenerate() - obstacle.penerateResistance): baseDamage *= 1.0 - penerateDamageReduction diff --git a/scripts/Structs/Weapon.gd b/scripts/Structs/Weapon.gd index 9c1ed5e..9b1ef90 100644 --- a/scripts/Structs/Weapon.gd +++ b/scripts/Structs/Weapon.gd @@ -37,6 +37,7 @@ class_name Weapon var cooldownTimer: CooldownTimer = null var originalStore: Dictionary = {} var chargedTime: float = 0 +var attackSpeed: float = 1 func _ready(): cooldownTimer = CooldownTimer.new() @@ -71,7 +72,7 @@ func _ready(): if get_parent(): var myIndex = get_index() var leftIndex = max(myIndex - 1, 0) - get_parent().move_child(self, leftIndex) + get_parent().move_child(self , leftIndex) ArrayTool.swap(UIState.player.weapons, myIndex, leftIndex) UIState.player.rebuildWeaponIcons() ) @@ -80,7 +81,7 @@ func _ready(): if get_parent(): var myIndex = get_index() var rightIndex = min(myIndex + 1, get_parent().get_child_count() - 1) - get_parent().move_child(self, rightIndex) + get_parent().move_child(self , rightIndex) ArrayTool.swap(UIState.player.weapons, myIndex, rightIndex) UIState.player.rebuildWeaponIcons() ) @@ -167,7 +168,7 @@ func playSound(sound: String): await cloned.finished cloned.queue_free() func canAttackBy(entity: EntityBase): - cooldownTimer.speedScale = entity.fields.get(FieldStore.Entity.ATTACK_SPEED) + cooldownTimer.speedScale = entity.fields.get(FieldStore.Entity.ATTACK_SPEED) * attackSpeed return cooldownTimer.isCooldowned() and entity.isEnergyEnough(needEnergy) func tryAttack(entity: EntityBase): if canAttackBy(entity):