Merge pull request #1509 from rathena/feature/stat_reduce_pot
Implemented status reduction potion support
This commit is contained in:
commit
51ef9118a8
@ -4294,6 +4294,14 @@ This command will force a stat recalculation for the attached player.
|
||||
|
||||
---------------------------------------
|
||||
|
||||
*needed_status_point(<type>,<val>{,<char id>});
|
||||
|
||||
Returns the number of stat points needed to change the specified stat <type> by <val>.
|
||||
If <val> is negative, returns the number of stat points that would be needed to
|
||||
raise the specified stat from (current value - <val>) to current value.
|
||||
|
||||
---------------------------------------
|
||||
|
||||
*get_revision()
|
||||
|
||||
This command will return the SVN revision number that the server is currently
|
||||
|
@ -304,3 +304,28 @@ function script F_Snowball {
|
||||
}
|
||||
end;
|
||||
}
|
||||
|
||||
// Status reduction potion
|
||||
//============================================================
|
||||
// - Permanently reduces base stat <type> by <val>.
|
||||
// - Returns status points equals to points needed to raise
|
||||
// that stat to original value.
|
||||
// - Doesn't work if base status <type> would become lower than 1 after reduction.
|
||||
// * callfunc("F_CashReduceStat",<type>{,<val>,<itemid>});
|
||||
function script F_CashReduceStat {
|
||||
.@type = getarg(0);
|
||||
.@amount = getarg(1, -1);
|
||||
.@itemid = getarg(2, 0);
|
||||
|
||||
if((readparam(.@type) + .@amount) < 1) return;
|
||||
|
||||
if(.@itemid) {
|
||||
if(countitem(.@itemid))
|
||||
delitem .@itemid,1;
|
||||
else
|
||||
return;
|
||||
}
|
||||
StatusPoint += needed_status_point(.@type, .@amount);
|
||||
statusup2 .@type,.@amount;
|
||||
return;
|
||||
}
|
||||
|
@ -21661,6 +21661,22 @@ BUILDIN_FUNC(setrandomoption) {
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
}
|
||||
|
||||
/// Returns the number of stat points needed to change the specified stat by val.
|
||||
/// If val is negative, returns the number of stat points that would be needed to
|
||||
/// raise the specified stat from (current value - val) to current value.
|
||||
/// *needed_status_point(<type>,<val>{,<char id>});
|
||||
/// @author [secretdataz]
|
||||
BUILDIN_FUNC(needed_status_point) {
|
||||
struct map_session_data *sd;
|
||||
int type, val;
|
||||
if (!script_charid2sd(4, sd))
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
type = script_getnum(st, 2);
|
||||
val = script_getnum(st, 3);
|
||||
|
||||
script_pushint(st, pc_need_status_point(sd, type, val));
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
}
|
||||
#include "../custom/script.inc"
|
||||
|
||||
// declarations that were supposed to be exported from npc_chat.c
|
||||
@ -22243,6 +22259,7 @@ struct script_function buildin_func[] = {
|
||||
BUILDIN_DEF(getrandomoptinfo, "i"),
|
||||
BUILDIN_DEF(getequiprandomoption, "iii?"),
|
||||
BUILDIN_DEF(setrandomoption,"iiiii?"),
|
||||
BUILDIN_DEF(needed_status_point,"ii?"),
|
||||
|
||||
#include "../custom/script_def.inc"
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user