* 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
This commit is contained in:
euphyy 2013-02-18 01:21:59 +00:00
parent 8d3d8e0e1b
commit 8c2ff84055
8 changed files with 389 additions and 338 deletions

View File

@ -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(<type>)
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(<type>)
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(<flag>)
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(<mob ID>,<type>)
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 <job number> {,<gender>}
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 <skill id>,<skill level>;
*itemskill "<skill name>",<skill level>;
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 <item id>;
*consumeitem "<item name>";
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 {<ID>};
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 <ID> is set, the invoking player's homunculus will
change into the given homunculus ID. Otherwise, a random Homunculus S
will be chosen.
---------------------------------------
*unitwalk <GID>,<x>,<y>;
*unitwalk <GID>,<mapid>;
@ -6464,17 +6404,6 @@ must be used.
---------------------------------------
*pet <pet id>;
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 <emotion number>{,<target>{,"<target name>"}};
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 <bonus type>,<value>,<duration>,<delay>;
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 <status type>,<delay>;
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 <max items>;
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 <skill id>,<skill level>,<delay>,<percent hp>,<percent sp>;
*petskillsupport "<skill name>",<skill level>,<delay>,<percent hp>,<percent sp>;
*petheal <level>,<delay>,<percent hp>,<percent sp>;
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 <skill id>,<skill level>,<rate>,<bonusrate>;
*petskillattack "<skill name>",<skill level>,<rate>,<bonusrate>;
*petskillattack2 <skill id>,<damage>,<number of attacks>,<rate>,<bonusrate>;
*petskillattack2 "<skill name>",<damage>,<number of attacks>,<rate>,<bonusrate>;
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 <pet id>;
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 "<map name>",<x1>,<y1>,<x2>,<y2>,<type>,<flag>;
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 <Battle Group ID>,<x>,<y>;
@ -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 <Battle Group>,"<Mapname>",<x>,<y>;
@ -7596,7 +7416,7 @@ Example:
bg_warp $@TierraBG1_id1,"bat_a01",352,342;
end;
----------------------------------------
---------------------------------------
*bg_monster <Battle Group>,"<map name>",<x>,<y>,"<name to show>",<mob id>,"<event label>";
*bg_monster(<Battle Group>,"<map name>",<x>,<y>,"<name to show>",<mob id>,"<event label>");
@ -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 <GID>,<Battle Group>;
@ -7639,19 +7459,19 @@ OnTimer1000:
bg_monster_set_team $@Guardian, $@BG_1;
end;
----------------------------------------
---------------------------------------
*bg_leave;
Removes attached player from their Battle Group.
----------------------------------------
---------------------------------------
*bg_destroy <Batte Group>;
As the name says, destroys the battle group created for that battle ground.
----------------------------------------
---------------------------------------
*areapercentheal "<mapname>",<x1>,<y1>,<x2>,<y2>,<hp>,<sp>;
@ -7661,7 +7481,7 @@ Example:
areapercentheal "bat_a01",52,208,61,217,100,100;
end;
----------------------------------------
---------------------------------------
*bg_get_data(<Battle Group>,<type>);
@ -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(<battle group>,<map name>,<x0>,<y0>,<x1>,<y1>);
Retrieves amount of players belonging to given battle group on given
map within an specified rectangular area.
----------------------------------------
---------------------------------------
*bg_updatescore "<mapname>",<Guillaume Score>,<Croix Score>;
@ -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 <mapname> 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 <pet id>;
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 <pet id>;
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(<type>)
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(<flag>)
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 <bonus type>,<value>,<duration>,<delay>;
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 <status type>,<delay>;
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 <max items>;
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 <skill id>,<skill level>,<delay>,<percent hp>,<percent sp>;
*petskillsupport "<skill name>",<skill level>,<delay>,<percent hp>,<percent sp>;
*petheal <level>,<delay>,<percent hp>,<percent sp>;
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 <skill id>,<skill level>,<rate>,<bonusrate>;
*petskillattack "<skill name>",<skill level>,<rate>,<bonusrate>;
*petskillattack2 <skill id>,<damage>,<number of attacks>,<rate>,<bonusrate>;
*petskillattack2 "<skill name>",<damage>,<number of attacks>,<rate>,<bonusrate>;
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 {<ID>};
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 <ID> is set, the invoking player's homunculus will
change into the given homunculus ID. Otherwise, a random Homunculus S
will be chosen.
---------------------------------------
*gethominfo(<type>)
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 <hp>,<sp>;
This command works like 'heal', but affects the mercenary of the
currently attached character.
----------------------------------------
---------------------------------------
*mercenary_sc_start <type>,<tick>,<val1>;
This command works like 'sc_start', but affects the mercenary of the
currently attached character.
----------------------------------------
---------------------------------------
*mercenary_get_calls(<guild>);
*mercenary_set_calls <guild>,<value>;
@ -7723,7 +7755,7 @@ attached character. Guild can be one or the following constants:
SPEAR_MERC_GUILD
SWORD_MERC_GUILD
----------------------------------------
---------------------------------------
*mercenary_get_faith(<guild>);
*mercenary_set_faith <guild>,<value>;
@ -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.

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -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 {

View File

@ -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;
}
}

View File

@ -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~...";

View File

@ -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

View File

@ -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)
**/