summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.tools/beta.patch2219
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);
-
+