Please enable Javascript to view the contents

【哆啦A夢牧場物語】動物的好感度與情感度

 ·  ☕ 4 分钟  ·  👩🏿‍🚀 伊琉沙 AKA 哇咔咔

動物的好感度與情感度

  • 野生動物的好感度可以參考在之前這篇《NPC與動物與大雄的好感度》
    • 好感度分為10級,以不同顏色的♥表示。
  • 大雄牧場動物們的情感度計算與作物一樣均為線性成長。
    • 情感度分為20級,以半顆與整顆♥表示。

😊情感值

情感值(mAffectionDegree)是情感度的數值化化,上限值為1000。

1
2
3
4
5
6
7
public int AffectionDegreeRate
{
    get
    {
        return (this.mAffectionDegree != 1000) ? (this.mAffectionDegree / Animal.AFFECTION_DEGREE_CONVERSION_RATE + 1) : 20;
    }
}

情感值對情感度的轉換公式如下:
$$若情感值為1000,則情感度為20。$$
$$若非,情感度=\dfrac{情感值}{情感轉換率}+1$$

情感度量化表

情感值下限 情感度 情感♥
0 1 ♥0.5
50 2 ♥1
100 3 ♥1.5
150 4 ♥2
200 5 ♥2.5
250 6 ♥3
300 7 ♥3.5
350 8 ♥4
400 9 ♥4.5
450 10 ♥5
500 11 ♥5.5
550 12 ♥6
600 13 ♥6.5
650 14 ♥7
700 15 ♥7.5
750 16 ♥8
800 17 ♥8.5
850 18 ♥9
900 19 ♥9.5
950 20 ♥10

😱壓力值

壓力值可視為動物的健康狀態,在遊戲中是隱藏數值,可透過安裝相關MOD查看。

  • 壓力值最低為0。
  • 壓力值達到60以上時將會生病(動物旁邊會出現藍色閃電的圖示),此時放牧與生病的結算時間會重新計時。
  • 當動物處於生病狀態時,壓力值會持續上升,不盡早處理病情將會惡化
  • 壓力值達到500以上時,動物會死亡

恢復健康

恢復健康的方法就是降低壓力值:

  • 當動物處於生病狀態且壓力值降至低於50時,動物將恢復為健康狀態。
  • 當動物處於生病狀態時,可透過醫院購買動物用藥餵動物吃藥

影響動物情感與壓力的因素

與動物說話

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
public ResponseModel Talk()
{
    if (!this.mIsTalked)
    {
        this.AddAffection((this.mAnimalId != 102) ? 2 : 4);
        this.AddStress(Animal.GetTalkAddStressValue(this.mAnimalId));
    }
    string talkMessage = this.TalkMessage;
    return new ResponseModel(talkMessage, 100);
}

餵食動物用點心

1
2
3
4
5
6
7
8
public void Snack()
{
    if (!this.mHasSnack)
    {
        this.AddAffection((this.mAnimalId != 102) ? 1 : 4);
        this.AddStress(-4);
    }
}
  • 😊情感值:+1 / +4(咪咪)
  • 😱壓力值:-4

幫動物刷毛

1
2
3
4
5
6
7
8
public void Brush()
{
    if (!this.mIsBrushed)
    {
        this.AddAffection(2);
        this.AddStress(-4);
    }
}
  • 😊情感值:+2
  • 😱壓力值:-4

餵動物吃藥

只有在動物生病的時候才能餵藥

1
2
3
4
5
6
7
8
9
public void UseMedicine()
{
    if (this.mIsSick && !this.mIsUseMedicine)
    {
        this.mIsUseMedicine = true;
        this.AddAffection(1);
        this.AddStress(-50);
    }
}
  • 😊情感值:+1
  • 😱壓力值:-50

收穫

  • 可收穫牛奶
  • 可收穫羊毛
  • 可收穫雞蛋
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
public ItemModel Harvest(TimeModel now_time)
{
    if (this.CanHarvest)
    {
        this.mIsHarvested = true;
        this.AddAffection(2);
        this.AddStress(-4);
        this.mHarvestedTime = new TimeModel(now_time.Year, now_time.Season, now_time.Day, now_time.DayOfWeek, now_time.Hour, now_time.Minute);
        return this.mHarvestItem;
    }
    return null;
}
  • 😊情感值:+2
  • 😱壓力值:-4

每日結束計算

每日結束時會進行感情與壓力結算,但若動物離家出走則跳過今日結算,同時計算時間不會重置會持續累計至下一日結束。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
 if (this.mNotTalkCountStartTime.GetDiffDateMinutes(now_time) >= Animal.NOT_TALK_PENALTY_MINUTES && !this.mIsPregnant)
{
    this.AddAffection((this.mAnimalId != 102) ? -1 : -1);
    this.AddStress(4);
}
if (!this.mIsGrazing && (this.mHasFeedTime == null || this.mHasFeedTime.GetDiffDateMinutes(now_time) >= Time.CALC_DAY_MINUTES))
{
    this.AddAffection(-5);
    this.AddStress(50);
}
else
{
    this.AddAffection(2);
    this.AddStress(-4);
    this.mHasFeedTime = null;
}
  • 若超過3天沒跟動物說話
    • 😊情感值:-1
    • 😱壓力值:+4
  • 若動物在小屋一天沒飼料:
    • 😊情感值:-5
    • 😱壓力值:+50
  • 除此之外(在小屋吃飼料或放牧)
    • 😊情感值:+2
    • 😱壓力值:-4

放牧計算

放牧的感情壓力計算與動物類型有關,分為兩大類型:

  • 家畜
  • 寵物
    • 貓(咪咪)

放牧計算條件

放牧的計算是以10分鐘為單位,而放牧的結算則是以每1小時一次,所以每次放牧的結算時間不一定為整點,並分為三個時段:

  • 日間
    • 6點至19點
  • 夜間
    • 19點至24點
  • 半夜
    • 0點至6點

需注意的是結算的效果會以本次放牧的開始時間作為依據而非結算時間,每次結算的時間將為下一次放牧的開始時間:
例如6點40分進行結算,其情感值與壓力值的增減會以5點40分作為計算基準點,故本次結算會依半夜的效果計算。

結算效果

  • 家畜(
    • 6點至19點
      • 😊情感值:+1 / -1(下雨)
      • 😱壓力值:-1 / 0(下雨)
    • 19點至24點
      • 😊情感值:0 / -1(下雨)
      • 😱壓力值:0 / 0(下雨)
    • 0點至6點
      • 😊情感值:-2 / -3(下雨)
      • 😱壓力值:2 / 3(下雨)
  • 寵物(
    • 6點至19點
      • 😊情感值:+1 / 0(下雨)
      • 😱壓力值:-1 / 1(下雨)
    • 19點至24點
      • 😊情感值:0 / 0(下雨)
      • 😱壓力值:0 / 1(下雨)
    • 0點至6點
      • 😊情感值:0 / 0(下雨)
      • 😱壓力值:1 / 1(下雨)

放牧遭遇天災

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
public void GrazingWhenDisaster()
{
    if (!this.mIsGrazing)
    {
        return;
    }
    this.mGrazingCount = 0;
    this.AddAffection(-20);
    this.AddStress(20);
}
  • 😊情感值:-20
  • 😱壓力值:+20

放牧的計算過程是以10分鐘為單位,若遭遇天災則會立即產生上列效果。
此時放牧的計時會重新刷新,但放牧的開始時間不會刷新。
亦即原定6點40分進行結算,如果在6點20分遭遇天災,則放牧的計時重新刷新,結算時間將推遲至7點20分,但此次結算的放牧開始時間仍為5點40分。

生病

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
public void StepSickCount()
{
    if (!this.mIsSick)
    {
        return;
    }
    this.mSickCount++;
    if (this.mSickCount == 6)
    {
        this.mSickCount = 0;
        this.AddAffection(0);
        this.AddStress(1);
    }
}

1小時觸發一次,觸發以10分鐘為單位不一定為整點觸發:

  • 😊情感值:0
  • 😱壓力值:+1
分享

伊琉沙 AKA 哇咔咔
作者
伊琉沙 AKA 哇咔咔
遊戲開發者 / 密室機關師