X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;ds=sidebyside;f=PA.pm;h=e6a2e330a85eaee3c6cbf6ccf68e29f684061c99;hb=ec27c0cf1a0cb6ad3cce5ea0f1bf284e979ff95e;hp=f085535c0edfed470c3ae32669b9b474ed4f2be2;hpb=f8ae81b53b3edb30da430d26b1f161683f31c6f2;p=NDIRC.git diff --git a/PA.pm b/PA.pm index f085535..e6a2e33 100644 --- a/PA.pm +++ b/PA.pm @@ -16,13 +16,13 @@ # Free Software Foundation, Inc., * # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * #**************************************************************************/ -package ND::IRC::PA; +package NDIRC::PA; use strict; use warnings; use ND::DB; use ND::Include; -use ND::IRC::Access; -use ND::IRC::Misc; +use NDIRC::Access; +use NDIRC::Misc; use POSIX; require Exporter; @@ -74,11 +74,22 @@ sub checkGal { } sub shipEff { - my ($amount,$ship,$value) = @_; - $ship = "\%$ship\%"; - $amount = parseValue($amount); - $value = parseValue($value); - $value *= -1.5 if defined $value and $value < 0; + my ($msg,$value) = @_; + my ($amount,$ship); + if($msg =~ /^(-?\d+(?:\.\d+)?[hkMG]?) (\w+)$/){ + if (defined $value){ + $value = parseValue($1); + $value *= -1.5 if $value < 0; + my $feud = ''; + }else{ + $amount = parseValue($1); + } + $ship = "\%$2\%"; + }else{ + my $command = (defined $value ? "veff" : "eff"); + $ND::server->command("notice $ND::nick syntax: .$command amount ship"); + return; + } my $feud = ''; my @ship = $ND::DBH->selectrow_array(q{ @@ -90,10 +101,12 @@ FROM ship_stats WHERE name ILIKE ? $type = "stun" if $ship[2] eq 'Emp'; $type = "steal" if ($ship[2] eq 'Steal') or ($ship[2] eq 'Pod'); - $amount = int(($value*100/$ship[4])) if $amount eq 'value'; - $feud = '(FEUD: '.int($amount/0.75).') ' if defined $value; + if (defined $value){ + $amount = int(($value*100/$ship[4])); + $feud = '(FEUD: '.prettyValue(int($amount/0.80)).') '; + } $value = prettyValue(($amount*$ship[4]/100)); - my $text = "$amount $feud $ship[0] ($ship[5]:$value) will $type:"; + my $text = prettyValue($amount)." $feud $ship[0] ($ship[5]:$value) will $type:"; my $st = $ND::DBH->prepare(q{ SELECT name,"class","type",armor,metal+crystal+eonium,init,target,eres,race FROM ship_stats WHERE "class" = ? @@ -119,11 +132,22 @@ FROM ship_stats WHERE name ILIKE ? } sub shipStop { - my ($amount,$ship,$value) = @_; - $ship = "\%$ship\%"; - $amount = parseValue($amount); - $value = parseValue($value); - $value *= -1.5 if defined $value and $value < 0; + my ($msg,$value) = @_; + my ($amount,$ship); + if($msg =~ /^(-?\d+(?:\.\d+)?[hkMG]?) (\w+)$/){ + if (defined $value){ + $value = parseValue($1); + $value *= -1.5 if $value < 0; + my $feud = ''; + }else{ + $amount = parseValue($1); + } + $ship = "\%$2\%"; + }else{ + my $command = (defined $value ? "vstop" : "stop"); + $ND::server->command("notice $ND::nick syntax: .$command amount ship"); + return; + } my $feud = ''; my @ship = $ND::DBH->selectrow_array(q{ @@ -135,8 +159,10 @@ FROM ship_stats WHERE name ILIKE ? $ship[0] = "${ND::C}12$ship[0]$ND::C" if $ship[2] eq 'Emp'; $ship[0] = "${ND::C}13$ship[0]$ND::C" if $ship[2] eq 'Steal'; - $amount = int(($value*100/$ship[4])) if $amount eq 'value'; - $feud = '(FEUD: '.int($amount/0.75).') ' if defined $value; + if (defined $value){ + $amount = int(($value*100/$ship[4])); + $feud = '(FEUD: '.prettyValue(int($amount/0.80)).') '; + } $value = prettyValue(($amount*$ship[4]/100)); my $text = "To stop $amount $feud $ship[0] ($ship[5]:$value) you need:"; my $st = $ND::DBH->prepare(q{ @@ -197,4 +223,30 @@ sub calcXp { $ND::server->command("notice $ND::target You will gain $ND::B$xp$ND::B XP, $ND::B$score$ND::B score, if you steal $roids roids ($ND::B$value$ND::B value), from $ND::B$x:$y:$z$ND::B, who will have $ND::B$tsize$ND::B roids left, total score gain will be: $ND::B$totscore$ND::B in total,"); } +sub findCovOpper { + my ($stolen) = @_; + + my $tick = $ND::tick; + my $agents; + + if ($stolen =~ /(\d+) (\d+) (\d+)/){ + $tick = $1; + $agents = $2; + $stolen = $3; + }elsif ($stolen =~ /(\d+) (\d+)/){ + $tick = $1; + $stolen = $3; + } + + my ($value,$score) = $ND::DBH->selectrow_array(q{ + SELECT value,score FROM planet_stats WHERE + id = (SELECT planet FROM users WHERE hostmask ILIKE ?) AND tick = ?; + }, undef, $ND::address,$tick); + my ($coords) = $ND::DBH->selectrow_array(q{ + SELECT coords(p.x,p.y,p.z) FROM current_planet_stats p JOIN planet_stats ps using (id) WHERE + ps.tick = ? AND (2000*?*?/ps.value)::int = $stolen ; + }, undef, $tick,$agents,$value,$stolen); + $ND::server->command("notice $ND::target The planet that cov opped you is: $coords"); +} + 1;