public override void OnGameTick(float dt) { base.OnGameTick(dt); if (Alive && AnimManager.ActiveAnimationsByAnimCode.Count == 0) { AnimManager.StartAnimation(new AnimationMetaData() { Code = "idle", Animation = "idle", EaseOutSpeed = 10000, EaseInSpeed = 10000 }); } if (World.Side == EnumAppSide.Client) { talkUtil.OnGameTick(dt); } else { if (tickCount++ > 200) { double lastRefreshTotalDays = WatchedAttributes.GetDouble("lastRefreshTotalDays", World.Calendar.TotalDays - 10); int maxRefreshes = 10; while (World.Calendar.TotalDays - lastRefreshTotalDays > doubleRefreshIntervalDays && tradingWith == null && maxRefreshes-- > 0) { int traderAssets = Inventory.GetTraderAssets(); double giveRel = 0.07 + World.Rand.NextDouble() * 0.21; float nowWealth = TradeProps.Money.nextFloat(1f, World.Rand); int toGive = (int)Math.Max(-3, Math.Min(nowWealth, traderAssets + giveRel * (int)nowWealth) - traderAssets); Inventory.GiveToTrader(toGive); RefreshBuyingSellingInventory(0.5f); lastRefreshTotalDays += doubleRefreshIntervalDays; WatchedAttributes.SetDouble("lastRefreshTotalDays", lastRefreshTotalDays); tickCount = 1; } if (maxRefreshes <= 0) { WatchedAttributes.SetDouble("lastRefreshTotalDays", World.Calendar.TotalDays + 1 + World.Rand.NextDouble() * 5); } } } if (tradingWith != null && (tradingWith.Pos.SquareDistanceTo(this.Pos) > 5 || Inventory.openedByPlayerGUIds.Count == 0 || !Alive)) { dlg?.TryClose(); IPlayer tradingPlayer = tradingWith?.Player; if (tradingPlayer != null) { Inventory.Close(tradingPlayer); } } }
void CalcAndUpdateAssetsDisplay() { int playerAssets = InventoryTrader.GetPlayerAssets(capi.World.Player.Entity); SingleComposer.GetDynamicText("playerMoneyText")?.SetNewText(Lang.Get("You have {0} Gears", playerAssets)); int traderAssets = traderInventory.GetTraderAssets(); SingleComposer.GetDynamicText("traderMoneyText")?.SetNewText(Lang.Get("{0} has {1} Gears", owningEntity.GetBehavior <EntityBehaviorNameTag>().DisplayName, traderAssets)); }