朝までFreeciv!

【スポンサー広告】 スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

【検証考察】 外交官・スパイの成功率

これを調べてみた。

910 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2012/12/21(金) 21:51:36.22 ID:FtMXG//2
外交官がいる都市に外交官で工作するとき相手の外交官を消せる確率って何パーセント?
スパイになると変わったりするの?


ちょっと難しくて長くなってしまった。


server\diplomats.c の diplomat_infiltrate_tile()[計算式1] が diplomat_success_vs_defender()[計算式2] を呼び出している。
主に[計算式1]は外交官が守っている都市に対して外交官が外交活動を行うときに、外交官対外交官対決の成功率を求めるために呼び出される。

計算式1では、複数の外交官・スパイユニットがターゲットに存在する場合はその回数だけ計算式2を呼び出している。
つまり、防衛側都市に3人の外交官が存在していれば3回だけ[計算式2]の判定が行われ、すべてのユニットに対して成功判定が成立しなければ[計算式1]で最終的な成功とはならない。

[計算式1] - diplomat_infiltrate_tile()

防衛側外交官ユニットの人数だけ[計算式2]を呼び出す
同一タイルにユニットがスタックしていたら失敗
ゲーム設定で定められた特定の政治体制の場合は失敗



[計算式2] - diplomat_success_vs_defender()

基本成功率: chance = 50

攻撃者にSuperSpyユニットフラグがついているなら必ず成功
防衛者にSuperSpyユニットフラグがついているなら必ず失敗
(SuperSpyフラグ保持ユニット:指導者、バーバリアンのリーダー)

攻撃者にSpyフラグがついているなら成功率 +25%
防衛者にSpyフラグがついているなら成功率 -25%
(Spyフラグ保持ユニット:スパイ) ←外交官は持たない

攻撃者のベテランレベルに応じて成功率 +20%
防衛者のベテランレベルに応じて成功率 -20%

タイルの値、Spy_Resistantの分だけ成功率を減少
(首都にSpy_Resistant=50が存在するので首都は成功率が半減
chance = chance - chance*50%)

タイルフラグ、DiplomatDefenseが存在すれば成功率-25%
(要塞がこのフラグを持っているので要塞では成功率が1/4減少
chance = chance - chance*25%)

以上の計算を経て chance から成功を判定




ついでに、都市の買収価格が何によって上下するのか気になっていたので、これの計算式についても調べてみた。
server\cityturn.c の city_incite_cost()

[計算式3] - city_incite_cost()
  • ターゲット国の所持金 + ゲーム初期設定(base_incite_cost) を基本コストとする

  • 都市内に居るユニットが多いほど高くなる (それぞれのユニットの作成コストを加算反映)
  • 都市に建てられている建造物が多いほど高くなる (それぞれの建造物の建造コストを加算反映、不思議も含む)

  • 都市が不満なしの状態なら買収コストが2倍
  • 都市が祝典状態なら買収コストが2倍
  • 都市内の滞在ユニット数が0人ならば買収コストが1/2
  • 「市民の国籍」オプションが有効になっていて、その都市が元々…
    • 元々自分の都市だった場合は買収コストが1/2 (-50%)
    • 元々自分の都市でもなく、現所有者とも違う場合は買収コストが2/3 (-33%)
  • 「市民の国籍」オプションが有効になっている場合 (Freeciv-2.5以降)
    • A = その都市にいる元自分の国の国籍の市民の数
    • B = 元自分の国の国籍の市民でもなく、現所有国家国籍の市民でもない、第三国の市民の数
    • C = 現所有国家の国籍の市民の数
    • cost = (cost / 都市サイズ) * (A + 0.7*B + 0.5*C)

  • 買収費用はターゲット国の首都からの距離に応じて減少する (cost = cost/(map_distance+3))
    • map_distanceは最高で32まで、宮殿なしの場合は強制的にmap_distance=32
  • 買収費用は都市サイズに比例する (cost = cost*size)
    • ただし、size = 都市サイズ + 幸福な市民数 - 不幸な市民数 - 3*怒った市民数
  • 買収費用に対して都市ボーナスの"Incite_Cost_Pct"を1/100倍を加算する (effect.ruleset -裁判所が300)
    • よって裁判所が建てられていると cost = cost + cost*300/100
  • 他、ゲーム設定の買収費用(base_incite_cost、incite_improvement_factor、incite_total_factorなど)に影響される
  • 最後に cost = cost/100 する


ほか、買収不可能な場合の買収費用 INCITE_IMPOSSIBLE_COST は (1000*1000*1000) と設定されている。
  買収不可能な場合(No_Incite): 政治体制が民主主義の場合、宮殿がある場合
買収金額の上限は INCITE_IMPOSSIBLE_COST である。



共通事項
  • 外交活動を行うにはターゲットへの移動ポイントが残っていなければならない


都市の反乱を煽る
  • "No_Incite"フラグがついている都市の場合は不可能 (effects.ruleset -民主主義、宮殿)
  • 所持金が買収コストに満たない場合は不可能
  • [計算式1]で成功を判定、扇動者は逮捕される可能性がある
  • (ゲーム設定の)外交官の基本成功率の判定を行う、扇動者は逮捕される可能性がある
  • 都市の買収に成功した場合には
    • ターゲット都市を入手する
    • 都市サイズが1だけ減少する
    • その都市内に居るユニットが手に入る
    • 未知の技術をひとつ入手する
  • 扇動者は生還するか逮捕される


都市に毒を流す
  • スパイのみ水を汚染可能
  • 戦争中のプレイヤーに対してのみ汚染可能
  • [計算式1]で成功を判定、犯人は逮捕される可能性がある
  • サイズ1より大きい都市に対してのみ可能
  • 成功すると都市サイズが1だけ縮小する
    • ヘルプに書いてある穀物庫が0になる効果は未設定のようだ
  • 水質汚染後、逮捕もしくは都市に生還する


都市の調査
  • 都市の調査はすべてのプレイヤーに対して必ず成功する
  • 調査を終えた外交官は常に死亡し、スパイは常に生還する


大使館を設立
  • バーバリアンに対しては常に失敗、処刑される
  • 大使館を設立するユニットが外交官の場合は消費される、スパイの場合は常に生還する


敵ユニットの破壊
  • スパイが、敵ユニットに対してのみ可能
  • 戦争中のプレイヤーに対してのみ可能
  • 残り体力が1しか残っていないユニットは破壊できない
  • 対象ユニットが同一タイルにスタックしていると破壊できない
  • [計算式1]で成功を判定
  • 成功した場合は、その時ターゲットが持っている体力を半分に減らす
  • 破壊行為後、捕まって処刑されるかもしくは都市に生還する


敵ユニットに賄賂を贈る
  • 外交官もしくはスパイが他ユニットに対して可能な行為
  • ルールセット設定により買収不可能な政治体制が存在 (例:民主主義)
  • "Unbribable"フラグがあるユニットは買収不可能 (units.ruleset -指導者、バーバリアンの指導者)
  • [計算式4] - 所持金不足の場合は買収不可能
  • 対象ユニットが同一タイルにスタックしていると買収できない
  • 買収成立した場合は対象ユニットの所有者となる
  • 買収成立したときには対象ユニットと同じタイルに移動する
  • 条件をすべて満たしていれば必ず買収は成功する

ユニットの買収費用
[計算式4] - common/unit.c: unit_bribe_cost()

買収対象ユニットの所有国の所持金 + ゲームの初期設定(base_bribe_cost) を基本コストとする

対象ユニットの首都からの距離に応じて減少 (cost = cost/(dist+2))
ユニットの作成コストの1/10倍だけ乗算する
対象ユニットに"Cities"フラグがついている場合は費用が1/2 (units.ruleset参照-開拓者)
対象ユニットのベテランレベルに応じて
-- (2.3まで) 対象ユニットのベテランレベルに応じて費用が1,2,3倍化
-- (2.4から) 対象ユニットのベテランボーナスに応じて費用が変化 (power_factパーセントを乗算)
対象ユニットにベテラン化の移動ボーナスが付いている場合は残り移動ポイントの割合の分だけcostが増加 (cost = cost + cost*[割合])
-- ※デフォルトルールセットではベテラン化移動ボーナスがついているユニットが無いので無効です
対象ユニットの残りHP(割合%)に応じて費用が減少



技術を盗む
  • 未知の技術が無い場合は失敗
  • 外交官はランダムな技術を盗む
  • スパイはプレイヤーが選択した技術を盗むことができる
    • 盗む技術を指定した場合は成功難易度が上昇
  • [計算式1]の判定を行う、盗人は逮捕の可能性がある
  • (ゲーム設定の)外交官の基本成功率の判定を行う、盗人は逮捕の可能性がある
  • 過去に技術を盗んだことがある都市の場合は
    • 外交官ならば必ず失敗して捕らえらる
    • スパイの場合は成功(生還)もしくは逮捕される
    • その都市での次回の成功率が累積低下する (1回目は成功率8割、2回目は成功率8割x8割、3回目は8割x8割x8割、・・・) ※外交成功率が8割の場合
  • 技術を盗んだ後のユニットは、逮捕もしくは生還する


敵都市の建造物を破壊
  • 戦争中である必要がある
  • [計算式1]の判定を行う、破壊者は逮捕される可能性がある
    • スパイにだけ建造物がリストアップされ、任意の建造物を選択可能
    • スパイは常にリストアップが成功、常に生還する
  • (ゲーム設定の)外交官の基本成功率の判定を行う、破壊者は逮捕の可能性がある
    • 破壊対象を指定した場合はここの成功率が半減
  • 破壊対象の選択
    • 現在建造中の建物を破壊する時でシールド累積が0の場合は破壊行為が失敗
  • 都市建造物の破壊工作
    • 現在建造中の建物を破壊した場合はシールド累積を0にする
  • 城壁と、首都内の建造物は成功率が半減する
  • 破壊者は逮捕もしくは生還する


外交官/スパイの生還/逃亡成功率
  • 外交官の場合は常に逃亡失敗、死亡
  • 逃亡成功率 = (ゲーム設定)外交官の基本成功率 + スパイのベテランレベル*5


外交官の行為が事変に発展
  • 「事変に発展」はユニットの賄賂買収、技術を盗む、反乱を煽る、が対象
  • それ以外の行為は影響が無い行為か、戦争状態でなければ任務遂行可能にならない行為
  • 事変状態は当時ターンと次のターンまで続く (未確認)
  • 「事変に発展」するような行為は、成功しなくても条約破棄が可能
  • 事変状態では共和制/民主主義でも即時に条約が破棄可能となる

  1. 2012/12/22(土) 19:29:06|
  2. 検証考察
  3. | トラックバック:0
  4. | コメント:1
<<プレイ練習、そして映像配信 | ホーム | スムーズな開拓者生産 ~方法~>>

コメント

いつもご苦労様です

大変参考になりました。これを実戦に役立てていきます。
  1. 2012/12/28(金) 05:10:34 |
  2. URL |
  3. #-
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://freeciv.blog.fc2.com/tb.php/41-2fd0cc01
この記事にトラックバックする(FC2ブログユーザー)
【 このブログの目次 】

プロフィール

指導者

Author:指導者
これはあなたです。このユニットを失うと、ゲームは負けになります。大切にしてね。

つぶやき

最新記事

最新コメント

カテゴリ

月別アーカイブ

最新トラックバック

FC2カウンター

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

QRコード

QR

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。