Putting the 'role' back in role-playing games since 2002.
Donate to Codex
Good Old Games
  • 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.

Modding races

AugustDrake

Novice
Joined
Feb 25, 2019
Messages
18
Hey, I actually went and put together that mod to add playable bugbears! It... sort of works? It's buggy, and I can't figure out what I did wrong.

The good news is, it works; I even set up the female bugbear model. Character creation works just fine, and I can add them to a party without incident.
The problem is, once character creation is finished, the saved character has Human set as their race and their stat adjustments and racial traits disappear!
I also haven't figured out how to have TAG_BUGBEAR work for the info section. I figure I must be missing a file or not modifying something somewhere else.

Would you like me to post a link to the files or just their contents? I have a protos override and a race in rules/races/ as race008_bugbear.py.

I also know I have to add an entry to the mes but I haven't figured out on my own the best way to do it, so advice would be appreciated. I have Tioextract set up and know how to unpack stuff so I can go hunt for a file but I am not familiar enough with the file structure to know what exactly to get. I feel like getting this working is on the tip of my tongue...
 

AugustDrake

Novice
Joined
Feb 25, 2019
Messages
18
I'm almost there. I figured out how to use mes/help to put a help file for the bugbear, but stat_ext.mes doesn't seem to extend in the same way so I have copied it and modified it to include the bugbear's entry at 12008.
Where I've run into a roadblock is that if I use raceEnum=race_bugbear in the race008_bugbear.py file, it crashes. It can run if I set the raceEnum to 8, but that means after character creation the race turns to Human (though the model stays the same) and I think it's the source of all the buggy behavior. I don't know what I'm doing wrong...
 

Sitra Achara

Arcane
Joined
Sep 1, 2003
Messages
1,859
Codex 2012 Codex 2013 Codex 2014 PC RPG Website of the Year, 2015
What proto id are you using?

Also, if you copied a bugbear proto, make sure it's obj_t_pc
 

AugustDrake

Novice
Joined
Feb 25, 2019
Messages
18
13045 and 13046. Also, yeah, got that part. I think I need to register or define race_bugbear somewhere because it doesn't like me using it.

I tried extracting stat_enum.mes and adding at 2008 {race_bugbear} hoping that would fix the problem without avail.
 
Last edited:

AugustDrake

Novice
Joined
Feb 25, 2019
Messages
18
Hmm, still can't get it to work. The problem is the existence of race_bugbear anywhere in a .py file.
 

Sitra Achara

Arcane
Joined
Sep 1, 2003
Messages
1,859
Codex 2012 Codex 2013 Codex 2014 PC RPG Website of the Year, 2015
You need to add that to constants.py. Oh and please use enum value 13, 8 is already taken.
However note that overriding constants.py is a bad idea since it frequently gets updated. If you want to publish this mod as part of Temple+ release I can alter it on the repository for you.
 

AugustDrake

Novice
Joined
Feb 25, 2019
Messages
18
I will definitely use enum value 13, and yes, that sounds great!

I was remaking a number of characters I've used in actual tabletop - I had a drow wizard and bugbear retainer duo in an Underdark campaign and I could recreate the wizard, but the bugbear ranger not so much until now. :D
 

AugustDrake

Novice
Joined
Feb 25, 2019
Messages
18
So I definitely feel like I've gotten a hell of a lot farther. Where we're at right now is character generation kind of works, but racial hit dice don't seem to be added in. When you roll a hill giant or a troll, you get their racial hit dice added to their hit point total as soon as you pick your class, but it's a no-show for the bugbear. Once you're done and generate the character, it has its race set is human and loses racial traits but retains the bugbear model (like a certain succubus). I can then add that back in by typing game.party[party member-1].stat_base_set(stat_race, 8) in console which will *make* them a bug bear. When I did this with earlier versions of the mod, saving or changing maps caused a crash, but I can now save the game or change maps and the game retains the character as a bugbear. So whatever it is that isn't working, it isn't working during character creation and now I'm not sure what the problem is, but I feel like I've almost got it. Here, check it out: https://drive.google.com/file/d/12wl_XQ0z3FtHpQpZbsnuPDYIfxaYhjDI/view?usp=sharing

To try this out, go to C:\Users\*YOUR USER NAME*\AppData\Local\TemplePlus\app-1.0.75\tpdata\templeplus\lib\templeplus\constants.py and add race_bugbear = 8 inside.

I know I was told to set it as 13... and I'm having some problems with that. That made it crash. I think it's because 8 is already defined as the race of a bugbear internally. Trying to use 13 made the game confused; it tried to conjure info for lizardmen. race_wood_elf isn't really called anywhere (none of the subraces really are) so using 8 for race_bugbear seems to work. If you type game.party[party member-1].stat_base_set(stat_race,13) you'll set your race as lizardman, and *without this mod* setting it as 8 makes you a bugbear!

I'm also trying to figure out the models; time to trawl the old Circle of Eight forums some more. I would love to somehow rig up the different pelt color skins to the hair color options somehow, and the bugbears actually do have some diversity with how armor appears on their model, but I don't know how that works. I've tried setting their protos model to the model of more heavily armored bugbears, but that doesn't give them the armored pauldrons of heavy bugbears.
 

Sitra Achara

Arcane
Joined
Sep 1, 2003
Messages
1,859
Codex 2012 Codex 2013 Codex 2014 PC RPG Website of the Year, 2015
I'll take a look when I can, but I doubt there's anything special about 8 for bugbears. Please double check yourself.
 

AugustDrake

Novice
Joined
Feb 25, 2019
Messages
18
Triple checked... I'm sure it must be something simple I'm missing.

At least this version has all the racial traits and working text entries. :)
 

Sitra Achara

Arcane
Joined
Sep 1, 2003
Messages
1,859
Codex 2012 Codex 2013 Codex 2014 PC RPG Website of the Year, 2015
In the protos entry, do n9t use race_bugbear. Please dollow the exisiting examples and use the modifier name (Bugbear).
 

Endarire

Scholar
Joined
Feb 28, 2016
Messages
395
AugustDrake
I recommend making a separate version that includes racial HD, like that already exists for trolls & hill giants. Some people dislike the racial HD.
 

Zoltec

Literate
Joined
Jun 25, 2019
Messages
8
Here's the fix by chance, if you are still working on it. You really don't have to declare it as a race in the bugbear.tab, not unless you are going to change the race value of an NPC object

13045 obj_t_pc 14262 14262 size_medium mat_flesh 8 1077 27 OCF_MONSTER 23 14 23 6 9 6 Bugbear male align_chaotic_evil 3980 mc_type_humanoid Charmed PC Fighter
 

Zoltec

Literate
Joined
Jun 25, 2019
Messages
8
Sitra Achara Is there anyway for us to make direct edits to TEMPLE_ENUMS.H or create a file extender for this? What I want to achieve is to internally register a new race that an OBJ_T_NPC (protos record type) can recognize, when changing its race value.

What is the difference between CONSTANTS.PY AND TEMPLE_ENUMS.H I dont find them the same, specifically when it comes to races

temple_enums.h
{
race_base_human = 0,
race_base_dwarf = 1,
race_base_elf = 2,
race_base_gnome = 3,
race_base_halfelf = 4,
race_base_half_elf = 4,
race_base_halforc = 5,
race_base_half_orc = 5,
race_base_halfling = 6,

race_base_goblin = 7,
race_base_bugbear = 8,
race_base_gnoll = 9,
race_base_hill_giant = 10,
race_base_troll = 11,
race_base_hobgoblin = 12,
race_base_lizardman = 13,
};

enum Race : uint32_t
{
race_human = 0,
race_dwarf = 1,
race_elf = 2,
race_gnome = 3,
race_halfelf = 4,
race_half_elf = 4,
race_halforc = 5,
race_half_orc = 5,
race_halfling = 6,

race_goblin = 7,
race_bugbear = 8,
race_gnoll = 9,
race_hill_giant = 10,
race_troll = 11,
race_hobgoblin = 12,
race_lizardman = 13,

// Dwarf subraces
race_deep_dwarf = 1,
race_derro = 1,
race_duergar = 1,
race_mountain_dwarf = 1,
// Elf subraces
race_aquatic_elf = 2,
race_drow = 2,
race_gray_elf = 2,
race_wild_elf = 2,
race_wood_elf = 2,
// Gnome subraces
race_svirfneblin = 3,
race_forest_gnome = 3,
// Halfling subraces
race_tallfellow = 6,
race_deep_halfling = 6,
};

enum Subrace : uint32_t
{
subrace_none = 0, // default

//Human subraces
subrace_aasumar = 2,
subrace_tiefling = 3,

// Dwarf subraces
subrace_deep_dwarf = 1,
subrace_derro = 2,
subrace_duergar = 3,
subrace_mountain_dwarf = 4,
subrace_gold_dwarf = 4,

// Elf
subrace_aquatic_elf = 1,
subrace_drow = 2,
subrace_gray_elf = 3,
subrace_wild_elf = 4,
subrace_wood_elf = 5,

// Gnomes
subrace_svirfneblin = 1,
subrace_forest_gnome = 2,

// Halflings
subrace_tallfellow = 1,
subrace_deep_halfling = 2,
subrace_strongheart_halfling = 3,
subrace_ghostwise_halfling = 4,
};
enum RaceBase
 

Zoltec

Literate
Joined
Jun 25, 2019
Messages
8
What I have observed below, race_human and race_deep_dwarf has the same value. But on TEMPLE_ENUMS.H, race_base_human is equals to 0, and race_base_dwarf is set to 1. Therefore in the CONSTANTS.PY, the entry for race_deep_dwarf should also be equals to 1, please enlighten me.

constants.py
race_human = 0
race_deep_dwarf = 0
race_dwarf = 1
race_derro = 1
race_duergar = 2
race_elf = 2
race_gnome = 3
race_mountain_dwarf = 3
race_halfelf = 4
race_half_elf = 4
race_aquatic_elf = 4
race_halforc = 5
race_half_orc = 5
race_drow = 66
race_halfling = 6
race_gray_elf = 6
race_wild_elf = 7
race_wood_elf = 8
race_svirfneblin = 9
race_forest_gnome = 10
race_tallfellow = 11
race_deep_halfling = 12
race_hill_giant = 10
race_troll = 11
 

Sitra Achara

Arcane
Joined
Sep 1, 2003
Messages
1,859
Codex 2012 Codex 2013 Codex 2014 PC RPG Website of the Year, 2015
Not sure anymore, but some of these may be vanilla leftovers.
You can't make extemders for .h files. I don't think you have to anyway, not for your purposes anyway.
Making NPCs use the new race defs may take some work, currently the system is 8intended for pc races.
 

AugustDrake

Novice
Joined
Feb 25, 2019
Messages
18
You know, I decided to try taking another crack at fixing that bugbear (I swear, I flit endlessly between a ton of little private mods for myself; Project Zomboid, Warhammer II, all kinds of strategy games, you name it), and lo and behold it's now standard in Temple Plus 1.0.85's beta! Wonderful.

I had long-ranging ambitions of putting in goblins/hobgoblins/bugbears under one Goblin button, but I think I'm going to focus on a 1.0.85 playthrough first and report bugs at the Co8 beta thread.

Thanks, Sitra, and everyone involved with Temple Plus. I know a lot of folks who don't even really know about/engage with the forums who have enjoyed Temple Plus over the years; my own social circle of nerds has had it wash over them from time to time and it still gets compared (favorably) to both of the Pathfinder games that came out recently. I still remember talking to someone at a LAN party right about a month before Coronavirus was even a thing, and ToEE and Circle of Eight came up and just blowing their minds explaining Temple Plus. You've got more fans than you know.
 

As an Amazon Associate, rpgcodex.net earns from qualifying purchases.
Back
Top Bottom