|
楼主 |
发表于 2012-11-8 12:25:49
|
显示全部楼层
偷到了科技,很高兴……别急。还有事情。
文明百科告诉你,偷科技不是没有风险的。
在目标城市里放置了反间谍的时候,有三种可能情况:被发现但没有被鉴定出来自文明,被发现并被认出所在文明,被发现并被杀死
而没有放置反间谍的时候,也有三种可能情况,前两种和上面一样,第三种改为不被发现
这楼着重讨论这些情况的概率。
这里必须重新提及一个政策:独裁-警察国家。法庭+3本地快乐,敌方间谍窃取速度-25%,反间谍抓获敌方间谍概率+25%。实际上,似乎不是这么简单……。
我们先来看简单点的情况,目标城市里没有反间谍的时候。- iSpyResult = GC.getGame().getJonRandNum(300, "Random roll for the result of a spying mission without a counterspy in the city");
- iSpyResult *= (100 + GET_PLAYER(pCity->getOwner()).GetPlayerPolicies()->GetNumericModifier(POLICYMOD_CATCH_SPIES_MODIFIER));
- iSpyResult /= 100;
- if(iSpyResult < 100)
- {
- pCityEspionage->SetSpyResult(ePlayer, SPY_RESULT_UNDETECTED);
- }
- else if(iSpyResult < 200)
- {
- pCityEspionage->SetSpyResult(ePlayer, SPY_RESULT_DETECTED);
- }
- else
- {
- pCityEspionage->SetSpyResult(ePlayer, SPY_RESULT_IDENTIFIED);
- }
复制代码 第一行得到了一个0到299(包括)之间的随机数。因为这个是完全随机的,在接下来计算概率的时候,我会采用枚举所有可能的300个数并统计的方法,因此(a,b,c)表示统计结束后,有a个数是第一个结果,后面两个结果分别有b和c个数,并且a+b+c=300。
第二行和第三行将随机数乘上了一个政策修正值,实际上只有警察国家这个政策会改动这个修正值。
之后的IF语句指明当最后的随机数<100时,结果是不被发现,100-199时是被发现不被识别,大于等于200时是被识别。
先看没有警察国家的情况,很容易得到不被发现/被发现不被识别/被识别的随机数分别有(100,100,100)个,也就是33%/33%/33%,都是三分之一。
目标文明获得警察国家政策之后,通过程序计算可以得出,三种情况的随机数有(80,80,140)个,也就是26.7%/26.7%/46.7%。- iSpyResult = GC.getGame().getJonRandNum(300, "Random roll for the result of a spy mission with a counterspy in the city");
- int iCounterspyIndex = GET_PLAYER(eCityOwner).GetEspionage()->GetSpyIndexInCity(pCity);
- iSpyResult += GET_PLAYER(eCityOwner).GetEspionage()->m_aSpyList[iCounterspyIndex].m_eRank * 30;
- iSpyResult *= (100 + GET_PLAYER(pCity->getOwner()).GetPlayerPolicies()->GetNumericModifier(POLICYMOD_CATCH_SPIES_MODIFIER));
- iSpyResult /= 100;
- if(iSpyResult < 100)
- {
- pCityEspionage->SetSpyResult(ePlayer, SPY_RESULT_DETECTED);
- }
- else if(iSpyResult < 200)
- {
- pCityEspionage->SetSpyResult(ePlayer, SPY_RESULT_IDENTIFIED);
- }
- else
- {
- pCityEspionage->SetSpyResult(ePlayer, SPY_RESULT_KILLED);
复制代码 而目标城市拥有反间谍的情况会麻烦一点,因为要考虑反间谍的等级。
和上面类似,第一行得到了一个0到299的随机数。第二到三行则把这个随机数加上了间谍等级*30(注意我们之前提到过,1级间谍的等级实际上是写为0的,2级为1,3级为2)
也就是说,1级反间谍的随机数不变,2级+30,3级+60
之后照例是警察国家的加成。
1级反间谍的概率和上面那个是一样的。没有警察国家时的随机数个数是(100,100,100),有警察国家时是(80,80,140)。注意这时候的情况已经是被发现不被识别/被识别/被杀死了。
2级反间谍需要在基础随机数上+30,计算后的概率是没有警察国家时是(70,100,130)也就是23.3%/33.3%/43.3%,有警察国家时是(50/80/170)也就是16.7%/26.7%/56.7%。
3级反间谍需要在基础随机数上+60,计算后的概率是没有警察国家时是(40,100,160)也就是13.3%/33.3%/53.3%,有警察国家时是(20/80/200)也就是6.7%/26.7%/66.7%。
这样也可以看出,警察国家的加成并不是单纯的发现概率+25%,它只是在表示结果的随机数上乘上了一个1.25,用程序很好描述,用自然语言反倒麻烦。
[ 本帖最后由 object022 于 2012-11-8 12:34 编辑 ] |
|