#
#        
my $friends_color="\003C";
my $enemyes_color="\003B";
my $family_color="\003K";
my $hidden_color="\003E";
my $neitral_color="\003H";
my $unknown_color="\003H";

&read_who_base; 

my @who_base;
sub read_who_base {
  open(WHO_BASE,"..\\bases\\who_base.dat");
  @who_base=<WHO_BASE>;
  close(WHO_BASE);
}

alias {
  @words=@_; 
  local($found)=0;
  foreach $who(@who_base) {
    ($w_date,$w_author,$w_rel,$w_clan,$w_who,$w_name,$w_prof,$w_race,$w_level,$w_info,$w_end)=split(/\|/,$who);
    if (($w_clan=~/@words/)||($w_name=~/@words/)||($w_who=~/@words/)) {
      local($highl)="";
      if($w_rel eq "H") {$highl = "$hidden_color";}
      if($w_rel eq "E") {$highl = "$enemyes_color";}
      if($w_rel eq "F") {$highl = "$friends_color";}
      if($w_rel eq "O") {$highl = "$family_color";}
      if($w_rel eq "N") {$highl = "$neitral_color";}
      if($w_rel eq "?") {$highl = "$unknown_color";}
      echo "$highl  [$w_clan] $w_race $w_prof $w_level $w_name ($w_who) \003D{: $w_author, $w_date}\003H $w_info";
      $found++;
    }
  }
  if (!$found) {
    echo ",  ,  !";
  } else {
    echo " : $found";
  }
} "!";

alias {
  @words=@_;
  local($found)=0;
  foreach $who(@who_base) {
    ($w_date,$w_author,$w_rel,$w_clan,$w_who,$w_name,$w_prof,$w_race,$w_level,$w_info,$w_end)=split(/\|/,$who);
    if (($w_clan=~/$words[0]/)&&($w_prof=~/$words[1]/)) {
      local($highl)="";
      if($w_rel eq "H") {$highl = "$hidden_color";}
      if($w_rel eq "E") {$highl = "$enemyes_color";}
      if($w_rel eq "F") {$highl = "$friends_color";}
      if($w_rel eq "O") {$highl = "$family_color";}
      if($w_rel eq "N") {$highl = "$neitral_color";}
      if($w_rel eq "?") {$highl = "$unknown_color";}
      echo "$highl  [$w_clan] $w_race $w_prof $w_level $w_name ($w_who) \003D{: $w_author, $w_date}\003H $w_info";
      $found++;
    }
  }
  if (!$found) {
    echo ",  ,  !";
  } else {
    echo " : $found";
  }
} "!";

alias {
  @words=@_;
  $w_name=$words[0];
  shift @words;
  $w_rel="?";
  $w_race="?";
  $w_prof="?";
  $w_level="?";
  $w_who="?";
  $w_clan="?";
  $w_info="";
  $w_author="";
  $w_date=GetDate();
  @addparams=split(/!/,"@words");
  foreach $addparam(@addparams) {
    ($what,@values)=split(/ /,$addparam);
    if(($what eq "")||($what eq "")) {
      if("@values" eq "") {$w_rel="H"; $highl="$hidden_color";}
      if("@values" eq "") {$w_rel="E"; $highl="$enemyes_color";}
      if("@values" eq "") {$w_rel="O"; $highl="$friends_color";}
      if("@values" eq "") {$w_rel="O"; $highl="$family_color";}
      if("@values" eq "") {$w_rel="N"; $highl="$neitral_color";}
      if("@values" eq "?") {$w_rel="?"; $highl="$unknown_color";}
    }
    elsif ($what eq "") {$w_clan="@values";}
    elsif ($what eq "") {$w_name="@values";}
    elsif (($what eq "")||($what eq "")) {$w_who="@values";}
    elsif ($what eq "") {$w_prof="@values";}
    elsif ($what eq "") {$w_race="@values";}
    elsif (($what eq "")||($what eq "")) {$w_level="@values";}
    elsif ($what eq "") {$w_info="@values";}
    else {
      echo " : $what";
      echo " : , , , , , , , .";
    }
  }
  $found=0;
  foreach $who2(@who_base) {
    ($w_date2,$w_author2,$w_rel2,$w_clan2,$w_who2,$w_name2,$w_prof2,$w_race2,$w_level2,$w_info2,$w_end2)=split(/\|/,$who2);
    if ($w_name2 eq $w_name) {
      local($highl2)="";
      if($w_rel2 eq "H") {$highl2 = "$hidden_color";}
      if($w_rel2 eq "E") {$highl2 = "$enemyes_color";}
      if($w_rel2 eq "F") {$highl2 = "$friends_color";}
      if($w_rel2 eq "O") {$highl2 = "$family_color";}
      if($w_rel2 eq "N") {$highl2 = "$neitral_color";}
      if($w_rel2 eq "?") {$highl2 = "$unknown_color";}
      $save_who = " $highl2  [$w_clan2] $w_race2 $w_prof2 $w_level2 $w_name2 ($w_who2) \003D{: $w_author2, $w_date2}\003H $w_info2";
      $found=1;
    }
  }
  if ($found) {
    echo "   : $save_who\n";
  } else {
    $new_who="$w_date\|$w_author\|$w_rel\|$w_clan\|$w_who\|$w_name\|$w_prof\|$w_race\|$w_level\|$w_info\|\n";
    open(WHO_BASE,">>..\\bases\\who_base.dat");
    print WHO_BASE $new_who;
    close(WHO_BASE);
    push @who_base, $new_who;
    echo ": $highl [$w_clan] $w_race $w_prof $w_level $w_name ($w_who) \003D{: $w_author, $w_date}\003H $w_info";
  }
} "!";

alias {
  @words=@_;
  open(WHO_BASE,">..\\bases\\who_base.dat");
  $found=0;
  $n=0;
  $search_name=$words[0];
  shift @words;
  foreach $who(@who_base) {
    ($w_date,$w_author,$w_rel,$w_clan,$w_who,$w_name,$w_prof,$w_race,$w_level,$w_info,$w_end)=split(/\|/,$who);
    if (($w_name eq $search_name)&&(!$found)) {
      local($highl)="";
      if($w_rel eq "H") {$highl = "$hidden_color";}
      if($w_rel eq "E") {$highl = "$enemyes_color";}
      if($w_rel eq "F") {$highl = "$friends_color";}
      if($w_rel eq "O") {$highl = "$family_color";}
      if($w_rel eq "N") {$highl = "$neitral_color";}
      if($w_rel eq "?") {$highl = "$unknown_color";}
      @addparams=split(/!/,"@words");
      foreach $addparam(@addparams) {
        ($what,@values)=split(/ /,$addparam);
        if(($what eq "")||($what eq "")) {
          if("@values" eq "") {$w_rel="H"; $highl="$hidden_color";}
          if("@values" eq "") {$w_rel="E"; $highl="$enemyes_color";}
          if("@values" eq "") {$w_rel="O"; $highl="$friends_color";}
          if("@values" eq "") {$w_rel="O"; $highl="$family_color";}
          if("@values" eq "") {$w_rel="N"; $highl="$neitral_color";}
          if("@values" eq "?") {$w_rel="?"; $highl="$unknown_color";}
        }
        elsif ($what eq "") {$w_clan="@values";}
        elsif ($what eq "") {$w_name="@values";}
        elsif (($what eq "")||($what eq "")) {$w_who="@values";}
        elsif ($what eq "") {$w_prof="@values";}
        elsif ($what eq "") {$w_race="@values";}
        elsif (($what eq "")||($what eq "")) {$w_level="@values";}
        elsif ($what eq "") {$w_info="@values";}
        else {
          echo " : $what";
          echo " : , , , , , , , .";
        }
      }
      echo ": $highl [$w_clan] $w_race $w_prof $w_level $w_name ($w_who) \003D{: $w_author, $w_date}\003H $w_info";
      $who_base[$n]="$w_date\|$w_author\|$w_rel\|$w_clan\|$w_who\|$w_name\|$w_prof\|$w_race\|$w_level\|$w_info\|\n";
      print WHO_BASE $who_base[$n];
      $found=1;
    } else {
      print WHO_BASE $who;
    }
    $n++;
  }
  close(WHO_BASE);
  if ($found) {
    open(WHO_BASE,"..\\bases\\who_base.dat");
    @who_base=<WHO_BASE>;
    close(WHO_BASE);
  } else {
    echo "       !";
  }
} "!";

trig { if (!$who_lines) { $who_lines = 1; enable("CHECK_WHO"); } } '^                :$', '1500n:CORE';
trig { 
  $who_lines = 0;
  my $total=":";
  foreach my $col (keys(%NCO)) {
    $total.="$col: $NCO{$col}";
  }
  echo "$total";
  echo "";
  undef %NCO;
  disable("CHECK_WHO");
} ':',                        '1500n:CHECK_WHO';

my $who_lines=0;

trig {
  local($found)=0;
  foreach $who(@who_base) {
    ($w_date,$w_author,$w_rel,$w_clan,$w_who,$w_name,$w_prof,$w_race,$w_level,$w_info,$w_end)=split(/\|/,$who);
    if ((($_ =~ / $w_name/)||($_ =~ /$w_name,/))&&(!$found)) {
      local($highl)="";
      if($w_rel eq "H") {$highl = "$hidden_color";}
      if($w_rel eq "E") {$highl = "$enemyes_color";}
      if($w_rel eq "F") {$highl = "$friends_color";}
      if($w_rel eq "O") {$highl = "$family_color";}
      if($w_rel eq "N") {$highl = "$neitral_color";}
      if($w_rel eq "?") {$highl = "$unknown_color";}
      $:= "$highl$_  [$w_clan] $w_race $w_prof $w_level ($w_who)";
      ++$NCO{"$highl$w_clan"};
      $found++;
    }
  }
} '.*', "1500n-:CHECK_WHO";

