Any chance that the armors for the factions will be completed in the next update? Skelmar, Brotherhood, Legion, and Deserter faction armors are incomplete - as well as some missing weapons. Other than that, I love the mod, keep it up man!
Hi, I am trying to make it so I remove level requirements for gear. Afaik I want to add "requireLevel": 1 to the props line of every item. What is the best way I can go about doing this? Thank you! { "id": "Broomstick", "name": "Oui, Oui, très bien", "weight": 0.5, "baseBonus": [ { "value": 1, "attribute": "Dexterity" } ], "props": { "requireLevel": 1, "model": "chars/Weapons/Broomhandle_01.fbx", "skill": "Sweep", "flags": 128, "disableLoot": true },
Yes, "requireLevel": 1, for all items is enoght. I use simple text replacement in notepad++, like: "props": {to "props": { "requireLevel": 1, And re-check item with requireLevel (remove double). Plus, you may change fixedLevel 1 or delete some baseBonus, like BaseArmorStart1 (vanila's 5 armor for 1-15 level, is looks like a flaw in balance).
Hi there ! I'm back with another question. So, i made some skills that can be learned through manuals. But, there's some passive skills that i don't want the mercenaries to cumulate. I know i could restrict that by making the skills being learned through levels, but i want to make it so that those skills can be learned or not, and cannot be cumulated.
The idea is that if a mercenary learn "PassiveSkill1" with a manual, they cannot learn "PassiveSkill2" nor "PassiveSkill3", and the same will goes with any of these. I tried a few things, like "requires", or "unitCondition", on both the skills themselves and the manuals, but it didn't work. So, is there a way to make it work ? Or is it just not implemented in the game ?
Usually books do not prohibit learning other skills. You can introduce alternative options. For example, copy the prohibition from traits to the properties of items, so that books will prohibit learning in your mod.
Example:
"cantBeWith": [ { "kind": "Sickly" } ], for traits.
The path is difficult. It is easier not to learn the skills in your mod than to be so sophisticated.
Each time players level up, 1 Aptitude Points is given.How to double the Aptitude Points received for increasing the level of a player?What values should I change?
Hi awesome mod by the way :D also quick question, is it possible to add more skills from the "Class Specialization" skill ? "Allows you to unlock a skill from a previous level." since it stat that only A skill, was wondering if its possible to add more than one skill selection :D ?
There are such mods. Sometimes we can take all the fighter's skills. But then it's not interesting to play at all. Even in vanilla we can defeat everyone in 1 turn, already from level 10, without mods.
So how much value should I put on em if I were going for the resource spawn to be in a day or two days ? would this setting effect the mining, wood cutting and fishing too ?
Again thank you so much for the informative help :D
mining, wood cutting and fishing have special points, like "id": "MiningRangeTorusMax", "value": 0.6 :)
value ... for the resource spawn to be in a day or two days ?
Ideally, it should do some testing. Vanilla is set up so that prices and respawn times match each other. But nothing prevents you from making the respawn at least instant, like in Lazy Overhaul ;)
Hello, thanks for your help with looting materials around the world. I'm currently having a problem that I didn't have before, because I had already implemented something like this in previous versions of the game. When I edit attributes and either use the Human Resources function or just recruit them in the Tavern, all those with the "HardSkin" trait don't appear in the group when recruited, they simple disappear. I made these changes:
In theory, you can find the error point if you add bonuses one by one. There are too many of them in the current version, which could lead to a failure of the recruitment script after the patch.
Greetings ! (Sorry for the bad english, it's not my main language) I'm not sure where i'm supposed to ask, so i'm doing it here. I apologize if i'm supposed to do it somewhere else.
So, i tried creating a new group of enemies that could spawn on the map, but i haven't seen the group after two rest. Maybe i need to wait for six days, i considered that possibility, but when i wanted to check the parts related to spawn in the file data.cdb, i only found two who were explicit : { "id": "GhostPackSpawn_MinDays", "value": 7 } and { "id": "Brigands_Spawn_MinDays", "value": 6 }
And nothing else for others, including animals. Did i miss something ? Or are the spawns configurations somewhere else than within data.cdb ?
Probably, Unity or VStudio can also help, I haven't checked) Because any hex-editor is enough there. But only for simple edits. If you want more (for example, add a new file linked to others), then you will need special software from the developer studio, which I was unable to install without bugs.
After a few search, unity considers prefab files from extraction as corrupted or from another version of Unity, and asset extractors doesn't work with prefab, or so it seems. Like you said, an hex editor seems to be the best option. But, can i just "add" code like that ? Is there special sections where specific code (like spawns) is supposed to be ?
Hello. After some testing -and headaches-, i chose to not focus on new enemy spawns for now. The dev tools are indeed not exactly easy to install. So i tried other things, and i'm currenntly on a seemingly easy things to do, but not that easy after some tests. I created a skill that increase a unit stats each time the said unit kills an enemy. It worked, but reset after each fights. So, i tried to figure how to make the bonus persist. I tried asking chatGPT for some help, and the idea isn't bad : Using counters to stock the value and made it persist. The script look like this : "script": "function onDeath(a) { if( a.unit == skill.unit ) { if(skill.unit.hasTrait(Trait.Freed)) { skill.unit.incCounter(Counter.StrengthBonus, 1); skill.unit.incCounter(Counter.DexterityBonus, 1); skill.unit.incCounter(Counter.ConstitutionBonus, 1); } } }
function onBeginRound() { tvars.strBonus = skill.unit.getCounter(Counter.StrengthBonus); vars.dexBonus = skill.unit.getCounter(Counter.DexterityBonus); vars.conBonus = skill.unit.getCounter(Counter.ConstitutionBonus); skill.unit.stats.strength += vars.strBonus; skill.unit.stats.dexterity += vars.dexBonus; skill.unit.stats.constitution += vars.conBonus; }", Problem : Wartales doesn't seem to recognize those counters, so it doesn't work. It seems like creating new function doesn't work either, since the function onLoad() isn't recognized by Wartales either. And if creating new counters is possible, i don't know how to do it properly. Another solution that came to my mind is to use a single counter, that should exist somewhere : the number of units that a character has killed. Yes, true genius. More seriously, considering the titles a character can gain (like "the wall", or "the Pigs Bane"), it seems there are such a counter somewhere. But i have no idea where, so i don't know to access it exactly. I have an idea on how to use it (as shown before), but finding the exact name of the counter is my current problem. Do you know the name ? Or have an idea on how to find it ? Or, maybe, a better idea to make that skill work ?
Hey there ! After several tests, i managed to find a working solution. I created a counter (EnemiesKilled) to make it work (and avoid problems with other counters), added a few vars to the skill, and here is the result :
True, it's quite the heavy script, but it's to ensure the stats won't be changed back to their original value after EVERY action (yes, that's what happened if the stats are only modified at the start of the fight). I also had to edit the max health since modifying constitution during the fight didn't actually changed health.
And, yeah, it may be too powerful as it is, but it's fine for my playstyle, and it's a functionnal base for anyone who want something similar but tweaked differently.
Hey Olto! Quick question - I've been looking through the the crafting options and it seems there still some armor/weapons/miscellaneous options missing. I wanted to know if you are still adding things in. Thank you for making this lovely creation, and keeping it updated! I downloaded it more recently, after replacing the Lazy Overhaul mod since it has ceased its updates ;--;
-Barber Kit (can't find a recipe to craft it) -Higher tier Medium+Heavy Inquisition armor set (Unusual+, not the helmets - the armor only is missing) -Brotherhood Armor Heavy (You cannot forge Brotherhood Battleplate - which is needed to upgrade into Peacebearer's Segmenta) -Skelmar Weapons (Numerous)
This is what I found so far, I will continue to look around for anything else missin'
506 comments
{
"id": "Broomstick",
"name": "Oui, Oui, très bien",
"weight": 0.5,
"baseBonus": [
{
"value": 1,
"attribute": "Dexterity"
}
],
"props": {
"requireLevel": 1,
"model": "chars/Weapons/Broomhandle_01.fbx",
"skill": "Sweep",
"flags": 128,
"disableLoot": true
},
I use simple text replacement in notepad++, like:
"props": {
to"props": { "requireLevel": 1,
And re-check item with requireLevel (remove double).
Plus, you may change fixedLevel 1 or delete some baseBonus, like BaseArmorStart1 (vanila's 5 armor for 1-15 level, is looks like a flaw in balance).
So, i made some skills that can be learned through manuals. But, there's some passive skills that i don't want the mercenaries to cumulate. I know i could restrict that by making the skills being learned through levels, but i want to make it so that those skills can be learned or not, and cannot be cumulated.
The idea is that if a mercenary learn "PassiveSkill1" with a manual, they cannot learn "PassiveSkill2" nor "PassiveSkill3", and the same will goes with any of these. I tried a few things, like "requires", or "unitCondition", on both the skills themselves and the manuals, but it didn't work. So, is there a way to make it work ? Or is it just not implemented in the game ?
You can introduce alternative options. For example, copy the prohibition from traits to the properties of items, so that books will prohibit learning in your mod.
Example:
"cantBeWith": [
{
"kind": "Sickly"
}
],
for traits.
The path is difficult. It is easier not to learn the skills in your mod than to be so sophisticated.
Alt way:
"name": "confessions",
"id": "ConfessionLevelUp",
add attributePoint
This constant.
Saved in vanilla after removing the mod.
But does not affect characters that have already leveled up earlier.
...
Or change stats of classes for mod-only.
"id": "Swordman",
"stats"
{
"value": 4,
"attribute": "Strength",
"upValue": 23
},
4-46 (analog of double of Strength for Swordman.
...etc.
also quick question, is it possible to add more skills from the "Class Specialization" skill ?
"Allows you to unlock a skill from a previous level." since it stat that only A skill, was wondering if its possible to add more than one skill selection :D ?
last question if u would, what do I need to edit to make map resource pickup amount to 1 and how do I change the respawn timer ?
Thank u again for your time :D
{
"id": "IronOre",
"content": [
{
"proba": 1,
"item": "IronOre",
"min": 1,
"max": 4
}
]
},
My mod: IronOre 1-4 to 2-4
{ "id": "IronOre", "content": [ { "proba": 1, "item": "IronOre", "min": 2, "max": 4 } ] },
If you really want set 1-1 => min 1, max 1.
____
Refill:
{
"id": "GatherRefillSlow",
"value": 0.15
},
{
"id": "GatherRefillNormal",
"value": 0.3
},
{
"id": "GatherRefillFast",
"value": 1
},
{
"id": "GatherRefillFactorExtreme",
"value": 1.5,
"info": "refill /= value (refill is the qty by day)"
},
would this setting effect the mining, wood cutting and fishing too ?
Again thank you so much for the informative help :D
Example:
https://drive.google.com/file/d/1mwRrbaPFsjRwlbBJ_DOvHJHpwV6EkILT/view?usp=sharing
On which line do I add the these Kill books for traits ?
can I ask for an example ? and how the structure looks like ?
do I need to add the descriptions too ?
{ "id": "AddTraitVividManual", "name": "", "weight": 0.3, "baseBonus": [], "props": { "special": 2, "skill": "AddTraitVivid", "flags": 64 }, "icon": { "file": "ui/Icons_Resources.png", "size": 96, "x": 0, "y": 10 }, "type": "SkillManual", "rarity": 2, "price": 105, "iconeDone": true, "done": 2 },
{ "item": "AddTraitVividManual", "tool": "Booksz", "recipe": [ { "qty": 75, "item": "Gold" }, { "qty": 25, "item": "Influence" } ], "props": {}, "jobLevel": 1, "learnCost": [] },
"id": "Swordman" (and other)
add
{ "skill": "AddTraitVivid", "minLevel": 15 },
{ "id": "AddTraitVivid", "name": "", "desc": "", "mode": 6, "range": {}, "props": { "learnTrait": "Vivid" }, "script": "", "notes": "", "icon": { "file": "ui/Icons/BattleIcons96PX.png", "size": 96, "x": 12, "y": 5 }, "iconeDone": true, "done": 2 },
export_en.xml
<AddTraitVividManual>
<name>Book: Vivid</name>
<desc>Book: Vivid</desc>
</AddTraitVividManual>
<AddTraitVivid>
<name>Lively</name>
<desc>[Strength] and [Dexterity] +5% when a one-handed weapon is equipped.</desc>
</AddTraitVivid>
I made these changes:
"id": "HardSkin",
"name": "Peau dure",
"desc": "[ATTR]% de [Guard] de base.",
"props": {
"attributes": [
{
"kind": "Guard",
"value": 3
}
To:
"id": "HardSkin",
"name": "Peau dure",
"desc": "[ATTR]% de [Guard] de base.",
"props": {
"attributes": [
{
"kind": "Strength",
"value": 10
},
{
"kind": "Dexterity",
"value": 10
},
{
"kind": "Constitution",
"value": 10
},
{
"kind": "Willpower",
"value": 10
},
{
"kind": "CritHitPercent",
"value": 10
},
{
"kind": "Movement",
"value": 10
},
{
"kind": "Guard",
"value": 50
}
I'm not sure where i'm supposed to ask, so i'm doing it here. I apologize if i'm supposed to do it somewhere else.
So, i tried creating a new group of enemies that could spawn on the map, but i haven't seen the group after two rest. Maybe i need to wait for six days, i considered that possibility, but when i wanted to check the parts related to spawn in the file data.cdb, i only found two who were explicit :
{
"id": "GhostPackSpawn_MinDays",
"value": 7
}
and
{
"id": "Brigands_Spawn_MinDays",
"value": 6
}
And nothing else for others, including animals. Did i miss something ? Or are the spawns configurations somewhere else than within data.cdb ?
Thanks for the answers.
It may help you to know that in prefabs you can set both the group itself and the conditions for its respawn.
For example:
function onEndFight() {
respawn(0.1);
}
in
res.pak\content\regions\Alazar_Aneding\POI\Region.prefab (=Tiltren)
But, in order to edit prefab files, do i need unity ? Or can i do it with a code editor like Visual Studio code ?
After some testing -and headaches-, i chose to not focus on new enemy spawns for now. The dev tools are indeed not exactly easy to install.
So i tried other things, and i'm currenntly on a seemingly easy things to do, but not that easy after some tests.
I created a skill that increase a unit stats each time the said unit kills an enemy. It worked, but reset after each fights. So, i tried to figure how to make the bonus persist. I tried asking chatGPT for some help, and the idea isn't bad : Using counters to stock the value and made it persist.
The script look like this :
"script":
"function onDeath(a) {
if( a.unit == skill.unit ) {
if(skill.unit.hasTrait(Trait.Freed)) {
skill.unit.incCounter(Counter.StrengthBonus, 1);
skill.unit.incCounter(Counter.DexterityBonus, 1);
skill.unit.incCounter(Counter.ConstitutionBonus, 1);
}
}
}
function onBeginRound() {
tvars.strBonus = skill.unit.getCounter(Counter.StrengthBonus);
vars.dexBonus = skill.unit.getCounter(Counter.DexterityBonus);
vars.conBonus = skill.unit.getCounter(Counter.ConstitutionBonus);
skill.unit.stats.strength += vars.strBonus;
skill.unit.stats.dexterity += vars.dexBonus;
skill.unit.stats.constitution += vars.conBonus;
}",
Problem : Wartales doesn't seem to recognize those counters, so it doesn't work. It seems like creating new function doesn't work either, since the function onLoad() isn't recognized by Wartales either. And if creating new counters is possible, i don't know how to do it properly.
Another solution that came to my mind is to use a single counter, that should exist somewhere : the number of units that a character has killed. Yes, true genius.
More seriously, considering the titles a character can gain (like "the wall", or "the Pigs Bane"), it seems there are such a counter somewhere. But i have no idea where, so i don't know to access it exactly. I have an idea on how to use it (as shown before), but finding the exact name of the counter is my current problem. Do you know the name ? Or have an idea on how to find it ? Or, maybe, a better idea to make that skill work ?
function onBeginBattle()
Not onBeginRound - otherwise the fighters will receive a bonus every(!) round.
... Condition (required trait, or something else)
skill.unit.stats.strength += skill.unit.getCounter(Counter.NightsNearAnimal);
skill.unit.stats.dexterity += skill.unit.getCounter(Counter.NightsNearAnimal);
skill.unit.stats.constitution += 2 * skill.unit.getCounter(Counter.NightsNearAnimal);
If kill:
skill.unit.incCounter(Counter.NightsNearAnimal, 1);
You can set any other condition instead of NightsNearAnimal. If there is no counter, add it :)
P.S.: vars. - work, tvars. - not (like "tvars.strBonus = skill.unit.getCounter(Counter.StrengthBonus);" ). Be more careful ;)
After several tests, i managed to find a working solution.
I created a counter (EnemiesKilled) to make it work (and avoid problems with other counters), added a few vars to the skill, and here is the result :
"vars" :
"memorizedStrength": 0,
"memorizedDexterity": 0,
"memorizedConstitution": 0,
"memorizedMaxHealth": 0,
"counterActualValue": 0
"script":
function onDeath(a) {
if( a.unit == skill.unit ) {
if( skill.unit.hasTrait(Trait.Freed) ) {
skill.unit.incCounter(Counter.EnemiesKilled, 1);
}
}
}
function onBeginBattle() {
vars.memorizedStrength = (skill.unit.stats.strength + skill.unit.getCounter(Counter.EnemiesKilled));
vars.memorizedDexterity = (skill.unit.stats.dexterity + skill.unit.getCounter(Counter.EnemiesKilled));
vars.memorizedConstitution = (skill.unit.stats.constitution + skill.unit.getCounter(Counter.EnemiesKilled));
vars.memorizedMaxHealth = skill.unit.stats.maxHealth + (skill.unit.getCounter(Counter.EnemiesKilled)*2);
skill.unit.stats.maxHealth = vars.memorizedMaxHealth;
skill.unit.gainsHealth(ceil(skill.unit.stats.health));
vars.counterActualValue = skill.unit.getCounter(Counter.EnemiesKilled);
}
function onBeginAction() {
skill.unit.stats.strength = vars.memorizedStrength;
skill.unit.stats.dexterity = vars.memorizedDexterity;
skill.unit.stats.constitution = vars.memorizedConstitution;
skill.unit.stats.maxHealth = vars.memorizedMaxHealth;
vars.counterActualValue = skill.unit.getCounter(Counter.EnemiesKilled);
}
function onEndTurn() {
skill.unit.stats.strength = vars.memorizedStrength;
skill.unit.stats.dexterity = vars.memorizedDexterity;
skill.unit.stats.constitution = vars.memorizedConstitution;
skill.unit.stats.maxHealth = vars.memorizedMaxHealth;
vars.counterActualValue = skill.unit.getCounter(Counter.EnemiesKilled);
}
True, it's quite the heavy script, but it's to ensure the stats won't be changed back to their original value after EVERY action (yes, that's what happened if the stats are only modified at the start of the fight). I also had to edit the max health since modifying constitution during the fight didn't actually changed health.
And, yeah, it may be too powerful as it is, but it's fine for my playstyle, and it's a functionnal base for anyone who want something similar but tweaked differently.
Thanks again for your help, Oltopeteeh !
add flag 128
= any equipment upgradable (in Brotherhood). Legendary (rarity 3), Rare (r2), Uncommon (r1), Common (r0).
P S : Some vanilla's rare have flag 128 as default and may up without mod.
Keep it up my friend!
-Barber Kit (can't find a recipe to craft it)
-Higher tier Medium+Heavy Inquisition armor set (Unusual+, not the helmets - the armor only is missing)
-Brotherhood Armor Heavy (You cannot forge Brotherhood Battleplate - which is needed to upgrade into Peacebearer's Segmenta)
-Skelmar Weapons (Numerous)
This is what I found so far, I will continue to look around for anything else missin'