mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-05-28 06:51:54 +08:00
feat(武器): 添加氧化加农炮及其相关资源
新增氧化加农炮武器,包含武器脚本、子弹效果、贴图资源及UI组件 调整TipBox动画参数和Rooster默认武器
This commit is contained in:
@@ -0,0 +1,169 @@
|
||||
[gd_scene load_steps=24 format=3 uid="uid://c54fnnvip38px"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_0xy1l"]
|
||||
[ext_resource type="Script" uid="uid://dpxfoyb33fo6t" path="res://scripts/Contents/Bullets/OxygenFire.gd" id="2_rnqn2"]
|
||||
[ext_resource type="Texture2D" uid="uid://hk7rufcc8vb5" path="res://resources/bullets/oxygen-fire/full-circle.svg" id="3_aagwn"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_e772m"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("particle:emitting")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/1/type = "bezier"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("%texture/..:speed")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"handle_modes": PackedInt32Array(0),
|
||||
"points": PackedFloat32Array(10, -0.25, 0, 0.25, 0),
|
||||
"times": PackedFloat32Array(0)
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_aagwn"]
|
||||
resource_name = "spawn"
|
||||
length = 2.0
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("particle:emitting")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/1/type = "bezier"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("%texture/..:speed")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"handle_modes": PackedInt32Array(0, 2),
|
||||
"points": PackedFloat32Array(10, 0, 0, 2, 0, 0, 0, 0, 0, 0),
|
||||
"times": PackedFloat32Array(0, 2)
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_qhva2"]
|
||||
_data = {
|
||||
&"RESET": SubResource("Animation_e772m"),
|
||||
&"spawn": SubResource("Animation_aagwn")
|
||||
}
|
||||
|
||||
[sub_resource type="Curve" id="Curve_aagwn"]
|
||||
_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_e772m"]
|
||||
curve = SubResource("Curve_aagwn")
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_qhva2"]
|
||||
colors = PackedColorArray(1, 0.88550174, 0, 1, 1, 0, 0, 1)
|
||||
|
||||
[sub_resource type="GradientTexture1D" id="GradientTexture1D_7krda"]
|
||||
gradient = SubResource("Gradient_qhva2")
|
||||
|
||||
[sub_resource type="Curve" id="Curve_qhva2"]
|
||||
_limits = [0.0, 2.0, 0.0, 1.0]
|
||||
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 2), 0.0, 0.0, 0, 0]
|
||||
point_count = 2
|
||||
|
||||
[sub_resource type="CurveTexture" id="CurveTexture_7krda"]
|
||||
curve = SubResource("Curve_qhva2")
|
||||
|
||||
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_e772m"]
|
||||
particle_flag_disable_z = true
|
||||
emission_shape = 1
|
||||
emission_sphere_radius = 28.0
|
||||
gravity = Vector3(0, 0, 0)
|
||||
scale_min = 0.79999995
|
||||
scale_max = 1.1999999
|
||||
scale_curve = SubResource("CurveTexture_7krda")
|
||||
color_ramp = SubResource("GradientTexture1D_7krda")
|
||||
alpha_curve = SubResource("CurveTexture_e772m")
|
||||
|
||||
[sub_resource type="Curve" id="Curve_e772m"]
|
||||
_data = [Vector2(0.7, 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_qhva2"]
|
||||
curve = SubResource("Curve_e772m")
|
||||
|
||||
[sub_resource type="Curve" id="Curve_7krda"]
|
||||
_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_yj8uh"]
|
||||
curve = SubResource("Curve_7krda")
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_aagwn"]
|
||||
offsets = PackedFloat32Array(0.0047393367, 1)
|
||||
colors = PackedColorArray(1, 0.7665578, 0, 1, 1, 0, 0, 1)
|
||||
|
||||
[sub_resource type="GradientTexture1D" id="GradientTexture1D_e772m"]
|
||||
gradient = SubResource("Gradient_aagwn")
|
||||
|
||||
[sub_resource type="Curve" id="Curve_yj8uh"]
|
||||
_data = [Vector2(0.5, 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_87sv1"]
|
||||
curve = SubResource("Curve_yj8uh")
|
||||
|
||||
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_87sv1"]
|
||||
particle_flag_disable_z = true
|
||||
angle_min = 1.0728835e-05
|
||||
angle_max = 360.00003
|
||||
angle_curve = SubResource("CurveTexture_yj8uh")
|
||||
spread = 180.0
|
||||
initial_velocity_max = 200.0
|
||||
gravity = Vector3(0, 0, 0)
|
||||
scale_min = 4.0
|
||||
scale_max = 7.0
|
||||
scale_curve = SubResource("CurveTexture_87sv1")
|
||||
color_initial_ramp = SubResource("GradientTexture1D_e772m")
|
||||
alpha_curve = SubResource("CurveTexture_qhva2")
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_aagwn"]
|
||||
radius = 27.166155
|
||||
|
||||
[node name="OxygenFire" instance=ExtResource("1_0xy1l")]
|
||||
script = ExtResource("2_rnqn2")
|
||||
penerate = 1.0
|
||||
lifeTime = 1000.0
|
||||
autoSpawnAnimation = true
|
||||
freeAfterSpawn = true
|
||||
|
||||
[node name="animator" parent="texture" index="0"]
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_qhva2")
|
||||
}
|
||||
|
||||
[node name="particle" type="GPUParticles2D" parent="texture" index="1"]
|
||||
emitting = false
|
||||
amount = 1
|
||||
texture = ExtResource("3_aagwn")
|
||||
one_shot = true
|
||||
local_coords = true
|
||||
process_material = SubResource("ParticleProcessMaterial_e772m")
|
||||
|
||||
[node name="sender" type="GPUParticles2D" parent="texture" index="2"]
|
||||
amount = 50
|
||||
local_coords = true
|
||||
process_material = SubResource("ParticleProcessMaterial_87sv1")
|
||||
|
||||
[node name="hitbox" parent="." index="1"]
|
||||
shape = SubResource("CircleShape2D_aagwn")
|
||||
@@ -1,8 +1,8 @@
|
||||
[gd_scene load_steps=13 format=3 uid="uid://bm7ymrri6pykb"]
|
||||
[gd_scene load_steps=13 format=3 uid="uid://dky8574uqc18r"]
|
||||
|
||||
[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_da2ca"]
|
||||
[ext_resource type="PackedScene" uid="uid://b5ebx8duvgtt5" path="res://components/Weapons/Oxygener.tscn" id="3_da2ca"]
|
||||
[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"]
|
||||
[ext_resource type="AudioStream" uid="uid://dmxh3bpk8vyy5" path="res://resources/sounds/effect/Coin.mp3" id="5_xnbhq"]
|
||||
@@ -58,7 +58,7 @@ metadata/_edit_vertical_guides_ = [71.0]
|
||||
[node name="weaponStore" parent="." index="1"]
|
||||
process_mode = 4
|
||||
|
||||
[node name="AcidWind" parent="weaponStore" index="0" instance=ExtResource("3_da2ca")]
|
||||
[node name="Oxygener" parent="weaponStore" index="0" instance=ExtResource("3_da2ca")]
|
||||
debugRebuild = false
|
||||
|
||||
[node name="sprint" parent="sounds" index="0"]
|
||||
|
||||
@@ -50,7 +50,7 @@ tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"handle_modes": PackedInt32Array(0, 0),
|
||||
"points": PackedFloat32Array(1.0039918, 0, 0, 0.3, 1, 0, 0, 0.205, 0, 0),
|
||||
"points": PackedFloat32Array(1.0039918, 0, 0, 0.3, 1.5, 0, 0, 0.205, 0, 0),
|
||||
"times": PackedFloat32Array(0, 0.3)
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
@@ -60,7 +60,7 @@ tracks/1/path = NodePath(".:modulate")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0.14, 0.3),
|
||||
"times": PackedFloat32Array(0.21, 0.3),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
|
||||
@@ -78,7 +78,7 @@ tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"handle_modes": PackedInt32Array(0, 0),
|
||||
"points": PackedFloat32Array(0, 0, 0, 0.2, 0, 1, -0.25, 0.5, 0, 0),
|
||||
"points": PackedFloat32Array(0, 0, 0, 0, 0, 1, -0.2, 1, 0, 0),
|
||||
"times": PackedFloat32Array(0, 0.3)
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
@@ -104,7 +104,6 @@ _data = {
|
||||
[node name="TipBox" type="PanelContainer"]
|
||||
offset_right = 79.0
|
||||
offset_bottom = 34.0
|
||||
scale = Vector2(1, 2)
|
||||
theme_override_styles/panel = SubResource("StyleBoxFlat_nooq4")
|
||||
script = ExtResource("1_7vuk3")
|
||||
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://b5ebx8duvgtt5"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_8jd12"]
|
||||
[ext_resource type="Script" uid="uid://bjraoa0lwchon" path="res://scripts/Contents/Weapons/Oxygener.gd" id="2_thqd2"]
|
||||
[ext_resource type="Texture2D" uid="uid://gpwxs56alc7m" path="res://resources/weapons/oxygener.png" id="2_xmkcx"]
|
||||
|
||||
[node name="Oxygener" instance=ExtResource("1_8jd12")]
|
||||
script = ExtResource("2_thqd2")
|
||||
avatarTexture = ExtResource("2_xmkcx")
|
||||
displayName = "氧化加农炮"
|
||||
quality = 0
|
||||
typeTopic = 2
|
||||
store = {
|
||||
"atk": 10,
|
||||
"fireatk": 2.0,
|
||||
"max-n": 7.0,
|
||||
"min-n": 3.0
|
||||
}
|
||||
storeType = {
|
||||
"atk": 1,
|
||||
"fireatk": 1,
|
||||
"max-n": 1,
|
||||
"min-n": 1
|
||||
}
|
||||
descriptionTemplate = "大概率高速喷出火焰,造成$fireatk点伤害。小概率喷出$min-n~$max-n滴[b]浓硝酸[/b],每滴造成$atk点伤害。"
|
||||
cooldown = 50.0
|
||||
|
||||
[node name="avatar" parent="container/info" index="0"]
|
||||
texture = ExtResource("2_xmkcx")
|
||||
|
||||
[node name="name" parent="container/info" index="2"]
|
||||
displayName = "氧化加农炮"
|
||||
quality = 0
|
||||
typeTopic = 2
|
||||
|
||||
[node name="description" parent="container" index="2"]
|
||||
text = "[center]大概率高速喷出火焰,造成[color=cyan]2[/color]点伤害。小概率喷出[color=cyan]3[/color]~[color=cyan]7[/color]滴[b]浓硝酸[/b],每滴造成[color=cyan]10[/color]点伤害。[/center]"
|
||||
@@ -0,0 +1 @@
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="62" height="62" viewBox="0,0,62,62"><g transform="translate(-209,-149)"><g fill="#ffffff" stroke="none" stroke-width="0" stroke-miterlimit="10"><path d="M209,180c0,-17.12083 13.87917,-31 31,-31c17.12083,0 31,13.87917 31,31c0,17.12083 -13.87917,31 -31,31c-17.12083,0 -31,-13.87917 -31,-31z"/></g></g></svg><!--rotationCenter:31:31-->
|
||||
|
After Width: | Height: | Size: 436 B |
@@ -0,0 +1,43 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://hk7rufcc8vb5"
|
||||
path="res://.godot/imported/full-circle.svg-27d949e74daf680a66365c8d402bedb2.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://resources/bullets/oxygen-fire/full-circle.svg"
|
||||
dest_files=["res://.godot/imported/full-circle.svg-27d949e74daf680a66365c8d402bedb2.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
|
||||
svg/scale=1.0
|
||||
editor/scale_with_editor_scale=false
|
||||
editor/convert_colors_with_editor_theme=false
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 471 KiB |
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://gpwxs56alc7m"
|
||||
path="res://.godot/imported/oxygener.png-9562807acaf7863f7d9eadae19d1bc70.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://resources/weapons/oxygener.png"
|
||||
dest_files=["res://.godot/imported/oxygener.png-9562807acaf7863f7d9eadae19d1bc70.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
|
||||
@@ -0,0 +1,5 @@
|
||||
extends BulletBase
|
||||
class_name OxygenFire
|
||||
|
||||
func ai():
|
||||
PresetBulletAI.forward(self, rotation)
|
||||
@@ -0,0 +1 @@
|
||||
uid://dpxfoyb33fo6t
|
||||
@@ -22,7 +22,7 @@ func duplicate() -> Wave:
|
||||
wave.per = per
|
||||
return wave
|
||||
|
||||
static var current: int = startWith(1) if WorldManager.isRelease() else startWith(10)
|
||||
static var current: int = startWith(1) if WorldManager.isRelease() else startWith(1)
|
||||
static var WAVE_NORMAL = [
|
||||
Wave.create("Hen", 1, 3, false, 0, INF, 1),
|
||||
Wave.create("Cat", 1, 5, false, 0, INF, 1),
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
@tool
|
||||
extends Weapon
|
||||
|
||||
func update(to: int, origin: Dictionary, _entity: EntityBase):
|
||||
origin["atk"] += 1 * to * soulLevel
|
||||
origin["fireatk"] += 0.5 * to * soulLevel
|
||||
origin["max-n"] *= soulLevel
|
||||
return origin
|
||||
func attack(entity: EntityBase):
|
||||
var bulletName = MathTool.randomChoiceFromWeights(["OxygenFire", "AcidN"], [100, 1])
|
||||
for i in randi_range(readStore("min-n"), readStore("max-n")) if bulletName == "AcidN" else 1:
|
||||
for bullet in BulletBase.generate(
|
||||
ComponentManager.getBullet(bulletName),
|
||||
entity,
|
||||
entity.findWeaponAnchor("normal"),
|
||||
entity.position.angle_to_point(get_global_mouse_position()),
|
||||
):
|
||||
if bullet is OxygenFire:
|
||||
bullet.baseDamage = readStore("fireatk")
|
||||
elif bullet is AcidN:
|
||||
bullet.baseDamage = readStore("atk")
|
||||
@@ -0,0 +1 @@
|
||||
uid://bjraoa0lwchon
|
||||
Reference in New Issue
Block a user