From 8c2ff8405501ea7fa821d8ead42fe11e7e0dec6f Mon Sep 17 00:00:00 2001 From: euphyy Date: Mon, 18 Feb 2013 01:21:59 +0000 Subject: [PATCH] * Documented 'consumeitem' command from r17137. * Added 'consumeitem' to all applicable scripts. * Moved "Catalog Magician" to Renewal path. * Created "Pet Commands" and "Homunculus Commands" sections in script_commands.txt. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@17138 54d463be-8e91-2dee-dedb-b68131a5f0ec --- doc/script_commands.txt | 464 ++++++++++++++++-------------- npc/cities/rachel.txt | 14 +- npc/merchants/buying_shops.txt | 102 +------ npc/quests/quests_13_1.txt | 7 +- npc/re/merchants/catalog.txt | 108 +++++++ npc/re/quests/quests_brasilis.txt | 29 +- npc/re/scripts_athena.conf | 1 + src/map/script.c | 2 +- 8 files changed, 389 insertions(+), 338 deletions(-) create mode 100644 npc/re/merchants/catalog.txt diff --git a/doc/script_commands.txt b/doc/script_commands.txt index db35b7b04a..7321b7a14c 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -995,7 +995,9 @@ From here on, we will have the commands sorted as follow: 7.- Instance commands. 8.- Quest Log commands. 9.- Battleground commands. -10.- Mercenary commands. +10.- Pet commands. +11.- Homunculus commands. +12.- Mercenary commands. ===================== |1.- Basic commands.| @@ -3148,53 +3150,6 @@ skills a character has. --------------------------------------- -*getpetinfo() - -This function will return pet information for the pet the invoking character -currently has active. Valid types are: - - 0 - Unique pet ID number as stored by the char server and distinguishing it - from all other pets the characters actually have. This value is currently - useless, at most you can use it to tell pets apart reliably. - 1 - Pet class number as per 'db/pet_db.txt' - will tell you what kind of a pet it - is. - 2 - Pet name. Will return "null" if there's no pet. - 3 - Pet friendly level (intimacy score). 1000 is full loyalty. - 4 - Pet hungry level. 100 is completely full. - 5 - Pet rename flag. 0 means this pet has not been named yet. - ---------------------------------------- - -*gethominfo() - -This function works as a direct counterpart of 'getpetinfo': - 0 - Homunculus unique ID - 1 - Homunculus Class - 2 - Name - 3 - Friendly level (intimacy score). 100000 is full loyalty. - 4 - Hungry level. 100 is completely full. - 5 - Rename flag. 0 means this homunculus has not been named yet. - 6 - Homunculus level - ---------------------------------------- - -*petstat() - -Returns current pet status, all are integers except name. -Returns 0 or "" if the player doesn't have pets. - -Flags usable >> -PET_CLASS -PET_NAME -PET_LEVEL -PET_HUNGRY -PET_INTIMATE - -Example: - set @i, petstat(PET_CLASS); - ---------------------------------------- - *getmonsterinfo(,) This function will look up the monster with the specified ID number in the @@ -3961,6 +3916,7 @@ job number which doesn't has a eA Job value equivalent. For more information on the eA Job System, see the docs/ea_job_system.txt file. --------------------------------------- + *roclass {,} Does the opposite of eaclass. That is, given a eA Job class, it returns which is the corresponding RO class number. @@ -4458,15 +4414,24 @@ effect is still in effect). *itemskill ,; *itemskill "",; -This command meant for item scripts to replicate single-use skills in usable -items. It will not work properly, if there is a visible dialog window or menu. -If the skill is self or auto-targeting, it will be used immediately otherwise a +This command is meant for item scripts to replicate single-use skills in usable +items. It will not work properly if there is a visible dialog window or menu. +If the skill is self or auto-targeting, it will be used immediately; otherwise a target cursor is shown. // When Anodyne is used, it will cast Endure (8), Level 1, as if the actual // skill has been used from skill tree. 605,Anodyne,Anodyne,11,2000,0,100,,,,,10477567,2,,,,,{ itemskill 8,1; },{} +--------------------------------------- + +*consumeitem ; +*consumeitem ""; + +This command will run the item script of the specified item on the invoking +character. The character does not need to possess the item, and the item will +not be deleted. While this command is intended for usable items, it will run +for any item type. --------------------------------------- @@ -4474,7 +4439,7 @@ target cursor is shown. This command will open a crafting window on the client connected to the invoking character. The 'item level' is a number which determines what kind of a crafting -window will pop-up. +window will pop-up. You can see the full list of such item levels in 'db/produce_db.txt' which determines what can actually be produced. The window will not be empty only if the invoking @@ -5422,31 +5387,6 @@ summon "--ja--",-1; --------------------------------------- -*homevolution; - -This command will try to evolve the current player's homunculus. -If it doesn't work, the /swt emotion is shown. - -To evolve a homunculus, the invoking player must have a homunculus, -the homunculus must not be the last evolution and -the homunculus must have above 91000 intimacy with its owner. - ---------------------------------------- - -*hommutate {}; - -This command will try to evolve the current player's homunculus into the -new Homunculus S. If it doesn't work, the /swt emotion is shown. - -To mutate a homunculus, the invoking player must have an evolved -homunculus and it must be at least level 99. - -If the optional parameter is set, the invoking player's homunculus will -change into the given homunculus ID. Otherwise, a random Homunculus S -will be chosen. - ---------------------------------------- - *unitwalk ,,; *unitwalk ,; @@ -6464,17 +6404,6 @@ must be used. --------------------------------------- -*pet ; - -This command is used in all the item scripts for taming items. Running this -command will make the pet catching cursor appear on the client connected to the -invoking character, usable on the monsters with the specified pet ID number. It -will still work outside an item script. - -A full list of pet IDs can be found inside 'db/pet_db.txt' - ---------------------------------------- - *emotion {,{,""}}; This command makes an object display an emotion sprite above their own as @@ -7104,115 +7033,6 @@ script command does not have the optional parameter. --------------------------------------- -* The Pet AI commands - -These commands will only work if the invoking character has a pet, and are meant -to be executed from pet scripts. They will modify the pet AI decision-making for -the current pet of the invoking character, and will NOT have any independent -effect by themselves, which is why only one of them each may be in effect at any -time for a specific pet. A pet may have 'petloot', 'petskillbonus', -'petskillattack' OR 'petpetskillattack2' and 'petskillsupport' OR 'petheal' at -the same time. 'petheal' is deprecated and is no longer used in the default pet -scripts. - -*petskillbonus ,,,; - -This command will make the pet give a bonus to the owner's stat (bonus type - -bInt,bVit,bDex,bAgi,bLuk,bStr,bSpeedRate - for a full list, see the values -starting with 'b' in 'db/const.txt') - -*petrecovery ,; - -This command will make the pet cure a specified status condition. The curing -actions will occur once every Delay seconds. For a full list of status -conditions that can be cured, see the list of 'SC_' status condition constants -in 'db/const.txt' - -*petloot ; - -This command will turn on pet looting, with a maximum number of items to loot -specified. Pet will store items and return them when the maximum is reached or -when pet performance is activated. - -*petskillsupport ,,,,; -*petskillsupport "",,,,; -*petheal ,,,; - -This will make the pet use a specified support skill on the owner whenever the -HP and SP are below the given percent values, with a specified delay time -between activations. The skill numbers are as per 'db/(pre-)re/skill_db.txt'. -'petheal' works the same as 'petskillsupport' but has the skill ID hard-coded to -28 (Heal). This command is deprecated. -It's not quite certain who's stats will be used for the skills cast, the -character's or the pets. Probably, Skotlex can answer that question. - -*petskillattack ,,,; -*petskillattack "",,,; -*petskillattack2 ,,,,; -*petskillattack2 "",,,,; - -These two commands will make the pet cast an attack skill on the enemy the pet's -owner is currently fighting. Skill IDs and levels are as per 'petskillsupport'. -'petskillattack2' will make the pet cast the skill with a fixed amount of damage -inflicted and the specified number of attacks. - -All commands with delays and durations will only make the behavior active for -the specified duration of seconds, with a delay of the specified number of -seconds between activations. Rates are a chance of the effect occurring and are -given in percent. 'bonusrate' is added to the normal rate if the pet intimacy is -at the maximum possible. - -The behavior modified with the above mentioned commands will only be exhibited if -the pet is loyal and appropriate configuration options are set in -'battle_athena.conf'. - -Pet scripts in the database normally run whenever a pet of that type hatches -from the egg. Other commands usable in item scripts (see 'bonus') will also -happily run from pet scripts. Apparently, the pet-specific commands will also -work in NPC scripts and modify the behavior of the current pet up until the pet -is hatched again. (Which will also occur when the character is logged in again -with the pet still out of the egg.) It is not certain for how long the effect of -such command running from an NPC script will eventually persist, but apparently, -it is possible to usefully employ them in usable item scripts to create pet -buffing items. - -Nobody tried this before, so you're essentially on your own here. - ---------------------------------------- - -*bpet; - -This command opens up a pet hatching window on the client connected to the -invoking character. It is used in item script for the pet incubators and will -let the player hatch an owned egg. If the character has no eggs, it will just -open up an empty incubator window. -This is still usable outside item scripts. - ---------------------------------------- - -*makepet ; - -This command will create a pet egg and put it in the invoking character's -inventory. The kind of pet is specified by pet ID numbers listed in -'db/pet_db.txt'. The egg is created exactly as if the character just successfully -caught a pet in the normal way. - - // This will make you a poring: - makepet 1002; - -Notice that you absolutely have to create pet eggs with this command. If you try -to give a pet egg with 'getitem', pet data will not be created by the char -server and the egg will disappear when anyone tries to hatch it. - ---------------------------------------- - -*homshuffle; - -This will recalculate the homunculus stats according to its level, of the -current invoking character. - ---------------------------------------- - *setcell "",,,,,,; Each map cell has several 'flags' that specify the properties of that cell. @@ -7542,7 +7362,7 @@ color can be: 3 = an MVP flag other values show a transparent mark in the mini-map. ----------------------------------------- +--------------------------------------- ============================ |9.- Battleground commands.| @@ -7573,7 +7393,7 @@ Example: set $@KvM01BG_id1, waitingroom2bg("bat_c01",52,129,"KvM01_BG::OnGuillaumeQuit","KvM01_BG::OnGuillaumeDie"); end; ----------------------------------------- +--------------------------------------- *bg_team_setxy ,,; @@ -7584,7 +7404,7 @@ Example: mapannounce "bat_a01", "Group [1] has taken the work shop, and will now respawn there.",bc_map,"0xFFCE00"; end; ----------------------------------------- +--------------------------------------- *bg_warp ,"",,; @@ -7596,7 +7416,7 @@ Example: bg_warp $@TierraBG1_id1,"bat_a01",352,342; end; ----------------------------------------- +--------------------------------------- *bg_monster ,"",,,"",,""; *bg_monster(,"",,,"",,""); @@ -7616,7 +7436,7 @@ Example: set $@Guardian_3, bg_monster($@TierraBG1_id2,"bat_a01",268,204,"Guardian",1949,"NPCNAME::OnMyMobDead"); end; ----------------------------------------- +--------------------------------------- *bg_monster_set_team ,; @@ -7639,19 +7459,19 @@ OnTimer1000: bg_monster_set_team $@Guardian, $@BG_1; end; ----------------------------------------- +--------------------------------------- *bg_leave; Removes attached player from their Battle Group. ----------------------------------------- +--------------------------------------- *bg_destroy ; As the name says, destroys the battle group created for that battle ground. ----------------------------------------- +--------------------------------------- *areapercentheal "",,,,,,; @@ -7661,7 +7481,7 @@ Example: areapercentheal "bat_a01",52,208,61,217,100,100; end; ----------------------------------------- +--------------------------------------- *bg_get_data(,); @@ -7669,14 +7489,13 @@ Retrieves data related to given battle group. Type can be one of the following: 0 - Amount of players currently belonging to the group. ----------------------------------------- - +--------------------------------------- *bg_getareausers(,,,,,); Retrieves amount of players belonging to given battle group on given map within an specified rectangular area. ----------------------------------------- +--------------------------------------- *bg_updatescore "",,; @@ -7684,10 +7503,223 @@ This command will force the update of the displayed scoreboard. It is only usable when the map is defined as a Type 2 Battleground: mapflag battleground 2 ----------------------------------------- +--------------------------------------- + +==================== +|10.- Pet commands.| +==================== +--------------------------------------- + +*bpet; + +This command opens up a pet hatching window on the client connected to the +invoking character. It is used in item script for the pet incubators and will +let the player hatch an owned egg. If the character has no eggs, it will just +open up an empty incubator window. +This is still usable outside item scripts. + +--------------------------------------- + +*pet ; + +This command is used in all the item scripts for taming items. Running this +command will make the pet catching cursor appear on the client connected to the +invoking character, usable on the monsters with the specified pet ID number. It +will still work outside an item script. + +A full list of pet IDs can be found inside 'db/pet_db.txt' + +--------------------------------------- + +*makepet ; + +This command will create a pet egg and put it in the invoking character's +inventory. The kind of pet is specified by pet ID numbers listed in +'db/pet_db.txt'. The egg is created exactly as if the character just successfully +caught a pet in the normal way. + + // This will make you a poring: + makepet 1002; + +Notice that you absolutely have to create pet eggs with this command. If you try +to give a pet egg with 'getitem', pet data will not be created by the char +server and the egg will disappear when anyone tries to hatch it. + +--------------------------------------- + +*getpetinfo() + +This function will return pet information for the pet the invoking character +currently has active. Valid types are: + + 0 - Unique pet ID number as stored by the char server and distinguishing it + from all other pets the characters actually have. This value is currently + useless, at most you can use it to tell pets apart reliably. + 1 - Pet class number as per 'db/pet_db.txt' - will tell you what kind of a pet it + is. + 2 - Pet name. Will return "null" if there's no pet. + 3 - Pet friendly level (intimacy score). 1000 is full loyalty. + 4 - Pet hungry level. 100 is completely full. + 5 - Pet rename flag. 0 means this pet has not been named yet. + +--------------------------------------- + +*petstat() + +Returns current pet status, all are integers except name. +Returns 0 or "" if the player doesn't have pets. + +Flags usable: +- PET_CLASS +- PET_NAME +- PET_LEVEL +- PET_HUNGRY +- PET_INTIMATE + +Example: + set @i, petstat(PET_CLASS); + +--------------------------------------- + +* The Pet AI commands + ------------------- + +These commands will only work if the invoking character has a pet, and are meant +to be executed from pet scripts. They will modify the pet AI decision-making for +the current pet of the invoking character, and will NOT have any independent +effect by themselves, which is why only one of them each may be in effect at any +time for a specific pet. A pet may have 'petloot', 'petskillbonus', +'petskillattack' OR 'petpetskillattack2' and 'petskillsupport' OR 'petheal' at +the same time. 'petheal' is deprecated and is no longer used in the default pet +scripts. + +All commands with delays and durations will only make the behavior active for +the specified duration of seconds, with a delay of the specified number of +seconds between activations. Rates are a chance of the effect occurring and are +given in percent. 'bonusrate' is added to the normal rate if the pet intimacy is +at the maximum possible. + +The behavior modified with the below mentioned commands will only be exhibited if +the pet is loyal and appropriate configuration options are set in +'battle_athena.conf'. + +Pet scripts in the database normally run whenever a pet of that type hatches +from the egg. Other commands usable in item scripts (see 'bonus') will also +happily run from pet scripts. Apparently, the pet-specific commands will also +work in NPC scripts and modify the behavior of the current pet up until the pet +is hatched again. (Which will also occur when the character is logged in again +with the pet still out of the egg.) It is not certain for how long the effect of +such command running from an NPC script will eventually persist, but apparently, +it is possible to usefully employ them in usable item scripts to create pet +buffing items. + +Nobody tried this before, so you're essentially on your own here. + +--------------------------------------- + +*petskillbonus ,,,; + +This command will make the pet give a bonus to the owner's stat (bonus type - +bInt,bVit,bDex,bAgi,bLuk,bStr,bSpeedRate - for a full list, see the values +starting with 'b' in 'db/const.txt') + +--------------------------------------- + +*petrecovery ,; + +This command will make the pet cure a specified status condition. The curing +actions will occur once every Delay seconds. For a full list of status +conditions that can be cured, see the list of 'SC_' status condition constants +in 'db/const.txt' + +--------------------------------------- + +*petloot ; + +This command will turn on pet looting, with a maximum number of items to loot +specified. Pet will store items and return them when the maximum is reached or +when pet performance is activated. + +--------------------------------------- + +*petskillsupport ,,,,; +*petskillsupport "",,,,; +*petheal ,,,; + +This will make the pet use a specified support skill on the owner whenever the +HP and SP are below the given percent values, with a specified delay time +between activations. The skill numbers are as per 'db/(pre-)re/skill_db.txt'. +'petheal' works the same as 'petskillsupport' but has the skill ID hard-coded to +28 (Heal). This command is deprecated. +It's not quite certain who's stats will be used for the skills cast, the +character's or the pets. Probably, Skotlex can answer that question. + +--------------------------------------- + +*petskillattack ,,,; +*petskillattack "",,,; +*petskillattack2 ,,,,; +*petskillattack2 "",,,,; + +These two commands will make the pet cast an attack skill on the enemy the pet's +owner is currently fighting. Skill IDs and levels are as per 'petskillsupport'. +'petskillattack2' will make the pet cast the skill with a fixed amount of damage +inflicted and the specified number of attacks. + +--------------------------------------- + +=========================== +|11.- Homunculus commands.| +=========================== +--------------------------------------- + +*homevolution; + +This command will try to evolve the current player's homunculus. +If it doesn't work, the /swt emotion is shown. + +To evolve a homunculus, the invoking player must have a homunculus, +the homunculus must not be the last evolution and +the homunculus must have above 91000 intimacy with its owner. + +--------------------------------------- + +*hommutate {}; + +This command will try to evolve the current player's homunculus into the +new Homunculus S. If it doesn't work, the /swt emotion is shown. + +To mutate a homunculus, the invoking player must have an evolved +homunculus and it must be at least level 99. + +If the optional parameter is set, the invoking player's homunculus will +change into the given homunculus ID. Otherwise, a random Homunculus S +will be chosen. + +--------------------------------------- + +*gethominfo() + +This function works as a direct counterpart of 'getpetinfo': + 0 - Homunculus unique ID + 1 - Homunculus Class + 2 - Name + 3 - Friendly level (intimacy score). 100000 is full loyalty. + 4 - Hungry level. 100 is completely full. + 5 - Rename flag. 0 means this homunculus has not been named yet. + 6 - Homunculus level + +--------------------------------------- + +*homshuffle; + +This will recalculate the homunculus stats according to its level, of the +current invoking character. + +--------------------------------------- ========================== -|10.- Mercenary commands.| +|12.- Mercenary commands.| ========================== --------------------------------------- @@ -7697,21 +7729,21 @@ This command summons a mercenary of given class, for given amount of time in milliseconds. Typically used in item scripts of mercenary scrolls. ----------------------------------------- +--------------------------------------- *mercenary_heal ,; This command works like 'heal', but affects the mercenary of the currently attached character. ----------------------------------------- +--------------------------------------- *mercenary_sc_start ,,; This command works like 'sc_start', but affects the mercenary of the currently attached character. ----------------------------------------- +--------------------------------------- *mercenary_get_calls(); *mercenary_set_calls ,; @@ -7723,7 +7755,7 @@ attached character. Guild can be one or the following constants: SPEAR_MERC_GUILD SWORD_MERC_GUILD ----------------------------------------- +--------------------------------------- *mercenary_get_faith(); *mercenary_set_faith ,; @@ -7756,7 +7788,7 @@ can be one of the following: If the character does not have a mercenary, the command returns "" for name and 0 for all other types. ----------------------------------------- +--------------------------------------- Whew. That's about all of them. diff --git a/npc/cities/rachel.txt b/npc/cities/rachel.txt index cf6c0ed649..1cf13e792b 100644 --- a/npc/cities/rachel.txt +++ b/npc/cities/rachel.txt @@ -4,7 +4,7 @@ //= First Version: Tsuyuki and Harp //= iRO Version: L0ne_W0lf //===== Current Version: ===================================== -//= 0.9 +//= 0.9a //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= @@ -17,6 +17,7 @@ //= 0.7 Total update of most if not all NPCs. [L0ne_W0lf] //= 0.8 Updated "Frozen Boy" dialog. (euRO) [L0ne_W0lf] //= 0.9 Replaced effect numerics with constants. [L0ne_W0lf] +//= 0.9a Added 'consumeitem' command. [Euphy] //============================================================ //===== Set 1 ================================================ @@ -308,11 +309,12 @@ rachel,206,30,3 script Freya's Priest#play 920,{ mes "Oh? Oh! That's wonderful!"; close2; set .@play,rand(1,10); - if (.@play == 1) warp "Random",0,0; - else if (.@play == 2) warp "Random",0,0; - else if (.@play == 3) sc_start SC_SpeedUp1,5000,0; - else if (.@play == 4) sc_start SC_SpeedUp1,5000,0; - else sc_start SC_SlowDown,5000,0; + if (.@play < 3) + consumeitem 601; //Wing_Of_Fly + else if (.@play < 5) + consumeitem 12016; //Speed_Up_Potion + else + consumeitem 12017; //Slow_Down_Potion end; } diff --git a/npc/merchants/buying_shops.txt b/npc/merchants/buying_shops.txt index 4e9065b8eb..75a9c8ae15 100644 --- a/npc/merchants/buying_shops.txt +++ b/npc/merchants/buying_shops.txt @@ -1,16 +1,17 @@ //===== rAthena Script ======================================= //= Buying Shop Scripts //===== By: ================================================== -//= Kisuka, skyiing, Scriptor +//= Kisuka //===== Current Version: ===================================== -//= 1.1 +//= 1.1a //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= -//= Buying Shop licenses and catalogs. +//= Buying Shop licenses. //===== Additional Comments: ================================= //= 1.0 First version. [Kisuka] //= 1.1 Added Catalog Magician. [Euphy] +//= 1.1a Moved Catalog Magician to Renewal path. [Euphy] //============================================================ // Black Marketeer (Buy Licenses - Non-Merchant Classes) @@ -238,98 +239,3 @@ alberta_in,58,52,4 script Purchasing Team#Buying 59,{ mes "My time is solely dedicated to our customers in the Merchant industry."; close; } - -// Catalog Magician -//============================================================ -moc_para01,22,16,5 script Catalog Magician#catal01 704,{ - if (!checkweight(1201,2)) { - mes "- You have too many items. Please make space. -"; - close; - } - set .@ticket_cost, 200; - mes "[Catalog Magician]"; - mes "Look... the Magic Academy"; - mes "in Geffen is now directly"; - mes "selling the brand new"; - mes "^007777Universal Catalog Silver^000000!"; - next; - mes "He is looking at the words"; - mes "written on his hand."; - mes "Seems like he's too busy"; - mes "to look at you."; - next; - mes "[Catalog Magician]"; - mes "A brand new catalog"; - mes "has just come out!"; - mes "You can check what"; - mes "items can be traded"; - mes "and what items are on"; - mes "sale from the vendor."; - next; - mes "[Catalog Magician]"; - mes "^007777Universal Catalog Silver^000000~"; - mes "It costs only 200z each!"; - mes "You can buy it up to 50"; - mes "pieces at once!"; - next; - switch(select("Buy ^007777Universal Catalog Silver^000000:I don't need it!:You don't look like a vendor...")) { - case 1: - mes "[Catalog Magician]"; - mes "You... want all 50 pieces?"; - mes "Or how many do you need?"; - next; - while (1) { - input .@input; - mes "[Catalog Magician]"; - if (.@input == 0) { - mes "Trade has been stopped!"; - mes "I don't know what to do next..."; - mes "What should I do?"; - emotion e_swt2,1; - close; - } else if (.@input < 1 || .@input > 50) { - mes "It should be less than 50 pieces."; - next; - } else break; - } - set .@sell, .@ticket_cost * .@input; - mes "Total number of catalog(s) that"; - mes "you're trying to purchase is"; - mes .@input + " pieces and it costs " + .@sell + " z."; - if (Zeny < .@sell) { - mes "It seems you don't have enough money."; - mes "You can sell your equips"; - mes "to make more money... if you want."; - close; - } - mes "Okie, here you go."; - set Zeny, Zeny - .@sell; - getitem 12580,.@input; //Vending_Search_Scroll - close; - case 2: - mes "[Catalog Magician]"; - mes "Argh... you really need this"; - mes "item... Do you want me to"; - mes "explain again? I don't know"; - mes "what to do next..."; - mes "What should I do?"; - emotion e_swt2,1; - close; - case 3: - mes "[Catalog Magician]"; - mes "My real job is a magician."; - mes "I was going to ask the merchant"; - mes "guild to sell them, but they were"; - mes "trying use them as an appendix"; - mes "into broom sales. That's why"; - mes "I'm selling these by myself."; - next; - mes "[Catalog Magician]"; - mes "There are many adventurers"; - mes "here coming and going. I'm"; - mes "pretty sure that I can sell them"; - mes "all soon. Don't you think so?"; - mes "So... let's start!! Buy more of them, please! PLEASE...!"; - close; - } -} diff --git a/npc/quests/quests_13_1.txt b/npc/quests/quests_13_1.txt index f0594b76a7..e82eb36f26 100644 --- a/npc/quests/quests_13_1.txt +++ b/npc/quests/quests_13_1.txt @@ -3,7 +3,7 @@ //===== By: ================================================== //= L0ne_W0lf //===== Current Version: ===================================== -//= 2.7 +//= 2.7a //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= @@ -46,6 +46,7 @@ //= 2.6 Disabled "Ash Vacuum Warper" as it's no longer in iRO. [Euphy] //= 2.6a Added 'npcskill' command. [Euphy] //= 2.7 Updated EXP rewards. +//= 2.7a Added 'consumeitem' command. [Euphy] //============================================================ // Onward to the New World @@ -14782,7 +14783,7 @@ OnTouch: set mao_morocc2,18; changequest 7026,7027; close2; - warp "SavePoint",0,0; + consumeitem 602; //Wing_Of_Butterfly end; } else if (mao_morocc2 == 19) { @@ -14874,7 +14875,7 @@ que_dan02,115,53,3 script Man#moc2_crazyR01 456,{ set mao_morocc2,20; changequest 7028,7029; close2; - warp "SavePoint",0,0; + consumeitem 602; //Wing_Of_Butterfly donpcevent "Mr. Kidd#moc_extra01::OnDisable"; } else { diff --git a/npc/re/merchants/catalog.txt b/npc/re/merchants/catalog.txt new file mode 100644 index 0000000000..be9f74c039 --- /dev/null +++ b/npc/re/merchants/catalog.txt @@ -0,0 +1,108 @@ +//===== rAthena Script ======================================= +//= Catalog Magician +//===== By: ================================================== +//= skyiing, Scriptor +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Catalogs allow players to easily search for items in-game, +//= and to buy/sell directly from the catalog interface. +//===== Additional Comments: ================================= +//= 1.0 Moved from root directory. [Euphy] +//============================================================ + +moc_para01,22,16,5 script Catalog Magician#catal01 704,{ + if (!checkweight(1201,2)) { + mes "- You have too many items. Please make space. -"; + close; + } + set .@ticket_cost, 200; + mes "[Catalog Magician]"; + mes "Look... the Magic Academy"; + mes "in Geffen is now directly"; + mes "selling the brand new"; + mes "^007777Universal Catalog Silver^000000!"; + next; + mes "He is looking at the words"; + mes "written on his hand."; + mes "Seems like he's too busy"; + mes "to look at you."; + next; + mes "[Catalog Magician]"; + mes "A brand new catalog"; + mes "has just come out!"; + mes "You can check what"; + mes "items can be traded"; + mes "and what items are on"; + mes "sale from the vendor."; + next; + mes "[Catalog Magician]"; + mes "^007777Universal Catalog Silver^000000~"; + mes "It costs only 200z each!"; + mes "You can buy it up to 50"; + mes "pieces at once!"; + next; + switch(select("Buy ^007777Universal Catalog Silver^000000:I don't need it!:You don't look like a vendor...")) { + case 1: + mes "[Catalog Magician]"; + mes "You... want all 50 pieces?"; + mes "Or how many do you need?"; + next; + while (1) { + input .@input; + mes "[Catalog Magician]"; + if (.@input == 0) { + mes "Trade has been stopped!"; + mes "I don't know what to do next..."; + mes "What should I do?"; + emotion e_swt2,1; + close; + } else if (.@input < 1 || .@input > 50) { + mes "It should be less than 50 pieces."; + next; + } else + break; + } + set .@sell, .@ticket_cost * .@input; + mes "Total number of catalog(s) that"; + mes "you're trying to purchase is"; + mes .@input + " pieces and it costs " + .@sell + " z."; + if (Zeny < .@sell) { + mes "It seems you don't have enough money."; + mes "You can sell your equips"; + mes "to make more money... if you want."; + close; + } + mes "Okie, here you go."; + set Zeny, Zeny - .@sell; + getitem 12580,.@input; //Vending_Search_Scroll + close; + case 2: + mes "[Catalog Magician]"; + mes "Argh... you really need this"; + mes "item... Do you want me to"; + mes "explain again? I don't know"; + mes "what to do next..."; + mes "What should I do?"; + emotion e_swt2,1; + close; + case 3: + mes "[Catalog Magician]"; + mes "My real job is a magician."; + mes "I was going to ask the merchant"; + mes "guild to sell them, but they were"; + mes "trying use them as an appendix"; + mes "into broom sales. That's why"; + mes "I'm selling these by myself."; + next; + mes "[Catalog Magician]"; + mes "There are many adventurers"; + mes "here coming and going. I'm"; + mes "pretty sure that I can sell them"; + mes "all soon. Don't you think so?"; + mes "So... let's start!! Buy more of them, please! PLEASE...!"; + close; + } +} diff --git a/npc/re/quests/quests_brasilis.txt b/npc/re/quests/quests_brasilis.txt index 88b021a0f6..89c4b6e239 100644 --- a/npc/re/quests/quests_brasilis.txt +++ b/npc/re/quests/quests_brasilis.txt @@ -3,11 +3,11 @@ //===== By =================================================== //= L0ne_W0lf //===== Version ============================================== -//= 1.2 +//= 1.2a //===== Compatible With ====================================== //= rAthena SVN //===== Description ========================================== -//= [Translated from the Official] +//= [Official Conversion] //= Lost Puppies (Repeatable, 24 hours.) //= Suspicious Beach (Repeatable, 24 hours. iRO/cRO version.) //= Guarana Candy Quest @@ -18,6 +18,7 @@ //= 1.0 First version. //= 1.1 Hydra Ball (12408) //= 1.2 Optimization. [Euphy] +//= 1.2a Added 'consumeitem' command. [Euphy] //============================================================ // Lost Puppies, Original file: dogdog.sc @@ -53,7 +54,7 @@ brasilis,297,307,5 script Angelo#br 50,{ erasequest 9031; setquest 9032; specialeffect2 EF_ASSUMPTIO; - percentheal 100,100; + consumeitem 607; //Yggdrasilberry set .@rand,rand(1,10); if (.@rand > 4 && .@rand < 9) getitem 504,2; //White_Potion else if (.@rand > 8) getitem 608,1; //Seed_Of_Yggdrasil @@ -226,10 +227,10 @@ brasilis,192,133,6 script Lucia#brasilis 478,{ //recall_completequest 9029; if (.@nQState2 > -1) erasequest 9029; setquest 9029; - percentheal 100,100; - sc_start SC_LUKFOOD, 1200000, 5; percentheal 5,2; - sc_start SC_VITFOOD, 1200000, 5; percentheal 10,0; - sc_start SC_DEXFOOD, 1200000, 5; percentheal 5,5; + consumeitem 607; //Yggdrasilberry + consumeitem 12070; //Luk_Dish05 + consumeitem 12055; //Vit_Dish05 + consumeitem 12065; //Dex_Dish05 getitem 11502,3; //Light_Blue_Pot close; } @@ -971,7 +972,7 @@ OnTouch_: set brazil_gua,8; changequest 2197,2198; close2; - sc_start SC_SpeedUp1,5000,0; + consumeitem 12016; //Speed_Up_Potion end; } else { @@ -3072,12 +3073,12 @@ bra_dun02,157,74,5 script Iara#nk 478,2,2,{ percentheal 100,100; sc_start SC_INCFLEE,3600000,20; sc_start SC_INCCRI,3600000,10; - sc_start SC_STRFOOD,1200000,3; - sc_start SC_DEXFOOD,1200000,3; - sc_start SC_AGIFOOD,1200000,3; - sc_start SC_VITFOOD,1200000,3; - sc_start SC_INTFOOD,1200000,3; - sc_start SC_LUKFOOD,1200000,3; + consumeitem 12043; //Str_Dish03 + consumeitem 12063; //Dex_Dish03 + consumeitem 12058; //Agi_Dish03 + consumeitem 12053; //Vit_Dish03 + consumeitem 12048; //Int_Dish03 + consumeitem 12068; //Luk_Dish03 next; mes "[Iara]"; mes "Ahhh~..."; diff --git a/npc/re/scripts_athena.conf b/npc/re/scripts_athena.conf index 46790fefa2..5ef751fbc3 100644 --- a/npc/re/scripts_athena.conf +++ b/npc/re/scripts_athena.conf @@ -47,6 +47,7 @@ npc: npc/re/kafras/kafras_brasilis.txt // -------------------------- Merchant -------------------------- npc: npc/re/merchants/3rd_trader.txt +npc: npc/re/merchants/catalog.txt npc: npc/re/merchants/diamond.txt npc: npc/re/merchants/flute.txt npc: npc/re/merchants/inn.txt diff --git a/src/map/script.c b/src/map/script.c index 88c3cb4251..c59a44afd9 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -17817,7 +17817,7 @@ struct script_function buildin_func[] = { BUILDIN_DEF(cleanmap,"s"), BUILDIN_DEF2(cleanmap,"cleanarea","siiii"), BUILDIN_DEF(npcskill,"viii"), - BUILDIN_DEF(consumeitem,"vi?"), + BUILDIN_DEF(consumeitem,"v"), /** * @commands (script based) **/