今回の変更・追加は全てmura.cpp内で行われています。
まずは村人の構造体を用意します。
//村人の情報
struct{
int x,y;
int muki;
int cnt;
int img;
int state;//話しているか否か(=移動するか否か)
char message_knd;
char message_line;
}murabito[7];
//村人の名前
char murabito_name[7][48]={
{"村長"},
{"アイテムショップの回し者"},
{"ドレスショップの回し者"},
{"中途半端な勇者"},
{"恐怖に駆られた村人"},
{"他力本願な村人"},
{"陽気な元キコリ"}
};
//村人のセリフ
char mura_message[30][8][100]={
{
"すまんなアイシャよ。",
"わしにもっと力があれば其方にこんな危険なことを",
"頼まなくても済むのじゃが…。",
"村の未来は其方にかかっておる。頼んだぞ。",
},
{
"以前、勇敢な若者が龍の調査をしてくると言って",
"村を出て行ったことがあった。",
"彼は「夜にかかる虹」に入ると言ったきり",
"音信不通になってしもうた。",
"いったいその先には何があるんじゃろう。",
},
{
"村を出たら北に進むと川がある。",
"川を上ると万年紅葉樹があるから空高く飛べ",
"雪原を超えると湖に出る。そこには",
"夜にかかる虹がある…。",
"彼が残した言葉じゃ。",
},
{
"え?わしらの家はどこにあるかって?",
"まぁそう細かいことは気にするな。",
"きっと製作者が書くの面倒くさがったのじゃろう。",
},
{
"アイテムショップでは様々なアイテムが購入できるわよ",
"とても有利になるものばかりなの。",
"色々見て行ってね。",
},
{
"アイテムは欲しいものばかりで色々悩んじゃうけど、",
"お金がかかるのよねぇ…",
},
{
"あなたは何のアイテムを買うのかしら?",
},
{
"ショップの項目に空欄が多い?",
"きっとバージョンアップで増えていくんじゃない?"
},
{
"ドレスショップでは「変身」できるアイテムを売っているわよ。",
"変身すると撃てるショットやショットの性質が変わるのよ。",
},
{
"あなたが変身した素敵な姿を見せてね♪"
},
{
"お金はかかるけど、頑張って資金を調達してきてね。"
},
{
"基本東○のパクリだけど、ここだけシステムが違うのね。",
},
{
"俺も村の外に出ようと思ったけど、敵がうようよいて",
"出られやしなかった。危ないから外に出ちゃだめだよ。"
},
{
"え?外に出るのかい??",
"後悔する前にやめときなって。",
},
{
"龍の吐く攻撃は…",
"とても避けられるような攻撃じゃない。",
},
{
"しかし、敵は何を撃ってきているんだ?",
},
{
"なんなんだあの龍は。",
"この村はいつになったら安全になるんだ…。",
},
{
"頼む!あの悪者の龍をやっつけてくれ!"
"アイシャならきっと出来るよ。"
},
{
"あの龍の正体はいったいなんなんだ…!",
},
{
"しかし何故シューティングとRPGが一体化?",
},
{
"龍を何とかしないと安心して暮らせやしない…。",
"どうして突然龍なんか現れたんだろう。",
},
{
"龍の正体っていったい何なんだ?",
},
{
"何故敵が龍なんだ…。",
},
{
"まさか風神録にあやかって龍神録にしたわけではあるまいな",
},
{
"現役は引退したが、わしはキコリでなぁ。",
"今でも斧を見る時を切ってみたくなるんだ。",
"斧があればなぁ…。",
},
{
"まだわしも若いもんには負けんよ。",
"斧があればスパッと木を切ってみせるぞ。",
"斧があれば…。",
},
{
"斧を持ってきな。",
"わしの力を見せてやるから。",
},
{
"斧といってもレ○ナみたいな斧持ってくるなよ、怖いから。",
"・・あ、あれは斧じゃなくてナタか。",
},
{
"斧があれば現役時代の腕を見せてやるんだがなぁ‥。",
"‥何?斧を持ってきただって?",
"よし、見せてやろう。",
"ちょっと待ってろ。",
},
{
"どうだいあっという間に木が無くなっちまっただろう。",
"まだまだ衰えちゃいないよ。ワハハハハ。",
"‥何、この先へ進むのかい?",
"危険すぎるからやめ‥",
"いや、君ならやれるかもしれない。",
"‥君にしか出来ないだろう。",
"君が村の平和を取り戻してくれると信じているよ。",
}
};
話しかけたときに村人がその方向にいたらTALKとする。
TALKの内容は
対応する文字列を表示する。
キーを押したとき、続きがあればその続きを、
それがなければメッセージに応じた処理をします。
以下を変更 m_ch_moveに以下を追加
//話をする
if(CheckStatePad(configpad.shot)==1){
switch(m_ch.muki){
case 0:
for(int i=0;i<7;i++){
if(murabito[i].x==m_ch.x+32 && murabito[i].y==m_ch.y){
m_ch.talk=i;
murabito[i].state=1;
mura_state=TALK;
return;
}
}
break;
case 1:
for(int i=0;i<7;i++){
if(murabito[i].x==m_ch.x && murabito[i].y==m_ch.y+32){
m_ch.talk=i;
murabito[i].state=1;
mura_state=TALK;
return;
}
}
break;
case 2:
for(int i=0;i<7;i++){
if(murabito[i].x==m_ch.x-32 && murabito[i].y==m_ch.y){
m_ch.talk=i;
murabito[i].state=1;
mura_state=TALK;
return;
}
}
break;
case 3:
for(int i=0;i<7;i++){
if(murabito[i].x==m_ch.x && murabito[i].y==m_ch.y-32){
m_ch.talk=i;
murabito[i].state=1;
mura_state=TALK;
return;
}
}
break;
}
}
murabito[0].cnt=0;
murabito[0].x=32*3;
murabito[0].y=32*2;
murabito[0].muki=0;
murabito[0].message_knd=0;
murabito[0].message_line=0;
murabito[1].cnt=0;
murabito[1].x=32*3;
murabito[1].y=32*4;
murabito[1].muki=0;
murabito[1].message_knd=4;
murabito[1].message_line=0;
murabito[2].cnt=0;
murabito[2].x=32*3;
murabito[2].y=32*6;
murabito[2].muki=0;
murabito[2].message_knd=8;
murabito[2].message_line=0;
murabito[3].cnt=0;
murabito[3].x=32*3;
murabito[3].y=32*8;
murabito[3].muki=0;
murabito[3].message_knd=12;
murabito[3].message_line=0;
murabito[4].cnt=0;
murabito[4].x=32*3;
murabito[4].y=32*10;
murabito[4].muki=0;
murabito[4].message_knd=16;
murabito[4].message_line=0;
murabito[5].cnt=0;
murabito[5].x=32*5;
murabito[5].y=32*2;
murabito[5].muki=0;
murabito[5].message_knd=20;
murabito[5].message_line=0;
murabito[6].cnt=0;
murabito[6].x=32*5;
murabito[6].y=32*4;
murabito[6].muki=0;
murabito[6].message_knd=24;
murabito[6].message_line=0;
}
mura_graphに以下を追加
//村人の描画
for(i=0;i<7;i++){
DrawBox(murabito[i].x,murabito[i].y,murabito[i].x+32,murabito[i].y+32,color[4],TRUE);
DrawFormatString(murabito[i].x,murabito[i].y,color[0],"%d",i);
}
void control_mura_talk(){
if(CheckStatePad(configpad.shot)==1){
if(mura_message[murabito[m_ch.talk].message_knd][murabito[m_ch.talk].message_line+1][0]!='\0'){
murabito[m_ch.talk].message_line++;
}
else{
murabito[m_ch.talk].message_line=0;
if(murabito[m_ch.talk].message_knd<28){
if(murabito[m_ch.talk].message_knd%4!=3){
murabito[m_ch.talk].message_knd++;
murabito[m_ch.talk].state=0;
mura_state=WALK;
}
else{
murabito[m_ch.talk].message_knd-=3;
murabito[m_ch.talk].state=0;
mura_state=WALK;
}
}
else{
murabito[m_ch.talk].state=0;
mura_state=WALK;
}
}
}
}
void graph_mura_talk(){
DrawBox(0,400,640,480,color[4],TRUE);
DrawStringToHandle(20,410,murabito_name[m_ch.talk],color[0],font[1]);
DrawStringToHandle(40,450,mura_message[murabito[m_ch.talk].message_knd][murabito[m_ch.talk].message_line],color[0],font[0]);
}
村人の歩行、当たり判定、斧とキコリのセリフの変化の処理は未実装です。
セリフはv2.51から収集。変わっているものもあるようです。
「東○のパクリなんて言わせない」といっていたのはいつまででしたっけ。
村長のセリフは
「音信不通になってしもおた。」ではなく、
「音信不通になってしもうた。」としました。
同じく村長のセリフで
万年広葉樹になっていたので万年紅葉樹としました。
他力本願な村人のセリフが
「どうして突然龍何か現れたんだろう。」のままです。
「龍なんか」に修正されたはずでは?
斧を持ってきたとき、また、その後のキコリのみ二点リーダを使用する。