Rise Of The White Sun

Rise Of The White Sun

View Stats:
Is there any way to manually set up a multi-faction game?
I've been messing around with cheats and going through the code with dnSpy to figure out how things work. I know that the greenfriend cheat adds the Green Gang as a subfaction and the GMD get a bunch of events adding subfactions, though they seem more built for a historical right-GMD playthrough. I also get a popup saying that I have formed a multi-faction game and can use Galen to recruit Communist characters if I use the redarmy cheat as the GMD in some sandbox games, but I'm not sure if that's just triggering something else as it just makes him and the other officers join the GMD. Ideally I want to be able to run a proper Communist-LeftGMD United Front where I can coordinate both parties and make full use of their different mechanics, as well as run some alternate history scenarios with an alliance between the Communists and Chen Jiongming or a more successful Chen-Sun Alliance that allows me to take full advantage of both factions' mechanics.
< >
Showing 1-3 of 3 comments
Maestro Cinetik  [developer] 16 Mar @ 2:59am 
For that give characters the same subfaction name.
and add one character of each faction to the players' active roster (available=false, horsjeu=false)
Thanks for the advice. I am extremely novice when it comes to coding and modding but after a bit of tinkering I was able to put together a custom cheat that more or less does what I want.

if (this.cheatcode == "redfriend") { SetUpAssociations.setup.Borodine.subfaction = GameSetUp.setup.PJ.subfaction; if (DialoguesIntro.conv.switchperso.listePersos.Count >= 7) { SetUpAssociations.setup.Borodine.HorsJeu = true; SetUpAssociations.setup.Borodine.Available = true; SetUpAssociations.setup.Borodine.isDead = false; } else { SetUpAssociations.setup.Borodine.HorsJeu = false; SetUpAssociations.setup.Borodine.Available = false; SetUpAssociations.setup.Borodine.isDead = false; } SetUpAssociations.setup.ZhouEnlai.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.ZhouEnlai.HorsJeu = true; SetUpAssociations.setup.ZhouEnlai.Available = true; SetUpAssociations.setup.ZhouEnlai.isDead = false; SetUpAssociations.setup.YeTing1927.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.YeTing1927.HorsJeu = true; SetUpAssociations.setup.YeTing1927.Available = true; SetUpAssociations.setup.YeTing1927.isDead = false; SetUpAssociations.setup.ZhuDe.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.ZhuDe.HorsJeu = true; SetUpAssociations.setup.ZhuDe.Available = true; SetUpAssociations.setup.ZhuDe.isDead = false; SetUpAssociations.setup.HeLong.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.HeLong.HorsJeu = true; SetUpAssociations.setup.HeLong.Available = true; SetUpAssociations.setup.HeLong.isDead = false; SetUpAssociations.setup.Galen.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.Galen.HorsJeu = true; SetUpAssociations.setup.Galen.Available = true; SetUpAssociations.setup.Galen.isDead = false; SetUpAssociations.setup.ChenDuxiu.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.ChenDuxiu.HorsJeu = true; SetUpAssociations.setup.ChenDuxiu.Available = true; SetUpAssociations.setup.ChenDuxiu.isDead = false; SetUpAssociations.setup.SuZhaozheng.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.SuZhaozheng.HorsJeu = true; SetUpAssociations.setup.SuZhaozheng.Available = true; SetUpAssociations.setup.SuZhaozheng.isDead = false; SetUpAssociations.setup.DengZhongxia.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.DengZhongxia.HorsJeu = true; SetUpAssociations.setup.DengZhongxia.Available = true; SetUpAssociations.setup.DengZhongxia.isDead = false; SetUpAssociations.setup.ChenYannian.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.ChenYannian.HorsJeu = true; SetUpAssociations.setup.ChenYannian.Available = true; SetUpAssociations.setup.ChenYannian.isDead = false; SetUpAssociations.setup.LiSen.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.LiSen.HorsJeu = true; SetUpAssociations.setup.LiSen.Available = true; SetUpAssociations.setup.LiSen.isDead = false; SetUpAssociations.setup.TanPingshan.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.TanPingshan.HorsJeu = true; SetUpAssociations.setup.TanPingshan.Available = true; SetUpAssociations.setup.TanPingshan.isDead = false; SetUpAssociations.setup.LuoQiyuan.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.LuoQiyuan.HorsJeu = true; SetUpAssociations.setup.LuoQiyuan.Available = true; SetUpAssociations.setup.LuoQiyuan.isDead = false; SetUpAssociations.setup.PengPai.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.PengPai.HorsJeu = true; SetUpAssociations.setup.PengPai.Available = true; SetUpAssociations.setup.PengPai.isDead = false; SetUpAssociations.setup.MaoZedong.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.MaoZedong.HorsJeu = true; SetUpAssociations.setup.MaoZedong.Available = true; SetUpAssociations.setup.MaoZedong.isDead = false; SetUpAssociations.setup.LuoYinong.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.LuoYinong.HorsJeu = true; SetUpAssociations.setup.LuoYinong.Available = true; SetUpAssociations.setup.LuoYinong.isDead = false; SetUpAssociations.setup.YangDefu.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.YangDefu.HorsJeu = true; SetUpAssociations.setup.YangDefu.Available = true; SetUpAssociations.setup.YangDefu.isDead = false; SetUpAssociations.setup.ZhangGuotao.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.ZhangGuotao.HorsJeu = true; SetUpAssociations.setup.ZhangGuotao.Available = true; SetUpAssociations.setup.ZhangGuotao.isDead = false; SetUpAssociations.setup.Maring.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.Maring.HorsJeu = true; SetUpAssociations.setup.Maring.Available = true; SetUpAssociations.setup.Maring.isDead = false; SetUpAssociations.setup.LiDa.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.LiDa.HorsJeu = true; SetUpAssociations.setup.LiDa.Available = true; SetUpAssociations.setup.LiDa.isDead = false; SetUpAssociations.setup.LiDazhao.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.LiDazhao.HorsJeu = true; SetUpAssociations.setup.LiDazhao.Available = true; SetUpAssociations.setup.LiDazhao.isDead = false; SetUpAssociations.setup.LiHanjun.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.LiHanjun.HorsJeu = true; SetUpAssociations.setup.LiHanjun.Available = true; SetUpAssociations.setup.LiHanjun.isDead = false; SetUpAssociations.setup.WangJinmei.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.WangJinmei.HorsJeu = true; SetUpAssociations.setup.WangJinmei.Available = true; SetUpAssociations.setup.WangJinmei.isDead = false; SetUpAssociations.setup.XiaXi.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.XiaXi.HorsJeu = true; SetUpAssociations.setup.XiaXi.Available = true; SetUpAssociations.setup.XiaXi.isDead = false; SetUpAssociations.setup.GuoLiang.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.GuoLiang.HorsJeu = true; SetUpAssociations.setup.GuoLiang.Available = true; SetUpAssociations.setup.GuoLiang.isDead = false; SetUpAssociations.setup.ChenTanqiu.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.ChenTanqiu.HorsJeu = true; SetUpAssociations.setup.ChenTanqiu.Available = true; SetUpAssociations.setup.ChenTanqiu.isDead = false; SetUpAssociations.setup.XiangYing.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.XiangYing.HorsJeu = true; SetUpAssociations.setup.XiangYing.Available = true; SetUpAssociations.setup.XiangYing.isDead = false; SetUpAssociations.setup.LuoZhanglong.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.LuoZhanglong.HorsJeu = true; SetUpAssociations.setup.LuoZhanglong.Available = true; SetUpAssociations.setup.LuoZhanglong.isDead = false; SetUpAssociations.setup.ShiYang.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.ShiYang.HorsJeu = true; SetUpAssociations.setup.ShiYang.Available = true; SetUpAssociations.setup.ShiYang.isDead = false; SetUpAssociations.setup.LinDaowen.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.LinDaowen.HorsJeu = true; SetUpAssociations.setup.LinDaowen.Available = true; SetUpAssociations.setup.LinDaowen.isDead = false; SetUpAssociations.setup.DongBiwu.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.DongBiwu.HorsJeu = true; SetUpAssociations.setup.DongBiwu.Available = true; SetUpAssociations.setup.DongBiwu.isDead = false; SetUpAssociations.setup.WangWenming.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.WangWenming.HorsJeu = true; SetUpAssociations.setup.WangWenming.Available = true; SetUpAssociations.setup.WangWenming.isDead = false; SetUpAssociations.setup.ZhangTailei1927.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.ZhangTailei1927.HorsJeu = true; SetUpAssociations.setup.ZhangTailei1927.Available = true; SetUpAssociations.setup.ZhangTailei1927.isDead = false; SetUpAssociations.setup.LiuShaoqi.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.LiuShaoqi.HorsJeu = true; SetUpAssociations.setup.LiuShaoqi.Available = true; SetUpAssociations.setup.LiuShaoqi.isDead = false; SetUpAssociations.setup.GuShunzhang.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.GuShunzhang.HorsJeu = true; SetUpAssociations.setup.GuShunzhang.Available = true; SetUpAssociations.setup.GuShunzhang.isDead = false; SetUpAssociations.setup.QuQiubai.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.QuQiubai.HorsJeu = true; SetUpAssociations.setup.QuQiubai.Available = true; SetUpAssociations.setup.QuQiubai.isDead = false; SetUpAssociations.setup.LiLisan.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.LiLisan.HorsJeu = true; SetUpAssociations.setup.LiLisan.Available = true; SetUpAssociations.setup.LiLisan.isDead = false; SetUpAssociations.setup.PengGongda.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.PengGongda.HorsJeu = true; SetUpAssociations.setup.PengGongda.Available = true; SetUpAssociations.setup.PengGongda.isDead = false; SetUpAssociations.setup.ZhuShaolian.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.ZhuShaolian.HorsJeu = true; SetUpAssociations.setup.ZhuShaolian.Available = true; SetUpAssociations.setup.ZhuShaolian.isDead = false; SetUpAssociations.setup.WangShouhua.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.WangShouhua.HorsJeu = true; SetUpAssociations.setup.WangShouhua.Available = true; SetUpAssociations.setup.WangShouhua.isDead = false; SetUpAssociations.setup.ZhaoShiyan.subfaction = GameSetUp.setup.PJ.subfaction; SetUpAssociations.setup.ZhaoShiyan.HorsJeu = true; SetUpAssociations.setup.ZhaoShiyan.Available = true; SetUpAssociations.setup.ZhaoShiyan.isDead = false; GameSetUp.setup.PJ.faction.politicalDepartment = true; GameSetUp.setup.PJ.faction.SetAlliance(SetUpAssociations.setup.Communists.nom); SetUpAssociations.setup.Shanghai.playable = true; SetUpAssociations.setup.Shanghai.SetColor(); SetUpAssociations.setup.Canton.playable = true; SetUpAssociations.setup.Canton.SetColor(); SetUpAssociations.setup.HongKong.playable = true; SetUpAssociations.setup.HongKong.SetColor(); SetUpAssociations.setup.SetActionsAssociationsPCC(); DialoguesIntro.conv.switchperso.RefreshList(); SoundManager.manager.MakeCheatSound(); this.cheatConsole.gameObject.SetActive(false); }

Also thinking of giving Borodin and/or the player's faction leader a few personal connections to various GMD Leftists to further expand the roster (not quite sure how to do that at the moment but I'm sure I'll figure it out). Not exactly the most balanced setup, given that it gives the Communists access to almost all of their entire roster in all of the scenarios they're in, but I didn't exactly intend it to be.
Maestro Cinetik  [developer] 17 Mar @ 12:11pm 
Adding personal connections is easy to do.
I forget the name of the variable but that's just a list of characters in the Character's class (PJ)
PJ standing for "Personnage Joueur" in French.

Feel free to join the Discord.
I often share or comment pieces of code there.
Last edited by Maestro Cinetik; 17 Mar @ 12:12pm
< >
Showing 1-3 of 3 comments
Per page: 1530 50