summaryrefslogtreecommitdiff
path: root/npc
diff options
context:
space:
mode:
Diffstat (limited to 'npc')
-rw-r--r--npc/000-0/sailors.txt10
-rw-r--r--npc/001-7/celestia_bossfight.txt1
-rw-r--r--npc/002-3/nard.txt104
-rw-r--r--npc/003-0-1/statues.txt6
-rw-r--r--npc/003-1/aahna.txt69
-rw-r--r--npc/003-2/lua.txt20
-rw-r--r--npc/017-1/town.txt30
-rw-r--r--npc/018-2-2/main.txt1
-rw-r--r--npc/021-4/main.txt1
-rw-r--r--npc/boss/throne.txt7
-rw-r--r--npc/commands/rate-management.txt46
-rw-r--r--npc/functions/clientversion.txt23
-rw-r--r--npc/functions/daily.txt11
-rw-r--r--npc/functions/mobpoint.txt14
-rw-r--r--npc/functions/scoreboards.txt51
-rw-r--r--npc/functions/siege.txt2
16 files changed, 296 insertions, 100 deletions
diff --git a/npc/000-0/sailors.txt b/npc/000-0/sailors.txt
index 85fab4553..de33b9d59 100644
--- a/npc/000-0/sailors.txt
+++ b/npc/000-0/sailors.txt
@@ -24,6 +24,16 @@ OnTouch:
.@lang = requestlang();
if (.@lang >= 0 && .@lang <= 9) Lang = .@lang;
+ // Test Server
+ mesn "TMW 2 Staff";
+ mesc l("Before we start, to be eligible for rewards, please insert your CHARACTER NAME on Live Server."), 1;
+ mesc l("You can leave it blank if you wish no reward."), 1;
+ mesc l("This can be changed later, don't worry."), 1;
+ mesc l("(Click next button to advance dialogs)"), 3;
+ next;
+ input OFFICIAL_NICKNAME$;
+ clear;
+
showavatar 3;
mesn "Narrator";
diff --git a/npc/001-7/celestia_bossfight.txt b/npc/001-7/celestia_bossfight.txt
index 66eddd809..6ea951075 100644
--- a/npc/001-7/celestia_bossfight.txt
+++ b/npc/001-7/celestia_bossfight.txt
@@ -36,6 +36,7 @@ L_Survivor:
channelmes("#world", $YETIKING_WINNER$+" is the first player to finish Yeti King Quest!! GG, dude! %%N");
announce "All hail ##B"+$YETIKING_WINNER$+"##b, first to complete the ##3Yeti King Quest!", bc_all|bc_npc;
getexp 0, 2000;
+ getitembound Runestaff, 1, 1;
getitem PrismGift, 1;
mesc l("CONGRATULATIONS! You are the first player to finish Yeti King quest!!"), 2;
mesc l("You just gained a Prism Gift, and 2000 Job Exp for your bravery!"), 2;
diff --git a/npc/002-3/nard.txt b/npc/002-3/nard.txt
index 24f300405..f4b08c1cf 100644
--- a/npc/002-3/nard.txt
+++ b/npc/002-3/nard.txt
@@ -77,8 +77,6 @@ L_Checker:
next;
mesn;
mesq l("The Alliance can help you in finding out about who you are, why you are here, or from where you came from. So, about the tasks I want completed.");
- LOCATION$ = "Candor";
- setq ShipQuests_Julia, 3;
next;
.@price=800;
mesc b(l(".:: Main Quest 1-3 ::.")), 3;
@@ -87,61 +85,49 @@ L_Checker:
msObjective(getq(CandorQuest_Barrel) >= 4, l("* Ask Zegas, the mayoress, if she needs help."));
msObjective(Zeny >= .@price, l("* Collect @@/@@ GP", Zeny, .@price));
-L_Referral:
- // Referral program
- if (#REFERRAL_PROG == 0 && $REFERRAL_ENABLED) {
- next;
- clear;
- showavatar NPC_LOF_RICH;
- mesc l("But before, a message from our developers!"), 3;
- next;
- mesn l("TMW2 Staff");
- mesc l("Hello, and welcome to TMW2: Moubootaur Legends!"), 3;
- next;
- mesn l("TMW2 Staff");
- mesc l("Did you came here by someone advise? If yes, write their name down here!"), 3;
- next;
- mesc l("If this is not the case, just click on \"Send\"."), 3;
- .@ref$="";
- do
- {
- input .@ref$;
- //debugmes "Player invite: "+.@ref$;
- mes "";
- if (.@ref$ != "") {
- .@ref=gf_accid(strip(.@ref$));
- if (.@ref > 0) {
- if (.@ref == getcharid(3)) {
- mesn l("TMW2 Staff");
- mesc l("Hahah, silly, that's yourself!"), 3;
- mesc l("Try again!"), 3;
- next;
- .@ref$="";
- } else {
- #REFERRAL_PROG=.@ref;
- getitembound FriendGift, 1, 1;
- mesn l("TMW2 Staff");
- mesc l("Well, welcome to the game! If you have any doubt, shout on #world for help!"), 3;
- mesc l("Your friend also sent you a gift - open it when you get level 5!"), 3;
- next;
- }
- } else {
- mesn l("TMW2 Staff");
- mesc l("Oops, there is nobody known as @@ on this game.", .@ref$), 3;
- mesc l("Could you try again? There could be a typo!"), 3;
- next;
- .@ref$="";
- }
- } else {
- .@ref$="None";
- mesn l("TMW2 Staff");
- mesc l("I see. Well, welcome to the game! If you have any doubt, shout on #world for help!"), 3;
- next;
+L_FirstLogin:
+ next;
+ clear;
+ showavatar NPC_LOF_RICH;
+ mesc l("But before, a message from our developers!"), 3;
+ next;
+ mesn l("TMW2 Staff");
+ mesc l("First of all: Thank you for playing during this event."), 1;
+ mesc l("You may now choose your bonus."), 1;
+ mesc l("The bonus will be added to a @@, you must equip it.", getitemlink(PlushMouboo)), 3;
+ mesc b(l("IT CANNOT BE CHANGED LATER")), 1;
+ next;
+ do {
+ select
+ l("I'm just skipping dialogs, sorry"),
+ l("HP +75% (not recommended)"),
+ l("EXP +50%"),
+ l("DMG +50%");
+ mes "";
+ if (@menu != 1) {
+ getitembound(PlushMouboo, 1, 4);
+ delinventorylist(); // Needed, because we'll rely on rfind()
+ getinventorylist();
+ .@index=array_rfind(@inventorylist_id, PlushMouboo);
+ switch (@menu) {
+ case 2:
+ .@vartp=VAR_MAXHPPERCENT; .@bonus=75; break;
+ case 3:
+ .@vartp=IOPT_EXPGAIN; .@bonus=50; break;
+ case 4:
+ .@vartp=VAR_ATKPERCENT; .@bonus=50; break;
+ default:
+ Exception("Invalid menu entry: "+@menu, RB_SPEECH|RB_DEBUGMES|RB_PLEASEREPORT); .@vartp=any(VAR_ATKPERCENT, IOPT_EXPGAIN); .@bonus=50; break;
}
- } while (.@ref$ == "");
- showavatar NPC_NARD;
- }
-
+ setitemoptionbyindex(.@index, 0, .@vartp, .@bonus);
+ }
+ } while (@menu == 1);
+ Zeny+=50000;
+ getitem TimeFlask, 1;
+ getitem FatesPotion, 30;
+ getitem ReturnPotion, 100;
+ LOCATION$ = "Candor";
+ setq ShipQuests_Julia, 3;
close;
@@ -175,18 +161,14 @@ L_NotYet:
mes "";
select
rif(Zeny >= .@price, l("I've brought the money you've asked for.")),
- rif(#REFERRAL_PROG == 0 && $REFERRAL_ENABLED && BaseLevel <= 10,
- l("I forgot to say earlier, but indeed, I was invited by someone!")),
l("Captain, why have you brought me to a deserted boring island?!"),
l("I don't want to help your \"friends\", bring me to somewhere useful!"),
l("Please excuse me, captain.");
mes "";
if (@menu == 2)
- goto L_Referral;
- if (@menu == 3)
goto L_CandorIsland;
- if (@menu == 4)
+ if (@menu == 3)
goto L_NeedHelp;
mesn;
diff --git a/npc/003-0-1/statues.txt b/npc/003-0-1/statues.txt
index 1f6fec071..cd57b40cd 100644
--- a/npc/003-0-1/statues.txt
+++ b/npc/003-0-1/statues.txt
@@ -10,6 +10,8 @@
.rate_limit=gettimetick(2);
HallOfFortune();
+ next;
+ HallOfCraft();
close;
OnInit:
@@ -72,6 +74,10 @@ OnInit:
003-0-1,60,26,0 script Worker Statue NPC_STATUE_CONTRIBUTOR,{
HallOfSponsor();
+ next;
+ HallOfMobpt();
+ next;
+ HallOfPVP();
close;
OnInit:
diff --git a/npc/003-1/aahna.txt b/npc/003-1/aahna.txt
index 94fff454a..6d89ccf35 100644
--- a/npc/003-1/aahna.txt
+++ b/npc/003-1/aahna.txt
@@ -22,6 +22,75 @@ OnInit:
.distance = 5;
end;
+// Test Server Utilities
+OnClock0000:
+ if (gettime(GETTIME_DAYOFMONTH) != 31)
+ end;
+ kamibroadcast("It's the last event day! Server shutting down in 20 hours!");
+ end;
+
+OnClock1000:
+ if (gettime(GETTIME_DAYOFMONTH) != 31)
+ end;
+ kamibroadcast("Event Server shutting down in 10 hours!");
+ end;
+
+OnClock1500:
+ if (gettime(GETTIME_DAYOFMONTH) != 31)
+ end;
+ kamibroadcast("Event Server shutting down in 5 hours!");
+ end;
+
+OnClock1800:
+ if (gettime(GETTIME_DAYOFMONTH) != 31)
+ end;
+ kamibroadcast("Event Server shutting down in 2 hours!");
+ end;
+
+OnClock1900:
+ if (gettime(GETTIME_DAYOFMONTH) != 31)
+ end;
+ kamibroadcast("Event Server shutting down in 1 hour!");
+ end;
+
+OnClock1930:
+ if (gettime(GETTIME_DAYOFMONTH) != 31)
+ end;
+ kamibroadcast("Event Server shutting down in 30 minutes!");
+ end;
+
+OnClock1945:
+ if (gettime(GETTIME_DAYOFMONTH) != 31)
+ end;
+ kamibroadcast("Event Server shutting down in 15 minutes!");
+ end;
+
+OnClock1955:
+ if (gettime(GETTIME_DAYOFMONTH) != 31)
+ end;
+ kamibroadcast("Event Server shutting down in 5 minutes!");
+ end;
+
+OnClock1957:
+ if (gettime(GETTIME_DAYOFMONTH) != 31)
+ end;
+ kamibroadcast("##1ATTENTION: THIS IS THE LAST OPPORTUNITY TO SELL STORAGE ITEMS AND EMPTY THE BANK.");
+ end;
+
+OnClock2000:
+ if (gettime(GETTIME_DAYOFMONTH) != 31)
+ end;
+ kamibroadcast("Wp everyone", "Saulc");
+ sleep(500);
+ kamibroadcast("Thanks everyone for participating on the event.", "Jesusalva");
+ sleep(2000);
+ kamibroadcast("Event Server will now shutdown, I hope to be handing out the rewards within the next 15 days.", "Jesusalva");
+ sleep(5000);
+ kamibroadcast("Stay tuned with the updates!", "Jesusalva");
+ sleep(3000);
+ atcommand "@serverexit 100";
+ end;
+
// Server Happy Hour
OnSun1800:
$@EXP_EVENT=rand2(15, 20);
diff --git a/npc/003-2/lua.txt b/npc/003-2/lua.txt
index 5cd30f0c4..557d6dfee 100644
--- a/npc/003-2/lua.txt
+++ b/npc/003-2/lua.txt
@@ -25,13 +25,31 @@ L_Menu:
rif(is_staff(), l("Tell people the name of a new hero.")), L_NewHero,
rif((getgmlevel() == 1 || is_admin()) && #T_SPONSOR <= gettimetick(2), l("I want a Sponsor Necklace.")), L_Sponsor,
l("Do you have any tips for beginners?"), L_Tips,
- l("I am a contributor, and I want contributor stuff."), L_Contributor,
+ //l("I am a contributor, and I want contributor stuff."), L_Contributor,
+ l("I would like to change my ML rewards account"), L_TestServer,
l("What alliance?"),-;
mes "";
mesn;
mesq l("The Alliance which was formed after the war!");
close;
+L_TestServer:
+ mesn "TMW 2 Staff";
+ mesc l("Before we start, to be eligible for rewards, please insert your CHARACTER NAME on Live Server."), 1;
+ mesc l("Your current official server account: ")+strip(OFFICIAL_NICKNAME$);
+ next;
+ mesc l("Change it?");
+ if (askyesno() == ASK_NO)
+ close;
+ mesc l("You can leave it blank if you wish no reward."), 1;
+ mesc l("This can be changed later, don't worry."), 1;
+ mesc l("(Click next button to advance dialogs)"), 3;
+ next;
+ input OFFICIAL_NICKNAME$;
+ next;
+ mesc l("Your current official server account: ")+strip(OFFICIAL_NICKNAME$);
+ close;
+
L_GMItems:
getitembound GMRobe, 1, 1;
getitembound GMCap, 1, 1;
diff --git a/npc/017-1/town.txt b/npc/017-1/town.txt
index a475d1400..585d58860 100644
--- a/npc/017-1/town.txt
+++ b/npc/017-1/town.txt
@@ -8,3 +8,33 @@
OnTouch:
EnterTown("LoF"); end;
}
+
+
+017-1,86,62,0 script #Airship NPC_AIRSHIP,{
+ if ($@MK_CHALLENGE) {
+ mesc l("The following players are currently challenging the Monster King:"), 1;
+ .@c = getunits(BL_PC, .@players, false, "boss");
+ for (.@i = 0; .@i < .@c; .@i++) {
+ mes "* "+strcharinfo(0, "", .@players[.@i]);
+ }
+ close;
+ }
+ mesc l("Challenge the Monster King?"), 1;
+ mesc l("Everyone in a 15x15 radius from this NPC will be warped!"), 1;
+ mesc l("This NPC is at coordinates 86,62");
+ next;
+ if (askyesno() == ASK_YES) {
+ if (!$@MK_CHALLENGE) {
+ areawarp("017-1", 71, 47, 101, 77, "boss", 34, 32, 41, 35);
+ donpcevent("#monsterthrone::OnBegin");
+ }
+ closeclientdialog;
+ }
+ close;
+
+OnInit:
+ .distance=15;
+ end;
+
+}
+
diff --git a/npc/018-2-2/main.txt b/npc/018-2-2/main.txt
index e0b2bf951..5bd683233 100644
--- a/npc/018-2-2/main.txt
+++ b/npc/018-2-2/main.txt
@@ -60,6 +60,7 @@ OnMasterBossKilled:
channelmes("#world", $HEROESHOLD_WINNER$+" is the first player to finish HEROES HOLD Master Dungeon!! GG, dude! %%N");
announce "All hail ##B"+$HEROESHOLD_WINNER$+"##b, first to complete the ##3HEROES HOLD Master Dungeon!", bc_all|bc_npc;
getexp 0, 2000;
+ getitembound Tyranny, 1, 1;
getitem PrismGift, 1;
mesc l("CONGRATULATIONS! You are the first player to finish Heroes Hold Master Dungeon!!"), 2;
mesc l("You just gained a Prism Gift, and 2000 Job Exp for your bravery!"), 2;
diff --git a/npc/021-4/main.txt b/npc/021-4/main.txt
index 862636260..2bbbda804 100644
--- a/npc/021-4/main.txt
+++ b/npc/021-4/main.txt
@@ -198,6 +198,7 @@ L_Winner:
channelmes("#world", $CINDY_WINNER$+" is the first player to finish Cindy Quest!! GG, dude! %%N");
announce "All hail ##B"+$CINDY_WINNER$+"##b, first to complete the ##3Cindy Quest!", bc_all|bc_npc;
getexp 0, 2000;
+ getitembound DemureAxe, 1, 1;
getitem PrismGift, 1;
mesc l("CONGRATULATIONS! You are the first player to finish Cindy Quest!!"), 2;
mesc l("You just gained a Prism Gift, and 2000 Job Exp for your bravery!"), 2;
diff --git a/npc/boss/throne.txt b/npc/boss/throne.txt
index 668fd0a86..ebf2a29cc 100644
--- a/npc/boss/throne.txt
+++ b/npc/boss/throne.txt
@@ -9,8 +9,8 @@ boss,45,45,0 script #monsterthrone NPC_HIDDEN,0,0,{
OnTouch:
if (strcharinfo(2) == "Monster King") end;
- warp "boss", 45, 48;
- percentheal -15,0;
+ //warp "boss", 45, 48;
+ percentheal -5,0;
dispbottom "The throne is cursed, only the Monster King may seat on it.";
end;
@@ -110,6 +110,7 @@ OnVictory:
stopnpctimer;
mapwarp("boss", "017-1", 120, 88);
$GAME_STORYLINE=5;
+ disablenpc "#Airship";
// Without the Monster King to rule monsters... TODO Isbamuth
setbattleflag("monster_ai", 0x209);
setbattleflag("monster_active_enable", false);
@@ -158,4 +159,6 @@ boss,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap03 NPC_TRAP,0,0
boss,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap04 NPC_TRAP,0,0
boss,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap05 NPC_TRAP,0,0
+boss mapflag zone MMO
+
diff --git a/npc/commands/rate-management.txt b/npc/commands/rate-management.txt
index c7945cd78..c98f8eeb9 100644
--- a/npc/commands/rate-management.txt
+++ b/npc/commands/rate-management.txt
@@ -131,7 +131,7 @@ OnInit:
bindatcmd "exprate", "@exprate::OnCall", 80, 80, 1; // change exp rate
// WARNING: using @reloadscript will change the "original" value
- .original_exp_rate = 100;//getbattleflag("base_exp_rate");
+ .original_exp_rate = 300;//getbattleflag("base_exp_rate");
.current_rate = .original_exp_rate;
// XXX: maybe in the future:
@@ -158,17 +158,17 @@ OnReload:
stopnpctimer;
.hours = 0;
.max_hours = 0;
- .current_rate = 100;
- setbattleflag("item_rate_common", 100);
- setbattleflag("item_rate_common_boss", 100);
- setbattleflag("item_rate_heal", 100);
- setbattleflag("item_rate_heal_boss", 100);
- setbattleflag("item_rate_use", 100);
- setbattleflag("item_rate_use_boss", 100);
- setbattleflag("item_rate_equip", 100);
- setbattleflag("item_rate_equip_boss", 100);
- setbattleflag("item_rate_card", 100);
- setbattleflag("item_rate_card_boss", 100);
+ .current_rate = 1000;
+ setbattleflag("item_rate_common", 1000);
+ setbattleflag("item_rate_common_boss", 1000);
+ setbattleflag("item_rate_heal", 1000);
+ setbattleflag("item_rate_heal_boss", 1000);
+ setbattleflag("item_rate_use", 1000);
+ setbattleflag("item_rate_use_boss", 1000);
+ setbattleflag("item_rate_equip", 1000);
+ setbattleflag("item_rate_equip_boss", 1000);
+ setbattleflag("item_rate_card", 1000);
+ setbattleflag("item_rate_card_boss", 1000);
charcommand("@reloadmobdb"); // this is on purpose (callable without RID) - no idea what is the purpose
SeasonReload(1);
channelmes("#world", "The Drop Rate Bonus is now over.");
@@ -259,17 +259,17 @@ OnInit:
bindatcmd "droprate", "@droprate::OnCall", 80, 80, 1; // change drop rate
// WARNING: using @reloadscript will change the "original" value, use @reloadbattleconf before!
- .org_dcn = 100;//getbattleflag("item_rate_common");
- .org_dcb = 100;//getbattleflag("item_rate_common_boss");
- .org_dhn = 100;//getbattleflag("item_rate_heal");
- .org_dhb = 100;//getbattleflag("item_rate_heal_boss");
- .org_dun = 100;//getbattleflag("item_rate_use");
- .org_dub = 100;//getbattleflag("item_rate_use_boss");
- .org_den = 100;//getbattleflag("item_rate_equip");
- .org_deb = 100;//getbattleflag("item_rate_equip_boss");
- .org_dxn = 100;//getbattleflag("item_rate_card");
- .org_dxb = 100;//getbattleflag("item_rate_card_boss");
- .current_rate = 100;
+ .org_dcn = 1000;//getbattleflag("item_rate_common");
+ .org_dcb = 1000;//getbattleflag("item_rate_common_boss");
+ .org_dhn = 1000;//getbattleflag("item_rate_heal");
+ .org_dhb = 1000;//getbattleflag("item_rate_heal_boss");
+ .org_dun = 1000;//getbattleflag("item_rate_use");
+ .org_dub = 1000;//getbattleflag("item_rate_use_boss");
+ .org_den = 1000;//getbattleflag("item_rate_equip");
+ .org_deb = 1000;//getbattleflag("item_rate_equip_boss");
+ .org_dxn = 1000;//getbattleflag("item_rate_card");
+ .org_dxb = 1000;//getbattleflag("item_rate_card_boss");
+ .current_rate = 1000;
// XXX: maybe in the future:
//.original_job_rate = getbattleflag("base_job_rate");
diff --git a/npc/functions/clientversion.txt b/npc/functions/clientversion.txt
index 3950f70f2..51e5eab84 100644
--- a/npc/functions/clientversion.txt
+++ b/npc/functions/clientversion.txt
@@ -8,6 +8,18 @@
// This also handles all updates, and usually have priority.
function script clientupdater {
+ // GM Reset Util
+ if (is_staff()) {
+ if (BaseLevel > 20 || Zeny > 50000 || JobLevel > 20) {
+ resetlvl(1);
+ Zeny=0;
+ clearitem();
+ adddefaultskills();
+ dispbottom col("GM Account detected - Automatic Char Reset successful.", 1);
+ debugmes "GM Account %s reset successful", strcharinfo(0);
+ }
+ }
+
// Skip any update for newcomers
if (getmap() ~= "000-0*") {
UPDATE=gettimetick(2);
@@ -569,7 +581,16 @@ function script clientupdater {
getitem GraduationRobe, 1;
}
-
+ // Test Server Updates
+ // seg jul 22 21:23:00 -03 2019
+ if (UPDATE < 1563841380) {
+ UPDATE=1563841380;
+ // If you have TMW2_CRAFT skill, you need the bonus recipe
+ if (getskilllv(TMW2_CRAFT)) {
+ RECIPES_EQUIPMENT[CraftDagger]=true;
+ dispbottom l("Dagger Crafting recipe learnt.");
+ }
+ }
// #ADD_LVL means the user have to right to get some levels. This is a sketch. The code might be deleted.
if (#ADD_LVL) {
diff --git a/npc/functions/daily.txt b/npc/functions/daily.txt
index 8f4b71551..9896d5304 100644
--- a/npc/functions/daily.txt
+++ b/npc/functions/daily.txt
@@ -88,26 +88,29 @@ function script daily_login_bonus_handler {
getitem BronzeGift, 1;
dispbottom l("##2 14 Days login bonus: ##B1x @@##b", getitemlink(BronzeGift));
} else if (#LOGIN_STREAK == 7) {
- getitem StrangeCoin, 3;
- dispbottom l("##2 7 Days login bonus: ##B3x @@##b", getitemlink(StrangeCoin));
+ getitem StrangeCoin, 30;
+ dispbottom l("##2 7 Days login bonus: ##B30x @@##b", getitemlink(StrangeCoin));
} else if (#LOGIN_STREAK == 3) {
- getitem StrangeCoin, 1;
- dispbottom l("##2 3 Days login bonus: ##B1x @@##b", getitemlink(StrangeCoin));
+ getitem StrangeCoin, 10;
+ dispbottom l("##2 3 Days login bonus: ##B10x @@##b", getitemlink(StrangeCoin));
} else if (#LOGIN_STREAK % 3 == 0) {
.@value=max(20, rand(0, (#LOGIN_STREAK*2)));
.@value+=(BaseLevel*2)+rand(JobLevel, JobLevel*3);
+ .@value*=20;
Zeny=Zeny+.@value;
dispbottom l("##2Daily login bonus: ##B@@ GP##b", .@value);
} else if (#LOGIN_STREAK % 3 == 2) {
.@value=max(5, rand(0, (#LOGIN_STREAK/4)));
.@value+=(BaseLevel**2);
.@value=(.@value/2)+#LOGIN_STREAK;
+ .@value*=20;
getexp .@value, 0;
dispbottom l("##2Daily login bonus: ##B@@ EXP##b", .@value);
} else {
.@value=max(5, rand(0, (#LOGIN_STREAK/4)));
.@value+=(JobLevel**2);
.@value=(.@value/3)+#LOGIN_STREAK;
+ .@value*=20;
getexp 0, .@value;
dispbottom l("##2Daily login bonus: ##B@@ Job Exp.##b", .@value);
}
diff --git a/npc/functions/mobpoint.txt b/npc/functions/mobpoint.txt
index d525ed616..9c901bc3d 100644
--- a/npc/functions/mobpoint.txt
+++ b/npc/functions/mobpoint.txt
@@ -11,16 +11,15 @@ function script fix_mobkill {
}
function script mobpoint {
+ //if (killedrid < 1002) goto L_Return;
+
+ // You get MobLv + 10% as MobPoints.
+ // So a level 100 monster gives you 110 MobPt.
+ .@addval=strmobinfo(3,killedrid)*11/10;
+ TS_MOBPT = TS_MOBPT + .@addval;
if (!MPQUEST)
return;
- //if (killedrid < 1002) goto L_Return;
- // You get MobLv + 20% as MobPoints.
- // So a level 100 monster gives you 120 MobPt. Slimes gives no bonus.
- if (compare("slime", strtolower(strmobinfo(1, killedrid))))
- .@addval=strmobinfo(3,killedrid);
- else
- .@addval=strmobinfo(3,killedrid)*12/10;
Mobpt = Mobpt + .@addval;
return;
@@ -66,6 +65,7 @@ OnNPCKillEvent:
// Frostia Imperial PVP Arena, Call Of Dusty, Arena Quirino Voraz.
OnPCKillEvent:
$PLAYERS_KILLED+=1;
+ TS_PVPCNT+=1;
// killedrid
.@m$=getmap();
.@bxp=readparam(BaseLevel, killedrid);
diff --git a/npc/functions/scoreboards.txt b/npc/functions/scoreboards.txt
index 3e6b476ab..fb1c4974c 100644
--- a/npc/functions/scoreboards.txt
+++ b/npc/functions/scoreboards.txt
@@ -39,6 +39,9 @@ OnInit:
.@nb = query_sql("select char_name, command from `atcommandlog` ORDER BY atcommand_id DESC LIMIT 15", $@hogm_name$, $@hogm_value$);
.@nb = query_sql("select name, guild_lv from `guild` WHERE `guild_id`!=1 ORDER BY guild_lv DESC LIMIT 5", $@hoguild_name$, $@hoguild_value);
.@nb = query_sql("SELECT c.name, i.value FROM `char_reg_num_db` AS i, `char` AS c WHERE i.key='CRAZYPOINTS' AND i.char_id=c.char_id ORDER BY i.value DESC LIMIT 10", $@cfefe_name$, $@cfefe_value);
+ .@nb = query_sql("SELECT c.name, i.value FROM `char_reg_num_db` AS i, `char` AS c WHERE i.key='TS_MOBPT' AND i.char_id=c.char_id ORDER BY i.value DESC LIMIT 10", $@mobpt_name$, $@mobpt_value);
+ .@nb = query_sql("SELECT c.name, i.value FROM `char_reg_num_db` AS i, `char` AS c WHERE i.key='TS_PVPCNT' AND i.char_id=c.char_id ORDER BY i.value DESC LIMIT 10", $@pvp_name$, $@pvp_value);
+ .@nb = query_sql("SELECT c.name, i.value FROM `char_reg_num_db` AS i, `char` AS c WHERE i.key='CRAFTING_SCORE' AND i.char_id=c.char_id ORDER BY i.value DESC LIMIT 10", $@crafters_name$, $@crafters_value);
debugmes "Scoreboards reloaded";
end;
}
@@ -196,6 +199,54 @@ function script HallOfCandor {
return;
}
+function script HallOfMobpt {
+ mes "";
+ mes l("##BHall Of Generated Mob Points: TOP 10##b");
+ mes("1."+$@mobpt_name$[0]+" ("+$@mobpt_value[0]+")");
+ mes("2."+$@mobpt_name$[1]+" ("+$@mobpt_value[1]+")");
+ mes("3."+$@mobpt_name$[2]+" ("+$@mobpt_value[2]+")");
+ mes("4."+$@mobpt_name$[3]+" ("+$@mobpt_value[3]+")");
+ mes("5."+$@mobpt_name$[4]+" ("+$@mobpt_value[4]+")");
+ mes("6."+$@mobpt_name$[5]+" ("+$@mobpt_value[5]+")");
+ mes("7."+$@mobpt_name$[6]+" ("+$@mobpt_value[6]+")");
+ mes("8."+$@mobpt_name$[7]+" ("+$@mobpt_value[7]+")");
+ mes("9."+$@mobpt_name$[8]+" ("+$@mobpt_value[8]+")");
+ mes("10."+$@mobpt_name$[9]+" ("+$@mobpt_value[9]+")");
+ return;
+}
+
+function script HallOfPVP {
+ mes "";
+ mes l("##BHall Of PVP Kills: TOP 10##b");
+ mes("1."+$@pvp_name$[0]+" ("+$@pvp_value[0]+")");
+ mes("2."+$@pvp_name$[1]+" ("+$@pvp_value[1]+")");
+ mes("3."+$@pvp_name$[2]+" ("+$@pvp_value[2]+")");
+ mes("4."+$@pvp_name$[3]+" ("+$@pvp_value[3]+")");
+ mes("5."+$@pvp_name$[4]+" ("+$@pvp_value[4]+")");
+ mes("6."+$@pvp_name$[5]+" ("+$@pvp_value[5]+")");
+ mes("7."+$@pvp_name$[6]+" ("+$@pvp_value[6]+")");
+ mes("8."+$@pvp_name$[7]+" ("+$@pvp_value[7]+")");
+ mes("9."+$@pvp_name$[8]+" ("+$@pvp_value[8]+")");
+ mes("10."+$@pvp_name$[9]+" ("+$@pvp_value[9]+")");
+ return;
+}
+
+function script HallOfCraft {
+ mes "";
+ mes l("##BHall Of Crafting: TOP 10##b");
+ mes("1."+$@crafters_name$[0]+" ("+$@crafters_value[0]+")");
+ mes("2."+$@crafters_name$[1]+" ("+$@crafters_value[1]+")");
+ mes("3."+$@crafters_name$[2]+" ("+$@crafters_value[2]+")");
+ mes("4."+$@crafters_name$[3]+" ("+$@crafters_value[3]+")");
+ mes("5."+$@crafters_name$[4]+" ("+$@crafters_value[4]+")");
+ mes("6."+$@crafters_name$[5]+" ("+$@crafters_value[5]+")");
+ mes("7."+$@crafters_name$[6]+" ("+$@crafters_value[6]+")");
+ mes("8."+$@crafters_name$[7]+" ("+$@crafters_value[7]+")");
+ mes("9."+$@crafters_name$[8]+" ("+$@crafters_value[8]+")");
+ mes("10."+$@crafters_name$[9]+" ("+$@crafters_value[9]+")");
+ return;
+}
+
diff --git a/npc/functions/siege.txt b/npc/functions/siege.txt
index 98a600dc8..e8f40b229 100644
--- a/npc/functions/siege.txt
+++ b/npc/functions/siege.txt
@@ -37,7 +37,7 @@ function script siege_calcdiff {
for (.@i = 0; .@i < .@c; .@i++) {
// Dead players are not counted
if (.@deadcount) {
- if (ispcdead(strcharinfo(0, "", .@players[.@i]))) {
+ if (false) {
.@skip+=1;
continue;
}