[BTS 3.13] Civilization Specific Tech Trees

Joined
Sep 15, 2006
Messages
511
Civilization specific tech trees by ClassicThunder

Updated May 21, 2008:
Added in a none channel for the techs. Now if you set thee channel to -1 for a tech it will be researchable for all civilizations.
Updated June 27, 2008:
Now you can only trade for techs with the same channel.

Spoiler ReadMe :
Civilization specific tech trees by ClassicThunder
Civilization Version: BTS 3.19
Mod Version: 1.0
Creator: ClassicThunder

Description: This mod allows you to have more than one tech tree and pick which civilization can use which tech tree. Both tech trees and civilizations now have channels, and a civilization can only research or trade for a tech that has the same channel.

Installation: To install this mod comp you will need to merge in the SDK and Python files into your own mod. All modifications are surrounded by “Civilization specific tech trees by ClassicThunder”. Additionally you will need to use the CIV4TechnologiesSchema and the CIV4CivilizationsSchema.

Support: Send me a PM at CivFanatics.com or E-Mail me at ClassicThunder@bellsouth.net



Well I'm back in business and here is what I have to show after almost a year of inactivity.

This mod gives both techs and civilizations channels. Only when a civilization and tech has the same channel can it be researched. This allows you to make completely independent tech trees and point a civilization to which ever one you want it to use. Currently Its just a beta and while its stable and performs as planned I haven't been able to test it a whole lot, so please report and bugs, suggestions, or issues you run across.

-ClassicThunder
 
Looks interesting.

I realize this is just a beta release, but one suggestion for some future release: you could allow Techs to have a channel of NONE, making them to researchable by any Civ regardless of a Civ's channel. This could cut down on the problem of duplicate techs/units/buildings/etc.
 
Looks interesting.

I realize this is just a beta release, but one suggestion for some future release: you could allow Techs to have a channel of NONE, making them to researchable by any Civ regardless of a Civ's channel. This could cut down on the problem of duplicate techs/units/buildings/etc.

Excellent idea and not to difficult to implement. Added to my to do list.
 
Hrm, not quite how I had pictured doing it, but sounded like precisely what I have on my list to eventually create.

I had thought to go the same route as Units, and create a TechClass field, such that you can assign a Civilization to have Unique Techs, which replace standard Techs. And of course allow for some Default Techs to be NONE, such that you can assign various Civilizations Techs which seem to be completely original instead of a replacement.

Using the channels will allow you to make the overall layout vary more heavily, but it seems like if you can get a generic enough layout, the Unique Techs might be a fairly solid way to approach it (you could have 2 whole branches laid out to be default NONE, and thus allow yourself excess room to branch into if you are feeling like making a heavily different Civ).


To add to Master Kodama's Idea though, I would propose that the Channel NONE is not researchable by ANY civilizations (awarded for free by buildings, or used for the system to block access to various things), while you have a Channel ALL, which will be researchable in the standard method by all Civs to allow for less duplication.
 
Hrm, not quite how I had pictured doing it, but sounded like precisely what I have on my list to eventually create.

I had thought to go the same route as Units, and create a TechClass field, such that you can assign a Civilization to have Unique Techs, which replace standard Techs. And of course allow for some Default Techs to be NONE, such that you can assign various Civilizations Techs which seem to be completely original instead of a replacement.

Using the channels will allow you to make the overall layout vary more heavily, but it seems like if you can get a generic enough layout, the Unique Techs might be a fairly solid way to approach it (you could have 2 whole branches laid out to be default NONE, and thus allow yourself excess room to branch into if you are feeling like making a heavily different Civ).


To add to Master Kodama's Idea though, I would propose that the Channel NONE is not researchable by ANY civilizations (awarded for free by buildings, or used for the system to block access to various things), while you have a Channel ALL, which will be researchable in the standard method by all Civs to allow for less duplication.

Doing it my way as a channel makes it easier for both me and the user. As soon as I make it so that techs can have no channels it will be easier to just add in a few extra techs for the sake of diversity. Originally this mod was meant for independent trees for each civilization; however, the no channel addition will expand it greatly and will be added in soon.
 
Hmm... the TechClass method would be a bit more complicated, but it would also cut down on the necessity of duplicate units and buildings and such -- since you could have units and buildings that had their <PrereqTech> field point to a TechClass instead of a specific Tech.

I think both approaches have their merits, depending on what you want to do and how you want to go about doing it. I think ClassicThunder's method would work best with a universal skeletal tech tree with flavor techs branching off from it or arranged in a separate, parallel civ-specific tree. Xienwolf's on the other hand would work for a tech tree where you wanted actual tech substitutions within the "universal" tech tree.
 
I'm about done adding in a global Channel. After that I guess I'll make civilization specific civics.
 
First of all may I say that this looks great, and I'll be downloading it as soon as practical :)

Next, I have a suggestion for some coding you could do (you don't sound very enthused about the civics)

It's a request I made in the SDK forum that noone has yet answered, and it seems to be your type of thing.
 
While I do take requests, I generally only take them from mod leaders so that I can be confident there is a practical need for my work.
 
Alright. here's a very specific request: I don't know if you're familiar with the Master of Orion series, but I've sort of "adopted" MOO2Civ mod and it would be cool if one civ could research all techs, while the rest need to choose which path they research.* Is this doable?:confused:

*Actually I need to be more specific: in MOO2 all techs are researchable for all civs, but every tech begets only one advantage (building, promotion) - except for the Psilons, who get every advantage of every tech. Can this be translated into Civ-terms? (The tech tree would be identical to all civs, just not what they get for it. Hope this is clear enough.)
 
Alright. here's a very specific request: I don't know if you're familiar with the Master of Orion series, but I've sort of "adopted" MOO2Civ mod and it would be cool if one civ could research all techs, while the rest need to choose which path they research.* Is this doable?:confused:

*Actually I need to be more specific: in MOO2 all techs are researchable for all civs, but every tech begets only one advantage (building, promotion) - except for the Psilons, who get every advantage of every tech. Can this be translated into Civ-terms? (The tech tree would be identical to all civs, just not what they get for it. Hope this is clear enough.)

Well you've kind of said two things here. Making it so that a civ could research every tech while others can't would be easy. Making a civilization receive different benefits than another from a tech would be a lot more complicated.
 
Well you've kind of said two things here. Making it so that a civ could research every tech while others can't would be easy. Making a civilization receive different benefits than another from a tech would be a lot more complicated.

I've been thinking about this: it actually means that: (number of benfits) x (number of civs) = number of advances - meaning the tech tree would be really huge...
 
I just got done uploading the update. Not if you set a tech's channel to -1 it will be researchable by all civilizations. Useful for if you want a main tech tree that has civilization specific techs and branches instead of a completely independent tech tree for each civilization.
 
Would it be possible to isolate tech trading to each channel? So, let's say Civ A and Civ B are on channel 1 and Civ C is on channel 2, A and B could trade all their techs, but only the universal ones with C. Could that be done? It'd be useful for the Star Wars mod where the Vong have a unique tech tree.
 
This sounds good. Do you think it would be possible to only display the techs available to a particular civ in the tech tree?

Edit: Sorry if it does this already. I have not tried it yet.
 
Nevermind I loaded it up and saw it now.

I sending up a change to the CvTechChooser. To help hide all of the techs.
 
@NikNaks93

Yes that would be pretty easy. I'll probably incorporate that.

@johny smith

I'm not sure what you did there except copy and repost part of my work with your name on it.

Yours
Code:
			##start tech channels changes johny smith 
			if (gc.getTechInfo(i).getChannel() != -1):
				if (gc.getCivilizationInfo(gc.getPlayer(self.iCivSelected).getCivilizationType()).getTechChannel() != gc.getTechInfo(i).getChannel()):
					if ( gc.getTeam(gc.getPlayer(self.iCivSelected).getTeam()).isHasTech(i) ):
						self.aiCurrentState.append(CIV_HAS_TECH)
					elif ( gc.getPlayer(self.iCivSelected).getCurrentResearch() == i ):
						self.aiCurrentState.append(CIV_IS_RESEARCHING)
					elif ( gc.getPlayer(self.iCivSelected).isResearchingTech(i) ):
						self.aiCurrentState.append(CIV_IS_RESEARCHING)
					elif ( gc.getPlayer(self.iCivSelected).canEverResearch(i) ):
						self.aiCurrentState.append(CIV_NO_RESEARCH)
					else:
						self.aiCurrentState.append(CIV_TECH_AVAILABLE)
					continue					
			##end tech channels changes johny smith

Mine
Code:
			if (gc.getTechInfo(i).getChannel() != -1):
				if (gc.getCivilizationInfo(gc.getPlayer(self.iCivSelected).getCivilizationType()).getTechChannel() != gc.getTechInfo(i).getChannel()):
					if ( gc.getTeam(gc.getPlayer(self.iCivSelected).getTeam()).isHasTech(i) ):
						self.aiCurrentState.append(CIV_HAS_TECH)
					elif ( gc.getPlayer(self.iCivSelected).getCurrentResearch() == i ):
						self.aiCurrentState.append(CIV_IS_RESEARCHING)
					elif ( gc.getPlayer(self.iCivSelected).isResearchingTech(i) ):
						self.aiCurrentState.append(CIV_IS_RESEARCHING)
					elif ( gc.getPlayer(self.iCivSelected).canEverResearch(i) ):
						self.aiCurrentState.append(CIV_NO_RESEARCH)
					else:
						self.aiCurrentState.append(CIV_TECH_AVAILABLE)
					continue
 
Top Bottom