Maliusz Home FrissVáltozások
EarthDawn SpellJammer
Preferences | Upload | Térkép

Szöveges Kalandjáték/Bemelegítő

<adv>

package Adv;

  1. THING INITIALIZATION

new Thing 'Global';

%$Global = ( %$Global, 'turns' => 0, 'inconversation' => 0, 'awards' => [], 'fuses' => {}, 'daemons' => {}, 'score' => 0, 'maxscore' => 70, );

new Room 'kisszoba'; new Room 'haziko'; new Room 'vece'; new Room 'erdo'; new Room 'hegy'; new Room 'barlang';

%$kisszoba = ( %$kisszoba, 'sdesc' => 'A kis szoba', 'ldesc' => 'Egy erdei házikó kis szobájában vagy. Egy priccs és egy szekrény a teljes bútorzat. Az ablak be van deszkázva, a deszkák között halovány fény szűrődik be. Fenyő, por és doh szaga keveredik a levegőben. Egy faajtó vezet dél felé.', 'south' => '!$self->checkDoor($kisszobaajto, $haziko);', );

new Doorway 'kisszobaajto'; new Doorway 'kisszobaajto2';

%$kisszobaajto = ( %$kisszobaajto, sdesc => 'ajtó', noun => ['ajto', 'faajto'], adjective => [qw(deli del fa)], isclosed => 1, location => $kisszoba, otherside => $kisszobaajto2, );

%$kisszobaajto2 = ( %$kisszobaajto2, sdesc => 'ajtó', noun => ['ajto', 'faajto'], adjective => [qw(deli del fa)], isclosed => 1, location => $haziko, otherside => $kisszobaajto, adjective => [qw(eszaki eszak fa)], );

new Thing 'ablak', 'sdesc' => 'ablak', 'ldesc' => 'Valaki jó alaposan bedeszkázta. Úgy néz ki, hogy aki a munkát végezte, elég pontos elképzelése volt arról, hogy aki kint van, az kívül is maradjon, aki pedig bent van, az ne itt menjen ki. Hogy semmit ne bízzon a véletlenre, vastag tölgyfa deszkákat használt, és olyan ácsszegeket, amik tipped szerint bőven az ablakkeret túloldalán érnek véget. Úgy néz ki, hogy itt nem jutsz ki a szobából. Talán az ajtóval több szerencséd lesz.', 'location' => $kisszoba, 'isfixed' => 1, 'noun' => ['ablak'], 'adj' => ['bedeszkazott'], 'verDoOpen' => '! $self->ldesc', 'verDoUnlock' => '! $self->ldesc',
;

new Thing 'deszka', sdesc => 'deszka', ldesc => 'Vastag, szálkás, durva deszkák fedik az ablakot. Közöttük keskeny réseken át halovány fény szűrődik be. Úgy tűnik, hogy sebtében, de alaposan helyezték fel őket. Sosem fogod tudni őket leszedni.', location => $kisszoba, isfixed => 1, noun => [qw(deszka deszkak fadeszka fadeszkak)], adjective => ['fa'], verDoOpen => '! Myprint "Nincs rajtuk kilincs."; 0;', verDoUnlock => '! $self->verDoOpen', verDoTake => '! Myprint $self->ldesc; return 0;',
;

new Thing 'szog', sdesc => 'szög', ldesc => 'Jókora ácsszögek tartják a deszkákat a helyükön. Aki beverte őket, nem viccnek szánta őket: valószínűtlennek tartod, hogy az ablakkeret lebontása nélkül ki tudnád szedni őket.', location => $kisszoba, isfixed => 1, noun => [qw(szog szeg szogek szegek acsszog acsszogek acsszegek)], verDoTake => 'Nos, igen. Azt mondják, hogy a kalandjátékokban ami nincs leszögezve, azt le kell nyúlni, ha pedig valami le van szögezve, akkor előbb a szögeket kell lenyúlni. Tisztázzunk valamit: ez csak egy tréfa, nem kell szó szerint venni! Ugyan a vad gyűjtőszenvedély gyakran célravezető, de EZEKET a szögeket nem kell magaddal vinned. És nem is tudod. Ha TÉNYLEG szükséged van szögekre, nos, menj le a barkácsboltba, és vegyél. Nem, nincs a játékban barkácsbolt. (sóhaj)',
;

new Thing 'priccs', sdesc => 'priccs', targydesc => 'priccset', ldesc => 'Kopott, öreg ágyikó, sok törött rugóval és kopott matraccal. Valószínűleg eszményi táplálék lehet a molyoknak.', location => $kisszoba, isfixed => 1, noun => [qw( agy agyiko priccs )], verDoPush => 1, doPush => sub { $self=shift; delete $self->{verDoPush}; Myprint 'Némi nehézség árán arrébb tolod az ágyat. Alatta egy csapóajtót találsz! Kinyitod a csapóajtót, és mögötte mesés látvány fogad: egy hatalmas, fényesen megvilágított földalatti csarnok, tele arannyal és drágakövekkel! És mind a tiéd..!

Nos... hogy őszinte legyek, igazából ez mind nem történt meg. Nagy nehezen arrébb tolod az ágyat, és rögtön kitörik két lába. Csapóajtónak nyoma sincs.'; }, verDoPull => '!$self->verDoPush', doPull => '!$self->doPush',
;

new OpenableContainer 'szekreny', sdesc => 'szekrény', targydesc => 'a szekrényt', ldesc => '! "Egy viharvert, kétajtós bükkfa szekrény. Úgy százötven évvel ezelőtt igen előkelő dísze lehetett egy nappalinak, sok értékes tárgyat rejtve magában. Mostanra kicsit megrogyott már szegény, és egy erdei házikó kiszobájában tölti végső napjait. " . ($self->contentsvisible ? $self->_ldesc : "A szekrény csukva van.") ', location => $kisszoba, isfixed => 1, isclosed => 1, openscore => 10, noun => [qw( szekreny )], adjective => [qw( ketajtos bukkfa bukk fa oreg szazotven eves 150 )],
;

new Thing 'lada', sdesc => 'láda', adesc => 'egy nehéz, fémveretes láda', ldesc => 'Egy nagy, nehéz, fémveretes láda, úgy születésed előtt 150 évvel készülhetett. Zömök, erős alkotmány, ami egy világos és egyszerű küldetésre született: a tartalmát megőrizni minden illetéktelen személytől. Sajnos az évek folyamán nagy, ormótlan kulcslyuka reménytelenül berozsdásodott. Valószínüleg a kinyitásához minimum egy pajszer, három flakon ipari rozsdamaró, két markos ember és egy rúd dinamit szükséges.', location => $szekreny, isclosed => 1, score => 10, noun => [qw( lada )], adjective => [qw( femveretes nehez nagy )], verDoOpen => sub {

  my $self = shift;
  &Myprint ($self->openMessages->[$self->triesToUnlock]);
  $self->set('triesToUnlock', $self->triesToUnlock + 1) if $self->triesToUnlock < @{$self->openMessages} - 1;
}, verDoUnlock => '!$self->verDoOpen', triesToUnlock => 0, openMessages => [ 'Reménytelen kinyitni. Ne is próbálkozz vele.',
    'Komolyan, esélytelen vagy kinyitni. Teljesen szét van rozsdásodva a zár, erővel pedig nem tudod kinyitni.',
    'Nem érted? NEM. LEHET. KINYITNI!!',
    'Hirtelen egy alternatív univerzumban találod magad. Itt minden a fordítottja önmagának,
    az alul a felül, a fekete a fehér, és a kinyithatatlan láda kinyitható. A láda
    könnyűszerrel kinyílik, és mesés tartalma immáron a te birtokodba kerül. Sajnos
    az alternatív univerzumban az "élő" a "holt", így szomorúan tudatom, hogy meghaltál...
    NEM!',
    '(Sóhaj...)'],
;

%$haziko = ( %$haziko, sdesc => 'Az erdei házikó', ldesc => 'Egy erdei házikóban vagy. A házikó nagyrészt üres. Néhány ócska kerti bútor, egy tűzhely és egy könyvespolc a teljes berendezés. Északra és délre egy-egy ajtó vezet egy másik helységbe. A keletre van a bejárati ajtó, ami a külvilágba vezet. ', north => '!$self->checkDoor($kisszobaajto2, $kisszoba);', south => '!$self->checkDoor($veceajto2, $vece);', east => '!$self->checkDoor($kapu2, $erdo);', );

new Doorway 'veceajto'; new Doorway 'veceajto2';

%$veceajto = ( %$veceajto, sdesc => 'ajtó', noun => ['ajto', 'veceajto'], adjective => [qw(eszaki eszak) ], isclosed => 1, location => $vece, otherside => $veceajto2, );

%$veceajto2 = ( %$veceajto2, sdesc => 'ajtó', noun => ['ajto', 'veceajto'], adjective => [qw(deli del vece) ], isclosed => 1, location => $haziko, otherside => $veceajto, openedBefore => 0, doOpen => '! $self->_doOpen(@_);

  Myprint "A túloldalról kiáradó orrfacsaró bűz frontálisan
  ütközik orroddal, egy pillanatra meg is tántorodsz tőle. Sherlock Holmes-t
  megszégyenítő logikával arra találsz következtetni, hogy ez bizony a klotyó
  ajtaja lehet, és nem is akármilyené.";
  delete $self->{doOpen};',
);

%$vece = ( %$vece, sdesc => 'A vécé', ldesc => 'A klotyóban vagy. Iszonyatos, bűz terjeng, és arra gondolsz, hogy mennyire jó lenne nem itt lenni. ', north => '!$self->checkDoor($veceajto, $haziko);', enterRoom => '!$klotyodemon->Activate; delete $self->{enterRoom}; $self->_enterRoom;', roomAction => sub { my ($self, $actor, $verb, $do, $io) = @_;

  if ($verb->{doAction} eq 'Take') { return $klotyodemon->somethingTaken; }
  return 1;
} );

new Daemon 'klotyodemon', steps => 0, messages => [ 'Ahogy belépsz, a vece fedele magától megremeg.

  Megesküdnél, hogy alóla halk hörgést hallottál. ',
'A vécé fedele megrándul, alóla halk szörcsögés szűrődik ki.
  Majdnem biztos vagy benne, hogy ezt normális vécék nem szokták csinálni. ',
'A klotyó most már tényleg nem bír magával! A fedél fel-le csapódik, alóla egyre hangosabb gurgulázást hallasz.
  Kellene írni az Alföldi Porcelán minőségbiztosítási osztályának. Vagy menekülni. Valamelyik a kettő közül. ',
'', ], execute => sub { my ($self) = @_;
  if ($self->isDefused) {
    $self->Deactivate; 
    return;
  }
  if ($self->steps <= 2) {
    Myprint( "\n\n", $self->messages->[$self->steps] ) if $ember->location eq $vece;
    $self->set('steps', $self->steps + 1);
    return;
  }
  $self->Deactivate;
  $self->deathByKlotyo;
}, isDefused => sub {
  return $lada->location eq $klotyo;
}, deathByKlotyo => sub {
  Myprint "\n\n";
  if ($ember->location eq $vece) {
    Myprint "A vécé fedele felpattan, ";
  } elsif ($veceajto->isclosed) {
    Myprint "A vécé ajtaja egy hangos reccsenéssel kirepül a keretéből, \n";
  } else {
    Myprint "Hallod, hogy a távolban vécé fedele felpattan, ";
  }
  Myprint "és megtörténik az, amit eddig csak
  B-kategóriás horrofilmekben lehetett látni: TÁMAD A SZAR! Képzeld el
  azt, amikor egy szörny, ami szarból van... szargólem... esetleg
  szarelementál... A szar elemi megtestesülése... szóval érted mi.
  Tehát előtör a mélyről, rádveti magát, és BEKEBELEZ.
  Még csak nem is viccelünk.";
  Die $ember;
}, somethingTaken => sub { my $self = shift;
  return 1 if $self->isDefused;
  $self->deathByKlotyo;
  return 0;
}
;

new Container 'klotyo', sdesc => 'vécé', ldesc => '! "" ', location => $vece, isfixed => 1, issurface => 1, noun => [qw( vece budi klotyo )], adjective => [qw( budos buzos )], ioPut => sub { my ($self, $actor, $do) = @_;

  if ($do eq $lada) {
    Myprint "A súlyos ládát sietve rárakod a klotyó fedelére. 
    Kétszeres megkönnyebbülés: nem kell tovább magaddal cűgölnöd, és útját álltad a szar támadásának!
    A klotyó démona még egy darabig kaparászik a fedő alatt, aztán csalódottan és durcásan visszavonul.
    Csend támad. Megnyugszol. Most már biztosan semmi veszél nem les itt rád...";
    $lada->moveInto( $self );
    Award('klotyo', 30);
    return 1;
  }
  $self->_ioPut($actor, $do);
}, verGrab => sub { my ($self, $actor, $do) = @_;
  if ($do eq $lada) {
    $klotyodemon->deathByKlotyo;
    return 0;
  }
  $self->_verGrab($actor, $do);
}, verDoOpen => '!$klotyodemon->deathByKlotyo', verDoClose => 'A vécé fedele le van hajtva.',
;

new KeyItem 'kapukulcs', sdesc => 'rézkulcs', adesc => 'egy rézkulcs', ldesc => 'Ez az erdei házikó bejáratának a kulcsa.', location => $vece, score => 10, noun => [qw( kulcs kapukulcs )], ionoun => [qw( kulccsal kapukulccsal )], adjective => [qw( rez )],
;

new Thing 'fogpiszkalo', sdesc => 'fogpiszkáló', adesc => 'egy kis fogpiszkáló', location => $vece, noun => [qw( piszkalo fogpiszkalo )], adjective => [qw( fog )],
;

new Doorway 'kapu'; new Doorway 'kapu2';

%$kapu = ( %$kapu, sdesc => 'kapu', noun => [qw(kapu ajto bejarat)], adjective => [qw(nyugati nyugat bejarati) ], isclosed => 2, location => $erdo, otherside => $kapu2, keys => [$kapukulcs], );

%$kapu2 = ( %$kapu2, sdesc => 'kapu', noun => [qw(kapu ajto kijarat bejarat)], adjective => [qw(keleti kelet bejarati kijarati) ], isclosed => 2, location => $haziko, otherside => $kapu, keys => [$kapukulcs], openscore => 10, );

%$erdo = ( %$erdo, sdesc => 'erdő', enterRoom => '! Myprint("Egyelőre eddig tart a mese. Vedd úgy, hogy nyertél!\n\n"); $ember->travelTo( $won );', );

new BasicMe 'ember'; %$ember = (%$ember, 'sdesc'=>'ember' );

new Room 'death'; %$death = ( %$death, 'sdesc' => 'Meghaltál.', 'ldesc' => 'Ha új játékot akarsz kezdeni, menj a beállításokhoz!', 'roomCheck' => '!

	Myprint( "Ez már nem segít.\n" );
	return 0;	',
'image' => 'death.jpg',

);

new Room 'won'; %$won = ( %$won, 'sdesc' => 'Győztél!', 'ldesc' => 'Gratulálok, megnyerted a játékot. Ha újra akarsz játszani, menj a beállításokhoz.', 'roomCheck' => '!

	Myprint( "Már nyertél, ne strapáld magad tovább.\n" );
	return 0;	',
'image' => 'won.jpg', 'music' => 'almonds.mid', );

$ember->moveInto( $kisszoba );

1;

</adv>