//----------------------------------------------------------------------------- //転職転生その他色々NPC // ■ OLD_CLASS -> 転生前の職業(athena付属の転生スクリプトのOLD_CLASSと併用) // ■ UPPER_cnt -> 転生回数 // //*設置方法: duplicateで適当にコピー!(ある程度負荷をかけるため、全部の町に一人ずつ設置するなどは非推奨) // ディフォルトではプロンテラの噴水前に設置されています // //============================================================================= - script RenewJobChange { function Main; switch (Main()) { default: mes "[ジョブチェンジャー]"; mes "またのご利用を、お待ちしております。"; break; case 2: mes "[ジョブチェンジャー]"; mes "スキルポイントを使い切ってから"; mes "来てください。"; break; } close; OnInit: set '@dummy,getmapxy('@map$,'@dummy,'@dummy,1); if('@map$=="-") end; initnpctimer; //----以下NPCの設定------------------------------------------------------------------- //-----基本設定(CSVで定義されていない設定のディフォルト値にもなります)--- //転生機能を使用するかどうか set 'trans_npc, 1; //クエストスキル取得機能を使用するかどうか set 'qskillget_npc, 1; //初回転生に必要なジョブレベル set 'f_joblv, 50; //それ以降の転生に必要なベースレベル set 'n_baselv, 99; //それ以降の転生に必要なジョブレベル(各職上限値越えで値の切り捨てがかかります) set 'n_joblv, 70; //転生に必要なZeny set 'trans_zeny, 1200000; //転生時のステータスボーナス set 'bonus_stpoint, 100; //転生時のスキルポイントボーナス set 'bonus_skpoint, 0; //一転生おきのステータスボーナス加算数 set 'n_bstpoint_plus, 50; //一転生おきのスキルポイントボーナス加算数 set 'n_bskpoint_plus, 0; //--------------------------------------------------- //最大転生回数(-1で無制限) set 'trans_max, 1; //最大ステータスボーナス set 'max_stbonus, 32767; //最大スキルポイントボーナス set 'max_skbonus, 20; //2次職転職時にスキルポイントが使い切られているかをチェックするかどうか set 'skillpoint_checkless, 1; //転生可能なキャラクター(+1:スーパーノービス +2:その他拡張職 +4:養子) set 'trans_job, 0; //転生毎にアナウンスを流すかどうか(0:アナウンス無し 1:画面内 2:自分のいるマップ 3:全マップ) set 'announce, 0; //何回転生毎にアナウンスを流すか set 'announce_num, 0; //転生後に自動でクエストスキルを取得させるかどうか(0:無効 +1:ノービススキル +2:一次職スキル +4:二次職スキル) set 'getquestskill_flag, 3; //転生処理後にセーブポイントへ送るかどうか set 'return_savepoint, 1; //---以下拡張機能--- //瞬間転職NPCにする(ノービスのみ利用可能 有効にすると、瞬間転職、Qスキル取得以外は利用不可になります。 // 0:無効 1:一次職に瞬間転職 2:二次職 3:転生一次 4:転生二次) set 'quickchange_npc, 0; if('quickchange_npc) { //瞬間転職時のベースレベル set 'q_change_blv, 90; //瞬間転職時のジョブレベル(各職上限値越えで値の切り捨てがかかります) set 'q_change_jlv, 99; } //CSVによる転生条件・ボーナスの個別設定機能を使用するかどうか //(CSVの設定はスクリプト内の基本設定より優先されます) set 'trans_spmode, 0; //CSVファイルの場所 set '@csvfile$, "script/transdata.txt"; //------------------------------------------------------------------------------------ if('trans_spmode) { set '@csv_rows,csvgetrows('@csvfile$); if('@csv_rows > 1) { set '@rows,14; for(set '@i,1; '@i<128; set '@i,'@i+1) { for(set '@ii,0; '@ii<128; set '@ii,'@ii+1) { //debugmes "rows=" +'@rows+ " trans="+csvread('@csvfile$,'@rows,0)+" blv=" +csvread('@csvfile$,'@rows,1); set 'transdata_blv['@i]['@ii],csvread('@csvfile$,'@rows,1); set 'transdata_jlv['@i]['@ii],csvread('@csvfile$,'@rows,2); set 'transdata_zeny['@i]['@ii],csvread('@csvfile$,'@rows,3); set 'transdata_bstpoint['@i]['@ii],csvread('@csvfile$,'@rows,4); set 'transdata_bskpoint['@i]['@ii],csvread('@csvfile$,'@rows,5); set 'transdata_anno['@i]['@ii],csvread('@csvfile$,'@rows,6); set 'transdata_item1id['@i]['@ii],csvread('@csvfile$,'@rows,7); set 'transdata_item1num['@i]['@ii],csvread('@csvfile$,'@rows,8); set 'transdata_item2id['@i]['@ii],csvread('@csvfile$,'@rows,9); set 'transdata_item2num['@i]['@ii],csvread('@csvfile$,'@rows,10); set '@rows,'@rows+1; if(!('@rows % 100)) sleep 1; //infinity loop対策 if('@rows >= '@csv_rows || ('@rows-2) >= ('trans_max+12)) { end; } } } } } end; OnTimer10000: stopnpctimer; end; function Main { function GetJobName; function GetTransValue; function GetQuestSkill; function Status_Reset; function CheckExtensionJob; //NPC起動中 if(getnpctimer(1)) { mes "[ジョブチェンジャー]"; mes "ただ今準備中ですので"; mes "もう少々お待ちくださいー"; close; } mes "[ジョブチェンジャー]"; mes "こんにちは。"; if('quickchange_npc) { set '@mes$,'@mes$+"瞬間転職"; } else { set '@mes$,'@mes$+"転職"; if('trans_npc) set '@mes$,'@mes$+"・転生"; } if('qskillget_npc) { mes "私は"+'@mes$+"・クエストスキル"; mes "管理官です。"; } else { mes "私は"+'@mes$+"管理官です。"; } mes "本日はどのようなご用でしょうか?"; next; if('quickchange_npc) { if(Class==Job_Novice) set '@select_val1$,"瞬間転職"; else set '@select_val1$,""; } else { if(Class==Job_Novice) set '@select_val1$,"一次職に転職"; else if(Class < 7 || Class==Job_TaeKwonBoy) set '@select_val1$,"二次職に転職"; else if('trans_npc) set '@select_val1$,"転生"; } if('qskillget_npc) set '@select_val2$,"クエストスキルの取得"; else set '@select_val2$,""; set '@menu,select('@select_val1$,'@select_val2$,"やめる"); if ('@menu==1) { //転職・転生不可能、終了 if(Class == Job_Novice && (JobLevel < 10 || getskilllv(1) < 9) && 'quickchange_npc == 0) { mes "[ジョブチェンジャー]"; mes "転職条件に達していません。"; mes "^0000FF「JobLv 10」"; mes "「基本スキル Lv9まで取得」^000000"; mes "一次職に転職するためには"; mes "以上の条件を満たす必要があります。"; close; } //転職 if(Class < 7 || Class==24) { if(Class != Job_Novice && 'quickchange_npc) return; else if(Upper == 2 || Class == Job_Novice && 'quickchange_npc) set '@upper_flag,0; else set '@upper_flag,Upper; switch ('@upper_flag) { case 0: if(Class==Job_Novice && OLD_CLASS!=CheckExtensionJob()) { mes "[ジョブチェンジャー]"; mes "あなたは好きな職業に転職できます。"; mes "転職しますか?"; next; if(select("転職する","やめる")==2) break; } if(Class==Job_Novice && ('quickchange_npc==2 || 'quickchange_npc==4)) { mes "[ジョブチェンジャー]"; mes "どの職業に転職しますか?"; next; if('quickchange_npc==4 && Upper!=2) { setarray '@jobname$,"ロードナイト","ハイプリースト","ハイウィザード","ホワイトスミス", "スナイパー","アサシンクロス","パラディン","チャンピオン","プロフェッサー","チェイサー","クリエイター", ((Sex)? "クラウン": ""),((!Sex)? "ジプシー": ""),"スーパーノービス", "拳聖","ソウルリンカー","忍者","ガンスリンガー","やめる"; } else { setarray '@jobname$,"ナイト","プリースト","ウィザード","ブラックスミス", "ハンター","アサシン","クルセイダー","モンク","セージ","ローグ","アルケミスト", ((Sex)? "バード": ""),((!Sex)? "ダンサー": ""),"スーパーノービス", "拳聖","ソウルリンカー","忍者","ガンスリンガー","やめる"; } if(Upper == 2) //養子 cleararray '@jobname$[14],"",4; //スパノビ以降は転職不可能 switch ((arrayselect('@jobname$)+1)) { case 1: set '@ChangeJobType,Job_Knight; break; case 2: set '@ChangeJobType,Job_Priest; break; case 3: set '@ChangeJobType,Job_Wizard; break; case 4: set '@ChangeJobType,Job_Blacksmith; break; case 5: set '@ChangeJobType,Job_Hunter; break; case 6: set '@ChangeJobType,Job_Assassin; break; case 7: set '@ChangeJobType,Job_Crusader; break; case 8: set '@ChangeJobType,Job_Monk; break; case 9: set '@ChangeJobType,Job_Sage; break; case 10: set '@ChangeJobType,Job_Rogue; break; case 11: set '@ChangeJobType,Job_Alchem; break; case 12: set '@ChangeJobType,Job_Bard; break; case 13: set '@ChangeJobType,Job_Dancer; break; case 14: set '@ChangeJobType,Job_SuperNovice; break; case 15: set '@ChangeJobType,Job_StarGladiator; break; case 16: set '@ChangeJobType,Job_SoulLinker; break; case 17: set '@ChangeJobType,Job_Gunslinger; break; case 18: set '@ChangeJobType,Job_Ninja; break; } if(!'@ChangeJobType) return; unequip; if(Upper==1 && 'quickchange_npc==2) { set '@Upper,0; set OLD_CLASS,0; set UPPER_cnt,0; } else if('quickchange_npc==4 && Upper!=2) { set '@Upper,1; } else { set '@Upper,Upper; } jobchange '@ChangeJobType,'@Upper; Status_Reset ('@ChangeJobType==Job_SuperNovice || '@ChangeJobType==Job_Gunslinger || '@ChangeJobType==Job_Ninja)? 1: 2,('quickchange_npc==4 && Upper!=2)? 1: 0; if('quickchange_npc==4 && (Class!=Job_SuperNovice || ('trans_job & 1)) && (Class < 25 || ('trans_job & 2)) && (Upper!=2 || ('trans_job & 4))) set UPPER_cnt,1; mes "[ジョブチェンジャー]"; mes "転職完了しました。"; mes "またのご利用を、お待ちしております。"; close; } else set '@ChangeJobType,Class; switch(Class) { //一次職への転職 case Job_Novice: if(OLD_CLASS!=Job_SuperNovice && OLD_CLASS!=CheckExtensionJob()) { mes "[ジョブチェンジャー]"; mes "一次職への転職ですね。"; mes "どの職業に転職しますか?"; next; setarray '@jobname$,"剣士","マジシャン","アーチャー","アコライト","商人", "シーフ","スーパーノービス","テコンキッド","ガンスリンガー","忍者","やめる"; if(Upper == 2) //養子 cleararray '@jobname$[7],"",3; //スパノビ以降は転職不可能 switch ((arrayselect('@jobname$)+1)) { case 1: //剣士 set '@changejob,Job_Swordman; break; case 2: //マジシャン set '@changejob,Job_Mage; break; case 3: //アーチャー set '@changejob,Job_Archer; break; case 4: //アコライト set '@changejob,Job_Acolyte; break; case 5: //商人 set '@changejob,Job_Merchant; break; case 6: //シーフ set '@changejob,Job_Thief; break; case 7: //スーパーノービス if(BaseLevel < 45) { mes "[ジョブチェンジャー]"; mes "スーパーノービスに転職するには"; mes "ベースレベル45以上が必要です。"; mes "またのご利用を、お待ちしております。"; close; } set '@changejob,Job_SuperNovice; break; case 8: //テコンキッド set '@changejob,Job_TaeKwonBoy; break; case 9: //ガンスリンガー set '@changejob,Job_Gunslinger; break; case 10://忍者 set '@changejob,Job_Ninja; break; } } else { GetJobName '@jobname$,OLD_CLASS,0; mes "[ジョブチェンジャー]"; mes "一次職への転職ですね?"; mes "あなたは^0000FF" +'@jobname$+ "^000000に転職できます。"; mes "転職しますか?"; next; if(select("転職する","やめる")==2) return; set '@changejob,OLD_CLASS; } if(!'@changejob) return; unequip; if(Upper==1 && 'quickchange_npc==1) { set '@Upper,0; set OLD_CLASS,0; set UPPER_cnt,0; } else if('quickchange_npc==3 && Upper!=2) { set '@Upper,1; } else { set '@Upper,Upper; } jobchange '@changejob,'@Upper; if('quickchange_npc) { Status_Reset 1,('quickchange_npc==3 && Upper!=2)? 1: 0; if('quickchange_npc==3 && (Class!=Job_SuperNovice || ('trans_job & 1)) && (Class != Job_TaeKwonBoy || ('trans_job & 2)) && (Upper!=2 || ('trans_job & 4))) set UPPER_cnt,1; } mes "[ジョブチェンジャー]"; mes "転職完了しました。"; mes "またのご利用を、お待ちしております。"; close; //二次職への転職 case Job_Swordman: setarray '@jobid,Job_Knight,Job_Crusader; break; case Job_Acolyte: setarray '@jobid,Job_Priest,Job_Monk; break; case Job_Mage: setarray '@jobid,Job_Wizard,Job_Sage; break; case Job_Merchant: setarray '@jobid,Job_Merchant,Job_Alchem; break; case Job_Archer: if(Sex) setarray '@jobid,Job_Hunter,Job_Bard; else setarray '@jobid,Job_Hunter,Job_Dancer; break; case Job_Thief: setarray '@jobid,Job_Assassin,Job_Rogue; break; case Job_TaeKwonBoy: setarray '@jobid,Job_StarGladiator,Job_SoulLinker; break; } if(JobLevel < 40) { //転職不可能、終了 mes "[ジョブチェンジャー]"; mes "転職条件に達していません。"; mes "^0000FF「JobLv 40以上」"; if('skillpoint_checkless) mes "「残りスキルポイントが0」^000000"; mes "二次職に転職するためには"; mes "以上の条件を満たす必要があります。"; close; } mes "[ジョブチェンジャー]"; mes "二次職への転職ですね。"; mes "どの職業に転職しますか?"; next; GetJobName '@jobname$[0],'@jobid[0],0; GetJobName '@jobname$[1],'@jobid[1],0; set @menu,select('@jobname$[0],'@jobname$[1],"やめる"); if(@menu==3) return; if(SkillPoint && 'skillpoint_checkless) return 2; unequip; jobchange '@jobid[(@menu-1)],Upper; mes "[ジョブチェンジャー]"; mes "転職完了しました。"; mes "またのご利用を、お待ちしております。"; close; break; case 1: if(Class == Job_Novice) { switch (OLD_CLASS) { case 7: //ナイト case 14: //クルセイダー set '@changejob,Job_Swordman; break; case 9: //ウィザード case 16: //セージ set '@changejob,Job_Mage; break; case 11: //ハンター case 19: //バード case 20: //ダンサー set '@changejob,Job_Archer; break; case 8: //プリースト case 15: //モンク set '@changejob,Job_Acolyte; break; case 10: //ブラックスミス case 18: //アルケミスト set '@changejob,Job_Merchant; break; case 12: //アサシン case 17: //ローグ set '@changejob,Job_Thief; break; } if(!'@changejob) { //その他の場合、終了 mes "[ジョブチェンジャー]"; mes "あなたの職業は"; mes "転職不可です。"; close; } GetJobName '@jobname$,'@changejob,1; //OLD_CLASSの職業に転職 mes "[ジョブチェンジャー]"; mes "一次職への転職ですね?"; mes "あなたは^0000FF" +'@jobname$+ "^000000に転職できます。"; mes "転職しますか?"; next; if(select("転職する","やめる")==2) { break; } else { jobchange '@changejob,upper; if('getquestskill_flag & 2) GetQuestSkill '@changejob,0; mes "[ジョブチェンジャー]"; mes '@jobname$+ "に転職完了しました。"; mes "またのご利用を、お待ちしております。"; close; } } else if(Class < 7 || Class==24){ if(JobLevel < 40) { //転職不可能、終了 mes "[ジョブチェンジャー]"; mes "転職条件に達していません。"; mes "^0000FF「JobLv 40以上」"; if('skillpoint_checkless) mes "「残りスキルポイントが0」^000000"; mes "二次職に転職するためには"; mes "以上の条件を満たす必要があります。"; close; } GetJobName '@jobname$,OLD_CLASS,1; mes "[ジョブチェンジャー]"; mes "二次職への転職ですね?"; mes "あなたは^0000FF" +'@jobname$+ "^000000に転職できます。"; mes "転職しますか?"; next; if(select("転職する","やめる")==2) { break; } else { if(SkillPoint && 'skillpoint_checkless) return 2; jobchange OLD_CLASS,upper; if('getquestskill_flag & 4) GetQuestSkill OLD_CLASS,0; mes "[ジョブチェンジャー]"; mes '@jobname$+ "に転職完了しました。"; mes "またのご利用を、お待ちしております。"; close; } } break; } //転生 } else { if(!'trans_npc || 'quickchange_npc) return; if('trans_max != -1 && UPPER_cnt >= 'trans_max) { mes "[ジョブチェンジャー]"; mes "あなたは上限回数まで転生を"; mes "行いましたので、"; mes "これ以上転生することはできません。"; mes "何事も限度というものがありますよね…"; mes "^0000FF(最終転生回数 " +(UPPER_cnt)+ "回)^000000"; close; } else if(upper == 2 && !('trans_job & 4)) { mes "[ジョブチェンジャー]"; mes "養子からの転生はできません。"; close; } else if((!('trans_job & 1) && Class == 23) || (!('trans_job & 2) && Class >= 25)){ mes "[ジョブチェンジャー]"; mes "あなたの職業は転生できません。"; close; } if('trans_spmode) { set '@count1,(UPPER_cnt/128)+1; set '@count2,UPPER_cnt % 128; } mes "[ジョブチェンジャー]"; mes "あなたが" +(UPPER_cnt+1)+ "回目の転生を行うためには"; mes "次の条件を満たす必要があります。"; next; mes "[ジョブチェンジャー]"; mes "BaseLv ^0000FF" +GetTransValue('@count1,'@count2,0)+ "^000000 以上"; mes "JobLv ^0000FF" +GetTransValue('@count1,'@count2,1)+ "^000000 以上"; if(GetTransValue('@count1,'@count2,2)) mes "^0000FF" +GetTransValue('@count1,'@count2,2)+ "^000000 Zeny以上所持"; mes " 重量が0の状態で、なおかつ"; mes " カート・ペコペコ・ファルコン"; mes " を利用していない"; next; mes "[ジョブチェンジャー]"; if(GetTransValue('@count1,'@count2,2)) { mes "^0000FF必要Zenyは転生費用となり、"; mes "消費されますので注意してください。^000000"; } mes "転生を行いますか?"; next; if(select("転生する","やめる")==2) { mes "[ジョブチェンジャー]"; mes "またのご利用を、お待ちしております。"; close; } else if(BaseLevel < GetTransValue('@count1,'@count2,0) || JobLevel < GetTransValue('@count1,'@count2,1)) { mes "[ジョブチェンジャー]"; mes "転生条件に達していません。"; if(!UPPER_cnt && (upper==0 || upper==2)) mes "未転生職からの転生を行うためには"; else mes (UPPER_cnt+1)+"回目の転生を行うためには"; mes "BaseLv ^0000FF" +GetTransValue('@count1,'@count2,0)+ "^000000 以上"; mes "JobLv ^0000FF" +GetTransValue('@count1,'@count2,1)+ "^000000 以上"; mes "である必要があります。"; close; } else if(Zeny < GetTransValue('@count1,'@count2,2)) { mes "[ジョブチェンジャー]"; mes "転生条件に達していません。"; if(!UPPER_cnt && (upper==0 || upper==2)) mes "未転生職からの転生を行うためには"; else mes (UPPER_cnt+1)+"回目の転生を行うためには"; mes "^0000FF" +GetTransValue('@count1,'@count2,2)+ "^000000 Zenyが必要です。"; close; } else if(Weight) { mes "[ジョブチェンジャー]"; mes "重量を0にしてから来てください。"; close; } else if(checkcart() || checkfalcon() || checkriding()) { mes "[ジョブチェンジャー]"; mes "カート、ファルコン、ペコペコを"; mes "外してから来てください。"; close; } set Zeny,Zeny-GetTransValue('@count1,'@count2,2); set OLD_CLASS,Class; if(Upper==2) jobchange 0,2; else if(OLD_CLASS==CheckExtensionJob()) jobchange 0,0; else jobchange 0,1; set BaseLevel,1; resetstatus; resetskill; if('getquestskill_flag & 1) { skill 142,1,0; skill 143,1,0; } set StatusPoint,GetTransValue('@count1,'@count2,4); set SkillPoint,GetTransValue('@count1,'@count2,5); set UPPER_cnt,UPPER_cnt+1; if('announce_num) set '@announce_flag,!(UPPER_cnt % 'announce_num); if('announce && (GetTransValue('@count1,'@count2,3) || '@announce_flag)) { if('trans_max != 1) announce strcharinfo(0)+ "さんが" +UPPER_cnt+ "回目の転生をしました!",(0x13-'announce); else announce strcharinfo(0)+ "さんが転生しました!",(0x13-'announce); } if('trans_spmode) { if('transdata_item1id['@count1]['@count2] && 'transdata_item1num['@count1]['@count2]) { set '@giveitem,1; getitem 'transdata_item1id['@count1]['@count2],'transdata_item1num['@count1]['@count2],1; } if('transdata_item2id['@count1]['@count2] && 'transdata_item2num['@count1]['@count2]) { set '@giveitem,1; getitem 'transdata_item2id['@count1]['@count2],'transdata_item2num['@count1]['@count2],1; } } mes "[ジョブチェンジャー]"; mes "転生完了しました。"; if('@giveitem) { mes "転生回数が" +UPPER_cnt+ "回に達しましたので"; mes "記念にこのアイテムを差し上げます!"; } mes "またのご利用を、お待ちしております。"; if('return_savepoint) warp "SavePoint",0,0; close; } } else if('@menu==2) { GetQuestSkill Class,1; mes "[ジョブチェンジャー]"; mes "クエストスキルが取得できました。"; mes "またのご利用を、お待ちしております。"; close; } return; } function GetJobName { switch (getarg(1)) { case 0: if(getarg(2)==1) set getarg(0),"ハイノービス"; else set getarg(0),"ノービス"; break; case 1: if(getarg(2)==1) set getarg(0),"ハイソードマン"; else set getarg(0),"ソードマン"; break; case 2: if(getarg(2)==1) set getarg(0),"ハイマジシャン"; else set getarg(0),"マジシャン"; break; case 3: if(getarg(2)==1) set getarg(0),"ハイアーチャー"; else set getarg(0),"アーチャー"; break; case 4: if(getarg(2)==1) set getarg(0),"ハイアコライト"; else set getarg(0),"アコライト"; break; case 5: if(getarg(2)==1) set getarg(0),"ハイマーチャント"; else set getarg(0),"マーチャント"; break; case 6: if(getarg(2)==1) set getarg(0),"ハイシーフ"; else set getarg(0),"シーフ"; break; case 7: if(getarg(2)==1) set getarg(0),"ロードナイト"; else set getarg(0),"ナイト"; break; case 8: if(getarg(2)==1) set getarg(0),"ハイプリースト"; else set getarg(0),"プリースト"; break; case 9: if(getarg(2)==1) set getarg(0),"ハイウィザード"; else set getarg(0),"ウィザード"; break; case 10: if(getarg(2)==1) set getarg(0),"ホワイトスミス"; else set getarg(0),"ブラックスミス"; break; case 11: if(getarg(2)==1) set getarg(0),"スナイパー"; else set getarg(0),"ハンター"; break; case 12: if(getarg(2)==1) set getarg(0),"アサシンクロス"; else set getarg(0),"アサシン"; break; case 14: if(getarg(2)==1) set getarg(0),"パラディン"; else set getarg(0),"クルセイダー"; break; case 15: if(getarg(2)==1) set getarg(0),"チャンピオン"; else set getarg(0),"モンク"; break; case 16: if(getarg(2)==1) set getarg(0),"プロフェッサー"; else set getarg(0),"セージ"; break; case 17: if(getarg(2)==1) set getarg(0),"チェイサー"; else set getarg(0),"ローグ"; break; case 18: if(getarg(2)==1) set getarg(0),"クリエイター"; else set getarg(0),"アルケミスト"; break; case 19: if(getarg(2)==1) set getarg(0),"クラウン"; else set getarg(0),"バード"; break; case 20: if(getarg(2)==1) set getarg(0),"ジプシー"; else set getarg(0),"ダンサー"; break; case 23: set getarg(0),"スーパーノービス"; break; case 24: set getarg(0),"テコンキッド"; break; case 25: set getarg(0),"拳聖"; break; case 27: set getarg(0),"ソウルリンカー"; break; case 28: set getarg(0),"ガンスリンガー"; break; case 29: set getarg(0),"忍者"; break; } return; } function GetTransValue { switch (getarg(2)) { case 0: //必要ベースレベル if('trans_spmode && 'transdata_blv[getarg(0)][getarg(1)] > 0) set '@value,'transdata_blv[getarg(0)][getarg(1)]; else if(UPPER_cnt==1) set '@value,'n_baselv; else set '@value,'f_baselv; break; case 1: //必要ジョブレベル if('trans_spmode && 'transdata_jlv[getarg(0)][getarg(1)] > 0) set '@value,'transdata_jlv[getarg(0)][getarg(1)]; else if(UPPER_cnt==1) set '@value,'n_joblv; else set '@value,'f_joblv; if((Upper==2 || Class==Job_StarGladiator || Class==Job_SoulLinker) && '@value > 50) set '@value,50; break; case 2: //必要Zeny if('trans_spmode && 'transdata_zeny[getarg(0)][getarg(1)] > 0) set '@value,'transdata_zeny[getarg(0)][getarg(1)]; else set '@value,'trans_zeny; break; case 3: //アナウンス放送フラグ if('trans_spmode && 'transdata_anno[getarg(0)][getarg(1)] == 1) set '@value,1; break; case 4: //ステータスPボーナス if('trans_spmode && 'transdata_bstpoint[getarg(0)][getarg(1)] > 0) set '@value,'transdata_bstpoint[getarg(0)][getarg(1)]; else set '@value,'bonus_stpoint + UPPER_cnt * 'n_bstpoint_plus; if('@value > 'max_stbonus) set '@value,'max_stbonus; break; case 5: //スキルPボーナス if('trans_spmode && 'transdata_bskpoint[getarg(0)][getarg(1)] > 0) set '@value,'transdata_bskpoint[getarg(0)][getarg(1)]; else set '@value,'bonus_skpoint + UPPER_cnt * 'n_bskpoint_plus; if('@value > 'max_skbonus) set '@value,'max_skbonus; break; } return '@value; } function GetQuestSkill { switch (getarg(0)){ case Job_Novice: case Job_SuperNovice: skill 143,1,0; skill 142,1,0; break; case Job_Swordman: case Job_Knight: case Job_Crusader: if(getarg(1)) { mes "[ジョブチェンジャー]"; if(getskilllv(146)==0) mes "オートバーサクを取得しますか?"; else mes "オートバーサクを忘れますか?"; next; if(select("はい","いいえ")==1) { skill 146,(getskilllv(146))? 0: 1,0; } } skill 144,1,0; skill 145,1,0; break; case Job_Mage: case Job_Wizard: case Job_Sage: skill 157,1,0; break; case Job_Archer: case Job_Hunter: case Job_Bard: case Job_Dancer: skill 147,1,0; skill 148,1,0; break; case Job_Acolyte: case Job_Priest: case Job_Monk: skill 156,1,0; break; case Job_Merchant: case Job_Blacksmith: case Job_Alchem: skill 153,1,0; skill 154,1,0; skill 155,1,0; break; case Job_Thief: case Job_Assassin: case Job_Rogue: skill 149,1,0; skill 150,1,0; skill 151,1,0; skill 152,1,0; break; } switch (getarg(0)){ case Job_Knight: skill 1001,1,0; break; case Job_Priest: skill 1014,1,0; break; case Job_Wizard: skill 1006,1,0; break; case Job_Blacksmith: skill 1012,1,0; skill 1013,1,0; break; case Job_Hunter: skill 1009,1,0; break; case Job_Assassin: skill 1003,1,0; skill 1004,1,0; break; case Job_Crusader: skill 1002,1,0; break; case Job_Monk: skill 1015,1,0; skill 1016,1,0; break; case Job_Sage: if(getarg(1) && getskilllv(1008)==0 && getskilllv(1017)==0 && getskilllv(1018)==0 && getskilllv(1019)==0) { mes "[ジョブチェンジャー]"; mes "取得するエレメンタルチェンジスキルを"; mes "選んでください。"; mes "^FF0000このスキルは一度だけ取得可能です"; mes "取得するスキルをよく吟味してください"; next; switch (select("^0000FFウォーターエレメンタルチェンジ","^963200アースエレメンタルチェンジ", "^FF0000ファイアーエレメンタルチェンジ","^00BE00ウィンドエレメンタルチェンジ^000000","やめる")) { case 1: skill 1008,1,0; break; case 2: skill 1017,1,0; break; case 3: skill 1018,1,0; break; case 4: skill 1019,1,0; break; case 5: return; } } skill 1007,1,0; break; case Job_Rogue: skill 1005,1,0; break; case Job_Alchem: skill 238,1,0; break; case Job_Bard: skill 1010,1,0; break; case Job_Dancer: skill 1011,1,0; break; } return; } function Status_Reset { if('trans_spmode) { set '@count1,(UPPER_cnt/128)+1; set '@count2,UPPER_cnt % 128; } if(getarg(1)==1) set OLD_CLASS,Class; resetstatus; resetskill; set StatusPoint,0; set SkillPoint,0; set BaseLevel,1; set JobLevel,1; set BaseLevel,'q_change_blv; set JobLevel,'q_change_jlv; if(getarg(0)==1) { set SkillPoint,SkillPoint+9; } else if(getarg(0)==2){ set SkillPoint,SkillPoint+58; } if(getarg(1)==1) { set StatusPoint,StatusPoint+GetTransValue('@count1,'@count2,4); set SkillPoint,SkillPoint+GetTransValue('@count1,'@count2,5); } return; } function CheckExtensionJob { if(OLD_CLASS==Job_SuperNovice || OLD_CLASS==Job_StarGladiator || OLD_CLASS==Job_SoulLinker || OLD_CLASS==Job_Gunslinger || OLD_CLASS==Job_Ninja) { return OLD_CLASS; } else { return -1; } } } //prontera.gat,158,192,6 duplicate(RenewJobChange) ジョブチェンジャー 123 //名前が紛らわしいのと、グラが4方向対応でなかったので、ちょっと弄りました prontera.gat,158,192,5 duplicate(RenewJobChange) 転職・転生・Qスキル管理官 95