Fixed logging of #CASHPOINTS and #KAFRAPOINTS (#3252)
* Fixes #2169 * #CASHPOINTS and #KAFRAPOINTS now will be logged correctly when used by scripting * Fixed a bug where points removed cash as well * Small cleanup for pc_paycash and pc_getcash * Thanks to @Lemongrass3110, @ecdarreola
This commit is contained in:
parent
b3a51eaa35
commit
ce9cbd2e65
@ -8495,14 +8495,14 @@ ACMD_FUNC(cash)
|
||||
{ // @points
|
||||
if( value > 0 ) {
|
||||
if( (ret=pc_getcash(sd, 0, value, LOG_TYPE_COMMAND)) >= 0){
|
||||
sprintf(output, msg_txt(sd,506), ret, sd->kafraPoints); // Gained %d kafra points. Total %d points.
|
||||
clif_messagecolor(&sd->bl, color_table[COLOR_LIGHT_GREEN], output, false, SELF);
|
||||
sprintf(output, msg_txt(sd,506), ret, sd->kafraPoints); // Gained %d kafra points. Total %d points.
|
||||
clif_messagecolor(&sd->bl, color_table[COLOR_LIGHT_GREEN], output, false, SELF);
|
||||
}
|
||||
else clif_displaymessage(fd, msg_txt(sd,149)); // Impossible to increase the number/value.
|
||||
} else {
|
||||
if( (ret=pc_paycash(sd, -value, -value, LOG_TYPE_COMMAND)) >= 0){
|
||||
sprintf(output, msg_txt(sd,411), ret, sd->kafraPoints); // Removed %d kafra points. Total %d points.
|
||||
clif_messagecolor(&sd->bl, color_table[COLOR_LIGHT_GREEN], output, false, SELF);
|
||||
if( (ret=pc_paycash(sd, 0, -value, LOG_TYPE_COMMAND)) >= 0){
|
||||
sprintf(output, msg_txt(sd,411), ret, sd->kafraPoints); // Removed %d kafra points. Total %d points.
|
||||
clif_messagecolor(&sd->bl, color_table[COLOR_LIGHT_GREEN], output, false, SELF);
|
||||
}
|
||||
else clif_displaymessage(fd, msg_txt(sd,41)); // Unable to decrease the number/value.
|
||||
}
|
||||
|
@ -433,6 +433,8 @@ enum _sp {
|
||||
SP_ROULETTE_BRONZE = 128,
|
||||
SP_ROULETTE_SILVER = 129,
|
||||
SP_ROULETTE_GOLD = 130,
|
||||
SP_CASHPOINTS, SP_KAFRAPOINTS,
|
||||
SP_PCDIECOUNTER, SP_COOKMASTERY,
|
||||
|
||||
// Mercenaries
|
||||
SP_MERCFLEE=165, SP_MERCKILLS=189, SP_MERCFAITH=190,
|
||||
|
@ -4470,12 +4470,15 @@ int pc_paycash(struct map_session_data *sd, int price, int points, e_log_pick_ty
|
||||
return -1;
|
||||
}
|
||||
|
||||
pc_setaccountreg(sd, add_str(CASHPOINT_VAR), sd->cashPoints-cash);
|
||||
if( cash ){
|
||||
pc_setaccountreg(sd, add_str(CASHPOINT_VAR), sd->cashPoints - cash);
|
||||
sd->cashPoints -= cash;
|
||||
log_cash( sd, type, LOG_CASH_TYPE_CASH, -cash );
|
||||
}
|
||||
pc_setaccountreg(sd, add_str(KAFRAPOINT_VAR), sd->kafraPoints-points);
|
||||
|
||||
if( points ){
|
||||
pc_setaccountreg(sd, add_str(KAFRAPOINT_VAR), sd->kafraPoints - points);
|
||||
sd->kafraPoints -= points;
|
||||
log_cash( sd, type, LOG_CASH_TYPE_KAFRA, -points );
|
||||
}
|
||||
|
||||
@ -4514,9 +4517,8 @@ int pc_getcash(struct map_session_data *sd, int cash, int points, e_log_pick_typ
|
||||
}
|
||||
|
||||
pc_setaccountreg(sd, add_str(CASHPOINT_VAR), sd->cashPoints+cash);
|
||||
if( cash ){
|
||||
log_cash( sd, type, LOG_CASH_TYPE_CASH, cash );
|
||||
}
|
||||
sd->cashPoints += cash;
|
||||
log_cash( sd, type, LOG_CASH_TYPE_CASH, cash );
|
||||
|
||||
if( battle_config.cashshop_show_points )
|
||||
{
|
||||
@ -4540,9 +4542,8 @@ int pc_getcash(struct map_session_data *sd, int cash, int points, e_log_pick_typ
|
||||
}
|
||||
|
||||
pc_setaccountreg(sd, add_str(KAFRAPOINT_VAR), sd->kafraPoints+points);
|
||||
if( points ){
|
||||
log_cash( sd, type, LOG_CASH_TYPE_KAFRA, points );
|
||||
}
|
||||
sd->kafraPoints += points;
|
||||
log_cash( sd, type, LOG_CASH_TYPE_KAFRA, points );
|
||||
|
||||
if( battle_config.cashshop_show_points )
|
||||
{
|
||||
@ -8093,9 +8094,13 @@ int pc_readparam(struct map_session_data* sd,int type)
|
||||
case SP_CHARRENAME: val = sd->status.rename; break;
|
||||
case SP_CHARFONT: val = sd->status.font; break;
|
||||
case SP_BANK_VAULT: val = sd->bank_vault; break;
|
||||
case SP_CASHPOINTS: val = sd->cashPoints; break;
|
||||
case SP_KAFRAPOINTS: val = sd->kafraPoints; break;
|
||||
case SP_ROULETTE_BRONZE: val = sd->roulette_point.bronze; break;
|
||||
case SP_ROULETTE_SILVER: val = sd->roulette_point.silver; break;
|
||||
case SP_ROULETTE_GOLD: val = sd->roulette_point.gold; break;
|
||||
case SP_PCDIECOUNTER: val = sd->die_counter; break;
|
||||
case SP_COOKMASTERY: val = sd->cook_mastery; break;
|
||||
case SP_CRITICAL: val = sd->battle_status.cri/10; break;
|
||||
case SP_ASPD: val = (2000-sd->battle_status.amotion)/10; break;
|
||||
case SP_BASE_ATK: val = sd->battle_status.batk; break;
|
||||
@ -8380,6 +8385,41 @@ bool pc_setparam(struct map_session_data *sd,int type,int val)
|
||||
sd->roulette_point.gold = val;
|
||||
pc_setreg2(sd, ROULETTE_GOLD_VAR, sd->roulette_point.gold);
|
||||
return true;
|
||||
case SP_CASHPOINTS:
|
||||
if (val < 0)
|
||||
return false;
|
||||
if (!sd->state.connect_new)
|
||||
log_cash(sd, LOG_TYPE_SCRIPT, LOG_CASH_TYPE_CASH, -(sd->cashPoints - cap_value(val, 0, MAX_ZENY)));
|
||||
sd->cashPoints = cap_value(val, 0, MAX_ZENY);
|
||||
pc_setaccountreg(sd, add_str(CASHPOINT_VAR), sd->cashPoints);
|
||||
return true;
|
||||
case SP_KAFRAPOINTS:
|
||||
if (val < 0)
|
||||
return false;
|
||||
if (!sd->state.connect_new)
|
||||
log_cash(sd, LOG_TYPE_SCRIPT, LOG_CASH_TYPE_KAFRA, -(sd->kafraPoints - cap_value(val, 0, MAX_ZENY)));
|
||||
sd->kafraPoints = cap_value(val, 0, MAX_ZENY);
|
||||
pc_setaccountreg(sd, add_str(KAFRAPOINT_VAR), sd->kafraPoints);
|
||||
return true;
|
||||
case SP_PCDIECOUNTER:
|
||||
if (val < 0)
|
||||
return false;
|
||||
if (sd->die_counter == val)
|
||||
return true;
|
||||
sd->die_counter = val;
|
||||
if (!sd->die_counter && (sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE)
|
||||
status_calc_pc(sd, SCO_NONE); // Lost the bonus.
|
||||
pc_setglobalreg(sd, add_str(PCDIECOUNTER_VAR), sd->die_counter);
|
||||
return true;
|
||||
case SP_COOKMASTERY:
|
||||
if (val < 0)
|
||||
return false;
|
||||
if (sd->cook_mastery == val)
|
||||
return true;
|
||||
val = cap_value(val, 0, 1999);
|
||||
sd->cook_mastery = val;
|
||||
pc_setglobalreg(sd, add_str(COOKMASTERY_VAR), sd->cook_mastery);
|
||||
return true;
|
||||
default:
|
||||
ShowError("pc_setparam: Attempted to set unknown parameter '%d'.\n", type);
|
||||
return false;
|
||||
@ -9234,30 +9274,6 @@ int pc_setregistry(struct map_session_data *sd, int64 reg, int val)
|
||||
struct script_reg_num *p = NULL;
|
||||
const char *regname = get_str(script_getvarid(reg));
|
||||
unsigned int index = script_getvaridx(reg);
|
||||
|
||||
// These should be stored elsewhere e.g. char ones in char table, the cash ones in account_data table!
|
||||
switch( regname[0] ) {
|
||||
default: //Char reg
|
||||
if( !strcmp(regname,PCDIECOUNTER_VAR) && sd->die_counter != val ) {
|
||||
int i = (!sd->die_counter && (sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE);
|
||||
sd->die_counter = val;
|
||||
if( i )
|
||||
status_calc_pc(sd,SCO_NONE); // Lost the bonus.
|
||||
} else if( !strcmp(regname,COOKMASTERY_VAR) && sd->cook_mastery != val ) {
|
||||
val = cap_value(val, 0, 1999);
|
||||
sd->cook_mastery = val;
|
||||
}
|
||||
break;
|
||||
case '#':
|
||||
if( !strcmp(regname,CASHPOINT_VAR) && sd->cashPoints != val ) {
|
||||
val = cap_value(val, 0, MAX_ZENY);
|
||||
sd->cashPoints = val;
|
||||
} else if( !strcmp(regname,KAFRAPOINT_VAR) && sd->kafraPoints != val ) {
|
||||
val = cap_value(val, 0, MAX_ZENY);
|
||||
sd->kafraPoints = val;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if ( !reg_load && !sd->vars_ok ) {
|
||||
ShowError("pc_setregistry : refusing to set %s until vars are received.\n", regname);
|
||||
|
@ -514,6 +514,10 @@
|
||||
export_parameter(ROULETTE_BRONZE_VAR,SP_ROULETTE_BRONZE);
|
||||
export_parameter(ROULETTE_SILVER_VAR,SP_ROULETTE_SILVER);
|
||||
export_parameter(ROULETTE_GOLD_VAR,SP_ROULETTE_GOLD);
|
||||
export_parameter(CASHPOINT_VAR, SP_CASHPOINTS);
|
||||
export_parameter(KAFRAPOINT_VAR, SP_KAFRAPOINTS);
|
||||
export_parameter(PCDIECOUNTER_VAR, SP_PCDIECOUNTER);
|
||||
export_parameter(COOKMASTERY_VAR, SP_COOKMASTERY);
|
||||
|
||||
export_constant2("bMaxHP",SP_MAXHP);
|
||||
export_constant2("bMaxSP",SP_MAXSP);
|
||||
|
Loading…
x
Reference in New Issue
Block a user