diff options
-rw-r--r-- | npc/012-7/celestia.txt | 6 | ||||
-rw-r--r-- | npc/029-0/event.txt | 43 | ||||
-rw-r--r-- | npc/functions/hub.txt | 4 | ||||
-rw-r--r-- | npc/functions/politics.txt | 27 | ||||
-rw-r--r-- | npc/functions/util.txt | 2 | ||||
-rw-r--r-- | npc/functions/vault.txt | 4 |
6 files changed, 64 insertions, 22 deletions
diff --git a/npc/012-7/celestia.txt b/npc/012-7/celestia.txt index 48b776c6c..8ad80de44 100644 --- a/npc/012-7/celestia.txt +++ b/npc/012-7/celestia.txt @@ -6,8 +6,6 @@ // Celestia Yeti King's quest. Designed so if you're with 4 players, all 4 can // summon the Yeti King, helping you while doing the quest by themselves. -// TODO: OnPCDieEvent must reset quest - 012-7,35,49,0 script Celestia NPC_ELF_F,{ .@q1=getq(HurnscaldQuest_Celestia); @@ -213,7 +211,7 @@ L_DrinkTea: } mesc l("To your pleasant surprise the tea is actually quite good."); next; - mesc l("Despite its initial dubious fragrance, the tea comes off as very smooth and mellow with a bit of natural sweetness and a touch of an earthy forest like flavour, but in a very good way."); + mesc l("Despite its initial dubious fragrance, the tea comes off as very smooth and mellow with a bit of natural sweetness and a touch of an earthy forest like flavor, but in a very good way."); next; mesc l("Clearly an exotic tea, with a refined flavor fit for a refined woman such as Celestia."); close; @@ -258,7 +256,7 @@ L_OtherQuest: mesn; mesq l("Wasn't there something on the Holy Bible? About a young boy trapped by his brothers somewhere because envy?"); mesc l("If you don't want to look at the Bible, you can try to solve the following riddle:"); - mesc l("\"When you're thristy, you may look for me. I'm often in desert areas, but this time, the winter has come.\""), 3; + mesc l("\"When you're thirsty, you may look for me. I'm often in desert areas, but this time, the winter has come.\""), 3; CINDY_PLAYER_STRUCK=false; next; clear; diff --git a/npc/029-0/event.txt b/npc/029-0/event.txt index 031530d29..e2e671100 100644 --- a/npc/029-0/event.txt +++ b/npc/029-0/event.txt @@ -235,8 +235,10 @@ OnMinute02: 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")), lg("peasant")); - if (($BETASERVER || debug) && BaseLevel < 60) goto L_PowerUp; + 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 && !#BETA_REVIVE) goto L_PowerUp; close; L_PowerUp: @@ -249,6 +251,25 @@ L_PowerUp: next; mesc l("Awake lost potential? This will mess with your char data irreversibly, beware."), 1; if (askyesno() == ASK_NO) close; + inventoryplace Iten, 1, NPCEyes, 4; + + // 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."); + 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) @@ -262,13 +283,20 @@ L_PowerUp: // Skip a few quests setq ShipQuests_Arpan, 5; - if (getq(General_Narrator) < 17) { - // Homunculus + if (.@mq > 10) + setq NivalisQuest_BlueSage, 12; + if (.@mq >= 17) { sk_lvup(AM_REST); sk_lvup(AM_RESURRECTHOMUN); sk_lvup(AM_CALLHOMUN); - setq General_Narrator, 17; } + if (.@mq >= 18) { + BARBARA_STATE=any(1, 2, 3); + } + + // Update main quest + if (getq(General_Narrator) < .@mq) + setq General_Narrator, .@mq; // Monster points MPQUEST=true; @@ -302,14 +330,19 @@ L_PowerUp: getitembound Bread, 10, 4; // 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; } diff --git a/npc/functions/hub.txt b/npc/functions/hub.txt index a2a981da9..57bcd915a 100644 --- a/npc/functions/hub.txt +++ b/npc/functions/hub.txt @@ -56,6 +56,7 @@ function script HUB_Login { TUTORIAL=true; //BaseLevel = get_byte(##00_INFO, 0) + 1; // TODO: Display quick tutorial + dispbottom l("Mirror Lake : Created temporary character; It'll be reset on logout."); dispbottom l("Mirror Lake : Obtain help with %s.", b("@info")); } @@ -214,6 +215,9 @@ function script HUB_Logout { setq1 HurnscaldQuest_Sagratha, 3; setq3 HurnscaldQuest_Sagratha, 0; } + // Died or logged out during Yeti King Fight + if (getq(HurnscaldQuest_Celestia) > 1) + setq HurnscaldQuest_Celestia, 1; // First death produces a warning message if (PC_DIE_COUNTER <= 1 && .@dead) { dispbottom l("Dying outside a town square will cause EXP loss."); diff --git a/npc/functions/politics.txt b/npc/functions/politics.txt index 2cc6eb076..0a35d2458 100644 --- a/npc/functions/politics.txt +++ b/npc/functions/politics.txt @@ -159,40 +159,46 @@ OnSun0000: // Send salary to Town Administrators (20% from exports and 5GP/reputation) // Strange Coins: 1 each 10 reputation points + .@msg$=sprintf( + "You've received the money for the term (%02d/%02d, the %dth legislature)", + gettime(GETTIME_DAYOFMONTH), + gettime(GETTIME_MONTH), + gettimeparam(GETTIME_WEEKDAY)); + .@tax=$TULIM_EXPORT/500; .@tax+=$TULIM_REPUTATION*5; .@tax=min($TULIM_MONEY, .@tax); .@cp=limit(1, $TULIM_REPUTATION/10, 10); $TULIM_MONEY-=.@tax; - rodex_sendmail(gf_charnameid($TULIM_MAYOR$), "Tulimshar Townhall", "Term Income", "You've received the money for the term.", .@tax, StrangeCoin, .@cp); + rodex_sendmail(gf_charnameid($TULIM_MAYOR$), "Tulimshar Townhall", "Term Income", .@msg$, .@tax, StrangeCoin, .@cp); .@tax=$HALIN_EXPORT/500; .@tax+=$HALIN_REPUTATION*5; .@tax=min($HALIN_MONEY, .@tax); .@cp=limit(1, $HALIN_REPUTATION/10, 10); $HALIN_MONEY-=.@tax; - rodex_sendmail(gf_charnameid($HALIN_MAYOR$), "Halinarzo Townhall", "Term Income", "You've received the money for the term.", .@tax, StrangeCoin, .@cp); + rodex_sendmail(gf_charnameid($HALIN_MAYOR$), "Halinarzo Townhall", "Term Income", .@msg$, .@tax, StrangeCoin, .@cp); .@tax=$HURNS_EXPORT/500; .@tax+=$HURNS_REPUTATION*5; .@tax=min($HURNS_MONEY, .@tax); .@cp=limit(1, $HURNS_REPUTATION/10, 10); $HURNS_MONEY-=.@tax; - rodex_sendmail(gf_charnameid($HURNS_MAYOR$), "Hurnscald Townhall", "Term Income", "You've received the money for the term.", .@tax, StrangeCoin, .@cp); + rodex_sendmail(gf_charnameid($HURNS_MAYOR$), "Hurnscald Townhall", "Term Income", .@msg$, .@tax, StrangeCoin, .@cp); .@tax=$LOF_EXPORT/500; .@tax+=$LOF_REPUTATION*5; .@tax=min($LOF_MONEY, .@tax); .@cp=limit(1, $LOF_REPUTATION/10, 10); $LOF_MONEY-=.@tax; - rodex_sendmail(gf_charnameid($LOF_MAYOR$), "LoF Townhall", "Term Income", "You've received the money for the term.", .@tax, StrangeCoin, .@cp); + rodex_sendmail(gf_charnameid($LOF_MAYOR$), "LoF Townhall", "Term Income", .@msg$, .@tax, StrangeCoin, .@cp); .@tax=$NIVAL_EXPORT/500; .@tax+=$NIVAL_REPUTATION*5; .@tax=min($NIVAL_MONEY, .@tax); .@cp=limit(1, $NIVAL_REPUTATION/10, 10); $NIVAL_MONEY-=.@tax; - rodex_sendmail(gf_charnameid($NIVAL_MAYOR$), "Nivalis Townhall", "Term Income", "You've received the money for the term.", .@tax, StrangeCoin, .@cp); + rodex_sendmail(gf_charnameid($NIVAL_MAYOR$), "Nivalis Townhall", "Term Income", .@msg$, .@tax, StrangeCoin, .@cp); /* Towns with volunteer town admins .@tax=$FROSTIA_EXPORT/500; @@ -200,14 +206,14 @@ OnSun0000: .@tax=min($FROSTIA_MONEY, .@tax); .@cp=limit(1, $FROSTIA_REPUTATION/10, 10); $FROSTIA_MONEY-=.@tax; - rodex_sendmail(gf_charnameid($FROSTIA_MAYOR$), "Frostia Townhall", "Term Income", "You've received the money for the term.", .@tax, StrangeCoin, .@cp); + rodex_sendmail(gf_charnameid($FROSTIA_MAYOR$), "Frostia Townhall", "Term Income", .@msg$, .@tax, StrangeCoin, .@cp); .@tax=$CANDOR_EXPORT/500; .@tax+=$CANDOR_REPUTATION*5; .@tax=min($CANDOR_MONEY, .@tax); .@cp=limit(1, $CANDOR_REPUTATION/10, 10); $CANDOR_MONEY-=.@tax; - rodex_sendmail(gf_charnameid($CANDOR_MAYOR$), "Candor Townhall", "Term Income", "You've received the money for the term.", .@tax, StrangeCoin, .@cp); + rodex_sendmail(gf_charnameid($CANDOR_MAYOR$), "Candor Townhall", "Term Income", .@msg$, .@tax, StrangeCoin, .@cp); */ // Conduct elections @@ -368,7 +374,7 @@ function script POL_TownInfo { -// Town Managment +// Town Management // POL_Manage( TOWNCODE ) function script POL_Manage { .@town$="$"+getarg(0); @@ -432,9 +438,10 @@ function script POL_Manage { break; mesc l("Are you sure?"); if (askyesno() == ASK_YES) { + .@BN=rand2(.@cost/52, .@cost/24) + 1; .@GP=getd("$"+getarg(0)+"_MONEY"); setd(.@town$+"_MONEY", .@GP-.@cost); - setd(.@town$+"_EXPORT", .@EX+rand2(4,6)); + setd(.@town$+"_EXPORT", .@EX+.@BN); TOWN_ACTIONS[.@TP]+=1; mesc l("Investment executed"), 2; next; @@ -563,7 +570,7 @@ function script POL_Manage { } detachrid(); attachrid(.@you); - kamibroadcast(sprintf("%s has ANNULED THE EXILE %s from %s.", + kamibroadcast(sprintf("%s has ANNULLED THE EXILE %s from %s.", .@MAYOR$, .@ex$, getarg(0))); TOWN_ACTIONS[.@TP]+=6; break; diff --git a/npc/functions/util.txt b/npc/functions/util.txt index 2ee553b51..5ca6c3d6e 100644 --- a/npc/functions/util.txt +++ b/npc/functions/util.txt @@ -991,7 +991,7 @@ function script gettimeparam { if (.@p == GETTIME_WEEKDAY) return .@a; - // Months (estimative) + // Months (estimative. FIXME - use (gettime(YEAR)-1970)*12 + gettime(MONTH)) .@t=.@t/30; if (.@p == GETTIME_MONTH) return .@t; diff --git a/npc/functions/vault.txt b/npc/functions/vault.txt index 050eb4d6f..2911a47c1 100644 --- a/npc/functions/vault.txt +++ b/npc/functions/vault.txt @@ -34,8 +34,8 @@ function script MirrorLakeSendTo { closeclientdialog; dispbottom l("Darkness fills your vision..."); sleep2(1000); - //kick(getcharid(3), 7); // 7 is not a valid kick reason - atcommand("@kick "+strcharinfo(0)); + kick(getcharid(3), 7); // 7 is not a valid kick reason + //atcommand("@kick "+strcharinfo(0)); end; } |