中级玩家
 
- 贡献度
- 6
- 金元
- 1055
- 积分
- 130
- 精华
- 0
- 注册时间
- 2018-4-6
|
本帖最后由 千古校长 于 2023-3-1 18:11 编辑
1.经验系数修改
OwnedByGravity.Game.Logic.XPManagement中的类名public class XPSystem里面有单位获取经验值的公式,位于方法名ApplyXPChange,它的代码是这样的
public IEnumerator ApplyXPChange(LogicUnit unit, FactionId factionId, int delta, bool isLoading, bool isAiUpgrade = false)
{
if (unit.Properties.CannotGainExp)
{
yield break;
}
if (delta > 0)
{
if (isAiUpgrade)
{
delta = Mathf.RoundToInt((float)delta * this.mDifficulty.Setup.Economy.XpGainMultiplier);
}
else
{
delta = Mathf.RoundToInt((float)delta * (1f + unit.Properties.XPBonus) * this.mDifficulty.Setup.Economy.XpGainMultiplier * 3f);
}
}
(ref unit.Level.XP).Set(Mathf.Min(unit.Level.MaxXP(), Mathf.Max(unit.Level.XP + delta, 0)));
yield return this.ModifyLevelToMatchXP(unit, factionId, isLoading);
XPSystem.XPChangedCallback unitXPChanged = this.UnitXPChanged;
if (unitXPChanged != null)
{
unitXPChanged(unit, factionId, delta);
}
yield break;
}
其中
else
{
delta = Mathf.RoundToInt((float)delta * (1f + unit.Properties.XPBonus) * this.mDifficulty.Setup.Economy.XpGainMultiplier * 3f);
}是我自己用的修改后的三倍经验系数(只限玩家),想要修改的话把里面的3换成你想要的数字就行(最好在1和10之间,不然我也不知道会发生什么事情)
2.战利品中金币和法力的系数(不影响材料掉落)
类ChangeCurrencyEffect方法Apply中的公式是
public IEnumerator Apply(WorldEffectContext context)
{
float num = 1f;
LootRollData lootRollData;
if (context.TryGet<LootRollData>(out lootRollData))
{
num += lootRollData.AdditionalLootDrop;
}
Faction faction;
if (context.WorldInstance.Factions.TryGetPlayerFaction(out faction))
{
CurrencyRewardDefinition reward = context.WorldInstance.ContentManager.LoadAsset<CurrencyRewardDefinition>(this.CurrencyReward, "T:\\JenkinsAgent\\workspace\\SF_SF_Steam_trunk\\Unity\\SF\\Assets\\OwnedByGravity\\Game\\Logic\\Effects\\Effects\\ChangeCurrencyEffect.cs", 68);
if (this.Subtract)
{
context.WorldInstance.CurrencySystem.Take(faction.Id, reward, HexPosition.Invalid);
}
else
{
context.WorldInstance.CurrencySystem.Reward(faction.Id, reward, context.WorldInstance.DifficultyProvider.Setup.Economy.LootIncomeMultiplier * num * 6f, HexPosition.Invalid);
}
}
else
{
Log.Error("Unkown PlayerFaction", null, "Apply", "T:\\JenkinsAgent\\workspace\\SF_SF_Steam_trunk\\Unity\\SF\\Assets\\OwnedByGravity\\Game\\Logic\\Effects\\Effects\\ChangeCurrencyEffect.cs", 80);
}
yield break;
}
其中修改
float num = 1f;
或者
else
{
context.WorldInstance.CurrencySystem.Reward(faction.Id, reward, context.WorldInstance.DifficultyProvider.Setup.Economy.LootIncomeMultiplier * num * 6f, HexPosition.Invalid);
}都是可以的
3.战利品中材料掉落的系数
OwnedByGravity.Game.Logic.LootTables中,类名public abstract class ALootItemEntry里面的方法Execute,它的代码是这样的
public IEnumerator Execute(WorldEffectContext context)
{
SourceEntity sourceEntity;
if (!context.TryGet<SourceEntity>(out sourceEntity))
{
yield break;
}
AWorldEntity aworldEntity = sourceEntity;
Faction faction;
if (!context.WorldInstance.Factions.TryGet(aworldEntity.FactionId, out faction))
{
yield break;
}
float num = 5f;
LootRollData lootRollData;
if (this.UseLootChance && context.TryGet<LootRollData>(out lootRollData))
{
num += lootRollData.AdditionalLootDrop;
}
while (num > 0f && context.WorldInstance.Random.value <= num)
{
if (!context.WorldInstance.InventorySystem.TryChangeItem(faction.Id, faction.Inventory, this.SourceItem, 1))
{
Log.Error(string.Format("Something went wrong in {0} for {1} with amount {2}!", "ALootItemEntry", this.SourceItem, 1), null, "Execute", "T:\\JenkinsAgent\\workspace\\SF_SF_Steam_trunk\\Unity\\SF\\Assets\\OwnedByGravity\\Game\\Logic\\LootTables\\ALootItemEntry.cs", 63);
}
num -= 1f;
}
yield break;
}
其中
float num = 5f;
是我自己用的修改后的五倍材料获取,但是修改这一项请慎重!因为
然后是我从大佬@liyun_1981那里听来的内容,在此鸣谢
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
评分
-
1
查看全部评分
-
|