diff --git a/components/Scenes/UI.tscn b/components/Scenes/UI.tscn index 329eec1..5802049 100644 --- a/components/Scenes/UI.tscn +++ b/components/Scenes/UI.tscn @@ -180,6 +180,16 @@ unique_name_in_owner = true layout_mode = 2 type = 4 +[node name="crystal" parent="root/itemsContainer/items" unique_id=707392257 instance=ExtResource("3_o2oi4")] +unique_name_in_owner = true +layout_mode = 2 +type = 5 + +[node name="diamond" parent="root/itemsContainer/items" unique_id=1684500885 instance=ExtResource("3_o2oi4")] +unique_name_in_owner = true +layout_mode = 2 +type = 6 + [node name="energyContainer" type="PanelContainer" parent="root" unique_id=1886165069] unique_name_in_owner = true z_index = 1 diff --git a/scripts/Contents/Panels/GameOver.gd b/scripts/Contents/Panels/GameOver.gd index ea73c7e..c7d2633 100644 --- a/scripts/Contents/Panels/GameOver.gd +++ b/scripts/Contents/Panels/GameOver.gd @@ -25,6 +25,8 @@ func beforeOpen(args: Array = []): audio.play() var reasonTemplate = MathTool.randomChoiceFrom(GameRule.deadReasons) deadreason.text = ("[color=gray]" + reasonTemplate + "凶手是[b]%s[/b]的[b]%s[/b]。[/color]") % args + OutGameStorage.inventory[ItemStore.ItemType.CRYSTAL] += UIState.player.inventory[ItemStore.ItemType.CRYSTAL] + OutGameStorage.inventory[ItemStore.ItemType.DIAMOND] += UIState.player.inventory[ItemStore.ItemType.DIAMOND] func afterOpen(_args: Array = []): returnBtn.disabled = false exitBtn.disabled = false diff --git a/scripts/Contents/Panels/SelectIntialFeed.gd b/scripts/Contents/Panels/SelectIntialFeed.gd index d46fd5b..e32d543 100644 --- a/scripts/Contents/Panels/SelectIntialFeed.gd +++ b/scripts/Contents/Panels/SelectIntialFeed.gd @@ -49,6 +49,8 @@ func beforeOpen(_args: Array = []): startBtn.pressed.emit() ) feedCounted += 1 +func afterOpen(_args: Array = []): + startBtn.disabled = false func clearFeeds(): for feed in initialFeedSelection.get_children(): diff --git a/scripts/Contents/Panels/Starter.gd b/scripts/Contents/Panels/Starter.gd index 2f67b89..4d3348c 100644 --- a/scripts/Contents/Panels/Starter.gd +++ b/scripts/Contents/Panels/Starter.gd @@ -172,7 +172,7 @@ func beforeOpen(_args: Array = []): for field in OutGameStorage.upgradableFieldsAdvance: var fieldShow = ComponentManager.getUIComponent("FieldShow").instantiate() as FieldShow fieldShow.cost(ItemStore.ItemType.CRYSTAL, 50) - fieldShow.cost(ItemStore.ItemType.DIAMOND, 1) + fieldShow.cost(ItemStore.ItemType.DIAMOND, 0) fieldShow.upgradable = true fieldShow.upgradeValue = OutGameStorage.upgradableFieldsAdvance[field] fieldShow.field = field @@ -182,8 +182,12 @@ func beforeOpen(_args: Array = []): func(newValue: float): OutGameStorage.upgradableFieldsValue[fieldShow.field] = newValue for index in len(fieldShow.costCounts): - fieldShow.costCounts[index] *= GameRule.outGameUpgradeMultipiler + if fieldShow.costCounts[index] == 0: + fieldShow.costCounts[index] += 1 + else: + fieldShow.costCounts[index] *= GameRule.outGameUpgradeMultipiler ) upgradeFieldsBox.add_child(fieldShow) startSingleplayerBtn.disabled = false + Wave.current = 0 diff --git a/scripts/Statemachine/EntityBase.gd b/scripts/Statemachine/EntityBase.gd index e7e3682..2b4daf2 100644 --- a/scripts/Statemachine/EntityBase.gd +++ b/scripts/Statemachine/EntityBase.gd @@ -67,6 +67,8 @@ var inventory = { ItemStore.ItemType.APPLE: 5, ItemStore.ItemType.BEACHBALL: 0, ItemStore.ItemType.SOUL: 0, + ItemStore.ItemType.CRYSTAL: 0, + ItemStore.ItemType.DIAMOND: 0 } var inventoryMax = { ItemStore.ItemType.BASEBALL: INF, # 无限 @@ -74,6 +76,8 @@ var inventoryMax = { ItemStore.ItemType.APPLE: 5, ItemStore.ItemType.BEACHBALL: INF, ItemStore.ItemType.SOUL: INF, + ItemStore.ItemType.CRYSTAL: INF, + ItemStore.ItemType.DIAMOND: INF, } @export var defaultCooldownUnit: float = 100 @@ -415,6 +419,18 @@ func tryDie(by: BulletBase = null): fields[FieldStore.Entity.MAX_HEALTH] * randf_range(1 - GameRule.beachballOffset, 1 + GameRule.beachballOffset), position + MathTool.sampleInCircle(GameRule.itemDroppedSpawnOffset) ) + for i in randi_range(0, 20 if isBoss else 3): + ItemDropped.generate( + ItemStore.ItemType.CRYSTAL, + 5 if isBoss else 1, + position + MathTool.sampleInCircle(GameRule.itemDroppedSpawnOffset) + ) + if isBoss: + ItemDropped.generate( + ItemStore.ItemType.DIAMOND, + 1, + position + MathTool.sampleInCircle(GameRule.itemDroppedSpawnOffset) + ) if isBoss: ItemDropped.generate( ItemStore.ItemType.SOUL, @@ -544,6 +560,8 @@ static func generatePlayer(playerName: String) -> EntityBase: var player = generate(ComponentManager.getCharacter("Rooster"), Vector2.ZERO, false) player.displayName = playerName player.name = "Player_%s" % playerName + for field in OutGameStorage.upgradableFieldsValue: + player.fields[field] += OutGameStorage.upgradableFieldsValue[field] return player static func generate( entity: PackedScene, diff --git a/scripts/Structs/Weapon.gd b/scripts/Structs/Weapon.gd index a4cc526..324a9e1 100644 --- a/scripts/Structs/Weapon.gd +++ b/scripts/Structs/Weapon.gd @@ -118,7 +118,6 @@ func _ready(): ) for i in sounds.get_children(): i.process_mode = ProcessMode.PROCESS_MODE_ALWAYS - rebuildInfo() debugRebuild = false # 只能在编辑器里打开 func _physics_process(_delta): if debugRebuild: