Requesting following features

Ok, I'll try to make a check list of sorts for you once I get around to it. I just have a couple of other projects going on right now. :p
 
I'm just about done with the CatapultConstruction module and I did add capability for saving turn counters in the actual map tiles (with scriptData). It turned out that the Object-Oriented approach I had adopted for this feature made it easy to implement without rewriting much of anything. :goodjob:

But, the AI "behavior" will still not be entirely intact between saves. While a unit will continue on the plotted course (stay immobile until a catapult pops) between save games, as will the amount of "work turns" put into building the catapult. But, it is also possible for an AI player to benefit from earlier, interrupted, work by another AI.

Lets say that AI Rome is at war with AI Greece. One Roman Advanced Swordsman is left behind in a forested tile and starts to "build" a catapult. While the unit stays immobile it is killed and the counter stays at, say 3 turns left. But the unit that killed off the Roman unit is itself a Advanced Swordsman - but Greek - and as it happens to be on a forested tile - with no other Greek catapult construction in progress - it simply continues where its Roman counterpart left off. So in 3 uninterrupted turns the Greek AI is rewarded a catapult.

My question is if this really is a problem? Because it doesn't affect the human player directly, but can of course benefit some odd AI from time to time.

The way to fix this "bug" would be to have all tiles store an array of turn counters - one for each player. But in order to save this array it would be necessary to "pickle" it (turn the data structure into a string value) in order to save the data, and then "unpickle" it to fetch the data. And changing the counter means that all of this has to be done a second time around. (Unless the data is stored somewhere else in-between saved games, of course.)

The bottom line is that pickling causes some lag, which is always bad. If the bug isn't in need of a fix, then you could probably do without the lag also. :rolleyes:

(There might be other options available also, like to keep track of all tiles that have gotten catapult work on them during wartime, and then loop through them to wipe the turn counters when peace arrives.)

edit: Do you have time to test the catapult code this week or should I wait with submitting it? (Chances are that there will be some edits in the code before you get around to testing. So its always better if you give me some 16 hours heads-up before you start testing any new Python stuff. Because then you will be able to test the latest versions.)
 
I don't mind if the AI can get production boosts on their catapults :D makes it more fun :lol:

Won't have time untill friday... Now would be pushing it for time and I would rather have a more completed testing phase
 
The bottom line is that pickling causes some lag, which is always bad. If the bug isn't in need of a fix, then you could probably do without the lag also. :rolleyes:

Make sure to use cPickle (import cPickle as pickle), and only load/save in onLoad and OnPreSave. Technically yes there is *some* additional time required, but in practice it's infinitesimal.
 
Make sure to use cPickle (import cPickle as pickle), and only load/save in onLoad and OnPreSave. Technically yes there is *some* additional time required, but in practice it's infinitesimal.
This approach dawned on me also, but it would add lag to the whole game instead of just when there is actual data to storage/retrieve. (The catapult construction event is probably rare, so the lag wouldn't affect something like 95% of the game.) With autosaves that can be set to every turn, and all. :p
 
do what you think is best and adds the least lag... hws the list coming along?
 
Eh, I was just getting to that. Lets see if I don't manage to get side-tracked again. :p But I gather that you have time to get the design done, then? Hence the sense of urgency. :D (Yeah, sorry for keeping you waiting.)
 
Ok, here's some of the things you could consider when putting your design down in writing. Note that there basically are no limits at this point, as I've yet to start coding the new Rebellion module. (It will be a complete re-write from scratch.)
Spoiler :
sample conditions (in any configuration)

- occupation (disorder from conquest)
- cultural pressure (disorder from foreign culture)
- disorder (in general, for example with espionage)
- unhappiness (several kinds of)
- military presence (or lack of)
- foreign origin (conquered city)
- anarchy (in-between civics/religion changes)
- historical dates (or time-frames)
- triggered by random event (like the slave revolt)

rebel civilization - what player does the spawned units belong to?

- barbarians
- city's original owner
- culturally differentiated rebels
- some other custom civ (like a slave civ)

number of rebel units (probably the highest/lowest of several different values)

- military presence (or lack of)
- number of angry citizens (or the city's unhappy level)
- amount of unhealthiness (or the city's pollution level)
- number of foreign citizens (in relation to the city's whole population)
- city size
- random denominator

rebel unit type

- based on owners technological level
- based on rebel's technological level
- based on game era
- preset unit type (always the same - like in a historical scenario)

optional rebellion termination - all rebel units are disbanded

- after some game turns (random or set number)
- at some historical date
- once the player yields to some demand
- once all rebel units are dead (difficult if more units are spawning)

other optional features

- preset XP/promotions
- preset unit AI settings
- respawning rebel units (requires a expiration date or other condition to end the rebellion)
- present units in city defect to the rebel side! (like a military coup d'état)

miscellaneous rebellion settings

- can a dead civ be revived?
- is the city always vulnerable to rebellion?
- is the number of citizens in the city affected?
- does the rebellion cause unhappiness? (war-weariness?)
- is the cultural/ethnic makeup of the city affected

The more detail and thought you put into your design, the easier and faster will this be to code.
 
ok I think I got most things you need:

Spoiler :

Type - Occupational Rebellion

Sample Conditions - Occupation (not too common)

Civ Claimant - Original owner

Number of Units - to be completed

Type - Original owner's tech level

Termination - None

Misc - Revival of civ, Chance of rebellion ends (therfore turning into domestic rebellions) after some turns after capture (not sure how many though...)


Spoiler :

Type - Domestic Rebellion

Sample Conditions - Disorder for whatever reason 12% for barbs and 7% for civilized

Civ Claimant - Civ Specific rebels (I will send you the current mod soon)

Number of Units - Revolt turns * Military Garrison strength + 1 strength (may be unbalanced but testing will see) OR iPopulation / 2 * iUnhappyLevel + iDistance possibly?

Type - Current owner's tech level

Termination - None

Misc - Revival would be for rebels, Always present, War weariness


Spoiler :

Type - Minor Domestic Rebellion (RARE)

Sample Conditions - Angry Citizens, 10% chance?

Civ Claimant - Civ Specific Rebels

Number of Units - City's unhappy level - Angry Citizens (that's take away there btw)

Type -Rebel's tech level or if first time spawning the current city's owner (or maybee the rebels gain the techs from their counterparts the FIRST spawn)

Termination - None

Misc - Revival for rebels, always vunerable


Spoiler :

Type - Cultural Rebellion

Sample Conditions - Significant Cultural presence from other civ (not previous owner) enough to give revolt, happens 25% of the time

Civ Claimant - Pressuring civ

Number of Units - Number of foriegn citizens (compared to total citizens)

Type - Current owner's tech level

Termination - None

Misc - No revival, only able to happen if under threat from revolt (not flip, dunno about cultural make-up)


Spoiler :

Type - Slave Rebellion

Sample Conditions - Must be in Slavery, Slave Revolt event, only appears on 10% of the events

Civ Claimant - Slaves (yet to be created)

Number of Units - City Size

Type - Current Owner's tech level OR Axes, Spears, Chariots

Termination - Swap from slavery (slave cities flip back to owner)

Misc - Revival of slaves?


This one is evil!
Spoiler :

Type - Civil War (VERY RARE)

Sample Conditions - Unhappiness in approx 30% of cites over 2 Angry Citizens (excludes War Weariness), has a 15% chance of starting every turn the conditions are in effect

Civ Claimant - Civ Specific Rebels

Number of Units - 6 outside of highest pop city owned by rebels

Type - Rebel's tech level (if never spawned before takes the Tech of current owner, or once again gains counterparts techs on first spawn)

Termination - None (and in my notes it says: Mwahahahaha!!!! :D)

Misc - Defection of the 30% of cities specified earlier, always vunerable to this



Finished (will update when new ideas come along!
 
oh I almost forgot there should be a 6 cities minimum cap on the Civil War otherwise if one of your 3 cities gets unhappy there will be a civil war....

also there should be a tech list that can be used for defining what techs count towards spawning units (then the highest of these is the one that the rebellion receives) which will stop explorers...

they should be:

Archery
Bronzeworking
Ironworking
Horsebackriding
Construction (elephants... Possibly?)
Advanced Archery
Advanced Bronzeworking
Advanced Ironworking
Advanced Horsebackriding

Some of these do not have the correct name... I will get back to you on these!
 
also there should be a tech list that can be used for defining what techs count towards spawning units (then the highest of these is the one that the rebellion receives) which will stop explorers...
I already defined these values/arrays based on what you wrote earlier (and I have the code for setting the unit type accordingly ready-to-use):
Spoiler :
Code:
# Rebellion mod-comp

eDefaultUnit = eWarrior

tAdvancedRebelUnits = (
eAxeman,
eSwordsman,
eAdvancedSpearman,
eAdvancedSwordsman
)

tRebelUnitTechs = (
eBronzeWorking,
eIronWorking,
eAdvancedBronzeWorking,
eAdvanceIronWorking,
)
Feel free to complete the data! (The eNums are only valid because they will be defined as variables in the Utils module.)

Looking at your design I would like to comment on the concept of counting total unit strength and spawning matching numbers of units. The idea is interesting and should be fun to implement, but I'm not sure about the whole idea of matching rebels to defenders, because then the whole thing just gets deterministic.

Like calibrating the occupation rebellions in a way that they never threaten the city - while domestic ones always do - is pretty boring in the long run. Because you don't need to worry about how many units you garrison your cities with - the likelihood of a rebel takeover is about the same. So you might as well flip the city right away and skip the spawning of units - or not.

With that said, I think you could use something like this for the upper/lower limit on the number of spawning units. So most of the time there could be two or more calculations on how many units will spawn, and the highest/lowers number will be implemented. (So the occupation rebellion needs a upper limit based on the city defenses, while the domestic rebellions needs a lower limit.) Just an idea...

Some comments/clarifications on your entries:
Spoiler :
Type - Occupational Rebellion

Sample Conditions - Occupation (not too common)

Civ Claimant - Original owner

Number of Units - Military Garrison base strength (excluding promotions) + 6 str = strength of invading units! (roundup) (or something simmilar because this may be unbalanced)

Type - Original owner's tech level

Termination - None

Misc - Revival of civ, Chance of rebellion ends (therfore turning into domestic rebellions) after some turns after capture (not sure how many though...)

Conditions: Is there some random denominator at work here? Or should we do it the same way as in the present code? (One civ is checked per turn, but the "civilized" ones only have half a chance for the event to fire.)

Termination: None? What about the last paragraph (under Misc)? :confused:

Revival: Then there is no check towards whether or not the original owner is alive? (We'll return to the topic of reviving civs at some point, because there need to be some code (re-)setting diplomacy, granting Techs, and whatnot.)

Spoiler :
Type - Domestic Rebellion

Sample Conditions - Disorder for whatever reason

Civ Claimant - Civ Specific rebels (I will send you the current mod soon)

Number of Units - Revolt turns * Military Garrison strength + 1 strength (may be unbalanced but testing will see)

Type - Current owner's tech level

Termination - None

Misc - Revival would be for rebels, Always present, War weariness

Conditions: The event takes place every time a city is in disorder then? (And not under occupation. But the cultural rebellion is still another event, right?)

Spoiler :
Type - Minor Domestic Rebellion (RARE)

Sample Conditions - Angry Citizens

Civ Claimant - Civ Specific Rebels

Number of Units - City's unhappy level - Angry Citizens (that's take away there btw)

Type -Rebel's tech level or if first time spawning the current city's owner (or maybee the rebels gain the techs from their counterparts the FIRST spawn)

Termination - None

Misc - Revival for rebels, always vunerable

Numbers: Do explain! :confused:

Type: I agree that the rebel civs always get the Techs of the main civ once they appear. Because they are basically some disenfranchised group/minority within that civ. (I actually think that if the proper civ is wiped out, then any corresponding alive rebel player will turn into the former. Like if Roman Rebels defeat the Roman player - then all cities and units flip back to the proper Romans - presumably under new rule. The warring fractions unite and the civil war has ended.)

Spoiler :
Type - Cultural Rebellion

Sample Conditions - Significant Cultural presence from other civ (not previous owner) enough to give revolt

Civ Claimant - Pressuring civ

Number of Units - Number of foriegn citizens (compared to total citizens)

Type - Current owner's tech level

Termination - None

Misc - No revival, only able to happen if under threat from revolt (not flip, dunno about cultural make-up

Conditions: So this would also be triggered by disorder then? :confused:

Rebel Civ: This will be interesting to code, because it might not always be clear what rival is causing the disorder in the first place. So if the code identifies the wrong one, then there will firstly be units spawning that belong to one civ, and later the city will flip to another civ! :lol: And what about war/peace? This event causes the two civs going to war, right? Doesn't the other player get a say in whether or no the rebellion should be supported? (I'm thinking that the units could belong to some third civ, but then those need to be flipped anyway...)

Spoiler :
Type - Slave Rebellion

Sample Conditions - Must be in Slavery, Slave Revolt event, only appears on 10% of the events

Civ Claimant - Slaves (yet to be created)

Number of Units - City Size

Type - Original Owner's tech level

Termination - Swap from slavery (slave cities flip back to owner)

Misc - Revival of slaves?

Type: Original owner? You mean the city owner? (What about making these units somewhat weaker and capping the unit type at, say, spearman or something. Because these would mostly be desperate people with little access to proper military hardware. Or the unit type could always be 2-3 steps behind the regular rebel unit type.)

Spoiler :
Type - Civil War (VERY RARE)

Sample Conditions - Unhappiness in approx 30% of cites over 2 Angry Citizens (excludes War Weariness)

Civ Claimant - Civ Specific Rebels

Number of Units - 6 outside of highest pop city owned by rebels

Type - Rebel's tech level (if never spawned before takes the Tech of current owner, or once again gains counterparts techs on first spawn)

Termination - None (and in my notes it says: Mwahahahaha!!!! )

Misc - Defection of the 30% of cities specified earlier, always vunerable to this

Conditions: I'm not sure what you mean - the sentence could be interpreted in many ways. Please specify!

Rebel Civ: It's always 6 units? :confused: Couldn't this be a cap instead? (Like always at least 6 units - or never more than 6 units.) Shouldn't the city be selected somewhat randomly? (The number of citizens could still weigh in proportionally.) What about a spreading civil war that can spill over to near-by cities? (This risk is only removed once all rebel units are dead. What about ending the civil war once you take the first city captured by the rebels - their capital? This takes away the boring business of mopping up scattered enemy forces and gives the player a clear goal for the war effort.)

Misc: What now? Cities are flipping instead of units spawning? Or both? :confused:
 
I made a sample Rebellion class while we discuss the specifics of the various rebellions for your mod. Its not meant to be used directly, but will rather form the template for the actual sub-classes of rebellions.
Spoiler :
Code:
class Rebellion:

    lCurrentRebellions = list()

    @classmethod
    def checkConditions(cls, pCivPlayer, pCity):
        return pCity.isDisorder()

    def __init__(self, pCivPlayer, pCity):
        self.lCurrentRebellions.append(self)
        self.iRebellionTurn = Game.getGameTurn()
        self.eCityOwner = pCivPlayer.get(playerID)
        self.setRebelPlayer()
        self.setUnitType()
        self.setNumUnits()
        self.plotID = getPlotID(pCity.plot())
        self.setRebelUnitSettings()
        self.setMessages(pCity.getName())
        self.addRebellionMessage()

    def setRebelUnitSettings(self):
        self.eUnitAI = eAttackCity
        self.ePromotion = None

    def setUnitFlag(self):
        self.unitFlag = "rebel"

    def setMessages(self, cityName):
        self.rebellionMessage = defaultRebellionMessage % cityName
        self.terminationMessage = defaultTerminationMessage % cityName
        self.unitSpawnMessage = defaultUnitSpawnMessage

    def setRebelPlayer(self):
        self.eRebelPlayer = eBarbarian

    def setUnitType(self):
        iNumTechs = len(tRebelUnitTechs)
        for i in xrange(iNumTechs, -1, -1):
            eTechType = tRebelUnitTechs[i]
            if self.pCivPlayer.get(CyTeam).isHasTech(eTechType):
                self.eUnitType = tAdvancedRebelUnits[i]
                return
        self.eUnitType = eDefaultUnit

    def setNumUnits(self):
        pCity = self.getCyPlot()
        iUnhappyLevel = pCity.unhappyLevel(0)
        iPopulation = pCity.getPopulation()
        self.iNumUnits = max(1, min(iUnhappyLevel, iPopulation))

    def isRebellionTurn(self):
        return Game.getGameTurn() == self.iRebellionTurn

    def getCityOwner(self):
        return instance(self.eCityOwner)

    def getRebelCiv(self):
        return instance(self.eRebelPlayer)

    def getUnitType(self):
        return self.eUnitType

    def getPlotID(self):
        return self.plotID

    def getCyPlot(self):
        return Map.plotByIndex(self.getPlotID())

    def getPlotCoords(self):
        return getPlotCoords(self.getPlotID())

    def getCyCity(self):
        return self.getCyPlot().getPlotCity()

    def getNumUnits(self):
        return self.iNumUnits

    def getUnitAI(self):
        return self.eUnitAI

    def isPromotion(self):
        return self.ePromotion != None

    def getPromotion(self):
        return self.ePromotion

    def isUnitFlag(self):
        return self.unitFlag != ""

    def getUnitFlag(self):
        return self.unitFlag

    def checkTermination(self):
        if pCity.isDisorder(): return False
        unitFlag = self.getUnitFlag()
        for pUnit in self.getRebelCiv().get(PyPlayer).getUnitList():
            if pUnit.getScriptData() == unitFlag:
                return False
        self.lCurrentRebellions.remove(self)
        self.addTerminationMessage()
        return True

    def addTerminationMessage(self):
        addMessage(self.terminationMessage)

    def addRebellionMessage(self):
        addMessage(self.rebellionMessage)

    def addUnitSpawnMessage(self):
        addMessage(self.unitSpawnMessage)

    def spawnRebelUnits(self):
        iNumUnits = self.getNumUnits()
        iX, iY = self.getPlotCoords()
        eUnitType, eUnitAI = self.getUnitType(), self.getUnitAI()
        while iNumUnits:
            pUnit = self.getRebelCiv().get(CyPlayer).initUnit(eUnitType, iX, iY, eNoDirection, eUnitAI)
            self.setPromotion(pUnit)
            self.setUnitFlag(pUnit)
            iNumUnits -= 1
        if not self.isRebellionTurn():
            self.addUnitSpawnMessage()

    def setPromotion(self, pUnit):
        if self.isPromotion():
            pUnit.setHasPromotion(self.getPromotion())

    def setUnitFlag(self, pUnit):
        if self.isUnitFlag():
            pUnit.setScriptData(self.getUnitFlag())
As I said earlier - the good thing is that now I can define any type of rebellion by simply adding the stuff what differentiates it from the default settings of the parent class - the other stuff will be simply be inherited by default. So it'll be just a few method definitions per rebellion type, then. While all the useful methods like spawnRebelUnits() will be automatically available to every sub-class.

Oh, this should be a lot of fun! :king:
 
ok a lot of info to lot at here :D

I guess I have some explaining to do:

1. Maybee we should use the original caculations for domestic and occupational (including the civilized stuff, remember: the reduction comes from if the original city owner is barbarian/civilized or not, not the invader.) when I say no termination I do mean it.... the misc refers to the chance of this rebellion, after a certain amount of turns after the city was conquored it is no longer elligeble for an occupational revolt.
2. Not every time it is in revolt... I guess i was not clear enough, maybee 12% chance and 8% for civilized people
3. ok example time the city has an unhappiness level higher than happiness and it fits the tiny percentage chance... it's unhappiness level is 12 and it has 3 angry citizens so it would spawn 12-3= 9 units spawned
4. I guess the other civ has a say wether they should support it or disband it... maybee they could just recieve the units (good way of gaining more advanced units). about 25% of the time a city is in a flip revolt (where the game is warning you that a flip is imenent) you could get this rebellion!
5. Yeah I guess so but maybee with some axemen or chariots... (chariots! that should be added to the unit list....) yes I mean current owner.
6. Ok example time again!
Greece has 12 cities and 4 of those are over 2 angry citizens. each turn that this is happening it inches closer to civil war and then next turn BOOM! the 4 (which is 30%) cities flip and the strongest of those cities gains 6 units (maybee you could think of another calculation for this?) there you go civil war ;)
 
1. Maybee we should use the original caculations for domestic and occupational (including the civilized stuff, remember: the reduction comes from if the original city owner is barbarian/civilized or not, not the invader.) when I say no termination I do mean it.... the misc refers to the chance of this rebellion, after a certain amount of turns after the city was conquored it is no longer elligeble for an occupational revolt.
But what happens with a occupied city who's original owner has been eliminated? Would the rebellion revive it by spawning units? (Well not after some amount of game turns after conquest, but anyway.)

2. Not every time it is in revolt... I guess i was not clear enough, maybee 12% chance and 8% for civilized people
So two different percentages then. I might just re-use the half chance from the present setup. (But it can of course be changed later.)

3. ok example time the city has an unhappiness level higher than happiness and it fits the tiny percentage chance... it's unhappiness level is 12 and it has 3 angry citizens so it would spawn 12-3= 9 units spawned
What I'm still not getting is why you wanna subtract the angry citizens from the unhappy level. :confused:

Just to be clear: The unhappy level is the amount of unhappiness points in the city. The happy level is the amount of happiness points in the city. The difference is the number of angry citizens (who refuse to work).

So a size 5 city might have an unhappy level of 7 and a happy level of 5. Thus there will be 2 angry citizens. And with your equation there would be 5 rebel units (7 - 2) spawning in case of rebellion - correct? (I'm not saying that the idea is flawed, but rather that the approach is... interesting.)

4. I guess the other civ has a say wether they should support it or disband it... maybee they could just recieve the units (good way of gaining more advanced units). about 25% of the time a city is in a flip revolt (where the game is warning you that a flip is imenent) you could get this rebellion!
It might not be very convenient to script a popup that allows the human player to chose between war and peace, but it might be doable nonetheless. I'm not sure about how to script the AI behavior... :p (What determines whether or no to DOW? A random number generator?)

I kinda like your new approach, though, since the disordered city loses all its culture tiles temporarily. So unless another high-culture cities are close-by there will appear gaps in the borders, creating not-owned or foreign territories. And by spawning the potential rebel units on top of the city they should get moved automatically to nearest friendly or neutral tile. And as the city might not own all the tiles around it, then those spawning rebel units might well end up in the gaps left by the absence of cultural influence. In turn giving the player the opportunity to use those units by declaring war!

5. Yeah I guess so but maybee with some axemen or chariots... (chariots! that should be added to the unit list....) yes I mean current owner.
Please update your post - it will make things so much easier going forward!

6. Ok example time again!
Greece has 12 cities and 4 of those are over 2 angry citizens. each turn that this is happening it inches closer to civil war and then next turn BOOM! the 4 (which is 30%) cities flip and the strongest of those cities gains 6 units (maybee you could think of another calculation for this?) there you go civil war ;)
Ok, but shouldn't the civil war have a spread effect? Like more and more cities joining in? (The number - any number - of unhappy citizens could be the deciding factor, perhaps together with distance to Palace.) Perhaps we could try this approach once the basic functionality is in...
 
1. the rebellion would revive the defeated civ

3. yep it is an interesting approach but it works

6. I'm not sure, stick with basic functionality for now!

I will update post now!
 
how's it going Baldyr?

btw here you go Asaf, for the updated DLL... the art defines are:

Code:
		<BuildingArtInfo>
			<Type>ART_DEF_BUILDING_MIDDLE_EASTERN _COLOSSEUM</Type>
			<LSystem>LSYSTEM_3x3</LSystem>
			<bAnimated>0</bAnimated>
			<fScale>0.77</fScale>
			<fInterfaceScale>0.65</fInterfaceScale>
			<NIF>Art/Structures/Buildings/arab_col/arab_col.nif</NIF>
			<KFM/>
			<Button>,Art/Interface/Buttons/Buildings/Colosseum.dds,Art/Interface/Buttons/Buildings_Atlas.dds,2,2</Button>
		</BuildingArtInfo>

This is obviously for the Middle-East

(Btw Baldyr, this update is to create an intirely new XML file which allows Ethnic Building art styles, accordingly called BuildingArtStyleTypeInfos.xml just like the unit one :D)
 

Attachments

I should get something done this weekend, at least. But I'm not sure about testing - that might be another week. :p

But you could get the Techs and Rebel units arrays in order before I do. :)

Oh, and I have a design issue: There can be more than one rebellion action in the game at one point, right? (Only allowing one at any given time would be more convenient to code, but anyway.) But can one player have more than one rebellion active at one time? (Again, keeping track of one rebellion per players is more convenient, but its really a design issue.) I can code it any way you want - the difference is work hours - and testing time.
 
one rebellion at a time and after 5 turns the civ can receive a new rebellion (even if the former has not ended) multiple rebellions can happen at the same time but only in different players

roman and gaul can both have a civil war spawn at the same turn!
 
Ouch, thats more design that I bargained for! :eek2:

I'll see what I can do in order to accommodate this setup.
 
Back
Top Bottom