【盐和避难所】一些细微提升游戏体验的修改❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤
本帖最后由 tempa 于 2022-9-5 13:37 编辑最近重玩这个游戏,简单看了下源码,版里修改器不少就不发修改好的了,说说dnSpy里改的函数和位置,感兴趣的可以自己动手改改。
本贴只提供了直接修改方法,有经验的可以自己实现按需开关对应功能,比如去掉Bloom黑边,自己加个变量判断,实现原版画面和去黑边版画面一键切换,其他功能同理,只提供最简思路。
1.跳过开头Logo,加快菜单显示速度
2.击杀Boss后无全屏Vanquish Logo
3.Boss过场时间变快
4.占据圣所速度变快
5.玩家攻击速度变快
6.使用Buf道具速度变快
7.铁匠升级速度变快
8.存档时重置Boss
9.伤害数值弹起高度
10.禁止添加重名钥匙
11.去除Bloom黑边特效
12.手动刷新怪物
13.显示鼠标,设置窗口坐标
14.暂停游戏
================================================================================
1.跳过开头Logo,加快菜单显示速度
ProjectTower.gamestate.Loader
private static int loadScreen = 0;
改成
private static int loadScreen = 4;
ProjectTower.menu.MenuMgr.Init
this.transMode = 2;
改成
this.transMode = 0;
ProjectTower.menu.MenuMgr.Update
函数最开始加入
transFrame = 2;
================================================================================
2.击杀Boss后无全屏Vanquish Logo
ProjectTower.gamestate.GameStateManager.Vanquish
GameStateManager.vanquishedFrame = 2f;
改成
GameStateManager.vanquishedFrame = 0;
================================================================================
3.Boss过场时间变快
ProjectTower.gamestate.BossToast.Update
BossToast.frame -= Game1.frameTime * 0.615f;
改成
BossToast.frame -= Game1.frameTime * 3;
================================================================================
4.占据圣所速度变快
ProjectTower.character.CharAnim.Update
if (key < 0 || key >= animation.keyFrame.Length)
{
key = 0;
}
这句下面写入
if (c.playerIdx > -1)
{
if (animation.name == "icon" || animation.name == "candle" || animation.name == "shrine")
{
animation.keyFrame.duration = 1;
}
}
================================================================================
5.攻击速度变快
和上面相同的位置
if (c.playerIdx > -1)
{
if(GetAttackingAnim())
{
animation.keyFrame.duration = 1;
}
else if(animName.Contains("attack") || animName.Contains("strong"))
{
animation.keyFrame.duration = 1;
}
}
如果2个都用的话,可以写到一起
if (c.playerIdx > -1)
{
if (animation.name == "icon" || animation.name == "candle" || animation.name == "shrine")
{
animation.keyFrame.duration = 1;
}
if(GetAttackingAnim())
{
animation.keyFrame.duration = 1;
}
else if(animName.Contains("attack") || animName.Contains("strong"))
{
animation.keyFrame.duration = 1;
}
}
================================================================================
6.使用Buf道具速度变快
和上面相同的位置
3个分别是
buff(祝福书页等),药水,裹布
if (c.playerIdx > -1)
{
if (animation.name == "buff" || animation.name == "potion" || animation.name == "rub")
{
animation.keyFrame.duration = 1;
}
}
如果3个都用的话,可以写到一起
if (c.playerIdx > -1)
{
if (animation.name == "icon" || animation.name == "candle" || animation.name == "shrine")
{
animation.keyFrame.duration = 1;
}
if(GetAttackingAnim())
{
animation.keyFrame.duration = 1;
}
else if(animName.Contains("attack") || animName.Contains("strong"))
{
animation.keyFrame.duration = 1;
}
if (animation.name == "buff" || animation.name == "potion" || animation.name == "rub")
{
animation.keyFrame.duration = 1;
}
}
================================================================================
7.铁匠升级速度变快
ProjectTower.player.PlayerDraw.InitUpgradeGlow
this.upgradeFrame = 6f;
改成
this.upgradeFrame = 1;
================================================================================
8.存档时重置Boss
ProjectTower.map.triggers.TriggerMgr.VanquishBoss
删除以下代码
PlayerMgr.SetMainPlayerFlag(arena.bossFlag);
注意,此修改需要在打过序章Boss无言深渊,上岸后存档,再修改,读档,否则会导致打完Boss重复剧情字幕问题
另外此修改似乎也影响NPC位置判断,只适合自娱自乐使用
================================================================================
9.伤害数值弹起高度
ProjectTower.particles.particles.hit.HitNumber.Init
p.traj = Rand.GetRandomVec2(-10f, 10f, -100f, -80f);
改成
p.traj = new Vector2(0, -1000);
================================================================================
10.禁止添加重名钥匙
ProjectTower.map.pickups.Pickup.AddToInv
if (p.pickup == null)
{
p.pickupFrame = 3f;
p.pickup = new List<Player.PlayerPickup>();
}
这句下面加入
bool bIgnorSameKey = false;
if (loot.name != null)
{
if (loot.category == 6)
{
for (int j = 0; j < p.playerInv.inventory.Length; j++)
{
if (p.playerInv.inventory != null && p.playerInv.inventory.category == 6 && p.playerInv.inventory.name != null)
{
if (p.playerInv.inventory.name == loot.name)
{
bIgnorSameKey = true;
break;
}
}
}
}
}
if (bIgnorSameKey)
{
continue;
}
================================================================================
11.去除Bloom黑边特效
ProjectTower.game.GameDraw.DrawGame
BloomComponent.Draw(goalTarg, GameDraw.sceneTarg, GameDraw.lightTarg);
改成
BloomComponent.Draw(goalTarg, GameDraw.mainTarg, GameDraw.lightTarg);
ProjectTower.director.bloom.BloomComponent.Draw
parameters["BloomIntensity"].SetValue(BloomComponent.bloomIntensity);
这句上面加入
bloomIntensity = 0;
darkBlur = 0;
防止暴风城堡地面太亮过曝
原版图 对 修改后效果图
================================================================================
12.手动刷新怪物
MapMgr.SanctuaryRefresh();
可以自己设个快捷键
if (GetKeyDown(Keys.OemTilde))
{
MapMgr.SanctuaryRefresh();
}
配合 6.存档时重置Boss
可以刷 Boss Rush
================================================================================
13.显示鼠标,设置窗口坐标
ProjectTower.Game1.Initialize
函数末尾加入
IsMouseVisible = true;
System.Windows.Forms.Form form = (System.Windows.Forms.Form)System.Windows.Forms.Control.FromHandle(Window.Handle);
form.SetDesktopLocation(0, 0);
================================================================================
14.暂停游戏
紧急事件发生,接电话,上厕所等,不用傻傻的放弃游戏挨揍
ProjectTower.character.Character.Update
函数最开始写入
if (PauseGame)
{
return;
}
自己写个控制键
if (GetKeyDown(Keys.P))
{
PauseGame = !PauseGame;
}
完全不懂,怎么弄。。。 谢谢分享
居然有人回复啊,我以为没人看,贴子发很久都没人回过。
这是纯代码片断,需要有一定C#编程经验才能看懂,主要是给一些有修改或者Mod制作的人提供一个思路。 虽然不太懂,但是谢谢你 有点意思 ZXCBXCBZXCBZXCBDGVASDG 这个是要怎么用的嘛 66666666666666666666 老师,请问一下怎么添加新法术,或者修改原本法术
页:
[1]