Skip to content
This repository was archived by the owner on Nov 15, 2025. It is now read-only.

Commit 41864cc

Browse files
committed
bugfix v2
autores now gives enchantment ingredients miners guild troop donation oathgold gain fixed grain to oathgold hint mismatch fixed herdstone/portal rewards fixed rune typo fixed faith revive perk fixed runelord quest fixed new template ids added so you dont have to close the game after crafting them by accident
1 parent 410bfd1 commit 41864cc

9 files changed

Lines changed: 64 additions & 27 deletions

File tree

CSharpSourceCode/CampaignMechanics/Crafting/EnchantmentIngredientLootCampaignBehavior.cs

Lines changed: 42 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public class EnchantmentIngredientLootCampaignBehavior : CampaignBehaviorBase
3636

3737
public override void RegisterEvents()
3838
{
39-
CampaignEvents.OnMissionStartedEvent.AddNonSerializedListener(this, CalculatePotentialLootedEnchantmentResources);
39+
//CampaignEvents.OnMissionStartedEvent.AddNonSerializedListener(this, CalculatePotentialLootedEnchantmentResources);
4040

4141
CampaignEvents.OnPlayerBattleEndEvent.AddNonSerializedListener(this, SetLootedIngredients);
4242

@@ -58,26 +58,55 @@ public override void SyncData(IDataStore dataStore)
5858

5959
private void SetLootedIngredients(MapEvent mapEvent)
6060
{
61-
float renownChange, influenceChange, moraleChange, goldChange, playerEarnedLootPercentage;
62-
mapEvent.GetBattleRewards(PartyBase.MainParty, out renownChange, out influenceChange, out moraleChange, out goldChange,
63-
out playerEarnedLootPercentage);
61+
if (mapEvent == null) return;
62+
var ingredientKeys = _goodAmounts.Keys.ToList();
63+
foreach (var key in ingredientKeys)
64+
_goodAmounts[key] = 0f;
6465

66+
// including autoresolve battles
67+
var enemySideEnum = (mapEvent.PlayerSide == BattleSideEnum.Attacker)
68+
? BattleSideEnum.Defender
69+
: BattleSideEnum.Attacker;
70+
71+
var enemySide = mapEvent.GetMapEventSide(enemySideEnum);
72+
if (enemySide == null) return;
6573
var model = Campaign.Current.Models.GetEnchantmentIngredientModel();
6674

67-
var itemRosterToReceive = PlayerEncounter.Current.RosterToReceiveLootItems;
75+
foreach (var party in enemySide.Parties)
76+
{
77+
foreach (var troop in party.Troops)
78+
{
79+
var character = troop.Troop;
80+
foreach (var ingredientType in ingredientKeys)
81+
{
82+
_goodAmounts[ingredientType] += model.GetIngredientDropFactorForCharacter(character, ingredientType, mapEvent);
83+
}
84+
}
85+
}
86+
87+
mapEvent.GetBattleRewards(
88+
PartyBase.MainParty,
89+
out var _renown, out var _influence, out var _morale, out var _gold,
90+
out var playerLootShare
91+
);
6892

69-
foreach (var pair in _goodAmounts)
93+
var targetRoster = PlayerEncounter.Current?.RosterToReceiveLootItems ?? PartyBase.MainParty.ItemRoster;
94+
95+
foreach (var ingredientType in ingredientKeys)
7096
{
71-
var amount = model.CalculateResultAmount(pair.Value, pair.Key, playerEarnedLootPercentage);
72-
var item = TorEnchantingIngredients.GetItemObjectForIngredient(pair.Key);
73-
itemRosterToReceive.Add(new ItemRosterElement(item, amount));
97+
var factorSum = _goodAmounts[ingredientType];
98+
var amount = model.CalculateResultAmount(factorSum, ingredientType, playerLootShare);
99+
if (amount <= 0) continue;
100+
101+
var item = TorEnchantingIngredients.GetItemObjectForIngredient(ingredientType);
102+
targetRoster.Add(new ItemRosterElement(item, amount));
74103
}
75104

76-
// clear value for next battle
77-
var keys = _goodAmounts.Keys.ToList();
78-
foreach (var key in keys) _goodAmounts[key] = 0;
105+
// reset for next battle
106+
foreach (var key in ingredientKeys)
107+
_goodAmounts[key] = 0f;
79108
}
80-
109+
81110
private void CalculatePotentialLootedEnchantmentResources(IMission obj)
82111
{
83112
var playerEvent = Campaign.Current.MainParty.MapEvent;

CSharpSourceCode/CampaignMechanics/CustomResourceBehavior/OathGoldBehavior.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1009,8 +1009,7 @@ void TranferCompleted(PartyBase leftownerparty, TroopRoster leftmemberroster, Tr
10091009
var gainedOathGold = 0;
10101010
foreach (var element in leftmemberroster.GetTroopRoster())
10111011
{
1012-
gainedOathGold += 10;
1013-
gainedOathGold += element.Character.Tier;
1012+
gainedOathGold += (10 + element.Character.Tier) * element.Number;
10141013
}
10151014

10161015
Hero.MainHero.AddCultureSpecificCustomResource(gainedOathGold);
@@ -1081,21 +1080,21 @@ void SpendFood()
10811080
{
10821081

10831082
hint.SetTextVariable("WHEAT_COUNT", 30);
1084-
hint.SetTextVariable("OATH_GOLD_GAIN_WHEAT",SteelGain );
1083+
hint.SetTextVariable("OATH_GOLD_GAIN_WHEAT", 30 / 2);
10851084
selectable.Add(new InquiryElement(30.ToString(), itemTitle.ToString(), new ImageIdentifier(item), true, hint.ToString()));
10861085
continue;
10871086
}
10881087
if (item == DefaultItems.Grain && element.Amount>=50)
10891088
{
10901089
hint.SetTextVariable("WHEAT_COUNT", 50);
1091-
hint.SetTextVariable("OATH_GOLD_GAIN_WHEAT",SteelGain );
1090+
hint.SetTextVariable("OATH_GOLD_GAIN_WHEAT", 50 / 2);
10921091
selectable.Add(new InquiryElement(50.ToString(), itemTitle.ToString(), new ImageIdentifier(item), true, hint.ToString()));
10931092
continue;
10941093
}
10951094
if (item == DefaultItems.Grain && element.Amount>=100)
10961095
{
10971096
hint.SetTextVariable("WHEAT_COUNT", 100);
1098-
hint.SetTextVariable("OATH_GOLD_GAIN_WHEAT",SteelGain );
1097+
hint.SetTextVariable("OATH_GOLD_GAIN_WHEAT", 100 / 2);
10991098
selectable.Add(new InquiryElement(100.ToString(), itemTitle.ToString(), new ImageIdentifier(item), true, hint.ToString()));
11001099
}
11011100
}

CSharpSourceCode/CampaignMechanics/TORCustomSettlement/TORCustomSettlementCampaignBehavior.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,9 @@ private void OnMissionEnded(IMission obj)
145145

146146

147147
var cultureItems = MBObjectManager.Instance.GetObjectTypeList<ItemObject>()
148-
.Where(x => x.Culture == Hero.MainHero.Culture && x.IsWeapon() || x.IsArmor()).ToList();
149-
148+
.Where(x => x.Culture == Hero.MainHero.Culture && (x.IsWeapon() || x.IsArmor())).Where(x => !x.IsCraftedWeapon || x.HasAnyTrait()).ToList();
149+
150+
150151
items.AddRange(cultureItems.TakeRandom(2).ToList());
151152

152153

CSharpSourceCode/CharacterDevelopment/CareerSystem/CareerButton/RunelordCareerButtonBehavior.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public class RunelordCareerButtonBehavior(CareerObject career) : CareerButtonBeh
4343
new("unit_rune_grungni", new TextObject("Master Rune of Grungni"), new TextObject("Reduce incoming ranged damage by 75%."),
4444
"unit_rune_grungni", new List<string> { "dw_master_rune_steel","dw_master_rune_gromril","dw_master_rune_preservation" }, 3),
4545
new("unit_rune_grimnir", new TextObject("Master Rune of Grimnir"),
46-
new TextObject("20% extra attack speed, 35% extra physical and fire damage."), "unit_rune_grimnir", new List<string> { "dw_rune_master_swiftness","dw_rune_master_breaking","dw_rune_fury" }, 3)
46+
new TextObject("20% extra attack speed, 35% extra physical and fire damage."), "unit_rune_grimnir", new List<string> { "dw_master_rune_swiftness","dw_master_rune_breaking","dw_rune_fury" }, 3)
4747
];
4848

4949

CSharpSourceCode/Models/TORPartyHealingModel.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,13 @@ public override float GetSurvivalChance(PartyBase party, CharacterObject charact
3232
}
3333

3434
var result = base.GetSurvivalChance(party, character, damageType, canDamageKillEvenIfBlunt, enemyParty);
35-
36-
if (result < 0.5f && party != null && party.LeaderHero != null && party.LeaderHero.GetPerkValue(TORPerks.Faith.Revival)) result = TORPerks.Faith.Revival.PrimaryBonus; //Sly : perk description does not match functionality
37-
35+
36+
if (party?.LeaderHero != null && party.LeaderHero.GetPerkValue(TORPerks.Faith.Revival))
37+
{
38+
var secondChance = TORPerks.Faith.Revival.PrimaryBonus;
39+
result = result + (1f - result) * secondChance; // chance to survive if would have died
40+
}
41+
3842
if (!character.IsUndead())
3943
return result;
4044
//undead "survival chance"

CSharpSourceCode/Quests/Careers/RunelordQuest.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ private void InitializeQuest()
6262
currentKnownRunes -= 7; //Same as above
6363

6464
_task1 = AddDiscreteLog(new TextObject("{=tor_engineer_quest_log0_str}Learn 3 Rune abilities of the Anvil of Doom."), new TextObject("{=tor_engineer_quest_task0_str}Rune Magic"), _currentAbilities, 3);
65-
_task2 = AddDiscreteLog(new TextObject("{=tor_engineer_quest_log2_str}Learn 15 runes."), new TextObject("{=tor_engineer_quest_task0_str}Runes"), currentKnownRunes, 12);
65+
_task2 = AddDiscreteLog(new TextObject("{=tor_engineer_quest_log2_str}Learn 12 runes."), new TextObject("{=tor_engineer_quest_task0_str}Runes"), currentKnownRunes, 12);
6666
_task3 = AddDiscreteLog(new TextObject("{=tor_engineer_quest_log2_str}Finish up 20 smithing contracts."), new TextObject("{=tor_engineer_quest_task0_str}Contracts"), _currentContracts, 20);
6767
_task4 = AddDiscreteLog(new TextObject("{=tor_engineer_quest_log2_str}Reach Respected with the Runesmith Guild."), new TextObject("{=tor_engineer_quest_task0_str}Reputation"), reputation, OathGoldBehavior.MAXIMUMVALUE);
6868

@@ -141,8 +141,8 @@ private bool AreAllTasksFinished()
141141

142142
private void CraftingOrderCompleted(Town town, CraftingOrder order, ItemObject resultItem, Hero hero)
143143
{
144-
var currentProgress = _task1.CurrentProgress;
145-
_task1.UpdateCurrentProgress(currentProgress+15);
144+
var currentProgress = _task3.CurrentProgress;
145+
_task3.UpdateCurrentProgress(currentProgress+1);
146146
UpdateQuest();
147147
}
148148

ModuleData/tor_strings.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1228,6 +1228,10 @@
12281228
<string id="str_weapon_usage.TorLance" text="{=weapon_usage_TorLance_str}Lance" />
12291229
<string id="str_weapon_usage.TorLance_Couchable" text="{=weapon_usage_TorLance_Couchable_str}Couche Lance" />
12301230
<string id="str_weapon_usage.TorDwarvenOneHandedAxe" text="{=weapon_usage_TorDwarvenOneHandedAxe_str}Dwarven Axe" />
1231+
<string id="str_crafting_template.tor_orc_axe_template" text="{=smoa}TOR-Orc Axes" />
1232+
<string id="str_crafting_template.tor_trolltwohandedmace" text="{=smttm}TOR-Troll Two-Handed Maces" />
1233+
<string id="str_crafting_template.tor_troll_mace_template" text="{=smtm}TOR-Troll Maces" />
1234+
12311235

12321236
<!--inventory-->
12331237
<string id="str_inventory_weapon.22" text="{=inventory_weapon_22_str}Pistol" />
2 KB
Binary file not shown.
2 KB
Binary file not shown.

0 commit comments

Comments
 (0)