diff options
-rw-r--r-- | .tools/beta.patch2 | 219 |
1 files changed, 1 insertions, 218 deletions
diff --git a/.tools/beta.patch2 b/.tools/beta.patch2 index 8a6895b51..8b1378917 100644 --- a/.tools/beta.patch2 +++ b/.tools/beta.patch2 @@ -1,218 +1 @@ -diff --git a/src/map/battle.c b/src/map/battle.c -index 37fc03bca..eb96f2036 100644 ---- a/src/map/battle.c -+++ b/src/map/battle.c -@@ -372,7 +372,7 @@ static int64 battle_attr_fix(struct block_list *src, struct block_list *target, - return damage; - } - -- ratio = battle->attr_fix_table[def_lv-1][atk_elem][def_type]; -+ ratio = battle->attr_fix_table[def_lv-1][def_type][atk_elem]; - if (sc && sc->count) { - if(sc->data[SC_VOLCANO] && atk_elem == ELE_FIRE) - ratio += skill->enchant_eff[sc->data[SC_VOLCANO]->val1-1]; -@@ -1426,7 +1426,7 @@ static int64 battle_calc_defense(int attack_type, struct block_list *src, struct - **/ - - if( def1 < -399 ) // it stops at -399 -- def1 = 399; // in aegis it set to 1 but in our case it may lead to exploitation so limit it to 399 -+ def1 = -399; // in aegis it set to 1 but in our case it may lead to exploitation so limit it to 399 - //return 1; - - if( flag&2 ) -@@ -1481,7 +1481,7 @@ static int64 battle_calc_defense(int attack_type, struct block_list *src, struct - * RE MDEF Reduction - **/ - if( mdef < -99 ) // it stops at -99 -- mdef = 99; // in aegis it set to 1 but in our case it may lead to exploitation so limit it to 99 -+ mdef = -99; // in aegis it set to 1 but in our case it may lead to exploitation so limit it to 99 - //return 1; - - damage = (int)((100.0f - mdef / (mdef + 100.0f) * 90.0f) / 100.0f * damage - mdef2); -@@ -4664,7 +4664,7 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl - skill_id == SN_SHARPSHOOTING || skill_id == MA_SHARPSHOOTING || - skill_id == NJ_KIRIKAGE)) - { -- short cri = sstatus->cri; -+ int cri = sstatus->cri; - if (sd != NULL) { - // if show_katar_crit_bonus is enabled, it already done the calculation in status.c - if (!battle_config.show_katar_crit_bonus && sd->weapontype == W_KATAR) { -@@ -4684,7 +4684,7 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl - //Therefore, we use the old value 3 on cases when an sd gets attacked by a mob - cri -= tstatus->luk*(!sd&&tsd?3:2); - #else -- cri -= status->get_lv(target) / 15 + 2 * status_get_luk(target); -+ cri -= status->get_lv(target) / 5 + (3 * status_get_luk(target))/2; - #endif - - if( tsc && tsc->data[SC_SLEEP] ) { -diff --git a/src/map/npc.c b/src/map/npc.c -index fea82c873..84d292415 100644 ---- a/src/map/npc.c -+++ b/src/map/npc.c -@@ -2070,9 +2070,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 ) -@@ -2109,6 +2106,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; - } - -@@ -2179,6 +2179,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; - } -@@ -2218,6 +2221,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; - } - -@@ -2463,7 +2469,7 @@ static int npc_selllist(struct map_session_data *sd, struct itemlist *item_list) - - z = 0; - -- if (sd->status.zeny >= MAX_ZENY && nd->master_nd == NULL) -+ if (sd->status.zeny >= MAX_ZENY) - return 1; - - // verify the sell list -@@ -2487,20 +2493,11 @@ static int npc_selllist(struct map_session_data *sd, struct itemlist *item_list) - return 1; - } - -- if (nd->master_nd) { -- // Script-controlled shops decide by themselves, what can be sold and at what price. -- continue; -- } -- - value = pc->modifysellvalue(sd, sd->inventory_data[idx]->value_sell); - - z += (int64)value * entry->amount; - } - -- if( nd->master_nd ) { // Script-controlled shops -- return npc->selllist_sub(sd, item_list, nd->master_nd); -- } -- - // delete items - for (i = 0; i < VECTOR_LENGTH(*item_list); i++) { - struct itemlist_entry *entry = &VECTOR_INDEX(*item_list, i); -@@ -2519,7 +2516,7 @@ static int npc_selllist(struct map_session_data *sd, struct itemlist *item_list) - - } - -- if (z + sd->status.zeny > MAX_ZENY && nd->master_nd == NULL) -+ if (z + sd->status.zeny > MAX_ZENY) - return 1; - - if (z > MAX_ZENY) -@@ -2540,6 +2537,10 @@ static int npc_selllist(struct map_session_data *sd, struct itemlist *item_list) - } - } - -+ if( nd->master_nd ) { // Script-controlled shops -+ return npc->selllist_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 f515d4403..3747abd6e 100644 ---- a/src/map/script.c -+++ b/src/map/script.c -@@ -16552,6 +16552,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 63e71c9dc..9a235e5e3 100644 ---- a/src/map/status.c -+++ b/src/map/status.c -@@ -4469,17 +4469,23 @@ static int status_base_atk(const struct block_list *bl, const struct status_data - 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. -@@ -6124,6 +6130,12 @@ static short status_calc_aspd(struct block_list *bl, struct status_change *sc, s - static short status_calc_fix_aspd(struct block_list *bl, struct status_change *sc, int aspd) - { - nullpo_ret(bl); -+ -+ // TMW2 Nerfing -+ if (aspd < 300) -+ aspd=cap_value(aspd+(aspd / 2), 0, 300); -+ -+ // Status Conditions - if (!sc || !sc->count) - return cap_value(aspd, 0, 2000); - + |