//========================================================================= // 濃縮エルニウム精錬NPC - by Cocoa // // 2007/02/14 : goto命令排除 // 精錬値低価確立を変数に変更 // 2007/02/08 : スクリプト公開 // // 濃縮エルニウム(ID:7619)を使った精錬NPC // +3以下と+9は通常エルと変わらないので精錬不可能に。 // 成功率は多分本家通り(+4:90%、+5:60%、+6:60%、+7:30%、+8:30%) // 武器研究は乗らない仕様(乗せると+9が余裕でできてしまう) // 'flagを1にすると'downpercentの確立で精錬値が1つ下がります。 // 一部台詞にネタ入ってるんで嫌であれば好きな台詞に変えてください。 //========================================================================= oldpayon.gat,53,122,3 script 精錬師匠 826,{ mes "["+ strnpcinfo(0) +"]"; mes "俺は濃縮エルニウムを使って"; mes "防具を精錬する鍛冶屋だ。"; mes "君が装備しているアイテムの中で"; mes "好きなものを精錬してやる。"; mes "どの装備アイテムを"; mes "精錬したいんだ?"; next; set @part,select(getequipname(1),getequipname(2),getequipname(3),getequipname(4),getequipname(5),getequipname(6),getequipname(7),getequipname(8),getequipname(9),getequipname(10)); //装備していない if ( getequipisequiped(@part)==0 ) { mes "["+ strnpcinfo(0) +"]"; mes "何を精錬しろと言うんだ?"; mes "他のアイテムの事か?"; close; } //精錬不可能 if ( getequipisenableref(@part)==0 ) { mes "["+ strnpcinfo(0) +"]"; mes "このアイテムは精錬不可能だ。"; close; } //未鑑定 if ( getequipisidentify(@part)==0 ) { mes "["+ strnpcinfo(0) +"]"; mes "これは未鑑定だから精錬できない。"; close; } //武器 if ( getequipweaponlv(@part) ) { mes "["+ strnpcinfo(0) +"]"; mes "武器なら弟子に任せてある。"; close; } //安全圏 if ( getequiprefinerycnt(@part)<4 ) { mes "["+ strnpcinfo(0) +"]"; mes "安全圏なら弟子にやらせろ。"; close; } //精錬値+9 if ( getequiprefinerycnt(@part)>=9 ) { mes "["+ strnpcinfo(0) +"]"; mes "これ以上は濃縮エルニウムでは"; mes "精錬できないぞ。"; close; } mes "["+ strnpcinfo(0) +"]"; mes "君が選んだ装備を精錬するには"; mes "^ff9999濃縮エルニウム^000000と"; mes "手数料20000Zenyが必要だな。"; mes "続けるかい?"; next; if ( select("はい","いいえ")==2 ){ mes "["+ strnpcinfo(0) +"]"; mes "君が嫌なら仕方がないだろう…"; close; } if ( countitem(7619)<1 || Zeny<20000 ){ mes "["+ strnpcinfo(0) +"]"; mes "それが君が持ってる全部かい?"; mes "残念だが、材料が足りないんじゃ"; mes "仕方がないな。"; mes "俺はただでやってやるほど"; mes "心が広くないからな。"; close; } mes "["+ strnpcinfo(0) +"]"; mes "カン! カン! カン!!"; delitem 7619,1; set Zeny,Zeny-20000; switch(getequiprefinerycnt(@part)){ case 0: //一応 case 1: case 2: case 3: set @successpercent,100; break; case 4: set @successpercent,90; break; case 5: case 6: set @successpercent,60; break; case 7: case 8: set @successpercent,30; break; case 9: //一応 set @successpercent,10; break; } if ( @successpercent <= rand(100) ) { failedrefitem @part; next; emotion 53; mes "["+ strnpcinfo(0) +"]"; mes "おっと…"; next; mes "["+ strnpcinfo(0) +"]"; mes "すまん!"; mes "精錬中に武具が壊れてしまったな…"; mes "アフリカではよくあることだ。"; close; } if('flag){ if ( rand(100)<'downpercent ) { switch(@part){ case 1: gmcommand "@refine 256 -1"; break; case 2: gmcommand "@refine 16 -1"; break; case 3: gmcommand "@refine 32 -1"; break; case 4: gmcommand "@refine 2 -1"; break; case 5: gmcommand "@refine 4 -1"; break; case 6: gmcommand "@refine 64 -1"; break; case 7: gmcommand "@refine 8 -1"; break; case 8: gmcommand "@refine 128 -1"; break; case 9: gmcommand "@refine 512 -1"; break; case 10: gmcommand "@refine 1 -1"; break; } next; emotion 53; mes "["+ strnpcinfo(0) +"]"; mes "おっと…"; next; mes "["+ strnpcinfo(0) +"]"; mes "すまん!"; mes "手違いで精錬値が下がってしまった…"; close; } } successrefitem @part; next; emotion 52; mes "["+ strnpcinfo(0) +"]"; mes "さあ、出来上ったよ!"; mes "武具が強くなって君も嬉しいだろ?"; close; OnInit: set 'flag,0; //精錬値低下フラグ(0:下がらない 1:下がる) set 'downpercent,3; //精錬値低下確立(百分率) }