diff --git a/bin/generate_star_names.pl b/bin/generate_star_names.pl new file mode 100644 index 00000000..630f6e76 --- /dev/null +++ b/bin/generate_star_names.pl @@ -0,0 +1,68 @@ +use strict; +use 5.010; +use String::Random; +use List::MoreUtils qw(uniq part); +use List::Util qw(shuffle); + +say "Loading real..."; +my @real; +open my $file, "<", "../var/real_starnames.txt"; +while (my $name = <$file>) { + chomp $name; + push @real, $name; +} +close $file; + +say "Loading us..."; +my @us = qw(Dillon Knope Vrbsky Smith Runde Rozeske Parker); + +say "Generating new..."; +my $rs = String::Random->new; +$rs->{e} = [qw(a e i o u ea ee oa oo io ia ae ou ie oe ai ui eu ow)]; +$rs->{E} = [qw(A E I O U Ea Ee Oa Oo Io Ia Ae Ou)]; +$rs->{b} = [qw(b c d f g h j k l m n p qu r s t v w x y z ch sh fl fr bl sl st gr th xy tr tch sch sn pl pr sph ph str ly gl gh ll nd rv gg mb ck hl ckl pp ss mp nt nd rn ng tt ss dd cc ndl zz rn)]; +$rs->{B} = [qw(B C D F G H J K L M N P Qu R S T V W X Y Z Ch Sh Fl Fr Bl Sl St Gr Th Xy Tr Tch Sch Sn Pl Pr Sph Ph Str Ly Gl Gh Ll Rh Kl Cl Vl Kn)]; +$rs->{' '} = [' ']; + +my @generated; +for my $i (1..120_000) { + push @generated, $rs->randpattern('Ebe'); + push @generated, $rs->randpattern('Beb'); + push @generated, $rs->randpattern('Bebe'); + push @generated, $rs->randpattern('Ebeb'); + push @generated, $rs->randpattern('Ebebe'); + push @generated, $rs->randpattern('Bebeb'); + push @generated, $rs->randpattern('Ebebeb'); + push @generated, $rs->randpattern('Bebebe'); + push @generated, $rs->randpattern('Eb Beb'); + push @generated, $rs->randpattern('Be Ebe'); + push @generated, $rs->randpattern('Eb Bebe'); + push @generated, $rs->randpattern('Be Ebeb'); + push @generated, $rs->randpattern('Eb Ebeb'); + push @generated, $rs->randpattern('Be Bebe'); + push @generated, $rs->randpattern('Eb Ebeb Eb'); + push @generated, $rs->randpattern('Eb Bebe Eb'); + push @generated, $rs->randpattern('Eb Bebe Be'); + push @generated, $rs->randpattern('Eb Ebeb Be'); + push @generated, $rs->randpattern('Be Bebe Be'); + push @generated, $rs->randpattern('Be Ebeb Be'); + push @generated, $rs->randpattern('Be Bebe Eb'); + push @generated, $rs->randpattern('Be Ebeb Eb'); +} + +my @all = (@us, shuffle(@real), @generated); +say "Making unique from ".scalar(@all)."..."; +my @unique = uniq( @all ); + +say "Eliminating bad from ".scalar(@unique)."..."; +my @naughty = qw(Fuck Shit Ass Cunt Nigger Dick Pussy Cock Snot Puke Damn Bitch Whore Slut); +my @part = part { foreach my $bad (@naughty) { return 1 if ($_ =~ /$bad/); } return 0; } @unique; +my @good = @{$part[0]}; +my @bad = @{$part[1]}; + +say "Writing list of ".scalar(@good)." names..."; +open my $file, ">", "../var/starnames.txt"; +print {$file} join("\n", @good); +close $file; + +say "Found ".scalar(@bad)." bad..."; diff --git a/bin/init_lacuna.pl b/bin/init_lacuna.pl index e0861c85..c52e2088 100644 --- a/bin/init_lacuna.pl +++ b/bin/init_lacuna.pl @@ -2,20 +2,22 @@ use lib '../lib'; use strict; use 5.010; use List::Util::WeightedChoice qw( choose_weighted ); -use List::Util qw(shuffle); use Lacuna; use Lacuna::Util qw(randint); -use List::MoreUtils qw(uniq); -use String::Random; use DateTime; my $access = $ENV{SIMPLEDB_ACCESS_KEY}; my $secret = $ENV{SIMPLEDB_SECRET_KEY}; -my $db = Lacuna::DB->new(access_key=>$access, secret_key=>$secret, cache_servers=>[{host=>127.0.0.1, port=>11211}]); +my $db = Lacuna::DB->new(access_key=>$access, secret_key=>$secret, cache_servers=>[{host=>'127.0.0.1', port=>11211}]); +my $lacunans; +my $lacunans_have_been_placed = 0; + create_species(); create_aux_domains(); +open my $star_names, "<", "../var/starnames.txt"; create_star_map(); +close $star_names; sub create_aux_domains { foreach my $name (qw(empire session build_queue message)) { @@ -27,8 +29,6 @@ sub create_aux_domains { } } -my $lacunans; - sub create_species { my $species = $db->domain('species'); say "Deleting existing species domain."; @@ -71,7 +71,6 @@ sub create_species { }, id=>'lacunan_species'); } -my $lacunans_have_been_placed = 0; sub create_star_map { my $start_x = my $start_y = my $start_z = -1; @@ -86,9 +85,6 @@ sub create_star_map { say "Create new $domain domain."; $domains{$domain}->create; } - say "Generating star names."; - my @star_names = get_star_names($star_count); - say "Have ".scalar(@star_names)." star names"; say "Adding stars."; for my $x ($start_x .. $end_x) { @@ -101,7 +97,7 @@ sub create_star_map { say "No star at $x, $y, $z!"; } else { - my $name = pop @star_names; + my $name = get_star_name(); say "Creating star $name at $x, $y, $z."; my $star = $domains{star}->insert({ name => $name, @@ -171,7 +167,7 @@ sub add_bodies { my $now = DateTime->now; if ($body->isa('Lacuna::DB::Body::Planet') && !$body->isa('Lacuna::DB::Body::Planet::GasGiant')) { if ($star->x >= 0 && $star->y >= 0 && $star->z >= 0 && !$lacunans_have_been_placed) { - #create_lacuna_corp($body, $domains); + create_lacuna_corp($body, $domains); $lacunans_have_been_placed = 1; next; } @@ -230,39 +226,9 @@ sub create_lacuna_corp { ); } -sub get_star_names { - my $star_count = shift; - open my $file, "<", "../var/starnames.txt"; - my @contents; - while (my $name = <$file>) { - chomp $name; - push @contents, $name; - } - close $file; - - my $rs = String::Random->new; - - $rs->{e} = [qw(a e i o u ea ee oa oo io ia ae ou ie oe ai ui eu ow)]; - $rs->{E} = [qw(A E I O U Ea Ee Oa Oo Io Ia Ae Ou)]; - $rs->{b} = [qw(b c d f g h j k l m n p qu r s t v w x y z ch sh fl fr bl sl st gr th xy tr tch sch sn pl pr sph ph str ly gl gh ll nd rv gg mb ck hl ckl pp ss mp nt nd rn ng tt ss dd cc ndl zz rn)]; - $rs->{B} = [qw(B C D F G H J K L M N P Qu R S T V W X Y Z Ch Sh Fl Fr Bl Sl St Gr Th Xy Tr Tch Sch Sn Pl Pr Sph Ph Str Ly Gl Gh Ll Rh Kl Cl Vl Kn)]; - $rs->{' '} = [' ']; - - my $name_count = ($star_count / 10) + 1; - - for (1..$name_count) { - push @contents, $rs->randpattern('Ebe'); - push @contents, $rs->randpattern('Beb'); - push @contents, $rs->randpattern('Bebe'); - push @contents, $rs->randpattern('Ebeb'); - push @contents, $rs->randpattern('Ebebe'); - push @contents, $rs->randpattern('Ebebeb'); - push @contents, $rs->randpattern('Eb Beb'); - push @contents, $rs->randpattern('Be Ebe'); - push @contents, $rs->randpattern('Eb Bebe'); - push @contents, $rs->randpattern('Be Ebeb'); - } - - return shuffle( uniq( @contents )); +sub get_star_name { + my $name = <$star_names>; + chomp $name; + return $name; } diff --git a/lib/Lacuna/DB/Empire.pm b/lib/Lacuna/DB/Empire.pm index 0bd159d1..b672ecd5 100644 --- a/lib/Lacuna/DB/Empire.pm +++ b/lib/Lacuna/DB/Empire.pm @@ -153,24 +153,28 @@ sub encrypt_password { sub found { my ($class, $simpledb, $home_planet, $species, $account, $empire_id) = @_; - + + warn 'A'; my %options; if ($empire_id) { $options{id} = $empire_id; } + warn 'B'; my $self = $simpledb->domain('empire')->insert({ name => $account->{name}, date_created => DateTime->now, password => $class->encrypt_password($account->{password}), species_id => $species->id, home_planet_id => $home_planet->id, - probed_stars => [$home_planet->star->id], + probed_stars => [$home_planet->star_id], }, %options); + warn 'C'; # set home planet $home_planet->empire_id($self->id); $home_planet->last_tick(DateTime->now); $home_planet->put; + warn 'D'; # add command building my $command = Lacuna::DB::Building::PlanetaryCommand->new(simpledb => $simpledb)->update({ @@ -182,8 +186,11 @@ sub found { empire_id => $self->id, level => $species->growth_affinity - 1, }); + warn 'E'; $home_planet->build_building($command); + warn 'F'; $command->finish_upgrade; + warn 'G'; $home_planet = $command->body; # our current reference is out of date # add starting resources @@ -192,6 +199,7 @@ sub found { $home_planet->add_water(5000); $home_planet->add_ore(5000); $home_planet->put; + warn 'H'; return $self; } diff --git a/lib/Lacuna/Empire.pm b/lib/Lacuna/Empire.pm index 8962d64e..1fd2927e 100644 --- a/lib/Lacuna/Empire.pm +++ b/lib/Lacuna/Empire.pm @@ -75,9 +75,9 @@ sub create { 'itemName()' => ['!=','xxx'], class => ['like','Lacuna::DB::Body::Planet::P%'], orbit => ['in',@{$orbits}], - x => ['between', ($map->get_min_x_inhabited - 2), ($map->get_max_x_inhabited + 2)], - y => ['between', ($map->get_min_y_inhabited - 2), ($map->get_max_y_inhabited + 2)], - z => ['between', ($map->get_min_z_inhabited - 2), ($map->get_max_z_inhabited + 2)], + x => ['between', ($map->get_min_x_inhabited - 1), ($map->get_max_x_inhabited + 1)], + y => ['between', ($map->get_min_y_inhabited - 1), ($map->get_max_y_inhabited + 1)], + z => ['between', ($map->get_min_z_inhabited - 1), ($map->get_max_z_inhabited + 1)], }, order_by => 'itemName()', limit => 1, diff --git a/var/real_starnames.txt b/var/real_starnames.txt new file mode 100644 index 00000000..cb3f59d9 --- /dev/null +++ b/var/real_starnames.txt @@ -0,0 +1,637 @@ +Acamar +Achernar +Achird +Acrux +Acubens +Adara +Adhafera +Adhil +Agena +Ain Al Rami +Ain +Al Anz +Al Kalb Al Rai +Al Minliar Al Asad +Al Minliar Al Shuja +Aladfar +Alathfar +Albaldah +Albali +Albireo +Alchiba +Alcor +Alcyone +Aldebaran +Alderamin +Aldhibah +Alfecca Meridiana +Alfirk +Algenib +Algieba +Algol +Algorab +Alhena +Alioth +Alkaid +Alkalurops +Alkes +Alkurhah +Almaak +Alnair +Alnath +Alnilam +Alnitak +Alniyat +Alphard +Alphekka +Alpheratz +Alrai +Alrisha +Alsafi +Alsciaukat +Alshain +Alshat +Alsuhail +Altair +Altarf +Alterf +Aludra +Alula Australis +Alula Borealis +Alya +Alzirr +Ancha +Angetenar +Ankaa +Anser +Antares +Arcturus +Arkab Posterior +Arkab Prior +Arneb +Arrakis +Ascella +Asellus Australis +Asellus Borealis +Asellus Primus +Asellus Secondus +Asellus Tertius +Asterope +Atik +Atlas +Auva +Avior +Azelfafage +Azha +Azmidiske +Baham +Baten Kaitos +Becrux +Beid +Bellatrix +Betelgeuse +Botein +Brachium +Canopus +Capella +Caph +Castor +Cebalrai +Celaeno +Chara +Chort +Cor Caroli +Cursa +Dabih +Deneb Algedi +Deneb Dulfim +Deneb El Okab +Deneb Kaitos Shemali +Deneb +Denebola +Dheneb +Diadem +Diphda +Dschubba +Dsiban +Dubhe +Ed Asich +Electra +Elnath +Enif +Etamin +Fomalhaut +Fornacis +Fum Al Samakah +Furud +Gacrux +Gianfar +Gienah Cygni +Gienah Ghurab +Gomeisa +Gorgonea Quarta +Gorgonea Secunda +Gorgonea Tertia +Graffias +Grafias +Grumium +Hadar +Haedi +Hamal +Hassaleh +Hydrus +Heze +Hoedus +Homam +Hyadum +Izar +Jabbah +Kaffaljidhma +Kajam +Kaus Australis +Kaus Borealis +Kaus Meridionalis +Keid +Kitalpha +Kocab +Kornephoros +Kraz +Kuma +Lesath +Maasym +Maia +Marfak +Marfic +Marfik +Markab +Matar +Mebsuta +Megrez +Meissa +Mekbuda +Menkalinan +Menkar +Menkent +Menkib +Merak +Merga +Merope +Mesarthim +Metallah +Miaplacidus +Minkar +Mintaka +Mira +Mirach +Miram +Mirphak +Mizar +Mufrid +Muliphen +Murzim +Muscida +Nair Al Saif +Naos +Nash +Nashira +Nekkar +Nihal +Nodus Secundus +Nunki +Nusakan +Peacock +Phad +Phaet +Pherkad Minor +Pherkad +Pleione +Polaris Australis +Polaris +Pollux +Porrima +Praecipua +Prima Giedi +Procyon +Propus +Rana +Ras Elased Australis +Ras Elased Borealis +Rasalgethi +Rasalhague +Rastaban +Regulus +Rigel Kentaurus +Rigel +Rijl Al Awwa +Rotanev +Ruchba +Ruchbah +Rukbat +Sabik +Sadalachbia +Sadalmelik +Sadalsuud +Sadr +Saiph +Salm +Sargas +Sarin +Sceptrum +Scheat +Secunda Giedi +Segin +Seginus +Sham +Sharatan +Shaula +Shedir +Sheliak +Sirius +Situla +Skat +Spica +Sterope Ii +Sualocin +Subra +Suhail Al Muhlif +Sulafat +Syrma +Tabit +Talitha +Tania Australis +Tania Borealis +Tarazed +Taygeta +Tegmen +Tejat Posterior +Terebellum +Thabit +Theemim +Thuban +Torcularis Septentrionalis +Turais +Tyl +Unukalhai +Vega +Vindemiatrix +Wasat +Wezen +Wezn +Yed Posterior +Yed Prior +Yildun +Zaniah +Zaurak +Zavijah +Zibal +Zosma +Zuben Elakrab +Zuben Elakribi +Zuben Elgenubi +Zuben Elschemali +Andromeda +Antlia +Apus +Aquarius +Aquila +Ara +Aries +Auriga +Boötes +Caelum +Camelopardalis +Cancer +Canes Venatici +Canis Major +Canis Minor +Capricornus +Carina +Cassiopeia +Centaurus +Cepheus +Cetus +Chamaeleon +Circinus +Columba +Coma Berenices +Corona Austrina +Corona Borealis +Corvus +Crater +Crux +Cygnus +Delphinus +Dorado +Draco +Equuleus +Eridanus +Fornax +Gemini +Grus +Hercules +Horologium +Hydra +Indus +Lacerta +Leo +Leo Minor +Lepus +Libra +Lupus +Lynx +Lyra +Mensa +Microscopium +Monoceros +Musca +Norma +Octans +Ophiuchus +Orion +Pavo +Pegasus +Perseus +Phoenix +Pictor +Pisces +Piscis Austrinus +Puppis +Pyxis +Reticulum +Sagitta +Sagittarius +Scorpius +Sculptor +Scutum +Serpens +Sextans +Taurus +Telescopium +Triangulum +Triangulum Australe +Tucana +Ursa Major +Ursa Minor +Vela +Virgo +Volans +Vulpecula +Theta Eridani +Alpha Eridani +Alpha Crucis +Alpha Cancri +Zeta Leonis +Adhara +Epsilon Canis Majoris +Beta Centauri +Epsilon Aquarii +Beta Cygni +Alpha Corvi +Ursae Majoris +Tau Tauri +Alpha Tauri +Alpha Cephei +Beta Cephei +Algedi +Alpha Capricorni +Gamma Pegasi +Gamma Leonis +Beta Persei +Delta Corvi +Gamma Geminorum +Epsilon Ursae Majoris +Eta Ursae Majoris +Benetnasch +Mu Boötes +Alpha Crateris +Almach +Gamma Andromedae +Al Na'ir +Alpha Gruis +Alnasl +Gamma Sagittarii +Epsilon Orionis +Zeta Orionis +Al Niyat +Sigma Scorpii +Alpha Hydrae +Alphecca +Alpha Coronae Borealis +Gemma +Alpha Andromedae +Alrescha +Alpha Piscium +Beta Aquilae +Alpha Aquilae +Altais +Delta Draconis +Lambda Leonis +Eta Canis Majoris +Xi Ursae Majoris +Nu Ursae Majoris +Theta Serpentis +Theta Aquarii +Alpha Phoenicis +Alpha Scorpii +Alpha Boötes +Arkab +Beta Sagittarii +Alpha Leporus +Zeta Sagittarii +Delta Cancri +Gamma Cancri +Aspidiske +Iota Carinae +Sterope +Zeta Persei +Atria +Alpha Trianguli Australis +Epsilon Carinae +Eta Eridani +Zeta Ceti +Beta Crucis +Mimosa +Omicron Eridani +Gamma Orionis +Alpha Orionis +Biham +Theta Pegasi +Alpha Carinae +Alpha Aurigae +Beta Cassiopeiae +Alpha Geminorum +Beta Ophiuchi +Cheleb +Beta Canum Venaticorum +Chertan +Theta Leonis +Alpha Canum Venaticorum +Beta Eridani +Beta Capricorni +Alpha Cygni +Delta Capricorni +Deneb Kaitos +Beta Ceti +Beta Leonis +Dnoces +Iota Ursae Majoris +Delta Scorpii +Alpha Ursae Majoris +Edasich +Iota Draconis +Beta Tauri +Eltanin +Gamma Draconis +Epsilon Pegasi +Errai +Gamma Cephei +Alpha Piscis Austrini +Zeta Canis Majoris +Gamma Crucis +Garnet Star +Mu Cephei +Giausar +Lambda Draconis +Gienah +Gamma Corvi +Epsilon Cygni +Girtab +Theta Scorpii +Beta Canis Minoris +Beta Scorpii +Xi Draconis +Alpha Arietis +Zeta Pegasi +Epsilon Boötes +Pulcherrima +Epsilon Sagittarii +Lambda Sagittarii +Delta Sagittarii +Kaus Meridianalis +Alpha Equulei +Kochab +Beta Ursae Minoris +Beta Herculis +Upsilon Scorpii +Lambda Ophiuchi +Alpha Pegasi +Eta Pegasi +Epsilon Geminorum +Media +Delta Ursae Majoris +Lambda Orionis +Zeta Geminorum +Menkab +Alpha Ceti +Beta Aurigae +Theta Centauri +Beta Ursae Majoris +Tauri +Gamma Arietis +Beta Carinae +Delta Orionis +Omicron Ceti +Beta Andromedae +Mirfak +Alpha Persei +Mirzam +Beta Canis Majoris +Zeta Ursae Majoris +Mothallah +Alpha Trianguli +Muhlifain +Gamma Centauri +Gamma Canis Majoris +Muphrid +Eta Boötes +Omicron Ursae Majoris +Zeta Puppis +Gamma Capricorni +Navi +Epsilon Cassiopeiae +Beta Boötes +Beta Leporus +Sigma Sagittarii +Beta Coronae Borealis +Alpha Pavonis +Phact +Alpha Columbae +Gamma Ursae Majoris +Phecda +Gamma Ursae Minoris +Alpha Ursae Minoris +Beta Geminorum +Gamma Virginis +Alpha Canis Minoris +Eta Geminorum +Alpha Herculis +Alpha Ophiuchi +Ras Elased +Epsilon Leonis +Beta Draconis +Regor +Gamma Velorum +Alpha Leonis +Beta Orionis +Rigil Kent +Alpha Centauri +Rigil Kentaurus +Beta Delphini +Omega Cygni +Delta Cassiopeiae +Alpha Sagittarii +Runaway Star +Mu Columbae +Eta Ophiuchi +Gamma Aquarii +Sadalbari +Mu Pegasi +Alpha Aquarii +Beta Aquarii +Sadatoni +Zeta Aurigae +Gamma Cygni +Kappa Orionis +Beta Pegasi +Schedar +Alpha Cassiopeiae +Gamma Boötes +Lambda Scorpii +Beta Lyrae +Sheratan +Beta Arietis +Alpha Canis Majoris +Kappa Aquarii +Delta Aquarii +Alpha Virginis +Alpha Delphini +Suhail +Lambda Velorum +Gamma Lyrae +Iota Virginis +Mu Ursae Majoris +Lambda Ursae Majoris +Gamma Aquilae +Pleiades +Tegmine +Zeta Cancri +Alpha Draconis +Alpha Serpentis +Alpha Lyrae +Epsilon Virginis +Delta Geminorum +Wazn +Beta Columbae +Delta Canis Majoris +Epsilon Ophiuchi +Delta Ophiuchi +Delta Ursae Minoris +Eta Virginis +Gamma Eridani +Zavijava +Beta Virginis +Delta Leonis +Zubenelgenubi +Alpha Librae +Zubeneschamali +Beta Librae diff --git a/var/starnames.txt b/var/starnames.txt index cb3f59d96a508d44e4ad16cc42a85a258176e1ba..1e634a9a6b6068d6a90b0499a7700ce1f3b877c3 100644 Binary files a/var/starnames.txt and b/var/starnames.txt differ