// TMW2 scripts. // Authors: // Jesusalva // Description: // Exclusive for Fires of Steam 2021 - When our OVH server datacenter got fire. 029-0,111,37,0 script Alliance Hero#FoS NPC_HALBERDBARBARIAN,{ //function restoreshopitem2; // No one is supposed to be able to reach NPC if event did not happen if (!$FIRESOFSTEAM) { disablenpc .name$; die(); end; } mesn; mesq l("I'll someday explain you the history behind the Great Fire. But it won't be now."); next; mesn; mesq l("For now, I'll only tell you this:"); mesc l("In %d weeks, on Friday, the bi-monthly Bazaar will happen in %s.", BAZAARFREQ - ($BAZAAR_TIMER % BAZAARFREQ), ($BAZAAR_TIMER/BAZAARFREQ%2 ? l("Land of Fire Village") : l("Tulimshar"))); close; OnRw: logmes(sprintf("%s - Fire Scroll Granted by GM or Admin", getcharid(3))); getitembound FireScroll, 1, 1; dispbottom l("Jesusalva : \\o/"); end; OnInit: bindatcmd "steambk", "Alliance Hero#FoS::OnRw", 100, 80, 1; tradertype(NST_MARKET); .distance=5; .sex=G_MALE; sleep(SHOPWAIT); // NPC_ELMO_ARTIS / NPC_SAPARTAN -> Candor (Sea Food) OK // NPC_OSCAR / NPC_ORC_MAN -> Hurnscald (Shrooms, Woods, Potions, Arrows) OK // anyof(244 - 248) indigenous folks -> Halinarzo (Minerals) OK // TIKI -> Esperia/Artis (Odd stuff, Rare stuff) OK // LOF_TRAVMERC -> LoF (Magic, Science) OK // NPC_ELVEN_MAN_TRADER -> Nivalis (Ice, cold) OK // NPC_EURNI / NPC_WEIRDSELLER -> Nowhere (Illegal, Contraband Goods) OK // NPC_GUGLI -> Tulimshar (Monster Parts and Dyes) OK // NPC_LYDON -> Points OK // NPC_ARTAXE -> Frostia (Forged Goods) // empty warp crystal, equipment (e.g bows) sellitem CottonTrousers, 10000, 1; sellitem CottonSkirt, 5000, 1; sellitem MiniSkirt, 5000, 1; sellitem ShortTankTop, 2000, 1; sellitem CottonGloves, 15000, 1; sellitem CottonBoots, 10000, 1; // NPC_QONAN (orc facing right) (Unfortunately, unused) if (!$BETASERVER && !debug) disablenpc .name$; end; /* Old code no longer in production, from Fires of Steam event // This version of restoreshopitem gets more expensive when sold out function restoreshopitem2 { if (getarg(2, -1337) == -1337) { .@amount=getarg(1); .@price=-1; } else { .@amount=getarg(2); .@price=getarg(1); } if (!shopcount(getarg(0))) sellitem getarg(0), .@price*11/10, .@amount; else if (shopcount(getarg(0)) < .@amount) sellitem getarg(0), .@price, .@amount; return; } */ } 003-0-2,34,21,0 script Alliance Officer NPC_HALBERDBARBARIAN,{ mesn; mesq l("Good %s, %s. The council is not in session right now.", (is_night() ? l("evening") : l("morning")), (strcharinfo(0) == $MOST_HEROIC$ ? lg("hero") : lg("peasant"))); if (($BETASERVER || debug) && BaseLevel < 60 && !REBIRTH && !#BETA_REVIVE) goto L_PowerUp; close; L_PowerUp: tutmes l("This is a debug NPC. If you don't know what you're doing, refuse."); next; mesn strcharinfo(0); mesq l("Could you awake my lost and forsaken potential?"); if (TUTORIAL) mesc l("You whisper a date - 2021-03-11, the %sreal%s date of the %d AT Great Fire.", "[@@https://tmw2.org/news#outage|", "@@]", min(240, gettime(GETTIME_YEAR)-1800)); // Great Fire: 219~240 AT (238 max due to 2038 bug) next; mesn; mesq l("Yes. I can. But this is irreversible. Are you sure you want this?"); next; mesc l("Awake lost potential? This will mess with your char data irreversibly, beware."), 1; mesc b(l("New players are strongly DISCOURAGED from using this resource, as it'll close about half of the available quests.")), 1; mesc l("Some unique rewards will also be permanently missed."), 1; if (askyesno() == ASK_NO) close; inventoryplace Iten, 1, NPCEyes, 4; mesc l("To prove you are aware of the consequences, answer the riddle below.\nThree great sages were active before the Great Fire broke out. One of them however was no longer active long before the incident. What's his name? Lower case only."), 1; input(.@pwd$); if (.@pwd$ != "crazyfefe") { mesc l("Sorry, that's incorrect. If you do not know the answer, you're likely not the intended audience for this NPC."); close; } // Chose a stage (NO TTL) mesc l("Please select where you left off on Main Quest."); mesc l("The one with a star (*) is advised."); mesc l("It is NOT advised for new players to skip parts of the Main Quest."), 1; mesc l("Skipping will FORSAKE rewards for the quest and related; So choose wisely!"); mes ""; menuint "Nard Quest finished", 1, "Lua Quest finished", 3, "Airlia Quest finished", 6, "Librarian Quest finished", 10, "Blue Sage Quest finished", 12, "(*) King Gelid Quest complete", 17, "Lightbringer/Barbara finished", 19; mes ""; // Save stage .@mq = @menuret; // IP Blacklist if (array_find($@IPBLIST$, getcharip()) < 0) array_push($@IPBLIST$, getcharip()); // Level up freeloop(true); while (BaseLevel < 60) getexp NextBaseExp, 100; freeloop(false); // Skip a few quests setq ShipQuests_Arpan, 5; if (.@mq > 10) setq NivalisQuest_BlueSage, 12; if (.@mq >= 17) { sk_lvup(AM_REST); sk_lvup(AM_RESURRECTHOMUN); sk_lvup(AM_CALLHOMUN); } if (.@mq >= 18) { BARBARA_STATE=any(1, 2, 3); } // Close some other useful quests WITHOUT reward of any kind // This will make some unique items unobtainable and other quests // impossible to be finished, but that's something the player accepted. setq ShipQuests_Arpan, 5; setq LoFQuest_EPISODE, 17; setq HurnscaldQuest_Celestia, 6; setq LoFQuest_Inspector, 9; setq General_EasterEggs, 1, INT_MAX; setq TulimsharQuest_DarkInvocator, 7; setq HalinarzoQuest_SickWife, 5; setq NivalisQuest_Henry, 2; // Makes impossible to acquire the Grimorium skill TMW2_SKILLPERMIT, 4, 0; // Update main quest if (getq(General_Narrator) < .@mq) setq General_Narrator, .@mq; // Monster points MPQUEST=true; if (!Mobpt) Mobpt+=80000; // Magic Power adddefaultskills(); if (!MAGIC_LVL) { sk_lvup(AL_DP); MAGIC_LVL=1; } // Crafting if (!CRAFTQUEST) { sk_lvup(TMW2_CRAFT); getitembound RecipeBook, 1, 1; CRAFTQUEST=true; } // Free skills sk_lvup(TMW2_MANABOMB); sk_lvup(any(TMW2_FROSTDIVER, TMW2_NAPALMBEAT, TMW2_MAGICSTRIKE, TMW2_METEORSTRIKE, TMW2_FIREARROW, TMW2_BRAWLING, TMW2_FALKONSTRIKE, TMW2_CHARGEDARROW)); // Regeneration and misc getitem StrangeCoin, 100; Zeny+=50000; percentheal 100,100; mesc l("You awake a long forgotten potential, and feel ready to take over the world."); #BETA_REVIVE=true; close; OnInit: .distance=4; /* if (!$BETASERVER && !debug) disablenpc .name$; */ end; }