Update sc_end_class (#2673)
* Adjusted script command sc_end_class to accept an optional job ID. Thanks to @sader1992!
This commit is contained in:
parent
f0686828e7
commit
1b68303f74
@ -5350,7 +5350,7 @@ Used in reset NPC's (duh!)
|
|||||||
*sc_start2 <effect type>,<ticks>,<value 1>,<value 2>{,<rate>,<flag>{,<GID>}};
|
*sc_start2 <effect type>,<ticks>,<value 1>,<value 2>{,<rate>,<flag>{,<GID>}};
|
||||||
*sc_start4 <effect type>,<ticks>,<value 1>,<value 2>,<value 3>,<value 4>{,<rate>,<flag>{,<GID>}};
|
*sc_start4 <effect type>,<ticks>,<value 1>,<value 2>,<value 3>,<value 4>{,<rate>,<flag>{,<GID>}};
|
||||||
*sc_end <effect type>{,<GID>};
|
*sc_end <effect type>{,<GID>};
|
||||||
*sc_end_class {<char_id>};
|
*sc_end_class {<char_id>{,<job_id>}};
|
||||||
|
|
||||||
These commands will bestow a status effect on a character.
|
These commands will bestow a status effect on a character.
|
||||||
|
|
||||||
@ -5389,7 +5389,7 @@ and theirs val1, val2, val3, and val4 usage in source.
|
|||||||
perform a complete removal of all statuses (although permanent ones will re-apply).
|
perform a complete removal of all statuses (although permanent ones will re-apply).
|
||||||
|
|
||||||
'sc_end_class' works like 'sc_end' but will remove all status effects from any learned
|
'sc_end_class' works like 'sc_end' but will remove all status effects from any learned
|
||||||
skill on the invoking character.
|
skill on the invoking character. If <job_id> is provided it will end the effect for that job.
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
// This will poison the invoking character for 10 minutes at 50% chance.
|
// This will poison the invoking character for 10 minutes at 50% chance.
|
||||||
@ -5408,6 +5408,18 @@ Examples:
|
|||||||
// This will end the Freezing status for the invoking character.
|
// This will end the Freezing status for the invoking character.
|
||||||
sc_end SC_FREEZE;
|
sc_end SC_FREEZE;
|
||||||
|
|
||||||
|
// This will end the effect of any learned skill for the invoking character.
|
||||||
|
sc_end_class;
|
||||||
|
|
||||||
|
// This will end the effect of any learned skill for the character with the <char_id> 150000.
|
||||||
|
// val1: <char_id>
|
||||||
|
sc_end_class(150000);
|
||||||
|
|
||||||
|
// This will end the effect of any Arch Bishop skill for the invoking character.
|
||||||
|
// val1: <char_id>
|
||||||
|
// val2: <job_id> of Arch Bishop
|
||||||
|
sc_end_class(getcharid(0),Job_Arch_Bishop);
|
||||||
|
|
||||||
Note: to use SC_NOCHAT you should alter Manner
|
Note: to use SC_NOCHAT you should alter Manner
|
||||||
set Manner, -5; // Will mute a user for 5 minutes
|
set Manner, -5; // Will mute a user for 5 minutes
|
||||||
set Manner, 0; // Will unmute a user
|
set Manner, 0; // Will unmute a user
|
||||||
|
@ -11325,18 +11325,29 @@ BUILDIN_FUNC(sc_end)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Ends all status effects from any learned skill on the attached player.
|
* Ends all status effects from any learned skill on the attached player.
|
||||||
* sc_end_class {<char_id>};
|
* if <job_id> was given it will end the effect of that class for the attached player
|
||||||
|
* sc_end_class {<char_id>{,<job_id>}};
|
||||||
*/
|
*/
|
||||||
BUILDIN_FUNC(sc_end_class)
|
BUILDIN_FUNC(sc_end_class)
|
||||||
{
|
{
|
||||||
struct map_session_data *sd;
|
struct map_session_data *sd;
|
||||||
uint16 skill_id;
|
uint16 skill_id;
|
||||||
int i;
|
int class_;
|
||||||
|
|
||||||
if (!script_charid2sd(2, sd))
|
if (!script_charid2sd(2, sd))
|
||||||
return SCRIPT_CMD_FAILURE;
|
return SCRIPT_CMD_FAILURE;
|
||||||
|
|
||||||
for (i = 0; i < MAX_SKILL_TREE && (skill_id = skill_tree[pc_class2idx(sd->status.class_)][i].skill_id) > 0; i++) { // Remove status specific to your current tree skills.
|
if (script_hasdata(st, 3))
|
||||||
|
class_ = script_getnum(st, 3);
|
||||||
|
else
|
||||||
|
class_ = sd->status.class_;
|
||||||
|
|
||||||
|
if (!pcdb_checkid(class_)) {
|
||||||
|
ShowError("buildin_sc_end_class: Invalid job ID '%d' given.\n", script_getnum(st, 3));
|
||||||
|
return SCRIPT_CMD_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < MAX_SKILL_TREE && (skill_id = skill_tree[pc_class2idx(class_)][i].skill_id) > 0; i++) {
|
||||||
enum sc_type sc = status_skill2sc(skill_id);
|
enum sc_type sc = status_skill2sc(skill_id);
|
||||||
|
|
||||||
if (sc > SC_COMMON_MAX && sd->sc.data[sc])
|
if (sc > SC_COMMON_MAX && sd->sc.data[sc])
|
||||||
@ -23882,7 +23893,7 @@ struct script_function buildin_func[] = {
|
|||||||
BUILDIN_DEF2(sc_start,"sc_start2","iiii???"),
|
BUILDIN_DEF2(sc_start,"sc_start2","iiii???"),
|
||||||
BUILDIN_DEF2(sc_start,"sc_start4","iiiiii???"),
|
BUILDIN_DEF2(sc_start,"sc_start4","iiiiii???"),
|
||||||
BUILDIN_DEF(sc_end,"i?"),
|
BUILDIN_DEF(sc_end,"i?"),
|
||||||
BUILDIN_DEF(sc_end_class,"?"),
|
BUILDIN_DEF(sc_end_class,"??"),
|
||||||
BUILDIN_DEF(getstatus, "i??"),
|
BUILDIN_DEF(getstatus, "i??"),
|
||||||
BUILDIN_DEF(getscrate,"ii?"),
|
BUILDIN_DEF(getscrate,"ii?"),
|
||||||
BUILDIN_DEF(debugmes,"s"),
|
BUILDIN_DEF(debugmes,"s"),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user