diff options
author | Jesusaves <cpntb1@ymail.com> | 2019-07-26 00:03:37 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2019-07-26 00:03:37 -0300 |
commit | fec35860f0876dd7bb74a13896c28532c91ca766 (patch) | |
tree | aa5007c71264fac015e2c4f8327fd125bf856c43 /npc | |
parent | 4e51c716a63fb1bfd642bb8fd153c57b7a59f5a6 (diff) | |
parent | 5c3a947469b62af30542a0773c9cb70c189a692a (diff) | |
download | serverdata-fec35860f0876dd7bb74a13896c28532c91ca766.tar.gz serverdata-fec35860f0876dd7bb74a13896c28532c91ca766.tar.bz2 serverdata-fec35860f0876dd7bb74a13896c28532c91ca766.tar.xz serverdata-fec35860f0876dd7bb74a13896c28532c91ca766.zip |
Merge branch 'master' into testserver
Diffstat (limited to 'npc')
-rw-r--r-- | npc/002-3/elmo.txt | 1 | ||||
-rw-r--r-- | npc/002-3/nard.txt | 2 | ||||
-rw-r--r-- | npc/003-0/notes | 113 | ||||
-rw-r--r-- | npc/003-0/trickmaster.txt | 5 | ||||
-rw-r--r-- | npc/003-1/constableperry.txt | 2 | ||||
-rw-r--r-- | npc/003-10/kreist.txt | 14 | ||||
-rw-r--r-- | npc/003-3/malindou.txt | 2 | ||||
-rw-r--r-- | npc/012-5/nicholas.txt | 2 | ||||
-rw-r--r-- | npc/014-3/_mobs.txt | 3 | ||||
-rw-r--r-- | npc/017-3/vault.txt | 24 | ||||
-rw-r--r-- | npc/018-2-4/vault.txt | 24 | ||||
-rw-r--r-- | npc/024-16/generals.txt | 6 | ||||
-rw-r--r-- | npc/functions/TODO.txt | 96 | ||||
-rw-r--r-- | npc/functions/clientversion.txt | 79 | ||||
-rw-r--r-- | npc/items/alcohol.txt | 24 | ||||
-rw-r--r-- | npc/scripts.conf | 1 |
16 files changed, 230 insertions, 168 deletions
diff --git a/npc/002-3/elmo.txt b/npc/002-3/elmo.txt index ee36f8e2b..3aa022b19 100644 --- a/npc/002-3/elmo.txt +++ b/npc/002-3/elmo.txt @@ -151,6 +151,7 @@ function ExpBoost { .@BONUS=.@AVG_LEVEL/4; sc_end SC_OVERLAPEXPUP; sc_start SC_OVERLAPEXPUP, 3600000, min(25, .@BONUS); + mesc l("EXP Gain raised in @@% for one hour!", min(25, .@BONUS)), 2; return; } diff --git a/npc/002-3/nard.txt b/npc/002-3/nard.txt index f28449899..5feca5164 100644 --- a/npc/002-3/nard.txt +++ b/npc/002-3/nard.txt @@ -67,7 +67,7 @@ L_Checker: sc_end SC_OVERLAPEXPUP; sc_start SC_OVERLAPEXPUP, 3600000, min(25, .@BONUS); specialeffect FX_SPECIAL, SELF, getcharid(3); - mesc l("EXP Gain raised in @@% for one hour!", .@BONUS), 2; + mesc l("EXP Gain raised in @@% for one hour!", min(25, .@BONUS)), 2; next; showavatar NPC_NARD; mesn; diff --git a/npc/003-0/notes b/npc/003-0/notes new file mode 100644 index 000000000..cc277008b --- /dev/null +++ b/npc/003-0/notes @@ -0,0 +1,113 @@ +FFA - FREE FOR ALL + AL_DP (Divine Protection, +DEF vs undead/evil) (raised at Mana Stone) + +---- +AOE (DESTRUCTIVE MAGIC) + MG_NAPALMBEAT + MG_FIREBALL + WZ_FROSTNOVA (38%+5% freeze, 73%+7%/lv MATK) + +SINGLE TARGET (D.M.) + AL_HOLYLIGHT (standard holy magic attack - 125% of MATK) + MG_SOULSTRIKE (+5% MATK, +1 hit each 2 levels) + MG_COLDBOLT (ele) + MG_FIREBOLT (ele) + MG_LIGHTININGBOLT (ele) + WZ_EARTHSPIKE (ele / not a bolt for PF_DOUBLECASTING) + MG_FROSTDIVER (38%+3% freeze, +10% MATK) + + + +AOE (P.S.) + ASC_METEORASSAULT (area: self 2X2, 80%+40%/lv ATK, 10+5%/lv stun/blind/bleed) + AC_SHOWER (3x3 attack for BOWS) + +SINGLE TARGET (PHYSICAL SCIENCE) + SM_BASH (+30% ATK, HIT +5%, após lv 6: stun (5%/lv)) + MC_MAMMONITE (+50% atk/lv) + KN_AUTOCOUNTER (contra-ataque, TOP) + + AC_CHARGEARROW (Ranged, 150% DMG, 6 tiles knockback, NEED GWENDOLYN) + SN_SHARPSHOOTING (ULTIMATE ranged attack) + + + +SUPPORT SCIENCE / SCHOLARSHIP (self) + AC_OWL (raise 1 DEX per level) + SA_DRAGONOLOGY (PV: +4% ATK, +2% MATK, +1 INT and +4% resist against DRAGONS) + TMW2_SAGE (PV: grants up to 1.5 extra mana exp point/level) + MG_SRECOVERY (PV: small increase to SP Recovery while idle each 10 sec.) + SM_RECOVERY (PV: small increase to HP Recovery while idle each 10 sec.) + + SN_WINDWALK (raise walking speed +2%/lv and flee rate +1/2lv) + + CR_TRUST (PV: MaxHP +200/lv, Holy DEF +5%/lv) + AC_VULTURE (PV: raise range and cth with BOWS) + +SUPPORT SCIENCE / SCHOLARSHIP (MMO) + AL_HEAL (basic healing) + AL_INCAGI (raise agi in 3+1/lv) + HW_MAGICPOWER (aumenta poder da próxima skill em MATK 5%/lv) + SM_PROVOKE (provoca um monstro especifico - exceto BOSS) + AL_ANGELUS (14x14, party, def +5%/lv) + TF_DETOXIFY (cancels poison. 40% MP.) + AC_CONCENTRATION (self: agi/dex 3+1%/lv, unhide enemies 3x3) + AB_HIGHNESSHEAL (REAL healing skill) + ALL_RESURRECTION (reviver, requer permitir target players mortos) + EVOL_MASS_PROVOKE (provoca mobs em área) + + PR_ASPERSIO (bestow holy element on weapon for 1m. Holy dmg to undead/evil.) + SA_FLAMELAUNCHER (bestow fire element on weapon for 2m, 70% cth) + SA_FROSTWEAPON (bestow water element on weapon for 2m, 70% cth) + SA_LIGHTNINGLOADER (bestow wind element on weapon for 2m, 70% cth) + SA_SEISMICWEAPON (bestow earth element on weapon for 2m, 70% cth) + + GC_DARKCROW (Max Lv 1: DMG +100%, Short Range DMG +30%) + + + +TRICKS SCIENCE + SA_FREECAST (move after casting) + TF_BACKSLIDING (pulo pra trás) + MG_FIREWALL (wall of fire: 50% dmg x3+1/lv hits, knockback 2 cells) + ALL_FULL_THROTTLE (Stat +20%, full heal, move speed x2 - w/ rebound, last resort) + GC_DARKILLUSION (tp pra cima do mob/player com um ataque, pode causar dano extra - 4%/lv) + NV_TRICKDEAD (se finge de morto) + SO_FIREWALK (deixa fogo aonde passa - 60% MATK) + + + + + + +UNUSED/SPECIAL + BA_PANGVOICE (confuse, EXTREME DESYNC) + GS_SNAKEEYE (→AC_VULTURE) + +THIEF/MERCHANT-POLICE + ALL_INCCARRY + TF_STEAL + ...? + MC_PUSHCART? + MC_VENDING? + + + +BROKEN + PF_HPCONVERSION (10% HP vira MP (10%/lv)) + HP_MEDITATIO (PV: MP Regen +3%/lv, MSP +1%/lv, AL_HEAL +2%/lv stronger) + GS_MAGICALBULLET (adds MATK to your regular attack) Does'nt works? + CR_DEFENDER (less damage from ranged attacks, but lowers move & attack speed. Req. Shield) - max lv 4 plz. Last 3m? + +USEFUL COMMANDS + npcskill(<skill id>, <skill lvl>, <stat point>, <NPC level>) + npcskill(AL_HEAL, 10, 99, 60); + + unitskilluseid(<GID>, <skill id>, <skill lvl>{, <target id>}) + unitskillusepos(<GID>, <skill id>, <skill lvl>, <x>, <y>) + +*defpattern(<set number>, "<regular expression pattern>", "<event label>") +*activatepset(<set number>) +*deactivatepset(<set number>) +*deletepset(<set number>) + diff --git a/npc/003-0/trickmaster.txt b/npc/003-0/trickmaster.txt index 19c590955..f8b3a8110 100644 --- a/npc/003-0/trickmaster.txt +++ b/npc/003-0/trickmaster.txt @@ -19,6 +19,7 @@ "freecast", SA_FREECAST, "backslide", TF_BACKSLIDING, "firewall", MG_FIREWALL, + "inccarry", ALL_INCCARRY, "fullthrottle", ALL_FULL_THROTTLE, "darkillusion", GC_DARKILLUSION, "trickdead", NV_TRICKDEAD, @@ -40,6 +41,10 @@ if (!mlearn(MG_FIREWALL, 10, 1, Lockpicks, 1)) mesc l("You do not meet all requisites for this skill."), 1; break; + case ALL_INCCARRY: + if (!mlearn(ALL_INCCARRY, 2, 1, Lockpicks, 1)) + mesc l("You do not meet all requisites for this skill."), 1; + break; case ALL_FULL_THROTTLE: if (!mlearn(ALL_FULL_THROTTLE, 1, 1, Lockpicks, 1)) mesc l("You do not meet all requisites for this skill."), 1; diff --git a/npc/003-1/constableperry.txt b/npc/003-1/constableperry.txt index 04f2e03cb..934aa776d 100644 --- a/npc/003-1/constableperry.txt +++ b/npc/003-1/constableperry.txt @@ -7,7 +7,7 @@ // Part of the THIEF/MERCHANT branches 003-1,47,75,0 script Constable Perry NPC_MOUBOO,{ - if (JobLevel > 20 && THIEF_RANK == 0) goto L_Quest; + //if (JobLevel > 20 && THIEF_RANK == 0) goto L_Quest; L_Intro: mesn; diff --git a/npc/003-10/kreist.txt b/npc/003-10/kreist.txt index 510574a98..4ddca7a14 100644 --- a/npc/003-10/kreist.txt +++ b/npc/003-10/kreist.txt @@ -73,9 +73,9 @@ L_QuestMaster: } // Maybe you finished the quest? - if (.@q3 >= 100) { + if (.@q3 >= 80) { mesn l("Kreist, Taskmaster"); - mesq l("Good job, you've killed the 100 @@ and reported back in time!", getmonsterlink(.@q2)); + mesq l("Good job, you've killed the @@ @@ and reported back in time!", 80, getmonsterlink(.@q2)); next; inventoryplace MercBoxA, 1; if (MERCENARY_DAILYQUEST == 100) { @@ -98,7 +98,7 @@ L_QuestMaster: } mesn l("Kreist, Taskmaster"); - mesq l("So, please kill @@/100 @@ for us and make the world a safer place!", .@q3, getmonsterlink(.@q2)); + mesq l("So, please kill @@/@@ @@ for us and make the world a safer place!", .@q3, 80, getmonsterlink(.@q2)); close; OnInit: @@ -133,7 +133,7 @@ function script Guardhouse_RandQuestCheck { .@q3=getq3(General_MobHunting1)+1; setq3 General_MobHunting1, .@q3; if (!(.@q3 % 10)) - dispbottom l("@@/100 @@ killed", .@q3, getmonsterlink(.@mobId)); + dispbottom l("@@/@@ @@ killed", .@q3, 80, getmonsterlink(.@mobId)); } // Medium Task @@ -142,7 +142,7 @@ function script Guardhouse_RandQuestCheck { .@q3=getq3(General_MobHunting2)+1; setq3 General_MobHunting2, .@q3; if (!(.@q3 % 10)) - dispbottom l("@@/100 @@ killed", .@q3, getmonsterlink(.@mobId)); + dispbottom l("@@/@@ @@ killed", .@q3, 80, getmonsterlink(.@mobId)); } // Hard Task @@ -151,7 +151,7 @@ function script Guardhouse_RandQuestCheck { .@q3=getq3(General_MobHunting3)+1; setq3 General_MobHunting3, .@q3; if (!(.@q3 % 10)) - dispbottom l("@@/100 @@ killed", .@q3, getmonsterlink(.@mobId)); + dispbottom l("@@/@@ @@ killed", .@q3, 80, getmonsterlink(.@mobId)); } // Frostia's Task @@ -160,7 +160,7 @@ function script Guardhouse_RandQuestCheck { .@q3=getq3(General_MobHunting4)+1; setq3 General_MobHunting4, .@q3; if (!(.@q3 % 10)) - dispbottom l("@@/100 @@ killed", .@q3, getmonsterlink(.@mobId)); + dispbottom l("@@/@@ @@ killed", .@q3, 50, getmonsterlink(.@mobId)); } return; diff --git a/npc/003-3/malindou.txt b/npc/003-3/malindou.txt index 75235f9bf..21bcf2279 100644 --- a/npc/003-3/malindou.txt +++ b/npc/003-3/malindou.txt @@ -411,9 +411,11 @@ OnInit: query_sql("UPDATE `char` SET `last_x` = '22' WHERE `char`.`last_map`='005-1'"); query_sql("UPDATE `char` SET `last_y` = '22' WHERE `char`.`last_map`='005-1'"); query_sql("UPDATE `char` SET `last_map` = '000-1' WHERE `char`.`last_map`='005-1'"); + query_sql("UPDATE `skill` SET `id` = '20010' WHERE `skill`.`id`='20011'"); $UPDATE=1563239400; debugmes ""; debugmes "* Candor Redesign"; + debugmes "* Magic Class Removed"; debugmes ""; } diff --git a/npc/012-5/nicholas.txt b/npc/012-5/nicholas.txt index 324585247..7ffbd14d5 100644 --- a/npc/012-5/nicholas.txt +++ b/npc/012-5/nicholas.txt @@ -90,7 +90,7 @@ L_Menu: l("I want to forge One Handed Weapons!"), l("I want to forge Shields!"), l("I want to forge Quivers!"), - rif(getskilllv(TMW2_CRAFT), l("I would like to remove an item options")), + rif(is_staff() && getskilllv(TMW2_CRAFT), l("I would like to remove an item options")), rif(getskilllv(TMW2_CRAFT), l("I would like to change an item options")), l("Nothing, thanks!"); diff --git a/npc/014-3/_mobs.txt b/npc/014-3/_mobs.txt index 54539889d..540992817 100644 --- a/npc/014-3/_mobs.txt +++ b/npc/014-3/_mobs.txt @@ -1,11 +1,12 @@ // This file is generated automatically. All manually added changes will be removed when running the Converter. // Map 014-3: Woodlands Central Area mobs 014-3,115,75,91,52 monster Mouboo 1023,22,30000,45000 -014-3,96,102,70,21 monster Forest Mushroom 1060,10,60000,45000 +014-3,63,74,41,48 monster Forest Mushroom 1060,10,60000,45000 014-3,104,102,90,35 monster Squirrel 1032,26,30000,42000 014-3,44,82,37,32 monster Centaur 1139,3,80000,90000 014-3,164,75,31,14 monster Pinkie 1132,9,30000,50000,Oscar::OnKillPinkie 014-3,95,65,49,25 monster Poison Spiky Mushroom 1043,11,45000,45000 +014-3,133,89,49,25 monster Poison Spiky Mushroom 1043,7,45000,45000 014-3,128,112,70,21 monster Mauve Plant 1135,5,90000,90000 014-3,44,82,37,32 monster Chagashroom Field 1128,4,90000,90000 014-3,95,65,49,25 monster Plushroom Field 1011,4,90000,90000 diff --git a/npc/017-3/vault.txt b/npc/017-3/vault.txt index 64678e95f..9f48bc3be 100644 --- a/npc/017-3/vault.txt +++ b/npc/017-3/vault.txt @@ -5,13 +5,12 @@ // Based on BenB idea. 017-3,80,39,0 script Vault NPC_NO_SPRITE,{ - if (MERC_RANK) goto L_Debug; mesn; mesq l("There's a shiny safe here. How much money is inside? Nobody is looking at you, great!"); // 2*3 = 6 possibilities, 5 attempts if (LockPicking(2, 3)) { Zeny=Zeny+$VAULT_01738039; - $VAULT_01738039=0; + $VAULT_01738039=40; mesn; mesq l("Booty!"); } else { @@ -24,32 +23,13 @@ } close; -// TODO: And remove from here. -L_Debug: - mesn; - mesq l("Thiefs frequently attack this vault, and locking it again is a pain. If you break the lock you'll need to pay 100 GP."); - if (Zeny < 100) - close; - // 2*3 = 6 possibilities, 5 attempts - if (ToDoMerc(2, 3)) { - getexp 20, 60; - $VAULT_01738039+=2; - mesn; - mesq l("Safe again! You've gained some experience for your hard work!"); - } else { - mesn; - mesq l("Dargh, you broke the lock!!"); - Zeny-=100; - } - close; - OnInit: .distance=3; end; OnClock0201: OnClock1418: - $VAULT_01738039+=rand(5,25); + $VAULT_01738039+=rand2(5,25); end; } diff --git a/npc/018-2-4/vault.txt b/npc/018-2-4/vault.txt index 7b778abdd..541a53645 100644 --- a/npc/018-2-4/vault.txt +++ b/npc/018-2-4/vault.txt @@ -5,13 +5,12 @@ // Based on BenB idea. 018-2-4,23,24,0 script Vault#01824a NPC_NO_SPRITE,{ - if (MERC_RANK) goto L_Debug; mesn; mesq l("There's a shiny safe here. How much money is inside? Nobody is looking at you, great!"); // 3*3 = 9 possibilities, 6~8 attempts if (LockPicking(3, 3)) { Zeny=Zeny+$VAULT_01824; - $VAULT_01824=0; + $VAULT_01824=60; mesn; mesq l("Booty!"); } else { @@ -24,32 +23,13 @@ } close; -// TODO: And remove from here. -L_Debug: - mesn; - mesq l("Thiefs frequently attack this vault, and locking it again is a pain. If you break the lock you'll need to pay 100 GP."); - if (Zeny < 100) - close; - // 2*3 = 6 possibilities, 5 attempts - if (ToDoMerc(3, 3)) { - getexp 20, 90; - $VAULT_01824+=2; - mesn; - mesq l("Safe again! You've gained some experience for your hard work!"); - } else { - mesn; - mesq l("Dargh, you broke the lock!!"); - Zeny-=100; - } - close; - OnInit: .distance=3; end; OnClock0201: OnClock1216: - $VAULT_01824+=rand(15,35); + $VAULT_01824+=rand2(15,35); end; } diff --git a/npc/024-16/generals.txt b/npc/024-16/generals.txt index e540da4e1..ca988134e 100644 --- a/npc/024-16/generals.txt +++ b/npc/024-16/generals.txt @@ -27,9 +27,9 @@ function script FrostiaTaskMaster { } // Maybe you finished the quest? - if (.@q3 >= 100) { + if (.@q3 >= 50) { mesn; - mesq l("Good job, you've killed the 100 @@ and reported back in time!", getmonsterlink(.@q2)); + mesq l("Good job, you've killed the @@ @@ and reported back in time!", 50, getmonsterlink(.@q2)); next; mesn; mesq l("It's not much of a reward, but doesn't it feels great to help others in need?! HAHAHA!"); @@ -43,7 +43,7 @@ function script FrostiaTaskMaster { } mesn; - mesq l("Please kill @@/100 @@ for us and make the world a safer place!", .@q3, getmonsterlink(.@q2)); + mesq l("Please kill @@/@@ @@ for us and make the world a safer place!", .@q3, 50, getmonsterlink(.@q2)); return false; } diff --git a/npc/functions/TODO.txt b/npc/functions/TODO.txt deleted file mode 100644 index 8060fe579..000000000 --- a/npc/functions/TODO.txt +++ /dev/null @@ -1,96 +0,0 @@ -// TMW2/LoF Script -// Author: -// Jesusalva -// Description: -// ToDo - Please disregard for now - -// Important variables: -// MERC_EXP -// Experience on Thief Tree -// MERC_RANK -// Position on the Thief Tree - -// ToDoMerc(num_pins, max_pins) -// Returns 0 upon failure, 1 upon success -// Closes script if an error happen or if you give up / cannot try. -// -// The 'next' is upon script responsability -// Maximum pin number is infinite. Maximum Pin Positiors range from 2~5. -// If you fail, you can end up having to start again. If you fail too much, -// you'll be caught! -function script ToDoMerc { - // If you don't have a LockPick, you can't do this (useless) - if (!countitem(Lockpicks)) { - mesc l("You need a @@ to try this.", getitemlink(Lockpicks)), 1; - close; - } - - .@d=getarg(0,1); - .@m=getarg(1,3); - - // Invalid Argument (kill script) - if (.@d < 1 || .@m < 2 || .@m > 5) - end; - - // You must be rank (number of locks - 1) to try - if (MERC_RANK+1 < .@d) { - mesc l("This lock is beyond your current capacity."), 1; - close; - } - - // Create @pins array (the answer) - for (.@i=0; .@i < .@d;.@i++) - @pins[.@i] = rand(1,.@m); - - // Check if you'll try to open it. - mesc l("I'm not sure exactly what we are trying to do, but you seem to need to resolve this puzzle."); - mesc l("Will you try to unlock it?"); - if (askyesno() == ASK_NO) - close; - - // Setup your attempt - delitem Lockpicks, 1; - @pos=0; - mesc l("There are only @@ pins to set.", .@d); - - // You have as many attempts as pins and appliable strenghts. - // Each merc rank grants you an extra attempt. - // Each pin takes one attempt. - // It's not multiplied, so 3 pins with 3 positions: 6 chances, 9 possibilities. - // There's no penalty, but the attempt is counted working or not! - // Remember if you fail, all previous pins will be cleared (@pos) - for (.@i=0; .@i < (.@d+.@m+MERC_RANK) ; .@i++) { - mesc l("You are trying to lock the @@th pin. What will to do?", @pos+1); - - menuint - rif(.@m >= 4, l("Apply no pressure")), 4, - rif(.@m >= 2, l("Apply soft pressure")), 2, - rif(.@m >= 1, l("Apply normal pressure")), 1, - rif(.@m >= 3, l("Apply strong pressure")), 3, - rif(.@m >= 5, l("Apply very strong pressure")), 5, - l("Give up!"), 0; - - if (!@menuret) - close; - - // Is your guess correct? - if (@pins[@pos] == @menuret) { - mesc l("*click*"); - @pos+=1; - } else { - mesc l("This didn't work. All pins are now unlocked!"); - @pos=0; - // We don't need to clear console, each successful attempt IS counted. - // Therefore, unsetting 3 pins means you must do 3 new attempts!! - // The biggie is that you're running against time, here!!! - } - - if (@pos >= .@d) { - MERC_EXP += .@d*.@m-MERC_RANK; - return 1; - } - } - - MERC_EXP += 1; - return 0; -} diff --git a/npc/functions/clientversion.txt b/npc/functions/clientversion.txt index 32041adfe..59098ee15 100644 --- a/npc/functions/clientversion.txt +++ b/npc/functions/clientversion.txt @@ -286,6 +286,7 @@ function script clientupdater { // seg jul 15 16:41:35 -03 2019 if (UPDATE < 1563219695) { UPDATE=1563219695; + .@dg=true; // You got recipe book by BSS Quest - mark as complete and get Blueprint if (getq(NivalisQuest_BlueSageSlimes) == 2) { getitem any(AncientBlueprint, AlchemyBlueprintA, EquipmentBlueprintA), 1; @@ -298,7 +299,83 @@ function script clientupdater { // 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."); + mesc l("Dagger Crafting recipe learnt."); + } + // Mercenary Rank removed + if (MERC_RANK) { + THIEF_RANK=MERC_RANK; + MERC_RANK=0; + mesc l("Your class has been changed from %s to %s.", b(l("Merchant Police")), b(l("Thief"))); + } + if (getskilllv(ALL_INCCARRY)) { + skill TF_STEAL, getskilllv(ALL_INCCARRY); + skill ALL_INCCARRY, 0, 0; + mesc l("Increase Weight skill replaced with Stealing."); + } + // NEW MAGIC SYSTEM + if (getskilllv(SN_SHARPSHOOTING)) { + skill AC_CHARGEARROW, getskilllv(SN_SHARPSHOOTING); + skill AC_CHARGEARROW, 0, 0; + getexp 2000, 150; + mesc l("Sharpshooting skill replaced with Charged Arrow."); + mesc l("You've got 2000 xp and 150 job xp in apology tokens."); + } + getskilllist(); + for (.@i=0; .@i < @skilllist_count; .@i++) { + // skip temporary skills + if (@skilllist_flag[.@i] != 0) + continue; + // Only “paid” skills will result in a Scholarship Badge + switch (@skilllist_id[.@i]) { + case SM_BASH: + case SM_ENDURE: + case KN_AUTOCOUNTER: + case KN_TWOHANDQUICKEN: + case TMW2_DEMURE: + case AL_ANGELUS: + case CR_TRUST: + case CR_DEFENDER: + case AL_HOLYLIGHT: + case TF_DETOXIFY: + case ALL_RESURRECTION: + case MG_SRECOVERY: + case SM_RECOVERY: + case PR_ASPERSIO: + case AB_HIGHNESSHEAL: + case SA_FREECAST: + case SA_DRAGONOLOGY: + case TMW2_SAGE: + case SA_FLAMELAUNCHER: + case SA_FROSTWEAPON: + case SA_LIGHTNINGLOADER: + case SA_SEISMICWEAPON: + case MG_FIREBALL: + case MG_ENERGYCOAT: + case MG_NAPALMBEAT: + case MG_FIREBOLT: + case MG_COLDBOLT: + case MG_LIGHTNINGBOLT: + case WZ_EARTHSPIKE: + mesc l("A skill has been replaced with an @@.", getitemlink(ScholarshipBadge)); + getitem ScholarshipBadge, 1; + skill @skilllist_id[.@i], 0, 0; + getexp 5, (@skilllist_lv[.@i]-1)*1000; + break; + // Free skills (AL_HEAL and mass provoke) will result in XP + // Only Jakod's skills with level 3+ will result in a badge + case AL_HEAL: + case EVOL_MASS_PROVOKE: + if (@skilllist_lv[.@i] >= 3) + getitem ScholarshipBadge, 1; + case SM_PROVOKE: + case NV_TRICKDEAD: + .@delval=@skilllist_lv[.@i]; + mesc l("A skill has been removed, you got @@ job exp and @@ Strange Coin as an apology token.", .@delval*100, .@delval); + skill @skilllist_id[.@i], 0, 0; + getexp .@delval, .@delval*100; + getitem StrangeCoin, .@delval; + break; + } } // Cleanup deletearray RNGTREASURE_DATE; diff --git a/npc/items/alcohol.txt b/npc/items/alcohol.txt index fd9aa0f07..81c6a6bd0 100644 --- a/npc/items/alcohol.txt +++ b/npc/items/alcohol.txt @@ -13,9 +13,9 @@ // ALC_THRESHOLD How drunk you are (the bonus) // // When drunk, attack speed is lowered but exp gain is increased. -// Attack Speed Reductor: SC_ATTHASTE_INFINITY +// Attack Speed Reductor: SC_ATTHASTE_INFINITY (reset upon death), SC_ATTHASTE_POTION2 (not reset upon death) // Max HP Reductor: SC_INCMHPRATE -// EXP Increaser: SC_CASH_PLUSEXP +// EXP Increaser: SC_CASH_PLUSEXP (not reset upon death), SC_OVERLAPEXPUP (reset upon death) - script alcohol_sc -1,{ @@ -49,27 +49,27 @@ OnUse: // Default value is 1 minute per alcohol point - you'll be somber after at most two hours. // Taste is affected by users near you. - // Each user raises exp bonus in 1%, capped to twice the beverage taste + // Each user raises exp bonus in 1%, capped to the beverage taste // If you are with many people, drink a better beverage! ;-) getmapxy(.@m$, .@x, .@y, 0); .@bonus=getareausers(.@m$, .@x-10, .@y-10, .@x+10, .@y+10)-1; - @taste+=min(@taste*2, .@bonus); + @taste+=min(@taste, .@bonus); // Alcohol EXP Bonus - ponderate average, so having more VIT doesn't means // more experience - only more time (be careful when mixing alcohol!) - .@v=remaining_bonus(SC_CASH_PLUSEXP, true); - .@t=remaining_bonus(SC_CASH_PLUSEXP, false)/1000; + .@v=remaining_bonus(SC_OVERLAPEXPUP, true); + .@t=remaining_bonus(SC_OVERLAPEXPUP, false)/1000; if (.@t) .@val1 = ponderate_avg(@taste, @Alcohol, .@v, .@t); else .@val1 = @taste; // Put the delay in ms. - .@delay = remaining_bonus(SC_CASH_PLUSEXP, false); + .@delay = remaining_bonus(SC_OVERLAPEXPUP, false); .@delay = .@t + @Alcohol*.@deltatime; // Reset EXP Bonus based on the new cumulative delay and average exp bonus - sc_end SC_CASH_PLUSEXP; - sc_start SC_CASH_PLUSEXP, .@delay, .@val1; + sc_end SC_OVERLAPEXPUP; + sc_start SC_OVERLAPEXPUP, .@delay, .@val1; // Recalculate Alcohol Threshold and time ALC_THRESHOLD+=@Alcohol; @@ -78,11 +78,11 @@ OnUse: ALC_DELAYTIME+=@Alcohol*.@deltatime; // Debug comment if you need to check stuff - //debugmes "%d %d | %d %d | f t ", remaining_bonus(SC_CASH_PLUSEXP, false), remaining_bonus(SC_CASH_PLUSEXP, true), remaining_bonus(SC_ATTHASTE_INFINITY, false), remaining_bonus(SC_ATTHASTE_INFINITY, true); + //debugmes "%d %d | %d %d | f t ", remaining_bonus(SC_OVERLAPEXPUP, false), remaining_bonus(SC_OVERLAPEXPUP, true), remaining_bonus(SC_ATTHASTE_INFINITY, false), remaining_bonus(SC_ATTHASTE_INFINITY, true); // For debuff I'll use inc_sc_bonus utilities (exp gain = atk speed loss) - @min=-(remaining_bonus(SC_CASH_PLUSEXP, true)*2); - @max=-(remaining_bonus(SC_CASH_PLUSEXP, true)*2); + @min=-(remaining_bonus(SC_OVERLAPEXPUP, true)*2); + @max=-(remaining_bonus(SC_OVERLAPEXPUP, true)*2); @type=SC_ATTHASTE_INFINITY; @delay=@Alcohol*(.@deltatime/1000); doevent "inc_sc_bonus::OnUse"; diff --git a/npc/scripts.conf b/npc/scripts.conf index 3c2abaae8..a4ab72b4a 100644 --- a/npc/scripts.conf +++ b/npc/scripts.conf @@ -47,7 +47,6 @@ "npc/functions/guild.txt", "npc/functions/hammocks.txt", "npc/functions/lockpicks.txt", -"npc/functions/TODO.txt", "npc/functions/marriage.txt", "npc/functions/mobpoint.txt", "npc/functions/mobhunter.txt", |