mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-05-28 06:51:54 +08:00
feat: 添加水晶和钻石物品系统
- 在EntityBase中新增水晶和钻石物品类型 - 敌人在死亡时概率掉落水晶,BOSS额外掉落钻石 - 游戏结束时将水晶和钻石存入OutGameStorage - 调整Starter面板中钻石升级成本为0 - 在UI场景中添加水晶和钻石显示节点
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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():
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user