diff options
author | AnnieRuru <jeankof@ymail.com> | 2014-08-28 18:23:54 +0800 |
---|---|---|
committer | AnnieRuru <jeankof@ymail.com> | 2014-08-28 18:23:54 +0800 |
commit | 33a43ec41542e25ee180bda430a3de4654a46b10 (patch) | |
tree | 963d841455eccb997e015bfc5882ba0994e131d8 /src/map/pc.c | |
parent | 769b1d05aa5cfa8cddfe7d21b35d5c5e4da3bbd6 (diff) | |
download | hercules-33a43ec41542e25ee180bda430a3de4654a46b10.tar.gz hercules-33a43ec41542e25ee180bda430a3de4654a46b10.tar.bz2 hercules-33a43ec41542e25ee180bda430a3de4654a46b10.tar.xz hercules-33a43ec41542e25ee180bda430a3de4654a46b10.zip |
New Optional Configuration for unequipped disabled equipments
http://hercules.ws/board/topic/334-suggestion-for-restricted-equipment-making-a-new-conf-for-it/?p=31003
Diffstat (limited to 'src/map/pc.c')
-rw-r--r-- | src/map/pc.c | 61 |
1 files changed, 42 insertions, 19 deletions
diff --git a/src/map/pc.c b/src/map/pc.c index a6619fad2..2372d3105 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -756,24 +756,6 @@ int pc_setequipindex(struct map_session_data *sd) return 0; } -//static int pc_isAllowedCardOn(struct map_session_data *sd,int s,int eqindex,int flag) -//{ -// int i; -// struct item *item = &sd->status.inventory[eqindex]; -// struct item_data *data; -// -// //Crafted/made/hatched items. -// if (itemdb_isspecial(item->card[0])) -// return 1; -// -// /* scan for enchant armor gems */ -// if( item->card[MAX_SLOTS - 1] && s < MAX_SLOTS - 1 ) -// s = MAX_SLOTS - 1; -// -// ARR_FIND( 0, s, i, item->card[i] && (data = itemdb->exists(item->card[i])) != NULL && data->flag.no_equip&flag ); -// return( i < s ) ? 0 : 1; -//} - bool pc_isequipped(struct map_session_data *sd, int nameid) { @@ -962,6 +944,23 @@ int pc_isequip(struct map_session_data *sd,int n) return 0; } + if ( battle_config.unequip_restricted_equipment & 1 ) { + int i; + for ( i = 0; i < map->list[sd->bl.m].zone->disabled_items_count; i++ ) + if ( map->list[sd->bl.m].zone->disabled_items[i] == sd->status.inventory[n].nameid ) + return 0; + } + + if ( battle_config.unequip_restricted_equipment & 2 ) { + if ( !itemdb_isspecial( sd->status.inventory[n].card[0] ) ) { + int i, slot; + for ( slot = 0; slot < MAX_SLOTS; slot++ ) + for ( i = 0; i < map->list[sd->bl.m].zone->disabled_items_count; i++ ) + if ( map->list[sd->bl.m].zone->disabled_items[i] == sd->status.inventory[n].card[slot] ) + return 0; + } + } + return 1; } @@ -9238,8 +9237,32 @@ int pc_checkitem(struct map_session_data *sd) continue; } + if ( battle_config.unequip_restricted_equipment & 1 ) { + int j; + for ( j = 0; j < map->list[sd->bl.m].zone->disabled_items_count; j++ ) { + if ( map->list[sd->bl.m].zone->disabled_items[j] == sd->status.inventory[i].nameid ) { + pc_unequipitem( sd, i, 2 ); + calc_flag = 1; + } + } + } + + if ( battle_config.unequip_restricted_equipment & 2 ) { + if ( !itemdb_isspecial( sd->status.inventory[i].card[0] ) ) { + int j, slot; + for ( slot = 0; slot < MAX_SLOTS; slot++ ) { + for ( j = 0; j < map->list[sd->bl.m].zone->disabled_items_count; j++ ) { + if ( map->list[sd->bl.m].zone->disabled_items[j] == sd->status.inventory[i].card[slot] ) { + pc_unequipitem( sd, i, 2 ); + calc_flag = 1; + } + } + } + } + } + } - + if( calc_flag && sd->state.active ) { pc->checkallowskill(sd); status_calc_pc(sd,SCO_NONE); |