Unstable 0.1500.0.0

This commit is contained in:
Markus Isberg
2021-08-26 21:08:21 +09:00
parent 265a2e7ab3
commit 501e02c026
245 changed files with 9775 additions and 2034 deletions
@@ -50,7 +50,7 @@ namespace Barotrauma
Faction faction = campaign.Factions.Find(faction1 => faction1.Prefab.Identifier.Equals(Identifier, StringComparison.OrdinalIgnoreCase));
if (faction != null)
{
faction.Reputation.Value += Increase;
faction.Reputation.AddReputation(Increase);
}
else
{
@@ -64,14 +64,14 @@ namespace Barotrauma
Location location = campaign.Map.CurrentLocation;
if (location != null)
{
location.Reputation.Value += Increase;
location.Reputation.AddReputation(Increase);
IEnumerable<Location> locations = location.Connections.SelectMany(c => c.Locations).Distinct().Where(l => l != null && l != location);
foreach (Location connectedLocation in locations)
{
Debug.Assert(connectedLocation.Reputation != null, "connectedLocation.Reputation != null");
if (connectedLocation.Reputation != null)
{
connectedLocation.Reputation.Value += (Increase / 4);
connectedLocation.Reputation.AddReputation(Increase / 4);
}
}
}
@@ -380,9 +380,13 @@ namespace Barotrauma
{
pendingEventSets.Clear();
selectedEvents.Clear();
activeEvents.Clear();
QueuedEvents.Clear();
preloadedSprites.ForEach(s => s.Remove());
preloadedSprites.Clear();
pathFinder = null;
}
private float CalculateCommonness(EventPrefab eventPrefab, float baseCommonness)
@@ -1,4 +1,6 @@
using Microsoft.Xna.Framework;
using Barotrauma.Abilities;
using Barotrauma.Extensions;
using Microsoft.Xna.Framework;
using System;
using System.Collections.Generic;
using System.Globalization;
@@ -343,19 +345,40 @@ namespace Barotrauma
public void GiveReward()
{
if (!(GameMain.GameSession.GameMode is CampaignMode campaign)) { return; }
campaign.Money += GetReward(Submarine.MainSub);
int reward = GetReward(Submarine.MainSub);
float baseExperienceGain = reward * 0.15f;
IEnumerable<Character> crewCharacters = GameSession.GetSessionCrewCharacters();
// use multipliers here so that we can easily add them together without introducing multiplicative XP stacking
var experienceGainMultiplier = new AbilityValue(1f);
crewCharacters.ForEach(c => c.CheckTalents(AbilityEffectType.OnAllyGainMissionExperience, experienceGainMultiplier));
crewCharacters.ForEach(c => experienceGainMultiplier.Value += c.GetStatValue(StatTypes.MissionExperienceGainMultiplier));
foreach (Character character in crewCharacters)
{
character.Info.GiveExperience((int)(baseExperienceGain * experienceGainMultiplier.Value), isMissionExperience: true);
}
// apply money gains afterwards to prevent them from affecting XP gains
var moneyGainMultiplier = new AbilityValue(1f);
crewCharacters.ForEach(c => c.CheckTalents(AbilityEffectType.OnGainMissionMoney, (this, moneyGainMultiplier)));
crewCharacters.ForEach(c => moneyGainMultiplier.Value += c.GetStatValue(StatTypes.MissionMoneyGainMultiplier));
campaign.Money += (int)(reward * moneyGainMultiplier.Value);
foreach (KeyValuePair<string, float> reputationReward in ReputationRewards)
{
if (reputationReward.Key.Equals("location", StringComparison.OrdinalIgnoreCase))
{
Locations[0].Reputation.Value += reputationReward.Value;
Locations[1].Reputation.Value += reputationReward.Value;
Locations[0].Reputation.AddReputation(reputationReward.Value);
Locations[1].Reputation.AddReputation(reputationReward.Value);
}
else
{
Faction faction = campaign.Factions.Find(faction1 => faction1.Prefab.Identifier.Equals(reputationReward.Key, StringComparison.OrdinalIgnoreCase));
if (faction != null) { faction.Reputation.Value += reputationReward.Value; }
if (faction != null) { faction.Reputation.AddReputation(reputationReward.Value); }
}
}