集めた仲間によって評価が変わるRPGの作成~全NPCのフラグ(会話、アイテム)と仲間加入イベント②~

 

集めた仲間によって評価が変わるRPGの作成

~全NPCのフラグ(会話、アイテム)と仲間加入イベント②~

こんにちは、東京経済大学3年のSTです。
全NPCのフラグ(会話、アイテム)と仲間加入イベント①の続きです。
(ステージ2,5,6,9)

ステージ2


戦士D

{active:true, name:"戦士D", sprite:"warrior4", stage:2, x:6,y:3, solid:true, talk:function(){ if(!hasFlag("unlocked_WarriorDEF")){ showMsg("戦士D","証がない者の相手はできん。"); return; } if(!inParty("戦士D")){ showChoice("戦士D","戦士の証は持っているな?",["はい","いいえ"],(i)=>{ if(i===0){ addParty("戦士D"); showMsg("戦士D","ならば、ともに戦おう"); } }); }else{ showMsg("戦士D","もう仲間になっている。"); } }},

役割

  • 「戦士の証」で解禁される戦士加入(D/E/F)枠の1人。

イベント/条件

  • 前提:unlocked_WarriorDEF が true(証解禁)。

  • 未解禁:「証がない者の相手はできん。」

  • 解禁&未加入:選択肢「はい」で加入。

  • 加入後:「もう仲間になっている。」

評価との関係

  • calcFinalEvaluation() 内で if(inParty("戦士D")) score++; により加点。


戦士E

{active:true, name:"戦士E", sprite:"warrior5", stage:2, x:17,y:10, solid:true, talk:function(){ if(!hasFlag("unlocked_WarriorDEF")){ showMsg("戦士E","今はまだ、その時ではない。"); return; } if(!inParty("戦士E")){ showChoice("戦士E","戦士の証を見せてくれるか?",["はい","いいえ"],(i)=>{ if(i===0){ addParty("戦士E"); showMsg("戦士E","うむ、良かろう。"); } }); }else{ showMsg("戦士E","もう仲間になっている。"); } }},

役割

  • 「戦士の証」解禁後に加入できる戦士枠。

イベント/条件

  • 前提:unlocked_WarriorDEF が true。

  • 未解禁:「今はまだ、その時ではない。」

  • 解禁&未加入:「はい」で加入。

  • 加入後:「もう仲間になっている。」

評価との関係

  • calcFinalEvaluation() 内で if(inParty("戦士E")) score++; により加点。


侍B

{active:true, name:"侍B", sprite:"samurai2", stage:2, x:1,y:3, solid:true, talk:function(){ if(!hasItem("侍の心得")){ showMsg("侍B","…………"); return; } if(!inParty("侍B")){ showChoice("侍B","侍の心得はあるか?",["はい","いいえ"],(i)=>{ if(i===0){ addParty("侍B"); showMsg("侍B","了解した。"); } }); }else{ showMsg("侍B","もう仲間になっている。"); } }},

役割

  • アイテム「侍の心得」で加入する侍枠。

イベント/条件

  • 前提:侍の心得 所持(ステージ4のメイド1で入手)。

  • 未所持:「…………」

  • 所持&未加入:「はい」で加入。

  • 加入後:「もう仲間になっている。」

評価との関係

  • スコア加点対象。


僧侶A

{active:true, name:"僧侶A", sprite:"monk1", stage:2, x:0,y:7, solid:true, talk:function(){ if(!hasItem("僧侶の杖A")){ showMsg("僧侶A","僧侶の杖Aが必要だ。"); return; } if(!inParty("僧侶A")){ showChoice("僧侶A","その杖…私の探していたものだ、渡してくれるか?",["はい","いいえ"],(i)=>{ if(i===0){ addParty("僧侶A"); showMsg("僧侶A","よし、ともに行こう。"); } }); }else{ showMsg("僧侶A","もう仲間になっている。"); } }},

役割

  • 「僧侶の杖A」所持で加入する僧侶枠。

イベント/条件

  • 前提:僧侶の杖A 所持(ステージ5の木箱(55/56)調べで入手)。

  • 未所持:「僧侶の杖Aが必要だ。」

  • 所持&未加入:「はい」で加入。

  • 加入後:「もう仲間になっている。」

評価との関係

  • スコア加点対象。



戦士F

{active:true, name:"戦士F", sprite:"warrior6", stage:2, x:4,y:7, solid:true, talk:function(){ if(!hasFlag("unlocked_WarriorDEF")){ showMsg("戦士F","……用があるなら証を見せろ。"); return; } if(!inParty("戦士F")){ showChoice("戦士F","戦士の証はあるのか?",["はい","いいえ"],(i)=>{ if(i===0){ addParty("戦士F"); showMsg("戦士F","一緒に行こう"); } }); }else{ showMsg("戦士F","もう仲間になっている。"); } }},

役割

  • 「戦士の証」解禁後に加入できる戦士枠(D/E/Fの1人)。

イベント/条件

  • 前提:unlocked_WarriorDEF が true。

  • 未解禁:「……用があるなら証を見せろ。」

  • 解禁&未加入:「はい」で加入。

  • 加入後:「もう仲間になっている。」

評価との関係

  • calcFinalEvaluation() 内で if(inParty("戦士F")) score++; により加点。


ステージ6


格闘家A

{active:true, name:"格闘家A", sprite:"fighter2", stage:6, x:1,y:9, solid:true, talk:function(){ if(!rumor.allFighters()){ showMsg("格闘家A","……情報が足りん。"); return; } if(!inParty("格闘家A")){ showChoice("格闘家A","時は満ちた。\n共に戦うか?",["はい","いいえ"],(i)=>{ if(i===0){ addParty("格闘家A"); showMsg("格闘家A","よし、ついていこう。"); } else{ showMsg("格闘家A","まだ稽古が必要そうだな。"); } }); }else{ showMsg("格闘家A","もう仲間になっている。"); } } },

役割

  • 噂3つ(grandpaA / grandmaA / tentGuy)を揃えると加入できる格闘家枠。

イベント/条件

  • 前提:rumor.allFighters() が true。

  • 未達:「……情報が足りん。」

  • 達成&未加入:「はい」で加入。

  • 加入後:「もう仲間になっている。」

評価との関係

  • calcFinalEvaluation() 内で if(inParty("格闘家A")) score++; により加点。


格闘家B

{active:true, name:"格闘家B", sprite:"fighter1", stage:6, x:18,y:1, solid:true, talk:function(){ if(!rumor.allFighters()){ showMsg("格闘家B","……まだ来るのが早い。"); return; } if(!inParty("格闘家B")){ showChoice("格闘家B","さあ、行こうか?",["はい","いいえ"],(i)=>{ if(i===0){ addParty("格闘家B"); showMsg("格闘家B","もう仲間だ。"); } else{ showMsg("格闘家B","焦るな。準備してから来い。"); } }); }else{ showMsg("格闘家B","もう仲間になっている。"); } } },

役割

  • 噂条件を満たすと加入できる格闘家枠その2。

イベント/条件

  • 前提:rumor.allFighters() true。

  • 未達:「……まだ来るのが早い。」

  • 達成&未加入:「はい」で加入。

評価との関係

  • calcFinalEvaluation() 内で if(inParty("格闘家B")) score++; により加点。


格闘家C

{active:true, name:"格闘家C", sprite:"fighter3", stage:6, x:11,y:5, solid:true, talk:function(){ if(!rumor.allFighters()){ showMsg("格闘家C","……条件が揃っていない。"); return; } if(!inParty("格闘家C")){ showChoice("格闘家C","条件が揃った。\n同行しようか?",["はい","いいえ"],(i)=>{ if(i===0){ addParty("格闘家C"); showMsg("格闘家C","さあ、行こう。"); } else{ showMsg("格闘家C","準備ができたら、また来い。"); } }); }else{ showMsg("格闘家C","もう仲間になっている。"); } } },

役割

  • 噂条件で加入できる格闘家枠その3。

イベント/条件

  • 前提:rumor.allFighters() true。

  • 未達:「……条件が揃っていない。」

  • 達成&未加入:「はい」で加入。

評価との関係

  • calcFinalEvaluation() 内で if(inParty("格闘家C")) score++; により加点。


闇の魔術師

{active:true, name:"闇の魔術師", sprite:"darkMage", stage:6, x:18,y:9, solid:true, talk:function(){ if(!hasItem("闇の魔術書")){ showMsg("闇の魔術師","力を貸すために必要なものがある。"); return; } if(!inParty("闇の魔術師")){ showChoice("闇の魔術師","その魔法書は…渡してくれるか?",["はい","いいえ"],(i)=>{ if(i===0){ addParty("闇の魔術師"); showMsg("闇の魔術師","私は求めに応じよう。"); } else{ showMsg("闇の魔術師","残念だ。"); } }); }else{ showMsg("闇の魔術師","もう仲間になっている。"); } } },

役割

  • 「闇の魔術書」で加入する特殊仲間枠。

イベント/条件

  • 前提:闇の魔術書 所持(研究家Aで入手)。

  • 未所持:「力を貸すために必要なものがある。」

  • 所持&未加入:「はい」で加入。

  • 加入後:「もう仲間になっている。」

評価との関係

  • calcFinalEvaluation() 内で if(inParty("闇の魔術師")) score++; により加点。


パンプキンマン

{active:true, name:"パンプキンマン", sprite:"pumpkinMan", stage:6, x:5,y:6, solid:true, talk:function(){ if(!hasItem("パンプキンアーマー")){ showMsg("パンプキンマン","どこかに俺に似合うアーマーがあるはずなんだがな。"); return; } if(!inParty("パンプキンマン")){ showChoice("パンプキンマン","その鎧、俺の好みにぴったりだ!くれるのか?",["はい","いいえ"],(i)=>{ if(i===0){ addParty("パンプキンマン"); showMsg("パンプキンマン","俺も力になるぜ!。"); } else{ showMsg("パンプキンマン","気が向いたら、また話しかけてくれ。"); } }); }else{ showMsg("パンプキンマン","もう仲間になっている。"); } } },

役割

  • 「パンプキンアーマー」で加入する条件付き仲間。

イベント/条件

  • 前提:パンプキンアーマー 所持(井戸(右)で入手)。

  • 未所持:「どこかに俺に似合うアーマーがあるはず…」

  • 所持&未加入:「はい」で加入。

評価との関係

  • スコア加点対象。

  • 骸骨王の加入条件に inParty("パンプキンマン") が使われる。



ステージ5

村人A,村人B

{active:true, name:"村人A", sprite:"vill1", stage:5, x:4,y:4, solid:true, talk:function(){ rumor.warriorH_info.villA=true; showMsg("村人","戦士Hも喜ぶだろう。"); giveLongSwordHIfReady(); }},
{active:true, name:"村人B", sprite:"vill2", stage:5, x:5,y:4, solid:true, talk:function(){ rumor.warriorH_info.villB=true; showMsg("村人","戦士Hには期待だな。"); giveLongSwordHIfReady(); }},

役割

  • 戦士H加入条件(噂2つ)の片方を満たすNPC。

  • 条件が揃ったら「長剣H」配布イベントに繋げる。

イベント/条件

  • 話しかけると rumor.warriorH_info.villA=true

  • giveLongSwordHIfReady() を呼ぶ(もう片方が揃うと長剣H入手)。

評価との関係

  • 直接加点なし(戦士H加入の導線)。


長老

{active:true, name:"長老", sprite:"vill6", stage:5, x:9,y:1, solid:true, talk:function(){ if(!hasItem("長剣A")){ addItem("長剣A"); showMsg("長老","これを、『長剣A』を、戦士Aに渡してくれんかの?。"); } else{ showMsg("長老","あやつの役に立つだろう。"); } }},

役割

  • 戦士A加入に必要なアイテム「長剣A」配布担当。

イベント/条件

  • 初回:長剣A を入手。

  • 2回目以降:会話。

評価との関係

  • 直接加点なし(戦士A加入の導線)。


研究家A

{active:true, name:"研究家A", sprite:"researcher", stage:5, x:12,y:3, solid:true, talk:function(){ if(hasItem("研究結果") && !hasFlag("gaveResearchToResearcher")){ setFlag("gaveResearchToResearcher",true); addItem("闇の魔術書"); showMsg("研究家","解析完了…『闇の魔術書』が完成した!"); }else{ showMsg("研究家","これを扱えるものを仲間にしたほうが良い"); } }},

役割

  • 「研究結果」→「闇の魔術書」変換の進行イベント担当。

イベント/条件

  • 前提:アイテム「研究結果」所持(城内の側近Bから入手)。

  • 未処理:gaveResearchToResearcher=false のとき

    • gaveResearchToResearcher=true

    • アイテム「闇の魔術書」入手

  • それ以外:助言メッセージのみ。

評価との関係

  • 直接加点なし(闇の魔術師加入の導線)。


研究家B

{active:true, name:"研究家B", sprite:"researcher", stage:5, x:13,y:3, solid:true, talk:"データが示す…洞窟の奥には秘密がある。"},

役割

  • 洞窟奥(進行)を示唆する。

評価との関係

  • 加点なし。


魔法使いB

{active:true, name:"魔法使いB", sprite:"mage3", stage:5, x:17,y:2, solid:true, talk:function(){ if(!hasItem("魔法の杖B")){ showMsg("魔法使いB","杖がないと力が出せない。"); return; } if(!inParty("魔法使いB")){ showChoice("魔法使いB","その杖を拾ってくれたの?\n私に渡してくれる?",["はい","いいえ"],(i)=>{ if(i===0){ addParty("魔法使いB"); showMsg("魔法使いB","ありがとう。私もお供しよう。"); } else{ showMsg("魔法使いB","もう少し待ってみよう。"); } }); }else{ showMsg("魔法使いB","もう仲間になっている。"); } } },

役割

  • 「魔法の杖B」で加入する魔法使い枠(B)。

イベント/条件

  • 前提:魔法の杖B 所持(ステージ4の猫(港))。

  • 未所持:「杖がないと力が出せない。」

  • 所持&未加入:「はい」で加入。

  • 加入後:「もう仲間になっている。」

評価との関係

  • スコア加点対象。

  • 骸骨王の加入条件に inParty("魔法使いB") が使われる。


魔法使いC

{active:true, name:"魔法使いC", sprite:"mage2", stage:5, x:1,y:2, solid:true, talk:function(){ if(!hasItem("魔法の帽子C")){ showMsg("魔法使いC","帽子を落としてしまったんだ。"); return; } if(!inParty("魔法使いC")){ showChoice("魔法使いC","その帽子を拾ってくれたのか。\n渡してくれるか?",["はい","いいえ"],(i)=>{ if(i===0){ addParty("魔法使いC"); showMsg("魔法使いC","ありがとう!私もお供しよう。"); } else{ showMsg("魔法使いC","帽子がないと動けないな。"); } }); }else{ showMsg("魔法使いC","もう仲間になっている。"); } } },

役割

  • 「魔法の帽子C」で加入する魔法使い枠(C)。

イベント/条件

  • 前提:魔法の帽子C 所持(ステージ8の犬(テント))。

  • 未所持:「帽子を落としてしまったんだ。」

  • 所持&未加入:「はい」で加入。

  • 加入後:「もう仲間になっている。」

評価との関係

  • スコア加点対象。

  • 骸骨王の加入条件に inParty("魔法使いC") が使われる。


ステージ9

村人

{active:true, name:"村人", sprite:"vill3", stage:9, x:0,y:0, solid:true, talk:"Zキーで船の乗降ができるぞ。"},

役割

  • 船の操作(Zキー)を説明する案内NPC。

イベント/条件

  • 条件なし。固定メッセージのみ。

評価との関係

  • 加点なし。


海の戦士

{active:true, name:"海の戦士", sprite:"seaWarrior", stage:9, x:0,y:10, solid:true, talk:function(){ if(!hasItem("海の槍")){ showMsg("海の戦士","………"); return; } if(!inParty("海の戦士")){ showChoice("海の戦士","海が変だ。助力しようか。",["はい","いいえ"],(i)=>{ if(i===0){ addParty("海の戦士"); showMsg("海の戦士","よし、ついていこう。"); } else{ showMsg("海の戦士","ならば、まだ待とう。"); } }); }else{ showMsg("海の戦士","もう仲間になっている。"); } } },

役割

  • 「海の槍」で加入する仲間(海の戦士)枠。

イベント/条件

  • 前提:海の槍 所持(城内タイル74調べで入手)。

  • 未所持:「………」

  • 所持&未加入:「はい」で加入。

  • 加入後:「もう仲間になっている。」

評価との関係

  • スコア加点対象。

  • ステージ7の骸骨剣士撃破条件に inParty("海の戦士") が使われる。


参考文献・引用サイト

ぴぽや倉庫
ドット絵世界
DOT  ILLOST
効果音ラボ