Jump to content

Elin:解析/ハウジング: Difference between revisions

m
(Elin:Code Analysis/Housingの日本語ページを作成)
 
Line 30: Line 30:
|宣伝
|宣伝
|}FactionBranch.csの374行目にあった記述です。
|}FactionBranch.csの374行目にあった記述です。
<syntaxhighlight lang="「c#" line="「1」" start="「0」">
<syntaxhighlight lang="c#" line="1" start="0">


if (EClass.rnd(5) == 0 && this.policies. IsActive(2810, -1))
if (EClass.rnd(5) == 0 && this.policies.IsActive(2810, -1))
{
        {
int num8 = 3 + this.lv + this.Evalue(2206) / 5 + this.Evalue(3702) * 2 + this.Evalue(2202) / 2;
            int num8 = 3 + this.lv + this.Evalue(2206) / 5 + this.Evalue(3702) * 2 + this.Evalue(2202) / 2;
num8 = num8 * (100 + this. Evalue(3702) * 20 + this.Evalue(2206)) / 100;
            num8 = num8 * (100 + this.Evalue(3702) * 20 + this.Evalue(2206)) / 100;
num8 = num8 * (100 + (int)Mathf.Sqrt((float)this.Evalue(2811)) * 3) / 100;
            num8 = num8 * (100 + (int)Mathf.Sqrt((float)this.Evalue(2811)) * 3) / 100;
if (EClass._map.CountGuest() < num8)
            if (EClass._map.CountGuest() < num8)
{
            {
Chara chara;
                Chara chara;
if (this.policies.IsActive(2822, -1) && Mathf.Sqrt((float)(this.Evalue(2822) / 2)). + 5f >= (float)EClass.rnd(100))
                if (this.policies.IsActive(2822, -1) && Mathf.Sqrt((float)(this.Evalue(2822) / 2)) + 5f >= (float)EClass.rnd(100))
{
                {
chara = CharaGen.CreateWealthy(this.ContentLV);
                    chara = CharaGen.CreateWealthy(this.ContentLV);
EClass._zone.AddCard(chara, EClass._zone.GetSpawnPos(SpawnPosition.Random, 100) ?? EClass._map.GetRandomSurface(false, true, false));
                    EClass._zone.AddCard(chara, EClass._zone.GetSpawnPos(SpawnPosition.Random, 100) ?? EClass._map.GetRandomSurface(false, true, false));
}
                }
else
                else
{
                {
chara = EClass._zone.SpawnMob(null, SpawnSetting.HomeGuest(this.ContentLV));
                    chara = EClass._zone.SpawnMob(null, SpawnSetting.HomeGuest(this.ContentLV));
}
                }
if (chara = null && (chara.id == 「nun_mother」 || chara.id == 「prostitute」) && this.policies.IsActive(2710, -1))
                if (chara != null && (chara.id == "nun_mother" || chara.id == "prostitute") && this.policies.IsActive(2710, -1))
{
                {
chara.Destroy();
                    chara.Destroy();
chara = null;
                    chara = null;
}
                }
if (chara != null)
                if (chara != null)
{
                {
this. statistics.visitor++;
                    this.statistics.visitor++;
chara.memberType = FactionMemberType.Guest;
                    chara.memberType = FactionMemberType.Guest;
chara.SetInt(34, EClass.world.date.GetRaw(0));
                    chara.SetInt(34, EClass.world.date.GetRaw(0));
chara.c_allowance = chara.LV * 100;
                    chara.c_allowance = chara.LV * 100;
if (chara. IsWealthy)
                    if (chara.IsWealthy)
{
                    {
chara.c_allowance *= 10;
                        chara.c_allowance *= 10;
}
                    }
if (date.IsRealTime)
                    if (date.IsRealTime)
{
                    {
Msg.Say(「guestArrive」, chara.Name, null, null, null);
                        Msg.Say("guestArrive", chara.Name, null, null, null);
}
                    }
else
                    else
{
                    {
chara.TryAssignBed();
                        chara.TryAssignBed();
}.
                    }
}
                }
}
            }
}
        }
</syntaxhighlight>※まだ不明点がいくつかあり、更なるテストが必要です
</syntaxhighlight>
 
※まだ不明点がいくつかあり、更なるテストが必要です
*上記を要約すると、「開店」のポリシーが有効な場合、1時間あたり80%の確率で以下の処理がなされます。
*上記を要約すると、「開店」のポリシーが有効な場合、1時間あたり80%の確率で以下の処理がなされます。
**多くのゲストがやってきます。人数は'''[3 + 土地Lv + 土地の魅力 / 5 + 宣伝 / 2 + 20'''<ref>古代遺跡の土地フィートがある場合</ref>''']* ((100 + 土地の魅力 + 200'''<ref>これが200なのか20なのかは今のところ不明です</ref>''') / 100) * (100 + sqrt(観光客保護条例レべル * 3) / 100)'''
**多くのゲストがやってきます。人数は'''[3 + 土地Lv + 土地の魅力 / 5 + 宣伝 / 2 + 20'''<ref>古代遺跡の土地フィートがある場合</ref>''']* ((100 + 土地の魅力 + 200'''<ref>これが200なのか20なのかは今のところ不明です</ref>''') / 100) * (100 + sqrt(観光客保護条例レべル * 3) / 100)'''
**もしセレブ天国ポリシーが有効で、sqrt(セレブ天国レベル/ 2) + 5が1-100の乱数以上であれば、以下の処理がされます。
**もしセレブ天国ポリシーが有効で、sqrt(セレブ天国レベル/ 2) + 5が1-100の乱数以上であれば、以下の処理がされます。
***土地の危険度に基づいて富裕層のゲストが来訪します。危険度が高ければ高いほど、観光客のレベルも高くなり、つまり彼らが持ってくるお金も多くなります。したがって、利益を最大化するために「悪魔呼び」ポリシーをオンにすることは、実際に有益です。
***土地のコンテンツレベルに基づいて富裕層のゲストが来訪します。コンテンツレベルが高ければ高いほど、観光客のレベルも高くなり、つまり彼らが持ってくるお金も多くなります。したがって、利益を最大化するために「悪魔呼び」ポリシーをオンにすることは、実際に有益です。
***'''(未検証)'''「夜型生活条令」をオンにすると、ゲスト、ひいてはゲストからの利益が毎時生成されると思われるため、有益かもしれません。
***'''(未検証)'''「夜型生活条令」をオンにすると、ゲスト、ひいてはゲストからの利益が毎時生成されると思われるため、有益かもしれません。


*マザー禁止区のポリシーが有効でない場合、マザーはスポーンできます。
*マザー禁止区のポリシーが有効でない場合、マザーはスポーンできます。
**各ゲストはキャラレベル*100の小遣いを持っています。富裕層の場合、小遣いはキャラレベル* 1000となります。
** 各ゲストはキャラレベル*100の小遣いを持っています。富裕層の場合、小遣いはキャラレベル* 1000となります。
<references />
<references />


==税収==
==税収==
Line 94: Line 97:
|-
|-
|(2500)
|(2500)
|富裕税
| 富裕税
|-
|-
|(2501)
|(2501)
Line 100: Line 103:
|-
|-
|(2512)
|(2512)
|住民税
| 住民税
|}
|}
FactionBranch.cs の 819 行目で見つかりました。
FactionBranch.cs の 819 行目で見つかりました。
Line 151: Line 154:
</syntaxhighlight>
</syntaxhighlight>


* 富裕税、信仰税、住民税は、事前に30日間有効になっていなければなりません。
*富裕税、信仰税、住民税は、事前に30日間有効になっていなければなりません。
** 各住民の'''基本税率'''は(50 + 住民税Lvの平方根 * 5)で計算されます。
**各住民の'''基本税率'''は(50 + 住民税Lvの平方根 * 5)で計算されます。
** 住民の趣味ごとに課税率が異なり、これを'''「趣味税率」'''と呼びます。
**住民の趣味ごとに課税率が異なり、これを'''「趣味税率」'''と呼びます。
*** 例えば、読書は120、宝くじは140、ガチャは160(ガチャゲーはやめましょう)、喫煙は300、散財は400、ランボーは30、監査は0です。
***例えば、読書は120、宝くじは140、ガチャは160(ガチャゲーはやめましょう)、喫煙は300、散財は400、ランボーは30、監査は0です。
** 住民全体の税金は次のように計算されます:
**住民全体の税金は次のように計算されます:
*** 裕福な場合:(50 + 住民のレベル * 2) * 基本税率 % * 趣味税率 %.
***裕福な場合:(50 + 住民のレベル * 2) * 基本税率% * 趣味税率%.
*** 裕福でない場合:(10+住民のレベル*2)*基本税率%*趣味税率 %。
***裕福でない場合:(10+住民のレベル*2)*基本税率%*趣味税率 %。
**** 例えば、Lv5の裕福な市民で、趣味が読書、住民税ポリシーレベルが9の場合、彼の税金は(50 + 2 * 5)* 120% * 65% = 46.8オレンとなります。
****例えば、Lv5の裕福な市民で、趣味が読書、住民税ポリシーレベルが9の場合、彼の税金は(50 + 2 * 5)* 120% * 65% = 46.8オレンとなります。


* 次に富裕税と信仰税のポリシーを見てみましょう。
*次に富裕税と信仰税のポリシーを見てみましょう。
** 富裕層がおり、富裕税が有効な場合:
**富裕層がおり、富裕税が有効な場合:
*** 税金は、(150 + 富裕税レベルの平方乗 * 5)%で補正されます。
***税金は、(150 + 富裕税レベルの平方乗 * 5)%で補正されます。
** 信仰税が有効な場合:
**信仰税が有効な場合:
*** 税金は、+(80 + 信仰税レベルLvの平方) * 信仰税率%で補正されます。
***税金は、+(80 + 信仰税レベルLvの平方) * 信仰税率%で補正されます。
**** '''信仰税率'''は信仰ごとに異なります。最も高いのは無のエイス 500%、幸運のエヘカトル:300%、最も低いのは忘却のヤカシャ:0%、次いで風のルルウィ:25%です。
****'''信仰税率'''は信仰ごとに異なります。最も高いのは無のエイス 500%、幸運のエヘカトル:300%、最も低いのは忘却のヤカシャ:0%、次いで風のルルウィ:25%です。
* 最後に、この税率は効率が悪かったり、非課税の土地にいなかったりするとペナルティを受けます。
*最後に、この税率は効率が悪かったり、非課税の土地にいなかったりするとペナルティを受けます。
** '''もしあなたの土地が免税地でない場合、すべての住民税に90%のペナルティが課せられます!'''
**'''もしあなたの土地が免税地でない場合、すべての住民税に90%のペナルティが課せられます!'''
** 例を見てみましょう。ガチャが趣味で、Lv50の富裕な市民がいます。税金はすべてLv100ですが、免税地ではありません。
**例を見てみましょう。ガチャが趣味で、Lv50の富裕な市民がいます。税金はすべてLv100ですが、免税地ではありません。
*** 各ポリシー適用前の税金は、(50 + 50 * 2) * 160% * (50+50)% = 240オレンです。
***各ポリシー適用前の税金は、(50 + 50 * 2) * 160% * (50+50)% = 240オレンです。
*** 次に富裕税を適応し、240 * (150 + 50)% = 480オレンに修正されます。
***次に富裕税を適応し、240 * (150 + 50)% = 480オレンに修正されます。
*** そして信仰税により、480 + (80 + 50) * 500% = <u>1230オレン</u>に修正されます。
***そして信仰税により、480 + (80 + 50) * 500% = <u>1230オレン</u>に修正されます。
** しかし、あなたの土地は非課税ではないので、最終的な税金は<u>123オレン</u>です。血の気が引いたかい?ミシリアに核を落としたいかな?
**しかし、あなたの土地は非課税ではないので、最終的な税金は<u>123オレン</u>です。血の気が引いたかい?ミシリアに核を落としたいかな?


==宿泊料==
== 宿泊料 ==
これは、ベッドをゲストに割り当てる際に発生する利益額を理解するためのセクションです。
これは、ベッドをゲストに割り当てる際に発生する利益額を理解するためのセクションです。
{| class="wikitable sortable mw-collapsible"
{| class="wikitable sortable mw-collapsible"
|+
|+
!Value#
! Value#  
!Element
!Element
|-
|-
|(750)
|(750)
|ベッドの寝心地
|ベッドの寝心地  
|-
|-
|(2812)
| (2812)  
|旅人の宿のポリシー
| 旅人の宿のポリシー  
|-
|-
|(2813)
| (2813)  
|スイートルームのポリシー
| スイートルームのポリシー
|}
|}
FactionBranch.csの865行目にあります。<syntaxhighlight lang="c#" line="1">
FactionBranch.csの865行目にあります。<syntaxhighlight lang="c#" line="1">
Line 234: Line 237:
</syntaxhighlight>Numは拠点内のゲストの数です。
</syntaxhighlight>Numは拠点内のゲストの数です。


もしゲストに割り当てられたベッドが1つなら、以下の通りになります。
もしゲストに割り当てられたベッドが1つなら、以下の通りになります。  


* Num2はベッドの最大保有者数
*Num2はベッドの最大保有者数
* Num3 = ゲストのベッドの価値 * ( 100 + ベッドの品質 / 2 + ベッドの寝心地特性 / 2 ) / 100 * ベッドの最大保有者数
*Num3 = ゲストのベッドの価値 * ( 100 + ベッドの品質 / 2 + ベッドの寝心地特性 / 2 ) / 100 * ベッドの最大保有者数
** ゲストのベッドの価値は隠しパラメータで、MODなどを使わないと確認できません。  
** ゲストのベッドの価値は隠しパラメータで、MODなどを使わないと確認できません。


* 新しいNumは宿泊者数の最小値またはベッドの最大保有者数です。
*新しいNumは宿泊者数の最小値またはベッドの最大保有者数です。


* Num3はNum3 / Num2になります。
*Num3はNum3 / Num2になります。  


* Num3 = num3 * ( 100 + ( 5 * sqrt ('''旅人の宿ポリシーレベル''' ) ) ) ) / 100
*Num3 = num3 * ( 100 + ( 5 * sqrt ('''旅人の宿ポリシーレベル''' ) ) ) ) / 100
* Num4 = 10 + 10 * sqrt ( Num )  
*Num4 = 10 + 10 * sqrt ( Num )


'''スイートルームのポリシーが有効な場合:'''
'''スイートルームのポリシーが有効な場合:'''