public static bool MakeTradeFromPlayer(Game g) { var ptrade = g.CurrTrade; if (ptrade.to.IsBot) { var trs = GetValidTrades(g, g.CurrTrade.to); if (IsGoodTrade(ptrade, trs)) { GameManager.MakeTrade(g); g.FixAction("trade_completed"); return true; } } g.ToBeginRound(); return false; }
public static void PayToPolice(Game g) { var p = g.Curr; var cell = g.Cells[p.Pos]; if (p.CaughtByPolice) { g.Tlogp("PlayerAction.Pay.PayPolice", "заплатил за выход", "you paid for exit"); if (p.Police == 4) { if (Pay(g, 500000)) { p.Police = 0; g.Curr.Step(); PlayerStep.ProcessPosition(g); } } else { p.Police = 0; Pay(g, 500000); g.ToBeginRound(); } } }
public static bool MakeTrade(Game g, string userName, bool isYes) { if (g.CurrTrade.to.Id == g.GetPlayer(userName).Id && isYes) { GameManager.MakeTrade(g); return true; } else { GameManager.AddToRejectedTrades(g); g.Tlogp("PlayerAction.Trade.AddToRej", "к игнорируемым {0}", "added to rejected trades {0}", g.CurrTrade.ToString()); g.ToBeginRound(); return false; } }
public static void RunTradeJob(Game g) { var trade = g.CurrTrade; if (trade != null) { if (trade.from.IsBot && trade.to.IsBot) { GameManager.MakeTrade(g); if (g.conf.DebugMode) g.Tlog("GameMan.CheckTradeJob.Bot2Bot", "[DebugMode][MakeTrade] bot->bot ", "[DebugMode][MakeTrade] bot->bot "); } if (!trade.from.IsBot && trade.to.IsBot) { var res = BotBrainTrade.MakeTradeFromPlayer(g); if (!res) { g.Tlog("GameMan.CheckTradeJob.Human2Bot", "[{0} don't want trade]", "[{0} не хочет меняться]", trade.to.Id); } //if (g.DebugMode) g.Tlog("[DebugMode][MakeTradeFromPlayer] human->bot"); } if (!trade.to.IsBot) { var res = CheckBotToHumanRejectedTrades(g); if (res) { g.ToBeginRound(); } } } }
public static void MakeTrade(Game g) { g.CompletedTrades.Add(g.CurrTrade); Player firstPlayer = g.CurrTrade.from; Player secondPlayer = g.CurrTrade.to; var first_give = g.CurrTrade.give_cells.Select(x => g.Cells[x]).ToList(); var second_give = g.CurrTrade.get_cells.Select(x => g.Cells[x]).ToList(); first_give.ForEach(x => x.Owner = secondPlayer.Id); second_give.ForEach(x => x.Owner = firstPlayer.Id); //money firstPlayer.Money += g.CurrTrade.getMoney * 1000; firstPlayer.Money -= g.CurrTrade.giveMoney * 1000; secondPlayer.Money += g.CurrTrade.giveMoney * 1000; secondPlayer.Money -= g.CurrTrade.getMoney * 1000; g.Map.UpdateMap(); g.Tlog("Trade.TradeOk", "обмен соостоялся", "Trade completed"); g.FixAction(string.Format("tradeOk_give[{0}]_get[{1}]", string.Join(",", g.CurrTrade.give_cells), string.Join(",", g.CurrTrade.get_cells))); g.ToBeginRound(); }
public static string Go(Game g, string act, string userName) { string res = ""; if (act == "ok") g.FinishStep(); if (g.Curr.CaughtByPolice) { if (act == "policekey") { g.Curr.FreePoliceKey--; g.Curr.Police = 0; g.ToBeginRound(); } else PlayerAction.PayToPolice(g); } if (g.State == GameState.CanBuy || g.State == GameState.CantPay) { if (act == "auc") { g.ToAuction(); res = GameRender.RenderAuction(g, userName); } else { PlayerAction.Buy(g); } } if (g.State == GameState.Auction) { if (act == "auc_y") { PlayerAction.MakeAuctionYes(g, userName); } else if (act == "auc_no") { PlayerAction.MakeAuctionNo(g, userName); } //LogicBot.CheckAuctionJob(g); } if (g.State == GameState.NeedPay) PlayerAction.Pay(g); if (g.State == GameState.CantPay) { PlayerAction.Pay(g); if (g.Curr.IsBot) { g.Tlogp("LeaveGame", "вы банкрот и покидаете игру", "you are bankrupt"); GameManager.LeaveGame(g, g.Curr.Name); } else { res = g.Text("go.CannotPay", "у вас нет денег, попробуйте заложить или продать <br />", "you dont have money,try mortage <br />"); res += "<br />" + GameRender.UIParts("ButtonPay"); } //PlayerAction.Pay(g); } if (g.State == GameState.Trade) { PlayerAction.MakeTrade(g, userName, act == "tr_y"); } if (g.State == GameState.MoveToCell) { if (g.Curr.Pos == 30) PlayerStep.MoveFrom30(g); else PlayerStep.MoveAfterRandom(g); } if (g.State == GameState.EndStep) { g.FinishRound(); } return res; }