Making great people more great

sputnik323

Magelord
Joined
Sep 27, 2008
Messages
394
I notice that when I have great people I have them sit and wait in a city for a long time until I can use them for what I want (like guilds or religious buildings), The AI is stupid and usually just adds great people to their cities instead of founding guilds or religious buildings - unless the timing is just right. So to help the AI and make great people even more awesome, making great people have the ability to join the city as a specialist, and be called up later to join a guild would help the AI and make great people useful until a needed time.

- so to be more clear... at the beginning of the game if a great prophet appears they can join a city as specialist. Then later if a player decides to call them up, they leave their specialist work, and can be used for golden ages, founding religious buildings, techs, or founding guilds.

I think with this change it adds more flexibility and guilds would be seen more often in the game.
 
Good idea. I, however, have no ability to mod whatsoever so I cannot be of use.
 
To code this... workers could be given the ability like the units with kidnap... except it only works in their own cultural borders.
 
This shouldn't be too hard to implement though a spell using python. There may be better ways, but this is the easiest.

edit: I haven't tested it, but this should work:

in CIV4SpellInfos.xml, add:
Code:
        <SpellInfo>
            <Type>SPELL_MOVE_GREAT_BARD</Type>
            <Description>TXT_KEY_SPELL_MOVE_GREAT_BARD</Description>
            <Civilopedia>TXT_KEY_SPELL_PLACEHOLDER_PEDIA</Civilopedia>
            <bInBordersOnly>1</bInBordersOnly>
            <bInCityOnly>1</bInCityOnly>
            <bDisplayWhenDisabled>1</bDisplayWhenDisabled>
            <bHasCasted>1</bHasCasted>
            <PyResult>spellMoveGP(pCaster,'SPECIALIST_GREAT_ARTIST')</PyResult>
            <PyRequirement>reqMoveGP(pCaster,'SPECIALIST_GREAT_ARTIST','UNIT_ARTIST')</PyRequirement>
            <Effect>EFFECT_SPELL1</Effect>
            <Sound>AS3D_SPELL_BLESS</Sound>
            <Button>Art/Interface/Buttons/Spells/Kidnap.dds</Button>
        </SpellInfo>
        <SpellInfo>
            <Type>SPELL_MOVE_GREAT_SAGE</Type>
            <Description>TXT_KEY_SPELL_MOVE_GREAT_SAGE</Description>
            <Civilopedia>TXT_KEY_SPELL_PLACEHOLDER_PEDIA</Civilopedia>
            <bInBordersOnly>1</bInBordersOnly>
            <bInCityOnly>1</bInCityOnly>
            <bDisplayWhenDisabled>1</bDisplayWhenDisabled>
            <bHasCasted>1</bHasCasted>
            <PyResult>spellMoveGP(pCaster,'SPECIALIST_GREAT_SCIENTIST')</PyResult>
            <PyRequirement>reqMoveGP(pCaster,'SPECIALIST_GREAT_SCIENTIST','UNIT_SCIENTIST')</PyRequirement>
            <Effect>EFFECT_SPELL1</Effect>
            <Sound>AS3D_SPELL_BLESS</Sound>
            <Button>Art/Interface/Buttons/Spells/Kidnap.dds</Button>
        </SpellInfo>
        <SpellInfo>
            <Type>SPELL_MOVE_GREAT_ENGINEER</Type>
            <Description>TXT_KEY_SPELL_MOVE_GREAT_ENGINEER</Description>
            <Civilopedia>TXT_KEY_SPELL_PLACEHOLDER_PEDIA</Civilopedia>
            <bInBordersOnly>1</bInBordersOnly>
            <bInCityOnly>1</bInCityOnly>
            <bDisplayWhenDisabled>1</bDisplayWhenDisabled>
            <bHasCasted>1</bHasCasted>
            <PyResult>spellMoveGP(pCaster,'SPECIALIST_GREAT_ENGINEER')</PyResult>
            <PyRequirement>reqMoveGP(pCaster,'SPECIALIST_GREAT_ENGINEER','UNIT_ENGINEER')</PyRequirement>
            <Effect>EFFECT_SPELL1</Effect>
            <Sound>AS3D_SPELL_BLESS</Sound>
            <Button>Art/Interface/Buttons/Spells/Kidnap.dds</Button>
        </SpellInfo>
        <SpellInfo>
            <Type>SPELL_MOVE_GREAT_PROPHET</Type>
            <Description>TXT_KEY_SPELL_MOVE_GREAT_BARD</Description>
            <Civilopedia>TXT_KEY_SPELL_PLACEHOLDER_PEDIA</Civilopedia>
            <bInBordersOnly>1</bInBordersOnly>
            <bInCityOnly>1</bInCityOnly>
            <bDisplayWhenDisabled>1</bDisplayWhenDisabled>
            <bHasCasted>1</bHasCasted>
            <PyResult>spellMoveGP(pCaster,'SPECIALIST_GREAT_PRIEST')</PyResult>
            <PyRequirement>reqMoveGP(pCaster,'SPECIALIST_GREAT_PRIEST','UNIT_PROPHET')</PyRequirement>
            <Effect>EFFECT_SPELL1</Effect>
            <Sound>AS3D_SPELL_BLESS</Sound>
            <Button>Art/Interface/Buttons/Spells/Kidnap.dds</Button>
        </SpellInfo>
        <SpellInfo>
            <Type>SPELL_MOVE_GREAT_MERCHANT</Type>
            <Description>TXT_KEY_SPELL_MOVE_GREAT_MERCHANT</Description>
            <Civilopedia>TXT_KEY_SPELL_PLACEHOLDER_PEDIA</Civilopedia>
            <bInBordersOnly>1</bInBordersOnly>
            <bInCityOnly>1</bInCityOnly>
            <bDisplayWhenDisabled>1</bDisplayWhenDisabled>
            <bHasCasted>1</bHasCasted>
            <PyResult>spellMoveGP(pCaster,'SPECIALIST_GREAT_MERCHANT')</PyResult>
            <PyRequirement>reqMoveGP(pCaster,'SPECIALIST_GREAT_MERCHANT','UNIT_MERCHANT')</PyRequirement>
            <Effect>EFFECT_SPELL1</Effect>
            <Sound>AS3D_SPELL_BLESS</Sound>
            <Button>Art/Interface/Buttons/Spells/Kidnap.dds</Button>
        </SpellInfo>
in CvSpellInterface.py, add:
Code:
def reqMoveGP(caster, sGP):
	pCity = caster.plot().getPlotCity()
	pPlayer = gc.getPlayer(caster.getOwner())
	if not pPlayer.isHuman():
		return False
	if pCity.getFreeSpecialistCount(sGP) > 0:
		return True
	return False

def spellMoveGp(caster, sSpec, sUnit):
	pCity = caster.plot().getPlotCity()
	iUnit = gc.getInfoTypeForString(sUnit)
	iSpec = gc.getInfoTypeForString(sSpec)
	pPlayer = gc.getPlayer(caster.getOwner())
	newUnit = pPlayer.initUnit(iUnit, caster.getX(), caster.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)
	pCity.changeFreeSpecialistCount(iSpec, -1)

You could add <UnitClassPrereq>UNITCLASS_WORKER</UnitClassPrereq> to limit it to workers if you want to. That would cut down of how often the python prereq has to be run.
 
Wouldn't it be easier to modify the kidnap spell and make it useable only in owned cities by any unit?
 
I don't have much experience with kidnap, but doesn't that spell just take a random GP? I would think you would want the ability to take a specific one. Perhaps (and I don't know if this is possible) you could allow a city to build a GP if they have one of that kind settled, and have the settled one deleted upon build? The hammers could represent the dismantling of the GP's workspace, etc.

You'd have to block this from working with warrens, of course.

(My idea here is to avoid having an extra 6 spells on all your units if you have a city with all six specialists settled.)
 
I don't have much experience with kidnap, but doesn't that spell just take a random GP? I would think you would want the ability to take a specific one. Perhaps (and I don't know if this is possible) you could allow a city to build a GP if they have one of that kind settled, and have the settled one deleted upon build? The hammers could represent the dismantling of the GP's workspace, etc.

You'd have to block this from working with warrens, of course.

(My idea here is to avoid having an extra 6 spells on all your units if you have a city with all six specialists settled.)

well ... another possibility is to "awake" all of them by one spell - you can rejoin them to city always ...
 
Sidar will get every corporation though...
 
could Great People also give GPP points, 2 perhaps? to super specialized your cities
 
I thought I said it here but it seems I didn't.

I think we shouldn't allow a GP to be totally recovered from a city. When you get a GP, how you use it is an important decision, an irreversible one. You can't say "crap, let's get it out of this city to start a golden age!".

What we could is just allow a GP to be recovered from a city but to just be allowed to enter another city as great specialist, nothing more. This way, you can move your great specialist to specialize your cities but you can't put them in the fridge while waiting for a good use of them.

At least, that's how I'd do it :)
(using xienwolf's promotion idea)
 
Even then you remove a bit of risk/tactical decision making though.

For instance, I LOATHE Great Bards. They are absolutely useless to me since I never go FoL. So when one pops I either zip him off to my newest city and culture bomb, or I just settle him in a city with a border conflict. But if I get one early in the game from a dungeon, I settle him in my capital because I don't want to forget about him and have a unit sitting around for hundreds of turns doing NOTHING at all. Now, if I could pick them up, then a Great Bard would follow every settler I ever produce and make it so I don't have to worry about building Monuments anymore. Borders would expand on the first turn the city exists every time, and if the city is threatened, I don't care that I left a Great Person in a border city, I just relocate him back to a defended position.
 
For instance, I LOATHE Great Bards. They are absolutely useless to me since I never go FoL. So when one pops I either zip him off to my newest city and culture bomb, or I just settle him in a city with a border conflict.

I use them to start my golden age...
 
Great People might be more interesting if they gave something resembled* their "settled" bonus, just by standing around in a city. Also capable of being assassinated in such case too, right?

I'm sure I've seen it done, where some units can beef up city production just by being garrisoned there, I'm thinking lately of Jotnar citizens in the FF+ modmod... just by standing around, they add something like 2 hammers to the city, think via a promotion called "Artisan" which only pops up when they're in a city. I'm sure similar promos like "Great Prophet" or "Great Engineer" or whatever could be made up, giving a +1 gold or +3 culture or whatever fits that kind of GP, could be dreamt up. This could mean your Great Bard follows a settler, hangs out long enough in that town for a border pop, then travels around to entertain people in some other city in need of border pops. Possibly getting killed in action at some point during his spreading the joy (and also not contributing anything to your civ while he's on a road between destinations).

Making those units capturable like Workers would be delightful as well :D *catches unescorted Bard on the road*


(Edit: * resembling settled bonus meaning "something not quite as good as their settled bonus, in exchange for the flexibility of being able to run around to other cities")
 
Great People might be more interesting if they gave something resembled* their "settled" bonus, just by standing around in a city. Also capable of being assassinated in such case too, right?

I'm sure I've seen it done, where some units can beef up city production just by being garrisoned there, I'm thinking lately of Jotnar citizens in the FF+ modmod... just by standing around, they add something like 2 hammers to the city, think via a promotion called "Artisan" which only pops up when they're in a city. I'm sure similar promos like "Great Prophet" or "Great Engineer" or whatever could be made up, giving a +1 gold or +3 culture or whatever fits that kind of GP, could be dreamt up. This could mean your Great Bard follows a settler, hangs out long enough in that town for a border pop, then travels around to entertain people in some other city in need of border pops. Possibly getting killed in action at some point during his spreading the joy (and also not contributing anything to your civ while he's on a road between destinations).

I really like this idea - it makes the 'waiting time' with your great people worth something, and they are vulnerable while they are not settled. One problem I see though is that the AI will probably not handle this well... (but I guess they don't handle a lot of things well). If this could be done, it would add another unique style of play!!
 
Can't you give all the great persons some kind of "inspiration" spell? They can only cast it in cities and it adds a temporary building. As soon as the GP dies or leaves the city, the building disappears.

- Each GP could have its own building.
-- Engineer: Adds hammers to the city.
-- Merchant: Adds wealth to the city.
-- Bard: Increases culture of the city.
-- Prophet: Either a balanced increase of wealth and hammers *or* increased production speed of disciple units *or* increases the chance of spreading your state religion to and from this city dramatically.
-- Sage: Increases research in that city (maybe remove the academy building then? You could use this modmod to balance it)

- Having multiple GPs of the same type would be useful, as you could place them in different cities.

- The buildings would stack with other GPs, allowing "super specialized" cities.

- The GPs could be moved to cities where they're needed the most (eg: bards to cities with border problems.)

- GPs could easily be assassinated as they're always the weakest unit in the stack. Their movement speed could be reduced to 1, so they can't just speed away if they see an enemy.
 
Now those are some ideas that I like, making them similar to FF great commander system.

-Colin
 
Now those are some ideas that I like, making them similar to FF great commander system.

-Colin

you mean something like adding GP to units ?? ... interesting idea:
GEngeneer: add +20% strength
GProphet: add +40% vs angelic / demonic units
GScientist: add +40% vs disciple / arcane units, +20 resist all
GBard: +1 movement, city less likely to revolt
GMerchant: can explore rival territory

... :mischief::D
 
you mean something like adding GP to units ?? ... interesting idea:
GEngeneer: add +20% strength
GProphet: add +40% vs angelic / demonic units
GScientist: add +40% vs disciple / arcane units, +20 resist all
GBard: +1 movement, city less likely to revolt
GMerchant: can explore rival territory

... :mischief::D

I dunno, I can't see a BARD leading my armies...
 
Top Bottom