Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add constants and MERCINFO_GID to *getmercinfo script command #2397

Merged
merged 2 commits into from
Mar 10, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 12 additions & 11 deletions doc/script_commands.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9836,17 +9836,18 @@ If char id is given, the information of that character is retrieved
instead. Type specifies what information to retrieve and can be one of the
following:

0 - Database ID
1 - Class
2 - Name
3 - Faith value for this mercenary's guild, if any
4 - Calls value for this mercenary's guild, if any
5 - Kill count
6 - Remaining life time in msec
7 - Level

If the character does not have a mercenary, the command returns ""
for name and 0 for all other types.
MERCINFO_ID - Mercenary Database ID
MERCINFO_CLASS - Mercenary Class
MERCINFO_NAME - Mercenary Name
MERCINFO_FAITH - Mercenary faith value for this mercenary's guild, if any
MERCINFO_CALLS - Mercenary calls value for this mercenary's guild, if any
MERCINFO_KILLCOUNT - Mercenary kill count
MERCINFO_LIFETIME - Mercenary remaining life time in mili-second
MERCINFO_LEVEL - Mercenary Level
MERCINFO_GID - Mercenary Game ID

If the character does not have a mercenary, the command returns "" for MERCINFO_NAME
and 0 for all other types.

---------------------------------------
//=====================================
Expand Down
12 changes: 6 additions & 6 deletions npc/re/jobs/3-1/archbishop.txt
Original file line number Diff line number Diff line change
Expand Up @@ -779,7 +779,7 @@ job3_arch01,29,34,3 script Valkyrie#arch 4_F_VALKYRIE2,{
warp "odin_tem02",282,263;
end;
}
if (getmercinfo(1)) {
if (getmercinfo(MERCINFO_CLASS)) {
mes "[Valkyrie]";
mes "If you want to talk with me, you have to ^3131FFcancel all contracts^000000 with any mercenaries you have.";
close;
Expand Down Expand Up @@ -1006,7 +1006,7 @@ OnTouch:
if (countitem(ValkyrieA_Scroll)) {
delitem ValkyrieA_Scroll,1;
// fall through
} else if (getmercinfo(1) == 2037) {
} else if (getmercinfo(MERCINFO_CLASS) == VALKYRIE_A) {
if (strnpcinfo(NPC_NAME) == "#arch_1_10")
viewpoint 1,113,327,1,0xFF9900;
.@randht = rand(1,10);
Expand Down Expand Up @@ -1038,7 +1038,7 @@ OnTouch:
if (countitem(ValkyrieA_Scroll)) {
delitem ValkyrieA_Scroll,1;
// fall through
} else if (getmercinfo(1) == 2037) {
} else if (getmercinfo(MERCINFO_CLASS) == VALKYRIE_A) {
mapannounce "job3_arch02","Valkyrie's Nightmare: An incompetent illusion of Valkyrie came here with the assistance of humans. You wanna have that nightmare?",bc_map,"0xFF0000";
donpcevent "mob#arch_1::OnKill";
end;
Expand Down Expand Up @@ -1113,7 +1113,7 @@ OnKill:
}

job3_arch02,113,327,5 script Valkyrie#arch_01 4_F_VALKYRIE2,{
if (getmercinfo(1)) {
if (getmercinfo(MERCINFO_CLASS)) {
mes "[Valkyrie]";
mes "If you want to talk with me, you have to ^3131FFcancel all contracts^000000 with any mercenaries you have.";
close;
Expand Down Expand Up @@ -1355,7 +1355,7 @@ OnTouch:
if (countitem(ValkyrieB_Scroll)) {
delitem ValkyrieB_Scroll,1;
// fall through
} else if (getmercinfo(1) == 2038) {
} else if (getmercinfo(MERCINFO_CLASS) == VALKYRIE_B) {
.@randht = rand(1,10);
if (.@randht < 8)
mapannounce "job3_arch02","Whispering of an impersonation: I can feel the devil's spirits. Can you hear? The sound of gathering in crowds.",bc_map,"0xFFCE00";
Expand Down Expand Up @@ -1400,7 +1400,7 @@ OnTouch:
if (countitem(ValkyrieB_Scroll)) {
delitem ValkyrieB_Scroll,1;
// fall through
} else if (getmercinfo(1) == 2038) {
} else if (getmercinfo(MERCINFO_CLASS) == VALKYRIE_B) {
mapannounce "job3_arch02","A shout of devil: You are so childish. I invite you a party of devil. I'll make you have a fun!",bc_map,"0xFF0000";
end;
}
Expand Down
4 changes: 2 additions & 2 deletions npc/re/jobs/3-1/ranger.txt
Original file line number Diff line number Diff line change
Expand Up @@ -613,7 +613,7 @@ tur_dun01,91,169,3 script Test Instructor#jr02 4_M_JOB_HUNTER,{
mes "Don't hang around here doing nothing. This is my area!";
close;
L_Start:
if (getmercinfo(1)) {
if (getmercinfo(MERCINFO_CLASS)) {
mes "[Test Instructor, Teardrop]";
mes "Stop!";
next;
Expand Down Expand Up @@ -1491,7 +1491,7 @@ job3_rang02,251,49,3 script Test Supervisor#jr_13 4_M_JOB_HUNTER,{
setquest 8261;
close;
}
if (getmercinfo(1) == 2034) {
if (getmercinfo(MERCINFO_CLASS) == M_DESERT_WOLF_B) {
erasequest 8261;
mes "Good! Then I'll start the test right now!";
next;
Expand Down
2 changes: 1 addition & 1 deletion npc/re/quests/eden/eden_tutorial.txt
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ moc_para01,34,178,3 script Tutorial Instructor 4_M_KHMAN,{
close;
}
} else if (questprogress(9167) == 1) {
if (!getmercinfo(1)) {
if (!getmercinfo(MERCINFO_CLASS)) {
mes "[Tutorial Instructor]";
mes "You haven't gotten a mercenary yet.";
next;
Expand Down
91 changes: 59 additions & 32 deletions src/map/script.c
Original file line number Diff line number Diff line change
Expand Up @@ -15613,20 +15613,15 @@ static BUILDIN(gethominfo)
return true;
}

/// Retrieves information about character's mercenary
/// getmercinfo <type>[,<char id>];
/*
* Retrieves information about character's mercenary
* getmercinfo <type>{, <char id> };
*/
static BUILDIN(getmercinfo)
{
int type;
struct map_session_data* sd;
struct mercenary_data* md;

type = script_getnum(st,2);

if (script_hasdata(st,3)) {
int char_id = script_getnum(st,3);

if ((sd = script->charid2sd(st, char_id)) == NULL) {
struct map_session_data *sd;
if (script_hasdata(st, 3)) {
if ((sd = script->charid2sd(st, script_getnum(st, 3))) == NULL) {
script_pushnil(st);
return true;
}
Expand All @@ -15635,27 +15630,48 @@ static BUILDIN(getmercinfo)
return true;
}

md = ( sd->status.mer_id && sd->md ) ? sd->md : NULL;
struct mercenary_data *md = (sd->status.mer_id && sd->md)? sd->md : NULL;
int type = script_getnum(st, 2);
if (md == NULL) {
if (type == MERCINFO_NAME)
script_pushconststr(st, "");
else
script_pushint(st, 0);
return true;
}

switch( type )
{
case 0: script_pushint(st,md ? md->mercenary.mercenary_id : 0); break;
case 1: script_pushint(st,md ? md->mercenary.class_ : 0); break;
case 2:
if( md )
script_pushstrcopy(st,md->db->name);
else
script_pushconststr(st,"");
break;
case 3: script_pushint(st,md ? mercenary->get_faith(md) : 0); break;
case 4: script_pushint(st,md ? mercenary->get_calls(md) : 0); break;
case 5: script_pushint(st,md ? md->mercenary.kill_count : 0); break;
case 6: script_pushint(st,md ? mercenary->get_lifetime(md) : 0); break;
case 7: script_pushint(st,md ? md->db->lv : 0); break;
default:
ShowError("buildin_getmercinfo: Invalid type %d (char_id=%d).\n", type, sd->status.char_id);
script_pushnil(st);
return false;
switch (type) {
case MERCINFO_ID:
script_pushint(st, md->mercenary.mercenary_id);
break;
case MERCINFO_CLASS:
script_pushint(st, md->mercenary.class_);
break;
case MERCINFO_NAME:
script_pushstrcopy(st, md->db->name);
break;
case MERCINFO_FAITH:
script_pushint(st, mercenary->get_faith(md));
break;
case MERCINFO_CALLS:
script_pushint(st, mercenary->get_calls(md));
break;
case MERCINFO_KILLCOUNT:
script_pushint(st, md->mercenary.kill_count);
break;
case MERCINFO_LIFETIME:
script_pushint(st, mercenary->get_lifetime(md));
break;
case MERCINFO_LEVEL:
script_pushint(st, md->db->lv);
break;
case MERCINFO_GID:
script_pushint(st, md->bl.id);
break;
default:
ShowError("buildin_getmercinfo: Invalid type %d (char_id=%d).\n", type, sd->status.char_id);
script_pushnil(st);
return false;
}

return true;
Expand Down Expand Up @@ -26116,6 +26132,17 @@ static void script_hardcoded_constants(void)
script->set_constant("ITEMINFO_VIEWSPRITE", ITEMINFO_VIEWSPRITE, false, false);
script->set_constant("ITEMINFO_TRADE", ITEMINFO_TRADE, false, false);

script->constdb_comment("getmercinfo options");
script->set_constant("MERCINFO_ID,", MERCINFO_ID, false, false);
script->set_constant("MERCINFO_CLASS", MERCINFO_CLASS, false, false);
script->set_constant("MERCINFO_NAME", MERCINFO_NAME, false, false);
script->set_constant("MERCINFO_FAITH", MERCINFO_FAITH, false, false);
script->set_constant("MERCINFO_CALLS", MERCINFO_CALLS, false, false);
script->set_constant("MERCINFO_KILLCOUNT", MERCINFO_KILLCOUNT, false, false);
script->set_constant("MERCINFO_LIFETIME", MERCINFO_LIFETIME, false, false);
script->set_constant("MERCINFO_LEVEL", MERCINFO_LEVEL, false, false);
script->set_constant("MERCINFO_GID", MERCINFO_GID, false, false);

script->constdb_comment("monster skill states");
script->set_constant("MSS_ANY", MSS_ANY, false, false);
script->set_constant("MSS_IDLE", MSS_IDLE, false, false);
Expand Down
17 changes: 17 additions & 0 deletions src/map/script.h
Original file line number Diff line number Diff line change
Expand Up @@ -460,6 +460,23 @@ enum script_iteminfo_types {
ITEMINFO_MAX
};

/**
* Mercenary Info types.
*/
enum script_mercinfo_types {
MERCINFO_ID = 0,
MERCINFO_CLASS,
MERCINFO_NAME,
MERCINFO_FAITH,
MERCINFO_CALLS,
MERCINFO_KILLCOUNT,
MERCINFO_LIFETIME,
MERCINFO_LEVEL,
MERCINFO_GID,

MERCINFO_MAX
};

/**
* Player blocking actions related flags.
*/
Expand Down