summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/re/item_db.conf2
-rw-r--r--db/re/mob_db.conf6
-rw-r--r--npc/001-11/Demure.txt93
-rw-r--r--npc/001-11/Soren.txt51
-rw-r--r--npc/001-11/_import.txt3
-rw-r--r--npc/001-11/_mobs.txt5
-rw-r--r--npc/017-3/loratay.txt21
-rw-r--r--npc/functions/seasons.txt1
8 files changed, 176 insertions, 6 deletions
diff --git a/db/re/item_db.conf b/db/re/item_db.conf
index 40291ca80..0b288f611 100644
--- a/db/re/item_db.conf
+++ b/db/re/item_db.conf
@@ -752,7 +752,7 @@ item_db: (
Script: <"
@min = 20;
@max = 30;
- if ($EVENT$ == "Easter") {
+ if ($EVENT$ == "Easter" || $EVENT$ == "Valentine") {
@min = 200;
@max = 300;
}
diff --git a/db/re/mob_db.conf b/db/re/mob_db.conf
index d430a0c1c..f8d18facd 100644
--- a/db/re/mob_db.conf
+++ b/db/re/mob_db.conf
@@ -1643,8 +1643,10 @@ mob_db: (
AttackMotion: 672
DamageMotion: 480
Drops: {
- LoveLetter: 200
- Carrot: 41
+ BoxOfChocolates: 1000
+ LoveLetter: 100
+ Carrot: 51
+ EverburnPowder: 6
FluffyHat: 1
}
},
diff --git a/npc/001-11/Demure.txt b/npc/001-11/Demure.txt
new file mode 100644
index 000000000..14b3cd1d3
--- /dev/null
+++ b/npc/001-11/Demure.txt
@@ -0,0 +1,93 @@
+// TMW2 scripts.
+// Author:
+// Jesusalva
+// Description:
+// Valentine Event Master
+
+001-11,40,25,0 script Demure#Valentine NPC_FEMALE,{
+ function ScoreValentine {
+ .@nb = query_sql("SELECT c.name, i.value FROM `acc_reg_num_db` AS i, `char` AS c WHERE i.key='#VALENTINE_POINTS' AND i.account_id=c.account_id ORDER BY i.value DESC LIMIT 10", .@name$, .@value);
+
+ mes "##B"+l("Top 10 - Valentine Day")+"##b";
+ mes("1." +.@name$[0]+" ("+.@value[0]+")");
+ mes("2." +.@name$[1]+" ("+.@value[1]+")");
+ mes("3." +.@name$[2]+" ("+.@value[2]+")");
+ mes("4." +.@name$[3]+" ("+.@value[3]+")");
+ mes("5." +.@name$[4]+" ("+.@value[4]+")");
+ mes("6." +.@name$[5]+" ("+.@value[5]+")");
+ mes("7." +.@name$[6]+" ("+.@value[6]+")");
+ mes("8." +.@name$[7]+" ("+.@value[7]+")");
+ mes("9." +.@name$[8]+" ("+.@value[8]+")");
+ mes("10."+.@name$[9]+" ("+.@value[9]+")");
+ next;
+ }
+ // Safety Check
+ if ($EVENT$ != "Valentine") {
+ warp "Save", 0, 0; end;
+ }
+
+ // Demure Main
+ mesn;
+ mesq l("That annoying guy on the side of the tree is annoying. I want to ban him.");
+ next;
+ mesn;
+ mesq l("Anyway, it is Valentine Day, a good day to trade @@ with your admired one!", getitemlink(BoxOfChocolates));
+ next;
+ do {
+ mesc l("You currently have @@ points, @@ boxes of chocolate and @@ love letters.", #VALENTINE_POINTS, countitem(BoxOfChocolates), countitem(LoveLetter));
+ mesc l("@@ boxes of chocolate were given to you as a gift.", #VALENTINE_OPENED-#VALENTINE_RECEIVED);
+ mes "";
+ select
+ l("Information"),
+ l("Scoreboards"),
+ l("Send Chocolate"),
+ l("Receive Chocolate"),
+ l("Okay, bye");
+ mes "";
+
+ switch (@menu) {
+ case 1:
+ mesn;
+ mes lg("Valentine Day event consist in gathering @@ and sending them to your loved one.", getitemlink(BoxOfChocolates));
+ next;
+ mesn;
+ mes l("Don't worry if they don't correspond to you. Each box sent will grant you 1 event point.");
+ mes l("The prizes are only for the top 10, but Loratay on Land Of Fire Village can make a dress for you.");
+ next;
+ mes l("You can optionally send a @@ along the chocolate box, so the person knows it was you who sent the chocolate.", gettitemlink(LoveLetter));
+ mes l("Sending the letter will give you double event points, capped to 10 extra points.");
+ next;
+ mes l("When receiving the chocolate, you must eat it before event ends to get a point for that!");
+ mes l("These boxes cannot be sold, but they'll be deleted a while after the event ends.");
+ next;
+ mes l("As with all TMW2 Major Events, the top 1 receive a special pet, and the other ranked ones get diverse rewards.");
+ mes l("There might be reward for anyone who doesn't gets a rank, but I never count on that. So, let's start?");
+ next;
+ break;
+ case 2:
+ ScoreValentine();
+ break;
+ case 3:
+ case 4:
+ mesn;
+ mesq l("NYI");
+ break;
+ }
+ } while (@menu != 5);
+ closedialog;
+ goodbye;
+ close;
+
+OnInit:
+ .@npcId = getnpcid(.name$);
+ setunitdata(.@npcId, UDT_HEADTOP, GMCap);
+ setunitdata(.@npcId, UDT_HEADMIDDLE, GMRobe);
+ setunitdata(.@npcId, UDT_HAIRSTYLE, 14);
+ setunitdata(.@npcId, UDT_HAIRCOLOR, 18);
+
+ .sex = G_FEMALE;
+ .distance = 5;
+ end;
+
+}
+
diff --git a/npc/001-11/Soren.txt b/npc/001-11/Soren.txt
new file mode 100644
index 000000000..a98453a39
--- /dev/null
+++ b/npc/001-11/Soren.txt
@@ -0,0 +1,51 @@
+// TMW2 scripts.
+// Author:
+// Jesusalva
+// Description:
+// NPC obssessed in sending gifts to Demure
+
+001-11,37,25,0 script Soren xd#Valentine NPC_PLAYER,{
+ mesn;
+ mesq l("I will harass Demure with so many chocolate that she'll leave this event map rolling!");
+ next;
+
+L_Main:
+ mesn;
+ mesq l("Do you want me to prepare more chocolate box for you? For that I'll need:");
+ msObjective(countitem(ChocolateBar) >= 12, l("* @@/12 @@", countitem(ChocolateBar), getitemlink(ChocolateBar)));
+ msObjective(Zeny >= 200, l("* @@/200 GP", format_number(Zeny)));
+ if (countitem(ChocolateBar) < 12 || Zeny < 200)
+ close;
+ next;
+ if (askyesno() == ASK_NO)
+ close;
+ if (Zeny < 200)
+ warp "001-9", 0, 0;
+
+ inventoryplace BoxOfChocolates, 1;
+ delitem ChocolateBar, 12;
+ Zeny=Zeny-200;
+ getitem BoxOfChocolates, 1;
+ mesn;
+ mesq l("Here you go!");
+ if (countitem(ChocolateBar) >= 12) {
+ mesq l("Anything else?");
+ next;
+ goto L_Main;
+ }
+ close;
+
+OnInit:
+ .@npcId = getnpcid(.name$);
+ setunitdata(.@npcId, UDT_HEADTOP, CandorShorts);
+ setunitdata(.@npcId, UDT_HEADMIDDLE, CandorShirt);
+ setunitdata(.@npcId, UDT_HAIRSTYLE, 14);
+ setunitdata(.@npcId, UDT_HAIRCOLOR, 18);
+
+ .sex = G_MALE;
+ .distance = 5;
+ end;
+
+
+}
+
diff --git a/npc/001-11/_import.txt b/npc/001-11/_import.txt
index 503e48ed9..8474bc588 100644
--- a/npc/001-11/_import.txt
+++ b/npc/001-11/_import.txt
@@ -1,3 +1,6 @@
// Map 001-11: Valentine Highlands
// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/001-11/Demure.txt",
+"npc/001-11/Soren.txt",
+"npc/001-11/_mobs.txt",
"npc/001-11/event_soulmenhir.txt",
diff --git a/npc/001-11/_mobs.txt b/npc/001-11/_mobs.txt
new file mode 100644
index 000000000..f111aa73a
--- /dev/null
+++ b/npc/001-11/_mobs.txt
@@ -0,0 +1,5 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 001-11: Valentine Highlands mobs
+001-11,47,34,29,14 monster Lovely Fluffy 1050,6,15000,1500
+001-11,48,34,32,16 monster Red Mushroom 1024,2,75000,150000
+001-11,74,48,1,2 monster Chocolate Slime 1180,1,120000,150000
diff --git a/npc/017-3/loratay.txt b/npc/017-3/loratay.txt
index d2da01b54..c9f640b4b 100644
--- a/npc/017-3/loratay.txt
+++ b/npc/017-3/loratay.txt
@@ -21,11 +21,26 @@
close;
L_Valentine:
- // Lorem ipsum dolor sit amet
- close;
+ mesn;
+ mesq l("It's valentine day, and I got my hands on a @@ model!", getitemlink(ValentineDress, RedDye));
+ next;
+ // Standard date: 12~15 feb
+ // Std price range: 288 ~ 383 points
+ .@todayprice=(gettime(GETTIME_DAYOFMONTH)*24)+gettime(GETTIME_HOUR);
+ mesn;
+ mesq l("You currently have @@ event points, but for ONLY @@ points I can make a dress for you!", #VALENTINE_POINTS, .@todayprice);
+ mesc l("The price raises hourly, don't leave to make it on the last day!");
+ if (#VALENTINE_POINTS < .@todayprice)
+ close;
+ next;
+ mesn;
+ mesq l("Do you want to trade your points? The demand keep raising, and so does the price!");
+ if (askyesno() == ASK_NO)
+ close;
setq SQuest_Valentine, gettime(GETTIME_YEAR);
- getitem2(ValentineDress, 1, 1, 0, 0, any(DarkRedDye, RedDye), 0,0,0);
+ #VALENTINE_POINTS-=.@todayprice;
+ getitem2(ValentineDress, 1, 1, 0, 0, any(RedDye, RedDye, DarkRedDye, RedDye), 0,0,0); // 25% chance to get an ugly dress
getexp BaseLevel*110, JobLevel*11;
mesn;
mesq l("There you go, your Valentine Dress!");
diff --git a/npc/functions/seasons.txt b/npc/functions/seasons.txt
index e60a97d82..cbed27770 100644
--- a/npc/functions/seasons.txt
+++ b/npc/functions/seasons.txt
@@ -111,6 +111,7 @@ function script sChristmas {
function script sValentine {
// Add Valentine drops
addmonsterdrop(ChocolateSlime, LoveLetter, 8);
+ addmonsterdrop(RedMushroom, LoveLetter, 4);
return;
}