!==========================================================
Constant Story "Même les pommes de terre ont des yeux !";
Constant Headline
 	"^Froggy Software, 1985^Tapez 'info' pour des informations sur le jeu.^Tapez 'objectifs' à tout moment pour savoir où vous en êtes dans votre progression.^";
Release 1; Serial "070625";

global cha;

global pesos=0;
global peso=0;

global plan=0;

global dicta=0;
global l1=0;
global l2=0;
global l3=0;
global patates=0;
global achete=0;
global nourri=0;
global ouvert=0;
global deliv=0;
global healed=0;
global rami=0;
global presi=0;

Replace ScoreSub;

Include "Parser";
Include "VerbLib";

!==========================================================
! Routine

[ w8 notNeeded;
  @read_char 1 notNeeded;
  rtrue;
];

!==========================================================
! Lieux

Object libertad "Place de la Libertad"
	with description "Voici la Place de la Libertad !^Il s'agit d'une place ronde, entourée de maisons et d'immeubles. Des rues partent de la place pour aller un peu partout ailleurs. Au centre de la place se dresse un monument pyramidal.",
	n_to immeubles,
	s_to mairie,
	w_to casa,
	e_to stade,
	in_to "Il n'y a pas de porte à ce monument !",
has scenery concealed;

Object immeubles "Des immeubles"
	with description "Un quartier plutôt résidentiel, où de grands immeubles s'élèvent, dos à la montagne. Il s'agit d'un quartier pauvre, et ces immeubles sont surpeuplés.",
	n_to diario,
	s_to libertad,
	e_to banque,
	w_to faussaire,
	in_to habitation,
has scenery concealed;

Object habitation "Une habitation"
	with description "Vous vous retrouvez dans l'habitation d'une famille. Cinq personnes, trois hommes moustachus et barbus coiffés d'un sombrero, et une femme tenant son bébé dans les bras, vous regardent. L'enfant pleure, et les habitants vous demandent : ~A manger !~",
	out_to immeubles,
has scenery concealed;

Object diario "L'immeuble du quotidien ~El Diario~"
	with description [; print "Les locaux du quotidien ~El Diario~, devant lesquels il y a un gardien, "; if (cartjou in player) {print_ret "qui vous jette un coup d'oeil et, voyant que vous avez la carte du journal, acquiesce et vous montre la porte d'entrée du quotidien.";} else {print_ret "qui ne demande qu'à voir votre carte du journal pour vous laisser entrer...";}
		],
	s_to immeubles,
	w_to epicerie,
	e_to aeroport,
	in_to [; if (cartjou in player) {return intdiario;} else {print_ret "Pas si simple, il vous faut la carte...";}],
has scenery concealed;

Object intdiario "Dans les locaux de El Diario"
	with description "Le rédac'chef est au marbre, sur son bureau près de la rotative. Le bruit de la rotative couvre tout.",
	out_to diario,
has scenery concealed;

Object epicerie "Epicerie"
	with description [; print "Vous êtes face à une petite épicerie de quartier. L'épicier "; if (achete==2) {print_ret "n'a plus rien à vendre.";} else {print_ret "ne vend que des patates.";}
		],
	e_to diario,
	s_to caserne,
has scenery concealed;

Object caserne "La caserne"
	with description [; print "C'est évident : la caserne est moche. Des gardes patrouillent près de l'entrée ; "; if (cartgen in player) {print_ret "vous voyant arriver, et voyant la carte de général épinglée à votre poitrine, ils se mettent immédiatement au garde-à-vous.";} else {print_ret "ils ne vous laisseront pas passer, car vous êtes un civil...";}
		],
	n_to epicerie,
	s_to hopital,
	e_to tele,
	in_to [; if (cartgen in player) {return intcas;} else {print_ret "Les gardes refusent de vous laisser entrer car vous êtes un civil...";}],
has scenery concealed;

Object intcas "Dans la caserne"
	with description "Vous êtes à l'intérieur de la caserne. Un militaire vous regarde d'un air bête.",
	out_to caserne,
has scenery concealed;

Object geole "Une geôle"
	with description "Une geôle infâme, mais qui contient le président...",
	out_to intcas,
has scenery concealed;

Object tele "Le bureau de la télévision"
	with description [; print "Vous êtes devant l'immeuble de la télévision, un grand immeuble blanc, avec une grande antenne à son sommet. "; if (cartele in player) {print_ret "Voyant votre carte, le gardien acquiesce et vous désigne la porte de la tête.";} else {print_ret "Le gardien ne vous laissera pas entrer si vous n'avez pas la carte de la télévision.";}
		],
	s_to faussaire,
	w_to caserne,
	in_to [; if (cartele in player) {return intele;} else {print_ret "Pas si simple, il vous faut la carte...";}],
has scenery concealed;

Object intele "Dans le studio de télévision"
	with description "A vous le vedettariat de la télévision... Sur ce plateau, des caméras filment un présentateur véreux qui présente les actus.",
	out_to tele,
has scenery concealed;

Object hopital "Hôpital San Crapulo"
	with description "Es el hopital por los malados craignos.",
	n_to caserne,
	s_to casa,
	e_to faussaire,
	in_to [; if (deliv==1) {return inthop;} else {print_ret "Porqué ? Tout va bien pour vous !";}
		],
has scenery concealed;

Object inthop "Dans l'hôpital"
	with description [; print "L'hôpital grouille d'activité.^"; if (prisonnier in player) {move prisonnier to inthop; print_ret "Vous entrez et portez le prisonnier sur un lit. Il a besoin maintenant d'être soigné.";} else {print_ret "Le prisonnier est étendu sur un lit.";}
		],
	out_to hopital,
has scenery concealed;

Object faussaire "Chez le faussaire"
	with description "Vous êtes dans une mansarde ; le faussaire, un type au regard fuyant, avec des cartes dépassant de sa poche, vous demande : ~Qu'est-ce que vous voulez, señor ?~",
	n_to tele,
	w_to hopital,
	e_to immeubles,
has scenery concealed;

Object casa "Casa del Populo"
	with description "La Casa del Populo grouille d'une intense activité... En fait, ses employés dorment tous ! L'un d'eux, coiffé d'un grand sombrero, dort même debout !",
	n_to hopital,
	s_to radio,
	e_to libertad,
has scenery concealed;

Object radio "Radio Bla Bla"
	with description "Vous êtes dans les locaux de Radio Bla Bla :^~Waaouhh ! Radio Bla Bla, 96.9 FM stirioo !!~^Un speaker, écouteurs sur les oreilles, parle devant un micro ; au-dessus de lui, une affiche ~Radio Bla Bla~ et l'horloge du studio. Dans l'autre pièce, derrière le panneau en verre, un homme coiffé d'une banane à la Elvis le regarde.",
	n_to casa,
	e_to montagne,
has scenery concealed;

Object montagne "Montagne"
	with description "Vous êtes au pied de la montagne, qui présente une pente assez rude. La montagne, la grimpette, bref le paradis du mollet...",
	w_to radio,
	n_to desert,
	before [;up: print_ret "La tendinite vous guette, amigo !";
		],
has scenery concealed female;

Object desert "Dans le désert"
	with description "Vous vous retrouvez en plein désert, un désert aride et sec. Gare aux mirages...",
	n_to mairie,
	s_to montagne,
	e_to auloin,
has scenery concealed;

Object mairie "La mairie"
	with description "La mairie est un grand et imposant bâtiment, de style pompier.",
	n_to libertad,
	s_to desert,
	e_to foret1,
	w_to palais,
	in_to intmair,
has scenery concealed;

Object intmair "Dans la mairie"
	with description "Vous pouvez apercevoir le maire, qui, semble-t-il, n'a pas bézef de pouvoir...  Derrière lui, la salle de dépouillement, qui sert lors des élections.^Un grand ventilateur brasse l'air au-dessus de vous.",
	out_to mairie,
	in_to urn,
	n_to urn,
has scenery concealed;

Object urn "Salle de dépouillement"
	with description "Attention, la dépouille est mortelle.",
	out_to intmair,
	s_to intmair,
	before[;voter: if (dicta==1 && presi==1 && l2==2 && l3==2 && nourri==3){print "^"; style bold; print "CARAMBA DE CARAMBA DE CARAMBA !"; style roman; print "^^Plus de 10 millions de péones ont voté pour vous !!!^Tapez une touche, gringo gagnant !!!";w8(); style bold; print "^^MADRE DE DIOS ! C'EST FINI ! CARAMBA CE LOGICIEL FROGGY ETAIT TOO MUCH !"; deadflag=2; rtrue;} else {print "La junte en profite pour faire un nouveau putsch... Adios gringo, un espion vous supprime !"; mort(); rtrue;}
		],
has scenery concealed;

Object stade "Le stade"
	with description [; print "Dans ce stade, il n'y a plus aucune activité sportive... A la place, vous voyez des résistants prisonniers entassés sur les gradins, "; if (rami==0) {print_ret "et des sentinelles qui gardent la sortie...";} else {print_ret "mais plus personne ne surveille la sortie, de telle sorte qu'ils sont libres !";}
		],
	n_to police,
	s_to foret1,
	w_to libertad,
has scenery concealed;

Object police "Le commissariat"
	with description "Vous êtes devant un sinistre commissariat de quartier...",
	s_to stade,
	w_to banque,
	in_to [; if (deliv==0) {return intcomm;} else {print_ret "Inutile : le commissariat est vide.";}
		],
has scenery concealed;

Object intcomm "Dans le commissariat"
	with description "Vous voyez un policier armé d'une grande matraque, qui frappe un prisonnier ligoté, torse nu et sanglant. Le policier se retourne vers vous : ~Vous nous dérangez en plein boulot !~",
	out_to police,
has scenery concealed;

Object banque "La banque"
	with description "Vous êtes devant la banque, une grande construction imposante à l'architecture kitsch et cablée.",
	e_to police,
	w_to immeubles,
	in_to intbanque,
has scenery concealed;

Object intbanque "Dans la banque"
	with description "Un guichetier fumant un cigare vous accueille en souriant :^~Que pouis-je pour vous, amigo ?~",
	out_to banque,
has scenery concealed;

Object aeroport "L'aéroport"
	with description [; print "L'aéroport est assez petit, et il y a peu de trafic sur cet aéroport. Vous pouvez voir des appareils militaires, et des caisses de marchandises. Des gardes un peu partout surveillent l'aéroport, l'accès aux appareils - interdit aux civils - et aux marchandises."; if (cartgen in player) {print_ret " Les militaires, voyant votre carte de général, se mettent au garde-à-vous.";} else {rtrue;}
		],
	w_to diario,
has scenery concealed;

Object inthelico "Dans l'hélicoptère"
	with description "Caramba ! Quel panorama !^Vous êtes dans l'hélicoptère, qui survole la ville. Vous prenez note mentalement du plan de la zone, dans ses moindres détails, des quartiers résidentiels du nord-ouest jusqu'à la cité inca au sud de la ville...",
	before [;Down: playerto(aeroport); rtrue;
		],
has scenery concealed;

Object auloin "Encore le désert"
	with description "Vous êtes dans le désert, mais vous voyez, au loin, une cité qui poudroie...",
	s_to [;if (plan==1) {return cahute;} else {print_ret "Pour aller par là, il faut connaître le plan du coin, amigo !";}],
	w_to desert,
has scenery concealed;

Object palais "Le palais gouvernemental"
	with description [; print "Caramba ! Voilà le palais gouvernemental !^"; if (sent2 in palais) {print "Une sentinelle armée d'un fusil vous empêche de passer.^"; if (cartgen in player) {print_ret " Vous lui montrez votre carte de général, mais la sentinelle secoue la tête : ~Yé né sais pas lire, señor.~";} else {rtrue;}} else {print_ret "L'entrée du palais n'est plus surveillée.";}
		],
	e_to mairie,
	in_to [; if (sent2 in palais) {"La sentinelle vous empêche de passer.";} else {return intpalais;}
		],
has scenery concealed;

Object intpalais "Dans le palais gouvernemental"
	with description "Vous êtes à l'intérieur du palais gouvernemental, un grand palais luxueux aux plafonds hauts. Vous voyez un coffre-fort dans le fond de la pièce.^Devant vous, le dictateur est là, et vous regarde d'un air apeuré.",
	out_to palais,
has scenery concealed;

Object coffre "Le coffre-fort"
	with description "Le coffre fort contient des notes laissées par le président !",
	n_to intpalais,
	s_to intpalais,
	e_to intpalais,
	w_to intpalais,
	out_to intpalais,
has scenery concealed;

Object foret1 "Dans la forêt"
	with description "Cette forêt n'a pas l'air vierge... Partout, sur le chemin, sur les arbres, vous voyez des traces de passage, des impacts de balles...",
	n_to stade,
	w_to mairie,
	e_to foret2,
has scenery concealed;

Object foret2 "Encore la forêt"
	with description "Vous vous enfoncez plus profondément dans la forêt, qui a l'air calme et paisible, et où s'ébattent de petits animaux...",
	w_to foret1,
	s_to sierra,
has scenery concealed;

Object sierra "Sierra Madre de Dios"
	with description "Une haute montagne s'élève face à vous.",
	n_to foret2,
	s_to plaine,
has scenery concealed;

Object plaine "Une plaine"
	with description "C'est une plaine vide et désolée ; vous voyez quelques cactus.",
	n_to sierra,
	w_to [;if (plan==1) {return cahute;} else {print_ret "Pour aller par là, il faut connaître le plan du coin, amigo !";}],
has scenery concealed;

Object cahute "Cahute inca"
	with description "Parmi les arbres et la jungle, vous voyez une vieille cahute inca.",
	n_to auloin,
	e_to plaine,
	in_to [; if (cle2 in player) {PlayerTo(intcahute); rtrue;} else {print_ret "Ma, c'est pas possible. Hé, c'est fermé !";}
		],
has scenery concealed;

Object intcahute "Dans la cahute"
	with description "C'est la cabane dont Ramirez vous avait parlé !",
	out_to cahute,
has scenery concealed;

!==========================================================
! Objets

Object arge "pesos"
	with name 'argent' 'pesos' 'billets' 'fric',
	invent [; print pesos, " pesos"; rtrue;
		],
	before [; demande: <money>; rtrue;
		],
has ;

Object ventilateur "ventilateur" intmair
	with description "Ne TOUCHEZ pas au ventilateur !",
	name 'ventilateur',
	before [; Touch: print "Les pales sont aiguisées et vous coupent la tête."; mort(); rtrue;
		],
has static;

Object micro "micro" radio
	with name 'micro' 'mic',
	before [;Examine, Touch, Take : print_ret "Pas touche, señor, c'est fragile !";
		],
has concealed;

Object ecouteurs "écouteurs" radio
	with name 'ecouteurs',
	before [;Examine, Touch, Take : print_ret "Pas touche, señor, c'est fragile !";
		],
has concealed ;

Object horloge "horloge" radio
	with name 'horloge',
	before [;Examine, Touch, Take : print_ret "Pas touche, señor, c'est fragile !";
		],
has female concealed ;

Object helico "hélicoptère" aeroport
	with description "Pour faire un tour, montez dedans...",
	name 'helicoptere' 'helico',
	before [;up: if (cartgen in player) {plan=1; playerto(inthelico); rtrue;} else {print_ret "Vous ne pouvez pas monter dans l'hélicoptère, il est interdit aux civils.";}
		],
has static;

Object avion "avion" aeroport
	with description "Pour faire un tour, montez dedans...",
	name 'avion',
	before [;up: print "Boummmm ! Oune espion l'enflamme et il explose !!"; mort(); rtrue;
		],
has static;

Object caisse "caisses" aeroport
	with description "Il y a des armes dans ces caisses !",
	name 'caisse' 'caisses',
	before [;Take: if (bon in player) {move armes to player; print_ret "Vous avez les armes, señor.";} else {print_ret "~On ne peut pas vous les livrer, señor, vous n'avez même pas de bon de commande !~";}
		],
has pluralname static;

Object armes "armes" aeroport
	with description "Des armes standard, les mêmes que celles des soldats.",
	name 'arme' 'armes',
	before [;Take: if (bon in player) {move armes to player; print_ret "Vous avez les armes, señor.";} else {print_ret "~On ne peut pas vous les livrer, señor, vous n'avez même pas de bon de commande !~";}
		],
has pluralname concealed;

Object montag "montagne" sierra
	with description "Une grande montagne, imposante et aux flancs raides.",
	name 'montagne',
	before [;up: print_ret "La tendinite vous guette, amigo !";
		],
has static;

Object carte "cartes" faussaire
	with description "Apparemment, ce sont des fausses cartes : une carte de journaliste, une carte de la télévision et une carte de général.",
	name 'cartes',
has pluralname concealed;

Object cartjou "carte du journal" faussaire
	with description "Description",
	name 'carte' 'journal' 'journaliste',
	before [; Take: if (cartjou notin player) {print_ret "(pour acheter une carte, écrivez ~carte~ suivi du nom de la carte.)";}
		Examine: if (cartjou notin player) {print_ret "(pour acheter une carte, écrivez ~carte~ suivi du nom de la carte.)";} else {print_ret "Une fausse carte de journaliste.";}
		Buy, carte: if (cartjou notin player) {if (pesos>=100) {move cartjou to player;pesos=pesos-100;print_ret "~C'est 100 pesos ; tenez, la voilà.~";} else {print_ret "Impossible : vous n'avez pas 100 pesos.";}} else {print_ret "Vous l'avez déjà !";}
		],
has female concealed;

Object cartele "carte de la télé" faussaire
	with description "Description",
	name 'carte' 'tele' 'television',
	before [; Take: if (cartele notin player) {print_ret "(pour acheter une carte, écrivez ~carte~ suivi du nom de la carte.)";}
		Examine: if (cartele notin player) {print_ret "(pour acheter une carte, écrivez ~carte~ suivi du nom de la carte.)";} else {print_ret "Une fausse carte de la télévision.";}
		Buy, carte: if (cartele notin player) {if (pesos>=100) {move cartele to player;pesos=pesos-100;print_ret "~C'est 100 pesos ; tenez, la voilà.~";} else {print_ret "Impossible : vous n'avez pas 100 pesos.";}} else {print_ret "Vous l'avez déjà !";}
		],
has female concealed;

Object cartgen "carte de général" faussaire
	with description "Description",
	name 'carte' 'general',
	before [; Take: if (cartgen notin player) {print_ret "(pour acheter une carte, écrivez ~carte~ suivi du nom de la carte.)";}
		Examine: if (cartgen notin player) {print_ret "(pour acheter une carte, écrivez ~carte~ suivi du nom de la carte.)";} else {print_ret "Une fausse carte de général.";}
		Buy, carte: if (cartgen notin player) {if (pesos>=100) {move cartgen to player;pesos=pesos-100;print_ret "~C'est 100 pesos ; tenez, la voilà.~";} else {print_ret "Impossible : vous n'avez pas 100 pesos.";}} else {print_ret "Vous l'avez déjà !";}
		],
has female concealed;

Object lapin "lapin" foret2
	with description "C'est le lapin d'Alice au Pays des Merveilles !",
	name 'lapin',
	before [; Take: print_ret "C'est le lapin d'Alice au Pays des Merveilles !";
		suivre: lap1(); rtrue;
		],
has ;

Object hibou "hibou" foret2
	with name 'hibou',
	before [;Examine, Take: print "Ay, ay ! Le hibou est en réalité oune espion qui vous fustige !"; mort(); rtrue;
	],
has ;

Object rotative "rotative" intdiario
	with description "Le Crime du Parking est à la une ! (Génial !)",
	name 'rotative',
has static female;

Object tank "tank" caserne
	with name 'tank' 'char',
	before [;Examine: print "Oune espion caché dans le tank vous tue !"; mort(); rtrue;
		],
has static;

Object bombe "bombe" casa
	with description "Ce sont des bombes, rondes et noires, et très explosives.",
	name 'bombe' 'bombes',
	before [;Take: print "Elle vous pète au nez !"; mort(); rtrue;
		],
has female;

Object sombrero "sombrero" casa
	with name 'sombrero',
	before [;Examine, Take, Ask, Tell, Push, Pull: print_ret "~Caramba ! Pas touche à mon sombrero !~";
		],
has concealed;

Object cactus "cactus" plaine
	with description "Vous vous piquez mais vous avez le cuir solide.",
	name 'cactus',
has static ;

Object cle "clé dorée"
	with description "Cette clé vous permet d'ouvrir le coffre du dictateur.",
	name 'cle' 'clef' 'doree',
	before [; Take: move cle to player; print_ret "Vous prenez la clé. Maintenant vous pouvez ouvrir le coffre du dictateur !";
		],
has female concealed;

Object coff "coffre-fort"
	with description "Le coffre-fort du dictateur.",
	name 'coffre' 'fort' 'coffre-fort',
	found_in intpalais coffre,
	before [; Open: if (player in coffre) {print_ret "Il est déjà ouvert.";} else {if (cle in player) {remove cle; ouvert=1; PlayerTo(coffre); rtrue;} else {if (ouvert==0) {print_ret "Pas si simple, il vous faut la clé.";} else {PlayerTo(coffre); rtrue;}}}
		Close: if (player in coffre) {PlayerTo(intpalais); rtrue;} else {print_ret "Il est déjà fermé.";}
		],
has concealed;

Object note1 "la note un" coffre
	with description "Il s'agit d'une note du président.",
	name 'note' 'un' 'une',
	before [; Take: print_ret "Inutile, gringo, ça gonflerait les poches de votre poncho !";
		  lire: l1=1; print_ret "~Message radio pour les guérilleros : 'Les patates sont cuites'~";
		],
has female proper;

Object note2 "la note deux" coffre
	with description "Il s'agit d'une note du président.",
	name 'note' 'deux',
	before [; Take: print_ret "Inutile, gringo, ça gonflerait les poches de votre poncho !";
		  lire: l2=1; print_ret "~Tribune à publier : 'J'accuse !'~";
		],
has female proper;

Object note3 "la note trois" coffre
	with description "Il s'agit d'une note du président.",
	name 'note' 'trois',
	before [; Take: print_ret "Inutile, gringo, ça gonflerait les poches de votre poncho !";
		  lire: l3=1; print_ret "~'Je vous ai compris' sera mon appel télévisé !~";
		],
has female proper;

!==========================================================
! Objets patates

Object pat1 "patates" epicerie
	with description "Un sac de 100 kilos de patates.",
	name 'patates' 'patate' 'sac',
	before [; Buy: if (pesos>=300) {if (patates==0) {move pat2 to player;} achete++; patates++; pesos=pesos-300; if (achete==2) {remove pat1;} print_ret "~Voilà les patates, amigo.~";} else {print_ret "Vous n'avez pas assez d'argent : 100 kilos de patates coûtent 300 pesos.";}
		Take: print_ret "Ah non, ce serait du vol !";
		],
has pluralname ;

Object pat2 "patates"
	with description "Un sac de 100 kilos de patates.",
	name 'patates' 'patate' 'sac',
	invent [; print patates*100; print_ret " kilos de patates";
		],
has pluralname ;

Object pat3 "patates" intcahute
	with description "Un sac de 100 kilos de patates.",
	name 'patates' 'patate' 'sac',
	before [; Take: if (lama in player) {if (pat2 notin player) {move pat2 to player;} remove pat3; patates++; print_ret "Le lama prend les patates pour vous.";} else {print_ret "Vous ne pouvez pas les prendre sur votre dos sur tout le chemin du retour, amigo, c'est trop lourd !";}
		],
has pluralname ;

!==========================================================
! Personnes

Object habit "habitants" habitation
	with description "Il n'y a que de pauvres affamés ici.",
	name 'homme' 'hommes' 'femme' 'moustachus' 'barbus' 'affame' 'affames' 'habitant' 'habitants' 'pauvre' 'pauvres',
	life [;
		Tell: if (nourri~=3) {print_ret "~Nous avons toujours faim, señor !~";} else {print_ret "~Bravo ! Vous gagnez nos voix pour les élections ! Et nous sommes rassasiés !~";}
		Give: if (noun == pat2) {patates--;nourri++; if (patates==0) {remove pat2;} if (nourri==3) {print_ret "~Bravo ! Vous gagnez nos voix pour les élections ! Et nous sommes rassasiés !~";} else {print_ret "~Merci, mais nous avons toujours faim, señor !~";}}
		],
has pluralname animate;

Object faus "faussaire" faussaire
	with description "Un type au regard fuyant, avec un béret marron sur la tête ; des cartes dépassent de sa poche.",
	name 'faussaire',
	before [; Tell, Ask: print_ret "~Dites-moi vite ce que vous voulez, qu'on en finisse !~";
		],
has animate concealed;

Object speaker "speaker" radio
	with description "Il semble complètement absorbé dans la présentation de sa radio.",
	name 'speaker' 'presentateur' 'journaliste',
	before [; Tell, Ask: print_ret "Le speaker ne vous entend pas, et semble complètement absorbé dans la présentation de sa radio.";
		],
has animate concealed;

Object soldat1 "militaire" intcas
	with description "Le militaire, habillé de kaki, vous regarde d'un air intrigué.",
	name 'soldat' 'militaire',
	orders [;
		Give: switch(noun) {
		bon: if (bon notin player) {move bon to player ; print_ret "~Tenez, général, voilà un bon de livraison.~";} else {print_ret "Vous l'avez déjà.";}
		}
		"~Qué ?~";
		],
has animate transparent ;

Object bon "bon de commande" soldat1
	with description "Un bon de commande pour des armes.",
	name 'bon' 'commande' 'livraison',
	before [; Take: if (bon notin player) {print_ret "Demandez au militaire avant.";}
		demande: if (bon notin player) {move bon to player ; print_ret "~Tenez, général, voilà un bon de livraison.~";}
		],
has ;

Object sent1 "sentinelles" stade
	with description "Les sentinelles gardent la sortie du stade, et sont inamovibles.",
	name 'soldat' 'soldats' 'militaire' 'militaires' 'sentinelle' 'sentinelles',
has pluralname animate ;

Object sent2 "sentinelle" palais
	with description "La sentinelle zélée vous empêche d'entrer dans le palais gouvernemental.",
	name 'soldat' 'militaire' 'sentinelle',
	before [; kill: if (armes in player) {print "...... Ca marche !"; w8(); remove sent2; print_ret "^Tiens, la sentinelle a disparu !";} else {print "Vous êtes trop téméraire, señor !"; mort(); rtrue;}
		],
has female animate concealed ;

Object sent3 "sentinelles" aeroport
	with description "Les gardes surveillent l'aéroport, l'accès aux appareils militaires et les marchandises.",
	name 'soldat' 'soldats' 'militaire' 'militaires' 'sentinelle' 'sentinelles',
has pluralname animate ;

Object priso "prisonniers" stade
	with description "Les résistants prisonniers sont massés dans les gradins.",
	name 'prisonnier' 'prisonniers' 'résistant' 'résistants',
has pluralname animate ;

Object dictateur "le dictateur" intpalais
	with description "Le dictateur, dans son uniforme de chef du pays, est face à vous, et vous regarde d'un air apeuré.",
	name 'dictateur',
	before [; arreter: dicta=1; print_ret "Vous passez les menottes aux mains du dictateur. Bravo, la dictature est renversée !";
		  Search: if (dicta==1) {move cle to intpalais; print_ret "Dans sa poche, une clé étincelle !";} else {print "Le dictateur ne se laisse pas faire ; il parvient à vous maîtriser et prend votre arme !"; mort(); rtrue;}
		],
has animate proper ;

Object policier "policier" intcomm
	with description "Le policier est face à vous, une matraque à la main ; vous l'avez interrompu alors qu'il était en train de... comment dire... d'~interroger~ le prisonnier avec sa matraque.",
	name 'policier' 'commissaire' 'bourreau' 'tortionnaire',
	before [; Tell, Ask: print_ret "~Vous nous dérangez en plein boulot, señor : ce prisonnier est un opposant au régime !~";
		],
has animate ;

Object prisonnier "le prisonnier" intcomm
	with description "Apparemment, c'est un opposant au régime, qui a été ~questionné~ sévèrement au commissariat...",
	name 'prisonnier',
	before [; delivrer: if (sauf in player) {deliv=1; move prisonnier to player; print_ret "Voyant votre sauf-conduit, le policier pose sa matraque à contrecoeur : ~Voilà, le prisonnier est à vous !~";} else {print_ret "Le policier s'esclaffe : ~Sans sauf-conduit ? Vous plaisantez !~";}
		Tell: if (healed==1) {print_ret "~Mon chef Ramirez est au stade, amigo !~";} else {print_ret "Le prisonnier est trop faible pour parler : il faut le soigner d'abord.";}
		soigner: if (prisonnier in inthop) {healed=1; print_ret "Grâce aux soins, le prisonnier va mieux !";} else {print_ret "Comment faire ? Transportez-le d'abord à l'hôpital !";}
		],
has animate proper ;

Object maire "le maire" intmair
	with description "Le maire est là, derrière son bureau.",
	name 'maire',
	orders [;
		Give: switch(noun) {
		sauf: if (sauf notin player) {if (dicta==1) {move sauf to player ; print_ret "~Maintenant qué la dictatoure est renversée, tenez, je vous délivre oune sauf-conduit, señor...~";} else {print_ret "~Yé né peux vous le donner : la dictatoure m'a enlevé tout pouvoir.~";}} else {print_ret "Vous l'avez déjà.";}
		}
		"~Qué ?~";
		],
has animate proper transparent ;

Object sauf "sauf-conduit" maire
	with description "Un sauf-conduit pour libérer un prisonnier.",
	name 'sauf' 'conduit' 'sauf-conduit',
	before [; Take: if (sauf notin player) {print_ret "Demandez au maire avant.";}
	demande: if (sauf notin player) {if (dicta==1) {move sauf to player ; print_ret "~Maintenant qué la dictatoure est renversée, tenez, je vous délivre oune sauf-conduit, señor...~";} else {print_ret "~Yé né peux vous le donner : la dictatoure m'a enlevé tout pouvoir.~";}}
		],
has concealed ;

Object ramir "Ramirez"
	with description "Ramirez est un grand gaillard chauve, en tenue de prisonnier.",
	name 'Ramirez',
	before [; Tell, Ask: print_ret "~Amigo, je sais ce dont vous avez besoin. Il y a des patates dans une cabane dont mes amigos ont la clé ! Mais pour le moment, je ne sais pas où ils sont - partis faire la sieste, j'imagine...~";
		],
has animate proper;

Object dor "dormeurs" casa
	with description "Ay, c'est l'heure de la siesta...",
	name 'employe' 'employes' 'dormeur' 'dormeurs' 'hombres' 'muchachos' 'endormi' 'endormis',
	orders [;
		Give: switch(noun) {
		cle2: if (cle2 notin player) {if (rami==0) {print_ret "Pas moyen de les réveiller.";} else {move cle2 to player; print_ret "Un homme se réveille et, entendant le nom de Ramirez, vous donne la clé. Puis se rendort, avant même que vous l'ayez remercié.";}} else {print_ret "Vous l'avez déjà.";}
		}
		"~Qué ?~";
		],
has pluralname animate transparent ;

Object cle2 "clé" dor
	with description [; if (rami==0) {print_ret "Nada de special, señor.";} else {print_ret "C'est la clé de la cabane des hommes de Ramirez !";}
		],
	name 'cle' 'clef',
	before [; Take: if (cle2 notin player) {print_ret "Demandez aux employés avant.";}
	demande: if (cle2 notin player) {if (rami==0) {print_ret "Pas moyen de les réveiller.";} else {move cle2 to player; print_ret "Un homme se réveille et, entendant le nom de Ramirez, vous donne la clé. Puis se rendort, avant même que vous l'ayez remercié.";}}
		],
has female concealed;

Object president "le président" geole
	with description "Président chéri, vous ici !",
	name 'president',
	before [; delivrer: presi=1; print_ret "~Merci, amigo ! Et maintenant, si vos objectifs sont remplis, allons voter !~";
		],
has animate proper ;

Object lama "lama" montagne
	with description "Un grand lama blanc.",
	name 'lama',
	before [; Take: move lama to player; print_ret "Vous prenez le lama avec vous : désormais, il vous suivra partout.";
		],
has animate ;

Object presentateur "présentateur" intele
	with description "Un présentateur véreux, qui présente les actualités en lisant ses fiches...",
	name 'journaliste' 'presentateur' 'speaker',
	before [; Tell, Ask: print_ret "Vous ne devriez pas le déranger.";
		],
has animate ;

!==========================================================
! Routines

[ Initialise;
	give player light;
	lookmode = 2;
	player.description = "Nada de special, señor.";
	move arge to player;
	location = libertad;
	print "Explicassione :^Caramba ! Oune dictator a desituato the gouvernement ! Madre de Dios, il a tambien balançato El Presidente de la Répoublique inside das prisone !!! El populo se creva dé faim y los guerilleros pédalan in los spaghettos. Hay que donare a bectar a los afamados, renversare la dictatoure y delivrare El Presidente. Pouis organisare les électiones fissa fissa. Ma es muy péricoloso and los espionos are very nombreux. They got las pupillas partout ! Commo las patatas. Buena lucko tout de même amigo. El jeu es dangeroso ma très rigoloso.^^Traductionne :^Fichtre ! Un dictateur a destitué le gouvernement ! Ventre Saint Gris, il a également emprisonné le Président de la République !!! Le peuple agonise, victime d'inanition et les résistants s'organisent peu à peu. Il faut nourrir les affamés, renverser la dictature, délivrer le Président et organiser des élections d'urgence. Tout cela est excessivement dangereux et les espions fourmillent dans le coin. Ils ont des yeux partout, tout comme les pommes de terre. Bonne chance tout de même cher ami. Et ne perdez pas votre sens de l'humour !^^^";
];

[ ScoreSub;
  if (deadflag == 0)
    "Il n'y a pas de score dans ce jeu.";
];

[ infoSub;
	print_ret "Même les pommes de terre ont des yeux !^^Développé par Froggy Software^Plate-forme originale : Apple II^Parution : 1985^Scénario : Clotilde Marion et Jean-Louis Le Breton^Programmation : Jean-Louis Le Breton et Fabrice Gille^^Adaptation Inform réalisée par Hugo Labrande (mulehollandaise_at_msn.com)";
];

[ objectifsSub ;
	print "Objectifs :^";

	print "^    Arrêter le dictateur ";
	if (dicta==1) {print "[Effectué]";}

	if (l2~=0) {print "^    Gagner des voix en passant le message du président dans le journal "; if (l2==2) {print "[Effectué]";}}
	if (l3~=0) {print "^    Gagner des voix en passant le message du président à la télé "; if (l3==2) {print "[Effectué]";}}

	print "^    Nourrir le peuple affamé ";
	if (nourri==3) {print "[Effectué]";}

	print "^    Délivrer le président ";
	if (presi==1) {print "[Effectué]";}

	if (dicta==1 && presi==1 && l2==2 && l3==2 && nourri==3) {print "^^    Voter";}

	print_ret "";
];

[ mort ;
	style bold;
	print "^^^************ Vous avez fait une grosse erreur ************";
	style roman;
	print "^^Mettez votre tête contre l'écran à l'emplacement indiqué et appuyez sur une touche...^^" ;
font off ;
print
"|     /----------------------------------------           ^
 |    /OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO|]   <-- ICI^
 |   /OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO|           ^
 |  (OOO/`------------+---/+-----++-------------           ^
 |   +-'  `_)_(_)_(_)/   //     //                         ^
 |         ..-------/   //     //                          ^
 |        /`.``.``.j__________//                           ^
 |       /..`..`../.---------//                            ^
 |      /.``.``.`/                                         ^
 |     /.`..`..`/                                          ^
 |    /``.``.``/                                           ^
 |   /`..`..`./                                            ^
" ;
font on ;

!	 ------------------\
!	 ^
!	 |                        |                                               <---- ICI^
!	 |     |-----------/^
!	 |     |/^
!	 |     |^
!	 |---/^"; 
	 w8();
	 deadflag=1;
];

!===========================================================
! Verbes

[ moneySub;
	if (player in intbanque) {if (peso<10) {peso++; pesos=pesos+100;} else {print_ret "Votre compte est à sec, amigo !";}}
	print_ret "Vous avez ", pesos, " pesos.";
];

[ upSub;
	print_ret "Ma ! Yé né sais pas faire ça...";
];

[ downSub;
	print_ret "Ma ! Yé né sais pas faire ça...";
];

[ suivreSub;
	print_ret "Ma ! Yé né sais pas faire ça...";
];

[ carteSub;
	print_ret "Ma ! Yé né sais pas faire ça...";
];

[ arreterSub ;
	print_ret "Ma ! Yé né sais pas faire ça...";
];

[ delivrerSub ;
	print_ret "Ma ! Yé né sais pas faire ça...";
];

[ soignerSub ;
	print_ret "Ma ! Yé né sais pas faire ça...";
];

[ demandeSub ;
	print_ret "Ma ! Yé né sais pas faire ça...";
];

[ chercherSub ;
	print_ret "Yé né vois rien ici.";
];

[ atacasSub ;
	if (player notin caserne) {print "Le régime n'aime pas trop les pulsions meurtrières..."; mort();rtrue;} else {if (l1==2) {print "Dès qu'ils ont été avertis que vous vouliez attaquer la caserne, les guérilleros vous sont venus en aide. Aidé par ce soutien armé, vous parvenez à pénétrer dans la caserne et à descendre aux geôles.^^"; PlayerTo(geole); rtrue;} else {print "Oune espion caché dans le tank vous tue !"; mort(); rtrue;}}
];

[ cherramSub ;
	if (player notin stade) {print_ret "Ma ! Yé né sais pas faire ça...";} else {if (healed==1) {rami=1; move ramir to stade; print_ret "A ce moment précis, vous voyez au loin un homme s'approcher des sentinelles et leur parler, puis les sentinelles suivent en courant cet homme-là - vous supposez qu'elles viennent d'être mises au courant de la chute de la dictature... Vous en profitez donc pour demander à un prisonnier qui est Ramirez ; il vous le désigne du doigt, et vous vous approchez de lui. Dès qu'il vous aperçoit, il vient vers vous :^~Gracias, hombre, vous nous avez délivrés et renversé le régime !~";} else {print_ret "Porqué ? Qui est-ce ? Un ami à vous ?";}}
];

[ voterSub ;
	print_ret "Ma ! Yé né sais pas faire ça...";
];

[ norSub ;
	 <Go n_obj>;
];

[ lireSub ;
	if (player in intdiario) {print_ret "Le Crime du Parking est à la une ! (Génial !)";} else {print_ret "Ma ! Yé né sais pas faire ça...";}
];

[ crierSub ;
	if (player in intdiario) {print "Ay ! Un espion vous zigouille par derrière à ce moment-là !"; mort(); rtrue;} else {print_ret "Ma ! Yé né sais pas faire ça...";}
];

[ holaSub ;
	print_ret "Buenos dias, señor.";
];

[ degaulleSub ;
	if (player in intele && l3==1) {l3=2; print_ret "Le message est diffusé, ce qui vous permet de gagner des voix !";} else {print_ret "Ma ! Yé né sais pas faire ça...";}
];

[ zolaSub ;
	if (player in intdiario && l2==1) {l2=2; print_ret "Le message est diffusé, ce qui vous permet de gagner des voix !";} else {print_ret "Ma ! Yé né sais pas faire ça...";}
];

[ guerriSub mot i effet;
!	On met "consult_from+1" au lieu de "consult_from" à cause de la présence du "les"
	for (wn = consult_from+1: wn < consult_from+consult_words: )
	    {
	        mot = NextWord();
	        i++;

	        if (mot == 'sont') {
	            continue;
	        }

	        if ( (i==1 && mot=='sont')) {
	            !rien à faire, on continue
	            continue;
	        }
	        if (i==2 && mot=='cuites') {
	            effet = 1;
	            continue;
	        }

	        effet = 0;
	        break;
    }

	if (effet==1 && player in radio && l1==1) {l1=2; print_ret "Votre appel a été entendu. Les guérilleros sont avec vous.";} else {print_ret "Ma ! Yé né sais pas faire ça...";}

];

[ killSub ;
	print "Le régime n'aime pas trop les pulsions meurtrières...";
	mort();
	rtrue;
];

[ lap1 ;
	print "C'est idiot, vous vous êtes perdu ! Yé serais vous, yé recommencerais tout !^^>";
	while (deadflag==0){@read_char 1 -> cha ; print "^C'est idiot, vous vous êtes perdu ! Yé serais vous, yé recommencerais tout !^^>";}
];


!==========================================================
! Grammaire

Include "FrenchGPDT";

Verb 'info'
*			-> info;

Verb 'argent' 'pesos' 'billets' 'fric'
*			->money;

Verb 'suivre'
* noun			->suivre;

Verb 'voter'
*			->voter;

Verb 'carte'
* noun			->carte;

Extend 'monter' replace
*			->up
* noun			->up;

Extend 'descendre' replace
*			->down
* noun			->down;

Verb 'atterrir'
*			->down
* noun			->down;

Extend 'lire'
*			->lire;

Extend 'crier' replace
*			->crier;

Extend 'tuer' replace
*			->kill
* noun			->kill;

Verb 'neutraliser'
* noun			->kill;

Extend 'arreter' replace
* noun			->arreter;

Extend 'lire' replace
* noun			->lire;

Verb 'delivrer' 'liberer'
* noun			->delivrer;

Verb 'soigner'
* noun			->soigner;

Verb 'chercher'
* noun			->chercher
* 'Ramirez'		->cherram;

Verb 'bonjour' 'hola' 'bonsoir' 'salut'
*			->hola;

Verb 'objectifs'
*			->objectifs;

Extend 'demander' replace
* noun			->demande
* noun 'a'/'au'/'aux' creature ->demande;

Verb 'ai'
* 'compris'		->degaulle;

Verb 'accuse'
*			->zola;

Verb 'patates'
* topic			->guerri;

Extend 'attaquer'
* 'caserne'		->atacas;

Verb 'avancer'
* 			-> nor;