… | |
… | |
12 | my ($spell, $who, $caster, $dir, $arg) = @_; |
12 | my ($spell, $who, $caster, $dir, $arg) = @_; |
13 | |
13 | |
14 | my $region = $who->region |
14 | my $region = $who->region |
15 | or return cf::override 0; |
15 | or return cf::override 0; |
16 | |
16 | |
17 | my ($map, $x, $y); |
17 | my $map; |
18 | while () { |
18 | while () { |
19 | ($map, $x, $y) = ($region->portalmap, $region->portalx, $region->portaly); |
19 | $map = $region->portalmap; |
20 | |
20 | |
21 | last if $map; |
21 | last if $map; |
22 | |
22 | |
23 | $region = $region->parent |
23 | $region = $region->parent |
24 | or return cf::override 0; |
24 | or return cf::override 0; |
25 | } |
25 | } |
26 | |
26 | |
27 | my $portal = $spell->other_arch->instance; |
27 | my $portal = $spell->other_arch->instance; |
28 | |
28 | |
29 | $portal->name ("Magic Portal to nearest Town"); |
29 | $portal->name ("Magic Portal to nearest Town"); |
30 | $portal->slaying ($map); |
30 | $portal->slaying ($map); |
31 | $portal->stats->hp ($x); |
|
|
32 | $portal->stats->sp ($y); |
|
|
33 | |
31 | |
34 | #$portal->stats->food (40); # handy for debugging |
32 | #$portal->stats->food (40); # handy for debugging |
35 | |
33 | |
36 | $portal->insert_at ($who, $who, cf::INS_ABOVE_FLOOR_ONLY); |
34 | $portal->insert_at ($who, $who, cf::INS_ABOVE_FLOOR_ONLY); |
37 | |
35 | |