Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
Welcome to rpgcodex.net, a site dedicated to discussing computer based role-playing games in a free and open fashion. We're less strict than other forums, but please refer to the rules.
"This message is awaiting moderator approval": All new users must pass through our moderation queue before they will be able to post normally. Until your account has "passed" your posts will only be visible to yourself (and moderators) until they are approved. Give us a week to get around to approving / deleting / ignoring your mundane opinion on crap before hassling us about it. Once you have passed the moderation period (think of it as a test), you will be able to post normally, just like all the other retards.
That fixed extra smiting, thank you, although it appears someone already added an even more complete version to github already.
I'll be making a pull to upload Extra Music then, although I didn't manage to modify the max bardic music uses available in the radial menu the feat still works anyway (e.g. at third level it shows 7/3 bardic music uses available).
I was wondering if the wild shape ability is still unaccessible from python and if it's possible to make pull requests on the c++ part of the github as well.
I was also wondering if it was possible to somehow modify this part of conditions.cpp to also query for bonus sneak attack damage rather than only extra sneak attack dice, or if there are any workarounds possible.
auto sneakDmgDice = Dice(sneakAttackDice, 6, 0);
if (feats.HasFeatCountByClass(args.objHndCaller, FEAT_DEADLY_PRECISION)) {
sneakDmgDice = Dice(sneakAttackDice, 5, 1*sneakAttackDice);
}
dispIo->damage.AddDamageDice(sneakDmgDice.ToPacked(), DamageType::Unspecified, 106);
floatSys.FloatCombatLine(args.objHndCaller, 90); // Sneak Attack!
histSys.CreateRollHistoryLineFromMesfile(26, args.objHndCaller, tgt);
d20Sys.D20SignalPython(args.objHndCaller, "Sneak Attack Damage Applied");
// crippling strike ability loss
if (feats.HasFeatCountByClass(args.objHndCaller, FEAT_CRIPPLING_STRIKE)){
histSys.CreateRollHistoryLineFromMesfile(47, args.objHndCaller, tgt);
conds.AddTo(tgt, "Damage_Ability_Loss", { 0, 2 }); // note: vanilla had a bug (did 1 damage instead of 2)
floatSys.FloatCombatLine(args.objHndCaller, 96); // Ability Loss
}
The reason why I ask for this is because I wanted to implement the feat craven but it appears to me that the only parameter I can send is the number of dice given by a certain condition.
Finally I wanted to ask how feasible it is to add a race to the game both through python and c++. I've seen a few tutorials on it through hex-editing in the Co8 forum and I was curious regarding the correct way to implement them with temple+.
That fixed extra smiting, thank you, although it appears someone already added an even more complete version to github already.
I'll be making a pull to upload Extra Music then, although I didn't manage to modify the max bardic music uses available in the radial menu the feat still works anyway (e.g. at third level it shows 7/3 bardic music uses available).
I was wondering if the wild shape ability is still unaccessible from python and if it's possible to make pull requests on the c++ part of the github as well.
I was also wondering if it was possible to somehow modify this part of conditions.cpp to also query for bonus sneak attack damage rather than only extra sneak attack dice, or if there are any workarounds possible.
auto sneakDmgDice = Dice(sneakAttackDice, 6, 0);
if (feats.HasFeatCountByClass(args.objHndCaller, FEAT_DEADLY_PRECISION)) {
sneakDmgDice = Dice(sneakAttackDice, 5, 1*sneakAttackDice);
}
dispIo->damage.AddDamageDice(sneakDmgDice.ToPacked(), DamageType::Unspecified, 106);
floatSys.FloatCombatLine(args.objHndCaller, 90); // Sneak Attack!
histSys.CreateRollHistoryLineFromMesfile(26, args.objHndCaller, tgt);
d20Sys.D20SignalPython(args.objHndCaller, "Sneak Attack Damage Applied");
// crippling strike ability loss
if (feats.HasFeatCountByClass(args.objHndCaller, FEAT_CRIPPLING_STRIKE)){
histSys.CreateRollHistoryLineFromMesfile(47, args.objHndCaller, tgt);
conds.AddTo(tgt, "Damage_Ability_Loss", { 0, 2 }); // note: vanilla had a bug (did 1 damage instead of 2)
floatSys.FloatCombatLine(args.objHndCaller, 96); // Ability Loss
}
The reason why I ask for this is because I wanted to implement the feat craven but it appears to me that the only parameter I can send is the number of dice given by a certain condition.
Finally I wanted to ask how feasible it is to add a race to the game both through python and c++. I've seen a few tutorials on it through hex-editing in the Co8 forum and I was curious regarding the correct way to implement them with temple+.
Re Extra Smiting, yeah it was probavly the same guy who did Extra Rage. Sorry, it slipped my mind.
Pull requests for c++ code are equally welcome of course! I haven't exposed Wild Shape to python.
As for sneak attack bonus damage, you can add a query for plain extra damage, but try to see if you can add a hook for a regular damage event using the same logic as sneak attack bonus damage first.
Adding races is certainly possible. Adding the necessary Modifiers that grant various bonuses should be fairly straightforward. I guess the laborious part is hooking the chargen and levelup UIs, although it shouldn't be too hard to follow the examples of the Class panel. I think some races would require modifying ECL too, which could impact various calculations in the game. If you're interested I think it merits its own thread.
I've found an old tutorial of yours on the Co8 forums regarding random encounters and I would like to expand my question. Would you be interested in expanding the random encounters for the game? I was thinking of creating some high-level random encounters for high level parties (from 15 to 20) if it's an acceptable addition.
That is more suitable for an addon rather than a Temple+ mod, since it's very content oriented.
Temple+ could be used as a platform to add user content modularity, e.g. read the encounter definitions from a data file.
Other than that, go ahead, I'm sure many would appreciate it.
The modding I've done so far required me to make a pull request to edit or add existing files in the templeplus project and I was wondering how I would go about this one. The central file to this project would certainly be the random_encounters.py. Wouldn't it be reasonable to add an option to have higher level encounters just like prestige classes and non-core materials in the temple+ configuration which I would check before rolling my new encounters? After all extra content is already one of the aims of temple+ considering that tab in the configuration and I believe dispersing further the availability of content would only make its accessibility plummet. That said I imagine random_encounters could be edited in order to access files in a certain locations in order to load up encounters from different file sources, although I don't have the faintest idea how that could be implemented.
I prefer not to directly edit random_encounters.py since it's highly module specific. It's different in co8, vanilla toee, kotb and iwd, due to the special random encounters, which monsters spawn in which zones, etc.
I'll have to get back to you on the best approach.
I also have another question, is it no longer possible to add new protos to the game? It seems Co8 has filled the range between 14000 and 15000 and the game CTDs whenever I try and start an encounter with a proto npc saved in a different number range.
NPCs currently have to be between 14k and 15k, it's hardcoded in many places. Expanding this could be a real bitch, not sure.
There should be a few slots available in the 14900's i think.
Ok, my thoughts:
I think you'd want to add a random encounter extender script that gets called before (or maybe after, or both) the "normal" script and modifies the result. It could be similarly structured to the current random_encounter.py from co8, which already has a sort of RE definition class that is defined by a tuple of (monster proto id, number) or sthg like that. It should be fairly straightforward to read such a list from file, possibly with a script attachment for more complex logic (such as monster types varying by map or area id, game state flags, etc).
Alright there's a bunch of slots around where you said, great! I'll try messing around with a separate script that accesses random_encounter and modifies the encounter list, that would be fine, right?
I think it might be necessary to alter random_encounter so it can check for these add-ons, but I won't know until I try
Alright there's a bunch of slots around where you said, great! I'll try messing around with a separate script that accesses random_encounter and modifies the encounter list, that would be fine, right?
Help me understand the Drow race, and level adjustment in general.
So, a level 1 Drow Rogue needs 6000 EXP to reach level 2, but does the Drow also count as being level 3 for the purpose of EXP gain because of their +2 level adjustment? Or does a Drow count as level 1 with their party when it comes to EXP rewards, then level 2 when the rest (assuming they are not also level adjusted) are level 2? And so on until the party is level 4, and the drow level 2, and then do EXP adjustments happen normally, such as when a level 5 wizard gain EXP with a level 7 party, or would the Drow just gain the same EXP as the party?
Maybe I'm explaining this poorly, so I'll give a, hopefully, comprehensible example. Let's say a level 6 wizard and level 8 fighter take down a large group of bugbears. The wizard would gain something like 1200 exp, while the fighter might only gain 600. Should a level 6 Drow be earning 1200 EXP while their level 8 fighter is earning 600, or would the Drow be earning 600 like the fighter?