<div class='quotetop'>Цитата(Линник * 28.9.2007, 16:06) [snapback]204837[/snapback]</div>
<div class='quotetop'>Цитата(Lexad * 27.9.2007, 17:55) [snapback]204589[/snapback]
На самом деле, пшик может быть и потом. До основания же города тебе будут давать просто нетеховые исходы - поставь в билдере на старте избу в досягаемости своего юнита и возьми ее до и после основания города.[/b]
Варлорды, монарх. До основания давала теху. Неоднократно.[/b][/quote]
Линник, открытие деревушки ДО основания города дает тебе технологию? Сейв в студию! Эксперименты на первом ходу и, самое главное, код игры говорят о том, что это невозможно.
1. Условие получение технологии ( из CvPlayer::canReceiveGoody)
[codebox] if (GC.getGoodyInfo(eGoody).isTech())
{
bTechFound = false;
for (iI = 0; iI < GC.getNumTechInfos(); iI++)
{
if (GC.getTechInfo((TechTypes) iI).isGoodyTech())
{
if (canResearch((TechTypes)iI))
{
bTechFound = true;
break;
}
}
}[/codebox]
- т.е, подарком, может быть только та технология, которая проходит проверку на canResearch
2. Смотрим CvPlayer::canResearch
Скрытый текст[codebox]bool CvPlayer::canResearch(TechTypes eTech, bool bTrade) const
{
bool bFoundPossible;
bool bFoundValid;
int iI;
if(GC.getUSE_CAN_RESEARCH_CALLBACK())
{
CyArgsList argsList;
argsList.add(getID());
argsList.add(eTech);
argsList.add(bTrade);
long lResult=0;
gDLL->getPythonIFace()->callFunction(PYGameModule, "canResearch", argsList.makeFunctionArgs(), &lResult);
if (lResult == 1)
{
return true;
}
}
if (!isResearch() && getAdvancedStartPoints() < 0)
{
return false;
}
if (GET_TEAM(getTeam()).isHasTech(eTech))
{
return false;
}
bFoundPossible = false;
bFoundValid = false;
for (iI = 0; iI < GC.getNUM_OR_TECH_PREREQS(); iI++)
{
TechTypes ePrereq = (TechTypes)GC.getTechInfo(eTech).getPrereqOrTechs(iI);
if (ePrereq != NO_TECH)
{
bFoundPossible = true;
if (GET_TEAM(getTeam()).isHasTech(ePrereq))
{
if (!bTrade || GC.getGameINLINE().isOption(GAMEOPTION_NO_TECH_BROKERING) || !GET_TEAM(getTeam()).isNoTradeTech(ePrereq))
{
bFoundValid = true;
break;
}
}
}
}
if (bFoundPossible && !bFoundValid)
{
return false;
}
for (iI = 0; iI < GC.getNUM_AND_TECH_PREREQS(); iI++)
{
TechTypes ePrereq = (TechTypes)GC.getTechInfo(eTech).getPrereqAndTechs(iI);
if (ePrereq != NO_TECH)
{
if (!GET_TEAM(getTeam()).isHasTech(ePrereq))
{
return false;
}
if (bTrade && !GC.getGameINLINE().isOption(GAMEOPTION_NO_TECH_BROKERING) && GET_TEAM(getTeam()).isNoTradeTech(ePrereq))
{
return false;
}
}
}
if (!canEverResearch(eTech))
{
return false;
}
return true;
}[/codebox]
Необходимое условие - isResearch, т.е вообще наличие каких то исследований. (В Warlords аналогично, только без привязки к Advanced Start)
3. Смотрим CvPlayer::isResearch
Скрытый текст[codebox]bool CvPlayer::isResearch() const
{
if(GC.getUSE_IS_PLAYER_RESEARCH_CALLBACK())
{
CyArgsList argsList;
long lResult;
argsList.add(getID());
lResult = 1;
gDLL->getPythonIFace()->callFunction(PYGameModule, "isPlayerResearch", argsList.makeFunctionArgs(), &lResult);
if (lResult == 0)
{
return false;
}
}
if (!isFoundedFirstCity())
{
return false;
}
return true;
}[/codebox]
Проверка на isFoundedFirstCity. Если первый город не основан, научных исследований нет. Вывод: нет города - не будет технологии из избушки.
Логично? На слово не верим - проверяем 
<div class='quotetop'>Цитата</div>
я думаю из 10 попыток хоть раз да выпадет золото или юнит, а наиболее вероятный пшик когда тебе выпала карта, а ты уже вокруг все открыл(я так часто делаю, когда к избушке идти далеко или уверен что соперники к ней не припрутся продолжаю изучать терирорию).[/b]
Карта из избушки может получиться и при полностью изученной территории (проверено эмпирически). К тому же в твоем сейве получается "пшик", когда вокруг деревни много "темноты".
По воинам
[code]