public override void AddComponents() { base.AddComponents(); Width = 7; Height = 17; AddComponent(new SensorBodyComponent(-Npc.Padding, -Npc.Padding, Width + Npc.Padding * 2, Height + Npc.Padding * 2, BodyType.Static)); cost = Math.Min(99, Run.Depth * 15); paid = GlobalSave.GetInt("builder_paid", 0); AddComponent(new AnimationComponent("builder")); // GetComponent<DialogComponent>().Dialog.Voice = 15; var dl = GetComponent <DialogComponent>(); dl.InitCallback = () => { dl.Dialog.Str.AddIcon(CommonAse.Ui.GetSlice("coin")); dl.Dialog.Str.SetVariable("need", GetPrice()); }; AddComponent(new InteractableComponent(e => { dl.Start("builder_0", e); return(true); }) { CanInteract = e => !shouldDissappear }); Dialogs.RegisterCallback("builder_0", (d, c) => { if (((ChoiceDialog)d).Choice == 0) { if (!c.To.TryGetComponent <ConsumablesComponent>(out var component) || component.Coins == 0) { // Bro, you have no money! return(Dialogs.Get("builder_1")); } var amount = Math.Min(GetPrice(), component.Coins); paid += amount; component.Coins -= amount; dl.Dialog.Str.SetVariable("need", GetPrice()); if (paid >= cost) { GlobalSave.Put("builder_paid", 0); GlobalSave.Put($"shortcut_{Run.Depth}", true); return(Dialogs.Get("builder_3")); } else { GlobalSave.Put("builder_paid", paid); } return(Dialogs.Get("builder_2")); }
public override void Init() { base.Init(); disk = GlobalSave.GetInt("disk"); top = CommonAse.Props.GetSlice("player_top"); bottom = CommonAse.Props.GetSlice("player"); tdisk = CommonAse.Props.GetSlice("disk"); }
public override void Update(float dt) { base.Update(dt); if (from != null && TryGetComponent <HealthComponent>(out var h) && h.InvincibilityTimer <= 0.45f) { Done = true; if (from is Player) { var count = GlobalSave.GetInt("paintings_destroyed", 0) + 1; if (count >= 100) { Achievements.Unlock("bk:van_no_gogh"); } GlobalSave.Put("paintings_destroyed", count); } for (var i = 0; i < 4; i++) { var part = new ParticleEntity(Particles.Dust()); part.Position = Center; part.Particle.Scale = Lens.util.math.Rnd.Float(0.4f, 0.8f); Area.Add(part); part.Depth = Depth; } if (!HasComponent <AudioEmitterComponent>()) { AddComponent(new AudioEmitterComponent()); } AudioEmitterComponent.Dummy(Area, Center).EmitRandomizedPrefixed("level_chair_break", 2, 0.5f); Particles.BreakSprite(Area, GetComponent <InteractableSliceComponent>().Sprite, Position, Depth); Camera.Instance.Shake(2f); Engine.Instance.Freeze = 1f; } }
private bool DecideState() { if (lockInDemo && BK.Demo) { return(false); } switch (condition) { case 0: return(GlobalSave.IsTrue("played_once")); case 1: return(GlobalSave.IsTrue(ShopNpc.HatTrader)); case 2: return(GlobalSave.IsTrue(ShopNpc.WeaponTrader)); case 3: return(GlobalSave.IsTrue(ShopNpc.AccessoryTrader)); case 4: return(GlobalSave.IsTrue(ShopNpc.ActiveTrader)); case 5: return(GlobalSave.IsTrue(ShopNpc.Mike)); case 6: return(GlobalSave.GetInt("challenges_completed") >= 10); case 7: return(GlobalSave.GetInt("challenges_completed") >= 20); case 8: return(GlobalSave.GetInt("challenges_completed") >= 30); case 9: return(Achievements.IsGroupComplete("a")); case 10: return(Achievements.IsGroupComplete("b")); case 11: return(Achievements.IsGroupComplete("c")); case 12: return(Achievements.IsGroupComplete("d")); } return(false); }
private bool Interact(Entity e) { foreach (var s in Area.Tagged[Tags.Statue]) { if (s.TryGetComponent <DialogComponent>(out var d)) { d.Close(); } } string state; if (achievement != null && achievement.Unlocked) { var d = achievement.CompletionDate; if (d == "???") { d = "~~???~~"; } state = $"[sp 2][cl orange]{Locale.Get($"ach_{id}")}[cl]\n{Locale.Get($"ach_{id}_desc")}\n[cl gray]{Locale.Get("completed_on")} {d}[cl]"; } else { state = $"[sp 2][cl orange]{Locale.Get($"ach_{id}")}[cl]"; if (achievement.Max > 0) { var p = GlobalSave.GetInt($"ach_{id}", 0); state += $"\n[cl gray]{MathUtils.Clamp(0, achievement.Max, p)}/{achievement.Max} {Locale.Get("complete")}[cl]"; } } GetComponent <DialogComponent>().Start(state); return(true); }
public void RenderWindow() { ImGui.Separator(); ImGui.Text($"Time: {Math.Floor(Time / 3600f)}h {Math.Floor(Time / 60f % 60f)}m {Math.Floor(Time % 60f)}s"); ImGui.Text($"Won: {Won}"); ImGui.Text($"Loop: {Run.Loop}"); ImGui.Text($"Max Depth: {MaxDepth}"); ImGui.Text($"Game Version: {GameVersion}"); Run.CalculateScore(); ImGui.Text($"Score: {Run.Score}"); ImGui.Separator(); if (ImGui.TreeNode("Items")) { foreach (var item in Items) { ImGui.BulletText(item); } ImGui.TreePop(); } if (ImGui.TreeNode("Banned items")) { foreach (var item in Banned) { ImGui.BulletText(item); } ImGui.TreePop(); } ImGui.Separator(); ImGui.Text($"Coins Collected: {CoinsObtained}"); ImGui.Text($"Keys Collected: {KeysObtained}"); ImGui.Text($"Bombs Collected: {BombsObtained}"); ImGui.Text($"Hearts Collected: {HeartsCollected}"); ImGui.Text($"Heart Containers Collected: {MaxHealth}"); ImGui.Separator(); ImGui.Text($"Damage Taken: {DamageTaken}"); ImGui.Text($"Damage Dealt: {DamageDealt}"); ImGui.Text($"Mobs Killed: {MobsKilled}"); ImGui.Text($"Rooms Explored: {RoomsExplored} / {RoomsTotal}"); ImGui.Text($"Secret Rooms Explored: {SecretRoomsFound} / {SecretRoomsTotal}"); ImGui.Separator(); ImGui.Text($"Date Started: {Day} {Year}"); ImGui.Text($"Tiles Walked: {TilesWalked}"); ImGui.Text($"Pits Fallen: {PitsFallen}"); ImGui.Text($"Bosses Defeated: {BossesDefeated}"); ImGui.Text($"Spikes Triggered: {SpikesTriggered}"); ImGui.Text($"Paintings Broke: {GlobalSave.GetInt("paintings_destroyed")}"); ImGui.Separator(); ImGui.Text($"Luck: {Run.Luck}"); ImGui.Text($"Scourge: {Run.Scourge}"); if (ImGui.TreeNode("Scourges")) { foreach (var curse in Scourge.Defined) { var v = Scourge.IsEnabled(curse); if (ImGui.Checkbox(curse, ref v)) { if (v) { Scourge.Enable(curse); } else { Scourge.Disable(curse); } } } ImGui.TreePop(); } }
public static void Insert(List <RoomDef> rooms) { if ((Run.Type == RunType.Regular || Run.Type == RunType.Twitch) && !Run.CustomSeed && GlobalSave.GetInt("tomb_depth") == Run.Depth) { Log.Info("Adding tombstone"); rooms.Add(new TombRoom()); } }