diff --git a/src/map/battle.c b/src/map/battle.c index fe7a64b51..f9066fcb8 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -7417,6 +7417,7 @@ static const struct battle_data { { "features/enable_achievement_system", &battle_config.feature_enable_achievement, 1, 0, 1, }, { "ping_timer_inverval", &battle_config.ping_timer_interval, 30, 0, 99999999, }, { "ping_time", &battle_config.ping_time, 20, 0, 99999999, }, + { "hom_bonus_exp_from_master", &battle_config.hom_bonus_exp_from_master, 10, 0, 100, }, }; static bool battle_set_value_sub(int index, int value) diff --git a/src/map/npc.c b/src/map/npc.c index 4b79a9fed..e11f00b2a 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -2069,9 +2069,6 @@ static int npc_buylist(struct map_session_data *sd, struct itemlist *item_list) w += itemdb_weight(entry->id) * entry->amount; } - if (nd->master_nd != NULL) //Script-based shops. - return npc->buylist_sub(sd, item_list, nd->master_nd); - if (z > sd->status.zeny) return 1; // Not enough Zeny if( w + sd->weight > sd->max_weight ) @@ -2108,6 +2105,9 @@ static int npc_buylist(struct map_session_data *sd, struct itemlist *item_list) } } + if (nd->master_nd != NULL) // TMW2 Script-based shops. + return npc->buylist_sub(sd, item_list, nd->master_nd); + return 0; } @@ -2178,6 +2178,9 @@ static int npc_market_buylist(struct map_session_data *sd, struct itemlist *item return 1; } + // Apply player discout cupon (TMW2 Custom) + value = pc->modifybuyvalue(sd,value); + z += (int64)value * entry->amount; w += itemdb_weight(entry->id) * entry->amount; } @@ -2217,6 +2220,9 @@ static int npc_market_buylist(struct map_session_data *sd, struct itemlist *item } } + if (nd->master_nd != NULL) // TMW2 Script-based shops. + return npc->buylist_sub(sd, item_list, nd->master_nd); + return 0; } diff --git a/src/map/rodex.c b/src/map/rodex.c index 766fdc5ea..996576fd3 100644 --- a/src/map/rodex.c +++ b/src/map/rodex.c @@ -34,11 +34,11 @@ // NOTE : These values are hardcoded into the client // Cost of each Attached Item -#define ATTACHITEM_COST 2500 +#define ATTACHITEM_COST 500 // Percent of Attached Zeny that will be paid as Tax -#define ATTACHZENY_TAX 2 +#define ATTACHZENY_TAX 0 // Maximun number of messages that can be sent in one day -#define DAILY_MAX_MAILS 100 +#define DAILY_MAX_MAILS 3 static struct rodex_interface rodex_s; struct rodex_interface *rodex; diff --git a/src/map/script.c b/src/map/script.c index fe8638ac3..de8122ea3 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -16394,6 +16394,8 @@ static BUILDIN(summon) clif->specialeffect(&md->bl,344,AREA); sc_start4(NULL, &md->bl, SC_MODECHANGE, 100, 1, 0, MD_AGGRESSIVE, 0, 60000); } + //mob_id = mob->once_spawn(sd, m, x, y, str, class_, amount, event, size, ai); + script_pushint(st, (md) ? md->bl.id : 0); return true; } diff --git a/src/map/status.c b/src/map/status.c index f06bb0330..1cd69ff18 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -3552,7 +3552,7 @@ static void status_calc_regen(struct block_list *bl, struct status_data *st, str regen->hp = cap_value(val, reg_flag, SHRT_MAX); - val = 1 + (st->int_/6) + (st->max_sp/100); + val = 1 + (st->int_/5) + (st->max_sp/100); if( st->int_ >= 120 ) val += ((st->int_-120)>>1) + 4; @@ -4468,17 +4468,23 @@ static unsigned short status_base_atk(const struct block_list *bl, const struct case W_SHOTGUN: case W_GRENADE: flag = 1; + break; + case W_STAFF: + flag = 2; } } - if ( flag ) { + if ( flag == 1 ) { str = st->dex; dex = st->str; + } else if ( flag == 2 ) { + str = st->int_; + dex = st->dex; } else { str = st->str; dex = st->dex; } #ifdef RENEWAL - dstr = str; + dstr = str*15/10; #endif //Normally only players have base-atk, but homunc have a different batk // equation, hinting that perhaps non-players should use this for batk.