diff --git a/components/Characters/KukeMC.tscn b/components/Characters/KukeMC.tscn index a47b4ee..a8a7a7d 100644 --- a/components/Characters/KukeMC.tscn +++ b/components/Characters/KukeMC.tscn @@ -30,6 +30,9 @@ size = Vector2(150, 150) script = ExtResource("2_s2dg5") displayName = "酷可mc" +[node name="collect" parent="sounds" index="4"] +stream = null + [node name="texture" parent="." index="2"] sprite_frames = SubResource("SpriteFrames_1c0ui") animation = &"walk" diff --git a/components/Scenes/World.tscn b/components/Scenes/World.tscn index b4c7235..d3cc97d 100644 --- a/components/Scenes/World.tscn +++ b/components/Scenes/World.tscn @@ -103,3 +103,4 @@ shape = SubResource("CircleShape2D_4hkht") polygon = PackedVector2Array(-2419, 1803, 2429, 1825, 2392, -366, 2867, -318, 2723, 2241, -2879, 2193, -2797, -2582, 2959, -2528, 2858, -347, 2420, -337, 2441, -1834, -2438, -1792) [node name="rooster" parent="." groups=["players"] instance=ExtResource("3_5ui6q")] +currentInvinsible = true diff --git a/scripts/Contents/Wave.gd b/scripts/Contents/Wave.gd index 71047a3..fdf9920 100644 --- a/scripts/Contents/Wave.gd +++ b/scripts/Contents/Wave.gd @@ -19,8 +19,13 @@ static var WAVE_TESTBOSS = [ Wave.create(preload("res://components/Characters/Bear.tscn"), 0, 0, true, 0, INF, 1), Wave.create(preload("res://components/Characters/KukeMC.tscn"), 0, 0, true, 0, INF, 1), ] -static var data = WAVE_TESTBOSS +static var data = [] +static func customStart(): + var furryr = EntityBase.generate(preload("res://components/Characters/Bear.tscn"), MathTool.randv2_range(500), true, false) + var kukemc = EntityBase.generate(preload("res://components/Characters/KukeMC.tscn"), MathTool.randv2_range(500), true, false) + furryr.currentFocusedBoss = kukemc + kukemc.currentFocusedBoss = furryr static func create( entity_: PackedScene, minCount_: int = 1, @@ -52,5 +57,7 @@ static func spawn(): for j in range(entityCountOf(wave)): EntityBase.generate(wave.entity, MathTool.randv2_range(500), true, wave.isBoss) static func next(): + if current == 0: + customStart() spawn() current += 1 diff --git a/scripts/Statemachine/BulletBase.gd b/scripts/Statemachine/BulletBase.gd index 3b02e33..50af601 100644 --- a/scripts/Statemachine/BulletBase.gd +++ b/scripts/Statemachine/BulletBase.gd @@ -79,9 +79,10 @@ func _physics_process(_delta: float) -> void: func hit(target: Node): var entity: EntityBase = EntityTool.fromHurtbox(target) if !entity || !launcher: return + if entity.currentInvinsible: return if !canDamageSelf && entity == launcher: return if !indisDamage && !GameRule.allowFriendlyFire: - if entity.isPlayer() == launcher.isPlayer(): return + if entity.isPlayer() == launcher.isPlayer() and launcher.currentFocusedBoss != entity: return var damages = entity.takeDamage(self, MathTool.rate(launcher.fields.get(FieldStore.Entity.CRIT_RATE) + GameRule.critRateInfluenceByLuckValue * launcher.fields[FieldStore.Entity.LUCK_VALUE])) succeedToHit(damages) if MathTool.rate(fullPenerate()): diff --git a/scripts/Statemachine/EntityBase.gd b/scripts/Statemachine/EntityBase.gd index 7ddc817..5e927e5 100644 --- a/scripts/Statemachine/EntityBase.gd +++ b/scripts/Statemachine/EntityBase.gd @@ -73,6 +73,7 @@ var inventoryMax = { @export var dropCounts: Array[Vector2] = [] @export var appleCount: Vector2i = Vector2(0, 2) # 死亡后掉落的苹果数量 @export var level: int = 1 +@export var currentInvinsible: bool = false @onready var animatree: AnimationTree = $"%animatree" @onready var texture: AnimatedSprite2D = $"%texture" @@ -127,7 +128,8 @@ func _ready(): icon.weapon = i UIState.skillIconContainer.add_child(icon) else: - currentFocusedBoss = get_tree().get_nodes_in_group("players")[0] + if !currentFocusedBoss: + currentFocusedBoss = get_tree().get_nodes_in_group("players")[0] applyLevel() health = fields.get(FieldStore.Entity.MAX_HEALTH) energy = fields.get(FieldStore.Entity.MAX_ENERGY)