diff options
Diffstat (limited to 'crawl-ref/source/util/art-data.pl')
-rwxr-xr-x | crawl-ref/source/util/art-data.pl | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/crawl-ref/source/util/art-data.pl b/crawl-ref/source/util/art-data.pl index 42422c5274..2c4efe2760 100755 --- a/crawl-ref/source/util/art-data.pl +++ b/crawl-ref/source/util/art-data.pl @@ -64,7 +64,9 @@ my %field_type = ( equip_func => "func", unequip_func => "func", world_reacts_func => "func", + fight_func_func => "func", melee_effect_func => "func", + launch_func => "func", evoke_func => "func", plus => "num", @@ -73,6 +75,11 @@ my %field_type = ( sub_type => "enum" ); +my %union_name = ( + melee_effect => "fight_func", + launch => "fight_func" +); + my @field_list = keys(%field_type); sub error @@ -161,13 +168,13 @@ sub finish_art $funcs = {}; } - foreach my $func_name ("equip", "unequip", "world_reacts", "melee_effect", + foreach my $func_name ("equip", "unequip", "world_reacts", "fight_func", "evoke") { my $val; if ($funcs->{$func_name}) { - $val = "_${enum}_$func_name"; + $val = "_${enum}_" . $funcs->{$func_name}; } else { @@ -196,6 +203,10 @@ sub finish_art { error($artefact, "No enumeration for field '$field'"); } + elsif($type eq "func") + { + $artefact->{$field} = "NULL"; + } else { error($artefact, "Unknown type '$type' for field '$field'"); @@ -466,7 +477,7 @@ my @art_order = ( "DESC_ID", "\n", "DESC_END", "\n", - "equip_func", "unequip_func", "world_reacts_func", "melee_effect_func", + "equip_func", "unequip_func", "world_reacts_func", "{fight_func_func", "evoke_func" ); @@ -478,9 +489,10 @@ sub art_to_str my $str = "{\n "; - my $part; - foreach $part (@art_order) + for (my $i = 0; $i < @art_order; $i++) { + my $part = $art_order[$i]; + if (length($part) == 1) { if ($part eq "{") @@ -502,6 +514,14 @@ sub art_to_str next; } + my $bracketed = 0; + if ($part =~ /^{(.*)/) + { + $part = $1; + $str .= "{ "; + $bracketed = 1; + } + if (!defined($field_type{$part})) { print STDERR "No field type for part '$part'\n"; @@ -518,6 +538,9 @@ sub art_to_str { $str .= $artefact->{$part}; } + + $str .= " }" if ($bracketed); + $str .= ", "; } @@ -1009,7 +1032,8 @@ sub read_funcs $found_funcs{$enum} ||= {}; my $func_list = $found_funcs{$enum}; - $func_list->{$func} = 1; + my $key = $union_name{$func} || $func; + $func_list->{$key} = $func; } } close(INPUT); |