View Full Version : Modding Settlers to Appear Infrequently
loseth Dec 05, 2005, 09:44 AM I had a lot of fun in Civ3 with settlers modded to appear once every 100 years. Is it possible to do something similar in Civ4*?
*Aside from the obvious possibility of raising the cost astronomically, which killed the AI in Civ3.
loseth Dec 05, 2005, 09:45 AM Argghh! Wrong forum!
Mods? Can you move this?
:blush:
PawelS Dec 05, 2005, 10:10 AM I did something similar (or the same) in Civ3 (Palace produced Settlers every x turns), but I don't know how to make it in Civ4. Maybe make Settlers a type of Great People?
loseth Dec 05, 2005, 11:32 AM I did something similar (or the same) in Civ3 (Palace produced Settlers every x turns), but I don't know how to make it in Civ4. Maybe make Settlers a type of Great People?
I was thinking that too, but not having the game yet (:(), I'm not sure if it's possible or--if it is--how often great people appear on average.
Lightzy Dec 05, 2005, 11:33 AM Thats a great idea for a mod actually.
make settlers unbuildable, but a unit you get at your capital city every X ammount of turns :>
In fact I think it makes the game better in every way :)
More emphasis on aggressive diplomacy and war, much bigger emphasis on city placement and role, competitions for favorable spots and so on and so forth.
man, that'd be a killer game.
dh_epic Dec 05, 2005, 02:56 PM Civ 3 had a "produces one X very Y turns" mechanism. I'd be surprised if there wasn't a way to do the same thing in Civ 4? To me this is a must have for some scenarios.
The Great Apple Dec 05, 2005, 03:00 PM Yes, it can be done with a bit of python scripting. You can make units unbuildable in the same way that great people are unbuildable.
EDIT: For anybody wanting the mod I've attached it to this post.
Lightzy Dec 05, 2005, 05:03 PM Damn.
I know absolutely nil about python scripting..
maybe there's someone who can make this mod for me and other experimenting weirdos?
Like, one settler every 60 turns or something, and settlers unbuildable?
That way you get to make like 6-8 cities in the the course of a game (I didn't bother to calculate accurately :)), and war is a much more important way of getting stuff..
Then again, I wonder how the A.I handles this
loseth Dec 06, 2005, 05:38 AM Damn.
I know absolutely nil about python scripting..
maybe there's someone who can make this mod for me and other experimenting weirdos?
Like, one settler every 60 turns or something, and settlers unbuildable?
That way you get to make like 6-8 cities in the the course of a game (I didn't bother to calculate accurately :)), and war is a much more important way of getting stuff..
Then again, I wonder how the A.I handles this
In my civ3 games I actually found 60 turns to be too short an interval, because as the game progresses plenty of cities will be acquired by war and before long the remaining sides have so many cities that it's almost like unlimited settlers (:( ). Keep it to three or four settlers per game, then add 5 or 6 cities by conquest, and even after acquisition by war you've still got a nice low number, so every city really counts.
As to the python... :cry:
EDIT: Oh, and at least in Civ3, the AI had no problems with a free settler every X turns, but was totally thrown by the work-around of trying to increase the settler build price so that they could only be produced once in a blue moon.
alubkin Dec 06, 2005, 10:11 AM the trouble is that the reqs for tihings like oxford u and the globe theatre would either have to be modified or these wonders would have to be abandoned
The Great Apple Dec 06, 2005, 10:29 AM If you really want it, I can see if I can write it for you. You'd have to tell me EXACTLY how you want it to work - I can probably make the turns between spawning easily variable though.
Bear in mind, however, that I've only actually written one thing in python - and it was very easier.
I'm almost certain the AI can handle it.
Lightzy Dec 06, 2005, 05:11 PM I'd be really happy if you made it and posted it as a mod!! :)
1) Settlers = unbuildable
2) one settler appears at capital city (of every civ) every 100 turns :)
(I suppose that's about, what, 4 settlers for a normal game?)
The Great Apple Dec 06, 2005, 07:09 PM Well, I'm having difficulties.
The code took about 5 mins to write, but there seems to be a problem. When I spawn the AI settlers the game crashes.... and I have no idea why! I seem to be doing it the same way as the GreekWorld scenario, but it doesn't work.
I may try again in the morning when I'm more awake!
loseth Dec 07, 2005, 05:51 AM Well, I'm having difficulties.
The code took about 5 mins to write, but there seems to be a problem. When I spawn the AI settlers the game crashes.... and I have no idea why! I seem to be doing it the same way as the GreekWorld scenario, but it doesn't work.
I may try again in the morning when I'm more awake!
Well, even if it doesn't work out, thanks for the effort. This is the first time I've ever posted anything even vaguely requestlike on this forum and had somebody actually try to make it!:D
The Great Apple Dec 09, 2005, 10:19 AM Right. Looking at this problem with fresh eyes, I saw immediately what was wrong. The game was trying to spawn a settler at a city which did not exist, as the barbarians had no capital city.
I've editted the code so that it checks to see if a civ has a capital city, before trying to spawn the unit, and now it works wonderfully. I've attached the mod to this post (if you repost it ont he top post, then it will be as if this post was never in the wrong forum!)
If you go into the file CvTimeSettler.py you can change the amount of turns in between settler spawn.
If you want me to do anything else with this - just ask! Personally, I'm thinking there should be a settler spawning some time near the start, as having 1 city for 100 turns might get a tad dull.
EDIT: Look up - the mod is on post 7.
PawelS Dec 09, 2005, 04:24 PM Thank you! :thumbsup:
PawelS Dec 09, 2005, 08:35 PM I made some corrections to your CvTimeSettler.py file:
1. Replaced getCity(0) with getCapitalCity(), so the settlers always appear in the capital, even if the original capital was lost or moved to another city by building a Palace.
2. Replaced iGameTurn by (iGameTurn+1), so the settler doesn't appear at the first turn, and new settlers are ready to use at the beginning of turn 100, 200 etc.
I think playing the first 100 turns with one city might be quite interesting (especially if the game speed is modded to be slower than Epic). Also, sparning settlers near the start of the game would be disadvantageous to the AI, because it usually doesn't have any military units to escort the settler early in the game, and it never sends an unescorted settler to found a new city.
Thanks for making the file even if it wasn't perfect, I wouldn't know how to start.
korn469 Dec 10, 2005, 03:07 PM Maybe instead of spawning it every 100 turns maybe you could do it like great people, where you have to gain settler points with each additional settler costing an increasing number of points.
Dusty4prez Dec 10, 2005, 04:06 PM This will make the Inca's superpowered if no one gets copper/iron in there borders :D
The Great Apple Dec 10, 2005, 05:58 PM 1. Replaced getCity(0) with getCapitalCity(), so the settlers always appear in the capital, even if the original capital was lost or moved to another city by building a Palace.
That was a relic for when I was trying to work out what was crashing the thing! Thanks!
2. Replaced iGameTurn by (iGameTurn+1), so the settler doesn't appear at the first turn, and new settlers are ready to use at the beginning of turn 100, 200 etc.
Hmm - I tested it and the settler didn't appear on the first turn (because none of the players had any cities on the first turn. I suppose this method is more compatable with mods that do give you a founding city, or something.
Good job! :goodjob:
Bhruic Dec 10, 2005, 06:15 PM You can do:
if (Player != gc.getInfoTypeForString("CIVILIZATION_BARBARIAN"))
easier as:
if (not Player.isBarbarian())
also, the reason you'd need (iGameTurn + 1) is because the game actually has two turn 0s. That is, when you start a new game, that is considered turn 0. However, when you end that turn, and start a new turn, the first turn is also considered turn 0. Confusing, I know. But on that first turn, most players will have created their cities, so you'd get Settler spawns at that point.
Bh
blunt3d Dec 10, 2005, 11:15 PM how do i use this mod? i want to try it out but i don't know what folder to put it in.
loseth Dec 14, 2005, 12:09 PM Thank you Great Apple! :D
Still can't afford to pick up civ4 till this weekend :( , but when I get it, I'm sticking your script in before I even start my first game!
Thanks again,
loseth
Crash757 Dec 14, 2005, 01:19 PM Interesting idea. I'll try this mod asap :)
The Great Apple Dec 14, 2005, 02:14 PM Having just checked out the zip posted by PawelS, I see that he has not included the relavent entry points file (you'd have to make one yourself).
I've attached a full mod to my first post on this thread. Post #7
Crash757 Dec 23, 2005, 04:14 AM Is the mod compatible to the latest patch ? :rolleyes:
Coopa Dec 23, 2005, 12:38 PM Wouldn't it be better to make it so a settler spawns every time a city reaches 5 population, then 10 population, then 20 population (or equivalent values)
That means you will get some civilizations that are better at expanding based on their position (and some that are better based on the traits - expansive could make a settler quicker)
It would be a very linear game if every AI got the second settler at the same time. Would also make Barbarians a proper power, as they could effectively turn into civs with the right position and time.
Crash757 Dec 23, 2005, 02:09 PM Wouldn't it be better to make it so a settler spawns every time a city reaches 5 population, then 10 population, then 20 population (or equivalent values)
That means you will get some civilizations that are better at expanding based on their position (and some that are better based on the traits - expansive could make a settler quicker)
It would be a very linear game if every AI got the second settler at the same time. Would also make Barbarians a proper power, as they could effectively turn into civs with the right position and time.
Good idea :) I hope somebody will make it in mod...
The Great Apple Dec 23, 2005, 04:54 PM Is the mod compatible to the latest patch ? :rolleyes:
I can see no reason why it would not be.
Good idea :) I hope somebody will make it in mod...
Hehe - ok. How do you want it to work by defualt? Every increment of 5 population? I can probably make it so you can change it quite easily.
Depx Dec 27, 2005, 08:57 AM I modded the Time Settler mod to years. Now you get settlers in the years 0, 1600 AD, 1850 AD, and 2051 AD (If you play past normal game end). And changed building prereqs for buildings that need 7 or whatever amount down to 3 except Red Cross which is at 4 if I remember correctly. I called it Year Settler so you can keep the other if you want.108985
Coopa Jan 01, 2006, 08:59 AM If you could Apple, do it for population increments that would be great.
Hopefully it wouldn't take too long.
Dr. Broom Jan 02, 2006, 01:26 PM Great Apple for that mod where you get a settler for every 5 population then for every 10 and 20 and such could you make it at least optional so that when you get the settler the city loses 1 or 2 population?
Also you probably already thought of it but just in case you didn't remember to make a settler spawn only 1 time in a certain city for reaching the amount of population required otherwise it will be easy to get massive amounts of settlers by reaching 5 population, killing 1 of them with slave labor and getting 1 population back and get a new settler.
A side note: Maybe make it so that you don't get a settler automatically when your city gets big enough but make it so it just get buildable (even for 0 shields) when the city reaches the appropriate size and that way if you don't need a settler you won't end up with a bunch of settlers sitting around that you don't need for whatever reason but don't want to disband either since they are so limited.
Coopa Jan 02, 2006, 02:29 PM There may be a way to max out the amount of settlers allowed per population increment
The Great Apple Jan 02, 2006, 07:17 PM Right - so an optional settler every 5 population points. I'll probably do it tomorrow.
I'll shove in a bit at the top of the python file where you can change the population boundries and if the thing takes off population.
I'll probably make a new thread for these as welll. The old mod needs updating to 1.52 unit costs, and this thread is a bit disorganised.
Darkhour Feb 08, 2006, 08:50 PM This is a good idea and I thought I'd bump this thread to get more input and mods. The settler spawning idea could be apporached on many different fronts, if TGA or anyone else has any updated files. :)
Drakonik Feb 08, 2006, 09:22 PM Could this mod be changed so that it produces a missionary for the state religion, as opposed to a settler?
Edit: I'm still unable to read the Python scripting, so I can't answer that question on my own.
Darkhour Feb 26, 2008, 08:33 AM Hi there.. long time between drinks and I thought I'd revisit Civ 4 and find out if anyone has made any progress on any mods etc.. towards this idea? :)
alms66 Feb 26, 2008, 10:07 AM despite this being a very old thread, let's restart the discussion shall we?
The goal of making Settlers come less frequently is a good one, and although it's one possible solution, I never really did care for unit spawning, especially Settlers, as it takes away too much of a player's control in my opinion. I would prefer a "commissioning" approach, where the player must meet certain conditions then simply press a button (commission the unit) to get a Settler. In fact, I'd like to see all units work that way, removing unit building from the city's production. If the player excessively met the condition, say three times over, he could commission 3 units at the same time. I don't have any well thought out suggestions on how to accomplish this exactly, but I'll present an example set of conditions below for clarity only - it introduces obvious micromanagement issues which I don't like.
For settlers, the condition would be to have at least 50% of your hammer and food boxes full in all of your cities (obviously, this would be much more difficult as your empire got larger). Upon commissioning, the Settler would consume all food and production in all cities and appear in your capital. If by some great stroke of luck or extreme levels of micromanagement you had 100% of food and hammer in all cities, you'd get two settlers and all that food and hammers would be consumed. If you had 75% in all cities, you'd build a settler which would found a size 2 city instead of size 1.
For units, the condition would be to have at least 50% of your hammer and food boxes full in one city. Upon commissioning, the unit would consume all food and production in a city that met the condition and appear there (the player should, of course, get to choose this). If the condition was met in several cities the player could create multiple units, one per city. If you had 75% in one city, that city would produce a unit with +1 lvl of experience. If you had 100% in one city, that city would produce two units instead of one.
Now again, I don’t think that example would actually be good, not without great tweaking to reduce the levels of micromanagement introduced by it at least. I just wanted to get other people thinking about this type of system instead of a spawning system, hopefully with someone coming up with a great system that gets turned into a mod that I’d be interested in… ;)
frekk Feb 26, 2008, 10:22 AM An historically accurate method of having settlers appear might be to make them occur due to the population outstripping the food supply. E.g. when a city loses a population point due to lack of food, you could have the option to turn that point into a settler rather than just have it starve off.
alms66 Feb 27, 2008, 09:23 AM not a bad idea frekk, though that particular situation does seem to happen rather often in civ4 so maybe a progression would be better? For each settler after the first, it requires an addition "lost" population point to produce the next settler. This would prevent hordes of settlers from filling the map too quickly.
|
|