Tíquete #6137

死因メッセージその2
: 2005-06-08 01:01 Última Atualização: 2005-07-31 05:29

Relator:
Dono:
Tipo:
Estado:
Fechado
Componente:
(Nenhum)
Marcos:
(Nenhum)
Prioridade:
5 - Medium
Gravidade:
5 - Medium
Resolução:
Fixed
Arquivo:
1

Details

死因メッセージ関連で新たに見つけた障害を列挙させていた
だきます。

二刀流で左手にコカトリスの死体を装備して穴に落ちると、
右手に持っているアイテムを
死因に用いようとしているコーディングがあります。
(しかし、実際は死体では二刀流できないのでこの実装は動
作しません)
trap.cの2899行目あたり。
#else
pline("%s%sの死体に触った.", arg,
jtrns_mon(mons[uswapwep->corpsenm].mname));
- Sprintf(kbuf, "%sの死体で",
jtrns_mon(mons[uwep->corpsenm].mname));
+ Sprintf(kbuf, "%sの死体で",
jtrns_mon(mons[uswapwep->corpsenm].mname));
#endif
instapetrify(kbuf);
}


----
ジョウビレックスに病気にされて死ぬと、死因が
「ジョウビレックスによっての毒で死んだ」
になります。
mhitu.cの1037行目あたり。うーん、いい修正方法が浮かばない。

make_sick関数による病死はu.usick_causeの遅延毒死で実行
される。
u.usick_causeには「呪われたユニコーンの角」(apply.c:2051)、
「腐った(死体)を食べ食中毒」(eat.c:1607)、
そして今回の「(病気攻撃をするモンスター)によって」
(mhitu.c:1038)が入りうる。
その後、時間経過でtimeout.c:332にてu.usick_causeの内容
がkillerにコピーされ
done(POISONING)が呼ばれる。

timeout.cではtheをつけるかどうかを判定するためにモンス
ター名かどうかが
判定されているので、モンスターであった場合は死因を
POISONINGから変更して
「~による病気で死んだ」等に変えることもできなくはない
けれど・・・
和英変換を付けないと使えないのでちょっと大げさかな。

簡単に直すとなるとこんな感じでしょうか。
static char jbuf[BUFSZ];

Strcpy(jbuf, jtrns_mon(mdat->mname));
- Strcat(jbuf, "によって");
+ Strcat(jbuf, "の発病");
make_sick(Sick ? Sick/3L + 1L :
(long)rn1(ACURR(A_CON), 20),
jbuf, TRUE, SICK_NONVOMITABLE);
#endif


----
コカトリスの卵を投げつけられて石化したときの死因が「石
化攻撃で」になります。
timeout.c:301のkiller_formatがNO_KILLER_PREFIXになって
います。

Ticket History (3/3 Histories)

2005-06-08 02:05 Updated by: argrath
  • Resolução Update from Nenhum to Fixed
Comentário
Logged In: YES
user_id=1120

確認しました。
2005-06-10 15:56 Updated by: argrath
  • File 1321: bug6137.diff is attached
Comentário
Logged In: YES
user_id=1120

とりあえずジョウビレックス関係以外を修正しました。
ジョウビレックス関係は別に登録することにします。
2005-07-31 05:29 Updated by: argrath
  • Ticket Close date is changed to 2005-07-31 05:29
  • Estado Update from Aberto to Fechado
Comentário
Logged In: YES
user_id=1120

修正版(3.4.3-0.7)がリリースされたので閉じます。

Attachment File List

Editar

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login