diff --git a/plugins/eventMacro/eventMacro/Condition/Base/InInventory.pm b/plugins/eventMacro/eventMacro/Condition/Base/InInventory.pm index 1bad10e3cb..25853c5911 100644 --- a/plugins/eventMacro/eventMacro/Condition/Base/InInventory.pm +++ b/plugins/eventMacro/eventMacro/Condition/Base/InInventory.pm @@ -5,14 +5,18 @@ use strict; use base 'eventMacro::Condition::Base::Inventory'; sub _hooks { - ['inventory_ready','item_gathered','inventory_item_removed','packet/item_list_end']; + ['inventory_clear','inventory_ready','item_gathered','inventory_item_removed','packet/item_list_end']; } sub validate_condition { my ( $self, $callback_type, $callback_name, $args ) = @_; + if ($callback_type eq 'hook') { - if ($callback_name eq 'inventory_ready' + if ($callback_name eq 'inventory_clear') { + $self->{is_on_stand_by} = 1; + + } elsif ($callback_name eq 'inventory_ready' || ($callback_name eq 'item_list_end' && $args->{type}== 0x0)) # INVTYPE_INVENTORY { $self->{is_on_stand_by} = 0; diff --git a/plugins/eventMacro/eventMacro/Condition/InventoryCurrentSize.pm b/plugins/eventMacro/eventMacro/Condition/InventoryCurrentSize.pm index fd4626ae08..3faf02c702 100644 --- a/plugins/eventMacro/eventMacro/Condition/InventoryCurrentSize.pm +++ b/plugins/eventMacro/eventMacro/Condition/InventoryCurrentSize.pm @@ -7,7 +7,7 @@ use base 'eventMacro::Conditiontypes::NumericConditionState'; use Globals qw( $char ); sub _hooks { - ['packet_mapChange','inventory_ready','item_gathered','inventory_item_removed']; + ['inventory_clear','inventory_ready','item_gathered','inventory_item_removed']; } sub _get_val { @@ -22,7 +22,7 @@ sub validate_condition { my ( $self, $callback_type, $callback_name, $args ) = @_; if ($callback_type eq 'hook') { - return $self->SUPER::validate_condition(0) if ($callback_name eq 'packet_mapChange'); + return $self->SUPER::validate_condition(0) if ($callback_name eq 'inventory_clear'); } elsif ($callback_type eq 'variable') { $self->update_validator_var($callback_name, $args); } diff --git a/plugins/eventMacro/eventMacro/Condition/IsEquippedID.pm b/plugins/eventMacro/eventMacro/Condition/IsEquippedID.pm index 60d89d9a72..4cb1b6a566 100644 --- a/plugins/eventMacro/eventMacro/Condition/IsEquippedID.pm +++ b/plugins/eventMacro/eventMacro/Condition/IsEquippedID.pm @@ -9,7 +9,7 @@ use base 'eventMacro::Condition'; use eventMacro::Utilities qw( find_variable ); sub _hooks { - ['packet_mapChange','equipped_item','unequipped_item','inventory_ready']; + ['inventory_clear','equipped_item','unequipped_item','inventory_ready']; } #slot_index to index_name: %equipSlot_lut @@ -142,9 +142,9 @@ sub update_vars { } } - if (!defined $self->{fulfilled_slot} || $changed_fulfilled_index) { + #if (!defined $self->{fulfilled_slot} || $changed_fulfilled_index) { $self->check_all_equips($recheck_index); - } + #} } sub check_all_equips { @@ -178,14 +178,15 @@ sub validate_condition { if ($callback_type eq 'hook') { if ($callback_name eq 'equipped_item') { - return $self->SUPER::validate_condition if (defined $self->{fulfilled_slot} || !exists $self->{slot_name_to_member_to_check_array}{$args->{slot}}); - $self->check_slot($args->{slot}, $args->{item}); + #return $self->SUPER::validate_condition if (defined $self->{fulfilled_slot} || !exists $self->{slot_name_to_member_to_check_array}{$args->{slot}}); + #$self->check_slot($args->{slot}, $args->{item}); + $self->check_all_equips($self->{slot_name_to_member_to_check_array}); } elsif ($callback_name eq 'unequipped_item') { - return $self->SUPER::validate_condition unless (defined $self->{fulfilled_slot} || $self->{fulfilled_slot} ne $args->{slot}); + #return $self->SUPER::validate_condition unless (defined $self->{fulfilled_slot} || $self->{fulfilled_slot} ne $args->{slot}); $self->check_all_equips($self->{slot_name_to_member_to_check_array}); - } elsif ($callback_name eq 'packet_mapChange') { + } elsif ($callback_name eq 'inventory_clear') { $self->{fulfilled_slot} = undef; $self->{fulfilled_item} = undef; $self->{fulfilled_member_index} = undef; diff --git a/plugins/eventMacro/eventMacro/Condition/IsNotEquippedID.pm b/plugins/eventMacro/eventMacro/Condition/IsNotEquippedID.pm index 1fca0b04de..794e9d3fb5 100644 --- a/plugins/eventMacro/eventMacro/Condition/IsNotEquippedID.pm +++ b/plugins/eventMacro/eventMacro/Condition/IsNotEquippedID.pm @@ -7,7 +7,7 @@ use base 'eventMacro::Condition'; use eventMacro::Utilities qw( find_variable ); sub _hooks { - ['packet_mapChange','equipped_item','unequipped_item','inventory_ready']; + ['inventory_clear','equipped_item','unequipped_item','inventory_ready']; } #slot_index to index_name: %equipSlot_lut @@ -141,9 +141,9 @@ sub update_vars { } } - if (!defined $self->{fulfilled_slot} || $changed_fulfilled_slot) { + #if (!defined $self->{fulfilled_slot} || $changed_fulfilled_slot) { $self->check_all_equips($recheck_index); - } + #} } sub check_all_equips { @@ -180,23 +180,28 @@ sub validate_condition { if ($callback_type eq 'hook') { if ($callback_name eq 'equipped_item') { - return $self->SUPER::validate_condition unless (defined $self->{fulfilled_slot}); - return $self->SUPER::validate_condition unless ($args->{slot} eq $self->{fulfilled_slot} && $self->{is_fulfilled_empty} == 1); + #return $self->SUPER::validate_condition unless (defined $self->{fulfilled_slot}); + #return $self->SUPER::validate_condition unless ($args->{slot} eq $self->{fulfilled_slot} && $self->{is_fulfilled_empty} == 1); $self->{fulfilled_slot} = undef; $self->{is_fulfilled_empty} = undef; - $self->check_slot($args->{slot}, $args->{item}); + #$self->check_slot($args->{slot}, $args->{item}); + $self->check_all_equips($self->{slot_name_to_member_to_check_array}); } elsif ($callback_name eq 'unequipped_item') { - return $self->SUPER::validate_condition unless (exists $self->{slot_name_to_member_to_check_array}{$args->{slot}}); - if (defined $self->{fulfilled_slot}) { - return $self->SUPER::validate_condition if ($self->{fulfilled_slot} ne $args->{slot}); - } else { - $self->{fulfilled_slot} = $args->{slot}; - } - $self->{is_fulfilled_empty} = 1; + #return $self->SUPER::validate_condition unless (exists $self->{slot_name_to_member_to_check_array}{$args->{slot}}); + #if (defined $self->{fulfilled_slot}) { + # return $self->SUPER::validate_condition if ($self->{fulfilled_slot} ne $args->{slot}); + #} else { + # $self->{fulfilled_slot} = $args->{slot}; + #} + #$self->{is_fulfilled_empty} = 1; + $self->{fulfilled_slot} = undef; + $self->{is_fulfilled_empty} = undef; + $self->check_all_equips($self->{slot_name_to_member_to_check_array}); - } elsif ($callback_name eq 'packet_mapChange') { + } elsif ($callback_name eq 'inventory_clear') { $self->{fulfilled_slot} = undef; + $self->{is_fulfilled_empty} = undef; $self->{is_on_stand_by} = 1; } elsif ($callback_name eq 'inventory_ready') { diff --git a/src/InventoryList/Inventory.pm b/src/InventoryList/Inventory.pm index 465a859c7c..6f4bc01958 100644 --- a/src/InventoryList/Inventory.pm +++ b/src/InventoryList/Inventory.pm @@ -63,4 +63,11 @@ sub onitemListEnd { } } +sub clear { + my ($self) = @_; + Plugins::callHook('inventory_clear'); + $self->SUPER::clear(); +} + + 1;