IRC-Galleria

arafat

arafat

Pekka Puupää

Selaa blogimerkintöjä

Vedin just' käteenSunnuntai 27.09.2009 05:58

no en vetäny, miä olen aseksuaali, miä kyllä voin katella pornoa ja panemista, mutta olen kuin herra chancey gardnier elokuvassa bein there (suom. mr chance).

elokuvassa on pääosassa peter sellers, ja jostain interwebin ja vertigo vai mikä se lehti oli, sivuilta olen olut muka lukevinani että peter sellers teki niitä punasia pantteri -elokuvia nälkäpalkalla, mutta sai juopottelun ja vaimonhakkaamisen lisäksi kuitenkin elokuvausoikeudet kirjalle being there.

maailmaan mahtuu paljon kauheita tarinoita, mutta jotain kaunistakin välillä syntyy, ja sellaiseksi ajattelen elokuvan being there, enkä aseksuaalina piittaa siitä mitä elokuvan tähdestä puhutaan. tilanne on toki vallan toinen kun tai jos ottaisin puheenaiheeksi jonkun jenkin, kuten geroge bussit silmienalla röyhkeämmän.

ameriikan yhdysvallat eivät ole tainet oppia historiasta mitään, kun ajatellaan että aina maa, jolla on suurin armeija tulee häviämään. tuhatvuotinen saksa ja melkein tuhatvuotinen rooma muistetaan vielä senkin jälkeen kun tästä päivästä on tullut kuluneeksi noin viisituhatta (haluan proosanomaisessa kirjoittelussa pitää numerot sanoina), mutta olen todella sitä mieltä että vaikka MOSSAD minut huomenna tappaisi, niin minä TULEN elämään kauemmin kuin yksikään valtio joka juuri nyt on olemassa.

kuulostaa suuruudenhullulta eli megalomaniselta moinen, mutta kaikki mitä olen kirjoittanut, on yhtä tarinaa ja kaiken tulen kutomaan yhteen. muistakaa: tämä on aina viimeinen merkintä. Te ihmiset, teille puhuen kirjoitan, mutta tiedän samalla että ei kukaan usko tai edes kuvittele että minä olen totta. Minä olen täyttä totta sillä minä olen jälkikirjoitukseton.

Antti-Fantti-Fantastinen

murresanaLauantai 26.09.2009 16:47

miä olen kymenlaaksosta ja siksi kirjoitan näin.

usein kun kymenlaaksolaisena kirjottelen juttuja, niin ajattelen vain ja kirjoitan vain sen mitä ääneen puhun. mutta tuossa ei vielä oikein puhuttu kymenlaaksolaisittain.

meil on murtees sellanen vika että sanojen päätteet jää monest sanomata tai on kirjotusviheellisii, kuten sanomata sanotaa ja sanotaa on kuten kaikki mikä sanotaa on nykyhetkessä. noin sain itelleni aivan uuen puheenaiheen kun tuli nykyhetki. katos, siis ei katos vaaan katsos, kuinka nykyhetkessä voi elää kuin hauki kaisilikossa tai kissana meillä: meil on ain takaovi auki että kaverit pääsee sisään.

ennenvanhaa(n) - kun miä olin vuosissa lapsi - nii esimerkiks mummolle kun mentiin niin ei ollu puhelimia kaikissa tal9oiss (anteeksi typo) ja ajettiii paikalle ja sitte huomattiin että sielä oli luuta, eli sellainen koivunvittoista tehty luuta millä nopiast lakas ne portaat, niin oli se ovea vasten merkkin että ketään ei ole kotona. siis miä tarkotan kodilla ja kellää sitä että talo oli tyhjä asukeista ja kukaan, paitsi naapurit, ei tienny missä he ovat, asukkaat siis. eikö jännää? aina pitää kyksyä kun on heikko itsetunto ja siten parantaa sitä, ja tietämisiinsä eli tietämiään.

noin, nyt miä kirjotin jo aika kohtalaist kymenlaaksoa, jos siä tätä kohtaa luet niin. kerro minulle, älä päiväkirjalle. miä en lue niitä huomautuksia kun olen huomannu että ei niissä ole muita kui minua, on aika turhaa )åperkele, oli virustorjunta juuri tossa ajossa niin peälstyin melkein kun meni vähä kone jumiin kun kirjottelin tätä kappaletta, mutta siitä selvittiin olisi hiton kiva muistaa mitä miä olin sanomas ennen kun ja miähän voisin luntata nyt ja kattoa kappaleen alkua.

katosta tuli mileen että minulla kattotuoleja, jos joku tietää, nauloessa tuli melko jykevä runkkaajan lihas. miä kyllä olin iteki vähä ihmetelly yhtä lihasta, mutta se on jo surkastunut, ja oli silloinkin kun pinkero siitä minulle snoi :P

ei mulla nyt sit oikee muuta olekaa sanottavan, koitin vaan kertoo että millasta oikia kymenlaakso on, ja hyvin miä mielestäin onnistuinkin. mut saa vittuilla jos en.

tänää ja tähän ainakaan en tee mitään jälkikirjotusta,
Antti Ala-Turkia

oi, jos te - pieni tee - kuten on kirjain kun monikosta puhumma. sillä nyt on sellainenkin asia kuultu että minua on virkavalta hakannut ja minä olen siitä rangaistu. tästä on vain yksi seuraus: itseni ja tekoni ylittääkseni minä elän ja elääkseni minä olen tekevä henkirikoksen. nyt se on sanottu, teko puuttuu.

kuinka lakimme suhtautuupi minuun kun noin sanoin, kun olen paljon muutakin sanonut, mutta enimmäkseen olen sanonut, vähemmän kirjotellut ja kaikkein heikoin osa-alueeni on taitamisen kohdalla tekeminen ja vahvin on tekemättä jättäminen. aion ja tällä julistaudun aikeeni tekijäksi että pääteokseni on olla tekemättä, ja tulen ite sitä pitämään suurimpana virheenä, minkä voin muille anteeksi antaa, mutta itselleni en koskaan.

[musiikki: on jo soinut jonkun aikaa, remotion, en muista kappaleen nimeä, mutta jos jotain kiinnostaa on minulla suusanallinen lupa levittää timo ahlqvistin sävellystä hemppis, joka on luotu tämän remotionin myötä ja sitä mukaillen]

jahasjahas, poliisiko se sielä ovella .... palaan asiaan jos huvittaa, ei paljon itketä ainakaan :P

sinä tiedät mitä teitä sinä kesänä ja miksi olet kuolevainen, marko marko marko


mic hätänä sano sammakko puolanggalla ja veti henkeen, isään ja sitte vielä kolmantena pyhään kulminaatioon, mutta kolmioista minunkin kuvani on piirretty, on aivan turha nauraa paksuille siveltimienvedoille saoi pekka ja käveli häntä pystyssä pois.

niiihh, niin se pekka teki, mutta yksisilmä-dekkari pekkariselta eivät jääneet tulkinnanvaraisuudet ja salaiittoteoriat siihen, hän keksi niitä lisää -ajatuksen ja on entistä vakuuttavampi oltuaan vilttiketjussa tovin, mutta ei kovin vakavin seurauksin... tämä ei jää tähän, talvi ajatteli ja laski kevään lattialle...

ps. ei tule jatko-osia jos ei penniä venytetä tai senttiä... tiedättehän varmaan että en nauti mitään eläke-etuutta enkä palkkatuloakaan

oho, meni vähän pieleen tossaPerjantai 18.09.2009 13:28


halituli hittuu
sika meni karkuu
helvetn pienestä reijästä
sielä se poltteli piippuansa
ja savut tuli ties mistä
eihän minä kaikkeen ennä
milk männi
varhain maatoa kaatoo
rauhassa taitaa nukkuva antoo.
koirakin täytyy ulkona käyttää
kissalle kuppiin täyttää.


orkesti soittaa halituli hittuu
ryty-tyty-tyty-tyty-tyytylä tyntää,
Hili-pati-hili-pati-himpamppaa
kyllä torstai-ilta nyt lohdutta


--

tiesittekös miksi torstai lohduttaa? niih, siksi kun silloin oli piikojen vapaapäivä kun ei voinu olla viikonloppuna kun herrasväellä oli kestejä pidettävänä niin torstai oli hyvä päivä parannella paikkoja perjantaina ja olla sitte koreena ja kuosissa lauantaina. sellaista se elämä vähän alkaa olla taas, on piikoja ja juoksupoikia kun isäntäväki surffaa inderwebissä. eikö hauskempaa?

pjas on sitä nippelitietoa muuallakin kun wikipediassa, boikotoikaa sitä jo, te älylliset, sillä on olemassa entsyklopeetiakin, mutta ettehän te...


traitrai trallalla... mutta niitä mutkia ajatellessa tuntuu elämä vähäpätöiseltä. jos nyt pikkasen polttaa pakoputki mahaa ja soittaa sen jälkeen yksykskahteen ja itkee kun rottanaamat koittaa olla kovia niin sellaset asiat hoidan vielä ihan virallista kautta ja niinpä tein ilmloituksen rattijuoposta. jos olisi ollut vähääkään sanansa mittainen niin sielä se mummoja teilaisi, vaan nyt on tilanne vallan toinen ja paninpa pääni sellaiseen peliin pantiksi että jos tästä syntyy sairaalakierre, niin eipä ole paljon apua vaikka menisi naimisiin, sellaiset on panokset, sillä olenhan jo ajatellut ääneen että rikos ei kannata, paitsi sitä en tainut sanoa että rikos_records ei kannata, mutta kivaa musiikkia ne tekee. mutta kaikkihan osaavat pettää, valehdella, rottia ja vasikoida, sellaisilla säännöillä minä nyt pesääni rakennan, se kun on tuo ja niinkin hurjana tilanne ja kaikenkaikkiaan minä haluan tuosta kehästä pois, mutta arvin!

ja niitä tulen tekemäänkin,
vaikka hiekka suussa maistuisi, niin tulen tekemään. nyt on minun pää ollut jalkapallona riittämiin.

mutta mitä yhdestä, pienestä elämästä kun on hyvä syy omassa mielessä ja omatunto kolkutttaa sen verran että siitä laulun tekee, niin mitä yhdestä pienestä elämästä kun ei ole väliä sen, miltä tuntuu hänestä ja mitä minä sanon, sillä silloin kun on hauskaa on se hauska pidettävänä vaikka nallekarhua tivolissa ammuttua ja sille toiselle annettua se hauskuus on, niin se on ja mitä sen on väliä, jos pitää välillä hauskaa kanssa toisten kun se ei aina ole niin syyntakeetonta kuin väittää valehdellessan, ja sen kohteena on itse eikä sitä julki tuo, tuhkimolle kenkää en ollut sovittamassa enkä sukkia vaihtamassa kouvolassa. niin kouvolassa kai minäkin asun tätänykyä, on lääni kasvanut ja kaupunki tehnyt etäisyyksistä mitättömyyksiä, niin mikä on eläessä kun ei mitään tee, eikä halua edes loukata minua niin että kaupungilla esiintyisi eri partnerin kanssa kuin minua siitä kieltää että kouvolassa en kanssaan käy, ettei näyttäisi aivan siltä kuin vaihtaisi partneria usammin kuin sukkia ja niinpä en näkykynyt, ja jutut korviini kuulin ja ja ja ja

imekäis ittenne sellaista paskaa muutama vuosi ja koittakaa puolustella tekojanne! minä en ja kerron vielä kaiken kun aika haavat parantaa ja vesi vanhin lääkkeistä, minä juon vähän vielä ja hieman lantattua vettä, mutta aika kai haavat parantaa. vai... rakkaus? uusi, parempi, jossa ei ole anoppia ja keltaisia autoja tai vihreitä hattuja.

jos sellaista elämä olisi, suostuisin minä otsikoihin, lööpeihin vaikka vain pk-sanomiin. mutta elämällä on eri polut ja minä kävelen joutuisasti sinne missä muurahaiset kekoja rakentaa ja ihmettelen vähän niitä polkuja kun tiedän että luonto tarjoaa minulle saman kuin kumpanille, minä olen muurahainen. kotia, kekoa kasvatan ja otan havua kantaessa riskin että jokamiehen oikeutta toteuttaassaan, joku voi astua pääni päälle ja joku toinen vie havun ja kehoni päättömänä sätkivän toukille ruoaksi kekoon ja sitä kasvatellessa, minä olen vaan ja kannan ottaa joku muu.

hyönteisiä äidin oomma gaiggi, oomma gaiggi ja hyvää joulua. miä päätin just että miä en tee niitä elämäni joulukalentereita kuin yhden ja annan sen kaimalleni, valitettava harmi on että tämä valiittu ei tahdo olla kanssani missään tekemisissä, siis on tuumattavata, sanoin tuumattava, ja ajattelen jotain... ajattelen kovasti rakkautta naisen, mutta moni muukin ajattelee ja minä en ole kovin kilpailuhenkinen, joten on parasta käydä kääntämässä ääninuppia stereon kun soi biot tai amorphous andogynous tai joku fat cat tai remotion 7615 ja kappale kaksi (monolake veikkaan :P

no se veikkauksista. olen suomen paras koodaaja ja mikään lpc tai c ei ole koodaamista vaan assembly, ja tarkoitan assemblylla assemblyä ja assembler on kääntäjä, jos te vitun aasit tajuiaisitte jonain päivänä sen niin miä olisin hiljaa ja kiitollinen.

t: pankaa minua perseeseen jos uskallatte, tai oikeassa kulmassa piippatte!
.
..
aargh. on my own i would love to have been able to say on title, but maybe...

heheh. so give me some space for making public the source of all txt-based games to be :P

an example:

toiminnto (actions)
Toiminnot ovat pelaajan keino vaikuttaa ympäristöönsä. Periaatteessa kaikilla olioilla,
joita ympäristössä voi esiintyä. on toimintoja, joita käyttäjät voivat käynnistellä. Osa
olioista ei vältämättä ole näkyvissä kaikille käyttäjille, jolloin myöskään toiminnon
käynnistäminen ei ole mahdolista.

saapuessaan uuteen ymnpäristöön, pelaaja:
- saa ympäristökseen (environment) huoneen, johon hän siirtyi
- listataan subjektiksi mahdollisille toiminnoille, joita
ympäristössä olevat objektit voivat suorittaa

komennon parsinta

objektin tarkastelu
objektin katsominen
objektin sisään katsominen
objektin siirtely
objektin ottaminen jostakin/joltakin
objektin laittaminen johonkin/jollekin
objektin kanssa toimiminen
objektilla suoritetaan toiminto
objektille suoritetaan toiminto
objektin avaaminen/sulkeminen
objektilla suoritetaan toiminto kohdeobjektille


look
look at box
look into box

get box
get dagger from box
buy dagger for mihkali

put dagger from box into bag


Havupuumetsä
Maa on kostean ja pehmeän sammaleen peittämä.
Kasvillisuus on runsasta ja rehevää.
Metsä käy synkemmäksi ja tiheämmäski pohjoista kohti.
Etelän suunnalta kuuluu lintujen laulua.
Heikkot polun jäljet johtavat lännestä itään.
Raika, heikko tuuli käy pohjoisesta.

Forest
Ground is largely covered by soft, moist moss. There are lots of
plants growing well. The forest gets darker and thiker towrards north.
From south some bird singing can be heard. Sligth marks of something
what once was a path lead from west to east. Slight, fresh breeze
blows from north. There is an enermousyly large oak standing reaching
for the sky.
Obvious exits are: north, northwest, east, southeast, south, southwest,
west and northwest.

FFFFFFF Forest
FFFFFFF Ground is largely covered by soft, moist moss. There are
FFFFFFF lots of plants growing well. The forest is getting darker and
FFFFFFF thiker towrards north. From south some bird singing can
FFFFFFF be heard. Faint marks of something what once was a path
ffffFFF leading from west to east. Slight, fresh breeze blows from
FfffffF north. There is an enermousyly large oak standing reaching
for the sky.
Obvious exits are: north, northeast, east, southeast, south,
southwest, west and northwest.
A Cro-magnon sitting, a sprite and a zombie standing.
A group chasing a rabbit. Another group beating a worm and a minotaur
abusing the cow.
On ground you can see couple of logs, few coins and an axe.

verbs:
is, are, gets, singing, heard, leading, blows, standing, sitting, beating,
abusing, see

nouns:
forest, ground, moss, plant(s), north, south, bird, marks, path, west,
east, wind, oak, sky, northeast, southeast, southwest, northwest,
cro-magnon, sprite, zombie, group(s), rabbit, worm, minotaur, cow,
log(s), coin(s), axe

adjectives:
soft, moist, well, dark, thik, faint, slight, enermous, large


em oli vuodelta 2003 tms tämä jäljempi on vuodelta 1996 tms.


/* living.c
*
* every living object (player,npc,what ever) inhertis this
*/

inherit WALK;

/*
string name;
string full_name;
string alias_name;
*/
int level;
int alignment;
int sex; /* 0=other, 1=male, 2=female */
string race;
int experience;
int heart_beat; /* call out delay */
int heart_handle; /* call out handle */
int alive; /* 0 if this living is dead */

int max_hp;
int hp;

int max_sp;
int sp;

int max_ep;
int ep;

object natural_weapone;
/*
string *skills;
string *spells;
string *resistances;
*/
string *slots;
string *limbs;

mapping skills;
mapping spells;
mapping resistances;
mapping immunities;
mapping diseases;

mapping wielding; /* string index (string *limbs) : object weapon */
mapping equipment; /* string index (string *slots) : object armour */
mapping stats; /* string index : int value */
private mapping racial_stats;
int racial_wc;

string msg_say;
string msg_in;
string msg_out;

object combat; /* combat object this living is in */

object primary_target;
object *targets;
int present_targets;

Reset() {
set_name("base living");
race = "";
/* level, alignment, sex = 0 */
slots = ({});

skills = ([]);
spells = ([]);
resistances = ([]);
immunities = ([]);
diseases = ([]);
equipment = ([]);
stats = ([]);
racial_stats = ([]);

msg_say = "says";
msg_in = "arrives";
msg_out = "leaves";
}


/* prototypes*/
nomask int stat(string s);
nomask int set_stat(string s, int i);
nomask string race(void);
/* end */

/*
* messages
*/
nomask string msg_say(void) { return msg_say; }
nomask string msg_in(void) { return msg_in; }
nomask string msg_out(void) { return msg_out; }

nomask string set_msg_say(string s) { return msg_say; }
nomask string set_msg_in(string s) { return msg_in; }
nomask string set_msg_out(string s) { return msg_out; }


/* writef()
* write a formatted string
* %o = object (living object will be capitalized as necessary)
*/
nomask void writef(string str, object *obj) {
int i,ii;
string t_str;

ARGCHECK(str, writef, 1);
ARGCHECK(obj, writef, 2);
/* if (sizeof(explode(str, "%o")) != (sizeof(obj)-1))
error("Arg size mismatch for writef()"+sizeof(explode(str,"%o"))+","+sizeof(obj)+"! ");
*/
t_str = "";
while (i < strlen(str)) {
if ((str == '%') && (i < strlen(str))) {
if (str[++i] == 'o') {
if (ii < sizeof(obj))
t_str += ((obj[ii]->living()) ? capitalize(obj[ii++]->name()) : obj[ii++]->name());
else
error("Bad argument 2 in writef()");
}
else
t_str += str[(--i)..i];
}
else
t_str += str[i..i];
i++;
}
this_player()->write(t_str);
}

/*
* do_put()
*
*/
void do_put(mixed item, mixed container) {
int i;
string s;
object i_obj, c_obj, *inv;

if (typeof(item) != T_STRING)
ARGCHECK(typeof(item) == T_OBJECT, put, 1);

if (typeof(container) != T_STRING)
ARGCHECK(typeof(container) == T_OBJECT, put, 2);

this_user()->echo("-- put()\n");

if (!(i_obj = posses(item)))
this_player()->echo("You don't have "+((typeof(item) == T_STRING) ? item : item->name())+".\n");

if (!(c_obj = present(container)))
this_player()->echo("You don't see "+((typeof(container) == T_STRING) ? container : container->name())+" here.\n");

if (c_obj && i_obj)
switch (Move(i_obj, c_obj)) {
case 1:
this_player()->echo("Object can't be moved inside itself!\n");
break;
case 2:
this_player()->echo(capitalize(c_obj->name())+" has no room for "+i_obj->name()+".\n");
break;
case 3:
this_player()->echo(capitalize(c_obj->name())+" can't carry "+i_obj->name()+".\n");
break;
default:
inv = environment()->inventory();
for (i = 0; i < sizeof(inv); i++)
/* check skill slip */
if ((object_type(inv) == "player") && (inv != this_object()))
if (inv->vision() > environment()->light())
inv->write(capitalize(name())+" puts "+i_obj->name()+" in "+c_obj->name()+".\n");
else if (inv->vision() >= (environment()->light()/2))
inv->write(capitalize(race())+" puts something in "+c_obj->name()+".\n");
else
inv->write("putti tapahtui (162:living.c)\n");
this_player()->write("You put "+i_obj->name()+" in "+c_obj->name()+".\n");
/* writef("%o puts %o in "+c_obj->name()+".\n", ({this_object(), i_obj}));
*/
break;
}
this_user()->echo("<-- put()\n");
}


/*
* do_drop()
*
*/
varargs void do_drop(mixed item, mixed container) {
int i,n;
string s;
object i_obj, c_obj, *inv;

if (typeof(item) != T_STRING)
ARGCHECK(typeof(item) == T_OBJECT, drop, 1);

this_user()->echo("-- drop()\n");

if (!(i_obj = posses(item)))
this_player()->echo("You don't have "+((typeof(item) == T_STRING) ? item : item->name())+".\n");
this_user()->echo("-- drop()\n");

if (container) {
if (typeof(container) == T_STRING) {
if (sscanf(container, "%s %d", s, n))
n = (n > 0) ? n : 1;
else
s = container;

if (!n)
n = 1;

inv = inventory(environment());
inv += inventory();
for (i = 0; i < sizeof(inv) && n; i++)
if (inv->match_name(s))
if (!--n)
c_obj = inv;
}
else {
ARGCHECK(typeof(container) == T_OBJECT, drop, 1);

}

if (!(c_obj = present(container)))
this_player()->echo("You don't see "+((container==T_STRING) ? container : container->name())+" here.\n");
}
else
c_obj = environment();
this_user()->echo(""+"\n");
this_user()->echo("item = "+item+"\n");
this_user()->echo("cont = "+((container) ? container : "NULL")+"\n");
this_user()->echo("i_obj ="+((i_obj) ? object_name(i_obj) : "NULL")+"\n");
this_user()->echo("c_obj ="+((c_obj) ? object_name(c_obj) : "NULL")+"\n");

if (!n && i_obj && c_obj)
switch (Move(i_obj, c_obj)) {
case 1:
this_player()->echo("Object can't be moved inside itself!\n");
break;
case 2:
/* muuta; jos full niin item pullahtaa environmenttiin */
this_player()->echo(capitalize(c_obj->name())+" has no room for "+i_obj->name()+".\n");
break;
case 3:
this_player()->echo(capitalize(c_obj->name())+" can't carry "+i_obj->name()+".\n");
break;
default:
inv = environment()->inventory();
for (i = 0; i < sizeof(inv); i++)
/* check skill slip, vaan dropissapa ei paljo slipit auta? */
if ((object_type(inv) == "player") && (inv != this_object()))
if (inv->vision() > environment()->light())
inv->write(capitalize(name())+" drops "+i_obj->name()+((c_obj != environment()) ? " in "+(c_obj->name())+".\n" : ".\n"));
else if (inv->vision() >= (environment()->light()/2))
inv->write(capitalize(race())+" drops something"+((c_obj != environment()) ? " in "+(c_obj->name())+".\n" : ".\n"));
else
inv->write("droppi tapahtui (248:living.c)\n");
this_player()->write("You drop "+i_obj->name()+((c_obj != environment()) ? " in "+(c_obj->name())+".\n" : ".\n"));
break;
}
this_user()->echo("<-- drop()\n");
}

/*
* do_take()
*/
varargs void do_take(mixed item, mixed container) {
int i,n;
string s;
object i_obj, c_obj, *inv;

if (typeof(item) != T_STRING)
ARGCHECK(typeof(item) == T_OBJECT, take, 1);

this_user()->echo("-- take()\n");

if (container) {
if (typeof(container) != T_STRING)
ARGCHECK(typeof(container) == T_OBJECT, take, 2);

if (!(c_obj = present(container)))
this_player()->echo("You don't see "+((typeof(container) == T_STRING) ? container : container->name())+" here.\n");

if (c_obj == this_object()) {
this_player()->echo("You already got it, haven't you?\n");
c_obj = 0;
}

}
else
c_obj = environment();
this_player()->echo("c_obj "+((c_obj)?object_name(c_obj):"NULL")+"\n");
if (!(i_obj = posses(item, c_obj)))
this_player()->echo("No "+((typeof(item) == T_STRING) ? item : item->name())+" in "+((c_obj == environment()) ? "here" : c_obj->name())+".\n");

if (i_obj && c_obj)
switch (Move(i_obj, this_object())) {
case 1:
this_player()->echo("Object can't be moved inside itself!\n");
break;
case 2:
this_player()->echo("It's too BIG.\n");
break;
case 3:
this_player()->echo("It's too heavy.\n");
break;
default:
inv = environment()->inventory();
for (i = 0; i < sizeof(inv); i++)
/* check skill slip */
if ((object_type(inv) == "player") && (inv != this_object()))
if (inv->vision() > environment()->light())
inv->write(capitalize(name())+" takes "+i_obj->name()+((c_obj != environment()) ? " from "+(c_obj->name())+".\n" : ".\n"));
else if (inv->vision() >= (environment()->light()/2))
inv->write(capitalize(race())+" takes something"+((c_obj != environment()) ? " from "+(c_obj->name())+".\n" : ".\n"));
else
inv->write("taikki tapahtui (316:living.c)\n");
this_player()->write("You took "+i_obj->name()+((c_obj != environment()) ? " from "+(c_obj->name())+".\n" : ".\n"));
break;
}

this_user()->echo("-- take()\n");
}


/************************/
/* COMBAT - OBJ version */
/************************/
object combat(void) { return combat; }

void rm_combat() {
if (combat && (previous_object() == combat)){
this_object()->echo(object_name(this_object())+"combat debug! removed from combat\n");
combat = 0;
}
else if (combat && (object_type(previous_object()) == "combat")) {
/* combat = 0;*/
this_object()->echo("combat debug! fighting in "+object_name(combat)+"\n");
}
else if (combat)
error(object_name(previous_object())+" can't remove combat ");
}
void set_combat(object o) {
if (!combat || (object_type(previous_object()) == "combat")) {
this_object()->echo("combat debug! combat set to "+object_name(o)+(!combat)?"":" (override)"+".\n");
combat = o;
}
else
error ("Combat object already set!");
}
void set_target(object o) {
if (!primary_target)
primary_target = o;
else
/* this error occurs if you tried to attack your self */
error ("Primary target already set to "+object_name(primary_target)+" !");
}
void add_target(object o) {
int i;

if (!targets) {
targets = allocate(1);
targets[0] = o;
}

}
/*
* killi()
*
* does not support non-player characters !
*/
varargs void killi(string tstr,int i) {
object tgt;

if (!(tgt = environment()->FindItem(tstr,i))) {
this_player()->echo("Kill what? I see no "+tstr+" here.\n"); return; }

if (tgt == this_object()) {
this_player()->echo("Usage: suicide <password>\n"); return; }

if (combat) {
if (environment(combat) == environment()) {
if (!(combat->present_players()) && !(combat->present_npcs()))
combat->join_to_combat(tgt);
else
this_user()->echo("Doh! You are busy enough with your current opponents.\n");
}
else {
combat = 0;
start_combat(tgt);
}
}
else
start_combat(tgt);
}
/* COMBAT OBJ version ENDS */

/*
* damage this living with *hit
* return: 0 if hit was avoided,
* 0 <= damage done to this living
* 0 >= damage was absobed in armour
*/
int damage(mixed *hit) {
int resist, hurtme;

/*
if (object_type(previous_object()) != "combat") {
this_user()->echo("debug: damage(): not a combat object\n");
return 0;
}
*/
/* generally type reisist is a racial thing or an enchantment */
if (resistances[hit[0]]) /* resistance to type */
resist = resistances[hit[0]];

/* resistance to methond depends on armour */
/* thus it will be added after armours can be worn */
if (resistances[hit[1]]) /* resistance to method */
resist += resistances[hit[1]];

if (hit[2] < ( (random(stats["agi"]) + random(100-stats["siz"])) / 4) )
return 0;

if ((hurtme = hit[3] - resist) > 0)
hp -= hurtme;

return hurtme;
}

/* RETURN *mixed ([string type, string method, int hit, int dam]...)
* return damage object
* returned object will tell how many attacks this object has,
* attack types, battle message, hit chance and damgae done if hit
*
* example {["physical","pound",20,3],["poison","bite",20,3]}
*/
mixed *hit(void) {
int atck, pen, right_hit, right_dam, left_hit, left_dam;
object r_hand, l_hand;
/*
if (object_type(previous_object()) != "combat") {
this_user()->echo("debug: hit(): not a combat object\n");
return;
}
*/
r_hand = wielding["right hand"];
l_hand = wielding["left hand"];

if (skills["attack"])
atck = skills["attack"];
if (skills["offhand penalty"])
pen = skills["offhand penalty"];

right_hit = atck + stats["agi"]/4 + wielding["right hand"]->hit();
right_dam = wielding["right hand"]->dam() + stats["str"]/4;

left_hit = (int) ((float)(stats["agi"]/4 +
atck + wielding["left hand"]->hit()) *
(float)((pen < 50) ? (50.0 + (float)pen) / 100.0 : 1.0));
left_dam = (int) ((float)(wielding["left hand"]->dam() + stats["str"]/4) *
(float)((pen < 50) ? (50.0 + (float)pen) / 100.0 : 1.0));

return ({r_hand->damage_type(),r_hand->damage_method(),right_hit,right_dam,
l_hand->damage_type(),l_hand->damage_method(),left_hit,left_dam});

this_user()->echo("attack:"+atck+"\n");
this_user()->echo("offhand:"+pen+"\n");
this_user()->echo("right hit:"+right_hit+"\n");
this_user()->echo("right dam:"+right_dam+"\n");
this_user()->echo("left hit:"+left_hit+"\n");
this_user()->echo("left dam:"+left_dam+"\n");
}

/*******COMBAT******/
/*
void add_target(object o) {
int i,isiz;
object *tlist;

if (!targets) {
targets = allocate(1);
targets[0] = o;
} else {
tlist = allocate((isiz = sizeof(targets)+1));
tlist[0] = o;
for (i = 1; i < isiz; i++)
tlist = targets[i-1];
targets = tlist;
}
this_player()->echo("add_target(\""+object_name(targets[0])+"\")!!!!!!!\n");
}

/***/
/*
void combat_round(void) {
int i,ii,isiz,tosiz;
object *to;
mixed hits;
this_object()->echo("combat debug: ** NEW ROUND **\n");

if (!targets)
targets = ({});

if ((object_type(this_object()) == "player") && (isiz = sizeof(targets))) {
to = allocate(tosiz=sizeof(targets));
for (i = 0; i < tosiz; i++)
if (environment->posses(targets))
to[ii++] = targets;
targets = to;
present_targets = ii;
}

this_object()->echo("present targets:"+ii+"\n");

if (!present_targets) {
primary_target = 0;
return;
}

if (!(environment->posses(primary_target))) {
this_object()->echo("getting new primary target.\n");
primary_target = targets[random(ii)];
}
this_object()->echo("primary target :"+object_name(primary_target)+"\n");

if (sizeof(hits = hit()) == 0)
return;

if ((sizeof(hits) % 4) != 0)
return;

for (i = 0; i < sizeof(hits)/4; i++) {
ii = primary_target->damage(hits[(i*4) .. (i*4+3)]);

if (object_type(this_object()) == "player")
this_object()->echo(primary_target->name()+" sai "+ii+" tehon "+hits[i*4+1]+"\n");
if (object_type(primary_target) == "player")
primary_target->echo(name()+" loi "+ii+" "+hits[i*4+1]+"\n");
}

call_out("combat_round",2);
}
*/
/*******COMBAT******/
/*******COMBAT******/
/*
varargs void kill(string opponent, int i) {
object obj;

if (obj == this_object()) {
if (object_type(this_object()) == "player")
this_object()->echo("noin tyhma nyt kai kukaan vois olla?\n");
return;
}

if ((object_type(this_object()) == "player") && primary_target) {
this_player()->echo("You are already fighting.\n");
return;
}

if ((obj = environment->FindItem(opponent,i)) == 0) {
if (object_type(this_object()) == "player")
this_player()->echo("ei "+opponent+" loydy.\n");
return;
} else if (obj == this_object()) {
if (object_type(this_object()) == "player")
this_object()->echo("noin tyhma nyt kai kukaan vois olla?\n");
return;
}

if (!(environment->posses(obj))) {
if (object_type(this_object()) == "player")
this_player()->echo("No "+obj->name()+" here.\n");
return;
}

primary_target = obj;
add_target(obj);
call_out("combat_round",1);
return;

if (obj->combat()) {
(obj->combat())->add_to_combat(this_object());
}
else {
combat = clone_object("/dgd/std/combat");
combat->start_combat(this_object());
combat->add_to_combat(obj);
}
}
*/

/* HP */
nomask int hp(void) { return hp; }
nomask int adj_hp(int i) { return hp += i; }

nomask int max_hp(void) { return max_hp; }
nomask int set_max_hp(void) {
max_hp = stat("size")+stat("sta")+ (int) (racial_stats["sta"] * (float) level);
}

/* SP */
nomask int sp(void) { return sp; }
nomask int adj_sp(int i) { return sp += i; }

nomask int max_sp(void) { return max_sp; }
nomask int set_max_sp(void) {
max_sp = stat("wis")+stat("int") +(int) (racial_stats["wis"] *(float) level);
}

/* EP */
nomask int ep(void) { return ep; }
nomask int adj_ep(int i) { return ep += i; }

nomask int max_ep(void) { return max_ep; }
nomask int set_max_ep(void) {
max_ep = stat("agi")+stat("sta") + (int) (racial_stats["sta"] *(float) level);
}

nomask void set_stats(void) {
int i,isize; string *slist;

isize = sizeof(slist = map_indices(racial_stats));
for (i = 0; i < isize; i++)
stats[slist] = (int) (racial_stats[slist] * (float) level);
}

/* levels and alignment */
nomask int level(void) { return level; }
nomask int alignment(void) { return alignment; }

nomask int set_level(int i) { return level = i; }
nomask int set_alignment(int i) { return alignment = i; }

/*
* HEART
*/
nomask heart_beat(void) { error("living.c:heart_beat():638: not used");/*return heart_beat;*/ }
static void heart(void) {
int ohp,osp,oep;

ohp = hp; osp = sp; oep = ep;

if (ep < max_ep)
ep += 1 + stats["sta"] / 100;

if (ep > 0) {
if (sp < max_sp) {
sp += 1 + stats["int"] / 30 + stats["wis"] / 20;
ep--;
}
if (hp < max_hp) {
hp += 1 + stats["sta"] / 100;
ep--;
}
}

/* sc fake */

if ((object_type(this_object()) == "player") && (oep != ep | osp != sp | ohp !=hp))
this_object()->echo("hp:"+hp+" sp:"+sp+" ep:"+ep+"\n");

heart_handle = call_out("heart",heart_beat);
}


/*
* describe (sex, pronoun, condition, shape...)
*/
nomask string sex(void) {
return (sex==0) ? "other" : (sex==1) ? "male" : "female"; }
nomask string pronoun(void) {
return (sex==0) ? "it" : (sex==1) ? "he" : "she"; }
nomask string possessive(void) {
return (sex==0) ? "its" : (sex==1) ? "his" : "her"; }
nomask string objective(void) {
return (sex==0) ? "it" : (sex==1) ? "him" : "her"; }

nomask string set_sex(string s) {
sex = (s=="male") ? 1 : ((s=="female") ? 2 : 0);
return sex();
}

nomask string condition() {
if (hp < 0)
return capitalize(name())+" is unconscious and bleeding from big wounds.";
else if (hp <= max_hp/10)
return capitalize(name())+" is covered by "+possessive()+" own blood.";
else if (hp <= max_hp/2)
return capitalize(name())+" body is covered by bruises.";
else
return capitalize(name())+" looks fit and healthy.";
}

string statstring(string s) {
int i;
string str,sc;

str = capitalize(s)+": ";

if (stats < 10)
str += " ";
else if (stats < 100)
str += " ";

return str += stats+" ";
}

void scores(void) {
this_user()->echo("Name: "+capitalize(name())+" the "+race+"\n");
this_user()->echo("

\n");
this_user()->echo("Level: "+((level<10)?" ":" ")+level+
" Experience: "+experience+"\n\n" );
this_user()->echo("Hp: "+hp+" ("+max_hp+
") Sp: "+sp+" ("+max_sp+") Ep: "+ep+" ("+max_ep+")\n\n");
this_user()->echo(statstring("str")+statstring("agi")+statstring("siz")+statstring("cha")+"\n");
this_user()->echo(statstring("wis")+statstring("int")+statstring("sta")+"\n");
this_user()->echo("
\n");
}

/*
* NAME
*/
/*
nomask string name(void) { return name; }
nomask string full_name(void) { return full_name; }
nomask string alias_name(void) { return alias_name; }

nomask void set_name(string s) { name = full_name = alias_name = s; }
nomask void set_full_name(string s) { full_name = s; }
nomask void set_alias_name(string s) { alias_name = s; }
*/
/*
* RACE
*/
nomask string race(void) { return race; }

nomask void set_race(string s) {

/* varmista et race on validi */
if (!race)
race = s;
else if (race != s)
return;

if (race == "visitor") {
/* guest special save/restore */
restore_object("/var/obj/visitor");
alignment++;
save_object("/var/obj/visitor");
set_name("guest-"+alignment);
stats = (["str":1, "agi":1, "int":1, "wis":1,
"cha":1, "sta":1, "siz":1]);
racial_stats = (["str":1.0, "agi":1.0, "int":1.0, "wis":1.0,
"cha":1.0, "sta":1.0, "siz":1.0]);

heart_beat = 1;
msg_say = "meeps";
msg_in = "arrives";
msg_out = "leaves";
}
else if (race == "giant") {
stats = (["str":1, "agi":1, "int":1, "wis":1,
"cha":1, "sta":1, "siz":1]);
racial_stats = (["str":2.0, "agi":0.5, "int":0.1, "wis":0.1,
"cha":0.75, "sta":2.0, "siz":2.5]);

heart_beat = 1;
msg_say = "booms";
msg_in = "arrives";
msg_out = "leaves";
}
else if (race == "sprite") {
stats = (["str":1, "agi":1, "int":1, "wis":1,
"cha":1, "sta":1, "siz":1]);
racial_stats = (["str":0.1, "agi":2.5, "int":1.5, "wis":1.5,
"cha":1.75, "sta":0.5, "siz":0.3]);

heart_beat = 1;
msg_say = "meaowls";
msg_in = "arrives";
msg_out = "leaves";
}
resistances = ([]);
alive = 1;
level=1;

skills = ([]);
/*skills["attack"] = 10;
*/
natural_weapone = clone_object("/obj/weapone/bludgeon");

slots = ({"head", "neck", "left arm", "right arm",
"left hand", "right hand", "torso", "belt",
"left leg", "right leg", "left foot", "right foot"});
limbs = ({"right hand", "left hand"});

wielding = ([]);
wielding["right hand"] = natural_weapone;
wielding["left hand"] = natural_weapone;


set_stats();
set_max_hp();
set_max_sp();
set_max_ep();
/* heart();*/
}

/*
* stats
*/
nomask int stat(string s) { return (!stats) ? 0 : stats; }

nomask int adj_stat(string s, int i) {
/* logga stat change */
/* ja adjustia adjustoidaan race tunella */
stats += i;
/* pida huoli et ei mee alle 1 kun naa mapit on mita on */
}

/*
* spells
*/
nomask string *spells(void) {
if (map_sizeof(spells) == 0)
return ({});
else
return map_indices(spells);
}

nomask varargs int skill(string s) {
if (!skills)
return 0;
else
return skills;
}

/*
* skills
*/
nomask string *skills(void) {
if (map_sizeof(skills) == 0)
return ({});
else
return map_indices(skills);
}

nomask varargs int spell(string s) {
if (!spells)
return 0;
else
return spells;
}