diff options
-rw-r--r-- | db/re/item_db.conf | 2 | ||||
-rw-r--r-- | db/re/mob_db.conf | 6 | ||||
-rw-r--r-- | npc/001-11/Demure.txt | 93 | ||||
-rw-r--r-- | npc/001-11/Soren.txt | 51 | ||||
-rw-r--r-- | npc/001-11/_import.txt | 3 | ||||
-rw-r--r-- | npc/001-11/_mobs.txt | 5 | ||||
-rw-r--r-- | npc/017-3/loratay.txt | 21 | ||||
-rw-r--r-- | npc/functions/seasons.txt | 1 |
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; } |