// TMW-2 Script. // Author: // Jesusalva // Notes: // Phoenix Rebirth 025-1,66,21,0 script Phoenix Rebirth NPC_BRGUARD_SPEAR,{ setpcblock(PCBLOCK_HARD, true); mesn; mesq l("Hello there. My name is %s.", .name$); next; mesn; if (REBIRTH) .@blvl=0-(REBIRTH_OVERLEVEL/REBIRTH); else .@blvl=0; switch (REBIRTH) { case 0: .@blvl+=99; .@rebirth$=l("first"); break; case 1: .@blvl+=120; .@rebirth$=l("second"); break; case 2: .@blvl+=135; .@rebirth$=l("third"); break; case 3: .@blvl+=150; .@rebirth$=l("fourth"); break; case 4: .@blvl+=175; .@rebirth$=l("final"); if ($GAME_STORYLINE >= 5) break; default: setpcblock(PCBLOCK_HARD, false); mesc l("Unfortunately you cannot rebirth anymore!"); close; break; } .@blvl=max(90, .@blvl); // Do not allow it to go too far below! mesc l("Once you reach level %d, I'll offer you a life-time opportunity to delete all your levels and experience for your %s rebirth!", .@blvl, .@rebirth$); next; mesn; mesq l("Rebirth is free. Here are the perks you'll get by doing the rebirth:"); mes ""; mes l("* +3 Inventory Slots")+" ##1##BWIP##b##0"; mes l("* +1 in all attributes, permanently"); mes l("* +1 Magic Skill Point"); mes l("* +%d%% EXP Gain and Drop Chance, permanently", 2); mes l("* 1 %s", getitemlink(SupremeGift)); mes l("* 1 Trait"); if (BaseLevel < .@blvl) { setpcblock(PCBLOCK_HARD, false); close; } next; mesn; mesq l("Are you interested? You'll keep %s your equipment, magic, quest progression, craft recipes, money, whatever else which is not a level. Not even Job level won't be reset!", b(l("ALL"))); mesc l("This cannot be undo later!"), 1; next; setpcblock(PCBLOCK_HARD, false); inventoryplace NPCEyes, 7; select l("Do not rebirth"), l("Rebirth"), l("Do not rebirth"); mes ""; if (@menu != 2) close; mesc l("ARE YOU SURE? THIS CANNOT BE UNDONE LATER!!"), 1; if (askyesno() != ASK_YES) close; setnpcdialogtitle l("Rebirth Trait Selection"); mesc l("Please select a trait."); mesc l("This choice CANNOT be undone later."), 1; menuint l("Cancel"), 0, rif(!(PCBONUS & PCB_ATKBONUS), l("Atk +25")), PCB_ATKBONUS, rif(!(PCBONUS & PCB_MATKBONUS), l("Matk +25")), PCB_MATKBONUS, rif(!(PCBONUS & PCB_DEFBONUS), l("Def +20")), PCB_DEFBONUS, rif(!(PCBONUS & PCB_MDEFBONUS), l("MDEF +10")), PCB_MDEFBONUS, rif(!(PCBONUS & PCB_EVDBONUS), l("Evasion +20")), PCB_EVDBONUS, rif(!(PCBONUS & PCB_HITBONUS), l("Accuracy +25")), PCB_HITBONUS, rif(!(PCBONUS & PCB_CRITBONUS), l("Crit +5%")), PCB_CRITBONUS, rif(!(PCBONUS & PCB_DOUBLEATK), l("Double Attack +5%")), PCB_DOUBLEATK, rif(!(PCBONUS & PCB_ALLSTATS), l("All Stats +1")), PCB_ALLSTATS, rif(!(PCBONUS & PCB_HPBONUS), l("HP +500")), PCB_HPBONUS, rif(!(PCBONUS & PCB_MPBONUS), l("MP +200")), PCB_MPBONUS, rif(!(PCBONUS & PCB_ASPDBONUS), l("Atk. Speed +10")), PCB_ASPDBONUS, rif(!(PCBONUS & PCB_WSPDBONUS), l("Walk +5%")), PCB_WSPDBONUS, rif(!(PCBONUS & PCB_WEIGHTBONUS), l("Max Weight +1kg")), PCB_WEIGHTBONUS, rif(!(PCBONUS & PCB_EXPBONUS), l("EXP Gain +10%")), PCB_EXPBONUS, rif(!(PCBONUS & PCB_NOKNOCKBACK), l("Knockback Immunity")), PCB_NOKNOCKBACK, rif(REBIRTH && !(PCBONUS & PCB_SPLASHMASTER), l("AoE (not stackable)")), PCB_SPLASHMASTER, rif(REBIRTH && !(PCBONUS & PCB_RANGEMASTER), l("Atk Range +1")), PCB_RANGEMASTER; if (@menuret == 0) return; PCBONUS=PCBONUS|@menuret; // Okay, then a rebirth it is! expandinventory(3); REBIRTH+=1; STATUSUP_STR+=1; STATUSUP_AGI+=1; STATUSUP_VIT+=1; STATUSUP_INT+=1; STATUSUP_DEX+=1; STATUSUP_LUK+=1; REBIRTH_OVERLEVEL=max(0, BaseLevel-.@blvl-(REBIRTH_OVERLEVEL/REBIRTH)); resetlvl(3); NewcomerEXPDROPUP(); getitembound SupremeGift, 1, 4; warp "005-1", 40, 117; LOCATION$="Candor"; kamibroadcast(strcharinfo(0)+" has been reborn."); // Maybe you were THE FIRST if ($REBIRTH_WINNER$ == "") { $REBIRTH_WINNER$=strcharinfo(0); channelmes("#world", $REBIRTH_WINNER$+" is the first player to REBIRTH!! They are so OP! %%N"); announce "All hail ##B"+$REBIRTH_WINNER$+"##b, first player to REBIRTH and become OP!", bc_all|bc_npc; getitem SupremeGift, 1; next; } // These operations can be delayed or fail StatusResetReinvest(); // Open a new dialog clear; setnpcdialogtitle l("Rebirth Race Selection"); mesc l("Do you want to change your race?"); mesc l("This can only be reverted at rebirth! Beware!"); next; if (askyesno() != ASK_YES) close; // Rebirth: 0 mes ""; mes ".:: "+l("Human")+" ::."; mesc l("The most widespread race in the continent, highly versatile, perfect all-rounders."); mesc l("Strength: NONE"), 2; mesc l("Weakness: NONE"), 1; // Rebirth: 1 if (REBIRTH >= 1) { mes ""; mes ".:: "+l("Elven")+" ::."; mesc l("They are highly intelligent, and have higher magical affinity, and live longer, but lacks creativity."); mesc l("Strength: INT+"), 2; mesc l("Weakness: STR-"), 1; mes ""; mes ".:: "+l("Tritan")+" ::."; mesc l("Blue from sea, learned how to hunt. But unfortunately, not how to withstand attacks."); mesc l("Strength: DEX+"), 2; mesc l("Weakness: VIT+"), 1; } // Rebirth: 2 if (REBIRTH >= 2) { mes ""; mes ".:: "+l("Raijin")+" ::."; mesc l("Lives undercover in human society. Luck led them to surviving this far."); mesc l("Strength: LUK+"), 2; mesc l("Weakness: DEX-"), 1; mes ""; mes ".:: "+l("Orc")+" ::."; mesc l("Highly strong and bulky, faces their foes head-on."); mesc l("Strength: STR+, Carry Weight +"), 2; mesc l("Weakness: AGI-"), 1; } // Rebirth: 3 if (REBIRTH >= 3) { mes ""; mes ".:: "+l("Ukar")+" ::."; mesc l("Superb stealth, and quick on their toes."); mesc l("Strength: AGI+, Walk Speed +"), 2; mesc l("Weakness: LUK-"), 1; mes ""; mes ".:: "+l("Redy")+" ::."; mesc l("Grown in harsh environments, withstand anything."); mesc l("Strength: VIT++"), 2; mesc l("Weakness: INT-"), 1; } // Rebirth: 5 if (REBIRTH >= 5) { mes ""; mes ".:: "+l("Savior")+" ::."; mesc l("Unparelled, strength without precedents. Ancient beings of pure mana, rumored to be immortal."); mesc l("Strength: ALL"), 2; mesc l("Weakness: NONE"), 1; } next; menuint l("Kaizei Human"), 0, rif(REBIRTH >= 1, l("Elven")), 3, rif(REBIRTH >= 1, l("Tritan")), 6, rif(REBIRTH >= 2, l("Raijin")), 5, rif(REBIRTH >= 2, l("Orc")), 4, rif(REBIRTH >= 3, l("Ukar")), 7, rif(REBIRTH >= 3, l("Redy")), 8, rif(REBIRTH >= 5, l("Savior")), 9, l("Argaes Human"), 1, l("Tonori Human"), 2, l("Don't change race"), Class; jobchange max(0, @menuret); close; OnInit: .sex = G_MALE; .distance = 7; end; }