57 lines
1.5 KiB
Perl
57 lines
1.5 KiB
Perl
#!/usr/bin/perl
|
|
#
|
|
# Usage: archsearch.pl file
|
|
#
|
|
# This script searches a file (either archetypes or maps) for certain
|
|
# desired values. It is better than grep in that it keeps track of the
|
|
# the archetype it occurs in and does smarter searches (ie, certain
|
|
# bitmask values you can search for specific bit sets, which is not
|
|
# easy to do with grep)
|
|
#
|
|
# Originally written to find all the creatures that use ghosthit.
|
|
# Modified to find all object types that are being set invisible
|
|
# in pupland
|
|
#
|
|
|
|
|
|
die("Usage: archsearch.pl file\n") if ($#ARGV < 0);
|
|
|
|
for ($file=0; $file<=$#ARGV; $file++) {
|
|
# print "Proccessing $ARGV[$file]\n";
|
|
if (!open(INFILE, "<$ARGV[$file]")) {
|
|
print "Can not open $ARGV[$file] - skipping\n";
|
|
next;
|
|
}
|
|
while (<INFILE>) {
|
|
if (/^Object (\S+)/ || /^arch (\S+)/) {
|
|
$obname = $1;
|
|
$invisible=0;
|
|
$type=-1;
|
|
$x = -1;
|
|
$y = -1;
|
|
$title="";
|
|
}
|
|
$object .= $_;
|
|
$type = $1 if (/^type (\S+)/);
|
|
$title = $1 if (/^title (\S+)/);
|
|
$invisible = $1 if (/^invisible (\S+)/);
|
|
$x = $1 if (/^x (\S+)/);
|
|
$y = $1 if (/^y (\S+)/);
|
|
if (/^end$/ ) {
|
|
if ($obname =~ /^altar/ && $title ne "") {
|
|
print "$ARGV[$file]\n$object";
|
|
}
|
|
# print "Object $obname (type $type) @ $x, $y is invisible\n";
|
|
$object="";
|
|
}
|
|
# This is what we are searching for. value will be put in $1
|
|
# Note that multile searches are certainly possible.
|
|
# elsif (/^attacktype (\S+)/) {
|
|
# if ($1 & 0x200) {
|
|
# print "Found match, object $obname, line $.\n";
|
|
# }
|
|
# }
|
|
|
|
} # While loop
|
|
}
|